mirror of
https://github.com/claude-code-best/claude-code.git
synced 2026-06-17 22:05:50 +00:00
35 lines
1.5 KiB
TypeScript
35 lines
1.5 KiB
TypeScript
import { describe, expect, test } from 'bun:test'
|
|
import type { CoreTool, Tool, Tools, AnyObject, ToolResult, ValidationResult, PermissionResult } from '@claude-code-best/agent-tools'
|
|
import type { Tool as HostTool } from '../../../../src/Tool.js'
|
|
|
|
describe('agent-tools compatibility', () => {
|
|
test('CoreTool structural compatibility with host Tool', () => {
|
|
// The host's Tool should structurally satisfy CoreTool
|
|
// because it has all required fields (name, call, description, etc.)
|
|
// This test verifies the type-level compatibility at runtime
|
|
const mockHostTool: HostTool = {
|
|
name: 'test',
|
|
aliases: [],
|
|
searchHint: 'test tool',
|
|
inputSchema: {} as any,
|
|
async call() { return { data: 'ok' } as any },
|
|
async description() { return 'test' },
|
|
async prompt() { return 'test prompt' },
|
|
isConcurrencySafe: () => false,
|
|
isEnabled: () => true,
|
|
isReadOnly: () => false,
|
|
async checkPermissions() { return { behavior: 'allow' as const, updatedInput: {} } },
|
|
toAutoClassifierInput: () => '',
|
|
userFacingName: () => 'test',
|
|
maxResultSizeChars: 100000,
|
|
mapToolResultToToolResultBlockParam: () => ({ type: 'tool_result', tool_use_id: '1', content: 'ok' }),
|
|
renderToolUseMessage: () => null,
|
|
}
|
|
|
|
// This assignment should work if HostTool structurally extends CoreTool
|
|
const coreTool: CoreTool = mockHostTool as unknown as CoreTool
|
|
expect(coreTool.name).toBe('test')
|
|
expect(coreTool.isEnabled()).toBe(true)
|
|
})
|
|
})
|