rax-flow 0.1.6 → 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 (41) hide show
  1. package/dist/bin.js +3 -2
  2. package/dist/bin.js.map +1 -1
  3. package/dist/tui/App.d.ts +2 -0
  4. package/dist/tui/App.d.ts.map +1 -0
  5. package/dist/tui/App.js +31 -0
  6. package/dist/tui/App.js.map +1 -0
  7. package/dist/tui/components/ChatPanel.d.ts +14 -0
  8. package/dist/tui/components/ChatPanel.d.ts.map +1 -0
  9. package/dist/tui/components/ChatPanel.js +30 -0
  10. package/dist/tui/components/ChatPanel.js.map +1 -0
  11. package/dist/tui/components/Header.d.ts +9 -0
  12. package/dist/tui/components/Header.d.ts.map +1 -0
  13. package/dist/tui/components/Header.js +17 -0
  14. package/dist/tui/components/Header.js.map +1 -0
  15. package/dist/tui/components/InputBar.d.ts +8 -0
  16. package/dist/tui/components/InputBar.d.ts.map +1 -0
  17. package/dist/tui/components/InputBar.js +16 -0
  18. package/dist/tui/components/InputBar.js.map +1 -0
  19. package/dist/tui/components/StatusPanel.d.ts +20 -0
  20. package/dist/tui/components/StatusPanel.d.ts.map +1 -0
  21. package/dist/tui/components/StatusPanel.js +20 -0
  22. package/dist/tui/components/StatusPanel.js.map +1 -0
  23. package/dist/tui/hooks/useAppState.d.ts +38 -0
  24. package/dist/tui/hooks/useAppState.d.ts.map +1 -0
  25. package/dist/tui/hooks/useAppState.js +127 -0
  26. package/dist/tui/hooks/useAppState.js.map +1 -0
  27. package/dist/tui/index.d.ts +3 -0
  28. package/dist/tui/index.d.ts.map +1 -0
  29. package/dist/tui/index.js +8 -0
  30. package/dist/tui/index.js.map +1 -0
  31. package/package.json +7 -1
  32. package/src/bin.ts +3 -2
  33. package/src/tui/App.tsx +61 -0
  34. package/src/tui/components/ChatPanel.tsx +79 -0
  35. package/src/tui/components/Header.tsx +53 -0
  36. package/src/tui/components/InputBar.tsx +55 -0
  37. package/src/tui/components/StatusPanel.tsx +85 -0
  38. package/src/tui/hooks/useAppState.ts +168 -0
  39. package/src/tui/index.ts +9 -0
  40. package/tsconfig.json +0 -4
  41. package/tsconfig.tsbuildinfo +1 -1
package/dist/bin.js CHANGED
@@ -7,7 +7,7 @@ import { runDoctor } from "./doctor.js";
7
7
  import { runInitHost } from "./init-host.js";
8
8
  import { runWorkflow } from "./run.js";
9
9
  import { runDashboard } from "./dashboard.js";
