@opentabs-dev/browser-extension 0.0.76 → 0.0.77

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 (34) 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 +15 -1
  4. package/dist/background-message-handlers.js.map +1 -1
  5. package/dist/background.js +54 -8
  6. package/dist/extension-messages.d.ts +8 -1
  7. package/dist/extension-messages.d.ts.map +1 -1
  8. package/dist/iife-injection.d.ts +1 -1
  9. package/dist/iife-injection.d.ts.map +1 -1
  10. package/dist/iife-injection.js +30 -5
  11. package/dist/iife-injection.js.map +1 -1
  12. package/dist/message-router.d.ts +4 -1
  13. package/dist/message-router.d.ts.map +1 -1
  14. package/dist/message-router.js +25 -2
  15. package/dist/message-router.js.map +1 -1
  16. package/dist/side-panel/bridge.d.ts +3 -1
  17. package/dist/side-panel/bridge.d.ts.map +1 -1
  18. package/dist/side-panel/bridge.js +3 -1
  19. package/dist/side-panel/bridge.js.map +1 -1
  20. package/dist/side-panel/components/ConfigDialog.d.ts +14 -0
  21. package/dist/side-panel/components/ConfigDialog.d.ts.map +1 -0
  22. package/dist/side-panel/components/ConfigDialog.js +97 -0
  23. package/dist/side-panel/components/ConfigDialog.js.map +1 -0
  24. package/dist/side-panel/components/PluginCard.d.ts.map +1 -1
  25. package/dist/side-panel/components/PluginCard.js +8 -5
  26. package/dist/side-panel/components/PluginCard.js.map +1 -1
  27. package/dist/side-panel/components/PluginMenu.d.ts +3 -1
  28. package/dist/side-panel/components/PluginMenu.d.ts.map +1 -1
  29. package/dist/side-panel/components/PluginMenu.js +3 -3
  30. package/dist/side-panel/components/PluginMenu.js.map +1 -1
  31. package/dist/side-panel/side-panel.js +972 -598
  32. package/dist/side-panel/styles.css +1 -1
  33. package/manifest.json +1 -1
  34. package/package.json +12 -1
@@ -58800,11 +58800,11 @@ var require_jsx_runtime = __commonJS({
58800
58800
  });
58801
58801
 
58802
58802
  // src/side-panel/index.tsx
58803
- var import_react25 = __toESM(require_react(), 1);
58803
+ var import_react26 = __toESM(require_react(), 1);
58804
58804
  var import_client = __toESM(require_client(), 1);
58805
58805
 
58806
58806
  // src/side-panel/App.tsx
58807
- var import_compiler_runtime31 = __toESM(require_compiler_runtime(), 1);
58807
+ var import_compiler_runtime32 = __toESM(require_compiler_runtime(), 1);
58808
58808
 
58809
58809
  // ../shared/dist/generated/browser-tools-catalog.js
