flock-core 0.4.0b49__tar.gz → 0.4.0b50__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 (621) hide show
  1. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/PKG-INFO +1 -1
  2. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/pyproject.toml +1 -1
  3. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/webapp/app/api/execution.py +31 -73
  4. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/webapp/app/chat.py +13 -9
  5. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/webapp/app/config.py +1 -1
  6. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/webapp/app/main.py +14 -12
  7. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/webapp/templates/base.html +91 -1
  8. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/webapp/templates/chat.html +64 -1
  9. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/webapp/templates/partials/_agent_detail_form.html +3 -3
  10. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/webapp/templates/partials/_flock_properties_form.html +2 -2
  11. flock_core-0.4.0b50/src/flock/webapp/templates/partials/_results_display.html +39 -0
  12. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/webapp/templates/partials/_structured_data_view.html +2 -2
  13. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/webapp/templates/shared_run_page.html +27 -0
  14. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/uv.lock +1 -1
  15. flock_core-0.4.0b49/src/flock/webapp/templates/partials/_results_display.html +0 -35
  16. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/.devcontainer/devcontainer.json +0 -0
  17. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/.env_template +0 -0
  18. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/.github/ISSUE_TEMPLATE/bug_report.yaml +0 -0
  19. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/.github/ISSUE_TEMPLATE/feature_request.yaml +0 -0
  20. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/.github/ISSUE_TEMPLATE/vulnerability_report.md +0 -0
  21. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/.github/PULL_REQUEST_TEMPLATE.yaml +0 -0
  22. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/.github/workflows/.gitkeep +0 -0
  23. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/.github/workflows/deploy-documentation.yml +0 -0
  24. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/.github/workflows/deploy-whiteduck-pypi.yml +0 -0
  25. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/.gitignore +0 -0
  26. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/.gitmodules +0 -0
  27. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/.vscode/launch.json +0 -0
  28. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/.vscode/settings.json +0 -0
  29. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/.vscode/tasks.json +0 -0
  30. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/CODE_OF_CONDUCT.md +0 -0
  31. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/CONTRIBUTING.md +0 -0
  32. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/LICENSE +0 -0
  33. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/README.md +0 -0
  34. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/SECURITY.md +0 -0
  35. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/docs/about/changelog.md +0 -0
  36. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/docs/about/contributing.md +0 -0
  37. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/docs/assets/drawio/architecture.drawio +0 -0
  38. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/docs/assets/images/cli_outputs/out.png +0 -0
  39. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/docs/assets/images/components_chart.png +0 -0
  40. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/docs/assets/images/examples/01_01.png +0 -0
  41. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/docs/assets/images/examples/01_02.png +0 -0
  42. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/docs/assets/images/examples/01_03.png +0 -0
  43. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/docs/assets/images/examples/01_04.png +0 -0
  44. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/docs/assets/images/examples/01_05.png +0 -0
  45. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/docs/assets/images/examples/01_06.png +0 -0
  46. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/docs/assets/images/flock.png +0 -0
  47. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/docs/assets/images/flock_cli.png +0 -0
  48. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/docs/assets/images/flow_chart.png +0 -0
  49. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/docs/assets/images/getting-started/first_agent_00.png +0 -0
  50. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/docs/assets/images/hummingbird.png +0 -0
  51. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/docs/assets/images/icon.png +0 -0
  52. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/docs/assets/images/icon.png~ +0 -0
  53. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/docs/assets/images/logo.png +0 -0
  54. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/docs/assets/images/memory_concepts.png +0 -0
  55. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/docs/assets/images/memory_flow.png +0 -0
  56. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/docs/assets/images/memory_flow_chart.png +0 -0
  57. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/docs/components/evaluators.md +0 -0
  58. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/docs/components/index.md +0 -0
  59. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/docs/components/modules.md +0 -0
  60. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/docs/components/tools.md +0 -0
  61. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/docs/core-concepts/agents.md +0 -0
  62. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/docs/core-concepts/declarative.md +0 -0
  63. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/docs/core-concepts/index.md +0 -0
  64. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/docs/core-concepts/workflows.md +0 -0
  65. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/docs/create_doc_boilerplate.py +0 -0
  66. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/docs/deployment/index.md +0 -0
  67. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/docs/deployment/temporal.md +0 -0
  68. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/docs/getting-started/concepts.md +0 -0
  69. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/docs/getting-started/configuration.md +0 -0
  70. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/docs/getting-started/index.md +0 -0
  71. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/docs/getting-started/installation.md +0 -0
  72. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/docs/getting-started/quickstart.md +0 -0
  73. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/docs/guides/chaining-agents.md +0 -0
  74. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/docs/guides/custom-endpoints.md +0 -0
  75. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/docs/guides/index.md +0 -0
  76. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/docs/guides/temporal-configuration.md +0 -0
  77. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/docs/index.md +0 -0
  78. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/docs/interacting-with-flock/cli-tool.md +0 -0
  79. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/docs/interacting-with-flock/index.md +0 -0
  80. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/docs/interacting-with-flock/interactive-cli.md +0 -0
  81. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/docs/interacting-with-flock/programmatic.md +0 -0
  82. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/docs/interacting-with-flock/rest-api.md +0 -0
  83. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/docs/interacting-with-flock/web-ui.md +0 -0
  84. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/docs/reference/flock_agent.md +0 -0
  85. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/docs/reference/index.md +0 -0
  86. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/docs/release-notes/magpie.md +0 -0
  87. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/docs/stylesheets/extra.css +0 -0
  88. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/main.md +0 -0
  89. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/mkdocs.yml +0 -0
  90. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/requirements.txt +0 -0
  91. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/scripts/code_collector.py +0 -0
  92. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/scripts/create_docs.py +0 -0
  93. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/scripts/ensure_uv.py +0 -0
  94. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/__init__.py +0 -0
  95. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/cli/assets/release_notes.md +0 -0
  96. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/cli/config.py +0 -0
  97. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/cli/constants.py +0 -0
  98. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/cli/create_agent.py +0 -0
  99. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/cli/create_flock.py +0 -0
  100. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/cli/execute_flock.py +0 -0
  101. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/cli/load_agent.py +0 -0
  102. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/cli/load_examples.py +0 -0
  103. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/cli/load_flock.py +0 -0
  104. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/cli/load_release_notes.py +0 -0
  105. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/cli/loaded_flock_cli.py +0 -0
  106. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/cli/manage_agents.py +0 -0
  107. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/cli/registry_management.py +0 -0
  108. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/cli/runner.py +0 -0
  109. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/cli/settings.py +0 -0
  110. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/cli/utils.py +0 -0
  111. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/cli/view_results.py +0 -0
  112. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/cli/yaml_editor.py +0 -0
  113. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/config.py +0 -0
  114. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/core/__init__.py +0 -0
  115. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/core/api/__init__.py +0 -0
  116. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/core/api/custom_endpoint.py +0 -0
  117. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/core/api/endpoints.py +0 -0
  118. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/core/api/main.py +0 -0
  119. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/core/api/models.py +0 -0
  120. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/core/api/run_store.py +0 -0
  121. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/core/api/runner.py +0 -0
  122. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/core/api/service.py +0 -0
  123. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/core/api/ui/__init__.py +0 -0
  124. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/core/api/ui/routes.py +0 -0
  125. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/core/api/ui/utils.py +0 -0
  126. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/core/context/context.py +0 -0
  127. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/core/context/context_manager.py +0 -0
  128. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/core/context/context_vars.py +0 -0
  129. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/core/evaluation/utils.py +0 -0
  130. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/core/execution/batch_executor.py +0 -0
  131. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/core/execution/evaluation_executor.py +0 -0
  132. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/core/execution/local_executor.py +0 -0
  133. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/core/execution/temporal_executor.py +0 -0
  134. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/core/flock.py +0 -0
  135. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/core/flock_agent.py +0 -0
  136. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/core/flock_evaluator.py +0 -0
  137. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/core/flock_factory.py +0 -0
  138. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/core/flock_module.py +0 -0
  139. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/core/flock_registry.py +0 -0
  140. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/core/flock_router.py +0 -0
  141. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/core/interpreter/python_interpreter.py +0 -0
  142. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/core/logging/__init__.py +0 -0
  143. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/core/logging/formatters/enum_builder.py +0 -0
  144. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/core/logging/formatters/theme_builder.py +0 -0
  145. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/core/logging/formatters/themed_formatter.py +0 -0
  146. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/core/logging/formatters/themes.py +0 -0
  147. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/core/logging/logging.py +0 -0
  148. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/core/logging/span_middleware/baggage_span_processor.py +0 -0
  149. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/core/logging/telemetry.py +0 -0
  150. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/core/logging/telemetry_exporter/base_exporter.py +0 -0
  151. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/core/logging/telemetry_exporter/file_exporter.py +0 -0
  152. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/core/logging/telemetry_exporter/sqlite_exporter.py +0 -0
  153. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/core/logging/trace_and_logged.py +0 -0
  154. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/core/mixin/dspy_integration.py +0 -0
  155. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/core/mixin/prompt_parser.py +0 -0
  156. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/core/serialization/__init__.py +0 -0
  157. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/core/serialization/callable_registry.py +0 -0
  158. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/core/serialization/flock_serializer.py +0 -0
  159. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/core/serialization/json_encoder.py +0 -0
  160. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/core/serialization/secure_serializer.py +0 -0
  161. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/core/serialization/serializable.py +0 -0
  162. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/core/serialization/serialization_utils.py +0 -0
  163. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/core/util/cli_helper.py +0 -0
  164. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/core/util/file_path_utils.py +0 -0
  165. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/core/util/hydrator.py +0 -0
  166. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/core/util/input_resolver.py +0 -0
  167. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/core/util/loader.py +0 -0
  168. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/core/util/spliter.py +0 -0
  169. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/evaluators/__init__.py +0 -0
  170. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/evaluators/declarative/__init__.py +0 -0
  171. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/evaluators/declarative/declarative_evaluator.py +0 -0
  172. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/evaluators/memory/memory_evaluator.py +0 -0
  173. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/evaluators/test/test_case_evaluator.py +0 -0
  174. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/evaluators/zep/zep_evaluator.py +0 -0
  175. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/modules/__init__.py +0 -0
  176. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/modules/assertion/__init__.py +0 -0
  177. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/modules/assertion/assertion_module.py +0 -0
  178. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/modules/callback/__init__.py +0 -0
  179. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/modules/callback/callback_module.py +0 -0
  180. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/modules/mem0/__init__.py +0 -0
  181. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/modules/mem0/mem0_module.py +0 -0
  182. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/modules/mem0graph/__init__.py +0 -0
  183. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/modules/mem0graph/mem0_graph_module.py +0 -0
  184. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/modules/memory/__init__.py +0 -0
  185. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/modules/memory/memory_module.py +0 -0
  186. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/modules/memory/memory_parser.py +0 -0
  187. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/modules/memory/memory_storage.py +0 -0
  188. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/modules/output/__init__.py +0 -0
  189. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/modules/output/output_module.py +0 -0
  190. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/modules/performance/__init__.py +0 -0
  191. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/modules/performance/metrics_module.py +0 -0
  192. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/platform/docker_tools.py +0 -0
  193. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/platform/jaeger_install.py +0 -0
  194. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/routers/__init__.py +0 -0
  195. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/routers/agent/__init__.py +0 -0
  196. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/routers/agent/agent_router.py +0 -0
  197. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/routers/agent/handoff_agent.py +0 -0
  198. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/routers/conditional/conditional_router.py +0 -0
  199. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/routers/default/__init__.py +0 -0
  200. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/routers/default/default_router.py +0 -0
  201. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/routers/feedback/feedback_router.py +0 -0
  202. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/routers/list_generator/list_generator_router.py +0 -0
  203. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/routers/llm/__init__.py +0 -0
  204. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/routers/llm/llm_router.py +0 -0
  205. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/3024-day.toml +0 -0
  206. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/3024-night.toml +0 -0
  207. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/aardvark-blue.toml +0 -0
  208. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/abernathy.toml +0 -0
  209. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/adventure.toml +0 -0
  210. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/adventuretime.toml +0 -0
  211. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/afterglow.toml +0 -0
  212. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/alabaster.toml +0 -0
  213. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/alienblood.toml +0 -0
  214. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/andromeda.toml +0 -0
  215. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/apple-classic.toml +0 -0
  216. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/apple-system-colors.toml +0 -0
  217. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/arcoiris.toml +0 -0
  218. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/argonaut copy.toml +0 -0
  219. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/argonaut.toml +0 -0
  220. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/arthur.toml +0 -0
  221. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/ateliersulphurpool.toml +0 -0
  222. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/atom.toml +0 -0
  223. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/atom_test.toml +0 -0
  224. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/atomonelight.toml +0 -0
  225. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/aurora.toml +0 -0
  226. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/ayu copy.toml +0 -0
  227. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/ayu-light.toml +0 -0
  228. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/ayu-mirage.toml +0 -0
  229. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/ayu.toml +0 -0
  230. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/banana-blueberry.toml +0 -0
  231. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/batman.toml +0 -0
  232. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/belafonte-day.toml +0 -0
  233. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/belafonte-night.toml +0 -0
  234. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/birdsofparadise.toml +0 -0
  235. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/blazer.toml +0 -0
  236. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/blue-matrix.toml +0 -0
  237. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/blueberrypie.toml +0 -0
  238. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/bluedolphin.toml +0 -0
  239. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/blulocodark.toml +0 -0
  240. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/blulocolight.toml +0 -0
  241. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/borland.toml +0 -0
  242. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/breeze.toml +0 -0
  243. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/bright-lights.toml +0 -0
  244. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/broadcast.toml +0 -0
  245. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/brogrammer.toml +0 -0
  246. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/builtin-dark.toml +0 -0
  247. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/builtin-light.toml +0 -0
  248. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/builtin-pastel-dark.toml +0 -0
  249. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/builtin-solarized-dark.toml +0 -0
  250. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/builtin-solarized-light.toml +0 -0
  251. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/builtin-tango-dark.toml +0 -0
  252. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/builtin-tango-light.toml +0 -0
  253. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/c64.toml +0 -0
  254. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/calamity.toml +0 -0
  255. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/catppuccin-frappe.toml +0 -0
  256. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/catppuccin-latte.toml +0 -0
  257. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/catppuccin-macchiato.toml +0 -0
  258. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/catppuccin-mocha.toml +0 -0
  259. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/cga.toml +0 -0
  260. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/chalk.toml +0 -0
  261. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/chalkboard.toml +0 -0
  262. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/challengerdeep.toml +0 -0
  263. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/chester.toml +0 -0
  264. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/ciapre.toml +0 -0
  265. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/clrs.toml +0 -0
  266. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/cobalt-neon.toml +0 -0
  267. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/cobalt2.toml +0 -0
  268. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/coffee-theme.toml +0 -0
  269. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/crayonponyfish.toml +0 -0
  270. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/cutiepro.toml +0 -0
  271. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/cyberdyne.toml +0 -0
  272. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/cyberpunk.toml +0 -0
  273. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/cyberpunkscarletprotocol.toml +0 -0
  274. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/dark+.toml +0 -0
  275. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/dark-pastel.toml +0 -0
  276. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/darkermatrix.toml +0 -0
  277. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/darkmatrix.toml +0 -0
  278. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/darkside.toml +0 -0
  279. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/dayfox.toml +0 -0
  280. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/deep.toml +0 -0
  281. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/desert.toml +0 -0
  282. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/dimidium.toml +0 -0
  283. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/dimmedmonokai.toml +0 -0
  284. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/django.toml +0 -0
  285. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/djangorebornagain.toml +0 -0
  286. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/djangosmooth.toml +0 -0
  287. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/doom-peacock.toml +0 -0
  288. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/doomone.toml +0 -0
  289. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/dotgov.toml +0 -0
  290. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/dracula+.toml +0 -0
  291. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/dracula.toml +0 -0
  292. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/duckbones.toml +0 -0
  293. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/duotone-dark.toml +0 -0
  294. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/earthsong.toml +0 -0
  295. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/elemental.toml +0 -0
  296. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/elementary.toml +0 -0
  297. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/encom.toml +0 -0
  298. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/espresso-libre.toml +0 -0
  299. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/espresso.toml +0 -0
  300. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/everblush.toml +0 -0
  301. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/fahrenheit.toml +0 -0
  302. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/fairyfloss.toml +0 -0
  303. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/farmhouse-dark.toml +0 -0
  304. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/farmhouse-light.toml +0 -0
  305. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/fideloper.toml +0 -0
  306. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/firefly-traditional.toml +0 -0
  307. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/firefoxdev.toml +0 -0
  308. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/firewatch.toml +0 -0
  309. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/fishtank.toml +0 -0
  310. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/flat.toml +0 -0
  311. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/flatland.toml +0 -0
  312. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/flexoki-dark.toml +0 -0
  313. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/flexoki-light.toml +0 -0
  314. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/floraverse.toml +0 -0
  315. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/forestblue.toml +0 -0
  316. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/framer.toml +0 -0
  317. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/frontenddelight.toml +0 -0
  318. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/funforrest.toml +0 -0
  319. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/galaxy.toml +0 -0
  320. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/galizur.toml +0 -0
  321. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/github-dark.toml +0 -0
  322. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/github.toml +0 -0
  323. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/glacier.toml +0 -0
  324. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/grape.toml +0 -0
  325. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/grass.toml +0 -0
  326. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/grey-green.toml +0 -0
  327. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/gruber-darker.toml +0 -0
  328. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/gruvboxdark.toml +0 -0
  329. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/gruvboxdarkhard.toml +0 -0
  330. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/gruvboxlight.toml +0 -0
  331. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/guezwhoz.toml +0 -0
  332. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/hacktober.toml +0 -0
  333. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/hardcore.toml +0 -0
  334. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/harper.toml +0 -0
  335. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/hax0r-blue.toml +0 -0
  336. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/hax0r-gr33n.toml +0 -0
  337. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/hax0r-r3d.toml +0 -0
  338. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/highway.toml +0 -0
  339. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/hipster-green.toml +0 -0
  340. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/hivacruz.toml +0 -0
  341. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/homebrew.toml +0 -0
  342. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/hopscotch.256.toml +0 -0
  343. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/hopscotch.toml +0 -0
  344. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/hurtado.toml +0 -0
  345. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/hybrid.toml +0 -0
  346. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/ic-green-ppl.toml +0 -0
  347. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/ic-orange-ppl.toml +0 -0
  348. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/iceberg-dark.toml +0 -0
  349. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/iceberg-light.toml +0 -0
  350. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/idea.toml +0 -0
  351. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/idletoes.toml +0 -0
  352. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/ir-black.toml +0 -0
  353. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/iterm2-dark-background.toml +0 -0
  354. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/iterm2-default.toml +0 -0
  355. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/iterm2-light-background.toml +0 -0
  356. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/iterm2-pastel-dark-background.toml +0 -0
  357. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/iterm2-smoooooth.toml +0 -0
  358. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/iterm2-solarized-dark.toml +0 -0
  359. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/iterm2-solarized-light.toml +0 -0
  360. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/iterm2-tango-dark.toml +0 -0
  361. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/iterm2-tango-light.toml +0 -0
  362. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/jackie-brown.toml +0 -0
  363. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/japanesque.toml +0 -0
  364. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/jellybeans.toml +0 -0
  365. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/jetbrains-darcula.toml +0 -0
  366. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/jubi.toml +0 -0
  367. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/kanagawabones.toml +0 -0
  368. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/kibble.toml +0 -0
  369. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/kolorit.toml +0 -0
  370. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/konsolas.toml +0 -0
  371. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/kurokula.toml +0 -0
  372. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/lab-fox.toml +0 -0
  373. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/laser.toml +0 -0
  374. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/later-this-evening.toml +0 -0
  375. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/lavandula.toml +0 -0
  376. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/liquidcarbon.toml +0 -0
  377. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/liquidcarbontransparent.toml +0 -0
  378. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/liquidcarbontransparentinverse.toml +0 -0
  379. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/lovelace.toml +0 -0
  380. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/man-page.toml +0 -0
  381. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/mariana.toml +0 -0
  382. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/material.toml +0 -0
  383. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/materialdark.toml +0 -0
  384. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/materialdarker.toml +0 -0
  385. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/materialdesigncolors.toml +0 -0
  386. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/materialocean.toml +0 -0
  387. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/mathias.toml +0 -0
  388. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/matrix.toml +0 -0
  389. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/medallion.toml +0 -0
  390. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/mellifluous.toml +0 -0
  391. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/midnight-in-mojave.toml +0 -0
  392. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/mirage.toml +0 -0
  393. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/misterioso.toml +0 -0
  394. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/molokai.toml +0 -0
  395. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/monalisa.toml +0 -0
  396. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/monokai-remastered.toml +0 -0
  397. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/monokai-soda.toml +0 -0
  398. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/monokai-vivid.toml +0 -0
  399. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/n0tch2k.toml +0 -0
  400. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/neobones-dark.toml +0 -0
  401. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/neobones-light.toml +0 -0
  402. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/neon.toml +0 -0
  403. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/neopolitan.toml +0 -0
  404. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/neutron.toml +0 -0
  405. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/night-owlish-light.toml +0 -0
  406. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/nightfox.toml +0 -0
  407. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/nightlion-v1.toml +0 -0
  408. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/nightlion-v2.toml +0 -0
  409. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/niji.toml +0 -0
  410. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/nocturnal-winter.toml +0 -0
  411. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/nord-light.toml +0 -0
  412. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/nord.toml +0 -0
  413. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/novel.toml +0 -0
  414. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/nvimdark.toml +0 -0
  415. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/nvimlight.toml +0 -0
  416. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/obsidian.toml +0 -0
  417. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/ocean.toml +0 -0
  418. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/oceanic-next.toml +0 -0
  419. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/oceanicmaterial.toml +0 -0
  420. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/ollie.toml +0 -0
  421. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/onehalfdark.toml +0 -0
  422. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/onehalflight.toml +0 -0
  423. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/operator-mono-dark.toml +0 -0
  424. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/overnight-slumber.toml +0 -0
  425. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/oxocarbon.toml +0 -0
  426. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/palenighthc.toml +0 -0
  427. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/pandora.toml +0 -0
  428. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/paraiso-dark.toml +0 -0
  429. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/paulmillr.toml +0 -0
  430. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/pencildark.toml +0 -0
  431. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/pencillight.toml +0 -0
  432. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/peppermint.toml +0 -0
  433. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/piatto-light.toml +0 -0
  434. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/pnevma.toml +0 -0
  435. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/popping-and-locking.toml +0 -0
  436. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/primary.toml +0 -0
  437. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/pro-light.toml +0 -0
  438. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/pro.toml +0 -0
  439. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/purple-rain.toml +0 -0
  440. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/purplepeter.toml +0 -0
  441. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/rapture.toml +0 -0
  442. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/raycast-dark.toml +0 -0
  443. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/raycast-light.toml +0 -0
  444. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/rebecca.toml +0 -0
  445. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/red-alert.toml +0 -0
  446. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/red-planet.toml +0 -0
  447. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/red-sands.toml +0 -0
  448. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/relaxed.toml +0 -0
  449. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/retro.toml +0 -0
  450. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/rippedcasts.toml +0 -0
  451. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/rose-pine-dawn.toml +0 -0
  452. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/rose-pine-moon.toml +0 -0
  453. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/rose-pine.toml +0 -0
  454. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/rouge-2.toml +0 -0
  455. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/royal.toml +0 -0
  456. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/ryuuko.toml +0 -0
  457. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/sakura.toml +0 -0
  458. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/scarlet-protocol.toml +0 -0
  459. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/seafoam-pastel.toml +0 -0
  460. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/seashells.toml +0 -0
  461. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/seoulbones-dark.toml +0 -0
  462. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/seoulbones-light.toml +0 -0
  463. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/seti.toml +0 -0
  464. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/shades-of-purple.toml +0 -0
  465. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/shaman.toml +0 -0
  466. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/slate.toml +0 -0
  467. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/sleepyhollow.toml +0 -0
  468. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/smyck.toml +0 -0
  469. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/snazzy.toml +0 -0
  470. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/softserver.toml +0 -0
  471. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/solarized-darcula.toml +0 -0
  472. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/solarized-dark---patched.toml +0 -0
  473. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/solarized-dark-higher-contrast.toml +0 -0
  474. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/spacedust.toml +0 -0
  475. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/spacegray-eighties-dull.toml +0 -0
  476. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/spacegray-eighties.toml +0 -0
  477. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/spacegray.toml +0 -0
  478. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/spiderman.toml +0 -0
  479. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/spring.toml +0 -0
  480. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/square.toml +0 -0
  481. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/sublette.toml +0 -0
  482. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/subliminal.toml +0 -0
  483. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/sugarplum.toml +0 -0
  484. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/sundried.toml +0 -0
  485. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/symfonic.toml +0 -0
  486. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/synthwave-everything.toml +0 -0
  487. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/synthwave.toml +0 -0
  488. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/synthwavealpha.toml +0 -0
  489. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/tango-adapted.toml +0 -0
  490. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/tango-half-adapted.toml +0 -0
  491. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/teerb.toml +0 -0
  492. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/terafox.toml +0 -0
  493. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/terminal-basic.toml +0 -0
  494. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/thayer-bright.toml +0 -0
  495. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/the-hulk.toml +0 -0
  496. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/tinacious-design-(dark).toml +0 -0
  497. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/tinacious-design-(light).toml +0 -0
  498. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/tokyonight-day.toml +0 -0
  499. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/tokyonight-storm.toml +0 -0
  500. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/tokyonight.toml +0 -0
  501. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/tomorrow-night-blue.toml +0 -0
  502. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/tomorrow-night-bright.toml +0 -0
  503. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/tomorrow-night-burns.toml +0 -0
  504. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/tomorrow-night-eighties.toml +0 -0
  505. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/tomorrow-night.toml +0 -0
  506. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/tomorrow.toml +0 -0
  507. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/toychest.toml +0 -0
  508. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/treehouse.toml +0 -0
  509. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/twilight.toml +0 -0
  510. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/ubuntu.toml +0 -0
  511. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/ultradark.toml +0 -0
  512. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/ultraviolent.toml +0 -0
  513. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/underthesea.toml +0 -0
  514. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/unikitty.toml +0 -0
  515. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/urple.toml +0 -0
  516. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/vaughn.toml +0 -0
  517. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/vesper.toml +0 -0
  518. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/vibrantink.toml +0 -0
  519. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/vimbones.toml +0 -0
  520. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/violet-dark.toml +0 -0
  521. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/violet-light.toml +0 -0
  522. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/warmneon.toml +0 -0
  523. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/wez.toml +0 -0
  524. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/whimsy.toml +0 -0
  525. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/wildcherry.toml +0 -0
  526. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/wilmersdorf.toml +0 -0
  527. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/wombat.toml +0 -0
  528. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/wryan.toml +0 -0
  529. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/xcodedark.toml +0 -0
  530. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/xcodedarkhc.toml +0 -0
  531. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/xcodelight.toml +0 -0
  532. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/xcodelighthc.toml +0 -0
  533. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/xcodewwdc.toml +0 -0
  534. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/zenbones-dark.toml +0 -0
  535. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/zenbones-light.toml +0 -0
  536. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/zenbones.toml +0 -0
  537. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/zenburn.toml +0 -0
  538. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/zenburned.toml +0 -0
  539. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/zenwritten-dark.toml +0 -0
  540. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/themes/zenwritten-light.toml +0 -0
  541. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/tools/__init__.py +0 -0
  542. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/tools/azure_tools.py +0 -0
  543. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/tools/code_tools.py +0 -0
  544. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/tools/file_tools.py +0 -0
  545. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/tools/github_tools.py +0 -0
  546. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/tools/markdown_tools.py +0 -0
  547. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/tools/system_tools.py +0 -0
  548. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/tools/text_tools.py +0 -0
  549. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/tools/web_tools.py +0 -0
  550. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/tools/zendesk_tools.py +0 -0
  551. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/webapp/__init__.py +0 -0
  552. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/webapp/app/__init__.py +0 -0
  553. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/webapp/app/api/__init__.py +0 -0
  554. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/webapp/app/api/agent_management.py +0 -0
  555. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/webapp/app/api/flock_management.py +0 -0
  556. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/webapp/app/api/registry_viewer.py +0 -0
  557. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/webapp/app/dependencies.py +0 -0
  558. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/webapp/app/models_ui.py +0 -0
  559. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/webapp/app/services/__init__.py +0 -0
  560. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/webapp/app/services/flock_service.py +0 -0
  561. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/webapp/app/services/sharing_models.py +0 -0
  562. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/webapp/app/services/sharing_store.py +0 -0
  563. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/webapp/app/templates/theme_mapper.html +0 -0
  564. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/webapp/app/theme_mapper.py +0 -0
  565. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/webapp/app/utils.py +0 -0
  566. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/webapp/run.py +0 -0
  567. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/webapp/static/css/chat.css +0 -0
  568. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/webapp/static/css/components.css +0 -0
  569. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/webapp/static/css/header.css +0 -0
  570. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/webapp/static/css/layout.css +0 -0
  571. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/webapp/static/css/sidebar.css +0 -0
  572. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/webapp/templates/chat_settings.html +0 -0
  573. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/webapp/templates/flock_editor.html +0 -0
  574. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/webapp/templates/index.html +0 -0
  575. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/webapp/templates/partials/_agent_list.html +0 -0
  576. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/webapp/templates/partials/_agent_manager_view.html +0 -0
  577. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/webapp/templates/partials/_agent_tools_checklist.html +0 -0
  578. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/webapp/templates/partials/_chat_container.html +0 -0
  579. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/webapp/templates/partials/_chat_messages.html +0 -0
  580. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/webapp/templates/partials/_chat_settings_form.html +0 -0
  581. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/webapp/templates/partials/_create_flock_form.html +0 -0
  582. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/webapp/templates/partials/_dashboard_flock_detail.html +0 -0
  583. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/webapp/templates/partials/_dashboard_flock_file_list.html +0 -0
  584. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/webapp/templates/partials/_dashboard_flock_properties_preview.html +0 -0
  585. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/webapp/templates/partials/_dashboard_upload_flock_form.html +0 -0
  586. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/webapp/templates/partials/_dynamic_input_form_content.html +0 -0
  587. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/webapp/templates/partials/_env_vars_table.html +0 -0
  588. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/webapp/templates/partials/_execution_form.html +0 -0
  589. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/webapp/templates/partials/_execution_view_container.html +0 -0
  590. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/webapp/templates/partials/_flock_file_list.html +0 -0
  591. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/webapp/templates/partials/_flock_upload_form.html +0 -0
  592. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/webapp/templates/partials/_header_flock_status.html +0 -0
  593. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/webapp/templates/partials/_load_manager_view.html +0 -0
  594. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/webapp/templates/partials/_registry_table.html +0 -0
  595. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/webapp/templates/partials/_registry_viewer_content.html +0 -0
  596. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/webapp/templates/partials/_settings_env_content.html +0 -0
  597. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/webapp/templates/partials/_settings_theme_content.html +0 -0
  598. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/webapp/templates/partials/_settings_view.html +0 -0
  599. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/webapp/templates/partials/_share_chat_link_snippet.html +0 -0
  600. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/webapp/templates/partials/_share_link_snippet.html +0 -0
  601. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/webapp/templates/partials/_sidebar.html +0 -0
  602. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/webapp/templates/partials/_theme_preview.html +0 -0
  603. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/webapp/templates/registry_viewer.html +0 -0
  604. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/workflow/__init__.py +0 -0
  605. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/workflow/activities.py +0 -0
  606. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/workflow/agent_activities.py +0 -0
  607. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/workflow/agent_execution_activity.py +0 -0
  608. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/workflow/flock_workflow.py +0 -0
  609. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/workflow/temporal_config.py +0 -0
  610. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/src/flock/workflow/temporal_setup.py +0 -0
  611. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/tests/__init__.py +0 -0
  612. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/tests/api/test_custom_endpoints.py +0 -0
  613. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/tests/core/test_flock_batch.py +0 -0
  614. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/tests/core/test_flock_core.py +0 -0
  615. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/tests/serialization/__init__.py +0 -0
  616. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/tests/serialization/test_enhanced_serialization.py +0 -0
  617. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/tests/serialization/test_file_path_serialization.py +0 -0
  618. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/tests/serialization/test_flock_serializer.py +0 -0
  619. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/tests/serialization/test_nested_serialization.py +0 -0
  620. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/tests/serialization/test_yaml_serialization.py +0 -0
  621. {flock_core-0.4.0b49 → flock_core-0.4.0b50}/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.0b49
