* refactor(shared): unify binary downloader and session path storage - Create binary-downloader.ts for common download/extract logic - Create session-injected-paths.ts for unified path tracking - Refactor comment-checker, ast-grep, grep downloaders to use shared util - Consolidate directory injector types into shared module * feat(shared): implement unified model resolution pipeline - Create ModelResolutionPipeline for centralized model selection - Refactor model-resolver to use pipeline - Update delegate-task and config-handler to use unified logic - Ensure consistent model resolution across all agent types * refactor(agents): simplify agent utils and metadata management - Extract helper functions for config merging and env context - Register prompt metadata for all agents - Simplify agent variant detection logic * cleanup: inline utilities and remove unused exports - Remove case-insensitive.ts (inline with native JS) - Simplify opencode-version helpers - Remove unused getModelLimit, createCompactionContextInjector exports - Inline transcript entry creation in claude-code-hooks - Update tests accordingly --------- Co-authored-by: justsisyphus <justsisyphus@users.noreply.github.com>
91 lines
3.3 KiB
TypeScript
91 lines
3.3 KiB
TypeScript
import { describe, expect, it } from "bun:test"
|
|
/**
|
|
* Tests for conditional tool registration logic in index.ts
|
|
*
|
|
* The actual plugin initialization is complex to test directly,
|
|
* so we test the underlying logic that determines tool registration.
|
|
*/
|
|
describe("look_at tool conditional registration", () => {
|
|
describe("isMultimodalLookerEnabled logic", () => {
|
|
// #given multimodal-looker is in disabled_agents
|
|
// #when checking if agent is enabled
|
|
// #then should return false (disabled)
|
|
it("returns false when multimodal-looker is disabled (exact case)", () => {
|
|
const disabledAgents: string[] = ["multimodal-looker"]
|
|
const isEnabled = !disabledAgents.some(
|
|
(agent) => agent.toLowerCase() === "multimodal-looker"
|
|
)
|
|
expect(isEnabled).toBe(false)
|
|
})
|
|
|
|
// #given multimodal-looker is in disabled_agents with different case
|
|
// #when checking if agent is enabled
|
|
// #then should return false (case-insensitive match)
|
|
it("returns false when multimodal-looker is disabled (case-insensitive)", () => {
|
|
const disabledAgents: string[] = ["Multimodal-Looker"]
|
|
const isEnabled = !disabledAgents.some(
|
|
(agent) => agent.toLowerCase() === "multimodal-looker"
|
|
)
|
|
expect(isEnabled).toBe(false)
|
|
})
|
|
|
|
// #given multimodal-looker is NOT in disabled_agents
|
|
// #when checking if agent is enabled
|
|
// #then should return true (enabled)
|
|
it("returns true when multimodal-looker is not disabled", () => {
|
|
const disabledAgents: string[] = ["oracle", "librarian"]
|
|
const isEnabled = !disabledAgents.some(
|
|
(agent) => agent.toLowerCase() === "multimodal-looker"
|
|
)
|
|
expect(isEnabled).toBe(true)
|
|
})
|
|
|
|
// #given disabled_agents is empty
|
|
// #when checking if agent is enabled
|
|
// #then should return true (enabled by default)
|
|
it("returns true when disabled_agents is empty", () => {
|
|
const disabledAgents: string[] = []
|
|
const isEnabled = !disabledAgents.some(
|
|
(agent) => agent.toLowerCase() === "multimodal-looker"
|
|
)
|
|
expect(isEnabled).toBe(true)
|
|
})
|
|
|
|
// #given disabled_agents is undefined (simulated as empty array)
|
|
// #when checking if agent is enabled
|
|
// #then should return true (enabled by default)
|
|
it("returns true when disabled_agents is undefined (fallback to empty)", () => {
|
|
const disabledAgents: string[] | undefined = undefined
|
|
const list: string[] = disabledAgents ?? []
|
|
const isEnabled = !list.some(
|
|
(agent) => agent.toLowerCase() === "multimodal-looker"
|
|
)
|
|
expect(isEnabled).toBe(true)
|
|
})
|
|
})
|
|
|
|
describe("conditional tool spread pattern", () => {
|
|
// #given lookAt is not null (agent enabled)
|
|
// #when spreading into tool object
|
|
// #then look_at should be included
|
|
it("includes look_at when lookAt is not null", () => {
|
|
const lookAt = { execute: () => {} } // mock tool
|
|
const tools = {
|
|
...(lookAt ? { look_at: lookAt } : {}),
|
|
}
|
|
expect(tools).toHaveProperty("look_at")
|
|
})
|
|
|
|
// #given lookAt is null (agent disabled)
|
|
// #when spreading into tool object
|
|
// #then look_at should NOT be included
|
|
it("excludes look_at when lookAt is null", () => {
|
|
const lookAt = null
|
|
const tools = {
|
|
...(lookAt ? { look_at: lookAt } : {}),
|
|
}
|
|
expect(tools).not.toHaveProperty("look_at")
|
|
})
|
|
})
|
|
})
|