| 123456789101112131415161718192021222324252627282930313233 |
- import { readFile, writeFile } from 'node:fs/promises'
- import { join } from 'node:path'
- import { fileURLToPath } from 'node:url'
- import { describe, expect, it } from 'vitest'
- import { runLoaderSmoke } from '@deepseek-ai/dsh-loader-smoke'
- const binScript = fileURLToPath(new URL('../../../packages/examples/cli-demo/src/bin.ts', import.meta.url))
- const configPath = fileURLToPath(new URL('../cordis.yml', import.meta.url))
- const tsconfigPath = fileURLToPath(new URL('../../../tsconfig.json', import.meta.url))
- const hasKey = Boolean(process.env.DEEPSEEK_API_KEY)
- describe.skipIf(!hasKey)('headless-agent with real model', () => {
- it('modifies a temporary workspace and verifies the file outside the agent', async () => {
- let verified = ''
- const { stdout } = await runLoaderSmoke({
- label: 'headless-agent real model',
- tempDirPrefix: 'headless-agent-real-',
- binScript,
- configPath,
- binArgs: [
- '--config',
- configPath,
- 'Read task.txt, replace its complete contents with exactly "value=after" followed by a newline, read it again, and report briefly.',
- ],
- tsconfigPath,
- processTimeoutMs: 120_000,
- prepare: cwd => writeFile(join(cwd, 'task.txt'), 'value=before\n'),
- inspect: async (cwd) => { verified = await readFile(join(cwd, 'task.txt'), 'utf8') },
- })
- expect(verified).toBe('value=after\n')
- expect(stdout.trim().length).toBeGreaterThan(0)
- }, 135_000)
- })
|