feat(librarian): conditionally enable thinking based on model type

- Add isGeminiModel helper to detect Gemini models
- Disable thinking config for Gemini models (not supported)
- Enable thinking with 32000 token budget for other models
- Add tests verifying both Gemini and Claude behavior

🤖 Generated with assistance of OhMyOpenCode
This commit is contained in:
justsisyphus
2026-01-27 08:36:55 +09:00
parent 4e6bf7282e
commit ac23d45061
3 changed files with 40 additions and 1 deletions
+28
View File
@@ -91,6 +91,34 @@ describe("createBuiltinAgents with model overrides", () => {
expect(agents.oracle.textVerbosity).toBeUndefined()
})
test("Librarian with Gemini model has no thinking", async () => {
// #given
const overrides = {
librarian: { model: "google/gemini-3-flash-preview" },
}
// #when
const agents = await createBuiltinAgents([], overrides, undefined, TEST_DEFAULT_MODEL)
// #then
expect(agents.librarian.model).toBe("google/gemini-3-flash-preview")
expect(agents.librarian.thinking).toBeUndefined()
})
test("Librarian with Claude model has thinking enabled", async () => {
// #given
const overrides = {
librarian: { model: "anthropic/claude-sonnet-4-5" },
}
// #when
const agents = await createBuiltinAgents([], overrides, undefined, TEST_DEFAULT_MODEL)
// #then
expect(agents.librarian.model).toBe("anthropic/claude-sonnet-4-5")
expect(agents.librarian.thinking).toEqual({ type: "enabled", budgetTokens: 32000 })
})
test("non-model overrides are still applied after factory rebuild", async () => {
// #given
const overrides = {