@@ -63,10 +63,8 @@ import {
6363 AIAgentUpdateSchema ,
6464 UpdateAIAgentRequestSchema ,
6565} from 'protogen/redpanda/api/dataplane/v1alpha3/ai_agent_pb' ;
66- import { type AIGateway , AIGateway_State } from 'protogen/redpanda/api/dataplane/v1alpha3/ai_gateway_pb' ;
6766import { useCallback , useMemo , useState } from 'react' ;
6867import { useGetAIAgentQuery , useUpdateAIAgentMutation } from 'react-query/api/ai-agent' ;
69- import { useListAIGatewaysQuery } from 'react-query/api/ai-gateway' ;
7068import { type MCPServer , useListMCPServersQuery } from 'react-query/api/remote-mcp' ;
7169import { useListSecretsQuery } from 'react-query/api/secret' ;
7270import { toast } from 'sonner' ;
@@ -315,32 +313,6 @@ export const AIAgentConfigurationTab = () => {
315313 const { data : mcpServersData } = useListMCPServersQuery ( ) ;
316314 const { data : secretsData } = useListSecretsQuery ( ) ;
317315
318- // Gateway detection
319- const { data : gatewaysData , isLoading : isLoadingGateways } = useListAIGatewaysQuery (
320- { pageSize : - 1 } ,
321- { enabled : true }
322- ) ;
323-
324- const hasGatewayDeployed = useMemo ( ( ) => {
325- if ( isLoadingGateways ) {
326- return false ;
327- }
328- return Boolean ( gatewaysData ?. aiGateways && gatewaysData . aiGateways . length > 0 ) ;
329- } , [ gatewaysData , isLoadingGateways ] ) ;
330-
331- const availableGateways = useMemo ( ( ) => {
332- if ( ! gatewaysData ?. aiGateways ) {
333- return [ ] ;
334- }
335- return gatewaysData . aiGateways
336- . filter ( ( gw : AIGateway ) => gw . state === AIGateway_State . RUNNING )
337- . map ( ( gw : AIGateway ) => ( {
338- id : gw . id ,
339- displayName : gw . displayName ,
340- description : gw . description ,
341- } ) ) ;
342- } , [ gatewaysData ] ) ;
343-
344316 const [ isEditing , setIsEditing ] = useState ( false ) ;
345317 const [ editedAgentData , setEditedAgentData ] = useState < LocalAIAgent | null > ( null ) ;
346318 const [ expandedSubagent , setExpandedSubagent ] = useState < string | undefined > ( undefined ) ;
@@ -1135,35 +1107,10 @@ export const AIAgentConfigurationTab = () => {
11351107 < CardContent className = "px-4 pb-4" >
11361108 { isEditing ? (
11371109 < div className = "space-y-4" >
1138- { /* Gateway Selection - only show if gateways deployed */ }
1139- { hasGatewayDeployed && availableGateways . length > 0 && (
1140- < div className = "space-y-2" >
1141- < Label > AI Gateway</ Label >
1142- < Text className = "text-muted-foreground text-xs" > Route requests through an AI Gateway</ Text >
1143- < Select
1144- onValueChange = { ( value ) => updateField ( { gatewayId : value || undefined } ) }
1145- value = { displayData . gatewayId || '' }
1146- >
1147- < SelectTrigger >
1148- < SelectValue placeholder = "No gateway" />
1149- </ SelectTrigger >
1150- < SelectContent >
1151- < SelectItem value = "" > No gateway</ SelectItem >
1152- { availableGateways . map ( ( gw : { id : string ; displayName : string ; description : string } ) => (
1153- < SelectItem key = { gw . id } value = { gw . id } >
1154- { gw . displayName }
1155- </ SelectItem >
1156- ) ) }
1157- </ SelectContent >
1158- </ Select >
1159- </ div >
1160- ) }
1161-
11621110 { /* Provider - now editable */ }
11631111 < div className = "space-y-2" >
11641112 < Label htmlFor = "provider" > Provider</ Label >
11651113 < Select
1166- disabled = { ! ! displayData . gatewayId }
11671114 onValueChange = { ( value : 'openai' | 'anthropic' | 'google' | 'openaiCompatible' ) => {
11681115 const newProviderData = MODEL_OPTIONS_BY_PROVIDER [ value ] ;
11691116 const firstModel =
@@ -1224,14 +1171,12 @@ export const AIAgentConfigurationTab = () => {
12241171 < Label htmlFor = "model" > Model</ Label >
12251172 { displayData . provider ?. provider . case === 'openaiCompatible' ? (
12261173 < Input
1227- disabled = { ! ! displayData . gatewayId }
12281174 onChange = { ( e ) => updateField ( { model : e . target . value } ) }
12291175 placeholder = "Enter model name (e.g., llama-3.1-70b)"
12301176 value = { displayData . model }
12311177 />
12321178 ) : (
12331179 < Select
1234- disabled = { ! ! displayData . gatewayId }
12351180 onValueChange = { ( value ) => updateField ( { model : value } ) }
12361181 value = { displayData . model }
12371182 >
@@ -1295,25 +1240,23 @@ export const AIAgentConfigurationTab = () => {
12951240 ) }
12961241 </ div >
12971242
1298- { /* API Token - HIDE if using gateway */ }
1299- { ! displayData . gatewayId && (
1300- < div className = "space-y-2" >
1301- < Label htmlFor = "apiKeySecret" > API Token</ Label >
1302- < div className = "[&>div]:flex-col [&>div]:items-stretch [&>div]:gap-2" >
1303- < SecretSelector
1304- availableSecrets = { availableSecrets }
1305- customText = { AI_AGENT_SECRET_TEXT }
1306- onChange = { ( value ) => updateField ( { apiKeySecret : value } ) }
1307- placeholder = "Select from secrets store or create new"
1308- scopes = { [ Scope . MCP_SERVER , Scope . AI_AGENT ] }
1309- value = { displayData . apiKeySecret }
1310- />
1311- </ div >
1243+ { /* API Token */ }
1244+ < div className = "space-y-2" >
1245+ < Label htmlFor = "apiKeySecret" > API Token</ Label >
1246+ < div className = "[&>div]:flex-col [&>div]:items-stretch [&>div]:gap-2" >
1247+ < SecretSelector
1248+ availableSecrets = { availableSecrets }
1249+ customText = { AI_AGENT_SECRET_TEXT }
1250+ onChange = { ( value ) => updateField ( { apiKeySecret : value } ) }
1251+ placeholder = "Select from secrets store or create new"
1252+ scopes = { [ Scope . MCP_SERVER , Scope . AI_AGENT ] }
1253+ value = { displayData . apiKeySecret }
1254+ />
13121255 </ div >
1313- ) }
1256+ </ div >
13141257
1315- { /* Base URL - only show for openaiCompatible and when not using gateway */ }
1316- { ! displayData . gatewayId && displayData . provider ?. provider . case === 'openaiCompatible' && (
1258+ { /* Base URL - only show for openaiCompatible */ }
1259+ { displayData . provider ?. provider . case === 'openaiCompatible' && (
13171260 < div className = "space-y-2" >
13181261 < Label htmlFor = "baseUrl" > Base URL (required)</ Label >
13191262 < Input
@@ -1341,23 +1284,6 @@ export const AIAgentConfigurationTab = () => {
13411284 </ div >
13421285 ) : (
13431286 < div className = "space-y-4" >
1344- { /* Gateway - only show if gateways deployed */ }
1345- { hasGatewayDeployed && availableGateways . length > 0 && (
1346- < div className = "space-y-2" >
1347- < Label > AI Gateway</ Label >
1348- < div className = "flex h-10 items-center rounded-md border border-gray-200 bg-gray-50 px-3 py-2" >
1349- < Text variant = "default" >
1350- { displayData . gatewayId
1351- ? availableGateways . find (
1352- ( gw : { id : string ; displayName : string ; description : string } ) =>
1353- gw . id === displayData . gatewayId
1354- ) ?. displayName || displayData . gatewayId
1355- : 'None' }
1356- </ Text >
1357- </ div >
1358- </ div >
1359- ) }
1360-
13611287 < div className = "space-y-2" >
13621288 < Label > Provider</ Label >
13631289 < div className = "flex h-10 items-center rounded-md border border-gray-200 bg-gray-50 px-3 py-2" >
@@ -1375,25 +1301,21 @@ export const AIAgentConfigurationTab = () => {
13751301 < AIAgentModel model = { displayData . model } />
13761302 </ div >
13771303 </ div >
1378- { /* API Token - HIDE if using gateway */ }
1379- { ! displayData . gatewayId && (
1304+ { /* API Token */ }
1305+ < div className = "space-y-2" >
1306+ < Label > API Token</ Label >
1307+ < div className = "flex h-10 items-center rounded-md border border-gray-200 bg-gray-50 px-3 py-2" >
1308+ < Text variant = "default" > { displayData . apiKeySecret || 'No secret configured' } </ Text >
1309+ </ div >
1310+ </ div >
1311+ { agent . provider ?. provider . case === 'openaiCompatible' && displayData . baseUrl && (
13801312 < div className = "space-y-2" >
1381- < Label > API Token </ Label >
1313+ < Label > Base URL </ Label >
13821314 < div className = "flex h-10 items-center rounded-md border border-gray-200 bg-gray-50 px-3 py-2" >
1383- < Text variant = "default" > { displayData . apiKeySecret || 'No secret configured' } </ Text >
1315+ < Text variant = "default" > { displayData . baseUrl } </ Text >
13841316 </ div >
13851317 </ div >
13861318 ) }
1387- { ! displayData . gatewayId &&
1388- agent . provider ?. provider . case === 'openaiCompatible' &&
1389- displayData . baseUrl && (
1390- < div className = "space-y-2" >
1391- < Label > Base URL</ Label >
1392- < div className = "flex h-10 items-center rounded-md border border-gray-200 bg-gray-50 px-3 py-2" >
1393- < Text variant = "default" > { displayData . baseUrl } </ Text >
1394- </ div >
1395- </ div >
1396- ) }
13971319 < div className = "space-y-2" >
13981320 < Label > Max Iterations</ Label >
13991321 < div className = "flex h-10 items-center rounded-md border border-gray-200 bg-gray-50 px-3 py-2" >
0 commit comments