@opentabs-dev/browser-extension 0.0.61 → 0.0.63

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 (87) hide show
  1. package/dist/background-message-handlers.d.ts +8 -14
  2. package/dist/background-message-handlers.d.ts.map +1 -1
  3. package/dist/background-message-handlers.js +54 -154
  4. package/dist/background-message-handlers.js.map +1 -1
  5. package/dist/background.js +112 -214
  6. package/dist/confirmation-badge.d.ts +3 -24
  7. package/dist/confirmation-badge.d.ts.map +1 -1
  8. package/dist/confirmation-badge.js +13 -98
  9. package/dist/confirmation-badge.js.map +1 -1
  10. package/dist/extension-messages.d.ts +19 -34
  11. package/dist/extension-messages.d.ts.map +1 -1
  12. package/dist/message-router.d.ts +2 -2
  13. package/dist/message-router.d.ts.map +1 -1
  14. package/dist/message-router.js +24 -10
  15. package/dist/message-router.js.map +1 -1
  16. package/dist/offscreen/index.js +4 -6
  17. package/dist/offscreen/index.js.map +1 -1
  18. package/dist/plugin-storage.js +3 -3
  19. package/dist/plugin-storage.js.map +1 -1
  20. package/dist/server-state-cache.d.ts +12 -6
  21. package/dist/server-state-cache.d.ts.map +1 -1
  22. package/dist/server-state-cache.js +51 -21
  23. package/dist/server-state-cache.js.map +1 -1
  24. package/dist/side-panel/App.d.ts.map +1 -1
  25. package/dist/side-panel/App.js +19 -26
  26. package/dist/side-panel/App.js.map +1 -1
  27. package/dist/side-panel/bridge.d.ts +13 -18
  28. package/dist/side-panel/bridge.d.ts.map +1 -1
  29. package/dist/side-panel/bridge.js +14 -13
  30. package/dist/side-panel/bridge.js.map +1 -1
  31. package/dist/side-panel/components/BrowserToolsCard.d.ts +4 -1
  32. package/dist/side-panel/components/BrowserToolsCard.d.ts.map +1 -1
  33. package/dist/side-panel/components/BrowserToolsCard.js +40 -22
  34. package/dist/side-panel/components/BrowserToolsCard.js.map +1 -1
  35. package/dist/side-panel/components/ConfirmationDialog.d.ts +4 -11
  36. package/dist/side-panel/components/ConfirmationDialog.d.ts.map +1 -1
  37. package/dist/side-panel/components/ConfirmationDialog.js +23 -34
  38. package/dist/side-panel/components/ConfirmationDialog.js.map +1 -1
  39. package/dist/side-panel/components/NpmPluginCard.d.ts.map +1 -1
  40. package/dist/side-panel/components/NpmPluginCard.js +1 -1
  41. package/dist/side-panel/components/NpmPluginCard.js.map +1 -1
  42. package/dist/side-panel/components/PluginCard.d.ts +2 -1
  43. package/dist/side-panel/components/PluginCard.d.ts.map +1 -1
  44. package/dist/side-panel/components/PluginCard.js +41 -40
  45. package/dist/side-panel/components/PluginCard.js.map +1 -1
  46. package/dist/side-panel/components/PluginIcon.d.ts +1 -2
  47. package/dist/side-panel/components/PluginIcon.d.ts.map +1 -1
  48. package/dist/side-panel/components/PluginIcon.js +36 -41
  49. package/dist/side-panel/components/PluginIcon.js.map +1 -1
  50. package/dist/side-panel/components/PluginList.d.ts +1 -1
  51. package/dist/side-panel/components/PluginList.d.ts.map +1 -1
  52. package/dist/side-panel/components/PluginList.js +99 -1
  53. package/dist/side-panel/components/PluginList.js.map +1 -1
  54. package/dist/side-panel/components/PluginMenu.d.ts.map +1 -1
  55. package/dist/side-panel/components/PluginMenu.js +1 -1
  56. package/dist/side-panel/components/PluginMenu.js.map +1 -1
  57. package/dist/side-panel/components/ToolIcon.d.ts.map +1 -1
  58. package/dist/side-panel/components/ToolIcon.js +9 -2
  59. package/dist/side-panel/components/ToolIcon.js.map +1 -1
  60. package/dist/side-panel/components/ToolRow.d.ts +14 -4
  61. package/dist/side-panel/components/ToolRow.d.ts.map +1 -1
  62. package/dist/side-panel/components/ToolRow.js +13 -3
  63. package/dist/side-panel/components/ToolRow.js.map +1 -1
  64. package/dist/side-panel/components/retro/Select.d.ts +13 -0
  65. package/dist/side-panel/components/retro/Select.d.ts.map +1 -0
  66. package/dist/side-panel/components/retro/Select.js +27 -0
  67. package/dist/side-panel/components/retro/Select.js.map +1 -0
  68. package/dist/side-panel/constants.d.ts +0 -2
  69. package/dist/side-panel/constants.d.ts.map +1 -1
  70. package/dist/side-panel/constants.js +0 -2
  71. package/dist/side-panel/constants.js.map +1 -1
  72. package/dist/side-panel/group-transitions.d.ts +55 -0
  73. package/dist/side-panel/group-transitions.d.ts.map +1 -0
  74. package/dist/side-panel/group-transitions.js +84 -0
  75. package/dist/side-panel/group-transitions.js.map +1 -0
  76. package/dist/side-panel/hooks/useServerNotifications.d.ts +1 -3
  77. package/dist/side-panel/hooks/useServerNotifications.d.ts.map +1 -1
  78. package/dist/side-panel/hooks/useServerNotifications.js +13 -41
  79. package/dist/side-panel/hooks/useServerNotifications.js.map +1 -1
  80. package/dist/side-panel/side-panel.js +5979 -4668
  81. package/dist/side-panel/styles.css +1 -1
  82. package/dist/tool-dispatch.d.ts +2 -1
  83. package/dist/tool-dispatch.d.ts.map +1 -1
  84. package/dist/tool-dispatch.js +4 -6
  85. package/dist/tool-dispatch.js.map +1 -1
  86. package/manifest.json +1 -1
  87. package/package.json +2 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ToolIcon.js","sourceRoot":"","sources":["../../../src/side-panel/components/ToolIcon.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC9D,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AASlC,MAAM,YAAY,GAAG,CAAC,EAAE,OAAO,GAAG,IAAI,EAAyB,EAAE,EAAE,CAAC,CAClE,KAAC,MAAM,IAAC,SAAS,EAAE,EAAE,CAAC,2BAA2B,EAAE,OAAO,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,uBAAuB,CAAC,GAAI,CACtH,CAAC;AAEF,MAAM,QAAQ,GAAG,CAAC,EAAE,IAAI,EAAE,SAAS,GAAG,EAAE,EAAE,OAAO,GAAG,IAAI,EAAE,MAAM,GAAG,KAAK,EAAiB,EAAE,EAAE;IAC3F,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAEpC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,aAAa,CAAC,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;YACrC,UAAU,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YACxC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC;YACzD,aAAa,CAAC,OAAO,GAAG,MAAM,CAAC;YAC/B,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC;QACD,aAAa,CAAC,OAAO,GAAG,MAAM,CAAC;QAC/B,OAAO;IACT,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,OAAO,CACL,eACE,SAAS,EAAE,EAAE,CACX,+FAA+F,EAC/F,OAAO,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,8BAA8B,EACrE,SAAS,CACV,aACA,IAAI,CAAC,CAAC,CAAC,CACN,KAAC,QAAQ,IAAC,QAAQ,EAAE,KAAC,YAAY,IAAC,OAAO,EAAE,OAAO,GAAI,YACpD,KAAC,WAAW,IACV,IAAI,EAAE,IAAgB,EACtB,SAAS,EAAE,EAAE,CAAC,2BAA2B,EAAE,OAAO,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,uBAAuB,CAAC,EACzG,QAAQ,EAAE,GAAG,EAAE,CAAC,KAAC,YAAY,IAAC,OAAO,EAAE,OAAO,GAAI,GAClD,GACO,CACZ,CAAC,CAAC,CAAC,CACF,KAAC,YAAY,IAAC,OAAO,EAAE,OAAO,GAAI,CACnC,EACA,CAAC,MAAM,IAAI,SAAS,CAAC,IAAI,CACxB,cACE,SAAS,EAAE,EAAE,CACX,uDAAuD,EACvD,MAAM,IAAI,wBAAwB,EAClC,SAAS,IAAI,CAAC,MAAM,IAAI,2BAA2B,CACpD,EACD,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,GACrD,CACH,IACG,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,OAAO,EAAE,QAAQ,EAAE,CAAC"}
