flock-core 0.5.0b65__tar.gz → 0.5.0b71__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 (954) hide show
  1. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/.gitignore +1 -0
  2. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/AGENTS.md +29 -0
  3. flock_core-0.5.0b65/README.md → flock_core-0.5.0b71/PKG-INFO +56 -0
  4. flock_core-0.5.0b65/PKG-INFO → flock_core-0.5.0b71/README.md +24 -31
  5. flock_core-0.5.0b71/docs/guides/persistent-blackboard.md +92 -0
  6. flock_core-0.5.0b71/docs/internal/sqlite-blackboard-store/README.md +24 -0
  7. flock_core-0.5.0b71/docs/internal/sqlite-blackboard-store/dashboard-playwright-mcp.md +44 -0
  8. flock_core-0.5.0b71/docs/internal/sqlite-blackboard-store/domain.md +23 -0
  9. flock_core-0.5.0b71/docs/internal/sqlite-blackboard-store/interfaces.md +25 -0
  10. flock_core-0.5.0b71/docs/internal/sqlite-blackboard-store/patterns.md +44 -0
  11. flock_core-0.5.0b71/docs/specs/001-sqlite-blackboard-store/PLAN.md +169 -0
  12. flock_core-0.5.0b71/docs/specs/001-sqlite-blackboard-store/PRD.md +146 -0
  13. flock_core-0.5.0b71/examples/00-clean/01-the-declarative-way/01_declarative_pizza.py +38 -0
  14. flock_core-0.5.0b71/examples/00-clean/01-the-declarative-way/02_input_and_output.py +96 -0
  15. flock_core-0.5.0b71/examples/00-clean/01-the-declarative-way/03_mcp_and_tools.py +106 -0
  16. flock_core-0.5.0b71/examples/00-clean/02-the-blackboard/01_persistent_pizza.py +68 -0
  17. flock_core-0.5.0b71/examples/00-clean/03-the-dashboard/01_declarative_pizza.py +32 -0
  18. flock_core-0.5.0b71/examples/00-clean/03-the-dashboard/02-dashboard-edge-cases.py +57 -0
  19. flock_core-0.5.0b71/examples/00-clean/03-the-dashboard/03-scale-test-100-agents.py +75 -0
  20. flock_core-0.5.0b71/examples/00-clean/03-the-dashboard/04_persistent_pizza_dashboard.py +62 -0
  21. flock_core-0.5.0b71/examples/00-clean/05-claudes-workshop/lesson_01_code_detective.py +67 -0
  22. flock_core-0.5.0b71/examples/00-clean/05-claudes-workshop/lesson_02_band_formation.py +93 -0
  23. flock_core-0.5.0b71/examples/00-clean/05-claudes-workshop/lesson_03_web_detective.py +102 -0
  24. flock_core-0.5.0b71/examples/00-clean/05-claudes-workshop/lesson_04_debate_club.py +98 -0
  25. flock_core-0.5.0b71/examples/00-clean/05-claudes-workshop/lesson_05_tracing_detective.py +100 -0
  26. flock_core-0.5.0b71/examples/00-clean/05-claudes-workshop/lesson_06_secret_agents.py +111 -0
  27. flock_core-0.5.0b71/examples/00-clean/05-claudes-workshop/lesson_07_news_agency.py +134 -0
  28. flock_core-0.5.0b71/examples/00-clean/06-readme/01-BugDiagnosis.py +55 -0
  29. flock_core-0.5.0b71/examples/00-clean/README.md +44 -0
  30. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/examples/01-the-declarative-way/01_declarative_pizza.py +0 -1
  31. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/examples/01-the-declarative-way/04_mcp_roots.py +1 -1
  32. flock_core-0.5.0b71/examples/02-the-blackboard/01_persistent_pizza.py +114 -0
  33. flock_core-0.5.0b71/examples/03-the-dashboard/04_persistent_pizza_dashboard.py +106 -0
  34. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/pyproject.toml +2 -1
  35. flock_core-0.5.0b71/src/flock/cli.py +147 -0
  36. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/engines/dspy_engine.py +41 -5
  37. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/examples.py +4 -1
  38. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/README.md +15 -1
  39. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/package-lock.json +2 -2
  40. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/package.json +1 -1
  41. flock_core-0.5.0b71/src/flock/frontend/src/App.tsx +147 -0
  42. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/__tests__/e2e/critical-scenarios.test.tsx +4 -5
  43. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/__tests__/integration/filtering-e2e.test.tsx +7 -3
  44. flock_core-0.5.0b71/src/flock/frontend/src/components/filters/ArtifactTypeFilter.tsx +21 -0
  45. flock_core-0.5.0b71/src/flock/frontend/src/components/filters/FilterFlyout.module.css +104 -0
  46. flock_core-0.5.0b71/src/flock/frontend/src/components/filters/FilterFlyout.tsx +80 -0
  47. flock_core-0.5.0b71/src/flock/frontend/src/components/filters/FilterPills.module.css +220 -0
  48. flock_core-0.5.0b71/src/flock/frontend/src/components/filters/FilterPills.test.tsx +189 -0
  49. flock_core-0.5.0b71/src/flock/frontend/src/components/filters/FilterPills.tsx +143 -0
  50. flock_core-0.5.0b71/src/flock/frontend/src/components/filters/ProducerFilter.tsx +21 -0
  51. flock_core-0.5.0b71/src/flock/frontend/src/components/filters/SavedFiltersControl.module.css +60 -0
  52. flock_core-0.5.0b71/src/flock/frontend/src/components/filters/SavedFiltersControl.test.tsx +158 -0
  53. flock_core-0.5.0b71/src/flock/frontend/src/components/filters/SavedFiltersControl.tsx +159 -0
  54. flock_core-0.5.0b71/src/flock/frontend/src/components/filters/TagFilter.tsx +21 -0
  55. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/components/filters/TimeRangeFilter.module.css +24 -0
  56. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/components/filters/TimeRangeFilter.tsx +6 -1
  57. flock_core-0.5.0b71/src/flock/frontend/src/components/filters/VisibilityFilter.tsx +21 -0
  58. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/components/graph/GraphCanvas.tsx +24 -0
  59. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/components/layout/DashboardLayout.css +13 -0
  60. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/components/layout/DashboardLayout.tsx +8 -24
  61. flock_core-0.5.0b71/src/flock/frontend/src/components/modules/HistoricalArtifactsModule.module.css +288 -0
  62. flock_core-0.5.0b71/src/flock/frontend/src/components/modules/HistoricalArtifactsModule.tsx +460 -0
  63. flock_core-0.5.0b71/src/flock/frontend/src/components/modules/HistoricalArtifactsModuleWrapper.tsx +13 -0
  64. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/components/modules/ModuleRegistry.ts +7 -1
  65. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/components/modules/registerModules.ts +9 -10
  66. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/hooks/useModules.ts +11 -1
  67. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/services/api.ts +140 -0
  68. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/services/indexeddb.ts +56 -2
  69. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/services/websocket.ts +129 -0
  70. flock_core-0.5.0b71/src/flock/frontend/src/store/filterStore.test.ts +162 -0
  71. flock_core-0.5.0b71/src/flock/frontend/src/store/filterStore.ts +250 -0
  72. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/store/graphStore.test.ts +19 -0
  73. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/store/graphStore.ts +166 -27
  74. flock_core-0.5.0b71/src/flock/frontend/src/types/filters.ts +47 -0
  75. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/types/graph.ts +7 -0
  76. flock_core-0.5.0b71/src/flock/frontend/src/utils/artifacts.ts +24 -0
  77. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/orchestrator.py +23 -1
  78. flock_core-0.5.0b71/src/flock/service.py +277 -0
  79. flock_core-0.5.0b71/src/flock/store.py +1049 -0
  80. flock_core-0.5.0b71/tests/contract/test_artifact_storage_contract.py +139 -0
  81. flock_core-0.5.0b71/tests/integration/test_sqlite_store_integration.py +37 -0
  82. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/tests/test_cli.py +45 -2
  83. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/tests/test_service_extended.py +152 -0
  84. flock_core-0.5.0b71/tests/test_store.py +388 -0
  85. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/uv.lock +15 -1
  86. flock_core-0.5.0b65/src/flock/cli.py +0 -75
  87. flock_core-0.5.0b65/src/flock/frontend/src/App.tsx +0 -79
  88. flock_core-0.5.0b65/src/flock/frontend/src/components/filters/FilterBar.module.css +0 -29
  89. flock_core-0.5.0b65/src/flock/frontend/src/components/filters/FilterBar.test.tsx +0 -133
  90. flock_core-0.5.0b65/src/flock/frontend/src/components/filters/FilterBar.tsx +0 -33
  91. flock_core-0.5.0b65/src/flock/frontend/src/components/filters/FilterPills.module.css +0 -79
  92. flock_core-0.5.0b65/src/flock/frontend/src/components/filters/FilterPills.test.tsx +0 -173
  93. flock_core-0.5.0b65/src/flock/frontend/src/components/filters/FilterPills.tsx +0 -67
  94. flock_core-0.5.0b65/src/flock/frontend/src/components/modules/EventLogModule.test.tsx +0 -401
  95. flock_core-0.5.0b65/src/flock/frontend/src/components/modules/EventLogModule.tsx +0 -396
  96. flock_core-0.5.0b65/src/flock/frontend/src/components/modules/EventLogModuleWrapper.tsx +0 -17
  97. flock_core-0.5.0b65/src/flock/frontend/src/store/filterStore.test.ts +0 -242
  98. flock_core-0.5.0b65/src/flock/frontend/src/store/filterStore.ts +0 -103
  99. flock_core-0.5.0b65/src/flock/frontend/src/types/filters.ts +0 -14
  100. flock_core-0.5.0b65/src/flock/service.py +0 -140
  101. flock_core-0.5.0b65/src/flock/store.py +0 -102
  102. flock_core-0.5.0b65/tests/contract/test_artifact_storage_contract.py +0 -130
  103. flock_core-0.5.0b65/tests/test_store.py +0 -212
  104. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/.devcontainer/devcontainer.json +0 -0
  105. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/.envtemplate +0 -0
  106. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/.github/workflows/deploy-whiteduck-pypi.yml +0 -0
  107. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/.github/workflows/quality.yml +0 -0
  108. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/.pre-commit-config.yaml +0 -0
  109. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/.python-version +0 -0
  110. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/.vscode/settings.json +0 -0
  111. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/AGENTS.md.backup +0 -0
  112. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/CONTRIBUTING.md +0 -0
  113. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/LICENSE +0 -0
  114. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/ROADMAP.md +0 -0
  115. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/USECASES.md +0 -0
  116. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/about/changelog.md +0 -0
  117. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/about/contributing.md +0 -0
  118. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/about/roadmap.md +0 -0
  119. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/assets/images/bug_diagnosis.png +0 -0
  120. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/assets/images/flock_ui_1.png +0 -0
  121. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/assets/images/flock_ui_agent_view.png +0 -0
  122. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/assets/images/flock_ui_blackboard_view.png +0 -0
  123. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/assets/images/pizza.png +0 -0
  124. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/assets/images/trace_1.png +0 -0
  125. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/assets/images/trace_2.png +0 -0
  126. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/assets/images/trace_3.png +0 -0
  127. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/bugfixes/websocket-streaming-deadlock-fix.md +0 -0
  128. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/community/index.md +0 -0
  129. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/examples/index.md +0 -0
  130. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/getting-started/concepts.md +0 -0
  131. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/getting-started/index.md +0 -0
  132. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/getting-started/installation.md +0 -0
  133. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/getting-started/quick-start.md +0 -0
  134. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/guides/agents.md +0 -0
  135. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/guides/blackboard.md +0 -0
  136. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/guides/components.md +0 -0
  137. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/guides/dashboard.md +0 -0
  138. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/guides/index.md +0 -0
  139. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/guides/mcp-roots.md +0 -0
  140. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/guides/patterns.md +0 -0
  141. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/guides/testing.md +0 -0
  142. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/guides/tracing/auto-tracing.md +0 -0
  143. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/guides/tracing/how_to_use_tracing_effectively.md +0 -0
  144. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/guides/tracing/index.md +0 -0
  145. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/guides/tracing/trace-module.md +0 -0
  146. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/guides/tracing/tracing-production.md +0 -0
  147. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/guides/tracing/tracing-quickstart.md +0 -0
  148. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/guides/tracing/unified-tracing.md +0 -0
  149. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/guides/use-cases.md +0 -0
  150. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/guides/visibility.md +0 -0
  151. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/IMPLEMENTATION_SUMMARY.md +0 -0
  152. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/PRE_COMMIT_HOOKS.md +0 -0
  153. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/README.md +0 -0
  154. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/UNIFIED_TRACING_DELIVERY.md +0 -0
  155. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/VERSIONING.md +0 -0
  156. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/ai-agents/architecture.md +0 -0
  157. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/ai-agents/common-tasks.md +0 -0
  158. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/ai-agents/dependencies.md +0 -0
  159. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/ai-agents/development.md +0 -0
  160. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/ai-agents/frontend.md +0 -0
  161. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/design_and_goals/landscape_analysis.md +0 -0
  162. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/design_and_goals/motivation.md +0 -0
  163. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/design_and_goals/review.md +0 -0
  164. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/design_and_goals/technical_design.md +0 -0
  165. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/documentation-analysis/ANALYSIS_SUMMARY.md +0 -0
  166. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/documentation-analysis/AUDIT_QUICKREF.md +0 -0
  167. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/documentation-analysis/BROKEN_LINKS_REPORT.md +0 -0
  168. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/documentation-analysis/DOCUMENTATION_ANALYSIS.md +0 -0
  169. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/documentation-analysis/DOCUMENTATION_TRANSFORMATION_CHECKLIST.md +0 -0
  170. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/documentation-analysis/DOCUMENTATION_TRANSFORMATION_ROADMAP.md +0 -0
  171. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/documentation-analysis/MKDOCS_BEST_PRACTICES_RESEARCH.md +0 -0
  172. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/documentation-analysis/MKDOCS_QUICK_REFERENCE.md +0 -0
  173. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/documentation-analysis/PHASE_1_COMPLETION_SUMMARY.md +0 -0
  174. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/documentation-analysis/PHASE_1_FINAL_REPORT.md +0 -0
  175. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/documentation-analysis/PHASE_2_COMPLETION_SUMMARY.md +0 -0
  176. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/documentation-analysis/PHASE_3_COMPLETION_SUMMARY.md +0 -0
  177. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/documentation-analysis/README.md +0 -0
  178. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/documentation-analysis/examples-analysis.md +0 -0
  179. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/documentation-analysis/examples-quick-reference.md +0 -0
  180. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/documentation-analysis/examples-structure-diagram.md +0 -0
  181. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/domain/test-improvement-roadmap.md +0 -0
  182. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/implementation-summary-server-specific-mounts.md +0 -0
  183. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/index.md +0 -0
  184. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/mcp-server-config-typeddict.md +0 -0
  185. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/patterns/auto-layout-auto-zoom-removal.md +0 -0
  186. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/patterns/core-architecture.md +0 -0
  187. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/patterns/development-workflow.md +0 -0
  188. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/patterns/project-configuration.md +0 -0
  189. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/patterns/repository-structure.md +0 -0
  190. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/INDEX.md +0 -0
  191. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/RANKED_RESEARCH_AGENDA.md +0 -0
  192. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/README.md +0 -0
  193. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/benchmarks/BENCHMARK_DELIVERABLES.md +0 -0
  194. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/benchmarks/BENCHMARK_EXECUTIVE_SUMMARY.md +0 -0
  195. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/benchmarks/BENCHMARK_RESEARCH.md +0 -0
  196. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/benchmarks/BENCHMARK_VISUAL_SUMMARY.md +0 -0
  197. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/benchmarks/QUICK_START_BENCHMARKS.md +0 -0
  198. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/benchmarks/README.md +0 -0
  199. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/01_contract_first_reliability.md +0 -0
  200. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/02_event_parallelism_batching.md +0 -0
  201. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/03_mcp_native_eval.md +0 -0
  202. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/04_formal_liveness_safety.md +0 -0
  203. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/05_stigmergic_patterns.md +0 -0
  204. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/06_observability_driven_scheduling.md +0 -0
  205. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/07_visibility_multitenant_infoflow.md +0 -0
  206. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/08_structured_generation_adversarial_schemas.md +0 -0
  207. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/09_web_agent_orchestration_bench.md +0 -0
  208. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/09x_alternatives_refs.md +0 -0
  209. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/10_distributed_blackboard_kafka.md +0 -0
  210. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/11_cost_optimal_bestof_cascade.md +0 -0
  211. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/12_human_in_the_loop_guardrails.md +0 -0
  212. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/13_trace_dataset_compression.md +0 -0
  213. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/14_mcp_latency_caching.md +0 -0
  214. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/15_market_bidding_blackboard.md +0 -0
  215. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/README.md +0 -0
  216. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/01_contract_first_reliability/README.md +0 -0
  217. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/01_contract_first_reliability/analysis/queries.sql +0 -0
  218. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/01_contract_first_reliability/configs/experiment.json +0 -0
  219. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/01_contract_first_reliability/data/README.md +0 -0
  220. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/01_contract_first_reliability/figures/README.md +0 -0
  221. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/01_contract_first_reliability/notebooks/README.md +0 -0
  222. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/01_contract_first_reliability/results/README.md +0 -0
  223. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/01_contract_first_reliability/scripts/analyze.py +0 -0
  224. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/01_contract_first_reliability/scripts/run.py +0 -0
  225. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/01_contract_first_reliability/scripts/run_local.sh +0 -0
  226. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/02_event_parallelism_batching/README.md +0 -0
  227. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/02_event_parallelism_batching/analysis/queries.sql +0 -0
  228. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/02_event_parallelism_batching/configs/experiment.json +0 -0
  229. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/02_event_parallelism_batching/data/README.md +0 -0
  230. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/02_event_parallelism_batching/figures/README.md +0 -0
  231. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/02_event_parallelism_batching/notebooks/README.md +0 -0
  232. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/02_event_parallelism_batching/results/README.md +0 -0
  233. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/02_event_parallelism_batching/scripts/analyze.py +0 -0
  234. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/02_event_parallelism_batching/scripts/run.py +0 -0
  235. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/02_event_parallelism_batching/scripts/run_local.sh +0 -0
  236. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/03_mcp_native_eval/README.md +0 -0
  237. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/03_mcp_native_eval/analysis/queries.sql +0 -0
  238. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/03_mcp_native_eval/configs/experiment.json +0 -0
  239. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/03_mcp_native_eval/data/README.md +0 -0
  240. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/03_mcp_native_eval/figures/README.md +0 -0
  241. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/03_mcp_native_eval/notebooks/README.md +0 -0
  242. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/03_mcp_native_eval/results/README.md +0 -0
  243. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/03_mcp_native_eval/scripts/analyze.py +0 -0
  244. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/03_mcp_native_eval/scripts/run.py +0 -0
  245. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/03_mcp_native_eval/scripts/run_local.sh +0 -0
  246. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/04_formal_liveness_safety/README.md +0 -0
  247. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/04_formal_liveness_safety/analysis/queries.sql +0 -0
  248. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/04_formal_liveness_safety/configs/experiment.json +0 -0
  249. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/04_formal_liveness_safety/data/README.md +0 -0
  250. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/04_formal_liveness_safety/figures/README.md +0 -0
  251. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/04_formal_liveness_safety/notebooks/README.md +0 -0
  252. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/04_formal_liveness_safety/results/README.md +0 -0
  253. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/04_formal_liveness_safety/scripts/analyze.py +0 -0
  254. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/04_formal_liveness_safety/scripts/run.py +0 -0
  255. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/04_formal_liveness_safety/scripts/run_local.sh +0 -0
  256. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/05_stigmergic_patterns/README.md +0 -0
  257. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/05_stigmergic_patterns/analysis/queries.sql +0 -0
  258. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/05_stigmergic_patterns/configs/experiment.json +0 -0
  259. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/05_stigmergic_patterns/data/README.md +0 -0
  260. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/05_stigmergic_patterns/figures/README.md +0 -0
  261. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/05_stigmergic_patterns/notebooks/README.md +0 -0
  262. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/05_stigmergic_patterns/results/README.md +0 -0
  263. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/05_stigmergic_patterns/scripts/analyze.py +0 -0
  264. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/05_stigmergic_patterns/scripts/run.py +0 -0
  265. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/05_stigmergic_patterns/scripts/run_local.sh +0 -0
  266. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/06_observability_driven_scheduling/README.md +0 -0
  267. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/06_observability_driven_scheduling/analysis/queries.sql +0 -0
  268. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/06_observability_driven_scheduling/configs/experiment.json +0 -0
  269. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/06_observability_driven_scheduling/data/README.md +0 -0
  270. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/06_observability_driven_scheduling/figures/README.md +0 -0
  271. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/06_observability_driven_scheduling/notebooks/README.md +0 -0
  272. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/06_observability_driven_scheduling/results/README.md +0 -0
  273. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/06_observability_driven_scheduling/scripts/analyze.py +0 -0
  274. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/06_observability_driven_scheduling/scripts/run.py +0 -0
  275. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/06_observability_driven_scheduling/scripts/run_local.sh +0 -0
  276. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/07_visibility_multitenant_infoflow/README.md +0 -0
  277. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/07_visibility_multitenant_infoflow/analysis/queries.sql +0 -0
  278. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/07_visibility_multitenant_infoflow/configs/experiment.json +0 -0
  279. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/07_visibility_multitenant_infoflow/data/README.md +0 -0
  280. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/07_visibility_multitenant_infoflow/figures/README.md +0 -0
  281. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/07_visibility_multitenant_infoflow/notebooks/README.md +0 -0
  282. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/07_visibility_multitenant_infoflow/results/README.md +0 -0
  283. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/07_visibility_multitenant_infoflow/scripts/analyze.py +0 -0
  284. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/07_visibility_multitenant_infoflow/scripts/run.py +0 -0
  285. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/07_visibility_multitenant_infoflow/scripts/run_local.sh +0 -0
  286. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/08_structured_generation_adversarial_schemas/README.md +0 -0
  287. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/08_structured_generation_adversarial_schemas/analysis/queries.sql +0 -0
  288. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/08_structured_generation_adversarial_schemas/configs/experiment.json +0 -0
  289. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/08_structured_generation_adversarial_schemas/data/README.md +0 -0
  290. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/08_structured_generation_adversarial_schemas/figures/README.md +0 -0
  291. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/08_structured_generation_adversarial_schemas/notebooks/README.md +0 -0
  292. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/08_structured_generation_adversarial_schemas/results/README.md +0 -0
  293. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/08_structured_generation_adversarial_schemas/scripts/analyze.py +0 -0
  294. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/08_structured_generation_adversarial_schemas/scripts/run.py +0 -0
  295. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/08_structured_generation_adversarial_schemas/scripts/run_local.sh +0 -0
  296. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/09_web_agent_orchestration_bench/README.md +0 -0
  297. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/09_web_agent_orchestration_bench/analysis/queries.sql +0 -0
  298. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/09_web_agent_orchestration_bench/configs/experiment.json +0 -0
  299. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/09_web_agent_orchestration_bench/data/README.md +0 -0
  300. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/09_web_agent_orchestration_bench/figures/README.md +0 -0
  301. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/09_web_agent_orchestration_bench/notebooks/README.md +0 -0
  302. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/09_web_agent_orchestration_bench/results/README.md +0 -0
  303. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/09_web_agent_orchestration_bench/scripts/analyze.py +0 -0
  304. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/09_web_agent_orchestration_bench/scripts/run.py +0 -0
  305. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/09_web_agent_orchestration_bench/scripts/run_local.sh +0 -0
  306. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/10_distributed_blackboard_kafka/README.md +0 -0
  307. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/10_distributed_blackboard_kafka/analysis/queries.sql +0 -0
  308. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/10_distributed_blackboard_kafka/configs/experiment.json +0 -0
  309. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/10_distributed_blackboard_kafka/data/README.md +0 -0
  310. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/10_distributed_blackboard_kafka/figures/README.md +0 -0
  311. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/10_distributed_blackboard_kafka/notebooks/README.md +0 -0
  312. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/10_distributed_blackboard_kafka/results/README.md +0 -0
  313. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/10_distributed_blackboard_kafka/scripts/analyze.py +0 -0
  314. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/10_distributed_blackboard_kafka/scripts/run.py +0 -0
  315. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/10_distributed_blackboard_kafka/scripts/run_local.sh +0 -0
  316. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/11_cost_optimal_bestof_cascade/README.md +0 -0
  317. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/11_cost_optimal_bestof_cascade/analysis/queries.sql +0 -0
  318. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/11_cost_optimal_bestof_cascade/configs/experiment.json +0 -0
  319. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/11_cost_optimal_bestof_cascade/data/README.md +0 -0
  320. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/11_cost_optimal_bestof_cascade/figures/README.md +0 -0
  321. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/11_cost_optimal_bestof_cascade/notebooks/README.md +0 -0
  322. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/11_cost_optimal_bestof_cascade/results/README.md +0 -0
  323. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/11_cost_optimal_bestof_cascade/scripts/analyze.py +0 -0
  324. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/11_cost_optimal_bestof_cascade/scripts/run.py +0 -0
  325. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/11_cost_optimal_bestof_cascade/scripts/run_local.sh +0 -0
  326. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/12_human_in_the_loop_guardrails/README.md +0 -0
  327. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/12_human_in_the_loop_guardrails/analysis/queries.sql +0 -0
  328. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/12_human_in_the_loop_guardrails/configs/experiment.json +0 -0
  329. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/12_human_in_the_loop_guardrails/data/README.md +0 -0
  330. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/12_human_in_the_loop_guardrails/figures/README.md +0 -0
  331. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/12_human_in_the_loop_guardrails/notebooks/README.md +0 -0
  332. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/12_human_in_the_loop_guardrails/results/README.md +0 -0
  333. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/12_human_in_the_loop_guardrails/scripts/analyze.py +0 -0
  334. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/12_human_in_the_loop_guardrails/scripts/run.py +0 -0
  335. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/12_human_in_the_loop_guardrails/scripts/run_local.sh +0 -0
  336. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/13_trace_dataset_compression/README.md +0 -0
  337. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/13_trace_dataset_compression/analysis/queries.sql +0 -0
  338. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/13_trace_dataset_compression/configs/experiment.json +0 -0
  339. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/13_trace_dataset_compression/data/README.md +0 -0
  340. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/13_trace_dataset_compression/figures/README.md +0 -0
  341. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/13_trace_dataset_compression/notebooks/README.md +0 -0
  342. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/13_trace_dataset_compression/results/README.md +0 -0
  343. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/13_trace_dataset_compression/scripts/analyze.py +0 -0
  344. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/13_trace_dataset_compression/scripts/run.py +0 -0
  345. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/13_trace_dataset_compression/scripts/run_local.sh +0 -0
  346. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/14_mcp_latency_caching/README.md +0 -0
  347. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/14_mcp_latency_caching/analysis/queries.sql +0 -0
  348. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/14_mcp_latency_caching/configs/experiment.json +0 -0
  349. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/14_mcp_latency_caching/data/README.md +0 -0
  350. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/14_mcp_latency_caching/figures/README.md +0 -0
  351. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/14_mcp_latency_caching/notebooks/README.md +0 -0
  352. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/14_mcp_latency_caching/results/README.md +0 -0
  353. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/14_mcp_latency_caching/scripts/analyze.py +0 -0
  354. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/14_mcp_latency_caching/scripts/run.py +0 -0
  355. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/14_mcp_latency_caching/scripts/run_local.sh +0 -0
  356. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/15_market_bidding_blackboard/README.md +0 -0
  357. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/15_market_bidding_blackboard/analysis/queries.sql +0 -0
  358. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/15_market_bidding_blackboard/configs/experiment.json +0 -0
  359. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/15_market_bidding_blackboard/data/README.md +0 -0
  360. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/15_market_bidding_blackboard/figures/README.md +0 -0
  361. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/15_market_bidding_blackboard/notebooks/README.md +0 -0
  362. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/15_market_bidding_blackboard/results/README.md +0 -0
  363. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/15_market_bidding_blackboard/scripts/analyze.py +0 -0
  364. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/15_market_bidding_blackboard/scripts/run.py +0 -0
  365. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/15_market_bidding_blackboard/scripts/run_local.sh +0 -0
  366. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/INDEX.md +0 -0
  367. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/README.md +0 -0
  368. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/_shared/analysis/queries.sql +0 -0
  369. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/_shared/harness/runner.py +0 -0
  370. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/boilerplate/_shared/scripts/analyze_template.py +0 -0
  371. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/extra_sources.md +0 -0
  372. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/kafka_implementation_plan.md +0 -0
  373. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/codex/needed_framework_implementation.md +0 -0
  374. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/emergence/EMERGENCE_RESEARCH_SUMMARY.md +0 -0
  375. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/emergence/EMERGENT_BEHAVIOR_RESEARCH.md +0 -0
  376. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/emergence/README.md +0 -0
  377. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/emergence/emergence_toolkit.py +0 -0
  378. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/emergence/experiment_emergence_demo.py +0 -0
  379. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/formal-methods/FORMAL_METHODS_SUMMARY.md +0 -0
  380. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/formal-methods/README.md +0 -0
  381. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/formal-methods/formal-methods-analysis.md +0 -0
  382. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/formal-methods/formal-methods-quick-ref.md +0 -0
  383. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/formal-methods/formal-verification-examples.md +0 -0
  384. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/observability/README.md +0 -0
  385. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/observability/observability_research_opportunities.md +0 -0
  386. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/orchestration/README.md +0 -0
  387. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/orchestration/RESEARCH_BLACKBOARD_ORCHESTRATION.md +0 -0
  388. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/orchestration/RESEARCH_EXAMPLES.md +0 -0
  389. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/research/orchestration/RESEARCH_SUMMARY.md +0 -0
  390. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/specs/001-test-coverage-improvement/PLAN.md +0 -0
  391. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/specs/001-test-coverage-improvement/PRD.md +0 -0
  392. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/specs/001-test-coverage-improvement/SDD.md +0 -0
  393. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/troubleshooting/codex_bug_analysis.md +0 -0
  394. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/internal/troubleshooting/event-log-memory-leak-analysis.md +0 -0
  395. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/javascripts/extra.js +0 -0
  396. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/reference/api.md +0 -0
  397. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/reference/configuration.md +0 -0
  398. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/reference/index.md +0 -0
  399. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/stylesheets/extra.css +0 -0
  400. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/tags.md +0 -0
  401. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/troubleshooting/streaming-freeze-fix.md +0 -0
  402. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/troubleshooting/streaming-freeze-with-dashboard-fix.md +0 -0
  403. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/tutorials/advanced-patterns.md +0 -0
  404. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/tutorials/conditional-routing.md +0 -0
  405. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/tutorials/connect_with_ollama.md +0 -0
  406. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/tutorials/index.md +0 -0
  407. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/tutorials/multi-agent-workflow.md +0 -0
  408. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/tutorials/your-first-agent.md +0 -0
  409. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/docs/whiteducksoftware/versions.json +0 -0
  410. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/examples/01-the-declarative-way/02_input_and_output.py +0 -0
  411. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/examples/01-the-declarative-way/03_mcp_and_tools.py +0 -0
  412. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/examples/01-the-declarative-way/README.md +0 -0
  413. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/examples/02-the-blackboard/README.md +0 -0
  414. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/examples/03-the-dashboard/01_declarative_pizza.py +0 -0
  415. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/examples/03-the-dashboard/02-dashboard-edge-cases.py +0 -0
  416. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/examples/03-the-dashboard/03-scale-test-100-agents.py +0 -0
  417. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/examples/03-the-dashboard/README.md +0 -0
  418. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/examples/04-the-api/README.md +0 -0
  419. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/examples/05-claudes-workshop/README.md +0 -0
  420. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/examples/05-claudes-workshop/lesson_01_code_detective.py +0 -0
  421. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/examples/05-claudes-workshop/lesson_02_band_formation.py +0 -0
  422. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/examples/05-claudes-workshop/lesson_03_web_detective.py +0 -0
  423. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/examples/05-claudes-workshop/lesson_04_debate_club.py +0 -0
  424. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/examples/05-claudes-workshop/lesson_05_tracing_detective.py +0 -0
  425. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/examples/05-claudes-workshop/lesson_06_secret_agents.py +0 -0
  426. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/examples/05-claudes-workshop/lesson_07_news_agency.py +0 -0
  427. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/examples/06-readme/01-BugDiagnosis.py +0 -0
  428. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/examples/07-notebooks/Untitled-1.ipynb +0 -0
  429. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/examples/08-ollama/08_ollama_example.py +0 -0
  430. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/mkdocs.yml +0 -0
  431. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/requirements.txt +0 -0
  432. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/scripts/build_dashboard.py +0 -0
  433. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/scripts/bump_version.py +0 -0
  434. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/scripts/check_version_bump.py +0 -0
  435. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/scripts/ensure_uv.py +0 -0
  436. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/scripts/gen_ref_pages.py +0 -0
  437. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/scripts/generate_llm_codebase.py +0 -0
  438. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/__init__.py +0 -0
  439. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/agent.py +0 -0
  440. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/api/themes.py +0 -0
  441. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/artifacts.py +0 -0
  442. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/components.py +0 -0
  443. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/dashboard/__init__.py +0 -0
  444. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/dashboard/collector.py +0 -0
  445. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/dashboard/events.py +0 -0
  446. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/dashboard/launcher.py +0 -0
  447. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/dashboard/service.py +0 -0
  448. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/dashboard/websocket.py +0 -0
  449. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/engines/__init__.py +0 -0
  450. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/docs/DESIGN_SYSTEM.md +0 -0
  451. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/index.html +0 -0
  452. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/__tests__/integration/graph-rendering.test.tsx +0 -0
  453. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/__tests__/integration/indexeddb-persistence.test.tsx +0 -0
  454. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/components/common/BuildInfo.tsx +0 -0
  455. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/components/common/EmptyState.module.css +0 -0
  456. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/components/common/EmptyState.tsx +0 -0
  457. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/components/common/ErrorBoundary.module.css +0 -0
  458. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/components/common/ErrorBoundary.tsx +0 -0
  459. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/components/common/KeyboardShortcutsDialog.css +0 -0
  460. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/components/common/KeyboardShortcutsDialog.tsx +0 -0
  461. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/components/common/LoadingSpinner.module.css +0 -0
  462. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/components/common/LoadingSpinner.tsx +0 -0
  463. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/components/controls/PublishControl.css +0 -0
  464. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/components/controls/PublishControl.test.tsx +0 -0
  465. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/components/controls/PublishControl.tsx +0 -0
  466. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/components/details/DetailWindowContainer.tsx +0 -0
  467. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/components/details/LiveOutputTab.test.tsx +0 -0
  468. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/components/details/LiveOutputTab.tsx +0 -0
  469. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/components/details/MessageHistoryTab.tsx +0 -0
  470. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/components/details/NodeDetailWindow.test.tsx +0 -0
  471. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/components/details/NodeDetailWindow.tsx +0 -0
  472. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/components/details/RunStatusTab.tsx +0 -0
  473. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/components/details/tabs.test.tsx +0 -0
  474. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/components/filters/CorrelationIDFilter.module.css +0 -0
  475. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/components/filters/CorrelationIDFilter.test.tsx +0 -0
  476. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/components/filters/CorrelationIDFilter.tsx +0 -0
  477. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/components/filters/TimeRangeFilter.test.tsx +0 -0
  478. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/components/graph/AgentNode.test.tsx +0 -0
  479. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/components/graph/AgentNode.tsx +0 -0
  480. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/components/graph/MessageFlowEdge.tsx +0 -0
  481. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/components/graph/MessageNode.test.tsx +0 -0
  482. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/components/graph/MessageNode.tsx +0 -0
  483. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/components/graph/MiniMap.tsx +0 -0
  484. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/components/graph/TransformEdge.tsx +0 -0
  485. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/components/layout/Header.module.css +0 -0
  486. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/components/layout/Header.tsx +0 -0
  487. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/components/modules/JsonAttributeRenderer.tsx +0 -0
  488. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/components/modules/ModuleRegistry.test.ts +0 -0
  489. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/components/modules/ModuleWindow.tsx +0 -0
  490. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/components/modules/TraceModuleJaeger.tsx +0 -0
  491. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/components/modules/TraceModuleJaegerWrapper.tsx +0 -0
  492. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/components/settings/AdvancedSettings.tsx +0 -0
  493. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/components/settings/AppearanceSettings.tsx +0 -0
  494. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/components/settings/GraphSettings.tsx +0 -0
  495. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/components/settings/MultiSelect.tsx +0 -0
  496. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/components/settings/SettingsPanel.css +0 -0
  497. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/components/settings/SettingsPanel.tsx +0 -0
  498. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/components/settings/ThemeSelector.tsx +0 -0
  499. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/components/settings/TracingSettings.tsx +0 -0
  500. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/hooks/useKeyboardShortcuts.ts +0 -0
  501. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/hooks/useModulePersistence.test.ts +0 -0
  502. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/hooks/useModulePersistence.ts +0 -0
  503. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/hooks/usePersistence.ts +0 -0
  504. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/main.tsx +0 -0
  505. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/services/indexeddb.test.ts +0 -0
  506. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/services/layout.test.ts +0 -0
  507. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/services/layout.ts +0 -0
  508. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/services/themeApplicator.ts +0 -0
  509. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/services/themeService.ts +0 -0
  510. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/services/websocket.test.ts +0 -0
  511. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/store/moduleStore.test.ts +0 -0
  512. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/store/moduleStore.ts +0 -0
  513. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/store/settingsStore.ts +0 -0
  514. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/store/streamStore.ts +0 -0
  515. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/store/uiStore.test.ts +0 -0
  516. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/store/uiStore.ts +0 -0
  517. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/store/wsStore.ts +0 -0
  518. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/styles/index.css +0 -0
  519. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/styles/scrollbar.css +0 -0
  520. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/styles/variables.css +0 -0
  521. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/test/setup.ts +0 -0
  522. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/types/modules.ts +0 -0
  523. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/types/theme.ts +0 -0
  524. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/utils/mockData.ts +0 -0
  525. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/utils/performance.ts +0 -0
  526. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/utils/transforms.test.ts +0 -0
  527. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/utils/transforms.ts +0 -0
  528. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/src/vite-env.d.ts +0 -0
  529. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/tsconfig.json +0 -0
  530. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/tsconfig.node.json +0 -0
  531. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/vite.config.ts +0 -0
  532. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/frontend/vitest.config.ts +0 -0
  533. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/helper/cli_helper.py +0 -0
  534. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/logging/__init__.py +0 -0
  535. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/logging/auto_trace.py +0 -0
  536. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/logging/formatters/enum_builder.py +0 -0
  537. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/logging/formatters/theme_builder.py +0 -0
  538. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/logging/formatters/themed_formatter.py +0 -0
  539. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/logging/formatters/themes.py +0 -0
  540. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/logging/logging.py +0 -0
  541. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/logging/span_middleware/baggage_span_processor.py +0 -0
  542. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/logging/telemetry.py +0 -0
  543. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/logging/telemetry_exporter/base_exporter.py +0 -0
  544. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/logging/telemetry_exporter/duckdb_exporter.py +0 -0
  545. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/logging/telemetry_exporter/file_exporter.py +0 -0
  546. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/logging/telemetry_exporter/sqlite_exporter.py +0 -0
  547. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/logging/trace_and_logged.py +0 -0
  548. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/mcp/__init__.py +0 -0
  549. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/mcp/client.py +0 -0
  550. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/mcp/config.py +0 -0
  551. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/mcp/manager.py +0 -0
  552. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/mcp/servers/sse/__init__.py +0 -0
  553. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/mcp/servers/sse/flock_sse_server.py +0 -0
  554. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/mcp/servers/stdio/__init__.py +0 -0
  555. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/mcp/servers/stdio/flock_stdio_server.py +0 -0
  556. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/mcp/servers/streamable_http/__init__.py +0 -0
  557. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/mcp/servers/streamable_http/flock_streamable_http_server.py +0 -0
  558. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/mcp/servers/websockets/__init__.py +0 -0
  559. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/mcp/servers/websockets/flock_websocket_server.py +0 -0
  560. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/mcp/tool.py +0 -0
  561. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/mcp/types/__init__.py +0 -0
  562. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/mcp/types/callbacks.py +0 -0
  563. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/mcp/types/factories.py +0 -0
  564. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/mcp/types/handlers.py +0 -0
  565. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/mcp/types/types.py +0 -0
  566. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/mcp/util/__init__.py +0 -0
  567. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/mcp/util/helpers.py +0 -0
  568. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/registry.py +0 -0
  569. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/runtime.py +0 -0
  570. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/subscription.py +0 -0
  571. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/3024-day.toml +0 -0
  572. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/3024-night.toml +0 -0
  573. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/aardvark-blue.toml +0 -0
  574. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/abernathy.toml +0 -0
  575. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/adventure.toml +0 -0
  576. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/adventuretime.toml +0 -0
  577. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/afterglow.toml +0 -0
  578. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/alabaster.toml +0 -0
  579. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/alienblood.toml +0 -0
  580. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/andromeda.toml +0 -0
  581. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/apple-classic.toml +0 -0
  582. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/apple-system-colors.toml +0 -0
  583. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/arcoiris.toml +0 -0
  584. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/argonaut copy.toml +0 -0
  585. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/argonaut.toml +0 -0
  586. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/arthur.toml +0 -0
  587. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/ateliersulphurpool.toml +0 -0
  588. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/atom.toml +0 -0
  589. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/atom_test.toml +0 -0
  590. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/atomonelight.toml +0 -0
  591. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/aurora.toml +0 -0
  592. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/ayu copy.toml +0 -0
  593. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/ayu-light.toml +0 -0
  594. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/ayu-mirage.toml +0 -0
  595. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/ayu.toml +0 -0
  596. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/banana-blueberry.toml +0 -0
  597. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/batman.toml +0 -0
  598. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/belafonte-day.toml +0 -0
  599. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/belafonte-night.toml +0 -0
  600. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/birdsofparadise.toml +0 -0
  601. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/blazer.toml +0 -0
  602. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/blue-matrix.toml +0 -0
  603. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/blueberrypie.toml +0 -0
  604. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/bluedolphin.toml +0 -0
  605. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/blulocodark.toml +0 -0
  606. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/blulocolight.toml +0 -0
  607. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/borland.toml +0 -0
  608. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/breeze.toml +0 -0
  609. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/bright-lights.toml +0 -0
  610. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/broadcast.toml +0 -0
  611. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/brogrammer.toml +0 -0
  612. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/builtin-dark.toml +0 -0
  613. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/builtin-light.toml +0 -0
  614. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/builtin-pastel-dark.toml +0 -0
  615. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/builtin-solarized-dark.toml +0 -0
  616. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/builtin-solarized-light.toml +0 -0
  617. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/builtin-tango-dark.toml +0 -0
  618. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/builtin-tango-light.toml +0 -0
  619. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/c64.toml +0 -0
  620. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/calamity.toml +0 -0
  621. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/catppuccin-frappe.toml +0 -0
  622. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/catppuccin-latte.toml +0 -0
  623. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/catppuccin-macchiato.toml +0 -0
  624. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/catppuccin-mocha.toml +0 -0
  625. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/cga.toml +0 -0
  626. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/chalk.toml +0 -0
  627. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/chalkboard.toml +0 -0
  628. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/challengerdeep.toml +0 -0
  629. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/chester.toml +0 -0
  630. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/ciapre.toml +0 -0
  631. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/clrs.toml +0 -0
  632. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/cobalt-neon.toml +0 -0
  633. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/cobalt2.toml +0 -0
  634. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/coffee-theme.toml +0 -0
  635. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/crayonponyfish.toml +0 -0
  636. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/cutiepro.toml +0 -0
  637. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/cyberdyne.toml +0 -0
  638. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/cyberpunk.toml +0 -0
  639. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/cyberpunkscarletprotocol.toml +0 -0
  640. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/dark+.toml +0 -0
  641. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/dark-pastel.toml +0 -0
  642. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/darkermatrix.toml +0 -0
  643. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/darkmatrix.toml +0 -0
  644. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/darkside.toml +0 -0
  645. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/dayfox.toml +0 -0
  646. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/deep.toml +0 -0
  647. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/desert.toml +0 -0
  648. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/dimidium.toml +0 -0
  649. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/dimmedmonokai.toml +0 -0
  650. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/django.toml +0 -0
  651. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/djangorebornagain.toml +0 -0
  652. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/djangosmooth.toml +0 -0
  653. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/doom-peacock.toml +0 -0
  654. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/doomone.toml +0 -0
  655. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/dotgov.toml +0 -0
  656. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/dracula+.toml +0 -0
  657. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/dracula.toml +0 -0
  658. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/duckbones.toml +0 -0
  659. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/duotone-dark.toml +0 -0
  660. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/earthsong.toml +0 -0
  661. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/elemental.toml +0 -0
  662. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/elementary.toml +0 -0
  663. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/encom.toml +0 -0
  664. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/espresso-libre.toml +0 -0
  665. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/espresso.toml +0 -0
  666. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/everblush.toml +0 -0
  667. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/fahrenheit.toml +0 -0
  668. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/fairyfloss.toml +0 -0
  669. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/farmhouse-dark.toml +0 -0
  670. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/farmhouse-light.toml +0 -0
  671. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/fideloper.toml +0 -0
  672. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/firefly-traditional.toml +0 -0
  673. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/firefoxdev.toml +0 -0
  674. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/firewatch.toml +0 -0
  675. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/fishtank.toml +0 -0
  676. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/flat.toml +0 -0
  677. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/flatland.toml +0 -0
  678. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/flexoki-dark.toml +0 -0
  679. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/flexoki-light.toml +0 -0
  680. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/floraverse.toml +0 -0
  681. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/forestblue.toml +0 -0
  682. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/framer.toml +0 -0
  683. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/frontenddelight.toml +0 -0
  684. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/funforrest.toml +0 -0
  685. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/galaxy.toml +0 -0
  686. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/galizur.toml +0 -0
  687. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/github-dark.toml +0 -0
  688. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/github.toml +0 -0
  689. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/glacier.toml +0 -0
  690. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/grape.toml +0 -0
  691. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/grass.toml +0 -0
  692. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/grey-green.toml +0 -0
  693. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/gruber-darker.toml +0 -0
  694. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/gruvboxdark.toml +0 -0
  695. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/gruvboxdarkhard.toml +0 -0
  696. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/gruvboxlight.toml +0 -0
  697. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/guezwhoz.toml +0 -0
  698. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/hacktober.toml +0 -0
  699. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/hardcore.toml +0 -0
  700. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/harper.toml +0 -0
  701. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/hax0r-blue.toml +0 -0
  702. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/hax0r-gr33n.toml +0 -0
  703. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/hax0r-r3d.toml +0 -0
  704. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/highway.toml +0 -0
  705. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/hipster-green.toml +0 -0
  706. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/hivacruz.toml +0 -0
  707. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/homebrew.toml +0 -0
  708. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/hopscotch.256.toml +0 -0
  709. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/hopscotch.toml +0 -0
  710. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/hurtado.toml +0 -0
  711. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/hybrid.toml +0 -0
  712. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/ic-green-ppl.toml +0 -0
  713. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/ic-orange-ppl.toml +0 -0
  714. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/iceberg-dark.toml +0 -0
  715. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/iceberg-light.toml +0 -0
  716. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/idea.toml +0 -0
  717. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/idletoes.toml +0 -0
  718. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/ir-black.toml +0 -0
  719. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/iterm2-dark-background.toml +0 -0
  720. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/iterm2-default.toml +0 -0
  721. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/iterm2-light-background.toml +0 -0
  722. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/iterm2-pastel-dark-background.toml +0 -0
  723. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/iterm2-smoooooth.toml +0 -0
  724. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/iterm2-solarized-dark.toml +0 -0
  725. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/iterm2-solarized-light.toml +0 -0
  726. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/iterm2-tango-dark.toml +0 -0
  727. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/iterm2-tango-light.toml +0 -0
  728. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/jackie-brown.toml +0 -0
  729. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/japanesque.toml +0 -0
  730. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/jellybeans.toml +0 -0
  731. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/jetbrains-darcula.toml +0 -0
  732. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/jubi.toml +0 -0
  733. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/kanagawabones.toml +0 -0
  734. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/kibble.toml +0 -0
  735. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/kolorit.toml +0 -0
  736. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/konsolas.toml +0 -0
  737. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/kurokula.toml +0 -0
  738. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/lab-fox.toml +0 -0
  739. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/laser.toml +0 -0
  740. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/later-this-evening.toml +0 -0
  741. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/lavandula.toml +0 -0
  742. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/liquidcarbon.toml +0 -0
  743. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/liquidcarbontransparent.toml +0 -0
  744. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/liquidcarbontransparentinverse.toml +0 -0
  745. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/lovelace.toml +0 -0
  746. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/man-page.toml +0 -0
  747. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/mariana.toml +0 -0
  748. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/material.toml +0 -0
  749. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/materialdark.toml +0 -0
  750. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/materialdarker.toml +0 -0
  751. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/materialdesigncolors.toml +0 -0
  752. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/materialocean.toml +0 -0
  753. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/mathias.toml +0 -0
  754. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/matrix.toml +0 -0
  755. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/medallion.toml +0 -0
  756. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/mellifluous.toml +0 -0
  757. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/midnight-in-mojave.toml +0 -0
  758. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/mirage.toml +0 -0
  759. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/misterioso.toml +0 -0
  760. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/molokai.toml +0 -0
  761. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/monalisa.toml +0 -0
  762. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/monokai-remastered.toml +0 -0
  763. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/monokai-soda.toml +0 -0
  764. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/monokai-vivid.toml +0 -0
  765. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/n0tch2k.toml +0 -0
  766. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/neobones-dark.toml +0 -0
  767. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/neobones-light.toml +0 -0
  768. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/neon.toml +0 -0
  769. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/neopolitan.toml +0 -0
  770. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/neutron.toml +0 -0
  771. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/night-owlish-light.toml +0 -0
  772. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/nightfox.toml +0 -0
  773. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/nightlion-v1.toml +0 -0
  774. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/nightlion-v2.toml +0 -0
  775. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/niji.toml +0 -0
  776. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/nocturnal-winter.toml +0 -0
  777. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/nord-light.toml +0 -0
  778. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/nord.toml +0 -0
  779. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/novel.toml +0 -0
  780. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/nvimdark.toml +0 -0
  781. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/nvimlight.toml +0 -0
  782. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/obsidian.toml +0 -0
  783. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/ocean.toml +0 -0
  784. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/oceanic-next.toml +0 -0
  785. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/oceanicmaterial.toml +0 -0
  786. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/ollie.toml +0 -0
  787. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/onehalfdark.toml +0 -0
  788. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/onehalflight.toml +0 -0
  789. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/operator-mono-dark.toml +0 -0
  790. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/overnight-slumber.toml +0 -0
  791. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/oxocarbon.toml +0 -0
  792. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/palenighthc.toml +0 -0
  793. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/pandora.toml +0 -0
  794. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/paraiso-dark.toml +0 -0
  795. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/paulmillr.toml +0 -0
  796. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/pencildark.toml +0 -0
  797. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/pencillight.toml +0 -0
  798. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/peppermint.toml +0 -0
  799. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/piatto-light.toml +0 -0
  800. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/pnevma.toml +0 -0
  801. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/popping-and-locking.toml +0 -0
  802. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/primary.toml +0 -0
  803. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/pro-light.toml +0 -0
  804. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/pro.toml +0 -0
  805. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/purple-rain.toml +0 -0
  806. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/purplepeter.toml +0 -0
  807. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/rapture.toml +0 -0
  808. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/raycast-dark.toml +0 -0
  809. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/raycast-light.toml +0 -0
  810. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/rebecca.toml +0 -0
  811. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/red-alert.toml +0 -0
  812. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/red-planet.toml +0 -0
  813. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/red-sands.toml +0 -0
  814. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/relaxed.toml +0 -0
  815. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/retro.toml +0 -0
  816. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/rippedcasts.toml +0 -0
  817. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/rose-pine-dawn.toml +0 -0
  818. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/rose-pine-moon.toml +0 -0
  819. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/rose-pine.toml +0 -0
  820. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/rouge-2.toml +0 -0
  821. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/royal.toml +0 -0
  822. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/ryuuko.toml +0 -0
  823. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/sakura.toml +0 -0
  824. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/scarlet-protocol.toml +0 -0
  825. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/seafoam-pastel.toml +0 -0
  826. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/seashells.toml +0 -0
  827. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/seoulbones-dark.toml +0 -0
  828. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/seoulbones-light.toml +0 -0
  829. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/seti.toml +0 -0
  830. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/shades-of-purple.toml +0 -0
  831. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/shaman.toml +0 -0
  832. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/slate.toml +0 -0
  833. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/sleepyhollow.toml +0 -0
  834. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/smyck.toml +0 -0
  835. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/snazzy.toml +0 -0
  836. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/softserver.toml +0 -0
  837. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/solarized-darcula.toml +0 -0
  838. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/solarized-dark---patched.toml +0 -0
  839. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/solarized-dark-higher-contrast.toml +0 -0
  840. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/spacedust.toml +0 -0
  841. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/spacegray-eighties-dull.toml +0 -0
  842. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/spacegray-eighties.toml +0 -0
  843. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/spacegray.toml +0 -0
  844. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/spiderman.toml +0 -0
  845. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/spring.toml +0 -0
  846. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/square.toml +0 -0
  847. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/sublette.toml +0 -0
  848. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/subliminal.toml +0 -0
  849. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/sugarplum.toml +0 -0
  850. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/sundried.toml +0 -0
  851. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/symfonic.toml +0 -0
  852. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/synthwave-everything.toml +0 -0
  853. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/synthwave.toml +0 -0
  854. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/synthwavealpha.toml +0 -0
  855. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/tango-adapted.toml +0 -0
  856. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/tango-half-adapted.toml +0 -0
  857. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/teerb.toml +0 -0
  858. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/terafox.toml +0 -0
  859. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/terminal-basic.toml +0 -0
  860. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/thayer-bright.toml +0 -0
  861. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/the-hulk.toml +0 -0
  862. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/tinacious-design-(dark).toml +0 -0
  863. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/tinacious-design-(light).toml +0 -0
  864. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/tokyonight-day.toml +0 -0
  865. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/tokyonight-storm.toml +0 -0
  866. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/tokyonight.toml +0 -0
  867. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/tomorrow-night-blue.toml +0 -0
  868. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/tomorrow-night-bright.toml +0 -0
  869. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/tomorrow-night-burns.toml +0 -0
  870. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/tomorrow-night-eighties.toml +0 -0
  871. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/tomorrow-night.toml +0 -0
  872. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/tomorrow.toml +0 -0
  873. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/toychest.toml +0 -0
  874. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/treehouse.toml +0 -0
  875. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/twilight.toml +0 -0
  876. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/ubuntu.toml +0 -0
  877. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/ultradark.toml +0 -0
  878. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/ultraviolent.toml +0 -0
  879. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/underthesea.toml +0 -0
  880. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/unikitty.toml +0 -0
  881. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/urple.toml +0 -0
  882. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/vaughn.toml +0 -0
  883. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/vesper.toml +0 -0
  884. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/vibrantink.toml +0 -0
  885. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/vimbones.toml +0 -0
  886. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/violet-dark.toml +0 -0
  887. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/violet-light.toml +0 -0
  888. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/warmneon.toml +0 -0
  889. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/wez.toml +0 -0
  890. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/whimsy.toml +0 -0
  891. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/wildcherry.toml +0 -0
  892. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/wilmersdorf.toml +0 -0
  893. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/wombat.toml +0 -0
  894. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/wryan.toml +0 -0
  895. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/xcodedark.toml +0 -0
  896. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/xcodedarkhc.toml +0 -0
  897. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/xcodelight.toml +0 -0
  898. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/xcodelighthc.toml +0 -0
  899. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/xcodewwdc.toml +0 -0
  900. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/zenbones-dark.toml +0 -0
  901. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/zenbones-light.toml +0 -0
  902. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/zenbones.toml +0 -0
  903. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/zenburn.toml +0 -0
  904. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/zenburned.toml +0 -0
  905. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/zenwritten-dark.toml +0 -0
  906. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/themes/zenwritten-light.toml +0 -0
  907. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/utilities.py +0 -0
  908. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/utility/output_utility_component.py +0 -0
  909. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/src/flock/visibility.py +0 -0
  910. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/test.py +0 -0
  911. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/tests/conftest.py +0 -0
  912. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/tests/contract/test_agent_payload_selection_contract.py +0 -0
  913. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/tests/contract/test_type_normalization_contract.py +0 -0
  914. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/tests/e2e/README.md +0 -0
  915. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/tests/e2e/TESTING_SUMMARY.md +0 -0
  916. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/tests/e2e/test_critical_scenarios.py +0 -0
  917. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/tests/integration/test_collector_orchestrator.py +0 -0
  918. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/tests/integration/test_orchestrator_dashboard.py +0 -0
  919. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/tests/integration/test_websocket_protocol.py +0 -0
  920. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/tests/test_agent.py +0 -0
  921. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/tests/test_agent_mcp.py +0 -0
  922. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/tests/test_agent_server_specific_mounts.py +0 -0
  923. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/tests/test_artifacts.py +0 -0
  924. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/tests/test_cli_helper.py +0 -0
  925. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/tests/test_components.py +0 -0
  926. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/tests/test_dashboard_api.py +0 -0
  927. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/tests/test_dashboard_collector.py +0 -0
  928. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/tests/test_dashboard_launcher.py +0 -0
  929. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/tests/test_dashboard_service.py +0 -0
  930. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/tests/test_dspy_engine.py +0 -0
  931. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/tests/test_dspy_engine_mcp.py +0 -0
  932. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/tests/test_dspy_streaming_events.py +0 -0
  933. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/tests/test_engines.py +0 -0
  934. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/tests/test_logging_config.py +0 -0
  935. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/tests/test_mcp_client.py +0 -0
  936. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/tests/test_mcp_config.py +0 -0
  937. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/tests/test_mcp_coverage_summary.md +0 -0
  938. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/tests/test_mcp_imports.py +0 -0
  939. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/tests/test_mcp_manager.py +0 -0
  940. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/tests/test_mcp_server_config_typeddict.py +0 -0
  941. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/tests/test_mcp_tool_handlers.py +0 -0
  942. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/tests/test_orchestrator.py +0 -0
  943. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/tests/test_orchestrator_mcp.py +0 -0
  944. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/tests/test_registry.py +0 -0
  945. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/tests/test_runtime.py +0 -0
  946. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/tests/test_service.py +0 -0
  947. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/tests/test_subscription.py +0 -0
  948. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/tests/test_telemetry.py +0 -0
  949. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/tests/test_trace_clearing.py +0 -0
  950. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/tests/test_unified_tracing.py +0 -0
  951. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/tests/test_utilities.py +0 -0
  952. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/tests/test_version_endpoint.py +0 -0
  953. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/tests/test_visibility.py +0 -0
  954. {flock_core-0.5.0b65 → flock_core-0.5.0b71}/tests/test_websocket_manager.py +0 -0
