flock-core 0.5.0b50__py3-none-any.whl → 0.5.0b52__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.
- flock/dashboard/launcher.py +1 -1
- flock/frontend/README.md +678 -0
- flock/frontend/docs/DESIGN_SYSTEM.md +1980 -0
- flock/frontend/index.html +12 -0
- flock/frontend/package-lock.json +4347 -0
- flock/frontend/package.json +48 -0
- flock/frontend/src/App.tsx +79 -0
- flock/frontend/src/__tests__/e2e/critical-scenarios.test.tsx +587 -0
- flock/frontend/src/__tests__/integration/filtering-e2e.test.tsx +387 -0
- flock/frontend/src/__tests__/integration/graph-rendering.test.tsx +640 -0
- flock/frontend/src/__tests__/integration/indexeddb-persistence.test.tsx +699 -0
- flock/frontend/src/components/common/BuildInfo.tsx +39 -0
- flock/frontend/src/components/common/EmptyState.module.css +115 -0
- flock/frontend/src/components/common/EmptyState.tsx +128 -0
- flock/frontend/src/components/common/ErrorBoundary.module.css +169 -0
- flock/frontend/src/components/common/ErrorBoundary.tsx +118 -0
- flock/frontend/src/components/common/KeyboardShortcutsDialog.css +251 -0
- flock/frontend/src/components/common/KeyboardShortcutsDialog.tsx +151 -0
- flock/frontend/src/components/common/LoadingSpinner.module.css +97 -0
- flock/frontend/src/components/common/LoadingSpinner.tsx +29 -0
- flock/frontend/src/components/controls/PublishControl.css +547 -0
- flock/frontend/src/components/controls/PublishControl.test.tsx +543 -0
- flock/frontend/src/components/controls/PublishControl.tsx +432 -0
- flock/frontend/src/components/details/DetailWindowContainer.tsx +62 -0
- flock/frontend/src/components/details/LiveOutputTab.test.tsx +792 -0
- flock/frontend/src/components/details/LiveOutputTab.tsx +220 -0
- flock/frontend/src/components/details/MessageHistoryTab.tsx +299 -0
- flock/frontend/src/components/details/NodeDetailWindow.test.tsx +501 -0
- flock/frontend/src/components/details/NodeDetailWindow.tsx +218 -0
- flock/frontend/src/components/details/RunStatusTab.tsx +307 -0
- flock/frontend/src/components/details/tabs.test.tsx +1015 -0
- flock/frontend/src/components/filters/CorrelationIDFilter.module.css +102 -0
- flock/frontend/src/components/filters/CorrelationIDFilter.test.tsx +197 -0
- flock/frontend/src/components/filters/CorrelationIDFilter.tsx +121 -0
- flock/frontend/src/components/filters/FilterBar.module.css +29 -0
- flock/frontend/src/components/filters/FilterBar.test.tsx +133 -0
- flock/frontend/src/components/filters/FilterBar.tsx +33 -0
- flock/frontend/src/components/filters/FilterPills.module.css +79 -0
- flock/frontend/src/components/filters/FilterPills.test.tsx +173 -0
- flock/frontend/src/components/filters/FilterPills.tsx +67 -0
- flock/frontend/src/components/filters/TimeRangeFilter.module.css +91 -0
- flock/frontend/src/components/filters/TimeRangeFilter.test.tsx +154 -0
- flock/frontend/src/components/filters/TimeRangeFilter.tsx +105 -0
- flock/frontend/src/components/graph/AgentNode.test.tsx +75 -0
- flock/frontend/src/components/graph/AgentNode.tsx +322 -0
- flock/frontend/src/components/graph/GraphCanvas.tsx +406 -0
- flock/frontend/src/components/graph/MessageFlowEdge.tsx +128 -0
- flock/frontend/src/components/graph/MessageNode.test.tsx +62 -0
- flock/frontend/src/components/graph/MessageNode.tsx +116 -0
- flock/frontend/src/components/graph/MiniMap.tsx +47 -0
- flock/frontend/src/components/graph/TransformEdge.tsx +123 -0
- flock/frontend/src/components/layout/DashboardLayout.css +407 -0
- flock/frontend/src/components/layout/DashboardLayout.tsx +300 -0
- flock/frontend/src/components/layout/Header.module.css +88 -0
- flock/frontend/src/components/layout/Header.tsx +52 -0
- flock/frontend/src/components/modules/EventLogModule.test.tsx +401 -0
- flock/frontend/src/components/modules/EventLogModule.tsx +396 -0
- flock/frontend/src/components/modules/EventLogModuleWrapper.tsx +17 -0
- flock/frontend/src/components/modules/ModuleRegistry.test.ts +333 -0
- flock/frontend/src/components/modules/ModuleRegistry.ts +85 -0
- flock/frontend/src/components/modules/ModuleWindow.tsx +155 -0
- flock/frontend/src/components/modules/registerModules.ts +20 -0
- flock/frontend/src/components/settings/AdvancedSettings.tsx +175 -0
- flock/frontend/src/components/settings/AppearanceSettings.tsx +185 -0
- flock/frontend/src/components/settings/GraphSettings.tsx +110 -0
- flock/frontend/src/components/settings/SettingsPanel.css +327 -0
- flock/frontend/src/components/settings/SettingsPanel.tsx +131 -0
- flock/frontend/src/components/settings/ThemeSelector.tsx +298 -0
- flock/frontend/src/hooks/useKeyboardShortcuts.ts +148 -0
- flock/frontend/src/hooks/useModulePersistence.test.ts +442 -0
- flock/frontend/src/hooks/useModulePersistence.ts +154 -0
- flock/frontend/src/hooks/useModules.ts +139 -0
- flock/frontend/src/hooks/usePersistence.ts +139 -0
- flock/frontend/src/main.tsx +13 -0
- flock/frontend/src/services/api.ts +213 -0
- flock/frontend/src/services/indexeddb.test.ts +793 -0
- flock/frontend/src/services/indexeddb.ts +794 -0
- flock/frontend/src/services/layout.test.ts +437 -0
- flock/frontend/src/services/layout.ts +146 -0
- flock/frontend/src/services/themeApplicator.ts +140 -0
- flock/frontend/src/services/themeService.ts +77 -0
- flock/frontend/src/services/websocket.test.ts +595 -0
- flock/frontend/src/services/websocket.ts +685 -0
- flock/frontend/src/store/filterStore.test.ts +242 -0
- flock/frontend/src/store/filterStore.ts +103 -0
- flock/frontend/src/store/graphStore.test.ts +186 -0
- flock/frontend/src/store/graphStore.ts +414 -0
- flock/frontend/src/store/moduleStore.test.ts +253 -0
- flock/frontend/src/store/moduleStore.ts +57 -0
- flock/frontend/src/store/settingsStore.ts +188 -0
- flock/frontend/src/store/streamStore.ts +68 -0
- flock/frontend/src/store/uiStore.test.ts +54 -0
- flock/frontend/src/store/uiStore.ts +110 -0
- flock/frontend/src/store/wsStore.ts +34 -0
- flock/frontend/src/styles/index.css +15 -0
- flock/frontend/src/styles/scrollbar.css +47 -0
- flock/frontend/src/styles/variables.css +488 -0
- flock/frontend/src/test/setup.ts +1 -0
- flock/frontend/src/types/filters.ts +14 -0
- flock/frontend/src/types/graph.ts +55 -0
- flock/frontend/src/types/modules.ts +7 -0
- flock/frontend/src/types/theme.ts +55 -0
- flock/frontend/src/utils/mockData.ts +85 -0
- flock/frontend/src/utils/performance.ts +16 -0
- flock/frontend/src/utils/transforms.test.ts +860 -0
- flock/frontend/src/utils/transforms.ts +323 -0
- flock/frontend/src/vite-env.d.ts +17 -0
- flock/frontend/tsconfig.json +27 -0
- flock/frontend/tsconfig.node.json +11 -0
- flock/frontend/vite.config.ts +25 -0
- flock/frontend/vitest.config.ts +11 -0
- flock/helper/cli_helper.py +1 -1
- {flock_core-0.5.0b50.dist-info → flock_core-0.5.0b52.dist-info}/METADATA +1 -1
- {flock_core-0.5.0b50.dist-info → flock_core-0.5.0b52.dist-info}/RECORD +117 -7
- {flock_core-0.5.0b50.dist-info → flock_core-0.5.0b52.dist-info}/WHEEL +0 -0
- {flock_core-0.5.0b50.dist-info → flock_core-0.5.0b52.dist-info}/entry_points.txt +0 -0
- {flock_core-0.5.0b50.dist-info → flock_core-0.5.0b52.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;
|