rax-flow 0.1.5 → 0.1.7
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/LICENSE +21 -0
- package/dist/bin.js +27 -3
- package/dist/bin.js.map +1 -1
- package/dist/hub/__tests__/commands.test.d.ts.map +1 -0
- package/dist/hub/__tests__/commands.test.js +72 -0
- package/dist/hub/__tests__/commands.test.js.map +1 -0
- package/dist/hub/__tests__/history.test.d.ts.map +1 -0
- package/dist/hub/__tests__/history.test.js +119 -0
- package/dist/hub/__tests__/history.test.js.map +1 -0
- package/dist/hub/__tests__/parser.test.d.ts.map +1 -0
- package/dist/hub/__tests__/parser.test.js +92 -0
- package/dist/hub/__tests__/parser.test.js.map +1 -0
- package/dist/hub/chat/ChatApp.d.ts +2 -0
- package/dist/hub/chat/ChatApp.d.ts.map +1 -0
- package/dist/hub/chat/ChatApp.js +146 -0
- package/dist/hub/chat/ChatApp.js.map +1 -0
- package/dist/hub/chat/components/ChatInput.d.ts +9 -0
- package/dist/hub/chat/components/ChatInput.d.ts.map +1 -0
- package/dist/hub/chat/components/ChatInput.js +19 -0
- package/dist/hub/chat/components/ChatInput.js.map +1 -0
- package/dist/hub/chat/components/MessageList.d.ts +7 -0
- package/dist/hub/chat/components/MessageList.d.ts.map +1 -0
- package/dist/hub/chat/components/MessageList.js +6 -0
- package/dist/hub/chat/components/MessageList.js.map +1 -0
- package/dist/hub/chat/context.d.ts.map +1 -0
- package/dist/hub/chat/context.js +42 -0
- package/dist/hub/chat/context.js.map +1 -0
- package/dist/hub/chat/hooks/useChatHistory.d.ts +7 -0
- package/dist/hub/chat/hooks/useChatHistory.d.ts.map +1 -0
- package/dist/hub/chat/hooks/useChatHistory.js +31 -0
- package/dist/hub/chat/hooks/useChatHistory.js.map +1 -0
- package/dist/hub/chat/index.d.ts.map +1 -0
- package/dist/hub/chat/index.js +7 -0
- package/dist/hub/chat/index.js.map +1 -0
- package/dist/hub/chat/intent-parser.d.ts.map +1 -0
- package/dist/hub/chat/intent-parser.js +48 -0
- package/dist/hub/chat/intent-parser.js.map +1 -0
- package/dist/hub/chat/types.d.ts.map +1 -0
- package/dist/hub/chat/types.js +2 -0
- package/dist/hub/chat/types.js.map +1 -0
- package/dist/hub/commands/agents.d.ts.map +1 -0
- package/dist/hub/commands/agents.js +36 -0
- package/dist/hub/commands/agents.js.map +1 -0
- package/dist/hub/commands/index.d.ts.map +1 -0
- package/dist/hub/commands/index.js +120 -0
- package/dist/hub/commands/index.js.map +1 -0
- package/dist/hub/commands/logs.d.ts.map +1 -0
- package/dist/hub/commands/logs.js +53 -0
- package/dist/hub/commands/logs.js.map +1 -0
- package/dist/hub/commands/memory.d.ts.map +1 -0
- package/dist/hub/commands/memory.js +40 -0
- package/dist/hub/commands/memory.js.map +1 -0
- package/dist/hub/commands/metrics.d.ts.map +1 -0
- package/dist/hub/commands/metrics.js +35 -0
- package/dist/hub/commands/metrics.js.map +1 -0
- package/dist/hub/commands/providers.d.ts.map +1 -0
- package/dist/hub/commands/providers.js +26 -0
- package/dist/hub/commands/providers.js.map +1 -0
- package/dist/hub/commands/run.d.ts.map +1 -0
- package/dist/hub/commands/run.js +31 -0
- package/dist/hub/commands/run.js.map +1 -0
- package/dist/hub/commands/status.d.ts.map +1 -0
- package/dist/hub/commands/status.js +61 -0
- package/dist/hub/commands/status.js.map +1 -0
- package/dist/hub/commands/workflows.d.ts.map +1 -0
- package/dist/hub/commands/workflows.js +45 -0
- package/dist/hub/commands/workflows.js.map +1 -0
- package/dist/hub/config-loader.d.ts.map +1 -0
- package/dist/hub/config-loader.js +27 -0
- package/dist/hub/config-loader.js.map +1 -0
- package/dist/hub/event-listener.d.ts.map +1 -0
- package/dist/hub/event-listener.js +8 -0
- package/dist/hub/event-listener.js.map +1 -0
- package/dist/hub/history.d.ts.map +1 -0
- package/dist/hub/history.js +59 -0
- package/dist/hub/history.js.map +1 -0
- package/dist/hub/index.d.ts.map +1 -0
- package/dist/hub/index.js +102 -0
- package/dist/hub/index.js.map +1 -0
- package/dist/hub/parser.d.ts.map +1 -0
- package/dist/hub/parser.js +98 -0
- package/dist/hub/parser.js.map +1 -0
- package/dist/hub/styles/borders.d.ts.map +1 -0
- package/dist/hub/styles/borders.js +64 -0
- package/dist/hub/styles/borders.js.map +1 -0
- package/dist/hub/styles/colors.d.ts.map +1 -0
- package/dist/hub/styles/colors.js +115 -0
- package/dist/hub/styles/colors.js.map +1 -0
- package/dist/hub/styles/typography.d.ts.map +1 -0
- package/dist/hub/styles/typography.js +60 -0
- package/dist/hub/styles/typography.js.map +1 -0
- package/dist/hub/tui/App.d.ts +2 -0
- package/dist/hub/tui/App.d.ts.map +1 -0
- package/dist/hub/tui/App.js +53 -0
- package/dist/hub/tui/App.js.map +1 -0
- package/dist/hub/tui/components/AgentQueue.d.ts +6 -0
- package/dist/hub/tui/components/AgentQueue.d.ts.map +1 -0
- package/dist/hub/tui/components/AgentQueue.js +20 -0
- package/dist/hub/tui/components/AgentQueue.js.map +1 -0
- package/dist/hub/tui/components/DAGPanel.d.ts +16 -0
- package/dist/hub/tui/components/DAGPanel.d.ts.map +1 -0
- package/dist/hub/tui/components/DAGPanel.js +51 -0
- package/dist/hub/tui/components/DAGPanel.js.map +1 -0
- package/dist/hub/tui/components/Header.d.ts +7 -0
- package/dist/hub/tui/components/Header.d.ts.map +1 -0
- package/dist/hub/tui/components/Header.js +17 -0
- package/dist/hub/tui/components/Header.js.map +1 -0
- package/dist/hub/tui/components/LogsPanel.d.ts +6 -0
- package/dist/hub/tui/components/LogsPanel.d.ts.map +1 -0
- package/dist/hub/tui/components/LogsPanel.js +26 -0
- package/dist/hub/tui/components/LogsPanel.js.map +1 -0
- package/dist/hub/tui/components/StatusBar.d.ts +8 -0
- package/dist/hub/tui/components/StatusBar.d.ts.map +1 -0
- package/dist/hub/tui/components/StatusBar.js +7 -0
- package/dist/hub/tui/components/StatusBar.js.map +1 -0
- package/dist/hub/tui/hooks/useEvents.d.ts +2 -0
- package/dist/hub/tui/hooks/useEvents.d.ts.map +1 -0
- package/dist/hub/tui/hooks/useEvents.js +13 -0
- package/dist/hub/tui/hooks/useEvents.js.map +1 -0
- package/dist/hub/tui/index.d.ts.map +1 -0
- package/dist/hub/tui/index.js +7 -0
- package/dist/hub/tui/index.js.map +1 -0
- package/dist/hub/tui/types.d.ts.map +1 -0
- package/dist/hub/tui/types.js +2 -0
- package/dist/hub/tui/types.js.map +1 -0
- package/dist/hub/types.d.ts.map +1 -0
- package/dist/hub/types.js +2 -0
- package/dist/hub/types.js.map +1 -0
- package/dist/tui/App.d.ts +2 -0
- package/dist/tui/App.d.ts.map +1 -0
- package/dist/tui/App.js +31 -0
- package/dist/tui/App.js.map +1 -0
- package/dist/tui/components/ChatPanel.d.ts +14 -0
- package/dist/tui/components/ChatPanel.d.ts.map +1 -0
- package/dist/tui/components/ChatPanel.js +30 -0
- package/dist/tui/components/ChatPanel.js.map +1 -0
- package/dist/tui/components/Header.d.ts +9 -0
- package/dist/tui/components/Header.d.ts.map +1 -0
- package/dist/tui/components/Header.js +17 -0
- package/dist/tui/components/Header.js.map +1 -0
- package/dist/tui/components/InputBar.d.ts +8 -0
- package/dist/tui/components/InputBar.d.ts.map +1 -0
- package/dist/tui/components/InputBar.js +16 -0
- package/dist/tui/components/InputBar.js.map +1 -0
- package/dist/tui/components/StatusPanel.d.ts +20 -0
- package/dist/tui/components/StatusPanel.d.ts.map +1 -0
- package/dist/tui/components/StatusPanel.js +20 -0
- package/dist/tui/components/StatusPanel.js.map +1 -0
- package/dist/tui/hooks/useAppState.d.ts +38 -0
- package/dist/tui/hooks/useAppState.d.ts.map +1 -0
- package/dist/tui/hooks/useAppState.js +127 -0
- package/dist/tui/hooks/useAppState.js.map +1 -0
- package/dist/tui/index.d.ts +3 -0
- package/dist/tui/index.d.ts.map +1 -0
- package/dist/tui/index.js +8 -0
- package/dist/tui/index.js.map +1 -0
- package/package.json +17 -11
- package/src/bin.ts +29 -3
- package/src/hub/__tests__/commands.test.ts +84 -0
- package/src/hub/__tests__/history.test.ts +137 -0
- package/src/hub/__tests__/parser.test.ts +105 -0
- package/src/hub/commands/agents.ts +53 -0
- package/src/hub/commands/index.ts +137 -0
- package/src/hub/commands/logs.ts +70 -0
- package/src/hub/commands/memory.ts +47 -0
- package/src/hub/commands/metrics.ts +49 -0
- package/src/hub/commands/providers.ts +39 -0
- package/src/hub/commands/run.ts +37 -0
- package/src/hub/commands/status.ts +69 -0
- package/src/hub/commands/workflows.ts +64 -0
- package/src/hub/config-loader.ts +37 -0
- package/src/hub/event-listener.ts +13 -0
- package/src/hub/history.ts +66 -0
- package/src/hub/index.ts +120 -0
- package/src/hub/parser.ts +107 -0
- package/src/hub/styles/borders.ts +74 -0
- package/src/hub/styles/colors.ts +129 -0
- package/src/hub/styles/typography.ts +68 -0
- package/src/hub/types.ts +31 -0
- package/src/tui/App.tsx +61 -0
- package/src/tui/components/ChatPanel.tsx +79 -0
- package/src/tui/components/Header.tsx +53 -0
- package/src/tui/components/InputBar.tsx +55 -0
- package/src/tui/components/StatusPanel.tsx +85 -0
- package/src/tui/hooks/useAppState.ts +168 -0
- package/src/tui/index.ts +9 -0
- package/tsconfig.json +19 -3
- package/tsconfig.tsbuildinfo +1 -0
- package/dist/benchmark.d.ts +0 -10
- package/dist/bin.d.ts +0 -3
- package/dist/bootstrap.d.ts +0 -8
- package/dist/bridge-adapter-templates.d.ts +0 -4
- package/dist/bridge-test.d.ts +0 -7
- package/dist/dashboard.d.ts +0 -4
- package/dist/doctor.d.ts +0 -6
- package/dist/evolve.d.ts +0 -7
- package/dist/host-init-templates.d.ts +0 -16
- package/dist/index.d.ts +0 -11
- package/dist/init-host.d.ts +0 -10
- package/dist/install.d.ts +0 -8
- package/dist/run.d.ts +0 -16
- package/dist/styles.d.ts +0 -12
- package/dist/vendor-manifests.d.ts +0 -22
- package/package/dashboard/index.html +0 -420
- package/package/package.json +0 -28
- package/package/src/benchmark.ts +0 -156
- package/package/src/bin.ts +0 -127
- package/package/src/bootstrap.ts +0 -36
- package/package/src/bridge-adapter-templates.ts +0 -181
- package/package/src/bridge-test.ts +0 -107
- package/package/src/dashboard.ts +0 -51
- package/package/src/doctor.ts +0 -92
- package/package/src/evolve.ts +0 -74
- package/package/src/host-init-templates.ts +0 -134
- package/package/src/index.ts +0 -10
- package/package/src/init-host.ts +0 -285
- package/package/src/install.ts +0 -118
- package/package/src/run.ts +0 -317
- package/package/src/styles.ts +0 -12
- package/package/src/vendor-manifests.ts +0 -113
- package/package/src/ws-relay.ts +0 -156
- package/package/tsconfig.json +0 -12
- package/rax-flow-0.1.1.tgz +0 -0
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
// RAX-FLOW Design System - Colors
|
|
2
|
+
// Based on cli-design.md specifications
|
|
3
|
+
export const colors = {
|
|
4
|
+
// Backgrounds
|
|
5
|
+
background: "#050505",
|
|
6
|
+
surface: "#0a0a0a",
|
|
7
|
+
surfaceElev: "#0d0d0d",
|
|
8
|
+
// Primary
|
|
9
|
+
primary: "#f97316", // Orange vif
|
|
10
|
+
primaryGlow: "rgba(249, 115, 22, 0.3)",
|
|
11
|
+
primaryGlowHover: "rgba(249, 115, 22, 0.5)",
|
|
12
|
+
// Text
|
|
13
|
+
textPrimary: "#ffffff",
|
|
14
|
+
textSecondary: "#a1a1aa",
|
|
15
|
+
textTertiary: "#71717a",
|
|
16
|
+
textQuaternary: "#3f3f46",
|
|
17
|
+
// Status
|
|
18
|
+
success: "#22c55e",
|
|
19
|
+
warning: "#f59e0b",
|
|
20
|
+
error: "#ef4444",
|
|
21
|
+
// Borders
|
|
22
|
+
border: "#27272a",
|
|
23
|
+
// Mutations
|
|
24
|
+
mutation: "#f59e0b",
|
|
25
|
+
mutationGlow: "rgba(245, 158, 11, 0.4)",
|
|
26
|
+
};
|
|
27
|
+
// ANSI color codes for terminal
|
|
28
|
+
export const ansiColors = {
|
|
29
|
+
reset: "\x1b[0m",
|
|
30
|
+
bright: "\x1b[1m",
|
|
31
|
+
dim: "\x1b[2m",
|
|
32
|
+
// Foreground colors
|
|
33
|
+
black: "\x1b[30m",
|
|
34
|
+
red: "\x1b[31m",
|
|
35
|
+
green: "\x1b[32m",
|
|
36
|
+
yellow: "\x1b[33m",
|
|
37
|
+
blue: "\x1b[34m",
|
|
38
|
+
magenta: "\x1b[35m",
|
|
39
|
+
cyan: "\x1b[36m",
|
|
40
|
+
white: "\x1b[37m",
|
|
41
|
+
gray: "\x1b[90m",
|
|
42
|
+
// Bright colors
|
|
43
|
+
brightRed: "\x1b[91m",
|
|
44
|
+
brightGreen: "\x1b[92m",
|
|
45
|
+
brightYellow: "\x1b[93m",
|
|
46
|
+
brightBlue: "\x1b[94m",
|
|
47
|
+
brightMagenta: "\x1b[95m",
|
|
48
|
+
brightCyan: "\x1b[96m",
|
|
49
|
+
brightWhite: "\x1b[97m",
|
|
50
|
+
// Background colors
|
|
51
|
+
bgBlack: "\x1b[40m",
|
|
52
|
+
bgRed: "\x1b[41m",
|
|
53
|
+
bgGreen: "\x1b[42m",
|
|
54
|
+
bgYellow: "\x1b[43m",
|
|
55
|
+
bgBlue: "\x1b[44m",
|
|
56
|
+
bgMagenta: "\x1b[45m",
|
|
57
|
+
bgCyan: "\x1b[46m",
|
|
58
|
+
bgWhite: "\x1b[47m",
|
|
59
|
+
bgGray: "\x1b[100m",
|
|
60
|
+
};
|
|
61
|
+
// Status indicators
|
|
62
|
+
export const statusIndicators = {
|
|
63
|
+
online: "●",
|
|
64
|
+
offline: "○",
|
|
65
|
+
running: "▶",
|
|
66
|
+
loading: "◐",
|
|
67
|
+
mutation: "◆",
|
|
68
|
+
checkpoint: "■",
|
|
69
|
+
pending: "○",
|
|
70
|
+
done: "✓",
|
|
71
|
+
};
|
|
72
|
+
// Provider indicators
|
|
73
|
+
export const providerIndicators = {
|
|
74
|
+
host: "[H]",
|
|
75
|
+
claude: "[C]",
|
|
76
|
+
opencode: "[O]",
|
|
77
|
+
kilo: "[K]",
|
|
78
|
+
anthropic: "[A]",
|
|
79
|
+
gemini: "[G]",
|
|
80
|
+
mistral: "[M]",
|
|
81
|
+
groq: "[Q]",
|
|
82
|
+
openai: "[O]",
|
|
83
|
+
};
|
|
84
|
+
// Utility functions
|
|
85
|
+
export function colorize(text, color) {
|
|
86
|
+
return `${ansiColors[color]}${text}${ansiColors.reset}`;
|
|
87
|
+
}
|
|
88
|
+
export function statusColor(status) {
|
|
89
|
+
switch (status.toLowerCase()) {
|
|
90
|
+
case "online":
|
|
91
|
+
case "ready":
|
|
92
|
+
case "active":
|
|
93
|
+
case "done":
|
|
94
|
+
case "success":
|
|
95
|
+
return ansiColors.green;
|
|
96
|
+
case "running":
|
|
97
|
+
case "busy":
|
|
98
|
+
return ansiColors.yellow;
|
|
99
|
+
case "error":
|
|
100
|
+
case "failed":
|
|
101
|
+
return ansiColors.red;
|
|
102
|
+
case "queued":
|
|
103
|
+
case "pending":
|
|
104
|
+
case "idle":
|
|
105
|
+
return ansiColors.gray;
|
|
106
|
+
default:
|
|
107
|
+
return ansiColors.reset;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
export function formatStatus(status) {
|
|
111
|
+
const indicator = statusIndicators[status.toLowerCase()] || "○";
|
|
112
|
+
const color = statusColor(status);
|
|
113
|
+
return `${color}${indicator}${ansiColors.reset}`;
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=colors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"colors.js","sourceRoot":"","sources":["../../../src/hub/styles/colors.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typography.d.ts","sourceRoot":"","sources":["../../../src/hub/styles/typography.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;CAiCtB,CAAC;AAGF,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAK7D;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAG5D;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAG3D;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAGhE;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEhD"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
// RAX-FLOW Design System - Typography
|
|
2
|
+
// Space Grotesk for titles, Space Mono for system text
|
|
3
|
+
export const typography = {
|
|
4
|
+
// Font families
|
|
5
|
+
primary: "Space Grotesk",
|
|
6
|
+
monospace: "Space Mono",
|
|
7
|
+
// Font weights
|
|
8
|
+
weights: {
|
|
9
|
+
light: 300,
|
|
10
|
+
regular: 400,
|
|
11
|
+
medium: 500,
|
|
12
|
+
bold: 700,
|
|
13
|
+
},
|
|
14
|
+
// Sizes (in terminal columns roughly)
|
|
15
|
+
sizes: {
|
|
16
|
+
hero: 4, // text-4xl
|
|
17
|
+
section: 2, // text-2xl
|
|
18
|
+
label: 0, // text-[10px]
|
|
19
|
+
body: 1, // text-sm
|
|
20
|
+
code: 0, // text-xs
|
|
21
|
+
status: -1, // text-[9px]
|
|
22
|
+
agent: 0, // text-xs
|
|
23
|
+
provider: -1, // text-[9px]
|
|
24
|
+
},
|
|
25
|
+
// Tracking (letter-spacing)
|
|
26
|
+
tracking: {
|
|
27
|
+
none: "",
|
|
28
|
+
tight: "",
|
|
29
|
+
normal: "",
|
|
30
|
+
wide: " ",
|
|
31
|
+
label: " ", // 0.15em equivalent in monospace
|
|
32
|
+
},
|
|
33
|
+
};
|
|
34
|
+
// Text formatting utilities for terminal
|
|
35
|
+
export function upperCase(text) {
|
|
36
|
+
return text.toUpperCase();
|
|
37
|
+
}
|
|
38
|
+
export function padCenter(text, width) {
|
|
39
|
+
const padding = Math.max(0, width - text.length);
|
|
40
|
+
const leftPad = Math.floor(padding / 2);
|
|
41
|
+
const rightPad = padding - leftPad;
|
|
42
|
+
return " ".repeat(leftPad) + text + " ".repeat(rightPad);
|
|
43
|
+
}
|
|
44
|
+
export function padRight(text, width) {
|
|
45
|
+
const padding = Math.max(0, width - text.length);
|
|
46
|
+
return text + " ".repeat(padding);
|
|
47
|
+
}
|
|
48
|
+
export function padLeft(text, width) {
|
|
49
|
+
const padding = Math.max(0, width - text.length);
|
|
50
|
+
return " ".repeat(padding) + text;
|
|
51
|
+
}
|
|
52
|
+
export function truncate(text, maxLength) {
|
|
53
|
+
if (text.length <= maxLength)
|
|
54
|
+
return text;
|
|
55
|
+
return text.slice(0, maxLength - 3) + "...";
|
|
56
|
+
}
|
|
57
|
+
export function formatLabel(text) {
|
|
58
|
+
return upperCase(text).split("").join(" ");
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=typography.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typography.js","sourceRoot":"","sources":["../../../src/hub/styles/typography.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,uDAAuD;AAEvD,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,gBAAgB;IAChB,OAAO,EAAE,eAAe;IACxB,SAAS,EAAE,YAAY;IAEvB,eAAe;IACf,OAAO,EAAE;QACP,KAAK,EAAE,GAAG;QACV,OAAO,EAAE,GAAG;QACZ,MAAM,EAAE,GAAG;QACX,IAAI,EAAE,GAAG;KACV;IAED,sCAAsC;IACtC,KAAK,EAAE;QACL,IAAI,EAAE,CAAC,EAAO,WAAW;QACzB,OAAO,EAAE,CAAC,EAAI,WAAW;QACzB,KAAK,EAAE,CAAC,EAAM,cAAc;QAC5B,IAAI,EAAE,CAAC,EAAO,UAAU;QACxB,IAAI,EAAE,CAAC,EAAO,UAAU;QACxB,MAAM,EAAE,CAAC,CAAC,EAAI,aAAa;QAC3B,KAAK,EAAE,CAAC,EAAM,UAAU;QACxB,QAAQ,EAAE,CAAC,CAAC,EAAE,aAAa;KAC5B;IAED,4BAA4B;IAC5B,QAAQ,EAAE;QACR,IAAI,EAAE,EAAE;QACR,KAAK,EAAE,EAAE;QACT,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,GAAG;QACT,KAAK,EAAE,IAAI,EAAE,iCAAiC;KAC/C;CACF,CAAC;AAEF,yCAAyC;AACzC,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,IAAY,EAAE,KAAa;IACnD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IACjD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;IACxC,MAAM,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAC;IACnC,OAAO,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,IAAY,EAAE,KAAa;IAClD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IACjD,OAAO,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,IAAY,EAAE,KAAa;IACjD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IACjD,OAAO,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,IAAY,EAAE,SAAiB;IACtD,IAAI,IAAI,CAAC,MAAM,IAAI,SAAS;QAAE,OAAO,IAAI,CAAC;IAC1C,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC7C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../../src/hub/tui/App.tsx"],"names":[],"mappings":"AAUA,wBAAgB,GAAG,QA2ElB"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import React, { useState } from 'react';
|
|
3
|
+
import { Box, Text, useInput, useApp } from 'ink';
|
|
4
|
+
import { Header } from './components/Header.js';
|
|
5
|
+
import { DAGPanel } from './components/DAGPanel.js';
|
|
6
|
+
import { AgentQueue } from './components/AgentQueue.js';
|
|
7
|
+
import { LogsPanel } from './components/LogsPanel.js';
|
|
8
|
+
import { StatusBar } from './components/StatusBar.js';
|
|
9
|
+
import { useEvents } from './hooks/useEvents.js';
|
|
10
|
+
export function App() {
|
|
11
|
+
const [currentView, setCurrentView] = useState('dag');
|
|
12
|
+
const [isRunning, setIsRunning] = useState(false);
|
|
13
|
+
const { exit } = useApp();
|
|
14
|
+
// Subscribe to events
|
|
15
|
+
const events = useEvents();
|
|
16
|
+
// Handle keyboard input
|
|
17
|
+
useInput((input, key) => {
|
|
18
|
+
// F1-F8 keys for views
|
|
19
|
+
if (key.sequence === '\x1bOP')
|
|
20
|
+
setCurrentView('dag'); // F1
|
|
21
|
+
if (key.sequence === '\x1bOQ')
|
|
22
|
+
setCurrentView('agents'); // F2
|
|
23
|
+
if (key.sequence === '\x1bOR')
|
|
24
|
+
setCurrentView('providers'); // F3
|
|
25
|
+
if (key.sequence === '\x1bOS')
|
|
26
|
+
setCurrentView('workflows'); // F4
|
|
27
|
+
if (input === '\x1b[15~')
|
|
28
|
+
setCurrentView('logs'); // F5
|
|
29
|
+
if (input === '\x1b[17~')
|
|
30
|
+
setCurrentView('metrics'); // F6
|
|
31
|
+
if (input === '\x1b[18~')
|
|
32
|
+
setCurrentView('memory'); // F7
|
|
33
|
+
if (input === '\x1b[19~')
|
|
34
|
+
setCurrentView('dashboard'); // F8
|
|
35
|
+
// Tab to cycle views
|
|
36
|
+
if (key.tab) {
|
|
37
|
+
const views = ['dag', 'agents', 'providers', 'workflows', 'logs', 'metrics', 'memory'];
|
|
38
|
+
const currentIndex = views.indexOf(currentView);
|
|
39
|
+
const nextIndex = (currentIndex + 1) % views.length;
|
|
40
|
+
setCurrentView(views[nextIndex]);
|
|
41
|
+
}
|
|
42
|
+
// Q to quit
|
|
43
|
+
if (input === 'q' || input === 'Q') {
|
|
44
|
+
exit();
|
|
45
|
+
}
|
|
46
|
+
// Ctrl+P to pause
|
|
47
|
+
if (key.ctrl && input === 'p') {
|
|
48
|
+
setIsRunning(!isRunning);
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
return (_jsxs(Box, { flexDirection: "column", height: "100%", children: [_jsx(Header, { currentView: currentView }), _jsxs(Box, { flexGrow: 1, flexDirection: "row", children: [_jsxs(Box, { flexGrow: 2, borderStyle: "single", padding: 1, children: [currentView === 'dag' && _jsx(DAGPanel, {}), currentView === 'agents' && _jsx(AgentQueue, {}), currentView === 'providers' && _jsx(Text, { children: "Providers View" }), currentView === 'workflows' && _jsx(Text, { children: "Workflows View" }), currentView === 'logs' && _jsx(LogsPanel, {}), currentView === 'metrics' && _jsx(Text, { children: "Metrics View" }), currentView === 'memory' && _jsx(Text, { children: "Memory View" }), currentView === 'dashboard' && _jsx(Text, { children: "Dashboard View" })] }), currentView !== 'agents' && (_jsx(Box, { width: 30, borderStyle: "single", padding: 1, children: _jsx(AgentQueue, { compact: true }) }))] }), _jsx(Box, { height: 8, borderStyle: "single", padding: 1, children: _jsx(LogsPanel, { maxLines: 5 }) }), _jsx(StatusBar, { isRunning: isRunning, currentView: currentView })] }));
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=App.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"App.js","sourceRoot":"","sources":["../../../src/hub/tui/App.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgentQueue.d.ts","sourceRoot":"","sources":["../../../../src/hub/tui/components/AgentQueue.tsx"],"names":[],"mappings":"AAIA,UAAU,eAAe;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAwBD,wBAAgB,UAAU,CAAC,EAAE,OAAe,EAAE,EAAE,eAAe,OAsC9D"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { Box, Text } from 'ink';
|
|
4
|
+
import { providerIndicators } from '../../styles/colors.js';
|
|
5
|
+
const mockAgents = [
|
|
6
|
+
{ name: 'CodeGenerator', provider: 'host', status: 'running', progress: 80, task: 'Generating auth.ts' },
|
|
7
|
+
{ name: 'TestAgent', provider: 'host', status: 'queued', task: 'Queued' },
|
|
8
|
+
{ name: 'FixAgent', provider: 'claude', status: 'idle' },
|
|
9
|
+
{ name: 'ValidatorAgent', provider: 'host', status: 'online' },
|
|
10
|
+
];
|
|
11
|
+
const statusColors = {
|
|
12
|
+
online: 'green',
|
|
13
|
+
running: 'yellow',
|
|
14
|
+
queued: 'gray',
|
|
15
|
+
idle: 'gray',
|
|
16
|
+
};
|
|
17
|
+
export function AgentQueue({ compact = false }) {
|
|
18
|
+
return (_jsxs(Box, { flexDirection: "column", gap: 1, children: [_jsx(Text, { bold: true, color: "#f97316", children: "AGENT QUEUE" }), mockAgents.map((agent) => (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { children: [_jsx(Text, { color: statusColors[agent.status], children: agent.status === 'running' ? '▶' : agent.status === 'queued' ? '◐' : '●' }), _jsx(Box, { marginLeft: 1, width: compact ? 12 : 20, children: _jsx(Text, { bold: true, children: agent.name.slice(0, compact ? 12 : 20) }) }), _jsx(Text, { color: "#a1a1aa", children: providerIndicators[agent.provider] || '[?]' })] }), agent.status === 'running' && agent.progress !== undefined && (_jsx(Box, { marginLeft: 2, children: _jsxs(Text, { color: "yellow", children: ["\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2591\u2591 ", agent.progress, "%"] }) })), agent.task && (_jsx(Box, { marginLeft: 2, children: _jsx(Text, { dimColor: true, children: agent.task }) }))] }, agent.name)))] }));
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=AgentQueue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgentQueue.js","sourceRoot":"","sources":["../../../../src/hub/tui/components/AgentQueue.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,kBAAkB,EAAoB,MAAM,wBAAwB,CAAC;AAc9E,MAAM,UAAU,GAAY;IAC1B,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE;IACxG,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE;IACzE,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE;IACxD,EAAE,IAAI,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE;CAC/D,CAAC;AAEF,MAAM,YAAY,GAA2B;IAC3C,MAAM,EAAE,OAAO;IACf,OAAO,EAAE,QAAQ;IACjB,MAAM,EAAE,MAAM;IACd,IAAI,EAAE,MAAM;CACb,CAAC;AAEF,MAAM,UAAU,UAAU,CAAC,EAAE,OAAO,GAAG,KAAK,EAAmB;IAC7D,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,GAAG,EAAE,CAAC,aAChC,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,SAAS,4BAEnB,EAEN,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CACzB,MAAC,GAAG,IAAkB,aAAa,EAAC,QAAQ,aAC1C,MAAC,GAAG,eACF,KAAC,IAAI,IAAC,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,YACpC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GACpE,EACP,KAAC,GAAG,IAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAC1C,KAAC,IAAI,IAAC,IAAI,kBAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAQ,GACtD,EACN,KAAC,IAAI,IAAC,KAAK,EAAC,SAAS,YAClB,kBAAkB,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,GACvC,IACH,EAEL,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,IAAI,CAC7D,KAAC,GAAG,IAAC,UAAU,EAAE,CAAC,YAChB,MAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,sGACF,KAAK,CAAC,QAAQ,SACzB,GACH,CACP,EAEA,KAAK,CAAC,IAAI,IAAI,CACb,KAAC,GAAG,IAAC,UAAU,EAAE,CAAC,YAChB,KAAC,IAAI,IAAC,QAAQ,kBAAE,KAAK,CAAC,IAAI,GAAQ,GAC9B,CACP,KAzBO,KAAK,CAAC,IAAI,CA0Bd,CACP,CAAC,IACE,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
interface DAGPanelProps {
|
|
2
|
+
workflow?: {
|
|
3
|
+
levels: Array<{
|
|
4
|
+
name: string;
|
|
5
|
+
progress: number;
|
|
6
|
+
nodes: Array<{
|
|
7
|
+
name: string;
|
|
8
|
+
status: 'done' | 'running' | 'pending' | 'queued';
|
|
9
|
+
agent: string;
|
|
10
|
+
}>;
|
|
11
|
+
}>;
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
export declare function DAGPanel({ workflow }: DAGPanelProps): any;
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=DAGPanel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DAGPanel.d.ts","sourceRoot":"","sources":["../../../../src/hub/tui/components/DAGPanel.tsx"],"names":[],"mappings":"AAKA,UAAU,aAAa;IACrB,QAAQ,CAAC,EAAE;QACT,MAAM,EAAE,KAAK,CAAC;YACZ,IAAI,EAAE,MAAM,CAAC;YACb,QAAQ,EAAE,MAAM,CAAC;YACjB,KAAK,EAAE,KAAK,CAAC;gBACX,IAAI,EAAE,MAAM,CAAC;gBACb,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;gBAClD,KAAK,EAAE,MAAM,CAAC;aACf,CAAC,CAAC;SACJ,CAAC,CAAC;KACJ,CAAC;CACH;AAgDD,wBAAgB,QAAQ,CAAC,EAAE,QAAuB,EAAE,EAAE,aAAa,OAqClE"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { Box, Text } from 'ink';
|
|
4
|
+
import { drawProgressBar } from '../../styles/borders.js';
|
|
5
|
+
const mockWorkflow = {
|
|
6
|
+
levels: [
|
|
7
|
+
{
|
|
8
|
+
name: 'L1: SPEC',
|
|
9
|
+
progress: 100,
|
|
10
|
+
nodes: [
|
|
11
|
+
{ name: 'intent_analysis', status: 'done', agent: 'IntentClassifier' },
|
|
12
|
+
{ name: 'architecture', status: 'done', agent: 'ArchitectureAgent' },
|
|
13
|
+
{ name: 'spec', status: 'done', agent: 'SpecAgent' },
|
|
14
|
+
],
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
name: 'L2: CODE',
|
|
18
|
+
progress: 67,
|
|
19
|
+
nodes: [
|
|
20
|
+
{ name: 'auth_module', status: 'running', agent: 'CodeGenerator' },
|
|
21
|
+
{ name: 'user_service', status: 'pending', agent: 'CodeGenerator' },
|
|
22
|
+
{ name: 'middleware', status: 'queued', agent: 'CodeGenerator' },
|
|
23
|
+
],
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
name: 'L3: TEST',
|
|
27
|
+
progress: 0,
|
|
28
|
+
nodes: [
|
|
29
|
+
{ name: 'unit_tests', status: 'queued', agent: 'TestAgent' },
|
|
30
|
+
{ name: 'integration', status: 'queued', agent: 'TestAgent' },
|
|
31
|
+
{ name: 'validation', status: 'queued', agent: 'ValidatorAgent' },
|
|
32
|
+
],
|
|
33
|
+
},
|
|
34
|
+
],
|
|
35
|
+
};
|
|
36
|
+
const statusSymbols = {
|
|
37
|
+
done: '●',
|
|
38
|
+
running: '▶',
|
|
39
|
+
pending: '○',
|
|
40
|
+
queued: '◐',
|
|
41
|
+
};
|
|
42
|
+
const statusColors = {
|
|
43
|
+
done: 'green',
|
|
44
|
+
running: 'yellow',
|
|
45
|
+
pending: 'gray',
|
|
46
|
+
queued: 'gray',
|
|
47
|
+
};
|
|
48
|
+
export function DAGPanel({ workflow = mockWorkflow }) {
|
|
49
|
+
return (_jsxs(Box, { flexDirection: "column", gap: 1, children: [_jsx(Text, { bold: true, color: "#f97316", children: "DAG EXECUTION" }), workflow.levels.map((level) => (_jsxs(Box, { flexDirection: "column", gap: 0, children: [_jsxs(Box, { children: [_jsx(Text, { bold: true, children: level.name }), _jsx(Box, { marginLeft: 2, children: _jsxs(Text, { color: level.progress === 100 ? 'green' : 'yellow', children: [drawProgressBar(level.progress, 20), " ", level.progress, "%"] }) })] }), _jsx(Box, { flexDirection: "column", marginLeft: 2, children: level.nodes.map((node) => (_jsx(Box, { children: _jsxs(Text, { color: statusColors[node.status], children: [statusSymbols[node.status], " ", node.name.padEnd(20), " ", node.agent] }) }, node.name))) })] }, level.name))), _jsx(Box, { marginTop: 1, children: _jsx(Text, { dimColor: true, children: "Fitness: 0.87 | Mutations: +3 | Cache: 94%" }) })] }));
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=DAGPanel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DAGPanel.js","sourceRoot":"","sources":["../../../../src/hub/tui/components/DAGPanel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Header.d.ts","sourceRoot":"","sources":["../../../../src/hub/tui/components/Header.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,UAAU,WAAW;IACnB,WAAW,EAAE,QAAQ,CAAC;CACvB;AAaD,wBAAgB,MAAM,CAAC,EAAE,WAAW,EAAE,EAAE,WAAW,OAuBlD"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { Box, Text } from 'ink';
|
|
4
|
+
const views = [
|
|
5
|
+
{ key: 'F1', label: 'Help', mode: 'dag' },
|
|
6
|
+
{ key: 'F2', label: 'Agents', mode: 'agents' },
|
|
7
|
+
{ key: 'F3', label: 'Providers', mode: 'providers' },
|
|
8
|
+
{ key: 'F4', label: 'Flows', mode: 'workflows' },
|
|
9
|
+
{ key: 'F5', label: 'Logs', mode: 'logs' },
|
|
10
|
+
{ key: 'F6', label: 'Metrics', mode: 'metrics' },
|
|
11
|
+
{ key: 'F7', label: 'Memory', mode: 'memory' },
|
|
12
|
+
{ key: 'F8', label: 'Dashboard', mode: 'dashboard' },
|
|
13
|
+
];
|
|
14
|
+
export function Header({ currentView }) {
|
|
15
|
+
return (_jsx(Box, { borderStyle: "single", paddingX: 1, paddingY: 0, backgroundColor: "#0a0a0a", children: _jsx(Box, { gap: 2, children: views.map(({ key, label, mode }) => (_jsx(Box, { children: _jsxs(Text, { backgroundColor: currentView === mode ? '#f97316' : undefined, color: currentView === mode ? '#ffffff' : '#a1a1aa', bold: currentView === mode, children: ["[", key, "]", label] }) }, key))) }) }));
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=Header.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Header.js","sourceRoot":"","sources":["../../../../src/hub/tui/components/Header.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAOhC,MAAM,KAAK,GAAqD;IAC9D,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE;IACzC,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC9C,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE;IACpD,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE;IAChD,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;IAC1C,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;IAChD,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC9C,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE;CACrD,CAAC;AAEF,MAAM,UAAU,MAAM,CAAC,EAAE,WAAW,EAAe;IACjD,OAAO,CACL,KAAC,GAAG,IACF,WAAW,EAAC,QAAQ,EACpB,QAAQ,EAAE,CAAC,EACX,QAAQ,EAAE,CAAC,EACX,eAAe,EAAC,SAAS,YAEzB,KAAC,GAAG,IAAC,GAAG,EAAE,CAAC,YACR,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CACnC,KAAC,GAAG,cACF,MAAC,IAAI,IACH,eAAe,EAAE,WAAW,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAC7D,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EACnD,IAAI,EAAE,WAAW,KAAK,IAAI,kBAExB,GAAG,OAAG,KAAK,IACR,IAPC,GAAG,CAQP,CACP,CAAC,GACE,GACF,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LogsPanel.d.ts","sourceRoot":"","sources":["../../../../src/hub/tui/components/LogsPanel.tsx"],"names":[],"mappings":"AAUA,UAAU,cAAc;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAkBD,wBAAgB,SAAS,CAAC,EAAE,QAAa,EAAE,EAAE,cAAc,OA8B1D"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import React, { useState, useEffect } from 'react';
|
|
3
|
+
import { Box, Text } from 'ink';
|
|
4
|
+
const mockLogs = [
|
|
5
|
+
{ timestamp: '14:23:12', level: 'INFO', agent: 'IntentClassifier', message: 'detected: code_generation' },
|
|
6
|
+
{ timestamp: '14:23:13', level: 'SUCCESS', agent: 'CodeGenerator', message: 'Generated auth.ts' },
|
|
7
|
+
{ timestamp: '14:23:14', level: 'INFO', agent: 'CodeGenerator', message: 'Generating user.ts' },
|
|
8
|
+
{ timestamp: '14:23:15', level: 'WARN', agent: 'TestAgent', message: '2 tests failed' },
|
|
9
|
+
{ timestamp: '14:23:16', level: 'MUTATE', agent: 'MutationAgent', message: '+2 validation nodes' },
|
|
10
|
+
];
|
|
11
|
+
const levelColors = {
|
|
12
|
+
INFO: 'cyan',
|
|
13
|
+
WARN: 'yellow',
|
|
14
|
+
ERROR: 'red',
|
|
15
|
+
SUCCESS: 'green',
|
|
16
|
+
MUTATE: 'magenta',
|
|
17
|
+
};
|
|
18
|
+
export function LogsPanel({ maxLines = 10 }) {
|
|
19
|
+
const [logs, setLogs] = useState(mockLogs);
|
|
20
|
+
// In real implementation, this would subscribe to event stream
|
|
21
|
+
useEffect(() => {
|
|
22
|
+
// Subscribe to RuntimeEventBus
|
|
23
|
+
}, []);
|
|
24
|
+
return (_jsxs(Box, { flexDirection: "column", gap: 0, children: [_jsx(Text, { bold: true, color: "#f97316", children: "LOGS STREAM" }), _jsx(Box, { flexDirection: "column", children: logs.slice(-maxLines).map((log, index) => (_jsxs(Box, { children: [_jsx(Text, { dimColor: true, children: log.timestamp }), _jsx(Box, { marginLeft: 1, width: 8, children: _jsx(Text, { color: levelColors[log.level], children: log.level }) }), _jsx(Box, { marginLeft: 1, width: 18, children: _jsx(Text, { children: log.agent }) }), _jsx(Text, { children: log.message })] }, index))) })] }));
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=LogsPanel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LogsPanel.js","sourceRoot":"","sources":["../../../../src/hub/tui/components/LogsPanel.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACnD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAahC,MAAM,QAAQ,GAAe;IAC3B,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,EAAE,OAAO,EAAE,2BAA2B,EAAE;IACzG,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,mBAAmB,EAAE;IACjG,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,oBAAoB,EAAE;IAC/F,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,gBAAgB,EAAE;IACvF,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,qBAAqB,EAAE;CACnG,CAAC;AAEF,MAAM,WAAW,GAA2B;IAC1C,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,QAAQ;IACd,KAAK,EAAE,KAAK;IACZ,OAAO,EAAE,OAAO;IAChB,MAAM,EAAE,SAAS;CAClB,CAAC;AAEF,MAAM,UAAU,SAAS,CAAC,EAAE,QAAQ,GAAG,EAAE,EAAkB;IACzD,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAa,QAAQ,CAAC,CAAC;IAEvD,+DAA+D;IAC/D,SAAS,CAAC,GAAG,EAAE;QACb,+BAA+B;IACjC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,GAAG,EAAE,CAAC,aAChC,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,SAAS,4BAEnB,EAEP,KAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,YACxB,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,CACzC,MAAC,GAAG,eACF,KAAC,IAAI,IAAC,QAAQ,kBAAE,GAAG,CAAC,SAAS,GAAQ,EACrC,KAAC,GAAG,IAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,YAC1B,KAAC,IAAI,IAAC,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,YAAG,GAAG,CAAC,KAAK,GAAQ,GACnD,EACN,KAAC,GAAG,IAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,YAC3B,KAAC,IAAI,cAAE,GAAG,CAAC,KAAK,GAAQ,GACpB,EACN,KAAC,IAAI,cAAE,GAAG,CAAC,OAAO,GAAQ,KARlB,KAAK,CAST,CACP,CAAC,GACE,IACF,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StatusBar.d.ts","sourceRoot":"","sources":["../../../../src/hub/tui/components/StatusBar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,UAAU,cAAc;IACtB,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,QAAQ,CAAC;CACvB;AAED,wBAAgB,SAAS,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE,cAAc,OA4BnE"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { Box, Text } from 'ink';
|
|
4
|
+
export function StatusBar({ isRunning, currentView }) {
|
|
5
|
+
return (_jsxs(Box, { borderStyle: "single", paddingX: 1, paddingY: 0, backgroundColor: "#0a0a0a", justifyContent: "space-between", children: [_jsxs(Box, { gap: 2, children: [_jsx(Text, { color: isRunning ? 'green' : 'gray', children: isRunning ? '▶ RUNNING' : '○ IDLE' }), _jsxs(Text, { color: "#a1a1aa", children: ["Mode: ", currentView.toUpperCase()] }), _jsx(Text, { color: "#a1a1aa", children: "Agents: 3/12" })] }), _jsx(Box, { gap: 2, children: _jsx(Text, { dimColor: true, children: "[Tab] Cycle | [Q] Quit | [Ctrl+P] Pause" }) })] }));
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=StatusBar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StatusBar.js","sourceRoot":"","sources":["../../../../src/hub/tui/components/StatusBar.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAQhC,MAAM,UAAU,SAAS,CAAC,EAAE,SAAS,EAAE,WAAW,EAAkB;IAClE,OAAO,CACL,MAAC,GAAG,IACF,WAAW,EAAC,QAAQ,EACpB,QAAQ,EAAE,CAAC,EACX,QAAQ,EAAE,CAAC,EACX,eAAe,EAAC,SAAS,EACzB,cAAc,EAAC,eAAe,aAE9B,MAAC,GAAG,IAAC,GAAG,EAAE,CAAC,aACT,KAAC,IAAI,IAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,YACtC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,GAC9B,EACP,MAAC,IAAI,IAAC,KAAK,EAAC,SAAS,uBACZ,WAAW,CAAC,WAAW,EAAE,IAC3B,EACP,KAAC,IAAI,IAAC,KAAK,EAAC,SAAS,6BAEd,IACH,EAEN,KAAC,GAAG,IAAC,GAAG,EAAE,CAAC,YACT,KAAC,IAAI,IAAC,QAAQ,8DAEP,GACH,IACF,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useEvents.d.ts","sourceRoot":"","sources":["../../../../src/hub/tui/hooks/useEvents.ts"],"names":[],"mappings":"AAGA,wBAAgB,SAAS,QAaxB"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { useState, useEffect } from 'react';
|
|
2
|
+
export function useEvents() {
|
|
3
|
+
const [events, setEvents] = useState([]);
|
|
4
|
+
useEffect(() => {
|
|
5
|
+
// TODO: Subscribe to RuntimeEventBus
|
|
6
|
+
// This will be implemented when integrating with core orchestrator
|
|
7
|
+
return () => {
|
|
8
|
+
// Cleanup subscription
|
|
9
|
+
};
|
|
10
|
+
}, []);
|
|
11
|
+
return events;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=useEvents.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useEvents.js","sourceRoot":"","sources":["../../../../src/hub/tui/hooks/useEvents.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAG5C,MAAM,UAAU,SAAS;IACvB,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAa,EAAE,CAAC,CAAC;IAErD,SAAS,CAAC,GAAG,EAAE;QACb,qCAAqC;QACrC,mEAAmE;QAEnE,OAAO,GAAG,EAAE;YACV,uBAAuB;QACzB,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hub/tui/index.ts"],"names":[],"mappings":"AAGA,wBAAsB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAG9C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hub/tui/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE/B,MAAM,CAAC,KAAK,UAAU,QAAQ;IAC5B,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;IACxC,MAAM,aAAa,EAAE,CAAC;AACxB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/hub/tui/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAChB,KAAK,GACL,QAAQ,GACR,WAAW,GACX,WAAW,GACX,MAAM,GACN,SAAS,GACT,QAAQ,GACR,WAAW,CAAC;AAEhB,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/hub/tui/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/hub/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,SAAS,CAAC;CACpB;AAED,MAAM,WAAW,SAAS;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,KAAK,CAAC,EAAE,YAAY,GAAG,SAAS,GAAG,eAAe,CAAC;CACpD;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC;CACzC;AAED,MAAM,WAAW,UAAU;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,SAAS,CAAC;CACnB;AAED,MAAM,MAAM,cAAc,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,OAAO,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAE7H,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,cAAc,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/hub/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../src/tui/App.tsx"],"names":[],"mappings":"AAQA,wBAAgB,GAAG,4CAoDlB"}
|
package/dist/tui/App.js
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Box, useApp, useInput } from "ink";
|
|
3
|
+
import { Header } from "./components/Header.js";
|
|
4
|
+
import { ChatPanel } from "./components/ChatPanel.js";
|
|
5
|
+
import { StatusPanel } from "./components/StatusPanel.js";
|
|
6
|
+
import { InputBar } from "./components/InputBar.js";
|
|
7
|
+
import { useAppState } from "./hooks/useAppState.js";
|
|
8
|
+
export function App() {
|
|
9
|
+
const { exit } = useApp();
|
|
10
|
+
const { state, dispatch, processCommand } = useAppState();
|
|
11
|
+
useInput((input, key) => {
|
|
12
|
+
if (key.ctrl && input === "c") {
|
|
13
|
+
exit();
|
|
14
|
+
}
|
|
15
|
+
if (key.ctrl && input === "d") {
|
|
16
|
+
exit();
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
const handleSubmit = (input) => {
|
|
20
|
+
const trimmed = input.trim();
|
|
21
|
+
if (!trimmed)
|
|
22
|
+
return;
|
|
23
|
+
if (trimmed === "exit" || trimmed === "quit") {
|
|
24
|
+
exit();
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
processCommand(trimmed);
|
|
28
|
+
};
|
|
29
|
+
return (_jsxs(Box, { flexDirection: "column", height: "100%", width: "100%", children: [_jsx(Header, { projectName: state.projectName, agentCount: state.agentCount, provider: state.provider, status: state.status }), _jsxs(Box, { flexGrow: 1, flexDirection: "row", width: "100%", children: [_jsx(ChatPanel, { messages: state.messages, isProcessing: state.isProcessing }), _jsx(StatusPanel, { agents: state.agents, providers: state.providers, fitness: state.fitness, currentWorkflow: state.currentWorkflow })] }), _jsx(InputBar, { onSubmit: handleSubmit, suggestions: state.suggestions, isProcessing: state.isProcessing })] }));
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=App.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"App.js","sourceRoot":"","sources":["../../src/tui/App.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAQ,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD,MAAM,UAAU,GAAG;IACjB,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC;IAC1B,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,WAAW,EAAE,CAAC;IAE1D,QAAQ,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACtB,IAAI,GAAG,CAAC,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;YAC9B,IAAI,EAAE,CAAC;QACT,CAAC;QACD,IAAI,GAAG,CAAC,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;YAC9B,IAAI,EAAE,CAAC;QACT,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,CAAC,KAAa,EAAE,EAAE;QACrC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QAC7B,IAAI,CAAC,OAAO;YAAE,OAAO;QAErB,IAAI,OAAO,KAAK,MAAM,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;YAC7C,IAAI,EAAE,CAAC;YACP,OAAO;QACT,CAAC;QAED,cAAc,CAAC,OAAO,CAAC,CAAC;IAC1B,CAAC,CAAC;IAEF,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,MAAM,EAAC,MAAM,EAAC,KAAK,EAAC,MAAM,aACpD,KAAC,MAAM,IACL,WAAW,EAAE,KAAK,CAAC,WAAW,EAC9B,UAAU,EAAE,KAAK,CAAC,UAAU,EAC5B,QAAQ,EAAE,KAAK,CAAC,QAAQ,EACxB,MAAM,EAAE,KAAK,CAAC,MAAM,GACpB,EACF,MAAC,GAAG,IAAC,QAAQ,EAAE,CAAC,EAAE,aAAa,EAAC,KAAK,EAAC,KAAK,EAAC,MAAM,aAChD,KAAC,SAAS,IACR,QAAQ,EAAE,KAAK,CAAC,QAAQ,EACxB,YAAY,EAAE,KAAK,CAAC,YAAY,GAChC,EACF,KAAC,WAAW,IACV,MAAM,EAAE,KAAK,CAAC,MAAM,EACpB,SAAS,EAAE,KAAK,CAAC,SAAS,EAC1B,OAAO,EAAE,KAAK,CAAC,OAAO,EACtB,eAAe,EAAE,KAAK,CAAC,eAAe,GACtC,IACE,EACN,KAAC,QAAQ,IACP,QAAQ,EAAE,YAAY,EACtB,WAAW,EAAE,KAAK,CAAC,WAAW,EAC9B,YAAY,EAAE,KAAK,CAAC,YAAY,GAChC,IACE,CACP,CAAC;AACJ,CAAC"}
|