@@ -7,6 +7,7 @@ __pycache__/
7
7
  *.so
8
8
  .claude-flow/
9
9
  .swarm/
10
+ .codex/
10
11
  # Distribution / packaging
11
12
  .Python
12
13
  build/
@@ -234,6 +234,35 @@ The separation of `publish()` and `run_until_idle()` gives you **control over ex
234
234
 
235
235
  ---
236
236
 
237
+ ### 🗄️ Persistent Blackboard History (SQLite Store)
238
+
239
+ **Production teams asked for auditability—now the blackboard can keep a full historical trail.**
240
+
241
+ #### Why this matters
242
+ - **Durable artifacts**: Everything on the blackboard (payloads, tags, visibility, correlation IDs) is stored on disk for replay, compliance, and debugging.
243
+ - **Faster postmortems**: Query `/api/v1/artifacts` with filters (`type`, `produced_by`, `tags`, `visibility`, time windows) to reconstruct agent cascades after the fact.
244
+ - **Operational dashboards**: The new **Historical Blackboard** module preloads persisted pages, exposes consumption metadata, and shows retention banners so operators know how far back they can scroll.
245
+ - **Retention policies**: CLI helpers make maintenance routine—`flock sqlite-maintenance my.db --delete-before 2025-01-01T00:00:00Z --vacuum` prunes old artifacts and compacts the store.
246
+
247
+ #### Quick start
248
+ ```python
249
+ from flock import Flock
250
+ from flock.store import SQLiteBlackboardStore
251
+
252
+ store = SQLiteBlackboardStore(".flock/history.db")
253
+ await store.ensure_schema()
254
+
255
+ flock = Flock("openai/gpt-4.1", store=store)
256
+ await flock.publish(MyDreamPizza(pizza_idea="fermented garlic delight"))
257
+ await flock.run_until_idle()
258
+ ```
259
+
260
+ Kick the tyres with `examples/02-the-blackboard/01_persistent_pizza.py`, then launch `examples/03-the-dashboard/04_persistent_pizza_dashboard.py` to inspect the retained history alongside live WebSocket updates.
261
+
262
+ > **Heads-up:** The interface now returns `ArtifactEnvelope` objects when `embed_meta=True`. Future backends (Postgres, BigQuery, etc.) can implement the same contract to plug straight into the runtime and dashboard.
263
+
264
+ ---
265
+
237
266
  ### 🔒 Test Isolation and Mock Cleanup - The Contamination Trap
