@buoy-gg/core 7.0.21 → 7.0.23

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 (51) hide show
  1. package/bin/__tests__/buoyCli.test.ts +131 -0
  2. package/bin/buoy.js +299 -0
  3. package/lib/commonjs/Buoy.js +14 -0
  4. package/lib/commonjs/floatingMenu/FloatingDevTools.js +48 -10
  5. package/lib/commonjs/floatingMenu/ToolHost.js +5 -1
  6. package/lib/commonjs/floatingMenu/autoExternalSync.js +13 -7
  7. package/lib/commonjs/floatingMenu/externalSyncGate.js +49 -0
  8. package/lib/commonjs/floatingMenu/sync/appSyncAdapter.js +15 -2
  9. package/lib/commonjs/telemetry/installPing.js +124 -0
  10. package/lib/commonjs/version.js +18 -0
  11. package/lib/module/Buoy.js +13 -0
  12. package/lib/module/floatingMenu/FloatingDevTools.js +48 -10
  13. package/lib/module/floatingMenu/ToolHost.js +5 -1
  14. package/lib/module/floatingMenu/autoExternalSync.js +13 -7
  15. package/lib/module/floatingMenu/externalSyncGate.js +44 -0
  16. package/lib/module/floatingMenu/sync/appSyncAdapter.js +16 -3
  17. package/lib/module/telemetry/installPing.js +120 -0
  18. package/lib/module/version.js +14 -0
  19. package/lib/typescript/commonjs/Buoy.d.ts +14 -0
  20. package/lib/typescript/commonjs/Buoy.d.ts.map +1 -1
  21. package/lib/typescript/commonjs/floatingMenu/FloatingDevTools.d.ts +15 -0
  22. package/lib/typescript/commonjs/floatingMenu/FloatingDevTools.d.ts.map +1 -1
  23. package/lib/typescript/commonjs/floatingMenu/ToolHost.d.ts +7 -1
  24. package/lib/typescript/commonjs/floatingMenu/ToolHost.d.ts.map +1 -1
  25. package/lib/typescript/commonjs/floatingMenu/autoExternalSync.d.ts +28 -2
  26. package/lib/typescript/commonjs/floatingMenu/autoExternalSync.d.ts.map +1 -1
  27. package/lib/typescript/commonjs/floatingMenu/externalSyncGate.d.ts +30 -0
  28. package/lib/typescript/commonjs/floatingMenu/externalSyncGate.d.ts.map +1 -0
  29. package/lib/typescript/commonjs/floatingMenu/sync/appSyncAdapter.d.ts +2 -0
  30. package/lib/typescript/commonjs/floatingMenu/sync/appSyncAdapter.d.ts.map +1 -1
  31. package/lib/typescript/commonjs/telemetry/installPing.d.ts +37 -0
  32. package/lib/typescript/commonjs/telemetry/installPing.d.ts.map +1 -0
  33. package/lib/typescript/commonjs/version.d.ts +13 -0
  34. package/lib/typescript/commonjs/version.d.ts.map +1 -0
  35. package/lib/typescript/module/Buoy.d.ts +14 -0
  36. package/lib/typescript/module/Buoy.d.ts.map +1 -1
  37. package/lib/typescript/module/floatingMenu/FloatingDevTools.d.ts +15 -0
  38. package/lib/typescript/module/floatingMenu/FloatingDevTools.d.ts.map +1 -1
  39. package/lib/typescript/module/floatingMenu/ToolHost.d.ts +7 -1
  40. package/lib/typescript/module/floatingMenu/ToolHost.d.ts.map +1 -1
  41. package/lib/typescript/module/floatingMenu/autoExternalSync.d.ts +28 -2
  42. package/lib/typescript/module/floatingMenu/autoExternalSync.d.ts.map +1 -1
  43. package/lib/typescript/module/floatingMenu/externalSyncGate.d.ts +30 -0
  44. package/lib/typescript/module/floatingMenu/externalSyncGate.d.ts.map +1 -0
  45. package/lib/typescript/module/floatingMenu/sync/appSyncAdapter.d.ts +2 -0
  46. package/lib/typescript/module/floatingMenu/sync/appSyncAdapter.d.ts.map +1 -1
  47. package/lib/typescript/module/telemetry/installPing.d.ts +37 -0
  48. package/lib/typescript/module/telemetry/installPing.d.ts.map +1 -0
  49. package/lib/typescript/module/version.d.ts +13 -0
  50. package/lib/typescript/module/version.d.ts.map +1 -0
  51. package/package.json +9 -5
@@ -19,7 +19,21 @@ export interface BuoyConfig {
19
19
  * Pass empty string or omit to clear cached license and use free mode
20
20
  */
21
21
  licenseKey?: string;
22
+ /**
23
+ * Set `false` to disable the anonymous install ping.
24
+ *
25
+ * Buoy sends one ping per day, in development only, carrying a random
26
+ * install id, the Buoy version, your platform, and your license tier —
27
+ * no project, app, or tool data. It exists so we can tell how many
28
+ * installs never claim an account; it is the only way to measure that,
29
+ * since a license server can only ever see keys that already exist.
30
+ *
31
+ * Details: https://buoy.gg/docs/telemetry
32
+ */
33
+ telemetry?: boolean;
22
34
  }
