diff --git a/ui/desktop/src/App.tsx b/ui/desktop/src/App.tsx
index 4c874616..c87aa5a1 100644
--- a/ui/desktop/src/App.tsx
+++ b/ui/desktop/src/App.tsx
@@ -38,7 +38,7 @@ export type View =
| 'moreModels'
| 'configureProviders'
| 'configPage'
- | 'alphaConfigureProviders'
+ | 'ConfigureProviders'
| 'settingsV2'
| 'sessions';
@@ -274,13 +274,16 @@ export default function App() {
- {view === 'welcome' && (
-
{
- setView('chat');
- }}
- />
- )}
+ {view === 'welcome' &&
+ (process.env.ALPHA ? (
+ setView('chat')} isOnboarding={true} />
+ ) : (
+ {
+ setView('chat');
+ }}
+ />
+ ))}
{view === 'settings' &&
(process.env.ALPHA ? (
)}
- {view === 'alphaConfigureProviders' && (
- setView('chat')} />
+ {view === 'ConfigureProviders' && (
+ setView('chat')} isOnboarding={false} />
)}
{view === 'chat' && !isLoadingSession && (
Add Model
-
diff --git a/ui/desktop/src/components/settings_v2/providers/ProviderGrid.tsx b/ui/desktop/src/components/settings_v2/providers/ProviderGrid.tsx
index c673f51a..b2b93548 100644
--- a/ui/desktop/src/components/settings_v2/providers/ProviderGrid.tsx
+++ b/ui/desktop/src/components/settings_v2/providers/ProviderGrid.tsx
@@ -1,6 +1,5 @@
import React, { memo, useMemo, useCallback } from 'react';
import { ProviderCard } from './subcomponents/ProviderCard';
-import OnRefresh from './callbacks/RefreshActiveProviders';
import { ProviderModalProvider, useProviderModal } from './modal/ProviderModalProvider';
import ProviderConfigurationModal from './modal/ProviderConfiguationModal';
import { ProviderDetails } from '../../../api';
@@ -18,10 +17,12 @@ const ProviderCards = memo(function ProviderCards({
providers,
isOnboarding,
refreshProviders,
+ onProviderLaunch,
}: {
providers: ProviderDetails[];
isOnboarding: boolean;
refreshProviders?: () => void;
+ onProviderLaunch: (provider: ProviderDetails) => void;
}) {
const { openModal } = useProviderModal();
@@ -41,9 +42,8 @@ const ProviderCards = memo(function ProviderCards({
[openModal, refreshProviders]
);
- const handleLaunch = useCallback(() => {
- OnRefresh();
- }, []);
+ // We don't need an intermediate function here
+ // Just pass the onProviderLaunch directly
// Use useMemo to memoize the cards array
const providerCards = useMemo(() => {
@@ -52,11 +52,11 @@ const ProviderCards = memo(function ProviderCards({
key={provider.name}
provider={provider}
onConfigure={() => configureProviderViaModal(provider)}
- onLaunch={handleLaunch}
+ onLaunch={() => onProviderLaunch(provider)}
isOnboarding={isOnboarding}
/>
));
- }, [providers, isOnboarding, configureProviderViaModal, handleLaunch]);
+ }, [providers, isOnboarding, configureProviderViaModal, onProviderLaunch]);
return <>{providerCards}>;
});
@@ -65,10 +65,12 @@ export default memo(function ProviderGrid({
providers,
isOnboarding,
refreshProviders,
+ onProviderLaunch,
}: {
providers: ProviderDetails[];
isOnboarding: boolean;
refreshProviders?: () => void;
+ onProviderLaunch?: (provider: ProviderDetails) => void;
}) {
// Memoize the modal provider and its children to avoid recreating on every render
const modalProviderContent = useMemo(
@@ -78,11 +80,12 @@ export default memo(function ProviderGrid({
providers={providers}
isOnboarding={isOnboarding}
refreshProviders={refreshProviders}
+ onProviderLaunch={onProviderLaunch}
/>
),
- [providers, isOnboarding, refreshProviders]
+ [providers, isOnboarding, refreshProviders, onProviderLaunch]
);
return
{modalProviderContent};
diff --git a/ui/desktop/src/components/settings_v2/providers/ProviderSettingsPage.tsx b/ui/desktop/src/components/settings_v2/providers/ProviderSettingsPage.tsx
index 0c56e7a0..121d0247 100644
--- a/ui/desktop/src/components/settings_v2/providers/ProviderSettingsPage.tsx
+++ b/ui/desktop/src/components/settings_v2/providers/ProviderSettingsPage.tsx
@@ -5,8 +5,13 @@ import ProviderGrid from './ProviderGrid';
import { useConfig } from '../../ConfigContext';
import { ProviderDetails } from '../../../api/types.gen';
-export default function ProviderSettings({ onClose }: { onClose: () => void }) {
- const { getProviders } = useConfig();
+interface ProviderSettingsProps {
+ onClose: () => void;
+ isOnboarding: boolean;
+}
+
+export default function ProviderSettings({ onClose, isOnboarding }: ProviderSettingsProps) {
+ const { getProviders, upsert } = useConfig();
const [loading, setLoading] = useState(true);
const [providers, setProviders] = useState
([]);
const initialLoadDone = useRef(false);
@@ -43,14 +48,39 @@ export default function ProviderSettings({ onClose }: { onClose: () => void }) {
}
}, [getProviders]);
+ // Handler for when a provider is launched if this component is used as part of onboarding page
+ const handleProviderLaunch = useCallback(
+ (provider: ProviderDetails) => {
+ console.log(`Launching with provider: ${provider.name}`);
+ try {
+ // set GOOSE_PROVIDER in the config file
+ // @lily-de: leaving as test for now to avoid messing with my config directly
+ upsert('GOOSE_PROVIDER_TEST', provider.name, false).then((_) =>
+ console.log('Setting GOOSE_PROVIDER to', provider.name)
+ );
+ // set GOOSE_MODEL in the config file
+ upsert('GOOSE_MODEL_TEST', provider.metadata.default_model, false).then((_) =>
+ console.log('Setting GOOSE_MODEL to', provider.metadata.default_model)
+ );
+ } catch (error) {
+ console.error(`Failed to initialize with provider ${provider.name}:`, error);
+ }
+ onClose();
+ },
+ [onClose, upsert]
+ );
+
return (
-
-
Configure
+ {/* Only show back button if not in onboarding mode */}
+ {!isOnboarding && }
+
+ {isOnboarding ? 'Select a Provider' : 'Configure'}
+
@@ -66,7 +96,8 @@ export default function ProviderSettings({ onClose }: { onClose: () => void }) {
) : (
)}
diff --git a/ui/desktop/src/components/settings_v2/providers/callbacks/AddProviderParameters.tsx b/ui/desktop/src/components/settings_v2/providers/callbacks/AddProviderParameters.tsx
deleted file mode 100644
index 8a15d070..00000000
--- a/ui/desktop/src/components/settings_v2/providers/callbacks/AddProviderParameters.tsx
+++ /dev/null
@@ -1,5 +0,0 @@
-import { toast } from 'react-toastify';
-
-export default function OnAdd() {
- toast.success('adding worked!');
-}
diff --git a/ui/desktop/src/components/settings_v2/providers/callbacks/CallbackRegistry.tsx b/ui/desktop/src/components/settings_v2/providers/callbacks/CallbackRegistry.tsx
deleted file mode 100644
index baf4a6ce..00000000
--- a/ui/desktop/src/components/settings_v2/providers/callbacks/CallbackRegistry.tsx
+++ /dev/null
@@ -1,45 +0,0 @@
-// First define the default handlers separately
-import OnAdd from './AddProviderParameters';
-import OnDelete from './DeleteProviderParameters';
-
-const DEFAULT_HANDLERS = {
- onAdd: (providerId: string, config: any) => {
- OnAdd();
- },
- onDelete: (providerId: string) => {
- OnDelete();
- },
- onShowSettings: (providerId: string) => {
- /* default settings behavior */
- },
-};
-
-// Then use them in the registry
-export const CALLBACK_REGISTRY = {
- default: DEFAULT_HANDLERS,
-
- anthropic: {
- onAdd: (providerId: string, config: any) => {
- /* Anthropic-specific add */
- },
- // Fall back to default handlers
- onDelete: DEFAULT_HANDLERS.onDelete,
- onShowSettings: DEFAULT_HANDLERS.onShowSettings,
- },
-
- ollama: {
- onAdd: (providerId: string, config: any) => {
- /* Ollama-specific add */
- },
- onDelete: (providerId: string) => {
- /* Ollama-specific delete */
- },
- onRefresh: (providerId: string) => {
- /* Ollama-specific refresh */
- },
- },
-} as const;
-
-// Type for the handlers
-export type ActionHandler = typeof DEFAULT_HANDLERS;
-export type ProviderId = keyof typeof CALLBACK_REGISTRY;
diff --git a/ui/desktop/src/components/settings_v2/providers/callbacks/DeleteProviderParameters.tsx b/ui/desktop/src/components/settings_v2/providers/callbacks/DeleteProviderParameters.tsx
deleted file mode 100644
index 227c2e13..00000000
--- a/ui/desktop/src/components/settings_v2/providers/callbacks/DeleteProviderParameters.tsx
+++ /dev/null
@@ -1,5 +0,0 @@
-import { toast } from 'react-toastify';
-
-export default function OnDelete() {
- toast.success('deleting worked!');
-}
diff --git a/ui/desktop/src/components/settings_v2/providers/callbacks/RefreshActiveProviders.tsx b/ui/desktop/src/components/settings_v2/providers/callbacks/RefreshActiveProviders.tsx
deleted file mode 100644
index 669676b1..00000000
--- a/ui/desktop/src/components/settings_v2/providers/callbacks/RefreshActiveProviders.tsx
+++ /dev/null
@@ -1,5 +0,0 @@
-import { toast } from 'react-toastify';
-
-export default function OnRefresh() {
- toast.success('refreshing worked!');
-}
diff --git a/ui/desktop/src/components/settings_v2/providers/callbacks/ShowModal.tsx b/ui/desktop/src/components/settings_v2/providers/callbacks/ShowModal.tsx
deleted file mode 100644
index 0121fd9a..00000000
--- a/ui/desktop/src/components/settings_v2/providers/callbacks/ShowModal.tsx
+++ /dev/null
@@ -1,5 +0,0 @@
-import { toast } from 'react-toastify';
-
-export default function OnShowModal() {
- toast.success('here is the modal yay!');
-}
diff --git a/ui/desktop/src/components/settings_v2/providers/callbacks/UpdateProviderParameters.tsx b/ui/desktop/src/components/settings_v2/providers/callbacks/UpdateProviderParameters.tsx
deleted file mode 100644
index bb5b3bab..00000000
--- a/ui/desktop/src/components/settings_v2/providers/callbacks/UpdateProviderParameters.tsx
+++ /dev/null
@@ -1,5 +0,0 @@
-import { toast } from 'react-toastify';
-
-export default function OnShowSettings() {
- toast.success('settings update worked!');
-}
diff --git a/ui/desktop/src/components/settings_v2/providers/subcomponents/buttons/CardButtons.tsx b/ui/desktop/src/components/settings_v2/providers/subcomponents/buttons/CardButtons.tsx
index 5cae8831..a6476edb 100644
--- a/ui/desktop/src/components/settings_v2/providers/subcomponents/buttons/CardButtons.tsx
+++ b/ui/desktop/src/components/settings_v2/providers/subcomponents/buttons/CardButtons.tsx
@@ -94,10 +94,6 @@ export function GreenCheckButton({
);
}
-export function ExclamationButton({ tooltip, className, ...props }: ActionButtonProps) {
- return
{}} {...props} />;
-}
-
export function ConfigureSettingsButton({ tooltip, className, ...props }: ActionButtonProps) {
return (
;
-}
-
-export function DeleteButton({ tooltip, className, ...props }: ActionButtonProps) {
- return ;
-}
-
-export function RefreshButton({ tooltip, className, ...props }: ActionButtonProps) {
- return ;
-}
-
export function RocketButton({ tooltip, className, ...props }: ActionButtonProps) {
return (