flock-core 0.5.0b52__tar.gz → 0.5.0b54__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 (622) hide show
  1. flock_core-0.5.0b54/.envtemplate +68 -0
  2. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/.github/workflows/quality.yml +6 -6
  3. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/.gitignore +1 -0
  4. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/AGENTS.md +522 -1
  5. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/PKG-INFO +187 -18
  6. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/README.md +185 -17
  7. flock_core-0.5.0b54/docs/AUTO_TRACING.md +529 -0
  8. flock_core-0.5.0b54/docs/IMPLEMENTATION_SUMMARY.md +284 -0
  9. flock_core-0.5.0b54/docs/TRACE_MODULE.md +379 -0
  10. flock_core-0.5.0b54/docs/TRACING_PRODUCTION_READINESS.md +986 -0
  11. flock_core-0.5.0b54/docs/UNIFIED_TRACING.md +373 -0
  12. flock_core-0.5.0b54/docs/UNIFIED_TRACING_DELIVERY.md +589 -0
  13. flock_core-0.5.0b54/docs/how_to_use_tracing_effectively.md +1402 -0
  14. flock_core-0.5.0b54/examples/showcase/01_declarative_pizza.py +51 -0
  15. flock_core-0.5.0b54/examples/showcase/06_researcher.py +62 -0
  16. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/pyproject.toml +2 -1
  17. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/agent.py +6 -2
  18. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/components.py +17 -1
  19. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/dashboard/service.py +293 -0
  20. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/README.md +86 -0
  21. flock_core-0.5.0b54/src/flock/frontend/src/components/modules/JsonAttributeRenderer.tsx +140 -0
  22. flock_core-0.5.0b54/src/flock/frontend/src/components/modules/ModuleWindow.tsx +223 -0
  23. flock_core-0.5.0b54/src/flock/frontend/src/components/modules/TraceModuleJaeger.tsx +1971 -0
  24. flock_core-0.5.0b54/src/flock/frontend/src/components/modules/TraceModuleJaegerWrapper.tsx +13 -0
  25. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/components/modules/registerModules.ts +10 -0
  26. flock_core-0.5.0b54/src/flock/frontend/src/components/settings/MultiSelect.tsx +235 -0
  27. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/components/settings/SettingsPanel.css +1 -1
  28. flock_core-0.5.0b54/src/flock/frontend/src/components/settings/TracingSettings.tsx +404 -0
  29. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/types/modules.ts +3 -0
  30. flock_core-0.5.0b54/src/flock/logging/auto_trace.py +159 -0
  31. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/logging/telemetry.py +17 -0
  32. flock_core-0.5.0b54/src/flock/logging/telemetry_exporter/duckdb_exporter.py +216 -0
  33. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/logging/telemetry_exporter/file_exporter.py +7 -1
  34. flock_core-0.5.0b54/src/flock/logging/trace_and_logged.py +304 -0
  35. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/mcp/util/helpers.py +3 -3
  36. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/orchestrator.py +130 -1
  37. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/tests/test_cli_helper.py +1 -1
  38. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/tests/test_telemetry.py +18 -6
  39. flock_core-0.5.0b54/tests/test_trace_clearing.py +313 -0
  40. flock_core-0.5.0b54/tests/test_unified_tracing.py +195 -0
  41. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/uv.lock +35 -1
  42. flock_core-0.5.0b52/.envtemplate +0 -7
  43. flock_core-0.5.0b52/examples/showcase/01_declarative_pizza.py +0 -42
  44. flock_core-0.5.0b52/src/flock/frontend/src/components/modules/ModuleWindow.tsx +0 -155
  45. flock_core-0.5.0b52/src/flock/logging/trace_and_logged.py +0 -55
  46. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/.devcontainer/devcontainer.json +0 -0
  47. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/.github/workflows/deploy-whiteduck-pypi.yml +0 -0
  48. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/.pre-commit-config.yaml +0 -0
  49. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/.python-version +0 -0
  50. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/.vscode/settings.json +0 -0
  51. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/CONTRIBUTING.md +0 -0
  52. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/LICENSE +0 -0
  53. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/docs/PRE_COMMIT_HOOKS.md +0 -0
  54. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/docs/VERSIONING.md +0 -0
  55. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/docs/design_and_goals/landscape_analysis.md +0 -0
  56. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/docs/design_and_goals/motivation.md +0 -0
  57. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/docs/design_and_goals/review.md +0 -0
  58. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/docs/design_and_goals/technical_design.md +0 -0
  59. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/docs/domain/test-improvement-roadmap.md +0 -0
  60. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/docs/img/flock_ui_1.png +0 -0
  61. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/docs/img/flock_ui_agent_view.png +0 -0
  62. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/docs/img/flock_ui_blackboard_view.png +0 -0
  63. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/docs/img/pizza.png +0 -0
  64. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/docs/patterns/auto-layout-auto-zoom-removal.md +0 -0
  65. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/docs/patterns/core-architecture.md +0 -0
  66. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/docs/patterns/development-workflow.md +0 -0
  67. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/docs/patterns/project-configuration.md +0 -0
  68. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/docs/patterns/repository-structure.md +0 -0
  69. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/docs/specs/001-test-coverage-improvement/PLAN.md +0 -0
  70. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/docs/specs/001-test-coverage-improvement/PRD.md +0 -0
  71. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/docs/specs/001-test-coverage-improvement/SDD.md +0 -0
  72. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/docs/troubleshooting/codex_bug_analysis.md +0 -0
  73. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/docs/troubleshooting/event-log-memory-leak-analysis.md +0 -0
  74. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/examples/features/README.md +0 -0
  75. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/examples/features/__init__.py +0 -0
  76. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/examples/features/feedback_prevention.py +0 -0
  77. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/examples/features/subscription_predicates.py +0 -0
  78. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/examples/features/visibility/public_visibility.py +0 -0
  79. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/examples/showcase/02_hello_flock.py +0 -0
  80. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/examples/showcase/03_blog_review.py +0 -0
  81. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/examples/showcase/04_mcp_tools.py +0 -0
  82. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/examples/showcase/05_dashboard.py +0 -0
  83. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/examples/showcase/05b_dashboard_edge_cases.py +0 -0
  84. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/examples/showcase/README.md +0 -0
  85. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/examples/showcase/__init__.py +0 -0
  86. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/requirements.txt +0 -0
  87. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/scripts/build_dashboard.py +0 -0
  88. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/scripts/bump_version.py +0 -0
  89. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/scripts/check_version_bump.py +0 -0
  90. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/scripts/generate_llm_codebase.py +0 -0
  91. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/__init__.py +0 -0
  92. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/api/themes.py +0 -0
  93. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/artifacts.py +0 -0
  94. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/cli.py +0 -0
  95. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/dashboard/__init__.py +0 -0
  96. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/dashboard/collector.py +0 -0
  97. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/dashboard/events.py +0 -0
  98. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/dashboard/launcher.py +0 -0
  99. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/dashboard/websocket.py +0 -0
  100. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/engines/__init__.py +0 -0
  101. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/engines/dspy_engine.py +0 -0
  102. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/examples.py +0 -0
  103. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/docs/DESIGN_SYSTEM.md +0 -0
  104. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/index.html +0 -0
  105. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/package-lock.json +0 -0
  106. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/package.json +0 -0
  107. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/App.tsx +0 -0
  108. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/__tests__/e2e/critical-scenarios.test.tsx +0 -0
  109. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/__tests__/integration/filtering-e2e.test.tsx +0 -0
  110. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/__tests__/integration/graph-rendering.test.tsx +0 -0
  111. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/__tests__/integration/indexeddb-persistence.test.tsx +0 -0
  112. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/components/common/BuildInfo.tsx +0 -0
  113. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/components/common/EmptyState.module.css +0 -0
  114. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/components/common/EmptyState.tsx +0 -0
  115. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/components/common/ErrorBoundary.module.css +0 -0
  116. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/components/common/ErrorBoundary.tsx +0 -0
  117. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/components/common/KeyboardShortcutsDialog.css +0 -0
  118. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/components/common/KeyboardShortcutsDialog.tsx +0 -0
  119. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/components/common/LoadingSpinner.module.css +0 -0
  120. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/components/common/LoadingSpinner.tsx +0 -0
  121. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/components/controls/PublishControl.css +0 -0
  122. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/components/controls/PublishControl.test.tsx +0 -0
  123. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/components/controls/PublishControl.tsx +0 -0
  124. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/components/details/DetailWindowContainer.tsx +0 -0
  125. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/components/details/LiveOutputTab.test.tsx +0 -0
  126. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/components/details/LiveOutputTab.tsx +0 -0
  127. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/components/details/MessageHistoryTab.tsx +0 -0
  128. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/components/details/NodeDetailWindow.test.tsx +0 -0
  129. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/components/details/NodeDetailWindow.tsx +0 -0
  130. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/components/details/RunStatusTab.tsx +0 -0
  131. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/components/details/tabs.test.tsx +0 -0
  132. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/components/filters/CorrelationIDFilter.module.css +0 -0
  133. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/components/filters/CorrelationIDFilter.test.tsx +0 -0
  134. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/components/filters/CorrelationIDFilter.tsx +0 -0
  135. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/components/filters/FilterBar.module.css +0 -0
  136. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/components/filters/FilterBar.test.tsx +0 -0
  137. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/components/filters/FilterBar.tsx +0 -0
  138. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/components/filters/FilterPills.module.css +0 -0
  139. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/components/filters/FilterPills.test.tsx +0 -0
  140. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/components/filters/FilterPills.tsx +0 -0
  141. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/components/filters/TimeRangeFilter.module.css +0 -0
  142. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/components/filters/TimeRangeFilter.test.tsx +0 -0
  143. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/components/filters/TimeRangeFilter.tsx +0 -0
  144. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/components/graph/AgentNode.test.tsx +0 -0
  145. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/components/graph/AgentNode.tsx +0 -0
  146. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/components/graph/GraphCanvas.tsx +0 -0
  147. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/components/graph/MessageFlowEdge.tsx +0 -0
  148. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/components/graph/MessageNode.test.tsx +0 -0
  149. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/components/graph/MessageNode.tsx +0 -0
  150. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/components/graph/MiniMap.tsx +0 -0
  151. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/components/graph/TransformEdge.tsx +0 -0
  152. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/components/layout/DashboardLayout.css +0 -0
  153. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/components/layout/DashboardLayout.tsx +0 -0
  154. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/components/layout/Header.module.css +0 -0
  155. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/components/layout/Header.tsx +0 -0
  156. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/components/modules/EventLogModule.test.tsx +0 -0
  157. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/components/modules/EventLogModule.tsx +0 -0
  158. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/components/modules/EventLogModuleWrapper.tsx +0 -0
  159. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/components/modules/ModuleRegistry.test.ts +0 -0
  160. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/components/modules/ModuleRegistry.ts +0 -0
  161. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/components/settings/AdvancedSettings.tsx +0 -0
  162. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/components/settings/AppearanceSettings.tsx +0 -0
  163. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/components/settings/GraphSettings.tsx +0 -0
  164. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/components/settings/SettingsPanel.tsx +0 -0
  165. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/components/settings/ThemeSelector.tsx +0 -0
  166. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/hooks/useKeyboardShortcuts.ts +0 -0
  167. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/hooks/useModulePersistence.test.ts +0 -0
  168. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/hooks/useModulePersistence.ts +0 -0
  169. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/hooks/useModules.ts +0 -0
  170. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/hooks/usePersistence.ts +0 -0
  171. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/main.tsx +0 -0
  172. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/services/api.ts +0 -0
  173. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/services/indexeddb.test.ts +0 -0
  174. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/services/indexeddb.ts +0 -0
  175. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/services/layout.test.ts +0 -0
  176. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/services/layout.ts +0 -0
  177. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/services/themeApplicator.ts +0 -0
  178. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/services/themeService.ts +0 -0
  179. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/services/websocket.test.ts +0 -0
  180. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/services/websocket.ts +0 -0
  181. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/store/filterStore.test.ts +0 -0
  182. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/store/filterStore.ts +0 -0
  183. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/store/graphStore.test.ts +0 -0
  184. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/store/graphStore.ts +0 -0
  185. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/store/moduleStore.test.ts +0 -0
  186. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/store/moduleStore.ts +0 -0
  187. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/store/settingsStore.ts +0 -0
  188. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/store/streamStore.ts +0 -0
  189. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/store/uiStore.test.ts +0 -0
  190. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/store/uiStore.ts +0 -0
  191. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/store/wsStore.ts +0 -0
  192. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/styles/index.css +0 -0
  193. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/styles/scrollbar.css +0 -0
  194. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/styles/variables.css +0 -0
  195. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/test/setup.ts +0 -0
  196. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/types/filters.ts +0 -0
  197. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/types/graph.ts +0 -0
  198. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/types/theme.ts +0 -0
  199. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/utils/mockData.ts +0 -0
  200. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/utils/performance.ts +0 -0
  201. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/utils/transforms.test.ts +0 -0
  202. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/utils/transforms.ts +0 -0
  203. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/src/vite-env.d.ts +0 -0
  204. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/tsconfig.json +0 -0
  205. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/tsconfig.node.json +0 -0
  206. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/vite.config.ts +0 -0
  207. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/frontend/vitest.config.ts +0 -0
  208. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/helper/cli_helper.py +0 -0
  209. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/logging/__init__.py +0 -0
  210. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/logging/formatters/enum_builder.py +0 -0
  211. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/logging/formatters/theme_builder.py +0 -0
  212. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/logging/formatters/themed_formatter.py +0 -0
  213. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/logging/formatters/themes.py +0 -0
  214. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/logging/logging.py +0 -0
  215. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/logging/span_middleware/baggage_span_processor.py +0 -0
  216. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/logging/telemetry_exporter/base_exporter.py +0 -0
  217. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/logging/telemetry_exporter/sqlite_exporter.py +0 -0
  218. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/mcp/__init__.py +0 -0
  219. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/mcp/client.py +0 -0
  220. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/mcp/config.py +0 -0
  221. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/mcp/manager.py +0 -0
  222. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/mcp/servers/sse/__init__.py +0 -0
  223. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/mcp/servers/sse/flock_sse_server.py +0 -0
  224. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/mcp/servers/stdio/__init__.py +0 -0
  225. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/mcp/servers/stdio/flock_stdio_server.py +0 -0
  226. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/mcp/servers/streamable_http/__init__.py +0 -0
  227. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/mcp/servers/streamable_http/flock_streamable_http_server.py +0 -0
  228. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/mcp/servers/websockets/__init__.py +0 -0
  229. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/mcp/servers/websockets/flock_websocket_server.py +0 -0
  230. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/mcp/tool.py +0 -0
  231. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/mcp/types/__init__.py +0 -0
  232. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/mcp/types/callbacks.py +0 -0
  233. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/mcp/types/factories.py +0 -0
  234. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/mcp/types/handlers.py +0 -0
  235. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/mcp/types/types.py +0 -0
  236. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/mcp/util/__init__.py +0 -0
  237. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/registry.py +0 -0
  238. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/runtime.py +0 -0
  239. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/service.py +0 -0
  240. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/store.py +0 -0
  241. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/subscription.py +0 -0
  242. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/3024-day.toml +0 -0
  243. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/3024-night.toml +0 -0
  244. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/aardvark-blue.toml +0 -0
  245. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/abernathy.toml +0 -0
  246. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/adventure.toml +0 -0
  247. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/adventuretime.toml +0 -0
  248. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/afterglow.toml +0 -0
  249. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/alabaster.toml +0 -0
  250. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/alienblood.toml +0 -0
  251. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/andromeda.toml +0 -0
  252. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/apple-classic.toml +0 -0
  253. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/apple-system-colors.toml +0 -0
  254. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/arcoiris.toml +0 -0
  255. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/argonaut copy.toml +0 -0
  256. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/argonaut.toml +0 -0
  257. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/arthur.toml +0 -0
  258. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/ateliersulphurpool.toml +0 -0
  259. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/atom.toml +0 -0
  260. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/atom_test.toml +0 -0
  261. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/atomonelight.toml +0 -0
  262. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/aurora.toml +0 -0
  263. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/ayu copy.toml +0 -0
  264. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/ayu-light.toml +0 -0
  265. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/ayu-mirage.toml +0 -0
  266. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/ayu.toml +0 -0
  267. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/banana-blueberry.toml +0 -0
  268. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/batman.toml +0 -0
  269. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/belafonte-day.toml +0 -0
  270. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/belafonte-night.toml +0 -0
  271. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/birdsofparadise.toml +0 -0
  272. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/blazer.toml +0 -0
  273. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/blue-matrix.toml +0 -0
  274. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/blueberrypie.toml +0 -0
  275. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/bluedolphin.toml +0 -0
  276. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/blulocodark.toml +0 -0
  277. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/blulocolight.toml +0 -0
  278. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/borland.toml +0 -0
  279. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/breeze.toml +0 -0
  280. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/bright-lights.toml +0 -0
  281. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/broadcast.toml +0 -0
  282. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/brogrammer.toml +0 -0
  283. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/builtin-dark.toml +0 -0
  284. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/builtin-light.toml +0 -0
  285. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/builtin-pastel-dark.toml +0 -0
  286. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/builtin-solarized-dark.toml +0 -0
  287. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/builtin-solarized-light.toml +0 -0
  288. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/builtin-tango-dark.toml +0 -0
  289. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/builtin-tango-light.toml +0 -0
  290. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/c64.toml +0 -0
  291. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/calamity.toml +0 -0
  292. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/catppuccin-frappe.toml +0 -0
  293. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/catppuccin-latte.toml +0 -0
  294. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/catppuccin-macchiato.toml +0 -0
  295. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/catppuccin-mocha.toml +0 -0
  296. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/cga.toml +0 -0
  297. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/chalk.toml +0 -0
  298. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/chalkboard.toml +0 -0
  299. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/challengerdeep.toml +0 -0
  300. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/chester.toml +0 -0
  301. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/ciapre.toml +0 -0
  302. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/clrs.toml +0 -0
  303. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/cobalt-neon.toml +0 -0
  304. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/cobalt2.toml +0 -0
  305. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/coffee-theme.toml +0 -0
  306. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/crayonponyfish.toml +0 -0
  307. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/cutiepro.toml +0 -0
  308. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/cyberdyne.toml +0 -0
  309. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/cyberpunk.toml +0 -0
  310. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/cyberpunkscarletprotocol.toml +0 -0
  311. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/dark+.toml +0 -0
  312. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/dark-pastel.toml +0 -0
  313. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/darkermatrix.toml +0 -0
  314. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/darkmatrix.toml +0 -0
  315. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/darkside.toml +0 -0
  316. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/dayfox.toml +0 -0
  317. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/deep.toml +0 -0
  318. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/desert.toml +0 -0
  319. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/dimidium.toml +0 -0
  320. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/dimmedmonokai.toml +0 -0
  321. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/django.toml +0 -0
  322. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/djangorebornagain.toml +0 -0
  323. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/djangosmooth.toml +0 -0
  324. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/doom-peacock.toml +0 -0
  325. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/doomone.toml +0 -0
  326. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/dotgov.toml +0 -0
  327. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/dracula+.toml +0 -0
  328. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/dracula.toml +0 -0
  329. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/duckbones.toml +0 -0
  330. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/duotone-dark.toml +0 -0
  331. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/earthsong.toml +0 -0
  332. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/elemental.toml +0 -0
  333. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/elementary.toml +0 -0
  334. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/encom.toml +0 -0
  335. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/espresso-libre.toml +0 -0
  336. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/espresso.toml +0 -0
  337. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/everblush.toml +0 -0
  338. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/fahrenheit.toml +0 -0
  339. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/fairyfloss.toml +0 -0
  340. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/farmhouse-dark.toml +0 -0
  341. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/farmhouse-light.toml +0 -0
  342. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/fideloper.toml +0 -0
  343. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/firefly-traditional.toml +0 -0
  344. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/firefoxdev.toml +0 -0
  345. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/firewatch.toml +0 -0
  346. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/fishtank.toml +0 -0
  347. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/flat.toml +0 -0
  348. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/flatland.toml +0 -0
  349. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/flexoki-dark.toml +0 -0
  350. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/flexoki-light.toml +0 -0
  351. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/floraverse.toml +0 -0
  352. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/forestblue.toml +0 -0
  353. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/framer.toml +0 -0
  354. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/frontenddelight.toml +0 -0
  355. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/funforrest.toml +0 -0
  356. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/galaxy.toml +0 -0
  357. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/galizur.toml +0 -0
  358. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/github-dark.toml +0 -0
  359. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/github.toml +0 -0
  360. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/glacier.toml +0 -0
  361. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/grape.toml +0 -0
  362. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/grass.toml +0 -0
  363. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/grey-green.toml +0 -0
  364. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/gruber-darker.toml +0 -0
  365. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/gruvboxdark.toml +0 -0
  366. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/gruvboxdarkhard.toml +0 -0
  367. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/gruvboxlight.toml +0 -0
  368. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/guezwhoz.toml +0 -0
  369. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/hacktober.toml +0 -0
  370. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/hardcore.toml +0 -0
  371. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/harper.toml +0 -0
  372. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/hax0r-blue.toml +0 -0
  373. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/hax0r-gr33n.toml +0 -0
  374. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/hax0r-r3d.toml +0 -0
  375. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/highway.toml +0 -0
  376. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/hipster-green.toml +0 -0
  377. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/hivacruz.toml +0 -0
  378. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/homebrew.toml +0 -0
  379. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/hopscotch.256.toml +0 -0
  380. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/hopscotch.toml +0 -0
  381. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/hurtado.toml +0 -0
  382. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/hybrid.toml +0 -0
  383. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/ic-green-ppl.toml +0 -0
  384. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/ic-orange-ppl.toml +0 -0
  385. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/iceberg-dark.toml +0 -0
  386. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/iceberg-light.toml +0 -0
  387. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/idea.toml +0 -0
  388. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/idletoes.toml +0 -0
  389. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/ir-black.toml +0 -0
  390. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/iterm2-dark-background.toml +0 -0
  391. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/iterm2-default.toml +0 -0
  392. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/iterm2-light-background.toml +0 -0
  393. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/iterm2-pastel-dark-background.toml +0 -0
  394. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/iterm2-smoooooth.toml +0 -0
  395. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/iterm2-solarized-dark.toml +0 -0
  396. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/iterm2-solarized-light.toml +0 -0
  397. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/iterm2-tango-dark.toml +0 -0
  398. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/iterm2-tango-light.toml +0 -0
  399. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/jackie-brown.toml +0 -0
  400. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/japanesque.toml +0 -0
  401. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/jellybeans.toml +0 -0
  402. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/jetbrains-darcula.toml +0 -0
  403. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/jubi.toml +0 -0
  404. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/kanagawabones.toml +0 -0
  405. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/kibble.toml +0 -0
  406. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/kolorit.toml +0 -0
  407. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/konsolas.toml +0 -0
  408. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/kurokula.toml +0 -0
  409. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/lab-fox.toml +0 -0
  410. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/laser.toml +0 -0
  411. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/later-this-evening.toml +0 -0
  412. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/lavandula.toml +0 -0
  413. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/liquidcarbon.toml +0 -0
  414. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/liquidcarbontransparent.toml +0 -0
  415. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/liquidcarbontransparentinverse.toml +0 -0
  416. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/lovelace.toml +0 -0
  417. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/man-page.toml +0 -0
  418. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/mariana.toml +0 -0
  419. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/material.toml +0 -0
  420. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/materialdark.toml +0 -0
  421. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/materialdarker.toml +0 -0
  422. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/materialdesigncolors.toml +0 -0
  423. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/materialocean.toml +0 -0
  424. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/mathias.toml +0 -0
  425. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/matrix.toml +0 -0
  426. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/medallion.toml +0 -0
  427. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/mellifluous.toml +0 -0
  428. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/midnight-in-mojave.toml +0 -0
  429. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/mirage.toml +0 -0
  430. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/misterioso.toml +0 -0
  431. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/molokai.toml +0 -0
  432. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/monalisa.toml +0 -0
  433. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/monokai-remastered.toml +0 -0
  434. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/monokai-soda.toml +0 -0
  435. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/monokai-vivid.toml +0 -0
  436. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/n0tch2k.toml +0 -0
  437. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/neobones-dark.toml +0 -0
  438. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/neobones-light.toml +0 -0
  439. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/neon.toml +0 -0
  440. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/neopolitan.toml +0 -0
  441. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/neutron.toml +0 -0
  442. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/night-owlish-light.toml +0 -0
  443. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/nightfox.toml +0 -0
  444. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/nightlion-v1.toml +0 -0
  445. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/nightlion-v2.toml +0 -0
  446. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/niji.toml +0 -0
  447. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/nocturnal-winter.toml +0 -0
  448. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/nord-light.toml +0 -0
  449. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/nord.toml +0 -0
  450. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/novel.toml +0 -0
  451. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/nvimdark.toml +0 -0
  452. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/nvimlight.toml +0 -0
  453. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/obsidian.toml +0 -0
  454. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/ocean.toml +0 -0
  455. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/oceanic-next.toml +0 -0
  456. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/oceanicmaterial.toml +0 -0
  457. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/ollie.toml +0 -0
  458. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/onehalfdark.toml +0 -0
  459. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/onehalflight.toml +0 -0
  460. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/operator-mono-dark.toml +0 -0
  461. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/overnight-slumber.toml +0 -0
  462. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/oxocarbon.toml +0 -0
  463. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/palenighthc.toml +0 -0
  464. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/pandora.toml +0 -0
  465. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/paraiso-dark.toml +0 -0
  466. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/paulmillr.toml +0 -0
  467. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/pencildark.toml +0 -0
  468. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/pencillight.toml +0 -0
  469. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/peppermint.toml +0 -0
  470. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/piatto-light.toml +0 -0
  471. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/pnevma.toml +0 -0
  472. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/popping-and-locking.toml +0 -0
  473. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/primary.toml +0 -0
  474. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/pro-light.toml +0 -0
  475. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/pro.toml +0 -0
  476. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/purple-rain.toml +0 -0
  477. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/purplepeter.toml +0 -0
  478. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/rapture.toml +0 -0
  479. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/raycast-dark.toml +0 -0
  480. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/raycast-light.toml +0 -0
  481. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/rebecca.toml +0 -0
  482. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/red-alert.toml +0 -0
  483. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/red-planet.toml +0 -0
  484. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/red-sands.toml +0 -0
  485. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/relaxed.toml +0 -0
  486. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/retro.toml +0 -0
  487. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/rippedcasts.toml +0 -0
  488. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/rose-pine-dawn.toml +0 -0
  489. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/rose-pine-moon.toml +0 -0
  490. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/rose-pine.toml +0 -0
  491. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/rouge-2.toml +0 -0
  492. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/royal.toml +0 -0
  493. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/ryuuko.toml +0 -0
  494. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/sakura.toml +0 -0
  495. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/scarlet-protocol.toml +0 -0
  496. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/seafoam-pastel.toml +0 -0
  497. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/seashells.toml +0 -0
  498. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/seoulbones-dark.toml +0 -0
  499. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/seoulbones-light.toml +0 -0
  500. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/seti.toml +0 -0
  501. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/shades-of-purple.toml +0 -0
  502. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/shaman.toml +0 -0
  503. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/slate.toml +0 -0
  504. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/sleepyhollow.toml +0 -0
  505. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/smyck.toml +0 -0
  506. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/snazzy.toml +0 -0
  507. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/softserver.toml +0 -0
  508. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/solarized-darcula.toml +0 -0
  509. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/solarized-dark---patched.toml +0 -0
  510. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/solarized-dark-higher-contrast.toml +0 -0
  511. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/spacedust.toml +0 -0
  512. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/spacegray-eighties-dull.toml +0 -0
  513. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/spacegray-eighties.toml +0 -0
  514. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/spacegray.toml +0 -0
  515. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/spiderman.toml +0 -0
  516. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/spring.toml +0 -0
  517. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/square.toml +0 -0
  518. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/sublette.toml +0 -0
  519. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/subliminal.toml +0 -0
  520. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/sugarplum.toml +0 -0
  521. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/sundried.toml +0 -0
  522. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/symfonic.toml +0 -0
  523. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/synthwave-everything.toml +0 -0
  524. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/synthwave.toml +0 -0
  525. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/synthwavealpha.toml +0 -0
  526. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/tango-adapted.toml +0 -0
  527. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/tango-half-adapted.toml +0 -0
  528. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/teerb.toml +0 -0
  529. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/terafox.toml +0 -0
  530. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/terminal-basic.toml +0 -0
  531. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/thayer-bright.toml +0 -0
  532. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/the-hulk.toml +0 -0
  533. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/tinacious-design-(dark).toml +0 -0
  534. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/tinacious-design-(light).toml +0 -0
  535. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/tokyonight-day.toml +0 -0
  536. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/tokyonight-storm.toml +0 -0
  537. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/tokyonight.toml +0 -0
  538. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/tomorrow-night-blue.toml +0 -0
  539. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/tomorrow-night-bright.toml +0 -0
  540. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/tomorrow-night-burns.toml +0 -0
  541. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/tomorrow-night-eighties.toml +0 -0
  542. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/tomorrow-night.toml +0 -0
  543. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/tomorrow.toml +0 -0
  544. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/toychest.toml +0 -0
  545. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/treehouse.toml +0 -0
  546. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/twilight.toml +0 -0
  547. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/ubuntu.toml +0 -0
  548. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/ultradark.toml +0 -0
  549. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/ultraviolent.toml +0 -0
  550. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/underthesea.toml +0 -0
  551. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/unikitty.toml +0 -0
  552. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/urple.toml +0 -0
  553. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/vaughn.toml +0 -0
  554. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/vesper.toml +0 -0
  555. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/vibrantink.toml +0 -0
  556. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/vimbones.toml +0 -0
  557. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/violet-dark.toml +0 -0
  558. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/violet-light.toml +0 -0
  559. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/warmneon.toml +0 -0
  560. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/wez.toml +0 -0
  561. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/whimsy.toml +0 -0
  562. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/wildcherry.toml +0 -0
  563. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/wilmersdorf.toml +0 -0
  564. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/wombat.toml +0 -0
  565. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/wryan.toml +0 -0
  566. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/xcodedark.toml +0 -0
  567. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/xcodedarkhc.toml +0 -0
  568. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/xcodelight.toml +0 -0
  569. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/xcodelighthc.toml +0 -0
  570. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/xcodewwdc.toml +0 -0
  571. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/zenbones-dark.toml +0 -0
  572. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/zenbones-light.toml +0 -0
  573. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/zenbones.toml +0 -0
  574. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/zenburn.toml +0 -0
  575. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/zenburned.toml +0 -0
  576. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/zenwritten-dark.toml +0 -0
  577. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/themes/zenwritten-light.toml +0 -0
  578. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/utilities.py +0 -0
  579. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/utility/output_utility_component.py +0 -0
  580. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/src/flock/visibility.py +0 -0
  581. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/tests/conftest.py +0 -0
  582. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/tests/contract/test_agent_payload_selection_contract.py +0 -0
  583. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/tests/contract/test_artifact_storage_contract.py +0 -0
  584. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/tests/contract/test_type_normalization_contract.py +0 -0
  585. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/tests/e2e/README.md +0 -0
  586. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/tests/e2e/TESTING_SUMMARY.md +0 -0
  587. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/tests/e2e/test_critical_scenarios.py +0 -0
  588. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/tests/integration/test_collector_orchestrator.py +0 -0
  589. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/tests/integration/test_orchestrator_dashboard.py +0 -0
  590. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/tests/integration/test_websocket_protocol.py +0 -0
  591. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/tests/test_agent.py +0 -0
  592. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/tests/test_agent_mcp.py +0 -0
  593. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/tests/test_artifacts.py +0 -0
  594. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/tests/test_cli.py +0 -0
  595. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/tests/test_components.py +0 -0
  596. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/tests/test_dashboard_api.py +0 -0
  597. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/tests/test_dashboard_collector.py +0 -0
  598. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/tests/test_dashboard_launcher.py +0 -0
  599. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/tests/test_dashboard_service.py +0 -0
  600. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/tests/test_dspy_engine.py +0 -0
  601. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/tests/test_dspy_engine_mcp.py +0 -0
  602. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/tests/test_dspy_streaming_events.py +0 -0
  603. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/tests/test_engines.py +0 -0
  604. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/tests/test_logging_config.py +0 -0
  605. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/tests/test_mcp_client.py +0 -0
  606. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/tests/test_mcp_config.py +0 -0
  607. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/tests/test_mcp_coverage_summary.md +0 -0
  608. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/tests/test_mcp_imports.py +0 -0
  609. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/tests/test_mcp_manager.py +0 -0
  610. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/tests/test_mcp_tool_handlers.py +0 -0
  611. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/tests/test_orchestrator.py +0 -0
  612. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/tests/test_orchestrator_mcp.py +0 -0
  613. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/tests/test_registry.py +0 -0
  614. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/tests/test_runtime.py +0 -0
  615. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/tests/test_service.py +0 -0
  616. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/tests/test_service_extended.py +0 -0
  617. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/tests/test_store.py +0 -0
  618. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/tests/test_subscription.py +0 -0
  619. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/tests/test_utilities.py +0 -0
  620. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/tests/test_version_endpoint.py +0 -0
  621. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/tests/test_visibility.py +0 -0
  622. {flock_core-0.5.0b52 → flock_core-0.5.0b54}/tests/test_websocket_manager.py +0 -0
