@opentabs-dev/browser-extension 0.0.66 → 0.0.68

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 (98) hide show
  1. package/dist/background-message-handlers.d.ts +3 -1
  2. package/dist/background-message-handlers.d.ts.map +1 -1
  3. package/dist/background-message-handlers.js +35 -3
  4. package/dist/background-message-handlers.js.map +1 -1
  5. package/dist/background.js +113 -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 +6 -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 +7 -1
  28. package/dist/side-panel/bridge.d.ts.map +1 -1
  29. package/dist/side-panel/bridge.js +3 -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 +14 -8
  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 +684 -541
  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
  63. package/dist/bg-log-state.d.ts +0 -10
  64. package/dist/bg-log-state.d.ts.map +0 -1
  65. package/dist/bg-log-state.js +0 -11
  66. package/dist/bg-log-state.js.map +0 -1
  67. package/dist/browser-commands.d.ts +0 -36
  68. package/dist/browser-commands.d.ts.map +0 -1
  69. package/dist/browser-commands.js +0 -1931
  70. package/dist/browser-commands.js.map +0 -1
  71. package/dist/resource-prompt-dispatch.d.ts +0 -14
  72. package/dist/resource-prompt-dispatch.d.ts.map +0 -1
  73. package/dist/resource-prompt-dispatch.js +0 -225
  74. package/dist/resource-prompt-dispatch.js.map +0 -1
  75. package/dist/side-panel/components/ChromeIcon.d.ts +0 -5
  76. package/dist/side-panel/components/ChromeIcon.d.ts.map +0 -1
  77. package/dist/side-panel/components/ChromeIcon.js +0 -4
  78. package/dist/side-panel/components/ChromeIcon.js.map +0 -1
  79. package/dist/side-panel/components/Header.d.ts +0 -5
  80. package/dist/side-panel/components/Header.d.ts.map +0 -1
  81. package/dist/side-panel/components/Header.js +0 -6
  82. package/dist/side-panel/components/Header.js.map +0 -1
  83. package/dist/side-panel/components/VersionMismatchBanner.d.ts +0 -3
  84. package/dist/side-panel/components/VersionMismatchBanner.d.ts.map +0 -1
  85. package/dist/side-panel/components/VersionMismatchBanner.js +0 -5
  86. package/dist/side-panel/components/VersionMismatchBanner.js.map +0 -1
  87. package/dist/side-panel/lib/utils.d.ts +0 -3
  88. package/dist/side-panel/lib/utils.d.ts.map +0 -1
  89. package/dist/side-panel/lib/utils.js +0 -4
  90. package/dist/side-panel/lib/utils.js.map +0 -1
  91. package/dist/side-panel-state.d.ts +0 -11
  92. package/dist/side-panel-state.d.ts.map +0 -1
  93. package/dist/side-panel-state.js +0 -38
  94. package/dist/side-panel-state.js.map +0 -1
  95. package/dist/types.d.ts +0 -82
  96. package/dist/types.d.ts.map +0 -1
  97. package/dist/types.js +0 -2
  98. package/dist/types.js.map +0 -1
