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.
Files changed (223) hide show
  1. package/LICENSE +21 -0
  2. package/dist/bin.js +27 -3
  3. package/dist/bin.js.map +1 -1
  4. package/dist/hub/__tests__/commands.test.d.ts.map +1 -0
  5. package/dist/hub/__tests__/commands.test.js +72 -0
  6. package/dist/hub/__tests__/commands.test.js.map +1 -0
  7. package/dist/hub/__tests__/history.test.d.ts.map +1 -0
  8. package/dist/hub/__tests__/history.test.js +119 -0
  9. package/dist/hub/__tests__/history.test.js.map +1 -0
  10. package/dist/hub/__tests__/parser.test.d.ts.map +1 -0
  11. package/dist/hub/__tests__/parser.test.js +92 -0
  12. package/dist/hub/__tests__/parser.test.js.map +1 -0
  13. package/dist/hub/chat/ChatApp.d.ts +2 -0
  14. package/dist/hub/chat/ChatApp.d.ts.map +1 -0
  15. package/dist/hub/chat/ChatApp.js +146 -0
  16. package/dist/hub/chat/ChatApp.js.map +1 -0
  17. package/dist/hub/chat/components/ChatInput.d.ts +9 -0
  18. package/dist/hub/chat/components/ChatInput.d.ts.map +1 -0
  19. package/dist/hub/chat/components/ChatInput.js +19 -0
  20. package/dist/hub/chat/components/ChatInput.js.map +1 -0
  21. package/dist/hub/chat/components/MessageList.d.ts +7 -0
  22. package/dist/hub/chat/components/MessageList.d.ts.map +1 -0
  23. package/dist/hub/chat/components/MessageList.js +6 -0
  24. package/dist/hub/chat/components/MessageList.js.map +1 -0
  25. package/dist/hub/chat/context.d.ts.map +1 -0
  26. package/dist/hub/chat/context.js +42 -0
  27. package/dist/hub/chat/context.js.map +1 -0
  28. package/dist/hub/chat/hooks/useChatHistory.d.ts +7 -0
  29. package/dist/hub/chat/hooks/useChatHistory.d.ts.map +1 -0
  30. package/dist/hub/chat/hooks/useChatHistory.js +31 -0
  31. package/dist/hub/chat/hooks/useChatHistory.js.map +1 -0
  32. package/dist/hub/chat/index.d.ts.map +1 -0
  33. package/dist/hub/chat/index.js +7 -0
  34. package/dist/hub/chat/index.js.map +1 -0
  35. package/dist/hub/chat/intent-parser.d.ts.map +1 -0
  36. package/dist/hub/chat/intent-parser.js +48 -0
  37. package/dist/hub/chat/intent-parser.js.map +1 -0
  38. package/dist/hub/chat/types.d.ts.map +1 -0
  39. package/dist/hub/chat/types.js +2 -0
  40. package/dist/hub/chat/types.js.map +1 -0
  41. package/dist/hub/commands/agents.d.ts.map +1 -0
  42. package/dist/hub/commands/agents.js +36 -0
  43. package/dist/hub/commands/agents.js.map +1 -0
  44. package/dist/hub/commands/index.d.ts.map +1 -0
  45. package/dist/hub/commands/index.js +120 -0
  46. package/dist/hub/commands/index.js.map +1 -0
  47. package/dist/hub/commands/logs.d.ts.map +1 -0
  48. package/dist/hub/commands/logs.js +53 -0
  49. package/dist/hub/commands/logs.js.map +1 -0
  50. package/dist/hub/commands/memory.d.ts.map +1 -0
  51. package/dist/hub/commands/memory.js +40 -0
  52. package/dist/hub/commands/memory.js.map +1 -0
  53. package/dist/hub/commands/metrics.d.ts.map +1 -0
  54. package/dist/hub/commands/metrics.js +35 -0
  55. package/dist/hub/commands/metrics.js.map +1 -0
  56. package/dist/hub/commands/providers.d.ts.map +1 -0
  57. package/dist/hub/commands/providers.js +26 -0
  58. package/dist/hub/commands/providers.js.map +1 -0
  59. package/dist/hub/commands/run.d.ts.map +1 -0
  60. package/dist/hub/commands/run.js +31 -0
  61. package/dist/hub/commands/run.js.map +1 -0
  62. package/dist/hub/commands/status.d.ts.map +1 -0
  63. package/dist/hub/commands/status.js +61 -0
  64. package/dist/hub/commands/status.js.map +1 -0
  65. package/dist/hub/commands/workflows.d.ts.map +1 -0
  66. package/dist/hub/commands/workflows.js +45 -0
  67. package/dist/hub/commands/workflows.js.map +1 -0
  68. package/dist/hub/config-loader.d.ts.map +1 -0
  69. package/dist/hub/config-loader.js +27 -0
  70. package/dist/hub/config-loader.js.map +1 -0
  71. package/dist/hub/event-listener.d.ts.map +1 -0
  72. package/dist/hub/event-listener.js +8 -0
  73. package/dist/hub/event-listener.js.map +1 -0
  74. package/dist/hub/history.d.ts.map +1 -0
  75. package/dist/hub/history.js +59 -0
  76. package/dist/hub/history.js.map +1 -0
  77. package/dist/hub/index.d.ts.map +1 -0
  78. package/dist/hub/index.js +102 -0
  79. package/dist/hub/index.js.map +1 -0
  80. package/dist/hub/parser.d.ts.map +1 -0
  81. package/dist/hub/parser.js +98 -0
  82. package/dist/hub/parser.js.map +1 -0
  83. package/dist/hub/styles/borders.d.ts.map +1 -0
  84. package/dist/hub/styles/borders.js +64 -0
  85. package/dist/hub/styles/borders.js.map +1 -0
  86. package/dist/hub/styles/colors.d.ts.map +1 -0
  87. package/dist/hub/styles/colors.js +115 -0
  88. package/dist/hub/styles/colors.js.map +1 -0
  89. package/dist/hub/styles/typography.d.ts.map +1 -0
  90. package/dist/hub/styles/typography.js +60 -0
  91. package/dist/hub/styles/typography.js.map +1 -0
  92. package/dist/hub/tui/App.d.ts +2 -0
  93. package/dist/hub/tui/App.d.ts.map +1 -0
  94. package/dist/hub/tui/App.js +53 -0
  95. package/dist/hub/tui/App.js.map +1 -0
  96. package/dist/hub/tui/components/AgentQueue.d.ts +6 -0
  97. package/dist/hub/tui/components/AgentQueue.d.ts.map +1 -0
  98. package/dist/hub/tui/components/AgentQueue.js +20 -0
  99. package/dist/hub/tui/components/AgentQueue.js.map +1 -0
  100. package/dist/hub/tui/components/DAGPanel.d.ts +16 -0
  101. package/dist/hub/tui/components/DAGPanel.d.ts.map +1 -0
  102. package/dist/hub/tui/components/DAGPanel.js +51 -0
  103. package/dist/hub/tui/components/DAGPanel.js.map +1 -0
  104. package/dist/hub/tui/components/Header.d.ts +7 -0
  105. package/dist/hub/tui/components/Header.d.ts.map +1 -0
  106. package/dist/hub/tui/components/Header.js +17 -0
  107. package/dist/hub/tui/components/Header.js.map +1 -0
  108. package/dist/hub/tui/components/LogsPanel.d.ts +6 -0
  109. package/dist/hub/tui/components/LogsPanel.d.ts.map +1 -0
  110. package/dist/hub/tui/components/LogsPanel.js +26 -0
  111. package/dist/hub/tui/components/LogsPanel.js.map +1 -0
  112. package/dist/hub/tui/components/StatusBar.d.ts +8 -0
  113. package/dist/hub/tui/components/StatusBar.d.ts.map +1 -0
  114. package/dist/hub/tui/components/StatusBar.js +7 -0
  115. package/dist/hub/tui/components/StatusBar.js.map +1 -0
  116. package/dist/hub/tui/hooks/useEvents.d.ts +2 -0
  117. package/dist/hub/tui/hooks/useEvents.d.ts.map +1 -0
  118. package/dist/hub/tui/hooks/useEvents.js +13 -0
  119. package/dist/hub/tui/hooks/useEvents.js.map +1 -0
  120. package/dist/hub/tui/index.d.ts.map +1 -0
  121. package/dist/hub/tui/index.js +7 -0
  122. package/dist/hub/tui/index.js.map +1 -0
  123. package/dist/hub/tui/types.d.ts.map +1 -0
  124. package/dist/hub/tui/types.js +2 -0
  125. package/dist/hub/tui/types.js.map +1 -0
  126. package/dist/hub/types.d.ts.map +1 -0
  127. package/dist/hub/types.js +2 -0
  128. package/dist/hub/types.js.map +1 -0
  129. package/dist/tui/App.d.ts +2 -0
  130. package/dist/tui/App.d.ts.map +1 -0
  131. package/dist/tui/App.js +31 -0
  132. package/dist/tui/App.js.map +1 -0
  133. package/dist/tui/components/ChatPanel.d.ts +14 -0
  134. package/dist/tui/components/ChatPanel.d.ts.map +1 -0
  135. package/dist/tui/components/ChatPanel.js +30 -0
  136. package/dist/tui/components/ChatPanel.js.map +1 -0
  137. package/dist/tui/components/Header.d.ts +9 -0
  138. package/dist/tui/components/Header.d.ts.map +1 -0
  139. package/dist/tui/components/Header.js +17 -0
  140. package/dist/tui/components/Header.js.map +1 -0
  141. package/dist/tui/components/InputBar.d.ts +8 -0
  142. package/dist/tui/components/InputBar.d.ts.map +1 -0
  143. package/dist/tui/components/InputBar.js +16 -0
  144. package/dist/tui/components/InputBar.js.map +1 -0
  145. package/dist/tui/components/StatusPanel.d.ts +20 -0
  146. package/dist/tui/components/StatusPanel.d.ts.map +1 -0
  147. package/dist/tui/components/StatusPanel.js +20 -0
  148. package/dist/tui/components/StatusPanel.js.map +1 -0
  149. package/dist/tui/hooks/useAppState.d.ts +38 -0
  150. package/dist/tui/hooks/useAppState.d.ts.map +1 -0
  151. package/dist/tui/hooks/useAppState.js +127 -0
  152. package/dist/tui/hooks/useAppState.js.map +1 -0
  153. package/dist/tui/index.d.ts +3 -0
  154. package/dist/tui/index.d.ts.map +1 -0
  155. package/dist/tui/index.js +8 -0
  156. package/dist/tui/index.js.map +1 -0
  157. package/package.json +17 -11
  158. package/src/bin.ts +29 -3
  159. package/src/hub/__tests__/commands.test.ts +84 -0
  160. package/src/hub/__tests__/history.test.ts +137 -0
  161. package/src/hub/__tests__/parser.test.ts +105 -0
  162. package/src/hub/commands/agents.ts +53 -0
  163. package/src/hub/commands/index.ts +137 -0
  164. package/src/hub/commands/logs.ts +70 -0
  165. package/src/hub/commands/memory.ts +47 -0
  166. package/src/hub/commands/metrics.ts +49 -0
  167. package/src/hub/commands/providers.ts +39 -0
  168. package/src/hub/commands/run.ts +37 -0
  169. package/src/hub/commands/status.ts +69 -0
  170. package/src/hub/commands/workflows.ts +64 -0
  171. package/src/hub/config-loader.ts +37 -0
  172. package/src/hub/event-listener.ts +13 -0
  173. package/src/hub/history.ts +66 -0
  174. package/src/hub/index.ts +120 -0
  175. package/src/hub/parser.ts +107 -0
  176. package/src/hub/styles/borders.ts +74 -0
  177. package/src/hub/styles/colors.ts +129 -0
  178. package/src/hub/styles/typography.ts +68 -0
  179. package/src/hub/types.ts +31 -0
  180. package/src/tui/App.tsx +61 -0
  181. package/src/tui/components/ChatPanel.tsx +79 -0
  182. package/src/tui/components/Header.tsx +53 -0
  183. package/src/tui/components/InputBar.tsx +55 -0
  184. package/src/tui/components/StatusPanel.tsx +85 -0
  185. package/src/tui/hooks/useAppState.ts +168 -0
  186. package/src/tui/index.ts +9 -0
  187. package/tsconfig.json +19 -3
  188. package/tsconfig.tsbuildinfo +1 -0
  189. package/dist/benchmark.d.ts +0 -10
  190. package/dist/bin.d.ts +0 -3
  191. package/dist/bootstrap.d.ts +0 -8
  192. package/dist/bridge-adapter-templates.d.ts +0 -4
  193. package/dist/bridge-test.d.ts +0 -7
  194. package/dist/dashboard.d.ts +0 -4
  195. package/dist/doctor.d.ts +0 -6
  196. package/dist/evolve.d.ts +0 -7
  197. package/dist/host-init-templates.d.ts +0 -16
  198. package/dist/index.d.ts +0 -11
  199. package/dist/init-host.d.ts +0 -10
  200. package/dist/install.d.ts +0 -8
  201. package/dist/run.d.ts +0 -16
  202. package/dist/styles.d.ts +0 -12
  203. package/dist/vendor-manifests.d.ts +0 -22
  204. package/package/dashboard/index.html +0 -420
  205. package/package/package.json +0 -28
  206. package/package/src/benchmark.ts +0 -156
  207. package/package/src/bin.ts +0 -127
  208. package/package/src/bootstrap.ts +0 -36
  209. package/package/src/bridge-adapter-templates.ts +0 -181
  210. package/package/src/bridge-test.ts +0 -107
  211. package/package/src/dashboard.ts +0 -51
  212. package/package/src/doctor.ts +0 -92
  213. package/package/src/evolve.ts +0 -74
  214. package/package/src/host-init-templates.ts +0 -134
  215. package/package/src/index.ts +0 -10
  216. package/package/src/init-host.ts +0 -285
  217. package/package/src/install.ts +0 -118
  218. package/package/src/run.ts +0 -317
  219. package/package/src/styles.ts +0 -12
  220. package/package/src/vendor-manifests.ts +0 -113
  221. package/package/src/ws-relay.ts +0 -156
  222. package/package/tsconfig.json +0 -12
  223. 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,2 @@
