| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- /** Opt-in native SDK compatibility check without screenshots, input, or permission prompts. */
- import { expect, it } from 'vitest'
- import { Context } from '@deepseek-ai/cordis'
- import ComputerUseRegistry from '@deepseek-ai/dsh-computer-use'
- import { ToolCallId } from '@deepseek-ai/dsh-llm'
- import SystemPrompt from '@deepseek-ai/dsh-system-prompt'
- import ToolRuntime from '@deepseek-ai/dsh-tools'
- import * as NativeProvider from '../src/index.ts'
- it.skipIf(process.env.DSH_COMPUTER_USE_NATIVE_E2E !== '1')(
- 'loads the installed native SDK, reads permission status without prompting, and shuts down',
- { retry: 0 },
- async ({ signal }) => {
- const ctx = new Context()
- try {
- await ctx.plugin(ComputerUseRegistry)
- await ctx.plugin(SystemPrompt)
- await ctx.plugin(ToolRuntime)
- const provider = ctx.plugin(NativeProvider)
- await provider
- expect(ctx.computerUse.providerName).toBe('cua-driver-native')
- const names = ctx.tools.schemas().map(tool => tool.name)
- expect(names).toContain('cua_driver_native__check_permissions')
- expect(names).toContain('cua_driver_native__get_window_state')
- expect(names.every(name => name.startsWith('cua_driver_native__'))).toBe(true)
- const result = await ctx.tools.execute({
- name: 'cua_driver_native__check_permissions',
- callId: ToolCallId('native-live-permissions'),
- arguments: { prompt: false },
- signal,
- })
- expect(result.isError).toBe(false)
- if (result.isError) throw new Error('Native permission-status call failed')
- if (result.value === null || typeof result.value !== 'object' || Array.isArray(result.value)) {
- throw new Error('Native permission status did not return an MCP result object')
- }
- expect(Array.isArray(result.value.content)).toBe(true)
- expect(result.content.some(block => block.type === 'text')).toBe(true)
- expect(result.content.some(block => block.type === 'image')).toBe(false)
- await provider.dispose()
- expect(ctx.tools.schemas()).toEqual([])
- expect(ctx.computerUse.providerName).toBeUndefined()
- } finally {
- await ctx.fiber.dispose()
- }
- },
- )
|