@ranker/raxflow 0.2.1 → 0.2.2
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.
- package/dist/tui/components/LogsPanel.d.ts.map +1 -1
- package/dist/tui/components/LogsPanel.js +4 -3
- package/dist/tui/components/LogsPanel.js.map +1 -1
- package/dist/tui/components/MemoryPanel.d.ts.map +1 -1
- package/dist/tui/components/MemoryPanel.js +2 -2
- package/dist/tui/components/MemoryPanel.js.map +1 -1
- package/dist/tui/components/MetricsPanel.d.ts.map +1 -1
- package/dist/tui/components/MetricsPanel.js +2 -2
- package/dist/tui/components/MetricsPanel.js.map +1 -1
- package/dist/tui/components/StatusPanel.d.ts.map +1 -1
- package/dist/tui/components/StatusPanel.js +4 -3
- package/dist/tui/components/StatusPanel.js.map +1 -1
- package/package.json +1 -1
- package/src/setup/components/ProviderSelector.tsx +7 -6
- package/src/tui/App.tsx +15 -9
- package/src/tui/components/ChatPanel.tsx +7 -4
- package/src/tui/components/DAGPanel.tsx +11 -7
- package/src/tui/components/LogsPanel.tsx +6 -3
- package/src/tui/components/MemoryPanel.tsx +10 -7
- package/src/tui/components/MetricsPanel.tsx +8 -5
- package/src/tui/components/StatusPanel.tsx +12 -9
- package/dist/benchmark.d.ts.map +0 -1
- package/dist/benchmark.js +0 -123
- package/dist/benchmark.js.map +0 -1
- package/dist/bin.d.ts.map +0 -1
- package/dist/bin.js +0 -141
- package/dist/bin.js.map +0 -1
- package/dist/bootstrap.d.ts.map +0 -1
- package/dist/bootstrap.js +0 -22
- package/dist/bootstrap.js.map +0 -1
- package/dist/bridge-adapter-templates.d.ts.map +0 -1
- package/dist/bridge-adapter-templates.js +0 -185
- package/dist/bridge-adapter-templates.js.map +0 -1
- package/dist/bridge-test.d.ts.map +0 -1
- package/dist/bridge-test.js +0 -89
- package/dist/bridge-test.js.map +0 -1
- package/dist/dashboard.d.ts.map +0 -1
- package/dist/dashboard.js +0 -49
- package/dist/dashboard.js.map +0 -1
- package/dist/doctor.d.ts.map +0 -1
- package/dist/doctor.js +0 -70
- package/dist/doctor.js.map +0 -1
- package/dist/evolve.d.ts.map +0 -1
- package/dist/evolve.js +0 -48
- package/dist/evolve.js.map +0 -1
- package/dist/host-init-templates.d.ts.map +0 -1
- package/dist/host-init-templates.js +0 -119
- package/dist/host-init-templates.js.map +0 -1
- package/dist/hub/__tests__/commands.test.d.ts.map +0 -1
- package/dist/hub/__tests__/commands.test.js +0 -72
- package/dist/hub/__tests__/commands.test.js.map +0 -1
- package/dist/hub/__tests__/history.test.d.ts.map +0 -1
- package/dist/hub/__tests__/history.test.js +0 -119
- package/dist/hub/__tests__/history.test.js.map +0 -1
- package/dist/hub/__tests__/parser.test.d.ts.map +0 -1
- package/dist/hub/__tests__/parser.test.js +0 -92
- package/dist/hub/__tests__/parser.test.js.map +0 -1
- package/dist/hub/chat/ChatApp.d.ts +0 -2
- package/dist/hub/chat/ChatApp.d.ts.map +0 -1
- package/dist/hub/chat/ChatApp.js +0 -146
- package/dist/hub/chat/ChatApp.js.map +0 -1
- package/dist/hub/chat/components/ChatInput.d.ts +0 -9
- package/dist/hub/chat/components/ChatInput.d.ts.map +0 -1
- package/dist/hub/chat/components/ChatInput.js +0 -19
- package/dist/hub/chat/components/ChatInput.js.map +0 -1
- package/dist/hub/chat/components/MessageList.d.ts +0 -7
- package/dist/hub/chat/components/MessageList.d.ts.map +0 -1
- package/dist/hub/chat/components/MessageList.js +0 -6
- package/dist/hub/chat/components/MessageList.js.map +0 -1
- package/dist/hub/chat/context.d.ts.map +0 -1
- package/dist/hub/chat/context.js +0 -42
- package/dist/hub/chat/context.js.map +0 -1
- package/dist/hub/chat/hooks/useChatHistory.d.ts +0 -7
- package/dist/hub/chat/hooks/useChatHistory.d.ts.map +0 -1
- package/dist/hub/chat/hooks/useChatHistory.js +0 -31
- package/dist/hub/chat/hooks/useChatHistory.js.map +0 -1
- package/dist/hub/chat/index.d.ts.map +0 -1
- package/dist/hub/chat/index.js +0 -7
- package/dist/hub/chat/index.js.map +0 -1
- package/dist/hub/chat/intent-parser.d.ts.map +0 -1
- package/dist/hub/chat/intent-parser.js +0 -48
- package/dist/hub/chat/intent-parser.js.map +0 -1
- package/dist/hub/chat/types.d.ts.map +0 -1
- package/dist/hub/chat/types.js +0 -2
- package/dist/hub/chat/types.js.map +0 -1
- package/dist/hub/commands/agents.d.ts.map +0 -1
- package/dist/hub/commands/agents.js +0 -36
- package/dist/hub/commands/agents.js.map +0 -1
- package/dist/hub/commands/index.d.ts.map +0 -1
- package/dist/hub/commands/index.js +0 -123
- package/dist/hub/commands/index.js.map +0 -1
- package/dist/hub/commands/logs.d.ts.map +0 -1
- package/dist/hub/commands/logs.js +0 -53
- package/dist/hub/commands/logs.js.map +0 -1
- package/dist/hub/commands/memory.d.ts.map +0 -1
- package/dist/hub/commands/memory.js +0 -40
- package/dist/hub/commands/memory.js.map +0 -1
- package/dist/hub/commands/metrics.d.ts.map +0 -1
- package/dist/hub/commands/metrics.js +0 -35
- package/dist/hub/commands/metrics.js.map +0 -1
- package/dist/hub/commands/providers.d.ts.map +0 -1
- package/dist/hub/commands/providers.js +0 -26
- package/dist/hub/commands/providers.js.map +0 -1
- package/dist/hub/commands/run.d.ts.map +0 -1
- package/dist/hub/commands/run.js +0 -31
- package/dist/hub/commands/run.js.map +0 -1
- package/dist/hub/commands/status.d.ts.map +0 -1
- package/dist/hub/commands/status.js +0 -61
- package/dist/hub/commands/status.js.map +0 -1
- package/dist/hub/commands/workflows.d.ts.map +0 -1
- package/dist/hub/commands/workflows.js +0 -45
- package/dist/hub/commands/workflows.js.map +0 -1
- package/dist/hub/config-loader.d.ts.map +0 -1
- package/dist/hub/config-loader.js +0 -27
- package/dist/hub/config-loader.js.map +0 -1
- package/dist/hub/event-listener.d.ts +0 -6
- package/dist/hub/event-listener.d.ts.map +0 -1
- package/dist/hub/event-listener.js +0 -12
- package/dist/hub/event-listener.js.map +0 -1
- package/dist/hub/history.d.ts.map +0 -1
- package/dist/hub/history.js +0 -59
- package/dist/hub/history.js.map +0 -1
- package/dist/hub/index.d.ts.map +0 -1
- package/dist/hub/index.js +0 -114
- package/dist/hub/index.js.map +0 -1
- package/dist/hub/parser.d.ts.map +0 -1
- package/dist/hub/parser.js +0 -98
- package/dist/hub/parser.js.map +0 -1
- package/dist/hub/styles/borders.d.ts.map +0 -1
- package/dist/hub/styles/borders.js +0 -64
- package/dist/hub/styles/borders.js.map +0 -1
- package/dist/hub/styles/colors.d.ts.map +0 -1
- package/dist/hub/styles/colors.js +0 -115
- package/dist/hub/styles/colors.js.map +0 -1
- package/dist/hub/styles/typography.d.ts.map +0 -1
- package/dist/hub/styles/typography.js +0 -60
- package/dist/hub/styles/typography.js.map +0 -1
- package/dist/hub/tui/App.d.ts +0 -2
- package/dist/hub/tui/App.d.ts.map +0 -1
- package/dist/hub/tui/App.js +0 -53
- package/dist/hub/tui/App.js.map +0 -1
- package/dist/hub/tui/components/AgentQueue.d.ts +0 -6
- package/dist/hub/tui/components/AgentQueue.d.ts.map +0 -1
- package/dist/hub/tui/components/AgentQueue.js +0 -20
- package/dist/hub/tui/components/AgentQueue.js.map +0 -1
- package/dist/hub/tui/components/DAGPanel.d.ts +0 -16
- package/dist/hub/tui/components/DAGPanel.d.ts.map +0 -1
- package/dist/hub/tui/components/DAGPanel.js +0 -51
- package/dist/hub/tui/components/DAGPanel.js.map +0 -1
- package/dist/hub/tui/components/Header.d.ts +0 -7
- package/dist/hub/tui/components/Header.d.ts.map +0 -1
- package/dist/hub/tui/components/Header.js +0 -17
- package/dist/hub/tui/components/Header.js.map +0 -1
- package/dist/hub/tui/components/LogsPanel.d.ts +0 -6
- package/dist/hub/tui/components/LogsPanel.d.ts.map +0 -1
- package/dist/hub/tui/components/LogsPanel.js +0 -26
- package/dist/hub/tui/components/LogsPanel.js.map +0 -1
- package/dist/hub/tui/components/StatusBar.d.ts +0 -8
- package/dist/hub/tui/components/StatusBar.d.ts.map +0 -1
- package/dist/hub/tui/components/StatusBar.js +0 -7
- package/dist/hub/tui/components/StatusBar.js.map +0 -1
- package/dist/hub/tui/hooks/useEvents.d.ts +0 -2
- package/dist/hub/tui/hooks/useEvents.d.ts.map +0 -1
- package/dist/hub/tui/hooks/useEvents.js +0 -13
- package/dist/hub/tui/hooks/useEvents.js.map +0 -1
- package/dist/hub/tui/index.d.ts.map +0 -1
- package/dist/hub/tui/index.js +0 -7
- package/dist/hub/tui/index.js.map +0 -1
- package/dist/hub/tui/types.d.ts.map +0 -1
- package/dist/hub/tui/types.js +0 -2
- package/dist/hub/tui/types.js.map +0 -1
- package/dist/hub/types.d.ts.map +0 -1
- package/dist/hub/types.js +0 -2
- package/dist/hub/types.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -11
- package/dist/index.js.map +0 -1
- package/dist/init-host.d.ts.map +0 -1
- package/dist/init-host.js +0 -232
- package/dist/init-host.js.map +0 -1
- package/dist/install.d.ts.map +0 -1
- package/dist/install.js +0 -99
- package/dist/install.js.map +0 -1
- package/dist/run.d.ts.map +0 -1
- package/dist/run.js +0 -238
- package/dist/run.js.map +0 -1
- package/dist/setup/components/ApiKeyInput.d.ts +0 -25
- package/dist/setup/components/ApiKeyInput.d.ts.map +0 -1
- package/dist/setup/components/ApiKeyInput.js +0 -54
- package/dist/setup/components/ApiKeyInput.js.map +0 -1
- package/dist/setup/components/AsciiBanner.d.ts +0 -22
- package/dist/setup/components/AsciiBanner.d.ts.map +0 -1
- package/dist/setup/components/AsciiBanner.js +0 -55
- package/dist/setup/components/AsciiBanner.js.map +0 -1
- package/dist/setup/components/CliDetector.d.ts +0 -17
- package/dist/setup/components/CliDetector.d.ts.map +0 -1
- package/dist/setup/components/CliDetector.js +0 -79
- package/dist/setup/components/CliDetector.js.map +0 -1
- package/dist/setup/components/ModeSelector.d.ts +0 -8
- package/dist/setup/components/ModeSelector.d.ts.map +0 -1
- package/dist/setup/components/ModeSelector.js +0 -76
- package/dist/setup/components/ModeSelector.js.map +0 -1
- package/dist/setup/components/ProviderSelector.d.ts +0 -18
- package/dist/setup/components/ProviderSelector.d.ts.map +0 -1
- package/dist/setup/components/ProviderSelector.js +0 -97
- package/dist/setup/components/ProviderSelector.js.map +0 -1
- package/dist/setup/components/SetupWizard.d.ts +0 -2
- package/dist/setup/components/SetupWizard.d.ts.map +0 -1
- package/dist/setup/components/SetupWizard.js +0 -212
- package/dist/setup/components/SetupWizard.js.map +0 -1
- package/dist/setup/components/StepIndicator.d.ts +0 -13
- package/dist/setup/components/StepIndicator.d.ts.map +0 -1
- package/dist/setup/components/StepIndicator.js +0 -18
- package/dist/setup/components/StepIndicator.js.map +0 -1
- package/dist/setup/components/SuccessScreen.d.ts +0 -18
- package/dist/setup/components/SuccessScreen.d.ts.map +0 -1
- package/dist/setup/components/SuccessScreen.js +0 -38
- package/dist/setup/components/SuccessScreen.js.map +0 -1
- package/dist/setup/index.d.ts +0 -12
- package/dist/setup/index.d.ts.map +0 -1
- package/dist/setup/index.js +0 -29
- package/dist/setup/index.js.map +0 -1
- package/dist/setup/utils/cli-detection.d.ts +0 -12
- package/dist/setup/utils/cli-detection.d.ts.map +0 -1
- package/dist/setup/utils/cli-detection.js +0 -83
- package/dist/setup/utils/cli-detection.js.map +0 -1
- package/dist/setup/utils/config-writer.d.ts +0 -43
- package/dist/setup/utils/config-writer.d.ts.map +0 -1
- package/dist/setup/utils/config-writer.js +0 -180
- package/dist/setup/utils/config-writer.js.map +0 -1
- package/dist/styles.d.ts.map +0 -1
- package/dist/styles.js +0 -12
- package/dist/styles.js.map +0 -1
- package/dist/tui/App.d.ts +0 -3
- package/dist/tui/App.d.ts.map +0 -1
- package/dist/tui/App.js +0 -131
- package/dist/tui/App.js.map +0 -1
- package/dist/tui/components/AgentStateIcon.d.ts +0 -18
- package/dist/tui/components/AgentStateIcon.d.ts.map +0 -1
- package/dist/tui/components/AgentStateIcon.js +0 -57
- package/dist/tui/components/AgentStateIcon.js.map +0 -1
- package/dist/tui/components/AnimatedBranch.d.ts +0 -39
- package/dist/tui/components/AnimatedBranch.d.ts.map +0 -1
- package/dist/tui/components/AnimatedBranch.js +0 -64
- package/dist/tui/components/AnimatedBranch.js.map +0 -1
- package/dist/tui/components/ChatPanel.d.ts +0 -16
- package/dist/tui/components/ChatPanel.d.ts.map +0 -1
- package/dist/tui/components/ChatPanel.js +0 -50
- package/dist/tui/components/ChatPanel.js.map +0 -1
- package/dist/tui/components/DAGPanel.d.ts +0 -36
- package/dist/tui/components/DAGPanel.d.ts.map +0 -1
- package/dist/tui/components/DAGPanel.js +0 -51
- package/dist/tui/components/DAGPanel.js.map +0 -1
- package/dist/tui/components/ExecutionTimeline.d.ts +0 -34
- package/dist/tui/components/ExecutionTimeline.d.ts.map +0 -1
- package/dist/tui/components/ExecutionTimeline.js +0 -67
- package/dist/tui/components/ExecutionTimeline.js.map +0 -1
- package/dist/tui/components/Header.d.ts +0 -12
- package/dist/tui/components/Header.d.ts.map +0 -1
- package/dist/tui/components/Header.js +0 -32
- package/dist/tui/components/Header.js.map +0 -1
- package/dist/tui/components/HelpOverlay.d.ts +0 -7
- package/dist/tui/components/HelpOverlay.d.ts.map +0 -1
- package/dist/tui/components/HelpOverlay.js +0 -60
- package/dist/tui/components/HelpOverlay.js.map +0 -1
- package/dist/tui/components/InputBar.d.ts +0 -10
- package/dist/tui/components/InputBar.d.ts.map +0 -1
- package/dist/tui/components/InputBar.js +0 -21
- package/dist/tui/components/InputBar.js.map +0 -1
- package/dist/tui/components/LogsPanel.d.ts +0 -9
- package/dist/tui/components/MemoryPanel.d.ts +0 -21
- package/dist/tui/components/MetricsPanel.d.ts +0 -18
- package/dist/tui/components/StatusPanel.d.ts +0 -23
- package/dist/tui/components/TaskTree.d.ts +0 -28
- package/dist/tui/components/TaskTree.d.ts.map +0 -1
- package/dist/tui/components/TaskTree.js +0 -29
- package/dist/tui/components/TaskTree.js.map +0 -1
- package/dist/tui/components/animations/ProgressBar.d.ts +0 -39
- package/dist/tui/components/animations/ProgressBar.d.ts.map +0 -1
- package/dist/tui/components/animations/ProgressBar.js +0 -39
- package/dist/tui/components/animations/ProgressBar.js.map +0 -1
- package/dist/tui/components/animations/Pulse.d.ts +0 -17
- package/dist/tui/components/animations/Pulse.d.ts.map +0 -1
- package/dist/tui/components/animations/Pulse.js +0 -47
- package/dist/tui/components/animations/Pulse.js.map +0 -1
- package/dist/tui/components/animations/Spinner.d.ts +0 -13
- package/dist/tui/components/animations/Spinner.d.ts.map +0 -1
- package/dist/tui/components/animations/Spinner.js +0 -36
- package/dist/tui/components/animations/Spinner.js.map +0 -1
- package/dist/tui/components/animations/StatusAnimator.d.ts +0 -27
- package/dist/tui/components/animations/StatusAnimator.d.ts.map +0 -1
- package/dist/tui/components/animations/StatusAnimator.js +0 -85
- package/dist/tui/components/animations/StatusAnimator.js.map +0 -1
- package/dist/tui/components/animations/TypingEffect.d.ts +0 -26
- package/dist/tui/components/animations/TypingEffect.d.ts.map +0 -1
- package/dist/tui/components/animations/TypingEffect.js +0 -59
- package/dist/tui/components/animations/TypingEffect.js.map +0 -1
- package/dist/tui/components/animations/index.d.ts +0 -8
- package/dist/tui/components/animations/index.d.ts.map +0 -1
- package/dist/tui/components/animations/index.js +0 -6
- package/dist/tui/components/animations/index.js.map +0 -1
- package/dist/tui/hooks/useAnimation.d.ts +0 -42
- package/dist/tui/hooks/useAnimation.d.ts.map +0 -1
- package/dist/tui/hooks/useAnimation.js +0 -212
- package/dist/tui/hooks/useAnimation.js.map +0 -1
- package/dist/tui/hooks/useAppState.d.ts +0 -65
- package/dist/tui/hooks/useAppState.d.ts.map +0 -1
- package/dist/tui/hooks/useAppState.js +0 -293
- package/dist/tui/hooks/useAppState.js.map +0 -1
- package/dist/tui/index.d.ts +0 -3
- package/dist/tui/index.d.ts.map +0 -1
- package/dist/tui/index.js +0 -8
- package/dist/tui/index.js.map +0 -1
- package/dist/tui/services/orchestrator.d.ts +0 -16
- package/dist/tui/services/orchestrator.d.ts.map +0 -1
- package/dist/tui/services/orchestrator.js +0 -152
- package/dist/tui/services/orchestrator.js.map +0 -1
- package/dist/tui/styles/borders.d.ts +0 -31
- package/dist/tui/styles/borders.d.ts.map +0 -1
- package/dist/tui/styles/borders.js +0 -47
- package/dist/tui/styles/borders.js.map +0 -1
- package/dist/tui/styles/colors.d.ts +0 -18
- package/dist/tui/styles/colors.d.ts.map +0 -1
- package/dist/tui/styles/colors.js +0 -18
- package/dist/tui/styles/colors.js.map +0 -1
- package/dist/tui/styles/index.d.ts +0 -6
- package/dist/tui/styles/index.d.ts.map +0 -1
- package/dist/tui/styles/index.js +0 -6
- package/dist/tui/styles/index.js.map +0 -1
- package/dist/tui/styles/indicators.d.ts +0 -67
- package/dist/tui/styles/indicators.d.ts.map +0 -1
- package/dist/tui/styles/indicators.js +0 -42
- package/dist/tui/styles/indicators.js.map +0 -1
- package/dist/tui/styles/layout.d.ts +0 -21
- package/dist/tui/styles/layout.d.ts.map +0 -1
- package/dist/tui/styles/layout.js +0 -42
- package/dist/tui/styles/layout.js.map +0 -1
- package/dist/tui/styles/providers.d.ts +0 -77
- package/dist/tui/styles/providers.d.ts.map +0 -1
- package/dist/tui/styles/providers.js +0 -31
- package/dist/tui/styles/providers.js.map +0 -1
- package/dist/tui/utils/animation.d.ts +0 -44
- package/dist/tui/utils/animation.d.ts.map +0 -1
- package/dist/tui/utils/animation.js +0 -107
- package/dist/tui/utils/animation.js.map +0 -1
- package/dist/vendor-manifests.d.ts.map +0 -1
- package/dist/vendor-manifests.js +0 -94
- package/dist/vendor-manifests.js.map +0 -1
- package/dist/ws-relay.d.ts +0 -12
- package/dist/ws-relay.d.ts.map +0 -1
- package/dist/ws-relay.js +0 -148
- package/dist/ws-relay.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LogsPanel.d.ts","sourceRoot":"","sources":["../../../src/tui/components/LogsPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAqD,MAAM,OAAO,CAAC;AAK1E,UAAU,cAAc;IACtB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"LogsPanel.d.ts","sourceRoot":"","sources":["../../../src/tui/components/LogsPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAqD,MAAM,OAAO,CAAC;AAK1E,UAAU,cAAc;IACtB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAuDD,eAAO,MAAM,SAAS,4CAkEpB,CAAC"}
|
|
@@ -27,11 +27,12 @@ const LogLine = memo(function LogLine({ log, isNew }) {
|
|
|
27
27
|
const paddedTag = useMemo(() => parsed.tag.padEnd(7), [parsed.tag]);
|
|
28
28
|
return (_jsxs(Box, { flexDirection: "row", children: [_jsxs(Text, { color: tuiColors.textTertiary, children: ["[", parsed.time, "]"] }), _jsxs(Text, { color: parsed.color, bold: true, children: [" [", paddedTag, "]"] }), _jsxs(Text, { color: isNew ? tuiColors.textPrimary : tuiColors.textSecondary, children: [" ", parsed.message] })] }));
|
|
29
29
|
});
|
|
30
|
-
export const LogsPanel = memo(function LogsPanel({ logs, isActive, isStreaming = false }) {
|
|
30
|
+
export const LogsPanel = memo(function LogsPanel({ logs, isActive, isStreaming = false, maxHeight }) {
|
|
31
31
|
const borderColor = isActive ? tuiColors.primary : tuiColors.border;
|
|
32
32
|
const [highlightedIndex, setHighlightedIndex] = useState(null);
|
|
33
33
|
const timeoutRef = useRef(null);
|
|
34
|
-
const
|
|
34
|
+
const maxLogs = maxHeight ? Math.max(3, maxHeight - 4) : MAX_DISPLAYED_LOGS;
|
|
35
|
+
const displayLogs = useMemo(() => logs.slice(-maxLogs), [logs, maxLogs]);
|
|
35
36
|
useEffect(() => {
|
|
36
37
|
if (logs.length === 0)
|
|
37
38
|
return;
|
|
@@ -51,6 +52,6 @@ export const LogsPanel = memo(function LogsPanel({ logs, isActive, isStreaming =
|
|
|
51
52
|
const isNew = logIndex === highlightedIndex;
|
|
52
53
|
return _jsx(LogLine, { log: log, isNew: isNew }, `${logIndex}-${index}`);
|
|
53
54
|
}), [displayLogs, logs.length, highlightedIndex]);
|
|
54
|
-
return (_jsxs(Box, { flexDirection: "column", flexGrow: 1, borderStyle: "single", borderColor: borderColor, paddingX: 1, children: [_jsxs(Box, { marginBottom: 1, children: [_jsx(Text, { color: tuiColors.primary, bold: true, children: "\u250C\u2500" }), _jsx(Text, { color: tuiColors.primary, bold: true, children: " LOGS_STREAM " }), _jsx(Text, { color: tuiColors.textTertiary, children: "\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500" }), isStreaming && (_jsxs(Box, { flexDirection: "row", children: [_jsx(Text, { color: tuiColors.warning, children: " " }), _jsx(Spinner, { type: "dots", color: tuiColors.warning })] }))] }), _jsxs(Box, { flexDirection: "column", flexGrow: 1, overflow: "hidden", children: [logElements, logs.length === 0 && (_jsx(Text, { color: tuiColors.textTertiary, children: "No logs. Start a workflow to see logs." })), isStreaming && logs.length === 0 && (_jsxs(Box, { flexDirection: "row", children: [_jsx(Spinner, { type: "dots", color: tuiColors.warning }), _jsx(Text, { color: tuiColors.textTertiary, children: " Waiting for logs..." })] }))] })] }));
|
|
55
|
+
return (_jsxs(Box, { flexDirection: "column", flexGrow: 1, height: maxHeight, borderStyle: "single", borderColor: borderColor, paddingX: 1, children: [_jsxs(Box, { marginBottom: 1, flexShrink: 0, children: [_jsx(Text, { color: tuiColors.primary, bold: true, children: "\u250C\u2500" }), _jsx(Text, { color: tuiColors.primary, bold: true, children: " LOGS_STREAM " }), _jsx(Text, { color: tuiColors.textTertiary, children: "\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500" }), isStreaming && (_jsxs(Box, { flexDirection: "row", children: [_jsx(Text, { color: tuiColors.warning, children: " " }), _jsx(Spinner, { type: "dots", color: tuiColors.warning })] }))] }), _jsxs(Box, { flexDirection: "column", flexGrow: 1, overflow: "hidden", children: [logElements, logs.length === 0 && (_jsx(Text, { color: tuiColors.textTertiary, children: "No logs. Start a workflow to see logs." })), isStreaming && logs.length === 0 && (_jsxs(Box, { flexDirection: "row", children: [_jsx(Spinner, { type: "dots", color: tuiColors.warning }), _jsx(Text, { color: tuiColors.textTertiary, children: " Waiting for logs..." })] }))] })] }));
|
|
55
56
|
});
|
|
56
57
|
//# sourceMappingURL=LogsPanel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LogsPanel.js","sourceRoot":"","sources":["../../../src/tui/components/LogsPanel.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAC1E,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"LogsPanel.js","sourceRoot":"","sources":["../../../src/tui/components/LogsPanel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MemoryPanel.d.ts","sourceRoot":"","sources":["../../../src/tui/components/MemoryPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAwB,MAAM,OAAO,CAAC;AAK7C,UAAU,UAAU;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,UAAU,UAAU;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,UAAU,gBAAgB;IACxB,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;IACrB,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"MemoryPanel.d.ts","sourceRoot":"","sources":["../../../src/tui/components/MemoryPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAwB,MAAM,OAAO,CAAC;AAK7C,UAAU,UAAU;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,UAAU,UAAU;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,UAAU,gBAAgB;IACxB,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;IACrB,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAyCD,eAAO,MAAM,WAAW,8CAoGtB,CAAC"}
|
|
@@ -28,7 +28,7 @@ const NodeTypeBadge = memo(function NodeTypeBadge({ type, isActive }) {
|
|
|
28
28
|
const color = NODE_TYPE_COLORS[type] || tuiColors.textTertiary;
|
|
29
29
|
return (_jsxs(Box, { flexDirection: "row", children: [isActive && _jsx(Pulse, { interval: 400, color: color, type: "pulse" }), _jsxs(Text, { color: color, children: ["[", type, "]"] })] }));
|
|
30
30
|
});
|
|
31
|
-
export const MemoryPanel = memo(function MemoryPanel({ nodes, edges, nodeCount = 0, cacheHitRate = 0, isActive = false, tick = 0 }) {
|
|
31
|
+
export const MemoryPanel = memo(function MemoryPanel({ nodes, edges, nodeCount = 0, cacheHitRate = 0, isActive = false, tick = 0, maxHeight }) {
|
|
32
32
|
const borderColor = isActive ? tuiColors.primary : tuiColors.border;
|
|
33
33
|
const displayNodes = (nodes && nodes.length > 0) ? nodes : DEFAULT_NODES;
|
|
34
34
|
const displayEdges = (edges && edges.length > 0) ? edges : DEFAULT_EDGES;
|
|
@@ -46,6 +46,6 @@ export const MemoryPanel = memo(function MemoryPanel({ nodes, edges, nodeCount =
|
|
|
46
46
|
return (_jsxs(Box, { flexDirection: "row", children: [_jsx(Text, { color: tuiColors.textSecondary, children: treeChars.branch }), _jsxs(Text, { color: tuiColors.textPrimary, children: [" ", fromNode?.label || "?"] }), _jsx(Text, { color: tuiColors.primary, children: " \u2500\u2500\u25B6 " }), _jsx(Text, { color: tuiColors.textPrimary, children: toNode?.label || "?" })] }, i));
|
|
47
47
|
}), [displayEdges, displayNodes]);
|
|
48
48
|
const mutationCount = useMemo(() => Math.floor(Math.random() * 4) + 1, [tick]);
|
|
49
|
-
return (_jsxs(Box, { flexDirection: "column", flexGrow: 1, borderStyle: "single", borderColor: borderColor, paddingX: 1, children: [_jsxs(Box, { marginBottom: 1, children: [_jsx(Text, { color: tuiColors.primary, bold: true, children: "\u250C\u2500" }), _jsx(Text, { color: tuiColors.primary, bold: true, children: " QSGM " }), _jsxs(Text, { color: tuiColors.textTertiary, children: ["\u2500\u2500 nodes: ", displayNodeCount, " \u2500\u2500"] }), isActive && _jsx(Pulse, { interval: 500, color: tuiColors.primary, type: "pulse" })] }), _jsx(Box, { flexDirection: "column", children: _jsx(Text, { color: tuiColors.textTertiary, bold: true, children: "QUANTUM_SEMANTIC_GRAPH_MEMORY" }) }), _jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(Text, { color: tuiColors.textTertiary, bold: true, children: "GRAPH VISUALIZATION" }), _jsx(Box, { flexDirection: "column", marginTop: 1, children: nodeElements })] }), _jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(Text, { color: tuiColors.textTertiary, bold: true, children: "CONNECTIONS" }), _jsx(Box, { flexDirection: "column", marginTop: 1, children: edgeElements })] }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: tuiColors.textTertiary, children: "\u251C\u2500 STATS \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500" }) }), _jsxs(Box, { flexDirection: "row", children: [_jsx(Text, { color: tuiColors.textSecondary, children: "Cache Hit:" }), _jsx(Text, { color: tuiColors.success, children: " " }), _jsx(Pulse, { interval: 800, color: tuiColors.success, type: "breath" }), _jsxs(Text, { color: tuiColors.success, children: [" ", displayCacheHitRate, "%"] }), _jsxs(Text, { color: tuiColors.textTertiary, children: [" \u2502 Mutations: +", mutationCount] })] })] }));
|
|
49
|
+
return (_jsxs(Box, { flexDirection: "column", flexGrow: 1, height: maxHeight, borderStyle: "single", borderColor: borderColor, paddingX: 1, children: [_jsxs(Box, { marginBottom: 1, flexShrink: 0, children: [_jsx(Text, { color: tuiColors.primary, bold: true, children: "\u250C\u2500" }), _jsx(Text, { color: tuiColors.primary, bold: true, children: " QSGM " }), _jsxs(Text, { color: tuiColors.textTertiary, children: ["\u2500\u2500 nodes: ", displayNodeCount, " \u2500\u2500"] }), isActive && _jsx(Pulse, { interval: 500, color: tuiColors.primary, type: "pulse" })] }), _jsx(Box, { flexDirection: "column", flexShrink: 0, children: _jsx(Text, { color: tuiColors.textTertiary, bold: true, children: "QUANTUM_SEMANTIC_GRAPH_MEMORY" }) }), _jsxs(Box, { flexDirection: "column", marginTop: 1, overflow: "hidden", children: [_jsx(Text, { color: tuiColors.textTertiary, bold: true, children: "GRAPH VISUALIZATION" }), _jsx(Box, { flexDirection: "column", marginTop: 1, children: nodeElements })] }), _jsxs(Box, { flexDirection: "column", marginTop: 1, overflow: "hidden", children: [_jsx(Text, { color: tuiColors.textTertiary, bold: true, children: "CONNECTIONS" }), _jsx(Box, { flexDirection: "column", marginTop: 1, children: edgeElements })] }), _jsx(Box, { marginTop: 1, flexShrink: 0, children: _jsx(Text, { color: tuiColors.textTertiary, children: "\u251C\u2500 STATS \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500" }) }), _jsxs(Box, { flexDirection: "row", flexShrink: 0, children: [_jsx(Text, { color: tuiColors.textSecondary, children: "Cache Hit:" }), _jsx(Text, { color: tuiColors.success, children: " " }), _jsx(Pulse, { interval: 800, color: tuiColors.success, type: "breath" }), _jsxs(Text, { color: tuiColors.success, children: [" ", displayCacheHitRate, "%"] }), _jsxs(Text, { color: tuiColors.textTertiary, children: [" \u2502 Mutations: +", mutationCount] })] })] }));
|
|
50
50
|
});
|
|
51
51
|
//# sourceMappingURL=MemoryPanel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MemoryPanel.js","sourceRoot":"","sources":["../../../src/tui/components/MemoryPanel.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAC7C,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"MemoryPanel.js","sourceRoot":"","sources":["../../../src/tui/components/MemoryPanel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MetricsPanel.d.ts","sourceRoot":"","sources":["../../../src/tui/components/MetricsPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAwB,MAAM,OAAO,CAAC;AAK7C,UAAU,WAAW;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,UAAU,iBAAiB;IACzB,OAAO,EAAE,WAAW,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"MetricsPanel.d.ts","sourceRoot":"","sources":["../../../src/tui/components/MetricsPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAwB,MAAM,OAAO,CAAC;AAK7C,UAAU,WAAW;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,UAAU,iBAAiB;IACzB,OAAO,EAAE,WAAW,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAwCD,eAAO,MAAM,YAAY,+CA2FvB,CAAC"}
|
|
@@ -12,7 +12,7 @@ const AnimatedMetricBar = memo(function AnimatedMetricBar({ value, max, width =
|
|
|
12
12
|
const percent = useMemo(() => Math.min((value / max) * 100, 100), [value, max]);
|
|
13
13
|
return (_jsx(AnimatedProgressBar, { progress: percent, width: width, tick: tick || 0, animated: animated, showPercentage: false }));
|
|
14
14
|
});
|
|
15
|
-
export const MetricsPanel = memo(function MetricsPanel({ metrics, fitness, isActive, tick = 0 }) {
|
|
15
|
+
export const MetricsPanel = memo(function MetricsPanel({ metrics, fitness, isActive, tick = 0, maxHeight }) {
|
|
16
16
|
const borderColor = isActive ? tuiColors.primary : tuiColors.border;
|
|
17
17
|
const fitnessColor = fitness >= 0.9
|
|
18
18
|
? tuiColors.success
|
|
@@ -22,6 +22,6 @@ export const MetricsPanel = memo(function MetricsPanel({ metrics, fitness, isAct
|
|
|
22
22
|
const showSuccessPulse = metrics.successRate >= 90;
|
|
23
23
|
const costStr = useMemo(() => metrics.totalCost.toFixed(4), [metrics.totalCost]);
|
|
24
24
|
const agentElements = useMemo(() => TOP_AGENTS.map((agent, idx) => (_jsxs(Box, { flexDirection: "row", children: [_jsx(Text, { color: tuiColors.textPrimary, children: agent.name.padEnd(14) }), _jsx(AnimatedMetricBar, { value: agent.percent, max: 100, width: 8, tick: tick, animated: isActive && idx === 0 }), _jsxs(Text, { color: tuiColors.textTertiary, children: [" ", agent.percent, "%"] })] }, agent.name))), [tick, isActive]);
|
|
25
|
-
return (_jsxs(Box, { flexDirection: "column", width: 30, borderStyle: "single", borderColor: borderColor, paddingX: 1, children: [_jsxs(Box, { marginBottom: 1, children: [_jsx(Text, { color: tuiColors.primary, bold: true, children: "\u250C\u2500" }), _jsx(Text, { color: tuiColors.primary, bold: true, children: " PERFORMANCE " }), _jsx(Text, { color: tuiColors.textTertiary, children: "\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500" })] }), _jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { color: tuiColors.textTertiary, bold: true, children: "METRICS" }), _jsxs(Box, { flexDirection: "row", marginTop: 1, children: [_jsx(Text, { color: tuiColors.textSecondary, children: "Sessions:" }), _jsxs(Text, { color: tuiColors.textPrimary, bold: true, children: [" ", metrics.sessions] })] }), _jsxs(Box, { flexDirection: "row", children: [_jsx(Text, { color: tuiColors.textSecondary, children: "Avg Duration:" }), _jsxs(Text, { color: tuiColors.textPrimary, children: [" ", metrics.avgDuration, "ms"] })] }), _jsxs(Box, { flexDirection: "row", children: [_jsx(Text, { color: tuiColors.textSecondary, children: "Success Rate:" }), _jsxs(Text, { color: tuiColors.success, children: [" ", metrics.successRate, "%"] }), showSuccessPulse && _jsx(Pulse, { interval: 1000, color: tuiColors.success, type: "breath" })] }), _jsxs(Box, { flexDirection: "row", children: [_jsx(Text, { color: tuiColors.textSecondary, children: "Cost:" }), _jsxs(Text, { color: tuiColors.warning, children: [" $", costStr] })] })] }), _jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(Text, { color: tuiColors.textTertiary, bold: true, children: "FITNESS SCORE" }), _jsx(FitnessAnimator, { value: fitness }), _jsx(Box, { flexDirection: "row", children: _jsx(AnimatedMetricBar, { value: fitness, max: 1, width: 12, tick: tick, animated: isActive }) })] }), _jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(Text, { color: tuiColors.textTertiary, bold: true, children: "TOP AGENTS" }), _jsx(Box, { flexDirection: "column", marginTop: 1, children: agentElements })] })] }));
|
|
25
|
+
return (_jsxs(Box, { flexDirection: "column", width: 30, height: maxHeight, borderStyle: "single", borderColor: borderColor, paddingX: 1, children: [_jsxs(Box, { marginBottom: 1, flexShrink: 0, children: [_jsx(Text, { color: tuiColors.primary, bold: true, children: "\u250C\u2500" }), _jsx(Text, { color: tuiColors.primary, bold: true, children: " PERFORMANCE " }), _jsx(Text, { color: tuiColors.textTertiary, children: "\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500" })] }), _jsxs(Box, { flexDirection: "column", flexShrink: 0, children: [_jsx(Text, { color: tuiColors.textTertiary, bold: true, children: "METRICS" }), _jsxs(Box, { flexDirection: "row", marginTop: 1, children: [_jsx(Text, { color: tuiColors.textSecondary, children: "Sessions:" }), _jsxs(Text, { color: tuiColors.textPrimary, bold: true, children: [" ", metrics.sessions] })] }), _jsxs(Box, { flexDirection: "row", children: [_jsx(Text, { color: tuiColors.textSecondary, children: "Avg Duration:" }), _jsxs(Text, { color: tuiColors.textPrimary, children: [" ", metrics.avgDuration, "ms"] })] }), _jsxs(Box, { flexDirection: "row", children: [_jsx(Text, { color: tuiColors.textSecondary, children: "Success Rate:" }), _jsxs(Text, { color: tuiColors.success, children: [" ", metrics.successRate, "%"] }), showSuccessPulse && _jsx(Pulse, { interval: 1000, color: tuiColors.success, type: "breath" })] }), _jsxs(Box, { flexDirection: "row", children: [_jsx(Text, { color: tuiColors.textSecondary, children: "Cost:" }), _jsxs(Text, { color: tuiColors.warning, children: [" $", costStr] })] })] }), _jsxs(Box, { flexDirection: "column", marginTop: 1, flexShrink: 0, children: [_jsx(Text, { color: tuiColors.textTertiary, bold: true, children: "FITNESS SCORE" }), _jsx(FitnessAnimator, { value: fitness }), _jsx(Box, { flexDirection: "row", children: _jsx(AnimatedMetricBar, { value: fitness, max: 1, width: 12, tick: tick, animated: isActive }) })] }), _jsxs(Box, { flexDirection: "column", marginTop: 1, overflow: "hidden", children: [_jsx(Text, { color: tuiColors.textTertiary, bold: true, children: "TOP AGENTS" }), _jsx(Box, { flexDirection: "column", marginTop: 1, children: agentElements })] })] }));
|
|
26
26
|
});
|
|
27
27
|
//# sourceMappingURL=MetricsPanel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MetricsPanel.js","sourceRoot":"","sources":["../../../src/tui/components/MetricsPanel.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAC7C,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"MetricsPanel.js","sourceRoot":"","sources":["../../../src/tui/components/MetricsPanel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StatusPanel.d.ts","sourceRoot":"","sources":["../../../src/tui/components/StatusPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAwB,MAAM,OAAO,CAAC;AAK7C,UAAU,KAAK;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC/C,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,QAAQ;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,gBAAgB;IACxB,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"StatusPanel.d.ts","sourceRoot":"","sources":["../../../src/tui/components/StatusPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAwB,MAAM,OAAO,CAAC;AAK7C,UAAU,KAAK;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC/C,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,QAAQ;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,gBAAgB;IACxB,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA+CD,eAAO,MAAM,WAAW,8CAkEtB,CAAC"}
|
|
@@ -13,11 +13,12 @@ const ProviderRow = memo(function ProviderRow({ provider, tick }) {
|
|
|
13
13
|
const providerInfo = useMemo(() => getProviderTag(provider.name), [provider.name]);
|
|
14
14
|
return (_jsxs(Box, { flexDirection: "row", children: [isActive ? (_jsx(Pulse, { interval: 800, color: tuiColors.success, type: "breath" })) : (_jsx(Text, { color: tuiColors.textTertiary, children: "\u25CB" })), _jsxs(Text, { color: tuiColors.textPrimary, children: [" ", provider.name.padEnd(12)] }), _jsxs(Text, { color: tuiColors.textTertiary, children: [" ", provider.latency > 0 ? `${provider.latency}ms`.padStart(6) : "--".padStart(6)] })] }));
|
|
15
15
|
});
|
|
16
|
-
export const StatusPanel = memo(function StatusPanel({ agents, providers, fitness, currentWorkflow, isActive, tick = 0 }) {
|
|
16
|
+
export const StatusPanel = memo(function StatusPanel({ agents, providers, fitness, currentWorkflow, isActive, tick = 0, maxHeight }) {
|
|
17
17
|
const borderColor = isActive ? tuiColors.primary : tuiColors.border;
|
|
18
|
-
const
|
|
18
|
+
const maxAgents = maxHeight ? Math.max(2, Math.floor((maxHeight - 12) / 2)) : 4;
|
|
19
|
+
const activeAgents = useMemo(() => agents.filter(a => a.status === "running" || a.status === "queued").slice(0, maxAgents), [agents, maxAgents]);
|
|
19
20
|
const hasNoActiveAgents = activeAgents.length === 0;
|
|
20
21
|
const workflowDisplay = useMemo(() => currentWorkflow ? `▶ ${currentWorkflow.slice(0, 20)}...` : "○ None", [currentWorkflow]);
|
|
21
|
-
return (_jsxs(Box, { flexDirection: "column", width: 30, borderStyle: "single", borderColor: borderColor, children: [_jsxs(Box, { paddingX: 1, children: [_jsx(Text, { color: tuiColors.primary, bold: true, children: "\u250C\u2500" }), _jsx(Text, { color: tuiColors.primary, bold: true, children: " SYSTEM_STATUS " }), _jsx(Text, { color: tuiColors.textTertiary, children: "\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500" })] }), _jsxs(Box, { flexDirection: "column", paddingX: 1, children: [_jsx(Text, { color: tuiColors.textTertiary, bold: true, children: "ORCHESTRATOR" }), _jsxs(Box, { flexDirection: "row", children: [_jsx(Text, { color: tuiColors.textSecondary, children: "Status:" }), _jsx(Text, { color: tuiColors.success, children: " " }), _jsx(Pulse, { interval: 600, color: tuiColors.success, type: "breath" }), _jsx(Text, { color: tuiColors.success, children: " ACTIVE" })] })] }), _jsxs(Box, { flexDirection: "column", paddingX: 1, marginTop: 1, children: [_jsx(Text, { color: tuiColors.textTertiary, bold: true, children: "WORKFLOW" }), _jsx(Text, { color: tuiColors.textPrimary, children: workflowDisplay }), _jsx(FitnessAnimator, { value: fitness })] }), _jsxs(Box, { flexDirection: "column", paddingX: 1, marginTop: 1, children: [_jsx(Text, { color: tuiColors.textTertiary, bold: true, children: "ACTIVE AGENTS" }), activeAgents.map((agent) => (_jsx(AgentRow, { agent: agent, tick: tick }, agent.name))), hasNoActiveAgents && (_jsx(Text, { color: tuiColors.textQuaternary, children: " \u25CB All idle" }))] }), _jsxs(Box, { flexDirection: "column", paddingX: 1, marginTop: 1, children: [_jsx(Text, { color: tuiColors.textTertiary, bold: true, children: "PROVIDERS" }), providers.map((provider) => (_jsx(ProviderRow, { provider: provider, tick: tick }, provider.name)))] })] }));
|
|
22
|
+
return (_jsxs(Box, { flexDirection: "column", width: 30, height: maxHeight, borderStyle: "single", borderColor: borderColor, children: [_jsxs(Box, { paddingX: 1, flexShrink: 0, children: [_jsx(Text, { color: tuiColors.primary, bold: true, children: "\u250C\u2500" }), _jsx(Text, { color: tuiColors.primary, bold: true, children: " SYSTEM_STATUS " }), _jsx(Text, { color: tuiColors.textTertiary, children: "\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500" })] }), _jsxs(Box, { flexDirection: "column", paddingX: 1, flexShrink: 0, children: [_jsx(Text, { color: tuiColors.textTertiary, bold: true, children: "ORCHESTRATOR" }), _jsxs(Box, { flexDirection: "row", children: [_jsx(Text, { color: tuiColors.textSecondary, children: "Status:" }), _jsx(Text, { color: tuiColors.success, children: " " }), _jsx(Pulse, { interval: 600, color: tuiColors.success, type: "breath" }), _jsx(Text, { color: tuiColors.success, children: " ACTIVE" })] })] }), _jsxs(Box, { flexDirection: "column", paddingX: 1, marginTop: 1, flexShrink: 0, children: [_jsx(Text, { color: tuiColors.textTertiary, bold: true, children: "WORKFLOW" }), _jsx(Text, { color: tuiColors.textPrimary, children: workflowDisplay }), _jsx(FitnessAnimator, { value: fitness })] }), _jsxs(Box, { flexDirection: "column", paddingX: 1, marginTop: 1, overflow: "hidden", children: [_jsx(Text, { color: tuiColors.textTertiary, bold: true, children: "ACTIVE AGENTS" }), activeAgents.map((agent) => (_jsx(AgentRow, { agent: agent, tick: tick }, agent.name))), hasNoActiveAgents && (_jsx(Text, { color: tuiColors.textQuaternary, children: " \u25CB All idle" }))] }), _jsxs(Box, { flexDirection: "column", paddingX: 1, marginTop: 1, overflow: "hidden", children: [_jsx(Text, { color: tuiColors.textTertiary, bold: true, children: "PROVIDERS" }), providers.map((provider) => (_jsx(ProviderRow, { provider: provider, tick: tick }, provider.name)))] })] }));
|
|
22
23
|
});
|
|
23
24
|
//# sourceMappingURL=StatusPanel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StatusPanel.js","sourceRoot":"","sources":["../../../src/tui/components/StatusPanel.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAC7C,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACnF,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"StatusPanel.js","sourceRoot":"","sources":["../../../src/tui/components/StatusPanel.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -76,13 +76,14 @@ export function ProviderSelector({
|
|
|
76
76
|
} else if (key.downArrow) {
|
|
77
77
|
setFocusedIndex((prev) => (prev === PROVIDERS.length - 1 ? 0 : prev + 1));
|
|
78
78
|
} else if (key.return) {
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
onContinue();
|
|
82
|
-
}
|
|
83
|
-
} else if (focusedIndex === PROVIDERS.length + 1) {
|
|
79
|
+
// If BACK is focused, go back
|
|
80
|
+
if (focusedIndex === PROVIDERS.length + 1) {
|
|
84
81
|
onBack();
|
|
85
|
-
} else {
|
|
82
|
+
} else if (selectedProviders.length > 0) {
|
|
83
|
+
// If at least one provider is selected, ENTER should continue
|
|
84
|
+
onContinue();
|
|
85
|
+
} else if (focusedIndex < PROVIDERS.length) {
|
|
86
|
+
// No providers selected yet: toggle the focused provider
|
|
86
87
|
onToggle(PROVIDERS[focusedIndex].id);
|
|
87
88
|
}
|
|
88
89
|
} else if (input === " ") {
|
package/src/tui/App.tsx
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React, { useState, useEffect, useRef, useMemo, useCallback } from "react";
|
|
2
|
-
import { Box, Text, useApp, useInput } from "ink";
|
|
2
|
+
import { Box, Text, useApp, useInput, useStdout } from "ink";
|
|
3
3
|
import { Header } from "./components/Header.js";
|
|
4
4
|
import { ChatPanel } from "./components/ChatPanel.js";
|
|
5
5
|
import { StatusPanel } from "./components/StatusPanel.js";
|
|
@@ -18,6 +18,7 @@ const TICK_INTERVAL = 200;
|
|
|
18
18
|
|
|
19
19
|
export const App = React.memo(function App() {
|
|
20
20
|
const { exit } = useApp();
|
|
21
|
+
const { stdout } = useStdout();
|
|
21
22
|
const { state, processCommand } = useAppState();
|
|
22
23
|
const [activePanel, setActivePanel] = useState<ActivePanel>("chat");
|
|
23
24
|
const [showHelp, setShowHelp] = useState(false);
|
|
@@ -25,6 +26,11 @@ export const App = React.memo(function App() {
|
|
|
25
26
|
const [viewMode, setViewMode] = useState<"full" | "compact">("full");
|
|
26
27
|
const intervalRef = useRef<NodeJS.Timeout | null>(null);
|
|
27
28
|
|
|
29
|
+
const terminalHeight = stdout?.rows || 24;
|
|
30
|
+
const headerHeight = 5;
|
|
31
|
+
const inputBarHeight = 4;
|
|
32
|
+
const availableHeight = Math.max(8, terminalHeight - headerHeight - inputBarHeight);
|
|
33
|
+
|
|
28
34
|
useEffect(() => {
|
|
29
35
|
intervalRef.current = setInterval(() => {
|
|
30
36
|
setTick((t) => t + 1);
|
|
@@ -146,27 +152,27 @@ export const App = React.memo(function App() {
|
|
|
146
152
|
}), [handleSubmit, state.suggestions, state.isProcessing, state.projectName]);
|
|
147
153
|
|
|
148
154
|
return (
|
|
149
|
-
<Box flexDirection="column" height=
|
|
155
|
+
<Box flexDirection="column" height={terminalHeight} width="100%">
|
|
150
156
|
<Header {...headerProps} />
|
|
151
157
|
|
|
152
158
|
{showHelp ? (
|
|
153
159
|
<HelpOverlay onDismiss={handleDismissHelp} />
|
|
154
160
|
) : (
|
|
155
161
|
<>
|
|
156
|
-
<Box
|
|
157
|
-
<ChatPanel {...chatPanelProps} />
|
|
158
|
-
<DAGPanel {...dagPanelProps} />
|
|
162
|
+
<Box flexDirection="row" width="100%" height={availableHeight}>
|
|
163
|
+
<ChatPanel {...chatPanelProps} maxHeight={availableHeight} />
|
|
164
|
+
<DAGPanel {...dagPanelProps} maxHeight={availableHeight} />
|
|
159
165
|
{viewMode === "full" && (
|
|
160
166
|
<>
|
|
161
|
-
<LogsPanel {...logsPanelProps} />
|
|
167
|
+
<LogsPanel {...logsPanelProps} maxHeight={availableHeight} />
|
|
162
168
|
<Box flexDirection="column">
|
|
163
|
-
<MetricsPanel {...metricsPanelProps} />
|
|
164
|
-
<MemoryPanel {...memoryPanelProps} />
|
|
169
|
+
<MetricsPanel {...metricsPanelProps} maxHeight={Math.floor(availableHeight / 2)} />
|
|
170
|
+
<MemoryPanel {...memoryPanelProps} maxHeight={Math.floor(availableHeight / 2)} />
|
|
165
171
|
</Box>
|
|
166
172
|
</>
|
|
167
173
|
)}
|
|
168
174
|
{viewMode === "compact" && (
|
|
169
|
-
<StatusPanel {...statusPanelProps} />
|
|
175
|
+
<StatusPanel {...statusPanelProps} maxHeight={availableHeight} />
|
|
170
176
|
)}
|
|
171
177
|
</Box>
|
|
172
178
|
<InputBar {...inputBarProps} />
|
|
@@ -15,6 +15,7 @@ interface ChatPanelProps {
|
|
|
15
15
|
messages: Message[];
|
|
16
16
|
isProcessing: boolean;
|
|
17
17
|
isActive: boolean;
|
|
18
|
+
maxHeight?: number;
|
|
18
19
|
}
|
|
19
20
|
|
|
20
21
|
const MESSAGE_CONFIG: Record<string, { tag: string; color: string }> = {
|
|
@@ -63,14 +64,15 @@ const MessageItem = memo(function MessageItem({ message, animate = false }: Mess
|
|
|
63
64
|
);
|
|
64
65
|
});
|
|
65
66
|
|
|
66
|
-
export const ChatPanel = memo(function ChatPanel({ messages, isProcessing, isActive }: ChatPanelProps) {
|
|
67
|
+
export const ChatPanel = memo(function ChatPanel({ messages, isProcessing, isActive, maxHeight }: ChatPanelProps) {
|
|
67
68
|
const borderColor = isActive ? tuiColors.primary : tuiColors.border;
|
|
68
69
|
const [animatingMessageId, setAnimatingMessageId] = useState<string | null>(null);
|
|
69
70
|
const timeoutRef = React.useRef<NodeJS.Timeout | null>(null);
|
|
70
71
|
|
|
72
|
+
const maxMsgs = maxHeight ? Math.max(3, maxHeight - 4) : MAX_DISPLAYED_MESSAGES;
|
|
71
73
|
const displayMessages = useMemo(() =>
|
|
72
|
-
messages.slice(-
|
|
73
|
-
[messages]
|
|
74
|
+
messages.slice(-maxMsgs),
|
|
75
|
+
[messages, maxMsgs]
|
|
74
76
|
);
|
|
75
77
|
|
|
76
78
|
useEffect(() => {
|
|
@@ -106,11 +108,12 @@ export const ChatPanel = memo(function ChatPanel({ messages, isProcessing, isAct
|
|
|
106
108
|
<Box
|
|
107
109
|
flexDirection="column"
|
|
108
110
|
flexGrow={2}
|
|
111
|
+
height={maxHeight}
|
|
109
112
|
borderStyle="single"
|
|
110
113
|
borderColor={borderColor}
|
|
111
114
|
paddingX={1}
|
|
112
115
|
>
|
|
113
|
-
<Box marginBottom={1}>
|
|
116
|
+
<Box marginBottom={1} flexShrink={0}>
|
|
114
117
|
<Text color={tuiColors.primary} bold>┌─</Text>
|
|
115
118
|
<Text color={tuiColors.primary} bold> CHAT </Text>
|
|
116
119
|
<Text color={tuiColors.textTertiary}>─────────────────────────────────────</Text>
|
|
@@ -148,13 +148,16 @@ interface DAGPanelProps {
|
|
|
148
148
|
workflowState: WorkflowState;
|
|
149
149
|
tick: number;
|
|
150
150
|
isActive: boolean;
|
|
151
|
+
maxHeight?: number;
|
|
151
152
|
}
|
|
152
153
|
|
|
153
|
-
export const DAGPanel = memo(function DAGPanel({ workflowState, tick, isActive }: DAGPanelProps) {
|
|
154
|
+
export const DAGPanel = memo(function DAGPanel({ workflowState, tick, isActive, maxHeight }: DAGPanelProps) {
|
|
154
155
|
const borderColor = isActive ? tuiColors.primary : tuiColors.border;
|
|
155
156
|
|
|
157
|
+
const visibleLevels = maxHeight ? Math.max(2, Math.floor((maxHeight - 6) / 4)) : workflowState.levels.length;
|
|
158
|
+
|
|
156
159
|
const levelViews = useMemo(() =>
|
|
157
|
-
workflowState.levels.map((level, index) => (
|
|
160
|
+
workflowState.levels.slice(0, visibleLevels).map((level, index) => (
|
|
158
161
|
<DAGLevelView
|
|
159
162
|
key={level.name}
|
|
160
163
|
level={level}
|
|
@@ -162,7 +165,7 @@ export const DAGPanel = memo(function DAGPanel({ workflowState, tick, isActive }
|
|
|
162
165
|
isActive={index === workflowState.currentLevel}
|
|
163
166
|
/>
|
|
164
167
|
)),
|
|
165
|
-
[workflowState.levels, workflowState.currentLevel, tick]
|
|
168
|
+
[workflowState.levels, workflowState.currentLevel, tick, visibleLevels]
|
|
166
169
|
);
|
|
167
170
|
|
|
168
171
|
const isAnimating = useMemo(() =>
|
|
@@ -174,24 +177,25 @@ export const DAGPanel = memo(function DAGPanel({ workflowState, tick, isActive }
|
|
|
174
177
|
<Box
|
|
175
178
|
flexDirection="column"
|
|
176
179
|
width={46}
|
|
180
|
+
height={maxHeight}
|
|
177
181
|
borderStyle="single"
|
|
178
182
|
borderColor={borderColor}
|
|
179
183
|
paddingX={1}
|
|
180
184
|
>
|
|
181
|
-
<Box marginBottom={1}>
|
|
185
|
+
<Box marginBottom={1} flexShrink={0}>
|
|
182
186
|
<Text color={tuiColors.primary} bold>┌─</Text>
|
|
183
187
|
<Text color={tuiColors.primary} bold> DAG_EXECUTION </Text>
|
|
184
188
|
<Text color={tuiColors.textTertiary}>──────────────────────</Text>
|
|
185
189
|
</Box>
|
|
186
190
|
|
|
187
|
-
<Box flexDirection="column" flexGrow={1}>
|
|
191
|
+
<Box flexDirection="column" flexGrow={1} overflow="hidden">
|
|
188
192
|
{levelViews}
|
|
189
193
|
</Box>
|
|
190
194
|
|
|
191
|
-
<Box marginTop={1}>
|
|
195
|
+
<Box marginTop={1} flexShrink={0}>
|
|
192
196
|
<Text color={tuiColors.textTertiary}>├─ TOTAL ─────────────────────────</Text>
|
|
193
197
|
</Box>
|
|
194
|
-
<Box flexDirection="row">
|
|
198
|
+
<Box flexDirection="row" flexShrink={0}>
|
|
195
199
|
<Text color={tuiColors.textSecondary}>Progress: </Text>
|
|
196
200
|
<AnimatedProgressBar
|
|
197
201
|
progress={workflowState.totalProgress}
|
|
@@ -7,6 +7,7 @@ interface LogsPanelProps {
|
|
|
7
7
|
logs: string[];
|
|
8
8
|
isActive: boolean;
|
|
9
9
|
isStreaming?: boolean;
|
|
10
|
+
maxHeight?: number;
|
|
10
11
|
}
|
|
11
12
|
|
|
12
13
|
const MAX_DISPLAYED_LOGS = 12;
|
|
@@ -62,12 +63,13 @@ const LogLine = memo(function LogLine({ log, isNew }: LogLineProps) {
|
|
|
62
63
|
);
|
|
63
64
|
});
|
|
64
65
|
|
|
65
|
-
export const LogsPanel = memo(function LogsPanel({ logs, isActive, isStreaming = false }: LogsPanelProps) {
|
|
66
|
+
export const LogsPanel = memo(function LogsPanel({ logs, isActive, isStreaming = false, maxHeight }: LogsPanelProps) {
|
|
66
67
|
const borderColor = isActive ? tuiColors.primary : tuiColors.border;
|
|
67
68
|
const [highlightedIndex, setHighlightedIndex] = useState<number | null>(null);
|
|
68
69
|
const timeoutRef = useRef<NodeJS.Timeout | null>(null);
|
|
69
70
|
|
|
70
|
-
const
|
|
71
|
+
const maxLogs = maxHeight ? Math.max(3, maxHeight - 4) : MAX_DISPLAYED_LOGS;
|
|
72
|
+
const displayLogs = useMemo(() => logs.slice(-maxLogs), [logs, maxLogs]);
|
|
71
73
|
|
|
72
74
|
useEffect(() => {
|
|
73
75
|
if (logs.length === 0) return;
|
|
@@ -97,11 +99,12 @@ export const LogsPanel = memo(function LogsPanel({ logs, isActive, isStreaming =
|
|
|
97
99
|
<Box
|
|
98
100
|
flexDirection="column"
|
|
99
101
|
flexGrow={1}
|
|
102
|
+
height={maxHeight}
|
|
100
103
|
borderStyle="single"
|
|
101
104
|
borderColor={borderColor}
|
|
102
105
|
paddingX={1}
|
|
103
106
|
>
|
|
104
|
-
<Box marginBottom={1}>
|
|
107
|
+
<Box marginBottom={1} flexShrink={0}>
|
|
105
108
|
<Text color={tuiColors.primary} bold>┌─</Text>
|
|
106
109
|
<Text color={tuiColors.primary} bold> LOGS_STREAM </Text>
|
|
107
110
|
<Text color={tuiColors.textTertiary}>────────────────────────────</Text>
|
|
@@ -21,6 +21,7 @@ interface MemoryPanelProps {
|
|
|
21
21
|
cacheHitRate?: number;
|
|
22
22
|
isActive?: boolean;
|
|
23
23
|
tick?: number;
|
|
24
|
+
maxHeight?: number;
|
|
24
25
|
}
|
|
25
26
|
|
|
26
27
|
const DEFAULT_NODES: MemoryNode[] = [
|
|
@@ -68,7 +69,8 @@ export const MemoryPanel = memo(function MemoryPanel({
|
|
|
68
69
|
nodeCount = 0,
|
|
69
70
|
cacheHitRate = 0,
|
|
70
71
|
isActive = false,
|
|
71
|
-
tick = 0
|
|
72
|
+
tick = 0,
|
|
73
|
+
maxHeight
|
|
72
74
|
}: MemoryPanelProps) {
|
|
73
75
|
const borderColor = isActive ? tuiColors.primary : tuiColors.border;
|
|
74
76
|
|
|
@@ -119,39 +121,40 @@ export const MemoryPanel = memo(function MemoryPanel({
|
|
|
119
121
|
<Box
|
|
120
122
|
flexDirection="column"
|
|
121
123
|
flexGrow={1}
|
|
124
|
+
height={maxHeight}
|
|
122
125
|
borderStyle="single"
|
|
123
126
|
borderColor={borderColor}
|
|
124
127
|
paddingX={1}
|
|
125
128
|
>
|
|
126
|
-
<Box marginBottom={1}>
|
|
129
|
+
<Box marginBottom={1} flexShrink={0}>
|
|
127
130
|
<Text color={tuiColors.primary} bold>┌─</Text>
|
|
128
131
|
<Text color={tuiColors.primary} bold> QSGM </Text>
|
|
129
132
|
<Text color={tuiColors.textTertiary}>── nodes: {displayNodeCount} ──</Text>
|
|
130
133
|
{isActive && <Pulse interval={500} color={tuiColors.primary} type="pulse" />}
|
|
131
134
|
</Box>
|
|
132
135
|
|
|
133
|
-
<Box flexDirection="column">
|
|
136
|
+
<Box flexDirection="column" flexShrink={0}>
|
|
134
137
|
<Text color={tuiColors.textTertiary} bold>QUANTUM_SEMANTIC_GRAPH_MEMORY</Text>
|
|
135
138
|
</Box>
|
|
136
139
|
|
|
137
|
-
<Box flexDirection="column" marginTop={1}>
|
|
140
|
+
<Box flexDirection="column" marginTop={1} overflow="hidden">
|
|
138
141
|
<Text color={tuiColors.textTertiary} bold>GRAPH VISUALIZATION</Text>
|
|
139
142
|
<Box flexDirection="column" marginTop={1}>
|
|
140
143
|
{nodeElements}
|
|
141
144
|
</Box>
|
|
142
145
|
</Box>
|
|
143
146
|
|
|
144
|
-
<Box flexDirection="column" marginTop={1}>
|
|
147
|
+
<Box flexDirection="column" marginTop={1} overflow="hidden">
|
|
145
148
|
<Text color={tuiColors.textTertiary} bold>CONNECTIONS</Text>
|
|
146
149
|
<Box flexDirection="column" marginTop={1}>
|
|
147
150
|
{edgeElements}
|
|
148
151
|
</Box>
|
|
149
152
|
</Box>
|
|
150
153
|
|
|
151
|
-
<Box marginTop={1}>
|
|
154
|
+
<Box marginTop={1} flexShrink={0}>
|
|
152
155
|
<Text color={tuiColors.textTertiary}>├─ STATS ───────────────────</Text>
|
|
153
156
|
</Box>
|
|
154
|
-
<Box flexDirection="row">
|
|
157
|
+
<Box flexDirection="row" flexShrink={0}>
|
|
155
158
|
<Text color={tuiColors.textSecondary}>Cache Hit:</Text>
|
|
156
159
|
<Text color={tuiColors.success}> </Text>
|
|
157
160
|
<Pulse interval={800} color={tuiColors.success} type="breath" />
|
|
@@ -17,6 +17,7 @@ interface MetricsPanelProps {
|
|
|
17
17
|
fitness: number;
|
|
18
18
|
isActive: boolean;
|
|
19
19
|
tick?: number;
|
|
20
|
+
maxHeight?: number;
|
|
20
21
|
}
|
|
21
22
|
|
|
22
23
|
interface AgentUsage {
|
|
@@ -61,7 +62,8 @@ export const MetricsPanel = memo(function MetricsPanel({
|
|
|
61
62
|
metrics,
|
|
62
63
|
fitness,
|
|
63
64
|
isActive,
|
|
64
|
-
tick = 0
|
|
65
|
+
tick = 0,
|
|
66
|
+
maxHeight
|
|
65
67
|
}: MetricsPanelProps) {
|
|
66
68
|
const borderColor = isActive ? tuiColors.primary : tuiColors.border;
|
|
67
69
|
const fitnessColor = fitness >= 0.9
|
|
@@ -95,17 +97,18 @@ export const MetricsPanel = memo(function MetricsPanel({
|
|
|
95
97
|
<Box
|
|
96
98
|
flexDirection="column"
|
|
97
99
|
width={30}
|
|
100
|
+
height={maxHeight}
|
|
98
101
|
borderStyle="single"
|
|
99
102
|
borderColor={borderColor}
|
|
100
103
|
paddingX={1}
|
|
101
104
|
>
|
|
102
|
-
<Box marginBottom={1}>
|
|
105
|
+
<Box marginBottom={1} flexShrink={0}>
|
|
103
106
|
<Text color={tuiColors.primary} bold>┌─</Text>
|
|
104
107
|
<Text color={tuiColors.primary} bold> PERFORMANCE </Text>
|
|
105
108
|
<Text color={tuiColors.textTertiary}>─────────────</Text>
|
|
106
109
|
</Box>
|
|
107
110
|
|
|
108
|
-
<Box flexDirection="column">
|
|
111
|
+
<Box flexDirection="column" flexShrink={0}>
|
|
109
112
|
<Text color={tuiColors.textTertiary} bold>METRICS</Text>
|
|
110
113
|
|
|
111
114
|
<Box flexDirection="row" marginTop={1}>
|
|
@@ -130,7 +133,7 @@ export const MetricsPanel = memo(function MetricsPanel({
|
|
|
130
133
|
</Box>
|
|
131
134
|
</Box>
|
|
132
135
|
|
|
133
|
-
<Box flexDirection="column" marginTop={1}>
|
|
136
|
+
<Box flexDirection="column" marginTop={1} flexShrink={0}>
|
|
134
137
|
<Text color={tuiColors.textTertiary} bold>FITNESS SCORE</Text>
|
|
135
138
|
<FitnessAnimator value={fitness} />
|
|
136
139
|
<Box flexDirection="row">
|
|
@@ -138,7 +141,7 @@ export const MetricsPanel = memo(function MetricsPanel({
|
|
|
138
141
|
</Box>
|
|
139
142
|
</Box>
|
|
140
143
|
|
|
141
|
-
<Box flexDirection="column" marginTop={1}>
|
|
144
|
+
<Box flexDirection="column" marginTop={1} overflow="hidden">
|
|
142
145
|
<Text color={tuiColors.textTertiary} bold>TOP AGENTS</Text>
|
|
143
146
|
<Box flexDirection="column" marginTop={1}>
|
|
144
147
|
{agentElements}
|