1package modes
2
3import (
4 "testing"
5
6 agenttools "github.com/patriceckhart/zot/packages/agent/tools"
7 "github.com/patriceckhart/zot/packages/core"
8)
9
10func TestOpenRouterServerToolsDefaultOff(t *testing.T) {
11 agent := core.NewAgent(nil, "openai/gpt-4.1", "", core.Registry{})
12 NewInteractive(InteractiveConfig{
13 Agent: agent,
14 Provider: "openrouter",
15 Model: "openai/gpt-4.1",
16 })
17 if _, err := agent.Tools.Get("openrouter:web_search"); err == nil {
18 t.Fatal("server tools enabled without explicit opt-in")
19 }
20 if agent.MaxToolCalls != 0 {
21 t.Fatalf("MaxToolCalls = %d; want 0", agent.MaxToolCalls)
22 }
23}
24
25func TestOpenRouterServerToolsOptInSetsSafeLimit(t *testing.T) {
26 enabled := true
27 agent := core.NewAgent(nil, "openai/gpt-4.1", "", core.Registry{})
28 NewInteractive(InteractiveConfig{
29 Agent: agent,
30 Provider: "openrouter",
31 Model: "openai/gpt-4.1",
32 OpenRouterServerToolsEnabled: &enabled,
33 })
34 if _, err := agent.Tools.Get("openrouter:web_search"); err != nil {
35 t.Fatalf("enabled server tool missing: %v", err)
36 }
37 if agent.MaxToolCalls != agenttools.OpenRouterServerToolCallLimit {
38 t.Fatalf("MaxToolCalls = %d; want %d", agent.MaxToolCalls, agenttools.OpenRouterServerToolCallLimit)
39 }
40}
41
42func TestOpenRouterServerToolsRespectNoTools(t *testing.T) {
43 enabled := true
44 agent := core.NewAgent(nil, "openai/gpt-4.1", "", core.Registry{})
45 NewInteractive(InteractiveConfig{
46 Agent: agent,
47 Provider: "openrouter",
48 Model: "openai/gpt-4.1",
49 OpenRouterServerToolsEnabled: &enabled,
50 NoTools: true,
51 })
52 if len(agent.Tools) != 0 {
53 t.Fatalf("--no-tools registry has %d tools; want none", len(agent.Tools))
54 }
55 if agent.MaxToolCalls != 0 {
56 t.Fatalf("MaxToolCalls = %d; want 0", agent.MaxToolCalls)
57 }
58}
59
60func TestOpenRouterPresetKeepsPresetToolConfiguration(t *testing.T) {
61 enabled := true
62 agent := core.NewAgent(nil, "@preset/flash", "", core.Registry{})
63 NewInteractive(InteractiveConfig{
64 Agent: agent,
65 Provider: "openrouter",
66 Model: "@preset/flash",
67 OpenRouterServerToolsEnabled: &enabled,
68 })
69 if _, err := agent.Tools.Get("openrouter:web_search"); err == nil {
70 t.Fatal("request tools would override tools configured by the preset")
71 }
72 if agent.MaxToolCalls != 0 {
73 t.Fatalf("MaxToolCalls = %d; want preset-owned default", agent.MaxToolCalls)
74 }
75}