返回 DeepSeek-Reasonix
planner_explicit_test.go
根目录 / internal / boot / planner_explicit_test.go
1 package boot
2
3 import (
4 "context"
5 "strings"
6 "testing"
7
8 "reasonix/internal/agent/testutil"
9 "reasonix/internal/event"
10 )
11
12 func TestBuildOmitsCoordinatorWithoutPlannerModel(t *testing.T) {
13 isolateConfigHome(t)
14 dir := robustTempDir(t)
15 t.Chdir(dir)
16 registerBootTokenProfileTestProvider()
17 setBootTokenProfileTestProvider(t, testutil.NewMock("executor-only"))
18
19 writeFile(t, dir, "reasonix.toml", `
20 default_model = "executor"
21
22 [[providers]]
23 name = "executor"
24 kind = "boot-token-profile-test"
25 model = "executor-model"
26 `)
27 approveWorkspace(t, dir)
28
29 ctrl, err := Build(context.Background(), Options{Sink: event.Discard})
30 if err != nil {
31 t.Fatalf("Build: %v", err)
32 }
33 defer ctrl.Close()
34 if strings.Contains(ctrl.Label(), "planner") {
35 t.Fatalf("label = %q, want executor-only without planner_model", ctrl.Label())
36 }
37 }
38
39 func TestBuildConstructsCoordinatorWhenPlannerModelConfigured(t *testing.T) {
40 isolateConfigHome(t)
41 dir := robustTempDir(t)
42 t.Chdir(dir)
43 registerBootTokenProfileTestProvider()
44 setBootTokenProfileTestProvider(t, testutil.NewMock("dual"))
45
46 writeFile(t, dir, "reasonix.toml", `
47 default_model = "executor"
48
49 [agent]
50 planner_model = "planner"
51
52 [[providers]]
53 name = "executor"
54 kind = "boot-token-profile-test"
55 model = "executor-model"
56
57 [[providers]]
58 name = "planner"
59 kind = "boot-token-profile-test"
60 model = "planner-model"
61 `)
62 approveWorkspace(t, dir)
63
64 ctrl, err := Build(context.Background(), Options{Sink: event.Discard})
65 if err != nil {
66 t.Fatalf("Build: %v", err)
67 }
68 defer ctrl.Close()
69 if !strings.Contains(ctrl.Label(), "planner") {
70 t.Fatalf("label = %q, want a coordinator when planner_model is set", ctrl.Label())
71 }
72 }
73
74 func TestBuildConstructsCoordinatorWhenPlannerModelMatchesExecutor(t *testing.T) {
75 isolateConfigHome(t)
76 dir := robustTempDir(t)
77 t.Chdir(dir)
78 registerBootTokenProfileTestProvider()
79 setBootTokenProfileTestProvider(t, testutil.NewMock("same-model"))
80
81 writeFile(t, dir, "reasonix.toml", `
82 default_model = "executor"
83
84 [agent]
85 planner_model = "executor"
86
87 [[providers]]
88 name = "executor"
89 kind = "boot-token-profile-test"
90 model = "shared-model"
91 `)
92 approveWorkspace(t, dir)
93
94 ctrl, err := Build(context.Background(), Options{Sink: event.Discard})
95 if err != nil {
96 t.Fatalf("Build: %v", err)
97 }
98 defer ctrl.Close()
99 if !strings.Contains(ctrl.Label(), "planner") {
100 t.Fatalf("label = %q, want a coordinator when planner_model is explicitly set even to the same model", ctrl.Label())
101 }
102 }
103
103 lines GO