File tree Expand file tree Collapse file tree 4 files changed +53
-3
lines changed
Elsa.Agents.Api/Endpoints/ServiceProviders/List Expand file tree Collapse file tree 4 files changed +53
-3
lines changed Original file line number Diff line number Diff line change 1+ using Elsa . Abstractions ;
2+ using Elsa . Agents ;
3+ using Elsa . Models ;
4+ using JetBrains . Annotations ;
5+
6+ namespace Elsa . Agents . Api . Endpoints . ServiceProviders . List ;
7+
8+ /// <summary>
9+ /// Lists all registered service providers.
10+ /// </summary>
11+ [ UsedImplicitly ]
12+ public class Endpoint ( IServiceDiscoverer serviceDiscoverer ) : ElsaEndpointWithoutRequest < ListResponse < string > >
13+ {
14+ /// <inheritdoc />
15+ public override void Configure ( )
16+ {
17+ Get ( "/ai/service-providers" ) ;
18+ ConfigurePermissions ( "ai/services:read" ) ;
19+ }
20+
21+ /// <inheritdoc />
22+ public override Task < ListResponse < string > > ExecuteAsync ( CancellationToken ct )
23+ {
24+ var providers = serviceDiscoverer . Discover ( ) . Select ( x => x . Name ) . ToList ( ) ;
25+ return Task . FromResult ( new ListResponse < string > ( providers ) ) ;
26+ }
27+ }
Original file line number Diff line number Diff line change 1+ using Elsa . Api . Client . Shared . Models ;
2+ using Refit ;
3+
4+ namespace Elsa . Studio . Agents . Client ;
5+
6+ /// Represents a client API for retrieving available service providers.
7+ public interface IServiceProvidersApi
8+ {
9+ /// Lists all service providers.
10+ [ Get ( "/ai/service-providers" ) ]
11+ Task < ListResponse < string > > ListAsync ( CancellationToken cancellationToken = default ) ;
12+ }
Original file line number Diff line number Diff line change 3131 Label =" @Localizer[" Type " ]"
3232 Variant =" Variant.Outlined"
3333 HelperText =" @Localizer[" The type of the service. " ]" >
34- <MudSelectItem T =" string" Value =" @(" OpenAIChatCompletion " )" >@Localizer ["OpenAIChatCompletion"]</MudSelectItem >
35- <MudSelectItem T =" string" Value =" @(" OpenAIEmbeddingGenerator " )" >@Localizer ["OpenAIEmbeddingGenerator"]</MudSelectItem >
36- <MudSelectItem T =" string" Value =" @(" OpenAITextToImage " )" >@Localizer ["OpenAITextToImage"]</MudSelectItem >
34+ @foreach ( var provider in _serviceProviders )
35+ {
36+ <MudSelectItem T =" string" Value =" @provider" >@Localizer [provider ]</MudSelectItem >
37+ }
3738 </MudSelect >
3839
3940 <MudTextField @bind-Value =" _entity.Settings"
Original file line number Diff line number Diff line change @@ -22,6 +22,16 @@ public partial class Service : StudioComponentBase
2222 private MudForm _form = null ! ;
2323 private ServiceInputModelValidator _validator = null ! ;
2424 private ServiceModel _entity = new ( ) ;
25+ private ICollection < string > _serviceProviders = [ ] ;
26+
27+ /// <inheritdoc />
28+ protected override async Task OnInitializedAsync ( )
29+ {
30+ await base . OnInitializedAsync ( ) ;
31+ var providersApi = await ApiClientProvider . GetApiAsync < IServiceProvidersApi > ( ) ;
32+ var response = await providersApi . ListAsync ( ) ;
33+ _serviceProviders = response . Items ;
34+ }
2535
2636 /// <inheritdoc />
2737 protected override async Task OnParametersSetAsync ( )
You can’t perform that action at this time.
0 commit comments