1
+ export declare function App(): any;
2
+ //# sourceMappingURL=App.d.ts.map
@@ -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,6 @@
1
+ interface AgentQueueProps {
2
+ compact?: boolean;
3
+ }
4
+ export declare function AgentQueue({ compact }: AgentQueueProps): any;
5
+ export {};
6
+ //# sourceMappingURL=AgentQueue.d.ts.map
@@ -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,7 @@
1
+ import type { ViewMode } from './types.js';
2
+ interface HeaderProps {
3
+ currentView: ViewMode;
4
+ }
5
+ export declare function Header({ currentView }: HeaderProps): any;
6
+ export {};
7
+ //# sourceMappingURL=Header.d.ts.map
@@ -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,6 @@
1
+ interface LogsPanelProps {
2
+ maxLines?: number;
3
+ }
4
+ export declare function LogsPanel({ maxLines }: LogsPanelProps): any;
5
+ export {};
6
+ //# sourceMappingURL=LogsPanel.d.ts.map
@@ -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,8 @@
1
+ import type { ViewMode } from '../types.js';
2
+ interface StatusBarProps {
3
+ isRunning: boolean;
4
+ currentView: ViewMode;
5
+ }
6
+ export declare function StatusBar({ isRunning, currentView }: StatusBarProps): any;
7
+ export {};
8
+ //# sourceMappingURL=StatusBar.d.ts.map
@@ -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,2 @@
1
+ export declare function useEvents(): any;
2
+ //# sourceMappingURL=useEvents.d.ts.map
@@ -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,7 @@
1
+ import { render } from 'ink';
2
+ import { App } from './App.js';
3
+ export async function startTUI() {
4
+ const { waitUntilExit } = render(App());
5
+ await waitUntilExit();
6
+ }
7
+ //# sourceMappingURL=index.js.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/hub/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export declare function App(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=App.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../src/tui/App.tsx"],"names":[],"mappings":"AAQA,wBAAgB,GAAG,4CAoDlB"}
@@ -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"}