flock-core 0.4.0b26__tar.gz → 0.4.0b27__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 (532) hide show
  1. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/PKG-INFO +31 -5
  2. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/README.md +30 -4
  3. flock_core-0.4.0b27/docs/guides/temporal-configuration.md +322 -0
  4. flock_core-0.4.0b27/flock_test.yaml +159 -0
  5. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/mkdocs.yml +1 -0
  6. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/pyproject.toml +1 -1
  7. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/core/context/context.py +10 -1
  8. flock_core-0.4.0b27/src/flock/core/execution/temporal_executor.py +166 -0
  9. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/core/flock.py +46 -2
  10. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/core/flock_agent.py +145 -142
  11. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/core/flock_factory.py +3 -0
  12. flock_core-0.4.0b27/src/flock/workflow/agent_execution_activity.py +228 -0
  13. flock_core-0.4.0b27/src/flock/workflow/flock_workflow.py +225 -0
  14. flock_core-0.4.0b27/src/flock/workflow/temporal_config.py +96 -0
  15. flock_core-0.4.0b27/src/flock/workflow/temporal_setup.py +60 -0
  16. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/tests/core/test_flock_core.py +149 -4
  17. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/tests/serialization/test_flock_serializer.py +104 -3
  18. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/uv.lock +1 -1
  19. flock_core-0.4.0b26/src/flock/core/execution/temporal_executor.py +0 -57
  20. flock_core-0.4.0b26/src/flock/workflow/flock_workflow.py +0 -58
  21. flock_core-0.4.0b26/src/flock/workflow/temporal_setup.py +0 -63
  22. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/.devcontainer/devcontainer.json +0 -0
  23. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/.env_template +0 -0
  24. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  25. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  26. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  27. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/.github/workflows/.gitkeep +0 -0
  28. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/.github/workflows/deploy-documentation.yml +0 -0
  29. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/.github/workflows/deploy-whiteduck-pypi.yml +0 -0
  30. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/.gitignore +0 -0
  31. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/.vscode/launch.json +0 -0
  32. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/.vscode/settings.json +0 -0
  33. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/.vscode/tasks.json +0 -0
  34. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/LICENSE +0 -0
  35. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/docs/about/changelog.md +0 -0
  36. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/docs/about/contributing.md +0 -0
  37. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/docs/assets/drawio/architecture.drawio +0 -0
  38. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/docs/assets/images/cli_outputs/out.png +0 -0
  39. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/docs/assets/images/components_chart.png +0 -0
  40. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/docs/assets/images/examples/01_01.png +0 -0
  41. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/docs/assets/images/examples/01_02.png +0 -0
  42. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/docs/assets/images/examples/01_03.png +0 -0
  43. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/docs/assets/images/examples/01_04.png +0 -0
  44. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/docs/assets/images/examples/01_05.png +0 -0
  45. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/docs/assets/images/examples/01_06.png +0 -0
  46. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/docs/assets/images/flock.png +0 -0
  47. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/docs/assets/images/flock_cli.png +0 -0
  48. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/docs/assets/images/flow_chart.png +0 -0
  49. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/docs/assets/images/getting-started/first_agent_00.png +0 -0
  50. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/docs/assets/images/hummingbird.png +0 -0
  51. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/docs/assets/images/icon.png +0 -0
  52. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/docs/assets/images/icon.png~ +0 -0
  53. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/docs/assets/images/logo.png +0 -0
  54. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/docs/assets/images/memory_concepts.png +0 -0
  55. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/docs/assets/images/memory_flow.png +0 -0
  56. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/docs/assets/images/memory_flow_chart.png +0 -0
  57. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/docs/components/evaluators.md +0 -0
  58. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/docs/components/index.md +0 -0
  59. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/docs/components/modules.md +0 -0
  60. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/docs/components/tools.md +0 -0
  61. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/docs/core-concepts/agents.md +0 -0
  62. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/docs/core-concepts/declarative.md +0 -0
  63. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/docs/core-concepts/index.md +0 -0
  64. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/docs/core-concepts/workflows.md +0 -0
  65. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/docs/create_doc_boilerplate.py +0 -0
  66. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/docs/deployment/index.md +0 -0
  67. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/docs/deployment/temporal.md +0 -0
  68. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/docs/getting-started/configuration.md +0 -0
  69. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/docs/getting-started/index.md +0 -0
  70. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/docs/getting-started/installation.md +0 -0
  71. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/docs/getting-started/quickstart.md +0 -0
  72. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/docs/guides/chaining-agents.md +0 -0
  73. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/docs/guides/index.md +0 -0
  74. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/docs/index.md +0 -0
  75. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/docs/interacting-with-flock/cli-tool.md +0 -0
  76. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/docs/interacting-with-flock/index.md +0 -0
  77. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/docs/interacting-with-flock/interactive-cli.md +0 -0
  78. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/docs/interacting-with-flock/programmatic.md +0 -0
  79. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/docs/interacting-with-flock/rest-api.md +0 -0
  80. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/docs/interacting-with-flock/web-ui.md +0 -0
  81. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/docs/reference/flock_agent.md +0 -0
  82. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/docs/reference/index.md +0 -0
  83. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/docs/release-notes/magpie.md +0 -0
  84. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/docs/stylesheets/extra.css +0 -0
  85. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/requirements.txt +0 -0
  86. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/scripts/code_collector.py +0 -0
  87. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/scripts/create_docs.py +0 -0
  88. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/__init__.py +0 -0
  89. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/cli/assets/release_notes.md +0 -0
  90. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/cli/config.py +0 -0
  91. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/cli/constants.py +0 -0
  92. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/cli/create_agent.py +0 -0
  93. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/cli/create_flock.py +0 -0
  94. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/cli/execute_flock.py +0 -0
  95. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/cli/load_agent.py +0 -0
  96. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/cli/load_examples.py +0 -0
  97. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/cli/load_flock.py +0 -0
  98. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/cli/load_release_notes.py +0 -0
  99. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/cli/loaded_flock_cli.py +0 -0
  100. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/cli/manage_agents.py +0 -0
  101. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/cli/registry_management.py +0 -0
  102. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/cli/runner.py +0 -0
  103. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/cli/settings.py +0 -0
  104. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/cli/utils.py +0 -0
  105. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/cli/view_results.py +0 -0
  106. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/cli/yaml_editor.py +0 -0
  107. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/config.py +0 -0
  108. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/core/__init__.py +0 -0
  109. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/core/api/__init__.py +0 -0
  110. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/core/api/endpoints.py +0 -0
  111. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/core/api/main.py +0 -0
  112. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/core/api/models.py +0 -0
  113. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/core/api/run_store.py +0 -0
  114. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/core/api/runner.py +0 -0
  115. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/core/api/ui/__init__.py +0 -0
  116. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/core/api/ui/routes.py +0 -0
  117. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/core/api/ui/utils.py +0 -0
  118. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/core/context/context_manager.py +0 -0
  119. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/core/context/context_vars.py +0 -0
  120. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/core/evaluation/utils.py +0 -0
  121. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/core/execution/batch_executor.py +0 -0
  122. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/core/execution/evaluation_executor.py +0 -0
  123. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/core/execution/local_executor.py +0 -0
  124. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/core/flock_evaluator.py +0 -0
  125. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/core/flock_module.py +0 -0
  126. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/core/flock_registry.py +0 -0
  127. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/core/flock_router.py +0 -0
  128. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/core/interpreter/python_interpreter.py +0 -0
  129. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/core/logging/__init__.py +0 -0
  130. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/core/logging/formatters/enum_builder.py +0 -0
  131. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/core/logging/formatters/theme_builder.py +0 -0
  132. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/core/logging/formatters/themed_formatter.py +0 -0
  133. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/core/logging/formatters/themes.py +0 -0
  134. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/core/logging/logging.py +0 -0
  135. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/core/logging/span_middleware/baggage_span_processor.py +0 -0
  136. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/core/logging/telemetry.py +0 -0
  137. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/core/logging/telemetry_exporter/base_exporter.py +0 -0
  138. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/core/logging/telemetry_exporter/file_exporter.py +0 -0
  139. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/core/logging/telemetry_exporter/sqlite_exporter.py +0 -0
  140. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/core/logging/trace_and_logged.py +0 -0
  141. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/core/mixin/dspy_integration.py +0 -0
  142. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/core/mixin/prompt_parser.py +0 -0
  143. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/core/serialization/__init__.py +0 -0
  144. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/core/serialization/callable_registry.py +0 -0
  145. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/core/serialization/flock_serializer.py +0 -0
  146. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/core/serialization/json_encoder.py +0 -0
  147. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/core/serialization/secure_serializer.py +0 -0
  148. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/core/serialization/serializable.py +0 -0
  149. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/core/serialization/serialization_utils.py +0 -0
  150. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/core/tools/azure_tools.py +0 -0
  151. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/core/tools/basic_tools.py +0 -0
  152. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/core/tools/dev_tools/github.py +0 -0
  153. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/core/tools/llm_tools.py +0 -0
  154. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/core/tools/markdown_tools.py +0 -0
  155. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/core/tools/zendesk_tools.py +0 -0
  156. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/core/util/cli_helper.py +0 -0
  157. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/core/util/file_path_utils.py +0 -0
  158. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/core/util/hydrator.py +0 -0
  159. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/core/util/input_resolver.py +0 -0
  160. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/core/util/loader.py +0 -0
  161. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/evaluators/declarative/declarative_evaluator.py +0 -0
  162. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/evaluators/memory/memory_evaluator.py +0 -0
  163. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/evaluators/test/test_case_evaluator.py +0 -0
  164. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/evaluators/zep/zep_evaluator.py +0 -0
  165. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/modules/assertion/assertion_module.py +0 -0
  166. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/modules/callback/callback_module.py +0 -0
  167. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/modules/memory/memory_module.py +0 -0
  168. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/modules/memory/memory_parser.py +0 -0
  169. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/modules/memory/memory_storage.py +0 -0
  170. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/modules/output/output_module.py +0 -0
  171. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/modules/performance/metrics_module.py +0 -0
  172. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/modules/zep/zep_module.py +0 -0
  173. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/platform/docker_tools.py +0 -0
  174. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/platform/jaeger_install.py +0 -0
  175. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/routers/__init__.py +0 -0
  176. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/routers/agent/__init__.py +0 -0
  177. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/routers/agent/agent_router.py +0 -0
  178. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/routers/agent/handoff_agent.py +0 -0
  179. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/routers/conditional/conditional_router.py +0 -0
  180. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/routers/default/__init__.py +0 -0
  181. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/routers/default/default_router.py +0 -0
  182. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/routers/feedback/feedback_router.py +0 -0
  183. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/routers/list_generator/list_generator_router.py +0 -0
  184. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/routers/llm/__init__.py +0 -0
  185. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/routers/llm/llm_router.py +0 -0
  186. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/3024-day.toml +0 -0
  187. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/3024-night.toml +0 -0
  188. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/aardvark-blue.toml +0 -0
  189. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/abernathy.toml +0 -0
  190. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/adventure.toml +0 -0
  191. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/adventuretime.toml +0 -0
  192. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/afterglow.toml +0 -0
  193. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/alabaster.toml +0 -0
  194. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/alienblood.toml +0 -0
  195. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/andromeda.toml +0 -0
  196. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/apple-classic.toml +0 -0
  197. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/apple-system-colors.toml +0 -0
  198. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/arcoiris.toml +0 -0
  199. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/argonaut copy.toml +0 -0
  200. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/argonaut.toml +0 -0
  201. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/arthur.toml +0 -0
  202. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/ateliersulphurpool.toml +0 -0
  203. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/atom.toml +0 -0
  204. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/atom_test.toml +0 -0
  205. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/atomonelight.toml +0 -0
  206. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/aurora.toml +0 -0
  207. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/ayu copy.toml +0 -0
  208. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/ayu-light.toml +0 -0
  209. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/ayu-mirage.toml +0 -0
  210. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/ayu.toml +0 -0
  211. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/banana-blueberry.toml +0 -0
  212. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/batman.toml +0 -0
  213. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/belafonte-day.toml +0 -0
  214. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/belafonte-night.toml +0 -0
  215. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/birdsofparadise.toml +0 -0
  216. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/blazer.toml +0 -0
  217. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/blue-matrix.toml +0 -0
  218. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/blueberrypie.toml +0 -0
  219. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/bluedolphin.toml +0 -0
  220. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/blulocodark.toml +0 -0
  221. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/blulocolight.toml +0 -0
  222. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/borland.toml +0 -0
  223. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/breeze.toml +0 -0
  224. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/bright-lights.toml +0 -0
  225. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/broadcast.toml +0 -0
  226. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/brogrammer.toml +0 -0
  227. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/builtin-dark.toml +0 -0
  228. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/builtin-light.toml +0 -0
  229. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/builtin-pastel-dark.toml +0 -0
  230. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/builtin-solarized-dark.toml +0 -0
  231. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/builtin-solarized-light.toml +0 -0
  232. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/builtin-tango-dark.toml +0 -0
  233. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/builtin-tango-light.toml +0 -0
  234. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/c64.toml +0 -0
  235. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/calamity.toml +0 -0
  236. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/catppuccin-frappe.toml +0 -0
  237. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/catppuccin-latte.toml +0 -0
  238. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/catppuccin-macchiato.toml +0 -0
  239. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/catppuccin-mocha.toml +0 -0
  240. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/cga.toml +0 -0
  241. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/chalk.toml +0 -0
  242. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/chalkboard.toml +0 -0
  243. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/challengerdeep.toml +0 -0
  244. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/chester.toml +0 -0
  245. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/ciapre.toml +0 -0
  246. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/clrs.toml +0 -0
  247. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/cobalt-neon.toml +0 -0
  248. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/cobalt2.toml +0 -0
  249. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/coffee-theme.toml +0 -0
  250. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/crayonponyfish.toml +0 -0
  251. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/cutiepro.toml +0 -0
  252. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/cyberdyne.toml +0 -0
  253. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/cyberpunk.toml +0 -0
  254. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/cyberpunkscarletprotocol.toml +0 -0
  255. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/dark+.toml +0 -0
  256. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/dark-pastel.toml +0 -0
  257. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/darkermatrix.toml +0 -0
  258. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/darkmatrix.toml +0 -0
  259. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/darkside.toml +0 -0
  260. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/dayfox.toml +0 -0
  261. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/deep.toml +0 -0
  262. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/desert.toml +0 -0
  263. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/dimidium.toml +0 -0
  264. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/dimmedmonokai.toml +0 -0
  265. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/django.toml +0 -0
  266. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/djangorebornagain.toml +0 -0
  267. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/djangosmooth.toml +0 -0
  268. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/doom-peacock.toml +0 -0
  269. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/doomone.toml +0 -0
  270. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/dotgov.toml +0 -0
  271. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/dracula+.toml +0 -0
  272. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/dracula.toml +0 -0
  273. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/duckbones.toml +0 -0
  274. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/duotone-dark.toml +0 -0
  275. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/earthsong.toml +0 -0
  276. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/elemental.toml +0 -0
  277. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/elementary.toml +0 -0
  278. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/encom.toml +0 -0
  279. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/espresso-libre.toml +0 -0
  280. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/espresso.toml +0 -0
  281. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/everblush.toml +0 -0
  282. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/fahrenheit.toml +0 -0
  283. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/fairyfloss.toml +0 -0
  284. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/farmhouse-dark.toml +0 -0
  285. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/farmhouse-light.toml +0 -0
  286. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/fideloper.toml +0 -0
  287. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/firefly-traditional.toml +0 -0
  288. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/firefoxdev.toml +0 -0
  289. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/firewatch.toml +0 -0
  290. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/fishtank.toml +0 -0
  291. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/flat.toml +0 -0
  292. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/flatland.toml +0 -0
  293. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/flexoki-dark.toml +0 -0
  294. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/flexoki-light.toml +0 -0
  295. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/floraverse.toml +0 -0
  296. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/forestblue.toml +0 -0
  297. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/framer.toml +0 -0
  298. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/frontenddelight.toml +0 -0
  299. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/funforrest.toml +0 -0
  300. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/galaxy.toml +0 -0
  301. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/galizur.toml +0 -0
  302. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/github-dark.toml +0 -0
  303. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/github.toml +0 -0
  304. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/glacier.toml +0 -0
  305. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/grape.toml +0 -0
  306. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/grass.toml +0 -0
  307. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/grey-green.toml +0 -0
  308. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/gruber-darker.toml +0 -0
  309. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/gruvboxdark.toml +0 -0
  310. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/gruvboxdarkhard.toml +0 -0
  311. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/gruvboxlight.toml +0 -0
  312. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/guezwhoz.toml +0 -0
  313. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/hacktober.toml +0 -0
  314. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/hardcore.toml +0 -0
  315. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/harper.toml +0 -0
  316. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/hax0r-blue.toml +0 -0
  317. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/hax0r-gr33n.toml +0 -0
  318. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/hax0r-r3d.toml +0 -0
  319. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/highway.toml +0 -0
  320. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/hipster-green.toml +0 -0
  321. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/hivacruz.toml +0 -0
  322. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/homebrew.toml +0 -0
  323. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/hopscotch.256.toml +0 -0
  324. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/hopscotch.toml +0 -0
  325. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/hurtado.toml +0 -0
  326. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/hybrid.toml +0 -0
  327. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/ic-green-ppl.toml +0 -0
  328. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/ic-orange-ppl.toml +0 -0
  329. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/iceberg-dark.toml +0 -0
  330. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/iceberg-light.toml +0 -0
  331. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/idea.toml +0 -0
  332. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/idletoes.toml +0 -0
  333. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/ir-black.toml +0 -0
  334. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/iterm2-dark-background.toml +0 -0
  335. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/iterm2-default.toml +0 -0
  336. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/iterm2-light-background.toml +0 -0
  337. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/iterm2-pastel-dark-background.toml +0 -0
  338. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/iterm2-smoooooth.toml +0 -0
  339. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/iterm2-solarized-dark.toml +0 -0
  340. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/iterm2-solarized-light.toml +0 -0
  341. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/iterm2-tango-dark.toml +0 -0
  342. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/iterm2-tango-light.toml +0 -0
  343. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/jackie-brown.toml +0 -0
  344. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/japanesque.toml +0 -0
  345. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/jellybeans.toml +0 -0
  346. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/jetbrains-darcula.toml +0 -0
  347. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/jubi.toml +0 -0
  348. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/kanagawabones.toml +0 -0
  349. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/kibble.toml +0 -0
  350. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/kolorit.toml +0 -0
  351. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/konsolas.toml +0 -0
  352. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/kurokula.toml +0 -0
  353. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/lab-fox.toml +0 -0
  354. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/laser.toml +0 -0
  355. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/later-this-evening.toml +0 -0
  356. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/lavandula.toml +0 -0
  357. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/liquidcarbon.toml +0 -0
  358. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/liquidcarbontransparent.toml +0 -0
  359. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/liquidcarbontransparentinverse.toml +0 -0
  360. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/lovelace.toml +0 -0
  361. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/man-page.toml +0 -0
  362. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/mariana.toml +0 -0
  363. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/material.toml +0 -0
  364. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/materialdark.toml +0 -0
  365. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/materialdarker.toml +0 -0
  366. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/materialdesigncolors.toml +0 -0
  367. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/materialocean.toml +0 -0
  368. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/mathias.toml +0 -0
  369. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/matrix.toml +0 -0
  370. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/medallion.toml +0 -0
  371. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/mellifluous.toml +0 -0
  372. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/midnight-in-mojave.toml +0 -0
  373. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/mirage.toml +0 -0
  374. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/misterioso.toml +0 -0
  375. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/molokai.toml +0 -0
  376. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/monalisa.toml +0 -0
  377. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/monokai-remastered.toml +0 -0
  378. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/monokai-soda.toml +0 -0
  379. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/monokai-vivid.toml +0 -0
  380. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/n0tch2k.toml +0 -0
  381. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/neobones-dark.toml +0 -0
  382. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/neobones-light.toml +0 -0
  383. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/neon.toml +0 -0
  384. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/neopolitan.toml +0 -0
  385. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/neutron.toml +0 -0
  386. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/night-owlish-light.toml +0 -0
  387. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/nightfox.toml +0 -0
  388. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/nightlion-v1.toml +0 -0
  389. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/nightlion-v2.toml +0 -0
  390. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/niji.toml +0 -0
  391. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/nocturnal-winter.toml +0 -0
  392. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/nord-light.toml +0 -0
  393. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/nord.toml +0 -0
  394. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/novel.toml +0 -0
  395. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/nvimdark.toml +0 -0
  396. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/nvimlight.toml +0 -0
  397. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/obsidian.toml +0 -0
  398. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/ocean.toml +0 -0
  399. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/oceanic-next.toml +0 -0
  400. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/oceanicmaterial.toml +0 -0
  401. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/ollie.toml +0 -0
  402. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/onehalfdark.toml +0 -0
  403. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/onehalflight.toml +0 -0
  404. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/operator-mono-dark.toml +0 -0
  405. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/overnight-slumber.toml +0 -0
  406. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/oxocarbon.toml +0 -0
  407. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/palenighthc.toml +0 -0
  408. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/pandora.toml +0 -0
  409. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/paraiso-dark.toml +0 -0
  410. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/paulmillr.toml +0 -0
  411. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/pencildark.toml +0 -0
  412. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/pencillight.toml +0 -0
  413. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/peppermint.toml +0 -0
  414. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/piatto-light.toml +0 -0
  415. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/pnevma.toml +0 -0
  416. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/popping-and-locking.toml +0 -0
  417. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/primary.toml +0 -0
  418. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/pro-light.toml +0 -0
  419. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/pro.toml +0 -0
  420. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/purple-rain.toml +0 -0
  421. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/purplepeter.toml +0 -0
  422. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/rapture.toml +0 -0
  423. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/raycast-dark.toml +0 -0
  424. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/raycast-light.toml +0 -0
  425. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/rebecca.toml +0 -0
  426. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/red-alert.toml +0 -0
  427. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/red-planet.toml +0 -0
  428. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/red-sands.toml +0 -0
  429. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/relaxed.toml +0 -0
  430. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/retro.toml +0 -0
  431. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/rippedcasts.toml +0 -0
  432. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/rose-pine-dawn.toml +0 -0
  433. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/rose-pine-moon.toml +0 -0
  434. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/rose-pine.toml +0 -0
  435. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/rouge-2.toml +0 -0
  436. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/royal.toml +0 -0
  437. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/ryuuko.toml +0 -0
  438. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/sakura.toml +0 -0
  439. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/scarlet-protocol.toml +0 -0
  440. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/seafoam-pastel.toml +0 -0
  441. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/seashells.toml +0 -0
  442. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/seoulbones-dark.toml +0 -0
  443. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/seoulbones-light.toml +0 -0
  444. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/seti.toml +0 -0
  445. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/shades-of-purple.toml +0 -0
  446. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/shaman.toml +0 -0
  447. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/slate.toml +0 -0
  448. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/sleepyhollow.toml +0 -0
  449. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/smyck.toml +0 -0
  450. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/snazzy.toml +0 -0
  451. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/softserver.toml +0 -0
  452. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/solarized-darcula.toml +0 -0
  453. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/solarized-dark---patched.toml +0 -0
  454. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/solarized-dark-higher-contrast.toml +0 -0
  455. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/spacedust.toml +0 -0
  456. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/spacegray-eighties-dull.toml +0 -0
  457. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/spacegray-eighties.toml +0 -0
  458. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/spacegray.toml +0 -0
  459. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/spiderman.toml +0 -0
  460. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/spring.toml +0 -0
  461. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/square.toml +0 -0
  462. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/sublette.toml +0 -0
  463. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/subliminal.toml +0 -0
  464. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/sugarplum.toml +0 -0
  465. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/sundried.toml +0 -0
  466. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/symfonic.toml +0 -0
  467. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/synthwave-everything.toml +0 -0
  468. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/synthwave.toml +0 -0
  469. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/synthwavealpha.toml +0 -0
  470. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/tango-adapted.toml +0 -0
  471. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/tango-half-adapted.toml +0 -0
  472. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/teerb.toml +0 -0
  473. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/terafox.toml +0 -0
  474. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/terminal-basic.toml +0 -0
  475. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/thayer-bright.toml +0 -0
  476. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/the-hulk.toml +0 -0
  477. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/tinacious-design-(dark).toml +0 -0
  478. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/tinacious-design-(light).toml +0 -0
  479. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/tokyonight-day.toml +0 -0
  480. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/tokyonight-storm.toml +0 -0
  481. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/tokyonight.toml +0 -0
  482. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/tomorrow-night-blue.toml +0 -0
  483. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/tomorrow-night-bright.toml +0 -0
  484. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/tomorrow-night-burns.toml +0 -0
  485. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/tomorrow-night-eighties.toml +0 -0
  486. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/tomorrow-night.toml +0 -0
  487. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/tomorrow.toml +0 -0
  488. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/toychest.toml +0 -0
  489. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/treehouse.toml +0 -0
  490. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/twilight.toml +0 -0
  491. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/ubuntu.toml +0 -0
  492. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/ultradark.toml +0 -0
  493. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/ultraviolent.toml +0 -0
  494. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/underthesea.toml +0 -0
  495. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/unikitty.toml +0 -0
  496. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/urple.toml +0 -0
  497. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/vaughn.toml +0 -0
  498. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/vesper.toml +0 -0
  499. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/vibrantink.toml +0 -0
  500. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/vimbones.toml +0 -0
  501. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/violet-dark.toml +0 -0
  502. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/violet-light.toml +0 -0
  503. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/warmneon.toml +0 -0
  504. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/wez.toml +0 -0
  505. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/whimsy.toml +0 -0
  506. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/wildcherry.toml +0 -0
  507. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/wilmersdorf.toml +0 -0
  508. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/wombat.toml +0 -0
  509. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/wryan.toml +0 -0
  510. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/xcodedark.toml +0 -0
  511. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/xcodedarkhc.toml +0 -0
  512. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/xcodelight.toml +0 -0
  513. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/xcodelighthc.toml +0 -0
  514. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/xcodewwdc.toml +0 -0
  515. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/zenbones-dark.toml +0 -0
  516. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/zenbones-light.toml +0 -0
  517. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/zenbones.toml +0 -0
  518. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/zenburn.toml +0 -0
  519. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/zenburned.toml +0 -0
  520. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/zenwritten-dark.toml +0 -0
  521. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/themes/zenwritten-light.toml +0 -0
  522. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/workflow/__init__.py +0 -0
  523. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/workflow/activities.py +0 -0
  524. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/src/flock/workflow/agent_activities.py +0 -0
  525. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/tests/__init__.py +0 -0
  526. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/tests/core/test_flock_batch.py +0 -0
  527. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/tests/serialization/__init__.py +0 -0
  528. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/tests/serialization/test_enhanced_serialization.py +0 -0
  529. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/tests/serialization/test_file_path_serialization.py +0 -0
  530. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/tests/serialization/test_nested_serialization.py +0 -0
  531. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/tests/serialization/test_yaml_serialization.py +0 -0
  532. {flock_core-0.4.0b26 → flock_core-0.4.0b27}/tests/tools/test_zendesk_tools.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: flock-core