1
+ {"version":3,"file":"ToolIcon.js","sourceRoot":"","sources":["../../../src/side-panel/components/ToolIcon.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC9D,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AASlC,MAAM,YAAY,GAAG,CAAC,EAAE,OAAO,GAAG,IAAI,EAAyB,EAAE,EAAE,CAAC,CAClE,KAAC,MAAM,IAAC,SAAS,EAAE,EAAE,CAAC,2BAA2B,EAAE,OAAO,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,uBAAuB,CAAC,GAAI,CACtH,CAAC;AAEF,MAAM,QAAQ,GAAG,CAAC,EAAE,IAAI,EAAE,SAAS,GAAG,EAAE,EAAE,OAAO,GAAG,IAAI,EAAE,MAAM,GAAG,KAAK,EAAiB,EAAE,EAAE;IAC3F,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAEpC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,aAAa,CAAC,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;YACrC,UAAU,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YACxC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC;YACzD,aAAa,CAAC,OAAO,GAAG,MAAM,CAAC;YAC/B,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC;QACD,aAAa,CAAC,OAAO,GAAG,MAAM,CAAC;QAC/B,OAAO;IACT,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,OAAO,CACL,cACE,SAAS,EAAE,EAAE,CACX,sFAAsF,EACtF,OAAO;YACL,CAAC,CAAC;gBACE,YAAY;gBACZ,MAAM,IAAI,+BAA+B;gBACzC,SAAS,IAAI,CAAC,MAAM,IAAI,kCAAkC;gBAC1D,CAAC,MAAM,IAAI,CAAC,SAAS,IAAI,eAAe;aACzC;YACH,CAAC,CAAC,8BAA8B,EAClC,SAAS,CACV,YACA,IAAI,CAAC,CAAC,CAAC,CACN,KAAC,QAAQ,IAAC,QAAQ,EAAE,KAAC,YAAY,IAAC,OAAO,EAAE,OAAO,GAAI,YACpD,KAAC,WAAW,IACV,IAAI,EAAE,IAAgB,EACtB,SAAS,EAAE,EAAE,CAAC,2BAA2B,EAAE,OAAO,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,uBAAuB,CAAC,EACzG,QAAQ,EAAE,GAAG,EAAE,CAAC,KAAC,YAAY,IAAC,OAAO,EAAE,OAAO,GAAI,GAClD,GACO,CACZ,CAAC,CAAC,CAAC,CACF,KAAC,YAAY,IAAC,OAAO,EAAE,OAAO,GAAI,CACnC,GACG,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,OAAO,EAAE,QAAQ,EAAE,CAAC"}
@@ -1,11 +1,21 @@
1
- declare const ToolRow: ({ name, displayName, description, icon, enabled, active, onToggle, }: {
1
+ import type { ToolPermission } from '@opentabs-dev/shared';
2
+ declare const PermissionSelect: ({ value, onValueChange, disabled, ariaLabel, }: {
3
+ value: ToolPermission;
4
+ onValueChange: (value: ToolPermission) => void;
5
+ disabled: boolean;
6
+ ariaLabel: string;
7
+ }) => import("react/jsx-runtime").JSX.Element;
8
+ declare const ToolRow: ({ name, displayName, description, summary, icon, permission, active, disabled, onPermissionChange, }: {
2
9
  name: string;
3
10
  displayName: string;
4
11
  description: string;
12
+ /** Short human-readable summary for the UI. Falls back to description if omitted. */
13
+ summary?: string;
5
14
  icon: string;
6
- enabled: boolean;
15
+ permission: ToolPermission;
7
16
  active: boolean;
8
- onToggle: () => void;
17
+ disabled?: boolean;
18
+ onPermissionChange: (tool: string, permission: ToolPermission) => void;
9
19
  }) => import("react/jsx-runtime").JSX.Element;
10
- export { ToolRow };
20
+ export { PermissionSelect, ToolRow };
11
21
  //# sourceMappingURL=ToolRow.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ToolRow.d.ts","sourceRoot":"","sources":["../../../src/side-panel/components/ToolRow.tsx"],"names":[],"mappings":"AAKA,QAAA,MAAM,OAAO,GAAI,sEAQd;IACD,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB,4CAyBA,CAAC;AAEF,OAAO,EAAE,OAAO,EAAE,CAAC"}
1
+ {"version":3,"file":"ToolRow.d.ts","sourceRoot":"","sources":["../../../src/side-panel/components/ToolRow.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAY3D,QAAA,MAAM,gBAAgB,GAAI,gDAKvB;IACD,KAAK,EAAE,cAAc,CAAC;IACtB,aAAa,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;IAC/C,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB,4CAiBA,CAAC;AAEF,QAAA,MAAM,OAAO,GAAI,sGAUd;IACD,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,qFAAqF;IACrF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,cAAc,CAAC;IAC3B,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,kBAAkB,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,cAAc,KAAK,IAAI,CAAC;CACxE,4CA8BA,CAAC;AAEF,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,CAAC"}
@@ -1,8 +1,18 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { cn } from '../lib/cn.js';
3
- import { Switch } from './retro/Switch.js';
3
+ import { Select } from './retro/Select.js';
4
4
  import { Tooltip } from './retro/Tooltip.js';
5
5
  import { ToolIcon } from './ToolIcon.js';
6
- const ToolRow = ({ name, displayName, description, icon, enabled, active, onToggle, }) => (_jsxs("div", { className: cn('flex items-center gap-2 border-border border-b px-3 py-1.5 transition-colors last:border-b-0 even:bg-muted/10', enabled ? 'hover:bg-primary/10' : 'hover:bg-muted/50'), children: [_jsx(ToolIcon, { icon: icon, enabled: enabled, active: active }), _jsxs(Tooltip, { children: [_jsx(Tooltip.Trigger, { asChild: true, children: _jsxs("div", { className: "min-w-0 flex-1", children: [_jsx("div", { className: "truncate text-foreground text-sm", children: displayName }), _jsx("div", { className: "truncate text-muted-foreground text-xs", children: description })] }) }), _jsx(Tooltip.Content, { children: description })] }), _jsx("div", { className: "flex shrink-0 items-center gap-2", children: _jsx(Switch, { checked: enabled, onCheckedChange: () => onToggle(), onClick: (e) => e.stopPropagation(), "aria-label": `Toggle ${name} tool` }) })] }));
7
- export { ToolRow };
6
+ const PERMISSION_LABELS = {
7
+ off: 'Off',
8
+ ask: 'Ask',
9
+ auto: 'Auto',
10
+ };
11
+ const PermissionSelect = ({ value, onValueChange, disabled, ariaLabel, }) => (_jsxs(Select, { value: value, onValueChange: (v) => onValueChange(v), children: [_jsx(Select.Trigger, { className: "h-6 w-[4.5rem] min-w-0 px-1.5 py-0 font-mono text-xs shadow-none focus:shadow-none", onClick: (e) => e.stopPropagation(), disabled: disabled, "aria-label": ariaLabel, children: _jsx(Select.Value, {}) }), _jsx(Select.Content, { className: "font-mono text-xs", children: ['off', 'ask', 'auto'].map(p => (_jsx(Select.Item, { value: p, children: PERMISSION_LABELS[p] }, p))) })] }));
12
+ const ToolRow = ({ name, displayName, description, summary, icon, permission, active, disabled, onPermissionChange, }) => {
13
+ const enabled = permission !== 'off';
14
+ const displayDescription = summary ?? description;
15
+ return (_jsxs("div", { className: cn('flex items-center gap-2 border-border border-b px-3 py-1.5 transition-colors last:border-b-0 even:bg-muted/10', enabled ? 'hover:bg-primary/10' : 'hover:bg-muted/50', disabled && 'opacity-50'), children: [_jsx(ToolIcon, { icon: icon, enabled: enabled, active: active }), _jsxs(Tooltip, { children: [_jsx(Tooltip.Trigger, { asChild: true, children: _jsxs("div", { className: "min-w-0 flex-1", children: [_jsx("div", { className: "truncate text-foreground text-sm", children: displayName }), _jsx("div", { className: "truncate text-muted-foreground text-xs", children: displayDescription })] }) }), _jsx(Tooltip.Content, { children: displayDescription })] }), _jsx("div", { className: "flex shrink-0 items-center gap-2", children: _jsx(PermissionSelect, { value: permission, onValueChange: p => onPermissionChange(name, p), disabled: disabled ?? false, ariaLabel: `Permission for ${name} tool` }) })] }));
16
+ };
17
+ export { PermissionSelect, ToolRow };
8
18
  //# sourceMappingURL=ToolRow.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ToolRow.js","sourceRoot":"","sources":["../../../src/side-panel/components/ToolRow.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,MAAM,OAAO,GAAG,CAAC,EACf,IAAI,EACJ,WAAW,EACX,WAAW,EACX,IAAI,EACJ,OAAO,EACP,MAAM,EACN,QAAQ,GAST,EAAE,EAAE,CAAC,CACJ,eACE,SAAS,EAAE,EAAE,CACX,+GAA+G,EAC/G,OAAO,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,mBAAmB,CACtD,aACD,KAAC,QAAQ,IAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAI,EAC1D,MAAC,OAAO,eACN,KAAC,OAAO,CAAC,OAAO,IAAC,OAAO,kBACtB,eAAK,SAAS,EAAC,gBAAgB,aAC7B,cAAK,SAAS,EAAC,kCAAkC,YAAE,WAAW,GAAO,EACrE,cAAK,SAAS,EAAC,wCAAwC,YAAE,WAAW,GAAO,IACvE,GACU,EAClB,KAAC,OAAO,CAAC,OAAO,cAAE,WAAW,GAAmB,IACxC,EACV,cAAK,SAAS,EAAC,kCAAkC,YAC/C,KAAC,MAAM,IACL,OAAO,EAAE,OAAO,EAChB,eAAe,EAAE,GAAG,EAAE,CAAC,QAAQ,EAAE,EACjC,OAAO,EAAE,CAAC,CAAmB,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,gBACzC,UAAU,IAAI,OAAO,GACjC,GACE,IACF,CACP,CAAC;AAEF,OAAO,EAAE,OAAO,EAAE,CAAC"}
1
+ {"version":3,"file":"ToolRow.js","sourceRoot":"","sources":["../../../src/side-panel/components/ToolRow.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,MAAM,iBAAiB,GAAmC;IACxD,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,IAAI,EAAE,MAAM;CACb,CAAC;AAEF,MAAM,gBAAgB,GAAG,CAAC,EACxB,KAAK,EACL,aAAa,EACb,QAAQ,EACR,SAAS,GAMV,EAAE,EAAE,CAAC,CACJ,MAAC,MAAM,IAAC,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,aAAa,CAAC,CAAmB,CAAC,aACpF,KAAC,MAAM,CAAC,OAAO,IACb,SAAS,EAAC,oFAAoF,EAC9F,OAAO,EAAE,CAAC,CAAmB,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,EACrD,QAAQ,EAAE,QAAQ,gBACN,SAAS,YACrB,KAAC,MAAM,CAAC,KAAK,KAAG,GACD,EACjB,KAAC,MAAM,CAAC,OAAO,IAAC,SAAS,EAAC,mBAAmB,YACzC,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAC1C,KAAC,MAAM,CAAC,IAAI,IAAS,KAAK,EAAE,CAAC,YAC1B,iBAAiB,CAAC,CAAC,CAAC,IADL,CAAC,CAEL,CACf,CAAC,GACa,IACV,CACV,CAAC;AAEF,MAAM,OAAO,GAAG,CAAC,EACf,IAAI,EACJ,WAAW,EACX,WAAW,EACX,OAAO,EACP,IAAI,EACJ,UAAU,EACV,MAAM,EACN,QAAQ,EACR,kBAAkB,GAYnB,EAAE,EAAE;IACH,MAAM,OAAO,GAAG,UAAU,KAAK,KAAK,CAAC;IACrC,MAAM,kBAAkB,GAAG,OAAO,IAAI,WAAW,CAAC;IAClD,OAAO,CACL,eACE,SAAS,EAAE,EAAE,CACX,+GAA+G,EAC/G,OAAO,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,mBAAmB,EACrD,QAAQ,IAAI,YAAY,CACzB,aACD,KAAC,QAAQ,IAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAI,EAC1D,MAAC,OAAO,eACN,KAAC,OAAO,CAAC,OAAO,IAAC,OAAO,kBACtB,eAAK,SAAS,EAAC,gBAAgB,aAC7B,cAAK,SAAS,EAAC,kCAAkC,YAAE,WAAW,GAAO,EACrE,cAAK,SAAS,EAAC,wCAAwC,YAAE,kBAAkB,GAAO,IAC9E,GACU,EAClB,KAAC,OAAO,CAAC,OAAO,cAAE,kBAAkB,GAAmB,IAC/C,EACV,cAAK,SAAS,EAAC,kCAAkC,YAC/C,KAAC,gBAAgB,IACf,KAAK,EAAE,UAAU,EACjB,aAAa,EAAE,CAAC,CAAC,EAAE,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC,CAAC,EAC/C,QAAQ,EAAE,QAAQ,IAAI,KAAK,EAC3B,SAAS,EAAE,kBAAkB,IAAI,OAAO,GACxC,GACE,IACF,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,CAAC"}
@@ -0,0 +1,13 @@
1
+ import * as SelectPrimitive from '@radix-ui/react-select';
2
+ declare const SelectObj: import("react").FC<SelectPrimitive.SelectProps> & {
3
+ Trigger: ({ className, children, ...props }: SelectPrimitive.SelectTriggerProps) => import("react/jsx-runtime").JSX.Element;
4
+ Value: import("react").ForwardRefExoticComponent<SelectPrimitive.SelectValueProps & import("react").RefAttributes<HTMLSpanElement>>;
5
+ Icon: import("react").ForwardRefExoticComponent<SelectPrimitive.SelectIconProps & import("react").RefAttributes<HTMLSpanElement>>;
6
+ Content: ({ className, children, position, ...props }: SelectPrimitive.SelectContentProps) => import("react/jsx-runtime").JSX.Element;
7
+ Group: import("react").ForwardRefExoticComponent<SelectPrimitive.SelectGroupProps & import("react").RefAttributes<HTMLDivElement>>;
8
+ Item: ({ className, children, ...props }: SelectPrimitive.SelectItemProps) => import("react/jsx-runtime").JSX.Element;
9
+ Label: import("react").ForwardRefExoticComponent<SelectPrimitive.SelectLabelProps & import("react").RefAttributes<HTMLDivElement>>;
10
+ Separator: import("react").ForwardRefExoticComponent<SelectPrimitive.SelectSeparatorProps & import("react").RefAttributes<HTMLDivElement>>;
11
+ };
12
+ export { SelectObj as Select };
13
+ //# sourceMappingURL=Select.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Select.d.ts","sourceRoot":"","sources":["../../../../src/side-panel/components/retro/Select.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,eAAe,MAAM,wBAAwB,CAAC;AA0E1D,QAAA,MAAM,SAAS;iDApE2C,eAAe,CAAC,kBAAkB;;;2DAkBb,eAAe,CAAC,kBAAkB;;8CA8B1D,eAAe,CAAC,eAAe;;;CA6BpF,CAAC;AAEH,OAAO,EAAE,SAAS,IAAI,MAAM,EAAE,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import * as SelectPrimitive from '@radix-ui/react-select';
3
+ import { Check, ChevronDown, ChevronUp } from 'lucide-react';
4
+ import { cn } from '../../lib/cn.js';
5
+ const Select = SelectPrimitive.Root;
6
+ const SelectTrigger = ({ className, children, ...props }) => (_jsxs(SelectPrimitive.Trigger, { className: cn('flex h-10 min-w-40 items-center justify-between rounded border-2 border-border bg-transparent px-4 py-2 shadow-md outline-none placeholder:text-muted-foreground focus:shadow-xs focus:outline-none focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50', className), ...props, children: [children, _jsx(SelectPrimitive.Icon, { asChild: true, children: _jsx(ChevronDown, { className: "ml-2 h-4 w-4" }) })] }));
7
+ const SelectValue = SelectPrimitive.Value;
8
+ const SelectIcon = SelectPrimitive.Icon;
9
+ const SelectContent = ({ className, children, position = 'popper', ...props }) => (_jsx(SelectPrimitive.Portal, { children: _jsxs(SelectPrimitive.Content, { className: cn('data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 min-w-[8rem] overflow-hidden border border-border bg-background text-foreground shadow-md data-[state=closed]:animate-out data-[state=open]:animate-in', position === 'popper' &&
10
+ 'data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=bottom]:translate-y-1 data-[side=top]:-translate-y-1', className), position: position, ...props, children: [_jsx(SelectPrimitive.ScrollUpButton, { className: "flex cursor-default items-center justify-center py-1 text-muted-foreground", children: _jsx(ChevronUp, { className: "h-4 w-4" }) }), _jsx(SelectPrimitive.Viewport, { className: cn(position === 'popper' &&
11
+ 'h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]'), children: children }), _jsx(SelectPrimitive.ScrollDownButton, { className: "flex cursor-default items-center justify-center py-1 text-muted-foreground", children: _jsx(ChevronDown, { className: "h-4 w-4" }) })] }) }));
12
+ const SelectGroup = SelectPrimitive.Group;
13
+ const SelectItem = ({ className, children, ...props }) => (_jsxs(SelectPrimitive.Item, { className: cn('relative flex w-full cursor-default select-none items-center px-2 py-1.5 outline-none focus:bg-primary focus:text-primary-foreground data-disabled:pointer-events-none data-[highlighted]:bg-primary data-[highlighted]:text-primary-foreground data-disabled:opacity-50', className), ...props, children: [_jsx(SelectPrimitive.ItemText, { children: children }), _jsx("span", { className: "absolute right-2 flex h-3.5 w-3.5 items-center justify-center", children: _jsx(SelectPrimitive.ItemIndicator, { children: _jsx(Check, { className: "h-4 w-4 text-foreground" }) }) })] }));
14
+ const SelectLabel = SelectPrimitive.Label;
15
+ const SelectSeparator = SelectPrimitive.Separator;
16
+ const SelectObj = Object.assign(Select, {
17
+ Trigger: SelectTrigger,
18
+ Value: SelectValue,
19
+ Icon: SelectIcon,
20
+ Content: SelectContent,
21
+ Group: SelectGroup,
22
+ Item: SelectItem,
23
+ Label: SelectLabel,
24
+ Separator: SelectSeparator,
25
+ });
26
+ export { SelectObj as Select };
27
+ //# sourceMappingURL=Select.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Select.js","sourceRoot":"","sources":["../../../../src/side-panel/components/retro/Select.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,eAAe,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAErC,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC;AAEpC,MAAM,aAAa,GAAG,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAsC,EAAE,EAAE,CAAC,CAC/F,MAAC,eAAe,CAAC,OAAO,IACtB,SAAS,EAAE,EAAE,CACX,gRAAgR,EAChR,SAAS,CACV,KACG,KAAK,aACR,QAAQ,EACT,KAAC,eAAe,CAAC,IAAI,IAAC,OAAO,kBAC3B,KAAC,WAAW,IAAC,SAAS,EAAC,cAAc,GAAG,GACnB,IACC,CAC3B,CAAC;AAEF,MAAM,WAAW,GAAG,eAAe,CAAC,KAAK,CAAC;AAE1C,MAAM,UAAU,GAAG,eAAe,CAAC,IAAI,CAAC;AAExC,MAAM,aAAa,GAAG,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,GAAG,QAAQ,EAAE,GAAG,KAAK,EAAsC,EAAE,EAAE,CAAC,CACpH,KAAC,eAAe,CAAC,MAAM,cACrB,MAAC,eAAe,CAAC,OAAO,IACtB,SAAS,EAAE,EAAE,CACX,0bAA0b,EAC1b,QAAQ,KAAK,QAAQ;YACnB,iIAAiI,EACnI,SAAS,CACV,EACD,QAAQ,EAAE,QAAQ,KACd,KAAK,aACT,KAAC,eAAe,CAAC,cAAc,IAAC,SAAS,EAAC,4EAA4E,YACpH,KAAC,SAAS,IAAC,SAAS,EAAC,SAAS,GAAG,GACF,EACjC,KAAC,eAAe,CAAC,QAAQ,IACvB,SAAS,EAAE,EAAE,CACX,QAAQ,KAAK,QAAQ;oBACnB,yFAAyF,CAC5F,YACA,QAAQ,GACgB,EAC3B,KAAC,eAAe,CAAC,gBAAgB,IAAC,SAAS,EAAC,4EAA4E,YACtH,KAAC,WAAW,IAAC,SAAS,EAAC,SAAS,GAAG,GACF,IACX,GACH,CAC1B,CAAC;AAEF,MAAM,WAAW,GAAG,eAAe,CAAC,KAAK,CAAC;AAE1C,MAAM,UAAU,GAAG,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAmC,EAAE,EAAE,CAAC,CACzF,MAAC,eAAe,CAAC,IAAI,IACnB,SAAS,EAAE,EAAE,CACX,0QAA0Q,EAC1Q,SAAS,CACV,KACG,KAAK,aACT,KAAC,eAAe,CAAC,QAAQ,cAAE,QAAQ,GAA4B,EAE/D,eAAM,SAAS,EAAC,+DAA+D,YAC7E,KAAC,eAAe,CAAC,aAAa,cAC5B,KAAC,KAAK,IAAC,SAAS,EAAC,yBAAyB,GAAG,GACf,GAC3B,IACc,CACxB,CAAC;AAEF,MAAM,WAAW,GAAG,eAAe,CAAC,KAAK,CAAC;AAC1C,MAAM,eAAe,GAAG,eAAe,CAAC,SAAS,CAAC;AAElD,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE;IACtC,OAAO,EAAE,aAAa;IACtB,KAAK,EAAE,WAAW;IAClB,IAAI,EAAE,UAAU;IAChB,OAAO,EAAE,aAAa;IACtB,KAAK,EAAE,WAAW;IAClB,IAAI,EAAE,UAAU;IAChB,KAAK,EAAE,WAAW;IAClB,SAAS,EAAE,eAAe;CAC3B,CAAC,CAAC;AAEH,OAAO,EAAE,SAAS,IAAI,MAAM,EAAE,CAAC"}
@@ -1,7 +1,5 @@
1
1
  /** Duration (ms) to display toggle-error alerts before auto-dismissing */
2
2
  export declare const ERROR_DISPLAY_DURATION_MS = 3000;
3
- /** Interval (ms) between countdown bar progress updates */
4
- export declare const COUNTDOWN_POLL_INTERVAL_MS = 200;
5
3
  /** Maximum duration (ms) a tool invocation can remain in activeTools before being auto-removed */
6
4
  export declare const TOOL_INVOCATION_TIMEOUT_MS: number;
7
5
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/side-panel/constants.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,eAAO,MAAM,yBAAyB,OAAO,CAAC;AAC9C,2DAA2D;AAC3D,eAAO,MAAM,0BAA0B,MAAM,CAAC;AAC9C,kGAAkG;AAClG,eAAO,MAAM,0BAA0B,QAAgB,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/side-panel/constants.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,eAAO,MAAM,yBAAyB,OAAO,CAAC;AAC9C,kGAAkG;AAClG,eAAO,MAAM,0BAA0B,QAAgB,CAAC"}
@@ -1,7 +1,5 @@
1
1
  /** Duration (ms) to display toggle-error alerts before auto-dismissing */
2
2
  export const ERROR_DISPLAY_DURATION_MS = 3000;
3
- /** Interval (ms) between countdown bar progress updates */
4
- export const COUNTDOWN_POLL_INTERVAL_MS = 200;
5
3
  /** Maximum duration (ms) a tool invocation can remain in activeTools before being auto-removed */
6
4
  export const TOOL_INVOCATION_TIMEOUT_MS = 5 * 60 * 1000;
7
5
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/side-panel/constants.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,MAAM,CAAC,MAAM,yBAAyB,GAAG,IAAI,CAAC;AAC9C,2DAA2D;AAC3D,MAAM,CAAC,MAAM,0BAA0B,GAAG,GAAG,CAAC;AAC9C,kGAAkG;AAClG,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/side-panel/constants.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,MAAM,CAAC,MAAM,yBAAyB,GAAG,IAAI,CAAC;AAC9C,kGAAkG;AAClG,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Pure logic for plugin readiness grouping and transition animations.
3
+ *
4
+ * Extracted from PluginList so it can be tested without React rendering.
5
+ * The React hook in PluginList drives this state machine with timers.
6
+ */
7
+ import type { TabState } from '@opentabs-dev/shared';
8
+ /** Duration for fade-in animation at the new position (ms) */
9
+ declare const FADE_IN_MS = 200;
10
+ interface GroupablePlugin {
11
+ readonly name: string;
12
+ readonly tabState: TabState;
13
+ }
14
+ interface GroupResult<T extends GroupablePlugin> {
15
+ readonly ready: T[];
16
+ readonly notReady: T[];
17
+ }
18
+ /**
19
+ * Split plugins into ready and not-ready groups.
20
+ * A plugin is "ready" only when tabState === 'ready'.
21
+ * Both 'unavailable' and 'closed' are not-ready.
22
+ */
23
+ declare function groupPlugins<T extends GroupablePlugin>(plugins: readonly T[]): GroupResult<T>;
24
+ /**
25
+ * Detect which plugins changed readiness group between two snapshots.
26
+ * Returns the set of plugin names that crossed the ready/not-ready boundary.
27
+ *
28
+ * A plugin that was not present in the previous snapshot is treated as new
29
+ * (no transition). A plugin that disappeared is ignored.
30
+ */
31
+ declare function detectGroupChanges(prev: ReadonlyMap<string, TabState>, current: readonly GroupablePlugin[]): Set<string>;
32
+ /**
33
+ * Build a snapshot map of plugin name → tabState for change detection.
34
+ */
35
+ declare function buildStateSnapshot(plugins: readonly GroupablePlugin[]): Map<string, TabState>;
36
+ /**
37
+ * Resolve the CSS class for a plugin that is currently animating.
38
+ * Returns undefined if the plugin is not animating.
39
+ *
40
+ * - Ready group target: full opacity fade-in
41
+ * - Not-ready group target: reduced opacity (0.7) fade-in
42
+ */
43
+ declare function getTransitionClass(pluginName: string, isReadyGroup: boolean, animating: ReadonlySet<string>): string | undefined;
44
+ /**
45
+ * Remove transitioning plugins from an accordion's open list.
46
+ * When a plugin changes groups, its expanded state must be reset
47
+ * so it arrives collapsed at its new position.
48
+ *
49
+ * Returns the original array (same reference) if nothing was removed,
50
+ * or a new filtered array if any items were removed.
51
+ */
52
+ declare function collapseTransitioningItems(openItems: readonly string[], animating: ReadonlySet<string>): string[];
53
+ export { FADE_IN_MS, buildStateSnapshot, collapseTransitioningItems, detectGroupChanges, getTransitionClass, groupPlugins, };
54
+ export type { GroupResult, GroupablePlugin };
55
+ //# sourceMappingURL=group-transitions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"group-transitions.d.ts","sourceRoot":"","sources":["../../src/side-panel/group-transitions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAErD,8DAA8D;AAC9D,QAAA,MAAM,UAAU,MAAM,CAAC;AAIvB,UAAU,eAAe;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;CAC7B;AAED,UAAU,WAAW,CAAC,CAAC,SAAS,eAAe;IAC7C,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC;CACxB;AAED;;;;GAIG;AACH,iBAAS,YAAY,CAAC,CAAC,SAAS,eAAe,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,GAAG,WAAW,CAAC,CAAC,CAAC,CAWtF;AAID;;;;;;GAMG;AACH,iBAAS,kBAAkB,CAAC,IAAI,EAAE,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,SAAS,eAAe,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,CAYjH;AAED;;GAEG;AACH,iBAAS,kBAAkB,CAAC,OAAO,EAAE,SAAS,eAAe,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAEtF;AAID;;;;;;GAMG;AACH,iBAAS,kBAAkB,CACzB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,OAAO,EACrB,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,GAC7B,MAAM,GAAG,SAAS,CAGpB;AAID;;;;;;;GAOG;AACH,iBAAS,0BAA0B,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,EAAE,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,MAAM,EAAE,CAI1G;AAED,OAAO,EACL,UAAU,EACV,kBAAkB,EAClB,0BAA0B,EAC1B,kBAAkB,EAClB,kBAAkB,EAClB,YAAY,GACb,CAAC;AACF,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,CAAC"}
@@ -0,0 +1,84 @@
1
+ /**
2
+ * Pure logic for plugin readiness grouping and transition animations.
3
+ *
4
+ * Extracted from PluginList so it can be tested without React rendering.
5
+ * The React hook in PluginList drives this state machine with timers.
6
+ */
7
+ /** Duration for fade-in animation at the new position (ms) */
8
+ const FADE_IN_MS = 200;
9
+ /**
10
+ * Split plugins into ready and not-ready groups.
11
+ * A plugin is "ready" only when tabState === 'ready'.
12
+ * Both 'unavailable' and 'closed' are not-ready.
13
+ */
14
+ function groupPlugins(plugins) {
15
+ const ready = [];
16
+ const notReady = [];
17
+ for (const p of plugins) {
18
+ if (p.tabState === 'ready') {
19
+ ready.push(p);
20
+ }
21
+ else {
22
+ notReady.push(p);
23
+ }
24
+ }
25
+ return { ready, notReady };
26
+ }
27
+ // ─── Change detection ────────────────────────────────────────────────────────
28
+ /**
29
+ * Detect which plugins changed readiness group between two snapshots.
30
+ * Returns the set of plugin names that crossed the ready/not-ready boundary.
31
+ *
32
+ * A plugin that was not present in the previous snapshot is treated as new
33
+ * (no transition). A plugin that disappeared is ignored.
34
+ */
35
+ function detectGroupChanges(prev, current) {
36
+ const changed = new Set();
37
+ for (const plugin of current) {
38
+ const prevState = prev.get(plugin.name);
39
+ if (prevState === undefined)
40
+ continue; // new plugin — no transition
41
+ const wasReady = prevState === 'ready';
42
+ const isReady = plugin.tabState === 'ready';
43
+ if (wasReady !== isReady) {
44
+ changed.add(plugin.name);
45
+ }
46
+ }
47
+ return changed;
48
+ }
49
+ /**
50
+ * Build a snapshot map of plugin name → tabState for change detection.
51
+ */
52
+ function buildStateSnapshot(plugins) {
53
+ return new Map(plugins.map(p => [p.name, p.tabState]));
54
+ }
55
+ // ─── Animation classes ───────────────────────────────────────────────────────
56
+ /**
57
+ * Resolve the CSS class for a plugin that is currently animating.
58
+ * Returns undefined if the plugin is not animating.
59
+ *
60
+ * - Ready group target: full opacity fade-in
61
+ * - Not-ready group target: reduced opacity (0.7) fade-in
62
+ */
63
+ function getTransitionClass(pluginName, isReadyGroup, animating) {
64
+ if (!animating.has(pluginName))
65
+ return undefined;
66
+ return isReadyGroup ? 'animate-group-fade-in' : 'animate-group-fade-in-dim';
67
+ }
68
+ // ─── Accordion open state ────────────────────────────────────────────────────
69
+ /**
70
+ * Remove transitioning plugins from an accordion's open list.
71
+ * When a plugin changes groups, its expanded state must be reset
72
+ * so it arrives collapsed at its new position.
73
+ *
74
+ * Returns the original array (same reference) if nothing was removed,
75
+ * or a new filtered array if any items were removed.
76
+ */
77
+ function collapseTransitioningItems(openItems, animating) {
78
+ if (animating.size === 0)
79
+ return openItems;
80
+ const filtered = openItems.filter(name => !animating.has(name));
81
+ return filtered.length === openItems.length ? openItems : filtered;
82
+ }
83
+ export { FADE_IN_MS, buildStateSnapshot, collapseTransitioningItems, detectGroupChanges, getTransitionClass, groupPlugins, };
84
+ //# sourceMappingURL=group-transitions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"group-transitions.js","sourceRoot":"","sources":["../../src/side-panel/group-transitions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,8DAA8D;AAC9D,MAAM,UAAU,GAAG,GAAG,CAAC;AAcvB;;;;GAIG;AACH,SAAS,YAAY,CAA4B,OAAqB;IACpE,MAAM,KAAK,GAAQ,EAAE,CAAC;IACtB,MAAM,QAAQ,GAAQ,EAAE,CAAC;IACzB,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;YAC3B,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChB,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACnB,CAAC;IACH,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AAC7B,CAAC;AAED,gFAAgF;AAEhF;;;;;;GAMG;AACH,SAAS,kBAAkB,CAAC,IAAmC,EAAE,OAAmC;IAClG,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,SAAS,KAAK,SAAS;YAAE,SAAS,CAAC,6BAA6B;QACpE,MAAM,QAAQ,GAAG,SAAS,KAAK,OAAO,CAAC;QACvC,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,KAAK,OAAO,CAAC;QAC5C,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB,CAAC,OAAmC;IAC7D,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,gFAAgF;AAEhF;;;;;;GAMG;AACH,SAAS,kBAAkB,CACzB,UAAkB,EAClB,YAAqB,EACrB,SAA8B;IAE9B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC;QAAE,OAAO,SAAS,CAAC;IACjD,OAAO,YAAY,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,2BAA2B,CAAC;AAC9E,CAAC;AAED,gFAAgF;AAEhF;;;;;;;GAOG;AACH,SAAS,0BAA0B,CAAC,SAA4B,EAAE,SAA8B;IAC9F,IAAI,SAAS,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,SAAqB,CAAC;IACvD,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IAChE,OAAO,QAAQ,CAAC,MAAM,KAAK,SAAS,CAAC,MAAM,CAAC,CAAC,CAAE,SAAsB,CAAC,CAAC,CAAC,QAAQ,CAAC;AACnF,CAAC;AAED,OAAO,EACL,UAAU,EACV,kBAAkB,EAClB,0BAA0B,EAC1B,kBAAkB,EAClB,kBAAkB,EAClB,YAAY,GACb,CAAC"}
@@ -7,12 +7,10 @@ interface UseServerNotificationsParams {
7
7
  }
8
8
  interface UseServerNotificationsResult {
9
9
  handleNotification: (data: Record<string, unknown>) => void;
10
- clearConfirmationTimeout: (id: string) => void;
11
10
  }
12
11
  /**
13
12
  * Returns a stable callback that processes server notification messages
14
- * (confirmation.request, tab.stateChanged, tool.invocationStart, tool.invocationEnd)
15
- * and a function to clear a confirmation's auto-removal timeout.
13
+ * (confirmation.request, tab.stateChanged, tool.invocationStart, tool.invocationEnd).
16
14
  */
17
15
  declare const useServerNotifications: ({ setPlugins, setActiveTools, setPendingConfirmations, }: UseServerNotificationsParams) => UseServerNotificationsResult;
18
16
  export { useServerNotifications };
@@ -1 +1 @@
1
- {"version":3,"file":"useServerNotifications.d.ts","sourceRoot":"","sources":["../../../src/side-panel/hooks/useServerNotifications.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAK5E,UAAU,4BAA4B;IACpC,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IAChE,cAAc,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAClE,uBAAuB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;CACnF;AAED,UAAU,4BAA4B;IACpC,kBAAkB,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IAC5D,wBAAwB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;CAChD;AAED;;;;GAIG;AACH,QAAA,MAAM,sBAAsB,GAAI,0DAI7B,4BAA4B,KAAG,4BA6HjC,CAAC;AAEF,OAAO,EAAE,sBAAsB,EAAE,CAAC"}
1
+ {"version":3,"file":"useServerNotifications.d.ts","sourceRoot":"","sources":["../../../src/side-panel/hooks/useServerNotifications.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAK5E,UAAU,4BAA4B;IACpC,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IAChE,cAAc,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAClE,uBAAuB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;CACnF;AAED,UAAU,4BAA4B;IACpC,kBAAkB,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;CAC7D;AAED;;;GAGG;AACH,QAAA,MAAM,sBAAsB,GAAI,0DAI7B,4BAA4B,KAAG,4BAiGjC,CAAC;AAEF,OAAO,EAAE,sBAAsB,EAAE,CAAC"}
@@ -4,66 +4,38 @@ import { TOOL_INVOCATION_TIMEOUT_MS } from '../constants.js';
4
4
  const validTabStates = new Set(['closed', 'unavailable', 'ready']);
5
5
  /**
6
6
  * Returns a stable callback that processes server notification messages
7
- * (confirmation.request, tab.stateChanged, tool.invocationStart, tool.invocationEnd)
8
- * and a function to clear a confirmation's auto-removal timeout.
7
+ * (confirmation.request, tab.stateChanged, tool.invocationStart, tool.invocationEnd).
9
8
  */
10
9
  const useServerNotifications = ({ setPlugins, setActiveTools, setPendingConfirmations, }) => {
11
- const timeoutIds = useRef(new Map());
10
+ const seenConfirmationIds = useRef(new Set());
12
11
  const invocationTimeoutIds = useRef(new Map());
13
12
  useEffect(() => {
14
- const confirmationMap = timeoutIds.current;
15
13
  const invocationMap = invocationTimeoutIds.current;
16
14
  return () => {
17
- for (const id of confirmationMap.values()) {
18
- clearTimeout(id);
19
- }
20
- confirmationMap.clear();
21
15
  for (const id of invocationMap.values()) {
22
16
  clearTimeout(id);
23
17
  }
24
18
  invocationMap.clear();
25
19
  };
26
20
  }, []);
27
- const clearConfirmationTimeout = (id) => {
28
- const tid = timeoutIds.current.get(id);
29
- if (tid !== undefined) {
30
- clearTimeout(tid);
31
- timeoutIds.current.delete(id);
32
- }
33
- };
34
21
  const handleNotification = (data) => {
35
22
  if (data.method === 'confirmation.request' && data.params) {
36
23
  const params = data.params;
37
- if (typeof params.id === 'string' && typeof params.tool === 'string' && typeof params.timeoutMs === 'number') {
38
- // Use the background's receivedAt when hydrating from bg:getFullState so
39
- // the countdown bar reflects true elapsed time since the request arrived.
40
- const receivedAt = typeof params.receivedAt === 'number' && params.receivedAt > 0 ? params.receivedAt : Date.now();
24
+ if (typeof params.id === 'string' && typeof params.tool === 'string') {
25
+ // Skip duplicate confirmations (e.g., real-time sp:serverMessage
26
+ // followed by bg:getFullState hydration for the same id).
27
+ if (seenConfirmationIds.current.has(params.id))
28
+ return;
29
+ seenConfirmationIds.current.add(params.id);
41
30
  const confirmation = {
42
31
  id: params.id,
43
32
  tool: params.tool,
44
- domain: typeof params.domain === 'string' ? params.domain : null,
45
- tabId: typeof params.tabId === 'number' && Number.isInteger(params.tabId) && params.tabId > 0
46
- ? params.tabId
47
- : undefined,
48
- paramsPreview: typeof params.paramsPreview === 'string' ? params.paramsPreview : '',
49
- timeoutMs: params.timeoutMs,
50
- receivedAt,
33
+ plugin: typeof params.plugin === 'string' ? params.plugin : 'unknown',
34
+ params: typeof params.params === 'object' && params.params !== null
35
+ ? params.params
36
+ : {},
51
37
  };
52
- // Skip duplicate confirmations (e.g., real-time sp:serverMessage
53
- // followed by bg:getFullState hydration for the same id).
54
- if (timeoutIds.current.has(confirmation.id))
55
- return;
56
38
  setPendingConfirmations(prev => (prev.some(c => c.id === confirmation.id) ? prev : [...prev, confirmation]));
57
- // Compute remaining time from the original receivedAt so hydrated
58
- // confirmations expire at the correct wall-clock time.
59
- const elapsed = Date.now() - receivedAt;
60
- const removeDelay = Math.max(0, params.timeoutMs + 1000 - elapsed);
61
- const tid = setTimeout(() => {
62
- timeoutIds.current.delete(confirmation.id);
63
- setPendingConfirmations(prev => prev.filter(c => c.id !== confirmation.id));
64
- chrome.runtime.sendMessage({ type: 'sp:confirmationTimeout', id: confirmation.id }).catch(() => { });
65
- }, removeDelay);
66
- timeoutIds.current.set(confirmation.id, tid);
67
39
  }
68
40
  }
69
41
  if (data.method === 'tab.stateChanged' && data.params) {
@@ -117,7 +89,7 @@ const useServerNotifications = ({ setPlugins, setActiveTools, setPendingConfirma
117
89
  }
118
90
  }
119
91
  };
120
- return { handleNotification, clearConfirmationTimeout };
92
+ return { handleNotification };
121
93
  };
122
94
  export { useServerNotifications };
123
95
  //# sourceMappingURL=useServerNotifications.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useServerNotifications.js","sourceRoot":"","sources":["../../../src/side-panel/hooks/useServerNotifications.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useServerNotifications.js","sourceRoot":"","sources":["../../../src/side-panel/hooks/useServerNotifications.ts"],"names":[],"mappings":"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"}