@buoy-gg/core 7.0.32 → 7.0.34

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 (47) hide show
  1. package/lib/commonjs/floatingMenu/FloatingDevTools.js +24 -1
  2. package/lib/commonjs/floatingMenu/autoDiscoverPresets.js +21 -5
  3. package/lib/commonjs/floatingMenu/autoExternalSync.js +32 -17
  4. package/lib/commonjs/floatingMenu/deviceIdentity.js +173 -0
  5. package/lib/commonjs/floatingMenu/dial/DialDevTools.js +5 -46
  6. package/lib/commonjs/floatingMenu/dial/DialIcon.js +2 -46
  7. package/lib/commonjs/version.js +1 -1
  8. package/lib/module/floatingMenu/FloatingDevTools.js +24 -1
  9. package/lib/module/floatingMenu/autoDiscoverPresets.js +21 -5
  10. package/lib/module/floatingMenu/autoExternalSync.js +32 -17
  11. package/lib/module/floatingMenu/deviceIdentity.js +163 -0
  12. package/lib/module/floatingMenu/dial/DialDevTools.js +6 -47
  13. package/lib/module/floatingMenu/dial/DialIcon.js +2 -46
  14. package/lib/module/version.js +1 -1
  15. package/lib/typescript/commonjs/floatingMenu/FloatingDevTools.d.ts +38 -1
  16. package/lib/typescript/commonjs/floatingMenu/FloatingDevTools.d.ts.map +1 -1
  17. package/lib/typescript/commonjs/floatingMenu/autoDiscoverPresets.d.ts.map +1 -1
  18. package/lib/typescript/commonjs/floatingMenu/autoExternalSync.d.ts +12 -2
  19. package/lib/typescript/commonjs/floatingMenu/autoExternalSync.d.ts.map +1 -1
  20. package/lib/typescript/commonjs/floatingMenu/defaultConfig.d.ts +1 -1
  21. package/lib/typescript/commonjs/floatingMenu/defaultConfig.d.ts.map +1 -1
  22. package/lib/typescript/commonjs/floatingMenu/deviceIdentity.d.ts +66 -0
  23. package/lib/typescript/commonjs/floatingMenu/deviceIdentity.d.ts.map +1 -0
  24. package/lib/typescript/commonjs/floatingMenu/dial/DialDevTools.d.ts +0 -7
  25. package/lib/typescript/commonjs/floatingMenu/dial/DialDevTools.d.ts.map +1 -1
  26. package/lib/typescript/commonjs/floatingMenu/dial/DialIcon.d.ts.map +1 -1
  27. package/lib/typescript/commonjs/version.d.ts +1 -1
  28. package/lib/typescript/module/floatingMenu/FloatingDevTools.d.ts +38 -1
  29. package/lib/typescript/module/floatingMenu/FloatingDevTools.d.ts.map +1 -1
  30. package/lib/typescript/module/floatingMenu/autoDiscoverPresets.d.ts.map +1 -1
  31. package/lib/typescript/module/floatingMenu/autoExternalSync.d.ts +12 -2
  32. package/lib/typescript/module/floatingMenu/autoExternalSync.d.ts.map +1 -1
  33. package/lib/typescript/module/floatingMenu/defaultConfig.d.ts +1 -1
  34. package/lib/typescript/module/floatingMenu/defaultConfig.d.ts.map +1 -1
  35. package/lib/typescript/module/floatingMenu/deviceIdentity.d.ts +66 -0
  36. package/lib/typescript/module/floatingMenu/deviceIdentity.d.ts.map +1 -0
  37. package/lib/typescript/module/floatingMenu/dial/DialDevTools.d.ts +0 -7
  38. package/lib/typescript/module/floatingMenu/dial/DialDevTools.d.ts.map +1 -1
  39. package/lib/typescript/module/floatingMenu/dial/DialIcon.d.ts.map +1 -1
  40. package/lib/typescript/module/version.d.ts +1 -1
  41. package/package.json +5 -5
  42. package/lib/commonjs/floatingMenu/allToolsRegistry.js +0 -159
  43. package/lib/module/floatingMenu/allToolsRegistry.js +0 -155
  44. package/lib/typescript/commonjs/floatingMenu/allToolsRegistry.d.ts +0 -42
  45. package/lib/typescript/commonjs/floatingMenu/allToolsRegistry.d.ts.map +0 -1
  46. package/lib/typescript/module/floatingMenu/allToolsRegistry.d.ts +0 -42
  47. package/lib/typescript/module/floatingMenu/allToolsRegistry.d.ts.map +0 -1
@@ -19,13 +19,6 @@ export type IconType = {
19
19
  }) => ReactNode;
20
20
  color: string;
21
21
  onPress: () => void;
22
- /**
23
- * True for tools that React Buoy offers but the current app has not installed.
24
- * Unavailable items render like a normal item (real icon + real name at full
25
- * styling) plus a small muted "Unavailable" caption, and are non-interactive
26
- * (tapping does nothing and keeps the dial open).
27
- */
28
- unavailable?: boolean;
29
22
  };
30
23
  interface DialDevToolsProps {
31
24
  onClose?: () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"DialDevTools.d.ts","sourceRoot":"","sources":["../../../../../src/floatingMenu/dial/DialDevTools.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAwC,SAAS,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAoC5E,OAAO,KAAK,EACV,YAAY,EACZ,mBAAmB,EACnB,iBAAiB,EAClB,MAAM,UAAU,CAAC;AAmClB,MAAM,MAAM,QAAQ,GAAG;IACrB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,SAAS,CAAC;IAChB;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,iBAAiB,CAAC;QAAC,OAAO,CAAC,EAAE,mBAAmB,CAAA;KAAE,KAAK,SAAS,CAAC;IAC/H,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAWF,UAAU,iBAAiB;IACzB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,IAAI,CAAC;IAC7B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,IAAI,EAAE,YAAY,EAAE,CAAC;IACrB,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAC1B,OAAO,CAAC,EAAE,mBAAmB,CAAC;CAC/B;AAED,eAAO,MAAM,YAAY,EAAE,EAAE,CAAC,iBAAiB,CAitB9C,CAAC"}
1
+ {"version":3,"file":"DialDevTools.d.ts","sourceRoot":"","sources":["../../../../../src/floatingMenu/dial/DialDevTools.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAwC,SAAS,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAmC5E,OAAO,KAAK,EACV,YAAY,EACZ,mBAAmB,EACnB,iBAAiB,EAClB,MAAM,UAAU,CAAC;AAkClB,MAAM,MAAM,QAAQ,GAAG;IACrB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,SAAS,CAAC;IAChB;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,iBAAiB,CAAC;QAAC,OAAO,CAAC,EAAE,mBAAmB,CAAA;KAAE,KAAK,SAAS,CAAC;IAC/H,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAAC;AAWF,UAAU,iBAAiB;IACzB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,IAAI,CAAC;IAC7B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,IAAI,EAAE,YAAY,EAAE,CAAC;IACrB,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAC1B,OAAO,CAAC,EAAE,mBAAmB,CAAC;CAC/B;AAED,eAAO,MAAM,YAAY,EAAE,EAAE,CAAC,iBAAiB,CAmqB9C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"DialIcon.d.ts","sourceRoot":"","sources":["../../../../../src/floatingMenu/dial/DialIcon.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAmB,EAAE,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAML,QAAQ,EACT,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AA+C1C,KAAK,KAAK,GAAG;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,QAAQ,CAAC;IACf,aAAa,EAAE,QAAQ,CAAC,KAAK,CAAC;IAC9B,OAAO,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,EAAE,CAAC,KAAK,CA2O9B,CAAC"}
1
+ {"version":3,"file":"DialIcon.d.ts","sourceRoot":"","sources":["../../../../../src/floatingMenu/dial/DialIcon.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAmB,EAAE,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAML,QAAQ,EACT,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AA+C1C,KAAK,KAAK,GAAG;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,QAAQ,CAAC;IACf,aAAa,EAAE,QAAQ,CAAC,KAAK,CAAC;IAC9B,OAAO,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,EAAE,CAAC,KAAK,CA0M9B,CAAC"}
@@ -9,5 +9,5 @@
9
9
  * Drift is prevented by a test that fails when this disagrees with
10
10
  * package.json, so a version bump that forgets this file cannot ship.
11
11
  */
12
- export declare const SDK_VERSION = "7.0.32";
12
+ export declare const SDK_VERSION = "7.0.34";
13
13
  //# sourceMappingURL=version.d.ts.map
@@ -39,6 +39,25 @@ export interface StorageKeyConfig {
39
39
  description?: string;
40
40
  storageType: "async" | "secure" | "mmkv";
41
41
  }
42
+ /**
43
+ * Ask Buoy's config, mirrored structurally so core never depends on the
44
+ * optional `@buoy-gg/ask-buoy` package (it is required lazily, like every other
45
+ * tool). The object is handed to `createAskBuoyTool` untouched, so any field
46
+ * that package accepts passes through — the index signature is the seam.
47
+ */
48
+ export interface FloatingAskBuoyConfig {
49
+ /** Your company's own LLM gateway. Buoy never proxies or holds a key. */
50
+ endpoint: string;
51
+ /** Model id passed through to the endpoint. */
52
+ model: string;
53
+ /** Which request/response shape the endpoint speaks. @default "anthropic" */
54
+ protocol?: "anthropic" | "openai";
55
+ /** Resolved fresh per request — the app's own short-lived session token. */
56
+ headers?: () => Record<string, string> | Promise<Record<string, string>>;
57
+ /** DEV ONLY — compiled into the bundle in plaintext. Use `headers` + a gateway. */
58
+ apiKey?: string;
59
+ [key: string]: unknown;
60
+ }
42
61
  /**
43
62
  * Props for FloatingDevTools component.
44
63
  *
@@ -101,6 +120,24 @@ export interface FloatingDevToolsProps extends Omit<FloatingMenuProps, "apps"> {
101
120
  * ```
102
121
  */
103
122
  requiredStorageKeys?: StorageKeyConfig[];
123
+ /**
124
+ * Wire Ask Buoy (the in-app AI chat) to your team's AI endpoint — the
125
+ * documented one-prop setup. Requires `@buoy-gg/ask-buoy` to be installed;
126
+ * the config is exactly what `createAskBuoyTool` takes and passes through
127
+ * untouched.
128
+ *
129
+ * @example
130
+ * ```tsx
131
+ * <FloatingDevTools
132
+ * askBuoy={{
133
+ * endpoint: "https://ai.acme.com/v1/messages",
134
+ * model: "claude-sonnet-4-5",
135
+ * headers: async () => ({ Authorization: `Bearer ${await auth.getToken()}` }),
136
+ * }}
137
+ * />
138
+ * ```
139
+ */
140
+ askBuoy?: FloatingAskBuoyConfig;
104
141
  /**
105
142
  * Optional children to render within the DevToolsVisibilityProvider context.
106
143
  * Useful for tools that need to react to DevTools visibility (like DebugBordersStandaloneOverlay).
@@ -331,5 +368,5 @@ export interface FloatingDevToolsProps extends Omit<FloatingMenuProps, "apps"> {
331
368
  *
332
369
  * @param props - FloatingDevTools props
333
370
  */
334
- export declare const FloatingDevTools: ({ apps, requiredEnvVars, requiredStorageKeys, children, disableHints, defaultFloatingTools, defaultDialTools, requireLicense, licenseKey: licenseKeyProp, zustandStores, environment, externalSync, headless, ...props }: FloatingDevToolsProps) => React.JSX.Element | null;
371
+ export declare const FloatingDevTools: ({ apps, requiredEnvVars, requiredStorageKeys, askBuoy, children, disableHints, defaultFloatingTools, defaultDialTools, requireLicense, licenseKey: licenseKeyProp, zustandStores, environment, externalSync, headless, ...props }: FloatingDevToolsProps) => React.JSX.Element | null;
335
372
  //# sourceMappingURL=FloatingDevTools.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FloatingDevTools.d.ts","sourceRoot":"","sources":["../../../../src/floatingMenu/FloatingDevTools.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA+D,MAAM,OAAO,CAAC;AAGpF,OAAO,EAAgB,KAAK,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAOtE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAQ5C,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EAEvB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAIL,KAAK,mBAAmB,EACzB,MAAM,oBAAoB,CAAC;AAM5B;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,YAAY,GACpB,MAAM,GACN;IACE,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,GACD;IACE,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EACR,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,QAAQ,GACR,OAAO,GACP,KAAK,CAAC;IACV,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEN;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;IAC1D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;CAC1C;AAED;;;;;;GAMG;AACH,MAAM,WAAW,qBAAsB,SAAQ,IAAI,CAAC,iBAAiB,EAAE,MAAM,CAAC;IAC5E;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,IAAI,CAAC,EAAE,YAAY,EAAE,CAAC;IAEtB;;;;;;;;;;;;;;OAcG;IACH,eAAe,CAAC,EAAE,YAAY,EAAE,CAAC;IAEjC;;;;;;;;;;;;OAYG;IACH,mBAAmB,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAEzC;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAE3B;;;;;;;;;OASG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;;;;;;;;;;;;OAaG;IACH,oBAAoB,CAAC,EAAE,qBAAqB,CAAC;IAE7C;;;;;;;;;;;;;;OAcG;IACH,gBAAgB,CAAC,EAAE,iBAAiB,CAAC;IAErC;;;;;;;;;;;;;;;;OAgBG;IACH,qBAAqB,CAAC,EAAE,OAAO,oBAAoB,EAAE,WAAW,EAAE,CAAC;IAEnE;;;;;;;;;;;;;OAaG;IACH,mBAAmB,CAAC,EAAE,CAAC,WAAW,EAAE,OAAO,oBAAoB,EAAE,WAAW,KAAK,IAAI,CAAC;IAEtF;;;;;;;;;;OAUG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;;;;;;;OAQG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;;;;;;;;;;;;;;;;OAkBG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAEpC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgCG;IACH,YAAY,CAAC,EAAE,OAAO,GAAG,mBAAmB,CAAC;IAE7C;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqDG;AACH,eAAO,MAAM,gBAAgB,GAAI,0NAe9B,qBAAqB,6BAybvB,CAAC"}
1
+ {"version":3,"file":"FloatingDevTools.d.ts","sourceRoot":"","sources":["../../../../src/floatingMenu/FloatingDevTools.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"autoDiscoverPresets.d.ts","sourceRoot":"","sources":["../../../../src/floatingMenu/autoDiscoverPresets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAG5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,wBAAgB,mBAAmB,IAAI,YAAY,EAAE,CA8TpD;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,6BAA6B,CAC3C,WAAW,EAAE,YAAY,EAAE,GAC1B,YAAY,EAAE,CAahB"}
1
+ {"version":3,"file":"autoDiscoverPresets.d.ts","sourceRoot":"","sources":["../../../../src/floatingMenu/autoDiscoverPresets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAG5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,wBAAgB,mBAAmB,IAAI,YAAY,EAAE,CA4UpD;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,6BAA6B,CAC3C,WAAW,EAAE,YAAY,EAAE,GAC1B,YAAY,EAAE,CAahB"}
@@ -12,9 +12,19 @@ export interface ExternalSyncOptions {
12
12
  * broker on another machine.
13
13
  */
14
14
  socketURL?: string;
15
- /** Shown in the desktop device list. @default "<app name> (<platform>)" */
15
+ /**
16
+ * Shown in the desktop device list.
17
+ * @default "<app name> (<hardware> · <last 4 of the id>)"
18
+ */
16
19
  deviceName?: string;
17
- /** Stable device identity across restarts. @default "<app-slug>-<platform>" */
20
+ /**
21
+ * Stable device identity across restarts. Leave unset: the default is
22
+ * `<app-slug>-<platform>-<per-install id>`, minted once and persisted, so
23
+ * every device running this build is its own entry in Buoy Desktop and
24
+ * `list_devices`. If you do pin one, it MUST be unique per device — two
25
+ * devices sharing an id look like one device to the broker, and actions
26
+ * land on whichever connected last.
27
+ */
18
28
  deviceId?: string;
19
29
  /**
20
30
  * Allow this build to dial the broker when `__DEV__` is false (a release /
@@ -1 +1 @@
1
- {"version":3,"file":"autoExternalSync.d.ts","sourceRoot":"","sources":["../../../../src/floatingMenu/autoExternalSync.tsx"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAsJjD,iFAAiF;AACjF,wBAAgB,uBAAuB,IAAI,OAAO,CAEjD;AAED,MAAM,WAAW,mBAAmB;IAClC;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2EAA2E;IAC3E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;;;;;;;;;;;;OAiBG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,qBAAqB;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAuBD,UAAU,qBAAqB;IAC7B,OAAO,CAAC,EAAE,mBAAmB,CAAC;IAC9B,6EAA6E;IAC7E,eAAe,CAAC,EAAE,YAAY,EAAE,CAAC;IACjC,8EAA8E;IAC9E,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;;OAIG;IACH,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,mEAAmE;IACnE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B;;;;OAIG;IACH,UAAU,CAAC,EAAE,YAAY,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,mBAAmB;IAClC,eAAe,CAAC,EAAE,YAAY,EAAE,CAAC;IACjC,UAAU,CAAC,EAAE,YAAY,EAAE,CAAC;CAC7B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,eAAe,EACf,UAAU,GACX,EAAE,mBAAmB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAS/C;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,EACpC,eAAe,EACf,UAAU,GACX,EAAE,mBAAmB,QAYrB;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,OAAO,EACP,eAAe,EACf,KAAK,EACL,IAAI,EACJ,UAAU,EACV,UAAU,GACX,EAAE,qBAAqB,QAuDvB"}
1
+ {"version":3,"file":"autoExternalSync.d.ts","sourceRoot":"","sources":["../../../../src/floatingMenu/autoExternalSync.tsx"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AA6JjD,iFAAiF;AACjF,wBAAgB,uBAAuB,IAAI,OAAO,CAEjD;AAED,MAAM,WAAW,mBAAmB;IAClC;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;;;;;;;;;;;;OAiBG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,qBAAqB;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAkBD,UAAU,qBAAqB;IAC7B,OAAO,CAAC,EAAE,mBAAmB,CAAC;IAC9B,6EAA6E;IAC7E,eAAe,CAAC,EAAE,YAAY,EAAE,CAAC;IACjC,8EAA8E;IAC9E,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;;OAIG;IACH,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,mEAAmE;IACnE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B;;;;OAIG;IACH,UAAU,CAAC,EAAE,YAAY,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,mBAAmB;IAClC,eAAe,CAAC,EAAE,YAAY,EAAE,CAAC;IACjC,UAAU,CAAC,EAAE,YAAY,EAAE,CAAC;CAC7B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,eAAe,EACf,UAAU,GACX,EAAE,mBAAmB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAS/C;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,EACpC,eAAe,EACf,UAAU,GACX,EAAE,mBAAmB,QAYrB;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,OAAO,EACP,eAAe,EACf,KAAK,EACL,IAAI,EACJ,UAAU,EACV,UAAU,GACX,EAAE,qBAAqB,QA2DvB"}
@@ -19,7 +19,7 @@
19
19
  * All known tool IDs that can appear in the floating menu or dial menu.
20
20
  * This is a union type of all auto-discovered tool IDs.
21
21
  */
22
- export type BuiltInToolId = 'env' | 'network' | 'storage' | 'query' | 'query-wifi-toggle' | 'route-events' | 'debug-borders' | 'highlight-updates' | 'highlight-updates-modal' | 'redux' | 'zustand' | 'jotai' | 'events' | 'time-machine' | 'scenarios' | 'copilot' | 'image-overlay' | 'perf-monitor' | 'perf-monitor-modal';
22
+ export type BuiltInToolId = 'env' | 'network' | 'storage' | 'query' | 'query-wifi-toggle' | 'route-events' | 'debug-borders' | 'highlight-updates' | 'highlight-updates-modal' | 'redux' | 'zustand' | 'jotai' | 'events' | 'time-machine' | 'scenarios' | 'ask-buoy' | 'image-overlay' | 'perf-monitor' | 'perf-monitor-modal';
23
23
  /**
24
24
  * Special floating-only tool IDs that only appear in the floating bubble row.
25
25
  */
@@ -1 +1 @@
1
- {"version":3,"file":"defaultConfig.d.ts","sourceRoot":"","sources":["../../../../src/floatingMenu/defaultConfig.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH;;;GAGG;AACH,MAAM,MAAM,aAAa,GACrB,KAAK,GACL,SAAS,GACT,SAAS,GACT,OAAO,GACP,mBAAmB,GACnB,cAAc,GACd,eAAe,GACf,mBAAmB,GACnB,yBAAyB,GACzB,OAAO,GACP,SAAS,GACT,OAAO,GACP,QAAQ,GACR,cAAc,GACd,WAAW,GACX,SAAS,GACT,eAAe,GACf,cAAc,GACd,oBAAoB,CAAC;AAEzB;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,aAAa,CAAC;AAE/C;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,aAAa,GAAG,kBAAkB,CAAC;AAEhE;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG,aAAa,CAAC;AAEvC;;GAEG;AACH,eAAO,MAAM,cAAc,IAAI,CAAC;AAEhC;;;;;;;;GAQG;AACH,MAAM,MAAM,qBAAqB,GAAG,cAAc,EAAE,CAAC;AAErD;;;;;;;;GAQG;AACH,MAAM,MAAM,iBAAiB,GAAG,UAAU,EAAE,CAAC;AAE7C;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,GAAG,iBAAiB,CAW9E;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,mBAAmB,CACjC,CAAC,SAAS,cAAc,EAAE,EAC1B,CAAC,SAAS,UAAU,EAAE,EACtB,MAAM,EAAE;IACR,QAAQ,CAAC,EAAE,CAAC,CAAC;IACb,IAAI,CAAC,EAAE,CAAC,CAAC;CACV,GAAG;IACF,QAAQ,EAAE,CAAC,GAAG,SAAS,CAAC;IACxB,IAAI,EAAE,CAAC,GAAG,SAAS,CAAC;CACrB,CAUA;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,EAAE,IAAI,cAAc,CAcjE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,EAAE,IAAI,UAAU,CAazD;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS,MAAM,EAC9C,GAAG,EAAE,CAAC,EAAE,EACR,cAAc,EAAE,CAAC,EAAE,GAClB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CASzB"}
1
+ {"version":3,"file":"defaultConfig.d.ts","sourceRoot":"","sources":["../../../../src/floatingMenu/defaultConfig.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH;;;GAGG;AACH,MAAM,MAAM,aAAa,GACrB,KAAK,GACL,SAAS,GACT,SAAS,GACT,OAAO,GACP,mBAAmB,GACnB,cAAc,GACd,eAAe,GACf,mBAAmB,GACnB,yBAAyB,GACzB,OAAO,GACP,SAAS,GACT,OAAO,GACP,QAAQ,GACR,cAAc,GACd,WAAW,GACX,UAAU,GACV,eAAe,GACf,cAAc,GACd,oBAAoB,CAAC;AAEzB;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,aAAa,CAAC;AAE/C;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,aAAa,GAAG,kBAAkB,CAAC;AAEhE;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG,aAAa,CAAC;AAEvC;;GAEG;AACH,eAAO,MAAM,cAAc,IAAI,CAAC;AAEhC;;;;;;;;GAQG;AACH,MAAM,MAAM,qBAAqB,GAAG,cAAc,EAAE,CAAC;AAErD;;;;;;;;GAQG;AACH,MAAM,MAAM,iBAAiB,GAAG,UAAU,EAAE,CAAC;AAE7C;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,GAAG,iBAAiB,CAW9E;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,mBAAmB,CACjC,CAAC,SAAS,cAAc,EAAE,EAC1B,CAAC,SAAS,UAAU,EAAE,EACtB,MAAM,EAAE;IACR,QAAQ,CAAC,EAAE,CAAC,CAAC;IACb,IAAI,CAAC,EAAE,CAAC,CAAC;CACV,GAAG;IACF,QAAQ,EAAE,CAAC,GAAG,SAAS,CAAC;IACxB,IAAI,EAAE,CAAC,GAAG,SAAS,CAAC;CACrB,CAUA;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,EAAE,IAAI,cAAc,CAcjE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,EAAE,IAAI,UAAU,CAazD;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS,MAAM,EAC9C,GAAG,EAAE,CAAC,EAAE,EACR,cAAc,EAAE,CAAC,EAAE,GAClB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CASzB"}
@@ -0,0 +1,66 @@
1
+ export interface DeviceIdentity {
2
+ deviceName: string;
3
+ deviceId: string;
4
+ }
5
+ /** Minimal getItem/setItem surface, so storage can be injected in tests. */
6
+ export interface IdentityStore {
7
+ getItem(key: string): Promise<string | null> | string | null;
8
+ setItem(key: string, value: string): Promise<void> | void;
9
+ }
10
+ export declare const INSTALL_ID_LENGTH = 8;
11
+ /** 8 lowercase hex chars — short enough to read, random enough for a LAN. */
12
+ export declare function generateInstallId(): string;
13
+ export interface BuildIdentityInput {
14
+ /** Expo config name; null for bare RN. */
15
+ appName: string | null;
16
+ /** expo-constants `deviceName`; null when unavailable. */
17
+ hardwareName?: string | null;
18
+ platform: string;
19
+ /** The persisted per-install tail. */
20
+ installId: string;
21
+ /** An explicit `externalSync.deviceId` — used verbatim, no tail in the name. */
22
+ deviceId?: string;
23
+ }
24
+ /** Pure: turns the inputs into the id/name pair the broker sees. */
25
+ export declare function buildDeviceIdentity({ appName, hardwareName, platform, installId, deviceId, }: BuildIdentityInput): DeviceIdentity;
26
+ export interface LoadInstallIdOptions {
27
+ platform?: string;
28
+ /** Storage override (tests). Defaults to sessionStorage on web, persistentStorage elsewhere. */
29
+ store?: IdentityStore | null;
30
+ mint?: () => string;
31
+ }
32
+ /**
33
+ * The persisted per-install tail: read it, or mint and store it on the first
34
+ * dial. Storage failures degrade to a fresh in-memory id rather than blocking
35
+ * the socket — a per-launch id still beats the old colliding one.
36
+ */
37
+ export declare function loadInstallId({ platform, store, mint, }?: LoadInstallIdOptions): Promise<string>;
38
+ /**
39
+ * Process-wide memo so every mount (and every Fast Refresh of the component
40
+ * that calls it) shares one storage round-trip and one id.
41
+ */
42
+ export declare function getInstallId(): Promise<string>;
43
+ /** Tests only. */
44
+ export declare function resetInstallIdForTests(): void;
45
+ export interface DeviceIdentityOptions {
46
+ deviceId?: string;
47
+ deviceName?: string;
48
+ }
49
+ export interface DeviceIdentityEnvironment {
50
+ /** Expo config name; null for bare RN. */
51
+ appName: string | null;
52
+ /** expo-constants `deviceName`; null when unavailable. */
53
+ hardwareName: string | null;
54
+ platform?: string;
55
+ /** The install-id loader (tests inject one; production uses the memo). */
56
+ loadId?: () => Promise<string>;
57
+ }
58
+ /**
59
+ * The identity to dial with. Null until the per-install id is read from
60
+ * storage (one round-trip on first mount; memoized process-wide after) —
61
+ * both sync hooks no-op on a null id, so the socket simply dials a beat
62
+ * later. An explicit `deviceId` skips the read entirely; an explicit
63
+ * `deviceName` is used verbatim.
64
+ */
65
+ export declare function useDeviceIdentity(options: DeviceIdentityOptions | undefined, env: DeviceIdentityEnvironment): DeviceIdentity | null;
66
+ //# sourceMappingURL=deviceIdentity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deviceIdentity.d.ts","sourceRoot":"","sources":["../../../../src/floatingMenu/deviceIdentity.ts"],"names":[],"mappings":"AAmCA,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,4EAA4E;AAC5E,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC;IAC7D,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CAC3D;AAED,eAAO,MAAM,iBAAiB,IAAI,CAAC;AAEnC,6EAA6E;AAC7E,wBAAgB,iBAAiB,IAAI,MAAM,CAM1C;AASD,MAAM,WAAW,kBAAkB;IACjC,0CAA0C;IAC1C,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,0DAA0D;IAC1D,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,sCAAsC;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,gFAAgF;IAChF,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,oEAAoE;AACpE,wBAAgB,mBAAmB,CAAC,EAClC,OAAO,EACP,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,QAAQ,GACT,EAAE,kBAAkB,GAAG,cAAc,CAcrC;AAYD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gGAAgG;IAChG,KAAK,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IAC7B,IAAI,CAAC,EAAE,MAAM,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CAAC,EAClC,QAAsB,EACtB,KAAK,EACL,IAAwB,GACzB,GAAE,oBAAyB,GAAG,OAAO,CAAC,MAAM,CAAC,CAkB7C;AAID;;;GAGG;AACH,wBAAgB,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,CAG9C;AAED,kBAAkB;AAClB,wBAAgB,sBAAsB,IAAI,IAAI,CAE7C;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,yBAAyB;IACxC,0CAA0C;IAC1C,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,0DAA0D;IAC1D,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0EAA0E;IAC1E,MAAM,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;CAChC;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,qBAAqB,GAAG,SAAS,EAC1C,GAAG,EAAE,yBAAyB,GAC7B,cAAc,GAAG,IAAI,CA4BvB"}
@@ -19,13 +19,6 @@ export type IconType = {
19
19
  }) => ReactNode;
20
20
  color: string;
21
21
  onPress: () => void;
22
- /**
23
- * True for tools that React Buoy offers but the current app has not installed.
24
- * Unavailable items render like a normal item (real icon + real name at full
25
- * styling) plus a small muted "Unavailable" caption, and are non-interactive
26
- * (tapping does nothing and keeps the dial open).
27
- */
28
- unavailable?: boolean;
29
22
  };
30
23
  interface DialDevToolsProps {
31
24
  onClose?: () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"DialDevTools.d.ts","sourceRoot":"","sources":["../../../../../src/floatingMenu/dial/DialDevTools.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAwC,SAAS,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAoC5E,OAAO,KAAK,EACV,YAAY,EACZ,mBAAmB,EACnB,iBAAiB,EAClB,MAAM,UAAU,CAAC;AAmClB,MAAM,MAAM,QAAQ,GAAG;IACrB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,SAAS,CAAC;IAChB;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,iBAAiB,CAAC;QAAC,OAAO,CAAC,EAAE,mBAAmB,CAAA;KAAE,KAAK,SAAS,CAAC;IAC/H,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAWF,UAAU,iBAAiB;IACzB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,IAAI,CAAC;IAC7B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,IAAI,EAAE,YAAY,EAAE,CAAC;IACrB,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAC1B,OAAO,CAAC,EAAE,mBAAmB,CAAC;CAC/B;AAED,eAAO,MAAM,YAAY,EAAE,EAAE,CAAC,iBAAiB,CAitB9C,CAAC"}
1
+ {"version":3,"file":"DialDevTools.d.ts","sourceRoot":"","sources":["../../../../../src/floatingMenu/dial/DialDevTools.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAwC,SAAS,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAmC5E,OAAO,KAAK,EACV,YAAY,EACZ,mBAAmB,EACnB,iBAAiB,EAClB,MAAM,UAAU,CAAC;AAkClB,MAAM,MAAM,QAAQ,GAAG;IACrB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,SAAS,CAAC;IAChB;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,iBAAiB,CAAC;QAAC,OAAO,CAAC,EAAE,mBAAmB,CAAA;KAAE,KAAK,SAAS,CAAC;IAC/H,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAAC;AAWF,UAAU,iBAAiB;IACzB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,IAAI,CAAC;IAC7B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,IAAI,EAAE,YAAY,EAAE,CAAC;IACrB,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAC1B,OAAO,CAAC,EAAE,mBAAmB,CAAC;CAC/B;AAED,eAAO,MAAM,YAAY,EAAE,EAAE,CAAC,iBAAiB,CAmqB9C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"DialIcon.d.ts","sourceRoot":"","sources":["../../../../../src/floatingMenu/dial/DialIcon.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAmB,EAAE,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAML,QAAQ,EACT,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AA+C1C,KAAK,KAAK,GAAG;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,QAAQ,CAAC;IACf,aAAa,EAAE,QAAQ,CAAC,KAAK,CAAC;IAC9B,OAAO,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,EAAE,CAAC,KAAK,CA2O9B,CAAC"}
1
+ {"version":3,"file":"DialIcon.d.ts","sourceRoot":"","sources":["../../../../../src/floatingMenu/dial/DialIcon.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAmB,EAAE,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAML,QAAQ,EACT,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AA+C1C,KAAK,KAAK,GAAG;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,QAAQ,CAAC;IACf,aAAa,EAAE,QAAQ,CAAC,KAAK,CAAC;IAC9B,OAAO,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,EAAE,CAAC,KAAK,CA0M9B,CAAC"}
@@ -9,5 +9,5 @@
9
9
  * Drift is prevented by a test that fails when this disagrees with
10
10
  * package.json, so a version bump that forgets this file cannot ship.
11
11
  */
12
- export declare const SDK_VERSION = "7.0.32";
12
+ export declare const SDK_VERSION = "7.0.34";
13
13
  //# sourceMappingURL=version.d.ts.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@buoy-gg/core",
3
- "version": "7.0.32",
3
+ "version": "7.0.34",
4
4
  "description": "Buoy devtools for React Native — a floating in-app dev menu; every tool streams live to your phone, desktop, and AI agent.",
5
5
  "main": "lib/commonjs/index.js",
6
6
  "module": "lib/module/index.js",
@@ -37,10 +37,10 @@
37
37
  ],
38
38
  "sideEffects": false,
39
39
  "dependencies": {
40
- "@buoy-gg/shared-ui": "^7.0.32",
41
- "@buoy-gg/license": "^7.0.32",
42
- "@buoy-gg/floating-tools-core": "^7.0.32",
43
- "@buoy-gg/floating-tools-react": "^7.0.32"
40
+ "@buoy-gg/license": "^7.0.34",
41
+ "@buoy-gg/shared-ui": "^7.0.34",
42
+ "@buoy-gg/floating-tools-core": "^7.0.34",
43
+ "@buoy-gg/floating-tools-react": "^7.0.34"
44
44
  },
45
45
  "peerDependencies": {
46
46
  "react": "*",
@@ -1,159 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.ALL_TOOLS_REGISTRY = void 0;
7
- var _react = _interopRequireDefault(require("react"));
8
- var _floatingToolsCore = require("@buoy-gg/floating-tools-core");
9
- var _sharedUi = require("@buoy-gg/shared-ui");
10
- var _jsxRuntime = require("react/jsx-runtime");
11
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
12
- /**
13
- * Canonical registry of ALL dial-eligible tools React Buoy offers on mobile.
14
- *
15
- * This is the single source of truth used to compute which tools are
16
- * "unavailable" (offered but not installed in the current app). It lives
17
- * inside the floating-menu package so nothing outside needs to be imported.
18
- *
19
- * Rules for this file:
20
- * - Only import from REQUIRED dependencies (@buoy-gg/floating-tools-core,
21
- * @buoy-gg/shared-ui, react-native) so the icons are always resolvable,
22
- * even when the optional tool packages are not installed.
23
- * - Only include tools whose preset slot is NOT "row" (row-only tools never
24
- * appear in the dial and have no "unavailable" state to show).
25
- * - Keep the order intentional: this order is the fallback when no usage
26
- * data exists for new/unavailable tools.
27
- */
28
-
29
- // ─── Icons for tools whose packages are optional ─────────────────────────────
30
- // Zustand and Jotai may not be installed, so their icons cannot be imported
31
- // from those packages. They no longer need vendoring: the artwork is authored
32
- // in shared/icons/*.json and generated into @buoy-gg/floating-tools-core, which
33
- // IS a required dependency. Unavailable items therefore render the ACTUAL tool
34
- // icon (just dimmed by DialIcon), and it can no longer drift from the real one.
35
-
36
- // ─── Registry entry type ──────────────────────────────────────────────────────
37
-
38
- // ─── Canonical catalog ────────────────────────────────────────────────────────
39
-
40
- /**
41
- * Full list of every dial-eligible tool React Buoy offers on mobile.
42
- *
43
- * Available (installed) tools are shown normally in the dial.
44
- * Unavailable (not installed) tools are appended at the end of the dial and look
45
- * like a normal item (real icon + real name) with a small muted "Unavailable"
46
- * caption added; they are non-interactive.
47
- *
48
- * To add a new tool to Buoy:
49
- * 1. Add its preset to autoDiscoverPresets.ts
50
- * 2. Add an entry here so it appears in the "unavailable" section for apps
51
- * that haven't installed it yet.
52
- */
53
- const ALL_TOOLS_REGISTRY = exports.ALL_TOOLS_REGISTRY = [{
54
- id: "env",
55
- name: "ENV",
56
- color: _floatingToolsCore.ENV_ICON_COLOR,
57
- renderIcon: size => /*#__PURE__*/(0, _jsxRuntime.jsx)(_floatingToolsCore.EnvIcon, {
58
- size: size
59
- })
60
- }, {
61
- id: "network",
62
- name: "NETWORK",
63
- color: _floatingToolsCore.NETWORK_ICON_COLOR,
64
- renderIcon: size => /*#__PURE__*/(0, _jsxRuntime.jsx)(_floatingToolsCore.NetworkIcon, {
65
- size: size
66
- })
67
- }, {
68
- id: "storage",
69
- name: "STORAGE",
70
- color: _floatingToolsCore.STORAGE_ICON_COLOR,
71
- renderIcon: size => /*#__PURE__*/(0, _jsxRuntime.jsx)(_floatingToolsCore.StorageIcon, {
72
- size: size
73
- })
74
- }, {
75
- id: "query",
76
- name: "QUERY",
77
- color: _floatingToolsCore.QUERY_ICON_COLOR,
78
- renderIcon: size => /*#__PURE__*/(0, _jsxRuntime.jsx)(_floatingToolsCore.QueryIcon, {
79
- size: size
80
- })
81
- }, {
82
- id: "route-events",
83
- name: "ROUTES",
84
- color: _floatingToolsCore.ROUTES_ICON_COLOR,
85
- renderIcon: size => /*#__PURE__*/(0, _jsxRuntime.jsx)(_floatingToolsCore.RoutesIcon, {
86
- size: size
87
- })
88
- }, {
89
- id: "highlight-updates-modal",
90
- name: "HIGHLIGHT",
91
- color: _floatingToolsCore.HIGHLIGHTER_ICON_COLOR,
92
- renderIcon: size => /*#__PURE__*/(0, _jsxRuntime.jsx)(_floatingToolsCore.HighlighterIcon, {
93
- size: size
94
- })
95
- }, {
96
- id: "redux",
97
- name: "REDUX",
98
- color: _floatingToolsCore.REDUX_ICON_COLOR,
99
- renderIcon: size => /*#__PURE__*/(0, _jsxRuntime.jsx)(_floatingToolsCore.ReduxIcon, {
100
- size: size
101
- })
102
- }, {
103
- id: "zustand",
104
- name: "ZUSTAND",
105
- color: _floatingToolsCore.ZUSTAND_ICON_COLOR,
106
- renderIcon: size => /*#__PURE__*/(0, _jsxRuntime.jsx)(_floatingToolsCore.ZustandIcon, {
107
- size: size
108
- })
109
- }, {
110
- id: "events",
111
- name: "EVENTS",
112
- color: _floatingToolsCore.EVENTS_ICON_COLOR,
113
- renderIcon: size => /*#__PURE__*/(0, _jsxRuntime.jsx)(_floatingToolsCore.EventsIcon, {
114
- size: size
115
- })
116
- }, {
117
- id: "time-machine",
118
- name: "TIME MACHINE",
119
- color: _floatingToolsCore.TIME_MACHINE_ICON_COLOR,
120
- renderIcon: size => /*#__PURE__*/(0, _jsxRuntime.jsx)(_floatingToolsCore.TimeMachineIcon, {
121
- size: size
122
- })
123
- }, {
124
- id: "scenarios",
125
- name: "SCENARIOS",
126
- color: _floatingToolsCore.SCENARIOS_ICON_COLOR,
127
- renderIcon: size => /*#__PURE__*/(0, _jsxRuntime.jsx)(_floatingToolsCore.ScenariosIcon, {
128
- size: size
129
- })
130
- }, {
131
- id: "copilot",
132
- name: "ASK BUOY",
133
- color: _floatingToolsCore.COPILOT_ICON_COLOR,
134
- renderIcon: size => /*#__PURE__*/(0, _jsxRuntime.jsx)(_floatingToolsCore.CopilotIcon, {
135
- size: size
136
- })
137
- }, {
138
- id: "jotai",
139
- name: "JOTAI",
140
- color: _floatingToolsCore.JOTAI_ICON_COLOR,
141
- renderIcon: size => /*#__PURE__*/(0, _jsxRuntime.jsx)(_floatingToolsCore.JotaiIcon, {
142
- size: size
143
- })
144
- }, {
145
- id: "image-overlay",
146
- name: "IMG",
147
- color: _floatingToolsCore.IMAGE_OVERLAY_ICON_COLOR,
148
- renderIcon: size => /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.ImageOverlayIcon, {
149
- size: size,
150
- color: _floatingToolsCore.IMAGE_OVERLAY_ICON_COLOR
151
- })
152
- }, {
153
- id: "perf-monitor-modal",
154
- name: "BENCH",
155
- color: _floatingToolsCore.BENCHMARK_ICON_COLOR,
156
- renderIcon: size => /*#__PURE__*/(0, _jsxRuntime.jsx)(_floatingToolsCore.BenchmarkIcon, {
157
- size: size
158
- })
159
- }];
@@ -1,155 +0,0 @@
1
- "use strict";
2
-
3
- /**
4
- * Canonical registry of ALL dial-eligible tools React Buoy offers on mobile.
5
- *
6
- * This is the single source of truth used to compute which tools are
7
- * "unavailable" (offered but not installed in the current app). It lives
8
- * inside the floating-menu package so nothing outside needs to be imported.
9
- *
10
- * Rules for this file:
11
- * - Only import from REQUIRED dependencies (@buoy-gg/floating-tools-core,
12
- * @buoy-gg/shared-ui, react-native) so the icons are always resolvable,
13
- * even when the optional tool packages are not installed.
14
- * - Only include tools whose preset slot is NOT "row" (row-only tools never
15
- * appear in the dial and have no "unavailable" state to show).
16
- * - Keep the order intentional: this order is the fallback when no usage
17
- * data exists for new/unavailable tools.
18
- */
19
-
20
- import React from "react";
21
- import { EnvIcon, ENV_ICON_COLOR, NetworkIcon, NETWORK_ICON_COLOR, StorageIcon, STORAGE_ICON_COLOR, QueryIcon, QUERY_ICON_COLOR, RoutesIcon, ROUTES_ICON_COLOR, HighlighterIcon, HIGHLIGHTER_ICON_COLOR, ReduxIcon, REDUX_ICON_COLOR, EventsIcon, EVENTS_ICON_COLOR, BenchmarkIcon, BENCHMARK_ICON_COLOR } from "@buoy-gg/floating-tools-core";
22
- import { ImageOverlayIcon } from "@buoy-gg/shared-ui";
23
-
24
- // ─── Icons for tools whose packages are optional ─────────────────────────────
25
- // Zustand and Jotai may not be installed, so their icons cannot be imported
26
- // from those packages. They no longer need vendoring: the artwork is authored
27
- // in shared/icons/*.json and generated into @buoy-gg/floating-tools-core, which
28
- // IS a required dependency. Unavailable items therefore render the ACTUAL tool
29
- // icon (just dimmed by DialIcon), and it can no longer drift from the real one.
30
- import { ZustandIcon, ZUSTAND_ICON_COLOR, JotaiIcon, JOTAI_ICON_COLOR, IMAGE_OVERLAY_ICON_COLOR, TimeMachineIcon, TIME_MACHINE_ICON_COLOR, ScenariosIcon, CopilotIcon, COPILOT_ICON_COLOR, SCENARIOS_ICON_COLOR } from "@buoy-gg/floating-tools-core";
31
-
32
- // ─── Registry entry type ──────────────────────────────────────────────────────
33
- import { jsx as _jsx } from "react/jsx-runtime";
34
- // ─── Canonical catalog ────────────────────────────────────────────────────────
35
-
36
- /**
37
- * Full list of every dial-eligible tool React Buoy offers on mobile.
38
- *
39
- * Available (installed) tools are shown normally in the dial.
40
- * Unavailable (not installed) tools are appended at the end of the dial and look
41
- * like a normal item (real icon + real name) with a small muted "Unavailable"
42
- * caption added; they are non-interactive.
43
- *
44
- * To add a new tool to Buoy:
45
- * 1. Add its preset to autoDiscoverPresets.ts
46
- * 2. Add an entry here so it appears in the "unavailable" section for apps
47
- * that haven't installed it yet.
48
- */
49
- export const ALL_TOOLS_REGISTRY = [{
50
- id: "env",
51
- name: "ENV",
52
- color: ENV_ICON_COLOR,
53
- renderIcon: size => /*#__PURE__*/_jsx(EnvIcon, {
54
- size: size
55
- })
56
- }, {
57
- id: "network",
58
- name: "NETWORK",
59
- color: NETWORK_ICON_COLOR,
60
- renderIcon: size => /*#__PURE__*/_jsx(NetworkIcon, {
61
- size: size
62
- })
63
- }, {
64
- id: "storage",
65
- name: "STORAGE",
66
- color: STORAGE_ICON_COLOR,
67
- renderIcon: size => /*#__PURE__*/_jsx(StorageIcon, {
68
- size: size
69
- })
70
- }, {
71
- id: "query",
72
- name: "QUERY",
73
- color: QUERY_ICON_COLOR,
74
- renderIcon: size => /*#__PURE__*/_jsx(QueryIcon, {
75
- size: size
76
- })
77
- }, {
78
- id: "route-events",
79
- name: "ROUTES",
80
- color: ROUTES_ICON_COLOR,
81
- renderIcon: size => /*#__PURE__*/_jsx(RoutesIcon, {
82
- size: size
83
- })
84
- }, {
85
- id: "highlight-updates-modal",
86
- name: "HIGHLIGHT",
87
- color: HIGHLIGHTER_ICON_COLOR,
88
- renderIcon: size => /*#__PURE__*/_jsx(HighlighterIcon, {
89
- size: size
90
- })
91
- }, {
92
- id: "redux",
93
- name: "REDUX",
94
- color: REDUX_ICON_COLOR,
95
- renderIcon: size => /*#__PURE__*/_jsx(ReduxIcon, {
96
- size: size
97
- })
98
- }, {
99
- id: "zustand",
100
- name: "ZUSTAND",
101
- color: ZUSTAND_ICON_COLOR,
102
- renderIcon: size => /*#__PURE__*/_jsx(ZustandIcon, {
103
- size: size
104
- })
105
- }, {
106
- id: "events",
107
- name: "EVENTS",
108
- color: EVENTS_ICON_COLOR,
109
- renderIcon: size => /*#__PURE__*/_jsx(EventsIcon, {
110
- size: size
111
- })
112
- }, {
113
- id: "time-machine",
114
- name: "TIME MACHINE",
115
- color: TIME_MACHINE_ICON_COLOR,
116
- renderIcon: size => /*#__PURE__*/_jsx(TimeMachineIcon, {
117
- size: size
118
- })
119
- }, {
120
- id: "scenarios",
121
- name: "SCENARIOS",
122
- color: SCENARIOS_ICON_COLOR,
123
- renderIcon: size => /*#__PURE__*/_jsx(ScenariosIcon, {
124
- size: size
125
- })
126
- }, {
127
- id: "copilot",
128
- name: "ASK BUOY",
129
- color: COPILOT_ICON_COLOR,
130
- renderIcon: size => /*#__PURE__*/_jsx(CopilotIcon, {
131
- size: size
132
- })
133
- }, {
134
- id: "jotai",
135
- name: "JOTAI",
136
- color: JOTAI_ICON_COLOR,
137
- renderIcon: size => /*#__PURE__*/_jsx(JotaiIcon, {
138
- size: size
139
- })
140
- }, {
141
- id: "image-overlay",
142
- name: "IMG",
143
- color: IMAGE_OVERLAY_ICON_COLOR,
144
- renderIcon: size => /*#__PURE__*/_jsx(ImageOverlayIcon, {
145
- size: size,
146
- color: IMAGE_OVERLAY_ICON_COLOR
147
- })
148
- }, {
149
- id: "perf-monitor-modal",
150
- name: "BENCH",
151
- color: BENCHMARK_ICON_COLOR,
152
- renderIcon: size => /*#__PURE__*/_jsx(BenchmarkIcon, {
153
- size: size
154
- })
155
- }];