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,13 @@
1
+ import React from 'react';
2
+ import TraceModuleJaeger from './TraceModuleJaeger';
3
+ import { ModuleContext } from './ModuleRegistry';
4
+
5
+ interface TraceModuleJaegerWrapperProps {
6
+ context: ModuleContext;
7
+ }
8
+
9
+ const TraceModuleJaegerWrapper: React.FC<TraceModuleJaegerWrapperProps> = ({ context }) => {
10
+ return <TraceModuleJaeger context={context} />;
11
+ };
12
+
13
+ export default TraceModuleJaegerWrapper;
@@ -0,0 +1,29 @@
1
+ import { moduleRegistry } from './ModuleRegistry';
2
+ import TraceModuleJaegerWrapper from './TraceModuleJaegerWrapper';
3
+ import HistoricalArtifactsModuleWrapper from './HistoricalArtifactsModuleWrapper';
4
+
5
+ /**
6
+ * Register all available modules
7
+ * This should be called during application initialization
8
+ */
9
+ export function registerModules(): void {
10
+ // Register Trace Viewer with Timeline, Statistics, RED Metrics, and Dependencies
11
+ moduleRegistry.register({
12
+ id: 'traceViewerJaeger',
13
+ name: 'Trace Viewer',
14
+ description: 'Timeline, Statistics, RED Metrics, and Dependencies',
15
+ icon: '🔎',
16
+ component: TraceModuleJaegerWrapper,
17
+ });
18
+
19
+ moduleRegistry.register({
20
+ id: 'historicalArtifacts',
21
+ name: 'Historical Blackboard',
22
+ description: 'Browse persisted artifacts and retention metrics',
23
+ icon: '📚',
24
+ component: HistoricalArtifactsModuleWrapper,
25
+ });
26
+
27
+ // Future modules can be registered here
28
+ // moduleRegistry.register({ ... });
29
+ }
@@ -0,0 +1,175 @@
1
+ /**
2
+ * Advanced Settings Tab
3
+ *
4
+ * Power-user settings:
5
+ * - Layout direction (top-bottom vs left-right) for manual layout
6
+ * - Node and rank spacing for manual layout algorithm
7
+ * - Debug mode (show node IDs, verbose logging)
8
+ * - Performance mode (disable animations/effects)
9
+ */
10
+
11
+ import React, { useEffect, useState } from 'react';
12
+ import { useSettingsStore } from '../../store/settingsStore';
13
+
14
+ const AdvancedSettings: React.FC = () => {
15
+ const layoutDirection = useSettingsStore((state) => state.advanced.layoutDirection);
16
+ const nodeSpacing = useSettingsStore((state) => state.advanced.nodeSpacing);
17
+ const rankSpacing = useSettingsStore((state) => state.advanced.rankSpacing);
18
+ const debugMode = useSettingsStore((state) => state.advanced.debugMode);
19
+ const performanceMode = useSettingsStore((state) => state.advanced.performanceMode);
20
+
21
+ const setLayoutDirection = useSettingsStore((state) => state.setLayoutDirection);
22
+ const setNodeSpacing = useSettingsStore((state) => state.setNodeSpacing);
23
+ const setRankSpacing = useSettingsStore((state) => state.setRankSpacing);
24
+ const setDebugMode = useSettingsStore((state) => state.setDebugMode);
25
+ const setPerformanceMode = useSettingsStore((state) => state.setPerformanceMode);
26
+
27
+ // Version information state
28
+ const [backendVersion, setBackendVersion] = useState<string>('Loading...');
29
+ const dashboardVersion = '0.1.1'; // From package.json
30
+
31
+ // Fetch version information from backend
32
+ useEffect(() => {
33
+ const fetchVersion = async () => {
34
+ try {
35
+ const response = await fetch('/api/version');
36
+ if (response.ok) {
37
+ const data = await response.json();
38
+ setBackendVersion(data.backend_version || 'Unknown');
39
+ } else {
40
+ setBackendVersion('Error fetching version');
41
+ }
42
+ } catch (error) {
43
+ console.error('Failed to fetch version:', error);
44
+ setBackendVersion('Error fetching version');
45
+ }
46
+ };
47
+
48
+ fetchVersion();
49
+ }, []);
50
+
51
+ return (
52
+ <div>
53
+ <div className="settings-section">
54
+ <h3 className="settings-section-title">Graph Layout</h3>
55
+
56
+ <div className="settings-field">
57
+ <label htmlFor="layout-direction" className="settings-label">
58
+ Layout Direction
59
+ </label>
60
+ <p className="settings-description">
61
+ Direction for manual layout algorithm (right-click → Auto Layout)
62
+ </p>
63
+ <select
64
+ id="layout-direction"
65
+ value={layoutDirection}
66
+ onChange={(e) => setLayoutDirection(e.target.value as typeof layoutDirection)}
67
+ className="settings-select"
68
+ >
69
+ <option value="LR">Left to Right (Default)</option>
70
+ <option value="TB">Top to Bottom</option>
71
+ </select>
72
+ </div>
73
+
74
+ <div className="settings-field">
75
+ <label htmlFor="node-spacing" className="settings-label">
76
+ Node Spacing: {nodeSpacing}px
77
+ </label>
78
+ <p className="settings-description">
79
+ Horizontal space between nodes when using manual layout (affects edge label visibility)
80
+ </p>
81
+ <input
82
+ id="node-spacing"
83
+ type="range"
84
+ min="25"
85
+ max="150"
86
+ step="5"
87
+ value={nodeSpacing}
88
+ onChange={(e) => setNodeSpacing(parseFloat(e.target.value))}
89
+ className="settings-input"
90
+ />
91
+ </div>
92
+
93
+ <div className="settings-field">
94
+ <label htmlFor="rank-spacing" className="settings-label">
95
+ Rank Spacing: {rankSpacing}px
96
+ </label>
97
+ <p className="settings-description">
98
+ Vertical space between graph layers when using manual layout
99
+ </p>
100
+ <input
101
+ id="rank-spacing"
102
+ type="range"
103
+ min="50"
104
+ max="300"
105
+ step="10"
106
+ value={rankSpacing}
107
+ onChange={(e) => setRankSpacing(parseFloat(e.target.value))}
108
+ className="settings-input"
109
+ />
110
+ </div>
111
+ </div>
112
+
113
+ <div className="settings-section">
114
+ <h3 className="settings-section-title">Developer Options</h3>
115
+
116
+ <div className="settings-field">
117
+ <div className="settings-checkbox-wrapper">
118
+ <input
119
+ id="debug-mode"
120
+ type="checkbox"
121
+ checked={debugMode}
122
+ onChange={(e) => setDebugMode(e.target.checked)}
123
+ className="settings-checkbox"
124
+ />
125
+ <label htmlFor="debug-mode" className="settings-checkbox-label">
126
+ Debug mode
127
+ </label>
128
+ </div>
129
+ <p className="settings-description">
130
+ Show node IDs, detailed message counts, and verbose console logging
131
+ </p>
132
+ </div>
133
+
134
+ <div className="settings-field">
135
+ <div className="settings-checkbox-wrapper">
136
+ <input
137
+ id="performance-mode"
138
+ type="checkbox"
139
+ checked={performanceMode}
140
+ onChange={(e) => setPerformanceMode(e.target.checked)}
141
+ className="settings-checkbox"
142
+ />
143
+ <label htmlFor="performance-mode" className="settings-checkbox-label">
144
+ Performance mode
145
+ </label>
146
+ </div>
147
+ <p className="settings-description">
148
+ Disable animations, shadows, and blur effects for better performance
149
+ </p>
150
+ </div>
151
+ </div>
152
+
153
+ <div className="settings-section">
154
+ <h3 className="settings-section-title">Information</h3>
155
+
156
+ <div className="settings-field">
157
+ <p className="settings-description" style={{ marginBottom: 'var(--spacing-2)' }}>
158
+ <strong>Dashboard Version:</strong> {dashboardVersion}
159
+ </p>
160
+ <p className="settings-description" style={{ marginBottom: 'var(--spacing-2)' }}>
161
+ <strong>Backend Version:</strong> {backendVersion}
162
+ </p>
163
+ <p className="settings-description" style={{ marginBottom: 'var(--spacing-2)' }}>
164
+ <strong>React Flow Version:</strong> 12.8.6
165
+ </p>
166
+ <p className="settings-description">
167
+ <strong>Local Storage Used:</strong> {localStorage.length} keys
168
+ </p>
169
+ </div>
170
+ </div>
171
+ </div>
172
+ );
173
+ };
174
+
175
+ export default AdvancedSettings;
@@ -0,0 +1,185 @@
1
+ /**
2
+ * Appearance Settings Tab
3
+ *
4
+ * Visual customization options:
5
+ * - Theme selection (300+ terminal themes)
6
+ * - Agent node colors (idle, active, error)
7
+ * - Node shadow intensity
8
+ * - Status pulse animation
9
+ * - Compact view mode
10
+ */
11
+
12
+ import React from 'react';
13
+ import { useSettingsStore } from '../../store/settingsStore';
14
+ import ThemeSelector from './ThemeSelector';
15
+
16
+ const AppearanceSettings: React.FC = () => {
17
+ const agentIdleColor = useSettingsStore((state) => state.appearance.agentIdleColor);
18
+ const agentActiveColor = useSettingsStore((state) => state.appearance.agentActiveColor);
19
+ const agentErrorColor = useSettingsStore((state) => state.appearance.agentErrorColor);
20
+ const nodeShadow = useSettingsStore((state) => state.appearance.nodeShadow);
21
+ const showStatusPulse = useSettingsStore((state) => state.appearance.showStatusPulse);
22
+ const compactNodeView = useSettingsStore((state) => state.appearance.compactNodeView);
23
+
24
+ const setAgentIdleColor = useSettingsStore((state) => state.setAgentIdleColor);
25
+ const setAgentActiveColor = useSettingsStore((state) => state.setAgentActiveColor);
26
+ const setAgentErrorColor = useSettingsStore((state) => state.setAgentErrorColor);
27
+ const setNodeShadow = useSettingsStore((state) => state.setNodeShadow);
28
+ const setShowStatusPulse = useSettingsStore((state) => state.setShowStatusPulse);
29
+ const setCompactNodeView = useSettingsStore((state) => state.setCompactNodeView);
30
+
31
+ return (
32
+ <div>
33
+ <div className="settings-section">
34
+ <h3 className="settings-section-title">Theme</h3>
35
+
36
+ <p className="settings-description" style={{ marginBottom: 'var(--space-component-md)' }}>
37
+ Choose from 300+ terminal color themes. Themes are loaded from the backend and applied in real-time.
38
+ </p>
39
+
40
+ <ThemeSelector />
41
+ </div>
42
+
43
+ <div className="settings-section">
44
+ <h3 className="settings-section-title">Agent Colors</h3>
45
+
46
+ <div className="settings-field">
47
+ <label htmlFor="idle-color" className="settings-label">
48
+ Idle Agent Color
49
+ </label>
50
+ <p className="settings-description">
51
+ Border and indicator color for idle agents
52
+ </p>
53
+ <div style={{ display: 'flex', gap: 'var(--gap-sm)', alignItems: 'center' }}>
54
+ <input
55
+ id="idle-color"
56
+ type="color"
57
+ value={agentIdleColor}
58
+ onChange={(e) => setAgentIdleColor(e.target.value)}
59
+ style={{ width: '60px', height: '36px', cursor: 'pointer' }}
60
+ />
61
+ <input
62
+ type="text"
63
+ value={agentIdleColor}
64
+ onChange={(e) => setAgentIdleColor(e.target.value)}
65
+ className="settings-input"
66
+ placeholder="#60a5fa"
67
+ />
68
+ </div>
69
+ </div>
70
+
71
+ <div className="settings-field">
72
+ <label htmlFor="active-color" className="settings-label">
73
+ Active Agent Color
74
+ </label>
75
+ <p className="settings-description">
76
+ Border and indicator color for running agents (thick border)
77
+ </p>
78
+ <div style={{ display: 'flex', gap: 'var(--gap-sm)', alignItems: 'center' }}>
79
+ <input
80
+ id="active-color"
81
+ type="color"
82
+ value={agentActiveColor}
83
+ onChange={(e) => setAgentActiveColor(e.target.value)}
84
+ style={{ width: '60px', height: '36px', cursor: 'pointer' }}
85
+ />
86
+ <input
87
+ type="text"
88
+ value={agentActiveColor}
89
+ onChange={(e) => setAgentActiveColor(e.target.value)}
90
+ className="settings-input"
91
+ placeholder="#10b981"
92
+ />
93
+ </div>
94
+ </div>
95
+
96
+ <div className="settings-field">
97
+ <label htmlFor="error-color" className="settings-label">
98
+ Error Agent Color
99
+ </label>
100
+ <p className="settings-description">
101
+ Border and indicator color for agents in error state
102
+ </p>
103
+ <div style={{ display: 'flex', gap: 'var(--gap-sm)', alignItems: 'center' }}>
104
+ <input
105
+ id="error-color"
106
+ type="color"
107
+ value={agentErrorColor}
108
+ onChange={(e) => setAgentErrorColor(e.target.value)}
109
+ style={{ width: '60px', height: '36px', cursor: 'pointer' }}
110
+ />
111
+ <input
112
+ type="text"
113
+ value={agentErrorColor}
114
+ onChange={(e) => setAgentErrorColor(e.target.value)}
115
+ className="settings-input"
116
+ placeholder="#ef4444"
117
+ />
118
+ </div>
119
+ </div>
120
+ </div>
121
+
122
+ <div className="settings-section">
123
+ <h3 className="settings-section-title">Node Appearance</h3>
124
+
125
+ <div className="settings-field">
126
+ <label htmlFor="node-shadow" className="settings-label">
127
+ Node Shadow
128
+ </label>
129
+ <p className="settings-description">
130
+ Shadow intensity for node elevation effect
131
+ </p>
132
+ <select
133
+ id="node-shadow"
134
+ value={nodeShadow}
135
+ onChange={(e) => setNodeShadow(e.target.value as typeof nodeShadow)}
136
+ className="settings-select"
137
+ >
138
+ <option value="none">None</option>
139
+ <option value="small">Small</option>
140
+ <option value="medium">Medium (Default)</option>
141
+ <option value="large">Large</option>
142
+ </select>
143
+ </div>
144
+
145
+ <div className="settings-field">
146
+ <div className="settings-checkbox-wrapper">
147
+ <input
148
+ id="status-pulse"
149
+ type="checkbox"
150
+ checked={showStatusPulse}
151
+ onChange={(e) => setShowStatusPulse(e.target.checked)}
152
+ className="settings-checkbox"
153
+ />
154
+ <label htmlFor="status-pulse" className="settings-checkbox-label">
155
+ Show status pulse animation
156
+ </label>
157
+ </div>
158
+ <p className="settings-description">
159
+ Animate status indicator for running agents
160
+ </p>
161
+ </div>
162
+
163
+ <div className="settings-field">
164
+ <div className="settings-checkbox-wrapper">
165
+ <input
166
+ id="compact-view"
167
+ type="checkbox"
168
+ checked={compactNodeView}
169
+ onChange={(e) => setCompactNodeView(e.target.checked)}
170
+ className="settings-checkbox"
171
+ />
172
+ <label htmlFor="compact-view" className="settings-checkbox-label">
173
+ Compact node view
174
+ </label>
175
+ </div>
176
+ <p className="settings-description">
177
+ Reduce node size and spacing (useful for large graphs)
178
+ </p>
179
+ </div>
180
+ </div>
181
+ </div>
182
+ );
183
+ };
184
+
185
+ export default AppearanceSettings;
@@ -0,0 +1,110 @@
1
+ /**
2
+ * Graph Settings Tab
3
+ *
4
+ * Customization options for graph visualization:
5
+ * - Edge type (bezier, straight, smoothstep)
6
+ * - Edge stroke width
7
+ * - Edge animation
8
+ * - Edge labels visibility
9
+ */
10
+
11
+ import React from 'react';
12
+ import { useSettingsStore } from '../../store/settingsStore';
13
+
14
+ const GraphSettings: React.FC = () => {
15
+ const edgeType = useSettingsStore((state) => state.graph.edgeType);
16
+ const edgeStrokeWidth = useSettingsStore((state) => state.graph.edgeStrokeWidth);
17
+ const edgeAnimation = useSettingsStore((state) => state.graph.edgeAnimation);
18
+ const showEdgeLabels = useSettingsStore((state) => state.graph.showEdgeLabels);
19
+
20
+ const setEdgeType = useSettingsStore((state) => state.setEdgeType);
21
+ const setEdgeStrokeWidth = useSettingsStore((state) => state.setEdgeStrokeWidth);
22
+ const setEdgeAnimation = useSettingsStore((state) => state.setEdgeAnimation);
23
+ const setShowEdgeLabels = useSettingsStore((state) => state.setShowEdgeLabels);
24
+
25
+ return (
26
+ <div>
27
+ <div className="settings-section">
28
+ <h3 className="settings-section-title">Edge Appearance</h3>
29
+
30
+ <div className="settings-field">
31
+ <label htmlFor="edge-type" className="settings-label">
32
+ Edge Type
33
+ </label>
34
+ <p className="settings-description">
35
+ Choose how connections between nodes are drawn
36
+ </p>
37
+ <select
38
+ id="edge-type"
39
+ value={edgeType}
40
+ onChange={(e) => setEdgeType(e.target.value as typeof edgeType)}
41
+ className="settings-select"
42
+ >
43
+ <option value="bezier">Bezier (Curved) - Default</option>
44
+ <option value="smoothstep">Smooth Step</option>
45
+ <option value="straight">Straight (90° Angles)</option>
46
+ <option value="simplebezier">Simple Bezier</option>
47
+ </select>
48
+ </div>
49
+
50
+ <div className="settings-field">
51
+ <label htmlFor="edge-width" className="settings-label">
52
+ Edge Stroke Width: {edgeStrokeWidth}px
53
+ </label>
54
+ <input
55
+ id="edge-width"
56
+ type="range"
57
+ min="1"
58
+ max="5"
59
+ step="0.5"
60
+ value={edgeStrokeWidth}
61
+ onChange={(e) => setEdgeStrokeWidth(parseFloat(e.target.value))}
62
+ className="settings-input"
63
+ />
64
+ </div>
65
+ </div>
66
+
67
+ <div className="settings-section">
68
+ <h3 className="settings-section-title">Edge Behavior</h3>
69
+
70
+ <div className="settings-field">
71
+ <div className="settings-checkbox-wrapper">
72
+ <input
73
+ id="edge-animation"
74
+ type="checkbox"
75
+ checked={edgeAnimation}
76
+ onChange={(e) => setEdgeAnimation(e.target.checked)}
77
+ className="settings-checkbox"
78
+ />
79
+ <label htmlFor="edge-animation" className="settings-checkbox-label">
80
+ Enable edge animation
81
+ </label>
82
+ </div>
83
+ <p className="settings-description">
84
+ Animate message flow along edges (may impact performance)
85
+ </p>
86
+ </div>
87
+
88
+ <div className="settings-field">
89
+ <div className="settings-checkbox-wrapper">
90
+ <input
91
+ id="edge-labels"
92
+ type="checkbox"
93
+ checked={showEdgeLabels}
94
+ onChange={(e) => setShowEdgeLabels(e.target.checked)}
95
+ className="settings-checkbox"
96
+ />
97
+ <label htmlFor="edge-labels" className="settings-checkbox-label">
98
+ Show edge labels
99
+ </label>
100
+ </div>
101
+ <p className="settings-description">
102
+ Display correlation IDs and other metadata on edges
103
+ </p>
104
+ </div>
105
+ </div>
106
+ </div>
107
+ );
108
+ };
109
+
110
+ export default GraphSettings;