3
- Version: 0.4.0b26
3
+ Version: 0.4.0b27
4
4
  Summary: Declarative LLM Orchestration at Scale
5
5
  Author-email: Andre Ratzenberger <andre.ratzenberger@whiteduck.de>
6
6
  License-File: LICENSE
@@ -216,13 +216,39 @@ if __name__ == "__main__":
216
216
 
217
217
  ## 🐤 New in Flock 0.4.0 `Magpie` 🐤
218
218
 
219
- ### REST API - Deploy Flock Agents as REST API Endpoints
219
+ Version 0.4.0 brings significant enhancements focused on usability, deployment, and robustness:
220
220
 
221
- ### Web UI - Test Flock Agents in the Browser
222
221
 
223
- ### CLI Tool - Manage Flock Agents via the Command Line
222
+ ### 🚀 REST API - Deploy Flock Agents as REST API Endpoints
224
223
 
225
- ### Serialization - Share, Deploy, and Run Flock Agents by human readable yaml files
224
+ Easily deploy your Flock agents as scalable REST API endpoints. Interact with your agent workflows via standard HTTP requests.
225
+
226
+ ### 🖥️ Web UI - Test Flock Agents in the Browser
227
+
228
+ Test and interact with your Flock agents directly in your browser through an integrated web interface.
229
+
230
+ ### ⌨️ CLI Tool - Manage Flock Agents via the Command Line
231
+
232
+ Manage Flock configurations, run agents, and inspect results directly from your command line.
233
+
234
+ ### 💾 Enhanced Serialization - Share, Deploy, and Run Flock Agents by human readable yaml files
235
+
236
+ 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
+
238
+ ### ⏱️ Robust Temporal Integration
239
+
240
+ 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:
241
+
242
+ * **Fault Tolerance:** Workflows automatically resume from the last successful step after failures.
243
+ * **Retries:** Configure automatic retries for activities (like LLM calls or tool usage) with exponential backoff.
244
+ * **Scalability:** Distribute workflow and activity execution across multiple worker processes using Task Queues.
245
+ * **Observability:** Gain deep insights into workflow execution history via the Temporal UI.
246
+
247
+ Flock makes this easy with:
248
+
249
+ * **Declarative Configuration:** Define Temporal timeouts, retry policies, and task queues directly within your `Flock` and `FlockAgent` configurations (YAML or Python).
250
+ * **Correct Patterns:** Uses Temporal's recommended granular activity execution for better control and visibility.
251
+ * **Clear Worker Separation:** Provides guidance and flags for running dedicated Temporal workers, separating development convenience from production best practices.
226
252
 