@@ -0,0 +1,68 @@
1
+ AZURE_API_KEY=xxx
2
+ AZURE_API_BASE=https://xxx-foundry.cognitiveservices.azure.com/
3
+ AZURE_API_VERSION="2024-12-01-preview"
4
+
5
+ # ============================================================================
6
+ # OpenTelemetry Tracing Configuration
7
+ # ============================================================================
8
+
9
+ # Enable auto-tracing for all agents and operations
10
+ # Set to "true" to enable OpenTelemetry distributed tracing
11
+ # Traces are stored in DuckDB for fast analytical queries
12
+ FLOCK_AUTO_TRACE=true
13
+
14
+ # Store traces in DuckDB database (recommended for production)
15
+ # Creates .flock/traces.duckdb with full input/output capture
16
+ # Set to "true" to enable DuckDB storage
17
+ FLOCK_TRACE_FILE=true
18
+
19
+ # 🆕 Unified Workflow Tracing (v0.5.0+)
20
+ # Automatically wrap operations in workflow traces for better observability
21
+ # When disabled (default), use explicit `async with flock.traced_run("name")`
22
+ # Set to "true" to enable automatic workflow trace detection
23
+ # FLOCK_AUTO_WORKFLOW_TRACE=true
24
+
25
+ # Filter: Trace only specific services (whitelist)
26
+ # Format: JSON array of service names (case-insensitive)
27
+ # If not set or empty, all services are traced
28
+ # Recommended: Trace core services, avoid streaming token overhead
29
+ # Example: FLOCK_TRACE_SERVICES=["flock", "agent", "dspyengine", "outpututilitycomponent"]
30
+ FLOCK_TRACE_SERVICES=["flock", "agent", "dspyengine", "outpututilitycomponent"]
31
+
32
+ # Filter: Ignore specific operations (blacklist)
33
+ # Format: JSON array of operation names in "Service.method" format
34
+ # Use this to exclude noisy or low-value operations from traces
35
+ # Example: FLOCK_TRACE_IGNORE=["DashboardEventCollector.set_websocket_manager"]
36
+ FLOCK_TRACE_IGNORE=["DashboardEventCollector.set_websocket_manager"]
37
+
38
+ # Trace Time-To-Live (TTL): Auto-delete old traces
39
+ # Deletes traces older than specified days on application startup
40
+ # Keeps database size manageable and removes stale debugging data
41
+ # Set to empty or comment out to keep traces forever
42
+ # Example: FLOCK_TRACE_TTL_DAYS=30
43
+ FLOCK_TRACE_TTL_DAYS=30
44
+
45
+ # ============================================================================
46
+ # Unified Tracing Usage (Code-based approach - RECOMMENDED)
47
+ # ============================================================================
48
+ #
49
+ # Instead of using FLOCK_AUTO_WORKFLOW_TRACE, use explicit traced_run():
50
+ #
51
+ # async with flock.traced_run("workflow_name"):
52
+ # await flock.publish(data)
53
+ # await flock.run_until_idle()
54
+ #
55
+ # Benefits:
56
+ # ✅ Single trace for entire workflow (all operations share trace_id)
57
+ # ✅ Proper parent-child span hierarchy
58
+ # ✅ Custom workflow names for better organization
59
+ # ✅ Add custom attributes: span.set_attribute("key", "value")
60
+ # ✅ Nested workflow support
61
+ #
62
+ # Clearing traces for fresh debug sessions:
63
+ # result = Flock.clear_traces() # Deletes all spans, runs VACUUM
64
+ #
65
+ # See docs/UNIFIED_TRACING.md for complete guide
66
+ # ============================================================================
67
+
68
+ OPENAI_API_KEY=xxx
@@ -6,7 +6,7 @@ name: Quality Gates
6
6
 