35
+ /** Whether the anonymous install ping is allowed to fire. */
36
+ export declare function isTelemetryEnabled(): boolean;
23
37
  /**
24
38
  * Buoy SDK namespace
25
39
  *
@@ -1 +1 @@
1
- {"version":3,"file":"Buoy.d.ts","sourceRoot":"","sources":["../../../src/Buoy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,MAAM,WAAW,UAAU;IACzB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,eAAO,MAAM,IAAI;IACf;;;;;;;;;;;;;;;;;;;;OAoBG;iBACU,UAAU,GAAG,IAAI;IAkB9B;;;;;;;;;;;;OAYG;sBACqB,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC;IAUrD;;OAEG;aACM,OAAO;IAIhB;;OAEG;;IAKH;;;OAGG;uBACsB,OAAO,CAAC,IAAI,CAAC;CAGvC,CAAC;AAGF,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"Buoy.d.ts","sourceRoot":"","sources":["../../../src/Buoy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,MAAM,WAAW,UAAU;IACzB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;;;;;;OAUG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAQD,6DAA6D;AAC7D,wBAAgB,kBAAkB,IAAI,OAAO,CAE5C;AAED;;;;GAIG;AACH,eAAO,MAAM,IAAI;IACf;;;;;;;;;;;;;;;;;;;;OAoBG;iBACU,UAAU,GAAG,IAAI;IAoB9B;;;;;;;;;;;;OAYG;sBACqB,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC;IAUrD;;OAEG;aACM,OAAO;IAIhB;;OAEG;;IAKH;;;OAGG;uBACsB,OAAO,CAAC,IAAI,CAAC;CAGvC,CAAC;AAGF,eAAe,IAAI,CAAC"}
@@ -247,6 +247,21 @@ export interface FloatingDevToolsProps extends Omit<FloatingMenuProps, "apps"> {
247
247
  * ```tsx
248
248
  * <FloatingDevTools externalSync={{ deviceName: "My App (ios)" }} />
249
249
  * ```
250
+ *
251
+ * **Release builds** (`__DEV__ === false`) never sync unless the app asks
252
+ * for it: set `enableInRelease` and hold a real Pro license. Profiling a
253
+ * release build on a physical iOS device also needs an explicit
254
+ * `socketURL`, since there is no Metro host to derive one from.
255
+ *
256
+ * @example
257
+ * ```tsx
258
+ * <FloatingDevTools
259
+ * externalSync={{
260
+ * enableInRelease: true,
261
+ * socketURL: "http://192.168.1.20:42831", // LAN IP for iOS devices
262
+ * }}
263
+ * />
264
+ * ```
250
265
  */
251
266
  externalSync?: boolean | ExternalSyncOptions;
252
267
  /**
@@ -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;AAMtE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAM5C,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EAEvB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAGL,KAAK,mBAAmB,EACzB,MAAM,oBAAoB,CAAC;AAE5B;;;;;;;;;;;;;;;;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;;;;;;;;;;;;;;;;;OAiBG;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,6BAmWvB,CAAC"}
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;AAMtE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAQ5C,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EAEvB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAGL,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,6BA0XvB,CAAC"}
@@ -32,8 +32,14 @@ export interface ToolHostContextValue {
32
32
  isSearchActive: boolean;
33
33
  /** Close and clear the header search. */
34
34
  clearSearch: () => void;
35
- /** Close this tool. */
35
+ /** Close this tool — the instance and its state go away. */
36
36
  close: () => void;
37
+ /**
38
+ * Hide this tool without tearing it down: it goes to the minimized dock
39
+ * and comes back with its state intact. What a tool wants after finishing
40
+ * a job the user opened it to do.
41
+ */
42
+ minimize: () => void;
37
43
  /** Show a transient toast inside the tool modal. */
38
44
  showToast: (message: string, type?: ToolToastType) => void;
39
45
  /** Low-level header override setter — prefer `useToolHeader`. */
