hangwin--mcp-chrome
88 行
2.9 KiB
TypeScript
88 行
2.9 KiB
TypeScript
import { initNativeHostListener } from './native-host';
|
|
import {
|
|
initSemanticSimilarityListener,
|
|
initializeSemanticEngineIfCached,
|
|
} from './semantic-similarity';
|
|
import { initStorageManagerListener } from './storage-manager';
|
|
import { cleanupModelCache } from '@/utils/semantic-similarity-engine';
|
|
import { initRecordReplayListeners } from './record-replay';
|
|
import { initElementMarkerListeners } from './element-marker';
|
|
import { initWebEditorListeners } from './web-editor';
|
|
import { initQuickPanelAgentHandler } from './quick-panel/agent-handler';
|
|
import { initQuickPanelCommands } from './quick-panel/commands';
|
|
import { initQuickPanelTabsHandler } from './quick-panel/tabs-handler';
|
|
|
|
// Record-Replay V3 (feature flag)
|
|
import { bootstrapV3 } from './record-replay-v3/bootstrap';
|
|
|
|
/**
|
|
* Feature flag for RR-V3
|
|
* Set to true to enable the new Record-Replay V3 engine
|
|
*/
|
|
const ENABLE_RR_V3 = true;
|
|
|
|
/**
|
|
* Background script entry point
|
|
* Initializes all background services and listeners
|
|
*/
|
|
export default defineBackground(() => {
|
|
// Open welcome page on first install
|
|
chrome.runtime.onInstalled.addListener((details) => {
|
|
if (details.reason === 'install') {
|
|
// Open the welcome/onboarding page for new installations
|
|
chrome.tabs.create({
|
|
url: chrome.runtime.getURL('/welcome.html'),
|
|
});
|
|
}
|
|
});
|
|
|
|
// Initialize core services
|
|
initNativeHostListener();
|
|
initSemanticSimilarityListener();
|
|
initStorageManagerListener();
|
|
// Record & Replay V1/V2 listeners
|
|
initRecordReplayListeners();
|
|
|
|
// Record & Replay V3 (new engine)
|
|
if (ENABLE_RR_V3) {
|
|
bootstrapV3()
|
|
.then((runtime) => {
|
|
console.log(`[RR-V3] Bootstrap complete, ownerId: ${runtime.ownerId}`);
|
|
})
|
|
.catch((error) => {
|
|
console.error('[RR-V3] Bootstrap failed:', error);
|
|
});
|
|
}
|
|
|
|
// Element marker: context menu + CRUD listeners
|
|
initElementMarkerListeners();
|
|
// Web editor: toggle edit-mode overlay
|
|
initWebEditorListeners();
|
|
// Quick Panel: send messages to AgentChat via background-stream bridge
|
|
initQuickPanelAgentHandler();
|
|
// Quick Panel: tabs search bridge for content script UI
|
|
initQuickPanelTabsHandler();
|
|
// Quick Panel: keyboard shortcut handler
|
|
initQuickPanelCommands();
|
|
|
|
// Conditionally initialize semantic similarity engine if model cache exists
|
|
initializeSemanticEngineIfCached()
|
|
.then((initialized) => {
|
|
if (initialized) {
|
|
console.log('Background: Semantic similarity engine initialized from cache');
|
|
} else {
|
|
console.log(
|
|
'Background: Semantic similarity engine initialization skipped (no cache found)',
|
|
);
|
|
}
|
|
})
|
|
.catch((error) => {
|
|
console.warn('Background: Failed to conditionally initialize semantic engine:', error);
|
|
});
|
|
|
|
// Initial cleanup on startup
|
|
cleanupModelCache().catch((error) => {
|
|
console.warn('Background: Initial cache cleanup failed:', error);
|
|
});
|
|
});
|