@opentabs-dev/browser-extension 0.0.65 → 0.0.67

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/dist/background-message-handlers.d.ts +5 -1
  2. package/dist/background-message-handlers.d.ts.map +1 -1
  3. package/dist/background-message-handlers.js +97 -4
  4. package/dist/background-message-handlers.js.map +1 -1
  5. package/dist/background.js +166 -34
  6. package/dist/background.js.map +1 -1
  7. package/dist/constants.d.ts +1 -0
  8. package/dist/constants.d.ts.map +1 -1
  9. package/dist/constants.js +1 -0
  10. package/dist/constants.js.map +1 -1
  11. package/dist/extension-messages.d.ts +11 -1
  12. package/dist/extension-messages.d.ts.map +1 -1
  13. package/dist/last-seen-urls.d.ts +6 -0
  14. package/dist/last-seen-urls.d.ts.map +1 -0
  15. package/dist/last-seen-urls.js +45 -0
  16. package/dist/last-seen-urls.js.map +1 -0
  17. package/dist/message-router.d.ts.map +1 -1
  18. package/dist/message-router.js +3 -0
  19. package/dist/message-router.js.map +1 -1
  20. package/dist/server-state-cache.d.ts +1 -0
  21. package/dist/server-state-cache.d.ts.map +1 -1
  22. package/dist/server-state-cache.js +2 -0
  23. package/dist/server-state-cache.js.map +1 -1
  24. package/dist/side-panel/App.d.ts.map +1 -1
  25. package/dist/side-panel/App.js +4 -1
  26. package/dist/side-panel/App.js.map +1 -1
  27. package/dist/side-panel/bridge.d.ts +12 -1
  28. package/dist/side-panel/bridge.d.ts.map +1 -1
  29. package/dist/side-panel/bridge.js +5 -1
  30. package/dist/side-panel/bridge.js.map +1 -1
  31. package/dist/side-panel/components/BrowserToolsCard.d.ts +2 -1
  32. package/dist/side-panel/components/BrowserToolsCard.d.ts.map +1 -1
  33. package/dist/side-panel/components/BrowserToolsCard.js +2 -2
  34. package/dist/side-panel/components/BrowserToolsCard.js.map +1 -1
  35. package/dist/side-panel/components/BrowserToolsMenu.d.ts +2 -1
  36. package/dist/side-panel/components/BrowserToolsMenu.d.ts.map +1 -1
  37. package/dist/side-panel/components/BrowserToolsMenu.js +16 -3
  38. package/dist/side-panel/components/BrowserToolsMenu.js.map +1 -1
  39. package/dist/side-panel/components/EmptyStates.js +2 -2
  40. package/dist/side-panel/components/EmptyStates.js.map +1 -1
  41. package/dist/side-panel/components/PluginCard.d.ts.map +1 -1
  42. package/dist/side-panel/components/PluginCard.js +21 -2
  43. package/dist/side-panel/components/PluginCard.js.map +1 -1
  44. package/dist/side-panel/components/PluginMenu.d.ts.map +1 -1
  45. package/dist/side-panel/components/PluginMenu.js +13 -2
  46. package/dist/side-panel/components/PluginMenu.js.map +1 -1
  47. package/dist/side-panel/components/SearchResults.d.ts.map +1 -1
  48. package/dist/side-panel/components/SearchResults.js +1 -1
  49. package/dist/side-panel/components/SearchResults.js.map +1 -1
  50. package/dist/side-panel/components/retro/Empty.js +1 -1
  51. package/dist/side-panel/components/retro/Empty.js.map +1 -1
  52. package/dist/side-panel/components/retro/Menu.d.ts +3 -2
  53. package/dist/side-panel/components/retro/Menu.d.ts.map +1 -1
  54. package/dist/side-panel/components/retro/Menu.js +3 -4
  55. package/dist/side-panel/components/retro/Menu.js.map +1 -1
  56. package/dist/side-panel/side-panel.js +639 -429
  57. package/dist/side-panel/styles.css +1 -1
  58. package/dist/tab-state.d.ts.map +1 -1
  59. package/dist/tab-state.js +10 -0
  60. package/dist/tab-state.js.map +1 -1
  61. package/manifest.json +1 -1
  62. package/package.json +2 -1
@@ -2,6 +2,7 @@
2
2
  var KEEPALIVE_ALARM = "opentabs-keepalive";
3
3
  var KEEPALIVE_INTERVAL_MINUTES = 0.5;
4
4
  var PLUGINS_META_KEY = "plugins_meta";
5
+ var LAST_SEEN_URLS_KEY = "pluginLastSeenUrls";
5
6
  var WS_CONNECTED_KEY = "wsConnected";
6
7
  var SIDE_PANEL_OPEN_WINDOWS_KEY = "sidePanelOpenWindows";
7
8
  var SCRIPT_TIMEOUT_MS = 25e3;
@@ -181,6 +182,41 @@ var initConfirmationBadge = () => {
181
182
  };
182
183
  var getPendingConfirmations = () => [...pendingConfirmations.values()];
183
184
 
185
+ // dist/last-seen-urls.js
186
+ var cache = {};
187
+ var loaded = false;
188
+ var ensureLoaded = async () => {
189
+ if (loaded)
190
+ return;
191
+ try {
192
+ const data = await chrome.storage.local.get(LAST_SEEN_URLS_KEY);
193
+ const stored = data[LAST_SEEN_URLS_KEY];
194
+ if (stored && typeof stored === "object" && !Array.isArray(stored)) {
195
+ cache = stored;
196
+ }
197
+ } catch {
198
+ }
199
+ loaded = true;
200
+ };
201
+ var getLastSeenUrl = async (pluginName) => {
202
+ await ensureLoaded();
203
+ return cache[pluginName];
204
+ };
205
+ var setLastSeenUrl = async (pluginName, url) => {
206
+ await ensureLoaded();
207
+ if (cache[pluginName] === url)
208
+ return;
209
+ cache[pluginName] = url;
210
+ try {
211
+ await chrome.storage.local.set({ [LAST_SEEN_URLS_KEY]: { ...cache } });
212
+ } catch {
213
+ }
214
+ };
215
+ var loadLastSeenUrlsFromStorage = async () => {
216
+ loaded = false;
217
+ await ensureLoaded();
218
+ };
219
+
184
220
  // ../shared/dist/error.js
185
221
  var toErrorMessage = (err2) => err2 instanceof Error ? err2.message : String(err2);
186
222
 
@@ -1371,6 +1407,9 @@ var sendTabSyncAll = async () => {
1371
1407
  scheduleLastKnownStatePersist();
1372
1408
  return Promise.resolve();
1373
1409
  });
