Files
goodbuddy/src/shared/builtin-model-tools.test.ts
T
mesalogo dd29f309f1 feat: add save_image tool and list image MCP tools
Expose save_image across direct model, MCP gateway, DeepSeek Harness and remote Agents (written on the remote host via chunked reads), and show the image MCP tool list in settings.
2026-10-02 10:08:42 +08:00

61 lines
1.9 KiB
TypeScript

import { describe, expect, it } from 'vitest'
import {
builtinModelToolGroups,
builtinModelTools
} from './builtin-model-tools'
describe('built-in model tool catalog', () => {
it('uses unique tool names', () => {
const names = builtinModelTools.map((tool) => tool.name)
expect(new Set(names).size).toBe(names.length)
})
it('places direct-model groups outside the shared browser and managed image capabilities', () => {
const groupedNames = builtinModelToolGroups.flatMap((group) =>
group.tools.map((tool) => tool.name)
)
const directModelTools = builtinModelTools.filter(
(tool) => tool.group !== 'browser' && tool.group !== 'image'
)
expect(groupedNames).toHaveLength(directModelTools.length)
expect(new Set(groupedNames).size).toBe(directModelTools.length)
expect(groupedNames).toEqual(
expect.arrayContaining(directModelTools.map((tool) => tool.name))
)
expect(groupedNames).not.toContain('generate_image')
expect(groupedNames).not.toContain('save_image')
expect(
builtinModelTools
.filter((tool) => tool.group === 'image')
.map((tool) => [tool.name, tool.access])
).toEqual([['generate_image', 'write'], ['save_image', 'write']])
for (const group of builtinModelToolGroups) {
expect(group.tools.every((tool) => tool.group === group.id)).toBe(true)
}
expect(
builtinModelToolGroups
.find((group) => group.id === 'programming')
?.tools.map((tool) => tool.name)
).toEqual(['process_execute', 'output_read', 'subagent_delegate'])
})
it('classifies programming tool access for mode filtering', () => {
const programmingAccess = Object.fromEntries(
builtinModelTools
.filter((tool) => tool.group === 'programming')
.map((tool) => [tool.name, tool.access])
)
expect(programmingAccess).toEqual({
process_execute: 'write',
output_read: 'read',
subagent_delegate: 'read'
})
})
})