Skip to content

Commit 638f764

Browse files
authored
Merge pull request #2 from hangwin/feat/optional_use_model
change embedding model initial time
2 parents 04bfbc9 + 55b181c commit 638f764

9 files changed

Lines changed: 438 additions & 175 deletions

File tree

app/chrome-extension/common/message-types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ export const BACKGROUND_MESSAGE_TYPES = {
2020
GET_SERVER_STATUS: 'get_server_status',
2121
REFRESH_SERVER_STATUS: 'refresh_server_status',
2222
SERVER_STATUS_CHANGED: 'server_status_changed',
23+
INITIALIZE_SEMANTIC_ENGINE: 'initialize_semantic_engine',
2324
} as const;
2425

2526
// Offscreen message types

app/chrome-extension/entrypoints/background/index.ts

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,5 @@
11
import { initNativeHostListener } from './native-host';
2-
import {
3-
initSemanticSimilarityListener,
4-
initializeDefaultSemanticEngine,
5-
} from './semantic-similarity';
2+
import { initSemanticSimilarityListener } from './semantic-similarity';
63
import { initStorageManagerListener } from './storage-manager';
74
import { vectorSearchTabsContentTool } from './tools/browser/vector-search';
85
import { ERROR_MESSAGES } from '@/common/constants';
@@ -25,6 +22,6 @@ export default defineBackground(() => {
2522
);
2623
});
2724

28-
// Initialize semantic similarity engine
29-
initializeDefaultSemanticEngine();
25+
// Note: Semantic similarity engine initialization is now user-controlled via popup
26+
console.log('Background: Semantic similarity engine initialization is now user-controlled');
3027
});

app/chrome-extension/entrypoints/background/semantic-similarity.ts

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,11 @@ let currentBackgroundModelConfig: ModelConfig | null = null;
1919
*/
2020
export async function initializeDefaultSemanticEngine(): Promise<void> {
2121
try {
22+
console.log('Background: Initializing default semantic engine...');
23+
24+
// Update status to initializing
25+
await updateModelStatus('initializing', 0);
26+
2227
const result = await chrome.storage.local.get([STORAGE_KEYS.SEMANTIC_MODEL, 'selectedVersion']);
2328
const defaultModel =
2429
(result[STORAGE_KEYS.SEMANTIC_MODEL] as ModelPreset) || 'multilingual-e5-small';
@@ -49,11 +54,31 @@ export async function initializeDefaultSemanticEngine(): Promise<void> {
4954
modelDimension: modelInfo.dimension,
5055
};
5156
console.log('Semantic engine initialized successfully:', currentBackgroundModelConfig);
57+
58+
// Update status to ready
59+
await updateModelStatus('ready', 100);
60+
61+
// Also initialize ContentIndexer now that semantic engine is ready
62+
try {
63+
const { getGlobalContentIndexer } = await import('@/utils/content-indexer');
64+
const contentIndexer = getGlobalContentIndexer();
65+
contentIndexer.startSemanticEngineInitialization();
66+
console.log('ContentIndexer initialization triggered after semantic engine initialization');
67+
} catch (indexerError) {
68+
console.warn(
69+
'Failed to initialize ContentIndexer after semantic engine initialization:',
70+
indexerError,
71+
);
72+
}
5273
} else {
53-
throw new Error(response?.error || ERROR_MESSAGES.TOOL_EXECUTION_FAILED);
74+
const errorMessage = response?.error || ERROR_MESSAGES.TOOL_EXECUTION_FAILED;
75+
await updateModelStatus('error', 0, errorMessage, 'unknown');
76+
throw new Error(errorMessage);
5477
}
55-
} catch (error) {
78+
} catch (error: any) {
5679
console.error('Background: Failed to initialize default semantic engine:', error);
80+
const errorMessage = error?.message || 'Unknown error during semantic engine initialization';
81+
await updateModelStatus('error', 0, errorMessage, 'unknown');
5782
// Don't throw error, let the extension continue running
5883
}
5984
}
@@ -314,6 +339,11 @@ export const initSemanticSimilarityListener = () => {
314339
.then((result: { success: boolean; error?: string }) => sendResponse(result))
315340
.catch((error: any) => sendResponse({ success: false, error: error.message }));
316341
return true;
342+
} else if (message.type === BACKGROUND_MESSAGE_TYPES.INITIALIZE_SEMANTIC_ENGINE) {
343+
initializeDefaultSemanticEngine()
344+
.then(() => sendResponse({ success: true }))
345+
.catch((error: any) => sendResponse({ success: false, error: error.message }));
346+
return true;
317347
}
318348
});
319349
};

app/chrome-extension/entrypoints/background/storage-manager.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,8 @@ export async function handleGetStorageStats(): Promise<{
1313
const { getGlobalContentIndexer } = await import('@/utils/content-indexer');
1414
const contentIndexer = getGlobalContentIndexer();
1515

16-
// Ensure ContentIndexer is initialized
17-
if (!contentIndexer.isSemanticEngineReady() && !contentIndexer.isSemanticEngineInitializing()) {
18-
contentIndexer.startSemanticEngineInitialization();
19-
}
16+
// Note: Semantic engine initialization is now user-controlled
17+
// ContentIndexer will be initialized when user manually triggers semantic engine initialization
2018

2119
// Get statistics
2220
const stats = contentIndexer.getStats();

app/chrome-extension/entrypoints/background/tools/browser/vector-search.ts

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,10 +41,13 @@ class VectorSearchTabsContentTool extends BaseBrowserToolExecutor {
4141

4242
/**
4343
* Start background initialization (non-blocking)
44+
* Note: Semantic engine initialization is now user-controlled
4445
*/
4546
private startBackgroundInitialization(): void {
46-
console.log('VectorSearchTabsContentTool: Starting background initialization...');
47-
this.contentIndexer.startSemanticEngineInitialization();
47+
console.log(
48+
'VectorSearchTabsContentTool: Background initialization skipped - semantic engine initialization is now user-controlled',
49+
);
50+
// this.contentIndexer.startSemanticEngineInitialization(); // Removed automatic initialization
4851
}
4952

5053
private async initializeIndexer(): Promise<void> {
@@ -261,7 +264,16 @@ class VectorSearchTabsContentTool extends BaseBrowserToolExecutor {
261264
*/
262265
public async getIndexStats() {
263266
if (!this.isInitialized) {
264-
await this.initializeIndexer();
267+
// Don't automatically initialize - just return basic stats
268+
return {
269+
totalDocuments: 0,
270+
totalTabs: 0,
271+
indexSize: 0,
272+
indexedPages: 0,
273+
isInitialized: false,
274+
semanticEngineReady: false,
275+
semanticEngineInitializing: false,
276+
};
265277
}
266278
return this.contentIndexer.getStats();
267279
}

0 commit comments

Comments
 (0)