@ranker/raxflow 0.2.1 → 0.2.3

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 (214) hide show
  1. package/dist/benchmark.d.ts +10 -0
  2. package/dist/bin.d.ts +3 -0
  3. package/dist/bootstrap.d.ts +8 -0
  4. package/dist/bridge-adapter-templates.d.ts +4 -0
  5. package/dist/bridge-test.d.ts +7 -0
  6. package/dist/dashboard.d.ts +4 -0
  7. package/dist/doctor.d.ts +6 -0
  8. package/dist/evolve.d.ts +7 -0
  9. package/dist/host-init-templates.d.ts +16 -0
  10. package/dist/hub/__tests__/commands.test.d.ts +2 -0
  11. package/dist/hub/__tests__/history.test.d.ts +2 -0
  12. package/dist/hub/__tests__/parser.test.d.ts +2 -0
  13. package/dist/hub/commands/agents.d.ts +3 -0
  14. package/dist/hub/commands/index.d.ts +4 -0
  15. package/dist/hub/commands/logs.d.ts +3 -0
  16. package/dist/hub/commands/memory.d.ts +3 -0
  17. package/dist/hub/commands/metrics.d.ts +3 -0
  18. package/dist/hub/commands/providers.d.ts +3 -0
  19. package/dist/hub/commands/run.d.ts +3 -0
  20. package/dist/hub/commands/status.d.ts +3 -0
  21. package/dist/hub/commands/workflows.d.ts +3 -0
  22. package/dist/hub/config-loader.d.ts +4 -0
  23. package/dist/hub/history.d.ts +13 -0
  24. package/dist/hub/index.d.ts +4 -0
  25. package/dist/hub/parser.d.ts +4 -0
  26. package/dist/hub/styles/borders.d.ts +23 -0
  27. package/dist/hub/styles/colors.d.ts +63 -0
  28. package/dist/hub/styles/typography.d.ts +34 -0
  29. package/dist/hub/types.d.ts +27 -0
  30. package/{src/index.ts → dist/index.d.ts} +1 -0
  31. package/dist/init-host.d.ts +10 -0
  32. package/dist/install.d.ts +8 -0
  33. package/dist/run.d.ts +16 -0
  34. package/dist/setup/components/ProviderSelector.d.ts.map +1 -1
  35. package/dist/setup/components/ProviderSelector.js +8 -7
  36. package/dist/setup/components/ProviderSelector.js.map +1 -1
  37. package/dist/styles.d.ts +12 -0
  38. package/dist/tui/App.d.ts.map +1 -1
  39. package/dist/tui/App.js +7 -2
  40. package/dist/tui/App.js.map +1 -1
  41. package/dist/tui/components/ChatPanel.d.ts +1 -0
  42. package/dist/tui/components/ChatPanel.d.ts.map +1 -1
  43. package/dist/tui/components/ChatPanel.js +4 -3
  44. package/dist/tui/components/ChatPanel.js.map +1 -1
  45. package/dist/tui/components/DAGPanel.d.ts +1 -0
  46. package/dist/tui/components/DAGPanel.d.ts.map +1 -1
  47. package/dist/tui/components/DAGPanel.js +4 -3
  48. package/dist/tui/components/DAGPanel.js.map +1 -1
  49. package/dist/tui/components/Header.d.ts.map +1 -1
  50. package/dist/tui/components/Header.js +1 -1
  51. package/dist/tui/components/Header.js.map +1 -1
  52. package/dist/tui/components/InputBar.d.ts.map +1 -1
  53. package/dist/tui/components/InputBar.js +1 -1
  54. package/dist/tui/components/InputBar.js.map +1 -1
  55. package/dist/tui/components/LogsPanel.d.ts +1 -0
  56. package/dist/tui/components/LogsPanel.d.ts.map +1 -1
  57. package/dist/tui/components/LogsPanel.js +4 -3
  58. package/dist/tui/components/LogsPanel.js.map +1 -1
  59. package/dist/tui/components/MemoryPanel.d.ts +1 -0
  60. package/dist/tui/components/MemoryPanel.d.ts.map +1 -1
  61. package/dist/tui/components/MemoryPanel.js +2 -2
  62. package/dist/tui/components/MemoryPanel.js.map +1 -1
  63. package/dist/tui/components/MetricsPanel.d.ts +1 -0
  64. package/dist/tui/components/MetricsPanel.d.ts.map +1 -1
  65. package/dist/tui/components/MetricsPanel.js +2 -2
  66. package/dist/tui/components/MetricsPanel.js.map +1 -1
  67. package/dist/tui/components/StatusPanel.d.ts +1 -0
  68. package/dist/tui/components/StatusPanel.d.ts.map +1 -1
  69. package/dist/tui/components/StatusPanel.js +4 -3
  70. package/dist/tui/components/StatusPanel.js.map +1 -1
  71. package/dist/vendor-manifests.d.ts +22 -0
  72. package/package.json +5 -1
  73. package/dashboard/index.html +0 -420
  74. package/dist/hub/chat/ChatApp.d.ts +0 -2
  75. package/dist/hub/chat/ChatApp.d.ts.map +0 -1
  76. package/dist/hub/chat/ChatApp.js +0 -146
  77. package/dist/hub/chat/ChatApp.js.map +0 -1
  78. package/dist/hub/chat/components/ChatInput.d.ts +0 -9
  79. package/dist/hub/chat/components/ChatInput.d.ts.map +0 -1
  80. package/dist/hub/chat/components/ChatInput.js +0 -19
  81. package/dist/hub/chat/components/ChatInput.js.map +0 -1
  82. package/dist/hub/chat/components/MessageList.d.ts +0 -7
  83. package/dist/hub/chat/components/MessageList.d.ts.map +0 -1
  84. package/dist/hub/chat/components/MessageList.js +0 -6
  85. package/dist/hub/chat/components/MessageList.js.map +0 -1
  86. package/dist/hub/chat/context.d.ts.map +0 -1
  87. package/dist/hub/chat/context.js +0 -42
  88. package/dist/hub/chat/context.js.map +0 -1
  89. package/dist/hub/chat/hooks/useChatHistory.d.ts +0 -7
  90. package/dist/hub/chat/hooks/useChatHistory.d.ts.map +0 -1
  91. package/dist/hub/chat/hooks/useChatHistory.js +0 -31
  92. package/dist/hub/chat/hooks/useChatHistory.js.map +0 -1
  93. package/dist/hub/chat/index.d.ts.map +0 -1
  94. package/dist/hub/chat/index.js +0 -7
  95. package/dist/hub/chat/index.js.map +0 -1
  96. package/dist/hub/chat/intent-parser.d.ts.map +0 -1
  97. package/dist/hub/chat/intent-parser.js +0 -48
  98. package/dist/hub/chat/intent-parser.js.map +0 -1
  99. package/dist/hub/chat/types.d.ts.map +0 -1
  100. package/dist/hub/chat/types.js +0 -2
  101. package/dist/hub/chat/types.js.map +0 -1
  102. package/dist/hub/tui/App.d.ts +0 -2
  103. package/dist/hub/tui/App.d.ts.map +0 -1
  104. package/dist/hub/tui/App.js +0 -53
  105. package/dist/hub/tui/App.js.map +0 -1
  106. package/dist/hub/tui/components/AgentQueue.d.ts +0 -6
  107. package/dist/hub/tui/components/AgentQueue.d.ts.map +0 -1
  108. package/dist/hub/tui/components/AgentQueue.js +0 -20
  109. package/dist/hub/tui/components/AgentQueue.js.map +0 -1
  110. package/dist/hub/tui/components/DAGPanel.d.ts +0 -16
  111. package/dist/hub/tui/components/DAGPanel.d.ts.map +0 -1
  112. package/dist/hub/tui/components/DAGPanel.js +0 -51
  113. package/dist/hub/tui/components/DAGPanel.js.map +0 -1
  114. package/dist/hub/tui/components/Header.d.ts +0 -7
  115. package/dist/hub/tui/components/Header.d.ts.map +0 -1
  116. package/dist/hub/tui/components/Header.js +0 -17
  117. package/dist/hub/tui/components/Header.js.map +0 -1
  118. package/dist/hub/tui/components/LogsPanel.d.ts +0 -6
  119. package/dist/hub/tui/components/LogsPanel.d.ts.map +0 -1
  120. package/dist/hub/tui/components/LogsPanel.js +0 -26
  121. package/dist/hub/tui/components/LogsPanel.js.map +0 -1
  122. package/dist/hub/tui/components/StatusBar.d.ts +0 -8
  123. package/dist/hub/tui/components/StatusBar.d.ts.map +0 -1
  124. package/dist/hub/tui/components/StatusBar.js +0 -7
  125. package/dist/hub/tui/components/StatusBar.js.map +0 -1
  126. package/dist/hub/tui/hooks/useEvents.d.ts +0 -2
  127. package/dist/hub/tui/hooks/useEvents.d.ts.map +0 -1
  128. package/dist/hub/tui/hooks/useEvents.js +0 -13
  129. package/dist/hub/tui/hooks/useEvents.js.map +0 -1
  130. package/dist/hub/tui/index.d.ts.map +0 -1
  131. package/dist/hub/tui/index.js +0 -7
  132. package/dist/hub/tui/index.js.map +0 -1
  133. package/dist/hub/tui/types.d.ts.map +0 -1
  134. package/dist/hub/tui/types.js +0 -2
  135. package/dist/hub/tui/types.js.map +0 -1
  136. package/src/benchmark.ts +0 -156
  137. package/src/bin.ts +0 -156
  138. package/src/bootstrap.ts +0 -36
  139. package/src/bridge-adapter-templates.ts +0 -181
  140. package/src/bridge-test.ts +0 -107
  141. package/src/dashboard.ts +0 -51
  142. package/src/doctor.ts +0 -92
  143. package/src/evolve.ts +0 -74
  144. package/src/host-init-templates.ts +0 -134
  145. package/src/hub/__tests__/commands.test.ts +0 -84
  146. package/src/hub/__tests__/history.test.ts +0 -137
  147. package/src/hub/__tests__/parser.test.ts +0 -105
  148. package/src/hub/commands/agents.ts +0 -53
  149. package/src/hub/commands/index.ts +0 -140
  150. package/src/hub/commands/logs.ts +0 -70
  151. package/src/hub/commands/memory.ts +0 -47
  152. package/src/hub/commands/metrics.ts +0 -49
  153. package/src/hub/commands/providers.ts +0 -39
  154. package/src/hub/commands/run.ts +0 -37
  155. package/src/hub/commands/status.ts +0 -69
  156. package/src/hub/commands/workflows.ts +0 -64
  157. package/src/hub/config-loader.ts +0 -37
  158. package/src/hub/event-listener.ts +0 -17
  159. package/src/hub/history.ts +0 -66
  160. package/src/hub/index.ts +0 -132
  161. package/src/hub/parser.ts +0 -107
  162. package/src/hub/styles/borders.ts +0 -74
  163. package/src/hub/styles/colors.ts +0 -129
  164. package/src/hub/styles/typography.ts +0 -68
  165. package/src/hub/types.ts +0 -31
  166. package/src/init-host.ts +0 -285
  167. package/src/install.ts +0 -118
  168. package/src/run.ts +0 -317
  169. package/src/setup/components/ApiKeyInput.tsx +0 -158
  170. package/src/setup/components/AsciiBanner.tsx +0 -125
  171. package/src/setup/components/CliDetector.tsx +0 -230
  172. package/src/setup/components/ModeSelector.tsx +0 -137
  173. package/src/setup/components/ProviderSelector.tsx +0 -174
  174. package/src/setup/components/SetupWizard.tsx +0 -368
  175. package/src/setup/components/StepIndicator.tsx +0 -74
  176. package/src/setup/components/SuccessScreen.tsx +0 -229
  177. package/src/setup/index.ts +0 -34
  178. package/src/setup/utils/cli-detection.ts +0 -99
  179. package/src/setup/utils/config-writer.ts +0 -249
  180. package/src/styles.ts +0 -12
  181. package/src/tui/App.tsx +0 -177
  182. package/src/tui/components/AgentStateIcon.tsx +0 -84
  183. package/src/tui/components/AnimatedBranch.tsx +0 -134
  184. package/src/tui/components/ChatPanel.tsx +0 -125
  185. package/src/tui/components/DAGPanel.tsx +0 -208
  186. package/src/tui/components/ExecutionTimeline.tsx +0 -225
  187. package/src/tui/components/Header.tsx +0 -109
  188. package/src/tui/components/HelpOverlay.tsx +0 -140
  189. package/src/tui/components/InputBar.tsx +0 -69
  190. package/src/tui/components/LogsPanel.tsx +0 -129
  191. package/src/tui/components/MemoryPanel.tsx +0 -163
  192. package/src/tui/components/MetricsPanel.tsx +0 -149
  193. package/src/tui/components/StatusPanel.tsx +0 -137
  194. package/src/tui/components/TaskTree.tsx +0 -159
  195. package/src/tui/components/animations/ProgressBar.tsx +0 -160
  196. package/src/tui/components/animations/Pulse.tsx +0 -73
  197. package/src/tui/components/animations/Spinner.tsx +0 -54
  198. package/src/tui/components/animations/StatusAnimator.tsx +0 -153
  199. package/src/tui/components/animations/TypingEffect.tsx +0 -119
  200. package/src/tui/components/animations/index.ts +0 -16
  201. package/src/tui/hooks/useAnimation.ts +0 -290
  202. package/src/tui/hooks/useAppState.ts +0 -403
  203. package/src/tui/index.ts +0 -9
  204. package/src/tui/services/orchestrator.ts +0 -195
  205. package/src/tui/styles/borders.ts +0 -51
  206. package/src/tui/styles/colors.ts +0 -19
  207. package/src/tui/styles/index.ts +0 -20
  208. package/src/tui/styles/indicators.ts +0 -54
  209. package/src/tui/styles/layout.ts +0 -44
  210. package/src/tui/styles/providers.ts +0 -32
  211. package/src/tui/utils/animation.ts +0 -124
  212. package/src/vendor-manifests.ts +0 -113
  213. package/src/ws-relay.ts +0 -156
  214. package/tsconfig.json +0 -28