238
267
 
239
268
  **We fixed 32 failing tests caused by test contamination - here's what we learned:**
@@ -1,3 +1,35 @@
1
+ Metadata-Version: 2.4
2
+ Name: flock-core
3
+ Version: 0.5.0b71
4
+ Summary: Add your description here
5
+ Author-email: Andre Ratzenberger <andre.ratzenberger@whiteduck.de>
6
+ License-File: LICENSE
7
+ Requires-Python: >=3.10
8
+ Requires-Dist: aiosqlite>=0.20.0
9
+ Requires-Dist: devtools>=0.12.2
10
+ Requires-Dist: dspy==3.0.0
11
+ Requires-Dist: duckdb>=1.1.0
12
+ Requires-Dist: fastapi>=0.117.1
13
+ Requires-Dist: hanging-threads>=2.0.7
14
+ Requires-Dist: httpx>=0.28.1
15
+ Requires-Dist: litellm==1.75.3
16
+ Requires-Dist: loguru>=0.7.3
17
+ Requires-Dist: mcp>=1.7.1
18
+ Requires-Dist: opentelemetry-api>=1.30.0
19
+ Requires-Dist: opentelemetry-exporter-jaeger-proto-grpc>=1.21.0
20
+ Requires-Dist: opentelemetry-exporter-jaeger>=1.21.0
21
+ Requires-Dist: opentelemetry-exporter-otlp>=1.30.0
22
+ Requires-Dist: opentelemetry-instrumentation-logging>=0.51b0
23
+ Requires-Dist: opentelemetry-sdk>=1.30.0
24
+ Requires-Dist: poethepoet>=0.30.0
25
+ Requires-Dist: pydantic[email]>=2.11.9
26
+ Requires-Dist: rich>=14.1.0
27
+ Requires-Dist: toml>=0.10.2
28
+ Requires-Dist: typer>=0.19.2
29
+ Requires-Dist: uvicorn>=0.37.0
30
+ Requires-Dist: websockets>=15.0.1
31
+ Description-Content-Type: text/markdown
32
+
1
33
  <p align="center">
