flock-core 0.4.542__py3-none-any.whl → 0.5.0__py3-none-any.whl

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 (501) hide show
  1. flock/__init__.py +12 -217
  2. flock/agent.py +1079 -0
  3. flock/api/themes.py +71 -0
  4. flock/artifacts.py +86 -0
  5. flock/cli.py +147 -0
  6. flock/components.py +189 -0
  7. flock/dashboard/__init__.py +30 -0
  8. flock/dashboard/collector.py +559 -0
  9. flock/dashboard/events.py +188 -0
  10. flock/dashboard/graph_builder.py +563 -0
  11. flock/dashboard/launcher.py +235 -0
  12. flock/dashboard/models/graph.py +156 -0
  13. flock/dashboard/service.py +991 -0
  14. flock/dashboard/static_v2/assets/index-DFRnI_mt.js +111 -0
  15. flock/dashboard/static_v2/assets/index-fPLNdmp1.css +1 -0
  16. flock/dashboard/static_v2/index.html +13 -0
  17. flock/dashboard/websocket.py +246 -0
  18. flock/engines/__init__.py +6 -0
  19. flock/engines/dspy_engine.py +932 -0
  20. flock/examples.py +131 -0
  21. flock/frontend/README.md +778 -0
  22. flock/frontend/docs/DESIGN_SYSTEM.md +1980 -0
  23. flock/frontend/index.html +12 -0
  24. flock/frontend/package-lock.json +4337 -0
  25. flock/frontend/package.json +48 -0
  26. flock/frontend/src/App.tsx +139 -0
  27. flock/frontend/src/__tests__/integration/graph-snapshot.test.tsx +647 -0
  28. flock/frontend/src/__tests__/integration/indexeddb-persistence.test.tsx +699 -0
  29. flock/frontend/src/components/common/BuildInfo.tsx +39 -0
  30. flock/frontend/src/components/common/EmptyState.module.css +115 -0
  31. flock/frontend/src/components/common/EmptyState.tsx +128 -0
  32. flock/frontend/src/components/common/ErrorBoundary.module.css +169 -0
  33. flock/frontend/src/components/common/ErrorBoundary.tsx +118 -0
  34. flock/frontend/src/components/common/KeyboardShortcutsDialog.css +251 -0
  35. flock/frontend/src/components/common/KeyboardShortcutsDialog.tsx +151 -0
  36. flock/frontend/src/components/common/LoadingSpinner.module.css +97 -0
  37. flock/frontend/src/components/common/LoadingSpinner.tsx +29 -0
  38. flock/frontend/src/components/controls/PublishControl.css +547 -0
  39. flock/frontend/src/components/controls/PublishControl.test.tsx +543 -0
  40. flock/frontend/src/components/controls/PublishControl.tsx +432 -0
  41. flock/frontend/src/components/details/DetailWindowContainer.tsx +58 -0
  42. flock/frontend/src/components/details/LiveOutputTab.test.tsx +792 -0
  43. flock/frontend/src/components/details/LiveOutputTab.tsx +220 -0
  44. flock/frontend/src/components/details/MessageDetailWindow.tsx +439 -0
  45. flock/frontend/src/components/details/MessageHistoryTab.tsx +374 -0
  46. flock/frontend/src/components/details/NodeDetailWindow.test.tsx +501 -0
  47. flock/frontend/src/components/details/NodeDetailWindow.tsx +218 -0
  48. flock/frontend/src/components/details/RunStatusTab.tsx +348 -0
  49. flock/frontend/src/components/details/tabs.test.tsx +1015 -0
  50. flock/frontend/src/components/filters/ArtifactTypeFilter.tsx +21 -0
  51. flock/frontend/src/components/filters/CorrelationIDFilter.module.css +102 -0
  52. flock/frontend/src/components/filters/CorrelationIDFilter.test.tsx +197 -0
  53. flock/frontend/src/components/filters/CorrelationIDFilter.tsx +121 -0
  54. flock/frontend/src/components/filters/FilterFlyout.module.css +104 -0
  55. flock/frontend/src/components/filters/FilterFlyout.tsx +80 -0
  56. flock/frontend/src/components/filters/FilterPills.module.css +220 -0
  57. flock/frontend/src/components/filters/FilterPills.test.tsx +189 -0
  58. flock/frontend/src/components/filters/FilterPills.tsx +143 -0
  59. flock/frontend/src/components/filters/ProducerFilter.tsx +21 -0
  60. flock/frontend/src/components/filters/SavedFiltersControl.module.css +60 -0
  61. flock/frontend/src/components/filters/SavedFiltersControl.test.tsx +158 -0
  62. flock/frontend/src/components/filters/SavedFiltersControl.tsx +159 -0
  63. flock/frontend/src/components/filters/TagFilter.tsx +21 -0
  64. flock/frontend/src/components/filters/TimeRangeFilter.module.css +115 -0
  65. flock/frontend/src/components/filters/TimeRangeFilter.test.tsx +154 -0
  66. flock/frontend/src/components/filters/TimeRangeFilter.tsx +110 -0
  67. flock/frontend/src/components/filters/VisibilityFilter.tsx +21 -0
  68. flock/frontend/src/components/graph/AgentNode.test.tsx +77 -0
  69. flock/frontend/src/components/graph/AgentNode.tsx +324 -0
  70. flock/frontend/src/components/graph/GraphCanvas.tsx +613 -0
  71. flock/frontend/src/components/graph/MessageFlowEdge.tsx +128 -0
  72. flock/frontend/src/components/graph/MessageNode.test.tsx +64 -0
  73. flock/frontend/src/components/graph/MessageNode.tsx +129 -0
  74. flock/frontend/src/components/graph/MiniMap.tsx +47 -0
  75. flock/frontend/src/components/graph/TransformEdge.tsx +123 -0
  76. flock/frontend/src/components/layout/DashboardLayout.css +420 -0
  77. flock/frontend/src/components/layout/DashboardLayout.tsx +287 -0
  78. flock/frontend/src/components/layout/Header.module.css +88 -0
  79. flock/frontend/src/components/layout/Header.tsx +52 -0
  80. flock/frontend/src/components/modules/HistoricalArtifactsModule.module.css +288 -0
  81. flock/frontend/src/components/modules/HistoricalArtifactsModule.tsx +450 -0
  82. flock/frontend/src/components/modules/HistoricalArtifactsModuleWrapper.tsx +13 -0
  83. flock/frontend/src/components/modules/JsonAttributeRenderer.tsx +140 -0
  84. flock/frontend/src/components/modules/ModuleRegistry.test.ts +333 -0
  85. flock/frontend/src/components/modules/ModuleRegistry.ts +93 -0
  86. flock/frontend/src/components/modules/ModuleWindow.tsx +223 -0
  87. flock/frontend/src/components/modules/TraceModuleJaeger.tsx +1971 -0
  88. flock/frontend/src/components/modules/TraceModuleJaegerWrapper.tsx +13 -0
  89. flock/frontend/src/components/modules/registerModules.ts +29 -0
  90. flock/frontend/src/components/settings/AdvancedSettings.tsx +175 -0
  91. flock/frontend/src/components/settings/AppearanceSettings.tsx +185 -0
  92. flock/frontend/src/components/settings/GraphSettings.tsx +110 -0
  93. flock/frontend/src/components/settings/MultiSelect.tsx +235 -0
  94. flock/frontend/src/components/settings/SettingsPanel.css +327 -0
  95. flock/frontend/src/components/settings/SettingsPanel.tsx +131 -0
  96. flock/frontend/src/components/settings/ThemeSelector.tsx +298 -0
  97. flock/frontend/src/components/settings/TracingSettings.tsx +404 -0
  98. flock/frontend/src/hooks/useKeyboardShortcuts.ts +148 -0
  99. flock/frontend/src/hooks/useModulePersistence.test.ts +442 -0
  100. flock/frontend/src/hooks/useModulePersistence.ts +154 -0
  101. flock/frontend/src/hooks/useModules.ts +157 -0
  102. flock/frontend/src/hooks/usePersistence.ts +141 -0
  103. flock/frontend/src/main.tsx +13 -0
  104. flock/frontend/src/services/api.ts +337 -0
  105. flock/frontend/src/services/graphService.test.ts +330 -0
  106. flock/frontend/src/services/graphService.ts +75 -0
  107. flock/frontend/src/services/indexeddb.test.ts +793 -0
  108. flock/frontend/src/services/indexeddb.ts +848 -0
  109. flock/frontend/src/services/layout.test.ts +437 -0
  110. flock/frontend/src/services/layout.ts +357 -0
  111. flock/frontend/src/services/themeApplicator.ts +140 -0
  112. flock/frontend/src/services/themeService.ts +77 -0
  113. flock/frontend/src/services/websocket.ts +650 -0
  114. flock/frontend/src/store/filterStore.test.ts +250 -0
  115. flock/frontend/src/store/filterStore.ts +272 -0
  116. flock/frontend/src/store/graphStore.test.ts +570 -0
  117. flock/frontend/src/store/graphStore.ts +462 -0
  118. flock/frontend/src/store/moduleStore.test.ts +253 -0
  119. flock/frontend/src/store/moduleStore.ts +75 -0
  120. flock/frontend/src/store/settingsStore.ts +188 -0
  121. flock/frontend/src/store/streamStore.ts +68 -0
  122. flock/frontend/src/store/uiStore.test.ts +54 -0
  123. flock/frontend/src/store/uiStore.ts +122 -0
  124. flock/frontend/src/store/wsStore.ts +34 -0
  125. flock/frontend/src/styles/index.css +15 -0
  126. flock/frontend/src/styles/scrollbar.css +47 -0
  127. flock/frontend/src/styles/variables.css +488 -0
  128. flock/frontend/src/test/setup.ts +1 -0
  129. flock/frontend/src/types/filters.ts +47 -0
  130. flock/frontend/src/types/graph.ts +95 -0
  131. flock/frontend/src/types/modules.ts +10 -0
  132. flock/frontend/src/types/theme.ts +55 -0
  133. flock/frontend/src/utils/artifacts.ts +24 -0
  134. flock/frontend/src/utils/mockData.ts +98 -0
  135. flock/frontend/src/utils/performance.ts +16 -0
  136. flock/frontend/src/vite-env.d.ts +17 -0
  137. flock/frontend/tsconfig.json +27 -0
  138. flock/frontend/tsconfig.node.json +11 -0
  139. flock/frontend/vite.config.ts +25 -0
  140. flock/frontend/vitest.config.ts +11 -0
  141. flock/{core/util → helper}/cli_helper.py +9 -5
  142. flock/{core/logging → logging}/__init__.py +2 -3
  143. flock/logging/auto_trace.py +159 -0
  144. flock/{core/logging → logging}/formatters/enum_builder.py +3 -4
  145. flock/{core/logging → logging}/formatters/theme_builder.py +19 -44
  146. flock/{core/logging → logging}/formatters/themed_formatter.py +69 -107
  147. flock/{core/logging → logging}/logging.py +78 -61
  148. flock/{core/logging → logging}/telemetry.py +66 -26
  149. flock/{core/logging → logging}/telemetry_exporter/base_exporter.py +2 -2
  150. flock/logging/telemetry_exporter/duckdb_exporter.py +216 -0
  151. flock/{core/logging → logging}/telemetry_exporter/file_exporter.py +13 -10
  152. flock/{core/logging → logging}/telemetry_exporter/sqlite_exporter.py +2 -3
  153. flock/logging/trace_and_logged.py +304 -0
  154. flock/mcp/__init__.py +91 -0
  155. flock/{core/mcp/mcp_client.py → mcp/client.py} +131 -158
  156. flock/{core/mcp/mcp_config.py → mcp/config.py} +86 -132
  157. flock/mcp/manager.py +286 -0
  158. flock/mcp/servers/sse/__init__.py +1 -1
  159. flock/mcp/servers/sse/flock_sse_server.py +16 -58
  160. flock/mcp/servers/stdio/__init__.py +1 -1
  161. flock/mcp/servers/stdio/flock_stdio_server.py +13 -53
  162. flock/mcp/servers/streamable_http/flock_streamable_http_server.py +22 -67
  163. flock/mcp/servers/websockets/flock_websocket_server.py +12 -45
  164. flock/{core/mcp/flock_mcp_tool_base.py → mcp/tool.py} +24 -78
  165. flock/mcp/types/__init__.py +42 -0
  166. flock/{core/mcp → mcp}/types/callbacks.py +12 -15
  167. flock/{core/mcp → mcp}/types/factories.py +7 -6
  168. flock/{core/mcp → mcp}/types/handlers.py +13 -18
  169. flock/{core/mcp → mcp}/types/types.py +70 -74
  170. flock/{core/mcp → mcp}/util/helpers.py +3 -3
  171. flock/orchestrator.py +970 -0
  172. flock/registry.py +148 -0
  173. flock/runtime.py +262 -0
  174. flock/service.py +277 -0
  175. flock/store.py +1214 -0
  176. flock/subscription.py +111 -0
  177. flock/themes/andromeda.toml +1 -1
  178. flock/themes/apple-system-colors.toml +1 -1
  179. flock/themes/arcoiris.toml +1 -1
  180. flock/themes/atomonelight.toml +1 -1
  181. flock/themes/ayu copy.toml +1 -1
  182. flock/themes/ayu-light.toml +1 -1
  183. flock/themes/belafonte-day.toml +1 -1
  184. flock/themes/belafonte-night.toml +1 -1
  185. flock/themes/blulocodark.toml +1 -1
  186. flock/themes/breeze.toml +1 -1
  187. flock/themes/broadcast.toml +1 -1
  188. flock/themes/brogrammer.toml +1 -1
  189. flock/themes/builtin-dark.toml +1 -1
  190. flock/themes/builtin-pastel-dark.toml +1 -1
  191. flock/themes/catppuccin-latte.toml +1 -1
  192. flock/themes/catppuccin-macchiato.toml +1 -1
  193. flock/themes/catppuccin-mocha.toml +1 -1
  194. flock/themes/cga.toml +1 -1
  195. flock/themes/chalk.toml +1 -1
  196. flock/themes/ciapre.toml +1 -1
  197. flock/themes/coffee-theme.toml +1 -1
  198. flock/themes/cyberpunkscarletprotocol.toml +1 -1
  199. flock/themes/dark+.toml +1 -1
  200. flock/themes/darkermatrix.toml +1 -1
  201. flock/themes/darkmatrix.toml +2 -2
  202. flock/themes/darkside.toml +1 -1
  203. flock/themes/deep.toml +2 -2
  204. flock/themes/desert.toml +1 -1
  205. flock/themes/django.toml +1 -1
  206. flock/themes/djangosmooth.toml +1 -1
  207. flock/themes/doomone.toml +1 -1
  208. flock/themes/dotgov.toml +1 -1
  209. flock/themes/dracula+.toml +1 -1
  210. flock/themes/duckbones.toml +1 -1
  211. flock/themes/encom.toml +1 -1
  212. flock/themes/espresso.toml +1 -1
  213. flock/themes/everblush.toml +1 -1
  214. flock/themes/fairyfloss.toml +1 -1
  215. flock/themes/fideloper.toml +1 -1
  216. flock/themes/fishtank.toml +1 -1
  217. flock/themes/flexoki-light.toml +1 -1
  218. flock/themes/floraverse.toml +1 -1
  219. flock/themes/framer.toml +1 -1
  220. flock/themes/galizur.toml +1 -1
  221. flock/themes/github.toml +1 -1
  222. flock/themes/grass.toml +1 -1
  223. flock/themes/grey-green.toml +1 -1
  224. flock/themes/gruvboxlight.toml +1 -1
  225. flock/themes/guezwhoz.toml +1 -1
  226. flock/themes/harper.toml +1 -1
  227. flock/themes/hax0r-blue.toml +1 -1
  228. flock/themes/hopscotch.256.toml +1 -1
  229. flock/themes/ic-green-ppl.toml +1 -1
  230. flock/themes/iceberg-dark.toml +1 -1
  231. flock/themes/japanesque.toml +1 -1
  232. flock/themes/jubi.toml +1 -1
  233. flock/themes/kibble.toml +1 -1
  234. flock/themes/kolorit.toml +1 -1
  235. flock/themes/kurokula.toml +1 -1
  236. flock/themes/materialdesigncolors.toml +1 -1
  237. flock/themes/matrix.toml +1 -1
  238. flock/themes/mellifluous.toml +1 -1
  239. flock/themes/midnight-in-mojave.toml +1 -1
  240. flock/themes/monokai-remastered.toml +1 -1
  241. flock/themes/monokai-soda.toml +1 -1
  242. flock/themes/neon.toml +1 -1
  243. flock/themes/neopolitan.toml +5 -5
  244. flock/themes/nord-light.toml +1 -1
  245. flock/themes/ocean.toml +1 -1
  246. flock/themes/onehalfdark.toml +1 -1
  247. flock/themes/onehalflight.toml +1 -1
  248. flock/themes/palenighthc.toml +1 -1
  249. flock/themes/paulmillr.toml +1 -1
  250. flock/themes/pencildark.toml +1 -1
  251. flock/themes/pnevma.toml +1 -1
  252. flock/themes/purple-rain.toml +1 -1
  253. flock/themes/purplepeter.toml +1 -1
  254. flock/themes/raycast-dark.toml +1 -1
  255. flock/themes/red-sands.toml +1 -1
  256. flock/themes/relaxed.toml +1 -1
  257. flock/themes/retro.toml +1 -1
  258. flock/themes/rose-pine.toml +1 -1
  259. flock/themes/royal.toml +1 -1
  260. flock/themes/ryuuko.toml +1 -1
  261. flock/themes/sakura.toml +1 -1
  262. flock/themes/scarlet-protocol.toml +1 -1
  263. flock/themes/seoulbones-dark.toml +1 -1
  264. flock/themes/shades-of-purple.toml +1 -1
  265. flock/themes/smyck.toml +1 -1
  266. flock/themes/softserver.toml +1 -1
  267. flock/themes/solarized-darcula.toml +1 -1
  268. flock/themes/square.toml +1 -1
  269. flock/themes/sugarplum.toml +1 -1
  270. flock/themes/thayer-bright.toml +1 -1
  271. flock/themes/tokyonight.toml +1 -1
  272. flock/themes/tomorrow.toml +1 -1
  273. flock/themes/ubuntu.toml +1 -1
  274. flock/themes/ultradark.toml +1 -1
  275. flock/themes/ultraviolent.toml +1 -1
  276. flock/themes/unikitty.toml +1 -1
  277. flock/themes/urple.toml +1 -1
  278. flock/themes/vesper.toml +1 -1
  279. flock/themes/vimbones.toml +1 -1
  280. flock/themes/wildcherry.toml +1 -1
  281. flock/themes/wilmersdorf.toml +1 -1
  282. flock/themes/wryan.toml +1 -1
  283. flock/themes/xcodedarkhc.toml +1 -1
  284. flock/themes/xcodelight.toml +1 -1
  285. flock/themes/zenbones-light.toml +1 -1
  286. flock/themes/zenwritten-dark.toml +1 -1
  287. flock/utilities.py +301 -0
  288. flock/utility/output_utility_component.py +226 -0
  289. flock/visibility.py +107 -0
  290. flock_core-0.5.0.dist-info/METADATA +964 -0
  291. flock_core-0.5.0.dist-info/RECORD +525 -0
  292. flock_core-0.5.0.dist-info/entry_points.txt +2 -0
  293. {flock_core-0.4.542.dist-info → flock_core-0.5.0.dist-info}/licenses/LICENSE +1 -1
  294. flock/adapter/__init__.py +0 -14
  295. flock/adapter/azure_adapter.py +0 -68
  296. flock/adapter/chroma_adapter.py +0 -73
  297. flock/adapter/faiss_adapter.py +0 -97
  298. flock/adapter/pinecone_adapter.py +0 -51
  299. flock/adapter/vector_base.py +0 -47
  300. flock/cli/assets/release_notes.md +0 -140
  301. flock/cli/config.py +0 -8
  302. flock/cli/constants.py +0 -36
  303. flock/cli/create_agent.py +0 -1
  304. flock/cli/create_flock.py +0 -280
  305. flock/cli/execute_flock.py +0 -620
  306. flock/cli/load_agent.py +0 -1
  307. flock/cli/load_examples.py +0 -1
  308. flock/cli/load_flock.py +0 -192
  309. flock/cli/load_release_notes.py +0 -20
  310. flock/cli/loaded_flock_cli.py +0 -254
  311. flock/cli/manage_agents.py +0 -459
  312. flock/cli/registry_management.py +0 -889
  313. flock/cli/runner.py +0 -41
  314. flock/cli/settings.py +0 -857
  315. flock/cli/utils.py +0 -135
  316. flock/cli/view_results.py +0 -29
  317. flock/cli/yaml_editor.py +0 -396
  318. flock/config.py +0 -56
  319. flock/core/__init__.py +0 -44
  320. flock/core/api/__init__.py +0 -10
  321. flock/core/api/custom_endpoint.py +0 -45
  322. flock/core/api/endpoints.py +0 -262
  323. flock/core/api/main.py +0 -162
  324. flock/core/api/models.py +0 -101
  325. flock/core/api/run_store.py +0 -224
  326. flock/core/api/runner.py +0 -44
  327. flock/core/api/service.py +0 -214
  328. flock/core/config/flock_agent_config.py +0 -11
  329. flock/core/config/scheduled_agent_config.py +0 -40
  330. flock/core/context/context.py +0 -214
  331. flock/core/context/context_manager.py +0 -40
  332. flock/core/context/context_vars.py +0 -11
  333. flock/core/evaluation/utils.py +0 -395
  334. flock/core/execution/batch_executor.py +0 -369
  335. flock/core/execution/evaluation_executor.py +0 -438
  336. flock/core/execution/local_executor.py +0 -31
  337. flock/core/execution/opik_executor.py +0 -103
  338. flock/core/execution/temporal_executor.py +0 -166
  339. flock/core/flock.py +0 -1003
  340. flock/core/flock_agent.py +0 -1258
  341. flock/core/flock_evaluator.py +0 -60
  342. flock/core/flock_factory.py +0 -513
  343. flock/core/flock_module.py +0 -207
  344. flock/core/flock_registry.py +0 -702
  345. flock/core/flock_router.py +0 -83
  346. flock/core/flock_scheduler.py +0 -166
  347. flock/core/flock_server_manager.py +0 -136
  348. flock/core/interpreter/python_interpreter.py +0 -689
  349. flock/core/logging/live_capture.py +0 -137
  350. flock/core/logging/trace_and_logged.py +0 -59
  351. flock/core/mcp/__init__.py +0 -1
  352. flock/core/mcp/flock_mcp_server.py +0 -640
  353. flock/core/mcp/mcp_client_manager.py +0 -201
  354. flock/core/mcp/types/__init__.py +0 -1
  355. flock/core/mixin/dspy_integration.py +0 -445
  356. flock/core/mixin/prompt_parser.py +0 -125
  357. flock/core/serialization/__init__.py +0 -13
  358. flock/core/serialization/callable_registry.py +0 -52
  359. flock/core/serialization/flock_serializer.py +0 -854
  360. flock/core/serialization/json_encoder.py +0 -41
  361. flock/core/serialization/secure_serializer.py +0 -175
  362. flock/core/serialization/serializable.py +0 -342
  363. flock/core/serialization/serialization_utils.py +0 -409
  364. flock/core/util/file_path_utils.py +0 -223
  365. flock/core/util/hydrator.py +0 -309
  366. flock/core/util/input_resolver.py +0 -141
  367. flock/core/util/loader.py +0 -59
  368. flock/core/util/splitter.py +0 -219
  369. flock/di.py +0 -41
  370. flock/evaluators/__init__.py +0 -1
  371. flock/evaluators/declarative/__init__.py +0 -1
  372. flock/evaluators/declarative/declarative_evaluator.py +0 -217
  373. flock/evaluators/memory/memory_evaluator.py +0 -90
  374. flock/evaluators/test/test_case_evaluator.py +0 -38
  375. flock/evaluators/zep/zep_evaluator.py +0 -59
  376. flock/modules/__init__.py +0 -1
  377. flock/modules/assertion/__init__.py +0 -1
  378. flock/modules/assertion/assertion_module.py +0 -286
  379. flock/modules/callback/__init__.py +0 -1
  380. flock/modules/callback/callback_module.py +0 -91
  381. flock/modules/enterprise_memory/README.md +0 -99
  382. flock/modules/enterprise_memory/enterprise_memory_module.py +0 -526
  383. flock/modules/mem0/__init__.py +0 -1
  384. flock/modules/mem0/mem0_module.py +0 -126
  385. flock/modules/mem0_async/__init__.py +0 -1
  386. flock/modules/mem0_async/async_mem0_module.py +0 -126
  387. flock/modules/memory/__init__.py +0 -1
  388. flock/modules/memory/memory_module.py +0 -429
  389. flock/modules/memory/memory_parser.py +0 -125
  390. flock/modules/memory/memory_storage.py +0 -736
  391. flock/modules/output/__init__.py +0 -1
  392. flock/modules/output/output_module.py +0 -196
  393. flock/modules/performance/__init__.py +0 -1
  394. flock/modules/performance/metrics_module.py +0 -678
  395. flock/modules/zep/__init__.py +0 -1
  396. flock/modules/zep/zep_module.py +0 -192
  397. flock/platform/docker_tools.py +0 -49
  398. flock/platform/jaeger_install.py +0 -86
  399. flock/routers/__init__.py +0 -1
  400. flock/routers/agent/__init__.py +0 -1
  401. flock/routers/agent/agent_router.py +0 -236
  402. flock/routers/agent/handoff_agent.py +0 -58
  403. flock/routers/conditional/conditional_router.py +0 -486
  404. flock/routers/default/__init__.py +0 -1
  405. flock/routers/default/default_router.py +0 -80
  406. flock/routers/feedback/feedback_router.py +0 -114
  407. flock/routers/list_generator/list_generator_router.py +0 -166
  408. flock/routers/llm/__init__.py +0 -1
  409. flock/routers/llm/llm_router.py +0 -365
  410. flock/tools/__init__.py +0 -0
  411. flock/tools/azure_tools.py +0 -781
  412. flock/tools/code_tools.py +0 -167
  413. flock/tools/file_tools.py +0 -149
  414. flock/tools/github_tools.py +0 -157
  415. flock/tools/markdown_tools.py +0 -205
  416. flock/tools/system_tools.py +0 -9
  417. flock/tools/text_tools.py +0 -810
  418. flock/tools/web_tools.py +0 -92
  419. flock/tools/zendesk_tools.py +0 -501
  420. flock/webapp/__init__.py +0 -1
  421. flock/webapp/app/__init__.py +0 -0
  422. flock/webapp/app/api/__init__.py +0 -0
  423. flock/webapp/app/api/agent_management.py +0 -237
  424. flock/webapp/app/api/execution.py +0 -503
  425. flock/webapp/app/api/flock_management.py +0 -125
  426. flock/webapp/app/api/registry_viewer.py +0 -29
  427. flock/webapp/app/chat.py +0 -662
  428. flock/webapp/app/config.py +0 -104
  429. flock/webapp/app/dependencies.py +0 -117
  430. flock/webapp/app/main.py +0 -1086
  431. flock/webapp/app/middleware.py +0 -113
  432. flock/webapp/app/models_ui.py +0 -7
  433. flock/webapp/app/services/__init__.py +0 -0
  434. flock/webapp/app/services/feedback_file_service.py +0 -363
  435. flock/webapp/app/services/flock_service.py +0 -345
  436. flock/webapp/app/services/sharing_models.py +0 -81
  437. flock/webapp/app/services/sharing_store.py +0 -597
  438. flock/webapp/app/templates/theme_mapper.html +0 -326
  439. flock/webapp/app/theme_mapper.py +0 -811
  440. flock/webapp/app/utils.py +0 -85
  441. flock/webapp/run.py +0 -219
  442. flock/webapp/static/css/chat.css +0 -301
  443. flock/webapp/static/css/components.css +0 -167
  444. flock/webapp/static/css/header.css +0 -39
  445. flock/webapp/static/css/layout.css +0 -281
  446. flock/webapp/static/css/sidebar.css +0 -127
  447. flock/webapp/static/css/two-pane.css +0 -48
  448. flock/webapp/templates/base.html +0 -389
  449. flock/webapp/templates/chat.html +0 -152
  450. flock/webapp/templates/chat_settings.html +0 -19
  451. flock/webapp/templates/flock_editor.html +0 -16
  452. flock/webapp/templates/index.html +0 -12
  453. flock/webapp/templates/partials/_agent_detail_form.html +0 -93
  454. flock/webapp/templates/partials/_agent_list.html +0 -18
  455. flock/webapp/templates/partials/_agent_manager_view.html +0 -51
  456. flock/webapp/templates/partials/_agent_tools_checklist.html +0 -14
  457. flock/webapp/templates/partials/_chat_container.html +0 -15
  458. flock/webapp/templates/partials/_chat_messages.html +0 -57
  459. flock/webapp/templates/partials/_chat_settings_form.html +0 -85
  460. flock/webapp/templates/partials/_create_flock_form.html +0 -50
  461. flock/webapp/templates/partials/_dashboard_flock_detail.html +0 -17
  462. flock/webapp/templates/partials/_dashboard_flock_file_list.html +0 -16
  463. flock/webapp/templates/partials/_dashboard_flock_properties_preview.html +0 -28
  464. flock/webapp/templates/partials/_dashboard_upload_flock_form.html +0 -16
  465. flock/webapp/templates/partials/_dynamic_input_form_content.html +0 -22
  466. flock/webapp/templates/partials/_env_vars_table.html +0 -23
  467. flock/webapp/templates/partials/_execution_form.html +0 -127
  468. flock/webapp/templates/partials/_execution_view_container.html +0 -28
  469. flock/webapp/templates/partials/_flock_file_list.html +0 -23
  470. flock/webapp/templates/partials/_flock_properties_form.html +0 -52
  471. flock/webapp/templates/partials/_flock_upload_form.html +0 -16
  472. flock/webapp/templates/partials/_header_flock_status.html +0 -5
  473. flock/webapp/templates/partials/_live_logs.html +0 -13
  474. flock/webapp/templates/partials/_load_manager_view.html +0 -49
  475. flock/webapp/templates/partials/_registry_table.html +0 -25
  476. flock/webapp/templates/partials/_registry_viewer_content.html +0 -70
  477. flock/webapp/templates/partials/_results_display.html +0 -78
  478. flock/webapp/templates/partials/_settings_env_content.html +0 -9
  479. flock/webapp/templates/partials/_settings_theme_content.html +0 -14
  480. flock/webapp/templates/partials/_settings_view.html +0 -36
  481. flock/webapp/templates/partials/_share_chat_link_snippet.html +0 -11
  482. flock/webapp/templates/partials/_share_link_snippet.html +0 -35
  483. flock/webapp/templates/partials/_sidebar.html +0 -74
  484. flock/webapp/templates/partials/_structured_data_view.html +0 -40
  485. flock/webapp/templates/partials/_theme_preview.html +0 -36
  486. flock/webapp/templates/registry_viewer.html +0 -84
  487. flock/webapp/templates/shared_run_page.html +0 -140
  488. flock/workflow/__init__.py +0 -0
  489. flock/workflow/activities.py +0 -237
  490. flock/workflow/agent_activities.py +0 -24
  491. flock/workflow/agent_execution_activity.py +0 -240
  492. flock/workflow/flock_workflow.py +0 -225
  493. flock/workflow/temporal_config.py +0 -96
  494. flock/workflow/temporal_setup.py +0 -60
  495. flock_core-0.4.542.dist-info/METADATA +0 -676
  496. flock_core-0.4.542.dist-info/RECORD +0 -572
  497. flock_core-0.4.542.dist-info/entry_points.txt +0 -2
  498. /flock/{core/logging → logging}/formatters/themes.py +0 -0
  499. /flock/{core/logging → logging}/span_middleware/baggage_span_processor.py +0 -0
  500. /flock/{core/mcp → mcp}/util/__init__.py +0 -0
  501. {flock_core-0.4.542.dist-info → flock_core-0.5.0.dist-info}/WHEEL +0 -0