227
253
  ### ✨ Utility: @flockclass Hydrator
228
254
 
@@ -155,13 +155,39 @@ if __name__ == "__main__":
155
155
 
156
156
  ## 🐤 New in Flock 0.4.0 `Magpie` 🐤
157
157
 
158
- ### REST API - Deploy Flock Agents as REST API Endpoints
158
+ Version 0.4.0 brings significant enhancements focused on usability, deployment, and robustness:
159
159
 
160
- ### Web UI - Test Flock Agents in the Browser
161
160
 
162
- ### CLI Tool - Manage Flock Agents via the Command Line
161
+ ### 🚀 REST API - Deploy Flock Agents as REST API Endpoints
163
162
 
164
- ### Serialization - Share, Deploy, and Run Flock Agents by human readable yaml files
163
+ Easily deploy your Flock agents as scalable REST API endpoints. Interact with your agent workflows via standard HTTP requests.
164
+
165
+ ### 🖥️ Web UI - Test Flock Agents in the Browser
166
+
167
+ Test and interact with your Flock agents directly in your browser through an integrated web interface.
168
+
169
+ ### ⌨️ CLI Tool - Manage Flock Agents via the Command Line
170
+
171
+ Manage Flock configurations, run agents, and inspect results directly from your command line.
172
+
173
+ ### 💾 Enhanced Serialization - Share, Deploy, and Run Flock Agents by human readable yaml files
174
+
175
+ 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
+
177
+ ### ⏱️ Robust Temporal Integration
178
+
179
+ 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:
180
+
181
+ * **Fault Tolerance:** Workflows automatically resume from the last successful step after failures.
182
+ * **Retries:** Configure automatic retries for activities (like LLM calls or tool usage) with exponential backoff.
183
+ * **Scalability:** Distribute workflow and activity execution across multiple worker processes using Task Queues.
184
+ * **Observability:** Gain deep insights into workflow execution history via the Temporal UI.
185
+
186
+ Flock makes this easy with:
187
+
188
+ * **Declarative Configuration:** Define Temporal timeouts, retry policies, and task queues directly within your `Flock` and `FlockAgent` configurations (YAML or Python).
189
+ * **Correct Patterns:** Uses Temporal's recommended granular activity execution for better control and visibility.
190
+ * **Clear Worker Separation:** Provides guidance and flags for running dedicated Temporal workers, separating development convenience from production best practices.
165
191
 