10
- import { startHub, startHubOneShot } from "./hub/index.js";
10
+ import { startHubOneShot } from "./hub/index.js";
11
11
  function getFlag(args, flag) {
12
12
  const index = args.indexOf(flag);
13
13
  if (index === -1)
@@ -19,7 +19,8 @@ async function main() {
19
19
  const command = args[0];
20
20
  // Mode hub interactif (défaut) - sans arguments ou avec 'hub'
21
21
  if (!command || command === "hub") {
22
- await startHub({ cwd: process.cwd() });
22
+ const { startTUI } = await import("./tui/index.js");
23
+ startTUI();
23
24
  return;
24
25
  }
25
26
  // Mode one-shot
package/dist/bin.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":"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"}
@@ -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"}
@@ -0,0 +1,14 @@
1
+ interface Message {
2
+ id: string;
3
+ type: "user" | "system" | "agent" | "error" | "success";
4
+ content: string;
5
+ timestamp: Date;
6
+ agent?: string;
7
+ }
8
+ interface ChatPanelProps {
9
+ messages: Message[];
10
+ isProcessing: boolean;
11
+ }
12
+ export declare function ChatPanel({ messages, isProcessing }: ChatPanelProps): import("react/jsx-runtime").JSX.Element;
13
+ export {};
14
+ //# sourceMappingURL=ChatPanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatPanel.d.ts","sourceRoot":"","sources":["../../../src/tui/components/ChatPanel.tsx"],"names":[],"mappings":"AAGA,UAAU,OAAO;IACf,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,CAAC;IACxD,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,cAAc;IACtB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,YAAY,EAAE,OAAO,CAAC;CACvB;AAuCD,wBAAgB,SAAS,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE,cAAc,2CAyBnE"}
@@ -0,0 +1,30 @@
1
+ import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
+ import { Box, Text } from "ink";
3
+ function formatTime(date) {
4
+ return date.toLocaleTimeString("fr-FR", {
5
+ hour: "2-digit",
6
+ minute: "2-digit",
7
+ second: "2-digit",
8
+ });
9
+ }
10
+ function MessageItem({ message }) {
11
+ const typeColors = {
12
+ user: "cyan",
13
+ system: "gray",
14
+ agent: "#f97316",
15
+ error: "red",
16
+ success: "green",
17
+ };
18
+ const typeLabels = {
19
+ user: "YOU",
20
+ system: "SYS",
21
+ agent: message.agent || "AGENT",
22
+ error: "ERR",
23
+ success: "OK",
24
+ };
25
+ return (_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsxs(Box, { flexDirection: "row", children: [_jsxs(Text, { color: "gray", dimColor: true, children: ["[", formatTime(message.timestamp), "]"] }), _jsxs(Text, { color: typeColors[message.type], bold: true, children: [" [", typeLabels[message.type], "]"] }), message.agent && _jsxs(Text, { color: "gray", children: [" [", message.agent, "]"] })] }), _jsx(Text, { color: "white", children: message.content })] }));
26
+ }
27
+ export function ChatPanel({ messages, isProcessing }) {
28
+ return (_jsxs(Box, { flexDirection: "column", flexGrow: 2, borderStyle: "single", borderColor: "gray", paddingX: 1, children: [_jsxs(Box, { borderStyle: "single", borderColor: "#f97316", marginBottom: 1, children: [_jsx(Text, { color: "#f97316", bold: true, children: "CHAT" }), _jsx(Text, { color: "gray", children: " \u2014 Tapez /help pour les commandes" })] }), _jsxs(Box, { flexDirection: "column", flexGrow: 1, overflow: "hidden", children: [messages.slice(-15).map((msg) => (_jsx(MessageItem, { message: msg }, msg.id))), isProcessing && (_jsx(Box, { children: _jsx(Text, { color: "yellow", children: "\u25CF Processing..." }) }))] })] }));
29
+ }
30
+ //# sourceMappingURL=ChatPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatPanel.js","sourceRoot":"","sources":["../../../src/tui/components/ChatPanel.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAY,MAAM,KAAK,CAAC;AAe1C,SAAS,UAAU,CAAC,IAAU;IAC5B,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE;QACtC,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,SAAS;KAClB,CAAC,CAAC;AACL,CAAC;AAED,SAAS,WAAW,CAAC,EAAE,OAAO,EAAsC;IAClE,MAAM,UAAU,GAA2B;QACzC,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,MAAM;QACd,KAAK,EAAE,SAAS;QAChB,KAAK,EAAE,KAAK;QACZ,OAAO,EAAE,OAAO;KACjB,CAAC;IAEF,MAAM,UAAU,GAA2B;QACzC,IAAI,EAAE,KAAK;QACX,MAAM,EAAE,KAAK;QACb,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,OAAO;QAC/B,KAAK,EAAE,KAAK;QACZ,OAAO,EAAE,IAAI;KACd,CAAC;IAEF,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,YAAY,EAAE,CAAC,aACzC,MAAC,GAAG,IAAC,aAAa,EAAC,KAAK,aACtB,MAAC,IAAI,IAAC,KAAK,EAAC,MAAM,EAAC,QAAQ,wBAAG,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EACpE,MAAC,IAAI,IAAC,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,yBAAI,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAC/E,OAAO,CAAC,KAAK,IAAI,MAAC,IAAI,IAAC,KAAK,EAAC,MAAM,mBAAI,OAAO,CAAC,KAAK,SAAS,IAC1D,EACN,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,YAAE,OAAO,CAAC,OAAO,GAAQ,IACxC,CACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAkB;IAClE,OAAO,CACL,MAAC,GAAG,IACF,aAAa,EAAC,QAAQ,EACtB,QAAQ,EAAE,CAAC,EACX,WAAW,EAAC,QAAQ,EACpB,WAAW,EAAC,MAAM,EAClB,QAAQ,EAAE,CAAC,aAEX,MAAC,GAAG,IAAC,WAAW,EAAC,QAAQ,EAAC,WAAW,EAAC,SAAS,EAAC,YAAY,EAAE,CAAC,aAC7D,KAAC,IAAI,IAAC,KAAK,EAAC,SAAS,EAAC,IAAI,2BAAY,EACtC,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,uDAAyC,IACvD,EACN,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAC,QAAQ,aACvD,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAChC,KAAC,WAAW,IAAc,OAAO,EAAE,GAAG,IAApB,GAAG,CAAC,EAAE,CAAkB,CAC3C,CAAC,EACD,YAAY,IAAI,CACf,KAAC,GAAG,cACF,KAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,qCAAuB,GACvC,CACP,IACG,IACF,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,9 @@
1
+ interface HeaderProps {
2
+ projectName: string;
3
+ agentCount: number;
4
+ provider: string;
5
+ status: "ready" | "running" | "error";
6
+ }
7
+ export declare function Header({ projectName, agentCount, provider, status }: HeaderProps): import("react/jsx-runtime").JSX.Element;
8
+ export {};
9
+ //# sourceMappingURL=Header.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Header.d.ts","sourceRoot":"","sources":["../../../src/tui/components/Header.tsx"],"names":[],"mappings":"AAGA,UAAU,WAAW;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;CACvC;AAED,wBAAgB,MAAM,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,WAAW,2CA0ChF"}
@@ -0,0 +1,17 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box, Text } from "ink";
3
+ export function Header({ projectName, agentCount, provider, status }) {
4
+ const statusColors = {
5
+ ready: "green",
6
+ running: "yellow",
7
+ error: "red",
8
+ };
9
+ const statusText = {
10
+ ready: "READY",
11
+ running: "RUNNING",
12
+ error: "ERROR",
13
+ };
14
+ const statusIcon = status === "running" ? "▶" : status === "error" ? "✗" : "●";
15
+ return (_jsxs(Box, { flexDirection: "row", justifyContent: "space-between", alignItems: "center", paddingX: 1, borderStyle: "single", borderColor: "gray", width: "100%", children: [_jsxs(Box, { flexDirection: "row", alignItems: "center", children: [_jsx(Text, { color: "#f97316", bold: true, children: "\u25A0" }), _jsx(Text, { color: "white", bold: true, children: " RAX-FLOW" }), _jsx(Text, { color: "gray", children: " HUB" })] }), _jsxs(Box, { flexDirection: "row", alignItems: "center", gap: 2, children: [_jsx(Text, { color: "gray", children: "Project:" }), _jsx(Text, { color: "cyan", children: projectName }), _jsx(Text, { color: "gray", children: "\u2502" }), _jsx(Text, { color: "gray", children: "Agents:" }), _jsxs(Text, { color: "green", children: [agentCount, "/12"] }), _jsx(Text, { color: "gray", children: "\u2502" }), _jsxs(Text, { color: "gray", children: ["[", provider, "]"] }), _jsxs(Text, { color: statusColors[status], children: [" ", statusIcon, " ", statusText[status]] })] })] }));
16
+ }
17
+ //# sourceMappingURL=Header.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Header.js","sourceRoot":"","sources":["../../../src/tui/components/Header.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAShC,MAAM,UAAU,MAAM,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAe;IAC/E,MAAM,YAAY,GAAG;QACnB,KAAK,EAAE,OAAO;QACd,OAAO,EAAE,QAAQ;QACjB,KAAK,EAAE,KAAK;KACb,CAAC;IAEF,MAAM,UAAU,GAAG;QACjB,KAAK,EAAE,OAAO;QACd,OAAO,EAAE,SAAS;QAClB,KAAK,EAAE,OAAO;KACf,CAAC;IAEF,MAAM,UAAU,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IAE/E,OAAO,CACL,MAAC,GAAG,IACF,aAAa,EAAC,KAAK,EACnB,cAAc,EAAC,eAAe,EAC9B,UAAU,EAAC,QAAQ,EACnB,QAAQ,EAAE,CAAC,EACX,WAAW,EAAC,QAAQ,EACpB,WAAW,EAAC,MAAM,EAClB,KAAK,EAAC,MAAM,aAEZ,MAAC,GAAG,IAAC,aAAa,EAAC,KAAK,EAAC,UAAU,EAAC,QAAQ,aAC1C,KAAC,IAAI,IAAC,KAAK,EAAC,SAAS,EAAC,IAAI,6BAAS,EACnC,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,EAAC,IAAI,gCAAiB,EACzC,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,qBAAY,IAC1B,EACN,MAAC,GAAG,IAAC,aAAa,EAAC,KAAK,EAAC,UAAU,EAAC,QAAQ,EAAC,GAAG,EAAE,CAAC,aACjD,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,yBAAgB,EAClC,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,YAAE,WAAW,GAAQ,EACvC,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,uBAAS,EAC3B,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,wBAAe,EACjC,MAAC,IAAI,IAAC,KAAK,EAAC,OAAO,aAAE,UAAU,WAAW,EAC1C,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,uBAAS,EAC3B,MAAC,IAAI,IAAC,KAAK,EAAC,MAAM,kBAAG,QAAQ,SAAS,EACtC,MAAC,IAAI,IAAC,KAAK,EAAE,YAAY,CAAC,MAAM,CAAC,kBAAI,UAAU,OAAG,UAAU,CAAC,MAAM,CAAC,IAAQ,IACxE,IACF,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,8 @@
1
+ interface InputBarProps {
2
+ onSubmit: (input: string) => void;
3
+ suggestions: string[];
4
+ isProcessing: boolean;
5
+ }
6
+ export declare function InputBar({ onSubmit, suggestions, isProcessing }: InputBarProps): import("react/jsx-runtime").JSX.Element;
7
+ export {};
8
+ //# sourceMappingURL=InputBar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InputBar.d.ts","sourceRoot":"","sources":["../../../src/tui/components/InputBar.tsx"],"names":[],"mappings":"AAIA,UAAU,aAAa;IACrB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,wBAAgB,QAAQ,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,EAAE,aAAa,2CA4C9E"}
@@ -0,0 +1,16 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState } from "react";
3
+ import { Box, Text } from "ink";
4
+ import TextInput from "ink-text-input";
5
+ export function InputBar({ onSubmit, suggestions, isProcessing }) {
6
+ const [input, setInput] = useState("");
7
+ const handleSubmit = (value) => {
8
+ if (value.trim()) {
9
+ onSubmit(value);
10
+ setInput("");
11
+ }
12
+ };
13
+ const filteredSuggestions = suggestions.filter((s) => s.toLowerCase().startsWith(input.toLowerCase())).slice(0, 5);
14
+ return (_jsxs(Box, { flexDirection: "column", borderStyle: "single", borderColor: "gray", paddingX: 1, children: [input.startsWith("/") && filteredSuggestions.length > 0 && (_jsx(Box, { flexDirection: "row", marginBottom: 1, children: filteredSuggestions.map((s) => (_jsx(Box, { marginRight: 2, children: _jsx(Text, { color: "cyan", children: s }) }, s))) })), _jsxs(Box, { flexDirection: "row", alignItems: "center", children: [_jsx(Text, { color: "#f97316", bold: true, children: "\u25B6" }), _jsx(Box, { marginLeft: 1, flexGrow: 1, children: _jsx(TextInput, { value: input, onChange: setInput, onSubmit: handleSubmit, placeholder: "Tapez /help ou votre prompt...", showCursor: true }) }), isProcessing && _jsx(Text, { color: "yellow", children: " \u25CF" })] }), _jsxs(Box, { flexDirection: "row", marginTop: 1, children: [_jsx(Text, { color: "gray", dimColor: true, children: "[Ctrl+C] Quitter" }), _jsx(Text, { color: "gray", dimColor: true, children: " \u2502 [/cmd] Commandes" })] })] }));
15
+ }
16
+ //# sourceMappingURL=InputBar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InputBar.js","sourceRoot":"","sources":["../../../src/tui/components/InputBar.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAY,MAAM,KAAK,CAAC;AAC1C,OAAO,SAAS,MAAM,gBAAgB,CAAC;AAQvC,MAAM,UAAU,QAAQ,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAiB;IAC7E,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IAEvC,MAAM,YAAY,GAAG,CAAC,KAAa,EAAE,EAAE;QACrC,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;YACjB,QAAQ,CAAC,KAAK,CAAC,CAAC;YAChB,QAAQ,CAAC,EAAE,CAAC,CAAC;QACf,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,mBAAmB,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CACnD,CAAC,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAChD,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAEd,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,WAAW,EAAC,QAAQ,EAAC,WAAW,EAAC,MAAM,EAAC,QAAQ,EAAE,CAAC,aAC5E,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,mBAAmB,CAAC,MAAM,GAAG,CAAC,IAAI,CAC1D,KAAC,GAAG,IAAC,aAAa,EAAC,KAAK,EAAC,YAAY,EAAE,CAAC,YACrC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAC9B,KAAC,GAAG,IAAS,WAAW,EAAE,CAAC,YACzB,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,YAAE,CAAC,GAAQ,IADrB,CAAC,CAEL,CACP,CAAC,GACE,CACP,EACD,MAAC,GAAG,IAAC,aAAa,EAAC,KAAK,EAAC,UAAU,EAAC,QAAQ,aAC1C,KAAC,IAAI,IAAC,KAAK,EAAC,SAAS,EAAC,IAAI,6BAAS,EACnC,KAAC,GAAG,IAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,YAC7B,KAAC,SAAS,IACR,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,YAAY,EACtB,WAAW,EAAC,gCAAgC,EAC5C,UAAU,EAAE,IAAI,GAChB,GACE,EACL,YAAY,IAAI,KAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,wBAAU,IAC3C,EACN,MAAC,GAAG,IAAC,aAAa,EAAC,KAAK,EAAC,SAAS,EAAE,CAAC,aACnC,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,EAAC,QAAQ,uCAAwB,EACnD,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,EAAC,QAAQ,+CAA2B,IAClD,IACF,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,20 @@
1
+ interface Agent {
2
+ name: string;
3
+ role: string;
4
+ status: "idle" | "running" | "queued" | "done";
5
+ provider: string;
6
+ }
7
+ interface Provider {
8
+ name: string;
9
+ status: "active" | "idle";
10
+ latency: number;
11
+ }
12
+ interface StatusPanelProps {
13
+ agents: Agent[];
14
+ providers: Provider[];
15
+ fitness: number;
16
+ currentWorkflow: string | null;
17
+ }
18
+ export declare function StatusPanel({ agents, providers, fitness, currentWorkflow }: StatusPanelProps): import("react/jsx-runtime").JSX.Element;
19
+ export {};
20
+ //# sourceMappingURL=StatusPanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StatusPanel.d.ts","sourceRoot":"","sources":["../../../src/tui/components/StatusPanel.tsx"],"names":[],"mappings":"AAGA,UAAU,KAAK;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC/C,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,QAAQ;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,gBAAgB;IACxB,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAgCD,wBAAgB,WAAW,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,eAAe,EAAE,EAAE,gBAAgB,2CA+B5F"}
@@ -0,0 +1,20 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box, Text } from "ink";
3
+ const statusIcons = {
4
+ idle: { icon: "○", color: "gray" },
5
+ running: { icon: "▶", color: "yellow" },
6
+ queued: { icon: "◐", color: "cyan" },
7
+ done: { icon: "●", color: "green" },
8
+ };
9
+ function AgentRow({ agent, key }) {
10
+ const { icon, color } = statusIcons[agent.status];
11
+ return (_jsxs(Box, { flexDirection: "row", justifyContent: "space-between", children: [_jsx(Text, { color: color, children: icon }), _jsx(Text, { color: "white", children: agent.name.slice(0, 12).padEnd(12) }), _jsxs(Text, { color: "gray", children: ["[", agent.provider, "]"] })] }, key));
12
+ }
13
+ function ProviderRow({ provider, key }) {
14
+ return (_jsxs(Box, { flexDirection: "row", justifyContent: "space-between", children: [_jsx(Text, { color: provider.status === "active" ? "green" : "gray", children: provider.status === "active" ? "●" : "○" }), _jsx(Text, { color: "white", children: provider.name }), _jsx(Text, { color: "gray", children: provider.latency > 0 ? `${provider.latency}ms` : "--" })] }, key));
15
+ }
16
+ export function StatusPanel({ agents, providers, fitness, currentWorkflow }) {
17
+ const fitnessColor = fitness >= 0.9 ? "green" : fitness >= 0.7 ? "yellow" : "red";
18
+ return (_jsxs(Box, { flexDirection: "column", width: 35, borderStyle: "single", borderColor: "gray", children: [_jsx(Box, { borderStyle: "single", borderColor: "#f97316", marginBottom: 1, children: _jsx(Text, { color: "#f97316", bold: true, children: "STATUS" }) }), _jsxs(Box, { flexDirection: "column", paddingX: 1, children: [_jsx(Text, { color: "gray", bold: true, children: "WORKFLOW" }), _jsx(Text, { color: "white", children: currentWorkflow || "Aucun" }), _jsx(Text, { color: "gray", children: "Fitness: " }), _jsx(Text, { color: fitnessColor, bold: true, children: fitness.toFixed(2) })] }), _jsxs(Box, { flexDirection: "column", paddingX: 1, marginTop: 1, children: [_jsx(Text, { color: "gray", bold: true, children: "AGENTS" }), agents.slice(0, 6).map((agent) => (_jsx(AgentRow, { agent: agent }, agent.name)))] }), _jsxs(Box, { flexDirection: "column", paddingX: 1, marginTop: 1, children: [_jsx(Text, { color: "gray", bold: true, children: "PROVIDERS" }), providers.map((provider) => (_jsx(ProviderRow, { provider: provider }, provider.name)))] })] }));
19
+ }
20
+ //# sourceMappingURL=StatusPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StatusPanel.js","sourceRoot":"","sources":["../../../src/tui/components/StatusPanel.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ interface Message {
2
+ id: string;
3
+ type: "user" | "system" | "agent" | "error" | "success";
4
+ content: string;
5
+ timestamp: Date;
6
+ agent?: string;
7
+ }
8
+ interface Agent {
9
+ name: string;
10
+ role: string;
11
+ status: "idle" | "running" | "queued" | "done";
12
+ provider: string;
13
+ }
14
+ interface Provider {
15
+ name: string;
16
+ status: "active" | "idle";
17
+ latency: number;
18
+ }
19
+ interface AppState {
20
+ projectName: string;
21
+ agentCount: number;
22
+ provider: string;
23
+ status: "ready" | "running" | "error";
24
+ messages: Message[];
25
+ agents: Agent[];
26
+ providers: Provider[];
27
+ fitness: number;
28
+ currentWorkflow: string | null;
29
+ suggestions: string[];
30
+ isProcessing: boolean;
31
+ }
32
+ export declare function useAppState(): {
33
+ state: AppState;
34
+ dispatch: import("react").Dispatch<import("react").SetStateAction<AppState>>;
35
+ processCommand: (input: string) => void;
36
+ };
37
+ export {};
38
+ //# sourceMappingURL=useAppState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAppState.d.ts","sourceRoot":"","sources":["../../../src/tui/hooks/useAppState.ts"],"names":[],"mappings":"AAEA,UAAU,OAAO;IACf,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,CAAC;IACxD,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,KAAK;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC/C,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,QAAQ;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,QAAQ;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;IACtC,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,YAAY,EAAE,OAAO,CAAC;CACvB;AA6BD,wBAAgB,WAAW;;;4BAgCkB,MAAM;EAuElD"}
@@ -0,0 +1,127 @@
1
+ import { useState, useCallback } from "react";
2
+ const COMMAND_SUGGESTIONS = [
3
+ "/run", "/status", "/agents", "/providers", "/workflows",
4
+ "/logs", "/metrics", "/memory", "/help", "/exit",
5
+ ];
6
+ const DEFAULT_AGENTS = [
7
+ { name: "IntentClassifier", role: "Classify intent", status: "idle", provider: "H" },
8
+ { name: "TaskPlanner", role: "Decompose tasks", status: "idle", provider: "H" },
9
+ { name: "SpecAgent", role: "Write specs", status: "idle", provider: "H" },
10
+ { name: "CodeGenerator", role: "Generate code", status: "idle", provider: "H" },
11
+ { name: "TestAgent", role: "Run tests", status: "idle", provider: "H" },
12
+ { name: "FixAgent", role: "Fix issues", status: "idle", provider: "H" },
13
+ { name: "MutationAgent", role: "Evolve workflow", status: "idle", provider: "H" },
14
+ { name: "ValidatorAgent", role: "Validate outputs", status: "idle", provider: "H" },
15
+ ];
16
+ const DEFAULT_PROVIDERS = [
17
+ { name: "Host-Native", status: "active", latency: 12 },
18
+ { name: "Claude Code", status: "active", latency: 8 },
19
+ { name: "OpenCode", status: "idle", latency: 0 },
20
+ { name: "Anthropic", status: "idle", latency: 0 },
21
+ ];
22
+ function generateId() {
23
+ return Math.random().toString(36).slice(2, 9);
24
+ }
25
+ export function useAppState() {
26
+ const [state, setState] = useState({
27
+ projectName: process.cwd().split("/").pop() || "project",
28
+ agentCount: 12,
29
+ provider: "HOST-NATIVE",
30
+ status: "ready",
31
+ messages: [
32
+ {
33
+ id: generateId(),
34
+ type: "system",
35
+ content: "■ RAX-FLOW HUB prêt. Tapez votre prompt ou /help pour les commandes.",
36
+ timestamp: new Date(),
37
+ },
38
+ ],
39
+ agents: DEFAULT_AGENTS,
40
+ providers: DEFAULT_PROVIDERS,
41
+ fitness: 0.87,
42
+ currentWorkflow: null,
43
+ suggestions: COMMAND_SUGGESTIONS,
44
+ isProcessing: false,
45
+ });
46
+ const addMessage = useCallback((type, content, agent) => {
47
+ setState((prev) => ({
48
+ ...prev,
49
+ messages: [
50
+ ...prev.messages,
51
+ { id: generateId(), type, content, timestamp: new Date(), agent },
52
+ ],
53
+ }));
54
+ }, []);
55
+ const processCommand = useCallback((input) => {
56
+ if (input.startsWith("/")) {
57
+ const cmd = input.slice(1).toLowerCase();
58
+ switch (cmd) {
59
+ case "help":
60
+ addMessage("system", `Commandes: /run /status /agents /providers /workflows /logs /metrics /memory /exit`);
61
+ break;
62
+ case "status":
63
+ addMessage("system", `Orchestrator: ● ACTIVE | Fitness: ${state.fitness.toFixed(2)} | Agents: ${state.agents.filter((a) => a.status !== "idle").length}/8 actifs`);
64
+ break;
65
+ case "agents":
66
+ const agentList = state.agents.map((a) => `${a.status === "running" ? "▶" : "○"} ${a.name} [${a.provider}]`).join("\n");
67
+ addMessage("system", agentList);
68
+ break;
69
+ case "providers":
70
+ const providerList = state.providers.map((p) => `${p.status === "active" ? "●" : "○"} ${p.name} ${p.latency > 0 ? `(${p.latency}ms)` : ""}`).join("\n");
71
+ addMessage("system", providerList);
72
+ break;
73
+ case "exit":
74
+ case "quit":
75
+ addMessage("system", "À bientôt !");
76
+ break;
77
+ default:
78
+ if (cmd.startsWith("run ")) {
79
+ const prompt = cmd.slice(4);
80
+ setState((prev) => ({ ...prev, status: "running", isProcessing: true }));
81
+ addMessage("user", prompt);
82
+ addMessage("agent", "Analyse de l'intent...", "IntentClassifier");
83
+ setTimeout(() => {
84
+ addMessage("agent", `Intent détecté: code_generation`, "IntentClassifier");
85
+ addMessage("agent", "Décomposition en tâches...", "TaskPlanner");
86
+ setState((prev) => ({
87
+ ...prev,
88
+ status: "ready",
89
+ isProcessing: false,
90
+ fitness: Math.min(prev.fitness + 0.02, 0.99),
91
+ currentWorkflow: prompt,
92
+ agents: prev.agents.map((a, i) => ({
93
+ ...a,
94
+ status: i === 0 ? "done" : i === 1 ? "running" : "idle",
95
+ })),
96
+ }));
97
+ }, 1500);
98
+ }
99
+ else {
100
+ addMessage("error", `Commande inconnue: /${cmd}. Tapez /help pour l'aide.`);
101
+ }
102
+ }
103
+ }
104
+ else {
105
+ setState((prev) => ({ ...prev, status: "running", isProcessing: true }));
106
+ addMessage("user", input);
107
+ addMessage("agent", "Analyse de l'intent...", "IntentClassifier");
108
+ setTimeout(() => {
109
+ addMessage("agent", `Intent détecté: code_generation`, "IntentClassifier");
110
+ addMessage("agent", "Exécution du workflow...", "Orchestrator");
111
+ setState((prev) => ({
112
+ ...prev,
113
+ status: "ready",
114
+ isProcessing: false,
115
+ fitness: Math.min(prev.fitness + 0.01, 0.99),
116
+ currentWorkflow: input,
117
+ }));
118
+ }, 2000);
119
+ }
120
+ }, [state, addMessage]);
121
+ return {
122
+ state,
123
+ dispatch: setState,
124
+ processCommand,
125
+ };
126
+ }
127
+ //# sourceMappingURL=useAppState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAppState.js","sourceRoot":"","sources":["../../../src/tui/hooks/useAppState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAqC9C,MAAM,mBAAmB,GAAG;IAC1B,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY;IACxD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO;CACjD,CAAC;AAEF,MAAM,cAAc,GAAY;IAC9B,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE;IACpF,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE;IAC/E,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE;IACzE,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE;IAC/E,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE;IACvE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE;IACvE,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE;IACjF,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE;CACpF,CAAC;AAEF,MAAM,iBAAiB,GAAe;IACpC,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE;IACtD,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE;IACrD,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE;IAChD,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE;CAClD,CAAC;AAEF,SAAS,UAAU;IACjB,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAW;QAC3C,WAAW,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,SAAS;QACxD,UAAU,EAAE,EAAE;QACd,QAAQ,EAAE,aAAa;QACvB,MAAM,EAAE,OAAO;QACf,QAAQ,EAAE;YACR;gBACE,EAAE,EAAE,UAAU,EAAE;gBAChB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,sEAAsE;gBAC/E,SAAS,EAAE,IAAI,IAAI,EAAE;aACtB;SACF;QACD,MAAM,EAAE,cAAc;QACtB,SAAS,EAAE,iBAAiB;QAC5B,OAAO,EAAE,IAAI;QACb,eAAe,EAAE,IAAI;QACrB,WAAW,EAAE,mBAAmB;QAChC,YAAY,EAAE,KAAK;KACpB,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,IAAqB,EAAE,OAAe,EAAE,KAAc,EAAE,EAAE;QACxF,QAAQ,CAAC,CAAC,IAAc,EAAE,EAAE,CAAC,CAAC;YAC5B,GAAG,IAAI;YACP,QAAQ,EAAE;gBACR,GAAG,IAAI,CAAC,QAAQ;gBAChB,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,EAAE,KAAK,EAAE;aAClE;SACF,CAAC,CAAC,CAAC;IACN,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,cAAc,GAAG,WAAW,CAAC,CAAC,KAAa,EAAE,EAAE;QACnD,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;YAEzC,QAAQ,GAAG,EAAE,CAAC;gBACZ,KAAK,MAAM;oBACT,UAAU,CAAC,QAAQ,EAAE,oFAAoF,CAAC,CAAC;oBAC3G,MAAM;gBACR,KAAK,QAAQ;oBACX,UAAU,CAAC,QAAQ,EAAE,qCAAqC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,MAAM,WAAW,CAAC,CAAC;oBAC1K,MAAM;gBACR,KAAK,QAAQ;oBACX,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC/H,UAAU,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;oBAChC,MAAM;gBACR,KAAK,WAAW;oBACd,MAAM,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAW,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAClK,UAAU,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;oBACnC,MAAM;gBACR,KAAK,MAAM,CAAC;gBACZ,KAAK,MAAM;oBACT,UAAU,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;oBACpC,MAAM;gBACR;oBACE,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;wBAC3B,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;wBAC5B,QAAQ,CAAC,CAAC,IAAc,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;wBACnF,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;wBAC3B,UAAU,CAAC,OAAO,EAAE,wBAAwB,EAAE,kBAAkB,CAAC,CAAC;wBAClE,UAAU,CAAC,GAAG,EAAE;4BACd,UAAU,CAAC,OAAO,EAAE,iCAAiC,EAAE,kBAAkB,CAAC,CAAC;4BAC3E,UAAU,CAAC,OAAO,EAAE,4BAA4B,EAAE,aAAa,CAAC,CAAC;4BACjE,QAAQ,CAAC,CAAC,IAAc,EAAE,EAAE,CAAC,CAAC;gCAC5B,GAAG,IAAI;gCACP,MAAM,EAAE,OAAO;gCACf,YAAY,EAAE,KAAK;gCACnB,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,IAAI,CAAC;gCAC5C,eAAe,EAAE,MAAM;gCACvB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAQ,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC;oCAChD,GAAG,CAAC;oCACJ,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAe,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAkB,CAAC,CAAC,CAAC,MAAe;iCACnF,CAAC,CAAC;6BACJ,CAAC,CAAC,CAAC;wBACN,CAAC,EAAE,IAAI,CAAC,CAAC;oBACX,CAAC;yBAAM,CAAC;wBACN,UAAU,CAAC,OAAO,EAAE,uBAAuB,GAAG,4BAA4B,CAAC,CAAC;oBAC9E,CAAC;YACL,CAAC;QACH,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,CAAC,IAAc,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YACnF,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAC1B,UAAU,CAAC,OAAO,EAAE,wBAAwB,EAAE,kBAAkB,CAAC,CAAC;YAClE,UAAU,CAAC,GAAG,EAAE;gBACd,UAAU,CAAC,OAAO,EAAE,iCAAiC,EAAE,kBAAkB,CAAC,CAAC;gBAC3E,UAAU,CAAC,OAAO,EAAE,0BAA0B,EAAE,cAAc,CAAC,CAAC;gBAChE,QAAQ,CAAC,CAAC,IAAc,EAAE,EAAE,CAAC,CAAC;oBAC5B,GAAG,IAAI;oBACP,MAAM,EAAE,OAAO;oBACf,YAAY,EAAE,KAAK;oBACnB,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,IAAI,CAAC;oBAC5C,eAAe,EAAE,KAAK;iBACvB,CAAC,CAAC,CAAC;YACN,CAAC,EAAE,IAAI,CAAC,CAAC;QACX,CAAC;IACH,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC;IAExB,OAAO;QACL,KAAK;QACL,QAAQ,EAAE,QAAQ;QAClB,cAAc;KACf,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare function startTUI(): import("ink").Instance;
2
+ export { App } from "./App.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tui/index.ts"],"names":[],"mappings":"AAIA,wBAAgB,QAAQ,2BAEvB;AAED,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { render } from "ink";
2
+ import React from "react";
3
+ import { App } from "./App.js";
4
+ export function startTUI() {
5
+ return render(React.createElement(App));
6
+ }
7
+ export { App } from "./App.js";
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tui/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE/B,MAAM,UAAU,QAAQ;IACtB,OAAO,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1C,CAAC;AAED,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rax-flow",
3
- "version": "0.1.6",
3
+ "version": "0.1.7",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -8,15 +8,21 @@
8
8
  "rax-flow": "dist/bin.js"
