diff --git a/src/main/ai-vault/opencode-wsl-runtime-preparation.test.ts b/src/main/ai-vault/opencode-wsl-runtime-preparation.test.ts index 8ba01bf4617..923baf824d4 100644 --- a/src/main/ai-vault/opencode-wsl-runtime-preparation.test.ts +++ b/src/main/ai-vault/opencode-wsl-runtime-preparation.test.ts @@ -263,7 +263,7 @@ describe('WSL SQLite runtime preparation', () => { mocks.run.mockResolvedValueOnce(success('')) await prepare([home]) await vi.waitFor(async () => - expect((await prepare([home]))[0]?.error).toContain('No OpenCode database') + expect((await prepare([home]))[0]?.error).toContain('No OpenCode or ZCode database') ) expect(mocks.run).toHaveBeenCalledOnce() expect(mocks.download).not.toHaveBeenCalled() @@ -274,16 +274,19 @@ describe('WSL SQLite runtime preparation', () => { expect(mocks.running).toHaveBeenCalledWith(expect.any(Array), { requireConfirmed: true }) }) - it.skipIf(process.platform === 'win32')( - 'keeps the discovery default visible when guest overrides point elsewhere', - async () => { + it.skipIf(process.platform === 'win32').each(['opencode', 'zcode'] as const)( + 'prepares a %s-only distro despite unrelated OpenCode overrides', + async (agent) => { await prepared() const script = mocks.run.mock.calls[0]?.[0].script const directory = await mkdtemp(join(tmpdir(), 'orca-wsl-presence-')) try { - const data = join(directory, '.local', 'share', 'opencode') + const data = + agent === 'zcode' + ? join(directory, '.zcode', 'cli', 'db') + : join(directory, '.local', 'share', 'opencode') await mkdir(data, { recursive: true }) - await writeFile(join(data, 'opencode.db'), '') + await writeFile(join(data, agent === 'zcode' ? 'db.sqlite' : 'opencode.db'), '') const result = await runProcess({ program: '/bin/sh', args: ['-c', script], diff --git a/src/main/ai-vault/opencode-wsl-runtime-preparation.ts b/src/main/ai-vault/opencode-wsl-runtime-preparation.ts index 1f242772acd..c107a308248 100644 --- a/src/main/ai-vault/opencode-wsl-runtime-preparation.ts +++ b/src/main/ai-vault/opencode-wsl-runtime-preparation.ts @@ -113,6 +113,7 @@ async function prepare(distro: string): Promise { const hasDatabase = await run({ script: [ 'data="${XDG_DATA_HOME:-$HOME/.local/share}/opencode"', + 'if [ -f "$HOME/.zcode/cli/db/db.sqlite" ]; then printf present; exit 0; fi', // WSL discovery still enumerates the default data root independently of guest overrides. 'for db in "$HOME/.local/share/opencode"/opencode.db "$HOME/.local/share/opencode"/opencode-*.db; do if [ -f "$db" ]; then printf present; exit 0; fi; done', 'case "${OPENCODE_DB-}" in', @@ -125,7 +126,7 @@ async function prepare(distro: string): Promise { loginPath: 'none' }) if (hasDatabase !== 'present') { - return { distro, error: 'No OpenCode database is present in this WSL distro.' } + return { distro, error: 'No OpenCode or ZCode database is present in this WSL distro.' } } const readerPath = await run({ program: 'wslpath',