166
192
  ### ✨ Utility: @flockclass Hydrator
167
193
 
@@ -0,0 +1,322 @@
1
+ # Configuring Temporal Execution
2
+
3
+ When you run your Flock workflows using Temporal (`enable_temporal=True`), you gain access to powerful features for reliability and scalability. Flock allows you to declaratively configure various Temporal settings for both the overall workflow and individual agent activities.
4
+
5
+ ## Why Configure Temporal?
6
+
7
+ - **Task Queues:** Route different workflows or agents to specific worker pools (e.g., GPU workers, high-priority workers).
8
+ - **Timeouts:** Prevent runaway executions and manage resource usage.
9
+ - **Retry Policies:** Automatically handle transient failures (like network issues or temporary API outages) with configurable backoff strategies.
10
+
11
+ ## Prerequisites
12
+
13
+ - Ensure you have Temporal running and accessible.
14
+ - Enable Temporal execution in your Flock: `Flock(enable_temporal=True, ...)`
15
+
16
+ ## Workflow-Level Configuration (`TemporalWorkflowConfig`)
17
+
18
+ You can define default settings for the entire workflow execution when you initialize your `Flock`.
19
+
20
+ ```python
21
+ # Import necessary classes
22
+ from datetime import timedelta
23
+ from flock.core import Flock
24
+ # Adjust path if needed: from flock.config.temporal_config import ...
25
+ from flock.workflow.temporal_config import TemporalWorkflowConfig, TemporalRetryPolicyConfig
26
+
27
+ # Define a custom retry policy (e.g., fewer retries by default)
28
+ default_retry = TemporalRetryPolicyConfig(
29
+ maximum_attempts=2, # Default 2 attempts for activities
30
+ initial_interval=timedelta(seconds=2)
31
+ )
32
+
33
+ # Define workflow configuration
34
+ workflow_config = TemporalWorkflowConfig(
35
+ task_queue="my-custom-queue", # Default queue for this Flock's workflows
36
+ workflow_execution_timeout=timedelta(minutes=30), # Max 30 mins total
37
+ default_activity_retry_policy=default_retry
38
+ )
39
+
40
+ # Pass the config to your Flock
41
+ my_flock = Flock(
42
+ name="configured_flock",
43
+ enable_temporal=True,
44
+ temporal_config=workflow_config
45
+ # ... other Flock args
46
+ )
47
+
48
+ print(f"Flock configured for Temporal queue: {my_flock.temporal_config.task_queue}")
49
+ ```
50
+
51
+ **Key `TemporalWorkflowConfig` Fields:**
52
+
53
+ - `task_queue`: The default Temporal Task Queue for this workflow. Workers must listen on this queue.
54
+ - `workflow_execution_timeout`: Maximum total duration for the workflow.
55
+ - `workflow_run_timeout`: Maximum duration for a single run attempt.
56
+ - `default_activity_retry_policy`: A `TemporalRetryPolicyConfig` object defining the default retry behavior for all activities *unless overridden by an agent*.
57
+
58
+ ## Agent-Specific Configuration (`TemporalActivityConfig`)
59
+
60
+ Sometimes, different agents need different settings (e.g., longer timeouts for complex tasks, different retry logic for external API calls). You can specify these when defining your `FlockAgent`.
61
+
62
+ ```python
63
+ # Import necessary classes
64
+ from datetime import timedelta
65
+ from flock.core import FlockFactory
66
+ # Adjust path if needed: from flock.config.temporal_config import ...
67
+ from flock.workflow.temporal_config import TemporalActivityConfig, TemporalRetryPolicyConfig
68
+
69
+ # Define a specific retry policy for this agent
70
+ agent_retry = TemporalRetryPolicyConfig(
71
+ maximum_attempts=5, # Allow more retries
72
+ non_retryable_error_types=["ValueError"] # Don't retry specific errors
73
+ )
74
+
75
+ # Define activity configuration for this agent
76
+ agent_activity_config = TemporalActivityConfig(
77
+ start_to_close_timeout=timedelta(minutes=3), # Allow 3 minutes per attempt
78
+ retry_policy=agent_retry,
79
+ task_queue="gpu-workers-queue" # Optionally route this agent to different workers!
80
+ )
81
+
82
+ # Create the agent and pass the config
83
+ special_agent = FlockFactory.create_default_agent(
84
+ name="special_gpu_agent",
85
+ input="data",
86
+ output="processed_data",
87
+ # Add the specific Temporal config here!
88
+ temporal_activity_config=agent_activity_config
89
+ )
90
+
91
+ # Assuming 'my_flock' is the Flock instance from the previous example
92
+ # my_flock.add_agent(special_agent)
93
+
94
+ # You can inspect the agent's config:
95
+ print(f"Agent '{special_agent.name}' config timeout: {special_agent.temporal_activity_config.start_to_close_timeout}")
96
+ ```
97
+
98
+ **Key `TemporalActivityConfig` Fields:**
99
+
100
+ - `task_queue`: Route *this specific agent's* execution to a different task queue (overrides workflow default).
101
+ - `start_to_close_timeout`: Maximum duration for a single attempt of *this specific agent's* activity.
102
+ - `retry_policy`: A `TemporalRetryPolicyConfig` defining retry behavior specifically for *this agent*, overriding the workflow default.
103
+
104
+ **Configuration Precedence:**
105
+
106
+ Settings are applied with the following priority:
107
+
108
+ 1. Agent's `temporal_activity_config` (if set for a specific field)
109
+ 2. Flock's `temporal_config.default_activity_retry_policy` (for retries)
110
+ 3. Flock's `temporal_config.task_queue` (for activity task queue, if not set on agent)
111
+ 4. Temporal's built-in defaults (e.g., for timeouts if not set anywhere).
112
+
113
+ ## Runtime Metadata (`memo`)
114
+
115
+ You can add non-indexed metadata to your workflow run for observability using the `memo` parameter in `run` or `run_async`:
116
+
117
+ ```python
118
+ # Assuming 'my_flock' is the Flock instance from previous examples
119
+ # result = my_flock.run_async(
120
+ # start_agent="some_agent",
121
+ # input={"data": "..."},
122
+ # memo={"user_id": "user123", "experiment_tag": "v2-prompt"}
123
+ # )
124
+ ```
125
+
126
+ This metadata will be visible in the Temporal UI.
127
+
128
+ ## Example
129
+
130
+ Here's a combined example similar to the one used during development:
131
+
132
+ ```python
133
+ # .flock/flock_temporal_config_example.py
134
+ import asyncio
135
+ from datetime import timedelta
136
+
137
+ # Import Temporal config models (adjust path if needed)
138
+ from flock.workflow.temporal_config import (
139
+ TemporalActivityConfig,
140
+ TemporalRetryPolicyConfig,
141
+ TemporalWorkflowConfig,
142
+ )
143
+ from flock.core import Flock, FlockFactory
144
+ from flock.routers.default.default_router import DefaultRouterConfig
145
+
146
+ async def main():
147
+ # 1. Define Workflow Config
148
+ workflow_config = TemporalWorkflowConfig(
149
+ task_queue="flock-example-queue",
150
+ workflow_execution_timeout=timedelta(minutes=10),
151
+ default_activity_retry_policy=TemporalRetryPolicyConfig(maximum_attempts=2)
152
+ )
153
+
154
+ # 2. Create Flock with Temporal Config
155
+ flock = Flock(
156
+ enable_temporal=True, # MUST be True to use Temporal config
157
+ enable_logging=True,
158
+ temporal_config=workflow_config
159
+ )
160
+
161
+ # 3. Presentation Agent (uses workflow defaults)
162
+ agent = FlockFactory.create_default_agent(
163
+ name="presentation_agent",
164
+ input="topic",
165
+ output="funny_title, funny_slide_headers",
166
+ )
167
+ flock.add_agent(agent)
168
+
169
+ # 4. Content Agent Config (specific settings)
170
+ content_agent_retry = TemporalRetryPolicyConfig(maximum_attempts=4)
171
+ content_agent_activity_config = TemporalActivityConfig(
172
+ start_to_close_timeout=timedelta(minutes=1),
173
+ retry_policy=content_agent_retry
174
+ )
175
+
176
+ # 5. Content Agent (with specific config)
177
+ content_agent = FlockFactory.create_default_agent(
178
+ name="content_agent",
179
+ input="funny_title, funny_slide_headers",
180
+ output="funny_slide_content",
181
+ temporal_activity_config=content_agent_activity_config
182
+ )
183
+ flock.add_agent(content_agent)
184
+
185
+ # 6. Add routing
186
+ agent.add_component(DefaultRouterConfig(hand_off="content_agent"))
187
+
188
+ print(f"Starting Flock run on Temporal task queue: {workflow_config.task_queue}")
189
+ print(f"Ensure a Temporal worker is listening on '{workflow_config.task_queue}'")
190
+
191
+ # 7. Run the workflow (example input)
192
+ try:
193
+ result = await flock.run_async(
194
+ start_agent="presentation_agent",
195
+ input={"topic": "Why Temporal makes distributed systems easier"},
196
+ memo={"run_type": "docs_example"} # Example memo
197
+ )
198
+
199
+ print("\n--- Result ---")
200
+ print(result)
201
+ except Exception as e:
202
+ print(f"\n--- An error occurred ---")
203
+ print(f"Error: {e}")
204
+ print("Ensure Temporal service and worker are running correctly.")
205
+
206
+
207
+ if __name__ == "__main__":
208
+ asyncio.run(main())
209
+ ```
210
+
211
+ ## Next Steps
212
+
213
+ - Learn more about Temporal's concepts like [Task Queues](https://docs.temporal.io/concepts/what-is-a-task-queue) and [Retries](https://docs.temporal.io/concepts/what-is-a-retry-policy).
214
+ - Explore how to run [Temporal Workers](https://docs.temporal.io/application-development/foundations#worker) to process tasks from your queues.
215
+
216
+ ## Running Temporal Workers (Production Requirement)
217
+
218
+ The examples above show how to configure Temporal settings declaratively. However, for Temporal workflows to actually execute, you need **Worker Processes** running, listening on the specified task queues.
219
+
220
+ **Development vs. Production:**
221
+
222
+ - **Current Behavior (Development/Testing):** For convenience during local development and testing, when you call `flock.run_async` with `enable_temporal=True`, the Flock framework *currently* starts a temporary, in-process worker in the background. This allows simple scripts like the examples above to run without needing a separate process. **This is NOT intended for production use.**
223
+ - **Production Requirement:** In a real deployment (staging, production), you **must** run dedicated, long-running worker processes separately from your application that calls `flock.run_async`. These workers are responsible for picking up tasks from the queue and executing your workflow and activity code.
224
+
225
+ **Why Dedicated Workers?**
226
+
227
+ - **Scalability:** You can run multiple worker processes (even on different machines) listening to the same task queue to handle higher loads.
228
+ - **Reliability:** Workers can be restarted independently of your main application.
229
+ - **Resource Management:** You can run workers on machines with specific resources (e.g., GPUs for certain agents) by having them listen on specific task queues (like `gpu-workers-queue` configured in `TemporalActivityConfig`).
230
+ - **Isolation:** Keeps the workflow execution logic separate from your application logic.
231
+
232
+ **Creating a Worker Script:**
233
+
234
+ You need to create a separate Python script (e.g., `run_flock_worker.py`) to run your workers. Here's a basic example:
235
+
236
+ ```python
237
+ # run_flock_worker.py
238
+ import asyncio
239
+ import logging # Use standard logging for the worker process
240
+
241
+ from temporalio.client import Client
242
+ from temporalio.worker import Worker
243
+
244
+ # Import your Flock workflow and activities
245
+ # Ensure these imports work in the context where you run the worker
246
+ from flock.workflow.flock_workflow import FlockWorkflow
247
+ from flock.workflow.agent_execution_activity import (
248
+ execute_single_agent,
249
+ determine_next_agent,
250
+ )
251
+
252
+ # --- Configuration ---
253
+ # Make these configurable via environment variables, CLI args, or a config file
254
+ TEMPORAL_SERVICE_URL = "localhost:7233"
255
+ NAMESPACE = "default"
256
+ # The task queue(s) this worker process will listen on.
257
+ # Must match the queue(s) defined in your Flock/Agent Temporal configurations.
258
+ TASK_QUEUES = ["flock-queue", "flock-example-queue", "my-custom-queue", "gpu-workers-queue"]
259
+
260
+ # Configure logging for the worker process
261
+ logging.basicConfig(level=logging.INFO)
262
+ log = logging.getLogger(__name__)
263
+
264
+ async def run_worker():
265
+ log.info(f"Connecting to Temporal at {TEMPORAL_SERVICE_URL} in namespace '{NAMESPACE}'")
266
+ client = await Client.connect(TEMPORAL_SERVICE_URL, namespace=NAMESPACE)
267
+ log.info(f"Client connected successfully.")
268
+
269
+ activities_to_register = [execute_single_agent, determine_next_agent]
270
+ workflows_to_register = [FlockWorkflow]
271
+
272
+ # Create and run workers for each specified task queue
273
+ # You might run multiple instances of this script for different queues
274
+ # or handle multiple queues in one worker if resources allow.
275
+ worker_tasks = []
276
+ for queue in TASK_QUEUES:
277
+ log.info(f"Starting worker for task queue: '{queue}'")
278
+ worker = Worker(
279
+ client,
280
+ task_queue=queue,
281
+ workflows=workflows_to_register,
282
+ activities=activities_to_register,
283
+ # identity="my-worker-process-1" # Optional: Set a worker identity
284
+ )
285
+ worker_tasks.append(asyncio.create_task(worker.run()))
286
+ log.info(f"Worker for task queue '{queue}' started.")
287
+
288
+ log.info(f"All workers started. Running indefinitely...")
289
+ # Keep running until manually stopped or an error occurs
290
+ await asyncio.gather(*worker_tasks)
291
+
292
+ if __name__ == "__main__":
293
+ try:
294
+ asyncio.run(run_worker())
295
+ except KeyboardInterrupt:
296
+ log.info("Worker process interrupted. Shutting down.")
297
+ except Exception as e:
298
+ log.exception(f"Worker process failed: {e}")
299
+
300
+ **Running the Worker:**
301
+
302
+ 1. Save the code above as `run_flock_worker.py` (or similar).
303
+ 2. Customize `TEMPORAL_SERVICE_URL`, `NAMESPACE`, and especially `TASK_QUEUES` to match your environment and the queues you configured in your `Flock` and `FlockAgent` objects.
304
+ 3. Run the worker from your terminal: `python run_flock_worker.py`
305
+ 4. You typically keep this worker process running indefinitely using a process manager like `systemd`, `supervisor`, or within a container orchestration system (like Kubernetes).
306
+
307
+ **Important Note on Automatic Worker Startup:**
308
+
309
+ As mentioned, `flock.run_async` currently starts a temporary worker for convenience if `enable_temporal=True` and the `temporal_start_in_process_worker` flag on your `Flock` instance is `True` (which is the default).
310
+
311
+ When you are running your own dedicated workers (like the script above), this temporary worker becomes redundant. To prevent this, you should set `temporal_start_in_process_worker=False` when initializing your `Flock` instance:
312
+
313
+ ```python
314
+ my_prod_flock = Flock(
315
+ # ... other config ...
316
+ enable_temporal=True,
317
+ temporal_config=workflow_config, # Your production temporal config
318
+ temporal_start_in_process_worker=False # Disable automatic worker
319
+ )
320
+ ```
321
+
322
+ Focus on ensuring your dedicated workers are correctly configured and running for production deployments.
@@ -0,0 +1,159 @@
1
+ name: flock_6e0930c6
2
+ model: openai/gpt-4o
3
+ enable_temporal: true
4
+ enable_logging: true
5
+ show_flock_banner: true
6
+ temporal_config:
7
+ task_queue: flock-test-queue
8
+ workflow_execution_timeout: PT10M
9
+ default_activity_retry_policy:
10
+ initial_interval: PT1S
11
+ backoff_coefficient: 2.0
12
+ maximum_interval: PT1M40S
13
+ maximum_attempts: 2
14
+ non_retryable_error_types: []
15
+ agents:
16
+ my_presentation_agent:
17
+ name: my_presentation_agent
18
+ model: openai/gpt-4o
19
+ input: topic
20
+ output: funny_title, funny_slide_headers
21
+ write_to_file: false
22
+ wait_for_input: false
23
+ evaluator:
24
+ name: default
25
+ config:
26
+ model: openai/gpt-4o
27
+ use_cache: true
28
+ temperature: 0.0
29
+ max_tokens: 8192
30
+ stream: false
31
+ include_thought_process: false
32
+ kwargs: {}
33
+ type: DeclarativeEvaluator
34
+ handoff_router:
35
+ name: defaultrouter
36
+ config:
37
+ enabled: true
38
+ hand_off: content_agent
39
+ type: DefaultRouter
40
+ modules:
41
+ output:
42
+ name: output
43
+ config:
44
+ enabled: true
45
+ theme: abernathy
46
+ render_table: false
47
+ max_length: 1000
48
+ truncate_long_values: true
49
+ show_metadata: true
50
+ format_code_blocks: true
51
+ custom_formatters: {}
52
+ no_output: false
53
+ print_context: false
54
+ type: OutputModule
55
+ metrics:
56
+ name: metrics
57
+ config:
58
+ enabled: true
59
+ collect_timing: true
60
+ collect_memory: true
61
+ collect_token_usage: true
62
+ collect_cpu: true
63
+ storage_type: json
64
+ metrics_dir: metrics/
65
+ aggregation_interval: 1h
66
+ retention_days: 30
67
+ alert_on_high_latency: true
68
+ latency_threshold_ms: 30000
69
+ type: MetricsModule
70
+ content_agent:
71
+ name: content_agent
72
+ model: openai/gpt-4o
73
+ input: funny_title, funny_slide_headers
74
+ output: funny_slide_content
75
+ write_to_file: false
76
+ wait_for_input: false
77
+ temporal_activity_config:
78
+ start_to_close_timeout: PT1M
79
+ retry_policy:
80
+ initial_interval: PT2S
81
+ backoff_coefficient: 2.0
82
+ maximum_interval: PT1M40S
83
+ maximum_attempts: 4
84
+ non_retryable_error_types:
85
+ - ValueError
86
+ evaluator:
87
+ name: default
88
+ config:
89
+ model: openai/gpt-4o
90
+ use_cache: true
91
+ temperature: 0.0
92
+ max_tokens: 8192
93
+ stream: false
94
+ include_thought_process: false
95
+ kwargs: {}
96
+ type: DeclarativeEvaluator
97
+ modules:
98
+ output:
99
+ name: output
100
+ config:
101
+ enabled: true
102
+ theme: abernathy
103
+ render_table: false
104
+ max_length: 1000
105
+ truncate_long_values: true
106
+ show_metadata: true
107
+ format_code_blocks: true
108
+ custom_formatters: {}
109
+ no_output: false
110
+ print_context: false
111
+ type: OutputModule
112
+ metrics:
113
+ name: metrics
114
+ config:
115
+ enabled: true
116
+ collect_timing: true
117
+ collect_memory: true
118
+ collect_token_usage: true
119
+ collect_cpu: true
120
+ storage_type: json
121
+ metrics_dir: metrics/
122
+ aggregation_interval: 1h
123
+ retention_days: 30
124
+ alert_on_high_latency: true
125
+ latency_threshold_ms: 30000
126
+ type: MetricsModule
127
+ components:
128
+ DeclarativeEvaluator:
129
+ type: flock_component
130
+ module_path: flock.evaluators.declarative.declarative_evaluator
131
+ file_path: src\flock\evaluators\declarative\declarative_evaluator.py
132
+ description: Evaluator that uses DSPy for generation.
133
+ OutputModule:
134
+ type: flock_component
135
+ module_path: flock.modules.output.output_module
136
+ file_path: src\flock\modules\output\output_module.py
137
+ description: Module that handles output formatting and display.
138
+ MetricsModule:
139
+ type: flock_component
140
+ module_path: flock.modules.performance.metrics_module
141
+ file_path: src\flock\modules\performance\metrics_module.py
142
+ description: Module for collecting and analyzing agent performance metrics.
143
+ DefaultRouter:
144
+ type: flock_component
145
+ module_path: flock.routers.default.default_router
146
+ file_path: src\flock\routers\default\default_router.py
147
+ description: 'Default router implementation.
148
+
149
+
150
+ This router simply uses the agent''s hand_off property to determine the next
151
+ agent.
152
+
153
+ It does not perform any dynamic routing.'
154
+ dependencies:
155
+ - pydantic>=2.0.0
156
+ - flock-core>=0.4.0
157
+ metadata:
158
+ path_type: relative
159
+ flock_version: 0.4.0
@@ -98,6 +98,7 @@ nav:
98
98
  - Guides:
99
99
  - Overview: guides/index.md
100
100
  - Chaining Agents: guides/chaining-agents.md
101
+ - Configuring Temporal Execution: guides/temporal-configuration.md
101
102
  # Add later: Custom Tools, Using Memory, Advanced Workflows
102
103
  - Deployment:
103
104
  - Overview: deployment/index.md
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "flock-core"
3
- version = "0.4.0b-26"
3
+ version = "0.4.0b-27"
4
4
  description = "Declarative LLM Orchestration at Scale"
5
5
  readme = "README.md"
6
6
  authors = [
@@ -20,7 +20,7 @@ class AgentRunRecord(BaseModel):
20
20
  data: dict[str, Any] = Field(default_factory=dict)
21
21
  timestamp: str = Field(default="")
22
22
  hand_off: dict | None = Field(default_factory=dict)
23
- called_from: str = Field(default="")
23
+ called_from: str | None = Field(default=None)
24
24
 
25
25
 
26
26
  class AgentDefinition(BaseModel):
@@ -132,6 +132,15 @@ class FlockContext(Serializable, BaseModel):
132
132
  def get_agent_definition(self, agent_name: str) -> AgentDefinition | None:
133
133
  return self.agent_definitions.get(agent_name)
134
134
 
135
+ def get_last_agent_name(self) -> str | None:
136
+ """Returns the name of the agent from the most recent history record."""
137
+ if not self.history:
138
+ return None
139
+ last_record = self.history[-1]
140
+ # The 'called_from' field in the *next* record is the previous agent.
141
+ # However, to get the name of the *last executed agent*, we look at the 'agent' field.
142
+ return last_record.agent
143
+
135
144
  def add_agent_definition(
136
145
  self, agent_type: type, agent_name: str, agent_data: Any
137
146
  ) -> None: