@buoy-gg/floating-tools-core 7.0.74 → 7.0.76

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.
@@ -1 +1 @@
1
- "use strict";export{FloatingToolsStore}from"./FloatingToolsStore.js";export{monoFont}from"./fonts";export*from"./icons/generated/glyph-icons.g.js";export{VISIBLE_HANDLE_WIDTH,DRAG_THRESHOLD,ANIMATION_DURATION,EDGE_PADDING,SAVE_DEBOUNCE_MS,STORAGE_KEYS}from"./constants.js";export{DevToolsStateManager,devToolsStateManager,devToolsReducer}from"./devToolsState.js";export{getUserStatusConfig,getGripIconLayout,filterValidChildren}from"./utils.js";export{easing,getEasing,interpolate,interpolatePosition}from"./easing.js";export{floatingToolsColors,withAlpha}from"./colors.js";export{MAX_DIAL_SLOTS,DIAL_START_ANGLE,DIAL_BUTTON_SIZE,DIAL_ICON_SIZE,DIAL_ICON_GLYPH_SIZE,DIAL_ICON_PADDING,DIAL_GRID_LINE_COUNT,dialColors,dialStyles,getGridLineRotations,getDialLayout,getIconAngle,getIconPosition,getAllIconPositions,dialAnimationConfig,getIconStaggerInputRange,dialCSSBeziers,generateDialCSSKeyframes,getDialCSSAnimationStyles,getDialCSSKeyframesString,getSpiralAnimationPosition,getStaggeredIconProgress}from"./dial.js";export{USAGE_HALF_LIFE_MS,USAGE_MIN_SCORE,decayScore,recordUsage,rankToolIds,pruneUsage}from"./dialUsage.js";export{SETTINGS_STORAGE_KEY,MAX_SETTINGS_DIAL_SLOTS,settingsTabs,settingsColors,toolColors,getToolColor,settingsStyles,toolLabels,getToolLabel,toolDescriptions,getToolDescription,globalSettingsConfig,enforceDialLimit,sanitizeFloatingSettings,mergeSettingsWithDefaults,generateDefaultSettings,countEnabledTools,canEnableDialTool,getEnabledToolIds,SettingsEventBus,settingsEventBus}from"./settings.js";export{NetworkIcon,NETWORK_ICON_COLOR}from"./icons/network-icon";export{EnvIcon,ENV_ICON_COLOR}from"./icons/env-icon";export{StorageIcon,STORAGE_ICON_COLOR}from"./icons/storage-icon";export{RoutesIcon,RoutePinIcon,RoutePathIcon,RouteDotIcon,RouteTwoPinsIcon,CurveTestA,CurveTestB,CurveTestC,CurveTestD,CurveTestE,CurveTestF,CurveTestG,CurveTestH,CurveTestI,CurveTestJ,CurveTestK,CurveTestL,CurveTestM,CurveTestN,CurveTestO,CurveTestP,ROUTES_ICON_COLOR}from"./icons/routes-icon";export{QueryIcon,QUERY_ICON_COLOR}from"./icons/query-icon";export{HighlighterIcon,HIGHLIGHTER_ICON_COLOR,RendersIcon,RENDERS_ICON_COLOR}from"./icons/renders-icon";export{BenchmarkIcon,BENCHMARK_ICON_COLOR}from"./icons/benchmark-icon";export{SentryIcon,SENTRY_ICON_COLOR}from"./icons/sentry-icon";export{SettingsSolidIcon}from"./icons/settings-icon";export{WifiIcon,WIFI_ICON_COLOR}from"./icons/wifi-icon";export{HighlightIcon,HIGHLIGHT_ICON_COLOR}from"./icons/highlight-icon";export{ReduxIcon,REDUX_ICON_COLOR}from"./icons/redux-icon";export{EventsIcon,EVENTS_ICON_COLOR}from"./icons/events-icon";export{ConsoleIcon,CONSOLE_ICON_COLOR}from"./icons/console-icon";export{TimeMachineIcon,TIME_MACHINE_ICON_COLOR}from"./icons/time-machine-icon";export{ScenariosIcon,SCENARIOS_ICON_COLOR}from"./icons/scenarios-icon";export{AskBuoyIcon,ASK_BUOY_ICON_COLOR}from"./icons/ask-buoy-icon";export{ImagesIcon,IMAGES_ICON_COLOR}from"./icons/images-icon";export{CameraIcon,CAMERA_ICON_COLOR}from"./icons/camera-icon";export{AssetsIcon,ASSETS_ICON_COLOR}from"./icons/assets-icon";export{ImpersonateIcon,IMPERSONATE_ICON_COLOR}from"./icons/impersonate-icon";export{ImageOverlayIcon,IMAGE_OVERLAY_ICON_COLOR}from"./icons/image-overlay-icon";export{ZustandIcon,ZUSTAND_ICON_COLOR}from"./icons/zustand-icon";export{JotaiIcon,JOTAI_ICON_COLOR}from"./icons/jotai-icon";export{RiverpodIcon,RIVERPOD_ICON_COLOR}from"./icons/riverpod-icon";export{createNode,createLine,createRing,createDot,createGlow,createArrow,createBar}from"./icons/icon-factories.js";export{renderIconData,createIcon}from"./icons/icon-renderer.js";export{NotificationsIcon,NOTIFICATIONS_ICON_COLOR}from"./icons/notifications-icon.js";export{ClockToolIcon,CLOCK_TOOL_ICON_COLOR}from"./icons/clock-tool-icon.js";export{PermissionsIcon,PERMISSIONS_ICON_COLOR}from"./icons/permissions-icon.js";export{LifecycleToolIcon,LIFECYCLE_TOOL_ICON_COLOR}from"./icons/lifecycle-tool-icon.js";export{LocationToolIcon,LOCATION_TOOL_ICON_COLOR}from"./icons/location-tool-icon.js";
1
+ "use strict";export{FloatingToolsStore}from"./FloatingToolsStore.js";export{monoFont}from"./fonts";export*from"./icons/generated/glyph-icons.g.js";export{VISIBLE_HANDLE_WIDTH,DRAG_THRESHOLD,ANIMATION_DURATION,EDGE_PADDING,SAVE_DEBOUNCE_MS,STORAGE_KEYS}from"./constants.js";export{DevToolsStateManager,devToolsStateManager,devToolsReducer}from"./devToolsState.js";export{getUserStatusConfig,getGripIconLayout,filterValidChildren}from"./utils.js";export{easing,getEasing,interpolate,interpolatePosition}from"./easing.js";export{floatingToolsColors,withAlpha}from"./colors.js";export{MAX_DIAL_SLOTS,DIAL_START_ANGLE,DIAL_BUTTON_SIZE,DIAL_ICON_SIZE,DIAL_ICON_GLYPH_SIZE,DIAL_ICON_PADDING,DIAL_GRID_LINE_COUNT,dialColors,dialStyles,getGridLineRotations,getDialLayout,getIconAngle,getIconPosition,getAllIconPositions,dialAnimationConfig,getIconStaggerInputRange,dialCSSBeziers,generateDialCSSKeyframes,getDialCSSAnimationStyles,getDialCSSKeyframesString,getSpiralAnimationPosition,getStaggeredIconProgress}from"./dial.js";export{USAGE_HALF_LIFE_MS,USAGE_MIN_SCORE,decayScore,recordUsage,rankToolIds,pruneUsage}from"./dialUsage.js";export{SETTINGS_STORAGE_KEY,MAX_SETTINGS_DIAL_SLOTS,settingsTabs,settingsColors,toolColors,getToolColor,settingsStyles,toolLabels,getToolLabel,toolDescriptions,getToolDescription,globalSettingsConfig,enforceDialLimit,sanitizeFloatingSettings,mergeSettingsWithDefaults,generateDefaultSettings,countEnabledTools,canEnableDialTool,getEnabledToolIds,SettingsEventBus,settingsEventBus}from"./settings.js";export{NetworkIcon,NETWORK_ICON_COLOR}from"./icons/network-icon";export{EnvIcon,ENV_ICON_COLOR}from"./icons/env-icon";export{StorageIcon,STORAGE_ICON_COLOR}from"./icons/storage-icon";export{RoutesIcon,RoutePinIcon,RoutePathIcon,RouteDotIcon,RouteTwoPinsIcon,CurveTestA,CurveTestB,CurveTestC,CurveTestD,CurveTestE,CurveTestF,CurveTestG,CurveTestH,CurveTestI,CurveTestJ,CurveTestK,CurveTestL,CurveTestM,CurveTestN,CurveTestO,CurveTestP,ROUTES_ICON_COLOR}from"./icons/routes-icon";export{QueryIcon,QUERY_ICON_COLOR}from"./icons/query-icon";export{HighlighterIcon,HIGHLIGHTER_ICON_COLOR,RendersIcon,RENDERS_ICON_COLOR}from"./icons/renders-icon";export{BenchmarkIcon,BENCHMARK_ICON_COLOR}from"./icons/benchmark-icon";export{SentryIcon,SENTRY_ICON_COLOR}from"./icons/sentry-icon";export{SettingsSolidIcon}from"./icons/settings-icon";export{WifiIcon,WIFI_ICON_COLOR}from"./icons/wifi-icon";export{HighlightIcon,HIGHLIGHT_ICON_COLOR}from"./icons/highlight-icon";export{ReduxIcon,REDUX_ICON_COLOR}from"./icons/redux-icon";export{EventsIcon,EVENTS_ICON_COLOR}from"./icons/events-icon";export{ConsoleIcon,CONSOLE_ICON_COLOR}from"./icons/console-icon";export{TimeMachineIcon,TIME_MACHINE_ICON_COLOR}from"./icons/time-machine-icon";export{ScenariosIcon,SCENARIOS_ICON_COLOR}from"./icons/scenarios-icon";export{AskBuoyIcon,ASK_BUOY_ICON_COLOR}from"./icons/ask-buoy-icon";export{ImagesIcon,IMAGES_ICON_COLOR}from"./icons/images-icon";export{CameraIcon,CAMERA_ICON_COLOR}from"./icons/camera-icon";export{AssetsIcon,ASSETS_ICON_COLOR}from"./icons/assets-icon";export{ImpersonateIcon,IMPERSONATE_ICON_COLOR}from"./icons/impersonate-icon";export{ImageOverlayIcon,IMAGE_OVERLAY_ICON_COLOR}from"./icons/image-overlay-icon";export{ZustandIcon,ZUSTAND_ICON_COLOR}from"./icons/zustand-icon";export{JotaiIcon,JOTAI_ICON_COLOR}from"./icons/jotai-icon";export{RiverpodIcon,RIVERPOD_ICON_COLOR}from"./icons/riverpod-icon";export{createNode,createLine,createRing,createDot,createGlow,createArrow,createBar}from"./icons/icon-factories.js";export{renderIconData,createIcon}from"./icons/icon-renderer.js";export{NotificationsIcon,NOTIFICATIONS_ICON_COLOR}from"./icons/notifications-icon.js";export{ClockToolIcon,CLOCK_TOOL_ICON_COLOR}from"./icons/clock-tool-icon.js";export{PermissionsIcon,PERMISSIONS_ICON_COLOR}from"./icons/permissions-icon.js";export{LifecycleToolIcon,LIFECYCLE_TOOL_ICON_COLOR}from"./icons/lifecycle-tool-icon.js";export{LocationToolIcon,LOCATION_TOOL_ICON_COLOR}from"./icons/location-tool-icon.js";export{BUOY_TEAM_TOOL_IDS,teamToolId,isTeamToolAllowed,filterTeamTools}from"./teamTools.js";
@@ -0,0 +1 @@
1
+ "use strict";export const BUOY_TEAM_TOOL_IDS=["ask-buoy","assets","clock","console","debug-borders","env","events","highlight-updates","image-overlay","images","impersonate","jotai","js-top","lifecycle","location","network","perf-monitor","permissions","push-notifications","query","redux","riverpod","route-events","scenarios","sentry","storage","three","time-machine","zustand"];const n=new Set(BUOY_TEAM_TOOL_IDS);const s={routes:"route-events","react-query":"query","query-wifi-toggle":"query"};export function teamToolId(e){const t=e.endsWith("-modal")?e.slice(0,-"-modal".length):e;return s[t]??t}export function isTeamToolAllowed(e,t){if(!t)return true;const r=teamToolId(e);if(!n.has(r))return true;return t.some(o=>teamToolId(o)===r)}export function filterTeamTools(e,t){if(!t)return e;return e.filter(r=>isTeamToolAllowed(r.id,t))}
@@ -6,6 +6,7 @@ export declare const ArrowDownToLineGlyph: import("../icon-renderer").BuoyIconCo
6
6
  export declare const ArrowDownGlyph: import("../icon-renderer").BuoyIconComponent;
