| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- /**
- * REAL-composition tier (packages/AGENTS.md): boot the examples-owned
- * tool-pwsh Loader fixture as a subprocess through the same app/boot path a
- * deployment uses, execute real foreground and background pwsh commands
- * through the tool registry, and assert the assembled model-visible surface:
- * schema, prompt section, and rendered results. Self-skips when no `pwsh`
- * executable exists (a CI accommodation for hosts without PowerShell).
- */
- import { readFile } from 'node:fs/promises'
- import { join } from 'node:path'
- import { fileURLToPath } from 'node:url'
- import { spawnSync } from 'node:child_process'
- import { describe, expect, it } from 'vitest'
- import { LOADER_SMOKE_TEST_TIMEOUT_MS, runLoaderSmoke } from '@deepseek-ai/dsh-loader-smoke'
- import { resolvePwshPath } from '@deepseek-ai/dsh-pwsh-local'
- // The probe follows the executor's own resolution (Program Files installs on
- // Windows are found even when bare `pwsh` is not on PATH).
- const hasPwsh = spawnSync(resolvePwshPath(), ['-NoLogo', '-NoProfile', '-NonInteractive', '-Command', '$true'], { encoding: 'utf8' }).status === 0
- const driver = fileURLToPath(new URL(
- '../../../../examples/acp-agent/tests/fixtures/bash/tool-pwsh/driver.ts',
- import.meta.url,
- ))
- const configPath = fileURLToPath(new URL(
- '../../../../examples/acp-agent/tests/fixtures/bash/tool-pwsh/cordis.yml',
- import.meta.url,
- ))
- const repoTsconfig = fileURLToPath(new URL('../../../../tsconfig.json', import.meta.url))
- interface PwshLoaderReport {
- schemaHasRunInBackground: boolean
- promptHasMarkerSection: boolean
- foregroundText: string
- backgroundText: string
- }
- describe.skipIf(!hasPwsh)('tool-pwsh through a real Loader composition', () => {
- it('registers the pwsh surface and renders real foreground and background results', async () => {
- let report: PwshLoaderReport | undefined
- const { stderr } = await runLoaderSmoke({
- label: 'tool-pwsh loader smoke',
- tempDirPrefix: 'tool-pwsh-loader-',
- binScript: driver,
- libBinScript: driver,
- configPath,
- tsconfigPath: repoTsconfig,
- inspect: async (cwd) => {
- report = JSON.parse(await readFile(join(cwd, 'pwsh-loader-report.json'), 'utf8')) as PwshLoaderReport
- },
- })
- expect(stderr).not.toContain('UNHANDLED')
- expect(report).toBeDefined()
- expect(report).toMatchObject({
- schemaHasRunInBackground: true,
- promptHasMarkerSection: true,
- })
- expect(report?.foregroundText).toBe('loader-ok\n')
- expect(report?.backgroundText).toContain('loader-bg-ok')
- expect(report?.backgroundText).toContain('[status: completed, exit code: 0]')
- }, LOADER_SMOKE_TEST_TIMEOUT_MS)
- })
|