@@ -1 +1 @@
1
- {"version":3,"file":"ToolHost.d.ts","sourceRoot":"","sources":["../../../../src/floatingMenu/ToolHost.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,EAQZ,KAAK,cAAc,EACnB,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAWf,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C,+EAA+E;AAC/E,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iEAAiE;IACjE,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,sEAAsE;IACtE,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;AAEzD,MAAM,WAAW,oBAAoB;IACnC,+DAA+D;IAC/D,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,OAAO,CAAC;IACxB,yCAAyC;IACzC,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,uBAAuB;IACvB,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,oDAAoD;IACpD,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,aAAa,KAAK,IAAI,CAAC;IAC3D,iEAAiE;IACjE,iBAAiB,EAAE,CAAC,QAAQ,EAAE,kBAAkB,GAAG,IAAI,KAAK,IAAI,CAAC;IACjE,2CAA2C;IAC3C,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAcD;;;;GAIG;AACH,wBAAgB,WAAW,IAAI,oBAAoB,CAElD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,kBAAkB,GAAG,IAAI,EACnC,IAAI,EAAE,cAAc,QASrB;AAiDD,UAAU,mBAAmB;IAC3B,GAAG,EAAE,WAAW,CAAC;IACjB,MAAM,EAAE,eAAe,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,UAAU,EAAE,CAAC,UAAU,CAAC,EAAE,iBAAiB,KAAK,IAAI,CAAC;IACrD,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,2BAA2B,CAAC,EAAE,OAAO,CAAC;IACtC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAQD,wBAAgB,cAAc,CAAC,EAC7B,GAAG,EACH,MAAM,EACN,OAAO,EACP,MAAM,EACN,OAAO,EACP,UAAU,EACV,iBAAiB,EACjB,2BAA2B,EAC3B,SAAS,GACV,EAAE,mBAAmB,qBA+GrB"}
1
+ {"version":3,"file":"ToolHost.d.ts","sourceRoot":"","sources":["../../../../src/floatingMenu/ToolHost.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,EAQZ,KAAK,cAAc,EACnB,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAWf,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C,+EAA+E;AAC/E,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iEAAiE;IACjE,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,sEAAsE;IACtE,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;AAEzD,MAAM,WAAW,oBAAoB;IACnC,+DAA+D;IAC/D,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,OAAO,CAAC;IACxB,yCAAyC;IACzC,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,4DAA4D;IAC5D,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB;;;;OAIG;IACH,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,oDAAoD;IACpD,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,aAAa,KAAK,IAAI,CAAC;IAC3D,iEAAiE;IACjE,iBAAiB,EAAE,CAAC,QAAQ,EAAE,kBAAkB,GAAG,IAAI,KAAK,IAAI,CAAC;IACjE,2CAA2C;IAC3C,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAeD;;;;GAIG;AACH,wBAAgB,WAAW,IAAI,oBAAoB,CAElD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,kBAAkB,GAAG,IAAI,EACnC,IAAI,EAAE,cAAc,QASrB;AAiDD,UAAU,mBAAmB;IAC3B,GAAG,EAAE,WAAW,CAAC;IACjB,MAAM,EAAE,eAAe,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,UAAU,EAAE,CAAC,UAAU,CAAC,EAAE,iBAAiB,KAAK,IAAI,CAAC;IACrD,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,2BAA2B,CAAC,EAAE,OAAO,CAAC;IACtC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAQD,wBAAgB,cAAc,CAAC,EAC7B,GAAG,EACH,MAAM,EACN,OAAO,EACP,MAAM,EACN,OAAO,EACP,UAAU,EACV,iBAAiB,EACjB,2BAA2B,EAC3B,SAAS,GACV,EAAE,mBAAmB,qBA0HrB"}
@@ -1,5 +1,6 @@
1
1
  import type { EnvVarConfig } from "./FloatingDevTools";
2
2
  import type { InstalledApp } from "./types";
3
+ import type { BuoyTier } from "@buoy-gg/license";
3
4
  /** Whether zero-config sync can run (the external-sync package is installed). */
4
5
  export declare function isExternalSyncAvailable(): boolean;
5
6
  export interface ExternalSyncOptions {
@@ -15,6 +16,25 @@ export interface ExternalSyncOptions {
15
16
  deviceName?: string;
16
17
  /** Stable device identity across restarts. @default "<app-slug>-<platform>" */
17
18
  deviceId?: string;
19
+ /**
20
+ * Allow this build to dial the broker when `__DEV__` is false (a release /
21
+ * production JS bundle). OFF by default: a shipped app must never open a
22
+ * socket to a dev machine on an end user's phone.
23
+ *
24
+ * Turn it on for builds YOU profile — a local release build, an internal
25
+ * TestFlight/EAS build, a field build that ships headless. It additionally
26
+ * requires a real Pro license; without one nothing renders in release
27
+ * anyway.
28
+ *
29
+ * There is no Metro server in a release bundle, so the broker host can't be
30
+ * derived and `socketURL` falls back to `http://localhost:42831`. That is
31
+ * already correct for simulators/emulators and for Android over USB
32
+ * (`adb reverse tcp:42831 tcp:42831`) — pass `socketURL` explicitly for a
33
+ * physical iOS device, or any broker on another machine.
34
+ *
35
+ * @default false
36
+ */
37
+ enableInRelease?: boolean;
18
38
  /** @default false */
19
39
  enableLogs?: boolean;
20
40
  }
@@ -24,7 +44,13 @@ interface AutoExternalSyncProps {
24
44
  requiredEnvVars?: EnvVarConfig[];
25
45
  /** Pro status, forwarded into the handshake so the dashboard can adopt it. */
26
46
  isPro?: boolean;
27
- /** Pro license key, forwarded into the handshake alongside `isPro`. */
47
+ /**
48
+ * The device's access tier. Sent alongside `isPro` so the dashboard can tell
49
+ * a signed-in free user apart from an anonymous one — `isPro` alone collapses
50
+ * both to false.
51
+ */
52
+ tier?: BuoyTier;
53
+ /** License key, forwarded into the handshake alongside `isPro`. */
28
54
  licenseKey?: string | null;
29
55
  /**
30
56
  * Custom tools (from FloatingDevTools' `apps`) that declared a `sync`
@@ -33,6 +59,6 @@ interface AutoExternalSyncProps {
33
59
  */
34
60
  customApps?: InstalledApp[];
35
61
  }
36
- export declare function AutoExternalSync({ options, requiredEnvVars, isPro, licenseKey, customApps, }: AutoExternalSyncProps): null;
62
+ export declare function AutoExternalSync({ options, requiredEnvVars, isPro, tier, licenseKey, customApps, }: AutoExternalSyncProps): null;
37
63
  export {};
38
64
  //# sourceMappingURL=autoExternalSync.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"autoExternalSync.d.ts","sourceRoot":"","sources":["../../../../src/floatingMenu/autoExternalSync.tsx"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AA4I5C,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,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,uEAAuE;IACvE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B;;;;OAIG;IACH,UAAU,CAAC,EAAE,YAAY,EAAE,CAAC;CAC7B;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,OAAO,EACP,eAAe,EACf,KAAK,EACL,UAAU,EACV,UAAU,GACX,EAAE,qBAAqB,QAkIvB"}
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;AA4IjD,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,wBAAgB,gBAAgB,CAAC,EAC/B,OAAO,EACP,eAAe,EACf,KAAK,EACL,IAAI,EACJ,UAAU,EACV,UAAU,GACX,EAAE,qBAAqB,QAsIvB"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Decides whether FloatingDevTools mounts <AutoExternalSync /> — i.e. whether
3
+ * this build is allowed to dial the Buoy Desktop broker.
4
+ *
5
+ * Kept as a pure function in its own module (no react-native / no guarded
6
+ * requires) so the rule is unit-testable: the gate used to be an inline
7
+ * `isDevelopment && ...` in JSX, which silently made release builds unable to
8
+ * reach the desktop dashboard or MCP with no way to opt in from app code.
9
+ *
10
+ * The rule has two halves that must BOTH hold in a release build, because a
11
+ * shipped app must never contact a broker on an end user's device:
12
+ * 1. a real Pro license (never the Weekend Pass — see useProAccess), and
13
+ * 2. an EXPLICIT opt-in from app code (`externalSync.enableInRelease`).
14
+ * Dev builds keep the zero-config behavior: sync is on unless turned off.
15
+ */
16
+ import type { ExternalSyncOptions } from "./autoExternalSync";
17
+ export interface ExternalSyncGateInput {
18
+ /** Resolved `__DEV__` for this bundle. */
19
+ isDevelopment: boolean;
20
+ /** Real (non-Weekend-Pass) Pro license, from useProAccess(). */
21
+ isLicensed: boolean;
22
+ /** The `externalSync` prop exactly as FloatingDevTools received it. */
23
+ externalSync: boolean | ExternalSyncOptions | undefined;
24
+ /** Whether @buoy-gg/external-sync is installed (isExternalSyncAvailable()). */
25
+ isAvailable: boolean;
26
+ }
27
+ /** The options object from the prop, or undefined when it's a boolean. */
28
+ export declare function externalSyncOptions(externalSync: boolean | ExternalSyncOptions | undefined): ExternalSyncOptions | undefined;
29
+ export declare function shouldMountExternalSync({ isDevelopment, isLicensed, externalSync, isAvailable, }: ExternalSyncGateInput): boolean;
30
+ //# sourceMappingURL=externalSyncGate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"externalSyncGate.d.ts","sourceRoot":"","sources":["../../../../src/floatingMenu/externalSyncGate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE9D,MAAM,WAAW,qBAAqB;IACpC,0CAA0C;IAC1C,aAAa,EAAE,OAAO,CAAC;IACvB,gEAAgE;IAChE,UAAU,EAAE,OAAO,CAAC;IACpB,uEAAuE;IACvE,YAAY,EAAE,OAAO,GAAG,mBAAmB,GAAG,SAAS,CAAC;IACxD,+EAA+E;IAC/E,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,0EAA0E;AAC1E,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,OAAO,GAAG,mBAAmB,GAAG,SAAS,GACtD,mBAAmB,GAAG,SAAS,CAIjC;AAED,wBAAgB,uBAAuB,CAAC,EACtC,aAAa,EACb,UAAU,EACV,YAAY,EACZ,WAAW,GACZ,EAAE,qBAAqB,GAAG,OAAO,CAkBjC"}
@@ -2,6 +2,7 @@ export declare const appSyncAdapter: {
2
2
  version: number;
3
3
  getSnapshot: () => {
4
4
  startedAt: number;
5
+ devServerOrigin: string | null;
5
6
  reload: {
6
7
  available: boolean;
7
8
  strategy: import("@buoy-gg/shared-ui").ResolvedReloadStrategy | null;
@@ -17,6 +18,7 @@ export declare const appSyncAdapter: {
17
18
  ping: () => {
18
19
  ok: boolean;
19
20
  startedAt: number;
21
+ devServerOrigin: string | null;
20
22
  };
21
23
  /**
22
24
  * Reload the app's JS bundle: RN's `DevSettings.reload()` in dev builds,
@@ -1 +1 @@
1
- {"version":3,"file":"appSyncAdapter.d.ts","sourceRoot":"","sources":["../../../../../src/floatingMenu/sync/appSyncAdapter.ts"],"names":[],"mappings":"AA6BA,eAAO,MAAM,cAAc;;;;;;;;;2BAcF,MAAM,IAAI;;QAE/B;;;;WAIG;;;;;QAEH;;;;;;;;;WASG;6BACkB,OAAO;;;;;;CAY/B,CAAC"}
1
+ {"version":3,"file":"appSyncAdapter.d.ts","sourceRoot":"","sources":["../../../../../src/floatingMenu/sync/appSyncAdapter.ts"],"names":[],"mappings":"AAyCA,eAAO,MAAM,cAAc;;;;;;;;;;2BAeF,MAAM,IAAI;;QAE/B;;;;WAIG;;;;;;QAMH;;;;;;;;;WASG;6BACkB,OAAO;;;;;;CAY/B,CAAC"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Anonymous install ping.
3
+ *
4
+ * Answers the one question licensing data cannot: how many people run Buoy at
5
+ * all. Keygen sees every free and paid key, but by definition it cannot see an
6
+ * install that never claimed one — so without this, "what fraction of installs
7
+ * have an account" has no denominator.
8
+ *
9
+ * Constraints this is built to honor:
10
+ *
11
+ * - **Development only.** Never fires from a shipped app. Buoy is a developer
12
+ * tool; pinging from a release build would phone home from an end user's
13
+ * device — someone who never chose to use Buoy — which is not a trade we are
14
+ * willing to make for a metric.
15
+ * - **No PII, no fingerprint.** The install id is a random UUID minted here.
16
+ * It is not derived from hardware, account, project, or app identity, so it
17
+ * cannot be correlated to a person or joined against anything else we hold.
18
+ * - **No tool usage.** What you open and inspect stays on your machine, which
19
+ * is the whole security story for enterprise adoption. Only the four fields
20
+ * below ever leave.
21
+ * - **Silent and harmless.** Fire-and-forget, throttled to once a day, and
22
+ * every failure path is swallowed. It can never block, slow, or break an app.
23
+ *
24
+ * Opt out with `Buoy.init({ telemetry: false })`.
25
+ */
26
+ /**
27
+ * Send the ping if it is due. Safe to call on every mount: it is idempotent
28
+ * within a session, throttled to once a day across sessions, and resolves
29
+ * without throwing no matter what fails.
30
+ */
31
+ export declare function sendInstallPing(options: {
32
+ tier: "anonymous" | "free" | "pro";
33
+ enabled: boolean;
34
+ }): Promise<void>;
35
+ /** Test seam: forget that a ping already went out this session. */
36
+ export declare function __resetInstallPingForTests(): void;
37
+ //# sourceMappingURL=installPing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"installPing.d.ts","sourceRoot":"","sources":["../../../../src/telemetry/installPing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AA4DH;;;;GAIG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE;IAC7C,IAAI,EAAE,WAAW,GAAG,MAAM,GAAG,KAAK,CAAC;IACnC,OAAO,EAAE,OAAO,CAAC;CAClB,GAAG,OAAO,CAAC,IAAI,CAAC,CAwChB;AAED,mEAAmE;AACnE,wBAAgB,0BAA0B,IAAI,IAAI,CAEjD"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * This package's published version.
3
+ *
4
+ * Hardcoded rather than read from package.json: `require("../package.json")`
5
+ * resolves to a different depth from `src/` than from the built `lib/`, and
6
+ * react-native-builder-bob (babel) has no build-time `define` the way tsup does
7
+ * for @buoy-gg/mcp.
8
+ *
9
+ * Drift is prevented by a test that fails when this disagrees with
10
+ * package.json, so a version bump that forgets this file cannot ship.
11
+ */
12
+ export declare const SDK_VERSION = "7.0.22";
13
+ //# sourceMappingURL=version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../../src/version.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,eAAO,MAAM,WAAW,WAAW,CAAC"}
@@ -19,7 +19,21 @@ export interface BuoyConfig {
19
19
  * Pass empty string or omit to clear cached license and use free mode
20
20
  */
21
21
  licenseKey?: string;
22
+ /**
23
+ * Set `false` to disable the anonymous install ping.
24
+ *
25
+ * Buoy sends one ping per day, in development only, carrying a random
26
+ * install id, the Buoy version, your platform, and your license tier —
27
+ * no project, app, or tool data. It exists so we can tell how many
28
+ * installs never claim an account; it is the only way to measure that,
29
+ * since a license server can only ever see keys that already exist.
30
+ *
31
+ * Details: https://buoy.gg/docs/telemetry
32
+ */
33
+ telemetry?: boolean;
22
34
  }
35
+ /** Whether the anonymous install ping is allowed to fire. */
36
+ export declare function isTelemetryEnabled(): boolean;
23
37
  /**
24
38
  * Buoy SDK namespace
25
39
  *
@@ -1 +1 @@
1
- {"version":3,"file":"Buoy.d.ts","sourceRoot":"","sources":["../../../src/Buoy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,MAAM,WAAW,UAAU;IACzB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,eAAO,MAAM,IAAI;IACf;;;;;;;;;;;;;;;;;;;;OAoBG;iBACU,UAAU,GAAG,IAAI;IAkB9B;;;;;;;;;;;;OAYG;sBACqB,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC;IAUrD;;OAEG;aACM,OAAO;IAIhB;;OAEG;;IAKH;;;OAGG;uBACsB,OAAO,CAAC,IAAI,CAAC;CAGvC,CAAC;AAGF,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"Buoy.d.ts","sourceRoot":"","sources":["../../../src/Buoy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,MAAM,WAAW,UAAU;IACzB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;;;;;;OAUG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAQD,6DAA6D;AAC7D,wBAAgB,kBAAkB,IAAI,OAAO,CAE5C;AAED;;;;GAIG;AACH,eAAO,MAAM,IAAI;IACf;;;;;;;;;;;;;;;;;;;;OAoBG;iBACU,UAAU,GAAG,IAAI;IAoB9B;;;;;;;;;;;;OAYG;sBACqB,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC;IAUrD;;OAEG;aACM,OAAO;IAIhB;;OAEG;;IAKH;;;OAGG;uBACsB,OAAO,CAAC,IAAI,CAAC;CAGvC,CAAC;AAGF,eAAe,IAAI,CAAC"}
@@ -247,6 +247,21 @@ export interface FloatingDevToolsProps extends Omit<FloatingMenuProps, "apps"> {
247
247
  * ```tsx
248
248
  * <FloatingDevTools externalSync={{ deviceName: "My App (ios)" }} />
249
249
  * ```
250
+ *
251
+ * **Release builds** (`__DEV__ === false`) never sync unless the app asks
252
+ * for it: set `enableInRelease` and hold a real Pro license. Profiling a
253
+ * release build on a physical iOS device also needs an explicit
254
+ * `socketURL`, since there is no Metro host to derive one from.
255
+ *
256
+ * @example
257
+ * ```tsx
258
+ * <FloatingDevTools
259
+ * externalSync={{
260
+ * enableInRelease: true,
261
+ * socketURL: "http://192.168.1.20:42831", // LAN IP for iOS devices
262
+ * }}
263
+ * />
264
+ * ```
250
265
  */
251
266
  externalSync?: boolean | ExternalSyncOptions;
252
267
  /**
@@ -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;AAMtE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAM5C,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EAEvB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAGL,KAAK,mBAAmB,EACzB,MAAM,oBAAoB,CAAC;AAE5B;;;;;;;;;;;;;;;;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;;;;;;;;;;;;;;;;;OAiBG;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,6BAmWvB,CAAC"}
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;AAMtE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAQ5C,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EAEvB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAGL,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,6BA0XvB,CAAC"}
@@ -32,8 +32,14 @@ export interface ToolHostContextValue {
32
32
  isSearchActive: boolean;
33
33
  /** Close and clear the header search. */
34
34
  clearSearch: () => void;
35
- /** Close this tool. */
35
+ /** Close this tool — the instance and its state go away. */
36
36
  close: () => void;
37
+ /**
38
+ * Hide this tool without tearing it down: it goes to the minimized dock
39
+ * and comes back with its state intact. What a tool wants after finishing
40
+ * a job the user opened it to do.
41
+ */
42
+ minimize: () => void;
37
43
  /** Show a transient toast inside the tool modal. */
38
44
  showToast: (message: string, type?: ToolToastType) => void;
39
45
  /** Low-level header override setter — prefer `useToolHeader`. */
@@ -1 +1 @@
1
- {"version":3,"file":"ToolHost.d.ts","sourceRoot":"","sources":["../../../../src/floatingMenu/ToolHost.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,EAQZ,KAAK,cAAc,EACnB,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAWf,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C,+EAA+E;AAC/E,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iEAAiE;IACjE,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,sEAAsE;IACtE,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;AAEzD,MAAM,WAAW,oBAAoB;IACnC,+DAA+D;IAC/D,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,OAAO,CAAC;IACxB,yCAAyC;IACzC,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,uBAAuB;IACvB,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,oDAAoD;IACpD,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,aAAa,KAAK,IAAI,CAAC;IAC3D,iEAAiE;IACjE,iBAAiB,EAAE,CAAC,QAAQ,EAAE,kBAAkB,GAAG,IAAI,KAAK,IAAI,CAAC;IACjE,2CAA2C;IAC3C,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAcD;;;;GAIG;AACH,wBAAgB,WAAW,IAAI,oBAAoB,CAElD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,kBAAkB,GAAG,IAAI,EACnC,IAAI,EAAE,cAAc,QASrB;AAiDD,UAAU,mBAAmB;IAC3B,GAAG,EAAE,WAAW,CAAC;IACjB,MAAM,EAAE,eAAe,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,UAAU,EAAE,CAAC,UAAU,CAAC,EAAE,iBAAiB,KAAK,IAAI,CAAC;IACrD,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,2BAA2B,CAAC,EAAE,OAAO,CAAC;IACtC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAQD,wBAAgB,cAAc,CAAC,EAC7B,GAAG,EACH,MAAM,EACN,OAAO,EACP,MAAM,EACN,OAAO,EACP,UAAU,EACV,iBAAiB,EACjB,2BAA2B,EAC3B,SAAS,GACV,EAAE,mBAAmB,qBA+GrB"}
1
+ {"version":3,"file":"ToolHost.d.ts","sourceRoot":"","sources":["../../../../src/floatingMenu/ToolHost.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,EAQZ,KAAK,cAAc,EACnB,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAWf,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C,+EAA+E;AAC/E,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iEAAiE;IACjE,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,sEAAsE;IACtE,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;AAEzD,MAAM,WAAW,oBAAoB;IACnC,+DAA+D;IAC/D,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,OAAO,CAAC;IACxB,yCAAyC;IACzC,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,4DAA4D;IAC5D,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB;;;;OAIG;IACH,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,oDAAoD;IACpD,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,aAAa,KAAK,IAAI,CAAC;IAC3D,iEAAiE;IACjE,iBAAiB,EAAE,CAAC,QAAQ,EAAE,kBAAkB,GAAG,IAAI,KAAK,IAAI,CAAC;IACjE,2CAA2C;IAC3C,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAeD;;;;GAIG;AACH,wBAAgB,WAAW,IAAI,oBAAoB,CAElD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,kBAAkB,GAAG,IAAI,EACnC,IAAI,EAAE,cAAc,QASrB;AAiDD,UAAU,mBAAmB;IAC3B,GAAG,EAAE,WAAW,CAAC;IACjB,MAAM,EAAE,eAAe,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,UAAU,EAAE,CAAC,UAAU,CAAC,EAAE,iBAAiB,KAAK,IAAI,CAAC;IACrD,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,2BAA2B,CAAC,EAAE,OAAO,CAAC;IACtC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAQD,wBAAgB,cAAc,CAAC,EAC7B,GAAG,EACH,MAAM,EACN,OAAO,EACP,MAAM,EACN,OAAO,EACP,UAAU,EACV,iBAAiB,EACjB,2BAA2B,EAC3B,SAAS,GACV,EAAE,mBAAmB,qBA0HrB"}
@@ -1,5 +1,6 @@
1
1
  import type { EnvVarConfig } from "./FloatingDevTools";
2
2
  import type { InstalledApp } from "./types";
3
+ import type { BuoyTier } from "@buoy-gg/license";
3
4
  /** Whether zero-config sync can run (the external-sync package is installed). */
4
5
  export declare function isExternalSyncAvailable(): boolean;
5
6
  export interface ExternalSyncOptions {
@@ -15,6 +16,25 @@ export interface ExternalSyncOptions {
15
16
  deviceName?: string;
16
17
  /** Stable device identity across restarts. @default "<app-slug>-<platform>" */
17
18
  deviceId?: string;
19
+ /**
20
+ * Allow this build to dial the broker when `__DEV__` is false (a release /
21
+ * production JS bundle). OFF by default: a shipped app must never open a
22
+ * socket to a dev machine on an end user's phone.
23
+ *
24
+ * Turn it on for builds YOU profile — a local release build, an internal
25
+ * TestFlight/EAS build, a field build that ships headless. It additionally
26
+ * requires a real Pro license; without one nothing renders in release
27
+ * anyway.
28
+ *
29
+ * There is no Metro server in a release bundle, so the broker host can't be
30
+ * derived and `socketURL` falls back to `http://localhost:42831`. That is
31
+ * already correct for simulators/emulators and for Android over USB
32
+ * (`adb reverse tcp:42831 tcp:42831`) — pass `socketURL` explicitly for a
33
+ * physical iOS device, or any broker on another machine.
34
+ *
35
+ * @default false
36
+ */
37
+ enableInRelease?: boolean;
18
38
  /** @default false */
19
39
  enableLogs?: boolean;
20
40
  }
@@ -24,7 +44,13 @@ interface AutoExternalSyncProps {
24
44
  requiredEnvVars?: EnvVarConfig[];
25
45
  /** Pro status, forwarded into the handshake so the dashboard can adopt it. */
26
46
  isPro?: boolean;
27
- /** Pro license key, forwarded into the handshake alongside `isPro`. */
47
+ /**
48
+ * The device's access tier. Sent alongside `isPro` so the dashboard can tell
49
+ * a signed-in free user apart from an anonymous one — `isPro` alone collapses
50
+ * both to false.
51
+ */
52
+ tier?: BuoyTier;
53
+ /** License key, forwarded into the handshake alongside `isPro`. */
28
54
  licenseKey?: string | null;
29
55
  /**
30
56
  * Custom tools (from FloatingDevTools' `apps`) that declared a `sync`
@@ -33,6 +59,6 @@ interface AutoExternalSyncProps {
33
59
  */
34
60
  customApps?: InstalledApp[];
35
61
  }
36
- export declare function AutoExternalSync({ options, requiredEnvVars, isPro, licenseKey, customApps, }: AutoExternalSyncProps): null;
62
+ export declare function AutoExternalSync({ options, requiredEnvVars, isPro, tier, licenseKey, customApps, }: AutoExternalSyncProps): null;
37
63
  export {};
38
64
  //# sourceMappingURL=autoExternalSync.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"autoExternalSync.d.ts","sourceRoot":"","sources":["../../../../src/floatingMenu/autoExternalSync.tsx"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AA4I5C,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,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,uEAAuE;IACvE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B;;;;OAIG;IACH,UAAU,CAAC,EAAE,YAAY,EAAE,CAAC;CAC7B;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,OAAO,EACP,eAAe,EACf,KAAK,EACL,UAAU,EACV,UAAU,GACX,EAAE,qBAAqB,QAkIvB"}
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;AA4IjD,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,wBAAgB,gBAAgB,CAAC,EAC/B,OAAO,EACP,eAAe,EACf,KAAK,EACL,IAAI,EACJ,UAAU,EACV,UAAU,GACX,EAAE,qBAAqB,QAsIvB"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Decides whether FloatingDevTools mounts <AutoExternalSync /> — i.e. whether
3
+ * this build is allowed to dial the Buoy Desktop broker.
4
+ *
5
+ * Kept as a pure function in its own module (no react-native / no guarded
6
+ * requires) so the rule is unit-testable: the gate used to be an inline
7
+ * `isDevelopment && ...` in JSX, which silently made release builds unable to
8
+ * reach the desktop dashboard or MCP with no way to opt in from app code.
9
+ *
10
+ * The rule has two halves that must BOTH hold in a release build, because a
11
+ * shipped app must never contact a broker on an end user's device:
12
+ * 1. a real Pro license (never the Weekend Pass — see useProAccess), and
13
+ * 2. an EXPLICIT opt-in from app code (`externalSync.enableInRelease`).
14
+ * Dev builds keep the zero-config behavior: sync is on unless turned off.
15
+ */
16
+ import type { ExternalSyncOptions } from "./autoExternalSync";
17
+ export interface ExternalSyncGateInput {
18
+ /** Resolved `__DEV__` for this bundle. */
19
+ isDevelopment: boolean;
20
+ /** Real (non-Weekend-Pass) Pro license, from useProAccess(). */
21
+ isLicensed: boolean;
22
+ /** The `externalSync` prop exactly as FloatingDevTools received it. */
23
+ externalSync: boolean | ExternalSyncOptions | undefined;
24
+ /** Whether @buoy-gg/external-sync is installed (isExternalSyncAvailable()). */
25
+ isAvailable: boolean;
26
+ }
27
+ /** The options object from the prop, or undefined when it's a boolean. */
28
+ export declare function externalSyncOptions(externalSync: boolean | ExternalSyncOptions | undefined): ExternalSyncOptions | undefined;
29
+ export declare function shouldMountExternalSync({ isDevelopment, isLicensed, externalSync, isAvailable, }: ExternalSyncGateInput): boolean;
30
+ //# sourceMappingURL=externalSyncGate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"externalSyncGate.d.ts","sourceRoot":"","sources":["../../../../src/floatingMenu/externalSyncGate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE9D,MAAM,WAAW,qBAAqB;IACpC,0CAA0C;IAC1C,aAAa,EAAE,OAAO,CAAC;IACvB,gEAAgE;IAChE,UAAU,EAAE,OAAO,CAAC;IACpB,uEAAuE;IACvE,YAAY,EAAE,OAAO,GAAG,mBAAmB,GAAG,SAAS,CAAC;IACxD,+EAA+E;IAC/E,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,0EAA0E;AAC1E,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,OAAO,GAAG,mBAAmB,GAAG,SAAS,GACtD,mBAAmB,GAAG,SAAS,CAIjC;AAED,wBAAgB,uBAAuB,CAAC,EACtC,aAAa,EACb,UAAU,EACV,YAAY,EACZ,WAAW,GACZ,EAAE,qBAAqB,GAAG,OAAO,CAkBjC"}
@@ -2,6 +2,7 @@ export declare const appSyncAdapter: {
2
2
  version: number;
3
3
  getSnapshot: () => {
4
4
  startedAt: number;
5
+ devServerOrigin: string | null;
5
6
  reload: {
6
7
  available: boolean;
7
8
  strategy: import("@buoy-gg/shared-ui").ResolvedReloadStrategy | null;
@@ -17,6 +18,7 @@ export declare const appSyncAdapter: {
17
18
  ping: () => {
18
19
  ok: boolean;
19
20
  startedAt: number;
21
+ devServerOrigin: string | null;
20
22
  };
21
23
  /**
22
24
  * Reload the app's JS bundle: RN's `DevSettings.reload()` in dev builds,
@@ -1 +1 @@
1
- {"version":3,"file":"appSyncAdapter.d.ts","sourceRoot":"","sources":["../../../../../src/floatingMenu/sync/appSyncAdapter.ts"],"names":[],"mappings":"AA6BA,eAAO,MAAM,cAAc;;;;;;;;;2BAcF,MAAM,IAAI;;QAE/B;;;;WAIG;;;;;QAEH;;;;;;;;;WASG;6BACkB,OAAO;;;;;;CAY/B,CAAC"}
1
+ {"version":3,"file":"appSyncAdapter.d.ts","sourceRoot":"","sources":["../../../../../src/floatingMenu/sync/appSyncAdapter.ts"],"names":[],"mappings":"AAyCA,eAAO,MAAM,cAAc;;;;;;;;;;2BAeF,MAAM,IAAI;;QAE/B;;;;WAIG;;;;;;QAMH;;;;;;;;;WASG;6BACkB,OAAO;;;;;;CAY/B,CAAC"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Anonymous install ping.
3
+ *
4
+ * Answers the one question licensing data cannot: how many people run Buoy at
5
+ * all. Keygen sees every free and paid key, but by definition it cannot see an
6
+ * install that never claimed one — so without this, "what fraction of installs
7
+ * have an account" has no denominator.
8
+ *
9
+ * Constraints this is built to honor:
10
+ *
11
+ * - **Development only.** Never fires from a shipped app. Buoy is a developer
12
+ * tool; pinging from a release build would phone home from an end user's
13
+ * device — someone who never chose to use Buoy — which is not a trade we are
14
+ * willing to make for a metric.
15
+ * - **No PII, no fingerprint.** The install id is a random UUID minted here.
16
+ * It is not derived from hardware, account, project, or app identity, so it
17
+ * cannot be correlated to a person or joined against anything else we hold.
18
+ * - **No tool usage.** What you open and inspect stays on your machine, which
19
+ * is the whole security story for enterprise adoption. Only the four fields
20
+ * below ever leave.
21
+ * - **Silent and harmless.** Fire-and-forget, throttled to once a day, and
22
+ * every failure path is swallowed. It can never block, slow, or break an app.
23
+ *
24
+ * Opt out with `Buoy.init({ telemetry: false })`.
25
+ */
26
+ /**
27
+ * Send the ping if it is due. Safe to call on every mount: it is idempotent
28
+ * within a session, throttled to once a day across sessions, and resolves
29
+ * without throwing no matter what fails.
30
+ */
31
+ export declare function sendInstallPing(options: {
32
+ tier: "anonymous" | "free" | "pro";
33
+ enabled: boolean;
34
+ }): Promise<void>;
35
+ /** Test seam: forget that a ping already went out this session. */
36
+ export declare function __resetInstallPingForTests(): void;
37
+ //# sourceMappingURL=installPing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"installPing.d.ts","sourceRoot":"","sources":["../../../../src/telemetry/installPing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AA4DH;;;;GAIG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE;IAC7C,IAAI,EAAE,WAAW,GAAG,MAAM,GAAG,KAAK,CAAC;IACnC,OAAO,EAAE,OAAO,CAAC;CAClB,GAAG,OAAO,CAAC,IAAI,CAAC,CAwChB;AAED,mEAAmE;AACnE,wBAAgB,0BAA0B,IAAI,IAAI,CAEjD"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * This package's published version.
3
+ *
4
+ * Hardcoded rather than read from package.json: `require("../package.json")`
5
+ * resolves to a different depth from `src/` than from the built `lib/`, and
6
+ * react-native-builder-bob (babel) has no build-time `define` the way tsup does
7
+ * for @buoy-gg/mcp.
8
+ *
9
+ * Drift is prevented by a test that fails when this disagrees with
10
+ * package.json, so a version bump that forgets this file cannot ship.
11
+ */
12
+ export declare const SDK_VERSION = "7.0.22";
13
+ //# sourceMappingURL=version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../../src/version.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,eAAO,MAAM,WAAW,WAAW,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@buoy-gg/core",
3
- "version": "7.0.21",
3
+ "version": "7.0.23",
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",
@@ -32,14 +32,15 @@
32
32
  }
33
33
  },
34
34
  "files": [
35
+ "bin",
35
36
  "lib"
36
37
  ],
37
38
  "sideEffects": false,
38
39
  "dependencies": {
39
- "@buoy-gg/shared-ui": "^7.0.21",
40
- "@buoy-gg/license": "^7.0.21",
41
- "@buoy-gg/floating-tools-core": "^7.0.21",
42
- "@buoy-gg/floating-tools-react": "^7.0.21"
40
+ "@buoy-gg/shared-ui": "^7.0.23",
41
+ "@buoy-gg/license": "^7.0.23",
42
+ "@buoy-gg/floating-tools-core": "^7.0.23",
43
+ "@buoy-gg/floating-tools-react": "^7.0.23"
43
44
  },
44
45
  "peerDependencies": {
45
46
  "react": "*",
@@ -100,6 +101,9 @@
100
101
  "developer-menu",
101
102
  "in-app-devtools"
102
103
  ],
104
+ "bin": {
105
+ "buoy": "bin/buoy.js"
106
+ },
103
107
  "scripts": {
104
108
  "build": "bob build",
105
109
  "typecheck": "tsc --noEmit",