flock-core 0.3.41__tar.gz → 0.4.0b2__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 (647) hide show
  1. flock_core-0.4.0b2/.project/implementation.md +639 -0
  2. {flock_core-0.3.41 → flock_core-0.4.0b2}/PKG-INFO +1 -1
  3. flock_core-0.4.0b2/bloggy.flock.yaml +72 -0
  4. flock_core-0.4.0b2/docs/file_path_support.md +158 -0
  5. flock_core-0.4.0b2/docs/serialization.md +191 -0
  6. {flock_core-0.3.41 → flock_core-0.4.0b2}/examples/01_introduction/01_simple_example.py +2 -2
  7. flock_core-0.4.0b2/examples/01_introduction/05_typed_output2.py +84 -0
  8. flock_core-0.4.0b2/examples/01_introduction/08a_serialization.py +128 -0
  9. flock_core-0.4.0b2/examples/01_introduction/08b_deserialization.py +57 -0
  10. {flock_core-0.3.41 → flock_core-0.4.0b2}/examples/03_apps/story_gen/main.py +5 -4
  11. flock_core-0.4.0b2/file_path_demo.flock.yaml +165 -0
  12. {flock_core-0.3.41 → flock_core-0.4.0b2}/pyproject.toml +1 -1
  13. flock_core-0.4.0b2/requirements.txt +78 -0
  14. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/__init__.py +31 -0
  15. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/cli/create_flock.py +58 -3
  16. flock_core-0.4.0b2/src/flock/cli/load_flock.py +192 -0
  17. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/cli/registry_management.py +367 -96
  18. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/cli/yaml_editor.py +119 -6
  19. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/core/__init__.py +13 -1
  20. flock_core-0.4.0b2/src/flock/core/flock.py +1488 -0
  21. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/core/flock_agent.py +114 -22
  22. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/core/flock_registry.py +37 -5
  23. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/core/serialization/serializable.py +35 -8
  24. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/core/serialization/serialization_utils.py +96 -1
  25. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/core/util/cli_helper.py +2 -2
  26. flock_core-0.4.0b2/src/flock/core/util/file_path_utils.py +223 -0
  27. flock_core-0.4.0b2/story_agent.flock.yaml +310 -0
  28. flock_core-0.4.0b2/tests/serialization/test_enhanced_serialization.py +132 -0
  29. flock_core-0.4.0b2/tests/serialization/test_file_path_serialization.py +107 -0
  30. flock_core-0.4.0b2/tests/serialization/test_nested_serialization.py +95 -0
  31. {flock_core-0.3.41 → flock_core-0.4.0b2}/tests/serialization/test_yaml_serialization.py +2 -43
  32. {flock_core-0.3.41 → flock_core-0.4.0b2}/uv.lock +1 -1
  33. flock_core-0.3.41/examples/01_introduction/05_typed_output2.py +0 -55
  34. flock_core-0.3.41/requirements.txt +0 -72
  35. flock_core-0.3.41/src/flock/cli/load_flock.py +0 -58
  36. flock_core-0.3.41/src/flock/core/flock.py +0 -619
  37. {flock_core-0.3.41 → flock_core-0.4.0b2}/.cursorignore +0 -0
  38. {flock_core-0.3.41 → flock_core-0.4.0b2}/.devcontainer/devcontainer.json +0 -0
  39. {flock_core-0.3.41 → flock_core-0.4.0b2}/.env_template +0 -0
  40. {flock_core-0.3.41 → flock_core-0.4.0b2}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  41. {flock_core-0.3.41 → flock_core-0.4.0b2}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  42. {flock_core-0.3.41 → flock_core-0.4.0b2}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  43. {flock_core-0.3.41 → flock_core-0.4.0b2}/.github/workflows/.gitkeep +0 -0
  44. {flock_core-0.3.41 → flock_core-0.4.0b2}/.github/workflows/deploy-documentation.yml +0 -0
  45. {flock_core-0.3.41 → flock_core-0.4.0b2}/.github/workflows/deploy-whiteduck-pypi.yml +0 -0
  46. {flock_core-0.3.41 → flock_core-0.4.0b2}/.gitignore +0 -0
  47. {flock_core-0.3.41 → flock_core-0.4.0b2}/.project/SPECS.md +0 -0
  48. {flock_core-0.3.41 → flock_core-0.4.0b2}/.project/TASKS.md +0 -0
  49. {flock_core-0.3.41 → flock_core-0.4.0b2}/.project/USERSTORIES.md +0 -0
  50. {flock_core-0.3.41 → flock_core-0.4.0b2}/.project/analyze_repo_prompt.md +0 -0
  51. {flock_core-0.3.41 → flock_core-0.4.0b2}/.project/llm/code-04-04-2025.txt +0 -0
  52. {flock_core-0.3.41 → flock_core-0.4.0b2}/.project/llm/flock-02-04-25-dynamic-ui.txt +0 -0
  53. {flock_core-0.3.41 → flock_core-0.4.0b2}/.project/llm/flock-29_03_2025-yaml.txt +0 -0
  54. {flock_core-0.3.41 → flock_core-0.4.0b2}/.project/llm/llms-ctx-fasthtml.txt +0 -0
  55. {flock_core-0.3.41 → flock_core-0.4.0b2}/.project/llm/llms-ctx-full_monsterui.txt +0 -0
  56. {flock_core-0.3.41 → flock_core-0.4.0b2}/.project/llm/old_ui_poc.txt +0 -0
  57. {flock_core-0.3.41 → flock_core-0.4.0b2}/.project/planning_prompt.md +0 -0
  58. {flock_core-0.3.41 → flock_core-0.4.0b2}/.project/specs/01_core_architecture.md +0 -0
  59. {flock_core-0.3.41 → flock_core-0.4.0b2}/.project/specs/02_agent_factory.md +0 -0
  60. {flock_core-0.3.41 → flock_core-0.4.0b2}/.project/specs/03_module_system.md +0 -0
  61. {flock_core-0.3.41 → flock_core-0.4.0b2}/.project/specs/04_evaluator_system.md +0 -0
  62. {flock_core-0.3.41 → flock_core-0.4.0b2}/.project/specs/05_router_system.md +0 -0
  63. {flock_core-0.3.41 → flock_core-0.4.0b2}/.project/specs/06_tool_system.md +0 -0
  64. {flock_core-0.3.41 → flock_core-0.4.0b2}/.project/specs/07_execution_system.md +0 -0
  65. {flock_core-0.3.41 → flock_core-0.4.0b2}/.project/specs/08_context_system.md +0 -0
  66. {flock_core-0.3.41 → flock_core-0.4.0b2}/.project/specs/09_cli_system.md +0 -0
  67. {flock_core-0.3.41 → flock_core-0.4.0b2}/.project/specs/10_workflow_system.md +0 -0
  68. {flock_core-0.3.41 → flock_core-0.4.0b2}/.project/specs/11_memory_system.md +0 -0
  69. {flock_core-0.3.41 → flock_core-0.4.0b2}/.project/specs/12_platform_system.md +0 -0
  70. {flock_core-0.3.41 → flock_core-0.4.0b2}/.project/specs/13_registry_system.md +0 -0
  71. {flock_core-0.3.41 → flock_core-0.4.0b2}/.project/specs/14_serialization_system.md +0 -0
  72. {flock_core-0.3.41 → flock_core-0.4.0b2}/.project/tasks/US007-T005-YAML-Documentation-and-Examples.md +0 -0
  73. {flock_core-0.3.41 → flock_core-0.4.0b2}/.project/tasks/US007-T006-YAML-Editor-CLI.md +0 -0
  74. {flock_core-0.3.41 → flock_core-0.4.0b2}/.project/tasks/done/US001-001-env-settings-editor.md +0 -0
  75. {flock_core-0.3.41 → flock_core-0.4.0b2}/.project/tasks/done/US001-002-env-settings-ui-components.md +0 -0
  76. {flock_core-0.3.41 → flock_core-0.4.0b2}/.project/tasks/done/US001-003-env-settings-file-operations.md +0 -0
  77. {flock_core-0.3.41 → flock_core-0.4.0b2}/.project/tasks/done/US001-004-settings-security-features.md +0 -0
  78. {flock_core-0.3.41 → flock_core-0.4.0b2}/.project/tasks/done/US001-005-env-profile-switching.md +0 -0
  79. {flock_core-0.3.41 → flock_core-0.4.0b2}/.project/tasks/done/US007-T001-YAML-Serializable-Base.md +0 -0
  80. {flock_core-0.3.41 → flock_core-0.4.0b2}/.project/tasks/done/US007-T002.1-FlockAgent-YAML-Formatting.md +0 -0
  81. {flock_core-0.3.41 → flock_core-0.4.0b2}/.project/tasks/done/US007-T002.2-FlockAgent-YAML-Examples.md +0 -0
  82. {flock_core-0.3.41 → flock_core-0.4.0b2}/.project/tasks/done/US007-T003.1-Flock-System-YAML-Formatting.md +0 -0
  83. {flock_core-0.3.41 → flock_core-0.4.0b2}/.project/tasks/done/US007-T003.2-YAML-Schema-Documentation.md +0 -0
  84. {flock_core-0.3.41 → flock_core-0.4.0b2}/.project/tasks/done/US007-T004-Callable-Reference-System.md +0 -0
  85. {flock_core-0.3.41 → flock_core-0.4.0b2}/.project/tasks/done/US007-T007-YAML-Serialization-Tests.md +0 -0
  86. {flock_core-0.3.41 → flock_core-0.4.0b2}/.project/userstories/US007-YAML-Serialization.md +0 -0
  87. {flock_core-0.3.41 → flock_core-0.4.0b2}/.project/userstories/done/US001-Settings-Editor.md +0 -0
  88. {flock_core-0.3.41 → flock_core-0.4.0b2}/.sesskey +0 -0
  89. {flock_core-0.3.41 → flock_core-0.4.0b2}/.vscode/launch.json +0 -0
  90. {flock_core-0.3.41 → flock_core-0.4.0b2}/.vscode/settings.json +0 -0
  91. {flock_core-0.3.41 → flock_core-0.4.0b2}/.vscode/tasks.json +0 -0
  92. {flock_core-0.3.41 → flock_core-0.4.0b2}/LICENSE +0 -0
  93. {flock_core-0.3.41 → flock_core-0.4.0b2}/README.md +0 -0
  94. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/advanced/complex-workflows.md +0 -0
  95. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/advanced/custom-agents.md +0 -0
  96. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/advanced/performance.md +0 -0
  97. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/advanced/testing.md +0 -0
  98. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/api/flock-core.md +0 -0
  99. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/api/flockagent.md +0 -0
  100. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/api/types.md +0 -0
  101. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/api/utilities.md +0 -0
  102. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/architecture/components.md +0 -0
  103. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/architecture/design-decisions.md +0 -0
  104. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/architecture/overview.md +0 -0
  105. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/assets/drawio/architecture.drawio +0 -0
  106. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/assets/images/cli_outputs/out.png +0 -0
  107. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/assets/images/components_chart.png +0 -0
  108. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/assets/images/examples/01_01.png +0 -0
  109. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/assets/images/examples/01_02.png +0 -0
  110. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/assets/images/examples/01_03.png +0 -0
  111. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/assets/images/examples/01_04.png +0 -0
  112. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/assets/images/examples/01_05.png +0 -0
  113. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/assets/images/examples/01_06.png +0 -0
  114. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/assets/images/flock.png +0 -0
  115. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/assets/images/flock_cli.png +0 -0
  116. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/assets/images/flow_chart.png +0 -0
  117. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/assets/images/getting-started/first_agent_00.png +0 -0
  118. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/assets/images/hummingbird.png +0 -0
  119. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/assets/images/icon.png +0 -0
  120. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/assets/images/icon.png~ +0 -0
  121. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/assets/images/logo.png +0 -0
  122. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/assets/images/memory_concepts.png +0 -0
  123. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/assets/images/memory_flow.png +0 -0
  124. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/assets/images/memory_flow_chart.png +0 -0
  125. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/changelog.md +0 -0
  126. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/cli/index.md +0 -0
  127. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/cli/settings-editor.md +0 -0
  128. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/contributing/code-style.md +0 -0
  129. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/contributing/development.md +0 -0
  130. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/contributing/documentation.md +0 -0
  131. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/contributing/testing.md +0 -0
  132. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/core-concepts/agents.md +0 -0
  133. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/core-concepts/declarative.md +0 -0
  134. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/core-concepts/error-handling.md +0 -0
  135. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/core-concepts/evaluators.md +0 -0
  136. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/core-concepts/memory.md +0 -0
  137. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/core-concepts/modules/memory.md +0 -0
  138. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/core-concepts/modules/metrics.md +0 -0
  139. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/core-concepts/modules/output.md +0 -0
  140. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/core-concepts/modules.md +0 -0
  141. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/core-concepts/routers/agent.md +0 -0
  142. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/core-concepts/routers/default.md +0 -0
  143. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/core-concepts/routers/llm.md +0 -0
  144. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/core-concepts/routers.md +0 -0
  145. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/core-concepts/tools/azure-tools.md +0 -0
  146. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/core-concepts/tools/overview.md +0 -0
  147. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/core-concepts/type-system.md +0 -0
  148. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/core-concepts/workflows.md +0 -0
  149. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/create_doc_boilerplate.py +0 -0
  150. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/deployment/monitoring.md +0 -0
  151. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/deployment/production-setup.md +0 -0
  152. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/deployment/scalability.md +0 -0
  153. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/deployment/security.md +0 -0
  154. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/development/dev.md +0 -0
  155. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/development/replace-dspy/implementation_plan.md +0 -0
  156. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/development/topics.md +0 -0
  157. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/examples/chain-gang.md +0 -0
  158. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/examples/hello-flock.md +0 -0
  159. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/examples/pydantic.md +0 -0
  160. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/examples/type-system.md +0 -0
  161. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/features/agent-chaining.md +0 -0
  162. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/features/agent-definition.md +0 -0
  163. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/features/lifecycle-hooks.md +0 -0
  164. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/features/pydantic.md +0 -0
  165. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/features/type-safety.md +0 -0
  166. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/getting-started/concepts.md +0 -0
  167. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/getting-started/configuration.md +0 -0
  168. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/getting-started/installation.md +0 -0
  169. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/getting-started/quickstart.md +0 -0
  170. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/index.md +0 -0
  171. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/integrations/dspy.md +0 -0
  172. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/integrations/litellm.md +0 -0
  173. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/integrations/rest-api.md +0 -0
  174. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/integrations/tavily.md +0 -0
  175. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/integrations/temporal.md +0 -0
  176. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/release-notes/release_notes.md +0 -0
  177. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/stylesheets/extra.css +0 -0
  178. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/tutorials/blog-generator.md +0 -0
  179. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/tutorials/custom-tools.md +0 -0
  180. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/tutorials/error-recovery.md +0 -0
  181. {flock_core-0.3.41 → flock_core-0.4.0b2}/docs/tutorials/multi-agent.md +0 -0
  182. {flock_core-0.3.41 → flock_core-0.4.0b2}/examples/01_introduction/02_typed_output.py +0 -0
  183. {flock_core-0.3.41 → flock_core-0.4.0b2}/examples/01_introduction/03_tool_and_code_agent.py +0 -0
  184. {flock_core-0.3.41 → flock_core-0.4.0b2}/examples/01_introduction/04_descriptions.py +0 -0
  185. {flock_core-0.3.41 → flock_core-0.4.0b2}/examples/01_introduction/06_simple_hand_off.py +0 -0
  186. {flock_core-0.3.41 → flock_core-0.4.0b2}/examples/01_introduction/07_all_base_concepts.py +0 -0
  187. {flock_core-0.3.41 → flock_core-0.4.0b2}/examples/02_concepts/api/api_client.py +0 -0
  188. {flock_core-0.3.41 → flock_core-0.4.0b2}/examples/02_concepts/api/api_server.py +0 -0
  189. {flock_core-0.3.41 → flock_core-0.4.0b2}/examples/02_concepts/context/context.py +0 -0
  190. {flock_core-0.3.41 → flock_core-0.4.0b2}/examples/02_concepts/evaluator/multi_hops_memory.py +0 -0
  191. {flock_core-0.3.41 → flock_core-0.4.0b2}/examples/02_concepts/evaluator/multi_hops_zep.py +0 -0
  192. {flock_core-0.3.41 → flock_core-0.4.0b2}/examples/02_concepts/modules/use_modules.py +0 -0
  193. {flock_core-0.3.41 → flock_core-0.4.0b2}/examples/02_concepts/router/router_example.py +0 -0
  194. {flock_core-0.3.41 → flock_core-0.4.0b2}/examples/02_concepts/tools/azure_tools_example.py +0 -0
  195. {flock_core-0.3.41 → flock_core-0.4.0b2}/examples/02_concepts/tools/own_tools.py +0 -0
  196. {flock_core-0.3.41 → flock_core-0.4.0b2}/examples/03_apps/dynamic_apps/main.py +0 -0
  197. {flock_core-0.3.41 → flock_core-0.4.0b2}/examples/03_apps/gemini_dev/main.py +0 -0
  198. {flock_core-0.3.41 → flock_core-0.4.0b2}/examples/03_apps/roguelike/game.py +0 -0
  199. {flock_core-0.3.41 → flock_core-0.4.0b2}/examples/03_apps/story_gen/cursor.py +0 -0
  200. {flock_core-0.3.41 → flock_core-0.4.0b2}/examples/04_comparison/rag_comparison/rag.ipynb +0 -0
  201. {flock_core-0.3.41 → flock_core-0.4.0b2}/examples/05_documentation/getting-started/first_agent_01.py +0 -0
  202. {flock_core-0.3.41 → flock_core-0.4.0b2}/examples/05_documentation/getting-started/first_agent_02.py +0 -0
  203. {flock_core-0.3.41 → flock_core-0.4.0b2}/examples/05_documentation/getting-started/first_agent_03.py +0 -0
  204. {flock_core-0.3.41 → flock_core-0.4.0b2}/examples/README.md +0 -0
  205. {flock_core-0.3.41 → flock_core-0.4.0b2}/examples/playground/02_cook_book/flock_without_llms.py +0 -0
  206. {flock_core-0.3.41 → flock_core-0.4.0b2}/examples/playground/02_cook_book/long_research_no_handoff.py +0 -0
  207. {flock_core-0.3.41 → flock_core-0.4.0b2}/examples/playground/02_cook_book/painting_by_numbers.py +0 -0
  208. {flock_core-0.3.41 → flock_core-0.4.0b2}/examples/playground/02_cook_book/project_manager.py +0 -0
  209. {flock_core-0.3.41 → flock_core-0.4.0b2}/examples/playground/02_cook_book/repo_analyzer/repo_analyzer.py +0 -0
  210. {flock_core-0.3.41 → flock_core-0.4.0b2}/examples/playground/02_cook_book/repo_analyzer/repo_analyzer_llm.py +0 -0
  211. {flock_core-0.3.41 → flock_core-0.4.0b2}/examples/playground/02_cook_book/save_and_load/load_01.py +0 -0
  212. {flock_core-0.3.41 → flock_core-0.4.0b2}/examples/playground/02_cook_book/save_and_load/load_02.py +0 -0
  213. {flock_core-0.3.41 → flock_core-0.4.0b2}/examples/playground/02_cook_book/save_and_load/load_03.py +0 -0
  214. {flock_core-0.3.41 → flock_core-0.4.0b2}/examples/playground/02_cook_book/save_and_load/load_04.py +0 -0
  215. {flock_core-0.3.41 → flock_core-0.4.0b2}/examples/playground/02_cook_book/save_and_load/save_01.py +0 -0
  216. {flock_core-0.3.41 → flock_core-0.4.0b2}/examples/playground/02_cook_book/save_and_load/save_02.py +0 -0
  217. {flock_core-0.3.41 → flock_core-0.4.0b2}/examples/playground/02_cook_book/save_and_load/save_03.py +0 -0
  218. {flock_core-0.3.41 → flock_core-0.4.0b2}/examples/playground/02_cook_book/self_improvement_with_memory.py +0 -0
  219. {flock_core-0.3.41 → flock_core-0.4.0b2}/examples/playground/hier/her_vis.py +0 -0
  220. {flock_core-0.3.41 → flock_core-0.4.0b2}/examples/playground/hier/hier_mem.py +0 -0
  221. {flock_core-0.3.41 → flock_core-0.4.0b2}/examples/playground/misc/memory.py +0 -0
  222. {flock_core-0.3.41 → flock_core-0.4.0b2}/examples/playground/misc/self_learner.py +0 -0
  223. {flock_core-0.3.41 → flock_core-0.4.0b2}/examples/playground/misc/self_learner2.py +0 -0
  224. {flock_core-0.3.41 → flock_core-0.4.0b2}/examples/playground/website/app.py +0 -0
  225. {flock_core-0.3.41 → flock_core-0.4.0b2}/mkdocs.yml +0 -0
  226. {flock_core-0.3.41 → flock_core-0.4.0b2}/scripts/code_collector.py +0 -0
  227. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/cli/assets/release_notes.md +0 -0
  228. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/cli/constants.py +0 -0
  229. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/cli/create_agent.py +0 -0
  230. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/cli/execute_flock.py +0 -0
  231. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/cli/load_agent.py +0 -0
  232. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/cli/load_examples.py +0 -0
  233. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/cli/load_release_notes.py +0 -0
  234. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/cli/loaded_flock_cli.py +0 -0
  235. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/cli/manage_agents.py +0 -0
  236. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/cli/settings.py +0 -0
  237. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/cli/view_results.py +0 -0
  238. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/config.py +0 -0
  239. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/core/api/__init__.py +0 -0
  240. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/core/api/endpoints.py +0 -0
  241. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/core/api/main.py +0 -0
  242. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/core/api/models.py +0 -0
  243. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/core/api/run_store.py +0 -0
  244. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/core/api/ui/__init__.py +0 -0
  245. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/core/api/ui/routes.py +0 -0
  246. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/core/api/ui/utils.py +0 -0
  247. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/core/context/context.py +0 -0
  248. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/core/context/context_manager.py +0 -0
  249. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/core/context/context_vars.py +0 -0
  250. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/core/execution/local_executor.py +0 -0
  251. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/core/execution/temporal_executor.py +0 -0
  252. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/core/flock_evaluator.py +0 -0
  253. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/core/flock_factory.py +0 -0
  254. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/core/flock_module.py +0 -0
  255. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/core/flock_router.py +0 -0
  256. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/core/interpreter/python_interpreter.py +0 -0
  257. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/core/logging/__init__.py +0 -0
  258. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/core/logging/formatters/enum_builder.py +0 -0
  259. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/core/logging/formatters/theme_builder.py +0 -0
  260. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/core/logging/formatters/themed_formatter.py +0 -0
  261. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/core/logging/formatters/themes.py +0 -0
  262. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/core/logging/logging.py +0 -0
  263. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/core/logging/span_middleware/baggage_span_processor.py +0 -0
  264. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/core/logging/telemetry.py +0 -0
  265. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/core/logging/telemetry_exporter/base_exporter.py +0 -0
  266. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/core/logging/telemetry_exporter/file_exporter.py +0 -0
  267. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/core/logging/telemetry_exporter/sqlite_exporter.py +0 -0
  268. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/core/logging/trace_and_logged.py +0 -0
  269. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/core/mixin/dspy_integration.py +0 -0
  270. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/core/mixin/prompt_parser.py +0 -0
  271. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/core/serialization/__init__.py +0 -0
  272. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/core/serialization/callable_registry.py +0 -0
  273. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/core/serialization/json_encoder.py +0 -0
  274. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/core/serialization/secure_serializer.py +0 -0
  275. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/core/tools/azure_tools.py +0 -0
  276. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/core/tools/basic_tools.py +0 -0
  277. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/core/tools/dev_tools/github.py +0 -0
  278. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/core/tools/llm_tools.py +0 -0
  279. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/core/tools/markdown_tools.py +0 -0
  280. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/core/util/hydrator.py +0 -0
  281. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/core/util/input_resolver.py +0 -0
  282. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/evaluators/declarative/declarative_evaluator.py +0 -0
  283. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/evaluators/memory/azure_search_evaluator.py +0 -0
  284. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/evaluators/memory/memory_evaluator.py +0 -0
  285. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/evaluators/natural_language/natural_language_evaluator.py +0 -0
  286. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/evaluators/zep/zep_evaluator.py +0 -0
  287. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/modules/azure-search/azure_search_module.py +0 -0
  288. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/modules/callback/callback_module.py +0 -0
  289. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/modules/memory/memory_module.py +0 -0
  290. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/modules/memory/memory_parser.py +0 -0
  291. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/modules/memory/memory_storage.py +0 -0
  292. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/modules/output/output_module.py +0 -0
  293. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/modules/performance/metrics_module.py +0 -0
  294. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/modules/zep/zep_module.py +0 -0
  295. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/platform/docker_tools.py +0 -0
  296. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/platform/jaeger_install.py +0 -0
  297. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/routers/__init__.py +0 -0
  298. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/routers/agent/__init__.py +0 -0
  299. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/routers/agent/agent_router.py +0 -0
  300. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/routers/agent/handoff_agent.py +0 -0
  301. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/routers/default/__init__.py +0 -0
  302. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/routers/default/default_router.py +0 -0
  303. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/routers/llm/__init__.py +0 -0
  304. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/routers/llm/llm_router.py +0 -0
  305. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/3024-day.toml +0 -0
  306. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/3024-night.toml +0 -0
  307. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/aardvark-blue.toml +0 -0
  308. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/abernathy.toml +0 -0
  309. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/adventure.toml +0 -0
  310. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/adventuretime.toml +0 -0
  311. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/afterglow.toml +0 -0
  312. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/alabaster.toml +0 -0
  313. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/alienblood.toml +0 -0
  314. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/andromeda.toml +0 -0
  315. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/apple-classic.toml +0 -0
  316. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/apple-system-colors.toml +0 -0
  317. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/arcoiris.toml +0 -0
  318. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/argonaut copy.toml +0 -0
  319. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/argonaut.toml +0 -0
  320. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/arthur.toml +0 -0
  321. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/ateliersulphurpool.toml +0 -0
  322. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/atom.toml +0 -0
  323. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/atom_test.toml +0 -0
  324. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/atomonelight.toml +0 -0
  325. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/aurora.toml +0 -0
  326. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/ayu copy.toml +0 -0
  327. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/ayu-light.toml +0 -0
  328. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/ayu-mirage.toml +0 -0
  329. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/ayu.toml +0 -0
  330. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/banana-blueberry.toml +0 -0
  331. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/batman.toml +0 -0
  332. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/belafonte-day.toml +0 -0
  333. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/belafonte-night.toml +0 -0
  334. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/birdsofparadise.toml +0 -0
  335. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/blazer.toml +0 -0
  336. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/blue-matrix.toml +0 -0
  337. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/blueberrypie.toml +0 -0
  338. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/bluedolphin.toml +0 -0
  339. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/blulocodark.toml +0 -0
  340. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/blulocolight.toml +0 -0
  341. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/borland.toml +0 -0
  342. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/breeze.toml +0 -0
  343. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/bright-lights.toml +0 -0
  344. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/broadcast.toml +0 -0
  345. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/brogrammer.toml +0 -0
  346. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/builtin-dark.toml +0 -0
  347. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/builtin-light.toml +0 -0
  348. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/builtin-pastel-dark.toml +0 -0
  349. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/builtin-solarized-dark.toml +0 -0
  350. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/builtin-solarized-light.toml +0 -0
  351. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/builtin-tango-dark.toml +0 -0
  352. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/builtin-tango-light.toml +0 -0
  353. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/c64.toml +0 -0
  354. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/calamity.toml +0 -0
  355. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/catppuccin-frappe.toml +0 -0
  356. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/catppuccin-latte.toml +0 -0
  357. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/catppuccin-macchiato.toml +0 -0
  358. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/catppuccin-mocha.toml +0 -0
  359. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/cga.toml +0 -0
  360. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/chalk.toml +0 -0
  361. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/chalkboard.toml +0 -0
  362. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/challengerdeep.toml +0 -0
  363. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/chester.toml +0 -0
  364. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/ciapre.toml +0 -0
  365. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/clrs.toml +0 -0
  366. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/cobalt-neon.toml +0 -0
  367. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/cobalt2.toml +0 -0
  368. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/coffee-theme.toml +0 -0
  369. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/crayonponyfish.toml +0 -0
  370. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/cutiepro.toml +0 -0
  371. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/cyberdyne.toml +0 -0
  372. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/cyberpunk.toml +0 -0
  373. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/cyberpunkscarletprotocol.toml +0 -0
  374. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/dark+.toml +0 -0
  375. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/dark-pastel.toml +0 -0
  376. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/darkermatrix.toml +0 -0
  377. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/darkmatrix.toml +0 -0
  378. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/darkside.toml +0 -0
  379. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/dayfox.toml +0 -0
  380. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/deep.toml +0 -0
  381. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/desert.toml +0 -0
  382. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/dimidium.toml +0 -0
  383. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/dimmedmonokai.toml +0 -0
  384. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/django.toml +0 -0
  385. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/djangorebornagain.toml +0 -0
  386. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/djangosmooth.toml +0 -0
  387. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/doom-peacock.toml +0 -0
  388. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/doomone.toml +0 -0
  389. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/dotgov.toml +0 -0
  390. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/dracula+.toml +0 -0
  391. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/dracula.toml +0 -0
  392. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/duckbones.toml +0 -0
  393. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/duotone-dark.toml +0 -0
  394. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/earthsong.toml +0 -0
  395. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/elemental.toml +0 -0
  396. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/elementary.toml +0 -0
  397. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/encom.toml +0 -0
  398. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/espresso-libre.toml +0 -0
  399. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/espresso.toml +0 -0
  400. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/everblush.toml +0 -0
  401. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/fahrenheit.toml +0 -0
  402. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/fairyfloss.toml +0 -0
  403. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/farmhouse-dark.toml +0 -0
  404. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/farmhouse-light.toml +0 -0
  405. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/fideloper.toml +0 -0
  406. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/firefly-traditional.toml +0 -0
  407. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/firefoxdev.toml +0 -0
  408. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/firewatch.toml +0 -0
  409. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/fishtank.toml +0 -0
  410. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/flat.toml +0 -0
  411. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/flatland.toml +0 -0
  412. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/flexoki-dark.toml +0 -0
  413. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/flexoki-light.toml +0 -0
  414. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/floraverse.toml +0 -0
  415. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/forestblue.toml +0 -0
  416. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/framer.toml +0 -0
  417. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/frontenddelight.toml +0 -0
  418. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/funforrest.toml +0 -0
  419. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/galaxy.toml +0 -0
  420. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/galizur.toml +0 -0
  421. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/github-dark.toml +0 -0
  422. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/github.toml +0 -0
  423. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/glacier.toml +0 -0
  424. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/grape.toml +0 -0
  425. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/grass.toml +0 -0
  426. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/grey-green.toml +0 -0
  427. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/gruber-darker.toml +0 -0
  428. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/gruvboxdark.toml +0 -0
  429. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/gruvboxdarkhard.toml +0 -0
  430. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/gruvboxlight.toml +0 -0
  431. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/guezwhoz.toml +0 -0
  432. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/hacktober.toml +0 -0
  433. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/hardcore.toml +0 -0
  434. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/harper.toml +0 -0
  435. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/hax0r-blue.toml +0 -0
  436. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/hax0r-gr33n.toml +0 -0
  437. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/hax0r-r3d.toml +0 -0
  438. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/highway.toml +0 -0
  439. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/hipster-green.toml +0 -0
  440. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/hivacruz.toml +0 -0
  441. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/homebrew.toml +0 -0
  442. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/hopscotch.256.toml +0 -0
  443. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/hopscotch.toml +0 -0
  444. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/hurtado.toml +0 -0
  445. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/hybrid.toml +0 -0
  446. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/ic-green-ppl.toml +0 -0
  447. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/ic-orange-ppl.toml +0 -0
  448. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/iceberg-dark.toml +0 -0
  449. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/iceberg-light.toml +0 -0
  450. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/idea.toml +0 -0
  451. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/idletoes.toml +0 -0
  452. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/ir-black.toml +0 -0
  453. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/iterm2-dark-background.toml +0 -0
  454. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/iterm2-default.toml +0 -0
  455. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/iterm2-light-background.toml +0 -0
  456. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/iterm2-pastel-dark-background.toml +0 -0
  457. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/iterm2-smoooooth.toml +0 -0
  458. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/iterm2-solarized-dark.toml +0 -0
  459. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/iterm2-solarized-light.toml +0 -0
  460. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/iterm2-tango-dark.toml +0 -0
  461. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/iterm2-tango-light.toml +0 -0
  462. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/jackie-brown.toml +0 -0
  463. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/japanesque.toml +0 -0
  464. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/jellybeans.toml +0 -0
  465. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/jetbrains-darcula.toml +0 -0
  466. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/jubi.toml +0 -0
  467. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/kanagawabones.toml +0 -0
  468. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/kibble.toml +0 -0
  469. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/kolorit.toml +0 -0
  470. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/konsolas.toml +0 -0
  471. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/kurokula.toml +0 -0
  472. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/lab-fox.toml +0 -0
  473. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/laser.toml +0 -0
  474. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/later-this-evening.toml +0 -0
  475. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/lavandula.toml +0 -0
  476. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/liquidcarbon.toml +0 -0
  477. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/liquidcarbontransparent.toml +0 -0
  478. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/liquidcarbontransparentinverse.toml +0 -0
  479. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/lovelace.toml +0 -0
  480. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/man-page.toml +0 -0
  481. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/mariana.toml +0 -0
  482. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/material.toml +0 -0
  483. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/materialdark.toml +0 -0
  484. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/materialdarker.toml +0 -0
  485. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/materialdesigncolors.toml +0 -0
  486. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/materialocean.toml +0 -0
  487. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/mathias.toml +0 -0
  488. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/matrix.toml +0 -0
  489. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/medallion.toml +0 -0
  490. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/mellifluous.toml +0 -0
  491. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/midnight-in-mojave.toml +0 -0
  492. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/mirage.toml +0 -0
  493. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/misterioso.toml +0 -0
  494. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/molokai.toml +0 -0
  495. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/monalisa.toml +0 -0
  496. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/monokai-remastered.toml +0 -0
  497. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/monokai-soda.toml +0 -0
  498. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/monokai-vivid.toml +0 -0
  499. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/n0tch2k.toml +0 -0
  500. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/neobones-dark.toml +0 -0
  501. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/neobones-light.toml +0 -0
  502. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/neon.toml +0 -0
  503. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/neopolitan.toml +0 -0
  504. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/neutron.toml +0 -0
  505. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/night-owlish-light.toml +0 -0
  506. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/nightfox.toml +0 -0
  507. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/nightlion-v1.toml +0 -0
  508. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/nightlion-v2.toml +0 -0
  509. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/niji.toml +0 -0
  510. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/nocturnal-winter.toml +0 -0
  511. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/nord-light.toml +0 -0
  512. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/nord.toml +0 -0
  513. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/novel.toml +0 -0
  514. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/nvimdark.toml +0 -0
  515. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/nvimlight.toml +0 -0
  516. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/obsidian.toml +0 -0
  517. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/ocean.toml +0 -0
  518. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/oceanic-next.toml +0 -0
  519. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/oceanicmaterial.toml +0 -0
  520. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/ollie.toml +0 -0
  521. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/onehalfdark.toml +0 -0
  522. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/onehalflight.toml +0 -0
  523. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/operator-mono-dark.toml +0 -0
  524. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/overnight-slumber.toml +0 -0
  525. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/oxocarbon.toml +0 -0
  526. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/palenighthc.toml +0 -0
  527. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/pandora.toml +0 -0
  528. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/paraiso-dark.toml +0 -0
  529. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/paulmillr.toml +0 -0
  530. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/pencildark.toml +0 -0
  531. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/pencillight.toml +0 -0
  532. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/peppermint.toml +0 -0
  533. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/piatto-light.toml +0 -0
  534. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/pnevma.toml +0 -0
  535. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/popping-and-locking.toml +0 -0
  536. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/primary.toml +0 -0
  537. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/pro-light.toml +0 -0
  538. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/pro.toml +0 -0
  539. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/purple-rain.toml +0 -0
  540. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/purplepeter.toml +0 -0
  541. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/rapture.toml +0 -0
  542. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/raycast-dark.toml +0 -0
  543. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/raycast-light.toml +0 -0
  544. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/rebecca.toml +0 -0
  545. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/red-alert.toml +0 -0
  546. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/red-planet.toml +0 -0
  547. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/red-sands.toml +0 -0
  548. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/relaxed.toml +0 -0
  549. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/retro.toml +0 -0
  550. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/rippedcasts.toml +0 -0
  551. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/rose-pine-dawn.toml +0 -0
  552. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/rose-pine-moon.toml +0 -0
  553. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/rose-pine.toml +0 -0
  554. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/rouge-2.toml +0 -0
  555. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/royal.toml +0 -0
  556. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/ryuuko.toml +0 -0
  557. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/sakura.toml +0 -0
  558. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/scarlet-protocol.toml +0 -0
  559. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/seafoam-pastel.toml +0 -0
  560. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/seashells.toml +0 -0
  561. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/seoulbones-dark.toml +0 -0
  562. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/seoulbones-light.toml +0 -0
  563. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/seti.toml +0 -0
  564. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/shades-of-purple.toml +0 -0
  565. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/shaman.toml +0 -0
  566. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/slate.toml +0 -0
  567. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/sleepyhollow.toml +0 -0
  568. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/smyck.toml +0 -0
  569. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/snazzy.toml +0 -0
  570. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/softserver.toml +0 -0
  571. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/solarized-darcula.toml +0 -0
  572. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/solarized-dark---patched.toml +0 -0
  573. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/solarized-dark-higher-contrast.toml +0 -0
  574. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/spacedust.toml +0 -0
  575. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/spacegray-eighties-dull.toml +0 -0
  576. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/spacegray-eighties.toml +0 -0
  577. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/spacegray.toml +0 -0
  578. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/spiderman.toml +0 -0
  579. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/spring.toml +0 -0
  580. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/square.toml +0 -0
  581. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/sublette.toml +0 -0
  582. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/subliminal.toml +0 -0
  583. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/sugarplum.toml +0 -0
  584. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/sundried.toml +0 -0
  585. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/symfonic.toml +0 -0
  586. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/synthwave-everything.toml +0 -0
  587. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/synthwave.toml +0 -0
  588. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/synthwavealpha.toml +0 -0
  589. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/tango-adapted.toml +0 -0
  590. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/tango-half-adapted.toml +0 -0
  591. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/teerb.toml +0 -0
  592. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/terafox.toml +0 -0
  593. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/terminal-basic.toml +0 -0
  594. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/thayer-bright.toml +0 -0
  595. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/the-hulk.toml +0 -0
  596. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/tinacious-design-(dark).toml +0 -0
  597. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/tinacious-design-(light).toml +0 -0
  598. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/tokyonight-day.toml +0 -0
  599. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/tokyonight-storm.toml +0 -0
  600. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/tokyonight.toml +0 -0
  601. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/tomorrow-night-blue.toml +0 -0
  602. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/tomorrow-night-bright.toml +0 -0
  603. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/tomorrow-night-burns.toml +0 -0
  604. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/tomorrow-night-eighties.toml +0 -0
  605. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/tomorrow-night.toml +0 -0
  606. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/tomorrow.toml +0 -0
  607. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/toychest.toml +0 -0
  608. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/treehouse.toml +0 -0
  609. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/twilight.toml +0 -0
  610. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/ubuntu.toml +0 -0
  611. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/ultradark.toml +0 -0
  612. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/ultraviolent.toml +0 -0
  613. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/underthesea.toml +0 -0
  614. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/unikitty.toml +0 -0
  615. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/urple.toml +0 -0
  616. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/vaughn.toml +0 -0
  617. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/vesper.toml +0 -0
  618. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/vibrantink.toml +0 -0
  619. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/vimbones.toml +0 -0
  620. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/violet-dark.toml +0 -0
  621. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/violet-light.toml +0 -0
  622. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/warmneon.toml +0 -0
  623. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/wez.toml +0 -0
  624. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/whimsy.toml +0 -0
  625. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/wildcherry.toml +0 -0
  626. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/wilmersdorf.toml +0 -0
  627. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/wombat.toml +0 -0
  628. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/wryan.toml +0 -0
  629. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/xcodedark.toml +0 -0
  630. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/xcodedarkhc.toml +0 -0
  631. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/xcodelight.toml +0 -0
  632. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/xcodelighthc.toml +0 -0
  633. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/xcodewwdc.toml +0 -0
  634. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/zenbones-dark.toml +0 -0
  635. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/zenbones-light.toml +0 -0
  636. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/zenbones.toml +0 -0
  637. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/zenburn.toml +0 -0
  638. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/zenburned.toml +0 -0
  639. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/zenwritten-dark.toml +0 -0
  640. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/themes/zenwritten-light.toml +0 -0
  641. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/workflow/__init__.py +0 -0
  642. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/workflow/activities.py +0 -0
  643. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/workflow/agent_activities.py +0 -0
  644. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/workflow/temporal_setup.py +0 -0
  645. {flock_core-0.3.41 → flock_core-0.4.0b2}/src/flock/workflow/workflow.py +0 -0
  646. {flock_core-0.3.41 → flock_core-0.4.0b2}/tests/__init__.py +0 -0
  647. {flock_core-0.3.41 → flock_core-0.4.0b2}/tests/serialization/__init__.py +0 -0