7
7
  export declare const ArrowUpGlyph: import("../icon-renderer").BuoyIconComponent;
8
8
  export declare const BarChartGlyph: import("../icon-renderer").BuoyIconComponent;
9
+ export declare const BellGlyph: import("../icon-renderer").BuoyIconComponent;
9
10
  export declare const BookmarkGlyph: import("../icon-renderer").BuoyIconComponent;
10
11
  export declare const BoxGlyph: import("../icon-renderer").BuoyIconComponent;
11
12
  export declare const BracesGlyph: import("../icon-renderer").BuoyIconComponent;
@@ -61,6 +62,7 @@ export declare const SearchGlyph: import("../icon-renderer").BuoyIconComponent;
61
62
  export declare const ServerGlyph: import("../icon-renderer").BuoyIconComponent;
62
63
  export declare const SettingsGlyph: import("../icon-renderer").BuoyIconComponent;
63
64
  export declare const ShieldGlyph: import("../icon-renderer").BuoyIconComponent;
65
+ export declare const SmartphoneGlyph: import("../icon-renderer").BuoyIconComponent;
64
66
  export declare const Trash2Glyph: import("../icon-renderer").BuoyIconComponent;
65
67
  export declare const UnlockGlyph: import("../icon-renderer").BuoyIconComponent;
