@ranker/raxflow 0.2.2 → 0.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/benchmark.d.ts +10 -0
- package/dist/benchmark.d.ts.map +1 -0
- package/dist/benchmark.js +123 -0
- package/dist/benchmark.js.map +1 -0
- package/dist/bin.d.ts +3 -0
- package/dist/bin.d.ts.map +1 -0
- package/dist/bin.js +141 -0
- package/dist/bin.js.map +1 -0
- package/dist/bootstrap.d.ts +8 -0
- package/dist/bootstrap.d.ts.map +1 -0
- package/dist/bootstrap.js +22 -0
- package/dist/bootstrap.js.map +1 -0
- package/dist/bridge-adapter-templates.d.ts +4 -0
- package/dist/bridge-adapter-templates.d.ts.map +1 -0
- package/dist/bridge-adapter-templates.js +185 -0
- package/dist/bridge-adapter-templates.js.map +1 -0
- package/dist/bridge-test.d.ts +7 -0
- package/dist/bridge-test.d.ts.map +1 -0
- package/dist/bridge-test.js +89 -0
- package/dist/bridge-test.js.map +1 -0
- package/dist/dashboard.d.ts +4 -0
- package/dist/dashboard.d.ts.map +1 -0
- package/{src/dashboard.ts → dist/dashboard.js} +8 -10
- package/dist/dashboard.js.map +1 -0
- package/dist/doctor.d.ts +6 -0
- package/dist/doctor.d.ts.map +1 -0
- package/dist/doctor.js +70 -0
- package/dist/doctor.js.map +1 -0
- package/dist/evolve.d.ts +7 -0
- package/dist/evolve.d.ts.map +1 -0
- package/{src/evolve.ts → dist/evolve.js} +7 -33
- package/dist/evolve.js.map +1 -0
- package/dist/host-init-templates.d.ts +16 -0
- package/dist/host-init-templates.d.ts.map +1 -0
- package/dist/host-init-templates.js +119 -0
- package/dist/host-init-templates.js.map +1 -0
- package/dist/hub/__tests__/commands.test.d.ts +2 -0
- package/dist/hub/__tests__/commands.test.d.ts.map +1 -0
- package/dist/hub/__tests__/commands.test.js +72 -0
- package/dist/hub/__tests__/commands.test.js.map +1 -0
- package/dist/hub/__tests__/history.test.d.ts +2 -0
- package/dist/hub/__tests__/history.test.d.ts.map +1 -0
- package/dist/hub/__tests__/history.test.js +119 -0
- package/dist/hub/__tests__/history.test.js.map +1 -0
- package/dist/hub/__tests__/parser.test.d.ts +2 -0
- package/dist/hub/__tests__/parser.test.d.ts.map +1 -0
- package/dist/hub/__tests__/parser.test.js +92 -0
- package/dist/hub/__tests__/parser.test.js.map +1 -0
- package/dist/hub/commands/agents.d.ts +3 -0
- package/dist/hub/commands/agents.d.ts.map +1 -0
- package/dist/hub/commands/agents.js +36 -0
- package/dist/hub/commands/agents.js.map +1 -0
- package/dist/hub/commands/index.d.ts +4 -0
- package/dist/hub/commands/index.d.ts.map +1 -0
- package/dist/hub/commands/index.js +123 -0
- package/dist/hub/commands/index.js.map +1 -0
- package/dist/hub/commands/logs.d.ts +3 -0
- package/dist/hub/commands/logs.d.ts.map +1 -0
- package/dist/hub/commands/logs.js +53 -0
- package/dist/hub/commands/logs.js.map +1 -0
- package/dist/hub/commands/memory.d.ts +3 -0
- package/dist/hub/commands/memory.d.ts.map +1 -0
- package/dist/hub/commands/memory.js +40 -0
- package/dist/hub/commands/memory.js.map +1 -0
- package/dist/hub/commands/metrics.d.ts +3 -0
- package/dist/hub/commands/metrics.d.ts.map +1 -0
- package/dist/hub/commands/metrics.js +35 -0
- package/dist/hub/commands/metrics.js.map +1 -0
- package/dist/hub/commands/providers.d.ts +3 -0
- package/dist/hub/commands/providers.d.ts.map +1 -0
- package/dist/hub/commands/providers.js +26 -0
- package/dist/hub/commands/providers.js.map +1 -0
- package/dist/hub/commands/run.d.ts +3 -0
- package/dist/hub/commands/run.d.ts.map +1 -0
- package/dist/hub/commands/run.js +31 -0
- package/dist/hub/commands/run.js.map +1 -0
- package/dist/hub/commands/status.d.ts +3 -0
- package/dist/hub/commands/status.d.ts.map +1 -0
- package/dist/hub/commands/status.js +61 -0
- package/dist/hub/commands/status.js.map +1 -0
- package/dist/hub/commands/workflows.d.ts +3 -0
- package/dist/hub/commands/workflows.d.ts.map +1 -0
- package/dist/hub/commands/workflows.js +45 -0
- package/dist/hub/commands/workflows.js.map +1 -0
- package/dist/hub/config-loader.d.ts +4 -0
- package/dist/hub/config-loader.d.ts.map +1 -0
- package/dist/hub/config-loader.js +27 -0
- package/dist/hub/config-loader.js.map +1 -0
- package/dist/hub/event-listener.d.ts +6 -0
- package/dist/hub/event-listener.d.ts.map +1 -0
- package/dist/hub/event-listener.js +12 -0
- package/dist/hub/event-listener.js.map +1 -0
- package/dist/hub/history.d.ts +13 -0
- package/dist/hub/history.d.ts.map +1 -0
- package/dist/hub/history.js +59 -0
- package/dist/hub/history.js.map +1 -0
- package/dist/hub/index.d.ts +4 -0
- package/dist/hub/index.d.ts.map +1 -0
- package/dist/hub/index.js +114 -0
- package/dist/hub/index.js.map +1 -0
- package/dist/hub/parser.d.ts +4 -0
- package/dist/hub/parser.d.ts.map +1 -0
- package/dist/hub/parser.js +98 -0
- package/dist/hub/parser.js.map +1 -0
- package/dist/hub/styles/borders.d.ts +23 -0
- package/dist/hub/styles/borders.d.ts.map +1 -0
- package/dist/hub/styles/borders.js +64 -0
- package/dist/hub/styles/borders.js.map +1 -0
- package/dist/hub/styles/colors.d.ts +63 -0
- package/dist/hub/styles/colors.d.ts.map +1 -0
- package/dist/hub/styles/colors.js +115 -0
- package/dist/hub/styles/colors.js.map +1 -0
- package/dist/hub/styles/typography.d.ts +34 -0
- package/dist/hub/styles/typography.d.ts.map +1 -0
- package/dist/hub/styles/typography.js +60 -0
- package/dist/hub/styles/typography.js.map +1 -0
- package/dist/hub/types.d.ts +27 -0
- package/dist/hub/types.d.ts.map +1 -0
- package/dist/hub/types.js +2 -0
- package/dist/hub/types.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/{src/index.ts → dist/index.js} +1 -0
- package/dist/index.js.map +1 -0
- package/dist/init-host.d.ts +10 -0
- package/dist/init-host.d.ts.map +1 -0
- package/dist/init-host.js +232 -0
- package/dist/init-host.js.map +1 -0
- package/dist/install.d.ts +8 -0
- package/dist/install.d.ts.map +1 -0
- package/dist/install.js +99 -0
- package/dist/install.js.map +1 -0
- package/dist/run.d.ts +16 -0
- package/dist/run.d.ts.map +1 -0
- package/dist/run.js +238 -0
- package/dist/run.js.map +1 -0
- package/dist/setup/components/ApiKeyInput.d.ts +25 -0
- package/dist/setup/components/ApiKeyInput.d.ts.map +1 -0
- package/dist/setup/components/ApiKeyInput.js +54 -0
- package/dist/setup/components/ApiKeyInput.js.map +1 -0
- package/dist/setup/components/AsciiBanner.d.ts +22 -0
- package/dist/setup/components/AsciiBanner.d.ts.map +1 -0
- package/{src/setup/components/AsciiBanner.tsx → dist/setup/components/AsciiBanner.js} +24 -94
- package/dist/setup/components/AsciiBanner.js.map +1 -0
- package/dist/setup/components/CliDetector.d.ts +17 -0
- package/dist/setup/components/CliDetector.d.ts.map +1 -0
- package/dist/setup/components/CliDetector.js +81 -0
- package/dist/setup/components/CliDetector.js.map +1 -0
- package/dist/setup/components/ModeSelector.d.ts +8 -0
- package/dist/setup/components/ModeSelector.d.ts.map +1 -0
- package/dist/setup/components/ModeSelector.js +76 -0
- package/dist/setup/components/ModeSelector.js.map +1 -0
- package/dist/setup/components/ProviderSelector.d.ts +18 -0
- package/dist/setup/components/ProviderSelector.d.ts.map +1 -0
- package/dist/setup/components/ProviderSelector.js +98 -0
- package/dist/setup/components/ProviderSelector.js.map +1 -0
- package/dist/setup/components/SetupWizard.d.ts +2 -0
- package/dist/setup/components/SetupWizard.d.ts.map +1 -0
- package/dist/setup/components/SetupWizard.js +212 -0
- package/dist/setup/components/SetupWizard.js.map +1 -0
- package/dist/setup/components/StepIndicator.d.ts +13 -0
- package/dist/setup/components/StepIndicator.d.ts.map +1 -0
- package/dist/setup/components/StepIndicator.js +18 -0
- package/dist/setup/components/StepIndicator.js.map +1 -0
- package/dist/setup/components/SuccessScreen.d.ts +18 -0
- package/dist/setup/components/SuccessScreen.d.ts.map +1 -0
- package/dist/setup/components/SuccessScreen.js +38 -0
- package/dist/setup/components/SuccessScreen.js.map +1 -0
- package/dist/setup/index.d.ts +12 -0
- package/dist/setup/index.d.ts.map +1 -0
- package/{src/setup/index.ts → dist/setup/index.js} +14 -19
- package/dist/setup/index.js.map +1 -0
- package/dist/setup/utils/cli-detection.d.ts +12 -0
- package/dist/setup/utils/cli-detection.d.ts.map +1 -0
- package/dist/setup/utils/cli-detection.js +83 -0
- package/dist/setup/utils/cli-detection.js.map +1 -0
- package/dist/setup/utils/config-writer.d.ts +43 -0
- package/dist/setup/utils/config-writer.d.ts.map +1 -0
- package/dist/setup/utils/config-writer.js +180 -0
- package/dist/setup/utils/config-writer.js.map +1 -0
- package/dist/styles.d.ts +12 -0
- package/dist/styles.d.ts.map +1 -0
- package/dist/styles.js +12 -0
- package/dist/styles.js.map +1 -0
- package/dist/tui/App.d.ts +3 -0
- package/dist/tui/App.d.ts.map +1 -0
- package/dist/tui/App.js +136 -0
- package/dist/tui/App.js.map +1 -0
- package/dist/tui/components/AgentStateIcon.d.ts +18 -0
- package/dist/tui/components/AgentStateIcon.d.ts.map +1 -0
- package/dist/tui/components/AgentStateIcon.js +57 -0
- package/dist/tui/components/AgentStateIcon.js.map +1 -0
- package/dist/tui/components/AnimatedBranch.d.ts +39 -0
- package/dist/tui/components/AnimatedBranch.d.ts.map +1 -0
- package/dist/tui/components/AnimatedBranch.js +64 -0
- package/dist/tui/components/AnimatedBranch.js.map +1 -0
- package/dist/tui/components/ChatPanel.d.ts +17 -0
- package/dist/tui/components/ChatPanel.d.ts.map +1 -0
- package/dist/tui/components/ChatPanel.js +51 -0
- package/dist/tui/components/ChatPanel.js.map +1 -0
- package/dist/tui/components/DAGPanel.d.ts +37 -0
- package/dist/tui/components/DAGPanel.d.ts.map +1 -0
- package/dist/tui/components/DAGPanel.js +52 -0
- package/dist/tui/components/DAGPanel.js.map +1 -0
- package/dist/tui/components/ExecutionTimeline.d.ts +34 -0
- package/dist/tui/components/ExecutionTimeline.d.ts.map +1 -0
- package/dist/tui/components/ExecutionTimeline.js +67 -0
- package/dist/tui/components/ExecutionTimeline.js.map +1 -0
- package/dist/tui/components/Header.d.ts +12 -0
- package/dist/tui/components/Header.d.ts.map +1 -0
- package/dist/tui/components/Header.js +32 -0
- package/dist/tui/components/Header.js.map +1 -0
- package/dist/tui/components/HelpOverlay.d.ts +7 -0
- package/dist/tui/components/HelpOverlay.d.ts.map +1 -0
- package/dist/tui/components/HelpOverlay.js +60 -0
- package/dist/tui/components/HelpOverlay.js.map +1 -0
- package/dist/tui/components/InputBar.d.ts +10 -0
- package/dist/tui/components/InputBar.d.ts.map +1 -0
- package/dist/tui/components/InputBar.js +21 -0
- package/dist/tui/components/InputBar.js.map +1 -0
- package/dist/tui/components/LogsPanel.d.ts +10 -0
- package/dist/tui/components/MemoryPanel.d.ts +22 -0
- package/dist/tui/components/MetricsPanel.d.ts +19 -0
- package/dist/tui/components/StatusPanel.d.ts +24 -0
- package/dist/tui/components/TaskTree.d.ts +28 -0
- package/dist/tui/components/TaskTree.d.ts.map +1 -0
- package/dist/tui/components/TaskTree.js +29 -0
- package/dist/tui/components/TaskTree.js.map +1 -0
- package/dist/tui/components/animations/ProgressBar.d.ts +39 -0
- package/dist/tui/components/animations/ProgressBar.d.ts.map +1 -0
- package/dist/tui/components/animations/ProgressBar.js +39 -0
- package/dist/tui/components/animations/ProgressBar.js.map +1 -0
- package/dist/tui/components/animations/Pulse.d.ts +17 -0
- package/dist/tui/components/animations/Pulse.d.ts.map +1 -0
- package/dist/tui/components/animations/Pulse.js +47 -0
- package/dist/tui/components/animations/Pulse.js.map +1 -0
- package/dist/tui/components/animations/Spinner.d.ts +13 -0
- package/dist/tui/components/animations/Spinner.d.ts.map +1 -0
- package/dist/tui/components/animations/Spinner.js +36 -0
- package/dist/tui/components/animations/Spinner.js.map +1 -0
- package/dist/tui/components/animations/StatusAnimator.d.ts +27 -0
- package/dist/tui/components/animations/StatusAnimator.d.ts.map +1 -0
- package/dist/tui/components/animations/StatusAnimator.js +85 -0
- package/dist/tui/components/animations/StatusAnimator.js.map +1 -0
- package/dist/tui/components/animations/TypingEffect.d.ts +26 -0
- package/dist/tui/components/animations/TypingEffect.d.ts.map +1 -0
- package/dist/tui/components/animations/TypingEffect.js +59 -0
- package/dist/tui/components/animations/TypingEffect.js.map +1 -0
- package/{src/tui/components/animations/index.ts → dist/tui/components/animations/index.d.ts} +2 -10
- package/dist/tui/components/animations/index.d.ts.map +1 -0
- package/dist/tui/components/animations/index.js +6 -0
- package/dist/tui/components/animations/index.js.map +1 -0
- package/dist/tui/hooks/useAnimation.d.ts +42 -0
- package/dist/tui/hooks/useAnimation.d.ts.map +1 -0
- package/dist/tui/hooks/useAnimation.js +212 -0
- package/dist/tui/hooks/useAnimation.js.map +1 -0
- package/dist/tui/hooks/useAppState.d.ts +65 -0
- package/dist/tui/hooks/useAppState.d.ts.map +1 -0
- package/dist/tui/hooks/useAppState.js +293 -0
- package/dist/tui/hooks/useAppState.js.map +1 -0
- package/dist/tui/index.d.ts +3 -0
- package/dist/tui/index.d.ts.map +1 -0
- package/{src/tui/index.ts → dist/tui/index.js} +2 -3
- package/dist/tui/index.js.map +1 -0
- package/dist/tui/services/orchestrator.d.ts +16 -0
- package/dist/tui/services/orchestrator.d.ts.map +1 -0
- package/dist/tui/services/orchestrator.js +152 -0
- package/dist/tui/services/orchestrator.js.map +1 -0
- package/dist/tui/styles/borders.d.ts +31 -0
- package/dist/tui/styles/borders.d.ts.map +1 -0
- package/dist/tui/styles/borders.js +47 -0
- package/dist/tui/styles/borders.js.map +1 -0
- package/dist/tui/styles/colors.d.ts +18 -0
- package/dist/tui/styles/colors.d.ts.map +1 -0
- package/dist/tui/styles/colors.js +18 -0
- package/dist/tui/styles/colors.js.map +1 -0
- package/dist/tui/styles/index.d.ts +6 -0
- package/dist/tui/styles/index.d.ts.map +1 -0
- package/dist/tui/styles/index.js +6 -0
- package/dist/tui/styles/index.js.map +1 -0
- package/dist/tui/styles/indicators.d.ts +67 -0
- package/dist/tui/styles/indicators.d.ts.map +1 -0
- package/dist/tui/styles/indicators.js +42 -0
- package/dist/tui/styles/indicators.js.map +1 -0
- package/dist/tui/styles/layout.d.ts +21 -0
- package/dist/tui/styles/layout.d.ts.map +1 -0
- package/dist/tui/styles/layout.js +42 -0
- package/dist/tui/styles/layout.js.map +1 -0
- package/dist/tui/styles/providers.d.ts +77 -0
- package/dist/tui/styles/providers.d.ts.map +1 -0
- package/dist/tui/styles/providers.js +31 -0
- package/dist/tui/styles/providers.js.map +1 -0
- package/dist/tui/utils/animation.d.ts +44 -0
- package/dist/tui/utils/animation.d.ts.map +1 -0
- package/dist/tui/utils/animation.js +107 -0
- package/dist/tui/utils/animation.js.map +1 -0
- package/dist/vendor-manifests.d.ts +22 -0
- package/dist/vendor-manifests.d.ts.map +1 -0
- package/dist/vendor-manifests.js +94 -0
- package/dist/vendor-manifests.js.map +1 -0
- package/dist/ws-relay.d.ts +12 -0
- package/dist/ws-relay.d.ts.map +1 -0
- package/{src/ws-relay.ts → dist/ws-relay.js} +39 -47
- package/dist/ws-relay.js.map +1 -0
- package/package.json +5 -1
- package/dashboard/index.html +0 -420
- package/src/benchmark.ts +0 -156
- package/src/bin.ts +0 -156
- package/src/bootstrap.ts +0 -36
- package/src/bridge-adapter-templates.ts +0 -181
- package/src/bridge-test.ts +0 -107
- package/src/doctor.ts +0 -92
- package/src/host-init-templates.ts +0 -134
- package/src/hub/__tests__/commands.test.ts +0 -84
- package/src/hub/__tests__/history.test.ts +0 -137
- package/src/hub/__tests__/parser.test.ts +0 -105
- package/src/hub/commands/agents.ts +0 -53
- package/src/hub/commands/index.ts +0 -140
- package/src/hub/commands/logs.ts +0 -70
- package/src/hub/commands/memory.ts +0 -47
- package/src/hub/commands/metrics.ts +0 -49
- package/src/hub/commands/providers.ts +0 -39
- package/src/hub/commands/run.ts +0 -37
- package/src/hub/commands/status.ts +0 -69
- package/src/hub/commands/workflows.ts +0 -64
- package/src/hub/config-loader.ts +0 -37
- package/src/hub/event-listener.ts +0 -17
- package/src/hub/history.ts +0 -66
- package/src/hub/index.ts +0 -132
- package/src/hub/parser.ts +0 -107
- package/src/hub/styles/borders.ts +0 -74
- package/src/hub/styles/colors.ts +0 -129
- package/src/hub/styles/typography.ts +0 -68
- package/src/hub/types.ts +0 -31
- package/src/init-host.ts +0 -285
- package/src/install.ts +0 -118
- package/src/run.ts +0 -317
- package/src/setup/components/ApiKeyInput.tsx +0 -158
- package/src/setup/components/CliDetector.tsx +0 -230
- package/src/setup/components/ModeSelector.tsx +0 -137
- package/src/setup/components/ProviderSelector.tsx +0 -175
- package/src/setup/components/SetupWizard.tsx +0 -368
- package/src/setup/components/StepIndicator.tsx +0 -74
- package/src/setup/components/SuccessScreen.tsx +0 -229
- package/src/setup/utils/cli-detection.ts +0 -99
- package/src/setup/utils/config-writer.ts +0 -249
- package/src/styles.ts +0 -12
- package/src/tui/App.tsx +0 -183
- package/src/tui/components/AgentStateIcon.tsx +0 -84
- package/src/tui/components/AnimatedBranch.tsx +0 -134
- package/src/tui/components/ChatPanel.tsx +0 -128
- package/src/tui/components/DAGPanel.tsx +0 -212
- package/src/tui/components/ExecutionTimeline.tsx +0 -225
- package/src/tui/components/Header.tsx +0 -109
- package/src/tui/components/HelpOverlay.tsx +0 -140
- package/src/tui/components/InputBar.tsx +0 -69
- package/src/tui/components/LogsPanel.tsx +0 -132
- package/src/tui/components/MemoryPanel.tsx +0 -166
- package/src/tui/components/MetricsPanel.tsx +0 -152
- package/src/tui/components/StatusPanel.tsx +0 -140
- package/src/tui/components/TaskTree.tsx +0 -159
- package/src/tui/components/animations/ProgressBar.tsx +0 -160
- package/src/tui/components/animations/Pulse.tsx +0 -73
- package/src/tui/components/animations/Spinner.tsx +0 -54
- package/src/tui/components/animations/StatusAnimator.tsx +0 -153
- package/src/tui/components/animations/TypingEffect.tsx +0 -119
- package/src/tui/hooks/useAnimation.ts +0 -290
- package/src/tui/hooks/useAppState.ts +0 -403
- package/src/tui/services/orchestrator.ts +0 -195
- package/src/tui/styles/borders.ts +0 -51
- package/src/tui/styles/colors.ts +0 -19
- package/src/tui/styles/index.ts +0 -20
- package/src/tui/styles/indicators.ts +0 -54
- package/src/tui/styles/layout.ts +0 -44
- package/src/tui/styles/providers.ts +0 -32
- package/src/tui/utils/animation.ts +0 -124
- package/src/vendor-manifests.ts +0 -113
- package/tsconfig.json +0 -28
package/src/hub/parser.ts
DELETED
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
import { Command } from "./types.js";
|
|
2
|
-
|
|
3
|
-
const BOOLEAN_FLAGS = new Set([
|
|
4
|
-
"stream",
|
|
5
|
-
"json",
|
|
6
|
-
"f",
|
|
7
|
-
"force",
|
|
8
|
-
"verbose",
|
|
9
|
-
"quiet",
|
|
10
|
-
"dry-run",
|
|
11
|
-
"yes",
|
|
12
|
-
"help",
|
|
13
|
-
]);
|
|
14
|
-
|
|
15
|
-
export function parseCommand(input: string): Command {
|
|
16
|
-
const tokens = input.trim().split(/\s+/);
|
|
17
|
-
const name = tokens[0] || "";
|
|
18
|
-
const args: string[] = [];
|
|
19
|
-
const flags: Record<string, string | boolean> = {};
|
|
20
|
-
|
|
21
|
-
for (let i = 1; i < tokens.length; i++) {
|
|
22
|
-
const token = tokens[i];
|
|
23
|
-
if (token.startsWith("--")) {
|
|
24
|
-
const flagName = token.slice(2);
|
|
25
|
-
const nextToken = tokens[i + 1];
|
|
26
|
-
if (nextToken && !nextToken.startsWith("-") && !BOOLEAN_FLAGS.has(flagName)) {
|
|
27
|
-
flags[flagName] = nextToken;
|
|
28
|
-
i++;
|
|
29
|
-
} else {
|
|
30
|
-
flags[flagName] = true;
|
|
31
|
-
}
|
|
32
|
-
} else if (token.startsWith("-")) {
|
|
33
|
-
const flagName = token.slice(1);
|
|
34
|
-
const nextToken = tokens[i + 1];
|
|
35
|
-
if (nextToken && !nextToken.startsWith("-") && !BOOLEAN_FLAGS.has(flagName)) {
|
|
36
|
-
flags[flagName] = nextToken;
|
|
37
|
-
i++;
|
|
38
|
-
} else {
|
|
39
|
-
flags[flagName] = true;
|
|
40
|
-
}
|
|
41
|
-
} else {
|
|
42
|
-
args.push(token);
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
return { name, args, flags };
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
export function getCompletions(partial: string, _context?: unknown): string[] {
|
|
50
|
-
const commands = [
|
|
51
|
-
"run",
|
|
52
|
-
"status",
|
|
53
|
-
"agents",
|
|
54
|
-
"providers",
|
|
55
|
-
"workflows",
|
|
56
|
-
"logs",
|
|
57
|
-
"metrics",
|
|
58
|
-
"memory",
|
|
59
|
-
"install",
|
|
60
|
-
"config",
|
|
61
|
-
"doctor",
|
|
62
|
-
"bridge-test",
|
|
63
|
-
"benchmark",
|
|
64
|
-
"evolve",
|
|
65
|
-
"dashboard",
|
|
66
|
-
"ui",
|
|
67
|
-
"chat",
|
|
68
|
-
"help",
|
|
69
|
-
"exit",
|
|
70
|
-
"quit",
|
|
71
|
-
];
|
|
72
|
-
|
|
73
|
-
if (!partial) {
|
|
74
|
-
return commands;
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
const trimmed = partial.trim();
|
|
78
|
-
const endsWithSpace = partial.endsWith(" ");
|
|
79
|
-
const tokens = trimmed.split(/\s+/);
|
|
80
|
-
const currentWord = endsWithSpace ? "" : tokens[tokens.length - 1];
|
|
81
|
-
|
|
82
|
-
if (tokens.length === 1 && !endsWithSpace) {
|
|
83
|
-
return commands.filter((c) => c.startsWith(currentWord));
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
const command = tokens[0];
|
|
87
|
-
const isKnownCommand = commands.includes(command);
|
|
88
|
-
|
|
89
|
-
if (!isKnownCommand) {
|
|
90
|
-
return [];
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
switch (command) {
|
|
94
|
-
case "run":
|
|
95
|
-
return ["--workflow", "--max-parallel", "--stream", "--json"].filter((c) =>
|
|
96
|
-
c.startsWith(currentWord)
|
|
97
|
-
);
|
|
98
|
-
case "logs":
|
|
99
|
-
return ["-f", "--agent", "--level"].filter((c) => c.startsWith(currentWord));
|
|
100
|
-
case "agents":
|
|
101
|
-
case "providers":
|
|
102
|
-
case "workflows":
|
|
103
|
-
return [];
|
|
104
|
-
default:
|
|
105
|
-
return [];
|
|
106
|
-
}
|
|
107
|
-
}
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
// RAXFLOW Design System - Borders and Boxes
|
|
2
|
-
// Brutalist style: no border-radius, sharp corners
|
|
3
|
-
|
|
4
|
-
export const borders = {
|
|
5
|
-
// Border characters for ASCII boxes
|
|
6
|
-
horizontal: "─",
|
|
7
|
-
vertical: "│",
|
|
8
|
-
topLeft: "┌",
|
|
9
|
-
topRight: "┐",
|
|
10
|
-
bottomLeft: "└",
|
|
11
|
-
bottomRight: "┘",
|
|
12
|
-
leftT: "├",
|
|
13
|
-
rightT: "┤",
|
|
14
|
-
topT: "┬",
|
|
15
|
-
bottomT: "┴",
|
|
16
|
-
cross: "┼",
|
|
17
|
-
|
|
18
|
-
// Double line (for emphasis)
|
|
19
|
-
doubleHorizontal: "═",
|
|
20
|
-
doubleVertical: "║",
|
|
21
|
-
doubleTopLeft: "╔",
|
|
22
|
-
doubleTopRight: "╗",
|
|
23
|
-
doubleBottomLeft: "╚",
|
|
24
|
-
doubleBottomRight: "╝",
|
|
25
|
-
};
|
|
26
|
-
|
|
27
|
-
// Box drawing utilities
|
|
28
|
-
export function drawBox(content: string[], width: number, title?: string): string {
|
|
29
|
-
const { topLeft, topRight, bottomLeft, bottomRight, horizontal, vertical } = borders;
|
|
30
|
-
|
|
31
|
-
const lines: string[] = [];
|
|
32
|
-
|
|
33
|
-
// Top border
|
|
34
|
-
if (title) {
|
|
35
|
-
const titleStr = ` ${title} `;
|
|
36
|
-
const sideWidth = Math.floor((width - titleStr.length - 2) / 2);
|
|
37
|
-
const leftSide = horizontal.repeat(sideWidth);
|
|
38
|
-
const rightSide = horizontal.repeat(width - titleStr.length - 2 - sideWidth);
|
|
39
|
-
lines.push(`${topLeft}${leftSide}${titleStr}${rightSide}${topRight}`);
|
|
40
|
-
} else {
|
|
41
|
-
lines.push(`${topLeft}${horizontal.repeat(width - 2)}${topRight}`);
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
// Content
|
|
45
|
-
for (const line of content) {
|
|
46
|
-
const padded = line.padEnd(width - 2, " ").slice(0, width - 2);
|
|
47
|
-
lines.push(`${vertical}${padded}${vertical}`);
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
// Bottom border
|
|
51
|
-
lines.push(`${bottomLeft}${horizontal.repeat(width - 2)}${bottomRight}`);
|
|
52
|
-
|
|
53
|
-
return lines.join("\n");
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
export function drawSeparator(width: number, title?: string): string {
|
|
57
|
-
const { leftT, rightT, horizontal } = borders;
|
|
58
|
-
|
|
59
|
-
if (title) {
|
|
60
|
-
const titleStr = ` ${title} `;
|
|
61
|
-
const sideWidth = Math.floor((width - titleStr.length - 2) / 2);
|
|
62
|
-
const leftSide = horizontal.repeat(sideWidth);
|
|
63
|
-
const rightSide = horizontal.repeat(width - titleStr.length - 2 - sideWidth);
|
|
64
|
-
return `${leftT}${leftSide}${titleStr}${rightSide}${rightT}`;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
return `${leftT}${horizontal.repeat(width - 2)}${rightT}`;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
export function drawProgressBar(percent: number, width: number = 20): string {
|
|
71
|
-
const filled = Math.floor((percent / 100) * width);
|
|
72
|
-
const empty = width - filled;
|
|
73
|
-
return "█".repeat(filled) + "░".repeat(empty);
|
|
74
|
-
}
|
package/src/hub/styles/colors.ts
DELETED
|
@@ -1,129 +0,0 @@
|
|
|
1
|
-
// RAXFLOW Design System - Colors
|
|
2
|
-
// Based on cli-design.md specifications
|
|
3
|
-
|
|
4
|
-
export const colors = {
|
|
5
|
-
// Backgrounds
|
|
6
|
-
background: "#050505",
|
|
7
|
-
surface: "#0a0a0a",
|
|
8
|
-
surfaceElev: "#0d0d0d",
|
|
9
|
-
|
|
10
|
-
// Primary
|
|
11
|
-
primary: "#f97316", // Orange vif
|
|
12
|
-
primaryGlow: "rgba(249, 115, 22, 0.3)",
|
|
13
|
-
primaryGlowHover: "rgba(249, 115, 22, 0.5)",
|
|
14
|
-
|
|
15
|
-
// Text
|
|
16
|
-
textPrimary: "#ffffff",
|
|
17
|
-
textSecondary: "#a1a1aa",
|
|
18
|
-
textTertiary: "#71717a",
|
|
19
|
-
textQuaternary: "#3f3f46",
|
|
20
|
-
|
|
21
|
-
// Status
|
|
22
|
-
success: "#22c55e",
|
|
23
|
-
warning: "#f59e0b",
|
|
24
|
-
error: "#ef4444",
|
|
25
|
-
|
|
26
|
-
// Borders
|
|
27
|
-
border: "#27272a",
|
|
28
|
-
|
|
29
|
-
// Mutations
|
|
30
|
-
mutation: "#f59e0b",
|
|
31
|
-
mutationGlow: "rgba(245, 158, 11, 0.4)",
|
|
32
|
-
};
|
|
33
|
-
|
|
34
|
-
// ANSI color codes for terminal
|
|
35
|
-
export const ansiColors = {
|
|
36
|
-
reset: "\x1b[0m",
|
|
37
|
-
bright: "\x1b[1m",
|
|
38
|
-
dim: "\x1b[2m",
|
|
39
|
-
|
|
40
|
-
// Foreground colors
|
|
41
|
-
black: "\x1b[30m",
|
|
42
|
-
red: "\x1b[31m",
|
|
43
|
-
green: "\x1b[32m",
|
|
44
|
-
yellow: "\x1b[33m",
|
|
45
|
-
blue: "\x1b[34m",
|
|
46
|
-
magenta: "\x1b[35m",
|
|
47
|
-
cyan: "\x1b[36m",
|
|
48
|
-
white: "\x1b[37m",
|
|
49
|
-
gray: "\x1b[90m",
|
|
50
|
-
|
|
51
|
-
// Bright colors
|
|
52
|
-
brightRed: "\x1b[91m",
|
|
53
|
-
brightGreen: "\x1b[92m",
|
|
54
|
-
brightYellow: "\x1b[93m",
|
|
55
|
-
brightBlue: "\x1b[94m",
|
|
56
|
-
brightMagenta: "\x1b[95m",
|
|
57
|
-
brightCyan: "\x1b[96m",
|
|
58
|
-
brightWhite: "\x1b[97m",
|
|
59
|
-
|
|
60
|
-
// Background colors
|
|
61
|
-
bgBlack: "\x1b[40m",
|
|
62
|
-
bgRed: "\x1b[41m",
|
|
63
|
-
bgGreen: "\x1b[42m",
|
|
64
|
-
bgYellow: "\x1b[43m",
|
|
65
|
-
bgBlue: "\x1b[44m",
|
|
66
|
-
bgMagenta: "\x1b[45m",
|
|
67
|
-
bgCyan: "\x1b[46m",
|
|
68
|
-
bgWhite: "\x1b[47m",
|
|
69
|
-
bgGray: "\x1b[100m",
|
|
70
|
-
};
|
|
71
|
-
|
|
72
|
-
// Status indicators
|
|
73
|
-
export const statusIndicators = {
|
|
74
|
-
online: "●",
|
|
75
|
-
offline: "○",
|
|
76
|
-
running: "▶",
|
|
77
|
-
loading: "◐",
|
|
78
|
-
mutation: "◆",
|
|
79
|
-
checkpoint: "■",
|
|
80
|
-
pending: "○",
|
|
81
|
-
done: "✓",
|
|
82
|
-
};
|
|
83
|
-
|
|
84
|
-
// Provider indicators
|
|
85
|
-
export const providerIndicators: Record<string, string> = {
|
|
86
|
-
host: "[H]",
|
|
87
|
-
claude: "[C]",
|
|
88
|
-
opencode: "[O]",
|
|
89
|
-
kilo: "[K]",
|
|
90
|
-
anthropic: "[A]",
|
|
91
|
-
gemini: "[G]",
|
|
92
|
-
mistral: "[M]",
|
|
93
|
-
groq: "[Q]",
|
|
94
|
-
openai: "[O]",
|
|
95
|
-
};
|
|
96
|
-
|
|
97
|
-
// Utility functions
|
|
98
|
-
export function colorize(text: string, color: keyof typeof ansiColors): string {
|
|
99
|
-
return `${ansiColors[color]}${text}${ansiColors.reset}`;
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
export function statusColor(status: string): string {
|
|
103
|
-
switch (status.toLowerCase()) {
|
|
104
|
-
case "online":
|
|
105
|
-
case "ready":
|
|
106
|
-
case "active":
|
|
107
|
-
case "done":
|
|
108
|
-
case "success":
|
|
109
|
-
return ansiColors.green;
|
|
110
|
-
case "running":
|
|
111
|
-
case "busy":
|
|
112
|
-
return ansiColors.yellow;
|
|
113
|
-
case "error":
|
|
114
|
-
case "failed":
|
|
115
|
-
return ansiColors.red;
|
|
116
|
-
case "queued":
|
|
117
|
-
case "pending":
|
|
118
|
-
case "idle":
|
|
119
|
-
return ansiColors.gray;
|
|
120
|
-
default:
|
|
121
|
-
return ansiColors.reset;
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
export function formatStatus(status: string): string {
|
|
126
|
-
const indicator = statusIndicators[status.toLowerCase() as keyof typeof statusIndicators] || "○";
|
|
127
|
-
const color = statusColor(status);
|
|
128
|
-
return `${color}${indicator}${ansiColors.reset}`;
|
|
129
|
-
}
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
// RAXFLOW Design System - Typography
|
|
2
|
-
// Space Grotesk for titles, Space Mono for system text
|
|
3
|
-
|
|
4
|
-
export const typography = {
|
|
5
|
-
// Font families
|
|
6
|
-
primary: "Space Grotesk",
|
|
7
|
-
monospace: "Space Mono",
|
|
8
|
-
|
|
9
|
-
// Font weights
|
|
10
|
-
weights: {
|
|
11
|
-
light: 300,
|
|
12
|
-
regular: 400,
|
|
13
|
-
medium: 500,
|
|
14
|
-
bold: 700,
|
|
15
|
-
},
|
|
16
|
-
|
|
17
|
-
// Sizes (in terminal columns roughly)
|
|
18
|
-
sizes: {
|
|
19
|
-
hero: 4, // text-4xl
|
|
20
|
-
section: 2, // text-2xl
|
|
21
|
-
label: 0, // text-[10px]
|
|
22
|
-
body: 1, // text-sm
|
|
23
|
-
code: 0, // text-xs
|
|
24
|
-
status: -1, // text-[9px]
|
|
25
|
-
agent: 0, // text-xs
|
|
26
|
-
provider: -1, // text-[9px]
|
|
27
|
-
},
|
|
28
|
-
|
|
29
|
-
// Tracking (letter-spacing)
|
|
30
|
-
tracking: {
|
|
31
|
-
none: "",
|
|
32
|
-
tight: "",
|
|
33
|
-
normal: "",
|
|
34
|
-
wide: " ",
|
|
35
|
-
label: " ", // 0.15em equivalent in monospace
|
|
36
|
-
},
|
|
37
|
-
};
|
|
38
|
-
|
|
39
|
-
// Text formatting utilities for terminal
|
|
40
|
-
export function upperCase(text: string): string {
|
|
41
|
-
return text.toUpperCase();
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
export function padCenter(text: string, width: number): string {
|
|
45
|
-
const padding = Math.max(0, width - text.length);
|
|
46
|
-
const leftPad = Math.floor(padding / 2);
|
|
47
|
-
const rightPad = padding - leftPad;
|
|
48
|
-
return " ".repeat(leftPad) + text + " ".repeat(rightPad);
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
export function padRight(text: string, width: number): string {
|
|
52
|
-
const padding = Math.max(0, width - text.length);
|
|
53
|
-
return text + " ".repeat(padding);
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
export function padLeft(text: string, width: number): string {
|
|
57
|
-
const padding = Math.max(0, width - text.length);
|
|
58
|
-
return " ".repeat(padding) + text;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
export function truncate(text: string, maxLength: number): string {
|
|
62
|
-
if (text.length <= maxLength) return text;
|
|
63
|
-
return text.slice(0, maxLength - 3) + "...";
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
export function formatLabel(text: string): string {
|
|
67
|
-
return upperCase(text).split("").join(" ");
|
|
68
|
-
}
|
package/src/hub/types.ts
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
export interface HubOptions {
|
|
2
|
-
cwd: string;
|
|
3
|
-
config?: HubConfig;
|
|
4
|
-
}
|
|
5
|
-
|
|
6
|
-
export interface HubConfig {
|
|
7
|
-
project?: string;
|
|
8
|
-
providers?: string[];
|
|
9
|
-
theme?: 'industrial' | 'minimal' | 'high-contrast';
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
export interface Command {
|
|
13
|
-
name: string;
|
|
14
|
-
args: string[];
|
|
15
|
-
flags: Record<string, string | boolean>;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
export interface HubContext {
|
|
19
|
-
currentWorkflow?: string;
|
|
20
|
-
currentRun?: string;
|
|
21
|
-
config: HubConfig;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
export type CommandHandler = (args: string[], flags: Record<string, string | boolean>, context: HubContext) => Promise<void>;
|
|
25
|
-
|
|
26
|
-
export interface CommandDefinition {
|
|
27
|
-
name: string;
|
|
28
|
-
description: string;
|
|
29
|
-
handler: CommandHandler;
|
|
30
|
-
aliases?: string[];
|
|
31
|
-
}
|
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
|
-
}
|