2
34
  <img alt="Flock Banner" src="https://raw.githubusercontent.com/whiteducksoftware/flock/master/docs/assets/images/flock.png" width="800">
3
35
  </p>
@@ -252,6 +284,30 @@ asyncio.run(main())
252
284
 
253
285
  ---
254
286
 
287
+ ## Persistent Blackboard History
288
+
289
+ The in-memory store is still great for local tinkering, but production teams now have a durable option. Plugging in `SQLiteBlackboardStore` turns the blackboard into a persistent event log with first-class ergonomics:
290
+
291
+ - **Long-lived artifacts** — every field (payload, tags, partition keys, visibility) is stored for replay, audits, and postmortems
292
+ - **Historical APIs** — `/api/v1/artifacts`, `/summary`, and `/agents/{agent_id}/history-summary` expose pagination, filtering, and consumption counts
293
+ - **Dashboard module** — the new **Historical Blackboard** experience preloads persisted history, enriches the graph with consumer metadata, and highlights retention windows
294
+ - **Operational tooling** — CLI helpers (`init-sqlite-store`, `sqlite-maintenance --delete-before ... --vacuum`) make schema setup and retention policies scriptable
295
+
296
+ Quick start:
297
+
298
+ ```python
299
+ from flock import Flock
300
+ from flock.store import SQLiteBlackboardStore
301
+
302
+ store = SQLiteBlackboardStore(".flock/blackboard.db")
303
+ await store.ensure_schema()
304
+ flock = Flock("openai/gpt-4.1", store=store)
305
+ ```
306
+
307
+ Run `examples/02-the-blackboard/01_persistent_pizza.py` to generate history, then launch `examples/03-the-dashboard/04_persistent_pizza_dashboard.py` and explore previous runs, consumption trails, and retention banners inside the dashboard.
308
+
309
+ ---
310
+
255
311
  ## Core Concepts