66
68
  export declare const UploadGlyph: import("../icon-renderer").BuoyIconComponent;
@@ -79,6 +81,7 @@ export declare const glyphsByName: {
79
81
  readonly 'arrow-down': import("../icon-renderer").BuoyIconComponent;
80
82
  readonly 'arrow-up': import("../icon-renderer").BuoyIconComponent;
81
83
  readonly 'bar-chart': import("../icon-renderer").BuoyIconComponent;
84
+ readonly bell: import("../icon-renderer").BuoyIconComponent;
82
85
  readonly bookmark: import("../icon-renderer").BuoyIconComponent;
83
86
  readonly box: import("../icon-renderer").BuoyIconComponent;
84
87
  readonly braces: import("../icon-renderer").BuoyIconComponent;
@@ -134,6 +137,7 @@ export declare const glyphsByName: {
134
137
  readonly server: import("../icon-renderer").BuoyIconComponent;
135
138
  readonly settings: import("../icon-renderer").BuoyIconComponent;
136
139
  readonly shield: import("../icon-renderer").BuoyIconComponent;
140
+ readonly smartphone: import("../icon-renderer").BuoyIconComponent;
137
141
  readonly 'trash-2': import("../icon-renderer").BuoyIconComponent;
138
142
  readonly unlock: import("../icon-renderer").BuoyIconComponent;
139
143
  readonly upload: import("../icon-renderer").BuoyIconComponent;
@@ -114,6 +114,7 @@ export declare const arrowDownToLineGlyphData: IconData;
114
114
  export declare const arrowDownGlyphData: IconData;
115
115
  export declare const arrowUpGlyphData: IconData;
116
116
  export declare const barChartGlyphData: IconData;
117
+ export declare const bellGlyphData: IconData;
117
118
  export declare const bookmarkGlyphData: IconData;
118
119
  export declare const boxGlyphData: IconData;
119
120
  export declare const bracesGlyphData: IconData;
@@ -169,6 +170,7 @@ export declare const searchGlyphData: IconData;
169
170
  export declare const serverGlyphData: IconData;
170
171
  export declare const settingsGlyphData: IconData;
171
172
  export declare const shieldGlyphData: IconData;
173
+ export declare const smartphoneGlyphData: IconData;
172
174
  export declare const trash2GlyphData: IconData;
173
175
  export declare const unlockGlyphData: IconData;
174
176
  export declare const uploadGlyphData: IconData;
@@ -60,4 +60,5 @@ export { ClockToolIcon, CLOCK_TOOL_ICON_COLOR } from './icons/clock-tool-icon';
60
60
  export { PermissionsIcon, PERMISSIONS_ICON_COLOR } from './icons/permissions-icon';
61
61
  export { LifecycleToolIcon, LIFECYCLE_TOOL_ICON_COLOR } from './icons/lifecycle-tool-icon';
62
62
  export { LocationToolIcon, LOCATION_TOOL_ICON_COLOR } from './icons/location-tool-icon';
63
+ export { BUOY_TEAM_TOOL_IDS, teamToolId, isTeamToolAllowed, filterTeamTools, } from './teamTools';
63
64
  //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Team roles: which Buoy tools a signed-in team member sees.
3
+ *
4
+ * A Business team admin picks the tools for each role on buoy.gg
5
+ * (/dashboard/team). buoy.gg puts that list in the member's sign-in token as
6
+ * the `tools` claim (absent = all tools). The menu shows a tool when:
7
+ *
8
+ * - there is no list (no claim, a key, a bot key, or a role set to all), or
9
+ * - the list names the tool, or
10
+ * - the tool is not a Buoy tool (the app's own tools always show, since
11
+ * buoy.gg can't list them).
12
+ *
13
+ * Hiding a tool only changes the menu. Capture, Desktop, the MCP and caps
14
+ * are unchanged: this is a focus feature, not a lock.
15
+ *
16
+ * Every port mirrors this file 1:1 (same ids, same aliases, same rule):
17
+ * Swift packages-swift/Sources/BuoyCore/Shell/TeamTools.swift
18
+ * Android packages-android/buoy-core/src/main/kotlin/gg/buoy/core/shell/TeamTools.kt
19
+ * Flutter packages-flutter/buoy_core/lib/src/team_tools.dart
20
+ * MAUI packages-maui/Buoy.Core/TeamTools.cs
21
+ * buoy.gg's Team page lists the same ids (apps/website/src/data/teamTools.ts).
22
+ * Tests in the website, Swift and Android read this list and fail on drift.
23
+ */
24
+ /** Every Buoy tool a role can turn on or off, by its menu id. */
25
+ export declare const BUOY_TEAM_TOOL_IDS: readonly ["ask-buoy", "assets", "clock", "console", "debug-borders", "env", "events", "highlight-updates", "image-overlay", "images", "impersonate", "jotai", "js-top", "lifecycle", "location", "network", "perf-monitor", "permissions", "push-notifications", "query", "redux", "riverpod", "route-events", "scenarios", "sentry", "storage", "three", "time-machine", "zustand"];
26
+ /**
27
+ * The id a role list uses for a menu entry. A tool's second entry
28
+ * (`perf-monitor-modal`, `js-top-modal`, …) follows its base tool.
29
+ */
30
+ export declare function teamToolId(id: string): string;
31
+ /** True when this menu entry should show for a member with this tool list. */
32
+ export declare function isTeamToolAllowed(id: string, allowedTools: readonly string[] | null | undefined): boolean;
33
+ /** The menu entries a member with this tool list sees, in the same order. */
34
+ export declare function filterTeamTools<T extends {
35
+ id: string;
36
+ }>(tools: readonly T[], allowedTools: readonly string[] | null | undefined): T[];
37
+ //# sourceMappingURL=teamTools.d.ts.map
@@ -6,6 +6,7 @@ export declare const ArrowDownToLineGlyph: import("../icon-renderer").BuoyIconCo
6
6
  export declare const ArrowDownGlyph: import("../icon-renderer").BuoyIconComponent;
7
7
  export declare const ArrowUpGlyph: import("../icon-renderer").BuoyIconComponent;
8
8
  export declare const BarChartGlyph: import("../icon-renderer").BuoyIconComponent;
9
+ export declare const BellGlyph: import("../icon-renderer").BuoyIconComponent;
9
10
  export declare const BookmarkGlyph: import("../icon-renderer").BuoyIconComponent;
10
11
  export declare const BoxGlyph: import("../icon-renderer").BuoyIconComponent;
11
12
  export declare const BracesGlyph: import("../icon-renderer").BuoyIconComponent;
@@ -61,6 +62,7 @@ export declare const SearchGlyph: import("../icon-renderer").BuoyIconComponent;
61
62
  export declare const ServerGlyph: import("../icon-renderer").BuoyIconComponent;
62
63
  export declare const SettingsGlyph: import("../icon-renderer").BuoyIconComponent;
63
64
  export declare const ShieldGlyph: import("../icon-renderer").BuoyIconComponent;
65
+ export declare const SmartphoneGlyph: import("../icon-renderer").BuoyIconComponent;
64
66
  export declare const Trash2Glyph: import("../icon-renderer").BuoyIconComponent;
65
67
  export declare const UnlockGlyph: import("../icon-renderer").BuoyIconComponent;
66
68
  export declare const UploadGlyph: import("../icon-renderer").BuoyIconComponent;
@@ -79,6 +81,7 @@ export declare const glyphsByName: {
79
81
  readonly 'arrow-down': import("../icon-renderer").BuoyIconComponent;
80
82
  readonly 'arrow-up': import("../icon-renderer").BuoyIconComponent;
81
83
  readonly 'bar-chart': import("../icon-renderer").BuoyIconComponent;
84
+ readonly bell: import("../icon-renderer").BuoyIconComponent;
82
85
  readonly bookmark: import("../icon-renderer").BuoyIconComponent;
83
86
  readonly box: import("../icon-renderer").BuoyIconComponent;
84
87
  readonly braces: import("../icon-renderer").BuoyIconComponent;
@@ -134,6 +137,7 @@ export declare const glyphsByName: {
134
137
  readonly server: import("../icon-renderer").BuoyIconComponent;
135
138
  readonly settings: import("../icon-renderer").BuoyIconComponent;
136
139
  readonly shield: import("../icon-renderer").BuoyIconComponent;
140
+ readonly smartphone: import("../icon-renderer").BuoyIconComponent;
137
141
  readonly 'trash-2': import("../icon-renderer").BuoyIconComponent;
138
142
  readonly unlock: import("../icon-renderer").BuoyIconComponent;
139
143
  readonly upload: import("../icon-renderer").BuoyIconComponent;
@@ -114,6 +114,7 @@ export declare const arrowDownToLineGlyphData: IconData;
114
114
  export declare const arrowDownGlyphData: IconData;
115
115
  export declare const arrowUpGlyphData: IconData;
116
116
  export declare const barChartGlyphData: IconData;
117
+ export declare const bellGlyphData: IconData;
117
118
  export declare const bookmarkGlyphData: IconData;
118
119
  export declare const boxGlyphData: IconData;
119
120
  export declare const bracesGlyphData: IconData;
@@ -169,6 +170,7 @@ export declare const searchGlyphData: IconData;
169
170
  export declare const serverGlyphData: IconData;
170
171
  export declare const settingsGlyphData: IconData;
171
172
  export declare const shieldGlyphData: IconData;
173
+ export declare const smartphoneGlyphData: IconData;
172
174
  export declare const trash2GlyphData: IconData;
173
175
  export declare const unlockGlyphData: IconData;
174
176
  export declare const uploadGlyphData: IconData;
@@ -60,4 +60,5 @@ export { ClockToolIcon, CLOCK_TOOL_ICON_COLOR } from './icons/clock-tool-icon';
60
60
  export { PermissionsIcon, PERMISSIONS_ICON_COLOR } from './icons/permissions-icon';
61
61
  export { LifecycleToolIcon, LIFECYCLE_TOOL_ICON_COLOR } from './icons/lifecycle-tool-icon';
62
62
  export { LocationToolIcon, LOCATION_TOOL_ICON_COLOR } from './icons/location-tool-icon';
63
+ export { BUOY_TEAM_TOOL_IDS, teamToolId, isTeamToolAllowed, filterTeamTools, } from './teamTools';
63
64
  //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Team roles: which Buoy tools a signed-in team member sees.
3
+ *
4
+ * A Business team admin picks the tools for each role on buoy.gg
5
+ * (/dashboard/team). buoy.gg puts that list in the member's sign-in token as
6
+ * the `tools` claim (absent = all tools). The menu shows a tool when:
7
+ *
8
+ * - there is no list (no claim, a key, a bot key, or a role set to all), or
9
+ * - the list names the tool, or
10
+ * - the tool is not a Buoy tool (the app's own tools always show, since
11
+ * buoy.gg can't list them).
12
+ *
13
+ * Hiding a tool only changes the menu. Capture, Desktop, the MCP and caps
14
+ * are unchanged: this is a focus feature, not a lock.
15
+ *
16
+ * Every port mirrors this file 1:1 (same ids, same aliases, same rule):
17
+ * Swift packages-swift/Sources/BuoyCore/Shell/TeamTools.swift
18
+ * Android packages-android/buoy-core/src/main/kotlin/gg/buoy/core/shell/TeamTools.kt
19
+ * Flutter packages-flutter/buoy_core/lib/src/team_tools.dart
20
+ * MAUI packages-maui/Buoy.Core/TeamTools.cs
21
+ * buoy.gg's Team page lists the same ids (apps/website/src/data/teamTools.ts).
22
+ * Tests in the website, Swift and Android read this list and fail on drift.
23
+ */
24
+ /** Every Buoy tool a role can turn on or off, by its menu id. */
25
+ export declare const BUOY_TEAM_TOOL_IDS: readonly ["ask-buoy", "assets", "clock", "console", "debug-borders", "env", "events", "highlight-updates", "image-overlay", "images", "impersonate", "jotai", "js-top", "lifecycle", "location", "network", "perf-monitor", "permissions", "push-notifications", "query", "redux", "riverpod", "route-events", "scenarios", "sentry", "storage", "three", "time-machine", "zustand"];
26
+ /**
27
+ * The id a role list uses for a menu entry. A tool's second entry
28
+ * (`perf-monitor-modal`, `js-top-modal`, …) follows its base tool.
29
+ */
30
+ export declare function teamToolId(id: string): string;
31
+ /** True when this menu entry should show for a member with this tool list. */
32
+ export declare function isTeamToolAllowed(id: string, allowedTools: readonly string[] | null | undefined): boolean;
33
+ /** The menu entries a member with this tool list sees, in the same order. */
34
+ export declare function filterTeamTools<T extends {
35
+ id: string;
36
+ }>(tools: readonly T[], allowedTools: readonly string[] | null | undefined): T[];
37
+ //# sourceMappingURL=teamTools.d.ts.map