MCPcopy Create free account
hub / github.com/1Panel-dev/1Panel / buildOpenclawModelsFromAccount

Function buildOpenclawModelsFromAccount

agent/app/service/agents_utils.go:1000–1053  ·  view source on GitHub ↗
(account *model.AgentAccount, selectedModel string)

Source from the content-addressed store, hash-verified

998}
999
1000func buildOpenclawModelsFromAccount(account *model.AgentAccount, selectedModel string) (string, map[string]map[string]interface{}, *modelsConfig, error) {
1001 accountModels, err := loadAgentAccountModels(account)
1002 if err != nil {
1003 return "", nil, nil, err
1004 }
1005 if len(accountModels) == 0 {
1006 return "", nil, nil, buserr.New("ErrAgentModelNotInAccount")
1007 }
1008 if selectedModel == "" {
1009 return "", nil, nil, buserr.New("ErrAgentModelNotInAccount")
1010 }
1011 selectedAccountModel, err := requireAgentAccountModelForProvider(account.Provider, accountModels, selectedModel)
1012 if err != nil {
1013 return "", nil, nil, err
1014 }
1015 selectedModel = selectedAccountModel.ID
1016
1017 providerKey := ""
1018 providerCfg := modelProvider{}
1019 entries := make([]modelEntry, 0, len(accountModels))
1020 primaryModel := ""
1021 defaultsModels := make(map[string]map[string]interface{}, len(accountModels))
1022 for _, item := range accountModels {
1023 resolvedPrimary, entry, key, baseCfg, err := buildOpenclawAccountModelConfig(account, item)
1024 if err != nil {
1025 return "", nil, nil, err
1026 }
1027 if providerKey == "" {
1028 providerKey = key
1029 providerCfg.ApiKey = baseCfg.ApiKey
1030 providerCfg.BaseUrl = baseCfg.BaseUrl
1031 providerCfg.Api = baseCfg.Api
1032 providerCfg.AuthHeader = baseCfg.AuthHeader
1033 }
1034 entries = append(entries, entry)
1035 defaultsModels[resolvedPrimary] = map[string]interface{}{}
1036 if sameProviderModelID(account.Provider, item.ID, selectedModel) {
1037 primaryModel = resolvedPrimary
1038 }
1039 }
1040 if primaryModel == "" {
1041 return "", nil, nil, buserr.New("ErrAgentModelNotInAccount")
1042 }
1043 if !requiresOpenclawProviderModels(account.Provider) {
1044 return primaryModel, defaultsModels, nil, nil
1045 }
1046 providerCfg.Models = entries
1047 return primaryModel, defaultsModels, &modelsConfig{
1048 Mode: "merge",
1049 Providers: map[string]modelProvider{
1050 providerKey: providerCfg,
1051 },
1052 }, nil
1053}
1054
1055func buildOpenclawAccountModelConfig(account *model.AgentAccount, model dto.AgentAccountModel) (string, modelEntry, string, modelProvider, error) {
1056 providerPatch, err := providercatalog.BuildOpenClawProviderPatch(account.Provider, model.ID, account.APIType, account.BaseURL, account.APIKey)

Callers 1

writeOpenclawConfigFunction · 0.85

Tested by

no test coverage detected