flock-core 0.5.0b50__py3-none-any.whl → 0.5.0b51__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 (116) hide show
  1. flock/dashboard/launcher.py +1 -1
  2. flock/frontend/README.md +678 -0
  3. flock/frontend/docs/DESIGN_SYSTEM.md +1980 -0
  4. flock/frontend/index.html +12 -0
  5. flock/frontend/package-lock.json +4347 -0
  6. flock/frontend/package.json +48 -0
  7. flock/frontend/src/App.tsx +79 -0
  8. flock/frontend/src/__tests__/e2e/critical-scenarios.test.tsx +587 -0
  9. flock/frontend/src/__tests__/integration/filtering-e2e.test.tsx +387 -0
  10. flock/frontend/src/__tests__/integration/graph-rendering.test.tsx +640 -0
  11. flock/frontend/src/__tests__/integration/indexeddb-persistence.test.tsx +699 -0
  12. flock/frontend/src/components/common/BuildInfo.tsx +39 -0
  13. flock/frontend/src/components/common/EmptyState.module.css +115 -0
  14. flock/frontend/src/components/common/EmptyState.tsx +128 -0
  15. flock/frontend/src/components/common/ErrorBoundary.module.css +169 -0
  16. flock/frontend/src/components/common/ErrorBoundary.tsx +118 -0
  17. flock/frontend/src/components/common/KeyboardShortcutsDialog.css +251 -0
  18. flock/frontend/src/components/common/KeyboardShortcutsDialog.tsx +151 -0
  19. flock/frontend/src/components/common/LoadingSpinner.module.css +97 -0
  20. flock/frontend/src/components/common/LoadingSpinner.tsx +29 -0
  21. flock/frontend/src/components/controls/PublishControl.css +547 -0
  22. flock/frontend/src/components/controls/PublishControl.test.tsx +543 -0
  23. flock/frontend/src/components/controls/PublishControl.tsx +432 -0
  24. flock/frontend/src/components/details/DetailWindowContainer.tsx +62 -0
  25. flock/frontend/src/components/details/LiveOutputTab.test.tsx +792 -0
  26. flock/frontend/src/components/details/LiveOutputTab.tsx +220 -0
  27. flock/frontend/src/components/details/MessageHistoryTab.tsx +299 -0
  28. flock/frontend/src/components/details/NodeDetailWindow.test.tsx +501 -0
  29. flock/frontend/src/components/details/NodeDetailWindow.tsx +218 -0
  30. flock/frontend/src/components/details/RunStatusTab.tsx +307 -0
  31. flock/frontend/src/components/details/tabs.test.tsx +1015 -0
  32. flock/frontend/src/components/filters/CorrelationIDFilter.module.css +102 -0
  33. flock/frontend/src/components/filters/CorrelationIDFilter.test.tsx +197 -0
  34. flock/frontend/src/components/filters/CorrelationIDFilter.tsx +121 -0
  35. flock/frontend/src/components/filters/FilterBar.module.css +29 -0
  36. flock/frontend/src/components/filters/FilterBar.test.tsx +133 -0
  37. flock/frontend/src/components/filters/FilterBar.tsx +33 -0
  38. flock/frontend/src/components/filters/FilterPills.module.css +79 -0
  39. flock/frontend/src/components/filters/FilterPills.test.tsx +173 -0
  40. flock/frontend/src/components/filters/FilterPills.tsx +67 -0
  41. flock/frontend/src/components/filters/TimeRangeFilter.module.css +91 -0
  42. flock/frontend/src/components/filters/TimeRangeFilter.test.tsx +154 -0
  43. flock/frontend/src/components/filters/TimeRangeFilter.tsx +105 -0
  44. flock/frontend/src/components/graph/AgentNode.test.tsx +75 -0
  45. flock/frontend/src/components/graph/AgentNode.tsx +322 -0
  46. flock/frontend/src/components/graph/GraphCanvas.tsx +406 -0
  47. flock/frontend/src/components/graph/MessageFlowEdge.tsx +128 -0
  48. flock/frontend/src/components/graph/MessageNode.test.tsx +62 -0
  49. flock/frontend/src/components/graph/MessageNode.tsx +116 -0
  50. flock/frontend/src/components/graph/MiniMap.tsx +47 -0
  51. flock/frontend/src/components/graph/TransformEdge.tsx +123 -0
  52. flock/frontend/src/components/layout/DashboardLayout.css +407 -0
  53. flock/frontend/src/components/layout/DashboardLayout.tsx +300 -0
  54. flock/frontend/src/components/layout/Header.module.css +88 -0
  55. flock/frontend/src/components/layout/Header.tsx +52 -0
  56. flock/frontend/src/components/modules/EventLogModule.test.tsx +401 -0
  57. flock/frontend/src/components/modules/EventLogModule.tsx +396 -0
  58. flock/frontend/src/components/modules/EventLogModuleWrapper.tsx +17 -0
  59. flock/frontend/src/components/modules/ModuleRegistry.test.ts +333 -0
  60. flock/frontend/src/components/modules/ModuleRegistry.ts +85 -0
  61. flock/frontend/src/components/modules/ModuleWindow.tsx +155 -0
  62. flock/frontend/src/components/modules/registerModules.ts +20 -0
  63. flock/frontend/src/components/settings/AdvancedSettings.tsx +175 -0
  64. flock/frontend/src/components/settings/AppearanceSettings.tsx +185 -0
  65. flock/frontend/src/components/settings/GraphSettings.tsx +110 -0
  66. flock/frontend/src/components/settings/SettingsPanel.css +327 -0
  67. flock/frontend/src/components/settings/SettingsPanel.tsx +131 -0
  68. flock/frontend/src/components/settings/ThemeSelector.tsx +298 -0
  69. flock/frontend/src/hooks/useKeyboardShortcuts.ts +148 -0
  70. flock/frontend/src/hooks/useModulePersistence.test.ts +442 -0
  71. flock/frontend/src/hooks/useModulePersistence.ts +154 -0
  72. flock/frontend/src/hooks/useModules.ts +139 -0
  73. flock/frontend/src/hooks/usePersistence.ts +139 -0
  74. flock/frontend/src/main.tsx +13 -0
  75. flock/frontend/src/services/api.ts +213 -0
  76. flock/frontend/src/services/indexeddb.test.ts +793 -0
  77. flock/frontend/src/services/indexeddb.ts +794 -0
  78. flock/frontend/src/services/layout.test.ts +437 -0
  79. flock/frontend/src/services/layout.ts +146 -0
  80. flock/frontend/src/services/themeApplicator.ts +140 -0
  81. flock/frontend/src/services/themeService.ts +77 -0
  82. flock/frontend/src/services/websocket.test.ts +595 -0
  83. flock/frontend/src/services/websocket.ts +685 -0
  84. flock/frontend/src/store/filterStore.test.ts +242 -0
  85. flock/frontend/src/store/filterStore.ts +103 -0
  86. flock/frontend/src/store/graphStore.test.ts +186 -0
  87. flock/frontend/src/store/graphStore.ts +414 -0
  88. flock/frontend/src/store/moduleStore.test.ts +253 -0
  89. flock/frontend/src/store/moduleStore.ts +57 -0
  90. flock/frontend/src/store/settingsStore.ts +188 -0
  91. flock/frontend/src/store/streamStore.ts +68 -0
  92. flock/frontend/src/store/uiStore.test.ts +54 -0
  93. flock/frontend/src/store/uiStore.ts +110 -0
  94. flock/frontend/src/store/wsStore.ts +34 -0
  95. flock/frontend/src/styles/index.css +15 -0
  96. flock/frontend/src/styles/scrollbar.css +47 -0
  97. flock/frontend/src/styles/variables.css +488 -0
  98. flock/frontend/src/test/setup.ts +1 -0
  99. flock/frontend/src/types/filters.ts +14 -0
  100. flock/frontend/src/types/graph.ts +55 -0
  101. flock/frontend/src/types/modules.ts +7 -0
  102. flock/frontend/src/types/theme.ts +55 -0
  103. flock/frontend/src/utils/mockData.ts +85 -0
  104. flock/frontend/src/utils/performance.ts +16 -0
  105. flock/frontend/src/utils/transforms.test.ts +860 -0
  106. flock/frontend/src/utils/transforms.ts +323 -0
  107. flock/frontend/src/vite-env.d.ts +17 -0
  108. flock/frontend/tsconfig.json +27 -0
  109. flock/frontend/tsconfig.node.json +11 -0
  110. flock/frontend/vite.config.ts +25 -0
  111. flock/frontend/vitest.config.ts +11 -0
  112. {flock_core-0.5.0b50.dist-info → flock_core-0.5.0b51.dist-info}/METADATA +1 -1
  113. {flock_core-0.5.0b50.dist-info → flock_core-0.5.0b51.dist-info}/RECORD +116 -6
  114. {flock_core-0.5.0b50.dist-info → flock_core-0.5.0b51.dist-info}/WHEEL +0 -0
  115. {flock_core-0.5.0b50.dist-info → flock_core-0.5.0b51.dist-info}/entry_points.txt +0 -0
  116. {flock_core-0.5.0b50.dist-info → flock_core-0.5.0b51.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,48 @@
1
+ {
2
+ "name": "flock-ui",
3
+ "version": "0.1.2",
4
+ "description": "Flock Flow Real-Time Dashboard Frontend",
5
+ "type": "module",
6
+ "scripts": {
7
+ "dev": "vite",
8
+ "build": "tsc && vite build",
9
+ "preview": "vite preview",
10
+ "test": "vitest",
11
+ "test:ui": "vitest --ui",
12
+ "type-check": "tsc --noEmit"
13
+ },
14
+ "keywords": [],
15
+ "author": "",
16
+ "license": "ISC",
17
+ "dependencies": {
18
+ "@types/dagre": "^0.7.53",
19
+ "@types/react-window": "^1.8.8",
20
+ "@uiw/react-json-view": "^2.0.0-alpha.39",
21
+ "@xyflow/react": "^12.8.6",
22
+ "dagre": "^0.8.5",
23
+ "idb": "^8.0.3",
24
+ "react": "^19.2.0",
25
+ "react-dom": "^19.2.0",
26
+ "react-rnd": "^10.5.2",
27
+ "react-window": "^2.2.0",
28
+ "uuid": "^13.0.0",
29
+ "zustand": "^5.0.8"
30
+ },
31
+ "devDependencies": {
32
+ "@testing-library/jest-dom": "^6.9.1",
33
+ "@testing-library/react": "^16.3.0",
34
+ "@testing-library/user-event": "^14.6.1",
35
+ "@types/react": "^19.2.0",
36
+ "@types/react-dom": "^19.2.0",
37
+ "@types/uuid": "^10.0.0",
38
+ "@vitejs/plugin-react": "^5.0.4",
39
+ "@vitest/coverage-v8": "^3.2.4",
40
+ "@vitest/ui": "^3.2.4",
41
+ "fake-indexeddb": "^6.2.2",
42
+ "jsdom": "^27.0.0",
43
+ "mock-socket": "^9.3.1",
44
+ "typescript": "^5.9.3",
45
+ "vite": "^7.1.9",
46
+ "vitest": "^3.2.4"
47
+ }
48
+ }
@@ -0,0 +1,79 @@
1
+ import { useEffect } from 'react';
2
+ import DashboardLayout from './components/layout/DashboardLayout';
3
+ import { ErrorBoundary } from './components/common/ErrorBoundary';
4
+ import { measureRenderTime } from './utils/performance';
5
+ import { initializeWebSocket } from './services/websocket';
6
+ import { registerModules } from './components/modules/registerModules';
7
+ import { useKeyboardShortcuts } from './hooks/useKeyboardShortcuts';
8
+ import { fetchRegisteredAgents } from './services/api';
9
+ import { useGraphStore } from './store/graphStore';
10
+ import { useUIStore } from './store/uiStore';
11
+
12
+ // Register modules once at module load time
13
+ registerModules();
14
+
15
+ const App: React.FC = () => {
16
+ // Enable global keyboard shortcuts
17
+ useKeyboardShortcuts();
18
+
19
+ useEffect(() => {
20
+ const startMark = 'app-initial-render-start';
21
+ performance.mark(startMark);
22
+
23
+ // Measure after first render
24
+ requestAnimationFrame(() => {
25
+ const duration = measureRenderTime('App (initial)', startMark, 'app-initial-render-end');
26
+ if (duration < 200) {
27
+ console.log('[Performance] ✓ Initial render under 200ms target');
28
+ } else {
29
+ console.warn('[Performance] ✗ Initial render exceeded 200ms target');
30
+ }
31
+ });
32
+
33
+ // Initialize WebSocket connection
34
+ const wsUrl = import.meta.env.VITE_WS_URL || 'ws://localhost:8000/ws';
35
+ const wsClient = initializeWebSocket(wsUrl);
36
+ wsClient.connect();
37
+
38
+ // Load registered agents from orchestrator
39
+ // This pre-populates the graph with all agent nodes before any events occur
40
+ const loadInitialAgents = async () => {
41
+ try {
42
+ console.log('[App] Fetching registered agents...');
43
+ const agents = await fetchRegisteredAgents();
44
+ console.log(`[App] Loaded ${agents.length} registered agents`);
45
+
46
+ const graphStore = useGraphStore.getState();
47
+ const uiStore = useUIStore.getState();
48
+
49
+ // Add all agents to the store
50
+ agents.forEach(agent => graphStore.addAgent(agent));
51
+
52
+ // Generate initial graph layout based on current view mode
53
+ if (uiStore.mode === 'agent') {
54
+ graphStore.generateAgentViewGraph();
55
+ } else {
56
+ graphStore.generateBlackboardViewGraph();
57
+ }
58
+ } catch (error) {
59
+ console.error('[App] Failed to load registered agents:', error);
60
+ // Graceful degradation: agents will appear when they activate via WebSocket
61
+ }
62
+ };
63
+
64
+ loadInitialAgents();
65
+
66
+ // Cleanup on unmount
67
+ return () => {
68
+ wsClient.disconnect();
69
+ };
70
+ }, []);
71
+
72
+ return (
73
+ <ErrorBoundary>
74
+ <DashboardLayout />
75
+ </ErrorBoundary>
76
+ );
77
+ };
78
+
79
+ export default App;