fix(native-chat): prepare SQLite readers for ZCode-only WSL homes

This commit is contained in:
Neil
2026-10-10 17:05:02 -07:00
committed by Neil
parent 3d51f67f2f
commit b74e9464eb
2 changed files with 11 additions and 7 deletions
@@ -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],
@@ -113,6 +113,7 @@ async function prepare(distro: string): Promise<OpenCodeWslRuntime> {
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<OpenCodeWslRuntime> {
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',