58810
58810
  var BROWSER_TOOLS_CATALOG = [{
@@ -59057,6 +59057,7 @@ init_triangle_alert();
59057
59057
  init_check();
59058
59058
  init_chevron_down();
59059
59059
  init_chevron_up();
59060
+ init_cog();
59060
59061
  init_copy();
59061
59062
  init_folder_open();
59062
59063
  init_ghost();
@@ -59064,6 +59065,7 @@ init_key_round();
59064
59065
  init_moon();
59065
59066
  init_package();
59066
59067
  init_search();
59068
+ init_settings();
59067
59069
  init_shield_off();
59068
59070
  init_sun();
59069
59071
  init_trash_2();
@@ -61737,7 +61739,7 @@ var q2 = (l2, o2) => {
61737
61739
  var g2 = (0, import_react3.forwardRef)(q2);
61738
61740
 
61739
61741
  // src/side-panel/App.tsx
61740
- var import_react23 = __toESM(require_react(), 1);
61742
+ var import_react24 = __toESM(require_react(), 1);
61741
61743
 
61742
61744
  // src/side-panel/bridge.ts
61743
61745
  var matchesTool = (tool, filterLower) => tool.displayName.toLowerCase().includes(filterLower) || tool.name.toLowerCase().includes(filterLower) || tool.description.toLowerCase().includes(filterLower);
@@ -61801,6 +61803,11 @@ var openPluginTab = (pluginName) => sendBgMessage({
61801
61803
  type: "bg:openPluginTab",
61802
61804
  pluginName
61803
61805
  });
61806
+ var setPluginSettings = (plugin, settings) => sendBgMessage({
61807
+ type: "bg:setPluginSettings",
61808
+ plugin,
61809
+ settings
61810
+ });
61804
61811
  var openFolder = (path) => sendBgMessage({
61805
61812
  type: "bg:openFolder",
61806
61813
  path
@@ -79732,8 +79739,8 @@ function _temp34(value) {
79732
79739
  }
79733
79740
 
79734
79741
  // src/side-panel/components/PluginList.tsx
79735
- var import_compiler_runtime26 = __toESM(require_compiler_runtime(), 1);
79736
- var import_react21 = __toESM(require_react(), 1);
79742
+ var import_compiler_runtime28 = __toESM(require_compiler_runtime(), 1);
79743
+ var import_react22 = __toESM(require_react(), 1);
79737
79744
 
79738
79745
  // src/side-panel/group-transitions.ts
79739
79746
  var FADE_IN_MS = 200;
@@ -79999,15 +80006,360 @@ var FailedPluginCard = (t0) => {
79999
80006
  };
80000
80007
 
80001
80008
  // src/side-panel/components/PluginCard.tsx
80002
- var import_compiler_runtime25 = __toESM(require_compiler_runtime(), 1);
80003
- var import_react20 = __toESM(require_react(), 1);
80009
+ var import_compiler_runtime27 = __toESM(require_compiler_runtime(), 1);
80010
+ var import_react21 = __toESM(require_react(), 1);
80004
80011
 
80005
- // src/side-panel/components/PluginMenu.tsx
80006
- var import_compiler_runtime23 = __toESM(require_compiler_runtime(), 1);
80012
+ // src/side-panel/components/ConfigDialog.tsx
80013
+ var import_compiler_runtime24 = __toESM(require_compiler_runtime(), 1);
80007
80014
  var import_react19 = __toESM(require_react(), 1);
80015
+
80016
+ // src/side-panel/components/retro/Input.tsx
80017
+ var import_compiler_runtime23 = __toESM(require_compiler_runtime(), 1);
80008
80018
  var import_jsx_runtime52 = __toESM(require_jsx_runtime(), 1);
80019
+ var Input = (t0) => {
80020
+ const $2 = (0, import_compiler_runtime23.c)(17);
80021
+ let ariaInvalid;
80022
+ let className;
80023
+ let props;
80024
+ let ref;
80025
+ let t1;
80026
+ let t2;
80027
+ if ($2[0] !== t0) {
80028
+ ({
80029
+ type: t1,
80030
+ placeholder: t2,
80031
+ className,
80032
+ "aria-invalid": ariaInvalid,
80033
+ ref,
80034
+ ...props
80035
+ } = t0);
80036
+ $2[0] = t0;
80037
+ $2[1] = ariaInvalid;
80038
+ $2[2] = className;
80039
+ $2[3] = props;
80040
+ $2[4] = ref;
80041
+ $2[5] = t1;
80042
+ $2[6] = t2;
80043
+ } else {
80044
+ ariaInvalid = $2[1];
80045
+ className = $2[2];
80046
+ props = $2[3];
80047
+ ref = $2[4];
80048
+ t1 = $2[5];
80049
+ t2 = $2[6];
80050
+ }
80051
+ const type = t1 === void 0 ? "text" : t1;
80052
+ const placeholder = t2 === void 0 ? "Enter text" : t2;
80053
+ const t3 = ariaInvalid && "border-destructive text-destructive shadow-destructive shadow-xs";
80054
+ let t4;
80055
+ if ($2[7] !== className || $2[8] !== t3) {
80056
+ t4 = cn("w-full rounded border-2 px-4 py-2 shadow-md transition focus:shadow-xs focus:outline-hidden", t3, className);
80057
+ $2[7] = className;
80058
+ $2[8] = t3;
80059
+ $2[9] = t4;
80060
+ } else {
80061
+ t4 = $2[9];
80062
+ }
80063
+ let t5;
80064
+ if ($2[10] !== ariaInvalid || $2[11] !== placeholder || $2[12] !== props || $2[13] !== ref || $2[14] !== t4 || $2[15] !== type) {
80065
+ t5 = /* @__PURE__ */ (0, import_jsx_runtime52.jsx)("input", {
80066
+ ref,
80067
+ type,
80068
+ placeholder,
80069
+ "aria-invalid": ariaInvalid,
80070
+ className: t4,
80071
+ ...props
80072
+ });
80073
+ $2[10] = ariaInvalid;
80074
+ $2[11] = placeholder;
80075
+ $2[12] = props;
80076
+ $2[13] = ref;
80077
+ $2[14] = t4;
80078
+ $2[15] = type;
80079
+ $2[16] = t5;
80080
+ } else {
80081
+ t5 = $2[16];
80082
+ }
80083
+ return t5;
80084
+ };
80085
+
80086
+ // src/side-panel/components/ConfigDialog.tsx
80087
+ var import_jsx_runtime53 = __toESM(require_jsx_runtime(), 1);
80088
+ var isValidUrl = (value) => {
80089
+ try {
80090
+ new URL(value);
80091
+ return true;
80092
+ } catch {
80093
+ return false;
80094
+ }
80095
+ };
80096
+ var ConfigDialog = (t0) => {
80097
+ const $2 = (0, import_compiler_runtime24.c)(28);
80098
+ const {
80099
+ open,
80100
+ onOpenChange,
80101
+ pluginName,
80102
+ displayName,
80103
+ configSchema,
80104
+ resolvedSettings
80105
+ } = t0;
80106
+ let t1;
80107
+ if ($2[0] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
80108
+ t1 = {};
80109
+ $2[0] = t1;
80110
+ } else {
80111
+ t1 = $2[0];
80112
+ }
80113
+ const [errors, setErrors] = (0, import_react19.useState)(t1);
80114
+ const [saving, setSaving] = (0, import_react19.useState)(false);
80115
+ const [saveError, setSaveError] = (0, import_react19.useState)(null);
80116
+ const formRef = (0, import_react19.useRef)(null);
80117
+ const entries = Object.entries(configSchema);
80118
+ const handleSave = () => {
80119
+ const form = formRef.current;
80120
+ if (!form) {
80121
+ return;
80122
+ }
80123
+ const newErrors = {};
80124
+ const settings = {};
80125
+ for (const [key, def] of entries) {
80126
+ if (def.type === "boolean") {
80127
+ const checkbox = form.querySelector(`[data-key="${key}"]`);
80128
+ settings[key] = checkbox?.getAttribute("data-state") === "checked";
80129
+ continue;
80130
+ }
80131
+ const input = form.elements.namedItem(key);
80132
+ if (!input) {
80133
+ continue;
80134
+ }
80135
+ const rawValue = "value" in input ? input.value : "";
80136
+ if (def.type === "select") {
80137
+ if (def.required && !rawValue) {
80138
+ newErrors[key] = "Required";
80139
+ } else {
80140
+ if (rawValue) {
80141
+ settings[key] = rawValue;
80142
+ }
80143
+ }
80144
+ continue;
80145
+ }
80146
+ const trimmed = rawValue.trim();
80147
+ if (def.required && !trimmed) {
80148
+ newErrors[key] = "Required";
80149
+ continue;
80150
+ }
80151
+ if (!trimmed) {
80152
+ continue;
80153
+ }
80154
+ if (def.type === "url" && !isValidUrl(trimmed)) {
80155
+ newErrors[key] = "Must be a valid URL";
80156
+ continue;
80157
+ }
80158
+ if (def.type === "number") {
80159
+ const num = Number(trimmed);
80160
+ if (Number.isNaN(num)) {
80161
+ newErrors[key] = "Must be a number";
80162
+ continue;
80163
+ }
80164
+ settings[key] = num;
80165
+ continue;
80166
+ }
80167
+ settings[key] = trimmed;
80168
+ }
80169
+ setErrors(newErrors);
80170
+ if (Object.keys(newErrors).length > 0) {
80171
+ return;
80172
+ }
80173
+ setSaving(true);
80174
+ setSaveError(null);
80175
+ setPluginSettings(pluginName, settings).then(() => {
80176
+ onOpenChange(false);
80177
+ }).catch((err) => {
80178
+ setSaveError(err instanceof Error ? err.message : "Failed to save settings");
80179
+ }).finally(() => {
80180
+ setSaving(false);
80181
+ });
80182
+ };
80183
+ const T0 = DialogObject;
80184
+ const t2 = DialogObject;
80185
+ let t3;
80186
+ if ($2[1] !== displayName) {
80187
+ t3 = /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(DialogObject.Header, {
80188
+ children: ["Settings \u2014 ", displayName]
80189
+ });
80190
+ $2[1] = displayName;
80191
+ $2[2] = t3;
80192
+ } else {
80193
+ t3 = $2[2];
80194
+ }
80195
+ const t4 = DialogObject;
80196
+ const t5 = _temp9;
80197
+ const t6 = "flex flex-col gap-3";
80198
+ const t8 = entries.map((t7) => {
80199
+ const [key_0, def_0] = t7;
80200
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("div", {
80201
+ className: "flex flex-col gap-1",
80202
+ children: [/* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("label", {
80203
+ htmlFor: `config-${key_0}`,
80204
+ className: "font-mono text-foreground text-xs",
80205
+ children: [def_0.label, def_0.required && /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("span", {
80206
+ className: "text-destructive",
80207
+ children: " *"
80208
+ })]
80209
+ }), def_0.description && /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("p", {
80210
+ className: "text-[11px] text-muted-foreground",
80211
+ children: def_0.description
80212
+ }), def_0.type === "boolean" ? /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(Switch2, {
80213
+ id: `config-${key_0}`,
80214
+ "data-key": key_0,
80215
+ defaultChecked: resolvedSettings?.[key_0] === true
80216
+ }) : def_0.type === "select" && def_0.options ? /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(SelectObj, {
80217
+ name: key_0,
80218
+ defaultValue: String(resolvedSettings?.[key_0] ?? ""),
80219
+ children: [/* @__PURE__ */ (0, import_jsx_runtime53.jsx)(SelectObj.Trigger, {
80220
+ id: `config-${key_0}`,
80221
+ className: "h-8 min-w-0 text-sm",
80222
+ children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(SelectObj.Value, {
80223
+ placeholder: "Select..."
80224
+ })
80225
+ }), /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(SelectObj.Content, {
80226
+ children: def_0.options.map(_temp25)
80227
+ })]
80228
+ }) : /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(Input, {
80229
+ id: `config-${key_0}`,
80230
+ name: key_0,
80231
+ type: def_0.type === "number" ? "number" : "text",
80232
+ placeholder: def_0.placeholder ?? "",
80233
+ defaultValue: resolvedSettings?.[key_0] != null ? String(resolvedSettings[key_0]) : "",
80234
+ "aria-invalid": Boolean(errors[key_0]),
80235
+ className: "py-1.5 text-sm"
80236
+ }), errors[key_0] && /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("p", {
80237
+ className: "text-[11px] text-destructive",
80238
+ children: errors[key_0]
80239
+ })]
80240
+ }, key_0);
80241
+ });
80242
+ let t9;
80243
+ if ($2[3] !== formRef || $2[4] !== t5 || $2[5] !== t8) {
80244
+ t9 = /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("form", {
80245
+ ref: formRef,
80246
+ onSubmit: t5,
80247
+ className: t6,
80248
+ children: t8
80249
+ });
80250
+ $2[3] = formRef;
80251
+ $2[4] = t5;
80252
+ $2[5] = t8;
80253
+ $2[6] = t9;
80254
+ } else {
80255
+ t9 = $2[6];
80256
+ }
80257
+ let t10;
80258
+ if ($2[7] !== saveError) {
80259
+ t10 = saveError && /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(AlertComponent, {
80260
+ status: "error",
80261
+ className: "mt-3 px-2 py-1 text-xs",
80262
+ children: saveError
80263
+ });
80264
+ $2[7] = saveError;
80265
+ $2[8] = t10;
80266
+ } else {
80267
+ t10 = $2[8];
80268
+ }
80269
+ let t11;
80270
+ if ($2[9] !== t10 || $2[10] !== t4.Body || $2[11] !== t9) {
80271
+ t11 = /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(t4.Body, {
80272
+ children: [t9, t10]
80273
+ });
80274
+ $2[9] = t10;
80275
+ $2[10] = t4.Body;
80276
+ $2[11] = t9;
80277
+ $2[12] = t11;
80278
+ } else {
80279
+ t11 = $2[12];
80280
+ }
80281
+ let t12;
80282
+ if ($2[13] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
80283
+ t12 = /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(DialogObject.Close, {
80284
+ asChild: true,
80285
+ children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(Button, {
80286
+ size: "sm",
80287
+ variant: "outline",
80288
+ children: "Cancel"
80289
+ })
80290
+ });
80291
+ $2[13] = t12;
80292
+ } else {
80293
+ t12 = $2[13];
80294
+ }
80295
+ const t13 = saving ? "Saving..." : "Save";
80296
+ let t14;
80297
+ if ($2[14] !== handleSave || $2[15] !== saving || $2[16] !== t13) {
80298
+ t14 = /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(DialogObject.Footer, {
80299
+ children: [t12, /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(Button, {
80300
+ size: "sm",
80301
+ onClick: handleSave,
80302
+ disabled: saving,
80303
+ children: t13
80304
+ })]
80305
+ });
80306
+ $2[14] = handleSave;
80307
+ $2[15] = saving;
80308
+ $2[16] = t13;
80309
+ $2[17] = t14;
80310
+ } else {
80311
+ t14 = $2[17];
80312
+ }
80313
+ let t15;
80314
+ if ($2[18] !== t11 || $2[19] !== t14 || $2[20] !== t2.Content || $2[21] !== t3) {
80315
+ t15 = /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(t2.Content, {
80316
+ children: [t3, t11, t14]
80317
+ });
80318
+ $2[18] = t11;
80319
+ $2[19] = t14;
80320
+ $2[20] = t2.Content;
80321
+ $2[21] = t3;
80322
+ $2[22] = t15;
80323
+ } else {
80324
+ t15 = $2[22];
80325
+ }
80326
+ let t16;
80327
+ if ($2[23] !== T0 || $2[24] !== onOpenChange || $2[25] !== open || $2[26] !== t15) {
80328
+ t16 = /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(T0, {
80329
+ open,
80330
+ onOpenChange,
80331
+ children: t15
80332
+ });
80333
+ $2[23] = T0;
80334
+ $2[24] = onOpenChange;
80335
+ $2[25] = open;
80336
+ $2[26] = t15;
80337
+ $2[27] = t16;
80338
+ } else {
80339
+ t16 = $2[27];
80340
+ }
80341
+ return t16;
80342
+ };
80343
+ var needsSetup = (configSchema, resolvedSettings) => {
80344
+ if (!configSchema) return false;
80345
+ return Object.entries(configSchema).some(([key, def]) => def.required && (resolvedSettings == null || resolvedSettings[key] == null));
80346
+ };
80347
+ function _temp9(e2) {
80348
+ return e2.preventDefault();
80349
+ }
80350
+ function _temp25(opt) {
80351
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(SelectObj.Item, {
80352
+ value: opt,
80353
+ children: opt
80354
+ }, opt);
80355
+ }
80356
+
80357
+ // src/side-panel/components/PluginMenu.tsx
80358
+ var import_compiler_runtime25 = __toESM(require_compiler_runtime(), 1);
80359
+ var import_react20 = __toESM(require_react(), 1);
80360
+ var import_jsx_runtime54 = __toESM(require_jsx_runtime(), 1);
80009
80361
  var VersionItem = (t0) => {
80010
- const $2 = (0, import_compiler_runtime23.c)(16);
80362
+ const $2 = (0, import_compiler_runtime25.c)(16);
80011
80363
  const {
80012
80364
  plugin
80013
80365
  } = t0;
@@ -80023,7 +80375,7 @@ var VersionItem = (t0) => {
80023
80375
  }
80024
80376
  let t22;
80025
80377
  if ($2[3] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
80026
- t22 = /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(Package, {
80378
+ t22 = /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(Package, {
80027
80379
  className: "h-3.5 w-3.5"
80028
80380
  });
80029
80381
  $2[3] = t22;
@@ -80032,7 +80384,7 @@ var VersionItem = (t0) => {
80032
80384
  }
80033
80385
  let t3;
80034
80386
  if ($2[4] !== plugin.version || $2[5] !== t12) {
80035
- t3 = /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(MenuObject.Item, {
80387
+ t3 = /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(MenuObject.Item, {
80036
80388
  onSelect: t12,
80037
80389
  children: [t22, "v", plugin.version]
80038
80390
  });
@@ -80058,7 +80410,7 @@ var VersionItem = (t0) => {
80058
80410
  }
80059
80411
  let t22;
80060
80412
  if ($2[9] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
80061
- t22 = /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(FolderOpen, {
80413
+ t22 = /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(FolderOpen, {
80062
80414
  className: "h-3.5 w-3.5"
80063
80415
  });
80064
80416
  $2[9] = t22;
@@ -80067,7 +80419,7 @@ var VersionItem = (t0) => {
80067
80419
  }
80068
80420
  let t3;
80069
80421
  if ($2[10] !== plugin.version || $2[11] !== t12) {
80070
- t3 = /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(MenuObject.Item, {
80422
+ t3 = /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(MenuObject.Item, {
80071
80423
  onSelect: t12,
80072
80424
  children: [t22, "v", plugin.version]
80073
80425
  });
@@ -80081,7 +80433,7 @@ var VersionItem = (t0) => {
80081
80433
  }
80082
80434
  let t1;
80083
80435
  if ($2[13] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
80084
- t1 = /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(FolderOpen, {
80436
+ t1 = /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(FolderOpen, {
80085
80437
  className: "h-3.5 w-3.5"
80086
80438
  });
80087
80439
  $2[13] = t1;
@@ -80090,7 +80442,7 @@ var VersionItem = (t0) => {
80090
80442
  }
80091
80443
  let t2;
80092
80444
  if ($2[14] !== plugin.version) {
80093
- t2 = /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(MenuObject.Item, {
80445
+ t2 = /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(MenuObject.Item, {
80094
80446
  disabled: true,
80095
80447
  className: "text-muted-foreground",
80096
80448
  children: [t1, "v", plugin.version]
@@ -80103,7 +80455,7 @@ var VersionItem = (t0) => {
80103
80455
  return t2;
80104
80456
  };
80105
80457
  var PluginMenu = (t0) => {
80106
- const $2 = (0, import_compiler_runtime23.c)(57);
80458
+ const $2 = (0, import_compiler_runtime25.c)(61);
80107
80459
  const {
80108
80460
  plugin,
80109
80461
  onUpdate,
@@ -80111,9 +80463,10 @@ var PluginMenu = (t0) => {
80111
80463
  updating,
80112
80464
  removing,
80113
80465
  muted,
80114
- className
80466
+ className,
80467
+ onConfigOpen
80115
80468
  } = t0;
80116
- const [confirmOpen, setConfirmOpen] = (0, import_react19.useState)(false);
80469
+ const [confirmOpen, setConfirmOpen] = (0, import_react20.useState)(false);
80117
80470
  const isLocal = plugin.source === "local";
80118
80471
  const removeLabel = isLocal ? "Remove" : "Uninstall";
80119
80472
  let t1;
@@ -80131,7 +80484,7 @@ var PluginMenu = (t0) => {
80131
80484
  const t2 = `h-4 w-4 ${muted ? "text-muted-foreground" : ""}`;
80132
80485
  let t3;
80133
80486
  if ($2[2] !== t2) {
80134
- t3 = /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(Ellipsis, {
80487
+ t3 = /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(Ellipsis, {
80135
80488
  className: t2
80136
80489
  });
80137
80490
  $2[2] = t2;
@@ -80141,7 +80494,7 @@ var PluginMenu = (t0) => {
80141
80494
  }
80142
80495
  let t4;
80143
80496
  if ($2[4] !== plugin.update) {
80144
- t4 = plugin.update && /* @__PURE__ */ (0, import_jsx_runtime52.jsx)("div", {
80497
+ t4 = plugin.update && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", {
80145
80498
  className: "absolute top-0 right-0 h-1.5 w-1.5 rounded-full border border-background bg-primary"
80146
80499
  });
80147
80500
  $2[4] = plugin.update;
@@ -80151,9 +80504,9 @@ var PluginMenu = (t0) => {
80151
80504
  }
80152
80505
  let t5;
80153
80506
  if ($2[6] !== t3 || $2[7] !== t4) {
80154
- t5 = /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(MenuObject.Trigger, {
80507
+ t5 = /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(MenuObject.Trigger, {
80155
80508
  asChild: true,
80156
- children: /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)("button", {
80509
+ children: /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("button", {
80157
80510
  type: "button",
80158
80511
  className: "relative flex h-6 w-6 items-center justify-center rounded hover:bg-muted/50",
80159
80512
  "aria-label": "Plugin options",
@@ -80168,7 +80521,7 @@ var PluginMenu = (t0) => {
80168
80521
  }
80169
80522
  let t6;
80170
80523
  if ($2[9] !== plugin) {
80171
- t6 = /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(VersionItem, {
80524
+ t6 = /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(VersionItem, {
80172
80525
  plugin
80173
80526
  });
80174
80527
  $2[9] = plugin;
@@ -80178,11 +80531,11 @@ var PluginMenu = (t0) => {
80178
80531
  }
80179
80532
  let t7;
80180
80533
  if ($2[11] !== onUpdate || $2[12] !== plugin.update || $2[13] !== updating) {
80181
- t7 = plugin.update && /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(MenuObject.Item, {
80534
+ t7 = plugin.update && /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(MenuObject.Item, {
80182
80535
  onClick: onUpdate,
80183
- children: [updating ? /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(Loader2, {
80536
+ children: [updating ? /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(Loader2, {
80184
80537
  size: "sm"
80185
- }) : /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(CircleArrowUp, {
80538
+ }) : /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(CircleArrowUp, {
80186
80539
  className: "h-3.5 w-3.5"
80187
80540
  }), "Update to v", plugin.update.latestVersion]
80188
80541
  });
@@ -80194,147 +80547,162 @@ var PluginMenu = (t0) => {
80194
80547
  t7 = $2[14];
80195
80548
  }
80196
80549
  let t8;
80197
- if ($2[15] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
80198
- t8 = () => setConfirmOpen(true);
80199
- $2[15] = t8;
80550
+ if ($2[15] !== onConfigOpen || $2[16] !== plugin.configSchema) {
80551
+ t8 = onConfigOpen && plugin.configSchema && Object.keys(plugin.configSchema).length > 0 && /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(MenuObject.Item, {
80552
+ onSelect: onConfigOpen,
80553
+ children: [/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(Cog, {
80554
+ className: "h-3.5 w-3.5"
80555
+ }), "Settings"]
80556
+ });
80557
+ $2[15] = onConfigOpen;
80558
+ $2[16] = plugin.configSchema;
80559
+ $2[17] = t8;
80200
80560
  } else {
80201
- t8 = $2[15];
80561
+ t8 = $2[17];
80202
80562
  }
80203
80563
  let t9;
80204
- if ($2[16] !== removing) {
80205
- t9 = removing ? /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(Loader2, {
80564
+ if ($2[18] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
80565
+ t9 = () => setConfirmOpen(true);
80566
+ $2[18] = t9;
80567
+ } else {
80568
+ t9 = $2[18];
80569
+ }
80570
+ let t10;
80571
+ if ($2[19] !== removing) {
80572
+ t10 = removing ? /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(Loader2, {
80206
80573
  size: "sm"
80207
- }) : /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(Trash2, {
80574
+ }) : /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(Trash2, {
80208
80575
  className: "h-3.5 w-3.5"
80209
80576
  });
80210
- $2[16] = removing;
80211
- $2[17] = t9;
80577
+ $2[19] = removing;
80578
+ $2[20] = t10;
80212
80579
  } else {
80213
- t9 = $2[17];
80580
+ t10 = $2[20];
80214
80581
  }
80215
- let t10;
80216
- if ($2[18] !== removeLabel || $2[19] !== t9) {
80217
- t10 = /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(MenuObject.Item, {
80218
- onSelect: t8,
80582
+ let t11;
80583
+ if ($2[21] !== removeLabel || $2[22] !== t10) {
80584
+ t11 = /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(MenuObject.Item, {
80585
+ onSelect: t9,
80219
80586
  variant: "destructive",
80220
80587
  className: "border-border border-t",
80221
- children: [t9, removeLabel]
80588
+ children: [t10, removeLabel]
80222
80589
  });
80223
- $2[18] = removeLabel;
80224
- $2[19] = t9;
80225
- $2[20] = t10;
80590
+ $2[21] = removeLabel;
80591
+ $2[22] = t10;
80592
+ $2[23] = t11;
80226
80593
  } else {
80227
- t10 = $2[20];
80594
+ t11 = $2[23];
80228
80595
  }
80229
- let t11;
80230
- if ($2[21] !== t10 || $2[22] !== t6 || $2[23] !== t7) {
80231
- t11 = /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(MenuObject.Content, {
80596
+ let t12;
80597
+ if ($2[24] !== t11 || $2[25] !== t6 || $2[26] !== t7 || $2[27] !== t8) {
80598
+ t12 = /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(MenuObject.Content, {
80232
80599
  align: "end",
80233
- children: [t6, t7, t10]
80600
+ children: [t6, t7, t8, t11]
80234
80601
  });
80235
- $2[21] = t10;
80236
- $2[22] = t6;
80237
- $2[23] = t7;
80238
80602
  $2[24] = t11;
80603
+ $2[25] = t6;
80604
+ $2[26] = t7;
80605
+ $2[27] = t8;
80606
+ $2[28] = t12;
80239
80607
  } else {
80240
- t11 = $2[24];
80608
+ t12 = $2[28];
80241
80609
  }
80242
- let t12;
80243
- if ($2[25] !== t11 || $2[26] !== t5) {
80244
- t12 = /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(MenuObject, {
80245
- children: [t5, t11]
80610
+ let t13;
80611
+ if ($2[29] !== t12 || $2[30] !== t5) {
80612
+ t13 = /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(MenuObject, {
80613
+ children: [t5, t12]
80246
80614
  });
80247
- $2[25] = t11;
80248
- $2[26] = t5;
80249
- $2[27] = t12;
80615
+ $2[29] = t12;
80616
+ $2[30] = t5;
80617
+ $2[31] = t13;
80250
80618
  } else {
80251
- t12 = $2[27];
80619
+ t13 = $2[31];
80252
80620
  }
80253
- let t13;
80254
- if ($2[28] !== removeLabel) {
80255
- t13 = /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(DialogObject.Header, {
80621
+ let t14;
80622
+ if ($2[32] !== removeLabel) {
80623
+ t14 = /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(DialogObject.Header, {
80256
80624
  className: "border-destructive bg-destructive text-destructive-foreground",
80257
80625
  children: [removeLabel, " Plugin"]
80258
80626
  });
80259
- $2[28] = removeLabel;
80260
- $2[29] = t13;
80627
+ $2[32] = removeLabel;
80628
+ $2[33] = t14;
80261
80629
  } else {
80262
- t13 = $2[29];
80630
+ t14 = $2[33];
80263
80631
  }
80264
- let t14;
80265
- if ($2[30] !== removeLabel) {
80266
- t14 = removeLabel.toLowerCase();
80267
- $2[30] = removeLabel;
80268
- $2[31] = t14;
80632
+ let t15;
80633
+ if ($2[34] !== removeLabel) {
80634
+ t15 = removeLabel.toLowerCase();
80635
+ $2[34] = removeLabel;
80636
+ $2[35] = t15;
80269
80637
  } else {
80270
- t14 = $2[31];
80638
+ t15 = $2[35];
80271
80639
  }
80272
- let t15;
80273
- if ($2[32] !== plugin.displayName) {
80274
- t15 = /* @__PURE__ */ (0, import_jsx_runtime52.jsx)("strong", {
80640
+ let t16;
80641
+ if ($2[36] !== plugin.displayName) {
80642
+ t16 = /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("strong", {
80275
80643
  className: "font-head",
80276
80644
  children: plugin.displayName
80277
80645
  });
80278
- $2[32] = plugin.displayName;
80279
- $2[33] = t15;
80646
+ $2[36] = plugin.displayName;
80647
+ $2[37] = t16;
80280
80648
  } else {
80281
- t15 = $2[33];
80649
+ t16 = $2[37];
80282
80650
  }
80283
- let t16;
80284
- if ($2[34] !== t14 || $2[35] !== t15) {
80285
- t16 = /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)("p", {
80651
+ let t17;
80652
+ if ($2[38] !== t15 || $2[39] !== t16) {
80653
+ t17 = /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("p", {
80286
80654
  className: "text-foreground text-sm",
80287
- children: ["Are you sure you want to ", t14, " ", t15, "?"]
80655
+ children: ["Are you sure you want to ", t15, " ", t16, "?"]
80288
80656
  });
80289
- $2[34] = t14;
80290
- $2[35] = t15;
80291
- $2[36] = t16;
80657
+ $2[38] = t15;
80658
+ $2[39] = t16;
80659
+ $2[40] = t17;
80292
80660
  } else {
80293
- t16 = $2[36];
80661
+ t17 = $2[40];
80294
80662
  }
80295
- let t17;
80296
- if ($2[37] !== isLocal) {
80297
- t17 = isLocal ? /* @__PURE__ */ (0, import_jsx_runtime52.jsx)("p", {
80663
+ let t18;
80664
+ if ($2[41] !== isLocal) {
80665
+ t18 = isLocal ? /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("p", {
80298
80666
  className: "mt-1 text-muted-foreground text-xs",
80299
80667
  children: "This will remove the plugin path from your config."
80300
- }) : /* @__PURE__ */ (0, import_jsx_runtime52.jsx)("p", {
80668
+ }) : /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("p", {
80301
80669
  className: "mt-1 text-muted-foreground text-xs",
80302
80670
  children: "This will run npm uninstall and remove the plugin globally."
80303
80671
  });
80304
- $2[37] = isLocal;
80305
- $2[38] = t17;
80672
+ $2[41] = isLocal;
80673
+ $2[42] = t18;
80306
80674
  } else {
80307
- t17 = $2[38];
80675
+ t18 = $2[42];
80308
80676
  }
80309
- let t18;
80310
- if ($2[39] !== t16 || $2[40] !== t17) {
80311
- t18 = /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(DialogObject.Body, {
80312
- children: [t16, t17]
80677
+ let t19;
80678
+ if ($2[43] !== t17 || $2[44] !== t18) {
80679
+ t19 = /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(DialogObject.Body, {
80680
+ children: [t17, t18]
80313
80681
  });
80314
- $2[39] = t16;
80315
- $2[40] = t17;
80316
- $2[41] = t18;
80682
+ $2[43] = t17;
80683
+ $2[44] = t18;
80684
+ $2[45] = t19;
80317
80685
  } else {
80318
- t18 = $2[41];
80686
+ t19 = $2[45];
80319
80687
  }
80320
- let t19;
80321
- if ($2[42] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
80322
- t19 = /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(DialogObject.Close, {
80688
+ let t20;
80689
+ if ($2[46] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
80690
+ t20 = /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(DialogObject.Close, {
80323
80691
  asChild: true,
80324
- children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(Button, {
80692
+ children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(Button, {
80325
80693
  size: "sm",
80326
80694
  variant: "outline",
80327
80695
  children: "Cancel"
80328
80696
  })
80329
80697
  });
80330
- $2[42] = t19;
80698
+ $2[46] = t20;
80331
80699
  } else {
80332
- t19 = $2[42];
80700
+ t20 = $2[46];
80333
80701
  }
80334
- let t20;
80335
- if ($2[43] !== handleConfirmRemove || $2[44] !== removeLabel) {
80336
- t20 = /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(DialogObject.Footer, {
80337
- children: [t19, /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(Button, {
80702
+ let t21;
80703
+ if ($2[47] !== handleConfirmRemove || $2[48] !== removeLabel) {
80704
+ t21 = /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(DialogObject.Footer, {
80705
+ children: [t20, /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(Button, {
80338
80706
  size: "sm",
80339
80707
  variant: "outline",
80340
80708
  className: "border-destructive text-destructive",
@@ -80342,68 +80710,68 @@ var PluginMenu = (t0) => {
80342
80710
  children: removeLabel
80343
80711
  })]
80344
80712
  });
80345
- $2[43] = handleConfirmRemove;
80346
- $2[44] = removeLabel;
80347
- $2[45] = t20;
80348
- } else {
80349
- t20 = $2[45];
80350
- }
80351
- let t21;
80352
- if ($2[46] !== t13 || $2[47] !== t18 || $2[48] !== t20) {
80353
- t21 = /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(DialogObject.Content, {
80354
- children: [t13, t18, t20]
80355
- });
80356
- $2[46] = t13;
80357
- $2[47] = t18;
80358
- $2[48] = t20;
80713
+ $2[47] = handleConfirmRemove;
80714
+ $2[48] = removeLabel;
80359
80715
  $2[49] = t21;
80360
80716
  } else {
80361
80717
  t21 = $2[49];
80362
80718
  }
80363
80719
  let t22;
80364
- if ($2[50] !== confirmOpen || $2[51] !== t21) {
80365
- t22 = /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(DialogObject, {
80366
- open: confirmOpen,
80367
- onOpenChange: setConfirmOpen,
80368
- children: t21
80720
+ if ($2[50] !== t14 || $2[51] !== t19 || $2[52] !== t21) {
80721
+ t22 = /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(DialogObject.Content, {
80722
+ children: [t14, t19, t21]
80369
80723
  });
80370
- $2[50] = confirmOpen;
80371
- $2[51] = t21;
80372
- $2[52] = t22;
80724
+ $2[50] = t14;
80725
+ $2[51] = t19;
80726
+ $2[52] = t21;
80727
+ $2[53] = t22;
80373
80728
  } else {
80374
- t22 = $2[52];
80729
+ t22 = $2[53];
80375
80730
  }
80376
80731
  let t23;
80377
- if ($2[53] !== className || $2[54] !== t12 || $2[55] !== t22) {
80378
- t23 = /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)("div", {
80379
- className,
80380
- onClick: _temp9,
80381
- onKeyDown: _temp25,
80382
- role: "presentation",
80383
- children: [t12, t22]
80732
+ if ($2[54] !== confirmOpen || $2[55] !== t22) {
80733
+ t23 = /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(DialogObject, {
80734
+ open: confirmOpen,
80735
+ onOpenChange: setConfirmOpen,
80736
+ children: t22
80384
80737
  });
80385
- $2[53] = className;
80386
- $2[54] = t12;
80738
+ $2[54] = confirmOpen;
80387
80739
  $2[55] = t22;
80388
80740
  $2[56] = t23;
80389
80741
  } else {
80390
80742
  t23 = $2[56];
80391
80743
  }
80392
- return t23;
80744
+ let t24;
80745
+ if ($2[57] !== className || $2[58] !== t13 || $2[59] !== t23) {
80746
+ t24 = /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", {
80747
+ className,
80748
+ onClick: _temp10,
80749
+ onKeyDown: _temp26,
80750
+ role: "presentation",
80751
+ children: [t13, t23]
80752
+ });
80753
+ $2[57] = className;
80754
+ $2[58] = t13;
80755
+ $2[59] = t23;
80756
+ $2[60] = t24;
80757
+ } else {
80758
+ t24 = $2[60];
80759
+ }
80760
+ return t24;
80393
80761
  };
80394
80762
  PluginMenu.displayName = "PluginMenu";
80395
- function _temp9(e2) {
80763
+ function _temp10(e2) {
80396
80764
  return e2.stopPropagation();
80397
80765
  }
80398
- function _temp25(e_0) {
80766
+ function _temp26(e_0) {
80399
80767
  if (e_0.key === "Enter" || e_0.key === " ") {
80400
80768
  e_0.stopPropagation();
80401
80769
  }
80402
80770
  }
80403
80771
 
80404
80772
  // src/side-panel/components/retro/Badge.tsx
80405
- var import_compiler_runtime24 = __toESM(require_compiler_runtime(), 1);
80406
- var import_jsx_runtime53 = __toESM(require_jsx_runtime(), 1);
80773
+ var import_compiler_runtime26 = __toESM(require_compiler_runtime(), 1);
80774
+ var import_jsx_runtime55 = __toESM(require_jsx_runtime(), 1);
80407
80775
  var badgeVariants = cva("inline-block rounded font-medium leading-none", {
80408
80776
  variants: {
80409
80777
  variant: {
@@ -80421,7 +80789,7 @@ var badgeVariants = cva("inline-block rounded font-medium leading-none", {
80421
80789
  }
80422
80790
  });
80423
80791
  var Badge2 = (t0) => {
80424
- const $2 = (0, import_compiler_runtime24.c)(12);
80792
+ const $2 = (0, import_compiler_runtime26.c)(12);
80425
80793
  let className;
80426
80794
  let props;
80427
80795
  let size4;
@@ -80459,7 +80827,7 @@ var Badge2 = (t0) => {
80459
80827
  }
80460
80828
  let t2;
80461
80829
  if ($2[9] !== props || $2[10] !== t1) {
80462
- t2 = /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("span", {
80830
+ t2 = /* @__PURE__ */ (0, import_jsx_runtime55.jsx)("span", {
80463
80831
  className: t1,
80464
80832
  ...props
80465
80833
  });
@@ -80474,9 +80842,9 @@ var Badge2 = (t0) => {
80474
80842
  Badge2.displayName = "Badge";
80475
80843
 
80476
80844
  // src/side-panel/components/PluginCard.tsx
80477
- var import_jsx_runtime54 = __toESM(require_jsx_runtime(), 1);
80845
+ var import_jsx_runtime56 = __toESM(require_jsx_runtime(), 1);
80478
80846
  var PluginCard = (t0) => {
80479
- const $2 = (0, import_compiler_runtime25.c)(59);
80847
+ const $2 = (0, import_compiler_runtime27.c)(71);
80480
80848
  const {
80481
80849
  plugin,
80482
80850
  activeTools,
@@ -80489,11 +80857,12 @@ var PluginCard = (t0) => {
80489
80857
  actionError,
80490
80858
  transitionClass
80491
80859
  } = t0;
80492
- const [toggleError, setToggleError] = (0, import_react20.useState)(null);
80493
- const [pendingChange, setPendingChange] = (0, import_react20.useState)(null);
80494
- const errorTimerRef = (0, import_react20.useRef)(void 0);
80495
- const toggleCounter = (0, import_react20.useRef)(0);
80496
- const preToggleRef = (0, import_react20.useRef)([]);
80860
+ const [configOpen, setConfigOpen] = (0, import_react21.useState)(false);
80861
+ const [toggleError, setToggleError] = (0, import_react21.useState)(null);
80862
+ const [pendingChange, setPendingChange] = (0, import_react21.useState)(null);
80863
+ const errorTimerRef = (0, import_react21.useRef)(void 0);
80864
+ const toggleCounter = (0, import_react21.useRef)(0);
80865
+ const preToggleRef = (0, import_react21.useRef)([]);
80497
80866
  let t1;
80498
80867
  let t2;
80499
80868
  if ($2[0] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
@@ -80505,7 +80874,7 @@ var PluginCard = (t0) => {
80505
80874
  t1 = $2[0];
80506
80875
  t2 = $2[1];
80507
80876
  }
80508
- (0, import_react20.useEffect)(t1, t2);
80877
+ (0, import_react21.useEffect)(t1, t2);
80509
80878
  const showToggleError = (message) => {
80510
80879
  clearTimeout(errorTimerRef.current);
80511
80880
  setToggleError(message);
@@ -80525,7 +80894,7 @@ var PluginCard = (t0) => {
80525
80894
  t3 = $2[4];
80526
80895
  }
80527
80896
  const updatePluginTools = t3;
80528
- const prePluginPermRef = (0, import_react20.useRef)("off");
80897
+ const prePluginPermRef = (0, import_react21.useRef)("off");
80529
80898
  const applyPluginPermission = (newPermission, reviewedVersion) => {
80530
80899
  const myVersion = toggleCounter.current = toggleCounter.current + 1;
80531
80900
  prePluginPermRef.current = plugin.permission;
@@ -80571,10 +80940,10 @@ var PluginCard = (t0) => {
80571
80940
  const myVersion_0 = toggleCounter.current = toggleCounter.current + 1;
80572
80941
  updatePluginTools((prev_2) => {
80573
80942
  preToggleRef.current = prev_2;
80574
- return prev_2.map((t37) => t37.name === toolName ? {
80575
- ...t37,
80943
+ return prev_2.map((t40) => t40.name === toolName ? {
80944
+ ...t40,
80576
80945
  permission: newPermission_1
80577
- } : t37);
80946
+ } : t40);
80578
80947
  });
80579
80948
  setToolPermission(plugin.name, toolName, newPermission_1).catch(() => {
80580
80949
  if (toggleCounter.current === myVersion_0) {
@@ -80610,43 +80979,53 @@ var PluginCard = (t0) => {
80610
80979
  const hasActiveTool = pluginTools.some(t4);
80611
80980
  const toolGroups = groupTools(visibleTools);
80612
80981
  const inactive = plugin.tabState !== "ready";
80982
+ let t5;
80983
+ if ($2[8] !== plugin.configSchema || $2[9] !== plugin.resolvedSettings) {
80984
+ t5 = needsSetup(plugin.configSchema, plugin.resolvedSettings);
80985
+ $2[8] = plugin.configSchema;
80986
+ $2[9] = plugin.resolvedSettings;
80987
+ $2[10] = t5;
80988
+ } else {
80989
+ t5 = $2[10];
80990
+ }
80991
+ const isUnconfigured = t5;
80613
80992
  const tabCount = plugin.tabs?.length ?? 0;
80614
80993
  const hasHomepage = Boolean(plugin.homepage);
80615
80994
  const hasLastSeenUrl = Boolean(plugin.hasLastSeenUrl);
80616
80995
  const isClickable = tabCount > 0 || hasHomepage || hasLastSeenUrl;
80617
- let t5;
80996
+ let t6;
80618
80997
  bb0: {
80619
80998
  if (!isClickable) {
80620
- t5 = void 0;
80999
+ t6 = void 0;
80621
81000
  break bb0;
80622
81001
  }
80623
81002
  if (plugin.tabState === "closed") {
80624
81003
  if (hasHomepage) {
80625
- t5 = `Open ${plugin.displayName} in new tab`;
81004
+ t6 = `Open ${plugin.displayName} in new tab`;
80626
81005
  break bb0;
80627
81006
  }
80628
81007
  if (hasLastSeenUrl) {
80629
- t5 = `Open ${plugin.displayName} (last visited)`;
81008
+ t6 = `Open ${plugin.displayName} (last visited)`;
80630
81009
  break bb0;
80631
81010
  }
80632
- t5 = void 0;
81011
+ t6 = void 0;
80633
81012
  break bb0;
80634
81013
  }
80635
- t5 = tabCount > 1 ? `Open ${plugin.displayName} (${tabCount} tabs)` : `Open ${plugin.displayName}`;
81014
+ t6 = tabCount > 1 ? `Open ${plugin.displayName} (${tabCount} tabs)` : `Open ${plugin.displayName}`;
80636
81015
  }
80637
- const tooltipText = t5;
80638
- let t6;
80639
- if ($2[8] !== plugin.name) {
80640
- t6 = () => {
81016
+ const tooltipText = t6;
81017
+ let t7;
81018
+ if ($2[11] !== plugin.name) {
81019
+ t7 = () => {
80641
81020
  openPluginTab(plugin.name);
80642
81021
  };
80643
- $2[8] = plugin.name;
80644
- $2[9] = t6;
81022
+ $2[11] = plugin.name;
81023
+ $2[12] = t7;
80645
81024
  } else {
80646
- t6 = $2[9];
81025
+ t7 = $2[12];
80647
81026
  }
80648
- const handleOpenTab = t6;
80649
- const renderToolList = (tools) => tools.map((tool) => /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(ToolRow, {
81027
+ const handleOpenTab = t7;
81028
+ const renderToolList = (tools) => tools.map((tool) => /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(ToolRow, {
80650
81029
  name: tool.name,
80651
81030
  displayName: tool.displayName,
80652
81031
  description: tool.description,
@@ -80657,280 +81036,345 @@ var PluginCard = (t0) => {
80657
81036
  muted: inactive,
80658
81037
  onPermissionChange: handleToolPermissionChange
80659
81038
  }, tool.name));
80660
- const t7 = `flex min-w-0 flex-1 items-center gap-1.5 truncate font-head text-sm ${inactive ? "text-muted-foreground" : "text-foreground"}`;
80661
- let t8;
80662
- if ($2[10] !== plugin.source) {
80663
- t8 = plugin.source === "local" && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(Badge2, {
81039
+ const t8 = `flex min-w-0 flex-1 items-center gap-1.5 truncate font-head text-sm ${inactive ? "text-muted-foreground" : "text-foreground"}`;
81040
+ let t9;
81041
+ if ($2[13] !== plugin.source) {
81042
+ t9 = plugin.source === "local" && /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(Badge2, {
80664
81043
  variant: "default",
80665
81044
  size: "sm",
80666
81045
  className: "align-middle",
80667
81046
  children: "DEV"
80668
81047
  });
80669
- $2[10] = plugin.source;
80670
- $2[11] = t8;
81048
+ $2[13] = plugin.source;
81049
+ $2[14] = t9;
80671
81050
  } else {
80672
- t8 = $2[11];
81051
+ t9 = $2[14];
80673
81052
  }
80674
- let t9;
80675
- if ($2[12] !== plugin.reviewed) {
80676
- t9 = !plugin.reviewed && /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(TooltipObject, {
80677
- children: [/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(TooltipObject.Trigger, {
81053
+ let t10;
81054
+ if ($2[15] !== plugin.reviewed) {
81055
+ t10 = !plugin.reviewed && /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(TooltipObject, {
81056
+ children: [/* @__PURE__ */ (0, import_jsx_runtime56.jsx)(TooltipObject.Trigger, {
80678
81057
  asChild: true,
80679
- children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(ShieldQuestionMark, {
81058
+ children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(ShieldQuestionMark, {
80680
81059
  className: "inline-block h-3.5 w-3.5 align-middle text-muted-foreground"
80681
81060
  })
80682
- }), /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(TooltipObject.Content, {
81061
+ }), /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(TooltipObject.Content, {
80683
81062
  children: "This plugin version has not been reviewed"
80684
81063
  })]
80685
81064
  });
80686
- $2[12] = plugin.reviewed;
80687
- $2[13] = t9;
81065
+ $2[15] = plugin.reviewed;
81066
+ $2[16] = t10;
80688
81067
  } else {
80689
- t9 = $2[13];
81068
+ t10 = $2[16];
80690
81069
  }
80691
- let t10;
80692
- if ($2[14] !== plugin.displayName || $2[15] !== t7 || $2[16] !== t8 || $2[17] !== t9) {
80693
- t10 = /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", {
80694
- className: t7,
80695
- children: [plugin.displayName, t8, t9]
81070
+ let t11;
81071
+ if ($2[17] !== isUnconfigured) {
81072
+ t11 = isUnconfigured && /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(TooltipObject, {
81073
+ children: [/* @__PURE__ */ (0, import_jsx_runtime56.jsx)(TooltipObject.Trigger, {
81074
+ asChild: true,
81075
+ children: /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)("span", {
81076
+ className: "inline-flex items-center gap-0.5 align-middle",
81077
+ children: [/* @__PURE__ */ (0, import_jsx_runtime56.jsx)(Settings, {
81078
+ className: "inline-block h-3.5 w-3.5 text-muted-foreground"
81079
+ }), /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(Badge2, {
81080
+ variant: "outline",
81081
+ size: "sm",
81082
+ className: "text-muted-foreground",
81083
+ children: "Needs Setup"
81084
+ })]
81085
+ })
81086
+ }), /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(TooltipObject.Content, {
81087
+ children: "This plugin has required settings that are not configured"
81088
+ })]
80696
81089
  });
80697
- $2[14] = plugin.displayName;
80698
- $2[15] = t7;
80699
- $2[16] = t8;
80700
- $2[17] = t9;
80701
- $2[18] = t10;
81090
+ $2[17] = isUnconfigured;
81091
+ $2[18] = t11;
80702
81092
  } else {
80703
- t10 = $2[18];
81093
+ t11 = $2[18];
80704
81094
  }
80705
- const t11 = `h-4 w-4 shrink-0 transition-transform duration-200 ${inactive ? "text-muted-foreground" : ""}`;
80706
81095
  let t12;
80707
- if ($2[19] !== t11) {
80708
- t12 = /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(ChevronDown, {
80709
- className: t11
81096
+ if ($2[19] !== plugin.displayName || $2[20] !== t10 || $2[21] !== t11 || $2[22] !== t8 || $2[23] !== t9) {
81097
+ t12 = /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)("div", {
81098
+ className: t8,
81099
+ children: [plugin.displayName, t9, t10, t11]
80710
81100
  });
80711
- $2[19] = t11;
80712
- $2[20] = t12;
81101
+ $2[19] = plugin.displayName;
81102
+ $2[20] = t10;
81103
+ $2[21] = t11;
81104
+ $2[22] = t8;
81105
+ $2[23] = t9;
81106
+ $2[24] = t12;
80713
81107
  } else {
80714
- t12 = $2[20];
81108
+ t12 = $2[24];
80715
81109
  }
80716
- let t13;
80717
- if ($2[21] !== t10 || $2[22] !== t12) {
80718
- t13 = /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(Trigger2, {
81110
+ const t13 = `h-4 w-4 shrink-0 transition-transform duration-200 ${inactive ? "text-muted-foreground" : ""}`;
81111
+ let t14;
81112
+ if ($2[25] !== t13) {
81113
+ t14 = /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(ChevronDown, {
81114
+ className: t13
81115
+ });
81116
+ $2[25] = t13;
81117
+ $2[26] = t14;
81118
+ } else {
81119
+ t14 = $2[26];
81120
+ }
81121
+ let t15;
81122
+ if ($2[27] !== t12 || $2[28] !== t14) {
81123
+ t15 = /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(Trigger2, {
80719
81124
  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",
80720
- children: [t10, t12]
81125
+ children: [t12, t14]
80721
81126
  });
80722
- $2[21] = t10;
80723
- $2[22] = t12;
80724
- $2[23] = t13;
81127
+ $2[27] = t12;
81128
+ $2[28] = t14;
81129
+ $2[29] = t15;
80725
81130
  } else {
80726
- t13 = $2[23];
81131
+ t15 = $2[29];
80727
81132
  }
80728
- const t14 = onUpdate ?? _temp10;
80729
- const t15 = onRemove ?? _temp26;
80730
- const t16 = updatingPlugin ?? false;
80731
- const t17 = removingPlugin ?? false;
80732
- let t18;
80733
- if ($2[24] !== inactive || $2[25] !== plugin || $2[26] !== t14 || $2[27] !== t15 || $2[28] !== t16 || $2[29] !== t17) {
80734
- t18 = /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(PluginMenu, {
81133
+ const t16 = onUpdate ?? _temp11;
81134
+ const t17 = onRemove ?? _temp27;
81135
+ const t18 = updatingPlugin ?? false;
81136
+ const t19 = removingPlugin ?? false;
81137
+ let t20;
81138
+ if ($2[30] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
81139
+ t20 = () => setConfigOpen(true);
81140
+ $2[30] = t20;
81141
+ } else {
81142
+ t20 = $2[30];
81143
+ }
81144
+ let t21;
81145
+ if ($2[31] !== inactive || $2[32] !== plugin || $2[33] !== t16 || $2[34] !== t17 || $2[35] !== t18 || $2[36] !== t19) {
81146
+ t21 = /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(PluginMenu, {
80735
81147
  plugin,
80736
- onUpdate: t14,
80737
- onRemove: t15,
80738
- updating: t16,
80739
- removing: t17,
81148
+ onUpdate: t16,
81149
+ onRemove: t17,
81150
+ updating: t18,
81151
+ removing: t19,
80740
81152
  muted: inactive,
80741
- className: "flex shrink-0 items-center px-1"
81153
+ className: "flex shrink-0 items-center px-1",
81154
+ onConfigOpen: t20
80742
81155
  });
80743
- $2[24] = inactive;
80744
- $2[25] = plugin;
80745
- $2[26] = t14;
80746
- $2[27] = t15;
80747
- $2[28] = t16;
80748
- $2[29] = t17;
80749
- $2[30] = t18;
81156
+ $2[31] = inactive;
81157
+ $2[32] = plugin;
81158
+ $2[33] = t16;
81159
+ $2[34] = t17;
81160
+ $2[35] = t18;
81161
+ $2[36] = t19;
81162
+ $2[37] = t21;
80750
81163
  } else {
80751
- t18 = $2[30];
81164
+ t21 = $2[37];
80752
81165
  }
80753
- let t19;
80754
- if ($2[31] !== toggleError) {
80755
- t19 = toggleError && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(AlertComponent, {
81166
+ let t22;
81167
+ if ($2[38] !== toggleError) {
81168
+ t22 = toggleError && /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(AlertComponent, {
80756
81169
  status: "error",
80757
81170
  className: "mx-3 mb-1 px-2 py-1 text-xs",
80758
81171
  children: toggleError
80759
81172
  });
80760
- $2[31] = toggleError;
80761
- $2[32] = t19;
81173
+ $2[38] = toggleError;
81174
+ $2[39] = t22;
80762
81175
  } else {
80763
- t19 = $2[32];
81176
+ t22 = $2[39];
80764
81177
  }
80765
- let t20;
80766
- if ($2[33] !== actionError) {
80767
- t20 = actionError && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(AlertComponent, {
81178
+ let t23;
81179
+ if ($2[40] !== actionError) {
81180
+ t23 = actionError && /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(AlertComponent, {
80768
81181
  status: "error",
80769
81182
  className: "mx-3 mb-1 px-2 py-1 text-xs",
80770
81183
  children: actionError
80771
81184
  });
80772
- $2[33] = actionError;
80773
- $2[34] = t20;
81185
+ $2[40] = actionError;
81186
+ $2[41] = t23;
80774
81187
  } else {
80775
- t20 = $2[34];
80776
- }
80777
- const t21 = AccordionComponent;
80778
- const t22 = "border-border border-t";
80779
- const t23 = toolFilter && /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", {
80780
- className: "mb-1 px-3 pt-2 text-muted-foreground text-xs",
80781
- children: [visibleTools.length, " of ", pluginTools.length, " tools"]
81188
+ t23 = $2[41];
81189
+ }
81190
+ const t24 = AccordionComponent;
81191
+ const t25 = "border-border border-t";
81192
+ const t26 = isUnconfigured ? /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)("div", {
81193
+ className: "flex flex-col items-center gap-2 px-3 py-4",
81194
+ children: [/* @__PURE__ */ (0, import_jsx_runtime56.jsx)("p", {
81195
+ className: "text-center text-muted-foreground text-xs",
81196
+ children: "This plugin requires configuration before use."
81197
+ }), /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(Button, {
81198
+ size: "sm",
81199
+ onClick: () => setConfigOpen(true),
81200
+ children: [/* @__PURE__ */ (0, import_jsx_runtime56.jsx)(Settings, {
81201
+ className: "mr-1.5 h-3.5 w-3.5"
81202
+ }), "Configure"]
81203
+ })]
81204
+ }) : /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(import_jsx_runtime56.Fragment, {
81205
+ children: [toolFilter && /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)("div", {
81206
+ className: "mb-1 px-3 pt-2 text-muted-foreground text-xs",
81207
+ children: [visibleTools.length, " of ", pluginTools.length, " tools"]
81208
+ }), toolGroups !== null ? toolGroups.map((group) => /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)("div", {
81209
+ className: "[&:not(:first-child)]:mt-2",
81210
+ children: [/* @__PURE__ */ (0, import_jsx_runtime56.jsx)("div", {
81211
+ className: "border-border border-b border-l-2 border-l-primary bg-muted/30 px-3 py-1",
81212
+ children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("span", {
81213
+ className: "font-head text-muted-foreground text-xs uppercase tracking-wider",
81214
+ children: group.name
81215
+ })
81216
+ }), renderToolList(group.tools)]
81217
+ }, group.name)) : renderToolList(visibleTools)]
80782
81218
  });
80783
- const t24 = toolGroups !== null ? toolGroups.map((group) => /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", {
80784
- className: "[&:not(:first-child)]:mt-2",
80785
- children: [/* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", {
80786
- className: "border-border border-b border-l-2 border-l-primary bg-muted/30 px-3 py-1",
80787
- children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", {
80788
- className: "font-head text-muted-foreground text-xs uppercase tracking-wider",
80789
- children: group.name
80790
- })
80791
- }), renderToolList(group.tools)]
80792
- }, group.name)) : renderToolList(visibleTools);
80793
- let t25;
80794
- if ($2[35] !== t21.Content || $2[36] !== t23 || $2[37] !== t24) {
80795
- t25 = /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(t21.Content, {
80796
- className: t22,
80797
- children: [t23, t24]
81219
+ let t27;
81220
+ if ($2[42] !== t24.Content || $2[43] !== t26) {
81221
+ t27 = /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(t24.Content, {
81222
+ className: t25,
81223
+ children: t26
80798
81224
  });
80799
- $2[35] = t21.Content;
80800
- $2[36] = t23;
80801
- $2[37] = t24;
80802
- $2[38] = t25;
81225
+ $2[42] = t24.Content;
81226
+ $2[43] = t26;
81227
+ $2[44] = t27;
80803
81228
  } else {
80804
- t25 = $2[38];
81229
+ t27 = $2[44];
80805
81230
  }
80806
- const t26 = pendingChange !== null;
80807
- let t27;
80808
- if ($2[39] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
80809
- t27 = (open) => !open && setPendingChange(null);
80810
- $2[39] = t27;
81231
+ let t28;
81232
+ if ($2[45] !== configOpen || $2[46] !== plugin.configSchema || $2[47] !== plugin.displayName || $2[48] !== plugin.name || $2[49] !== plugin.resolvedSettings) {
81233
+ t28 = plugin.configSchema && Object.keys(plugin.configSchema).length > 0 && /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(ConfigDialog, {
81234
+ open: configOpen,
81235
+ onOpenChange: setConfigOpen,
81236
+ pluginName: plugin.name,
81237
+ displayName: plugin.displayName,
81238
+ configSchema: plugin.configSchema,
81239
+ resolvedSettings: plugin.resolvedSettings
81240
+ });
81241
+ $2[45] = configOpen;
81242
+ $2[46] = plugin.configSchema;
81243
+ $2[47] = plugin.displayName;
81244
+ $2[48] = plugin.name;
81245
+ $2[49] = plugin.resolvedSettings;
81246
+ $2[50] = t28;
80811
81247
  } else {
80812
- t27 = $2[39];
81248
+ t28 = $2[50];
80813
81249
  }
80814
- let t28;
80815
- if ($2[40] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
80816
- t28 = /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(DialogObject.Header, {
81250
+ const t29 = pendingChange !== null;
81251
+ let t30;
81252
+ if ($2[51] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
81253
+ t30 = (open) => !open && setPendingChange(null);
81254
+ $2[51] = t30;
81255
+ } else {
81256
+ t30 = $2[51];
81257
+ }
81258
+ let t31;
81259
+ if ($2[52] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
81260
+ t31 = /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(DialogObject.Header, {
80817
81261
  children: "Unreviewed Plugin"
80818
81262
  });
80819
- $2[40] = t28;
81263
+ $2[52] = t31;
80820
81264
  } else {
80821
- t28 = $2[40];
81265
+ t31 = $2[52];
80822
81266
  }
80823
- let t29;
80824
- if ($2[41] !== plugin.displayName || $2[42] !== plugin.version) {
80825
- t29 = /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("p", {
81267
+ let t32;
81268
+ if ($2[53] !== plugin.displayName || $2[54] !== plugin.version) {
81269
+ t32 = /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)("p", {
80826
81270
  className: "font-mono text-foreground text-sm",
80827
81271
  children: [plugin.displayName, " v", plugin.version]
80828
81272
  });
80829
- $2[41] = plugin.displayName;
80830
- $2[42] = plugin.version;
80831
- $2[43] = t29;
81273
+ $2[53] = plugin.displayName;
81274
+ $2[54] = plugin.version;
81275
+ $2[55] = t32;
80832
81276
  } else {
80833
- t29 = $2[43];
81277
+ t32 = $2[55];
80834
81278
  }
80835
- let t30;
80836
- if ($2[44] !== plugin.name) {
80837
- t30 = /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("p", {
81279
+ let t33;
81280
+ if ($2[56] !== plugin.name) {
81281
+ t33 = /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)("p", {
80838
81282
  className: "mt-2 text-foreground text-sm",
80839
81283
  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."]
80840
81284
  });
80841
- $2[44] = plugin.name;
80842
- $2[45] = t30;
81285
+ $2[56] = plugin.name;
81286
+ $2[57] = t33;
80843
81287
  } else {
80844
- t30 = $2[45];
81288
+ t33 = $2[57];
80845
81289
  }
80846
- let t31;
80847
- if ($2[46] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
80848
- t31 = /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("p", {
81290
+ let t34;
81291
+ if ($2[58] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
81292
+ t34 = /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("p", {
80849
81293
  className: "mt-2 text-muted-foreground text-xs",
80850
81294
  children: "You can also enable it now without review."
80851
81295
  });
80852
- $2[46] = t31;
81296
+ $2[58] = t34;
80853
81297
  } else {
80854
- t31 = $2[46];
81298
+ t34 = $2[58];
80855
81299
  }
80856
- let t32;
80857
- if ($2[47] !== t29 || $2[48] !== t30) {
80858
- t32 = /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(DialogObject.Body, {
80859
- children: [t29, t30, t31]
81300
+ let t35;
81301
+ if ($2[59] !== t32 || $2[60] !== t33) {
81302
+ t35 = /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(DialogObject.Body, {
81303
+ children: [t32, t33, t34]
80860
81304
  });
80861
- $2[47] = t29;
80862
- $2[48] = t30;
80863
- $2[49] = t32;
81305
+ $2[59] = t32;
81306
+ $2[60] = t33;
81307
+ $2[61] = t35;
80864
81308
  } else {
80865
- t32 = $2[49];
81309
+ t35 = $2[61];
80866
81310
  }
80867
- let t33;
80868
- if ($2[50] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
80869
- t33 = /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(DialogObject.Close, {
81311
+ let t36;
81312
+ if ($2[62] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
81313
+ t36 = /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(DialogObject.Close, {
80870
81314
  asChild: true,
80871
- children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(Button, {
81315
+ children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(Button, {
80872
81316
  size: "sm",
80873
81317
  variant: "outline",
80874
81318
  children: "Cancel"
80875
81319
  })
80876
81320
  });
80877
- $2[50] = t33;
81321
+ $2[62] = t36;
80878
81322
  } else {
80879
- t33 = $2[50];
81323
+ t36 = $2[62];
80880
81324
  }
80881
- let t34;
80882
- if ($2[51] !== handleEnableAnyway) {
80883
- t34 = /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(DialogObject.Footer, {
80884
- children: [t33, /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(Button, {
81325
+ let t37;
81326
+ if ($2[63] !== handleEnableAnyway) {
81327
+ t37 = /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(DialogObject.Footer, {
81328
+ children: [t36, /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(Button, {
80885
81329
  size: "sm",
80886
81330
  onClick: handleEnableAnyway,
80887
81331
  children: "Enable Anyway"
80888
81332
  })]
80889
81333
  });
80890
- $2[51] = handleEnableAnyway;
80891
- $2[52] = t34;
81334
+ $2[63] = handleEnableAnyway;
81335
+ $2[64] = t37;
80892
81336
  } else {
80893
- t34 = $2[52];
81337
+ t37 = $2[64];
80894
81338
  }
80895
- let t35;
80896
- if ($2[53] !== t32 || $2[54] !== t34) {
80897
- t35 = /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(DialogObject.Content, {
81339
+ let t38;
81340
+ if ($2[65] !== t35 || $2[66] !== t37) {
81341
+ t38 = /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(DialogObject.Content, {
80898
81342
  onInteractOutside: _temp35,
80899
- children: [t28, t32, t34]
81343
+ children: [t31, t35, t37]
80900
81344
  });
80901
- $2[53] = t32;
80902
- $2[54] = t34;
80903
- $2[55] = t35;
81345
+ $2[65] = t35;
81346
+ $2[66] = t37;
81347
+ $2[67] = t38;
80904
81348
  } else {
80905
- t35 = $2[55];
80906
- }
80907
- let t36;
80908
- if ($2[56] !== t26 || $2[57] !== t35) {
80909
- t36 = /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(DialogObject, {
80910
- open: t26,
80911
- onOpenChange: t27,
80912
- children: t35
81349
+ t38 = $2[67];
81350
+ }
81351
+ let t39;
81352
+ if ($2[68] !== t29 || $2[69] !== t38) {
81353
+ t39 = /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(DialogObject, {
81354
+ open: t29,
81355
+ onOpenChange: t30,
81356
+ children: t38
80913
81357
  });
80914
- $2[56] = t26;
80915
- $2[57] = t35;
80916
- $2[58] = t36;
81358
+ $2[68] = t29;
81359
+ $2[69] = t38;
81360
+ $2[70] = t39;
80917
81361
  } else {
80918
- t36 = $2[58];
81362
+ t39 = $2[70];
80919
81363
  }
80920
- return /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(AccordionComponent.Item, {
81364
+ return /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(AccordionComponent.Item, {
80921
81365
  value: plugin.name,
80922
81366
  className: transitionClass ?? (removingPlugin ? "pointer-events-none opacity-60 transition-opacity" : inactive ? "opacity-70 transition-opacity" : void 0),
80923
- children: [/* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(Header, {
81367
+ children: [/* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(Header, {
80924
81368
  className: "flex",
80925
- children: [tooltipText ? /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(TooltipObject, {
80926
- children: [/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(TooltipObject.Trigger, {
81369
+ children: [tooltipText ? /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(TooltipObject, {
81370
+ children: [/* @__PURE__ */ (0, import_jsx_runtime56.jsx)(TooltipObject.Trigger, {
80927
81371
  asChild: true,
80928
- children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("button", {
81372
+ children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("button", {
80929
81373
  type: "button",
80930
81374
  className: "focus-ring flex shrink-0 cursor-pointer items-center py-2 pl-3",
80931
81375
  onClick: handleOpenTab,
80932
81376
  "aria-label": tooltipText,
80933
- children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(PluginIcon, {
81377
+ children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(PluginIcon, {
80934
81378
  pluginName: plugin.name,
80935
81379
  displayName: plugin.displayName,
80936
81380
  tabState: plugin.tabState,
@@ -80943,12 +81387,12 @@ var PluginCard = (t0) => {
80943
81387
  className: "transition-transform hover:scale-105"
80944
81388
  })
80945
81389
  })
80946
- }), /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(TooltipObject.Content, {
81390
+ }), /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(TooltipObject.Content, {
80947
81391
  children: tooltipText
80948
81392
  })]
80949
- }) : /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", {
81393
+ }) : /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("div", {
80950
81394
  className: "flex shrink-0 items-center py-2 pl-3",
80951
- children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(PluginIcon, {
81395
+ children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(PluginIcon, {
80952
81396
  pluginName: plugin.name,
80953
81397
  displayName: plugin.displayName,
80954
81398
  tabState: plugin.tabState,
@@ -80959,9 +81403,9 @@ var PluginCard = (t0) => {
80959
81403
  iconDarkInactiveSvg: plugin.iconDarkInactiveSvg,
80960
81404
  active: hasActiveTool
80961
81405
  })
80962
- }), t13, t18, /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", {
81406
+ }), t15, t21, /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("div", {
80963
81407
  className: "flex shrink-0 items-center px-3",
80964
- children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(PermissionSelect, {
81408
+ children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(PermissionSelect, {
80965
81409
  value: plugin.permission,
80966
81410
  onValueChange: handlePluginPermissionChange,
80967
81411
  disabled: false,
@@ -80969,22 +81413,22 @@ var PluginCard = (t0) => {
80969
81413
  ariaLabel: `Permission for ${plugin.name} plugin`
80970
81414
  })
80971
81415
  })]
80972
- }), t19, t20, t25, t36]
81416
+ }), t22, t23, t27, t28, t39]
80973
81417
  });
80974
81418
  };
80975
- function _temp10() {
81419
+ function _temp11() {
80976
81420
  }
80977
- function _temp26() {
81421
+ function _temp27() {
80978
81422
  }
80979
81423
  function _temp35(e2) {
80980
81424
  return e2.preventDefault();
80981
81425
  }
80982
81426
 
80983
81427
  // src/side-panel/components/PluginList.tsx
80984
- var import_jsx_runtime55 = __toESM(require_jsx_runtime(), 1);
81428
+ var import_jsx_runtime57 = __toESM(require_jsx_runtime(), 1);
80985
81429
  var ACCORDION_STORAGE_KEY = "accordionState";
80986
81430
  function useGroupTransitions(plugins, isFiltering) {
80987
- const $2 = (0, import_compiler_runtime26.c)(14);
81431
+ const $2 = (0, import_compiler_runtime28.c)(14);
80988
81432
  let t0;
80989
81433
  if ($2[0] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
80990
81434
  t0 = /* @__PURE__ */ new Map();
@@ -80992,7 +81436,7 @@ function useGroupTransitions(plugins, isFiltering) {
80992
81436
  } else {
80993
81437
  t0 = $2[0];
80994
81438
  }
80995
- const prevStates = (0, import_react21.useRef)(t0);
81439
+ const prevStates = (0, import_react22.useRef)(t0);
80996
81440
  let t1;
80997
81441
  if ($2[1] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
80998
81442
  t1 = /* @__PURE__ */ new Set();
@@ -81000,7 +81444,7 @@ function useGroupTransitions(plugins, isFiltering) {
81000
81444
  } else {
81001
81445
  t1 = $2[1];
81002
81446
  }
81003
- const [animating, setAnimating] = (0, import_react21.useState)(t1);
81447
+ const [animating, setAnimating] = (0, import_react22.useState)(t1);
81004
81448
  let t2;
81005
81449
  if ($2[2] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
81006
81450
  t2 = /* @__PURE__ */ new Map();
@@ -81008,7 +81452,7 @@ function useGroupTransitions(plugins, isFiltering) {
81008
81452
  } else {
81009
81453
  t2 = $2[2];
81010
81454
  }
81011
- const clearTimers = (0, import_react21.useRef)(t2);
81455
+ const clearTimers = (0, import_react22.useRef)(t2);
81012
81456
  let t3;
81013
81457
  let t4;
81014
81458
  if ($2[3] !== isFiltering || $2[4] !== plugins) {
@@ -81056,7 +81500,7 @@ function useGroupTransitions(plugins, isFiltering) {
81056
81500
  t3 = $2[5];
81057
81501
  t4 = $2[6];
81058
81502
  }
81059
- (0, import_react21.useEffect)(t3, t4);
81503
+ (0, import_react22.useEffect)(t3, t4);
81060
81504
  let t5;
81061
81505
  let t6;
81062
81506
  if ($2[7] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
@@ -81072,7 +81516,7 @@ function useGroupTransitions(plugins, isFiltering) {
81072
81516
  t5 = $2[7];
81073
81517
  t6 = $2[8];
81074
81518
  }
81075
- (0, import_react21.useEffect)(t5, t6);
81519
+ (0, import_react22.useEffect)(t5, t6);
81076
81520
  let t7;
81077
81521
  if ($2[9] !== animating) {
81078
81522
  t7 = (pluginName, isReadyGroup) => getTransitionClass(pluginName, isReadyGroup, animating);
@@ -81097,7 +81541,7 @@ function useGroupTransitions(plugins, isFiltering) {
81097
81541
  return t8;
81098
81542
  }
81099
81543
  var PluginList = (t0) => {
81100
- const $2 = (0, import_compiler_runtime26.c)(30);
81544
+ const $2 = (0, import_compiler_runtime28.c)(30);
81101
81545
  const {
81102
81546
  plugins,
81103
81547
  failedPlugins,
@@ -81118,7 +81562,7 @@ var PluginList = (t0) => {
81118
81562
  animating,
81119
81563
  resolveTransitionClass
81120
81564
  } = useGroupTransitions(plugins, !!filterLower);
81121
- const [accordionHydrated, setAccordionHydrated] = (0, import_react21.useState)(false);
81565
+ const [accordionHydrated, setAccordionHydrated] = (0, import_react22.useState)(false);
81122
81566
  let t1;
81123
81567
  if ($2[0] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
81124
81568
  t1 = [];
@@ -81126,7 +81570,7 @@ var PluginList = (t0) => {
81126
81570
  } else {
81127
81571
  t1 = $2[0];
81128
81572
  }
81129
- const [openReady, setOpenReady] = (0, import_react21.useState)(t1);
81573
+ const [openReady, setOpenReady] = (0, import_react22.useState)(t1);
81130
81574
  let t2;
81131
81575
  if ($2[1] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
81132
81576
  t2 = [];
@@ -81134,7 +81578,7 @@ var PluginList = (t0) => {
81134
81578
  } else {
81135
81579
  t2 = $2[1];
81136
81580
  }
81137
- const [openNotReady, setOpenNotReady] = (0, import_react21.useState)(t2);
81581
+ const [openNotReady, setOpenNotReady] = (0, import_react22.useState)(t2);
81138
81582
  let t3;
81139
81583
  let t4;
81140
81584
  if ($2[2] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
@@ -81161,8 +81605,8 @@ var PluginList = (t0) => {
81161
81605
  t3 = $2[2];
81162
81606
  t4 = $2[3];
81163
81607
  }
81164
- (0, import_react21.useEffect)(t3, t4);
81165
- (0, import_react21.useEffect)(() => {
81608
+ (0, import_react22.useEffect)(t3, t4);
81609
+ (0, import_react22.useEffect)(() => {
81166
81610
  if (filterLower) {
81167
81611
  return;
81168
81612
  }
@@ -81171,7 +81615,7 @@ var PluginList = (t0) => {
81171
81615
  openReady,
81172
81616
  openNotReady
81173
81617
  }
81174
- }).catch(_temp11);
81618
+ }).catch(_temp12);
81175
81619
  }, [openReady, openNotReady, filterLower]);
81176
81620
  let t5;
81177
81621
  let t6;
@@ -81191,7 +81635,7 @@ var PluginList = (t0) => {
81191
81635
  t5 = $2[5];
81192
81636
  t6 = $2[6];
81193
81637
  }
81194
- (0, import_react21.useEffect)(t5, t6);
81638
+ (0, import_react22.useEffect)(t5, t6);
81195
81639
  const {
81196
81640
  ready: readyPlugins,
81197
81641
  notReady: notReadyPlugins
@@ -81200,10 +81644,10 @@ var PluginList = (t0) => {
81200
81644
  notReady: []
81201
81645
  } : groupPlugins(visiblePlugins);
81202
81646
  const hasNotReady = notReadyPlugins.length > 0;
81203
- const prevHadNotReady = (0, import_react21.useRef)(false);
81204
- const [labelVisible, setLabelVisible] = (0, import_react21.useState)(false);
81205
- const [labelMounted, setLabelMounted] = (0, import_react21.useState)(false);
81206
- (0, import_react21.useEffect)(() => {
81647
+ const prevHadNotReady = (0, import_react22.useRef)(false);
81648
+ const [labelVisible, setLabelVisible] = (0, import_react22.useState)(false);
81649
+ const [labelMounted, setLabelMounted] = (0, import_react22.useState)(false);
81650
+ (0, import_react22.useEffect)(() => {
81207
81651
  let unmountTimer;
81208
81652
  if (filterLower) {
81209
81653
  setLabelMounted(false);
@@ -81240,7 +81684,7 @@ var PluginList = (t0) => {
81240
81684
  if (filterLower && visiblePlugins.length === 0) {
81241
81685
  let t72;
81242
81686
  if ($2[7] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
81243
- t72 = /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(EmptyComponent.Icon, {
81687
+ t72 = /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(EmptyComponent.Icon, {
81244
81688
  className: "h-10 w-10 text-muted-foreground"
81245
81689
  });
81246
81690
  $2[7] = t72;
@@ -81249,7 +81693,7 @@ var PluginList = (t0) => {
81249
81693
  }
81250
81694
  let t82;
81251
81695
  if ($2[8] !== toolFilter) {
81252
- t82 = /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(EmptyComponent.Title, {
81696
+ t82 = /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(EmptyComponent.Title, {
81253
81697
  className: "text-base",
81254
81698
  children: ["No tools matching \u201C", toolFilter, "\u201D"]
81255
81699
  });
@@ -81261,8 +81705,8 @@ var PluginList = (t0) => {
81261
81705
  let t102;
81262
81706
  let t92;
81263
81707
  if ($2[10] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
81264
- t92 = /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(EmptyComponent.Separator, {});
81265
- t102 = /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(EmptyComponent.Description, {
81708
+ t92 = /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(EmptyComponent.Separator, {});
81709
+ t102 = /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(EmptyComponent.Description, {
81266
81710
  className: "text-xs",
81267
81711
  children: "Try searching by plugin name, tool name, or description."
81268
81712
  });
@@ -81274,9 +81718,9 @@ var PluginList = (t0) => {
81274
81718
  }
81275
81719
  let t11;
81276
81720
  if ($2[12] !== t82) {
81277
- t11 = /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(EmptyComponent, {
81721
+ t11 = /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(EmptyComponent, {
81278
81722
  className: "border-muted",
81279
- children: /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(EmptyComponent.Content, {
81723
+ children: /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(EmptyComponent.Content, {
81280
81724
  children: [t72, t82, t92, t102]
81281
81725
  })
81282
81726
  });
@@ -81289,7 +81733,7 @@ var PluginList = (t0) => {
81289
81733
  }
81290
81734
  let t7;
81291
81735
  if ($2[14] !== activeTools || $2[15] !== onRemove || $2[16] !== onUpdate || $2[17] !== pluginErrors || $2[18] !== removingPlugins || $2[19] !== resolveTransitionClass || $2[20] !== setPlugins || $2[21] !== toolFilter) {
81292
- t7 = (plugin, isReadyGroup) => /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(PluginCard, {
81736
+ t7 = (plugin, isReadyGroup) => /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(PluginCard, {
81293
81737
  plugin,
81294
81738
  activeTools,
81295
81739
  setPlugins,
@@ -81315,9 +81759,9 @@ var PluginList = (t0) => {
81315
81759
  const renderCard = t7;
81316
81760
  let t8;
81317
81761
  if ($2[23] !== onRemoveFailedPlugin || $2[24] !== removingFailedPlugins || $2[25] !== visibleFailed) {
81318
- t8 = visibleFailed.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime55.jsx)("div", {
81762
+ t8 = visibleFailed.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", {
81319
81763
  className: "mb-3 space-y-2",
81320
- children: visibleFailed.map((fp) => /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(FailedPluginCard, {
81764
+ children: visibleFailed.map((fp) => /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(FailedPluginCard, {
81321
81765
  plugin: fp,
81322
81766
  onRemove: () => onRemoveFailedPlugin?.(fp.specifier),
81323
81767
  removing: removingFailedPlugins?.has(fp.specifier) ?? false
@@ -81330,21 +81774,21 @@ var PluginList = (t0) => {
81330
81774
  } else {
81331
81775
  t8 = $2[26];
81332
81776
  }
81333
- const t9 = filterLower ? /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(AccordionComponent, {
81777
+ const t9 = filterLower ? /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(AccordionComponent, {
81334
81778
  type: "multiple",
81335
81779
  className: "space-y-2",
81336
81780
  children: visiblePlugins.map((p_0) => renderCard(p_0, true))
81337
- }) : /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(import_jsx_runtime55.Fragment, {
81338
- children: [readyPlugins.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(AccordionComponent, {
81781
+ }) : /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(import_jsx_runtime57.Fragment, {
81782
+ children: [readyPlugins.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(AccordionComponent, {
81339
81783
  type: "multiple",
81340
81784
  value: openReady,
81341
81785
  onValueChange: setOpenReady,
81342
81786
  className: "space-y-2",
81343
81787
  children: readyPlugins.map((p_1) => renderCard(p_1, true))
81344
- }), labelMounted && /* @__PURE__ */ (0, import_jsx_runtime55.jsx)("div", {
81788
+ }), labelMounted && /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", {
81345
81789
  className: `px-3 pt-3 pb-1 font-mono text-[10px] text-muted-foreground uppercase tracking-widest transition-opacity duration-200 ${labelVisible ? "opacity-100" : "opacity-0"}`,
81346
81790
  children: "NOT CONNECTED"
81347
- }), notReadyPlugins.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(AccordionComponent, {
81791
+ }), notReadyPlugins.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(AccordionComponent, {
81348
81792
  type: "multiple",
81349
81793
  value: openNotReady,
81350
81794
  onValueChange: setOpenNotReady,
@@ -81354,7 +81798,7 @@ var PluginList = (t0) => {
81354
81798
  });
81355
81799
  let t10;
81356
81800
  if ($2[27] !== t8 || $2[28] !== t9) {
81357
- t10 = /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(import_jsx_runtime55.Fragment, {
81801
+ t10 = /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(import_jsx_runtime57.Fragment, {
81358
81802
  children: [t8, t9]
81359
81803
  });
81360
81804
  $2[27] = t8;
@@ -81365,87 +81809,17 @@ var PluginList = (t0) => {
81365
81809
  }
81366
81810
  return t10;
81367
81811
  };
81368
- function _temp11() {
81812
+ function _temp12() {
81369
81813
  }
81370
81814
 
81371
- // src/side-panel/components/retro/Input.tsx
81372
- var import_compiler_runtime27 = __toESM(require_compiler_runtime(), 1);
81373
- var import_jsx_runtime56 = __toESM(require_jsx_runtime(), 1);
81374
- var Input = (t0) => {
81375
- const $2 = (0, import_compiler_runtime27.c)(17);
81376
- let ariaInvalid;
81377
- let className;
81378
- let props;
81379
- let ref;
81380
- let t1;
81381
- let t2;
81382
- if ($2[0] !== t0) {
81383
- ({
81384
- type: t1,
81385
- placeholder: t2,
81386
- className,
81387
- "aria-invalid": ariaInvalid,
81388
- ref,
81389
- ...props
81390
- } = t0);
81391
- $2[0] = t0;
81392
- $2[1] = ariaInvalid;
81393
- $2[2] = className;
81394
- $2[3] = props;
81395
- $2[4] = ref;
81396
- $2[5] = t1;
81397
- $2[6] = t2;
81398
- } else {
81399
- ariaInvalid = $2[1];
81400
- className = $2[2];
81401
- props = $2[3];
81402
- ref = $2[4];
81403
- t1 = $2[5];
81404
- t2 = $2[6];
81405
- }
81406
- const type = t1 === void 0 ? "text" : t1;
81407
- const placeholder = t2 === void 0 ? "Enter text" : t2;
81408
- const t3 = ariaInvalid && "border-destructive text-destructive shadow-destructive shadow-xs";
81409
- let t4;
81410
- if ($2[7] !== className || $2[8] !== t3) {
81411
- t4 = cn("w-full rounded border-2 px-4 py-2 shadow-md transition focus:shadow-xs focus:outline-hidden", t3, className);
81412
- $2[7] = className;
81413
- $2[8] = t3;
81414
- $2[9] = t4;
81415
- } else {
81416
- t4 = $2[9];
81417
- }
81418
- let t5;
81419
- if ($2[10] !== ariaInvalid || $2[11] !== placeholder || $2[12] !== props || $2[13] !== ref || $2[14] !== t4 || $2[15] !== type) {
81420
- t5 = /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("input", {
81421
- ref,
81422
- type,
81423
- placeholder,
81424
- "aria-invalid": ariaInvalid,
81425
- className: t4,
81426
- ...props
81427
- });
81428
- $2[10] = ariaInvalid;
81429
- $2[11] = placeholder;
81430
- $2[12] = props;
81431
- $2[13] = ref;
81432
- $2[14] = t4;
81433
- $2[15] = type;
81434
- $2[16] = t5;
81435
- } else {
81436
- t5 = $2[16];
81437
- }
81438
- return t5;
81439
- };
81440
-
81441
81815
  // src/side-panel/components/SearchResults.tsx
81442
- var import_compiler_runtime29 = __toESM(require_compiler_runtime(), 1);
81816
+ var import_compiler_runtime30 = __toESM(require_compiler_runtime(), 1);
81443
81817
 
81444
81818
  // src/side-panel/components/NpmPluginCard.tsx
81445
- var import_compiler_runtime28 = __toESM(require_compiler_runtime(), 1);
81446
- var import_jsx_runtime57 = __toESM(require_jsx_runtime(), 1);
81819
+ var import_compiler_runtime29 = __toESM(require_compiler_runtime(), 1);
81820
+ var import_jsx_runtime58 = __toESM(require_jsx_runtime(), 1);
81447
81821
  var NpmPluginCard = (t0) => {
81448
- const $2 = (0, import_compiler_runtime28.c)(34);
81822
+ const $2 = (0, import_compiler_runtime29.c)(34);
81449
81823
  const {
81450
81824
  plugin,
81451
81825
  installing,
@@ -81455,7 +81829,7 @@ var NpmPluginCard = (t0) => {
81455
81829
  const displayName = plugin.displayName;
81456
81830
  let t1;
81457
81831
  if ($2[0] !== displayName || $2[1] !== plugin.name) {
81458
- t1 = /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(PluginIcon, {
81832
+ t1 = /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(PluginIcon, {
81459
81833
  pluginName: plugin.name,
81460
81834
  displayName,
81461
81835
  tabState: "closed",
@@ -81470,12 +81844,12 @@ var NpmPluginCard = (t0) => {
81470
81844
  const t2 = `https://www.npmjs.com/package/${plugin.name}`;
81471
81845
  let t3;
81472
81846
  if ($2[3] !== displayName || $2[4] !== t2) {
81473
- t3 = /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("a", {
81847
+ t3 = /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("a", {
81474
81848
  href: t2,
81475
81849
  target: "_blank",
81476
81850
  rel: "noopener noreferrer",
81477
81851
  className: "truncate font-head text-foreground text-sm hover:underline",
81478
- onClick: _temp12,
81852
+ onClick: _temp13,
81479
81853
  children: displayName
81480
81854
  });
81481
81855
  $2[3] = displayName;
@@ -81486,7 +81860,7 @@ var NpmPluginCard = (t0) => {
81486
81860
  }
81487
81861
  let t4;
81488
81862
  if ($2[6] !== plugin.version) {
81489
- t4 = /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(Badge2, {
81863
+ t4 = /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(Badge2, {
81490
81864
  variant: "default",
81491
81865
  size: "sm",
81492
81866
  children: plugin.version
@@ -81498,7 +81872,7 @@ var NpmPluginCard = (t0) => {
81498
81872
  }
81499
81873
  let t5;
81500
81874
  if ($2[8] !== t3 || $2[9] !== t4) {
81501
- t5 = /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", {
81875
+ t5 = /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)("div", {
81502
81876
  className: "flex flex-wrap items-center gap-1",
81503
81877
  children: [t3, t4]
81504
81878
  });
@@ -81510,7 +81884,7 @@ var NpmPluginCard = (t0) => {
81510
81884
  }
81511
81885
  let t6;
81512
81886
  if ($2[11] !== plugin.author) {
81513
- t6 = /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("span", {
81887
+ t6 = /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("span", {
81514
81888
  className: "truncate font-sans text-muted-foreground text-xs",
81515
81889
  children: plugin.author
81516
81890
  });
@@ -81521,7 +81895,7 @@ var NpmPluginCard = (t0) => {
81521
81895
  }
81522
81896
  let t7;
81523
81897
  if ($2[13] !== t5 || $2[14] !== t6) {
81524
- t7 = /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", {
81898
+ t7 = /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)("div", {
81525
81899
  className: "flex min-w-0 flex-1 flex-col",
81526
81900
  children: [t5, t6]
81527
81901
  });
@@ -81533,7 +81907,7 @@ var NpmPluginCard = (t0) => {
81533
81907
  }
81534
81908
  let t8;
81535
81909
  if ($2[16] !== installing) {
81536
- t8 = installing ? /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(Loader2, {
81910
+ t8 = installing ? /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(Loader2, {
81537
81911
  size: "sm"
81538
81912
  }) : "Install";
81539
81913
  $2[16] = installing;
@@ -81543,7 +81917,7 @@ var NpmPluginCard = (t0) => {
81543
81917
  }
81544
81918
  let t9;
81545
81919
  if ($2[18] !== installing || $2[19] !== onInstall || $2[20] !== t8) {
81546
- t9 = /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(Button, {
81920
+ t9 = /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(Button, {
81547
81921
  size: "sm",
81548
81922
  variant: "default",
81549
81923
  disabled: installing,
@@ -81560,7 +81934,7 @@ var NpmPluginCard = (t0) => {
81560
81934
  }
81561
81935
  let t10;
81562
81936
  if ($2[22] !== t1 || $2[23] !== t7 || $2[24] !== t9) {
81563
- t10 = /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", {
81937
+ t10 = /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)("div", {
81564
81938
  className: "flex items-center gap-2",
81565
81939
  children: [t1, t7, t9]
81566
81940
  });
@@ -81573,7 +81947,7 @@ var NpmPluginCard = (t0) => {
81573
81947
  }
81574
81948
  let t11;
81575
81949
  if ($2[26] !== plugin.description) {
81576
- t11 = /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("p", {
81950
+ t11 = /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("p", {
81577
81951
  className: "line-clamp-2 text-muted-foreground text-xs",
81578
81952
  children: plugin.description
81579
81953
  });
@@ -81584,7 +81958,7 @@ var NpmPluginCard = (t0) => {
81584
81958
  }
81585
81959
  let t12;
81586
81960
  if ($2[28] !== error) {
81587
- t12 = error && /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(AlertComponent, {
81961
+ t12 = error && /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(AlertComponent, {
81588
81962
  status: "error",
81589
81963
  className: "px-3 py-2 text-xs",
81590
81964
  children: error
@@ -81596,7 +81970,7 @@ var NpmPluginCard = (t0) => {
81596
81970
  }
81597
81971
  let t13;
81598
81972
  if ($2[30] !== t10 || $2[31] !== t11 || $2[32] !== t12) {
81599
- t13 = /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", {
81973
+ t13 = /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)("div", {
81600
81974
  className: "space-y-2 rounded border-2 border-border bg-card p-3 shadow-md transition-all hover:shadow-sm",
81601
81975
  children: [t10, t11, t12]
81602
81976
  });
@@ -81610,20 +81984,20 @@ var NpmPluginCard = (t0) => {
81610
81984
  return t13;
81611
81985
  };
81612
81986
  NpmPluginCard.displayName = "NpmPluginCard";
81613
- function _temp12(e2) {
81987
+ function _temp13(e2) {
81614
81988
  return e2.stopPropagation();
81615
81989
  }
81616
81990
 
81617
81991
  // src/side-panel/components/SearchResults.tsx
81618
- var import_jsx_runtime58 = __toESM(require_jsx_runtime(), 1);
81992
+ var import_jsx_runtime59 = __toESM(require_jsx_runtime(), 1);
81619
81993
  var SectionHeader = (t0) => {
81620
- const $2 = (0, import_compiler_runtime29.c)(2);
81994
+ const $2 = (0, import_compiler_runtime30.c)(2);
81621
81995
  const {
81622
81996
  children
81623
81997
  } = t0;
81624
81998
  let t1;
81625
81999
  if ($2[0] !== children) {
81626
- t1 = /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("div", {
82000
+ t1 = /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("div", {
81627
82001
  className: "mb-1.5 font-head text-[10px] text-muted-foreground uppercase tracking-widest",
81628
82002
  children
81629
82003
  });
@@ -81636,7 +82010,7 @@ var SectionHeader = (t0) => {
81636
82010
  };
81637
82011
  var matchesBrowserTool = (tool, filterLower) => toDisplayName(tool.name).toLowerCase().includes(filterLower) || tool.name.toLowerCase().includes(filterLower) || tool.description.toLowerCase().includes(filterLower);
81638
82012
  var SearchResults = (t0) => {
81639
- const $2 = (0, import_compiler_runtime29.c)(61);
82013
+ const $2 = (0, import_compiler_runtime30.c)(61);
81640
82014
  const {
81641
82015
  plugins,
81642
82016
  failedPlugins,
@@ -81683,7 +82057,7 @@ var SearchResults = (t0) => {
81683
82057
  const hasBrowserToolMatches = t2;
81684
82058
  let t3;
81685
82059
  if ($2[7] !== plugins) {
81686
- t3 = new Set(plugins.map(_temp13));
82060
+ t3 = new Set(plugins.map(_temp14));
81687
82061
  $2[7] = plugins;
81688
82062
  $2[8] = t3;
81689
82063
  } else {
@@ -81708,13 +82082,13 @@ var SearchResults = (t0) => {
81708
82082
  showNoResults = toolFilter && !hasInstalledResults && !npmSearching && !npmSearchError && availableResults.length === 0;
81709
82083
  t4 = "space-y-4";
81710
82084
  if ($2[37] !== activeTools || $2[38] !== browserPermission || $2[39] !== browserTools || $2[40] !== failedMatches || $2[41] !== hasBrowserToolMatches || $2[42] !== hasInstalledResults || $2[43] !== installedMatches || $2[44] !== onBrowserPermissionChange || $2[45] !== onRemove || $2[46] !== onUpdate || $2[47] !== pluginErrors || $2[48] !== removingPlugins || $2[49] !== serverVersion || $2[50] !== setBrowserTools || $2[51] !== setPlugins || $2[52] !== toolFilter) {
81711
- t5 = hasInstalledResults && /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)("div", {
81712
- children: [/* @__PURE__ */ (0, import_jsx_runtime58.jsx)(SectionHeader, {
82085
+ t5 = hasInstalledResults && /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)("div", {
82086
+ children: [/* @__PURE__ */ (0, import_jsx_runtime59.jsx)(SectionHeader, {
81713
82087
  children: "Installed"
81714
- }), hasBrowserToolMatches && /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(AccordionComponent, {
82088
+ }), hasBrowserToolMatches && /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(AccordionComponent, {
81715
82089
  type: "multiple",
81716
82090
  className: "mb-2 space-y-2",
81717
- children: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(BrowserToolsCard, {
82091
+ children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(BrowserToolsCard, {
81718
82092
  tools: browserTools,
81719
82093
  activeTools,
81720
82094
  onToolsChange: setBrowserTools,
@@ -81723,7 +82097,7 @@ var SearchResults = (t0) => {
81723
82097
  browserPermission,
81724
82098
  onBrowserPermissionChange
81725
82099
  })
81726
- }), /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(PluginList, {
82100
+ }), /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(PluginList, {
81727
82101
  plugins: installedMatches,
81728
82102
  failedPlugins: failedMatches,
81729
82103
  activeTools,
@@ -81755,26 +82129,26 @@ var SearchResults = (t0) => {
81755
82129
  } else {
81756
82130
  t5 = $2[53];
81757
82131
  }
81758
- t6 = toolFilter && (npmSearching ? /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("div", {
82132
+ t6 = toolFilter && (npmSearching ? /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("div", {
81759
82133
  className: "flex justify-center py-4",
81760
- children: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(Loader2, {
82134
+ children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(Loader2, {
81761
82135
  size: "sm"
81762
82136
  })
81763
- }) : npmSearchError ? /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)("div", {
82137
+ }) : npmSearchError ? /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)("div", {
81764
82138
  className: "py-4 text-center",
81765
- children: [/* @__PURE__ */ (0, import_jsx_runtime58.jsx)("p", {
82139
+ children: [/* @__PURE__ */ (0, import_jsx_runtime59.jsx)("p", {
81766
82140
  className: "font-head text-muted-foreground text-sm",
81767
82141
  children: "Search unavailable"
81768
- }), /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("p", {
82142
+ }), /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("p", {
81769
82143
  className: "mt-1 text-muted-foreground text-xs",
81770
82144
  children: "Could not reach the npm registry. Check your internet connection."
81771
82145
  })]
81772
- }) : availableResults.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)("div", {
81773
- children: [/* @__PURE__ */ (0, import_jsx_runtime58.jsx)(SectionHeader, {
82146
+ }) : availableResults.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)("div", {
82147
+ children: [/* @__PURE__ */ (0, import_jsx_runtime59.jsx)(SectionHeader, {
81774
82148
  children: "Available"
81775
- }), /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("div", {
82149
+ }), /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("div", {
81776
82150
  className: "space-y-2",
81777
- children: availableResults.map((result) => /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(NpmPluginCard, {
82151
+ children: availableResults.map((result) => /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(NpmPluginCard, {
81778
82152
  plugin: result,
81779
82153
  installing: installingPlugins.has(result.name),
81780
82154
  error: installErrors.get(result.name) ?? null,
@@ -81816,15 +82190,15 @@ var SearchResults = (t0) => {
81816
82190
  }
81817
82191
  let t7;
81818
82192
  if ($2[54] !== showNoResults) {
81819
- t7 = showNoResults && /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(EmptyComponent, {
82193
+ t7 = showNoResults && /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(EmptyComponent, {
81820
82194
  className: "border-muted",
81821
- children: /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)(EmptyComponent.Content, {
81822
- children: [/* @__PURE__ */ (0, import_jsx_runtime58.jsx)(EmptyComponent.Icon, {
82195
+ children: /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)(EmptyComponent.Content, {
82196
+ children: [/* @__PURE__ */ (0, import_jsx_runtime59.jsx)(EmptyComponent.Icon, {
81823
82197
  className: "h-10 w-10 text-muted-foreground"
81824
- }), /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(EmptyComponent.Title, {
82198
+ }), /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(EmptyComponent.Title, {
81825
82199
  className: "text-base",
81826
82200
  children: "No plugins found"
81827
- }), /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(EmptyComponent.Separator, {}), /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(EmptyComponent.Description, {
82201
+ }), /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(EmptyComponent.Separator, {}), /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(EmptyComponent.Description, {
81828
82202
  className: "text-xs",
81829
82203
  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."
81830
82204
  })]
@@ -81837,7 +82211,7 @@ var SearchResults = (t0) => {
81837
82211
  }
81838
82212
  let t8;
81839
82213
  if ($2[56] !== t4 || $2[57] !== t5 || $2[58] !== t6 || $2[59] !== t7) {
81840
- t8 = /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)("div", {
82214
+ t8 = /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)("div", {
81841
82215
  className: t4,
81842
82216
  children: [t5, t6, t7]
81843
82217
  });
@@ -81852,16 +82226,16 @@ var SearchResults = (t0) => {
81852
82226
  return t8;
81853
82227
  };
81854
82228
  SearchResults.displayName = "SearchResults";
81855
- function _temp13(p_1) {
82229
+ function _temp14(p_1) {
81856
82230
  return extractShortName(p_1.name);
81857
82231
  }
81858
82232
 
81859
82233
  // src/side-panel/hooks/useServerNotifications.ts
81860
- var import_compiler_runtime30 = __toESM(require_compiler_runtime(), 1);
81861
- var import_react22 = __toESM(require_react(), 1);
82234
+ var import_compiler_runtime31 = __toESM(require_compiler_runtime(), 1);
82235
+ var import_react23 = __toESM(require_react(), 1);
81862
82236
  var validTabStates = /* @__PURE__ */ new Set(["closed", "unavailable", "ready"]);
81863
82237
  var useServerNotifications = (t0) => {
81864
- const $2 = (0, import_compiler_runtime30.c)(8);
82238
+ const $2 = (0, import_compiler_runtime31.c)(8);
81865
82239
  const {
81866
82240
  setPlugins,
81867
82241
  setActiveTools,
@@ -81874,7 +82248,7 @@ var useServerNotifications = (t0) => {
81874
82248
  } else {
81875
82249
  t1 = $2[0];
81876
82250
  }
81877
- const seenConfirmationIds = (0, import_react22.useRef)(t1);
82251
+ const seenConfirmationIds = (0, import_react23.useRef)(t1);
81878
82252
  let t2;
81879
82253
  if ($2[1] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
81880
82254
  t2 = /* @__PURE__ */ new Map();
@@ -81882,7 +82256,7 @@ var useServerNotifications = (t0) => {
81882
82256
  } else {
81883
82257
  t2 = $2[1];
81884
82258
  }
81885
- const invocationTimeoutIds = (0, import_react22.useRef)(t2);
82259
+ const invocationTimeoutIds = (0, import_react23.useRef)(t2);
81886
82260
  let t3;
81887
82261
  let t4;
81888
82262
  if ($2[2] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
@@ -81902,7 +82276,7 @@ var useServerNotifications = (t0) => {
81902
82276
  t3 = $2[2];
81903
82277
  t4 = $2[3];
81904
82278
  }
81905
- (0, import_react22.useEffect)(t3, t4);
82279
+ (0, import_react23.useEffect)(t3, t4);
81906
82280
  let t5;
81907
82281
  if ($2[4] !== setActiveTools || $2[5] !== setPendingConfirmations || $2[6] !== setPlugins) {
81908
82282
  const handleNotification = (data) => {
@@ -81984,11 +82358,11 @@ var useServerNotifications = (t0) => {
81984
82358
  };
81985
82359
 
81986
82360
  // src/side-panel/App.tsx
81987
- var import_jsx_runtime59 = __toESM(require_jsx_runtime(), 1);
82361
+ var import_jsx_runtime60 = __toESM(require_jsx_runtime(), 1);
81988
82362
  var App = () => {
81989
- const $2 = (0, import_compiler_runtime31.c)(74);
81990
- const [connected, setConnected] = (0, import_react23.useState)(false);
81991
- const [disconnectReason, setDisconnectReason] = (0, import_react23.useState)();
82363
+ const $2 = (0, import_compiler_runtime32.c)(74);
82364
+ const [connected, setConnected] = (0, import_react24.useState)(false);
82365
+ const [disconnectReason, setDisconnectReason] = (0, import_react24.useState)();
81992
82366
  let t0;
81993
82367
  if ($2[0] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
81994
82368
  t0 = [];
@@ -81996,7 +82370,7 @@ var App = () => {
81996
82370
  } else {
81997
82371
  t0 = $2[0];
81998
82372
  }
81999
- const [plugins, setPlugins] = (0, import_react23.useState)(t0);
82373
+ const [plugins, setPlugins] = (0, import_react24.useState)(t0);
82000
82374
  let t1;
82001
82375
  if ($2[1] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
82002
82376
  t1 = [];
@@ -82004,13 +82378,13 @@ var App = () => {
82004
82378
  } else {
82005
82379
  t1 = $2[1];
82006
82380
  }
82007
- const [failedPlugins, setFailedPlugins] = (0, import_react23.useState)(t1);
82008
- const [browserTools, setBrowserTools] = (0, import_react23.useState)(_temp27);
82009
- const [browserPermission, setBrowserPermission] = (0, import_react23.useState)("off");
82010
- const [skipPermissions, setSkipPermissions2] = (0, import_react23.useState)(false);
82011
- const [serverVersion, setServerVersion] = (0, import_react23.useState)(void 0);
82012
- const [serverSourcePath, setServerSourcePath] = (0, import_react23.useState)(void 0);
82013
- const [loading, setLoading] = (0, import_react23.useState)(true);
82381
+ const [failedPlugins, setFailedPlugins] = (0, import_react24.useState)(t1);
82382
+ const [browserTools, setBrowserTools] = (0, import_react24.useState)(_temp28);
82383
+ const [browserPermission, setBrowserPermission] = (0, import_react24.useState)("off");
82384
+ const [skipPermissions, setSkipPermissions2] = (0, import_react24.useState)(false);
82385
+ const [serverVersion, setServerVersion] = (0, import_react24.useState)(void 0);
82386
+ const [serverSourcePath, setServerSourcePath] = (0, import_react24.useState)(void 0);
82387
+ const [loading, setLoading] = (0, import_react24.useState)(true);
82014
82388
  let t2;
82015
82389
  if ($2[2] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
82016
82390
  t2 = /* @__PURE__ */ new Set();
@@ -82018,8 +82392,8 @@ var App = () => {
82018
82392
  } else {
82019
82393
  t2 = $2[2];
82020
82394
  }
82021
- const [activeTools, setActiveTools] = (0, import_react23.useState)(t2);
82022
- const [searchQuery, setSearchQuery] = (0, import_react23.useState)("");
82395
+ const [activeTools, setActiveTools] = (0, import_react24.useState)(t2);
82396
+ const [searchQuery, setSearchQuery] = (0, import_react24.useState)("");
82023
82397
  let t3;
82024
82398
  if ($2[3] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
82025
82399
  t3 = [];
@@ -82027,7 +82401,7 @@ var App = () => {
82027
82401
  } else {
82028
82402
  t3 = $2[3];
82029
82403
  }
82030
- const [pendingConfirmations, setPendingConfirmations] = (0, import_react23.useState)(t3);
82404
+ const [pendingConfirmations, setPendingConfirmations] = (0, import_react24.useState)(t3);
82031
82405
  let t4;
82032
82406
  if ($2[4] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
82033
82407
  t4 = [];
@@ -82035,9 +82409,9 @@ var App = () => {
82035
82409
  } else {
82036
82410
  t4 = $2[4];
82037
82411
  }
82038
- const [npmResults, setNpmResults] = (0, import_react23.useState)(t4);
82039
- const [npmSearching, setNpmSearching] = (0, import_react23.useState)(false);
82040
- const [npmSearchError, setNpmSearchError] = (0, import_react23.useState)(false);
82412
+ const [npmResults, setNpmResults] = (0, import_react24.useState)(t4);
82413
+ const [npmSearching, setNpmSearching] = (0, import_react24.useState)(false);
82414
+ const [npmSearchError, setNpmSearchError] = (0, import_react24.useState)(false);
82041
82415
  let t5;
82042
82416
  if ($2[5] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
82043
82417
  t5 = /* @__PURE__ */ new Set();
@@ -82045,7 +82419,7 @@ var App = () => {
82045
82419
  } else {
82046
82420
  t5 = $2[5];
82047
82421
  }
82048
- const [installingPlugins, setInstallingPlugins] = (0, import_react23.useState)(t5);
82422
+ const [installingPlugins, setInstallingPlugins] = (0, import_react24.useState)(t5);
82049
82423
  let t6;
82050
82424
  if ($2[6] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
82051
82425
  t6 = /* @__PURE__ */ new Set();
@@ -82053,7 +82427,7 @@ var App = () => {
82053
82427
  } else {
82054
82428
  t6 = $2[6];
82055
82429
  }
82056
- const [removingPlugins, setRemovingPlugins] = (0, import_react23.useState)(t6);
82430
+ const [removingPlugins, setRemovingPlugins] = (0, import_react24.useState)(t6);
82057
82431
  let t7;
82058
82432
  if ($2[7] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
82059
82433
  t7 = /* @__PURE__ */ new Set();
@@ -82061,7 +82435,7 @@ var App = () => {
82061
82435
  } else {
82062
82436
  t7 = $2[7];
82063
82437
  }
82064
- const [removingFailedPlugins, setRemovingFailedPlugins] = (0, import_react23.useState)(t7);
82438
+ const [removingFailedPlugins, setRemovingFailedPlugins] = (0, import_react24.useState)(t7);
82065
82439
  let t8;
82066
82440
  if ($2[8] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
82067
82441
  t8 = /* @__PURE__ */ new Map();
@@ -82069,7 +82443,7 @@ var App = () => {
82069
82443
  } else {
82070
82444
  t8 = $2[8];
82071
82445
  }
82072
- const [installErrors, setInstallErrors] = (0, import_react23.useState)(t8);
82446
+ const [installErrors, setInstallErrors] = (0, import_react24.useState)(t8);
82073
82447
  let t9;
82074
82448
  if ($2[9] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
82075
82449
  t9 = /* @__PURE__ */ new Map();
@@ -82077,9 +82451,9 @@ var App = () => {
82077
82451
  } else {
82078
82452
  t9 = $2[9];
82079
82453
  }
82080
- const [pluginErrors, setPluginErrors] = (0, import_react23.useState)(t9);
82081
- const [browserToolsOpen, setBrowserToolsOpen] = (0, import_react23.useState)(false);
82082
- const [browserToolsHydrated, setBrowserToolsHydrated] = (0, import_react23.useState)(false);
82454
+ const [pluginErrors, setPluginErrors] = (0, import_react24.useState)(t9);
82455
+ const [browserToolsOpen, setBrowserToolsOpen] = (0, import_react24.useState)(false);
82456
+ const [browserToolsHydrated, setBrowserToolsHydrated] = (0, import_react24.useState)(false);
82083
82457
  let t10;
82084
82458
  if ($2[10] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
82085
82459
  t10 = /* @__PURE__ */ new Map();
@@ -82087,12 +82461,12 @@ var App = () => {
82087
82461
  } else {
82088
82462
  t10 = $2[10];
82089
82463
  }
82090
- const pluginErrorTimers = (0, import_react23.useRef)(t10);
82091
- const npmSearchTimer = (0, import_react23.useRef)(void 0);
82092
- const npmSearchCounter = (0, import_react23.useRef)(0);
82093
- const connectedRef = (0, import_react23.useRef)(connected);
82094
- const loadingRef = (0, import_react23.useRef)(loading);
82095
- const pluginsRef = (0, import_react23.useRef)(plugins);
82464
+ const pluginErrorTimers = (0, import_react24.useRef)(t10);
82465
+ const npmSearchTimer = (0, import_react24.useRef)(void 0);
82466
+ const npmSearchCounter = (0, import_react24.useRef)(0);
82467
+ const connectedRef = (0, import_react24.useRef)(connected);
82468
+ const loadingRef = (0, import_react24.useRef)(loading);
82469
+ const pluginsRef = (0, import_react24.useRef)(plugins);
82096
82470
  let t11;
82097
82471
  let t12;
82098
82472
  if ($2[11] !== connected || $2[12] !== loading || $2[13] !== plugins) {
@@ -82111,7 +82485,7 @@ var App = () => {
82111
82485
  t11 = $2[14];
82112
82486
  t12 = $2[15];
82113
82487
  }
82114
- (0, import_react23.useEffect)(t11, t12);
82488
+ (0, import_react24.useEffect)(t11, t12);
82115
82489
  let t13;
82116
82490
  if ($2[16] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
82117
82491
  t13 = {
@@ -82141,7 +82515,7 @@ var App = () => {
82141
82515
  t14 = $2[17];
82142
82516
  t15 = $2[18];
82143
82517
  }
82144
- (0, import_react23.useEffect)(t14, t15);
82518
+ (0, import_react24.useEffect)(t14, t15);
82145
82519
  let t16;
82146
82520
  let t17;
82147
82521
  if ($2[19] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
@@ -82163,7 +82537,7 @@ var App = () => {
82163
82537
  t16 = $2[19];
82164
82538
  t17 = $2[20];
82165
82539
  }
82166
- (0, import_react23.useEffect)(t16, t17);
82540
+ (0, import_react24.useEffect)(t16, t17);
82167
82541
  let t18;
82168
82542
  if ($2[21] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
82169
82543
  t18 = (pluginName, message) => {
@@ -82471,7 +82845,7 @@ var App = () => {
82471
82845
  t25 = $2[29];
82472
82846
  t26 = $2[30];
82473
82847
  }
82474
- (0, import_react23.useEffect)(t25, t26);
82848
+ (0, import_react24.useEffect)(t25, t26);
82475
82849
  let t27;
82476
82850
  if ($2[31] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
82477
82851
  t27 = (id, decision, alwaysAllow) => {
@@ -82488,7 +82862,7 @@ var App = () => {
82488
82862
  const showSearchBar = connected && !loading;
82489
82863
  let t28;
82490
82864
  if ($2[32] !== connected || $2[33] !== pendingConfirmations) {
82491
- t28 = connected && /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(ConfirmationDialog, {
82865
+ t28 = connected && /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(ConfirmationDialog, {
82492
82866
  confirmations: pendingConfirmations,
82493
82867
  onRespond: handleConfirmationRespond
82494
82868
  });
@@ -82500,23 +82874,23 @@ var App = () => {
82500
82874
  }
82501
82875
  let t29;
82502
82876
  if ($2[35] !== skipPermissions) {
82503
- t29 = skipPermissions && /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)("div", {
82877
+ t29 = skipPermissions && /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)("div", {
82504
82878
  className: "shrink-0 border-destructive border-b-2 bg-destructive/15 px-4 py-1.5",
82505
- children: [/* @__PURE__ */ (0, import_jsx_runtime59.jsxs)("div", {
82879
+ children: [/* @__PURE__ */ (0, import_jsx_runtime60.jsxs)("div", {
82506
82880
  className: "flex items-center gap-1.5",
82507
- children: [/* @__PURE__ */ (0, import_jsx_runtime59.jsx)(ShieldOff, {
82881
+ children: [/* @__PURE__ */ (0, import_jsx_runtime60.jsx)(ShieldOff, {
82508
82882
  className: "h-3.5 w-3.5 shrink-0 text-destructive"
82509
- }), /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("span", {
82883
+ }), /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("span", {
82510
82884
  className: "font-head text-destructive text-xs uppercase",
82511
82885
  children: "Approvals skipped"
82512
82886
  })]
82513
- }), /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)("p", {
82887
+ }), /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)("p", {
82514
82888
  className: "mt-0.5 text-[11px] text-foreground/70 leading-tight",
82515
- children: ["AI runs tools without asking. Off tools stay off. Set by", " ", /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("code", {
82889
+ children: ["AI runs tools without asking. Off tools stay off. Set by", " ", /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("code", {
82516
82890
  className: "font-mono",
82517
82891
  children: "OPENTABS_DANGEROUSLY_SKIP_PERMISSIONS"
82518
82892
  }), "."]
82519
- }), /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("button", {
82893
+ }), /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("button", {
82520
82894
  type: "button",
82521
82895
  onClick: _temp92,
82522
82896
  className: "mt-0.5 cursor-pointer font-head text-[11px] text-destructive underline hover:text-destructive/80",
@@ -82530,23 +82904,23 @@ var App = () => {
82530
82904
  }
82531
82905
  let t30;
82532
82906
  if ($2[37] !== searchQuery || $2[38] !== showSearchBar) {
82533
- t30 = showSearchBar && /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("div", {
82907
+ t30 = showSearchBar && /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("div", {
82534
82908
  className: "shrink-0 px-4 pt-4 pb-2",
82535
- children: /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)("div", {
82909
+ children: /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)("div", {
82536
82910
  className: "relative",
82537
- children: [/* @__PURE__ */ (0, import_jsx_runtime59.jsx)(Search, {
82911
+ children: [/* @__PURE__ */ (0, import_jsx_runtime60.jsx)(Search, {
82538
82912
  className: "pointer-events-none absolute top-1/2 left-2 h-4 w-4 -translate-y-1/2 text-muted-foreground"
82539
- }), /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(Input, {
82913
+ }), /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(Input, {
82540
82914
  value: searchQuery,
82541
82915
  onChange: (e2) => handleSearchChange(e2.target.value),
82542
82916
  placeholder: "Search plugins and tools...",
82543
82917
  className: "pr-8 pl-9"
82544
- }), searchQuery && /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("button", {
82918
+ }), searchQuery && /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("button", {
82545
82919
  type: "button",
82546
82920
  "aria-label": "Clear search",
82547
82921
  onClick: () => handleSearchChange(""),
82548
82922
  className: "absolute top-1/2 right-2 -translate-y-1/2 cursor-pointer text-muted-foreground hover:text-foreground",
82549
- children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(X, {
82923
+ children: /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(X, {
82550
82924
  className: "h-4 w-4"
82551
82925
  })
82552
82926
  })]
@@ -82580,9 +82954,9 @@ var App = () => {
82580
82954
  const t33 = `px-4 pb-4 ${showSearchBar ? "pt-2" : "pt-4"} ${showPlugins ? "" : "flex min-h-full items-center justify-center"}`;
82581
82955
  let t34;
82582
82956
  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) {
82583
- t34 = loading ? /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(LoadingState, {}) : !connected ? /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(DisconnectedState, {
82957
+ t34 = loading ? /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(LoadingState, {}) : !connected ? /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(DisconnectedState, {
82584
82958
  reason: disconnectReason
82585
- }) : searchQuery ? /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(SearchResults, {
82959
+ }) : searchQuery ? /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(SearchResults, {
82586
82960
  plugins,
82587
82961
  failedPlugins,
82588
82962
  browserTools,
@@ -82603,8 +82977,8 @@ var App = () => {
82603
82977
  serverVersion,
82604
82978
  browserPermission,
82605
82979
  onBrowserPermissionChange: setBrowserPermission
82606
- }) : hasContent ? /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)(import_jsx_runtime59.Fragment, {
82607
- children: [browserTools.length > 0 && browserToolsHydrated && /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(AccordionComponent, {
82980
+ }) : hasContent ? /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(import_jsx_runtime60.Fragment, {
82981
+ children: [browserTools.length > 0 && browserToolsHydrated && /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(AccordionComponent, {
82608
82982
  type: "multiple",
82609
82983
  value: browserToolsOpen ? ["browser-tools"] : [],
82610
82984
  onValueChange: (val) => {
@@ -82615,7 +82989,7 @@ var App = () => {
82615
82989
  }).catch(_temp0);
82616
82990
  },
82617
82991
  className: "mb-2 space-y-2",
82618
- children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(BrowserToolsCard, {
82992
+ children: /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(BrowserToolsCard, {
82619
82993
  tools: browserTools,
82620
82994
  activeTools,
82621
82995
  onToolsChange: setBrowserTools,
@@ -82624,7 +82998,7 @@ var App = () => {
82624
82998
  browserPermission,
82625
82999
  onBrowserPermissionChange: setBrowserPermission
82626
83000
  })
82627
- }), /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(PluginList, {
83001
+ }), /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(PluginList, {
82628
83002
  plugins,
82629
83003
  failedPlugins,
82630
83004
  activeTools,
@@ -82636,19 +83010,19 @@ var App = () => {
82636
83010
  pluginErrors,
82637
83011
  onRemoveFailedPlugin: handleRemoveFailedPlugin,
82638
83012
  removingFailedPlugins
82639
- }), plugins.length === 0 && failedPlugins.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(EmptyComponent, {
83013
+ }), plugins.length === 0 && failedPlugins.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(EmptyComponent, {
82640
83014
  className: "border-muted",
82641
83015
  role: "status",
82642
- children: /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)(EmptyComponent.Content, {
82643
- children: [/* @__PURE__ */ (0, import_jsx_runtime59.jsx)(EmptyComponent.Icon, {
83016
+ children: /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(EmptyComponent.Content, {
83017
+ children: [/* @__PURE__ */ (0, import_jsx_runtime60.jsx)(EmptyComponent.Icon, {
82644
83018
  className: "h-10 w-10 text-muted-foreground",
82645
- children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(Package, {
83019
+ children: /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(Package, {
82646
83020
  size: 40
82647
83021
  })
82648
- }), /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(EmptyComponent.Title, {
83022
+ }), /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(EmptyComponent.Title, {
82649
83023
  className: "text-base",
82650
83024
  children: "No Plugins Installed"
82651
- }), /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(EmptyComponent.Separator, {}), /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(EmptyComponent.Description, {
83025
+ }), /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(EmptyComponent.Separator, {}), /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(EmptyComponent.Description, {
82652
83026
  className: "text-xs",
82653
83027
  children: "Use the search bar above to discover and install plugins from npm."
82654
83028
  })]
@@ -82683,11 +83057,11 @@ var App = () => {
82683
83057
  }
82684
83058
  let t35;
82685
83059
  if ($2[65] !== t33 || $2[66] !== t34) {
82686
- t35 = /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(g2, {
83060
+ t35 = /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(g2, {
82687
83061
  className: "flex-1",
82688
83062
  style: t31,
82689
83063
  options: t32,
82690
- children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("main", {
83064
+ children: /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("main", {
82691
83065
  className: t33,
82692
83066
  children: t34
82693
83067
  })
@@ -82700,15 +83074,15 @@ var App = () => {
82700
83074
  }
82701
83075
  let t36;
82702
83076
  if ($2[68] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
82703
- t36 = /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(Footer, {});
83077
+ t36 = /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(Footer, {});
82704
83078
  $2[68] = t36;
82705
83079
  } else {
82706
83080
  t36 = $2[68];
82707
83081
  }
82708
83082
  let t37;
82709
83083
  if ($2[69] !== t28 || $2[70] !== t29 || $2[71] !== t30 || $2[72] !== t35) {
82710
- t37 = /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(TooltipObject.Provider, {
82711
- children: /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)("div", {
83084
+ t37 = /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(TooltipObject.Provider, {
83085
+ children: /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)("div", {
82712
83086
  className: "flex h-screen flex-col overflow-hidden text-foreground",
82713
83087
  children: [t28, t29, t30, t35, t36]
82714
83088
  })
@@ -82723,14 +83097,14 @@ var App = () => {
82723
83097
  }
82724
83098
  return t37;
82725
83099
  };
82726
- function _temp14(t2) {
83100
+ function _temp15(t2) {
82727
83101
  return {
82728
83102
  ...t2,
82729
83103
  permission: "auto"
82730
83104
  };
82731
83105
  }
82732
- function _temp27() {
82733
- return BROWSER_TOOLS_CATALOG.map(_temp14);
83106
+ function _temp28() {
83107
+ return BROWSER_TOOLS_CATALOG.map(_temp15);
82734
83108
  }
82735
83109
  function _temp36(t_0) {
82736
83110
  return {
@@ -82764,9 +83138,9 @@ function _temp0() {
82764
83138
  }
82765
83139
 
82766
83140
  // src/side-panel/components/ErrorBoundary.tsx
82767
- var import_react24 = __toESM(require_react(), 1);
82768
- var import_jsx_runtime60 = __toESM(require_jsx_runtime(), 1);
82769
- var ErrorBoundary = class extends import_react24.Component {
83141
+ var import_react25 = __toESM(require_react(), 1);
83142
+ var import_jsx_runtime61 = __toESM(require_jsx_runtime(), 1);
83143
+ var ErrorBoundary = class extends import_react25.Component {
82770
83144
  state = {
82771
83145
  hasError: false
82772
83146
  };
@@ -82780,16 +83154,16 @@ var ErrorBoundary = class extends import_react24.Component {
82780
83154
  }
82781
83155
  render() {
82782
83156
  if (this.state.hasError) {
82783
- return /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("div", {
83157
+ return /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("div", {
82784
83158
  className: "flex min-h-screen flex-col items-center justify-center px-4 py-16 text-center",
82785
- children: /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(AlertComponent, {
83159
+ children: /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(AlertComponent, {
82786
83160
  status: "error",
82787
83161
  className: "max-w-xs",
82788
- children: [/* @__PURE__ */ (0, import_jsx_runtime60.jsx)(AlertComponent.Title, {
83162
+ children: [/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(AlertComponent.Title, {
82789
83163
  children: "Something went wrong"
82790
- }), /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(AlertComponent.Description, {
83164
+ }), /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(AlertComponent.Description, {
82791
83165
  children: "The side panel encountered an unexpected error."
82792
- }), /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(Button, {
83166
+ }), /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(Button, {
82793
83167
  variant: "default",
82794
83168
  size: "sm",
82795
83169
  className: "mt-4 w-full",
@@ -82804,15 +83178,15 @@ var ErrorBoundary = class extends import_react24.Component {
82804
83178
  };
82805
83179
 
82806
83180
  // src/side-panel/index.tsx
82807
- var import_jsx_runtime61 = __toESM(require_jsx_runtime(), 1);
83181
+ var import_jsx_runtime62 = __toESM(require_jsx_runtime(), 1);
82808
83182
  var rootEl = document.getElementById("root");
82809
83183
  if (!rootEl) {
82810
83184
  throw new Error("Root element not found");
82811
83185
  }
82812
83186
  var root = (0, import_client.createRoot)(rootEl);
82813
- root.render(/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_react25.StrictMode, {
82814
- children: /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(ErrorBoundary, {
82815
- children: /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(App, {})
83187
+ root.render(/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_react26.StrictMode, {
83188
+ children: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(ErrorBoundary, {
83189
+ children: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(App, {})
82816
83190
  })
82817
83191
  }));
82818
83192
  /*! Bundled license information: