1import { setupMessageHandler, setRestoreReady } from "./messages";2import { setupAutoLock } from "./alarms";3import { setupPasskeyProxy } from "./passkey";4import { setupCommands } from "./commands";5import { restoreFromSession, isUnlocked, lock } from "./vault";6import { ensureSettingsLoaded } from "./vault";7import { isRecoveryConfirmPending } from "./recovery-pending";8import { denyAllPendingPasskeyRequests } from "./passkey";9import { hydratePersistedSyncState, setSyncRunner } from "./sync-trigger";10import { productionSyncRunner } from "./chirp-sync-runner";111213chrome.runtime.onInstalled.addListener(() => {});1415161718192021chrome.runtime.onConnect.addListener((port) => {22 if (port.name !== "popup") return;23 port.onDisconnect.addListener(async () => {24 await denyAllPendingPasskeyRequests();25 const s = await ensureSettingsLoaded();26 if (!isUnlocked() || s.lockOnClose === false) return;27 if (await isRecoveryConfirmPending()) return;28 lock();29 });30});3132export function start(): void {33 34 35 36 37 38 39 40 41 42 43 const restored = restoreFromSession();44 setRestoreReady(restored);45 setupMessageHandler();46 void setupAutoLock();47 setupCommands();48 void setupPasskeyProxy();49 50 51 52 setSyncRunner(productionSyncRunner);53 void restored.then(() => hydratePersistedSyncState()).catch(() => undefined);54}5556start();