7
7
  on:
8
8
  push:
9
- branches:
9
+ branches:
10
10
  - main # Replace with your default branch
11
11
  - 0.5.0b
12
12
  pull_request:
@@ -76,18 +76,18 @@ jobs:
76
76
  with:
77
77
  node-version: '22'
78
78
  cache: 'npm'
79
- cache-dependency-path: frontend/package-lock.json
79
+ cache-dependency-path: src/flock/frontend/package-lock.json
80
80
 
81
81
  - name: Install dependencies
82
- working-directory: frontend
82
+ working-directory: src/flock/frontend
83
83
  run: npm ci
84
84
 
85
85
  - name: Type check
86
- working-directory: frontend
86
+ working-directory: src/flock/frontend
87
87
  run: npm run type-check
88
88
 
89
89
  - name: Run tests
90
- working-directory: frontend
90
+ working-directory: src/flock/frontend
91
91
  run: npm test
92
92
 
93
93
  # Coverage disabled until vitest.config.ts is properly configured
@@ -99,7 +99,7 @@ jobs:
99
99
  # name: frontend-coverage
100
100
 
101
101
  - name: Frontend build check
102
- working-directory: frontend
102
+ working-directory: src/flock/frontend
103
103
  run: npm run build
104
104
 
105
105
  # Security scanning