@@ -58686,7 +58686,7 @@ var BROWSER_TOOLS_CATALOG = [{
58686
58686
  group: "Extension"
58687
58687
  }, {
58688
58688
  name: "plugin_analyze_site",
58689
- description: "Comprehensively analyze a web page to produce actionable intelligence for building OpenTabs plugins. Opens the URL in a new tab, captures network traffic and WebSocket frame content, probes the page for frameworks, globals, auth, forms, storage, and APIs, then generates concrete tool suggestions. Returns: auth methods (cookies, JWT, Bearer, API keys, CSRF, Basic, custom headers, globals) with extraction hints; API endpoints classified by protocol (REST, GraphQL, JSON-RPC, tRPC, gRPC-Web, WebSocket, SSE) with sample WebSocket frame payloads for real-time API detection; framework detection (React, Next.js, Vue, Nuxt, Angular, Svelte, jQuery, Ember, Backbone) with SPA/SSR flags; non-standard window globals; forms with field names; interactive elements; data-* attributes; storage keys (cookies, localStorage, sessionStorage); and tool suggestions with snake_case names, descriptions, and implementation approaches. Use this when starting to develop a new plugin for a website \u2014 it tells you everything you need to know about how the site works.",
58689
+ description: "Comprehensively analyze a web page to produce actionable intelligence for building OpenTabs plugins. Opens the URL in a new tab, captures network traffic and WebSocket frame content, probes the page for frameworks, globals, auth, forms, storage, and APIs, then generates concrete tool suggestions. Returns: auth methods (cookies, JWT, Bearer, API keys, CSRF, Basic, custom headers, globals) with extraction hints; API endpoints classified by protocol (REST, GraphQL, JSON-RPC, tRPC, gRPC-Web, WebSocket, SSE) with sample WebSocket frame payloads for real-time API detection; framework detection (React, Next.js, Vue, Nuxt, Angular, Svelte, jQuery, Ember, Backbone) with SPA/SSR flags; non-standard window globals; forms with field names; interactive elements; data-* attributes; storage keys (cookies, localStorage, sessionStorage); and tool suggestions with snake_case names, descriptions, and implementation approaches. Use this when starting to develop a new plugin for a website \u2014 it tells you everything you need to know about how the site works. This is Phase 2 of the plugin development workflow. For the complete step-by-step guide (including auth discovery, API mapping, scaffolding, and common gotchas), use the build-plugin skill.",
58690
58690
  summary: "Analyze a site for plugin development",
58691
58691
  icon: "scan-search",
58692
58692
  group: "Plugins"
@@ -58707,12 +58707,12 @@ init_check();
58707
58707
  init_chevron_down();
58708
58708
  init_chevron_up();
58709
58709
  init_copy();
58710
+ init_folder_open();
58710
58711
  init_ghost();
58711
58712
  init_key_round();
58712
58713
  init_moon();
58713
58714
  init_package();
58714
58715
  init_search();
58715
- init_server();
58716
58716
  init_shield_off();
58717
58717
  init_sun();
58718
58718
  init_trash_2();
@@ -61450,6 +61450,10 @@ var openPluginTab = (pluginName) => sendBgMessage({
61450
61450
  type: "bg:openPluginTab",
61451
61451
  pluginName
61452
61452
  });
61453
+ var openFolder = (path) => sendBgMessage({
61454
+ type: "bg:openFolder",
61455
+ path
61456
+ });
61453
61457
  var sendConfirmationResponse = (id, decision, alwaysAllow) => {
61454
61458
  chrome.runtime.sendMessage({
61455
61459
  type: "sp:confirmationResponse",
@@ -67465,7 +67469,6 @@ var Trigger3 = DropdownMenuTrigger;
67465
67469
  var Portal22 = DropdownMenuPortal;
67466
67470
  var Content23 = DropdownMenuContent;
67467
67471
  var Item23 = DropdownMenuItem;
67468
- var Separator2 = DropdownMenuSeparator;
67469
67472
 
67470
67473
  // ../../node_modules/clsx/dist/clsx.mjs
67471
67474
  function r2(e2) {
@@ -70691,7 +70694,7 @@ var MenuContent2 = (t0) => {
70691
70694
  const sideOffset = t1 === void 0 ? 4 : t1;
70692
70695
  let t2;
70693
70696
  if ($2[5] !== className) {
70694
- t2 = cn("z-50 w-56 rounded border-2 border-border bg-card shadow-md", className);
70697
+ t2 = cn("z-50 min-w-[8rem] overflow-hidden border border-border bg-background font-mono font-semibold text-foreground text-xs shadow-md", className);
70695
70698
  $2[5] = className;
70696
70699
  $2[6] = t2;
70697
70700
  } else {
@@ -70718,13 +70721,15 @@ var MenuContent2 = (t0) => {
70718
70721
  return t3;
70719
70722
  };
70720
70723
  var MenuItem2 = (t0) => {
70721
- const $2 = (0, import_compiler_runtime.c)(10);
70724
+ const $2 = (0, import_compiler_runtime.c)(12);
70722
70725
  let className;
70723
70726
  let props;
70724
70727
  let ref;
70728
+ let variant;
70725
70729
  if ($2[0] !== t0) {
70726
70730
  ({
70727
70731
  className,
70732
+ variant,
70728
70733
  ref,
70729
70734
  ...props
70730
70735
  } = t0);
@@ -70732,92 +70737,139 @@ var MenuItem2 = (t0) => {
70732
70737
  $2[1] = className;
70733
70738
  $2[2] = props;
70734
70739
  $2[3] = ref;
70740
+ $2[4] = variant;
70735
70741
  } else {
70736
70742
  className = $2[1];
70737
70743
  props = $2[2];
70738
70744
  ref = $2[3];
70745
+ variant = $2[4];
70739
70746
  }
70740
- let t1;
70741
- if ($2[4] !== className) {
70742
- t1 = cn("relative flex cursor-pointer select-none items-center gap-2 px-3 py-1.5 font-sans text-foreground text-sm outline-none transition-colors focus:bg-primary focus:text-primary-foreground data-[disabled]:pointer-events-none data-[highlighted]:bg-primary data-[highlighted]:text-primary-foreground data-[disabled]:opacity-50 [&_svg:not([class*=size-])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0", className);
70743
- $2[4] = className;
70744
- $2[5] = t1;
70747
+ const t1 = variant === "destructive" && "text-destructive focus:bg-destructive/10 focus:text-destructive data-[highlighted]:bg-destructive/10 data-[highlighted]:text-destructive";
70748
+ let t2;
70749
+ if ($2[5] !== className || $2[6] !== t1) {
70750
+ t2 = cn("relative flex w-full cursor-default select-none items-center gap-2 px-2 py-1.5 outline-none focus:bg-primary focus:text-primary-foreground data-[disabled]:pointer-events-none data-[highlighted]:bg-primary data-[highlighted]:text-primary-foreground data-disabled:opacity-50 [&_svg:not([class*=size-])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0", t1, className);
70751
+ $2[5] = className;
70752
+ $2[6] = t1;
70753
+ $2[7] = t2;
70745
70754
  } else {
70746
- t1 = $2[5];
70755
+ t2 = $2[7];
70747
70756
  }
70748
- let t2;
70749
- if ($2[6] !== props || $2[7] !== ref || $2[8] !== t1) {
70750
- t2 = /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Item23, {
70757
+ let t3;
70758
+ if ($2[8] !== props || $2[9] !== ref || $2[10] !== t2) {
70759
+ t3 = /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Item23, {
70751
70760
  ref,
70752
- className: t1,
70761
+ className: t2,
70753
70762
  ...props
70754
70763
  });
70755
- $2[6] = props;
70756
- $2[7] = ref;
70757
- $2[8] = t1;
70758
- $2[9] = t2;
70764
+ $2[8] = props;
70765
+ $2[9] = ref;
70766
+ $2[10] = t2;
70767
+ $2[11] = t3;
70759
70768
  } else {
70760
- t2 = $2[9];
70769
+ t3 = $2[11];
70761
70770
  }
70762
- return t2;
70771
+ return t3;
70763
70772
  };
70764
- var MenuSeparator2 = (t0) => {
70765
- const $2 = (0, import_compiler_runtime.c)(10);
70766
- let className;
70767
- let props;
70768
- let ref;
70769
- if ($2[0] !== t0) {
70770
- ({
70771
- className,
70772
- ref,
70773
- ...props
70774
- } = t0);
70775
- $2[0] = t0;
70776
- $2[1] = className;
70777
- $2[2] = props;
70778
- $2[3] = ref;
70779
- } else {
70780
- className = $2[1];
70781
- props = $2[2];
70782
- ref = $2[3];
70773
+ var MenuObject = Object.assign(Menu3, {
70774
+ Trigger: MenuTrigger,
70775
+ Content: MenuContent2,
70776
+ Item: MenuItem2
70777
+ });
70778
+
70779
+ // src/side-panel/components/BrowserToolsMenu.tsx
70780
+ var import_jsx_runtime20 = __toESM(require_jsx_runtime(), 1);
70781
+ var SERVER_NPM_PACKAGE = "@opentabs-dev/mcp-server";
70782
+ var isNpmInstall = (sourcePath) => sourcePath.includes("node_modules");
70783
+ var ServerVersionItem = (t0) => {
70784
+ const $2 = (0, import_compiler_runtime2.c)(12);
70785
+ const {
70786
+ serverVersion,
70787
+ serverSourcePath
70788
+ } = t0;
70789
+ const label = `Server ${serverVersion ? `v${serverVersion}` : "unknown"}`;
70790
+ if (serverSourcePath && isNpmInstall(serverSourcePath)) {
70791
+ let t12;
70792
+ if ($2[0] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
70793
+ t12 = /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(Package, {
70794
+ className: "h-3.5 w-3.5"
70795
+ });
70796
+ $2[0] = t12;
70797
+ } else {
70798
+ t12 = $2[0];
70799
+ }
70800
+ let t22;
70801
+ if ($2[1] !== label) {
70802
+ t22 = /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(MenuObject.Item, {
70803
+ onSelect: _temp,
70804
+ children: [t12, label]
70805
+ });
70806
+ $2[1] = label;
70807
+ $2[2] = t22;
70808
+ } else {
70809
+ t22 = $2[2];
70810
+ }
70811
+ return t22;
70812
+ }
70813
+ if (serverSourcePath) {
70814
+ let t12;
70815
+ if ($2[3] !== serverSourcePath) {
70816
+ t12 = () => void openFolder(serverSourcePath);
70817
+ $2[3] = serverSourcePath;
70818
+ $2[4] = t12;
70819
+ } else {
70820
+ t12 = $2[4];
70821
+ }
70822
+ let t22;
70823
+ if ($2[5] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
70824
+ t22 = /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(FolderOpen, {
70825
+ className: "h-3.5 w-3.5"
70826
+ });
70827
+ $2[5] = t22;
70828
+ } else {
70829
+ t22 = $2[5];
70830
+ }
70831
+ let t3;
70832
+ if ($2[6] !== label || $2[7] !== t12) {
70833
+ t3 = /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(MenuObject.Item, {
70834
+ onSelect: t12,
70835
+ children: [t22, label]
70836
+ });
70837
+ $2[6] = label;
70838
+ $2[7] = t12;
70839
+ $2[8] = t3;
70840
+ } else {
70841
+ t3 = $2[8];
70842
+ }
70843
+ return t3;
70783
70844
  }
70784
70845
  let t1;
70785
- if ($2[4] !== className) {
70786
- t1 = cn("-mx-1 my-1 h-px bg-border", className);
70787
- $2[4] = className;
70788
- $2[5] = t1;
70846
+ if ($2[9] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
70847
+ t1 = /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(Package, {
70848
+ className: "h-3.5 w-3.5"
70849
+ });
70850
+ $2[9] = t1;
70789
70851
  } else {
70790
- t1 = $2[5];
70852
+ t1 = $2[9];
70791
70853
  }
70792
70854
  let t2;
70793
- if ($2[6] !== props || $2[7] !== ref || $2[8] !== t1) {
70794
- t2 = /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Separator2, {
70795
- ref,
70796
- className: t1,
70797
- ...props
70855
+ if ($2[10] !== label) {
70856
+ t2 = /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(MenuObject.Item, {
70857
+ disabled: true,
70858
+ className: "text-muted-foreground",
70859
+ children: [t1, label]
70798
70860
  });
70799
- $2[6] = props;
70800
- $2[7] = ref;
70801
- $2[8] = t1;
70802
- $2[9] = t2;
70861
+ $2[10] = label;
70862
+ $2[11] = t2;
70803
70863
  } else {
70804
- t2 = $2[9];
70864
+ t2 = $2[11];
70805
70865
  }
70806
70866
  return t2;
70807
70867
  };
70808
- var MenuObject = Object.assign(Menu3, {
70809
- Trigger: MenuTrigger,
70810
- Content: MenuContent2,
70811
- Item: MenuItem2,
70812
- Separator: MenuSeparator2
70813
- });
70814
-
70815
- // src/side-panel/components/BrowserToolsMenu.tsx
70816
- var import_jsx_runtime20 = __toESM(require_jsx_runtime(), 1);
70817
70868
  var BrowserToolsMenu = (t0) => {
70818
70869
  const $2 = (0, import_compiler_runtime2.c)(7);
70819
70870
  const {
70820
70871
  serverVersion,
70872
+ serverSourcePath,
70821
70873
  className
70822
70874
  } = t0;
70823
70875
  let t1;
@@ -70838,54 +70890,47 @@ var BrowserToolsMenu = (t0) => {
70838
70890
  t1 = $2[0];
70839
70891
  }
70840
70892
  let t2;
70841
- if ($2[1] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
70842
- t2 = /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(Server, {
70843
- className: "h-3.5 w-3.5"
70844
- });
70845
- $2[1] = t2;
70846
- } else {
70847
- t2 = $2[1];
70848
- }
70849
- const t3 = serverVersion ? `v${serverVersion}` : "unknown";
70850
- let t4;
70851
- if ($2[2] !== t3) {
70852
- t4 = /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(MenuObject, {
70893
+ if ($2[1] !== serverSourcePath || $2[2] !== serverVersion) {
70894
+ t2 = /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(MenuObject, {
70853
70895
  children: [t1, /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(MenuObject.Content, {
70854
70896
  align: "end",
70855
- children: /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(MenuObject.Item, {
70856
- disabled: true,
70857
- className: "text-muted-foreground",
70858
- children: [t2, "Server ", t3]
70897
+ children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(ServerVersionItem, {
70898
+ serverVersion,
70899
+ serverSourcePath
70859
70900
  })
70860
70901
  })]
70861
70902
  });
70862
- $2[2] = t3;
70863
- $2[3] = t4;
70903
+ $2[1] = serverSourcePath;
70904
+ $2[2] = serverVersion;
70905
+ $2[3] = t2;
70864
70906
  } else {
70865
- t4 = $2[3];
70907
+ t2 = $2[3];
70866
70908
  }
70867
- let t5;
70868
- if ($2[4] !== className || $2[5] !== t4) {
70869
- t5 = /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", {
70909
+ let t3;
70910
+ if ($2[4] !== className || $2[5] !== t2) {
70911
+ t3 = /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", {
70870
70912
  className,
70871
- onClick: _temp,
70872
- onKeyDown: _temp2,
70913
+ onClick: _temp2,
70914
+ onKeyDown: _temp3,
70873
70915
  role: "presentation",
70874
- children: t4
70916
+ children: t2
70875
70917
  });
70876
70918
  $2[4] = className;
70877
- $2[5] = t4;
70878
- $2[6] = t5;
70919
+ $2[5] = t2;
70920
+ $2[6] = t3;
70879
70921
  } else {
70880
- t5 = $2[6];
70922
+ t3 = $2[6];
70881
70923
  }
70882
- return t5;
70924
+ return t3;
70883
70925
  };
70884
70926
  BrowserToolsMenu.displayName = "BrowserToolsMenu";
70885
- function _temp(e2) {
70927
+ function _temp() {
70928
+ return window.open(`https://www.npmjs.com/package/${SERVER_NPM_PACKAGE}`, "_blank");
70929
+ }
70930
+ function _temp2(e2) {
70886
70931
  return e2.stopPropagation();
70887
70932
  }
70888
- function _temp2(e_0) {
70933
+ function _temp3(e_0) {
70889
70934
  if (e_0.key === "Enter" || e_0.key === " ") {
70890
70935
  e_0.stopPropagation();
70891
70936
  }
@@ -73132,7 +73177,7 @@ var ItemText = SelectItemText;
73132
73177
  var ItemIndicator2 = SelectItemIndicator;
73133
73178
  var ScrollUpButton = SelectScrollUpButton;
73134
73179
  var ScrollDownButton = SelectScrollDownButton;
73135
- var Separator3 = SelectSeparator;
73180
+ var Separator2 = SelectSeparator;
73136
73181
 
73137
73182
  // src/side-panel/components/retro/Select.tsx
73138
73183
  var import_jsx_runtime28 = __toESM(require_jsx_runtime(), 1);
@@ -73365,7 +73410,7 @@ var SelectItem2 = (t0) => {
73365
73410
  return t4;
73366
73411
  };
73367
73412
  var SelectLabel2 = Label2;
73368
- var SelectSeparator2 = Separator3;
73413
+ var SelectSeparator2 = Separator2;
73369
73414
  var SelectObj = Object.assign(Select2, {
73370
73415
  Trigger: SelectTrigger2,
73371
73416
  Value: SelectValue2,
@@ -76100,7 +76145,7 @@ var PermissionSelect = (t0) => {
76100
76145
  if ($2[5] !== ariaLabel || $2[6] !== disabled || $2[7] !== t3) {
76101
76146
  t5 = /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(SelectObj.Trigger, {
76102
76147
  className: t3,
76103
- onClick: _temp3,
76148
+ onClick: _temp4,
76104
76149
  disabled,
76105
76150
  "aria-label": ariaLabel,
76106
76151
  children: t4
@@ -76307,7 +76352,7 @@ var ToolRow = (t0) => {
76307
76352
  }
76308
76353
  return t16;
76309
76354
  };
76310
- function _temp3(e2) {
76355
+ function _temp4(e2) {
76311
76356
  return e2.stopPropagation();
76312
76357
  }
76313
76358
 
@@ -76347,13 +76392,14 @@ var import_jsx_runtime34 = __toESM(require_jsx_runtime(), 1);
76347
76392
  var CHROME_ICON_SVG = ['<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48">', "<defs>", '<linearGradient id="chrome-a" x1="3.2173" y1="15" x2="44.7812" y2="15" gradientUnits="userSpaceOnUse">', '<stop offset="0" stop-color="#d93025"/><stop offset="1" stop-color="#ea4335"/>', "</linearGradient>", '<linearGradient id="chrome-b" x1="20.7219" y1="47.6791" x2="41.5039" y2="11.6837" gradientUnits="userSpaceOnUse">', '<stop offset="0" stop-color="#fcc934"/><stop offset="1" stop-color="#fbbc04"/>', "</linearGradient>", '<linearGradient id="chrome-c" x1="26.5981" y1="46.5015" x2="5.8161" y2="10.506" gradientUnits="userSpaceOnUse">', '<stop offset="0" stop-color="#1e8e3e"/><stop offset="1" stop-color="#34a853"/>', "</linearGradient>", "</defs>", '<circle cx="24" cy="23.9947" r="12" fill="#fff"/>', '<path d="M3.2154,36A24,24,0,1,0,12,3.2154,24,24,0,0,0,3.2154,36ZM34.3923,18A12,12,0,1,1,18,13.6077,12,12,0,0,1,34.3923,18Z" fill="none"/>', '<path d="M24,12H44.7812a23.9939,23.9939,0,0,0-41.5639.0029L13.6079,30l.0093-.0024A11.9852,11.9852,0,0,1,24,12Z" fill="url(#chrome-a)"/>', '<circle cx="24" cy="24" r="9.5" fill="#1a73e8"/>', '<path d="M34.3913,30.0029,24.0007,48A23.994,23.994,0,0,0,44.78,12.0031H23.9989l-.0025.0093A11.985,11.985,0,0,1,34.3913,30.0029Z" fill="url(#chrome-b)"/>', '<path d="M13.6086,30.0031,3.218,12.006A23.994,23.994,0,0,0,24.0025,48L34.3931,30.0029l-.0067-.0068a11.9852,11.9852,0,0,1-20.7778.007Z" fill="url(#chrome-c)"/>', "</svg>"].join("");
76348
76393
  var toDisplayName = (name) => name.replace(/^browser_/, "").split("_").map((w3) => w3.charAt(0).toUpperCase() + w3.slice(1)).join(" ");
76349
76394
  var BrowserToolsCard = (t0) => {
76350
- const $2 = (0, import_compiler_runtime11.c)(61);
76395
+ const $2 = (0, import_compiler_runtime11.c)(63);
76351
76396
  const {
76352
76397
  tools,
76353
76398
  activeTools,
76354
76399
  onToolsChange,
76355
76400
  toolFilter,
76356
76401
  serverVersion,
76402
+ serverSourcePath,
76357
76403
  browserPermission: t1,
76358
76404
  onBrowserPermissionChange
76359
76405
  } = t0;
@@ -76446,30 +76492,30 @@ var BrowserToolsCard = (t0) => {
76446
76492
  let t13;
76447
76493
  let t8;
76448
76494
  let t9;
76449
- if ($2[9] !== activeTools || $2[10] !== browserPermission || $2[11] !== handleBrowserPermissionChange || $2[12] !== handleToolPermissionChange || $2[13] !== serverVersion || $2[14] !== toggleError || $2[15] !== toolFilter || $2[16] !== tools) {
76495
+ if ($2[9] !== activeTools || $2[10] !== browserPermission || $2[11] !== handleBrowserPermissionChange || $2[12] !== handleToolPermissionChange || $2[13] !== serverSourcePath || $2[14] !== serverVersion || $2[15] !== toggleError || $2[16] !== toolFilter || $2[17] !== tools) {
76450
76496
  const filterLower = toolFilter?.toLowerCase() ?? "";
76451
76497
  const visibleTools = filterLower ? tools.filter((t_0) => toDisplayName(t_0.name).toLowerCase().includes(filterLower) || t_0.name.toLowerCase().includes(filterLower) || t_0.description.toLowerCase().includes(filterLower)) : tools;
76452
76498
  let t142;
76453
- if ($2[25] !== activeTools || $2[26] !== tools) {
76499
+ if ($2[26] !== activeTools || $2[27] !== tools) {
76454
76500
  let t153;
76455
- if ($2[28] !== activeTools) {
76501
+ if ($2[29] !== activeTools) {
76456
76502
  t153 = (t_1) => activeTools.has(`browser:${t_1.name}`);
76457
- $2[28] = activeTools;
76458
- $2[29] = t153;
76503
+ $2[29] = activeTools;
76504
+ $2[30] = t153;
76459
76505
  } else {
76460
- t153 = $2[29];
76506
+ t153 = $2[30];
76461
76507
  }
76462
76508
  t142 = tools.some(t153);
76463
- $2[25] = activeTools;
76464
- $2[26] = tools;
76465
- $2[27] = t142;
76509
+ $2[26] = activeTools;
76510
+ $2[27] = tools;
76511
+ $2[28] = t142;
76466
76512
  } else {
76467
- t142 = $2[27];
76513
+ t142 = $2[28];
76468
76514
  }
76469
76515
  const hasActiveTool = t142;
76470
76516
  const toolGroups = groupTools(visibleTools);
76471
76517
  let t152;
76472
- if ($2[30] !== activeTools || $2[31] !== handleToolPermissionChange) {
76518
+ if ($2[31] !== activeTools || $2[32] !== handleToolPermissionChange) {
76473
76519
  t152 = (toolList) => toolList.map((tool) => /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(ToolRow, {
76474
76520
  name: tool.name,
76475
76521
  displayName: toDisplayName(tool.name),
@@ -76480,17 +76526,17 @@ var BrowserToolsCard = (t0) => {
76480
76526
  active: activeTools.has(`browser:${tool.name}`),
76481
76527
  onPermissionChange: handleToolPermissionChange
76482
76528
  }, tool.name));
76483
- $2[30] = activeTools;
76484
- $2[31] = handleToolPermissionChange;
76485
- $2[32] = t152;
76529
+ $2[31] = activeTools;
76530
+ $2[32] = handleToolPermissionChange;
76531
+ $2[33] = t152;
76486
76532
  } else {
76487
- t152 = $2[32];
76533
+ t152 = $2[33];
76488
76534
  }
76489
76535
  const renderToolList = t152;
76490
76536
  T1 = AccordionComponent.Item;
76491
76537
  t11 = "browser-tools";
76492
76538
  let t16;
76493
- if ($2[33] !== hasActiveTool) {
76539
+ if ($2[34] !== hasActiveTool) {
76494
76540
  t16 = /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(PluginIcon, {
76495
76541
  pluginName: "browser",
76496
76542
  displayName: "Browser",
@@ -76500,14 +76546,14 @@ var BrowserToolsCard = (t0) => {
76500
76546
  iconInactiveSvg: CHROME_ICON_SVG,
76501
76547
  active: hasActiveTool
76502
76548
  });
76503
- $2[33] = hasActiveTool;
76504
- $2[34] = t16;
76549
+ $2[34] = hasActiveTool;
76550
+ $2[35] = t16;
76505
76551
  } else {
76506
- t16 = $2[34];
76552
+ t16 = $2[35];
76507
76553
  }
76508
76554
  let t17;
76509
76555
  let t18;
76510
- if ($2[35] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
76556
+ if ($2[36] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
76511
76557
  t17 = /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("div", {
76512
76558
  className: "flex min-w-0 flex-1 items-center gap-1.5 truncate font-head text-foreground text-sm",
76513
76559
  children: "Browser"
@@ -76515,36 +76561,38 @@ var BrowserToolsCard = (t0) => {
76515
76561
  t18 = /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(ChevronDown, {
76516
76562
  className: "chevron h-4 w-4 shrink-0 transition-transform duration-200"
76517
76563
  });
76518
- $2[35] = t17;
76519
- $2[36] = t18;
76564
+ $2[36] = t17;
76565
+ $2[37] = t18;
76520
76566
  } else {
76521
- t17 = $2[35];
76522
- t18 = $2[36];
76567
+ t17 = $2[36];
76568
+ t18 = $2[37];
76523
76569
  }
76524
76570
  let t19;
76525
- if ($2[37] !== t16) {
76571
+ if ($2[38] !== t16) {
76526
76572
  t19 = /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(Trigger2, {
76527
76573
  className: "focus-ring flex min-w-0 flex-1 cursor-pointer items-center gap-2 px-3 py-2 [&[data-state=open]>svg.chevron]:rotate-180",
76528
76574
  children: [t16, t17, t18]
76529
76575
  });
76530
- $2[37] = t16;
76531
- $2[38] = t19;
76576
+ $2[38] = t16;
76577
+ $2[39] = t19;
76532
76578
  } else {
76533
- t19 = $2[38];
76579
+ t19 = $2[39];
76534
76580
  }
76535
76581
  let t20;
76536
- if ($2[39] !== serverVersion) {
76582
+ if ($2[40] !== serverSourcePath || $2[41] !== serverVersion) {
76537
76583
  t20 = /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(BrowserToolsMenu, {
76538
76584
  serverVersion,
76585
+ serverSourcePath,
76539
76586
  className: "flex shrink-0 items-center px-1"
76540
76587
  });
76541
- $2[39] = serverVersion;
76542
- $2[40] = t20;
76588
+ $2[40] = serverSourcePath;
76589
+ $2[41] = serverVersion;
76590
+ $2[42] = t20;
76543
76591
  } else {
76544
- t20 = $2[40];
76592
+ t20 = $2[42];
76545
76593
  }
76546
76594
  let t21;
76547
- if ($2[41] !== browserPermission || $2[42] !== handleBrowserPermissionChange) {
76595
+ if ($2[43] !== browserPermission || $2[44] !== handleBrowserPermissionChange) {
76548
76596
  t21 = /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("div", {
76549
76597
  className: "flex shrink-0 items-center px-3",
76550
76598
  children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(PermissionSelect, {
@@ -76554,34 +76602,34 @@ var BrowserToolsCard = (t0) => {
76554
76602
  ariaLabel: "Permission for browser tools"
76555
76603
  })
76556
76604
  });
76557
- $2[41] = browserPermission;
76558
- $2[42] = handleBrowserPermissionChange;
76559
- $2[43] = t21;
76605
+ $2[43] = browserPermission;
76606
+ $2[44] = handleBrowserPermissionChange;
76607
+ $2[45] = t21;
76560
76608
  } else {
76561
- t21 = $2[43];
76609
+ t21 = $2[45];
76562
76610
  }
76563
- if ($2[44] !== t19 || $2[45] !== t20 || $2[46] !== t21) {
76611
+ if ($2[46] !== t19 || $2[47] !== t20 || $2[48] !== t21) {
76564
76612
  t12 = /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(Header, {
76565
76613
  className: "flex",
76566
76614
  children: [t19, t20, t21]
76567
76615
  });
76568
- $2[44] = t19;
76569
- $2[45] = t20;
76570
- $2[46] = t21;
76571
- $2[47] = t12;
76616
+ $2[46] = t19;
76617
+ $2[47] = t20;
76618
+ $2[48] = t21;
76619
+ $2[49] = t12;
76572
76620
  } else {
76573
- t12 = $2[47];
76621
+ t12 = $2[49];
76574
76622
  }
76575
- if ($2[48] !== toggleError) {
76623
+ if ($2[50] !== toggleError) {
76576
76624
  t13 = toggleError && /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(AlertComponent, {
76577
76625
  status: "error",
76578
76626
  className: "mx-3 mb-1 px-2 py-1 text-xs",
76579
76627
  children: toggleError
76580
76628
  });
76581
- $2[48] = toggleError;
76582
- $2[49] = t13;
76629
+ $2[50] = toggleError;
76630
+ $2[51] = t13;
76583
76631
  } else {
76584
- t13 = $2[49];
76632
+ t13 = $2[51];
76585
76633
  }
76586
76634
  T0 = AccordionComponent.Content;
76587
76635
  t8 = "border-border border-t";
@@ -76603,56 +76651,57 @@ var BrowserToolsCard = (t0) => {
76603
76651
  $2[10] = browserPermission;
76604
76652
  $2[11] = handleBrowserPermissionChange;
76605
76653
  $2[12] = handleToolPermissionChange;
76606
- $2[13] = serverVersion;
76607
- $2[14] = toggleError;
76608
- $2[15] = toolFilter;
76609
- $2[16] = tools;
76610
- $2[17] = T0;
76611
- $2[18] = T1;
76612
- $2[19] = t10;
76613
- $2[20] = t11;
76614
- $2[21] = t12;
76615
- $2[22] = t13;
76616
- $2[23] = t8;
76617
- $2[24] = t9;
76654
+ $2[13] = serverSourcePath;
76655
+ $2[14] = serverVersion;
76656
+ $2[15] = toggleError;
76657
+ $2[16] = toolFilter;
76658
+ $2[17] = tools;
76659
+ $2[18] = T0;
76660
+ $2[19] = T1;
76661
+ $2[20] = t10;
76662
+ $2[21] = t11;
76663
+ $2[22] = t12;
76664
+ $2[23] = t13;
76665
+ $2[24] = t8;
76666
+ $2[25] = t9;
76618
76667
  } else {
76619
- T0 = $2[17];
76620
- T1 = $2[18];
76621
- t10 = $2[19];
76622
- t11 = $2[20];
76623
- t12 = $2[21];
76624
- t13 = $2[22];
76625
- t8 = $2[23];
76626
- t9 = $2[24];
76668
+ T0 = $2[18];
76669
+ T1 = $2[19];
76670
+ t10 = $2[20];
76671
+ t11 = $2[21];
76672
+ t12 = $2[22];
76673
+ t13 = $2[23];
76674
+ t8 = $2[24];
76675
+ t9 = $2[25];
76627
76676
  }
76628
76677
  let t14;
76629
- if ($2[50] !== T0 || $2[51] !== t10 || $2[52] !== t8 || $2[53] !== t9) {
76678
+ if ($2[52] !== T0 || $2[53] !== t10 || $2[54] !== t8 || $2[55] !== t9) {
76630
76679
  t14 = /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(T0, {
76631
76680
  className: t8,
76632
76681
  children: [t9, t10]
76633
76682
  });
76634
- $2[50] = T0;
76635
- $2[51] = t10;
76636
- $2[52] = t8;
76637
- $2[53] = t9;
76638
- $2[54] = t14;
76683
+ $2[52] = T0;
76684
+ $2[53] = t10;
76685
+ $2[54] = t8;
76686
+ $2[55] = t9;
76687
+ $2[56] = t14;
76639
76688
  } else {
76640
- t14 = $2[54];
76689
+ t14 = $2[56];
76641
76690
  }
76642
76691
  let t15;
76643
- if ($2[55] !== T1 || $2[56] !== t11 || $2[57] !== t12 || $2[58] !== t13 || $2[59] !== t14) {
76692
+ if ($2[57] !== T1 || $2[58] !== t11 || $2[59] !== t12 || $2[60] !== t13 || $2[61] !== t14) {
76644
76693
  t15 = /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(T1, {
76645
76694
  value: t11,
76646
76695
  children: [t12, t13, t14]
76647
76696
  });
76648
- $2[55] = T1;
76649
- $2[56] = t11;
76650
- $2[57] = t12;
76651
- $2[58] = t13;
76652
- $2[59] = t14;
76653
- $2[60] = t15;
76697
+ $2[57] = T1;
76698
+ $2[58] = t11;
76699
+ $2[59] = t12;
76700
+ $2[60] = t13;
76701
+ $2[61] = t14;
76702
+ $2[62] = t15;
76654
76703
  } else {
76655
- t15 = $2[60];
76704
+ t15 = $2[62];
76656
76705
  }
76657
76706
  return t15;
76658
76707
  };
@@ -77964,7 +78013,7 @@ var ConfirmationDialog = (t0) => {
77964
78013
  let t14;
77965
78014
  if ($2[31] !== t13 || $2[32] !== t7 || $2[33] !== t9) {
77966
78015
  t14 = /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(DialogObject.Content, {
77967
- onInteractOutside: _temp4,
78016
+ onInteractOutside: _temp5,
77968
78017
  onEscapeKeyDown: _temp22,
77969
78018
  children: [t7, t9, t13]
77970
78019
  });
@@ -77991,7 +78040,7 @@ var ConfirmationDialog = (t0) => {
77991
78040
  }
77992
78041
  return t15;
77993
78042
  };
77994
- function _temp4(e2) {
78043
+ function _temp5(e2) {
77995
78044
  return e2.preventDefault();
77996
78045
  }
77997
78046
  function _temp22(e_0) {
@@ -78117,7 +78166,7 @@ var EmptyIcon = (t0) => {
78117
78166
  }
78118
78167
  let t1;
78119
78168
  if ($2[4] !== className) {
78120
- t1 = cn(className);
78169
+ t1 = cn("flex items-center justify-center", className);
78121
78170
  $2[4] = className;
78122
78171
  $2[5] = t1;
78123
78172
  } else {
@@ -78126,7 +78175,7 @@ var EmptyIcon = (t0) => {
78126
78175
  let t2;
78127
78176
  if ($2[6] !== children) {
78128
78177
  t2 = children || /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(Ghost, {
78129
- className: "h-full w-full"
78178
+ size: 40
78130
78179
  });
78131
78180
  $2[6] = children;
78132
78181
  $2[7] = t2;
@@ -78482,7 +78531,7 @@ var ConnectionRefusedState = () => {
78482
78531
  if (typeof stored === "number" && stored >= 1 && stored <= 65535) {
78483
78532
  setPort(stored);
78484
78533
  }
78485
- }, _temp5);
78534
+ }, _temp6);
78486
78535
  const onChanged = (changes, area) => {
78487
78536
  if (area !== "local" || !(SERVER_PORT_KEY in changes)) {
78488
78537
  return;
@@ -78512,7 +78561,7 @@ var ConnectionRefusedState = () => {
78512
78561
  t2 = /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(EmptyComponent.Icon, {
78513
78562
  className: "h-10 w-10 text-destructive/60",
78514
78563
  children: /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(Unplug, {
78515
- className: "h-full w-full"
78564
+ size: 40
78516
78565
  })
78517
78566
  });
78518
78567
  t3 = /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(EmptyComponent.Title, {
@@ -78592,7 +78641,7 @@ var AuthFailedState = () => {
78592
78641
  t0 = /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(EmptyComponent.Icon, {
78593
78642
  className: "h-10 w-10 text-destructive/60",
78594
78643
  children: /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(KeyRound, {
78595
- className: "h-full w-full"
78644
+ size: 40
78596
78645
  })
78597
78646
  });
78598
78647
  t1 = /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(EmptyComponent.Title, {
@@ -78679,7 +78728,7 @@ var LoadingState = () => {
78679
78728
  }
78680
78729
  return t0;
78681
78730
  };
78682
- function _temp5() {
78731
+ function _temp6() {
78683
78732
  }
78684
78733
 
78685
78734
  // src/side-panel/components/Footer.tsx
@@ -78695,7 +78744,7 @@ var applyTheme = (theme) => {
78695
78744
  };
78696
78745
  var useTheme = () => {
78697
78746
  const $2 = (0, import_compiler_runtime19.c)(5);
78698
- const [theme, setTheme] = (0, import_react15.useState)(_temp6);
78747
+ const [theme, setTheme] = (0, import_react15.useState)(_temp7);
78699
78748
  let t0;
78700
78749
  let t1;
78701
78750
  if ($2[0] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
@@ -78744,7 +78793,7 @@ var useTheme = () => {
78744
78793
  }
78745
78794
  return t3;
78746
78795
  };
78747
- function _temp6() {
78796
+ function _temp7() {
78748
78797
  return document.documentElement.classList.contains("dark") ? "dark" : "light";
78749
78798
  }
78750
78799
  function _temp23() {
@@ -79141,14 +79190,14 @@ var Footer = () => {
79141
79190
  }
79142
79191
  return t5;
79143
79192
  };
79144
- function _temp7() {
79193
+ function _temp8() {
79145
79194
  }
79146
79195
  function _temp24() {
79147
79196
  }
79148
79197
  function _temp34(value) {
79149
79198
  chrome.storage.local.set({
79150
79199
  [SERVER_PORT_KEY]: value
79151
- }).catch(_temp7);
79200
+ }).catch(_temp8);
79152
79201
  const message = {
79153
79202
  type: "port-changed",
79154
79203
  port: value
@@ -79431,8 +79480,103 @@ var import_react20 = __toESM(require_react(), 1);
79431
79480
  var import_compiler_runtime23 = __toESM(require_compiler_runtime(), 1);
79432
79481
  var import_react19 = __toESM(require_react(), 1);
79433
79482
  var import_jsx_runtime49 = __toESM(require_jsx_runtime(), 1);
79483
+ var VersionItem = (t0) => {
79484
+ const $2 = (0, import_compiler_runtime23.c)(15);
79485
+ const {
79486
+ plugin
79487
+ } = t0;
79488
+ if (plugin.source === "npm") {
79489
+ let t12;
79490
+ if ($2[0] !== plugin.name) {
79491
+ t12 = () => window.open(`https://www.npmjs.com/package/${plugin.name}`, "_blank");
79492
+ $2[0] = plugin.name;
79493
+ $2[1] = t12;
79494
+ } else {
79495
+ t12 = $2[1];
79496
+ }
79497
+ let t22;
79498
+ if ($2[2] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
79499
+ t22 = /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(Package, {
79500
+ className: "h-3.5 w-3.5"
79501
+ });
79502
+ $2[2] = t22;
79503
+ } else {
79504
+ t22 = $2[2];
79505
+ }
79506
+ let t3;
79507
+ if ($2[3] !== plugin.version || $2[4] !== t12) {
79508
+ t3 = /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(MenuObject.Item, {
79509
+ onSelect: t12,
79510
+ children: [t22, "v", plugin.version]
79511
+ });
79512
+ $2[3] = plugin.version;
79513
+ $2[4] = t12;
79514
+ $2[5] = t3;
79515
+ } else {
79516
+ t3 = $2[5];
79517
+ }
79518
+ return t3;
79519
+ }
79520
+ const {
79521
+ sourcePath
79522
+ } = plugin;
79523
+ if (sourcePath) {
79524
+ let t12;
79525
+ if ($2[6] !== sourcePath) {
79526
+ t12 = () => void openFolder(sourcePath);
79527
+ $2[6] = sourcePath;
79528
+ $2[7] = t12;
79529
+ } else {
79530
+ t12 = $2[7];
79531
+ }
79532
+ let t22;
79533
+ if ($2[8] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
79534
+ t22 = /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(FolderOpen, {
79535
+ className: "h-3.5 w-3.5"
79536
+ });
79537
+ $2[8] = t22;
79538
+ } else {
79539
+ t22 = $2[8];
79540
+ }
79541
+ let t3;
79542
+ if ($2[9] !== plugin.version || $2[10] !== t12) {
79543
+ t3 = /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(MenuObject.Item, {
79544
+ onSelect: t12,
79545
+ children: [t22, "v", plugin.version]
79546
+ });
79547
+ $2[9] = plugin.version;
79548
+ $2[10] = t12;
79549
+ $2[11] = t3;
79550
+ } else {
79551
+ t3 = $2[11];
79552
+ }
79553
+ return t3;
79554
+ }
79555
+ let t1;
79556
+ if ($2[12] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
79557
+ t1 = /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(FolderOpen, {
79558
+ className: "h-3.5 w-3.5"
79559
+ });
79560
+ $2[12] = t1;
79561
+ } else {
79562
+ t1 = $2[12];
79563
+ }
79564
+ let t2;
79565
+ if ($2[13] !== plugin.version) {
79566
+ t2 = /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(MenuObject.Item, {
79567
+ disabled: true,
79568
+ className: "text-muted-foreground",
79569
+ children: [t1, "v", plugin.version]
79570
+ });
79571
+ $2[13] = plugin.version;
79572
+ $2[14] = t2;
79573
+ } else {
79574
+ t2 = $2[14];
79575
+ }
79576
+ return t2;
79577
+ };
79434
79578
  var PluginMenu = (t0) => {
79435
- const $2 = (0, import_compiler_runtime23.c)(62);
79579
+ const $2 = (0, import_compiler_runtime23.c)(57);
79436
79580
  const {
79437
79581
  plugin,
79438
79582
  onUpdate,
@@ -79496,36 +79640,18 @@ var PluginMenu = (t0) => {
79496
79640
  t5 = $2[8];
79497
79641
  }
79498
79642
  let t6;
79499
- if ($2[9] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
79500
- t6 = /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(Package, {
79501
- className: "h-3.5 w-3.5"
79643
+ if ($2[9] !== plugin) {
79644
+ t6 = /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(VersionItem, {
79645
+ plugin
79502
79646
  });
79503
- $2[9] = t6;
79647
+ $2[9] = plugin;
79648
+ $2[10] = t6;
79504
79649
  } else {
79505
- t6 = $2[9];
79650
+ t6 = $2[10];
79506
79651
  }
79507
79652
  let t7;
79508
- if ($2[10] !== plugin.version) {
79509
- t7 = /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(MenuObject.Item, {
79510
- disabled: true,
79511
- className: "text-muted-foreground",
79512
- children: [t6, "v", plugin.version]
79513
- });
79514
- $2[10] = plugin.version;
79515
- $2[11] = t7;
79516
- } else {
79517
- t7 = $2[11];
79518
- }
79519
- let t8;
79520
- if ($2[12] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
79521
- t8 = /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(MenuObject.Separator, {});
79522
- $2[12] = t8;
79523
- } else {
79524
- t8 = $2[12];
79525
- }
79526
- let t9;
79527
- if ($2[13] !== onUpdate || $2[14] !== plugin.update || $2[15] !== updating) {
79528
- t9 = plugin.update && /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(MenuObject.Item, {
79653
+ if ($2[11] !== onUpdate || $2[12] !== plugin.update || $2[13] !== updating) {
79654
+ t7 = plugin.update && /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(MenuObject.Item, {
79529
79655
  onClick: onUpdate,
79530
79656
  children: [updating ? /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(Loader2, {
79531
79657
  size: "sm"
@@ -79533,148 +79659,140 @@ var PluginMenu = (t0) => {
79533
79659
  className: "h-3.5 w-3.5"
79534
79660
  }), "Update to v", plugin.update.latestVersion]
79535
79661
  });
79536
- $2[13] = onUpdate;
79537
- $2[14] = plugin.update;
79538
- $2[15] = updating;
79539
- $2[16] = t9;
79540
- } else {
79541
- t9 = $2[16];
79542
- }
79543
- let t10;
79544
- if ($2[17] !== plugin.update) {
79545
- t10 = plugin.update && /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(MenuObject.Separator, {});
79546
- $2[17] = plugin.update;
79547
- $2[18] = t10;
79662
+ $2[11] = onUpdate;
79663
+ $2[12] = plugin.update;
79664
+ $2[13] = updating;
79665
+ $2[14] = t7;
79548
79666
  } else {
79549
- t10 = $2[18];
79667
+ t7 = $2[14];
79550
79668
  }
79551
- let t11;
79552
- if ($2[19] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
79553
- t11 = () => setConfirmOpen(true);
79554
- $2[19] = t11;
79669
+ let t8;
79670
+ if ($2[15] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
79671
+ t8 = () => setConfirmOpen(true);
79672
+ $2[15] = t8;
79555
79673
  } else {
79556
- t11 = $2[19];
79674
+ t8 = $2[15];
79557
79675
  }
79558
- let t12;
79559
- if ($2[20] !== removing) {
79560
- t12 = removing ? /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(Loader2, {
79676
+ let t9;
79677
+ if ($2[16] !== removing) {
79678
+ t9 = removing ? /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(Loader2, {
79561
79679
  size: "sm"
79562
79680
  }) : /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(Trash2, {
79563
79681
  className: "h-3.5 w-3.5"
79564
79682
  });
79565
- $2[20] = removing;
79566
- $2[21] = t12;
79683
+ $2[16] = removing;
79684
+ $2[17] = t9;
79567
79685
  } else {
79568
- t12 = $2[21];
79686
+ t9 = $2[17];
79569
79687
  }
79570
- let t13;
79571
- if ($2[22] !== removeLabel || $2[23] !== t12) {
79572
- t13 = /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(MenuObject.Item, {
79573
- onSelect: t11,
79574
- className: "text-destructive focus:bg-destructive/10 focus:text-destructive data-[highlighted]:bg-destructive/10 data-[highlighted]:text-destructive",
79575
- children: [t12, removeLabel]
79688
+ let t10;
79689
+ if ($2[18] !== removeLabel || $2[19] !== t9) {
79690
+ t10 = /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(MenuObject.Item, {
79691
+ onSelect: t8,
79692
+ variant: "destructive",
79693
+ className: "border-border border-t",
79694
+ children: [t9, removeLabel]
79576
79695
  });
79577
- $2[22] = removeLabel;
79578
- $2[23] = t12;
79579
- $2[24] = t13;
79696
+ $2[18] = removeLabel;
79697
+ $2[19] = t9;
79698
+ $2[20] = t10;
79580
79699
  } else {
79581
- t13 = $2[24];
79700
+ t10 = $2[20];
79582
79701
  }
79583
- let t14;
79584
- if ($2[25] !== t10 || $2[26] !== t13 || $2[27] !== t7 || $2[28] !== t9) {
79585
- t14 = /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(MenuObject.Content, {
79702
+ let t11;
79703
+ if ($2[21] !== t10 || $2[22] !== t6 || $2[23] !== t7) {
79704
+ t11 = /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(MenuObject.Content, {
79586
79705
  align: "end",
79587
- children: [t7, t8, t9, t10, t13]
79706
+ children: [t6, t7, t10]
79588
79707
  });
79589
- $2[25] = t10;
79590
- $2[26] = t13;
79591
- $2[27] = t7;
79592
- $2[28] = t9;
79593
- $2[29] = t14;
79708
+ $2[21] = t10;
79709
+ $2[22] = t6;
79710
+ $2[23] = t7;
79711
+ $2[24] = t11;
79594
79712
  } else {
79595
- t14 = $2[29];
79713
+ t11 = $2[24];
79596
79714
  }
79597
- let t15;
79598
- if ($2[30] !== t14 || $2[31] !== t5) {
79599
- t15 = /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(MenuObject, {
79600
- children: [t5, t14]
79715
+ let t12;
79716
+ if ($2[25] !== t11 || $2[26] !== t5) {
79717
+ t12 = /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(MenuObject, {
79718
+ children: [t5, t11]
79601
79719
  });
79602
- $2[30] = t14;
79603
- $2[31] = t5;
79604
- $2[32] = t15;
79720
+ $2[25] = t11;
79721
+ $2[26] = t5;
79722
+ $2[27] = t12;
79605
79723
  } else {
79606
- t15 = $2[32];
79724
+ t12 = $2[27];
79607
79725
  }
79608
- let t16;
79609
- if ($2[33] !== removeLabel) {
79610
- t16 = /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(DialogObject.Header, {
79726
+ let t13;
79727
+ if ($2[28] !== removeLabel) {
79728
+ t13 = /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(DialogObject.Header, {
79611
79729
  className: "border-destructive bg-destructive text-destructive-foreground",
79612
79730
  children: [removeLabel, " Plugin"]
79613
79731
  });
79614
- $2[33] = removeLabel;
79615
- $2[34] = t16;
79732
+ $2[28] = removeLabel;
79733
+ $2[29] = t13;
79616
79734
  } else {
79617
- t16 = $2[34];
79735
+ t13 = $2[29];
79618
79736
  }
79619
- let t17;
79620
- if ($2[35] !== removeLabel) {
79621
- t17 = removeLabel.toLowerCase();
79622
- $2[35] = removeLabel;
79623
- $2[36] = t17;
79737
+ let t14;
79738
+ if ($2[30] !== removeLabel) {
79739
+ t14 = removeLabel.toLowerCase();
79740
+ $2[30] = removeLabel;
79741
+ $2[31] = t14;
79624
79742
  } else {
79625
- t17 = $2[36];
79743
+ t14 = $2[31];
79626
79744
  }
79627
- let t18;
79628
- if ($2[37] !== plugin.displayName) {
79629
- t18 = /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("strong", {
79745
+ let t15;
79746
+ if ($2[32] !== plugin.displayName) {
79747
+ t15 = /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("strong", {
79630
79748
  className: "font-head",
79631
79749
  children: plugin.displayName
79632
79750
  });
79633
- $2[37] = plugin.displayName;
79634
- $2[38] = t18;
79751
+ $2[32] = plugin.displayName;
79752
+ $2[33] = t15;
79635
79753
  } else {
79636
- t18 = $2[38];
79754
+ t15 = $2[33];
79637
79755
  }
79638
- let t19;
79639
- if ($2[39] !== t17 || $2[40] !== t18) {
79640
- t19 = /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("p", {
79756
+ let t16;
79757
+ if ($2[34] !== t14 || $2[35] !== t15) {
79758
+ t16 = /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("p", {
79641
79759
  className: "text-foreground text-sm",
79642
- children: ["Are you sure you want to ", t17, " ", t18, "?"]
79760
+ children: ["Are you sure you want to ", t14, " ", t15, "?"]
79643
79761
  });
79644
- $2[39] = t17;
79645
- $2[40] = t18;
79646
- $2[41] = t19;
79762
+ $2[34] = t14;
79763
+ $2[35] = t15;
79764
+ $2[36] = t16;
79647
79765
  } else {
79648
- t19 = $2[41];
79766
+ t16 = $2[36];
79649
79767
  }
79650
- let t20;
79651
- if ($2[42] !== isLocal) {
79652
- t20 = isLocal ? /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("p", {
79768
+ let t17;
79769
+ if ($2[37] !== isLocal) {
79770
+ t17 = isLocal ? /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("p", {
79653
79771
  className: "mt-1 text-muted-foreground text-xs",
79654
79772
  children: "This will remove the plugin path from your config."
79655
79773
  }) : /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("p", {
79656
79774
  className: "mt-1 text-muted-foreground text-xs",
79657
79775
  children: "This will run npm uninstall and remove the plugin globally."
79658
79776
  });
79659
- $2[42] = isLocal;
79660
- $2[43] = t20;
79777
+ $2[37] = isLocal;
79778
+ $2[38] = t17;
79661
79779
  } else {
79662
- t20 = $2[43];
79780
+ t17 = $2[38];
79663
79781
  }
79664
- let t21;
79665
- if ($2[44] !== t19 || $2[45] !== t20) {
79666
- t21 = /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(DialogObject.Body, {
79667
- children: [t19, t20]
79782
+ let t18;
79783
+ if ($2[39] !== t16 || $2[40] !== t17) {
79784
+ t18 = /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(DialogObject.Body, {
79785
+ children: [t16, t17]
79668
79786
  });
79669
- $2[44] = t19;
79670
- $2[45] = t20;
79671
- $2[46] = t21;
79787
+ $2[39] = t16;
79788
+ $2[40] = t17;
79789
+ $2[41] = t18;
79672
79790
  } else {
79673
- t21 = $2[46];
79791
+ t18 = $2[41];
79674
79792
  }
79675
- let t22;
79676
- if ($2[47] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
79677
- t22 = /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(DialogObject.Close, {
79793
+ let t19;
79794
+ if ($2[42] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
79795
+ t19 = /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(DialogObject.Close, {
79678
79796
  asChild: true,
79679
79797
  children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(Button, {
79680
79798
  size: "sm",
@@ -79682,14 +79800,14 @@ var PluginMenu = (t0) => {
79682
79800
  children: "Cancel"
79683
79801
  })
79684
79802
  });
79685
- $2[47] = t22;
79803
+ $2[42] = t19;
79686
79804
  } else {
79687
- t22 = $2[47];
79805
+ t19 = $2[42];
79688
79806
  }
79689
- let t23;
79690
- if ($2[48] !== handleConfirmRemove || $2[49] !== removeLabel) {
79691
- t23 = /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(DialogObject.Footer, {
79692
- children: [t22, /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(Button, {
79807
+ let t20;
79808
+ if ($2[43] !== handleConfirmRemove || $2[44] !== removeLabel) {
79809
+ t20 = /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(DialogObject.Footer, {
79810
+ children: [t19, /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(Button, {
79693
79811
  size: "sm",
79694
79812
  variant: "outline",
79695
79813
  className: "border-destructive text-destructive",
@@ -79697,57 +79815,57 @@ var PluginMenu = (t0) => {
79697
79815
  children: removeLabel
79698
79816
  })]
79699
79817
  });
79700
- $2[48] = handleConfirmRemove;
79701
- $2[49] = removeLabel;
79702
- $2[50] = t23;
79818
+ $2[43] = handleConfirmRemove;
79819
+ $2[44] = removeLabel;
79820
+ $2[45] = t20;
79703
79821
  } else {
79704
- t23 = $2[50];
79822
+ t20 = $2[45];
79705
79823
  }
79706
- let t24;
79707
- if ($2[51] !== t16 || $2[52] !== t21 || $2[53] !== t23) {
79708
- t24 = /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(DialogObject.Content, {
79709
- children: [t16, t21, t23]
79824
+ let t21;
79825
+ if ($2[46] !== t13 || $2[47] !== t18 || $2[48] !== t20) {
79826
+ t21 = /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(DialogObject.Content, {
79827
+ children: [t13, t18, t20]
79710
79828
  });
79711
- $2[51] = t16;
79712
- $2[52] = t21;
79713
- $2[53] = t23;
79714
- $2[54] = t24;
79829
+ $2[46] = t13;
79830
+ $2[47] = t18;
79831
+ $2[48] = t20;
79832
+ $2[49] = t21;
79715
79833
  } else {
79716
- t24 = $2[54];
79834
+ t21 = $2[49];
79717
79835
  }
79718
- let t25;
79719
- if ($2[55] !== confirmOpen || $2[56] !== t24) {
79720
- t25 = /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(DialogObject, {
79836
+ let t22;
79837
+ if ($2[50] !== confirmOpen || $2[51] !== t21) {
79838
+ t22 = /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(DialogObject, {
79721
79839
  open: confirmOpen,
79722
79840
  onOpenChange: setConfirmOpen,
79723
- children: t24
79841
+ children: t21
79724
79842
  });
79725
- $2[55] = confirmOpen;
79726
- $2[56] = t24;
79727
- $2[57] = t25;
79843
+ $2[50] = confirmOpen;
79844
+ $2[51] = t21;
79845
+ $2[52] = t22;
79728
79846
  } else {
79729
- t25 = $2[57];
79847
+ t22 = $2[52];
79730
79848
  }
79731
- let t26;
79732
- if ($2[58] !== className || $2[59] !== t15 || $2[60] !== t25) {
79733
- t26 = /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", {
79849
+ let t23;
79850
+ if ($2[53] !== className || $2[54] !== t12 || $2[55] !== t22) {
79851
+ t23 = /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", {
79734
79852
  className,
79735
- onClick: _temp8,
79853
+ onClick: _temp9,
79736
79854
  onKeyDown: _temp25,
79737
79855
  role: "presentation",
79738
- children: [t15, t25]
79856
+ children: [t12, t22]
79739
79857
  });
79740
- $2[58] = className;
79741
- $2[59] = t15;
79742
- $2[60] = t25;
79743
- $2[61] = t26;
79858
+ $2[53] = className;
79859
+ $2[54] = t12;
79860
+ $2[55] = t22;
79861
+ $2[56] = t23;
79744
79862
  } else {
79745
- t26 = $2[61];
79863
+ t23 = $2[56];
79746
79864
  }
79747
- return t26;
79865
+ return t23;
79748
79866
  };
79749
79867
  PluginMenu.displayName = "PluginMenu";
79750
- function _temp8(e2) {
79868
+ function _temp9(e2) {
79751
79869
  return e2.stopPropagation();
79752
79870
  }
79753
79871
  function _temp25(e_0) {
@@ -79926,10 +80044,10 @@ var PluginCard = (t0) => {
79926
80044
  const myVersion_0 = toggleCounter.current = toggleCounter.current + 1;
79927
80045
  updatePluginTools((prev_2) => {
79928
80046
  preToggleRef.current = prev_2;
79929
- return prev_2.map((t36) => t36.name === toolName ? {
79930
- ...t36,
80047
+ return prev_2.map((t37) => t37.name === toolName ? {
80048
+ ...t37,
79931
80049
  permission: newPermission_1
79932
- } : t36);
80050
+ } : t37);
79933
80051
  });
79934
80052
  setToolPermission(plugin.name, toolName, newPermission_1).catch(() => {
79935
80053
  if (toggleCounter.current === myVersion_0) {
@@ -79967,19 +80085,40 @@ var PluginCard = (t0) => {
79967
80085
  const inactive = plugin.tabState !== "ready";
79968
80086
  const tabCount = plugin.tabs?.length ?? 0;
79969
80087
  const hasHomepage = Boolean(plugin.homepage);
79970
- const isClickable = tabCount > 0 || hasHomepage;
79971
- const tooltipText = isClickable ? plugin.tabState === "closed" ? `Open ${plugin.displayName} in new tab` : tabCount > 1 ? `Open ${plugin.displayName} (${tabCount} tabs)` : `Open ${plugin.displayName}` : void 0;
80088
+ const hasLastSeenUrl = Boolean(plugin.hasLastSeenUrl);
80089
+ const isClickable = tabCount > 0 || hasHomepage || hasLastSeenUrl;
79972
80090
  let t5;
80091
+ bb0: {
80092
+ if (!isClickable) {
80093
+ t5 = void 0;
80094
+ break bb0;
80095
+ }
80096
+ if (plugin.tabState === "closed") {
80097
+ if (hasHomepage) {
80098
+ t5 = `Open ${plugin.displayName} in new tab`;
80099
+ break bb0;
80100
+ }
80101
+ if (hasLastSeenUrl) {
80102
+ t5 = `Open ${plugin.displayName} (last visited)`;
80103
+ break bb0;
80104
+ }
80105
+ t5 = void 0;
80106
+ break bb0;
80107
+ }
80108
+ t5 = tabCount > 1 ? `Open ${plugin.displayName} (${tabCount} tabs)` : `Open ${plugin.displayName}`;
80109
+ }
80110
+ const tooltipText = t5;
80111
+ let t6;
79973
80112
  if ($2[8] !== plugin.name) {
79974
- t5 = () => {
80113
+ t6 = () => {
79975
80114
  openPluginTab(plugin.name);
79976
80115
  };
79977
80116
  $2[8] = plugin.name;
79978
- $2[9] = t5;
80117
+ $2[9] = t6;
79979
80118
  } else {
79980
- t5 = $2[9];
80119
+ t6 = $2[9];
79981
80120
  }
79982
- const handleOpenTab = t5;
80121
+ const handleOpenTab = t6;
79983
80122
  const renderToolList = (tools) => tools.map((tool) => /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(ToolRow, {
79984
80123
  name: tool.name,
79985
80124
  displayName: tool.displayName,
@@ -79991,23 +80130,23 @@ var PluginCard = (t0) => {
79991
80130
  muted: inactive,
79992
80131
  onPermissionChange: handleToolPermissionChange
79993
80132
  }, tool.name));
79994
- const t6 = `flex min-w-0 flex-1 items-center gap-1.5 truncate font-head text-sm ${inactive ? "text-muted-foreground" : "text-foreground"}`;
79995
- let t7;
80133
+ const t7 = `flex min-w-0 flex-1 items-center gap-1.5 truncate font-head text-sm ${inactive ? "text-muted-foreground" : "text-foreground"}`;
80134
+ let t8;
79996
80135
  if ($2[10] !== plugin.source) {
79997
- t7 = plugin.source === "local" && /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(Badge2, {
80136
+ t8 = plugin.source === "local" && /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(Badge2, {
79998
80137
  variant: "default",
79999
80138
  size: "sm",
80000
80139
  className: "align-middle",
80001
80140
  children: "DEV"
80002
80141
  });
80003
80142
  $2[10] = plugin.source;
80004
- $2[11] = t7;
80143
+ $2[11] = t8;
80005
80144
  } else {
80006
- t7 = $2[11];
80145
+ t8 = $2[11];
80007
80146
  }
80008
- let t8;
80147
+ let t9;
80009
80148
  if ($2[12] !== plugin.reviewed) {
80010
- t8 = !plugin.reviewed && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(TooltipObject, {
80149
+ t9 = !plugin.reviewed && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(TooltipObject, {
80011
80150
  children: [/* @__PURE__ */ (0, import_jsx_runtime51.jsx)(TooltipObject.Trigger, {
80012
80151
  asChild: true,
80013
80152
  children: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(ShieldQuestionMark, {
@@ -80018,103 +80157,103 @@ var PluginCard = (t0) => {
80018
80157
  })]
80019
80158
  });
80020
80159
  $2[12] = plugin.reviewed;
80021
- $2[13] = t8;
80160
+ $2[13] = t9;
80022
80161
  } else {
80023
- t8 = $2[13];
80162
+ t9 = $2[13];
80024
80163
  }
80025
- let t9;
80026
- if ($2[14] !== plugin.displayName || $2[15] !== t6 || $2[16] !== t7 || $2[17] !== t8) {
80027
- t9 = /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", {
80028
- className: t6,
80029
- children: [plugin.displayName, t7, t8]
80164
+ let t10;
80165
+ if ($2[14] !== plugin.displayName || $2[15] !== t7 || $2[16] !== t8 || $2[17] !== t9) {
80166
+ t10 = /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", {
80167
+ className: t7,
80168
+ children: [plugin.displayName, t8, t9]
80030
80169
  });
80031
80170
  $2[14] = plugin.displayName;
80032
- $2[15] = t6;
80033
- $2[16] = t7;
80034
- $2[17] = t8;
80035
- $2[18] = t9;
80171
+ $2[15] = t7;
80172
+ $2[16] = t8;
80173
+ $2[17] = t9;
80174
+ $2[18] = t10;
80036
80175
  } else {
80037
- t9 = $2[18];
80176
+ t10 = $2[18];
80038
80177
  }
80039
- const t10 = `h-4 w-4 shrink-0 transition-transform duration-200 ${inactive ? "text-muted-foreground" : ""}`;
80040
- let t11;
80041
- if ($2[19] !== t10) {
80042
- t11 = /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(ChevronDown, {
80043
- className: t10
80178
+ const t11 = `h-4 w-4 shrink-0 transition-transform duration-200 ${inactive ? "text-muted-foreground" : ""}`;
80179
+ let t12;
80180
+ if ($2[19] !== t11) {
80181
+ t12 = /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(ChevronDown, {
80182
+ className: t11
80044
80183
  });
80045
- $2[19] = t10;
80046
- $2[20] = t11;
80184
+ $2[19] = t11;
80185
+ $2[20] = t12;
80047
80186
  } else {
80048
- t11 = $2[20];
80187
+ t12 = $2[20];
80049
80188
  }
80050
- let t12;
80051
- if ($2[21] !== t11 || $2[22] !== t9) {
80052
- t12 = /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(Trigger2, {
80189
+ let t13;
80190
+ if ($2[21] !== t10 || $2[22] !== t12) {
80191
+ t13 = /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(Trigger2, {
80053
80192
  className: "focus-ring flex min-w-0 flex-1 cursor-pointer items-center gap-2 py-2 pr-0 pl-2 [&[data-state=open]>svg]:rotate-180",
80054
- children: [t9, t11]
80193
+ children: [t10, t12]
80055
80194
  });
80056
- $2[21] = t11;
80057
- $2[22] = t9;
80058
- $2[23] = t12;
80195
+ $2[21] = t10;
80196
+ $2[22] = t12;
80197
+ $2[23] = t13;
80059
80198
  } else {
80060
- t12 = $2[23];
80199
+ t13 = $2[23];
80061
80200
  }
80062
- const t13 = onUpdate ?? _temp9;
80063
- const t14 = onRemove ?? _temp26;
80064
- const t15 = updatingPlugin ?? false;
80065
- const t16 = removingPlugin ?? false;
80066
- let t17;
80067
- if ($2[24] !== inactive || $2[25] !== plugin || $2[26] !== t13 || $2[27] !== t14 || $2[28] !== t15 || $2[29] !== t16) {
80068
- t17 = /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(PluginMenu, {
80201
+ const t14 = onUpdate ?? _temp10;
80202
+ const t15 = onRemove ?? _temp26;
80203
+ const t16 = updatingPlugin ?? false;
80204
+ const t17 = removingPlugin ?? false;
80205
+ let t18;
80206
+ if ($2[24] !== inactive || $2[25] !== plugin || $2[26] !== t14 || $2[27] !== t15 || $2[28] !== t16 || $2[29] !== t17) {
80207
+ t18 = /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(PluginMenu, {
80069
80208
  plugin,
80070
- onUpdate: t13,
80071
- onRemove: t14,
80072
- updating: t15,
80073
- removing: t16,
80209
+ onUpdate: t14,
80210
+ onRemove: t15,
80211
+ updating: t16,
80212
+ removing: t17,
80074
80213
  muted: inactive,
80075
80214
  className: "flex shrink-0 items-center px-1"
80076
80215
  });
80077
80216
  $2[24] = inactive;
80078
80217
  $2[25] = plugin;
80079
- $2[26] = t13;
80080
- $2[27] = t14;
80081
- $2[28] = t15;
80082
- $2[29] = t16;
80083
- $2[30] = t17;
80218
+ $2[26] = t14;
80219
+ $2[27] = t15;
80220
+ $2[28] = t16;
80221
+ $2[29] = t17;
80222
+ $2[30] = t18;
80084
80223
  } else {
80085
- t17 = $2[30];
80224
+ t18 = $2[30];
80086
80225
  }
80087
- let t18;
80226
+ let t19;
80088
80227
  if ($2[31] !== toggleError) {
80089
- t18 = toggleError && /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(AlertComponent, {
80228
+ t19 = toggleError && /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(AlertComponent, {
80090
80229
  status: "error",
80091
80230
  className: "mx-3 mb-1 px-2 py-1 text-xs",
80092
80231
  children: toggleError
80093
80232
  });
80094
80233
  $2[31] = toggleError;
80095
- $2[32] = t18;
80234
+ $2[32] = t19;
80096
80235
  } else {
80097
- t18 = $2[32];
80236
+ t19 = $2[32];
80098
80237
  }
80099
- let t19;
80238
+ let t20;
80100
80239
  if ($2[33] !== actionError) {
80101
- t19 = actionError && /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(AlertComponent, {
80240
+ t20 = actionError && /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(AlertComponent, {
80102
80241
  status: "error",
80103
80242
  className: "mx-3 mb-1 px-2 py-1 text-xs",
80104
80243
  children: actionError
80105
80244
  });
80106
80245
  $2[33] = actionError;
80107
- $2[34] = t19;
80246
+ $2[34] = t20;
80108
80247
  } else {
80109
- t19 = $2[34];
80248
+ t20 = $2[34];
80110
80249
  }
80111
- const t20 = AccordionComponent;
80112
- const t21 = "border-border border-t";
80113
- const t22 = toolFilter && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", {
80250
+ const t21 = AccordionComponent;
80251
+ const t22 = "border-border border-t";
80252
+ const t23 = toolFilter && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", {
80114
80253
  className: "mb-1 px-3 pt-2 text-muted-foreground text-xs",
80115
80254
  children: [visibleTools.length, " of ", pluginTools.length, " tools"]
80116
80255
  });
80117
- const t23 = toolGroups !== null ? toolGroups.map((group) => /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", {
80256
+ const t24 = toolGroups !== null ? toolGroups.map((group) => /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", {
80118
80257
  className: "[&:not(:first-child)]:mt-2",
80119
80258
  children: [/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("div", {
80120
80259
  className: "border-border border-b border-l-2 border-l-primary bg-muted/30 px-3 py-1",
@@ -80124,83 +80263,83 @@ var PluginCard = (t0) => {
80124
80263
  })
80125
80264
  }), renderToolList(group.tools)]
80126
80265
  }, group.name)) : renderToolList(visibleTools);
80127
- let t24;
80128
- if ($2[35] !== t20.Content || $2[36] !== t22 || $2[37] !== t23) {
80129
- t24 = /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(t20.Content, {
80130
- className: t21,
80131
- children: [t22, t23]
80266
+ let t25;
80267
+ if ($2[35] !== t21.Content || $2[36] !== t23 || $2[37] !== t24) {
80268
+ t25 = /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(t21.Content, {
80269
+ className: t22,
80270
+ children: [t23, t24]
80132
80271
  });
80133
- $2[35] = t20.Content;
80134
- $2[36] = t22;
80135
- $2[37] = t23;
80136
- $2[38] = t24;
80272
+ $2[35] = t21.Content;
80273
+ $2[36] = t23;
80274
+ $2[37] = t24;
80275
+ $2[38] = t25;
80137
80276
  } else {
80138
- t24 = $2[38];
80277
+ t25 = $2[38];
80139
80278
  }
80140
- const t25 = pendingChange !== null;
80141
- let t26;
80279
+ const t26 = pendingChange !== null;
80280
+ let t27;
80142
80281
  if ($2[39] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
80143
- t26 = (open) => !open && setPendingChange(null);
80144
- $2[39] = t26;
80282
+ t27 = (open) => !open && setPendingChange(null);
80283
+ $2[39] = t27;
80145
80284
  } else {
80146
- t26 = $2[39];
80285
+ t27 = $2[39];
80147
80286
  }
80148
- let t27;
80287
+ let t28;
80149
80288
  if ($2[40] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
80150
- t27 = /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(DialogObject.Header, {
80289
+ t28 = /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(DialogObject.Header, {
80151
80290
  children: "Unreviewed Plugin"
80152
80291
  });
80153
- $2[40] = t27;
80292
+ $2[40] = t28;
80154
80293
  } else {
80155
- t27 = $2[40];
80294
+ t28 = $2[40];
80156
80295
  }
80157
- let t28;
80296
+ let t29;
80158
80297
  if ($2[41] !== plugin.displayName || $2[42] !== plugin.version) {
80159
- t28 = /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("p", {
80298
+ t29 = /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("p", {
80160
80299
  className: "font-mono text-foreground text-sm",
80161
80300
  children: [plugin.displayName, " v", plugin.version]
80162
80301
  });
80163
80302
  $2[41] = plugin.displayName;
80164
80303
  $2[42] = plugin.version;
80165
- $2[43] = t28;
80304
+ $2[43] = t29;
80166
80305
  } else {
80167
- t28 = $2[43];
80306
+ t29 = $2[43];
80168
80307
  }
80169
- let t29;
80308
+ let t30;
80170
80309
  if ($2[44] !== plugin.name) {
80171
- t29 = /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("p", {
80310
+ t30 = /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("p", {
80172
80311
  className: "mt-2 text-foreground text-sm",
80173
80312
  children: ["This plugin version has not been reviewed. You can ask your AI agent to review the adapter code by saying \u201Creview the ", plugin.name, " plugin\u201D in your chat."]
80174
80313
  });
80175
80314
  $2[44] = plugin.name;
80176
- $2[45] = t29;
80315
+ $2[45] = t30;
80177
80316
  } else {
80178
- t29 = $2[45];
80317
+ t30 = $2[45];
80179
80318
  }
80180
- let t30;
80319
+ let t31;
80181
80320
  if ($2[46] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
80182
- t30 = /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("p", {
80321
+ t31 = /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("p", {
80183
80322
  className: "mt-2 text-muted-foreground text-xs",
80184
80323
  children: "You can also enable it now without review."
80185
80324
  });
80186
- $2[46] = t30;
80325
+ $2[46] = t31;
80187
80326
  } else {
80188
- t30 = $2[46];
80327
+ t31 = $2[46];
80189
80328
  }
80190
- let t31;
80191
- if ($2[47] !== t28 || $2[48] !== t29) {
80192
- t31 = /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(DialogObject.Body, {
80193
- children: [t28, t29, t30]
80329
+ let t32;
80330
+ if ($2[47] !== t29 || $2[48] !== t30) {
80331
+ t32 = /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(DialogObject.Body, {
80332
+ children: [t29, t30, t31]
80194
80333
  });
80195
- $2[47] = t28;
80196
- $2[48] = t29;
80197
- $2[49] = t31;
80334
+ $2[47] = t29;
80335
+ $2[48] = t30;
80336
+ $2[49] = t32;
80198
80337
  } else {
80199
- t31 = $2[49];
80338
+ t32 = $2[49];
80200
80339
  }
80201
- let t32;
80340
+ let t33;
80202
80341
  if ($2[50] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
80203
- t32 = /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(DialogObject.Close, {
80342
+ t33 = /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(DialogObject.Close, {
80204
80343
  asChild: true,
80205
80344
  children: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(Button, {
80206
80345
  size: "sm",
@@ -80208,48 +80347,48 @@ var PluginCard = (t0) => {
80208
80347
  children: "Cancel"
80209
80348
  })
80210
80349
  });
80211
- $2[50] = t32;
80350
+ $2[50] = t33;
80212
80351
  } else {
80213
- t32 = $2[50];
80352
+ t33 = $2[50];
80214
80353
  }
80215
- let t33;
80354
+ let t34;
80216
80355
  if ($2[51] !== handleEnableAnyway) {
80217
- t33 = /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(DialogObject.Footer, {
80218
- children: [t32, /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(Button, {
80356
+ t34 = /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(DialogObject.Footer, {
80357
+ children: [t33, /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(Button, {
80219
80358
  size: "sm",
80220
80359
  onClick: handleEnableAnyway,
80221
80360
  children: "Enable Anyway"
80222
80361
  })]
80223
80362
  });
80224
80363
  $2[51] = handleEnableAnyway;
80225
- $2[52] = t33;
80364
+ $2[52] = t34;
80226
80365
  } else {
80227
- t33 = $2[52];
80366
+ t34 = $2[52];
80228
80367
  }
80229
- let t34;
80230
- if ($2[53] !== t31 || $2[54] !== t33) {
80231
- t34 = /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(DialogObject.Content, {
80368
+ let t35;
80369
+ if ($2[53] !== t32 || $2[54] !== t34) {
80370
+ t35 = /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(DialogObject.Content, {
80232
80371
  onInteractOutside: _temp35,
80233
- children: [t27, t31, t33]
80372
+ children: [t28, t32, t34]
80234
80373
  });
80235
- $2[53] = t31;
80236
- $2[54] = t33;
80237
- $2[55] = t34;
80374
+ $2[53] = t32;
80375
+ $2[54] = t34;
80376
+ $2[55] = t35;
80238
80377
  } else {
80239
- t34 = $2[55];
80378
+ t35 = $2[55];
80240
80379
  }
80241
- let t35;
80242
- if ($2[56] !== t25 || $2[57] !== t34) {
80243
- t35 = /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(DialogObject, {
80244
- open: t25,
80245
- onOpenChange: t26,
80246
- children: t34
80380
+ let t36;
80381
+ if ($2[56] !== t26 || $2[57] !== t35) {
80382
+ t36 = /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(DialogObject, {
80383
+ open: t26,
80384
+ onOpenChange: t27,
80385
+ children: t35
80247
80386
  });
80248
- $2[56] = t25;
80249
- $2[57] = t34;
80250
- $2[58] = t35;
80387
+ $2[56] = t26;
80388
+ $2[57] = t35;
80389
+ $2[58] = t36;
80251
80390
  } else {
80252
- t35 = $2[58];
80391
+ t36 = $2[58];
80253
80392
  }
80254
80393
  return /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(AccordionComponent.Item, {
80255
80394
  value: plugin.name,
@@ -80293,7 +80432,7 @@ var PluginCard = (t0) => {
80293
80432
  iconDarkInactiveSvg: plugin.iconDarkInactiveSvg,
80294
80433
  active: hasActiveTool
80295
80434
  })
80296
- }), t12, t17, /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("div", {
80435
+ }), t13, t18, /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("div", {
80297
80436
  className: "flex shrink-0 items-center px-3",
80298
80437
  children: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(PermissionSelect, {
80299
80438
  value: plugin.permission,
@@ -80303,10 +80442,10 @@ var PluginCard = (t0) => {
80303
80442
  ariaLabel: `Permission for ${plugin.name} plugin`
80304
80443
  })
80305
80444
  })]
80306
- }), t18, t19, t24, t35]
80445
+ }), t19, t20, t25, t36]
80307
80446
  });
80308
80447
  };
80309
- function _temp9() {
80448
+ function _temp10() {
80310
80449
  }
80311
80450
  function _temp26() {
80312
80451
  }
@@ -80505,7 +80644,7 @@ var PluginList = (t0) => {
80505
80644
  openReady,
80506
80645
  openNotReady
80507
80646
  }
80508
- }).catch(_temp10);
80647
+ }).catch(_temp11);
80509
80648
  }, [openReady, openNotReady, filterLower]);
80510
80649
  let t5;
80511
80650
  let t6;
@@ -80699,7 +80838,7 @@ var PluginList = (t0) => {
80699
80838
  }
80700
80839
  return t10;
80701
80840
  };
80702
- function _temp10() {
80841
+ function _temp11() {
80703
80842
  }
80704
80843
 
80705
80844
  // src/side-panel/components/retro/Input.tsx
@@ -80817,7 +80956,7 @@ var NpmPluginCard = (t0) => {
80817
80956
  target: "_blank",
80818
80957
  rel: "noopener noreferrer",
80819
80958
  className: "truncate font-head text-foreground text-sm hover:underline",
80820
- onClick: _temp11,
80959
+ onClick: _temp12,
80821
80960
  children: displayName
80822
80961
  });
80823
80962
  $2[5] = displayName;
@@ -80952,7 +81091,7 @@ var NpmPluginCard = (t0) => {
80952
81091
  return t14;
80953
81092
  };
80954
81093
  NpmPluginCard.displayName = "NpmPluginCard";
80955
- function _temp11(e2) {
81094
+ function _temp12(e2) {
80956
81095
  return e2.stopPropagation();
80957
81096
  }
80958
81097
 
@@ -80978,7 +81117,7 @@ var SectionHeader = (t0) => {
80978
81117
  };
80979
81118
  var matchesBrowserTool = (tool, filterLower) => toDisplayName(tool.name).toLowerCase().includes(filterLower) || tool.name.toLowerCase().includes(filterLower) || tool.description.toLowerCase().includes(filterLower);
80980
81119
  var SearchResults = (t0) => {
80981
- const $2 = (0, import_compiler_runtime29.c)(62);
81120
+ const $2 = (0, import_compiler_runtime29.c)(61);
80982
81121
  const {
80983
81122
  plugins,
80984
81123
  failedPlugins,
@@ -81025,7 +81164,7 @@ var SearchResults = (t0) => {
81025
81164
  const hasBrowserToolMatches = t2;
81026
81165
  let t3;
81027
81166
  if ($2[7] !== plugins) {
81028
- t3 = new Set(plugins.map(_temp12));
81167
+ t3 = new Set(plugins.map(_temp13));
81029
81168
  $2[7] = plugins;
81030
81169
  $2[8] = t3;
81031
81170
  } else {
@@ -81157,45 +81296,44 @@ var SearchResults = (t0) => {
81157
81296
  t6 = $2[34];
81158
81297
  }
81159
81298
  let t7;
81160
- if ($2[54] !== showNoResults || $2[55] !== toolFilter) {
81299
+ if ($2[54] !== showNoResults) {
81161
81300
  t7 = showNoResults && /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(EmptyComponent, {
81162
81301
  className: "border-muted",
81163
81302
  children: /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(EmptyComponent.Content, {
81164
81303
  children: [/* @__PURE__ */ (0, import_jsx_runtime55.jsx)(EmptyComponent.Icon, {
81165
81304
  className: "h-10 w-10 text-muted-foreground"
81166
- }), /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(EmptyComponent.Title, {
81305
+ }), /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(EmptyComponent.Title, {
81167
81306
  className: "text-base",
81168
- children: ["No results for \u201C", toolFilter, "\u201D"]
81307
+ children: "No plugins found"
81169
81308
  }), /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(EmptyComponent.Separator, {}), /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(EmptyComponent.Description, {
81170
81309
  className: "text-xs",
81171
- children: "Try searching by plugin name, tool name, or description."
81310
+ children: "Can\u2019t find what you\u2019re looking for? Ask your AI assistant to build a custom plugin for you \u2014 it only takes a minute."
81172
81311
  })]
81173
81312
  })
81174
81313
  });
81175
81314
  $2[54] = showNoResults;
81176
- $2[55] = toolFilter;
81177
- $2[56] = t7;
81315
+ $2[55] = t7;
81178
81316
  } else {
81179
- t7 = $2[56];
81317
+ t7 = $2[55];
81180
81318
  }
81181
81319
  let t8;
81182
- if ($2[57] !== t4 || $2[58] !== t5 || $2[59] !== t6 || $2[60] !== t7) {
81320
+ if ($2[56] !== t4 || $2[57] !== t5 || $2[58] !== t6 || $2[59] !== t7) {
81183
81321
  t8 = /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)("div", {
81184
81322
  className: t4,
81185
81323
  children: [t5, t6, t7]
81186
81324
  });
81187
- $2[57] = t4;
81188
- $2[58] = t5;
81189
- $2[59] = t6;
81190
- $2[60] = t7;
81191
- $2[61] = t8;
81325
+ $2[56] = t4;
81326
+ $2[57] = t5;
81327
+ $2[58] = t6;
81328
+ $2[59] = t7;
81329
+ $2[60] = t8;
81192
81330
  } else {
81193
- t8 = $2[61];
81331
+ t8 = $2[60];
81194
81332
  }
81195
81333
  return t8;
81196
81334
  };
81197
81335
  SearchResults.displayName = "SearchResults";
81198
- function _temp12(p_1) {
81336
+ function _temp13(p_1) {
81199
81337
  return extractShortName(p_1.name);
81200
81338
  }
81201
81339
 
@@ -81329,7 +81467,7 @@ var useServerNotifications = (t0) => {
81329
81467
  // src/side-panel/App.tsx
81330
81468
  var import_jsx_runtime56 = __toESM(require_jsx_runtime(), 1);
81331
81469
  var App = () => {
81332
- const $2 = (0, import_compiler_runtime31.c)(73);
81470
+ const $2 = (0, import_compiler_runtime31.c)(74);
81333
81471
  const [connected, setConnected] = (0, import_react23.useState)(false);
81334
81472
  const [disconnectReason, setDisconnectReason] = (0, import_react23.useState)();
81335
81473
  let t0;
@@ -81352,6 +81490,7 @@ var App = () => {
81352
81490
  const [browserPermission, setBrowserPermission] = (0, import_react23.useState)("off");
81353
81491
  const [skipPermissions, setSkipPermissions2] = (0, import_react23.useState)(false);
81354
81492
  const [serverVersion, setServerVersion] = (0, import_react23.useState)(void 0);
81493
+ const [serverSourcePath, setServerSourcePath] = (0, import_react23.useState)(void 0);
81355
81494
  const [loading, setLoading] = (0, import_react23.useState)(true);
81356
81495
  let t2;
81357
81496
  if ($2[2] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
@@ -81702,6 +81841,7 @@ var App = () => {
81702
81841
  setBrowserPermission(result_1.browserPermission ?? "off");
81703
81842
  setSkipPermissions2(result_1.skipPermissions ?? false);
81704
81843
  setServerVersion(result_1.serverVersion);
81844
+ setServerSourcePath(result_1.serverSourcePath);
81705
81845
  setActiveTools((prev_13) => {
81706
81846
  const next_8 = /* @__PURE__ */ new Set();
81707
81847
  for (const key of prev_13) {
@@ -81758,6 +81898,7 @@ var App = () => {
81758
81898
  setBrowserPermission("off");
81759
81899
  setSkipPermissions2(false);
81760
81900
  setServerVersion(void 0);
81901
+ setServerSourcePath(void 0);
81761
81902
  setActiveTools(/* @__PURE__ */ new Set());
81762
81903
  setPendingConfirmations([]);
81763
81904
  setSearchQuery("");
@@ -81919,7 +82060,7 @@ var App = () => {
81919
82060
  }
81920
82061
  const t33 = `px-4 pb-4 ${showSearchBar ? "pt-2" : "pt-4"} ${showPlugins ? "" : "flex min-h-full items-center justify-center"}`;
81921
82062
  let t34;
81922
- if ($2[42] !== activeTools || $2[43] !== browserPermission || $2[44] !== browserTools || $2[45] !== browserToolsHydrated || $2[46] !== browserToolsOpen || $2[47] !== connected || $2[48] !== disconnectReason || $2[49] !== failedPlugins || $2[50] !== hasContent || $2[51] !== installErrors || $2[52] !== installingPlugins || $2[53] !== loading || $2[54] !== npmResults || $2[55] !== npmSearchError || $2[56] !== npmSearching || $2[57] !== pluginErrors || $2[58] !== plugins || $2[59] !== removingFailedPlugins || $2[60] !== removingPlugins || $2[61] !== searchQuery || $2[62] !== serverVersion) {
82063
+ if ($2[42] !== activeTools || $2[43] !== browserPermission || $2[44] !== browserTools || $2[45] !== browserToolsHydrated || $2[46] !== browserToolsOpen || $2[47] !== connected || $2[48] !== disconnectReason || $2[49] !== failedPlugins || $2[50] !== hasContent || $2[51] !== installErrors || $2[52] !== installingPlugins || $2[53] !== loading || $2[54] !== npmResults || $2[55] !== npmSearchError || $2[56] !== npmSearching || $2[57] !== pluginErrors || $2[58] !== plugins || $2[59] !== removingFailedPlugins || $2[60] !== removingPlugins || $2[61] !== searchQuery || $2[62] !== serverSourcePath || $2[63] !== serverVersion) {
81923
82064
  t34 = loading ? /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(LoadingState, {}) : !connected ? /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(DisconnectedState, {
81924
82065
  reason: disconnectReason
81925
82066
  }) : searchQuery ? /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(SearchResults, {
@@ -81960,6 +82101,7 @@ var App = () => {
81960
82101
  activeTools,
81961
82102
  onToolsChange: setBrowserTools,
81962
82103
  serverVersion,
82104
+ serverSourcePath,
81963
82105
  browserPermission,
81964
82106
  onBrowserPermissionChange: setBrowserPermission
81965
82107
  })
@@ -81982,7 +82124,7 @@ var App = () => {
81982
82124
  children: [/* @__PURE__ */ (0, import_jsx_runtime56.jsx)(EmptyComponent.Icon, {
81983
82125
  className: "h-10 w-10 text-muted-foreground",
81984
82126
  children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(Package, {
81985
- className: "h-full w-full"
82127
+ size: 40
81986
82128
  })
81987
82129
  }), /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(EmptyComponent.Title, {
81988
82130
  className: "text-base",
@@ -82014,13 +82156,14 @@ var App = () => {
82014
82156
  $2[59] = removingFailedPlugins;
82015
82157
  $2[60] = removingPlugins;
82016
82158
  $2[61] = searchQuery;
82017
- $2[62] = serverVersion;
82018
- $2[63] = t34;
82159
+ $2[62] = serverSourcePath;
82160
+ $2[63] = serverVersion;
82161
+ $2[64] = t34;
82019
82162
  } else {
82020
- t34 = $2[63];
82163
+ t34 = $2[64];
82021
82164
  }
82022
82165
  let t35;
82023
- if ($2[64] !== t33 || $2[65] !== t34) {
82166
+ if ($2[65] !== t33 || $2[66] !== t34) {
82024
82167
  t35 = /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(g2, {
82025
82168
  className: "flex-1",
82026
82169
  style: t31,
@@ -82030,45 +82173,45 @@ var App = () => {
82030
82173
  children: t34
82031
82174
  })
82032
82175
  });
82033
- $2[64] = t33;
82034
- $2[65] = t34;
82035
- $2[66] = t35;
82176
+ $2[65] = t33;
82177
+ $2[66] = t34;
82178
+ $2[67] = t35;
82036
82179
  } else {
82037
- t35 = $2[66];
82180
+ t35 = $2[67];
82038
82181
  }
82039
82182
  let t36;
82040
- if ($2[67] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
82183
+ if ($2[68] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
82041
82184
  t36 = /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(Footer, {});
82042
- $2[67] = t36;
82185
+ $2[68] = t36;
82043
82186
  } else {
82044
- t36 = $2[67];
82187
+ t36 = $2[68];
82045
82188
  }
82046
82189
  let t37;
82047
- if ($2[68] !== t28 || $2[69] !== t29 || $2[70] !== t30 || $2[71] !== t35) {
82190
+ if ($2[69] !== t28 || $2[70] !== t29 || $2[71] !== t30 || $2[72] !== t35) {
82048
82191
  t37 = /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(TooltipObject.Provider, {
82049
82192
  children: /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)("div", {
82050
82193
  className: "flex h-screen flex-col overflow-hidden text-foreground",
82051
82194
  children: [t28, t29, t30, t35, t36]
82052
82195
  })
82053
82196
  });
82054
- $2[68] = t28;
82055
- $2[69] = t29;
82056
- $2[70] = t30;
82057
- $2[71] = t35;
82058
- $2[72] = t37;
82197
+ $2[69] = t28;
82198
+ $2[70] = t29;
82199
+ $2[71] = t30;
82200
+ $2[72] = t35;
82201
+ $2[73] = t37;
82059
82202
  } else {
82060
- t37 = $2[72];
82203
+ t37 = $2[73];
82061
82204
  }
82062
82205
  return t37;
82063
82206
  };
82064
- function _temp13(t2) {
82207
+ function _temp14(t2) {
82065
82208
  return {
82066
82209
  ...t2,
82067
82210
  permission: "auto"
82068
82211
  };
82069
82212
  }
82070
82213
  function _temp27() {
82071
- return BROWSER_TOOLS_CATALOG.map(_temp13);
82214
+ return BROWSER_TOOLS_CATALOG.map(_temp14);
82072
82215
  }
82073
82216
  function _temp36(t_0) {
82074
82217
  return {