@@ -1,140 +0,0 @@
1
- import { CommandDefinition } from "../types.js";
2
- import { showStatus } from "./status.js";
3
- import { listAgents } from "./agents.js";
4
- import { runWorkflow } from "./run.js";
5
- import { listProviders } from "./providers.js";
6
- import { listWorkflows } from "./workflows.js";
7
- import { showLogs } from "./logs.js";
8
- import { showMetrics } from "./metrics.js";
9
- import { showMemory } from "./memory.js";
10
- import { startTUI } from "../../tui/index.js";
11
-
12
- const commands = new Map<string, CommandDefinition>();
13
-
14
- export function registerCommand(def: CommandDefinition): void {
15
- commands.set(def.name, def);
16
- if (def.aliases) {
17
- for (const alias of def.aliases) {
18
- commands.set(alias, def);
19
- }
20
- }
21
- }
22
-
23
- export function getCommandRegistry(): Map<string, CommandDefinition> {
24
- return commands;
25
- }
26
-
27
- registerCommand({
28
- name: "help",
29
- aliases: ["?"],
30
- description: "Affiche l'aide",
31
- handler: async () => {
32
- console.log(`
33
- Commandes disponibles:
34
- • run <prompt> : Exécuter un workflow
35
- • status : Voir l'état du système
36
- • agents : Liste des agents
37
- • providers : État des providers
38
- • workflows : Blueprints disponibles
39
- • logs : Logs en temps réel
40
- • metrics : Métriques de performance
41
- • memory : Graph QSGM
42
- • dashboard : Ouvrir dashboard web
43
- • ui : Mode TUI plein écran
44
- • chat : Mode conversationnel
45
- • help : Cette aide
46
- • exit : Quitter
47
- `);
48
- },
49
- });
50
-
51
- registerCommand({
52
- name: "exit",
53
- aliases: ["quit"],
54
- description: "Quitte le hub",
55
- handler: async () => {
56
- },
57
- });
58
-
59
- registerCommand({
60
- name: "status",
61
- description: "Affiche le statut du système",
62
- handler: showStatus,
63
- });
64
-
65
- registerCommand({
66
- name: "agents",
67
- description: "Liste les agents disponibles",
68
- handler: listAgents,
69
- });
70
-
71
- registerCommand({
72
- name: "providers",
73
- description: "Liste les providers configurés",
74
- handler: listProviders,
75
- });
76
-
77
- registerCommand({
78
- name: "workflows",
79
- description: "Liste les workflows disponibles",
80
- handler: listWorkflows,
81
- });
82
-
83
- registerCommand({
84
- name: "logs",
85
- description: "Affiche les logs en temps réel",
86
- handler: showLogs,
87
- });
88
-
89
- registerCommand({
90
- name: "metrics",
91
- description: "Affiche les métriques de performance",
92
- handler: showMetrics,
93
- });
94
-
95
- registerCommand({
96
- name: "memory",
97
- description: "Affiche le statut de la mémoire",
98
- handler: showMemory,
99
- });
100
-
101
- registerCommand({
102
- name: "run",
103
- description: "Exécute un workflow avec le prompt spécifié",
104
- handler: runWorkflow,
105
- });
106
-
107
- registerCommand({
108
- name: "ui",
109
- description: "Lance le mode TUI plein écran",
110
- handler: async () => {
111
- console.log("\n🎬 Lancement du mode TUI...\n");
112
- const { waitUntilExit } = startTUI();
113
- await waitUntilExit();
114
- },
115
- });
116
-
117
- registerCommand({
118
- name: "chat",
119
- description: "Lance le mode conversationnel",
120
- handler: async () => {
121
- console.log("\n💬 Lancement du mode Chat (TUI)...\n");
122
- const { waitUntilExit } = startTUI();
123
- await waitUntilExit();
124
- },
125
- });
126
-
127
- const placeholderCommands = [
128
- "install", "config", "doctor", "bridge-test", "benchmark",
129
- "evolve", "dashboard"
130
- ];
131
-
132
- for (const cmd of placeholderCommands) {
133
- registerCommand({
134
- name: cmd,
135
- description: `Commande ${cmd}`,
136
- handler: async () => {
137
- console.log(`⚠️ Commande '${cmd}' sera implémentée dans une phase ultérieure`);
138
- },
139
- });
140
- }
@@ -1,70 +0,0 @@
1
- import { HubContext } from "../types.js";
2
- import { drawBox } from "../styles/borders.js";
3
- import { colorize, ansiColors } from "../styles/colors.js";
4
-
5
- interface LogEntry {
6
- timestamp: string;
7
- level: "INFO" | "WARN" | "ERROR" | "SUCCESS" | "MUTATE";
8
- agent: string;
9
- message: string;
10
- }
11
-
12
- export async function showLogs(_args: string[], flags: Record<string, string | boolean>, _context: HubContext): Promise<void> {
13
- const width = 85;
14
- const followMode = flags["f"] === true || flags["follow"] === true;
15
- const agentFilter = typeof flags["agent"] === "string" ? flags["agent"] : null;
16
- const levelFilter = typeof flags["level"] === "string" ? flags["level"].toUpperCase() : null;
17
-
18
- // Sample log entries
19
- const logs: LogEntry[] = [
20
- { timestamp: "14:23:07.123", level: "INFO", agent: "IntentClassifier", message: 'detected: "code_generation"' },
21
- { timestamp: "14:23:07.456", level: "INFO", agent: "TaskPlanner", message: "decomposed into 5 tasks" },
22
- { timestamp: "14:23:08.012", level: "SUCCESS", agent: "CodeGenerator", message: "generating auth module" },
23
- { timestamp: "14:23:09.234", level: "SUCCESS", agent: "CodeGenerator", message: "artifacts: 3 files" },
24
- { timestamp: "14:23:09.456", level: "INFO", agent: "TestAgent", message: "running test suite" },
25
- { timestamp: "14:23:12.789", level: "WARN", agent: "TestAgent", message: "2 tests failed, triggering FixAgent" },
26
- { timestamp: "14:23:13.012", level: "INFO", agent: "FixAgent", message: "patching auth/login.ts" },
27
- { timestamp: "14:23:14.345", level: "SUCCESS", agent: "FixAgent", message: "patches applied" },
28
- { timestamp: "14:23:14.567", level: "MUTATE", agent: "MutationAgent", message: "workflow optimized (+2 validation nodes)" },
29
- ];
30
-
31
- // Filter logs
32
- let filteredLogs = logs;
33
- if (agentFilter) {
34
- filteredLogs = filteredLogs.filter(l => l.agent.toLowerCase().includes(agentFilter.toLowerCase()));
35
- }
36
- if (levelFilter) {
37
- filteredLogs = filteredLogs.filter(l => l.level === levelFilter);
38
- }
39
-
40
- const lines: string[] = [];
41
-
42
- // Header
43
- lines.push(` ${colorize("TIME", "bright")} ${colorize("LEVEL", "bright")} ${colorize("AGENT", "bright")} ${colorize("MESSAGE", "bright")}`);
44
- lines.push(" " + "─".repeat(81));
45
-
46
- // Log entries
47
- for (const log of filteredLogs) {
48
- const levelColor: Record<string, keyof typeof ansiColors> = {
49
- "INFO": "cyan",
50
- "WARN": "yellow",
51
- "ERROR": "red",
52
- "SUCCESS": "green",
53
- "MUTATE": "magenta",
54
- };
55
-
56
- lines.push(` ${log.timestamp} ${colorize(log.level.padEnd(8), levelColor[log.level] || "white")} ${log.agent.padEnd(18)} ${log.message}`);
57
- }
58
-
59
- if (followMode) {
60
- lines.push("");
61
- lines.push(colorize(" [Following... Press Ctrl+C to stop]", "gray"));
62
- }
63
-
64
- console.log(drawBox(lines, width, "LOGS"));
65
-
66
- if (followMode) {
67
- // In a real implementation, this would stream new logs
68
- console.log(colorize("\n (Follow mode not yet implemented)", "gray"));
69
- }
70
- }
@@ -1,47 +0,0 @@
1
- import { HubContext } from "../types.js";
2
- import { drawBox } from "../styles/borders.js";
3
- import { colorize, statusIndicators } from "../styles/colors.js";
4
-
5
- export async function showMemory(_args: string[], _flags: Record<string, string | boolean>, _context: HubContext): Promise<void> {
6
- const width = 70;
7
-
8
- const stats = {
9
- graphNodes: 247,
10
- vectorStoreSize: "1.2 MB",
11
- cacheEntries: 47,
12
- lastAccess: "2s ago",
13
- recentMutations: 3,
14
- cacheHitRate: "94%",
15
- };
16
-
17
- const lines: string[] = [];
18
-
19
- // Stats
20
- lines.push(` ${colorize("Graph Memory Nodes:", "bright")} ${colorize(stats.graphNodes.toString(), "cyan")} ${statusIndicators.online}`);
21
- lines.push(` ${colorize("Vector Store Size:", "bright")} ${colorize(stats.vectorStoreSize, "cyan")}`);
22
- lines.push(` ${colorize("Cache Entries:", "bright")} ${colorize(stats.cacheEntries.toString(), "cyan")}`);
23
- lines.push(` ${colorize("Last Access:", "bright")} ${colorize(stats.lastAccess, "gray")}`);
24
- lines.push(` ${colorize("Recent Mutations:", "bright")} ${colorize(`+${stats.recentMutations}`, "yellow")} ${statusIndicators.mutation}`);
25
- lines.push(` ${colorize("Cache Hit Rate:", "bright")} ${colorize(stats.cacheHitRate, "green")}`);
26
-
27
- lines.push("");
28
- lines.push(colorize(" Sample Graph Structure:", "bright"));
29
- lines.push(" " + "─".repeat(66));
30
-
31
- // Visual graph representation
32
- lines.push("");
33
- lines.push(` [action:code_gen]${statusIndicators.online}`);
34
- lines.push(` │`);
35
- lines.push(` ├───▶ [file:auth.ts]${statusIndicators.online}`);
36
- lines.push(` │ │`);
37
- lines.push(` │ ├───▶ [task:login]${statusIndicators.online}`);
38
- lines.push(` │ │`);
39
- lines.push(` │ └───▶ [test:auth]${statusIndicators.online}`);
40
- lines.push(` │ │`);
41
- lines.push(` │ │`);
42
- lines.push(` └───────────────────────┴───▶ [fix:patch_001]${statusIndicators.mutation}`);
43
- lines.push("");
44
- lines.push(colorize(" // QUANTUM_SEMANTIC_GRAPH_MEMORY", "gray"));
45
-
46
- console.log(drawBox(lines, width, "MEMORY"));
47
- }
@@ -1,49 +0,0 @@
1
- import { HubContext } from "../types.js";
2
- import { drawBox, drawProgressBar } from "../styles/borders.js";
3
- import { colorize } from "../styles/colors.js";
4
- import { padRight } from "../styles/typography.js";
5
-
6
- interface MetricInfo {
7
- label: string;
8
- value: string;
9
- trend?: string;
10
- }
11
-
12
- export async function showMetrics(_args: string[], _flags: Record<string, string | boolean>, _context: HubContext): Promise<void> {
13
- const width = 65;
14
-
15
- const metrics: MetricInfo[] = [
16
- { label: "Sessions", value: "12", trend: "↗" },
17
- { label: "Avg Duration", value: "14.2s", trend: "▼ -12%" },
18
- { label: "Success Rate", value: "96%", trend: "▲ +3%" },
19
- { label: "Cost (USD)", value: "$0.002", trend: "→" },
20
- { label: "Cache Savings", value: "67%", trend: "↗" },
21
- ];
22
-
23
- const topAgents = [
24
- { name: "CodeGenerator", usage: 45 },
25
- { name: "TestAgent", usage: 32 },
26
- { name: "FixAgent", usage: 18 },
27
- { name: "IntentClassifier", usage: 5 },
28
- ];
29
-
30
- const lines: string[] = [];
31
-
32
- // General metrics
33
- for (const metric of metrics) {
34
- const trendColor = metric.trend?.includes("▲") ? "green" : metric.trend?.includes("▼") ? "green" : "gray";
35
- lines.push(` ${padRight(metric.label, 15)} ${colorize(metric.value.padEnd(12), "cyan")} ${colorize(metric.trend || "", trendColor)}`);
36
- }
37
-
38
- lines.push("");
39
- lines.push(colorize(" Top Agents:", "bright"));
40
- lines.push(" " + "─".repeat(61));
41
-
42
- // Top agents with progress bars
43
- for (const agent of topAgents) {
44
- const bar = drawProgressBar(agent.usage, 20);
45
- lines.push(` ${padRight(agent.name, 18)} ${bar} ${colorize(`${agent.usage}%`, "yellow")}`);
46
- }
47
-
48
- console.log(drawBox(lines, width, "METRICS"));
49
- }
@@ -1,39 +0,0 @@
1
- import { HubContext } from "../types.js";
2
- import { drawBox } from "../styles/borders.js";
3
- import { colorize, formatStatus } from "../styles/colors.js";
4
- import { padRight } from "../styles/typography.js";
5
-
6
- interface ProviderInfo {
7
- name: string;
8
- key: string;
9
- status: string;
10
- latency: string;
11
- lastCall: string;
12
- }
13
-
14
- export async function listProviders(_args: string[], _flags: Record<string, string | boolean>, _context: HubContext): Promise<void> {
15
- const width = 65;
16
-
17
- const providers: ProviderInfo[] = [
18
- { name: "Host-Native", key: "[H]", status: "online", latency: "12ms", lastCall: "2s ago" },
19
- { name: "Claude Code", key: "[C]", status: "online", latency: "8ms", lastCall: "5s ago" },
20
- { name: "OpenCode", key: "[O]", status: "idle", latency: "--", lastCall: "1h ago" },
21
- { name: "Anthropic API", key: "[A]", status: "online", latency: "45ms", lastCall: "1m ago" },
22
- { name: "Gemini", key: "[G]", status: "idle", latency: "--", lastCall: "2h ago" },
23
- { name: "Mistral", key: "[M]", status: "idle", latency: "--", lastCall: "3h ago" },
24
- { name: "Groq", key: "[Q]", status: "idle", latency: "--", lastCall: "5h ago" },
25
- { name: "OpenAI", key: "[O]", status: "idle", latency: "--", lastCall: "1d ago" },
26
- ];
27
-
28
- const lines: string[] = [];
29
- lines.push(` ${colorize("PROVIDER", "bright")} ${colorize("STATUS", "bright")} ${colorize("LATENCY", "bright")} ${colorize("LAST CALL", "bright")}`);
30
- lines.push(" " + "─".repeat(61));
31
-
32
- for (const provider of providers) {
33
- const indicator = formatStatus(provider.status);
34
- const statusColor = provider.status === "online" ? "green" : "gray";
35
- lines.push(` ${provider.key} ${padRight(provider.name, 14)} ${indicator} ${colorize(provider.status.toUpperCase().padEnd(8), statusColor)} ${padRight(provider.latency, 8)} ${colorize(provider.lastCall, "gray")}`);
36
- }
37
-
38
- console.log(drawBox(lines, width, "PROVIDERS"));
39
- }
@@ -1,37 +0,0 @@
1
- import { HubContext } from "../types.js";
2
- import { runWorkflow as runWorkflowOriginal } from "../../run.js";
3
-
4
- export async function runWorkflow(args: string[], flags: Record<string, string | boolean>, context: HubContext): Promise<void> {
5
- const prompt = args.join(" ");
6
-
7
- if (!prompt) {
8
- console.error("❌ Usage: run <prompt>");
9
- console.log("\nExemples:");
10
- console.log(' run "Crée une API REST"');
11
- console.log(' run "Génère des tests unitaires" --workflow custom.json');
12
- return;
13
- }
14
-
15
- console.log(`▶ Lancement du workflow...`);
16
- console.log(` Prompt: ${prompt}`);
17
- console.log(` Mode: ${flags["workflow"] || "default"}`);
18
- console.log("");
19
-
20
- // Call the original run function
21
- const code = await runWorkflowOriginal({
22
- cwd: context.config.project || process.cwd(),
23
- prompt,
24
- workflowPath: typeof flags["workflow"] === "string" ? flags["workflow"] : undefined,
25
- asJson: flags["json"] === true,
26
- stream: flags["stream"] === true,
27
- maxParallel: typeof flags["max-parallel"] === "string" ? Number(flags["max-parallel"]) : undefined,
28
- noCachePersist: flags["no-cache-persist"] === true,
29
- ui: flags["ui"] === true,
30
- });
31
-
32
- if (code !== 0) {
33
- throw new Error(`Workflow failed with code ${code}`);
34
- }
35
-
36
- console.log("\n✅ Workflow terminé avec succès");
37
- }
@@ -1,69 +0,0 @@
1
- import { HubContext } from "../types.js";
2
- import { drawBox } from "../styles/borders.js";
3
- import { colorize, formatStatus, statusIndicators } from "../styles/colors.js";
4
- import { padRight } from "../styles/typography.js";
5
-
6
- export async function showStatus(_args: string[], _flags: Record<string, string | boolean>, context: HubContext): Promise<void> {
7
- const width = 61;
8
-
9
- // Simulated status data (will be replaced with real data from orchestrator)
10
- const status = {
11
- orchestrator: "ACTIVE",
12
- mode: "HOST-NATIVE",
13
- activeAgents: "3/12",
14
- currentRun: "L2: CodeGen [H] 67%",
15
- fitness: "0.87",
16
- fitnessTrend: "improving",
17
- cacheHit: "94%",
18
- memoryNodes: "247",
19
- latency: "12ms",
20
- providers: [
21
- { name: "Host-Native", status: "online", latency: "12ms" },
22
- { name: "Claude", status: "online", latency: "8ms" },
23
- { name: "OpenAI", status: "idle", latency: "--" },
24
- ],
25
- activeWorkflows: [
26
- { agent: "CodeGenerator", provider: "[H]", status: "running", progress: 67 },
27
- { agent: "TestAgent", provider: "[H]", status: "queued", progress: 0 },
28
- ],
29
- };
30
-
31
- const lines: string[] = [];
32
-
33
- // Orchestrator status
34
- lines.push(` Orchestrator: ${formatStatus("online")} ${colorize(status.orchestrator, "green")}`);
35
- lines.push(` Mode: ${colorize(status.mode, "cyan")}`);
36
- lines.push(` Active Agents: ${colorize(status.activeAgents, "yellow")}`);
37
- lines.push("");
38
-
39
- // Current run
40
- if (status.currentRun) {
41
- lines.push(` Current Run: ${statusIndicators.running} ${colorize(status.currentRun, "yellow")}`);
42
- lines.push(` Fitness: ${colorize(status.fitness, "green")} (${colorize(status.fitnessTrend, "cyan")})`);
43
- lines.push(` Cache Hit: ${colorize(status.cacheHit, "green")}`);
44
- lines.push(` Memory Nodes: ${colorize(status.memoryNodes, "cyan")}`);
45
- lines.push(` Latency: ${colorize(status.latency, "green")}`);
46
- lines.push("");
47
- }
48
-
49
- // Active workflows
50
- if (status.activeWorkflows.length > 0) {
51
- lines.push(colorize(" Active Workflows:", "bright"));
52
- for (const wf of status.activeWorkflows) {
53
- const indicator = statusIndicators[wf.status as keyof typeof statusIndicators] || "○";
54
- const color = wf.status === "running" ? "yellow" : wf.status === "queued" ? "gray" : "white";
55
- lines.push(` ${indicator} ${padRight(wf.agent, 20)} ${wf.provider} ${colorize(wf.status.toUpperCase(), color)}`);
56
- }
57
- lines.push("");
58
- }
59
-
60
- // Providers
61
- lines.push(colorize(" Providers:", "bright"));
62
- for (const provider of status.providers) {
63
- const indicator = formatStatus(provider.status);
64
- const latencyStr = provider.latency !== "--" ? `${provider.latency}` : "--";
65
- lines.push(` ${indicator} ${padRight(provider.name, 18)} ${colorize(latencyStr, "gray")}`);
66
- }
67
-
68
- console.log(drawBox(lines, width, "SYSTEM STATUS"));
69
- }
@@ -1,64 +0,0 @@
1
- import { HubContext } from "../types.js";
2
- import { drawBox } from "../styles/borders.js";
3
- import { colorize } from "../styles/colors.js";
4
- import * as fs from "fs/promises";
5
- import * as path from "path";
6
-
7
- interface WorkflowInfo {
8
- name: string;
9
- description: string;
10
- fitness?: number;
11
- recommended?: boolean;
12
- }
13
-
14
- export async function listWorkflows(_args: string[], _flags: Record<string, string | boolean>, context: HubContext): Promise<void> {
15
- const width = 70;
16
- const lines: string[] = [];
17
-
18
- // Try to find workflow files
19
- const workflowDir = path.join(context.config.project || process.cwd(), ".rax", "workflows");
20
- const workflows: WorkflowInfo[] = [];
21
-
22
- try {
23
- const files = await fs.readdir(workflowDir);
24
- for (const file of files.filter(f => f.endsWith('.json'))) {
25
- const filePath = path.join(workflowDir, file);
26
- const content = await fs.readFile(filePath, 'utf-8');
27
- const workflow = JSON.parse(content);
28
- workflows.push({
29
- name: file.replace('.json', ''),
30
- description: workflow.description || 'No description',
31
- fitness: workflow.fitness,
32
- recommended: workflow.recommended,
33
- });
34
- }
35
- } catch {
36
- // Directory doesn't exist or is empty, use defaults
37
- }
38
-
39
- // Add default workflows
40
- if (workflows.length === 0) {
41
- workflows.push(
42
- { name: "default-routing", description: "Standard workflow with intent classification", fitness: 0.87 },
43
- { name: "secure-api-blueprint", description: "Security-focused API generation", fitness: 0.92 },
44
- { name: "test-heavy-workflow", description: "Prioritizes test generation", fitness: 0.89 },
45
- { name: "mutation-evolved-v3", description: "Optimized with mutations", fitness: 0.96, recommended: true }
46
- );
47
- }
48
-
49
- lines.push(` ${colorize("WORKFLOW", "bright")} ${colorize("DESCRIPTION", "bright")} ${colorize("FITNESS", "bright")}`);
50
- lines.push(" " + "─".repeat(66));
51
-
52
- for (const wf of workflows) {
53
- const name = wf.name.slice(0, 22).padEnd(24);
54
- const desc = wf.description.slice(0, 25).padEnd(27);
55
- const fitness = wf.fitness ? colorize(wf.fitness.toFixed(2), wf.fitness >= 0.9 ? "green" : "yellow") : "--";
56
- const marker = wf.recommended ? colorize(" ★", "yellow") : "";
57
- lines.push(` • ${name} ${desc} ${fitness}${marker}`);
58
- }
59
-
60
- lines.push("");
61
- lines.push(` ${colorize("Usage:", "bright")} run -w <workflow-name> "<prompt>"`);
62
-
63
- console.log(drawBox(lines, width, "WORKFLOWS"));
64
- }
@@ -1,37 +0,0 @@
1
- import * as fs from "fs/promises";
2
- import * as path from "path";
3
- import { HubConfig } from "./types.js";
4
-
5
- interface RaxRcConfig {
6
- project?: string;
7
- providers?: string[];
8
- theme?: 'industrial' | 'minimal' | 'high-contrast';
9
- [key: string]: unknown;
10
- }
11
-
12
- export async function loadConfig(cwd: string): Promise<HubConfig> {
13
- const configPath = path.join(cwd, ".raxrc");
14
-
15
- try {
16
- const content = await fs.readFile(configPath, "utf-8");
17
- const config: RaxRcConfig = JSON.parse(content);
18
-
19
- return {
20
- project: config.project,
21
- providers: config.providers,
22
- theme: config.theme || 'industrial',
23
- };
24
- } catch {
25
- // Return default config if .raxrc doesn't exist or is invalid
26
- return {
27
- project: path.basename(cwd),
28
- providers: [],
29
- theme: 'industrial',
30
- };
31
- }
32
- }
33
-
34
- export async function saveConfig(cwd: string, config: HubConfig): Promise<void> {
35
- const configPath = path.join(cwd, ".raxrc");
36
- await fs.writeFile(configPath, JSON.stringify(config, null, 2));
37
- }
@@ -1,17 +0,0 @@
1
- import { RuntimeEventBus, RuntimeEvent } from "rax-flow-core";
2
-
3
- const globalEventBus = new RuntimeEventBus();
4
-
5
- export type { RuntimeEvent };
6
-
7
- export function getEventBus(): RuntimeEventBus {
8
- return globalEventBus;
9
- }
10
-
11
- export function subscribeToEvents(callback: (event: RuntimeEvent) => void): () => void {
12
- return globalEventBus.onEvent(callback);
13
- }
14
-
15
- export function emitEvent(event: RuntimeEvent): void {
16
- globalEventBus.emit(event);
17
- }
@@ -1,66 +0,0 @@
1
- import * as fs from "fs/promises";
2
- import * as path from "path";
3
-
4
- export class CommandHistory {
5
- private history: string[] = [];
6
- private position = -1;
7
- private readonly historyPath: string;
8
-
9
- constructor(cwd: string) {
10
- this.historyPath = path.join(cwd, ".rax", "history.json");
11
- }
12
-
13
- add(command: string): void {
14
- // Avoid duplicates at the end
15
- if (this.history.length === 0 || this.history[this.history.length - 1] !== command) {
16
- this.history.push(command);
17
- }
18
- this.position = this.history.length;
19
- }
20
-
21
- up(): string | undefined {
22
- if (this.position > 0) {
23
- this.position--;
24
- return this.history[this.position];
25
- }
26
- return undefined;
27
- }
28
-
29
- down(): string | undefined {
30
- if (this.position < this.history.length - 1) {
31
- this.position++;
32
- return this.history[this.position];
33
- }
34
- this.position = this.history.length;
35
- return undefined;
36
- }
37
-
38
- async save(): Promise<void> {
39
- try {
40
- const dir = path.dirname(this.historyPath);
41
- await fs.mkdir(dir, { recursive: true });
42
- await fs.writeFile(
43
- this.historyPath,
44
- JSON.stringify(this.history.slice(-1000), null, 2) // Keep last 1000 commands
45
- );
46
- } catch {
47
- // Silently fail if we can't save history
48
- }
49
- }
50
-
51
- async load(): Promise<void> {
52
- try {
53
- const data = await fs.readFile(this.historyPath, "utf-8");
54
- this.history = JSON.parse(data);
55
- this.position = this.history.length;
56
- } catch {
57
- // No history file yet, start fresh
58
- this.history = [];
59
- this.position = 0;
60
- }
61
- }
62
-
63
- getAll(): string[] {
64
- return [...this.history];
65
- }
66
- }