@@ -33,6 +33,7 @@ MANIFEST
33
33
  *.manifest
34
34
  *.spec
35
35
  static/
36
+ .flock/
36
37
  # Installer logs
37
38
  pip-log.txt
38
39
  pip-delete-this-directory.txt
@@ -1080,6 +1080,501 @@ def pytest_collection_modifyitems(config, items):
1080
1080
 
1081
1081
  ---
1082
1082
 
1083
+ ## 🔍 Observability & Debugging with OpenTelemetry + DuckDB
1084
+
1085
+ Flock includes **production-grade distributed tracing** that captures every operation with full input/output data—enabling both human and AI-assisted debugging.
1086
+
1087
+ ### Quick Start: Enable Tracing
1088
+
1089
+ ```bash
1090
+ # Enable auto-tracing (add to .env or export)
1091
+ FLOCK_AUTO_TRACE=true # Enable tracing for all operations
1092
+ FLOCK_TRACE_FILE=true # Store traces in DuckDB
1093
+
1094
+ # Run your application
1095
+ python examples/showcase/01_declarative_pizza.py
1096
+
1097
+ # Traces stored in: .flock/traces.duckdb
1098
+ ```
1099
+
1100
+ ### 🆕 Unified Tracing with traced_run()
1101
+
1102
+ **New in v0.5.0**: Wrap entire workflows in a single parent trace for better observability!
1103
+
1104
+ **The Problem**: By default, each top-level operation (`publish()`, `run_until_idle()`) creates separate root traces, making it difficult to see the complete workflow.
1105
+
1106
+ **The Solution**: Use `traced_run()` context manager to group all operations under one parent trace:
1107
+
1108
+ ```python
1109
+ # ❌ Before: Separate traces
1110
+ await flock.publish(pizza_idea) # ← Trace 1
1111
+ await flock.run_until_idle() # ← Trace 2
1112
+
1113
+ # ✅ After: Unified trace
1114
+ async with flock.traced_run("pizza_workflow"):
1115
+ await flock.publish(pizza_idea) # ← Part of "pizza_workflow"
1116
+ await flock.run_until_idle() # ← Part of "pizza_workflow"
1117
+ ```
1118
+
1119
+ **Result**: Single trace with proper hierarchy:
1120
+ ```
1121
+ pizza_workflow (5319ms) ← ROOT
1122
+ ├─ Flock.publish (3ms)
1123
+ │ └─ Agent.execute (5218ms)
1124
+ └─ Flock.run_until_idle (5268ms)
1125
+ ```
1126
+
1127
+ **Key Features**:
1128
+ - ✅ Single `trace_id` for entire workflow
1129
+ - ✅ Proper parent-child span hierarchy
1130
+ - ✅ Custom workflow names
1131
+ - ✅ Add custom attributes
1132
+ - ✅ Nested workflow support
1133
+ - ✅ 100% backward compatible (opt-in)
1134
+
1135
+ **Advanced Usage**:
1136
+ ```python
1137
+ # Custom attributes
1138
+ async with flock.traced_run("ml_pipeline") as span:
1139
+ span.set_attribute("pipeline.version", "2.0")
1140
+ span.set_attribute("dataset.size", 10000)
1141
+ await flock.publish(training_data)
1142
+ await flock.run_until_idle()
1143
+
1144
+ # Nested workflows
1145
+ async with flock.traced_run("outer_workflow"):
1146
+ await flock.publish(data)
1147
+ async with flock.traced_run("inner_task"):
1148
+ await flock.publish(sub_data)
1149
+ await flock.run_until_idle()
1150
+ await flock.run_until_idle()
1151
+ ```
1152
+
1153
+ 📖 **Full documentation**: [docs/UNIFIED_TRACING.md](docs/UNIFIED_TRACING.md)
1154
+
1155
+ ### 🗑️ Clearing Traces
1156
+
1157
+ Clear trace database for fresh debug sessions:
1158
+
1159
+ ```python
1160
+ # Clear all traces
1161
+ result = Flock.clear_traces()
1162
+ print(f"Deleted {result['deleted_count']} spans")
1163
+
1164
+ # Custom database path
1165
+ result = Flock.clear_traces(".flock/custom_traces.duckdb")
1166
+
1167
+ # Check success
1168
+ if result['success']:
1169
+ print("✅ Traces cleared!")
1170
+ else:
1171
+ print(f"❌ Error: {result['error']}")
1172
+ ```
1173
+
1174
+ **What it does**:
1175
+ - Deletes all spans from DuckDB
1176
+ - Runs VACUUM to reclaim disk space
1177
+ - Preserves table schema
1178
+ - Returns detailed operation result
1179
+
1180
+ **Use cases**:
1181
+ - Resetting debug sessions
1182
+ - Cleaning up test data
1183
+ - Reducing database file size
1184
+ - Starting fresh trace analysis
1185
+
1186
+ ### Filtering: Control What Gets Traced
1187
+
1188
+ **Important:** Use filtering to avoid tracing noisy operations (especially streaming tokens) which can cause performance issues.
1189
+
1190
+ ```bash
1191
+ # Recommended: Trace only core services
1192
+ FLOCK_TRACE_SERVICES=["flock", "agent", "dspyengine", "outpututilitycomponent"]
1193
+
1194
+ # Exclude specific operations
1195
+ FLOCK_TRACE_IGNORE=["DashboardEventCollector.set_websocket_manager"]
1196
+ ```
1197
+
1198
+ **How Filtering Works (Two-Stage Process):**
1199
+
1200
+ 1. **Stage 1 (Compile Time):** Metaclasses (`AutoTracedMeta`, `TracedModelMeta`) wrap all public methods
1201
+ - Applied to: `Agent`, `Flock`, `AgentComponent` and all subclasses
1202
+ - Methods NOT wrapped (plain functions, non-component classes) are never traced
1203
+
1204
+ 2. **Stage 2 (Runtime):** Filter check before span creation
1205
+ - **Whitelist** (`FLOCK_TRACE_SERVICES`): Only trace specified classes (case-insensitive)
1206
+ - **Blacklist** (`FLOCK_TRACE_IGNORE`): Never trace specific operations (exact match)
1207
+ - Filter check happens **before** span creation → near-zero overhead for filtered ops
1208
+
1209
+ **Example:** With `FLOCK_TRACE_SERVICES=["agent", "flock"]`:
1210
+ - ✅ `Agent.execute` - traced (in whitelist)
1211
+ - ✅ `Flock.publish` - traced (in whitelist)
1212
+ - ❌ `DSPyEngine.evaluate` - NOT traced (not in whitelist)
1213
+ - ❌ `OutputUtilityComponent.on_post_evaluate` - NOT traced (not in whitelist)
1214
+
1215
+ 📖 **Full filtering documentation:** [docs/AUTO_TRACING.md](docs/AUTO_TRACING.md)
1216
+
1217
+ ### Why DuckDB for Traces?
1218
+
1219
+ **DuckDB is 10-100x faster than SQLite for analytical queries:**
1220
+ - ✅ **Columnar storage** optimized for OLAP workloads
1221
+ - ✅ **Zero configuration** - single embedded file, no external services
1222
+ - ✅ **SQL interface** - AI agents can query traces directly
1223
+ - ✅ **Out-of-the-box** - no Docker, no complex setup
1224
+ - ✅ **Analytical queries** - aggregations, p95/p99, time-series analysis
1225
+
1226
+ **File-based storage (JSONL) vs DuckDB:**
1227
+ ```python
1228
+ # ❌ Old way (JSONL)
1229
+ with open('traces.jsonl') as f:
1230
+ for line in f:
1231
+ span = json.loads(line)
1232
+ if span['duration_ms'] > 1000: # Manual filtering
1233
+ slow_spans.append(span)
1234
+
1235
+ # ✅ New way (DuckDB)
1236
+ conn.execute("""
1237
+ SELECT name, AVG(duration_ms), COUNT(*)
1238
+ FROM spans
1239
+ WHERE duration_ms > 1000
1240
+ GROUP BY name
1241
+ """).fetchall()
1242
+ ```
1243
+
1244
+ ### Trace Viewer UI
1245
+
1246
+ The dashboard includes a **Jaeger-style trace viewer** at `http://localhost:8000`:
1247
+
1248
+ **Features:**
1249
+ - 🔍 **Timeline View**: Waterfall visualization with span hierarchies
1250
+ - 📊 **Statistics View**: Tabular view with durations, status codes
1251
+ - 📥 **Full I/O Capture**: Complete input/output data for every operation
1252
+ - 🎨 **JSON Viewer**: Collapsible, syntax-highlighted with expand/collapse all
1253
+ - 🎨 **Service Colors**: Visual distinction between services
1254
+ - 🔀 **Multi-Trace Support**: Compare multiple traces side-by-side
1255
+
1256
+ ### AI-Powered Debugging
1257
+
1258
+ **AI agents (including Claude Code) can analyze traces with SQL:**
1259
+
1260
+ ```python
1261
+ import duckdb
1262
+
1263
+ conn = duckdb.connect('.flock/traces.duckdb', read_only=True)
1264
+
1265
+ # Example 1: Find slow operations
1266
+ slow_ops = conn.execute("""
1267
+ SELECT name, AVG(duration_ms) as avg_ms, COUNT(*) as count
1268
+ FROM spans
1269
+ WHERE duration_ms > 1000
1270
+ GROUP BY name
1271
+ ORDER BY avg_ms DESC
1272
+ """).fetchall()
1273
+
1274
+ # Example 2: Find errors with their inputs
1275
+ errors = conn.execute("""
1276
+ SELECT
1277
+ name,
1278
+ status_description,
1279
+ json_extract(attributes, '$.input.message') as input_msg,
1280
+ json_extract(attributes, '$.input.artifacts') as input_artifacts
1281
+ FROM spans
1282
+ WHERE status_code = 'ERROR'
1283
+ ORDER BY start_time DESC
1284
+ """).fetchall()
1285
+
1286
+ # Example 3: Performance by service
1287
+ perf = conn.execute("""
1288
+ SELECT
1289
+ service,
1290
+ COUNT(*) as total_calls,
1291
+ AVG(duration_ms) as avg_ms,
1292
+ MAX(duration_ms) as max_ms,
1293
+ PERCENTILE_CONT(0.95) WITHIN GROUP (ORDER BY duration_ms) as p95_ms,
1294
+ PERCENTILE_CONT(0.99) WITHIN GROUP (ORDER BY duration_ms) as p99_ms
1295
+ FROM spans
1296
+ GROUP BY service
1297
+ ORDER BY avg_ms DESC
1298
+ """).fetchall()
1299
+
1300
+ # Example 4: Trace full execution path
1301
+ trace_path = conn.execute("""
1302
+ SELECT
1303
+ name,
1304
+ duration_ms,
1305
+ status_code,
1306
+ json_extract(attributes, '$.correlation_id') as correlation_id
1307
+ FROM spans
1308
+ WHERE trace_id = '<trace_id_here>'
1309
+ ORDER BY start_time ASC
1310
+ """).fetchall()
1311
+
1312
+ conn.close()
1313
+ ```
1314
+
1315
+ ### Common Debugging Scenarios
1316
+
1317
+ #### Scenario 1: "Agent is slow, why?"
1318
+
1319
+ ```python
1320
+ # Find which operations are bottlenecks
1321
+ import duckdb
1322
+ conn = duckdb.connect('.flock/traces.duckdb', read_only=True)
1323
+
1324
+ # Analyze average duration by operation
1325
+ result = conn.execute("""
1326
+ SELECT
1327
+ service,
1328
+ operation,
1329
+ COUNT(*) as calls,
1330
+ AVG(duration_ms) as avg_ms,
1331
+ MAX(duration_ms) as max_ms
1332
+ FROM spans
1333
+ WHERE service = 'DSPyEngine' -- Focus on LLM engine
1334
+ GROUP BY service, operation
1335
+ ORDER BY avg_ms DESC
1336
+ """).fetchall()
1337
+
1338
+ print("Slowest operations:")
1339
+ for row in result:
1340
+ print(f" {row[1]}: {row[3]:.1f}ms avg ({row[2]} calls)")
1341
+ ```
1342
+
1343
+ **AI-assisted analysis:**
1344
+ ```
1345
+ You: "My pizza agent is slow"
1346
+ AI Agent: [queries DuckDB]
1347
+ "Found bottleneck: DSPyEngine.evaluate takes 23s on average.
1348
+ Checking input data... You're passing 50KB conversation history.
1349
+ Recommendation: Limit context to last 5 messages using:
1350
+ agent.consumes(Message, where=lambda m: m.created_at > recent_time)"
1351
+ ```
1352
+
1353
+ #### Scenario 2: "Agent crashed, what input caused it?"
1354
+
1355
+ ```python
1356
+ # Find the error and its input
1357
+ conn.execute("""
1358
+ SELECT
1359
+ name,
1360
+ status_description,
1361
+ json_extract(attributes, '$.input.message') as input,
1362
+ json_extract(attributes, '$.input.artifacts') as artifacts
1363
+ FROM spans
1364
+ WHERE status_code = 'ERROR'
1365
+ AND name LIKE '%pizza_master%'
1366
+ ORDER BY start_time DESC
1367
+ LIMIT 1
1368
+ """).fetchone()
1369
+ ```
1370
+
1371
+ #### Scenario 3: "Performance regression after code change"
1372
+
1373
+ ```python
1374
+ # Compare before/after performance
1375
+ baseline_start = 1728000000000000000 # nanoseconds
1376
+ current_start = 1728086400000000000
1377
+
1378
+ baseline = conn.execute("""
1379
+ SELECT AVG(duration_ms) as avg_ms
1380
+ FROM spans
1381
+ WHERE start_time BETWEEN ? AND ?
1382
+ AND name = 'DSPyEngine.evaluate'
1383
+ """, [baseline_start, baseline_start + 3600000000000]).fetchone()
1384
+
1385
+ current = conn.execute("""
1386
+ SELECT AVG(duration_ms) as avg_ms
1387
+ FROM spans
1388
+ WHERE start_time BETWEEN ? AND ?
1389
+ AND name = 'DSPyEngine.evaluate'
1390
+ """, [current_start, current_start + 3600000000000]).fetchone()
1391
+
1392
+ print(f"Baseline: {baseline[0]:.1f}ms")
1393
+ print(f"Current: {current[0]:.1f}ms")
1394
+ print(f"Change: {((current[0] / baseline[0]) - 1) * 100:+.1f}%")
1395
+ ```
1396
+
1397
+ #### Scenario 4: "Which agents are called most frequently?"
1398
+
1399
+ ```python
1400
+ # Agent execution frequency
1401
+ conn.execute("""
1402
+ SELECT
1403
+ service,
1404
+ COUNT(*) as executions,
1405
+ AVG(duration_ms) as avg_duration,
1406
+ SUM(CASE WHEN status_code = 'ERROR' THEN 1 ELSE 0 END) as errors
1407
+ FROM spans
1408
+ WHERE name LIKE '%.execute' -- Agent execution spans
1409
+ GROUP BY service
1410
+ ORDER BY executions DESC
1411
+ """).fetchall()
1412
+ ```
1413
+
1414
+ ### DuckDB Schema Reference
1415
+
1416
+ **Spans Table:**
1417
+ ```sql
1418
+ CREATE TABLE spans (
1419
+ trace_id VARCHAR NOT NULL, -- Trace identifier
1420
+ span_id VARCHAR PRIMARY KEY, -- Unique span ID
1421
+ parent_id VARCHAR, -- Parent span ID (for hierarchy)
1422
+ name VARCHAR NOT NULL, -- Operation name (e.g., "Flock.publish")
1423
+ service VARCHAR, -- Service name (e.g., "Flock")
1424
+ operation VARCHAR, -- Operation name (e.g., "publish")
1425
+ kind VARCHAR, -- Span kind (INTERNAL, CLIENT, etc.)
1426
+ start_time BIGINT NOT NULL, -- Start timestamp (nanoseconds)
1427
+ end_time BIGINT NOT NULL, -- End timestamp (nanoseconds)
1428
+ duration_ms DOUBLE NOT NULL, -- Duration in milliseconds
1429
+ status_code VARCHAR NOT NULL, -- Status (OK, ERROR, UNSET)
1430
+ status_description VARCHAR, -- Error message if failed
1431
+ attributes JSON, -- All span attributes (input/output)
1432
+ events JSON, -- Span events
1433
+ links JSON, -- Span links
1434
+ resource JSON, -- Resource attributes
1435
+ created_at TIMESTAMP DEFAULT NOW() -- Database insert time
1436
+ );
1437
+
1438
+ -- Indexes for fast queries
1439
+ CREATE INDEX idx_trace_id ON spans(trace_id);
1440
+ CREATE INDEX idx_service ON spans(service);
1441
+ CREATE INDEX idx_start_time ON spans(start_time);
1442
+ CREATE INDEX idx_name ON spans(name);
1443
+ ```
1444
+
1445
+ **Attributes JSON Structure:**
1446
+ ```json
1447
+ {
1448
+ "function": "publish",
1449
+ "module": "flock.orchestrator",
1450
+ "class": "Flock",
1451
+ "input.obj": "{\"__class__\": \"MyDreamPizza\", \"pizza_idea\": \"...\"}"
1452
+ ,
1453
+ "input.correlation_id": "null",
1454
+ "output.value": "{\"__class__\": \"Artifact\", \"id\": \"...\", ...}",
1455
+ "output.type": "Artifact",
1456
+ "correlation_id": "d1da07d1-9f73-4ff9-ac86-ddea29c8cc06"
1457
+ }
1458
+ ```
1459
+
1460
+ ### Advanced Query Examples
1461
+
1462
+ **1. Find longest trace execution:**
1463
+ ```sql
1464
+ SELECT
1465
+ trace_id,
1466
+ COUNT(*) as span_count,
1467
+ MIN(start_time) as trace_start,
1468
+ MAX(end_time) as trace_end,
1469
+ (MAX(end_time) - MIN(start_time)) / 1000000.0 as total_duration_ms
1470
+ FROM spans
1471
+ GROUP BY trace_id
1472
+ ORDER BY total_duration_ms DESC
1473
+ LIMIT 10;
1474
+ ```
1475
+
1476
+ **2. Analyze input sizes (detect large payloads):**
1477
+ ```sql
1478
+ SELECT
1479
+ name,
1480
+ AVG(LENGTH(attributes->>'input.message')) as avg_input_size,
1481
+ MAX(LENGTH(attributes->>'input.message')) as max_input_size
1482
+ FROM spans
1483
+ WHERE attributes->>'input.message' IS NOT NULL
1484
+ GROUP BY name
1485
+ ORDER BY max_input_size DESC;
1486
+ ```
1487
+
1488
+ **3. Error patterns by time of day:**
1489
+ ```sql
1490
+ SELECT
1491
+ strftime(TIMESTAMP 'epoch' + (start_time / 1000000000) * INTERVAL '1 second', '%H') as hour,
1492
+ COUNT(*) as total_spans,
1493
+ SUM(CASE WHEN status_code = 'ERROR' THEN 1 ELSE 0 END) as errors,
1494
+ (errors * 100.0 / total_spans) as error_rate
1495
+ FROM spans
1496
+ GROUP BY hour
1497
+ ORDER BY hour;
1498
+ ```
1499
+
1500
+ **4. Agent dependency graph (what consumes what):**
1501
+ ```sql
1502
+ WITH agent_outputs AS (
1503
+ SELECT DISTINCT
1504
+ service as producer,
1505
+ json_extract(attributes, '$.output.type') as artifact_type
1506
+ FROM spans
1507
+ WHERE attributes->>'output.type' IS NOT NULL
1508
+ ),
1509
+ agent_inputs AS (
1510
+ SELECT DISTINCT
1511
+ service as consumer,
1512
+ json_extract(attributes, '$.input.artifacts[0].type') as artifact_type
1513
+ FROM spans
1514
+ WHERE attributes->>'input.artifacts' IS NOT NULL
1515
+ )
1516
+ SELECT
1517
+ ao.producer,
1518
+ ao.artifact_type,
1519
+ ai.consumer
1520
+ FROM agent_outputs ao
1521
+ JOIN agent_inputs ai ON ao.artifact_type = ai.artifact_type
1522
+ ORDER BY ao.producer, ai.consumer;
1523
+ ```
1524
+
1525
+ ### Integration with External Tools
1526
+
1527
+ **Export to Parquet for BigQuery/Snowflake:**
1528
+ ```python
1529
+ import duckdb
1530
+
1531
+ conn = duckdb.connect('.flock/traces.duckdb')
1532
+ conn.execute("""
1533
+ COPY (SELECT * FROM spans)
1534
+ TO 'traces.parquet' (FORMAT PARQUET)
1535
+ """)
1536
+ ```
1537
+
1538
+ **Send to Grafana Tempo/Jaeger:**
1539
+ ```bash
1540
+ # Use OTLP exporter instead of DuckDB
1541
+ export OTEL_EXPORTER_OTLP_ENDPOINT="http://tempo:4317"
1542
+ export FLOCK_AUTO_TRACE=true
1543
+ # Don't set FLOCK_TRACE_FILE=true
1544
+ ```
1545
+
1546
+ ### Performance Tips
1547
+
1548
+ 1. **Limit trace retention:**
1549
+ ```sql
1550
+ DELETE FROM spans WHERE start_time < (EXTRACT(EPOCH FROM NOW()) * 1000000000) - 604800000000000; -- Keep 7 days
1551
+ ```
1552
+
1553
+ 2. **Vacuum database periodically:**
1554
+ ```python
1555
+ conn.execute("VACUUM")
1556
+ ```
1557
+
1558
+ 3. **Use read-only connections for queries:**
1559
+ ```python
1560
+ conn = duckdb.connect('.flock/traces.duckdb', read_only=True)
1561
+ ```
1562
+
1563
+ ### Debugging Checklist
1564
+
1565
+ When debugging a Flock application:
1566
+
1567
+ - [ ] **Enable tracing:** `FLOCK_AUTO_TRACE=true FLOCK_TRACE_FILE=true`
1568
+ - [ ] **Reproduce the issue** to capture trace data
1569
+ - [ ] **Open trace viewer:** Visit `http://localhost:8000` → Trace Viewer tab
1570
+ - [ ] **Check Timeline View:** Look for unusually long spans
1571
+ - [ ] **Check Statistics View:** Sort by duration to find bottlenecks
1572
+ - [ ] **Examine I/O data:** Expand JSON attributes to see full inputs/outputs
1573
+ - [ ] **Query DuckDB:** Use SQL for deeper analysis
1574
+ - [ ] **Ask AI agent:** Provide trace_id and description, let AI query and diagnose
1575
+
1576
+ ---
1577
+
1083
1578
  ## ❓ FAQ for AI Agents
