Isolate providers per client: add provider targets and a Codex-side form

This commit is contained in:
kate522 committed 2026-10-18 19:22:38 +08:00
1 parent adc8234cc9
commit d759fe5e5d
13 files changed
+595 -309

No files matched your search

+24 -1
View File
@@ -28,6 +28,13 @@ const (
LanguageEnglish = "en-US"
)
// Client targets. The Claude and Codex pages each manage their own
// isolated set of providers.
const (
TargetClaude = "claude"
TargetCodex = "codex"
)
// Models maps requested model names onto upstream model names. The role
// fields are matched by keyword (a request mentioning "haiku" uses Haiku);
// Extra holds exact requested-model overrides and wins over everything.
@@ -49,6 +56,7 @@ type Provider struct {
Models Models `json:"models"`
EnabledForClaude bool `json:"enabled_for_claude"`
EnabledForCodex bool `json:"enabled_for_codex"`
Target string `json:"target,omitempty"`
CreatedAt time.Time `json:"created_at"`
}
@@ -162,6 +170,13 @@ func (c *Config) normalize() {
}
for i := range c.Providers {
c.Providers[i].Models.normalize()
switch c.Providers[i].Target {
case TargetClaude, TargetCodex:
default:
// Providers created before targets existed belong to the
// Claude page.
c.Providers[i].Target = TargetClaude
}
}
switch c.Gateway.PortMode {
case PortModeAuto, PortModeFixed:
@@ -186,7 +201,7 @@ func (c *Config) clone() *Config {
return &out
}
func newProvider(name, preset, baseURL, apiKey string, models Models) (*Provider, error) {
func newProvider(name, preset, baseURL, apiKey string, models Models, target string) (*Provider, error) {
name = strings.TrimSpace(name)
if name == "" {
return nil, errors.New("name is required")
@@ -204,6 +219,13 @@ func newProvider(name, preset, baseURL, apiKey string, models Models) (*Provider
return nil, errors.New("API key is required")
}
models.normalize()
switch target {
case TargetClaude, TargetCodex:
case "":
target = TargetClaude
default:
return nil, fmt.Errorf("target must be %q or %q", TargetClaude, TargetCodex)
}
return &Provider{
ID: newID("p_"),
Name: name,
@@ -211,6 +233,7 @@ func newProvider(name, preset, baseURL, apiKey string, models Models) (*Provider
BaseURL: strings.TrimRight(baseURL, "/"),
APIKey: apiKey,
Models: models,
Target: target,
CreatedAt: time.Now().UTC(),
}, nil
}