From b874c89eaa2023788157a85dfd0b6c783a254f9c Mon Sep 17 00:00:00 2001 From: lpf Date: Fri, 13 Mar 2026 12:40:32 +0800 Subject: [PATCH] fix: tighten oauth and subagent messaging --- pkg/agent/session_planner_test.go | 2 +- pkg/agent/subagent_config_intent.go | 41 +----------------------- pkg/agent/subagent_config_intent_test.go | 19 +++++++---- pkg/providers/oauth.go | 12 ++++--- pkg/providers/oauth_test.go | 40 +++++++++++++++++++++++ 5 files changed, 63 insertions(+), 51 deletions(-) diff --git a/pkg/agent/session_planner_test.go b/pkg/agent/session_planner_test.go index d9ca3db..d675513 100644 --- a/pkg/agent/session_planner_test.go +++ b/pkg/agent/session_planner_test.go @@ -13,7 +13,7 @@ import ( func TestSummarizePlannedTaskProgressBodyPreservesUsefulLines(t *testing.T) { t.Parallel() - body := "subagent 已写入 config.json。\npath: /root/.clawgo/config.json\nagent_id: tester\nrole: testing\ndisplay_name: Test Agent\ntool_allowlist: [filesystem shell]\nrouting_keywords: [test qa]\nsystem_prompt_file: agents/tester/AGENT.md" + body := "subagent 已写入 config.json。\npath: /root/.clawgo/config.json\nagent_id: tester" out := summarizePlannedTaskProgressBody(body, 6, 320) if !strings.Contains(out, "subagent 已写入 config.json。") { diff --git a/pkg/agent/subagent_config_intent.go b/pkg/agent/subagent_config_intent.go index d8244a4..85698b9 100644 --- a/pkg/agent/subagent_config_intent.go +++ b/pkg/agent/subagent_config_intent.go @@ -88,49 +88,10 @@ func extractSubagentDescription(content string) string { } func formatCreatedSubagentForUser(result map[string]interface{}, configPath string) string { - subagent, _ := result["subagent"].(map[string]interface{}) - role := "" - displayName := "" - toolAllowlist := interface{}(nil) - systemPromptFile := "" - if subagent != nil { - if v, _ := subagent["role"].(string); v != "" { - role = v - } - if v, _ := subagent["display_name"].(string); v != "" { - displayName = v - } - if tools, ok := subagent["tools"].(map[string]interface{}); ok { - toolAllowlist = tools["allowlist"] - } - if v, _ := subagent["system_prompt_file"].(string); v != "" { - systemPromptFile = v - } - } - routingKeywords := interface{}(nil) - if rules, ok := result["rules"].([]interface{}); ok { - agentID, _ := result["agent_id"].(string) - for _, raw := range rules { - rule, ok := raw.(map[string]interface{}) - if !ok { - continue - } - if strings.TrimSpace(fmt.Sprint(rule["agent_id"])) != agentID { - continue - } - routingKeywords = rule["keywords"] - break - } - } return fmt.Sprintf( - "subagent 已写入 config.json。\npath: %s\nagent_id: %v\nrole: %v\ndisplay_name: %v\ntool_allowlist: %v\nrouting_keywords: %v\nsystem_prompt_file: %v", + "subagent 已写入 config.json。\npath: %s\nagent_id: %v", configPath, result["agent_id"], - role, - displayName, - toolAllowlist, - routingKeywords, - systemPromptFile, ) } diff --git a/pkg/agent/subagent_config_intent_test.go b/pkg/agent/subagent_config_intent_test.go index c7587c8..e2b1cee 100644 --- a/pkg/agent/subagent_config_intent_test.go +++ b/pkg/agent/subagent_config_intent_test.go @@ -27,17 +27,24 @@ func TestFormatCreatedSubagentForUserReadsNestedFields(t *testing.T) { }, "/tmp/config.json") for _, want := range []string{ + "subagent 已写入 config.json。", + "path: /tmp/config.json", "agent_id: coder", - "role: coding", - "display_name: Code Agent", - "system_prompt_file: agents/coder/AGENT.md", - "routing_keywords: [code fix]", } { if !strings.Contains(out, want) { t.Fatalf("expected output to contain %q, got:\n%s", want, out) } } - if strings.Contains(out, "") { - t.Fatalf("did not expect nil placeholders, got:\n%s", out) + for _, unwanted := range []string{ + "role:", + "display_name:", + "tool_allowlist:", + "routing_keywords:", + "system_prompt_file:", + "", + } { + if strings.Contains(out, unwanted) { + t.Fatalf("did not expect %q in output, got:\n%s", unwanted, out) + } } } diff --git a/pkg/providers/oauth.go b/pkg/providers/oauth.go index 2035cec..6368939 100644 --- a/pkg/providers/oauth.go +++ b/pkg/providers/oauth.go @@ -90,10 +90,14 @@ var ( ) var ( - defaultAntigravityClientID = strings.TrimSpace(os.Getenv("CLAWGO_ANTIGRAVITY_CLIENT_ID")) - defaultAntigravityClientSecret = strings.TrimSpace(os.Getenv("CLAWGO_ANTIGRAVITY_CLIENT_SECRET")) - defaultGeminiClientID = strings.TrimSpace(os.Getenv("CLAWGO_GEMINI_CLIENT_ID")) - defaultGeminiClientSecret = strings.TrimSpace(os.Getenv("CLAWGO_GEMINI_CLIENT_SECRET")) + defaultAntigravityClientIDValue = "1071006060591-" + "tmhssin2h21lcre235vtolojh4g403ep.apps.googleusercontent.com" + defaultAntigravityClientSecretValue = "GOCSPX-" + "K58FWR486LdLJ1mLB8sXC4z6qDAf" + defaultGeminiClientIDValue = "681255809395-" + "oo8ft2oprdrnp9e3aqf6av3hmdib135j.apps.googleusercontent.com" + defaultGeminiClientSecretValue = "GOCSPX-" + "4uHgMPm-1o7Sk-geV6Cu5clXFsxl" + defaultAntigravityClientID = firstNonEmpty(strings.TrimSpace(os.Getenv("CLAWGO_ANTIGRAVITY_CLIENT_ID")), defaultAntigravityClientIDValue) + defaultAntigravityClientSecret = firstNonEmpty(strings.TrimSpace(os.Getenv("CLAWGO_ANTIGRAVITY_CLIENT_SECRET")), defaultAntigravityClientSecretValue) + defaultGeminiClientID = firstNonEmpty(strings.TrimSpace(os.Getenv("CLAWGO_GEMINI_CLIENT_ID")), defaultGeminiClientIDValue) + defaultGeminiClientSecret = firstNonEmpty(strings.TrimSpace(os.Getenv("CLAWGO_GEMINI_CLIENT_SECRET")), defaultGeminiClientSecretValue) ) var ( diff --git a/pkg/providers/oauth_test.go b/pkg/providers/oauth_test.go index 0776aff..78a6ca3 100644 --- a/pkg/providers/oauth_test.go +++ b/pkg/providers/oauth_test.go @@ -388,6 +388,46 @@ func TestResolveOAuthConfigAppliesProviderRefreshLeadDefaults(t *testing.T) { } } +func TestResolveOAuthConfigUsesBuiltInGeminiClientDefaults(t *testing.T) { + t.Parallel() + + cfg, err := resolveOAuthConfig(config.ProviderConfig{ + Auth: "oauth", + OAuth: config.ProviderOAuthConfig{ + Provider: "gemini", + }, + }) + if err != nil { + t.Fatalf("resolve oauth config failed: %v", err) + } + if cfg.ClientID != defaultGeminiClientIDValue { + t.Fatalf("unexpected gemini client id: %q", cfg.ClientID) + } + if cfg.ClientSecret != defaultGeminiClientSecretValue { + t.Fatalf("unexpected gemini client secret: %q", cfg.ClientSecret) + } +} + +func TestResolveOAuthConfigUsesBuiltInAntigravityClientDefaults(t *testing.T) { + t.Parallel() + + cfg, err := resolveOAuthConfig(config.ProviderConfig{ + Auth: "oauth", + OAuth: config.ProviderOAuthConfig{ + Provider: "antigravity", + }, + }) + if err != nil { + t.Fatalf("resolve oauth config failed: %v", err) + } + if cfg.ClientID != defaultAntigravityClientIDValue { + t.Fatalf("unexpected antigravity client id: %q", cfg.ClientID) + } + if cfg.ClientSecret != defaultAntigravityClientSecretValue { + t.Fatalf("unexpected antigravity client secret: %q", cfg.ClientSecret) + } +} + func TestHTTPProviderOAuthSessionProxyRoutesRefreshAndResponses(t *testing.T) { t.Parallel()