@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
package/src/init-host.ts DELETED
@@ -1,285 +0,0 @@
1
- import { mkdir, writeFile } from "node:fs/promises";
2
- import path from "node:path";
3
- import { c } from "./styles.js";
4
- import { HOST_TEMPLATES, HostTarget, buildBootstrapPrompt, listHostTargets, parseHostTarget } from "./host-init-templates.js";
5
- import { generateVendorManifest, vendorManifestFilename, type HostManifestModel } from "./vendor-manifests.js";
6
- import { bridgeAdapterFilename, renderBridgeAdapter } from "./bridge-adapter-templates.js";
7
-
8
- interface InitHostOptions {
9
- cwd: string;
10
- target?: string;
11
- printOnly?: boolean;
12
- all?: boolean;
13
- task?: string;
14
- }
15
-
16
- function bridgeCommand(adapterFile: string): string {
17
- return `node ${adapterFile}`;
18
- }
19
-
20
- function renderSetupScript(command: string): string {
21
- return [
22
- "#!/usr/bin/env bash",
23
- "set -e",
24
- `export RAX_HOST_BRIDGE_COMMAND=\"${command}\"`,
25
- 'echo "RAX_HOST_BRIDGE_COMMAND configured"',
26
- "echo \"Run: npx raxflow doctor\"",
27
- "echo \"Run: npx raxflow run --prompt 'Build feature X' --stream\""
28
- ].join("\n");
29
- }
30
-
31
- function renderInstructions(params: {
32
- title: string;
33
- envHint: string;
34
- chatHint: string;
35
- command: string;
36
- adapterFile: string;
37
- quickCommands: string[];
38
- sessionEntryExamples: string[];
39
- autoInjectMode: "native" | "scripted" | "manual";
40
- task?: string;
41
- }): string {
42
- const taskSection = params.task?.trim()
43
- ? ["", "## Task context", `- ${params.task.trim()}`, "- Embedded into BOOTSTRAP_PROMPT.txt"]
44
- : [];
45
-
46
- return [
47
- `# ${params.title} - Non-UI Initialization`,
48
- "",
49
- "## 1) Configure bridge command",
50
- `- ${params.envHint}`,
51
- `- Command: \`${params.command}\``,
52
- `- Bridge adapter scaffold: \`${params.adapterFile}\``,
53
- "- Replace callHostModel() with your editor runtime model call implementation.",
54
- "- Configure bridge runtime values in `bridge-runtime-config.json`.",
55
- "- Use `bridge-smoke-test.json` to validate structured response mapping.",
56
- "",
57
- "## 2) Chat bootstrap",
58
- `- ${params.chatHint}`,
59
- "- Use BOOTSTRAP_PROMPT.txt content.",
60
- ...taskSection,
61
- "",
62
- "## 3) Session launch patterns",
63
- `- Auto inject mode: \`${params.autoInjectMode}\``,
64
- ...params.sessionEntryExamples.map((line) => `- \`${line}\``),
65
- "",
66
- "## 4) Validate",
67
- ...params.quickCommands.map((cmd) => `- \`${cmd}\``)
68
- ].join("\n");
69
- }
70
-
71
- function renderSessionStartScript(target: HostTarget, sessionEntryExamples: string[]): string {
72
- const lines = [
73
- "#!/usr/bin/env bash",
74
- "set -e",
75
- `echo \"RAXFLOW session starter (${target})\"`,
76
- "echo \"Use one of these commands (adapt to your local CLI):\""
77
- ];
78
-
79
- for (const entry of sessionEntryExamples) {
80
- lines.push(`echo \"- ${entry}\"`);
81
- }
82
-
83
- lines.push("echo \"If unsupported, copy/paste BOOTSTRAP_PROMPT.txt manually.\"");
84
- return lines.join("\n");
85
- }
86
-
87
- function renderRuntimeConfig(target: HostTarget, task?: string): string {
88
- const payload = {
89
- version: 1,
90
- vendor: target,
91
- model: "host-managed",
92
- endpoint: null,
93
- authEnv: null,
94
- structuredMode: "json",
95
- timeoutMs: 20000,
96
- taskContext: task?.trim() || null,
97
- notes: [
98
- "Fill endpoint/auth fields if your host runtime requires external transport.",
99
- "If host runtime is in-process, keep endpoint null and call runtime SDK directly in bridge adapter."
100
- ]
101
- };
102
- return JSON.stringify(payload, null, 2);
103
- }
104
-
105
- function renderBridgeSmokeTest(target: HostTarget): string {
106
- const payload = {
107
- version: 1,
108
- action: "callStructured",
109
- prompt: "Smoke test structured output",
110
- schema: {
111
- type: "object",
112
- required: ["agent", "success", "confidence", "risks", "logs", "data"],
113
- properties: {
114
- agent: { type: "string" },
115
- success: { type: "boolean" },
116
- confidence: { type: "number" },
117
- risks: { type: "array" },
118
- logs: { type: "array" },
119
- data: { type: "object" }
120
- }
121
- },
122
- options: { model: "host-managed", temperature: 0, maxTokens: 256 },
123
- meta: { target }
124
- };
125
- return JSON.stringify(payload, null, 2);
126
- }
127
-
128
- function renderManifest(params: {
129
- target: HostTarget;
130
- title: string;
131
- autoInjectMode: "native" | "scripted" | "manual";
132
- bridgeCommand: string;
133
- quickCommands: string[];
134
- sessionEntryExamples: string[];
135
- bootstrapPromptFile: string;
136
- instructionsFile: string;
137
- adapterFile: string;
138
- runtimeConfigFile: string;
139
- smokeTestFile: string;
140
- vendorFile: string;
141
- task?: string;
142
- }): HostManifestModel {
143
- return {
144
- version: 2,
145
- target: params.target,
146
- title: params.title,
147
- autoInjectMode: params.autoInjectMode,
148
- bridgeCommand: params.bridgeCommand,
149
- quickCommands: params.quickCommands,
150
- sessionEntryExamples: params.sessionEntryExamples,
151
- task: params.task ?? null,
152
- files: {
153
- bootstrapPrompt: params.bootstrapPromptFile,
154
- instructions: params.instructionsFile,
155
- bridgeAdapter: params.adapterFile,
156
- bridgeRuntimeConfig: params.runtimeConfigFile,
157
- bridgeSmokeTest: params.smokeTestFile,
158
- vendorManifest: params.vendorFile
159
- }
160
- };
161
- }
162
-
163
- async function generateForTarget(cwd: string, target: HostTarget, task?: string): Promise<{ dir: string; bootstrapPrompt: string; quickCommands: string[] }> {
164
- const template = HOST_TEMPLATES[target];
165
- const baseDir = path.join(cwd, ".raxflow", "host-init", target);
166
- const adapterFile = path.join(baseDir, bridgeAdapterFilename(target));
167
- const command = bridgeCommand(adapterFile);
168
-
169
- await mkdir(baseDir, { recursive: true });
170
-
171
- const setupSh = renderSetupScript(command);
172
- const sessionStartSh = renderSessionStartScript(target, template.sessionEntryExamples);
173
- const bootstrapPrompt = buildBootstrapPrompt(target, task);
174
- const bridgeAdapter = renderBridgeAdapter(target);
175
- const instructions = renderInstructions({
176
- title: template.title,
177
- envHint: template.envHint,
178
- chatHint: template.chatHint,
179
- command,
180
- adapterFile,
181
- quickCommands: template.quickCommands,
182
- sessionEntryExamples: template.sessionEntryExamples,
183
- autoInjectMode: template.autoInjectMode,
184
- task
185
- });
186
-
187
- const bootstrapPromptFile = path.join(baseDir, "BOOTSTRAP_PROMPT.txt");
188
- const instructionsFile = path.join(baseDir, "INSTRUCTIONS.md");
189
- const runtimeConfigFile = path.join(baseDir, "bridge-runtime-config.json");
190
- const smokeTestFile = path.join(baseDir, "bridge-smoke-test.json");
191
- const vendorFile = vendorManifestFilename(target);
192
- const manifestObj = renderManifest({
193
- target,
194
- title: template.title,
195
- autoInjectMode: template.autoInjectMode,
196
- bridgeCommand: command,
197
- quickCommands: template.quickCommands,
198
- sessionEntryExamples: template.sessionEntryExamples,
199
- bootstrapPromptFile,
200
- instructionsFile,
201
- adapterFile,
202
- runtimeConfigFile,
203
- smokeTestFile,
204
- vendorFile: path.join(baseDir, vendorFile),
205
- task
206
- });
207
- const manifest = JSON.stringify(manifestObj, null, 2);
208
- const vendorManifest = generateVendorManifest(target, baseDir, manifestObj);
209
-
210
- await writeFile(path.join(baseDir, "setup-bridge.sh"), `${setupSh}\n`, "utf8");
211
- await writeFile(path.join(baseDir, "start-session.sh"), `${sessionStartSh}\n`, "utf8");
212
- await writeFile(adapterFile, `${bridgeAdapter}\n`, "utf8");
213
- await writeFile(runtimeConfigFile, `${renderRuntimeConfig(target, task)}\n`, "utf8");
214
- await writeFile(smokeTestFile, `${renderBridgeSmokeTest(target)}\n`, "utf8");
215
- await writeFile(bootstrapPromptFile, `${bootstrapPrompt}\n`, "utf8");
216
- await writeFile(instructionsFile, `${instructions}\n`, "utf8");
217
- await writeFile(path.join(baseDir, "host-manifest.json"), `${manifest}\n`, "utf8");
218
- await writeFile(path.join(baseDir, vendorFile), `${JSON.stringify(vendorManifest, null, 2)}\n`, "utf8");
219
-
220
- return { dir: baseDir, bootstrapPrompt, quickCommands: template.quickCommands };
221
- }
222
-
223
- async function generateSummary(cwd: string, generated: Array<{ target: HostTarget; dir: string }>, task?: string): Promise<string> {
224
- const summaryFile = path.join(cwd, ".raxflow", "host-init", "INIT_SUMMARY.md");
225
- const body = [
226
- "# RAXFLOW Host Init Summary",
227
- "",
228
- ...(task?.trim() ? ["Task context:", `- ${task.trim()}`, ""] : []),
229
- "Generated targets:",
230
- ...generated.map((item) => `- ${item.target}: \`${item.dir}\``),
231
- "",
232
- "Recommended sequence:",
233
- "1. Review bridge-adapter-*.mjs and wire host runtime in callHostModel",
234
- "2. Source setup-bridge.sh for your target",
235
- "3. Run start-session.sh for launch hints",
236
- "4. Paste BOOTSTRAP_PROMPT.txt into chat start",
237
- "5. Run `npx raxflow doctor`",
238
- "6. Run `npx raxflow run --prompt \"Build feature X\" --stream`"
239
- ].join("\n");
240
- await writeFile(summaryFile, `${body}\n`, "utf8");
241
- return summaryFile;
242
- }
243
-
244
- export async function runInitHost(options: InitHostOptions): Promise<number> {
245
- const targets = options.all ? listHostTargets() : [parseHostTarget(options.target)];
246
-
247
- if (options.printOnly) {
248
- for (const target of targets) {
249
- const template = HOST_TEMPLATES[target];
250
- const bootstrapPrompt = buildBootstrapPrompt(target, options.task);
251
- console.log(c.blue(`RAXFLOW Host Init (print) - ${target}`));
252
- console.log(bootstrapPrompt);
253
- console.log("quick commands:");
254
- template.quickCommands.forEach((cmd) => console.log(`- ${cmd}`));
255
- console.log("session launch patterns:");
256
- template.sessionEntryExamples.forEach((line) => console.log(`- ${line}`));
257
- }
258
- return 0;
259
- }
260
-
261
- const generated: Array<{ target: HostTarget; dir: string }> = [];
262
-
263
- for (const target of targets) {
264
- const out = await generateForTarget(options.cwd, target, options.task);
265
- generated.push({ target, dir: out.dir });
266
- console.log(c.blue("RAXFLOW Host Init"));
267
- console.log(`target: ${target}`);
268
- if (options.task?.trim()) {
269
- console.log(`task context: ${options.task.trim()}`);
270
- }
271
- console.log(c.green(`Generated ${path.join(out.dir, "INSTRUCTIONS.md")}`));
272
- console.log(c.green(`Generated ${path.join(out.dir, "BOOTSTRAP_PROMPT.txt")}`));
273
- console.log(c.green(`Generated ${path.join(out.dir, "setup-bridge.sh")}`));
274
- console.log(c.green(`Generated ${path.join(out.dir, "start-session.sh")}`));
275
- console.log(c.green(`Generated ${path.join(out.dir, bridgeAdapterFilename(target))}`));
276
- console.log(c.green(`Generated ${path.join(out.dir, "bridge-runtime-config.json")}`));
277
- console.log(c.green(`Generated ${path.join(out.dir, "bridge-smoke-test.json")}`));
278
- console.log(c.green(`Generated ${path.join(out.dir, "host-manifest.json")}`));
279
- console.log(c.green(`Generated ${path.join(out.dir, vendorManifestFilename(target))}`));
280
- }
281
-
282
- const summary = await generateSummary(options.cwd, generated, options.task);
283
- console.log(c.green(`Generated ${summary}`));
284
- return 0;
285
- }
package/src/install.ts DELETED
@@ -1,118 +0,0 @@
1
- import { mkdir, writeFile, access, copyFile } from "node:fs/promises";
2
- import { constants } from "node:fs";
3
- import { execSync } from "node:child_process";
4
- import path from "node:path";
5
- import os from "node:os";
6
- import { c } from "./styles.js";
7
-
8
- interface InstallOptions {
9
- cwd: string;
10
- openUi: boolean;
11
- autoConfirm?: boolean;
12
- }
13
-
14
- async function detectBridges(): Promise<string[]> {
15
- const candidates = [
16
- { id: "claude-code", cmd: "claude-code --version" },
17
- { id: "codex", cmd: "codex --version" },
18
- { id: "opencode", cmd: "opencode --version" },
19
- { id: "kilo", cmd: "kilo --version" }
20
- ];
21
-
22
- const detected: string[] = [];
23
- for (const tool of candidates) {
24
- try {
25
- execSync(tool.cmd, { stdio: "ignore" });
26
- detected.push(tool.id);
27
- } catch {
28
- // Not in path
29
- }
30
- }
31
- return detected;
32
- }
33
-
34
- async function ensureRaxrc(targetDir: string, detectedBridge?: string): Promise<string> {
35
- const file = path.join(targetDir, ".raxrc");
36
- const body = {
37
- version: 1,
38
- defaultProvider: detectedBridge ? "host" : "openai",
39
- strongProvider: "openai",
40
- providers: {
41
- host: {
42
- model: detectedBridge ?? "host-managed",
43
- mode: "auto",
44
- bridgeCommand: detectedBridge ?? "claude-code", // Store direct command if found
45
- bridgeCommandEnv: "RAX_HOST_BRIDGE_COMMAND"
46
- },
47
- openai: { model: "gpt-4o", apiKeyEnv: "OPENAI_API_KEY" },
48
- claude: { model: "claude-3-5-sonnet-latest", apiKeyEnv: "ANTHROPIC_API_KEY" }
49
- },
50
- privacyMode: true,
51
- verifyFixLoops: 3
52
- };
53
- await writeFile(file, `${JSON.stringify(body, null, 2)}\n`, "utf8");
54
- return file;
55
- }
56
-
57
- async function ensureExampleWorkflow(targetDir: string): Promise<string> {
58
- const workflowsDir = path.join(targetDir, ".raxflow", "workflows");
59
- await mkdir(workflowsDir, { recursive: true });
60
- const file = path.join(workflowsDir, "fullstack-feature.json");
61
- const sample = {
62
- id: "fullstack-feature",
63
- nodes: [
64
- { id: "analyze", agent: "IntentClassifierAgent", dependsOn: [] },
65
- { id: "spec", agent: "SpecAgent", dependsOn: ["analyze"] },
66
- { id: "implement", agent: "CodeGeneratorAgent", dependsOn: ["spec"] },
67
- { id: "verify", agent: "ValidatorAgent", dependsOn: ["implement"] }
68
- ]
69
- };
70
- await writeFile(file, `${JSON.stringify(sample, null, 2)}\n`, "utf8");
71
- return file;
72
- }
73
-
74
- async function validateEnvironment(): Promise<{ ok: boolean; missing: string[] }> {
75
- const optional = ["OPENAI_API_KEY", "RAX_HOST_BRIDGE_COMMAND"];
76
- const missing = optional.filter((k) => !process.env[k]);
77
- return { ok: true, missing };
78
- }
79
-
80
- export async function runInstall(options: InstallOptions): Promise<number> {
81
- console.log(c.blue("RAXFLOW Installer - Professional Setup"));
82
-
83
- console.log("- Scanning for local coding tools...");
84
- const detected = await detectBridges();
85
- if (detected.length > 0) {
86
- console.log(c.green(` [OK] Detected: ${detected.join(", ")}`));
87
- } else {
88
- console.log(c.yellow(" [!] No local coding tools (Claude Code/Codex) detected in PATH."));
89
- }
90
-
91
- const primaryBridge = detected[0];
92
- const raxrc = await ensureRaxrc(options.cwd, primaryBridge);
93
- const workflow = await ensureExampleWorkflow(options.cwd);
94
-
95
- console.log(c.green(`- Project Initialized: ${raxrc}`));
96
- console.log(c.green(`- Default Blueprint Created: ${workflow}`));
97
-
98
- const env = await validateEnvironment();
99
- if (env.missing.length > 0) {
100
- console.log(c.yellow(`- Note: Optional env vars missing: ${env.missing.join(", ")}`));
101
- }
102
-
103
- const localHome = path.join(os.homedir(), ".raxflow");
104
- await mkdir(localHome, { recursive: true });
105
-
106
- console.log("\n" + c.blue("--- Zero-Error Compliance Checklist ---"));
107
- console.log(c.green("✓ Host Bridge Architecture: Scalable & Compliant"));
108
- console.log(c.green("✓ Dynamic Planner: Enabled (Self-Optimizing)"));
109
- console.log(c.green("✓ Long-term Memory: Configured"));
110
-
111
- console.log("\n" + c.yellow("Next Logical Steps:"));
112
- console.log("1. Run `raxflow doctor` to verify bridge connectivity.");
113
- console.log("2. Launch a task: `raxflow run --prompt \"Implement feature Y\" --stream`.");
114
-
115
- console.log("\n" + c.green("RAXFLOW is now the operational backbone of your CLI workflow."));
116
- return 0;
117
- }
118
-