3
+ Version: 0.4.0b50
4
4
  Summary: Declarative LLM Orchestration at Scale
5
5
  Author-email: Andre Ratzenberger <andre.ratzenberger@whiteduck.de>
6
6
  License-File: LICENSE
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "flock-core"
3
- version = "0.4.0b-49"
3
+ version = "0.4.0b-50"
4
4
  description = "Declarative LLM Orchestration at Scale"
5
5
  readme = "README.md"
6
6
  authors = [
@@ -3,6 +3,7 @@ import json
3
3
  from pathlib import Path
4
4
  from typing import TYPE_CHECKING, Any
5
5
 
6
+ import markdown2 # Import markdown2
6
7
  from fastapi import ( # Ensure Form and HTTPException are imported
7
8
  APIRouter,
8
9
  Depends,
@@ -16,9 +17,6 @@ if TYPE_CHECKING:
16
17
  from flock.core.flock import Flock
17
18
 
18
19
 
19
- from flock.core.flock import (
20
- Flock as ConcreteFlock, # For creating Flock instance
21
- )
22
20
  from flock.core.logging.logging import (
23
21
  get_logger as get_flock_logger, # For logging within the new endpoint
24
22
  )
@@ -35,12 +33,17 @@ from flock.webapp.app.services.flock_service import (
35
33
  run_current_flock_service,
36
34
  # get_current_flock_instance IS NO LONGER IMPORTED
37
35
  )
38
- from flock.webapp.app.utils import pydantic_to_dict
39
36
 
40
37
  router = APIRouter()
41
38
  BASE_DIR = Path(__file__).resolve().parent.parent.parent
42
39
  templates = Jinja2Templates(directory=str(BASE_DIR / "templates"))
43
40
 
41
+ # Add markdown2 filter to Jinja2 environment for this router
42
+ def markdown_filter(text):
43
+ return markdown2.markdown(text, extras=["tables", "fenced-code-blocks"])
44
+
45
+ templates.env.filters['markdown'] = markdown_filter
46
+
44
47
 
45
48
  @router.get("/htmx/execution-form-content", response_class=HTMLResponse)
46
49
  async def htmx_get_execution_form_content(
@@ -102,14 +105,9 @@ async def htmx_get_agent_input_form(
102
105
  @router.post("/htmx/run", response_class=HTMLResponse)
103
106
  async def htmx_run_flock(
104
107
  request: Request,
105
- # current_flock: Flock = Depends(get_flock_instance) # Service will use app_state
106
108
  ):
107
- # The service function run_current_flock_service now takes app_state
108
- # We retrieve current_flock from app_state inside the service or before calling if needed for validation here
109
-
110
- # It's better to get flock from app_state here to validate before calling service
111
109
  current_flock_from_state: Flock | None = getattr(request.app.state, 'flock_instance', None)
112
- logger = get_flock_logger("webapp.execution.regular_run") # Standard logger
110
+ logger = get_flock_logger("webapp.execution.regular_run")
113
111
 
114
112
  if not current_flock_from_state:
115
113
  logger.error("HTMX Run (Regular): No Flock loaded in app_state.")
@@ -150,30 +148,14 @@ async def htmx_run_flock(
150
148
  logger.error(f"HTMX Run (Regular): Error processing inputs for '{start_agent_name}': {e_parse}", exc_info=True)
151
149
  return HTMLResponse(f"<p class='error'>Error processing inputs for {start_agent_name}: {e_parse}</p>")
152
150
 
153
- try:
154
- logger.info(f"HTMX Run (Regular): Executing agent '{start_agent_name}' from Flock '{current_flock_from_state.name}' via service.")
155
- result_data = await run_current_flock_service(start_agent_name, inputs, request.app.state)
156
- except Exception as e_run:
157
- logger.error(f"HTMX Run (Regular): Error during service execution for '{start_agent_name}': {e_run}", exc_info=True)
158
- return templates.TemplateResponse(
159
- "partials/_results_display.html",
160
- {"request": request, "result_data": {"error": f"Error during execution: {e_run!s}"}},
161
- )
162
-
163
- # Process and serialize result for template
164
- try:
165
- processed_result = pydantic_to_dict(result_data)
166
- try: json.dumps(processed_result)
167
- except (TypeError, ValueError) as ser_e:
168
- processed_result = f"Error: Result contains non-serializable data: {ser_e!s}\nOriginal result preview: {str(result_data)[:500]}..."
169
- logger.warning(f"HTMX Run (Regular): Serialization issue: {processed_result}")
170
- except Exception as proc_e:
171
- processed_result = f"Error: Failed to process result data: {proc_e!s}"
172
- logger.error(f"HTMX Run (Regular): Result processing error: {processed_result}", exc_info=True)
151
+ result_data = await run_current_flock_service(start_agent_name, inputs, request.app.state)
152
+ raw_json_for_template = json.dumps(result_data, indent=2)
153
+ # Unescape newlines for proper display in HTML <pre> tag
154
+ result_data_raw_json_str = raw_json_for_template.replace('\\n', '\n')
173
155
 
174
156
  return templates.TemplateResponse(
175
157
  "partials/_results_display.html",
176
- {"request": request, "result_data": processed_result},
158
+ {"request": request, "result": result_data, "result_raw_json": result_data_raw_json_str} # Pass both
177
159
  )
178
160
 
179
161
 
@@ -181,27 +163,18 @@ async def htmx_run_flock(
181
163
  @router.post("/htmx/run-shared", response_class=HTMLResponse)
182
164
  async def htmx_run_shared_flock(
183
165
  request: Request,
184
- share_id: str = Form(...), # Expect share_id from the form
185
- # flock_definition_str: str = Form(...), # No longer needed
186
- # start_agent_name from form is still required implicitly via form_data.get()
187
- # No DI for current_flock, as we are using the one from app.state via share_id
166
+ share_id: str = Form(...),
188
167
  ):
189
168
  shared_logger = get_flock_logger("webapp.execution.shared_run_stateful")
190
169
  form_data = await request.form()
191
170
  start_agent_name = form_data.get("start_agent_name")
192
171
 
193
172
  if not start_agent_name:
194
- shared_logger.warning("HTMX Run Shared (Stateful): Starting agent name not provided in form.")
195
- return HTMLResponse("<p class='error'>Critical error: Starting agent name missing from shared run form.</p>")
196
-
197
- shared_logger.info(f"HTMX Run Shared (Stateful): Attempting to execute agent '{start_agent_name}' using pre-loaded Flock for share_id '{share_id}'.")
198
-
199
- inputs = {}
200
- result_data: Any = None
201
- temp_flock: ConcreteFlock | None = None
173
+ shared_logger.warning("HTMX Run Shared: Starting agent not selected.")
174
+ return HTMLResponse("<p class='error'>Starting agent not selected for shared run.</p>")
202
175
 
176
+ inputs: dict[str, Any] = {}
203
177
  try:
204
- # Retrieve the pre-loaded Flock instance from app.state
205
178
  shared_flocks_store = getattr(request.app.state, 'shared_flocks', {})
206
179
  temp_flock = shared_flocks_store.get(share_id)
207
180
 
@@ -216,14 +189,11 @@ async def htmx_run_shared_flock(
216
189
  shared_logger.error(f"HTMX Run Shared: Agent '{start_agent_name}' not found in shared Flock '{temp_flock.name}'.")
217
190
  return HTMLResponse(f"<p class='error'>Agent '{start_agent_name}' not found in the provided shared Flock definition.</p>")
218
191
 
219
- # Parse inputs for the agent from the temporary flock
220
192
  if agent.input and isinstance(agent.input, str):
221
193
  parsed_spec = parse_schema(agent.input)
222
194
  for name, type_str, _ in parsed_spec:
223
- form_field_name = f"agent_input_{name}" # Name used in shared_run_page.html
195
+ form_field_name = f"agent_input_{name}"
224
196
  raw_value = form_data.get(form_field_name)
225
-
226
- # Input type conversion (consistent with the other endpoint)
227
197
  if raw_value is None and "bool" in type_str.lower(): inputs[name] = False; continue
228
198
  if raw_value is None: inputs[name] = None; continue
229
199
  if "int" in type_str.lower(): inputs[name] = int(raw_value)
@@ -234,31 +204,19 @@ async def htmx_run_shared_flock(
234
204
 
235
205
  shared_logger.info(f"HTMX Run Shared: Executing agent '{start_agent_name}' in pre-loaded Flock '{temp_flock.name}'. Inputs: {list(inputs.keys())}")
236
206
  result_data = await temp_flock.run_async(start_agent=start_agent_name, input=inputs, box_result=False)
207
+ raw_json_for_template = json.dumps(result_data, indent=2)
208
+ # Unescape newlines for proper display in HTML <pre> tag
209
+ result_data_raw_json_str = raw_json_for_template.replace('\\n', '\n')
237
210
  shared_logger.info(f"HTMX Run Shared: Agent '{start_agent_name}' executed. Result keys: {list(result_data.keys()) if isinstance(result_data, dict) else 'N/A'}")
238
211
 
239
- # Process and serialize result for template (same logic as other endpoint)
240
- try:
241
- processed_result = pydantic_to_dict(result_data)
242
- try: json.dumps(processed_result)
243
- except (TypeError, ValueError) as ser_e:
244
- processed_result = f"Error: Result contains non-serializable data: {ser_e!s}\nOriginal result preview: {str(result_data)[:500]}..."
245
- shared_logger.warning(f"HTMX Run Shared: Serialization issue: {processed_result}")
246
- except Exception as proc_e:
247
- processed_result = f"Error: Failed to process result data: {proc_e!s}"
248
- shared_logger.error(f"HTMX Run Shared: Result processing error: {processed_result}", exc_info=True)
249
-
250
- return templates.TemplateResponse(
251
- "partials/_results_display.html",
252
- {"request": request, "result_data": processed_result},
253
- )
254
-
255
- except ValueError as ve: # Catch specific input parsing errors
256
- shared_logger.error(f"HTMX Run Shared: Input parsing error for agent '{start_agent_name}': {ve}", exc_info=True)
212
+ except ValueError as ve:
213
+ shared_logger.error(f"HTMX Run Shared: Input parsing error for '{start_agent_name}' (share_id: {share_id}): {ve}", exc_info=True)
257
214
  return HTMLResponse(f"<p class='error'>Invalid input format: {ve!s}</p>")
258
- except Exception as e_general:
259
- error_message = f"An unexpected error occurred during shared execution: {e_general!s}"
260
- shared_logger.error(f"HTMX Run Shared: General error for agent '{start_agent_name}': {e_general}", exc_info=True)
261
- return templates.TemplateResponse(
262
- "partials/_results_display.html",
263
- {"request": request, "result_data": {"error": error_message } },
264
- )
215
+ except Exception as e:
216
+ shared_logger.error(f"HTMX Run Shared: Error during execution for '{start_agent_name}' (share_id: {share_id}): {e}", exc_info=True)
217
+ return HTMLResponse(f"<p class='error'>An unexpected error occurred: {e!s}</p>")
218
+
219
+ return templates.TemplateResponse(
220
+ "partials/_results_display.html",
221
+ {"request": request, "result": result_data, "result_raw_json": result_data_raw_json_str} # Pass both
222
+ )
@@ -6,7 +6,7 @@ from datetime import datetime
6
6
  from uuid import uuid4
7
7
 
8
8
  import markdown2 # Added for Markdown to HTML conversion
9
- from fastapi import APIRouter, Depends, Form, Request
9
+ from fastapi import APIRouter, Depends, Form, Request, Response
10
10
  from fastapi.responses import HTMLResponse
11
11
  from pydantic import BaseModel
12
12
 
@@ -272,7 +272,7 @@ async def chat_settings_form(request: Request):
272
272
  return templates.TemplateResponse("partials/_chat_settings_form.html", context)
273
273
 
274
274
 
275
- @router.post("/chat/settings", response_class=HTMLResponse, include_in_schema=False)
275
+ @router.post("/chat/settings", include_in_schema=False)
276
276
  async def chat_settings_submit(
277
277
  request: Request,
278
278
  agent_name: str | None = Form(default=None),
@@ -280,19 +280,23 @@ async def chat_settings_submit(
280
280
  history_key: str = Form("history"),
281
281
  response_key: str = Form("response"),
282
282
  ):
283
- """Apply submitted chat config, then re-render the form with a success message."""
283
+ """Handles chat settings submission and triggers a toast notification."""
284
284
  cfg = get_chat_config(request)
285
- cfg.agent_name = agent_name or None
285
+ cfg.agent_name = agent_name
286
286
  cfg.message_key = message_key
287
287
  cfg.history_key = history_key
288
288
  cfg.response_key = response_key
289
289
 
290
- headers = {
291
- "HX-Trigger": json.dumps({"notify": {"type": "success", "message": "Chat settings saved"}}),
292
- "HX-Redirect": "/chat"
290
+ logger.info(f"Chat settings updated: Agent: {cfg.agent_name}, MsgKey: {cfg.message_key}, HistKey: {cfg.history_key}, RespKey: {cfg.response_key}")
291
+
292
+ toast_event = {
293
+ "showGlobalToast": {
294
+ "message": "Chat settings saved successfully!",
295
+ "type": "success"
296
+ }
293
297
  }
294
- # Response body empty; HTMX will redirect
295
- return HTMLResponse("", headers=headers)
298
+ headers = {"HX-Trigger": json.dumps(toast_event)}
299
+ return Response(status_code=204, headers=headers)
296
300
 
297
301
 
298
302
  # --- Stand-alone Chat HTML page access to settings --------------------------
@@ -38,7 +38,7 @@ THEMES_DIR = FLOCK_BASE_DIR / "themes"
38
38
  CURRENT_FLOCK_INSTANCE: "Flock | None" = None
39
39
  CURRENT_FLOCK_FILENAME: str | None = None
40
40
 
41
- DEFAULT_THEME_NAME = OutputTheme.everblush.value # Default if random fails or invalid theme specified
41
+ DEFAULT_THEME_NAME = OutputTheme.ciapre.value # Default if random fails or invalid theme specified
42
42
 
43
43
  def list_available_themes() -> list[str]:
44
44
  """Scans the THEMES_DIR for .toml files and returns their names (without .toml)."""
@@ -9,6 +9,7 @@ import uuid
9
9
  from contextlib import asynccontextmanager
10
10
  from pathlib import Path
11
11
 
12
+ import markdown2 # Import markdown2
12
13
  from fastapi import (
13
14
  Depends,
14
15
  FastAPI,
@@ -237,6 +238,12 @@ BASE_DIR = Path(__file__).resolve().parent.parent
237
238
  app.mount("/static", StaticFiles(directory=str(BASE_DIR / "static")), name="static")
238
239
  templates = Jinja2Templates(directory=str(BASE_DIR / "templates"))
239
240
 
241
+ # Add markdown2 filter to Jinja2 environment
242
+ def markdown_filter(text):
243
+ return markdown2.markdown(text, extras=["tables", "fenced-code-blocks"])
244
+
245
+ templates.env.filters['markdown'] = markdown_filter
246
+
240
247
  core_api_router = create_api_router()
241
248
  app.include_router(core_api_router, prefix="/api", tags=["Flock API Core"])
242
249
  app.include_router(flock_management.router, prefix="/ui/api/flock", tags=["UI Flock Management"])
@@ -758,11 +765,10 @@ async def ui_load_flock_by_name_action(request: Request, selected_flock_filename
758
765
  ui_mode_query = request.query_params.get("ui_mode", "standalone")
759
766
  if loaded_flock:
760
767
  success_message_text = f"Flock '{loaded_flock.name}' loaded from '{selected_flock_filename}'."
761
- response_headers["HX-Push-Url"] = "/ui/editor/properties?ui_mode=" + request.query_params.get("ui_mode", "standalone")
768
+ response_headers["HX-Push-Url"] = "/ui/editor/execute?ui_mode=" + ui_mode_query
762
769
  response_headers["HX-Trigger"] = json.dumps({"flockLoaded": None, "notify": {"type": "success", "message": success_message_text}})
763
- # Use get_base_context_web to ensure all necessary context vars are present for the partial
764
770
  context = get_base_context_web(request, success=success_message_text, ui_mode=ui_mode_query)
765
- return templates.TemplateResponse("partials/_flock_properties_form.html", context, headers=response_headers)
771
+ return templates.TemplateResponse("partials/_execution_view_container.html", context, headers=response_headers)
766
772
  else:
767
773
  error_message_text = f"Failed to load flock file '{selected_flock_filename}'."
768
774
  response_headers["HX-Trigger"] = json.dumps({"notify": {"type": "error", "message": error_message_text}})
@@ -790,16 +796,14 @@ async def ui_load_flock_by_upload_action(request: Request, flock_file_upload: Up
790
796
  loaded_flock = load_flock_from_file_service(filename_to_load, request.app.state)
791
797
  if loaded_flock:
792
798
  success_message_text = f"Flock '{loaded_flock.name}' loaded from '{filename_to_load}'."
793
- response_headers["HX-Push-Url"] = f"/ui/editor/properties?ui_mode={ui_mode_query}"
799
+ response_headers["HX-Push-Url"] = f"/ui/editor/execute?ui_mode={ui_mode_query}"
794
800
  response_headers["HX-Trigger"] = json.dumps({"flockLoaded": None, "flockFileListChanged": None, "notify": {"type": "success", "message": success_message_text}})
795
- # CORRECTED CALL:
796
801
  context = get_base_context_web(request, success=success_message_text, ui_mode=ui_mode_query)
797
- return templates.TemplateResponse("partials/_flock_properties_form.html", context, headers=response_headers)
802
+ return templates.TemplateResponse("partials/_execution_view_container.html", context, headers=response_headers)
798
803
  else: error_message_text = f"Failed to process uploaded '{filename_to_load}'."
799
804
 
800
805
  final_error_msg = error_message_text or "Upload failed."
801
806
  response_headers["HX-Trigger"] = json.dumps({"notify": {"type": "error", "message": final_error_msg}})
802
- # CORRECTED CALL:
803
807
  context = get_base_context_web(request, error=final_error_msg, ui_mode=ui_mode_query)
804
808
  return templates.TemplateResponse("partials/_create_flock_form.html", context, headers=response_headers)
805
809
 
@@ -807,16 +811,14 @@ async def ui_load_flock_by_upload_action(request: Request, flock_file_upload: Up
807
811
  async def ui_create_flock_action(request: Request, flock_name: str = Form(...), default_model: str = Form(None), description: str = Form(None)):
808
812
  ui_mode_query = request.query_params.get("ui_mode", "standalone")
809
813
  if not flock_name.strip():
810
- # CORRECTED CALL:
811
814
  context = get_base_context_web(request, error="Flock name cannot be empty.", ui_mode=ui_mode_query)
812
815
  return templates.TemplateResponse("partials/_create_flock_form.html", context)
813
816
 
814
817
  new_flock = create_new_flock_service(flock_name, default_model, description, request.app.state)
815
- success_msg_text = f"New flock '{new_flock.name}' created. Configure properties and save."
816
- response_headers = {"HX-Push-Url": f"/ui/editor/properties?ui_mode={ui_mode_query}", "HX-Trigger": json.dumps({"flockLoaded": None, "notify": {"type": "success", "message": success_msg_text}})}
817
- # CORRECTED CALL:
818
+ success_msg_text = f"New flock '{new_flock.name}' created. Navigating to Execute page. Configure properties and agents as needed."
819
+ response_headers = {"HX-Push-Url": f"/ui/editor/execute?ui_mode={ui_mode_query}", "HX-Trigger": json.dumps({"flockLoaded": None, "notify": {"type": "success", "message": success_msg_text}})}
818
820
  context = get_base_context_web(request, success=success_msg_text, ui_mode=ui_mode_query)
819
- return templates.TemplateResponse("partials/_flock_properties_form.html", context, headers=response_headers)
821
+ return templates.TemplateResponse("partials/_execution_view_container.html", context, headers=response_headers)
820
822
 
821
823
  # --- Settings Page & Endpoints ---
822
824
  @app.get("/ui/settings", response_class=HTMLResponse, tags=["UI Pages"])
@@ -14,8 +14,10 @@
14
14
  <link rel="stylesheet" href="/static/css/chat.css">
15
15
  <!-- Font Awesome for icons -->
16
16
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css">
17
+ <!-- Prism.js CSS for syntax highlighting (okaidia theme) -->
18
+ <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/themes/prism-okaidia.min.css" referrerpolicy="no-referrer" />
17
19
  {# Inject Theme CSS Variables #}
18
- {% if theme_css %}
20
+ {% if theme_css and theme_css.strip() %}
19
21
  <style>
20
22
  /* Start Theme CSS */
21
23
  {{ theme_css | safe }}
@@ -27,10 +29,17 @@
27
29
  integrity="sha384-D1Kt99CQMDuVetoL1lrYwg5t+9QdHe7NLX/SoJYkXDFfX37iInKRy5xLSi8nO7UC"
28
30
  crossorigin="anonymous"></script>
29
31
  <script defer src="https://cdn.jsdelivr.net/npm/alpinejs@3.x.x/dist/cdn.min.js"></script>
32
+ <!-- Prism.js JS (core and autoloader) -->
33
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/components/prism-core.min.js" referrerpolicy="no-referrer"></script>
34
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/plugins/autoloader/prism-autoloader.min.js" referrerpolicy="no-referrer"></script>
30
35
  <!-- Removed inline styles as they're in custom.css -->
31
36
  </head>
32
37
 
33
38
  <body>
39
+ <div id="global-toast-container" style="position: fixed; top: 1rem; right: 1rem; z-index: 9999; display: flex; flex-direction: column; gap: 0.5rem;">
40
+ <!-- Toasts will be appended here -->
41
+ </div>
42
+
34
43
  <header class="top-header">
35
44
  <span><strong>🐧 Flock Playground 🐤</strong></span>
36
45
  <span id="header-flock-status-container" hx-get="/ui/htmx/header-flock-status?ui_mode={{ ui_mode }}"
@@ -104,6 +113,87 @@
104
113
  function triggerEvent(eventName, detail = {}) {
105
114
  htmx.trigger(document.body, eventName, detail);
106
115
  }
116
+
117
+ // Add HTMX event listener for Prism highlighting
118
+ document.addEventListener('htmx:afterSwap', function(event) {
119
+ // Check if the swapped element or its parent is the main content area or results display
120
+ const mainContentArea = document.getElementById('main-content-area');
121
+ const resultsDisplay = document.getElementById('results-display-content');
122
+ let targetElement = event.detail.target;
123
+
124
+ if (targetElement === mainContentArea || (resultsDisplay && resultsDisplay.contains(targetElement)) || (mainContentArea && mainContentArea.contains(targetElement))) {
125
+ if (typeof Prism !== 'undefined') {
126
+ // console.log('Prism highlighting triggered for swapped content in main area.');
127
+ Prism.highlightAllUnder(mainContentArea || document.documentElement);
128
+ }
129
+ }
130
+ });
131
+
132
+ // Initial highlight on page load
133
+ document.addEventListener('DOMContentLoaded', () => {
134
+ if (typeof Prism !== 'undefined') {
135
+ // console.log('Prism initial highlighting.');
136
+ Prism.highlightAll();
137
+ }
138
+ });
139
+ </script>
140
+ {# Global Toast Handler - identical to the one in chat.html #}
141
+ <script>
142
+ document.body.addEventListener('showGlobalToast', function (event) {
143
+ const detail = event.detail;
144
+ const message = detail.message || 'Done!';
145
+ const type = detail.type || 'info'; // success, error, warning, info
146
+
147
+ const toastContainer = document.getElementById('global-toast-container');
148
+ if (!toastContainer) return;
149
+
150
+ const toast = document.createElement('article');
151
+ toast.className = `toast-message ${type}`;
152
+ toast.innerHTML = `<button class="close-toast" style="float: right; background: none; border: none; font-size: 1.2rem; line-height: 1; padding: 0.25rem 0.5rem; cursor: pointer;">&times;</button>${message}`;
153
+
154
+ toast.style.padding = '0.75rem';
155
+ toast.style.border = '1px solid';
156
+ toast.style.borderRadius = 'var(--pico-border-radius, 4px)';
157
+ toast.style.minWidth = '250px';
158
+ toast.style.maxWidth = '400px';
159
+ toast.style.opacity = '0';
160
+ toast.style.transition = 'opacity 0.3s ease-in-out, transform 0.3s ease-in-out';
161
+ toast.style.transform = 'translateX(100%)';
162
+
163
+ if (type === 'success') {
164
+ toast.style.borderColor = 'var(--pico-color-green-500, green)';
165
+ toast.style.backgroundColor = 'var(--pico-color-green-150, #e6fffa)';
166
+ toast.style.color = 'var(--pico-color-green-700, darkgreen)';
167
+ } else if (type === 'error') {
168
+ toast.style.borderColor = 'var(--pico-color-red-500, red)';
169
+ toast.style.backgroundColor = 'var(--pico-color-red-150, #ffe6e6)';
170
+ toast.style.color = 'var(--pico-color-red-700, darkred)';
171
+ } else { // Default/info/warning
172
+ toast.style.borderColor = 'var(--pico-color-blue-500, blue)';
173
+ toast.style.backgroundColor = 'var(--pico-color-blue-150, #e6f7ff)';
174
+ toast.style.color = 'var(--pico-color-blue-700, darkblue)';
175
+ }
176
+
177
+ toastContainer.appendChild(toast);
178
+
179
+ setTimeout(() => {
180
+ toast.style.opacity = '1';
181
+ toast.style.transform = 'translateX(0)';
182
+ }, 10);
183
+
184
+ const closeButton = toast.querySelector('.close-toast');
185
+ closeButton.onclick = () => {
186
+ toast.style.opacity = '0';
187
+ toast.style.transform = 'translateY(-20px)';
188
+ setTimeout(() => toast.remove(), 300);
189
+ };
190
+
191
+ setTimeout(() => {
192
+ toast.style.opacity = '0';
193
+ toast.style.transform = 'translateY(-20px)';
194
+ setTimeout(() => toast.remove(), 300);
195
+ }, 5000);
196
+ });
107
197
  </script>
108
198
  </body>
109
199
 
@@ -9,7 +9,7 @@
9
9
  {# Prism.js CSS for syntax highlighting (okaidia theme) #}
10
10
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/themes/prism-okaidia.min.css" referrerpolicy="no-referrer" />
11
11
  {# Inject active theme variables #}
12
- {% if theme_css %}
12
+ {% if theme_css and theme_css.strip() %}
13
13
  <style>
14
14
  /* Start Theme CSS */
15
15
  /* stylelint-disable */
@@ -24,6 +24,10 @@
24
24
  <script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/plugins/autoloader/prism-autoloader.min.js" referrerpolicy="no-referrer"></script>
25
25
  </head>
26
26
  <body class="chat-page">
27
+ <div id="global-toast-container" style="position: fixed; top: 1rem; right: 1rem; z-index: 9999; display: flex; flex-direction: column; gap: 0.5rem;">
28
+ <!-- Toasts will be appended here -->
29
+ </div>
30
+
27
31
  <div id="chat-container">
28
32
  <div class="chat-header" style="justify-content: space-between;">
29
33
  <hgroup>
@@ -86,6 +90,65 @@
86
90
  Prism.highlightAll();
87
91
  });
88
92
  })();
93
+
94
+ // Global Toast Handler
95
+ document.body.addEventListener('showGlobalToast', function (event) {
96
+ const detail = event.detail;
97
+ const message = detail.message || 'Done!';
98
+ const type = detail.type || 'info'; // success, error, warning, info
99
+
100
+ const toastContainer = document.getElementById('global-toast-container');
101
+ if (!toastContainer) return;
102
+
103
+ const toast = document.createElement('article');
104
+ toast.className = `toast-message ${type}`;
105
+ toast.innerHTML = `<button class="close-toast" style="float: right; background: none; border: none; font-size: 1.2rem; line-height: 1; padding: 0.25rem 0.5rem; cursor: pointer;">&times;</button>${message}`;
106
+
107
+ // Basic styling, can be enhanced in CSS file
108
+ toast.style.padding = '0.75rem';
109
+ toast.style.border = '1px solid';
110
+ toast.style.borderRadius = 'var(--pico-border-radius, 4px)';
111
+ toast.style.minWidth = '250px';
112
+ toast.style.maxWidth = '400px';
113
+ toast.style.opacity = '0'; // Start faded out
114
+ toast.style.transition = 'opacity 0.3s ease-in-out, transform 0.3s ease-in-out';
115
+ toast.style.transform = 'translateX(100%)'; // Start off-screen
116
+
117
+ if (type === 'success') {
118
+ toast.style.borderColor = 'var(--pico-color-green-500, green)';
119
+ toast.style.backgroundColor = 'var(--pico-color-green-150, #e6fffa)';
120
+ toast.style.color = 'var(--pico-color-green-700, darkgreen)';
121
+ } else if (type === 'error') {
122
+ toast.style.borderColor = 'var(--pico-color-red-500, red)';
123
+ toast.style.backgroundColor = 'var(--pico-color-red-150, #ffe6e6)';
124
+ toast.style.color = 'var(--pico-color-red-700, darkred)';
125
+ } else { // Default/info/warning
126
+ toast.style.borderColor = 'var(--pico-color-blue-500, blue)';
127
+ toast.style.backgroundColor = 'var(--pico-color-blue-150, #e6f7ff)';
128
+ toast.style.color = 'var(--pico-color-blue-700, darkblue)';
129
+ }
130
+
131
+ toastContainer.appendChild(toast);
132
+
133
+ // Animate in
134
+ setTimeout(() => {
135
+ toast.style.opacity = '1';
136
+ toast.style.transform = 'translateX(0)';
137
+ }, 10); // Small delay to allow CSS to apply initial state
138
+
139
+ const closeButton = toast.querySelector('.close-toast');
140
+ closeButton.onclick = () => {
141
+ toast.style.opacity = '0';
142
+ toast.style.transform = 'translateY(-20px)';
143
+ setTimeout(() => toast.remove(), 300);
144
+ };
145
+
146
+ setTimeout(() => {
147
+ toast.style.opacity = '0';
148
+ toast.style.transform = 'translateY(-20px)';
149
+ setTimeout(() => toast.remove(), 300);
150
+ }, 5000); // Auto-dismiss after 5 seconds
151
+ });
89
152
  </script>
90
153
  </body>
91
154
  </html>
@@ -14,9 +14,9 @@
14
14
  {% endif %}
15
15
 
16
16
  <form {% if is_new %}
17
- hx-post="/api/flock/htmx/agents"
17
+ hx-post="/ui/api/flock/htmx/agents"
18
18
  {% else %}
19
- hx-put="/api/flock/htmx/agents/{{ agent.name if agent else '' }}"
19
+ hx-put="/ui/api/flock/htmx/agents/{{ agent.name if agent else '' }}"
20
20
  {% endif %}
21
21
  hx-target="#agent-detail-form-content"
22
22
  hx-swap="innerHTML"
@@ -77,7 +77,7 @@
77
77
  </button>
78
78
  {% if not is_new and agent %}
79
79
  <button type="button" role="button" class="secondary outline"
80
- hx-delete="/api/flock/htmx/agents/{{ agent.name }}"
80
+ hx-delete="/ui/api/flock/htmx/agents/{{ agent.name }}"
81
81
  hx-target="#agent-detail-form-content"
82
82
  hx-confirm="Are you sure you want to delete agent '{{ agent.name }}'?"
83
83
  hx-indicator="#agent-detail-loading-indicator">
@@ -23,7 +23,7 @@
23
23
  </div>
24
24
  {% endif %}
25
25
 
26
- <form hx-post="/api/flock/htmx/flock-properties" hx-target="#flock-properties-form-article" hx-swap="innerHTML" hx-indicator="#flock-props-loading">
26
+ <form hx-post="/ui/api/flock/htmx/flock-properties" hx-target="#flock-properties-form-article" hx-swap="innerHTML" hx-indicator="#flock-props-loading">
27
27
  <label for="flock_name">Flock Name</label>
28
28
  <input type="text" id="flock_name" name="flock_name" value="{{ flock.name if flock else '' }}" required>
29
29
 
@@ -38,7 +38,7 @@
38
38
  </div>
39
39
  </form>
40
40
  <hr>
41
- <form hx-post="/api/flock/htmx/save-flock" hx-target="#flock-properties-form-article" hx-swap="innerHTML" hx-indicator="#flock-save-loading">
41
+ <form hx-post="/ui/api/flock/htmx/save-flock" hx-target="#flock-properties-form-article" hx-swap="innerHTML" hx-indicator="#flock-save-loading">
42
42
  <label for="save_filename">Save Flock As:</label>
43
43
  <input type="text" id="save_filename" name="save_filename"
44
44
  value="{{ current_filename if current_filename else (flock.name.replace(' ', '_').lower() + '.flock.yaml' if flock and flock.name else 'my_flock.flock.yaml') }}"
@@ -0,0 +1,39 @@
1
+ {% from "partials/_structured_data_view.html" import render_value %}
2
+
3
+ <article id="results-display-content" x-data="{ viewMode: 'structured' }">
4
+ <header class="grid">
5
+ <h5 style="margin-bottom: 0;">Execution Result</h5>
6
+ <div style="text-align: right;">
7
+ <button role="button" class="outline contrast" @click="viewMode = 'structured'" :aria-pressed="viewMode === 'structured'">Structured</button>
8
+ <button role="button" class="outline contrast" @click="viewMode = 'json'" :aria-pressed="viewMode === 'json'">Raw JSON</button>
9
+ </div>
10
+ </header>
11
+
12
+ <div x-show="viewMode === 'json'">
13
+ {# Check for the new result_raw_json variable first #}
14
+ {% if result_raw_json is defined %}
15
+ <pre><code class="language-json" style="word-break: break-all; white-space: pre-wrap;">{{ result_raw_json }}</code></pre>
16
+ {# Fallback for old context or if result was an error string from backend before formatting #}
17
+ {% elif result is string %}
18
+ <pre><code class="language-plaintext" style="word-break: break-all; white-space: pre-wrap;">{{ result }}</code></pre>
19
+ {% elif result %}
20
+ {# Fallback if result_raw_json is somehow not provided but result (dict) is #}
21
+ <pre><code class="language-json" style="word-break: break-all; white-space: pre-wrap;">{{ result | tojson(indent=2) }}</code></pre>
22
+ {% else %}
23
+ <p>No results to display yet.</p>
24
+ {% endif %}
25
+ </div>
26
+
27
+ <div x-show="viewMode === 'structured'">
28
+ {% if result is string %}
29
+ <p class="error" style="white-space: pre-wrap;">{{ result }}</p>
30
+ {% elif result is mapping %}
31
+ {{ render_value(result) }}
32
+ {% elif result %}
33
+ <p>Structured view not available for this result type (not a dictionary).</p>
34
+ <pre><code class="language-json" style="word-break: break-all; white-space: pre-wrap;">{{ result | tojson(indent=2) }}</code></pre>
35
+ {% else %}
36
+ <p>No results to display yet.</p>
37
+ {% endif %}
38
+ </div>
39
+ </article>
@@ -31,8 +31,8 @@
31
31
  {% elif value is none %}
32
32
  <em style="color: var(--pico-code-color);">None</em>
33
33
  {% else %}
34
- {# Apply pre-wrap for multi-line strings #}
35
- <span style="white-space: pre-wrap; word-break: break-word;">{{ value }}</span>
34
+ {# Apply pre-wrap for multi-line strings and render markdown #}
35
+ <div class="markdown-content" style="word-break: break-word;">{{ value | markdown | safe }}</div>
36
36
  {% endif %}
37
37
  {% endmacro %}
38
38