1084
1579
 
1085
1580
  ### Q: Where should I save new files?
@@ -1121,6 +1616,20 @@ cd frontend && npm test -- test_name
1121
1616
  await orchestrator.serve(dashboard=True)
1122
1617
  ```
1123
1618
 
1619
+ ### Q: How do I use unified tracing?
1620
+
1621
+ ```python
1622
+ # Wrap workflows in a single trace
1623
+ async with flock.traced_run("workflow_name"):
1624
+ await flock.publish(data)
1625
+ await flock.run_until_idle()
1626
+
1627
+ # Clear traces for fresh debug session
1628
+ result = Flock.clear_traces()
1629
+ ```
1630
+
1631
+ See [docs/UNIFIED_TRACING.md](docs/UNIFIED_TRACING.md) for complete guide.
1632
+
1124
1633
  ### Q: Where should I add new tests?
1125
1634
 
1126
1635
  Add to existing test file if relevant, or create new file following naming convention `test_<module>.py` for backend, `<name>.test.tsx` for frontend.
@@ -1186,6 +1695,17 @@ agent = (
1186
1695
  await orchestrator.arun(agent, input_data)
1187
1696
  ```
1188
1697
 
1698
+ **Unified tracing:**
1699
+ ```python
1700
+ # Wrap workflow in single trace
1701
+ async with flock.traced_run("workflow_name"):
1702
+ await flock.publish(data)
1703
+ await flock.run_until_idle()
1704
+
1705
+ # Clear traces
1706
+ Flock.clear_traces()
1707
+ ```
1708
+
1189
1709
  **Start dashboard:**