1410
+ const earlyUrl = partialState.state !== "closed" ? partialState.tabs[0]?.url : void 0;
1411
+ if (earlyUrl)
1412
+ void setLastSeenUrl(plugin.name, earlyUrl);
1374
1413
  forwardToSidePanel({
1375
1414
  type: "sp:serverMessage",
1376
1415
  data: {
@@ -1386,6 +1425,9 @@ var sendTabSyncAll = async () => {
1386
1425
  scheduleLastKnownStatePersist();
1387
1426
  return Promise.resolve();
1388
1427
  });
1428
+ const finalUrl = stateInfo.state !== "closed" ? stateInfo.tabs[0]?.url : void 0;
1429
+ if (finalUrl)
1430
+ void setLastSeenUrl(plugin.name, finalUrl);
1389
1431
  forwardToSidePanel({
1390
1432
  type: "sp:serverMessage",
1391
1433
  data: {
@@ -1477,6 +1519,9 @@ var notifyAffectedPlugins = async (affectedPlugins) => {
1477
1519
  return;
1478
1520
  lastKnownState.set(plugin.name, serialized);
1479
1521
  scheduleLastKnownStatePersist();
1522
+ const changedUrl = newState.state !== "closed" ? newState.tabs[0]?.url : void 0;
1523
+ if (changedUrl)
1524
+ void setLastSeenUrl(plugin.name, changedUrl);
1480
1525
  sendTabStateNotification(plugin.name, newState);
1481
1526
  })));
1482
1527
  };
@@ -3267,17 +3312,18 @@ var EMPTY_CACHE = {
3267
3312
  browserTools: [],
3268
3313
  browserPermission: void 0,
3269
3314
  serverVersion: void 0,
3315
+ serverSourcePath: void 0,
3270
3316
  skipPermissions: void 0
3271
3317
  };
3272
- var cache = { ...EMPTY_CACHE };
3318
+ var cache2 = { ...EMPTY_CACHE };
3273
3319
  var pendingPluginToolUpdates = /* @__PURE__ */ new Map();
3274
3320
  var pendingPluginPermissionUpdates = /* @__PURE__ */ new Map();
3275
3321
  var pendingBrowserToolUpdates = /* @__PURE__ */ new Map();
3276
3322
  var reapplyPendingOptimisticUpdates = () => {
3277
3323
  if (pendingPluginToolUpdates.size > 0 || pendingPluginPermissionUpdates.size > 0) {
3278
- cache = {
3279
- ...cache,
3280
- plugins: cache.plugins.map((plugin) => {
3324
+ cache2 = {
3325
+ ...cache2,
3326
+ plugins: cache2.plugins.map((plugin) => {
3281
3327
  const permOverride = pendingPluginPermissionUpdates.get(plugin.name);
3282
3328
  const toolOverrides = pendingPluginToolUpdates.get(plugin.name);
3283
3329
  if (permOverride === void 0 && !toolOverrides)
@@ -3301,12 +3347,12 @@ var reapplyPendingOptimisticUpdates = () => {
3301
3347
  }
3302
3348
  const browserPermOverride = pendingPluginPermissionUpdates.get("browser");
3303
3349
  if (browserPermOverride !== void 0) {
3304
- cache = { ...cache, browserPermission: browserPermOverride };
3350
+ cache2 = { ...cache2, browserPermission: browserPermOverride };
3305
3351
  }
3306
3352
  if (pendingBrowserToolUpdates.size > 0) {
3307
- cache = {
3308
- ...cache,
3309
- browserTools: cache.browserTools.map((bt) => {
3353
+ cache2 = {
3354
+ ...cache2,
3355
+ browserTools: cache2.browserTools.map((bt) => {
3310
3356
  const override = pendingBrowserToolUpdates.get(bt.name);
3311
3357
  return override !== void 0 ? { ...bt, permission: override } : bt;
3312
3358
  })
@@ -3374,7 +3420,7 @@ var removePendingAllBrowserToolsUpdate = (toolNames) => {
3374
3420
  var cachesInitialized = false;
3375
3421
  var persistTimer;
3376
3422
  var persistToSession = () => {
3377
- chrome.storage.session.set({ [SESSION_KEY]: cache, [CACHES_INITIALIZED_KEY]: cachesInitialized }).catch(() => {
3423
+ chrome.storage.session.set({ [SESSION_KEY]: cache2, [CACHES_INITIALIZED_KEY]: cachesInitialized }).catch(() => {
3378
3424
  });
3379
3425
  };
3380
3426
  var schedulePersist = () => {
@@ -3385,9 +3431,9 @@ var schedulePersist = () => {
3385
3431
  persistToSession();
3386
3432
  }, 500);
3387
3433
  };
3388
- var getServerStateCache = () => structuredClone(cache);
3434
+ var getServerStateCache = () => structuredClone(cache2);
3389
3435
  var updateServerStateCache = (partial) => {
3390
- cache = { ...cache, ...partial };
3436
+ cache2 = { ...cache2, ...partial };
3391
3437
  reapplyPendingOptimisticUpdates();
3392
3438
  schedulePersist();
3393
3439
  };
@@ -3399,7 +3445,7 @@ var flushServerStateCacheToSession = () => {
3399
3445
  persistToSession();
3400
3446
  };
3401
3447
  var clearServerStateCache = () => {
3402
- cache = { ...EMPTY_CACHE };
3448
+ cache2 = { ...EMPTY_CACHE };
3403
3449
  cachesInitialized = false;
3404
3450
  pendingPluginToolUpdates.clear();
3405
3451
  pendingPluginPermissionUpdates.clear();
@@ -3416,12 +3462,13 @@ var loadServerStateCacheFromSession = async () => {
3416
3462
  const data = await chrome.storage.session.get([SESSION_KEY, CACHES_INITIALIZED_KEY]);
3417
3463
  const stored = data[SESSION_KEY];
3418
3464
  if (stored && typeof stored === "object") {
3419
- cache = {
3465
+ cache2 = {
3420
3466
  plugins: Array.isArray(stored.plugins) ? stored.plugins : [],
3421
3467
  failedPlugins: Array.isArray(stored.failedPlugins) ? stored.failedPlugins : [],
3422
3468
  browserTools: Array.isArray(stored.browserTools) ? stored.browserTools : [],
3423
3469
  browserPermission: stored.browserPermission === "off" || stored.browserPermission === "ask" || stored.browserPermission === "auto" ? stored.browserPermission : void 0,
3424
3470
  serverVersion: typeof stored.serverVersion === "string" ? stored.serverVersion : void 0,
3471
+ serverSourcePath: typeof stored.serverSourcePath === "string" ? stored.serverSourcePath : void 0,
3425
3472
  skipPermissions: typeof stored.skipPermissions === "boolean" ? stored.skipPermissions : void 0
3426
3473
  };
3427
3474
  }
@@ -4019,6 +4066,7 @@ var handleSyncFull = async (params) => {
4019
4066
  const rawFailedPlugins = Array.isArray(params.failedPlugins) ? params.failedPlugins : void 0;
4020
4067
  const rawBrowserTools = Array.isArray(params.browserTools) ? params.browserTools : void 0;
4021
4068
  const rawServerVersion = typeof params.serverVersion === "string" ? params.serverVersion : void 0;
4069
+ const rawServerSourcePath = typeof params.serverSourcePath === "string" ? params.serverSourcePath : void 0;
4022
4070
  const rawBrowserPermission = params.browserPermission;
4023
4071
  const browserPermission = rawBrowserPermission === "off" || rawBrowserPermission === "ask" || rawBrowserPermission === "auto" ? rawBrowserPermission : void 0;
4024
4072
  const rawSkipPermissions = typeof params.skipPermissions === "boolean" ? params.skipPermissions : void 0;
@@ -4028,6 +4076,7 @@ var handleSyncFull = async (params) => {
4028
4076
  ...rawBrowserTools ? { browserTools: rawBrowserTools } : {},
4029
4077
  ...browserPermission !== void 0 ? { browserPermission } : {},
4030
4078
  ...rawServerVersion !== void 0 ? { serverVersion: rawServerVersion } : {},
4079
+ ...rawServerSourcePath !== void 0 ? { serverSourcePath: rawServerSourcePath } : {},
4031
4080
  ...rawSkipPermissions !== void 0 ? { skipPermissions: rawSkipPermissions } : {}
4032
4081
  });
4033
4082
  setCachesInitialized(true);
@@ -4204,6 +4253,7 @@ var handleServerMessage = (message) => {
4204
4253
  ...payload.browserTools ? { browserTools: payload.browserTools } : {},
4205
4254
  ...payload.browserPermission !== void 0 ? { browserPermission: payload.browserPermission } : {},
4206
4255
  ...payload.serverVersion !== void 0 ? { serverVersion: payload.serverVersion } : {},
4256
+ ...payload.serverSourcePath !== void 0 ? { serverSourcePath: payload.serverSourcePath } : {},
4207
4257
  ...payload.skipPermissions !== void 0 ? { skipPermissions: payload.skipPermissions } : {}
4208
4258
  });
4209
4259
  }
@@ -4323,14 +4373,25 @@ var handleBgGetFullState = (_message, sendResponse) => {
4323
4373
  for (const sp of serverCache.plugins) {
4324
4374
  serverPluginMap.set(sp.name, sp);
4325
4375
  }
4326
- const plugins = Object.values(metaIndex).map((meta) => {
4376
+ const metaEntries = Object.values(metaIndex);
4377
+ const lastSeenFlags = await Promise.all(metaEntries.map(async (m) => await getLastSeenUrl(m.name) !== void 0));
4378
+ const hasLastSeenUrlMap = /* @__PURE__ */ new Map();
4379
+ for (let i = 0; i < metaEntries.length; i++) {
4380
+ const entry = metaEntries[i];
4381
+ if (lastSeenFlags[i] && entry)
4382
+ hasLastSeenUrlMap.set(entry.name, true);
4383
+ }
4384
+ const plugins = metaEntries.map((meta) => {
4327
4385
  const serverPlugin = serverPluginMap.get(meta.name);
4328
4386
  let tabState = "closed";
4387
+ let tabs;
4329
4388
  const serialized = tabStates.get(meta.name);
4330
4389
  if (serialized) {
4331
4390
  try {
4332
4391
  const parsed = JSON.parse(serialized);
4333
4392
  tabState = parsed.state;
4393
+ if (parsed.tabs.length > 0)
4394
+ tabs = parsed.tabs;
4334
4395
  } catch {
4335
4396
  }
4336
4397
  }
@@ -4341,16 +4402,18 @@ var handleBgGetFullState = (_message, sendResponse) => {
4341
4402
  permission: serverTool?.permission ?? metaTool.permission
4342
4403
  };
4343
4404
  });
4344
- const { tools: _metaTools, sourcePath: _sourcePath, adapterHash: _adapterHash, adapterFile: _adapterFile, ...metaFields } = meta;
4405
+ const { tools: _metaTools, adapterHash: _adapterHash, adapterFile: _adapterFile, ...metaFields } = meta;
4345
4406
  return {
4346
4407
  ...metaFields,
4347
4408
  permission: serverPlugin?.permission ?? meta.permission,
4348
4409
  tools,
4349
4410
  tabState,
4411
+ tabs,
4350
4412
  source: serverPlugin?.source ?? "local",
4351
4413
  reviewed: serverPlugin?.reviewed ?? false,
4352
4414
  sdkVersion: serverPlugin?.sdkVersion,
4353
- update: serverPlugin?.update
4415
+ update: serverPlugin?.update,
4416
+ ...hasLastSeenUrlMap.has(meta.name) && { hasLastSeenUrl: true }
4354
4417
  };
4355
4418
  });
4356
4419
  sendResponse({
@@ -4361,6 +4424,7 @@ var handleBgGetFullState = (_message, sendResponse) => {
4361
4424
  browserTools: serverCache.browserTools,
4362
4425
  browserPermission: serverCache.browserPermission,
4363
4426
  serverVersion: serverCache.serverVersion,
4427
+ serverSourcePath: serverCache.serverSourcePath,
4364
4428
  skipPermissions: serverCache.skipPermissions,
4365
4429
  pendingConfirmations: getPendingConfirmations()
4366
4430
  });
@@ -4438,9 +4502,9 @@ var handleBgSetToolPermission = (message, sendResponse) => {
4438
4502
  const tool = message.tool;
4439
4503
  const permission = message.permission;
4440
4504
  if (plugin === "browser") {
4441
- const cache3 = getServerStateCache();
4442
- const originalPermission2 = cache3.browserTools.find((t) => t.name === tool)?.permission ?? "auto";
4443
- const updatedBrowserTools = cache3.browserTools.map((t) => t.name === tool ? { ...t, permission } : t);
4505
+ const cache4 = getServerStateCache();
4506
+ const originalPermission2 = cache4.browserTools.find((t) => t.name === tool)?.permission ?? "auto";
4507
+ const updatedBrowserTools = cache4.browserTools.map((t) => t.name === tool ? { ...t, permission } : t);
4444
4508
  addPendingBrowserToolUpdate(tool, permission);
4445
4509
  updateServerStateCache({ browserTools: updatedBrowserTools });
4446
4510
  sendServerRequest("config.setToolPermission", { plugin, tool, permission }).then((result) => {
@@ -4455,10 +4519,10 @@ var handleBgSetToolPermission = (message, sendResponse) => {
4455
4519
  });
4456
4520
  return;
4457
4521
  }
4458
- const cache2 = getServerStateCache();
4459
- const pluginEntry = cache2.plugins.find((p) => p.name === plugin);
4522
+ const cache3 = getServerStateCache();
4523
+ const pluginEntry = cache3.plugins.find((p) => p.name === plugin);
4460
4524
  const originalPermission = pluginEntry?.tools.find((t) => t.name === tool)?.permission ?? "auto";
4461
- const updatedPlugins = cache2.plugins.map((p) => {
4525
+ const updatedPlugins = cache3.plugins.map((p) => {
4462
4526
  if (p.name !== plugin)
4463
4527
  return p;
4464
4528
  return {
@@ -4490,13 +4554,13 @@ var handleBgSetAllToolsPermission = (message, sendResponse) => {
4490
4554
  const plugin = message.plugin;
4491
4555
  const permission = message.permission;
4492
4556
  if (plugin === "browser") {
4493
- const cache3 = getServerStateCache();
4494
- const toolNames2 = cache3.browserTools.map((t) => t.name);
4557
+ const cache4 = getServerStateCache();
4558
+ const toolNames2 = cache4.browserTools.map((t) => t.name);
4495
4559
  const originalToolStates2 = /* @__PURE__ */ new Map();
4496
- for (const t of cache3.browserTools) {
4560
+ for (const t of cache4.browserTools) {
4497
4561
  originalToolStates2.set(t.name, t.permission);
4498
4562
  }
4499
- const updatedBrowserTools = cache3.browserTools.map((t) => ({ ...t, permission }));
4563
+ const updatedBrowserTools = cache4.browserTools.map((t) => ({ ...t, permission }));
4500
4564
  addPendingAllBrowserToolsUpdate(toolNames2, permission);
4501
4565
  updateServerStateCache({ browserTools: updatedBrowserTools });
4502
4566
  sendServerRequest("config.setAllToolsPermission", { plugin, permission }).then((result) => {
@@ -4514,8 +4578,8 @@ var handleBgSetAllToolsPermission = (message, sendResponse) => {
4514
4578
  });
4515
4579
  return;
4516
4580
  }
4517
- const cache2 = getServerStateCache();
4518
- const pluginEntry = cache2.plugins.find((p) => p.name === plugin);
4581
+ const cache3 = getServerStateCache();
4582
+ const pluginEntry = cache3.plugins.find((p) => p.name === plugin);
4519
4583
  const toolNames = pluginEntry ? pluginEntry.tools.map((t) => t.name) : [];
4520
4584
  const originalToolStates = /* @__PURE__ */ new Map();
4521
4585
  if (pluginEntry) {
@@ -4523,7 +4587,7 @@ var handleBgSetAllToolsPermission = (message, sendResponse) => {
4523
4587
  originalToolStates.set(t.name, t.permission);
4524
4588
  }
4525
4589
  }
4526
- const updatedPlugins = cache2.plugins.map((p) => {
4590
+ const updatedPlugins = cache3.plugins.map((p) => {
4527
4591
  if (p.name !== plugin)
4528
4592
  return p;
4529
4593
  return {
@@ -4558,10 +4622,10 @@ var handleBgSetPluginPermission = (message, sendResponse) => {
4558
4622
  const plugin = message.plugin;
4559
4623
  const permission = message.permission;
4560
4624
  const reviewedVersion = typeof message.reviewedVersion === "string" ? message.reviewedVersion : void 0;
4561
- const cache2 = getServerStateCache();
4562
- const pluginEntry = cache2.plugins.find((p) => p.name === plugin);
4625
+ const cache3 = getServerStateCache();
4626
+ const pluginEntry = cache3.plugins.find((p) => p.name === plugin);
4563
4627
  const originalPermission = pluginEntry?.permission ?? "off";
4564
- const updatedPlugins = cache2.plugins.map((p) => p.name === plugin ? { ...p, permission, ...reviewedVersion ? { reviewed: true } : {} } : p);
4628
+ const updatedPlugins = cache3.plugins.map((p) => p.name === plugin ? { ...p, permission, ...reviewedVersion ? { reviewed: true } : {} } : p);
4565
4629
  addPendingPluginPermissionUpdate(plugin, permission);
4566
4630
  updateServerStateCache({ plugins: updatedPlugins });
4567
4631
  sendServerRequest("config.setPluginPermission", {
@@ -4581,8 +4645,8 @@ var handleBgSetPluginPermission = (message, sendResponse) => {
4581
4645
  };
4582
4646
  var handleBgSetSkipPermissions = (message, sendResponse) => {
4583
4647
  const skipPermissions = message.skipPermissions;
4584
- const cache2 = getServerStateCache();
4585
- const originalSkipPermissions = cache2.skipPermissions ?? false;
4648
+ const cache3 = getServerStateCache();
4649
+ const originalSkipPermissions = cache3.skipPermissions ?? false;
4586
4650
  updateServerStateCache({ skipPermissions });
4587
4651
  sendServerRequest("config.setSkipPermissions", { skipPermissions }).then((result) => {
4588
4652
  sendResponse(result);
@@ -4631,11 +4695,73 @@ var handleBgUpdatePlugin = (message, sendResponse) => {
4631
4695
  sendResponse({ error: err2 instanceof Error ? err2.message : String(err2) });
4632
4696
  });
4633
4697
  };
4698
+ var handleBgOpenFolder = (message, sendResponse) => {
4699
+ const path = message.path;
4700
+ sendServerRequest("folder.open", { path }).then((result) => {
4701
+ sendResponse(result);
4702
+ }).catch((err2) => {
4703
+ sendResponse({ error: err2 instanceof Error ? err2.message : String(err2) });
4704
+ });
4705
+ };
4634
4706
  var handlePortChanged = (message, sendResponse) => {
4635
4707
  chrome.runtime.sendMessage(message).catch(() => {
4636
4708
  });
4637
4709
  sendResponse({ ok: true });
4638
4710
  };
4711
+ var lastFocusedTabId = /* @__PURE__ */ new Map();
4712
+ var pickNextTab = (sorted, pluginName) => {
4713
+ if (sorted.length === 0)
4714
+ return void 0;
4715
+ const lastId = lastFocusedTabId.get(pluginName);
4716
+ if (lastId === void 0) {
4717
+ return sorted.find((t) => !t.tab.active) ?? sorted[0];
4718
+ }
4719
+ const lastIdx = sorted.findIndex((t) => t.id === lastId);
4720
+ const nextIdx = (lastIdx + 1) % sorted.length;
4721
+ return sorted[nextIdx];
4722
+ };
4723
+ var handleBgOpenPluginTab = (message, sendResponse) => {
4724
+ const pluginName = message.pluginName;
4725
+ if (!pluginName) {
4726
+ sendResponse({ opened: false });
4727
+ return;
4728
+ }
4729
+ (async () => {
4730
+ const meta = await getPluginMeta(pluginName);
4731
+ if (!meta)
4732
+ return { opened: false };
4733
+ const tabs = await findAllMatchingTabs(meta);
4734
+ if (tabs.length > 0) {
4735
+ const withIds = [];
4736
+ for (const tab of tabs) {
4737
+ if (tab.id !== void 0)
4738
+ withIds.push({ tab, id: tab.id });
4739
+ }
4740
+ withIds.sort((a, b) => a.id - b.id);
4741
+ const pick = pickNextTab(withIds, pluginName);
4742
+ if (pick) {
4743
+ lastFocusedTabId.set(pluginName, pick.id);
4744
+ await chrome.tabs.update(pick.id, { active: true });
4745
+ if (pick.tab.windowId !== void 0) {
4746
+ await chrome.windows.update(pick.tab.windowId, { focused: true });
4747
+ }
4748
+ if (pick.tab.url)
4749
+ void setLastSeenUrl(pluginName, pick.tab.url);
4750
+ return { opened: true, tabId: pick.id };
4751
+ }
4752
+ }
4753
+ if (meta.homepage) {
4754
+ const newTab = await chrome.tabs.create({ url: meta.homepage });
4755
+ return { opened: true, tabId: newTab.id };
4756
+ }
4757
+ const lastUrl = await getLastSeenUrl(pluginName);
4758
+ if (lastUrl) {
4759
+ const newTab = await chrome.tabs.create({ url: lastUrl });
4760
+ return { opened: true, tabId: newTab.id };
4761
+ }
4762
+ return { opened: false };
4763
+ })().then((result) => sendResponse(result)).catch(() => sendResponse({ opened: false }));
4764
+ };
4639
4765
  var backgroundHandlers = /* @__PURE__ */ new Map([
4640
4766
  ["offscreen:getUrl", handleOffscreenGetUrl],
4641
4767
  ["ws:state", handleWsState],
@@ -4650,6 +4776,8 @@ var backgroundHandlers = /* @__PURE__ */ new Map([
4650
4776
  ["bg:removePlugin", handleBgRemovePlugin],
4651
4777
  ["bg:removeFailedPlugin", handleBgRemoveFailedPlugin],
4652
4778
  ["bg:updatePlugin", handleBgUpdatePlugin],
4779
+ ["bg:openPluginTab", handleBgOpenPluginTab],
4780
+ ["bg:openFolder", handleBgOpenFolder],
4653
4781
  ["plugin:logs", handlePluginLogs],
4654
4782
  ["tool:progress", handleToolProgress],
4655
4783
  ["sp:confirmationResponse", handleSpConfirmationResponse],
@@ -4669,6 +4797,8 @@ var EXTENSION_ONLY_TYPES = /* @__PURE__ */ new Set([
4669
4797
  "bg:removePlugin",
4670
4798
  "bg:removeFailedPlugin",
4671
4799
  "bg:updatePlugin",
4800
+ "bg:openPluginTab",
4801
+ "bg:openFolder",
4672
4802
  "offscreen:getLogs",
4673
4803
  "sp:confirmationResponse",
4674
4804
  "port-changed"
@@ -4692,6 +4822,8 @@ var backgroundHandlerNames = [...backgroundHandlers.keys()];
4692
4822
  // dist/background.js
4693
4823
  initSidePanelToggle();
4694
4824
  restoreWsConnectedState();
4825
+ loadLastSeenUrlsFromStorage().catch(() => {
4826
+ });
4695
4827
  var creatingOffscreen = null;
4696
4828
  var ensureOffscreenDocument = async () => {
4697
4829
  if (creatingOffscreen)
@@ -1 +1 @@
1
- {"version":3,"file":"background.js","sourceRoot":"","sources":["../src/background.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"background.js","sourceRoot":"","sources":["../src/background.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAC1G,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EACL,UAAU,EACV,eAAe,EACf,0BAA0B,EAC1B,gBAAgB,EAChB,eAAe,GAChB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAClF,OAAO,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAElE,4BAA4B;AAE5B,mBAAmB,EAAE,CAAC;AAEtB,qCAAqC;AAErC,uBAAuB,EAAE,CAAC;AAC1B,2BAA2B,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE;IACvC,qDAAqD;AACvD,CAAC,CAAC,CAAC;AAEH,wCAAwC;AAExC,IAAI,iBAAiB,GAAyB,IAAI,CAAC;AAEnD,MAAM,uBAAuB,GAAG,KAAK,IAAmB,EAAE;IACxD,IAAI,iBAAiB;QAAE,OAAO,iBAAiB,CAAC;IAEhD,iBAAiB,GAAG,CAAC,KAAK,IAAI,EAAE;QAC9B,oEAAoE;QACpE,mEAAmE;QACnE,iEAAiE;QACjE,gEAAgE;QAChE,mEAAmE;QACnE,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC;gBACpC,GAAG,EAAE,0BAA0B;gBAC/B,OAAO,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC;gBAC1C,aAAa,EAAE,wDAAwD;aACxE,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,uDAAuD;YACvD,2DAA2D;YAC3D,yDAAyD;QAC3D,CAAC;IACH,CAAC,CAAC,EAAE,CAAC;IAEL,MAAM,iBAAiB,CAAC;IACxB,iBAAiB,GAAG,IAAI,CAAC;AAC3B,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,KAAK,IAAmB,EAAE;IACpD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAC1D,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE;YAC1C,eAAe,EAAE,0BAA0B;SAC5C,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC;AAEF,8BAA8B;AAE9B,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE;IAC3D,IAAI,UAAU,CAAC,MAAM,KAAK,SAAS,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;QAC/C,sEAAsE;QACtE,oEAAoE;QACpE,6CAA6C;QAC7C,oBAAoB,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE,CAC1D,OAAO,CAAC,IAAI,CAAC,wCAAwC,EAAE,GAAG,CAAC,CAC5D,CAAC;IACJ,CAAC;SAAM,IAAI,UAAU,CAAC,MAAM,KAAK,UAAU,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;QACvD,sEAAsE;QACtE,uEAAuE;QACvE,2EAA2E;QAC3E,oBAAoB,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC;aACjC,IAAI,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;aAC9C,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,kCAAkC,EAAE,GAAG,CAAC,CAAC,CAAC;IACpF,CAAC;SAAM,IAAI,UAAU,CAAC,GAAG,EAAE,CAAC;QAC1B,eAAe,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,oCAAoC,EAAE,GAAG,CAAC,CAAC,CAAC;IACtH,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE;IACxC,eAAe,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,oCAAoC,EAAE,GAAG,CAAC,CAAC,CAAC;AAC1G,CAAC,CAAC,CAAC;AAEH,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,UAAU,EAAE,YAAY,EAAE,EAAE;IAC9D,6EAA6E;IAC7E,8EAA8E;IAC9E,+EAA+E;IAC/E,eAAe,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE,CACnD,OAAO,CAAC,IAAI,CAAC,qDAAqD,EAAE,GAAG,CAAC,CACzE,CAAC;IACF,MAAM,CAAC,IAAI;SACR,GAAG,CAAC,UAAU,CAAC;SACf,IAAI,CAAC,KAAK,EAAC,GAAG,EAAC,EAAE;QAChB,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;YACZ,MAAM,oBAAoB,CAAC,UAAU,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;QAClD,CAAC;QACD,MAAM,eAAe,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;IAC5D,CAAC,CAAC;SACD,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,6CAA6C,EAAE,GAAG,CAAC,CAAC,CAAC;AAC/F,CAAC,CAAC,CAAC;AAEH,mEAAmE;AAEnE,6BAA6B,EAAE,CAAC;AAEhC,8BAA8B;AAE9B,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE;IACrC,2EAA2E;IAC3E,mFAAmF;IACnF,uBAAuB,EAAE,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,uCAAuC,EAAE,GAAG,CAAC,CAAC,CAAC;AAChH,CAAC,CAAC,CAAC;AAEH,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,EAAE;IAC1C,KAAK,CAAC,KAAK,IAAI,EAAE;QACf,MAAM,uBAAuB,EAAE,CAAC;QAChC,MAAM,mBAAmB,EAAE,CAAC;QAC5B,MAAM,qBAAqB,EAAE,CAAC;IAChC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,gCAAgC,EAAE,GAAG,CAAC,CAAC,CAAC;AACpF,CAAC,CAAC,CAAC;AAEH,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,EAAE;IACxC,KAAK,CAAC,KAAK,IAAI,EAAE;QACf,MAAM,uBAAuB,EAAE,CAAC;QAChC,MAAM,mBAAmB,EAAE,CAAC;QAC5B,MAAM,qBAAqB,EAAE,CAAC;IAChC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,8BAA8B,EAAE,GAAG,CAAC,CAAC,CAAC;AAClF,CAAC,CAAC,CAAC;AAEH,uBAAuB,EAAE,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,uCAAuC,EAAE,GAAG,CAAC,CAAC,CAAC;AAC9G,mBAAmB,EAAE,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,oCAAoC,EAAE,GAAG,CAAC,CAAC,CAAC;AACvG,qBAAqB,EAAE,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,uCAAuC,EAAE,GAAG,CAAC,CAAC,CAAC;AAC5G,qBAAqB,EAAE,CAAC;AAExB,yEAAyE;AACzE,0EAA0E;AAC1E,4CAA4C;AAC5C,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE;IACrD,IAAI,IAAI,KAAK,OAAO;QAAE,OAAO;IAE7B,MAAM,UAAU,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAC5C,IACE,OAAO,UAAU,EAAE,QAAQ,KAAK,QAAQ;QACxC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC;QACrC,UAAU,CAAC,QAAQ,IAAI,CAAC;QACxB,UAAU,CAAC,QAAQ,IAAI,KAAK,EAC5B,CAAC;QACD,MAAM,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAC/C,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,EAA4B,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;YAClG,iCAAiC;QACnC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAC9B,qBAAqB,EAAE,CAAC;IAC1B,CAAC;AACH,CAAC,CAAC,CAAC"}
@@ -1,6 +1,7 @@
1
1
  export declare const KEEPALIVE_ALARM = "opentabs-keepalive";
2
2
  export declare const KEEPALIVE_INTERVAL_MINUTES = 0.5;
3
3
  export declare const PLUGINS_META_KEY = "plugins_meta";
4
+ export declare const LAST_SEEN_URLS_KEY = "pluginLastSeenUrls";
4
5
  export declare const WS_CONNECTED_KEY = "wsConnected";
5
6
  export declare const SIDE_PANEL_OPEN_WINDOWS_KEY = "sidePanelOpenWindows";
6
7
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe,uBAAuB,CAAC;AACpD,eAAO,MAAM,0BAA0B,MAAM,CAAC;AAC9C,eAAO,MAAM,gBAAgB,iBAAiB,CAAC;AAC/C,eAAO,MAAM,gBAAgB,gBAAgB,CAAC;AAC9C,eAAO,MAAM,2BAA2B,yBAAyB,CAAC;AAClE;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,iBAAiB,QAAS,CAAC;AACxC;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,SAAU,CAAC;AAC7C;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,OAAQ,CAAC;AACzC;;;;;;GAMG;AACH,eAAO,MAAM,0BAA0B,QAAS,CAAC;AACjD,oFAAoF;AACpF,eAAO,MAAM,qBAAqB,MAAM,CAAC;AACzC,qFAAqF;AACrF,eAAO,MAAM,wBAAwB,MAAM,CAAC;AAC5C,+EAA+E;AAC/E,eAAO,MAAM,0BAA0B,MAAM,CAAC;AAC9C,gFAAgF;AAChF,eAAO,MAAM,iBAAiB,KAAK,CAAC;AACpC,kEAAkE;AAClE,eAAO,MAAM,eAAe,eAAe,CAAC;AAC5C,gEAAgE;AAChE,eAAO,MAAM,mBAAmB,OAAO,CAAC;AACxC,kFAAkF;AAClF,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAC3C,0FAA0F;AAC1F,eAAO,MAAM,uBAAuB,QAAS,CAAC;AAC9C,0EAA0E;AAC1E,eAAO,MAAM,gBAAgB,MAAM,CAAC;AACpC,uFAAuF;AACvF,eAAO,MAAM,mBAAmB,MAAM,CAAC;AACvC,4EAA4E;AAC5E,eAAO,MAAM,cAAc,QAAmB,CAAC;AAC/C,+EAA+E;AAC/E,eAAO,MAAM,qBAAqB,OAAQ,CAAC;AAC3C,sEAAsE;AACtE,eAAO,MAAM,WAAW,QAAQ,CAAC;AACjC,mFAAmF;AACnF,eAAO,MAAM,qBAAqB,OAAO,CAAC;AAC1C,4EAA4E;AAC5E,eAAO,MAAM,oBAAoB,OAAO,CAAC;AACzC,8EAA8E;AAC9E,eAAO,MAAM,kBAAkB,OAAQ,CAAC;AACxC,gFAAgF;AAChF,eAAO,MAAM,sBAAsB,QAAS,CAAC;AAC7C,wFAAwF;AACxF,eAAO,MAAM,qBAAqB,KAAK,CAAC;AACxC,qFAAqF;AACrF,eAAO,MAAM,4BAA4B,QAAS,CAAC;AACnD,+EAA+E;AAC/E,eAAO,MAAM,iBAAiB,MAAM,CAAC;AACrC;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB,kBAAkB,CAAC;AAEjD,8GAA8G;AAC9G,eAAO,MAAM,iBAAiB,QAA6B,CAAC;AAC5D,yDAAyD;AACzD,eAAO,MAAM,iBAAiB,GAAI,MAAM,MAAM,KAAG,OAAuC,CAAC;AACzF,mEAAmE;AACnE,eAAO,MAAM,UAAU,GAAI,MAAM,MAAM,KAAG,MAAqC,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe,uBAAuB,CAAC;AACpD,eAAO,MAAM,0BAA0B,MAAM,CAAC;AAC9C,eAAO,MAAM,gBAAgB,iBAAiB,CAAC;AAC/C,eAAO,MAAM,kBAAkB,uBAAuB,CAAC;AACvD,eAAO,MAAM,gBAAgB,gBAAgB,CAAC;AAC9C,eAAO,MAAM,2BAA2B,yBAAyB,CAAC;AAClE;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,iBAAiB,QAAS,CAAC;AACxC;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,SAAU,CAAC;AAC7C;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,OAAQ,CAAC;AACzC;;;;;;GAMG;AACH,eAAO,MAAM,0BAA0B,QAAS,CAAC;AACjD,oFAAoF;AACpF,eAAO,MAAM,qBAAqB,MAAM,CAAC;AACzC,qFAAqF;AACrF,eAAO,MAAM,wBAAwB,MAAM,CAAC;AAC5C,+EAA+E;AAC/E,eAAO,MAAM,0BAA0B,MAAM,CAAC;AAC9C,gFAAgF;AAChF,eAAO,MAAM,iBAAiB,KAAK,CAAC;AACpC,kEAAkE;AAClE,eAAO,MAAM,eAAe,eAAe,CAAC;AAC5C,gEAAgE;AAChE,eAAO,MAAM,mBAAmB,OAAO,CAAC;AACxC,kFAAkF;AAClF,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAC3C,0FAA0F;AAC1F,eAAO,MAAM,uBAAuB,QAAS,CAAC;AAC9C,0EAA0E;AAC1E,eAAO,MAAM,gBAAgB,MAAM,CAAC;AACpC,uFAAuF;AACvF,eAAO,MAAM,mBAAmB,MAAM,CAAC;AACvC,4EAA4E;AAC5E,eAAO,MAAM,cAAc,QAAmB,CAAC;AAC/C,+EAA+E;AAC/E,eAAO,MAAM,qBAAqB,OAAQ,CAAC;AAC3C,sEAAsE;AACtE,eAAO,MAAM,WAAW,QAAQ,CAAC;AACjC,mFAAmF;AACnF,eAAO,MAAM,qBAAqB,OAAO,CAAC;AAC1C,4EAA4E;AAC5E,eAAO,MAAM,oBAAoB,OAAO,CAAC;AACzC,8EAA8E;AAC9E,eAAO,MAAM,kBAAkB,OAAQ,CAAC;AACxC,gFAAgF;AAChF,eAAO,MAAM,sBAAsB,QAAS,CAAC;AAC7C,wFAAwF;AACxF,eAAO,MAAM,qBAAqB,KAAK,CAAC;AACxC,qFAAqF;AACrF,eAAO,MAAM,4BAA4B,QAAS,CAAC;AACnD,+EAA+E;AAC/E,eAAO,MAAM,iBAAiB,MAAM,CAAC;AACrC;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB,kBAAkB,CAAC;AAEjD,8GAA8G;AAC9G,eAAO,MAAM,iBAAiB,QAA6B,CAAC;AAC5D,yDAAyD;AACzD,eAAO,MAAM,iBAAiB,GAAI,MAAM,MAAM,KAAG,OAAuC,CAAC;AACzF,mEAAmE;AACnE,eAAO,MAAM,UAAU,GAAI,MAAM,MAAM,KAAG,MAAqC,CAAC"}
package/dist/constants.js CHANGED
@@ -1,6 +1,7 @@
1
1
  export const KEEPALIVE_ALARM = 'opentabs-keepalive';
2
2
  export const KEEPALIVE_INTERVAL_MINUTES = 0.5; // Chrome 120+ supports 30-second alarm periods; older versions require 1 minute minimum
3
3
  export const PLUGINS_META_KEY = 'plugins_meta';
4
+ export const LAST_SEEN_URLS_KEY = 'pluginLastSeenUrls';
4
5
  export const WS_CONNECTED_KEY = 'wsConnected';
5
6
  export const SIDE_PANEL_OPEN_WINDOWS_KEY = 'sidePanelOpenWindows';
6
7
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,eAAe,GAAG,oBAAoB,CAAC;AACpD,MAAM,CAAC,MAAM,0BAA0B,GAAG,GAAG,CAAC,CAAC,wFAAwF;AACvI,MAAM,CAAC,MAAM,gBAAgB,GAAG,cAAc,CAAC;AAC/C,MAAM,CAAC,MAAM,gBAAgB,GAAG,aAAa,CAAC;AAC9C,MAAM,CAAC,MAAM,2BAA2B,GAAG,sBAAsB,CAAC;AAClE;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC;AACxC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,OAAO,CAAC;AAC7C;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,CAAC;AACzC;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,MAAM,CAAC;AACjD,oFAAoF;AACpF,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,CAAC;AACzC,qFAAqF;AACrF,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAAG,CAAC;AAC5C,+EAA+E;AAC/E,MAAM,CAAC,MAAM,0BAA0B,GAAG,GAAG,CAAC;AAC9C,gFAAgF;AAChF,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,CAAC;AACpC,kEAAkE;AAClE,MAAM,CAAC,MAAM,eAAe,GAAG,YAAY,CAAC;AAC5C,gEAAgE;AAChE,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CAAC;AACxC,kFAAkF;AAClF,MAAM,CAAC,MAAM,uBAAuB,GAAG,GAAG,CAAC;AAC3C,0FAA0F;AAC1F,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAM,CAAC;AAC9C,0EAA0E;AAC1E,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,CAAC;AACpC,uFAAuF;AACvF,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAC;AACvC,4EAA4E;AAC5E,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAC/C,+EAA+E;AAC/E,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,CAAC;AAC3C,sEAAsE;AACtE,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,CAAC;AACjC,mFAAmF;AACnF,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,CAAC;AAC1C,4EAA4E;AAC5E,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,CAAC;AACzC,8EAA8E;AAC9E,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,CAAC;AACxC,gFAAgF;AAChF,MAAM,CAAC,MAAM,sBAAsB,GAAG,MAAM,CAAC;AAC7C,wFAAwF;AACxF,MAAM,CAAC,MAAM,qBAAqB,GAAG,EAAE,CAAC;AACxC,qFAAqF;AACrF,MAAM,CAAC,MAAM,4BAA4B,GAAG,MAAM,CAAC;AACnD,+EAA+E;AAC/E,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,CAAC;AACrC;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,eAAe,CAAC;AAEjD,8GAA8G;AAC9G,MAAM,CAAC,MAAM,iBAAiB,GAAG,0BAA0B,CAAC;AAC5D,yDAAyD;AACzD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,IAAY,EAAW,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzF,mEAAmE;AACnE,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,IAAY,EAAU,EAAE,CAAC,kBAAkB,IAAI,KAAK,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,eAAe,GAAG,oBAAoB,CAAC;AACpD,MAAM,CAAC,MAAM,0BAA0B,GAAG,GAAG,CAAC,CAAC,wFAAwF;AACvI,MAAM,CAAC,MAAM,gBAAgB,GAAG,cAAc,CAAC;AAC/C,MAAM,CAAC,MAAM,kBAAkB,GAAG,oBAAoB,CAAC;AACvD,MAAM,CAAC,MAAM,gBAAgB,GAAG,aAAa,CAAC;AAC9C,MAAM,CAAC,MAAM,2BAA2B,GAAG,sBAAsB,CAAC;AAClE;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC;AACxC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,OAAO,CAAC;AAC7C;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,CAAC;AACzC;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,MAAM,CAAC;AACjD,oFAAoF;AACpF,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,CAAC;AACzC,qFAAqF;AACrF,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAAG,CAAC;AAC5C,+EAA+E;AAC/E,MAAM,CAAC,MAAM,0BAA0B,GAAG,GAAG,CAAC;AAC9C,gFAAgF;AAChF,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,CAAC;AACpC,kEAAkE;AAClE,MAAM,CAAC,MAAM,eAAe,GAAG,YAAY,CAAC;AAC5C,gEAAgE;AAChE,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CAAC;AACxC,kFAAkF;AAClF,MAAM,CAAC,MAAM,uBAAuB,GAAG,GAAG,CAAC;AAC3C,0FAA0F;AAC1F,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAM,CAAC;AAC9C,0EAA0E;AAC1E,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,CAAC;AACpC,uFAAuF;AACvF,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAC;AACvC,4EAA4E;AAC5E,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAC/C,+EAA+E;AAC/E,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,CAAC;AAC3C,sEAAsE;AACtE,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,CAAC;AACjC,mFAAmF;AACnF,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,CAAC;AAC1C,4EAA4E;AAC5E,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,CAAC;AACzC,8EAA8E;AAC9E,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,CAAC;AACxC,gFAAgF;AAChF,MAAM,CAAC,MAAM,sBAAsB,GAAG,MAAM,CAAC;AAC7C,wFAAwF;AACxF,MAAM,CAAC,MAAM,qBAAqB,GAAG,EAAE,CAAC;AACxC,qFAAqF;AACrF,MAAM,CAAC,MAAM,4BAA4B,GAAG,MAAM,CAAC;AACnD,+EAA+E;AAC/E,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,CAAC;AACrC;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,eAAe,CAAC;AAEjD,8GAA8G;AAC9G,MAAM,CAAC,MAAM,iBAAiB,GAAG,0BAA0B,CAAC;AAC5D,yDAAyD;AACzD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,IAAY,EAAW,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzF,mEAAmE;AACnE,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,IAAY,EAAU,EAAE,CAAC,kBAAkB,IAAI,KAAK,CAAC"}
@@ -145,13 +145,23 @@ export interface BgUpdatePluginMessage {
145
145
  type: 'bg:updatePlugin';
146
146
  name: string;
147
147
  }
148
+ /** Side panel → Background: focus or open a tab for a plugin */
149
+ export interface BgOpenPluginTabMessage {
150
+ type: 'bg:openPluginTab';
151
+ pluginName: string;
152
+ }
153
+ /** Side panel → Background: open a folder in the system file manager (relayed to MCP server) */
154
+ export interface BgOpenFolderMessage {
155
+ type: 'bg:openFolder';
156
+ path: string;
157
+ }
148
158
  /** Side panel → Background → Offscreen: MCP server port changed */
149
159
  export interface PortChangedMessage {
150
160
  type: 'port-changed';
151
161
  port: number;
152
162
  }
153
163
  /** All internal message types flowing through chrome.runtime.sendMessage */
154
- export type InternalMessage = OffscreenGetUrlMessage | WsStateMessage | WsDataMessage | WsSendMessage | WsGetStateMessage | WsSetUrlMessage | BgGetFullStateMessage | BgSetToolPermissionMessage | BgSetAllToolsPermissionMessage | BgSetPluginPermissionMessage | BgSetSkipPermissionsMessage | BgSearchPluginsMessage | BgInstallPluginMessage | BgRemovePluginMessage | BgRemoveFailedPluginMessage | BgUpdatePluginMessage | OffscreenGetLogsMessage | BgForceReconnectMessage | PluginLogsMessage | ToolProgressMessage | SpGetStateMessage | SpConnectionStateMessage | SpRelayMessage | SpConfirmationResponseMessage | PortChangedMessage;
164
+ export type InternalMessage = OffscreenGetUrlMessage | WsStateMessage | WsDataMessage | WsSendMessage | WsGetStateMessage | WsSetUrlMessage | BgGetFullStateMessage | BgSetToolPermissionMessage | BgSetAllToolsPermissionMessage | BgSetPluginPermissionMessage | BgSetSkipPermissionsMessage | BgSearchPluginsMessage | BgInstallPluginMessage | BgRemovePluginMessage | BgRemoveFailedPluginMessage | BgUpdatePluginMessage | BgOpenPluginTabMessage | BgOpenFolderMessage | OffscreenGetLogsMessage | BgForceReconnectMessage | PluginLogsMessage | ToolProgressMessage | SpGetStateMessage | SpConnectionStateMessage | SpRelayMessage | SpConfirmationResponseMessage | PortChangedMessage;
155
165
  /** Tab state info for a single plugin — shared shape used by tab.stateChanged payloads */
156
166
  export interface PluginTabStateInfo {
157
167
  state: TabState;
@@ -1 +1 @@
1
- {"version":3,"file":"extension-messages.d.ts","sourceRoot":"","sources":["../src/extension-messages.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"extension-messages.d.ts","sourceRoot":"","sources":["../src/extension-messages.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export declare const getLastSeenUrl: (pluginName: string) => Promise<string | undefined>;
2
+ export declare const setLastSeenUrl: (pluginName: string, url: string) => Promise<void>;
3
+ export declare const loadLastSeenUrlsFromStorage: () => Promise<void>;
4
+ /** Reset in-memory state — exported for testing only. */
5
+ export declare const _resetForTesting: () => void;
6
+ //# sourceMappingURL=last-seen-urls.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"last-seen-urls.d.ts","sourceRoot":"","sources":["../src/last-seen-urls.ts"],"names":[],"mappings":"AAoBA,eAAO,MAAM,cAAc,GAAU,YAAY,MAAM,KAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAGnF,CAAC;AAEF,eAAO,MAAM,cAAc,GAAU,YAAY,MAAM,EAAE,KAAK,MAAM,KAAG,OAAO,CAAC,IAAI,CASlF,CAAC;AAEF,eAAO,MAAM,2BAA2B,QAAa,OAAO,CAAC,IAAI,CAGhE,CAAC;AAEF,yDAAyD;AACzD,eAAO,MAAM,gBAAgB,QAAO,IAGnC,CAAC"}
@@ -0,0 +1,45 @@
1
+ import { LAST_SEEN_URLS_KEY } from './constants.js';
2
+ /** In-memory cache of last-seen URLs per plugin. */
3
+ let cache = {};
4
+ let loaded = false;
5
+ const ensureLoaded = async () => {
6
+ if (loaded)
7
+ return;
8
+ try {
9
+ const data = await chrome.storage.local.get(LAST_SEEN_URLS_KEY);
10
+ const stored = data[LAST_SEEN_URLS_KEY];
11
+ if (stored && typeof stored === 'object' && !Array.isArray(stored)) {
12
+ cache = stored;
13
+ }
14
+ }
15
+ catch {
16
+ // Best-effort — storage may not be available
17
+ }
18
+ loaded = true;
19
+ };
20
+ export const getLastSeenUrl = async (pluginName) => {
21
+ await ensureLoaded();
22
+ return cache[pluginName];
23
+ };
24
+ export const setLastSeenUrl = async (pluginName, url) => {
25
+ await ensureLoaded();
26
+ if (cache[pluginName] === url)
27
+ return;
28
+ cache[pluginName] = url;
29
+ try {
30
+ await chrome.storage.local.set({ [LAST_SEEN_URLS_KEY]: { ...cache } });
31
+ }
32
+ catch {
33
+ // Best-effort — storage may not be available
34
+ }
35
+ };
36
+ export const loadLastSeenUrlsFromStorage = async () => {
37
+ loaded = false;
38
+ await ensureLoaded();
39
+ };
40
+ /** Reset in-memory state — exported for testing only. */
41
+ export const _resetForTesting = () => {
42
+ cache = {};
43
+ loaded = false;
44
+ };
45
+ //# sourceMappingURL=last-seen-urls.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"last-seen-urls.js","sourceRoot":"","sources":["../src/last-seen-urls.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEpD,oDAAoD;AACpD,IAAI,KAAK,GAA2B,EAAE,CAAC;AACvC,IAAI,MAAM,GAAG,KAAK,CAAC;AAEnB,MAAM,YAAY,GAAG,KAAK,IAAmB,EAAE;IAC7C,IAAI,MAAM;QAAE,OAAO;IACnB,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAChE,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACxC,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACnE,KAAK,GAAG,MAAgC,CAAC;QAC3C,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,6CAA6C;IAC/C,CAAC;IACD,MAAM,GAAG,IAAI,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EAAE,UAAkB,EAA+B,EAAE;IACtF,MAAM,YAAY,EAAE,CAAC;IACrB,OAAO,KAAK,CAAC,UAAU,CAAC,CAAC;AAC3B,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EAAE,UAAkB,EAAE,GAAW,EAAiB,EAAE;IACrF,MAAM,YAAY,EAAE,CAAC;IACrB,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,GAAG;QAAE,OAAO;IACtC,KAAK,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC;IACxB,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,kBAAkB,CAAC,EAAE,EAAE,GAAG,KAAK,EAAE,EAAE,CAAC,CAAC;IACzE,CAAC;IAAC,MAAM,CAAC;QACP,6CAA6C;IAC/C,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,2BAA2B,GAAG,KAAK,IAAmB,EAAE;IACnE,MAAM,GAAG,KAAK,CAAC;IACf,MAAM,YAAY,EAAE,CAAC;AACvB,CAAC,CAAC;AAEF,yDAAyD;AACzD,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAS,EAAE;IACzC,KAAK,GAAG,EAAE,CAAC;IACX,MAAM,GAAG,KAAK,CAAC;AACjB,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"message-router.d.ts","sourceRoot":"","sources":["../src/message-router.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAKV,cAAc,EACd,WAAW,EACZ,MAAM,sBAAsB,CAAC;AAmH9B,2EAA2E;AAC3E,UAAU,sBAAsB;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,cAAc,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,KAAK,EAAE,WAAW,EAAE,CAAC;CACtB;AAqBD;;;;GAIG;AACH,QAAA,MAAM,qBAAqB,GAAI,KAAK,OAAO,KAAG,sBAAsB,GAAG,IAiFtE,CAAC;AAwZF,6DAA6D;AAC7D,QAAA,MAAM,mBAAmB,GAAI,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,IAyE/D,CAAC;AAEF,oFAAoF;AACpF,QAAA,MAAM,kBAAkB,UAAoC,CAAC;AAE7D,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,CAAC;AAC1E,YAAY,EAAE,sBAAsB,EAAE,CAAC"}
1
+ {"version":3,"file":"message-router.d.ts","sourceRoot":"","sources":["../src/message-router.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAKV,cAAc,EACd,WAAW,EACZ,MAAM,sBAAsB,CAAC;AAmH9B,2EAA2E;AAC3E,UAAU,sBAAsB;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,cAAc,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,KAAK,EAAE,WAAW,EAAE,CAAC;CACtB;AAqBD;;;;GAIG;AACH,QAAA,MAAM,qBAAqB,GAAI,KAAK,OAAO,KAAG,sBAAsB,GAAG,IAiFtE,CAAC;AA0ZF,6DAA6D;AAC7D,QAAA,MAAM,mBAAmB,GAAI,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,IA0E/D,CAAC;AAEF,oFAAoF;AACpF,QAAA,MAAM,kBAAkB,UAAoC,CAAC;AAE7D,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,CAAC;AAC1E,YAAY,EAAE,sBAAsB,EAAE,CAAC"}
@@ -262,6 +262,7 @@ const handleSyncFull = async (params) => {
262
262
  ? params.browserTools
263
263
  : undefined;
264
264
  const rawServerVersion = typeof params.serverVersion === 'string' ? params.serverVersion : undefined;
265
+ const rawServerSourcePath = typeof params.serverSourcePath === 'string' ? params.serverSourcePath : undefined;
265
266
  const rawBrowserPermission = params.browserPermission;
266
267
  const browserPermission = rawBrowserPermission === 'off' || rawBrowserPermission === 'ask' || rawBrowserPermission === 'auto'
267
268
  ? rawBrowserPermission
@@ -273,6 +274,7 @@ const handleSyncFull = async (params) => {
273
274
  ...(rawBrowserTools ? { browserTools: rawBrowserTools } : {}),
274
275
  ...(browserPermission !== undefined ? { browserPermission } : {}),
275
276
  ...(rawServerVersion !== undefined ? { serverVersion: rawServerVersion } : {}),
277
+ ...(rawServerSourcePath !== undefined ? { serverSourcePath: rawServerSourcePath } : {}),
276
278
  ...(rawSkipPermissions !== undefined ? { skipPermissions: rawSkipPermissions } : {}),
277
279
  });
278
280
  // Mark caches as initialized so the bg:getFullState wake detection
@@ -502,6 +504,7 @@ const handleServerMessage = (message) => {
502
504
  ...(payload.browserTools ? { browserTools: payload.browserTools } : {}),
503
505
  ...(payload.browserPermission !== undefined ? { browserPermission: payload.browserPermission } : {}),
504
506
  ...(payload.serverVersion !== undefined ? { serverVersion: payload.serverVersion } : {}),
507
+ ...(payload.serverSourcePath !== undefined ? { serverSourcePath: payload.serverSourcePath } : {}),
505
508
  ...(payload.skipPermissions !== undefined ? { skipPermissions: payload.skipPermissions } : {}),
506
509
  });
507
510
  }