256
312
 
257
313
  ### Typed Artifacts (The Vocabulary)
@@ -1,34 +1,3 @@
1
- Metadata-Version: 2.4
2
- Name: flock-core
3
- Version: 0.5.0b65
4
- Summary: Add your description here
5
- Author-email: Andre Ratzenberger <andre.ratzenberger@whiteduck.de>
6
- License-File: LICENSE
7
- Requires-Python: >=3.10
8
- Requires-Dist: devtools>=0.12.2
9
- Requires-Dist: dspy==3.0.0
10
- Requires-Dist: duckdb>=1.1.0
11
- Requires-Dist: fastapi>=0.117.1
12
- Requires-Dist: hanging-threads>=2.0.7
13
- Requires-Dist: httpx>=0.28.1
14
- Requires-Dist: litellm==1.75.3
15
- Requires-Dist: loguru>=0.7.3
16
- Requires-Dist: mcp>=1.7.1
17
- Requires-Dist: opentelemetry-api>=1.30.0
18
- Requires-Dist: opentelemetry-exporter-jaeger-proto-grpc>=1.21.0
19
- Requires-Dist: opentelemetry-exporter-jaeger>=1.21.0
20
- Requires-Dist: opentelemetry-exporter-otlp>=1.30.0
21
- Requires-Dist: opentelemetry-instrumentation-logging>=0.51b0
22
- Requires-Dist: opentelemetry-sdk>=1.30.0
23
- Requires-Dist: poethepoet>=0.30.0
24
- Requires-Dist: pydantic[email]>=2.11.9
25
- Requires-Dist: rich>=14.1.0
26
- Requires-Dist: toml>=0.10.2
27
- Requires-Dist: typer>=0.19.2
28
- Requires-Dist: uvicorn>=0.37.0
29
- Requires-Dist: websockets>=15.0.1
30
- Description-Content-Type: text/markdown
31
-
32
1
  <p align="center">