@@ -0,0 +1,639 @@
1
+ # Enhanced Flock Serialization Implementation
2
+
3
+ ## Overview
4
+
5
+ We've implemented a comprehensive serialization system for the Flock framework that enables fully self-contained YAML exports. The key innovation is the inclusion of type definitions, component references, and dependencies directly in the serialized output, making Flock configurations portable across different environments.
6
+
7
+ ## Problem Statement
8
+
9
+ Previously, when serializing a Flock to YAML, the configuration would reference custom types (like `RandomPerson`) without including their definitions. This meant that systems loading the YAML needed to already have these types defined, limiting portability.
10
+
11
+ Example issue:
12
+ ```yaml
13
+ # Before: References type but doesn't define it
14
+ output: 'random_user_list: list[RandomPerson]'
15
+ ```
16
+
17
+ ## Solution Architecture
18
+
19
+ Our solution enhances the serialization process to create self-contained configurations by:
20
+
21
+ 1. **Detecting Custom Types**: Analyzing agent input/output signatures to identify custom types
22
+ 2. **Extracting Type Definitions**: Capturing full schema definitions of custom types
23
+ 3. **Including Component References**: Documenting the modules that provide components
24
+ 4. **Specifying Dependencies**: Listing required packages and versions
25
+
26
+ ### Key Components
27
+
28
+ 1. **Enhanced Serialization**:
29
+ - `Flock.to_dict()`: Now extracts and includes types and components
30
+ - Type extraction from signatures via `_extract_types_from_signature()`
31
+ - Schema generation via Pydantic's `model_json_schema()`
32
+
33
+ 2. **Enhanced Deserialization**:
34
+ - `Flock.from_dict()`: First processes types, then components, then agents
35
+ - Dynamic type recreation for missing types
36
+ - Component registration from module paths
37
+
38
+ 3. **Type Handling**:
39
+ - Support for Pydantic models and dataclasses
40
+ - Nested type structures via schema references
41
+ - Generic types like List and Dict
42
+
43
+ 4. **File Path Support**:
44
+ - Storing both module paths and file system paths for components
45
+ - Fallback mechanism that tries module import first, then file path loading
46
+ - Flexibility for CLI and non-package environments
47
+
48
+ 5. **Improved Tool Serialization** (NEW):
49
+ - Tools are now serialized as simple function names in agent's tools list
50
+ - Tools are included in the components section with type "flock_callable"
51
+ - Better integrated with the component-based architecture
52
+
53
+ ## Implementation Details
54
+
55
+ ### Type Detection and Extraction
56
+
57
+ ```python
58
+ def _extract_types_from_signature(self, signature: str) -> list[str]:
59
+ """Extract type names from an input/output signature string."""
60
+ # Basic type extraction from strings like "result: TypeName" or "list[TypeName]"
61
+ custom_types = []
62
+
63
+ # Look for type annotations (everything after ":")
64
+ parts = signature.split(":")
65
+ if len(parts) > 1:
66
+ type_part = parts[1].strip()
67
+
68
+ # Extract from list[Type]
69
+ if "list[" in type_part:
70
+ inner_type = type_part.split("list[")[1].split("]")[0].strip()
71
+ if inner_type and not inner_type.lower() in ["str", "int", "float", "bool", "dict", "list"]:
72
+ custom_types.append(inner_type)
73
+
74
+ # Extract direct type references
75
+ elif type_part and not type_part.lower() in ["str", "int", "float", "bool", "dict", "list"]:
76
+ custom_types.append(type_part.split()[0])
77
+
78
+ return custom_types
79
+ ```
80
+
81
+ ### Type Definition Extraction
82
+
83
+ ```python
84
+ def _extract_type_definition(self, type_name: str, type_obj: type) -> dict[str, Any]:
85
+ """Extract a definition for a custom type."""
86
+ type_def = {
87
+ "module_path": type_obj.__module__,
88
+ }
89
+
90
+ # Handle Pydantic models
91
+ if hasattr(type_obj, "model_json_schema") and callable(getattr(type_obj, "model_json_schema")):
92
+ type_def["type"] = "pydantic.BaseModel"
93
+ try:
94
+ schema = type_obj.model_json_schema()
95
+ # Clean up schema to remove unnecessary fields
96
+ if "title" in schema and schema["title"] == type_name:
97
+ del schema["title"]
98
+ type_def["schema"] = schema
99
+ except Exception as e:
100
+ logger.warning(f"Could not extract schema for Pydantic model {type_name}: {e}")
101
+
102
+ # Handle dataclasses
103
+ elif is_dataclass(type_obj):
104
+ type_def["type"] = "dataclass"
105
+ fields = {}
106
+ for field_name, field in type_obj.__dataclass_fields__.items():
107
+ fields[field_name] = {
108
+ "type": str(field.type),
109
+ "default": str(field.default) if field.default is not inspect.Parameter.empty else None
110
+ }
111
+ type_def["fields"] = fields
112
+
113
+ # Handle other types
114
+ else:
115
+ type_def["type"] = "custom"
116
+
117
+ # Extract import statement
118
+ type_def["imports"] = [f"from {type_obj.__module__} import {type_name}"]
119
+
120
+ return type_def
121
+ ```
122
+
123
+ ### Component Definition with File Paths
124
+
125
+ ```python
126
+ def _get_component_definition(self, component_type: str) -> dict[str, Any]:
127
+ """Get definition for a component type."""
128
+ from flock.core.flock_registry import get_registry
129
+ import inspect
130
+ import os
131
+ import sys
132
+
133
+ registry = get_registry()
134
+ component_def = {}
135
+
136
+ try:
137
+ # Try to get the component class from registry
138
+ component_class = registry._components.get(component_type)
139
+ if component_class:
140
+ # Get the standard module path
141
+ module_path = component_class.__module__
142
+
143
+ # Get the actual file system path if possible
144
+ file_path = None
145
+ try:
146
+ if hasattr(component_class, "__module__") and component_class.__module__:
147
+ module = sys.modules.get(component_class.__module__)
148
+ if module and hasattr(module, "__file__"):
149
+ file_path = os.path.abspath(module.__file__)
150
+ except Exception:
151
+ # If we can't get the file path, we'll just use the module path
152
+ pass
153
+
154
+ component_def = {
155
+ "type": "flock_component",
156
+ "module_path": module_path,
157
+ "file_path": file_path, # Include actual file system path
158
+ "description": getattr(component_class, "__doc__", "").strip() or f"{component_type} component"
159
+ }
160
+ except Exception as e:
161
+ logger.warning(f"Could not extract definition for component {component_type}: {e}")
162
+ # Provide minimal information if we can't extract details
163
+ component_def = {
164
+ "type": "flock_component",
165
+ "module_path": "unknown",
166
+ "file_path": None,
167
+ "description": f"{component_type} component (definition incomplete)"
168
+ }
169
+
170
+ return component_def
171
+ ```
172
+
173
+ ### Tool Callable Definition (NEW)
174
+
175
+ ```python
176
+ def _get_callable_definition(self, callable_ref: str, func_name: str) -> dict[str, Any]:
177
+ """Get definition for a callable reference.
178
+
179
+ Args:
180
+ callable_ref: The fully qualified path to the callable
181
+ func_name: The simple function name (for display purposes)
182
+ """
183
+ import os
184
+ import sys
185
+ import inspect
186
+ from flock.core.flock_registry import get_registry
187
+
188
+ registry = get_registry()
189
+ callable_def = {}
190
+
191
+ try:
192
+ # Try to get the callable from registry
193
+ func = registry.get_callable(callable_ref)
194
+ if func:
195
+ # Get the standard module path
196
+ module_path = func.__module__
197
+
198
+ # Get the actual file system path if possible
199
+ file_path = None
200
+ try:
201
+ if func.__module__ and func.__module__ != "builtins":
202
+ module = sys.modules.get(func.__module__)
203
+ if module and hasattr(module, "__file__"):
204
+ file_path = os.path.abspath(module.__file__)
205
+ except Exception:
206
+ # If we can't get the file path, just use the module path
207
+ pass
208
+
209
+ # Get the docstring for description
210
+ docstring = inspect.getdoc(func) or f"Callable function {func_name}"
211
+
212
+ callable_def = {
213
+ "type": "flock_callable",
214
+ "module_path": module_path,
215
+ "file_path": file_path,
216
+ "description": docstring.strip(),
217
+ }
218
+ except Exception as e:
219
+ logger.warning(
220
+ f"Could not extract definition for callable {callable_ref}: {e}"
221
+ )
222
+ # Provide minimal information
223
+ callable_def = {
224
+ "type": "flock_callable",
225
+ "module_path": callable_ref.split(".")[0] if "." in callable_ref else "unknown",
226
+ "file_path": None,
227
+ "description": f"Callable {func_name} (definition incomplete)",
228
+ }
229
+
230
+ return callable_def
231
+ ```
232
+
233
+ ### Tool Serialization for Agents (NEW)
234
+
235
+ ```python
236
+ # --- Serialize Tools (Callables) ---
237
+ if self.tools:
238
+ logger.debug(f"Serializing {len(self.tools)} tools for agent '{self.name}'")
239
+ serialized_tools = []
240
+ for tool in self.tools:
241
+ if callable(tool) and not isinstance(tool, type):
242
+ path_str = FlockRegistry.get_callable_path_string(tool)
243
+ if path_str:
244
+ # Get just the function name from the path string
245
+ # If it's a namespaced path like module.submodule.function_name
246
+ # Just use the function_name part
247
+ func_name = path_str.split(".")[-1]
248
+ serialized_tools.append(func_name)
249
+ logger.debug(f"Added tool '{func_name}' to agent '{self.name}'")
250
+ else:
251
+ logger.warning(
252
+ f"Could not get path string for tool {tool} in agent '{self.name}'. Skipping."
253
+ )
254
+ else:
255
+ logger.warning(f"Non-callable item found in tools list for agent '{self.name}': {tool}. Skipping.")
256
+ if serialized_tools:
257
+ data["tools"] = serialized_tools
258
+ ```
259
+
260
+ ### Extracting Tools for Component Registration (NEW)
261
+
262
+ ```python
263
+ # Extract tool (callable) information from agent data
264
+ if "tools" in agent_data and agent_data["tools"]:
265
+ logger.debug(f"Extracting tool information from agent '{name}': {agent_data['tools']}")
266
+ # Get references to the actual tool objects
267
+ tool_objs = agent_instance.tools if agent_instance.tools else []
268
+ for i, tool_name in enumerate(agent_data["tools"]):
269
+ if i < len(tool_objs):
270
+ tool = tool_objs[i]
271
+ if callable(tool) and not isinstance(tool, type):
272
+ # Get the fully qualified name for registry lookup
273
+ path_str = get_registry().get_callable_path_string(tool)
274
+ if path_str:
275
+ logger.debug(f"Adding tool '{tool_name}' to components")
276
+ # Add definition using just the function name as the key
277
+ components[tool_name] = self._get_callable_definition(path_str, tool_name)
278
+ ```
279
+
280
+ ### Component Loading with File Path Fallback
281
+
282
+ ```python
283
+ @classmethod
284
+ def _register_component_definitions(cls, component_defs: dict[str, Any]) -> None:
285
+ """Register component definitions from serialized data."""
286
+ from flock.core.flock_registry import get_registry
287
+ import importlib
288
+ import importlib.util
289
+ import sys
290
+ import os
291
+
292
+ registry = get_registry()
293
+
294
+ for component_name, component_def in component_defs.items():
295
+ logger.debug(f"Registering component: {component_name}")
296
+ component_type = component_def.get("type", "flock_component")
297
+
298
+ try:
299
+ # Handle callables differently than components
300
+ if component_type == "flock_callable":
301
+ # For callables, component_name is just the function name
302
+ func_name = component_name
303
+ module_path = component_def.get("module_path")
304
+ file_path = component_def.get("file_path")
305
+ logger.debug(f"Processing callable '{func_name}' from module '{module_path}', file: {file_path}")
306
+
307
+ # Try direct import first
308
+ if module_path:
309
+ try:
310
+ logger.debug(f"Attempting to import module: {module_path}")
311
+ module = importlib.import_module(module_path)
312
+ if hasattr(module, func_name):
313
+ callable_obj = getattr(module, func_name)
314
+ # Register with just the name for easier lookup
315
+ registry.register_callable(callable_obj, func_name)
316
+ logger.info(f"Registered callable with name: {func_name}")
317
+ # Also register with fully qualified path for compatibility
318
+ if module_path != "__main__":
319
+ full_path = f"{module_path}.{func_name}"
320
+ registry.register_callable(callable_obj, full_path)
321
+ logger.info(f"Also registered callable with full path: {full_path}")
322
+ logger.info(f"Successfully registered callable {func_name} from module {module_path}")
323
+ continue
324
+ else:
325
+ logger.warning(f"Function '{func_name}' not found in module {module_path}")
326
+ except ImportError:
327
+ logger.debug(f"Could not import module {module_path}, trying file path")
328
+
329
+ # Try file path if module import fails
330
+ if file_path and os.path.exists(file_path):
331
+ try:
332
+ logger.debug(f"Attempting to load file: {file_path}")
333
+ # Create a module name from file path
334
+ mod_name = f"{func_name}_module"
335
+ spec = importlib.util.spec_from_file_location(mod_name, file_path)
336
+ if spec and spec.loader:
337
+ module = importlib.util.module_from_spec(spec)
338
+ sys.modules[spec.name] = module
339
+ spec.loader.exec_module(module)
340
+ logger.debug(f"Successfully loaded module from file, searching for function '{func_name}'")
341
+
342
+ # Look for the function in the loaded module
343
+ if hasattr(module, func_name):
344
+ callable_obj = getattr(module, func_name)
345
+ registry.register_callable(callable_obj, func_name)
346
+ logger.info(f"Successfully registered callable {func_name} from file {file_path}")
347
+ else:
348
+ logger.warning(f"Function {func_name} not found in file {file_path}")
349
+ else:
350
+ logger.warning(f"Could not create import spec for {file_path}")
351
+ except Exception as e:
352
+ logger.error(f"Error loading callable {func_name} from file {file_path}: {e}")
353
+
354
+ # Handle regular components (existing code)
355
+ else:
356
+ # ... existing component loading code ...
357
+ ```
358
+
359
+ ### Dynamic Type Recreation
360
+
361
+ ```python
362
+ @classmethod
363
+ def _create_pydantic_model(cls, type_name: str, type_def: dict[str, Any]) -> None:
364
+ """Dynamically create a Pydantic model from a schema definition."""
365
+ from pydantic import create_model
366
+
367
+ schema = type_def.get("schema", {})
368
+
369
+ try:
370
+ # Extract field definitions from schema
371
+ fields = {}
372
+ properties = schema.get("properties", {})
373
+ required = schema.get("required", [])
374
+
375
+ for field_name, field_schema in properties.items():
376
+ # Determine the field type based on schema
377
+ field_type = cls._get_type_from_schema(field_schema)
378
+
379
+ # Determine if field is required
380
+ default = ... if field_name in required else None
381
+
382
+ # Add to fields dict
383
+ fields[field_name] = (field_type, default)
384
+
385
+ # Create the model
386
+ DynamicModel = create_model(type_name, **fields)
387
+
388
+ # Register it
389
+ registry.register_type(DynamicModel, type_name)
390
+ logger.info(f"Created and registered Pydantic model: {type_name}")
391
+
392
+ except Exception as e:
393
+ logger.error(f"Failed to create Pydantic model {type_name}: {e}")
394
+ ```
395
+
396
+ ## Nested Type Support
397
+
398
+ One of the advanced features is support for complex nested type structures:
399
+
400
+ ```python
401
+ # Define nested custom types
402
+ @flock_type
403
+ class Address(BaseModel):
404
+ street: str
405
+ city: str
406
+ zip_code: str
407
+
408
+ @flock_type
409
+ class Contact(BaseModel):
410
+ email: str
411
+ phone: str
412
+ address: Address # Nested model
413
+
414
+ @flock_type
415
+ class Company(BaseModel):
416
+ name: str
417
+ headquarters: Address # Nested model
418
+ contacts: List[Contact] # List of nested models
419
+ departments: Dict[str, List[str]] # Dictionary with nested list
420
+ ```
421
+
422
+ The serialization correctly handles these nested structures by leveraging Pydantic's JSON schema generation, which includes:
423
+
424
+ 1. Definitions for all nested types in the `$defs` section
425
+ 2. References to these definitions using `$ref`
426
+ 3. Proper representation of complex structures like lists and dictionaries
427
+
428
+ ## Testing
429
+
430
+ We've implemented comprehensive tests:
431
+
432
+ 1. **Basic Type Tests**: Verify serialization of simple custom types
433
+ 2. **Multiple Type Tests**: Verify handling of multiple custom types in a Flock
434
+ 3. **Nested Structure Tests**: Verify correct handling of complex nested type structures
435
+
436
+ All tests passed, confirming the robustness of our implementation.
437
+
438
+ ## Example Output
439
+
440
+ The enhanced serialization produces YAMLs with this structure:
441
+
442
+ ```yaml
443
+ # Main Flock configuration
444
+ name: my_flock
445
+ model: openai/gpt-4o
446
+ enable_temporal: false
447
+
448
+ # Types section with full definitions
449
+ types:
450
+ RandomPerson:
451
+ module_path: examples.01_introduction.05_typed_output2
452
+ type: pydantic.BaseModel
453
+ schema:
454
+ properties:
455
+ name:
456
+ type: string
457
+ age:
458
+ type: integer
459
+ # ... other properties
460
+ required: [name, age, ...]
461
+ imports:
462
+ - from examples.01_introduction.05_typed_output2 import RandomPerson
463
+
464
+ # Component definitions with module paths AND file paths
465
+ components:
466
+ DeclarativeEvaluator:
467
+ type: flock_component
468
+ module_path: flock.evaluators.declarative.declarative_evaluator
469
+ file_path: /path/to/flock/evaluators/declarative/declarative_evaluator.py
470
+ description: Standard evaluator for declarative agent definitions
471
+
472
+ # Tool definition with flock_callable type (NEW)
473
+ get_mobile_number:
474
+ type: flock_callable
475
+ module_path: __main__
476
+ file_path: /path/to/file.py
477
+ description: A tool that returns a mobile number to a name.
478
+
479
+ # Dependencies section
480
+ dependencies:
481
+ - pydantic>=2.0.0
482
+ - flock-framework>=1.0.0
483
+
484
+ # Agents section
485
+ agents:
486
+ greeter:
487
+ name: greeter
488
+ # ... agent definition ...
489
+ # Simple function names in tools list (NEW)
490
+ tools:
491
+ - get_mobile_number
492
+ ```
493
+
494
+ ## Advantages of This Approach
495
+
496
+ 1. **Portability**: Flock YAMLs are now self-contained and can be shared across systems
497
+ 2. **Self-Documentation**: Type definitions serve as documentation
498
+ 3. **Dynamic Recreation**: Types can be recreated dynamically even if not available in the target system
499
+ 4. **Complex Type Support**: Works with nested structures, generics, and complex types
500
+ 5. **Extensibility**: Architecture allows for additional type support in the future
501
+ 6. **File Path Support**: Enables CLI use and non-package environments
502
+ 7. **Tool Integration**: Tools are now properly integrated in the component system (NEW)
503
+
504
+ ## Limitations and Future Work
505
+
506
+ 1. **Custom Methods**: Dynamic recreation doesn't preserve custom methods on types
507
+ 2. **Circular References**: May need additional handling for types that reference each other
508
+ 3. **Advanced Type Annotations**: Some very complex type annotations might need special handling
509
+ 4. **Performance**: For very large type hierarchies, serialization/deserialization could be optimized
510
+
511
+ ## File Path Support
512
+
513
+ To improve portability and usability in CLI and non-package environments, the implementation now supports loading components from file system paths, in addition to module paths:
514
+
515
+ ### Core Functionality
516
+
517
+ 1. **Dual Path Storage**:
518
+ - Components are registered with both module paths and file system paths
519
+ - The serialization system records both paths when available
520
+ - During deserialization, a fallback mechanism tries file paths when module imports fail
521
+
522
+ 2. **Registry Enhancement**:
523
+ - The `FlockRegistry` now maintains a `_component_file_paths` dictionary mapping component names to file paths
524
+ - This mapping is preserved during serialization and deserialization operations
525
+
526
+ 3. **CLI Integration**:
527
+ - Registry management displays file paths for components
528
+ - Auto-registration scanner captures file paths during component discovery
529
+ - YAML editor preserves file paths during editing
530
+ - Load mechanism includes fallback for loading from file paths
531
+
532
+ 4. **Callable/Tool Improvements** (NEW):
533
+ - Tools are now registered as components with type "flock_callable"
534
+ - Tools are listed by their simple function name in agent tool lists
535
+ - The same file path support applies to callables as to other components
536
+
537
+ ### Implementation Details
538
+
539
+ ```python
540
+ # Component definition now includes file path
541
+ def _get_component_definition(self, component_class: Type) -> Dict[str, Any]:
542
+ """Get the definition of a component class."""
543
+ module_path = f"{component_class.__module__}.{component_class.__name__}"
544
+
545
+ # Try to get the file path
546
+ file_path = None
547
+ try:
548
+ file_path = inspect.getfile(component_class)
549
+ except (TypeError, ValueError):
550
+ pass
551
+
552
+ return {
553
+ "module_path": module_path,
554
+ "file_path": file_path
555
+ }
556
+ ```
557
+
558
+ ```python
559
+ # Loading with file path fallback
560
+ def _register_component_definitions(self, component_defs: List[Dict[str, Any]]) -> None:
561
+ """Register component definitions from a serialized Flock."""
562
+ for component_def in component_defs:
563
+ module_path = component_def.get("module_path")
564
+ file_path = component_def.get("file_path")
565
+
566
+ # Try loading from module path first
567
+ try:
568
+ module_name, class_name = module_path.rsplit(".", 1)
569
+ module = importlib.import_module(module_name)
570
+ component_class = getattr(module, class_name)
571
+ self._registry.register_component(component_class)
572
+ logger.info(f"Registered component {module_path} from module path")
573
+
574
+ except (ImportError, AttributeError) as e:
575
+ # If module path fails, try file path
576
+ if file_path and os.path.exists(file_path):
577
+ try:
578
+ spec = importlib.util.spec_from_file_location(
579
+ f"flock_dynamic_{hash(file_path)}", file_path
580
+ )
581
+ if spec and spec.loader:
582
+ module = importlib.util.module_from_spec(spec)
583
+ spec.loader.exec_module(module)
584
+ if hasattr(module, class_name):
585
+ component_class = getattr(module, class_name)
586
+ self._registry.register_component(component_class)
587
+ logger.info(f"Registered component {module_path} from file path {file_path}")
588
+ continue
589
+ except Exception as file_err:
590
+ logger.warning(f"Failed to load component from file: {file_err}")
591
+
592
+ # If we got here, we couldn't load the component
593
+ logger.warning(f"Could not register component {module_path}: {e}")
594
+ ```
595
+
596
+ ### Utility Functions
597
+
598
+ A new module `file_path_utils.py` provides utilities for working with file paths:
599
+
600
+ ```python
601
+ def load_class_from_file(file_path: str, class_name: str) -> Optional[Type]:
602
+ """Load a class from a file path."""
603
+ try:
604
+ module_name = f"flock_dynamic_import_{hash(file_path)}"
605
+ spec = importlib.util.spec_from_file_location(module_name, file_path)
606
+ if not spec or not spec.loader:
607
+ return None
608
+ module = importlib.util.module_from_spec(spec)
609
+ sys.modules[module_name] = module
610
+ spec.loader.exec_module(module)
611
+ if not hasattr(module, class_name):
612
+ return None
613
+ return getattr(module, class_name)
614
+ except Exception:
615
+ return None
616
+ ```
617
+
618
+ ### Benefits
619
+
620
+ 1. **CLI & Direct Execution**: Components can be loaded directly from file paths, enabling CLI usage without package installation
621
+ 2. **Development Flexibility**: Easier development workflow using local files and paths
622
+ 3. **Improved Portability**: Flock configurations can be shared with both module paths and file paths, improving compatibility across environments
623
+ 4. **Graceful Fallbacks**: When module imports fail, the system attempts to load from file paths
624
+ 5. **Consistent Treatment of Tools**: Tools/callables now follow the same component-based pattern (NEW)
625
+
626
+ ### Example Use Case
627
+
628
+ A user develops a Flock application on their local machine:
629
+
630
+ 1. Components are defined in local Python files
631
+ 2. The Flock is serialized to YAML including file paths
632
+ 3. The YAML is shared with another user
633
+ 4. The second user can load the Flock directly from file paths without needing to install packages
634
+
635
+ This enhancement significantly improves the portability and usability of Flock configurations in various environments, particularly for CLI usage and non-package deployments.
636
+
637
+ ## Conclusion
638
+
639
+ The enhanced serialization system significantly improves the portability and usability of Flock configurations by making them self-contained. The addition of file path support further enhances flexibility, allowing for CLI usage and operation in non-package environments. The improved tool serialization integrates callable functions more seamlessly into the component architecture. These changes enable easier sharing of agent systems across environments and simplify deployment.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: flock-core
3
- Version: 0.3.41
3
+ Version: 0.4.0b2
4
4
  Summary: Declarative LLM Orchestration at Scale
5
5
  Author-email: Andre Ratzenberger <andre.ratzenberger@whiteduck.de>
6
6
  License-File: LICENSE