| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- import { mkdir, mkdtemp, rm, writeFile } from 'node:fs/promises'
- import { tmpdir } from 'node:os'
- import { join } from 'node:path'
- import { expect, it } from 'vitest'
- import type {} from '@deepseek-ai/dsh-skill'
- import { launchWebScaffold, type WebScaffold } from './scaffold.ts'
- async function writeSkill(root: string, name: string): Promise<void> {
- const bundle = join(root, name)
- await mkdir(bundle, { recursive: true })
- await writeFile(join(bundle, 'SKILL.md'), `---
- name: ${name}
- description: Must not enter the Web replay scaffold
- ---
- Ambient host state.
- `)
- }
- it('isolates replay skill discovery from every ambient host root', async () => {
- const ambient = await mkdtemp(join(tmpdir(), 'dsh-web-ambient-skills-'))
- const dshHome = join(ambient, 'dsh-home')
- const agentsHome = join(ambient, 'agents-home')
- const bundled = join(ambient, 'bundled')
- await Promise.all([
- writeSkill(join(dshHome, 'skills'), 'ambient-dsh'),
- writeSkill(join(agentsHome, 'skills'), 'ambient-agents'),
- writeSkill(bundled, 'ambient-bundled'),
- ])
- const originalDshHome = process.env.DSH_HOME
- const originalAgentsHome = process.env.DSH_AGENTS_HOME
- const originalBundled = process.env.DSH_BUNDLED_SKILL_DIR
- process.env.DSH_HOME = dshHome
- process.env.DSH_AGENTS_HOME = agentsHome
- process.env.DSH_BUNDLED_SKILL_DIR = bundled
- let scaffold: WebScaffold | undefined
- try {
- scaffold = await launchWebScaffold()
- const names = (await scaffold.ctx.skills.list({ cwd: scaffold.workspaceCwd })).map(skill => skill.name)
- expect(names).not.toContain('ambient-dsh')
- expect(names).not.toContain('ambient-agents')
- expect(names).not.toContain('ambient-bundled')
- } finally {
- try {
- await scaffold?.close()
- } finally {
- if (originalDshHome === undefined) delete process.env.DSH_HOME
- else process.env.DSH_HOME = originalDshHome
- if (originalAgentsHome === undefined) delete process.env.DSH_AGENTS_HOME
- else process.env.DSH_AGENTS_HOME = originalAgentsHome
- if (originalBundled === undefined) delete process.env.DSH_BUNDLED_SKILL_DIR
- else process.env.DSH_BUNDLED_SKILL_DIR = originalBundled
- await rm(ambient, { recursive: true, force: true })
- }
- }
- })
|