33
2
  <img alt="Flock Banner" src="https://raw.githubusercontent.com/whiteducksoftware/flock/master/docs/assets/images/flock.png" width="800">
34
3
  </p>
@@ -283,6 +252,30 @@ asyncio.run(main())
283
252
 
284
253
  ---
285
254
 
255
+ ## Persistent Blackboard History
256
+
257
+ The in-memory store is still great for local tinkering, but production teams now have a durable option. Plugging in `SQLiteBlackboardStore` turns the blackboard into a persistent event log with first-class ergonomics:
258
+
259
+ - **Long-lived artifacts** — every field (payload, tags, partition keys, visibility) is stored for replay, audits, and postmortems
260
+ - **Historical APIs** — `/api/v1/artifacts`, `/summary`, and `/agents/{agent_id}/history-summary` expose pagination, filtering, and consumption counts
261
+ - **Dashboard module** — the new **Historical Blackboard** experience preloads persisted history, enriches the graph with consumer metadata, and highlights retention windows
262
+ - **Operational tooling** — CLI helpers (`init-sqlite-store`, `sqlite-maintenance --delete-before ... --vacuum`) make schema setup and retention policies scriptable
263
+
264
+ Quick start:
265
+
266
+ ```python
267
+ from flock import Flock
268
+ from flock.store import SQLiteBlackboardStore
269
+
270
+ store = SQLiteBlackboardStore(".flock/blackboard.db")
271
+ await store.ensure_schema()
272
+ flock = Flock("openai/gpt-4.1", store=store)
273
+ ```
274
+
275
+ Run `examples/02-the-blackboard/01_persistent_pizza.py` to generate history, then launch `examples/03-the-dashboard/04_persistent_pizza_dashboard.py` and explore previous runs, consumption trails, and retention banners inside the dashboard.
276
+
277
+ ---
278
+
286
279
  ## Core Concepts
287
280
 
288
281
  ### Typed Artifacts (The Vocabulary)
