From 13ecd20b79992eacf0cd64b552f6bf52f4d86064 Mon Sep 17 00:00:00 2001 From: Jinwoo-H Date: Wed, 2 Sep 2026 03:53:24 -0400 Subject: [PATCH] fix(ai-vault-search): satisfy the preload bridge and Windows-lane teardown ratchets after rebase main now requires concrete return types on every bridge key and refuses raw recursive rm in tests that run on the Windows package job. --- .../session-search-fts5-contract.test.ts | 5 +++-- .../ai-vault-search/session-search-schema.test.ts | 5 +++-- src/preload/api/ai-vault-bridge.ts | 11 ++++++++--- 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/src/main/ai-vault-search/session-search-fts5-contract.test.ts b/src/main/ai-vault-search/session-search-fts5-contract.test.ts index dd7bf4b9ad1..80e5c64f4f1 100644 --- a/src/main/ai-vault-search/session-search-fts5-contract.test.ts +++ b/src/main/ai-vault-search/session-search-fts5-contract.test.ts @@ -1,7 +1,8 @@ -import { mkdtemp, rm, writeFile } from 'node:fs/promises' +import { mkdtemp, writeFile } from 'node:fs/promises' import { tmpdir } from 'node:os' import { join } from 'node:path' import { afterEach, beforeEach, describe, expect, it } from 'vitest' +import { removeTree } from '../../shared/windows-transient-lock-removal' import type SyncDatabase from '../sqlite/sync-database' import { resetSessionParseCacheForTests } from '../ai-vault/session-scanner-parse-cache' import { registerSessionSearchIndexSink } from '../ai-vault/session-search-capture' @@ -23,7 +24,7 @@ beforeEach(() => { afterEach(async () => { registerSessionSearchIndexSink(null) - await Promise.all(tempRoots.map((root) => rm(root, { recursive: true, force: true }))) + await Promise.all(tempRoots.map((root) => removeTree(root))) tempRoots = [] }) diff --git a/src/main/ai-vault-search/session-search-schema.test.ts b/src/main/ai-vault-search/session-search-schema.test.ts index d922e1010d6..e83ba272f30 100644 --- a/src/main/ai-vault-search/session-search-schema.test.ts +++ b/src/main/ai-vault-search/session-search-schema.test.ts @@ -1,7 +1,8 @@ -import { mkdtemp, rm, stat, writeFile } from 'node:fs/promises' +import { mkdtemp, stat, writeFile } from 'node:fs/promises' import { tmpdir } from 'node:os' import { join } from 'node:path' import { afterEach, describe, expect, it } from 'vitest' +import { removeTree } from '../../shared/windows-transient-lock-removal' import type SyncDatabase from '../sqlite/sync-database' import { SESSION_SEARCH_SCHEMA_VERSION, @@ -12,7 +13,7 @@ import { let roots: string[] = [] afterEach(async () => { - await Promise.all(roots.map((root) => rm(root, { recursive: true, force: true }))) + await Promise.all(roots.map((root) => removeTree(root))) roots = [] }) diff --git a/src/preload/api/ai-vault-bridge.ts b/src/preload/api/ai-vault-bridge.ts index 503f0b12a67..634b30cb8d2 100644 --- a/src/preload/api/ai-vault-bridge.ts +++ b/src/preload/api/ai-vault-bridge.ts @@ -11,15 +11,20 @@ import type { import type { AiVaultSessionTitlesArgs } from '../../shared/ai-vault-session-title' import type { AiVaultPrepareSessionResumeArgs } from '../../shared/ai-vault-resume-preparation' import type { PreloadApi } from '../api-types' -import type { AiVaultSearchArgs } from '../../shared/ai-vault-search-types' +import type { + AiVaultSearchArgs, + AiVaultSearchCoverage, + AiVaultSearchResult +} from '../../shared/ai-vault-search-types' export const aiVaultApi = { listSessions: (args?: AiVaultListArgs) => ipcRenderer.invoke('aiVault:listSessions', args), resolveSessionTitles: (args: AiVaultSessionTitlesArgs) => ipcRenderer.invoke('aiVault:resolveSessionTitles', args), - searchSessions: (args: AiVaultSearchArgs): Promise => + searchSessions: (args: AiVaultSearchArgs): Promise => ipcRenderer.invoke('aiVault:searchSessions', args), - searchCoverage: (): Promise => ipcRenderer.invoke('aiVault:searchCoverage'), + searchCoverage: (): Promise => + ipcRenderer.invoke('aiVault:searchCoverage'), cancelListSessions: (args: { requestToken: string }): Promise => ipcRenderer.invoke('aiVault:cancelListSessions', args), prepareSessionResume: (args: AiVaultPrepareSessionResumeArgs) =>