@@ -0,0 +1,778 @@
1
+ # Flock Flow Dashboard
2
+
3
+ A real-time visualization dashboard for monitoring and controlling Flock Flow agent orchestration systems. Built with modern web technologies to provide an intuitive, high-performance interface for observing multi-agent workflows.
4
+
5
+ ## Overview
6
+
7
+ The Flock Flow Dashboard provides real-time visibility into your agent orchestration system through an interactive graph-based interface. Watch agents activate, messages flow, and data transform in real-time as your multi-agent system operates.
8
+
9
+ The dashboard offers two complementary visualization modes:
10
+ - **Agent View**: Shows agents as nodes with message flows as edges - perfect for understanding agent communication patterns
11
+ - **Blackboard View**: Shows messages as nodes with data transformations as edges - ideal for tracking data lineage and transformations
12
+
13
+ ## Features
14
+
15
+ ### Real-Time Visualization
16
+ - **WebSocket-Based Updates**: Live streaming of agent activations, message publications, and system events
17
+ - **Dual Visualization Modes**: Switch between agent-centric and message-centric views
18
+ - **Interactive Graph**: Drag nodes, zoom, pan, and explore your system's topology
19
+ - **Auto-Layout**: Intelligent graph layout using the Dagre algorithm for optimal node positioning
20
+
21
+ ### Advanced Filtering
22
+ - **Correlation ID Tracking**: Filter all views by correlation ID to trace individual workflows
23
+ - **Time Range Filtering**: Focus on specific time windows with preset ranges (last 5/10/60 minutes) or custom ranges
24
+ - **Active Filter Pills**: Visual indicators of active filters with one-click removal
25
+ - **Autocomplete Search**: Quick correlation ID selection with metadata preview
26
+
27
+ ### Node Details & Monitoring
28
+ - **Floating Detail Windows**: Double-click any node to open a draggable, resizable detail window
29
+ - **Live Output Tab**: Stream real-time output from agents with color-coded message types
30
+ - **Message History**: View all consumed and published messages with full JSON payloads
31
+ - **Run Status**: Track agent execution history with timing, status, and metrics
32
+ - **Multi-Window Support**: Open multiple detail windows simultaneously for comparison
33
+
34
+ ### Extensible Module System
35
+ - **Custom Visualizations**: Add specialized views via the module system
36
+ - **Historical Blackboard Module**: Persisted artifact browser with retention insights
37
+ - **Trace Viewer Module**: Jaeger-style distributed tracing with timeline and statistics
38
+ - **Context Menu Integration**: Right-click to add modules at any location
39
+ - **Persistent Layout**: Module positions and sizes are saved across sessions
40
+
41
+ ### Trace Viewer Module 🔍
42
+
43
+ The **Trace Viewer** provides production-grade distributed tracing powered by OpenTelemetry and DuckDB, enabling deep debugging and performance analysis.
44
+
45
+ #### Features
46
+
47
+ - **Timeline View**: Waterfall visualization showing span hierarchies and execution order
48
+ - Parent-child relationships with visual indentation
49
+ - Service-specific color coding for easy identification
50
+ - Duration bars proportional to execution time
51
+ - Hover tooltips with detailed timing information
52
+ - Expand/collapse nested spans
53
+
54
+ - **Statistics View**: Tabular view with comprehensive metrics
55
+ - Sortable columns (name, duration, status)
56
+ - Quick filtering and search
57
+ - Status indicators (OK, ERROR)
58
+ - Export capabilities
59
+
60
+ - **Full I/O Capture**: Complete input/output data for every operation
61
+ - All function arguments captured as JSON
62
+ - Return values fully serialized
63
+ - Automatic deep object serialization
64
+ - No truncation (except strings >5000 chars)
65
+
66
+ - **JSON Viewer**: Beautiful, interactive JSON exploration
67
+ - Syntax highlighting with theme integration
68
+ - Collapsible tree structure
69
+ - **Expand All / Collapse All** buttons for quick navigation
70
+ - Supports nested objects and arrays
71
+ - Preserves data types (strings, numbers, booleans)
72
+
73
+ - **Multi-Trace Support**: Open multiple traces simultaneously
74
+ - Compare execution patterns side-by-side
75
+ - Toggle traces on/off
76
+ - Independent expansion states
77
+
78
+ - **Performance**: Built on DuckDB (10-100x faster than SQLite)
79
+ - Sub-millisecond query times
80
+ - Handles thousands of spans efficiently
81
+ - SQL-powered analytics backend
82
+
83
+ #### Usage
84
+
85
+ 1. **Enable Tracing** in your Flock application:
86
+ ```bash
87
+ export FLOCK_AUTO_TRACE=true
88
+ export FLOCK_TRACE_FILE=true
89
+ ```
90
+
91
+ 2. **Run Your Application** to generate traces
92
+ ```bash
93
+ python your_flock_app.py
94
+ ```
95
+
96
+ 3. **Open Trace Viewer** in the dashboard:
97
+ - Click "Add Module" or right-click canvas
98
+ - Select "Trace Viewer"
99
+ - Browse and select traces to visualize
100
+
101
+ 4. **Analyze Traces**:
102
+ - Click trace rows to expand timeline/statistics
103
+ - Use search to filter by operation name
104
+ - Expand JSON attributes to inspect I/O data
105
+ - Click "Expand All" to see complete JSON structures
106
+
107
+ #### What Gets Traced
108
+
109
+ Every traced operation captures:
110
+ - ✅ **Input Arguments**: All function parameters (excluding `self`/`cls`)
111
+ - ✅ **Output Values**: Complete return values
112
+ - ✅ **Timing Data**: Start time, end time, duration in milliseconds
113
+ - ✅ **Span Hierarchy**: Parent-child relationships for call stacks
114
+ - ✅ **Service Names**: Automatically extracted from class names
115
+ - ✅ **Status Codes**: OK, ERROR, UNSET with error messages
116
+ - ✅ **Metadata**: Correlation IDs, agent names, context info
117
+
118
+ #### Tips
119
+
120
+ - **Finding Bottlenecks**: Sort Statistics view by duration (descending)
121
+ - **Error Investigation**: Look for red ERROR status indicators
122
+ - **I/O Debugging**: Expand JSON viewers to see exact inputs that caused issues
123
+ - **Multi-Trace Comparison**: Open related traces to compare execution patterns
124
+ - **JSON Navigation**: Use "Expand All" for complex nested structures
125
+
126
+ ### Historical Blackboard Module 📚
127
+
128
+ The new Historical Blackboard module brings persisted artifacts into the dashboard so operators can rewind the blackboard, not just watch the live firehose.
129
+
130
+ #### Highlights
131
+
132
+ - **SQLite-first loading**: Fetches paginated artifacts before WebSocket replay, so the graph and detail views start with real history.
133
+ - **Rich filtering**: Mirrors server-side `FilterConfig` capabilities (type, producer, tags, visibility, correlation, time range) with multi-select controls and saved presets.
134
+ - **Consumption awareness**: Displays who consumed each artifact, run IDs, and consumption timestamps—ideal for reconciling downstream behaviour.
135
+ - **Retention transparency**: Inline banners show the oldest/latest artifacts on disk and whether additional data can be loaded.
136
+ - **Virtualized table**: Efficiently scroll through thousands of artifacts with keyboard navigation, quick selection, and payload inspection via the JSON renderer.
137
+
138
+ Launch the module via the context menu (or `Add Module → Historical Blackboard`) after running `examples/03-the-dashboard/04_persistent_pizza_dashboard.py` against a SQLite-backed orchestrator.
139
+
140
+ ### Modern UI/UX
141
+ - **Glassmorphism Design**: Modern dark theme with semi-transparent surfaces and blur effects
142
+ - **Keyboard Shortcuts**: Navigate efficiently with Ctrl+M, Ctrl+F, and Esc
143
+ - **Responsive Layout**: Adapts to different screen sizes and orientations
144
+ - **Smooth Animations**: Polished transitions and visual feedback
145
+
146
+ ## Getting Started
147
+
148
+ ### Prerequisites
149
+
150
+ - **Node.js**: Version 18 or higher
151
+ - **Package Manager**: npm (included with Node.js) or yarn
152
+ - **Flock Flow Backend**: Running orchestrator instance (typically on port 8344)
153
+
154
+ ### Installation
155
+
156
+ 1. Navigate to the frontend directory:
157
+ ```bash
158
+ cd frontend
159
+ ```
160
+
161
+ 2. Install dependencies:
162
+ ```bash
163
+ npm install
164
+ ```
165
+
166
+ ### Running the Development Server
167
+
168
+ Start the Vite development server:
169
+
170
+ ```bash
171
+ npm run dev
172
+ ```
173
+
174
+ The dashboard will be available at `http://localhost:5173`
175
+
176
+ The dev server includes:
177
+ - Hot module replacement (HMR) for instant updates
178
+ - Proxy configuration for API and WebSocket connections
179
+ - Source maps for debugging
180
+ - Fast refresh for React components
181
+
182
+ ### Building for Production
183
+
184
+ Create an optimized production build:
185
+
186
+ ```bash
187
+ npm run build
188
+ ```
189
+
190
+ This will:
191
+ - Compile TypeScript to optimized JavaScript
192
+ - Bundle and minify all assets
193
+ - Generate source maps
194
+ - Output to the `dist/` directory
195
+
196
+ To preview the production build locally:
197
+
198
+ ```bash
199
+ npm run preview
200
+ ```
201
+
202
+ ### Environment Configuration
203
+
204
+ The dashboard can be configured via environment variables:
205
+
206
+ ```bash
207
+ # .env file
208
+ VITE_WS_URL=ws://localhost:8344/ws
209
+ VITE_API_URL=http://localhost:8344/api
210
+ ```
211
+
212
+ If not specified, defaults to `localhost:8344`.
213
+
214
+ ## Design System
215
+
216
+ The dashboard follows a comprehensive design system documented in [`docs/DESIGN_SYSTEM.md`](/Users/ara/Work/flock-flow/frontend/docs/DESIGN_SYSTEM.md).
217
+
218
+ ### Design Philosophy
219
+
220
+ 1. **Dark-First Design**: Optimized for extended viewing sessions with reduced eye strain
221
+ 2. **Information Hierarchy**: Critical data accessible within 5 seconds
222
+ 3. **Premium Aesthetic**: Modern, sleek, professional appearance inspired by AutoGen Studio and Flowise AI
223
+ 4. **Depth & Dimension**: Glassmorphism and elevation for spatial clarity
224
+ 5. **Purposeful Motion**: Smooth, meaningful animations that enhance UX
225
+
226
+ ### Color System
227
+
228
+ The design uses a carefully crafted color palette:
229
+ - **Backgrounds**: Layered depth from `#0a0a0b` (base) to `#2a2a32` (floating windows)
230
+ - **Primary Brand**: Indigo (`#6366f1`) for actions and selections
231
+ - **Status Colors**: Success (green), Warning (amber), Error (red), Info (blue)
232
+ - **Graph-Specific**: Distinct colors for agent nodes (blue border) and message nodes (amber border)
233
+
234
+ All color combinations meet WCAG 2.1 AA accessibility standards with minimum 4.5:1 contrast ratios.
235
+
236
+ ### Typography
237
+
238
+ - **Font Family**: Inter for UI text, JetBrains Mono for code
239
+ - **Scale**: 8px base grid with systematic font sizes from 10px to 72px
240
+ - **Weights**: Light (300) to Bold (700) for hierarchy
241
+ - **Line Heights**: Optimized for readability (1.1 tight to 2.0 loose)
242
+
243
+ See [`DESIGN_SYSTEM.md`](/Users/ara/Work/flock-flow/frontend/docs/DESIGN_SYSTEM.md) for complete specifications.
244
+
245
+ ## Architecture
246
+
247
+ ### High-Level Structure
248
+
249
+ The dashboard is built as a single-page application (SPA) using React with TypeScript:
250
+
251
+ ```
252
+ ┌─────────────────────────────────────────────────┐
253
+ │ DashboardLayout │
254
+ ├─────────────────────────────────────────────────┤
255
+ │ Header (Mode Toggle, Controls) │
256
+ │ FilterBar (Correlation ID, Time Range) │
257
+ │ ┌──────────────────────┬─────────────────────┐│
258
+ │ │ GraphCanvas │ Controls Sidebar ││
259
+ │ │ (React Flow) │ (Publish/Invoke) ││
260
+ │ │ │ ││
261
+ │ │ - Agent Nodes │ ││
262
+ │ │ - Message Nodes │ ││
263
+ │ │ - Edges │ ││
264
+ │ │ - MiniMap │ ││
265
+ │ └──────────────────────┴─────────────────────┘│
266
+ │ DetailWindowContainer (Floating Windows) │
267
+ │ ModuleWindows (Custom Visualizations) │
268
+ └─────────────────────────────────────────────────┘
269
+ ```
270
+
271
+ ### State Management (Zustand)
272
+
273
+ The application uses Zustand for centralized state management with 6 specialized stores:
274
+
275
+ 1. **graphStore**: Agents, messages, events, runs, nodes, edges
276
+ 2. **uiStore**: Visualization mode, selection state, detail windows
277
+ 3. **filterStore**: Correlation ID filter, time range filter
278
+ 4. **streamStore**: Live streaming output from agents
279
+ 5. **wsStore**: WebSocket connection state and health
280
+ 6. **moduleStore**: Module instances and configurations
281
+
282
+ Each store is:
283
+ - Type-safe with TypeScript interfaces
284
+ - Devtools-enabled for debugging
285
+ - Persisted where appropriate (UI preferences, filters)
286
+
287
+ ### Data Flow
288
+
289
+ ```
290
+ WebSocket Connection
291
+
292
+ Event Reception (websocket.ts)
293
+
294
+ Store Updates (graphStore, streamStore)
295
+
296
+ React Components Re-render
297
+
298
+ Graph Regeneration (generateAgentViewGraph / generateBlackboardViewGraph)
299
+
300
+ React Flow Rendering
301
+ ```
302
+
303
+ ### Key Services
304
+
305
+ - **websocket.ts**: Manages WebSocket connection with auto-reconnection and exponential backoff
306
+ - **indexeddb.ts**: Browser-native persistence with 7 object stores and LRU eviction
307
+ - **layout.ts**: Dagre-based automatic graph layout algorithm
308
+ - **api.ts**: REST API client for publish/invoke operations
309
+
310
+ ## Key Components
311
+
312
+ ### GraphCanvas
313
+ The main visualization component using React Flow v12.
314
+
315
+ **Features**:
316
+ - Custom node types (AgentNode, MessageNode)
317
+ - Custom edge types (MessageFlowEdge, TransformEdge)
318
+ - Drag-and-drop node positioning with persistence
319
+ - Double-click to open detail windows
320
+ - Right-click context menu for auto-layout and modules
321
+
322
+ **Location**: `src/components/graph/GraphCanvas.tsx`
323
+
324
+ ### AgentNode
325
+ Displays agent information in the graph.
326
+
327
+ **Shows**:
328
+ - Agent name
329
+ - Status indicator (running/idle/error) with color coding
330
+ - Message type subscriptions as badges
331
+ - Consumed/published message counts
332
+
333
+ **Interactions**:
334
+ - Drag to reposition
335
+ - Double-click to open detail window
336
+ - Click to select
337
+
338
+ **Location**: `src/components/graph/AgentNode.tsx`
339
+
340
+ ### MessageNode
341
+ Displays message information in blackboard view.
342
+
343
+ **Shows**:
344
+ - Message type
345
+ - Correlation ID
346
+ - Content preview (first 50 characters)
347
+ - Timestamp
348
+
349
+ **Interactions**:
350
+ - Drag to reposition
351
+ - Double-click to open detail window
352
+ - Click to select
353
+
354
+ **Location**: `src/components/graph/MessageNode.tsx`
355
+
356
+ ### NodeDetailWindow
357
+ Draggable, resizable floating window with three tabs.
358
+
359
+ **Tabs**:
360
+ 1. **Live Output**: Real-time streaming output with color-coded types
361
+ 2. **Message History**: Table of consumed/published messages
362
+ 3. **Run Status**: Historical execution runs with metrics
363
+
364
+ **Features**:
365
+ - Virtualized rendering for 1000+ output lines
366
+ - Expandable JSON payloads
367
+ - Auto-scroll to bottom (toggleable)
368
+ - Persistent position and size
369
+
370
+ **Location**: `src/components/details/NodeDetailWindow.tsx`
371
+
372
+ ### FilterBar
373
+ Global filtering interface in the dashboard header.
374
+
375
+ **Filters**:
376
+ - **Correlation ID**: Autocomplete dropdown with recent IDs
377
+ - **Time Range**: Presets (5m, 10m, 1h) or custom range
378
+
379
+ **Features**:
380
+ - Active filter pills with remove buttons
381
+ - Keyboard shortcut (Ctrl+F) to focus
382
+ - Real-time filter application
383
+ - Combined filter strategy
384
+
385
+ **Location**: `src/components/filters/FilterBar.tsx`
386
+
387
+ ### EventLogModule
388
+ Extensible table view for detailed event inspection.
389
+
390
+ **Features**:
391
+ - Sortable columns (timestamp, type, agent, correlation ID)
392
+ - Expandable rows for full JSON payloads
393
+ - Filtering integration with global filters
394
+ - Dark theme with glassmorphism
395
+ - Empty state messaging
396
+
397
+ **Location**: `src/components/modules/EventLogModule.tsx`
398
+
399
+ ### ModuleWindow
400
+ Generic draggable, resizable window wrapper for modules.
401
+
402
+ **Features**:
403
+ - Position and size persistence
404
+ - Close button
405
+ - Dark theme integration
406
+ - Z-index management
407
+
408
+ **Location**: `src/components/modules/ModuleWindow.tsx`
409
+
410
+ ## Keyboard Shortcuts ⌨️
411
+
412
+ The dashboard supports comprehensive keyboard shortcuts for efficient navigation and control:
413
+
414
+ ### Panel Controls
415
+
416
+ | Shortcut | Action | Description |
417
+ |----------|--------|-------------|
418
+ | `Ctrl+Shift+P` (or `Cmd+Shift+P` on Mac) | Toggle Publish Panel | Open/close the publish control panel |
419
+ | `Ctrl+Shift+D` (or `Cmd+Shift+D` on Mac) | Toggle Agent Details | Show/hide agent detail windows for all agents |
420
+ | `Ctrl+Shift+F` (or `Cmd+Shift+F` on Mac) | Toggle Filters Panel | Open/close the filters panel |
421
+ | `Ctrl+,` (or `Cmd+,` on Mac) | Toggle Settings Panel | Open/close the settings panel |
422
+
423
+ ### Navigation
424
+
425
+ | Shortcut | Action | Description |
426
+ |----------|--------|-------------|
427
+ | `Ctrl+M` (or `Cmd+M` on Mac) | Toggle View Mode | Switch between Agent View and Blackboard View |
428
+ | `Ctrl+F` (or `Cmd+F` on Mac) | Focus Filter | Focus the correlation ID filter input for quick searching |
429
+ | `Esc` | Close Windows | Close all open detail windows and panels (priority order) |
430
+
431
+ ### Help
432
+
433
+ | Shortcut | Action | Description |
434
+ |----------|--------|-------------|
435
+ | `Ctrl+/` (or `Cmd+/` on Mac) | Show Keyboard Shortcuts | Open the keyboard shortcuts help dialog |
436
+
437
+ **Implementation**: See `src/hooks/useKeyboardShortcuts.ts` and `src/components/common/KeyboardShortcutsDialog.tsx`
438
+
439
+ ### Accessibility Features
440
+
441
+ The dashboard is **WCAG 2.1 AA compliant** with:
442
+ - All buttons have proper ARIA attributes (`aria-pressed`, `aria-label`)
443
+ - Dynamic state indication for screen readers
444
+ - Keyboard-only navigation support
445
+ - Platform-aware shortcuts (⌘ on Mac, Ctrl on Windows/Linux)
446
+ - Help button (?) in toolbar for discoverability
447
+
448
+ ### Using Keyboard Shortcuts
449
+
450
+ **Quick Access to Help**:
451
+ ```
452
+ Press Ctrl+/ to see all available keyboard shortcuts in a beautiful modal dialog
453
+ ```
454
+
455
+ **Toggle Panels**:
456
+ ```
457
+ Press Ctrl+Shift+P to open/close the Publish panel
458
+ Press Ctrl+Shift+D to show/hide all agent detail windows
459
+ Press Ctrl+Shift+F to open/close filters
460
+ Press Ctrl+, to open/close settings
461
+ ```
462
+
463
+ **Navigate Views**:
464
+ ```
465
+ Press Ctrl+M to quickly switch between Agent View and Blackboard View
466
+ Press Ctrl+F to focus the filter input
467
+ ```
468
+
469
+ **Close Everything**:
470
+ ```
471
+ Press Esc to close panels and windows (follows priority: Settings → Publish → Filters → Detail Windows)
472
+ ```
473
+
474
+ ## Development
475
+
476
+ ### Adding New Features
477
+
478
+ The dashboard is designed for extensibility. Here are common development tasks:
479
+
480
+ #### Adding a New Module
481
+
482
+ 1. Create the module component:
483
+ ```typescript
484
+ // src/components/modules/MyModule.tsx
485
+ import { ModuleContext } from './ModuleRegistry';
486
+
487
+ interface MyModuleProps {
488
+ context: ModuleContext;
489
+ }
490
+
491
+ export const MyModule: React.FC<MyModuleProps> = ({ context }) => {
492
+ const { agents, messages, events } = context;
493
+
494
+ return (
495
+ <div>
496
+ {/* Your module UI */}
497
+ </div>
498
+ );
499
+ };
500
+ ```
501
+
502
+ 2. Register the module:
503
+ ```typescript
504
+ // src/components/modules/registerModules.ts
505
+ import { moduleRegistry } from './ModuleRegistry';
506
+ import { MyModule } from './MyModule';
507
+
508
+ moduleRegistry.register({
509
+ id: 'my-module',
510
+ name: 'My Module',
511
+ icon: '📊',
512
+ component: MyModule,
513
+ defaultSize: { width: 600, height: 400 },
514
+ });
515
+ ```
516
+
517
+ 3. The module will appear in the right-click context menu automatically.
518
+
519
+ #### Adding a New Node Type
520
+
521
+ 1. Create the node component in `src/components/graph/`
522
+ 2. Register in `GraphCanvas.tsx`:
523
+ ```typescript
524
+ const nodeTypes = useMemo(
525
+ () => ({
526
+ agent: AgentNode,
527
+ message: MessageNode,
528
+ myCustomNode: MyCustomNode, // Add here
529
+ }),
530
+ []
531
+ );
532
+ ```
533
+
534
+ 3. Update graph generation logic in `graphStore.ts`
535
+
536
+ #### Adding a New Filter
537
+
538
+ 1. Create the filter component in `src/components/filters/`
539
+ 2. Add state to `filterStore.ts`
540
+ 3. Integrate into `FilterBar.tsx`
541
+ 4. Update filter application logic in `graphStore.ts`
542
+
543
+ ### Testing
544
+
545
+ The dashboard has comprehensive test coverage (367 tests):
546
+
547
+ ```bash
548
+ # Run all tests
549
+ npm run test
550
+
551
+ # Run specific test suite
552
+ npm run test graphStore.test.ts
553
+
554
+ # Run with UI
555
+ npm run test:ui
556
+
557
+ # Run with coverage
558
+ npm run test -- --coverage
559
+ ```
560
+
561
+ **Test Categories**:
562
+ - **Unit Tests**: Component rendering, state management, utilities
563
+ - **Integration Tests**: Multi-component interactions, data flow
564
+ - **E2E Tests**: Critical user scenarios, performance benchmarks
565
+
566
+ **Key Test Files**:
567
+ - `src/store/*.test.ts` - State management tests
568
+ - `src/components/**/*.test.tsx` - Component tests
569
+ - `src/__tests__/integration/*.test.tsx` - Integration tests
570
+ - `src/__tests__/e2e/*.test.tsx` - End-to-end tests
571
+
572
+ ### Linting and Type Checking
573
+
574
+ ```bash
575
+ # Type check without emitting files
576
+ npm run type-check
577
+
578
+ # The project uses TypeScript strict mode
579
+ # All code must compile with zero type errors
580
+ ```
581
+
582
+ ### Code Style Guidelines
583
+
584
+ 1. **TypeScript**: Use strict mode, avoid `any` types
585
+ 2. **React**: Functional components with hooks
586
+ 3. **State**: Use Zustand stores, not local state for shared data
587
+ 4. **Styling**: Inline styles using CSS variables from design system
588
+ 5. **Performance**: Memoize expensive computations, use React.memo sparingly
589
+ 6. **Testing**: Write tests for new features, maintain coverage
590
+
591
+ ## Troubleshooting
592
+
593
+ ### Dashboard Not Loading
594
+
595
+ **Symptom**: Blank screen or loading spinner
596
+
597
+ **Solutions**:
598
+ 1. Check browser console for errors (F12)
599
+ 2. Verify backend is running on port 8344
600
+ 3. Check WebSocket connection status in UI
601
+ 4. Clear IndexedDB: Open DevTools → Application → IndexedDB → Delete
602
+ 5. Clear localStorage: `localStorage.clear()` in console
603
+
604
+ ### WebSocket Connection Issues
605
+
606
+ **Symptom**: "Disconnected" status indicator
607
+
608
+ **Solutions**:
609
+ 1. Verify backend WebSocket endpoint is accessible: `ws://localhost:8344/ws`
610
+ 2. Check for CORS issues in browser console
611
+ 3. Check network tab for WebSocket connection attempts
612
+ 4. Restart the backend server
613
+ 5. Dashboard will auto-reconnect with exponential backoff
614
+
615
+ ### Graph Performance Issues
616
+
617
+ **Symptom**: Slow rendering or laggy interactions
618
+
619
+ **Solutions**:
620
+ 1. Reduce node count by filtering (use correlation ID or time range)
621
+ 2. Close unnecessary detail windows
622
+ 3. Check browser performance tab for bottlenecks
623
+ 4. Clear old data: Click "Clear all dashboard data" button in header
624
+ 5. Disable browser extensions that may interfere
625
+
626
+ ### Filter Not Working
627
+
628
+ **Symptom**: Graph not updating when filter applied
629
+
630
+ **Solutions**:
631
+ 1. Ensure filter is active (check filter pills)
632
+ 2. Verify data exists for the filter criteria
633
+ 3. Check browser console for errors
634
+ 4. Clear filters and re-apply
635
+ 5. Refresh the page
636
+
637
+ ### Detail Window Not Opening
638
+
639
+ **Symptom**: Double-click does not open window
640
+
641
+ **Solutions**:
642
+ 1. Try single-clicking first to select the node
643
+ 2. Check if maximum window limit reached (close some windows)
644
+ 3. Check browser console for errors
645
+ 4. Verify node data exists in store
646
+
647
+ ### IndexedDB Quota Exceeded
648
+
649
+ **Symptom**: Warning about storage quota
650
+
651
+ **Solutions**:
652
+ 1. Dashboard uses LRU eviction automatically at 80% quota
653
+ 2. Manually clear old data using "Clear all dashboard data" button
654
+ 3. Check browser storage settings
655
+ 4. Dashboard targets 60% quota after eviction
656
+
657
+ ### Build Errors
658
+
659
+ **Symptom**: `npm run build` fails
660
+
661
+ **Solutions**:
662
+ 1. Run `npm install` to ensure dependencies are up-to-date
663
+ 2. Check for TypeScript errors: `npm run type-check`
664
+ 3. Clear node_modules and reinstall: `rm -rf node_modules && npm install`
665
+ 4. Check Node.js version (must be 18+)
666
+
667
+ ### Common Error Messages
668
+
669
+ **"WebSocket connection failed"**
670
+ - Backend is not running or not accessible
671
+ - Check `VITE_WS_URL` environment variable
672
+
673
+ **"Failed to fetch artifact types"**
674
+ - REST API endpoint not available
675
+ - Check `VITE_API_URL` environment variable
676
+
677
+ **"QuotaExceededError"**
678
+ - Browser storage full
679
+ - LRU eviction will trigger automatically
680
+ - Manually clear data if needed
681
+
682
+ ## Performance Targets
683
+
684
+ The dashboard is optimized for high performance:
685
+
686
+ | Metric | Target | Description |
687
+ |--------|--------|-------------|
688
+ | Initial Render | <200ms | Time to first paint |
689
+ | Graph Regeneration | <100ms | View mode switch or filter application |
690
+ | Position Save | <50ms | Node position persistence after drag |
691
+ | Position Load | <100ms | Restore positions on startup |
692
+ | WebSocket Latency | <50ms | Event processing time |
693
+ | Filter Application | <100ms | Filter criteria change to graph update |
694
+ | Autocomplete Response | <50ms | Correlation ID search results |
695
+
696
+ **Actual Performance**: All targets consistently met, with initial render averaging 8.9ms (22x faster than target).
697
+
698
+ ## Browser Support
699
+
700
+ The dashboard requires a modern browser with support for:
701
+ - **ES2020+** JavaScript features
702
+ - **WebSocket API** for real-time updates
703
+ - **IndexedDB API** for persistence
704
+ - **CSS Grid and Flexbox** for layout
705
+ - **CSS Custom Properties** (variables) for theming
706
+
707
+ **Recommended Browsers**:
708
+ - Chrome/Edge 90+
709
+ - Firefox 88+
710
+ - Safari 14+
711
+
712
+ ## Contributing
713
+
714
+ We welcome contributions! Please follow these guidelines:
715
+
716
+ 1. **Code Style**: Follow existing patterns, use TypeScript strict mode
717
+ 2. **Testing**: Write tests for new features, maintain coverage
718
+ 3. **Documentation**: Update README and DESIGN_SYSTEM.md as needed
719
+ 4. **Performance**: Keep within performance targets
720
+ 5. **Accessibility**: Maintain WCAG 2.1 AA compliance
721
+
722
+ ### Development Workflow
723
+
724
+ 1. Fork the repository
725
+ 2. Create a feature branch: `git checkout -b feature/my-feature`
726
+ 3. Make changes with tests
727
+ 4. Run tests: `npm run test`
728
+ 5. Type check: `npm run type-check`
729
+ 6. **Build production bundle: `npm run build`** ⚠️ **REQUIRED - MUST pass without errors!**
730
+ 7. Commit changes: `git commit -m "feat: add my feature"`
731
+ 8. Push to branch: `git push origin feature/my-feature`
732
+ 9. Create a pull request
733
+
734
+ ### 🚨 Critical Build Requirement
735
+
736
+ **Before committing any UI/frontend changes:**
737
+
738
+ ```bash
739
+ npm run build
740
+ ```
741
+
742
+ **This MUST complete successfully with:**
743
+ - ✅ Zero TypeScript compilation errors
744
+ - ✅ Zero linting errors
745
+ - ✅ No runtime errors in production build
746
+
747
+ **Failure to build is a blocking issue - do not commit broken builds!**
748
+
749
+ The build process:
750
+ 1. Compiles TypeScript (`tsc`)
751
+ 2. Bundles and optimizes with Vite
752
+ 3. Outputs to `dist/` directory
753
+ 4. Shows any errors or warnings
754
+
755
+ If the build fails, fix all errors before committing. Common issues:
756
+ - TypeScript type errors (check with `npm run type-check`)
757
+ - Missing dependencies (run `npm install`)
758
+ - Import errors or circular dependencies
759
+ - Invalid JSX or syntax errors
760
+
761
+ ## License
762
+
763
+ MIT License - see LICENSE file for details
764
+
765
+ ## Additional Resources
766
+
767
+ - **Design System**: [`docs/DESIGN_SYSTEM.md`](/Users/ara/Work/flock-flow/frontend/docs/DESIGN_SYSTEM.md)
768
+ - **Product Requirements**: `docs/specs/003-real-time-dashboard/PRD.md`
769
+ - **Solution Design**: `docs/specs/003-real-time-dashboard/SDD.md`
770
+ - **Implementation Plan**: `docs/specs/003-real-time-dashboard/PLAN.md`
771
+ - **Backend Documentation**: `../README.md`
772
+
773
+ ## Support
774
+
775
+ For issues, questions, or contributions:
776
+ - Open an issue on GitHub
777
+ - Check existing documentation
778
+ - Review test files for usage examples