@@ -0,0 +1,92 @@
1
+ ---
2
+ title: Persistent Blackboard History
3
+ description: Store artifacts beyond process lifetime with the SQLite-backed blackboard store and dashboard history module.
4
+ tags:
5
+ - blackboard
6
+ - persistence
7
+ - sqlite
8
+ - dashboard
9
+ search:
10
+ boost: 1.4
11
+ ---
12
+
13
+ # Persistent Blackboard History
14
+
15
+ The in-memory blackboard is perfect for local prototyping, but production teams need durable history for audits, debugging, and operator experience. The new **SQLiteBlackboardStore** turns every artifact into long-lived record while the dashboard's **Historical Blackboard** module visualises that history.
16
+
17
+ ---
18
+
19
+ ## Why Persist the Blackboard?
20
+
21
+ - **Replay & Audits** — Inspect any published artifact (including payloads, tags, visibility, version, correlation IDs) even after the orchestrator restarts.
22
+ - **Lifecycle Analytics** — Summaries and agent history endpoints expose production/consumption counts, visibility breakdowns, and tag trends over arbitrary windows.
23
+ - **Operator Experience** — Dashboard users can scroll back through previous runs, inspect payload details, and view retention banners that explain how far history goes.
24
+ - **Future Backends** — The updated store interface (`FilterConfig`, `ArtifactEnvelope`) paves the way for Postgres, DuckDB, or cloud warehouses with identical semantics.
25
+
26
+ ---
27
+
28
+ ## Swapping in the SQLite Store
29
+
30
+ ```python
31
+ from flock import Flock
32
+ from flock.store import SQLiteBlackboardStore
33
+
34
+ store = SQLiteBlackboardStore(".flock/blackboard.db", timeout=5.0)
35
+ await store.ensure_schema() # idempotent; safe to call on startup
36
+
37
+ flock = Flock("openai/gpt-4.1", store=store)
38
+ ```
39
+
40
+ Key capabilities:
41
+
42
+ - **Upserts by ID** — Duplicate artifact IDs overwrite previous payloads to remain consistent with the in-memory store.
43
+ - **Full-field persistence** — All artifact fields (payload, tags, partition key, visibility) are saved for later hydration.
44
+ - **Consumption tracking** — `record_consumptions()` writes `artifact_consumptions` rows so downstream dashboards know who consumed what.
45
+ - **Operational helpers** — `sqlite-maintenance` CLI can prune (`--delete-before`) and vacuum the database on a schedule.
46
+
47
+ > Tip: Run `examples/02-the-blackboard/01_persistent_pizza.py` to seed `.flock/examples/pizza_history.db`, then reuse that file across sessions.
48
+
49
+ ---
50
+
51
+ ## Historical APIs
52
+
53
+ Once the SQLite store is active, the HTTP control plane exposes richer endpoints:
54
+
55
+ | Endpoint | Purpose |
56
+ | --- | --- |
57
+ | `GET /api/v1/artifacts` | Paginated artifacts with filter support (type, producer, tags, visibility, correlation ID, time window). |
58
+ | `GET /api/v1/artifacts/summary` | Aggregates by type, producer, visibility, tag counts, earliest/latest timestamps. |
59
+ | `GET /api/v1/agents/{agent_id}/history-summary` | Produced/consumed totals per agent with optional filters. |
60
+
61
+ Pass `embed_meta=true` to `GET /api/v1/artifacts` to receive `ArtifactEnvelope` responses that include consumption records (consumer IDs, run IDs, timestamps).
62
+
63
+ ---
64
+
65
+ ## Dashboard: Historical Blackboard Module
66
+
67
+ Enable the dashboard with `await orchestrator.serve(dashboard=True)` or run `examples/03-the-dashboard/04_persistent_pizza_dashboard.py`. Then open **Add Module → Historical Blackboard** to:
68
+
69
+ - Load persisted artifacts before WebSocket replay.
70
+ - Apply the same multi-select filters as the REST API (types, producers, tags, visibility, correlation ID, time range).
71
+ - Inspect payloads with the JSON viewer alongside consumer history (who read the artifact, when, and in which run).
72
+ - See retention banners that highlight the earliest/latest artifacts currently stored and whether older pages can be fetched.
73
+ - Stream new artifacts as they arrive—persisted history and live events share the same view.
74
+
75
+ ---
76
+
77
+ ## Retention & Maintenance
78
+
79
+ - **Retention policy** — Use `sqlite-maintenance db.sqlite --delete-before <ISO-8601 timestamp>` to truncate old artifacts. Pair with `--vacuum` to reclaim disk space.
80
+ - **Migrations** — `ensure_schema()` is idempotent and applies schema upgrades automatically. Call it during startup before processing any artifacts.
81
+ - **Backups** — SQLite files can be copied or snapshotted; do this while the orchestrator is idle or after calling `await store.close()`.
82
+
83
+ Future releases will add configurable retention windows and additional storage backends, but the contract exposed by `BlackboardStore` already supports them.
84
+
85
+ ---
86
+
87
+ ## Next Steps
88
+
89
+ 1. Switch local examples to `SQLiteBlackboardStore` and explore the persisted history via the dashboard module.
90
+ 2. Integrate the historical REST endpoints into operational tooling (e.g., CI smoke tests, analytics dashboards).
91
+ 3. Plan retention and maintenance jobs using the provided CLI commands.
92
+ 4. Contribute alternative store implementations by targeting the same `BlackboardStore` contract.
@@ -0,0 +1,24 @@
1
+ # SQLiteBlackboardStore Research Packet
2
+
3
+ Welcome! This folder collects the working notes for implementing a persistent `SQLiteBlackboardStore`. Start here to understand what already exists and how to extend Flock Flow’s storage layer safely.
4
+
5
+ ## Quickstart
6
+
7
+ 1. **Read the domain rules** (`domain.md`) to learn the behavioural guarantees we must keep (duplicate handling, type resolution, visibility data, retention expectations).
8
+ 2. **Review the implementation pattern** (`patterns.md`) for schema design, transaction strategy, and migration guidance.
9
+ 3. **Check the integration notes** (`interfaces.md`) to see which APIs and dashboard affordances need to evolve once historical storage is available.
10
+ 4. **Plan next steps** using the “Action Items” section below when you’re ready to convert research into issues or pull requests.
11
+
12
+ ## Folder Contents
13
+
14
+ | File | Purpose |
15
+ |------|---------|
16
+ | `domain.md` | Business and lifecycle rules the SQLite store must preserve. |
17
+ | `patterns.md` | Technical blueprint for schema, read/write flows, concurrency, and observability. |
18
+ | `interfaces.md` | Backend API extensions and dashboard UX recommendations for historical data access. |
19
+
20
+ ## Action Items
21
+
22
+ - Validate schema design and indexing strategy against projected artifact volumes.
23
+ - Scope required FastAPI endpoints and dashboard filter updates into implementation tickets.
24
+ - Prototype concurrency benchmarks (publish throughput, WAL performance) to confirm operational limits.
@@ -0,0 +1,44 @@
1
+ # Manual Dashboard Verification (playwright-mcp)
2
+
3
+ This checklist replaces the original automated Playwright suite. It uses the
4
+ `playwright-mcp` tool to exercise the historical dashboard manually.
5
+
6
+ ## Prerequisites
7
+
8
+ - SQLite backend configuration available (see project README).
9
+ - `uv` CLI installed.
10
+ - `playwright-mcp` MCP extension enabled in the Codex CLI environment.
11
+
12
+ ## Launch the Dashboard Edge-Case Scenario
13
+
14
+ ```bash
15
+ uv run python examples/03-the-dashboard/02-dashboard-edge-cases.py
16
+ ```
17
+
18
+ Wait for the following log lines:
19
+
20
+ - `[Dashboard] Production build completed`
21
+ - `Uvicorn running on http://127.0.0.1:8000`
22
+ - `[Dashboard] Browser launched successfully`
23
+
24
+ ## Manual Verification Steps (playwright-mcp)
25
+
26
+ 1. `mcp__playwright__browser_navigate(url="http://127.0.0.1:8000")`
27
+ - Confirm Agent View renders all agents with idle status.
28
+ 2. Close the Publish panel (`mcp__playwright__browser_click` with `Close publish panel`) and switch to **Blackboard View**.
29
+ 3. Toggle the **Filters** panel and verify:
30
+ - Correlation search, time range presets, multi-select filters, and saved preset controls appear.
31
+ 4. Enter a sample correlation ID (e.g., `"abc123"`) to ensure filter pills update.
32
+ 5. Re-open the Filters panel and ensure layout remains stable (no overlap between time-range buttons and fields).
33
+ 6. Interact with the **Historical Blackboard** module (if enabled):
34
+ - Trigger “Load Older” and capture behavior.
35
+ 7. Capture a screenshot with `mcp__playwright__browser_take_screenshot(fullPage=True, ...)`.
36
+
37
+ ## Expected Outcomes
38
+
39
+ - No React errors or ErrorBoundary screens.
40
+ - Filter controls render without overlapping.
41
+ - Manual interactions update filter pills and historical listings.
42
+ - WebSocket reconnect warnings are acceptable when the example shuts down.
43
+
44
+ Record findings in the Phase 3 validation notes before closing tasks.
@@ -0,0 +1,23 @@
1
+ # SQLiteBlackboardStore Domain Considerations
2
+
3
+ ## Artifact Lifecycle Rules
4
+
5
+ - A SQLite-backed store must preserve the baseline contract defined by `BlackboardStore.publish`, `get`, `list`, and `list_by_type` so the orchestrator can persist an artifact, bump `artifacts_published`, and immediately schedule consumers without additional coordination (`src/flock/orchestrator.py:807`).
6
+ - Artifacts carry canonical business data—including correlation IDs, partition keys, tags, visibility, timestamps, and version counters—because the `Artifact` model already exposes them (`src/flock/artifacts.py:15`). Every field must be recorded to guarantee downstream features like visibility filtering and replay work unchanged.
7
+ - Duplicate publishes with the same UUID intentionally overwrite prior values: the tests assert “latest wins” semantics (`tests/test_store.py:152`). A persistent store therefore needs an UPSERT strategy keyed on `artifact_id` so callers never see stale payloads.
8
+
9
+ ## Retrieval & Type Normalisation
10
+
11
+ - `list()` is expected to return artifacts in insertion order (`tests/test_store.py:126`); a SQLite implementation should sort by `created_at` (or a monotonic sequence) to mirror in-memory behaviour.
12
+ - Type-aware queries must keep working: `list_by_type("Document")` resolves the canonical name through `type_registry.resolve_name` before filtering (`src/flock/store.py:73`). That contract is validated by the storage contract tests which mix canonical and simple names (`tests/contract/test_artifact_storage_contract.py:56`). A SQLite store therefore needs a column that stores the canonical type string to make these lookups efficient.
13
+ - `get_by_type(ModelClass)` returns fully materialised Pydantic models (`src/flock/store.py:78`). Persisted payloads must remain JSON-serialised dictionaries so they can be rehydrated into model instances without losing validation logic.
14
+
15
+ ## Visibility & Scheduling Guarantees
16
+
17
+ - Visibility rules (`PublicVisibility`, label/tenant controls, future embargoes) are enforced when the orchestrator schedules agents, so the store has to persist the original `visibility` payload intact for enforcement and later audits (`src/flock/orchestrator.py:826`).
18
+ - Because correlation IDs and partition keys participate in routing, they must remain queryable fields. The dashboard’s IndexedDB schema already assumes correlation and producer filters (`src/flock/frontend/src/services/indexeddb.ts:55`), so the canonical store must expose the same columns to keep downstream consumers consistent.
19
+
20
+ ## Historical Retention & Audit
21
+
22
+ - Moving from volatile memory to SQLite adds expectations around retention windows, GDPR/PII erasure, and audit trails. The store should document default retention, compaction, and purging policies so teams know when old artifacts are deleted or archived.
23
+ - Persistent history enables richer diagnostic tools (e.g., the DuckDB trace statistics endpoint at `src/flock/dashboard/service.py:683`). A SQLite store should outline how historical artifact queries and export workflows stay performant without overwhelming the orchestrator.
@@ -0,0 +1,25 @@
1
+ # SQLite Blackboard Store Interfaces & Dashboard UX
2
+
3
+ ## Orchestrator Integration
4
+
5
+ - Expose the store via `Flock(store=SQLiteBlackboardStore(db_path="..."))` so existing constructors keep working (`src/flock/orchestrator.py:807`).
6
+ - Provide async `startup()` / `shutdown()` hooks to initialise connections and close them gracefully when the dashboard or CLI stops, matching the lifecycle of `DashboardHTTPService`.
7
+
8
+ ## Backend APIs for Historical Data
9
+
10
+ - Extend the FastAPI layer with a paginated `GET /api/v1/artifacts` endpoint that supports query parameters: `type`, `produced_by`, `correlation_id`, `tag`, `from`, `to`, `limit`, `offset`. Results should mirror the artifact schema returned by `GET /api/v1/artifacts/{artifact_id}` (`src/flock/service.py:86`).
11
+ - Add an optional `GET /api/v1/artifacts/summary` endpoint for aggregations (counts per type, per producer) to let the dashboard populate filters without scanning the entire table.
12
+ - Keep WebSocket streaming history for live sessions, but backfill the IndexedDB cache on load by calling the new history endpoint before subscribing to real-time events. That honours the existing IndexedDB schema which already tracks correlation IDs, producers, and timestamps (`src/flock/frontend/src/services/indexeddb.ts:55`).
13
+
14
+ ## Dashboard Filter & View Enhancements
15
+
16
+ - The current filter store only allows correlation ID and time-range filters (`src/flock/frontend/src/store/filterStore.ts:11`). Persisted history will overwhelm this UX; add multi-select filters for artifact type, producing agent, tags, and visibility class so operators can slice larger datasets.
17
+ - Introduce a “Historical Blackboard” view that renders a virtualised table or timeline of artifacts, pulling pages from SQLite via the new endpoints and letting users jump to a specific time window.
18
+ - Provide saved filter presets (the IndexedDB schema already reserves a `filters` store, `src/flock/frontend/src/services/indexeddb.ts:127`) so analysts can recall frequent queries quickly.
19
+ - For streaming output, keep the existing `/api/streaming-history/{agent_name}` endpoint (`src/flock/dashboard/service.py:703`) but document how far back history can be fetched and surface UI affordances (e.g., “Load older output”) that rely on SQLite retention policies.
20
+
21
+ ## Usability Guardrails
22
+
23
+ - Indicate the active dataset (live vs archived) directly in the dashboard to avoid confusion when viewing historical records.
24
+ - Add server-side limits (max rows per page, time-range caps) with clear UI feedback to prevent slow queries and keep SQLite responsive.
25
+ - Provide export actions (CSV/JSON) for selected artifacts so teams can move historical data into external analytics tools without direct database access.
@@ -0,0 +1,44 @@
1
+ # SQLiteBlackboardStore Implementation Pattern
2
+
3
+ ## Storage Strategy
4
+
5
+ - Use `aiosqlite` (or another async driver) so `publish`, `get`, and `list*` stay awaitable and integrate with the orchestrator’s async scheduling pipeline (`src/flock/orchestrator.py:807`).
6
+ - Open one shared connection per process with `row_factory=aiosqlite.Row`, wrap statements in `asyncio.Lock`/connection-level transactions, and enable WAL mode plus `journal_mode=wal` + `synchronous=normal` to reduce writer contention.
7
+
8
+ ## Schema Design
9
+
10
+ | Table | Purpose | Key Columns |
11
+ |-------|---------|-------------|
12
+ | `artifacts` | Primary artifact store | `artifact_id` (PK TEXT UUID), `type`, `canonical_type`, `produced_by`, `payload` (JSON), `version`, `visibility` (JSON), `tags` (TEXT[] as JSON), `correlation_id`, `partition_key`, `created_at` (TIMESTAMP) |
13
+ | `artifact_consumers` (optional) | Future-proof actual consumer tracking | `artifact_id`, `agent_name`, `consumed_at` |
14
+
15
+ - Indexes: `(canonical_type, created_at)`, `(produced_by, created_at)`, `(correlation_id)`, `(tags_json -> '$[*]')` using `json_each` for tag filtering, plus `(partition_key)`. These support list-by-type, producer history, correlation filters, and eventual dashboard queries (`src/flock/frontend/src/services/indexeddb.ts:55`).
16
+
17
+ ## Write Path (`publish`)
18
+
19
+ 1. Resolve canonical type via `type_registry.resolve_name` before persistence so simple names remain queryable (`src/flock/store.py:73`).
20
+ 2. Convert sets (`tags`) and visibility models to JSON. Persist `created_at` using the artifact’s timestamp rather than `CURRENT_TIMESTAMP` to preserve ingest order (`src/flock/artifacts.py:26`).
21
+ 3. Execute an UPSERT on `artifact_id`. On conflict update payload, metadata, version, and `created_at` so duplicate publishes follow the “latest wins” rule (`tests/test_store.py:152`).
22
+
23
+ ## Read Path (`get`, `list`, `list_by_type`, `get_by_type`)
24
+
25
+ - `get` selects by `artifact_id` and rehydrates the Pydantic model by feeding the stored payload into the registered class (`src/flock/store.py:79`).
26
+ - `list` orders by `created_at ASC`, returning rows mapped back to `Artifact`.
27
+ - `list_by_type` filters on `canonical_type` so both canonical and simple names pass the contract tests (`tests/contract/test_artifact_storage_contract.py:56`).
28
+ - `get_by_type` builds the target model directly by deserialising JSON payloads (no extra round-trip through `Artifact`), ensuring users still receive typed lists.
29
+
30
+ ## Concurrency & Backpressure
31
+
32
+ - SQLite serialises writes; wrap publishes in short transactions and batch inserts when ingesting cascades. For heavy workloads, queue writes through an `asyncio.TaskGroup` that coalesces `publish` calls to amortise commit cost.
33
+ - Explicitly document write throughput limits and point teams toward sharding or an alternative store for high-frequency publish workloads.
34
+
35
+ ## Schema Migration & Maintenance
36
+
37
+ - Ship an `ensure_schema()` coroutine that runs during store initialisation to create tables, indexes, and PRAGMA settings idempotently.
38
+ - Provide a migration table (`schema_version INTEGER`) so future upgrades (e.g., adding artifact lineages) can run without manual SQL.
39
+ - Offer housekeeping helpers: vacuum/pragma toggles, “delete before timestamp” utilities for retention, and export routines for snapshotting.
40
+
41
+ ## Observability & Testing
42
+
43
+ - Emit OpenTelemetry spans around SQL operations so they appear in the existing DuckDB trace summaries (`src/flock/dashboard/service.py:683`).
44
+ - Reuse `tests/test_store.py` and `tests/contract/test_artifact_storage_contract.py` via parametrised fixtures to validate behaviour parity, then add integration tests for persistence, WAL mode, and concurrent writers to cover new failure modes.
@@ -0,0 +1,169 @@
1
+ # Implementation Plan
2
+
3
+ ## Validation Checklist
4
+ - [ ] Context Ingestion section complete with all required specs
5
+ - [ ] Implementation phases logically organized
6
+ - [ ] Each phase starts with test definition (TDD approach)
7
+ - [ ] Dependencies between phases identified
8
+ - [ ] Parallel execution marked where applicable
9
+ - [ ] Multi-component coordination identified (if applicable)
10
+ - [ ] Final validation phase included
11
+ - [ ] No placeholder content remains
12
+
13
+ ## Specification Compliance Guidelines
14
+
15
+ ### How to Ensure Specification Adherence
16
+
17
+ 1. **Before Each Phase**: Complete the Pre-Implementation Specification Gate
18
+ 2. **During Implementation**: Reference specific SDD sections in each task
19
+ 3. **After Each Task**: Run Specification Compliance checks
20
+ 4. **Phase Completion**: Verify all specification requirements are met
21
+
22
+ ### Deviation Protocol
23
+
24
+ If implementation cannot follow specification exactly:
25
+ 1. Document the deviation and reason
26
+ 2. Get approval before proceeding
27
+ 3. Update SDD if the deviation is an improvement
28
+ 4. Never deviate without documentation
29
+
30
+ ## Metadata Reference
31
+
32
+ - `[parallel: true]` - Tasks that can run concurrently
33
+ - `[component: component-name]` - For multi-component features
34
+ - `[ref: document/section; lines: 1, 2-3]` - Links to specifications, patterns, or interfaces and (if applicable) line(s)
35
+ - `[activity: type]` - Activity hint for specialist agent selection
36
+
37
+ ---
38
+
39
+ ## Context Priming
40
+
41
+ *GATE: You MUST fully read all files mentioned in this section before starting any implementation.*
42
+
43
+ **Specification**:
44
+
45
+ - `docs/internal/sqlite-blackboard-store/domain.md` - Domain rules for persistent blackboard storage
46
+ - `docs/internal/sqlite-blackboard-store/patterns.md` - Implementation blueprint for SQLite store
47
+ - `docs/internal/sqlite-blackboard-store/interfaces.md` - API and dashboard interface expectations
48
+
49
+ **Key Design Decisions**:
50
+
51
+ - SQLite must faithfully reproduce current in-memory semantics (canonical type resolution, ordered reads, duplicate overwrite) while persisting every `Artifact` field for visibility and audit parity.
52
+ - Historical access requires new paginated artifact APIs and richer dashboard filters so operators can query large datasets without overwhelming the live graph.
53
+
54
+ **Implementation Context**:
55
+
56
+ - Commands to run: `uv run pytest tests/test_store.py tests/contract/test_artifact_storage_contract.py`, `uv run pytest tests/dashboard -k artifact` (after adding cases), `uv run python examples/03-the-dashboard/02-dashboard-edge-cases.py` followed by manual validation with `playwright-mcp`.
57
+ - Patterns to follow: `docs/internal/sqlite-blackboard-store/patterns.md` (schema, write/read paths, concurrency, migrations).
58
+ - Interfaces to implement: `docs/internal/sqlite-blackboard-store/interfaces.md` (REST endpoints for historical artifacts, dashboard UX enhancements).
59
+
60
+ ---
61
+
62
+ ## Implementation Phases
63
+
64
+ - [x] **Phase 1**: Foundation — SQLite schema & store implementation
65
+
66
+ - [x] **Prime Context**: `docs/internal/sqlite-blackboard-store/domain.md`, `docs/internal/sqlite-blackboard-store/patterns.md`
67
+ - [x] Confirm semantic parity requirements (canonical type usage, overwrite behaviour) `[ref: docs/internal/sqlite-blackboard-store/domain.md]`
68
+ - [x] Review schema blueprint, migration strategy, and concurrency guidance `[ref: docs/internal/sqlite-blackboard-store/patterns.md]`
69
+ - [x] **Write Tests**: Extend store contract coverage for SQLite backend `[activity: design-tests]`
70
+ - [x] Parameterise `tests/test_store.py` to run against both in-memory and SQLite implementations `[ref: tests/test_store.py; activity: update-tests]`
71
+ - [x] Mirror `tests/contract/test_artifact_storage_contract.py` against SQLite store to enforce canonical name resolution `[ref: tests/contract/test_artifact_storage_contract.py; activity: update-tests]`
72
+ - [x] Add migration/initialisation regression test (e.g., ensuring `ensure_schema()` idempotency) `[activity: add-tests]`
73
+ - [x] **Implement**: Introduce `SQLiteBlackboardStore` following async pattern `[activity: implement-backend]`
74
+ - [x] Create schema management (`ensure_schema`, migrations, PRAGMA setup) and connection lifecycle helpers `[ref: docs/internal/sqlite-blackboard-store/patterns.md]`
75
+ - [x] Implement `publish`, `get`, `list`, `list_by_type`, `get_by_type`, honouring duplicate overwrite, ordered reads, and JSON payload hydration `[activity: implement-backend]`
76
+ - [x] **Implement**: Observability & maintenance tooling `[activity: implement-backend]`
77
+ - [x] Add OpenTelemetry spans around SQL operations, vacuum/retention helpers as defined in research `[ref: docs/internal/sqlite-blackboard-store/patterns.md]`
78
+ - [x] **Validate**: Ensure reliability & parity
79
+ - [x] Run updated pytest suites (`tests/test_store.py`, `tests/contract/test_artifact_storage_contract.py`) `[activity: run-tests]`
80
+ - [x] Execute concurrency stress test (async gather publish) against SQLite backend `[activity: run-tests]`
81
+ - [x] Review schema artefacts for adherence to domain rules and document retention defaults `[activity: review-docs]`
82
+
83
+ - [x] **Phase 2**: Orchestrator & service integration
84
+
85
+ - [x] **Prime Context**: `docs/internal/sqlite-blackboard-store/interfaces.md`, orchestrator/service modules (`src/flock/orchestrator.py`, `src/flock/service.py`)
86
+ - [x] Map new store into orchestrator lifecycle & dependency injection `[ref: docs/internal/sqlite-blackboard-store/interfaces.md]`
87
+ - [x] Review API expansion requirements for artifact history `[ref: docs/internal/sqlite-blackboard-store/interfaces.md]`
88
+ - [x] **Write Tests**: Define acceptance tests for new endpoints & configuration `[activity: design-tests]`
89
+ - [x] Add API contract tests for paginated artifact listing (`/api/v1/artifacts`) and summaries `[activity: add-tests]`
90
+ - [x] Create integration test ensuring `Flock(store=SQLiteBlackboardStore(...))` publishes/reads successfully `[activity: add-tests]`
91
+ - [x] **Implement**: Wiring the store into runtime `[activity: implement-backend]`
92
+ - [x] Allow `Flock` to accept SQLite store via configuration/CLI, update CLI helpers and documentation `[activity: implement-backend]`
93
+ - [x] Extend FastAPI service with historical artifact endpoints (pagination, filtering, summaries) `[activity: implement-backend]`
94
+ - [x] **Implement**: Migration & configuration tooling `[activity: implement-backend]`
95
+ - [x] Provide CLI commands or scripts to initialise database, run migrations, and configure retention `[activity: implement-backend]`
96
+ - [x] **Validate**: Cross-check orchestration guarantees
97
+ - [x] Run FastAPI endpoint tests and contract suites `[activity: run-tests]`
98
+ - [x] Smoke test CLI/orchestrator flows using SQLite backend (publish/list) `[activity: run-tests]`
99
+ - [x] Verify metrics/tracing capture database operations as required `[activity: review-logs]`
100
+
101
+ - [~] **Phase 3**: Dashboard & UX enhancements for historical data
102
+
103
+ - [x] **Prime Context**: `docs/internal/sqlite-blackboard-store/interfaces.md`, dashboard filter implementation (`src/flock/frontend/src/store/filterStore.ts`, `src/flock/frontend/src/services/indexeddb.ts`)
104
+ - [x] Review required filter additions (artifact type, producer, tags, visibility) `[ref: docs/internal/sqlite-blackboard-store/interfaces.md]`
105
+ - [x] Inspect IndexedDB schema alignment for saved filters/pagination `[ref: src/flock/frontend/src/services/indexeddb.ts]`
106
+ - [x] **Write Tests**: Outline UI regression coverage `[activity: design-tests]`
107
+ - [x] Add unit tests for new filter store state, filters UI, and saved preset persistence `[activity: add-tests]`
108
+ - [x] Document manual playwright-mcp flow for historical blackboard view and pagination `[ref: docs/internal/sqlite-blackboard-store/dashboard-playwright-mcp.md; activity: add-tests]`
109
+ - [ ] **Implement**: Dashboard data ingestion `[activity: implement-frontend]`
110
+ - [x] Fetch historical artifact pages on load before WebSocket subscription, hydrate IndexedDB caches `[activity: implement-frontend]`
111
+ - [x] Add multi-select filters (type, producer, tags, visibility) and saved presets UI `[activity: implement-frontend]`
112
+ - [x] Provide persistent data seeding example (`examples/02-the-blackboard/01_persistent_pizza.py`) `[activity: implement-frontend]`
113
+ - [x] Backend follow-up: expose embedded consumption metadata via store API and REST (see discussion note)
114
+ - [ ] **Implement**: New historical view & affordances `[activity: implement-frontend]`
115
+ - [x] Create paginated “Historical Blackboard” table/timeline with virtualization `[activity: implement-frontend]`
116
+ - [x] Surface retention messaging and “Load older output” interactions tied to SQLite limits `[activity: implement-frontend]`
117
+ - [x] Add payload detail viewer using shared JSON component
118
+ - [x] Remove legacy Event Log module once payload viewer shipped
119
+ - [x] **Implement**: Historical backend API enhancements `[activity: implement-backend]`
120
+ - [x] Add consumption history persistence (`artifact_consumptions` or equivalent)
121
+ - [x] Update store interface (`FilterConfig`, `embed_meta`) and document requirements for future stores
122
+ - [x] Extend REST endpoints (`/api/v1/artifacts`, `/summary`, `/agents/{id}/history-summary`) to surface metadata
123
+ - [x] Ensure in-memory store honours new interface semantics for parity
124
+ - [ ] Document design rationale (embedded metadata, consumption joins, normalization)
125
+
126
+ - [ ] **Validate**: Store/REST integration `[activity: run-tests]`
127
+ - [x] Add unit tests for store consumption queries and filters
128
+ - [x] Add integration tests for new REST endpoints and envelopes
129
+ - [x] Verify frontend agent counters/edges consume enriched envelopes
130
+
131
+ - [ ] **Validate**: UX & performance gates
132
+ - [ ] Run frontend unit tests and manual dashboard verification with `playwright-mcp` following `docs/internal/sqlite-blackboard-store/dashboard-playwright-mcp.md` (`uv run python examples/03-the-dashboard/02-dashboard-edge-cases.py`) `[activity: run-tests]` *(unit tests passing; Playwright runner currently blocks on CSS module parsing — see latest execution notes)*
133
+ - [ ] Perform manual UX review of persistent history flow (`uv run python examples/03-the-dashboard/04_persistent_pizza_dashboard.py`) before dashboard checks `[activity: manual-test]`
134
+ - [ ] Confirm accessibility checks (keyboard navigation, screen-reader labels) for new components `[activity: accessibility-review]`
135
+
136
+ - [ ] **Integration & End-to-End Validation**
137
+ - [ ] Confirm unit and contract tests pass for both in-memory and SQLite stores
138
+ - [ ] Execute integration tests covering orchestrator/API/dashboard interplay with SQLite backend
139
+ - [ ] Run end-to-end workflow (publish artifacts, query history, filter in dashboard) against SQLite store
140
+ - [ ] Validate performance targets for write throughput and dashboard pagination `[ref: docs/internal/sqlite-blackboard-store/patterns.md]`
141
+ - [ ] Perform security review for data-at-rest, visibility enforcement, and endpoint access controls `[ref: docs/internal/sqlite-blackboard-store/domain.md]`
142
+ - [ ] Verify acceptance criteria from research packet (parity, historical access, UX enhancements)
143
+ - [ ] Ensure documentation updated (README, CLI help, dashboard docs) for new backend option
144
+ - [ ] Run build, lint, and formatting checks; confirm deployment scripts handle SQLite configuration
145
+ - [ ] Record final specification compliance report before release
146
+
147
+ - [ ] **Integration & End-to-End Validation**
148
+ - [ ] [All unit tests passing per component if multi-component]
149
+ - [ ] [Integration tests for component interactions]
150
+ - [ ] [End-to-end tests for complete user flows]
151
+ - [ ] [Performance tests meet requirements] `[ref: SDD/Section 10 "Quality Requirements"]`
152
+ - [ ] [Security validation passes] `[ref: SDD/Section 10 "Security Requirements"]`
153
+ - [ ] [Acceptance criteria verified against PRD] `[ref: PRD acceptance criteria sections]`
154
+ - [ ] [Test coverage meets standards]
155
+ - [ ] [Documentation updated for any API/interface changes]
156
+ - [ ] [Build and deployment verification]
157
+ - [ ] [All PRD requirements implemented]
158
+ - [ ] [Implementation follows SDD design]
159
+
160
+ ### 📝 Phase 3 Design Notes (Added after implementation review)
161
+
162
+ During integration we discovered the front-end needs richer metadata than the original research anticipated:
163
+
164
+ - Agent counters and graph edges require historical consumption data; this led us to design `artifact_consumptions` persistence and an `embed_meta` path in the store interface.
165
+ - Stores (in-memory & SQLite) will expose filtering through a shared `FilterConfig` and can return either lean `ArtifactRecord` objects or enriched envelopes with consumption/run metadata.
166
+ - REST endpoints will surface the enriched envelopes directly so clients do not reimplement the joins. A dedicated `/api/v1/agents/{id}/history-summary` endpoint will provide filtered produced/consumed counts.
167
+ - Historical Blackboard replaces the Event Log. Payload viewing will use the shared JSON inspector component.
168
+
169
+ These tasks are tracked in Phase 3 to guide future contributors implementing new stores (e.g., PostgresStore, RedisStore).