@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
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
interface ApiKeyInputProps {
|
|
2
|
+
providerId: string;
|
|
3
|
+
providerName: string;
|
|
4
|
+
currentKey?: string;
|
|
5
|
+
envVar?: string;
|
|
6
|
+
onSetKey: (key: string) => void;
|
|
7
|
+
onSkip: () => void;
|
|
8
|
+
onBack: () => void;
|
|
9
|
+
}
|
|
10
|
+
export declare function ApiKeyInput({ providerId, providerName, currentKey, envVar, onSetKey, onSkip, onBack, }: ApiKeyInputProps): import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
interface ApiKeyCollectorProps {
|
|
12
|
+
providers: Array<{
|
|
13
|
+
id: string;
|
|
14
|
+
name: string;
|
|
15
|
+
requiresApiKey: boolean;
|
|
16
|
+
}>;
|
|
17
|
+
currentIndex: number;
|
|
18
|
+
keys: Record<string, string>;
|
|
19
|
+
onSetKey: (providerId: string, key: string) => void;
|
|
20
|
+
onSkip: () => void;
|
|
21
|
+
onBack: () => void;
|
|
22
|
+
}
|
|
23
|
+
export declare function ApiKeyCollector({ providers, currentIndex, keys, onSetKey, onSkip, onBack, }: ApiKeyCollectorProps): import("react/jsx-runtime").JSX.Element | null;
|
|
24
|
+
export {};
|
|
25
|
+
//# sourceMappingURL=ApiKeyInput.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ApiKeyInput.d.ts","sourceRoot":"","sources":["../../../src/setup/components/ApiKeyInput.tsx"],"names":[],"mappings":"AAIA,UAAU,gBAAgB;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,wBAAgB,WAAW,CAAC,EAC1B,UAAU,EACV,YAAY,EACZ,UAAU,EACV,MAAM,EACN,QAAQ,EACR,MAAM,EACN,MAAM,GACP,EAAE,gBAAgB,2CA0FlB;AAED,UAAU,oBAAoB;IAC5B,SAAS,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IACxE,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,QAAQ,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACpD,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAUD,wBAAgB,eAAe,CAAC,EAC9B,SAAS,EACT,YAAY,EACZ,IAAI,EACJ,QAAQ,EACR,MAAM,EACN,MAAM,GACP,EAAE,oBAAoB,kDAmBtB"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useState } from "react";
|
|
3
|
+
import { Box, Text, useInput } from "ink";
|
|
4
|
+
import TextInput from "ink-text-input";
|
|
5
|
+
export function ApiKeyInput({ providerId, providerName, currentKey, envVar, onSetKey, onSkip, onBack, }) {
|
|
6
|
+
const [inputValue, setInputValue] = useState(currentKey || "");
|
|
7
|
+
const [isEditing, setIsEditing] = useState(true);
|
|
8
|
+
const [showKey, setShowKey] = useState(false);
|
|
9
|
+
const PRIMARY = "#f97316";
|
|
10
|
+
const envValue = process.env[envVar || ""];
|
|
11
|
+
useInput((input, key) => {
|
|
12
|
+
if (!isEditing) {
|
|
13
|
+
if (key.return || input === "s") {
|
|
14
|
+
onSkip();
|
|
15
|
+
}
|
|
16
|
+
else if (input === "b") {
|
|
17
|
+
onBack();
|
|
18
|
+
}
|
|
19
|
+
else if (input === "e") {
|
|
20
|
+
setIsEditing(true);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
const handleSubmit = (value) => {
|
|
25
|
+
if (value.trim()) {
|
|
26
|
+
onSetKey(value.trim());
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
setIsEditing(false);
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
const maskedValue = (key) => {
|
|
33
|
+
if (key.length <= 8)
|
|
34
|
+
return "••••••••";
|
|
35
|
+
return key.slice(0, 4) + "•".repeat(8) + key.slice(-4);
|
|
36
|
+
};
|
|
37
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { marginBottom: 1, children: _jsxs(Text, { color: PRIMARY, bold: true, children: ["CONFIGURE ", providerName.toUpperCase()] }) }), envValue && (_jsxs(Box, { marginBottom: 1, children: [_jsx(Text, { color: "#22c55e", children: "\u2713" }), _jsx(Text, { color: "#a1a1aa", children: " Found key in " }), _jsx(Text, { color: "#f59e0b", children: envVar })] })), _jsx(Box, { marginBottom: 1, children: _jsx(Text, { color: "#a1a1aa", children: "Enter your API key (or leave empty to skip):" }) }), isEditing ? (_jsxs(Box, { children: [_jsx(Text, { color: "#27272a", children: "> " }), _jsx(TextInput, { value: inputValue, onChange: setInputValue, onSubmit: handleSubmit, placeholder: envValue ? "Press Enter to use env variable" : "sk-...", showCursor: true })] })) : (_jsx(Box, { flexDirection: "column", children: inputValue && (_jsxs(Box, { children: [_jsx(Text, { color: "#22c55e", children: "\u2713 Key set: " }), _jsx(Text, { color: "#a1a1aa", children: showKey ? inputValue : maskedValue(inputValue) })] })) })), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: "#27272a", children: "─".repeat(50) }) }), _jsxs(Box, { marginTop: 1, children: [_jsx(Text, { color: "#71717a", children: "[E] Edit" }), _jsx(Text, { color: "#71717a", children: " [S] Skip" }), _jsx(Text, { color: "#71717a", children: " [B] Back" })] })] }));
|
|
38
|
+
}
|
|
39
|
+
const ENV_VAR_MAP = {
|
|
40
|
+
anthropic: "ANTHROPIC_API_KEY",
|
|
41
|
+
openai: "OPENAI_API_KEY",
|
|
42
|
+
gemini: "GOOGLE_API_KEY",
|
|
43
|
+
mistral: "MISTRAL_API_KEY",
|
|
44
|
+
groq: "GROQ_API_KEY",
|
|
45
|
+
};
|
|
46
|
+
export function ApiKeyCollector({ providers, currentIndex, keys, onSetKey, onSkip, onBack, }) {
|
|
47
|
+
const providersNeedingKeys = providers.filter((p) => p.requiresApiKey);
|
|
48
|
+
const currentProvider = providersNeedingKeys[currentIndex];
|
|
49
|
+
if (!currentProvider) {
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
return (_jsx(ApiKeyInput, { providerId: currentProvider.id, providerName: currentProvider.name, currentKey: keys[currentProvider.id], envVar: ENV_VAR_MAP[currentProvider.id], onSetKey: (key) => onSetKey(currentProvider.id, key), onSkip: onSkip, onBack: onBack }));
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=ApiKeyInput.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ApiKeyInput.js","sourceRoot":"","sources":["../../../src/setup/components/ApiKeyInput.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAC1C,OAAO,SAAS,MAAM,gBAAgB,CAAC;AAYvC,MAAM,UAAU,WAAW,CAAC,EAC1B,UAAU,EACV,YAAY,EACZ,UAAU,EACV,MAAM,EACN,QAAQ,EACR,MAAM,EACN,MAAM,GACW;IACjB,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;IAC/D,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IACjD,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,SAAS,CAAC;IAE1B,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;IAE3C,QAAQ,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACtB,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,IAAI,GAAG,CAAC,MAAM,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;gBAChC,MAAM,EAAE,CAAC;YACX,CAAC;iBAAM,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;gBACzB,MAAM,EAAE,CAAC;YACX,CAAC;iBAAM,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;gBACzB,YAAY,CAAC,IAAI,CAAC,CAAC;YACrB,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,CAAC,KAAa,EAAE,EAAE;QACrC,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;YACjB,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QACzB,CAAC;aAAM,CAAC;YACN,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,CAAC,GAAW,EAAE,EAAE;QAClC,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC;YAAE,OAAO,UAAU,CAAC;QACvC,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,CAAC,CAAC;IAEF,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,KAAC,GAAG,IAAC,YAAY,EAAE,CAAC,YAClB,MAAC,IAAI,IAAC,KAAK,EAAE,OAAO,EAAE,IAAI,iCACb,YAAY,CAAC,WAAW,EAAE,IAChC,GACH,EAEL,QAAQ,IAAI,CACX,MAAC,GAAG,IAAC,YAAY,EAAE,CAAC,aAClB,KAAC,IAAI,IAAC,KAAK,EAAC,SAAS,uBAAS,EAC9B,KAAC,IAAI,IAAC,KAAK,EAAC,SAAS,YAClB,gBAAgB,GACZ,EACP,KAAC,IAAI,IAAC,KAAK,EAAC,SAAS,YAAE,MAAM,GAAQ,IACjC,CACP,EAED,KAAC,GAAG,IAAC,YAAY,EAAE,CAAC,YAClB,KAAC,IAAI,IAAC,KAAK,EAAC,SAAS,6DAAoD,GACrE,EAEL,SAAS,CAAC,CAAC,CAAC,CACX,MAAC,GAAG,eACF,KAAC,IAAI,IAAC,KAAK,EAAC,SAAS,YAAE,IAAI,GAAQ,EACnC,KAAC,SAAS,IACR,KAAK,EAAE,UAAU,EACjB,QAAQ,EAAE,aAAa,EACvB,QAAQ,EAAE,YAAY,EACtB,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,QAAQ,EACpE,UAAU,EAAE,IAAI,GAChB,IACE,CACP,CAAC,CAAC,CAAC,CACF,KAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,YACxB,UAAU,IAAI,CACb,MAAC,GAAG,eACF,KAAC,IAAI,IAAC,KAAK,EAAC,SAAS,iCAAmB,EACxC,KAAC,IAAI,IAAC,KAAK,EAAC,SAAS,YAClB,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,GAC1C,IACH,CACP,GACG,CACP,EAED,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,YACf,KAAC,IAAI,IAAC,KAAK,EAAC,SAAS,YAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAQ,GACzC,EAEN,MAAC,GAAG,IAAC,SAAS,EAAE,CAAC,aACf,KAAC,IAAI,IAAC,KAAK,EAAC,SAAS,yBAAgB,EACrC,KAAC,IAAI,IAAC,KAAK,EAAC,SAAS,2BAAkB,EACvC,KAAC,IAAI,IAAC,KAAK,EAAC,SAAS,2BAAkB,IACnC,IACF,CACP,CAAC;AACJ,CAAC;AAWD,MAAM,WAAW,GAA2B;IAC1C,SAAS,EAAE,mBAAmB;IAC9B,MAAM,EAAE,gBAAgB;IACxB,MAAM,EAAE,gBAAgB;IACxB,OAAO,EAAE,iBAAiB;IAC1B,IAAI,EAAE,cAAc;CACrB,CAAC;AAEF,MAAM,UAAU,eAAe,CAAC,EAC9B,SAAS,EACT,YAAY,EACZ,IAAI,EACJ,QAAQ,EACR,MAAM,EACN,MAAM,GACe;IACrB,MAAM,oBAAoB,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;IACvE,MAAM,eAAe,GAAG,oBAAoB,CAAC,YAAY,CAAC,CAAC;IAE3D,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CACL,KAAC,WAAW,IACV,UAAU,EAAE,eAAe,CAAC,EAAE,EAC9B,YAAY,EAAE,eAAe,CAAC,IAAI,EAClC,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,EACpC,MAAM,EAAE,WAAW,CAAC,eAAe,CAAC,EAAE,CAAC,EACvC,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,EAAE,GAAG,CAAC,EACpD,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GACd,CACH,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
interface AsciiBannerProps {
|
|
3
|
+
compact?: boolean;
|
|
4
|
+
showTagline?: boolean;
|
|
5
|
+
}
|
|
6
|
+
export declare function AsciiBanner({ compact, showTagline }: AsciiBannerProps): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
export declare function IndustrialDivider({ width }: {
|
|
8
|
+
width?: number;
|
|
9
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
export declare function IndustrialBox({ children, title, width, active, }: {
|
|
11
|
+
children: React.ReactNode;
|
|
12
|
+
title?: string;
|
|
13
|
+
width?: number;
|
|
14
|
+
active?: boolean;
|
|
15
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
16
|
+
export declare function StatusIndicator({ status, label, active }: {
|
|
17
|
+
status: "online" | "offline" | "running" | "pending" | "done" | "error";
|
|
18
|
+
label: string;
|
|
19
|
+
active?: boolean;
|
|
20
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
21
|
+
export {};
|
|
22
|
+
//# sourceMappingURL=AsciiBanner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AsciiBanner.d.ts","sourceRoot":"","sources":["../../../src/setup/components/AsciiBanner.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAiC1B,UAAU,gBAAgB;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,wBAAgB,WAAW,CAAC,EAAE,OAAe,EAAE,WAAkB,EAAE,EAAE,gBAAgB,2CAmBpF;AAED,wBAAgB,iBAAiB,CAAC,EAAE,KAAU,EAAE,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,2CASnE;AAED,wBAAgB,aAAa,CAAC,EAC5B,QAAQ,EACR,KAAK,EACL,KAAU,EACV,MAAc,GACf,EAAE;IACD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,2CAeA;AAED,wBAAgB,eAAe,CAAC,EAC9B,MAAM,EACN,KAAK,EACL,MAAc,EACf,EAAE;IACD,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC;IACxE,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,2CAmBA"}
|
|
@@ -1,9 +1,7 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { Box, Text } from "ink";
|
|
3
|
-
|
|
4
3
|
const PRIMARY = "#f97316";
|
|
5
4
|
const SECONDARY = "#a1a1aa";
|
|
6
|
-
|
|
7
5
|
const RAX_FLOW_ASCII = `
|
|
8
6
|
╔══════════════════════════════════════════════════════════════════════════╗
|
|
9
7
|
║ ██████╗ █████╗ ██████╗ ██╗ ██╗ █████╗ ███╗ ██╗ ██████╗███████╗ ║
|
|
@@ -15,7 +13,6 @@ const RAX_FLOW_ASCII = `
|
|
|
15
13
|
╠══════════════════════════════════════════════════════════════════════════╣
|
|
16
14
|
║ [■■■■■■■■■■] ORCHESTRATOR THAT EVOLVES WITH YOUR HOST TOOLS [■■■■■■] ║
|
|
17
15
|
╚══════════════════════════════════════════════════════════════════════════╝`;
|
|
18
|
-
|
|
19
16
|
const RAX_FLOW_ASCII_COMPACT = `
|
|
20
17
|
╔═══════════════════════════════════════════════════════╗
|
|
21
18
|
║ ██████╗ █████╗ ██████╗ ██╗ ██╗███████╗ ║
|
|
@@ -27,99 +24,32 @@ const RAX_FLOW_ASCII_COMPACT = `
|
|
|
27
24
|
╠═══════════════════════════════════════════════════════╣
|
|
28
25
|
║ [■■■■■] ORCHESTRATOR [■■■■■] ║
|
|
29
26
|
╚═══════════════════════════════════════════════════════╝`;
|
|
30
|
-
|
|
31
27
|
const GEAR_PATTERN = " ⚙ ";
|
|
32
28
|
const CIRCUIT_PATTERN = " │├┤│ ";
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
showTagline?: boolean;
|
|
29
|
+
export function AsciiBanner({ compact = false, showTagline = true }) {
|
|
30
|
+
const ascii = compact ? RAX_FLOW_ASCII_COMPACT : RAX_FLOW_ASCII;
|
|
31
|
+
return (_jsxs(Box, { flexDirection: "column", paddingX: 1, children: [_jsx(Box, { children: _jsx(Text, { color: PRIMARY, bold: true, children: ascii }) }), showTagline && (_jsx(Box, { marginTop: 1, justifyContent: "center", children: _jsx(Text, { color: SECONDARY, dimColor: true, children: compact ? "Setup Wizard v1.0" : "Multi-Agent Orchestration Framework • Setup Wizard v1.0" }) }))] }));
|
|
37
32
|
}
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
return (
|
|
43
|
-
<Box flexDirection="column" paddingX={1}>
|
|
44
|
-
<Box>
|
|
45
|
-
<Text color={PRIMARY} bold>
|
|
46
|
-
{ascii}
|
|
47
|
-
</Text>
|
|
48
|
-
</Box>
|
|
49
|
-
{showTagline && (
|
|
50
|
-
<Box marginTop={1} justifyContent="center">
|
|
51
|
-
<Text color={SECONDARY} dimColor>
|
|
52
|
-
{compact ? "Setup Wizard v1.0" : "Multi-Agent Orchestration Framework • Setup Wizard v1.0"}
|
|
53
|
-
</Text>
|
|
54
|
-
</Box>
|
|
55
|
-
)}
|
|
56
|
-
</Box>
|
|
57
|
-
);
|
|
33
|
+
export function IndustrialDivider({ width = 60 }) {
|
|
34
|
+
const segment = "─".repeat(Math.floor(width / 3));
|
|
35
|
+
const full = `╟${segment}╂${segment}╂${segment}╢`;
|
|
36
|
+
return (_jsx(Box, { children: _jsx(Text, { color: "#27272a", children: full }) }));
|
|
58
37
|
}
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
return (
|
|
65
|
-
<Box>
|
|
66
|
-
<Text color="#27272a">{full}</Text>
|
|
67
|
-
</Box>
|
|
68
|
-
);
|
|
38
|
+
export function IndustrialBox({ children, title, width = 60, active = false, }) {
|
|
39
|
+
const borderColor = active ? PRIMARY : "#27272a";
|
|
40
|
+
const innerWidth = width - 4;
|
|
41
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { color: borderColor, children: `┌${title ? `─ ${title} ` : ""}${"─".repeat(innerWidth - (title?.length || 0) - 2)}┐` }), _jsx(Box, { flexDirection: "column", borderStyle: "single", borderColor: borderColor, children: children }), _jsx(Text, { color: borderColor, children: `└${"─".repeat(innerWidth)}┘` })] }));
|
|
69
42
|
}
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
}) {
|
|
82
|
-
const borderColor = active ? PRIMARY : "#27272a";
|
|
83
|
-
const innerWidth = width - 4;
|
|
84
|
-
|
|
85
|
-
return (
|
|
86
|
-
<Box flexDirection="column">
|
|
87
|
-
<Text color={borderColor}>
|
|
88
|
-
{`┌${title ? `─ ${title} ` : ""}${"─".repeat(innerWidth - (title?.length || 0) - 2)}┐`}
|
|
89
|
-
</Text>
|
|
90
|
-
<Box flexDirection="column" borderStyle="single" borderColor={borderColor}>
|
|
91
|
-
{children}
|
|
92
|
-
</Box>
|
|
93
|
-
<Text color={borderColor}>{`└${"─".repeat(innerWidth)}┘`}</Text>
|
|
94
|
-
</Box>
|
|
95
|
-
);
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
export function StatusIndicator({
|
|
99
|
-
status,
|
|
100
|
-
label,
|
|
101
|
-
active = false
|
|
102
|
-
}: {
|
|
103
|
-
status: "online" | "offline" | "running" | "pending" | "done" | "error";
|
|
104
|
-
label: string;
|
|
105
|
-
active?: boolean;
|
|
106
|
-
}) {
|
|
107
|
-
const indicators: Record<string, { char: string; color: string }> = {
|
|
108
|
-
online: { char: "●", color: "#22c55e" },
|
|
109
|
-
offline: { char: "○", color: "#71717a" },
|
|
110
|
-
running: { char: "▶", color: "#f59e0b" },
|
|
111
|
-
pending: { char: "◐", color: "#a1a1aa" },
|
|
112
|
-
done: { char: "✓", color: "#22c55e" },
|
|
113
|
-
error: { char: "✗", color: "#ef4444" },
|
|
114
|
-
};
|
|
115
|
-
|
|
116
|
-
const { char, color } = indicators[status];
|
|
117
|
-
|
|
118
|
-
return (
|
|
119
|
-
<Box>
|
|
120
|
-
<Text color={active ? PRIMARY : color}>{char}</Text>
|
|
121
|
-
<Text> </Text>
|
|
122
|
-
<Text color={active ? PRIMARY : "#ffffff"}>{label}</Text>
|
|
123
|
-
</Box>
|
|
124
|
-
);
|
|
43
|
+
export function StatusIndicator({ status, label, active = false }) {
|
|
44
|
+
const indicators = {
|
|
45
|
+
online: { char: "●", color: "#22c55e" },
|
|
46
|
+
offline: { char: "○", color: "#71717a" },
|
|
47
|
+
running: { char: "▶", color: "#f59e0b" },
|
|
48
|
+
pending: { char: "◐", color: "#a1a1aa" },
|
|
49
|
+
done: { char: "✓", color: "#22c55e" },
|
|
50
|
+
error: { char: "✗", color: "#ef4444" },
|
|
51
|
+
};
|
|
52
|
+
const { char, color } = indicators[status];
|
|
53
|
+
return (_jsxs(Box, { children: [_jsx(Text, { color: active ? PRIMARY : color, children: char }), _jsx(Text, { children: " " }), _jsx(Text, { color: active ? PRIMARY : "#ffffff", children: label })] }));
|
|
125
54
|
}
|
|
55
|
+
//# sourceMappingURL=AsciiBanner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AsciiBanner.js","sourceRoot":"","sources":["../../../src/setup/components/AsciiBanner.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { DetectedCli } from "../utils/cli-detection.js";
|
|
2
|
+
export type { DetectedCli };
|
|
3
|
+
interface CliDetectorProps {
|
|
4
|
+
onDetected: (clis: DetectedCli[]) => void;
|
|
5
|
+
onContinue: () => void;
|
|
6
|
+
onBack: () => void;
|
|
7
|
+
}
|
|
8
|
+
export declare function CliDetector({ onDetected, onContinue, onBack }: CliDetectorProps): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
interface CliSelectorProps {
|
|
10
|
+
detectedClis: DetectedCli[];
|
|
11
|
+
selectedClis: string[];
|
|
12
|
+
onToggle: (cliId: string) => void;
|
|
13
|
+
onContinue: () => void;
|
|
14
|
+
onBack: () => void;
|
|
15
|
+
}
|
|
16
|
+
export declare function CliSelector({ detectedClis, selectedClis, onToggle, onContinue, onBack, }: CliSelectorProps): import("react/jsx-runtime").JSX.Element;
|
|
17
|
+
//# sourceMappingURL=CliDetector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CliDetector.d.ts","sourceRoot":"","sources":["../../../src/setup/components/CliDetector.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAuB,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAE7E,YAAY,EAAE,WAAW,EAAE,CAAC;AAE5B,UAAU,gBAAgB;IACxB,UAAU,EAAE,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,IAAI,CAAC;IAC1C,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,wBAAgB,WAAW,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,gBAAgB,2CA6G/E;AAED,UAAU,gBAAgB;IACxB,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,wBAAgB,WAAW,CAAC,EAC1B,YAAY,EACZ,YAAY,EACZ,QAAQ,EACR,UAAU,EACV,MAAM,GACP,EAAE,gBAAgB,2CA6FlB"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState, useEffect } from "react";
|
|
3
|
+
import { Box, Text, useInput } from "ink";
|
|
4
|
+
import Spinner from "ink-spinner";
|
|
5
|
+
import { detectInstalledClis } from "../utils/cli-detection.js";
|
|
6
|
+
export function CliDetector({ onDetected, onContinue, onBack }) {
|
|
7
|
+
const [detecting, setDetecting] = useState(true);
|
|
8
|
+
const [detectedClis, setDetectedClis] = useState([]);
|
|
9
|
+
const [error, setError] = useState(null);
|
|
10
|
+
const PRIMARY = "#f97316";
|
|
11
|
+
useEffect(() => {
|
|
12
|
+
detectInstalledClis()
|
|
13
|
+
.then((clis) => {
|
|
14
|
+
setDetectedClis(clis);
|
|
15
|
+
onDetected(clis);
|
|
16
|
+
setDetecting(false);
|
|
17
|
+
})
|
|
18
|
+
.catch((err) => {
|
|
19
|
+
setError(err.message);
|
|
20
|
+
setDetecting(false);
|
|
21
|
+
});
|
|
22
|
+
}, [onDetected]);
|
|
23
|
+
useInput((input, key) => {
|
|
24
|
+
if (!detecting) {
|
|
25
|
+
if (key.return || input === "c") {
|
|
26
|
+
onContinue();
|
|
27
|
+
}
|
|
28
|
+
else if (input === "b") {
|
|
29
|
+
onBack();
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
if (detecting) {
|
|
34
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { marginBottom: 1, children: _jsx(Text, { color: PRIMARY, bold: true, children: "DETECTING INSTALLED TOOLS" }) }), _jsxs(Box, { children: [_jsx(Text, { color: "#f59e0b", children: _jsx(Spinner, { type: "dots" }) }), _jsx(Text, { color: "#a1a1aa", children: " Scanning for compatible CLI tools..." })] })] }));
|
|
35
|
+
}
|
|
36
|
+
if (error) {
|
|
37
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Text, { color: "#ef4444", children: ["Error detecting CLIs: ", error] }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: "#71717a", children: "[B] Back" }) })] }));
|
|
38
|
+
}
|
|
39
|
+
const availableClis = detectedClis.filter((c) => c.detected);
|
|
40
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { marginBottom: 1, children: _jsx(Text, { color: PRIMARY, bold: true, children: "DETECTED TOOLS" }) }), _jsx(Box, { flexDirection: "column", marginBottom: 1, children: detectedClis.map((cli) => (_jsxs(Box, { children: [_jsx(Text, { color: cli.detected ? "#22c55e" : "#71717a", children: cli.detected ? "●" : "○" }), _jsx(Text, { children: " " }), _jsx(Text, { color: cli.detected ? "#ffffff" : "#71717a", children: cli.name }), cli.version && (_jsxs(Text, { color: "#a1a1aa", children: [" v", cli.version.split(" ")[0]] })), cli.configPath && (_jsxs(Text, { color: "#71717a", dimColor: true, children: [" ", "(", cli.configPath, ")"] }))] }, cli.id))) }), availableClis.length === 0 && (_jsx(Box, { marginBottom: 1, children: _jsx(Text, { color: "#f59e0b", children: "\u26A0 No compatible CLI tools detected. You can still use cloud providers." }) })), _jsx(Box, { children: _jsx(Text, { color: "#27272a", children: "─".repeat(50) }) }), _jsxs(Box, { marginTop: 1, children: [_jsx(Text, { color: "#22c55e", children: "[C] Continue" }), _jsx(Text, { color: "#71717a", children: " [B] Back" })] })] }));
|
|
41
|
+
}
|
|
42
|
+
export function CliSelector({ detectedClis, selectedClis, onToggle, onContinue, onBack, }) {
|
|
43
|
+
const [focusedIndex, setFocusedIndex] = useState(0);
|
|
44
|
+
const availableClis = detectedClis.filter((c) => c.detected);
|
|
45
|
+
const PRIMARY = "#f97316";
|
|
46
|
+
useInput((input, key) => {
|
|
47
|
+
if (key.upArrow) {
|
|
48
|
+
setFocusedIndex((prev) => prev === 0 ? availableClis.length : prev - 1);
|
|
49
|
+
}
|
|
50
|
+
else if (key.downArrow) {
|
|
51
|
+
setFocusedIndex((prev) => prev === availableClis.length ? 0 : prev + 1);
|
|
52
|
+
}
|
|
53
|
+
else if (key.return) {
|
|
54
|
+
// If at least one CLI is selected, ENTER should continue
|
|
55
|
+
if (selectedClis.length > 0) {
|
|
56
|
+
onContinue();
|
|
57
|
+
}
|
|
58
|
+
else if (focusedIndex < availableClis.length) {
|
|
59
|
+
// No CLIs selected yet: toggle the focused CLI
|
|
60
|
+
onToggle(availableClis[focusedIndex].id);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
else if (input === " ") {
|
|
64
|
+
if (focusedIndex < availableClis.length) {
|
|
65
|
+
onToggle(availableClis[focusedIndex].id);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
else if (input === "b") {
|
|
69
|
+
onBack();
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
if (availableClis.length === 0) {
|
|
73
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { color: "#f59e0b", children: "No CLI tools detected. Skipping hub setup..." }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: "#22c55e", children: "[C] Continue" }) })] }));
|
|
74
|
+
}
|
|
75
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { marginBottom: 1, children: _jsx(Text, { color: PRIMARY, bold: true, children: "SELECT TOOLS TO INTEGRATE" }) }), _jsx(Box, { marginBottom: 1, children: _jsx(Text, { color: "#a1a1aa", dimColor: true, children: "Use \u2191/\u2193 to navigate, SPACE to toggle, ENTER to continue" }) }), _jsx(Box, { flexDirection: "column", children: availableClis.map((cli, index) => {
|
|
76
|
+
const isSelected = selectedClis.includes(cli.id);
|
|
77
|
+
const isFocused = index === focusedIndex;
|
|
78
|
+
return (_jsxs(Box, { children: [_jsx(Text, { color: isFocused ? PRIMARY : "#27272a", children: isFocused ? "▶ " : " " }), _jsxs(Text, { color: isSelected ? "#22c55e" : "#a1a1aa", children: ["[", isSelected ? "■" : " ", "]"] }), _jsx(Text, { children: " " }), _jsx(Text, { color: isFocused ? "#ffffff" : "#a1a1aa", bold: isFocused, children: cli.name }), cli.version && (_jsxs(Text, { color: "#71717a", children: [" ", cli.version.split(" ")[0]] }))] }, cli.id));
|
|
79
|
+
}) }), _jsxs(Box, { marginTop: 1, children: [_jsx(Text, { color: focusedIndex === availableClis.length ? PRIMARY : "#a1a1aa", children: focusedIndex === availableClis.length ? "▶ " : " " }), _jsx(Text, { color: "#22c55e", children: "[CONTINUE]" })] }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: "#71717a", children: "[B] Back" }) })] }));
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=CliDetector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CliDetector.js","sourceRoot":"","sources":["../../../src/setup/components/CliDetector.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
interface ModeSelectorProps {
|
|
2
|
+
selectedMode: "hub" | "standalone" | "both" | null;
|
|
3
|
+
onSelect: (mode: "hub" | "standalone" | "both") => void;
|
|
4
|
+
onContinue: () => void;
|
|
5
|
+
}
|
|
6
|
+
export declare function ModeSelector({ selectedMode, onSelect, onContinue }: ModeSelectorProps): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=ModeSelector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ModeSelector.d.ts","sourceRoot":"","sources":["../../../src/setup/components/ModeSelector.tsx"],"names":[],"mappings":"AAGA,UAAU,iBAAiB;IACzB,YAAY,EAAE,KAAK,GAAG,YAAY,GAAG,MAAM,GAAG,IAAI,CAAC;IACnD,QAAQ,EAAE,CAAC,IAAI,EAAE,KAAK,GAAG,YAAY,GAAG,MAAM,KAAK,IAAI,CAAC;IACxD,UAAU,EAAE,MAAM,IAAI,CAAC;CACxB;AAsCD,wBAAgB,YAAY,CAAC,EAAE,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,iBAAiB,2CA2FrF"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState } from "react";
|
|
3
|
+
import { Box, Text, useInput } from "ink";
|
|
4
|
+
const MODES = [
|
|
5
|
+
{
|
|
6
|
+
id: "hub",
|
|
7
|
+
key: "1",
|
|
8
|
+
name: "HUB MODE",
|
|
9
|
+
description: "Use raxflow within your existing CLI",
|
|
10
|
+
features: [
|
|
11
|
+
"Integrates with claude-code, codex, opencode, kilo",
|
|
12
|
+
"Orchestrates agents inside your preferred tool",
|
|
13
|
+
"Minimal setup, maximum compatibility",
|
|
14
|
+
],
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
id: "standalone",
|
|
18
|
+
key: "2",
|
|
19
|
+
name: "STANDALONE MODE",
|
|
20
|
+
description: "Use raxflow as your main CLI",
|
|
21
|
+
features: [
|
|
22
|
+
"Full interactive TUI with panels and visualization",
|
|
23
|
+
"Complete orchestration from terminal",
|
|
24
|
+
"Advanced workflow management",
|
|
25
|
+
],
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
id: "both",
|
|
29
|
+
key: "3",
|
|
30
|
+
name: "BOTH",
|
|
31
|
+
description: "Setup both modes for maximum flexibility",
|
|
32
|
+
features: [
|
|
33
|
+
"Full hub integration with your CLIs",
|
|
34
|
+
"Standalone TUI when you need it",
|
|
35
|
+
"Best of both worlds",
|
|
36
|
+
],
|
|
37
|
+
},
|
|
38
|
+
];
|
|
39
|
+
export function ModeSelector({ selectedMode, onSelect, onContinue }) {
|
|
40
|
+
const [focusedIndex, setFocusedIndex] = useState(0);
|
|
41
|
+
const PRIMARY = "#f97316";
|
|
42
|
+
useInput((input, key) => {
|
|
43
|
+
if (key.upArrow) {
|
|
44
|
+
setFocusedIndex((prev) => (prev === 0 ? MODES.length : prev - 1));
|
|
45
|
+
}
|
|
46
|
+
else if (key.downArrow) {
|
|
47
|
+
setFocusedIndex((prev) => (prev === MODES.length ? 0 : prev + 1));
|
|
48
|
+
}
|
|
49
|
+
else if (key.return) {
|
|
50
|
+
if (focusedIndex === MODES.length && selectedMode) {
|
|
51
|
+
onContinue();
|
|
52
|
+
}
|
|
53
|
+
else if (focusedIndex < MODES.length) {
|
|
54
|
+
onSelect(MODES[focusedIndex].id);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
else if (input === "1" || input === "2" || input === "3") {
|
|
58
|
+
const index = parseInt(input) - 1;
|
|
59
|
+
if (index < MODES.length) {
|
|
60
|
+
onSelect(MODES[index].id);
|
|
61
|
+
setFocusedIndex(index);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
else if (input === " ") {
|
|
65
|
+
if (focusedIndex < MODES.length) {
|
|
66
|
+
onSelect(MODES[focusedIndex].id);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { marginBottom: 1, children: _jsx(Text, { color: PRIMARY, bold: true, children: "SELECT USAGE MODE" }) }), _jsx(Box, { marginBottom: 1, children: _jsx(Text, { color: "#a1a1aa", dimColor: true, children: "Press 1, 2, or 3 to select, ENTER to continue" }) }), _jsx(Box, { flexDirection: "column", children: MODES.map((mode, index) => {
|
|
71
|
+
const isSelected = selectedMode === mode.id;
|
|
72
|
+
const isFocused = index === focusedIndex;
|
|
73
|
+
return (_jsxs(Box, { flexDirection: "column", marginBottom: 1, borderStyle: isSelected ? "bold" : "single", borderColor: isSelected ? PRIMARY : "#27272a", paddingX: 1, children: [_jsxs(Box, { children: [_jsx(Text, { color: isFocused ? PRIMARY : "#27272a", children: isFocused ? "▶ " : " " }), _jsxs(Text, { color: "#f59e0b", children: ["[", mode.key, "]"] }), _jsx(Text, { children: " " }), _jsx(Text, { color: isSelected ? PRIMARY : "#ffffff", bold: true, children: mode.name }), _jsxs(Text, { color: "#a1a1aa", children: [" - ", mode.description] })] }), isSelected && (_jsx(Box, { flexDirection: "column", marginLeft: 4, marginTop: 0, children: mode.features.map((feature, i) => (_jsxs(Box, { children: [_jsx(Text, { color: "#71717a", children: "\u25C6" }), _jsxs(Text, { color: "#a1a1aa", children: [" ", feature] })] }, i))) }))] }, mode.id));
|
|
74
|
+
}) }), _jsxs(Box, { marginTop: 1, children: [_jsx(Text, { color: focusedIndex === MODES.length ? PRIMARY : "#a1a1aa", children: focusedIndex === MODES.length ? "▶ " : " " }), _jsx(Text, { color: selectedMode ? "#22c55e" : "#71717a", children: "[CONTINUE]" })] })] }));
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=ModeSelector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ModeSelector.js","sourceRoot":"","sources":["../../../src/setup/components/ModeSelector.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
interface Provider {
|
|
2
|
+
id: string;
|
|
3
|
+
name: string;
|
|
4
|
+
description: string;
|
|
5
|
+
key: string;
|
|
6
|
+
requiresApiKey: boolean;
|
|
7
|
+
}
|
|
8
|
+
declare const PROVIDERS: Provider[];
|
|
9
|
+
interface ProviderSelectorProps {
|
|
10
|
+
selectedProviders: string[];
|
|
11
|
+
onToggle: (providerId: string) => void;
|
|
12
|
+
onContinue: () => void;
|
|
13
|
+
onBack: () => void;
|
|
14
|
+
}
|
|
15
|
+
export declare function ProviderSelector({ selectedProviders, onToggle, onContinue, onBack, }: ProviderSelectorProps): import("react/jsx-runtime").JSX.Element;
|
|
16
|
+
export { PROVIDERS };
|
|
17
|
+
export type { Provider };
|
|
18
|
+
//# sourceMappingURL=ProviderSelector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProviderSelector.d.ts","sourceRoot":"","sources":["../../../src/setup/components/ProviderSelector.tsx"],"names":[],"mappings":"AAGA,UAAU,QAAQ;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,cAAc,EAAE,OAAO,CAAC;CACzB;AAED,QAAA,MAAM,SAAS,EAAE,QAAQ,EA2CxB,CAAC;AAEF,UAAU,qBAAqB;IAC7B,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,QAAQ,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,iBAAiB,EACjB,QAAQ,EACR,UAAU,EACV,MAAM,GACP,EAAE,qBAAqB,2CAuGvB;AAED,OAAO,EAAE,SAAS,EAAE,CAAC;AACrB,YAAY,EAAE,QAAQ,EAAE,CAAC"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState, useEffect } from "react";
|
|
3
|
+
import { Box, Text, useInput } from "ink";
|
|
4
|
+
const PROVIDERS = [
|
|
5
|
+
{
|
|
6
|
+
id: "host",
|
|
7
|
+
name: "Host-Native",
|
|
8
|
+
description: "Use your local AI CLI tool (Claude Code, Codex, etc.)",
|
|
9
|
+
key: "H",
|
|
10
|
+
requiresApiKey: false,
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
id: "anthropic",
|
|
14
|
+
name: "Anthropic API",
|
|
15
|
+
description: "Direct Claude API access",
|
|
16
|
+
key: "A",
|
|
17
|
+
requiresApiKey: true,
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
id: "openai",
|
|
21
|
+
name: "OpenAI",
|
|
22
|
+
description: "GPT-4 and other OpenAI models",
|
|
23
|
+
key: "O",
|
|
24
|
+
requiresApiKey: true,
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
id: "gemini",
|
|
28
|
+
name: "Gemini",
|
|
29
|
+
description: "Google's Gemini models",
|
|
30
|
+
key: "G",
|
|
31
|
+
requiresApiKey: true,
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
id: "mistral",
|
|
35
|
+
name: "Mistral",
|
|
36
|
+
description: "Mistral AI models",
|
|
37
|
+
key: "M",
|
|
38
|
+
requiresApiKey: true,
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
id: "groq",
|
|
42
|
+
name: "Groq",
|
|
43
|
+
description: "Fast inference with Groq",
|
|
44
|
+
key: "Q",
|
|
45
|
+
requiresApiKey: true,
|
|
46
|
+
},
|
|
47
|
+
];
|
|
48
|
+
export function ProviderSelector({ selectedProviders, onToggle, onContinue, onBack, }) {
|
|
49
|
+
const [focusedIndex, setFocusedIndex] = useState(0);
|
|
50
|
+
const PRIMARY = "#f97316";
|
|
51
|
+
useInput((input, key) => {
|
|
52
|
+
if (key.upArrow) {
|
|
53
|
+
setFocusedIndex((prev) => (prev === 0 ? PROVIDERS.length - 1 : prev - 1));
|
|
54
|
+
}
|
|
55
|
+
else if (key.downArrow) {
|
|
56
|
+
setFocusedIndex((prev) => (prev === PROVIDERS.length - 1 ? 0 : prev + 1));
|
|
57
|
+
}
|
|
58
|
+
else if (key.return) {
|
|
59
|
+
// If BACK is focused, go back
|
|
60
|
+
if (focusedIndex === PROVIDERS.length + 1) {
|
|
61
|
+
onBack();
|
|
62
|
+
}
|
|
63
|
+
else if (selectedProviders.length > 0) {
|
|
64
|
+
// If at least one provider is selected, ENTER should continue
|
|
65
|
+
onContinue();
|
|
66
|
+
}
|
|
67
|
+
else if (focusedIndex < PROVIDERS.length) {
|
|
68
|
+
// No providers selected yet: toggle the focused provider
|
|
69
|
+
onToggle(PROVIDERS[focusedIndex].id);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
else if (input === " ") {
|
|
73
|
+
if (focusedIndex < PROVIDERS.length) {
|
|
74
|
+
onToggle(PROVIDERS[focusedIndex].id);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
else if (key.leftArrow || input === "b") {
|
|
78
|
+
onBack();
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
// Check for key shortcuts
|
|
82
|
+
const provider = PROVIDERS.find((p) => p.key.toLowerCase() === input.toLowerCase());
|
|
83
|
+
if (provider) {
|
|
84
|
+
onToggle(provider.id);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
useEffect(() => {
|
|
89
|
+
// Add extra navigation items
|
|
90
|
+
}, []);
|
|
91
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { marginBottom: 1, children: _jsx(Text, { color: "#f97316", bold: true, children: "SELECT PROVIDERS" }) }), _jsx(Box, { marginBottom: 1, children: _jsx(Text, { color: "#a1a1aa", dimColor: true, children: "Use \u2191/\u2193 to navigate, SPACE to toggle, ENTER to continue" }) }), _jsx(Box, { flexDirection: "column", children: PROVIDERS.map((provider, index) => {
|
|
92
|
+
const isSelected = selectedProviders.includes(provider.id);
|
|
93
|
+
const isFocused = index === focusedIndex;
|
|
94
|
+
return (_jsxs(Box, { marginBottom: 0, children: [_jsx(Text, { color: isFocused ? PRIMARY : "#27272a", children: isFocused ? "▶ " : " " }), _jsxs(Text, { color: isSelected ? "#22c55e" : "#a1a1aa", children: ["[", isSelected ? "■" : " ", "]"] }), _jsx(Text, { children: " " }), _jsxs(Text, { color: "#f59e0b", children: ["[", provider.key, "]"] }), _jsx(Text, { children: " " }), _jsx(Text, { color: isFocused ? "#ffffff" : "#a1a1aa", bold: isFocused, children: provider.name }), _jsxs(Text, { color: "#71717a", children: [" - ", provider.description] })] }, provider.id));
|
|
95
|
+
}) }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: "#27272a", children: "─".repeat(50) }) }), _jsxs(Box, { marginTop: 1, children: [_jsx(Text, { color: focusedIndex === PROVIDERS.length ? PRIMARY : "#a1a1aa", children: focusedIndex === PROVIDERS.length ? "▶ " : " " }), _jsx(Text, { color: selectedProviders.length > 0 ? "#22c55e" : "#71717a", children: "[CONTINUE]" }), _jsx(Text, { children: " " }), _jsx(Text, { color: focusedIndex === PROVIDERS.length + 1 ? PRIMARY : "#a1a1aa", children: focusedIndex === PROVIDERS.length + 1 ? "▶ " : " " }), _jsx(Text, { color: "#a1a1aa", children: "[BACK]" })] }), selectedProviders.length === 0 && (_jsx(Box, { marginTop: 1, children: _jsx(Text, { color: "#f59e0b", children: "\u26A0 Select at least one provider to continue" }) }))] }));
|
|
96
|
+
}
|
|
97
|
+
export { PROVIDERS };
|
|
98
|
+
//# sourceMappingURL=ProviderSelector.js.map
|