1190
1710
  ```python
1191
1711
  await orchestrator.serve(dashboard=True)
@@ -1201,6 +1721,7 @@ await orchestrator.serve(dashboard=True)
1201
1721
  - **Versioning Guide:** [`docs/VERSIONING.md`](docs/VERSIONING.md) - Smart version bumping
1202
1722
  - **Pre-commit Hooks:** [`docs/PRE_COMMIT_HOOKS.md`](docs/PRE_COMMIT_HOOKS.md) - Quality automation
1203
1723
  - **Architecture:** [`docs/patterns/core-architecture.md`](docs/patterns/core-architecture.md)
1724
+ - **Unified Tracing:** [`docs/UNIFIED_TRACING.md`](docs/UNIFIED_TRACING.md) - Workflow tracing & trace management
1204
1725
  - **Examples:** [`examples/`](examples/) - Working code examples
1205
1726
  - **Analysis Documents:** [`docs/patterns/`](docs/patterns/)
1206
1727
 
@@ -1210,5 +1731,5 @@ await orchestrator.serve(dashboard=True)
1210
1731
 
1211
1732
  ---
1212
1733
 
1213
- *Last updated: October 5, 2025*
1734
+ *Last updated: October 7, 2025*
1214
1735
  *This file follows the modern AGENTS.md format for AI coding agents.*