@ranker/raxflow 0.2.7 → 0.2.8
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/auto-init.d.ts +13 -0
- package/dist/auto-init.d.ts.map +1 -0
- package/dist/auto-init.js +151 -0
- package/dist/auto-init.js.map +1 -0
- package/dist/bin.js +16 -0
- package/dist/bin.js.map +1 -1
- package/dist/tui/App.d.ts.map +1 -1
- package/dist/tui/App.js +20 -8
- package/dist/tui/App.js.map +1 -1
- package/dist/tui/components/ChatPanel.d.ts +2 -0
- package/dist/tui/components/ChatPanel.d.ts.map +1 -1
- package/dist/tui/components/ChatPanel.js +31 -18
- package/dist/tui/components/ChatPanel.js.map +1 -1
- package/dist/tui/components/DAGPanel.d.ts.map +1 -1
- package/dist/tui/components/DAGPanel.js +18 -20
- package/dist/tui/components/DAGPanel.js.map +1 -1
- package/dist/tui/components/Header.d.ts +3 -0
- package/dist/tui/components/Header.d.ts.map +1 -1
- package/dist/tui/components/Header.js +14 -9
- package/dist/tui/components/Header.js.map +1 -1
- package/dist/tui/components/InputBar.d.ts +1 -0
- package/dist/tui/components/InputBar.d.ts.map +1 -1
- package/dist/tui/components/InputBar.js +10 -5
- package/dist/tui/components/InputBar.js.map +1 -1
- package/dist/tui/components/LogsPanel.d.ts.map +1 -1
- package/dist/tui/components/LogsPanel.js +14 -6
- 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 +31 -16
- 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 +11 -4
- package/dist/tui/components/MetricsPanel.js.map +1 -1
- package/dist/tui/components/StatusPanel.d.ts +2 -0
- package/dist/tui/components/StatusPanel.d.ts.map +1 -1
- package/dist/tui/components/StatusPanel.js +16 -8
- package/dist/tui/components/StatusPanel.js.map +1 -1
- package/dist/tui/hooks/useAppState.d.ts +15 -0
- package/dist/tui/hooks/useAppState.d.ts.map +1 -1
- package/dist/tui/hooks/useAppState.js +137 -56
- package/dist/tui/hooks/useAppState.js.map +1 -1
- package/dist/tui/styles/colors.d.ts +19 -15
- package/dist/tui/styles/colors.d.ts.map +1 -1
- package/dist/tui/styles/colors.js +23 -15
- package/dist/tui/styles/colors.js.map +1 -1
- package/dist/tui/styles/index.d.ts +2 -1
- package/dist/tui/styles/index.d.ts.map +1 -1
- package/dist/tui/styles/index.js +1 -1
- package/dist/tui/styles/index.js.map +1 -1
- package/dist/tui/styles/themes.d.ts +28 -0
- package/dist/tui/styles/themes.d.ts.map +1 -0
- package/dist/tui/styles/themes.js +54 -0
- package/dist/tui/styles/themes.js.map +1 -0
- package/dist/vendor-manifests.d.ts.map +1 -1
- package/dist/vendor-manifests.js +45 -5
- package/dist/vendor-manifests.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { LayoutMode } from "../hooks/useTerminalSize.js";
|
|
3
|
+
import { ThemeName } from "../styles/colors.js";
|
|
3
4
|
interface HeaderProps {
|
|
4
5
|
projectName: string;
|
|
5
6
|
agentCount: number;
|
|
6
7
|
provider: string;
|
|
8
|
+
model: string;
|
|
7
9
|
status: "ready" | "running" | "error";
|
|
8
10
|
tick: number;
|
|
9
11
|
activePanel: string;
|
|
10
12
|
layoutMode: LayoutMode;
|
|
13
|
+
theme: ThemeName;
|
|
11
14
|
}
|
|
12
15
|
export declare const Header: React.NamedExoticComponent<HeaderProps>;
|
|
13
16
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Header.d.ts","sourceRoot":"","sources":["../../../src/tui/components/Header.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAwB,MAAM,OAAO,CAAC;AAI7C,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"Header.d.ts","sourceRoot":"","sources":["../../../src/tui/components/Header.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAwB,MAAM,OAAO,CAAC;AAI7C,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,UAAU,WAAW;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,UAAU,CAAC;IACvB,KAAK,EAAE,SAAS,CAAC;CAClB;AAcD,eAAO,MAAM,MAAM,yCA+GjB,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsxs as _jsxs, jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
import { memo, useMemo } from "react";
|
|
3
3
|
import { Box, Text } from "ink";
|
|
4
|
-
import {
|
|
4
|
+
import { getStatusIndicator, getProviderTag } from "../styles/index.js";
|
|
5
5
|
import { StatusPulse } from "./animations/index.js";
|
|
6
6
|
const PANEL_NAMES = {
|
|
7
7
|
chat: "CHAT",
|
|
@@ -13,15 +13,16 @@ const PANEL_NAMES = {
|
|
|
13
13
|
};
|
|
14
14
|
const PANELS = ["chat", "dag", "logs", "metrics", "memory"];
|
|
15
15
|
const COMPACT_PANELS = ["chat", "dag", "status"];
|
|
16
|
-
export const Header = memo(function Header({ projectName, agentCount, provider, status, tick, activePanel, layoutMode }) {
|
|
16
|
+
export const Header = memo(function Header({ projectName, agentCount, provider, model, status, tick, activePanel, layoutMode, theme }) {
|
|
17
17
|
const statusInfo = useMemo(() => getStatusIndicator(status), [status]);
|
|
18
18
|
const providerInfo = useMemo(() => getProviderTag(provider), [provider]);
|
|
19
19
|
const statusText = status === "ready" ? "ONLINE" : status === "running" ? "RUNNING" : "ERROR";
|
|
20
|
+
const isDark = theme === "default";
|
|
20
21
|
const statusColor = status === "ready"
|
|
21
|
-
?
|
|
22
|
+
? isDark ? "#22c55e" : "#10b981"
|
|
22
23
|
: status === "running"
|
|
23
|
-
?
|
|
24
|
-
:
|
|
24
|
+
? isDark ? "#f59e0b" : "#f59e0b"
|
|
25
|
+
: isDark ? "#ef4444" : "#ef4444";
|
|
25
26
|
const pulseStatus = status === "ready"
|
|
26
27
|
? "online"
|
|
27
28
|
: status === "running"
|
|
@@ -29,11 +30,15 @@ export const Header = memo(function Header({ projectName, agentCount, provider,
|
|
|
29
30
|
: "error";
|
|
30
31
|
const displayPanels = layoutMode === "minimal" ? COMPACT_PANELS :
|
|
31
32
|
layoutMode === "compact" ? COMPACT_PANELS : PANELS;
|
|
32
|
-
const panelElements = useMemo(() => displayPanels.map((panel) => (_jsx(Box, { marginRight: 1, children: _jsxs(Text, { color: activePanel === panel ?
|
|
33
|
-
const
|
|
33
|
+
const panelElements = useMemo(() => displayPanels.map((panel) => (_jsx(Box, { marginRight: 1, children: _jsxs(Text, { color: activePanel === panel ? (isDark ? "#00ff88" : "#0ea5e9") : (isDark ? "#606060" : "#94a3b8"), bold: activePanel === panel, children: ["[", PANEL_NAMES[panel], "]"] }) }, panel))), [activePanel, displayPanels, isDark]);
|
|
34
|
+
const primaryColor = isDark ? "#00ff88" : "#0ea5e9";
|
|
35
|
+
const textPrimary = isDark ? "#ffffff" : "#1e293b";
|
|
36
|
+
const textSecondary = isDark ? "#a0a0a0" : "#475569";
|
|
37
|
+
const textTertiary = isDark ? "#606060" : "#94a3b8";
|
|
38
|
+
const borderColor = isDark ? "#333333" : "#e2e8f0";
|
|
34
39
|
if (layoutMode === "minimal") {
|
|
35
|
-
return (_jsxs(Box, { flexDirection: "row", width: "100%", justifyContent: "space-between", paddingX: 1, children: [_jsxs(Box, { flexDirection: "row", alignItems: "center", children: [_jsx(Text, { color:
|
|
40
|
+
return (_jsxs(Box, { flexDirection: "row", width: "100%", justifyContent: "space-between", paddingX: 1, children: [_jsxs(Box, { flexDirection: "row", alignItems: "center", children: [_jsx(Text, { color: primaryColor, bold: true, children: "\u25A0" }), _jsx(Text, { color: textPrimary, bold: true, children: " RAXFLOW" }), _jsx(Text, { color: statusColor, children: " " }), _jsx(StatusPulse, { status: pulseStatus, tick: tick })] }), _jsx(Box, { flexDirection: "row", children: panelElements })] }));
|
|
36
41
|
}
|
|
37
|
-
return (_jsxs(Box, { flexDirection: "column", width: "100%", flexShrink: 0, children: [_jsxs(Box, { flexDirection: "row", justifyContent: "space-between", alignItems: "center", paddingX: 1, borderStyle: "single", borderColor:
|
|
42
|
+
return (_jsxs(Box, { flexDirection: "column", width: "100%", flexShrink: 0, children: [_jsxs(Box, { flexDirection: "row", justifyContent: "space-between", alignItems: "center", paddingX: 1, borderStyle: "single", borderColor: borderColor, children: [_jsxs(Box, { flexDirection: "row", alignItems: "center", children: [_jsx(Text, { color: primaryColor, bold: true, children: "\u25A0" }), _jsx(Text, { color: textPrimary, bold: true, children: " RAXFLOW" }), _jsx(Text, { color: textSecondary, children: " HUB" })] }), _jsxs(Box, { flexDirection: "row", alignItems: "center", gap: 1, children: [_jsx(Text, { color: textTertiary, children: "Project:" }), _jsxs(Text, { color: textPrimary, children: [" ", projectName] }), _jsx(Text, { color: isDark ? "#404040" : "#cbd5e1", children: " \u2502" }), _jsx(Text, { color: textTertiary, children: " Model:" }), _jsxs(Text, { color: primaryColor, children: [" ", model] }), layoutMode === "full" && (_jsxs(_Fragment, { children: [_jsx(Text, { color: isDark ? "#404040" : "#cbd5e1", children: " \u2502" }), _jsx(Text, { color: textSecondary, children: providerInfo.code })] })), _jsx(Text, { color: statusColor, children: " " }), _jsx(StatusPulse, { status: pulseStatus, tick: tick }), _jsxs(Text, { color: statusColor, children: [" ", statusText] })] })] }), _jsxs(Box, { flexDirection: "row", paddingX: 1, justifyContent: "space-between", children: [_jsx(Box, { flexDirection: "row", children: panelElements }), _jsx(Box, { flexDirection: "row", children: _jsx(Text, { color: isDark ? "#404040" : "#cbd5e1", children: "Tab:Switch \u2502 toggle:Mode \u2502 ?:Help \u2502 Ctrl+C:Quit" }) })] })] }));
|
|
38
43
|
});
|
|
39
44
|
//# sourceMappingURL=Header.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Header.js","sourceRoot":"","sources":["../../../src/tui/components/Header.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,
|
|
1
|
+
{"version":3,"file":"Header.js","sourceRoot":"","sources":["../../../src/tui/components/Header.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InputBar.d.ts","sourceRoot":"","sources":["../../../src/tui/components/InputBar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA+C,MAAM,OAAO,CAAC;AAKpE,UAAU,aAAa;IACrB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,QAAQ,
|
|
1
|
+
{"version":3,"file":"InputBar.d.ts","sourceRoot":"","sources":["../../../src/tui/components/InputBar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA+C,MAAM,OAAO,CAAC;AAKpE,UAAU,aAAa;IACrB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,QAAQ,2CA6DnB,CAAC"}
|
|
@@ -2,9 +2,11 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import { useState, memo, useMemo, useCallback } from "react";
|
|
3
3
|
import { Box, Text } from "ink";
|
|
4
4
|
import TextInput from "ink-text-input";
|
|
5
|
-
import {
|
|
6
|
-
export const InputBar = memo(function InputBar({ onSubmit, suggestions, isProcessing, projectName, width = 100 }) {
|
|
5
|
+
import { getCurrentTheme } from "../styles/colors.js";
|
|
6
|
+
export const InputBar = memo(function InputBar({ onSubmit, suggestions, isProcessing, projectName, width = 100, model }) {
|
|
7
7
|
const [input, setInput] = useState("");
|
|
8
|
+
const theme = getCurrentTheme();
|
|
9
|
+
const isDark = theme.name === "default";
|
|
8
10
|
const handleSubmit = useCallback((value) => {
|
|
9
11
|
if (value.trim()) {
|
|
10
12
|
onSubmit(value);
|
|
@@ -15,9 +17,12 @@ export const InputBar = memo(function InputBar({ onSubmit, suggestions, isProces
|
|
|
15
17
|
setInput(value);
|
|
16
18
|
}, []);
|
|
17
19
|
const compact = width < 60;
|
|
18
|
-
const showSuggestions = input.
|
|
20
|
+
const showSuggestions = input.length > 0 && !input.includes(" ") && width > 80;
|
|
19
21
|
const filteredSuggestions = useMemo(() => suggestions.filter((s) => s.toLowerCase().startsWith(input.toLowerCase())).slice(0, compact ? 3 : 5), [suggestions, input, compact]);
|
|
20
|
-
const
|
|
21
|
-
|
|
22
|
+
const borderColor = isDark ? "#333333" : "#e2e8f0";
|
|
23
|
+
const primaryColor = isDark ? "#00ff88" : "#0ea5e9";
|
|
24
|
+
const textPrimary = isDark ? "#ffffff" : "#1e293b";
|
|
25
|
+
const textSecondary = isDark ? "#a0a0a0" : "#475569";
|
|
26
|
+
return (_jsxs(Box, { flexDirection: "column", borderStyle: "single", borderColor: borderColor, paddingX: 1, flexShrink: 0, children: [showSuggestions && filteredSuggestions.length > 0 && (_jsx(Box, { flexDirection: "row", marginBottom: 1, children: filteredSuggestions.map((s) => (_jsx(Box, { marginRight: 2, children: _jsx(Text, { color: primaryColor, children: s }) }, s))) })), _jsxs(Box, { flexDirection: "row", alignItems: "center", children: [_jsx(Text, { color: primaryColor, bold: true, children: compact ? ">" : `raxflow://${projectName}` }), !compact && model && (_jsxs(Text, { color: isDark ? "#404040" : "#cbd5e1", children: [" [", model.slice(0, 12), "]"] })), _jsx(Text, { color: textPrimary, children: " " }), _jsx(Box, { flexGrow: 1, children: _jsx(TextInput, { value: input, onChange: handleChange, onSubmit: handleSubmit, placeholder: compact ? "prompt..." : "prompt or command...", showCursor: true }) }), isProcessing && _jsx(Text, { color: isDark ? "#f59e0b" : "#f59e0b", children: " \u25CF" })] })] }));
|
|
22
27
|
});
|
|
23
28
|
//# sourceMappingURL=InputBar.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InputBar.js","sourceRoot":"","sources":["../../../src/tui/components/InputBar.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,SAAS,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"InputBar.js","sourceRoot":"","sources":["../../../src/tui/components/InputBar.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LogsPanel.d.ts","sourceRoot":"","sources":["../../../src/tui/components/LogsPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAqD,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"LogsPanel.d.ts","sourceRoot":"","sources":["../../../src/tui/components/LogsPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAqD,MAAM,OAAO,CAAC;AAM1E,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;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AA2DD,eAAO,MAAM,SAAS,4CAuEpB,CAAC"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { useState, useEffect, memo, useRef, useMemo } from "react";
|
|
3
3
|
import { Box, Text } from "ink";
|
|
4
|
-
import {
|
|
4
|
+
import { logStatusTags } from "../styles/index.js";
|
|
5
5
|
import { Spinner } from "./animations/index.js";
|
|
6
|
+
import { getCurrentTheme } from "../styles/colors.js";
|
|
6
7
|
const HIGHLIGHT_DURATION = 2000;
|
|
7
8
|
function parseLogLine(log) {
|
|
8
9
|
const timeMatch = log.match(/\[(\d{2}:\d{2}:\d{2}(?:\.\d+)?)\]/);
|
|
@@ -13,22 +14,28 @@ function parseLogLine(log) {
|
|
|
13
14
|
const time = timeMatch[1];
|
|
14
15
|
const tag = tagMatch[1].replace(/[\[\]]/g, "").toUpperCase();
|
|
15
16
|
const tagConfig = Object.values(logStatusTags).find(t => t.tag.toUpperCase().includes(tag));
|
|
16
|
-
const color = tagConfig?.color ||
|
|
17
|
+
const color = tagConfig?.color || "#606060";
|
|
17
18
|
const messageStart = log.indexOf(tagMatch[1]) + tagMatch[1].length;
|
|
18
19
|
const message = log.slice(messageStart).trim();
|
|
19
20
|
return { time, tag, message, color };
|
|
20
21
|
}
|
|
21
22
|
const LogLine = memo(function LogLine({ log, isNew, compact }) {
|
|
23
|
+
const theme = getCurrentTheme();
|
|
24
|
+
const isDark = theme.name === "default";
|
|
22
25
|
const parsed = useMemo(() => parseLogLine(log), [log]);
|
|
23
26
|
if (!parsed) {
|
|
24
|
-
return _jsx(Text, { color:
|
|
27
|
+
return _jsx(Text, { color: isDark ? "#ffffff" : "#1e293b", children: log.slice(0, compact ? 30 : 80) });
|
|
25
28
|
}
|
|
26
29
|
const paddedTag = useMemo(() => parsed.tag.slice(0, compact ? 4 : 7).padEnd(compact ? 4 : 7), [parsed.tag, compact]);
|
|
27
30
|
const truncatedMessage = compact ? parsed.message.slice(0, 20) : parsed.message;
|
|
28
|
-
return (_jsxs(Box, { flexDirection: "row", children: [!compact && _jsxs(Text, { color:
|
|
31
|
+
return (_jsxs(Box, { flexDirection: "row", children: [!compact && _jsxs(Text, { color: isDark ? "#606060" : "#94a3b8", children: ["[", parsed.time, "]"] }), _jsxs(Text, { color: parsed.color, bold: true, children: [" [", paddedTag, "]"] }), _jsxs(Text, { color: isNew ? (isDark ? "#ffffff" : "#1e293b") : (isDark ? "#a0a0a0" : "#475569"), children: [" ", truncatedMessage] })] }));
|
|
29
32
|
});
|
|
30
33
|
export const LogsPanel = memo(function LogsPanel({ logs, isActive, isStreaming = false, maxHeight = 20, width = 40 }) {
|
|
31
|
-
const
|
|
34
|
+
const theme = getCurrentTheme();
|
|
35
|
+
const isDark = theme.name === "default";
|
|
36
|
+
const borderColor = isActive
|
|
37
|
+
? (isDark ? "#00ff88" : "#0ea5e9")
|
|
38
|
+
: (isDark ? "#333333" : "#e2e8f0");
|
|
32
39
|
const [highlightedIndex, setHighlightedIndex] = useState(null);
|
|
33
40
|
const timeoutRef = useRef(null);
|
|
34
41
|
const compact = width < 35 || maxHeight < 12;
|
|
@@ -54,6 +61,7 @@ export const LogsPanel = memo(function LogsPanel({ logs, isActive, isStreaming =
|
|
|
54
61
|
return _jsx(LogLine, { log: log, isNew: isNew, compact: compact }, `${logIndex}-${index}`);
|
|
55
62
|
}), [displayLogs, logs.length, highlightedIndex, compact]);
|
|
56
63
|
const title = compact ? " LOGS " : " LOGS_STREAM ";
|
|
57
|
-
|
|
64
|
+
const primaryColor = isDark ? "#00ff88" : "#0ea5e9";
|
|
65
|
+
return (_jsxs(Box, { flexDirection: "column", flexGrow: 1, width: width, height: maxHeight, borderStyle: "single", borderColor: borderColor, paddingX: 1, children: [_jsxs(Box, { marginBottom: 1, flexShrink: 0, children: [_jsx(Text, { color: primaryColor, bold: true, children: "\u250C\u2500" }), _jsx(Text, { color: primaryColor, bold: true, children: title }), _jsx(Text, { color: isDark ? "#606060" : "#94a3b8", children: "─".repeat(Math.max(5, width - (compact ? 10 : 16))) }), isStreaming && !compact && (_jsxs(Box, { flexDirection: "row", children: [_jsx(Text, { color: isDark ? "#f59e0b" : "#f59e0b", children: " " }), _jsx(Spinner, { type: "dots", color: isDark ? "#f59e0b" : "#f59e0b" })] }))] }), _jsxs(Box, { flexDirection: "column", flexGrow: 1, overflow: "hidden", children: [logElements, logs.length === 0 && (_jsx(Text, { color: isDark ? "#606060" : "#94a3b8", children: compact ? "No logs" : "No logs. Start a workflow." }))] })] }));
|
|
58
66
|
});
|
|
59
67
|
//# 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,
|
|
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;
|
|
1
|
+
{"version":3,"file":"MemoryPanel.d.ts","sourceRoot":"","sources":["../../../src/tui/components/MemoryPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAwB,MAAM,OAAO,CAAC;AAM7C,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;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAoDD,eAAO,MAAM,WAAW,8CAwHtB,CAAC"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { memo, useMemo } from "react";
|
|
3
3
|
import { Box, Text } from "ink";
|
|
4
|
-
import {
|
|
4
|
+
import { treeChars } from "../styles/index.js";
|
|
5
5
|
import { Pulse } from "./animations/index.js";
|
|
6
|
+
import { getCurrentTheme } from "../styles/colors.js";
|
|
6
7
|
const DEFAULT_NODES = [
|
|
7
8
|
{ id: "1", type: "action", label: "code_gen" },
|
|
8
9
|
{ id: "2", type: "file", label: "auth.ts" },
|
|
@@ -17,19 +18,31 @@ const DEFAULT_EDGES = [
|
|
|
17
18
|
{ from: "4", to: "5" },
|
|
18
19
|
{ from: "2", to: "5" },
|
|
19
20
|
];
|
|
20
|
-
const
|
|
21
|
-
action:
|
|
22
|
-
file:
|
|
23
|
-
task:
|
|
24
|
-
test:
|
|
25
|
-
fix:
|
|
21
|
+
const NODE_TYPE_COLORS_DARK = {
|
|
22
|
+
action: "#00ff88",
|
|
23
|
+
file: "#22c55e",
|
|
24
|
+
task: "#f59e0b",
|
|
25
|
+
test: "#a0a0a0",
|
|
26
|
+
fix: "#ef4444",
|
|
26
27
|
};
|
|
27
|
-
const
|
|
28
|
-
|
|
28
|
+
const NODE_TYPE_COLORS_LIGHT = {
|
|
29
|
+
action: "#0ea5e9",
|
|
30
|
+
file: "#10b981",
|
|
31
|
+
task: "#f59e0b",
|
|
32
|
+
test: "#475569",
|
|
33
|
+
fix: "#ef4444",
|
|
34
|
+
};
|
|
35
|
+
const NodeTypeBadge = memo(function NodeTypeBadge({ type, isActive, compact, isDark }) {
|
|
36
|
+
const colors = isDark ? NODE_TYPE_COLORS_DARK : NODE_TYPE_COLORS_LIGHT;
|
|
37
|
+
const color = colors[type] || (isDark ? "#606060" : "#94a3b8");
|
|
29
38
|
return (_jsxs(Box, { flexDirection: "row", children: [isActive && !compact && _jsx(Pulse, { interval: 400, color: color, type: "pulse" }), _jsxs(Text, { color: color, children: ["[", compact ? type.slice(0, 4) : type, "]"] })] }));
|
|
30
39
|
});
|
|
31
40
|
export const MemoryPanel = memo(function MemoryPanel({ nodes, edges, nodeCount = 0, cacheHitRate = 0, isActive = false, tick = 0, maxHeight = 15, width = 30 }) {
|
|
32
|
-
const
|
|
41
|
+
const theme = getCurrentTheme();
|
|
42
|
+
const isDark = theme.name === "default";
|
|
43
|
+
const borderColor = isActive
|
|
44
|
+
? (isDark ? "#00ff88" : "#0ea5e9")
|
|
45
|
+
: (isDark ? "#333333" : "#e2e8f0");
|
|
33
46
|
const compact = width < 25 || maxHeight < 12;
|
|
34
47
|
const displayNodes = (nodes && nodes.length > 0) ? nodes : DEFAULT_NODES;
|
|
35
48
|
const displayEdges = (edges && edges.length > 0) ? edges : DEFAULT_EDGES;
|
|
@@ -41,15 +54,17 @@ export const MemoryPanel = memo(function MemoryPanel({ nodes, edges, nodeCount =
|
|
|
41
54
|
const nodeElements = useMemo(() => displayNodes.slice(0, maxVisibleNodes).map((node, idx) => {
|
|
42
55
|
const isLast = idx === Math.min(maxVisibleNodes - 1, displayNodes.length - 1);
|
|
43
56
|
const isNodeActive = idx === activeNodeIndex;
|
|
44
|
-
return (_jsxs(Box, { flexDirection: "row", children: [_jsxs(Text, { color:
|
|
45
|
-
}), [displayNodes, activeNodeIndex, compact, maxVisibleNodes]);
|
|
57
|
+
return (_jsxs(Box, { flexDirection: "row", children: [_jsxs(Text, { color: isDark ? "#606060" : "#94a3b8", children: [compact ? " " : treeChars.vertical, " "] }), _jsx(NodeTypeBadge, { type: node.type, isActive: isNodeActive, compact: compact, isDark: isDark }), _jsxs(Text, { color: isDark ? "#ffffff" : "#1e293b", children: [" ", compact ? node.label.slice(0, 8) : node.label] }), !isLast && !compact && (_jsx(Text, { color: isDark ? "#00ff88" : "#0ea5e9", children: " \u2500\u2500\u25B6" }))] }, node.id));
|
|
58
|
+
}), [displayNodes, activeNodeIndex, compact, maxVisibleNodes, isDark]);
|
|
46
59
|
const edgeElements = useMemo(() => displayEdges.slice(0, maxVisibleEdges).map((edge, i) => {
|
|
47
60
|
const fromNode = displayNodes.find((n) => n.id === edge.from);
|
|
48
61
|
const toNode = displayNodes.find((n) => n.id === edge.to);
|
|
49
|
-
return (_jsxs(Box, { flexDirection: "row", children: [_jsx(Text, { color:
|
|
50
|
-
}), [displayEdges, displayNodes, compact, maxVisibleEdges]);
|
|
62
|
+
return (_jsxs(Box, { flexDirection: "row", children: [_jsx(Text, { color: isDark ? "#a0a0a0" : "#475569", children: treeChars.branch }), _jsxs(Text, { color: isDark ? "#ffffff" : "#1e293b", children: [" ", compact ? (fromNode?.label || "?").slice(0, 6) : fromNode?.label || "?"] }), _jsx(Text, { color: isDark ? "#00ff88" : "#0ea5e9", children: " \u2192 " }), _jsx(Text, { color: isDark ? "#ffffff" : "#1e293b", children: compact ? (toNode?.label || "?").slice(0, 6) : toNode?.label || "?" })] }, i));
|
|
63
|
+
}), [displayEdges, displayNodes, compact, maxVisibleEdges, isDark]);
|
|
51
64
|
const mutationCount = useMemo(() => Math.floor(Math.random() * 4) + 1, [tick]);
|
|
52
|
-
const title =
|
|
53
|
-
|
|
65
|
+
const title = " QSGM ";
|
|
66
|
+
const primaryColor = isDark ? "#00ff88" : "#0ea5e9";
|
|
67
|
+
const successColor = isDark ? "#22c55e" : "#10b981";
|
|
68
|
+
return (_jsxs(Box, { flexDirection: "column", flexGrow: 1, width: width, height: maxHeight, borderStyle: "single", borderColor: borderColor, paddingX: 1, children: [_jsxs(Box, { marginBottom: 1, flexShrink: 0, children: [_jsx(Text, { color: primaryColor, bold: true, children: "\u250C\u2500" }), _jsx(Text, { color: primaryColor, bold: true, children: title }), _jsxs(Text, { color: isDark ? "#606060" : "#94a3b8", children: [" n:", displayNodeCount, " "] }), isActive && !compact && _jsx(Pulse, { interval: 500, color: primaryColor, type: "pulse" })] }), !compact && (_jsx(Box, { flexDirection: "column", flexShrink: 0, children: _jsx(Text, { color: isDark ? "#606060" : "#94a3b8", bold: true, children: "QUANTUM_GRAPH" }) })), _jsxs(Box, { flexDirection: "column", marginTop: compact ? 0 : 1, overflow: "hidden", children: [_jsx(Text, { color: isDark ? "#606060" : "#94a3b8", bold: true, children: compact ? "GRAPH" : "VISUALIZATION" }), _jsx(Box, { flexDirection: "column", marginTop: 1, children: nodeElements })] }), !compact && maxHeight > 12 && (_jsxs(Box, { flexDirection: "column", marginTop: 1, overflow: "hidden", children: [_jsx(Text, { color: isDark ? "#606060" : "#94a3b8", bold: true, children: "LINKS" }), _jsx(Box, { flexDirection: "column", marginTop: 1, children: edgeElements })] })), _jsx(Box, { marginTop: 1, flexShrink: 0, children: _jsx(Text, { color: isDark ? "#606060" : "#94a3b8", children: "\u251C\u2500" }) }), _jsxs(Box, { flexDirection: "row", flexShrink: 0, children: [_jsx(Text, { color: isDark ? "#a0a0a0" : "#475569", children: "Cache:" }), _jsx(Text, { color: successColor, children: " " }), !compact && _jsx(Pulse, { interval: 800, color: successColor, type: "breath" }), _jsxs(Text, { color: successColor, children: [" ", displayCacheHitRate, "%"] }), !compact && _jsxs(Text, { color: isDark ? "#606060" : "#94a3b8", children: [" \u2502 +", mutationCount] })] })] }));
|
|
54
69
|
});
|
|
55
70
|
//# 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,
|
|
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;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAwCD,eAAO,MAAM,YAAY,+
|
|
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;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAwCD,eAAO,MAAM,YAAY,+CA4GvB,CAAC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { memo, useMemo } from "react";
|
|
3
3
|
import { Box, Text } from "ink";
|
|
4
|
-
import { tuiColors } from "../styles/index.js";
|
|
5
4
|
import { AnimatedProgressBar, Pulse } from "./animations/index.js";
|
|
5
|
+
import { getCurrentTheme } from "../styles/colors.js";
|
|
6
6
|
const TOP_AGENTS = [
|
|
7
7
|
{ name: "CodeGenerator", percent: 45 },
|
|
8
8
|
{ name: "TestAgent", percent: 32 },
|
|
@@ -13,13 +13,20 @@ const AnimatedMetricBar = memo(function AnimatedMetricBar({ value, max, width =
|
|
|
13
13
|
return (_jsx(AnimatedProgressBar, { progress: percent, width: width, tick: tick || 0, animated: animated, showPercentage: false }));
|
|
14
14
|
});
|
|
15
15
|
export const MetricsPanel = memo(function MetricsPanel({ metrics, fitness, isActive, tick = 0, maxHeight = 15, width = 30 }) {
|
|
16
|
-
const
|
|
16
|
+
const theme = getCurrentTheme();
|
|
17
|
+
const isDark = theme.name === "default";
|
|
18
|
+
const borderColor = isActive
|
|
19
|
+
? (isDark ? "#00ff88" : "#0ea5e9")
|
|
20
|
+
: (isDark ? "#333333" : "#e2e8f0");
|
|
17
21
|
const compact = width < 25 || maxHeight < 12;
|
|
18
22
|
const showTopAgents = !compact && maxHeight > 12;
|
|
19
23
|
const showSuccessPulse = metrics.successRate >= 90;
|
|
20
24
|
const costStr = useMemo(() => metrics.totalCost.toFixed(4), [metrics.totalCost]);
|
|
21
|
-
const agentElements = useMemo(() => TOP_AGENTS.slice(0, compact ? 2 : 3).map((agent, idx) => (_jsxs(Box, { flexDirection: "row", children: [_jsx(Text, { color:
|
|
25
|
+
const agentElements = useMemo(() => TOP_AGENTS.slice(0, compact ? 2 : 3).map((agent, idx) => (_jsxs(Box, { flexDirection: "row", children: [_jsx(Text, { color: isDark ? "#ffffff" : "#1e293b", children: agent.name.slice(0, compact ? 10 : 14).padEnd(compact ? 10 : 14) }), _jsx(AnimatedMetricBar, { value: agent.percent, max: 100, width: compact ? 6 : 8, tick: tick, animated: isActive && idx === 0 }), _jsxs(Text, { color: isDark ? "#606060" : "#94a3b8", children: [" ", agent.percent, "%"] })] }, agent.name))), [tick, isActive, compact, isDark]);
|
|
22
26
|
const title = compact ? " PERF " : " PERFORMANCE ";
|
|
23
|
-
|
|
27
|
+
const primaryColor = isDark ? "#00ff88" : "#0ea5e9";
|
|
28
|
+
const successColor = isDark ? "#22c55e" : "#10b981";
|
|
29
|
+
const warningColor = isDark ? "#f59e0b" : "#f59e0b";
|
|
30
|
+
return (_jsxs(Box, { flexDirection: "column", width: width, height: maxHeight, borderStyle: "single", borderColor: borderColor, paddingX: 1, children: [_jsxs(Box, { marginBottom: 1, flexShrink: 0, children: [_jsx(Text, { color: primaryColor, bold: true, children: "\u250C\u2500" }), _jsx(Text, { color: primaryColor, bold: true, children: title }), _jsx(Text, { color: isDark ? "#606060" : "#94a3b8", children: "─".repeat(Math.max(5, width - (compact ? 10 : 16))) })] }), _jsxs(Box, { flexDirection: "column", flexShrink: 0, children: [_jsx(Text, { color: isDark ? "#606060" : "#94a3b8", bold: true, children: compact ? "STATS" : "METRICS" }), _jsxs(Box, { flexDirection: "row", marginTop: 1, children: [_jsx(Text, { color: isDark ? "#a0a0a0" : "#475569", children: compact ? "Sess:" : "Sessions:" }), _jsxs(Text, { color: isDark ? "#ffffff" : "#1e293b", bold: true, children: [" ", metrics.sessions] })] }), !compact && (_jsxs(Box, { flexDirection: "row", children: [_jsx(Text, { color: isDark ? "#a0a0a0" : "#475569", children: "Avg Duration:" }), _jsxs(Text, { color: isDark ? "#ffffff" : "#1e293b", children: [" ", metrics.avgDuration, "ms"] })] })), _jsxs(Box, { flexDirection: "row", children: [_jsx(Text, { color: isDark ? "#a0a0a0" : "#475569", children: compact ? "Rate:" : "Success Rate:" }), _jsxs(Text, { color: successColor, children: [" ", metrics.successRate, "%"] }), showSuccessPulse && !compact && _jsx(Pulse, { interval: 1000, color: successColor, type: "breath" })] }), !compact && (_jsxs(Box, { flexDirection: "row", children: [_jsx(Text, { color: isDark ? "#a0a0a0" : "#475569", children: "Cost:" }), _jsxs(Text, { color: warningColor, children: [" $", costStr] })] }))] }), !compact && (_jsxs(Box, { flexDirection: "column", marginTop: 1, flexShrink: 0, children: [_jsx(Text, { color: isDark ? "#606060" : "#94a3b8", bold: true, children: "FITNESS" }), _jsxs(Box, { flexDirection: "row", children: [_jsx(AnimatedMetricBar, { value: fitness, max: 1, width: compact ? 8 : 12, tick: tick, animated: isActive }), _jsxs(Text, { color: isDark ? "#ffffff" : "#1e293b", children: [" ", fitness.toFixed(2)] })] })] })), showTopAgents && (_jsxs(Box, { flexDirection: "column", marginTop: 1, overflow: "hidden", children: [_jsx(Text, { color: isDark ? "#606060" : "#94a3b8", bold: true, children: "TOP AGENTS" }), _jsx(Box, { flexDirection: "column", marginTop: 1, children: agentElements })] }))] }));
|
|
24
31
|
});
|
|
25
32
|
//# 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,
|
|
1
|
+
{"version":3,"file":"MetricsPanel.js","sourceRoot":"","sources":["../../../src/tui/components/MetricsPanel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,7 @@ interface Provider {
|
|
|
9
9
|
name: string;
|
|
10
10
|
status: "active" | "idle";
|
|
11
11
|
latency: number;
|
|
12
|
+
model?: string;
|
|
12
13
|
}
|
|
13
14
|
interface StatusPanelProps {
|
|
14
15
|
agents: Agent[];
|
|
@@ -19,6 +20,7 @@ interface StatusPanelProps {
|
|
|
19
20
|
tick?: number;
|
|
20
21
|
maxHeight?: number;
|
|
21
22
|
width?: number;
|
|
23
|
+
model?: string;
|
|
22
24
|
}
|
|
23
25
|
export declare const StatusPanel: React.NamedExoticComponent<StatusPanelProps>;
|
|
24
26
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StatusPanel.d.ts","sourceRoot":"","sources":["../../../src/tui/components/StatusPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAwB,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"StatusPanel.d.ts","sourceRoot":"","sources":["../../../src/tui/components/StatusPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAwB,MAAM,OAAO,CAAC;AAM7C,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;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;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;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAoDD,eAAO,MAAM,WAAW,8CAuFtB,CAAC"}
|
|
@@ -1,26 +1,34 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { memo, useMemo } from "react";
|
|
3
3
|
import { Box, Text } from "ink";
|
|
4
|
-
import {
|
|
4
|
+
import { getStatusIndicator, getProviderTag } from "../styles/index.js";
|
|
5
5
|
import { Pulse, FitnessAnimator, StatusAnimator } from "./animations/index.js";
|
|
6
|
+
import { getCurrentTheme } from "../styles/colors.js";
|
|
6
7
|
const AgentRow = memo(function AgentRow({ agent, tick, compact }) {
|
|
8
|
+
const theme = getCurrentTheme();
|
|
9
|
+
const isDark = theme.name === "default";
|
|
7
10
|
const statusInfo = useMemo(() => getStatusIndicator(agent.status), [agent.status]);
|
|
8
11
|
const providerInfo = useMemo(() => getProviderTag(agent.provider), [agent.provider]);
|
|
9
|
-
return (_jsxs(Box, { flexDirection: "row", children: [agent.status === "running" ? (_jsx(StatusAnimator, { status: "running", showLabel: false })) : (_jsx(Text, { color: statusInfo.color, children: statusInfo.icon })), _jsxs(Text, { color:
|
|
12
|
+
return (_jsxs(Box, { flexDirection: "row", children: [agent.status === "running" ? (_jsx(StatusAnimator, { status: "running", showLabel: false })) : (_jsx(Text, { color: statusInfo.color, children: statusInfo.icon })), _jsxs(Text, { color: isDark ? "#ffffff" : "#1e293b", children: [" ", agent.name.slice(0, compact ? 10 : 14).padEnd(compact ? 10 : 14)] }), !compact && _jsxs(Text, { color: isDark ? "#606060" : "#94a3b8", children: [" ", providerInfo.code] }), _jsxs(Text, { color: isDark ? "#a0a0a0" : "#475569", children: [" ", agent.status.toUpperCase().slice(0, compact ? 4 : 8).padEnd(compact ? 4 : 8)] })] }));
|
|
10
13
|
});
|
|
11
14
|
const ProviderRow = memo(function ProviderRow({ provider, tick, compact }) {
|
|
15
|
+
const theme = getCurrentTheme();
|
|
16
|
+
const isDark = theme.name === "default";
|
|
12
17
|
const isActive = provider.status === "active";
|
|
13
|
-
|
|
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.slice(0, compact ? 8 : 12).padEnd(compact ? 8 : 12)] }), !compact && _jsxs(Text, { color: tuiColors.textTertiary, children: [" ", provider.latency > 0 ? `${provider.latency}ms`.padStart(6) : "--".padStart(6)] })] }));
|
|
18
|
+
return (_jsxs(Box, { flexDirection: "row", children: [isActive ? (_jsx(Pulse, { interval: 800, color: isDark ? "#22c55e" : "#10b981", type: "breath" })) : (_jsx(Text, { color: isDark ? "#606060" : "#94a3b8", children: "\u25CB" })), _jsxs(Text, { color: isDark ? "#ffffff" : "#1e293b", children: [" ", provider.name.slice(0, compact ? 8 : 12).padEnd(compact ? 8 : 12)] }), !compact && _jsxs(Text, { color: isDark ? "#606060" : "#94a3b8", children: [" ", provider.latency > 0 ? `${provider.latency}ms`.padStart(6) : "--".padStart(6)] })] }));
|
|
15
19
|
});
|
|
16
|
-
export const StatusPanel = memo(function StatusPanel({ agents, providers, fitness, currentWorkflow, isActive, tick = 0, maxHeight = 20, width = 30 }) {
|
|
17
|
-
const
|
|
20
|
+
export const StatusPanel = memo(function StatusPanel({ agents, providers, fitness, currentWorkflow, isActive, tick = 0, maxHeight = 20, width = 30, model }) {
|
|
21
|
+
const theme = getCurrentTheme();
|
|
22
|
+
const isDark = theme.name === "default";
|
|
23
|
+
const borderColor = isActive
|
|
24
|
+
? (isDark ? "#00ff88" : "#0ea5e9")
|
|
25
|
+
: (isDark ? "#333333" : "#e2e8f0");
|
|
18
26
|
const compact = width < 25 || maxHeight < 15;
|
|
19
27
|
const maxAgents = Math.max(2, Math.floor((maxHeight - (compact ? 8 : 14)) / 2));
|
|
20
28
|
const activeAgents = useMemo(() => agents.filter(a => a.status === "running" || a.status === "queued").slice(0, maxAgents), [agents, maxAgents]);
|
|
21
29
|
const hasNoActiveAgents = activeAgents.length === 0;
|
|
22
30
|
const workflowDisplay = useMemo(() => currentWorkflow ? `▶ ${currentWorkflow.slice(0, compact ? 12 : 20)}...` : "○ None", [currentWorkflow, compact]);
|
|
23
|
-
const title = compact ? " STATUS " : "
|
|
24
|
-
return (_jsxs(Box, { flexDirection: "column", width: width, height: maxHeight, borderStyle: "single", borderColor: borderColor, children: [_jsxs(Box, { paddingX: 1, flexShrink: 0, children: [_jsx(Text, { color:
|
|
31
|
+
const title = compact ? " STATUS " : " SYSTEM ";
|
|
32
|
+
return (_jsxs(Box, { flexDirection: "column", width: width, height: maxHeight, borderStyle: "single", borderColor: borderColor, children: [_jsxs(Box, { paddingX: 1, flexShrink: 0, children: [_jsx(Text, { color: isDark ? "#00ff88" : "#0ea5e9", bold: true, children: "\u250C\u2500" }), _jsx(Text, { color: isDark ? "#00ff88" : "#0ea5e9", bold: true, children: title }), _jsx(Text, { color: isDark ? "#606060" : "#94a3b8", children: "─".repeat(Math.max(5, width - (compact ? 12 : 14))) })] }), _jsxs(Box, { flexDirection: "column", paddingX: 1, flexShrink: 0, children: [_jsx(Text, { color: isDark ? "#606060" : "#94a3b8", bold: true, children: compact ? "HUB" : "ORCHESTRATOR" }), _jsxs(Box, { flexDirection: "row", children: [_jsx(Text, { color: isDark ? "#a0a0a0" : "#475569", children: compact ? "" : "Status:" }), _jsx(Text, { color: isDark ? "#22c55e" : "#10b981", children: " " }), _jsx(Pulse, { interval: 600, color: isDark ? "#22c55e" : "#10b981", type: "breath" }), _jsx(Text, { color: isDark ? "#22c55e" : "#10b981", children: " ACTIVE" })] }), model && !compact && (_jsxs(Box, { flexDirection: "row", children: [_jsx(Text, { color: isDark ? "#a0a0a0" : "#475569", children: "Model: " }), _jsx(Text, { color: isDark ? "#00ff88" : "#0ea5e9", children: model })] }))] }), !compact && (_jsxs(Box, { flexDirection: "column", paddingX: 1, marginTop: 1, flexShrink: 0, children: [_jsx(Text, { color: isDark ? "#606060" : "#94a3b8", bold: true, children: "WORKFLOW" }), _jsx(Text, { color: isDark ? "#ffffff" : "#1e293b", children: workflowDisplay }), _jsx(FitnessAnimator, { value: fitness })] })), _jsxs(Box, { flexDirection: "column", paddingX: 1, marginTop: 1, overflow: "hidden", children: [_jsx(Text, { color: isDark ? "#606060" : "#94a3b8", bold: true, children: "AGENTS" }), activeAgents.map((agent) => (_jsx(AgentRow, { agent: agent, tick: tick, compact: compact }, agent.name))), hasNoActiveAgents && (_jsx(Text, { color: isDark ? "#404040" : "#cbd5e1", children: " \u25CB All idle" }))] }), maxHeight > 12 && (_jsxs(Box, { flexDirection: "column", paddingX: 1, marginTop: 1, overflow: "hidden", children: [_jsx(Text, { color: isDark ? "#606060" : "#94a3b8", bold: true, children: "PROVIDERS" }), providers.slice(0, compact ? 2 : 4).map((provider) => (_jsx(ProviderRow, { provider: provider, tick: tick, compact: compact }, provider.name)))] }))] }));
|
|
25
33
|
});
|
|
26
34
|
//# sourceMappingURL=StatusPanel.js.map
|