From a02b388b1ab54eaa56c8fa964a1a69eff557766a Mon Sep 17 00:00:00 2001 From: Luxferre Date: Thu, 17 Sep 2026 10:02:08 +0300 Subject: [PATCH] more OC headers --- main.go | 17 +++++++++++++---- main_test.go | 2 +- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/main.go b/main.go index d1ff7dc..a20ae55 100644 --- a/main.go +++ b/main.go @@ -85,7 +85,7 @@ var llmTransport = &http.Transport{ } var defCfg = Cfg{"https://api.kilo.ai/api/openrouter", "openrouter/free", "-", 0.7, 300, 120, 1000, true, "auto", 262144, map[string]string{"reasoning_effort": "high"}} -const opencodeAgentVersion = "opencode/1.18.30" +const opencodeAgentVersion = "opencode/1.18.31" func atoiD(s string, d int) int { if v, e := strconv.Atoi(strings.TrimSpace(s)); e == nil { @@ -105,7 +105,10 @@ func queryModelsContextWindow(cfg *Cfg) int { req, err := http.NewRequest("GET", strings.TrimRight(cfg.Endpoint, "/")+"/models", nil) if err != nil { return 0 } req.Header.Set("User-Agent", opencodeAgentVersion) - req.Header.Set("X-Session-ID", projectID()) + req.Header.Set("X-Session-Id", projectID()) + req.Header.Set("x-opencode-project", projectID()) + req.Header.Set("x-opencode-client", opencodeAgentVersion) + req.Header.Set("x-opencode-session", projectID()) if cfg.APIKey != "" && cfg.APIKey != "-" { req.Header.Set("Authorization", "Bearer "+cfg.APIKey) } resp, err := client.Do(req) if err != nil || resp.StatusCode >= 400 { return 0 } @@ -178,7 +181,10 @@ func listModels(cfg *Cfg) (string, error) { req, err := http.NewRequest("GET", strings.TrimRight(cfg.Endpoint, "/")+"/models", nil) if err != nil { return "", err } req.Header.Set("User-Agent", opencodeAgentVersion) - req.Header.Set("X-Session-ID", projectID()) + req.Header.Set("X-Session-Id", projectID()) + req.Header.Set("x-opencode-project", projectID()) + req.Header.Set("x-opencode-client", opencodeAgentVersion) + req.Header.Set("x-opencode-session", projectID()) if cfg.APIKey != "" && cfg.APIKey != "-" { req.Header.Set("Authorization", "Bearer "+cfg.APIKey) } resp, err := client.Do(req) if err != nil { return "", err } @@ -1047,7 +1053,10 @@ func llm(ctx context.Context, cfg *Cfg, msgs []Message, tools []map[string]any) req, _ := http.NewRequestWithContext(ctx, "POST", strings.TrimRight(cfg.Endpoint, "/")+"/chat/completions", bytes.NewReader(body)) req.Header.Set("Content-Type", "application/json") req.Header.Set("User-Agent", opencodeAgentVersion) - req.Header.Set("X-Session-ID", projectID()) + req.Header.Set("X-Session-Id", projectID()) + req.Header.Set("x-opencode-project", projectID()) + req.Header.Set("x-opencode-client", opencodeAgentVersion) + req.Header.Set("x-opencode-session", projectID()) if cfg.APIKey != "" && cfg.APIKey != "-" { req.Header.Set("Authorization", "Bearer "+cfg.APIKey) } resp, err = client.Do(req) var is4xxClientErr bool diff --git a/main_test.go b/main_test.go index 5e7b1de..cb2c7d1 100644 --- a/main_test.go +++ b/main_test.go @@ -1170,7 +1170,7 @@ func TestLLMNonStreamingAndHeaders(t *testing.T) { if gotAuth != "Bearer secret" { t.Errorf("auth = %q", gotAuth) } - if !strings.Contains(gotUA, "opencode/1.18.30") { + if !strings.Contains(gotUA, "opencode/1.18.31") { t.Errorf("user-agent = %q", gotUA) } if m.Content == nil || *m.Content != "hi" || m.ReasoningContent != "think" {