9
9
  },
10
10
  "dependencies": {
11
+ "ink": "^6.8.0",
12
+ "ink-box": "^2.0.0",
13
+ "ink-spinner": "^5.0.0",
14
+ "ink-text-input": "^6.0.0",
11
15
  "rax-flow-agents": "0.1.5",
12
16
  "rax-flow-core": "0.1.4",
13
17
  "rax-flow-providers": "0.1.4",
18
+ "react": "19.2.3",
14
19
  "ws": "^8.19.0"
15
20
  },
16
21
  "publishConfig": {
17
22
  "access": "public"
18
23
  },
19
24
  "devDependencies": {
25
+ "@types/react": "^19.2.14",
20
26
  "@types/ws": "^8.18.1"
21
27
  },
22
28
  "scripts": {
package/src/bin.ts CHANGED
@@ -7,7 +7,7 @@ import { runDoctor } from "./doctor.js";
7
7
  import { runInitHost } from "./init-host.js";
8
8
  import { runWorkflow } from "./run.js";
9
9
  import { runDashboard } from "./dashboard.js";
10
- import { startHub, startHubOneShot } from "./hub/index.js";
10
+ import { startHubOneShot } from "./hub/index.js";
11
11
 
12
12
  function getFlag(args: string[], flag: string): string | undefined {
13
13
  const index = args.indexOf(flag);
@@ -21,7 +21,8 @@ async function main() {
21
21
 
22
22
  // Mode hub interactif (défaut) - sans arguments ou avec 'hub'
23
23
  if (!command || command === "hub") {
24
- await startHub({ cwd: process.cwd() });
24
+ const { startTUI } = await import("./tui/index.js");
25
+ startTUI();
25
26
  return;
26
27
  }
27
28
 
@@ -0,0 +1,61 @@
1
+ import React from "react";
2
+ import { Box, Text, 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
+
9
+ export function App() {
10
+ const { exit } = useApp();
11
+ const { state, dispatch, processCommand } = useAppState();
12
+
13
+ useInput((input, key) => {
14
+ if (key.ctrl && input === "c") {
15
+ exit();
16
+ }
17
+ if (key.ctrl && input === "d") {
18
+ exit();
19
+ }
20
+ });
21
+
22
+ const handleSubmit = (input: string) => {
23
+ const trimmed = input.trim();
24
+ if (!trimmed) return;
25
+
26
+ if (trimmed === "exit" || trimmed === "quit") {
27
+ exit();
28
+ return;
29
+ }
30
+
31
+ processCommand(trimmed);
32
+ };
33
+
34
+ return (
35
+ <Box flexDirection="column" height="100%" width="100%">
36
+ <Header
37
+ projectName={state.projectName}
38
+ agentCount={state.agentCount}
39
+ provider={state.provider}
40
+ status={state.status}
41
+ />
42
+ <Box flexGrow={1} flexDirection="row" width="100%">
43
+ <ChatPanel
44
+ messages={state.messages}
45
+ isProcessing={state.isProcessing}
46
+ />
47
+ <StatusPanel
48
+ agents={state.agents}
49
+ providers={state.providers}
50
+ fitness={state.fitness}
51
+ currentWorkflow={state.currentWorkflow}
52
+ />
53
+ </Box>
54
+ <InputBar
55
+ onSubmit={handleSubmit}
56
+ suggestions={state.suggestions}
57
+ isProcessing={state.isProcessing}
58
+ />
59
+ </Box>
60
+ );
61
+ }