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.
61 lines
1.9 KiB
TypeScript
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'
|
|
})
|
|
})
|
|
|
|
})
|