@buoy-gg/core 7.0.3 → 7.0.5

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.
package/README.md CHANGED
@@ -101,7 +101,7 @@ Need the session with **no on-device UI at all** — field builds or devices han
101
101
  - [Buoy Desktop](https://github.com/Buoy-gg/Buoy-Desktop)
102
102
  - [Pricing](https://buoy.gg/pricing)
103
103
 
104
- > 🎯 **Flutter (beta):** Buoy is now available for Flutter — `flutter pub add buoy`. The network inspector ships first, streaming to the same desktop dashboard and MCP server. [Details →](https://buoy.gg/flutter)
104
+ > 🎯 **Flutter (beta):** Buoy is now a full suite for Flutter — `flutter pub add buoy`. Network, storage, console, env, routes, images, Riverpod, events, and a live perf HUD, all streaming to the same desktop dashboard and MCP server. [Details →](https://buoy.gg/flutter)
105
105
 
106
106
  ## License
107
107
 
@@ -5,7 +5,6 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.ALL_TOOLS_REGISTRY = void 0;
7
7
  var _react = _interopRequireDefault(require("react"));
8
- var _reactNative = require("react-native");
9
8
  var _floatingToolsCore = require("@buoy-gg/floating-tools-core");
10
9
  var _sharedUi = require("@buoy-gg/shared-ui");
11
10
  var _jsxRuntime = require("react/jsx-runtime");
@@ -27,66 +26,12 @@ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e
27
26
  * data exists for new/unavailable tools.
28
27
  */
29
28
 
30
- // ─── Color constants for tools whose icons live in optional packages ─────────
31
- // Copied verbatim from the source icon components so the vendored copies below
32
- // render identically to the real tool icons.
33
-
34
- /** Zustand brand color — copied from @buoy-gg/zustand ZustandIcon.tsx */const ZUSTAND_ICON_COLOR = "#463B3F";
35
- /** Jotai brand color — copied from @buoy-gg/jotai JotaiIcon.tsx */
36
- const JOTAI_ICON_COLOR = "#6C47FF";
37
- /** Image overlay purple — matches the preset */
38
- const IMAGE_OVERLAY_ICON_COLOR = "#A855F7";
39
-
40
- // ─── Vendored copies of optional-package icons ───────────────────────────────
41
- // Zustand and Jotai ship their real icons inside their own packages (which may
42
- // not be installed), so we cannot import them from a required dependency.
43
- //
44
- // The REAL icons in @buoy-gg/zustand and @buoy-gg/jotai are themselves a single
45
- // centered letter glyph (verified — there are no SVG logos in those packages).
46
- // These are faithful copies of those source components, so unavailable items
47
- // render the ACTUAL tool icon (just dimmed by DialIcon), not a placeholder.
48
-
49
- /** Faithful copy of @buoy-gg/zustand `ZustandIcon` */
50
- const ZustandIcon = ({
51
- size,
52
- color
53
- }) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
54
- style: {
55
- width: size,
56
- height: size,
57
- justifyContent: "center",
58
- alignItems: "center"
59
- },
60
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
61
- style: {
62
- fontSize: size * 0.75,
63
- color: color || ZUSTAND_ICON_COLOR,
64
- fontWeight: "700"
65
- },
66
- children: "Z"
67
- })
68
- });
69
-
70
- /** Faithful copy of @buoy-gg/jotai `JotaiIcon` */
71
- const JotaiIcon = ({
72
- size,
73
- color
74
- }) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
75
- style: {
76
- width: size,
77
- height: size,
78
- justifyContent: "center",
79
- alignItems: "center"
80
- },
81
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
82
- style: {
83
- fontSize: size * 0.75,
84
- color: color || JOTAI_ICON_COLOR,
85
- fontWeight: "700"
86
- },
87
- children: "J"
88
- })
89
- });
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.
90
35
 
91
36
  // ─── Registry entry type ──────────────────────────────────────────────────────
92
37
 
@@ -157,8 +102,8 @@ const ALL_TOOLS_REGISTRY = exports.ALL_TOOLS_REGISTRY = [{
157
102
  }, {
158
103
  id: "zustand",
159
104
  name: "ZUSTAND",
160
- color: ZUSTAND_ICON_COLOR,
161
- renderIcon: size => /*#__PURE__*/(0, _jsxRuntime.jsx)(ZustandIcon, {
105
+ color: _floatingToolsCore.ZUSTAND_ICON_COLOR,
106
+ renderIcon: size => /*#__PURE__*/(0, _jsxRuntime.jsx)(_floatingToolsCore.ZustandIcon, {
162
107
  size: size
163
108
  })
164
109
  }, {
@@ -171,17 +116,17 @@ const ALL_TOOLS_REGISTRY = exports.ALL_TOOLS_REGISTRY = [{
171
116
  }, {
172
117
  id: "jotai",
173
118
  name: "JOTAI",
174
- color: JOTAI_ICON_COLOR,
175
- renderIcon: size => /*#__PURE__*/(0, _jsxRuntime.jsx)(JotaiIcon, {
119
+ color: _floatingToolsCore.JOTAI_ICON_COLOR,
120
+ renderIcon: size => /*#__PURE__*/(0, _jsxRuntime.jsx)(_floatingToolsCore.JotaiIcon, {
176
121
  size: size
177
122
  })
178
123
  }, {
179
124
  id: "image-overlay",
180
125
  name: "IMG",
181
- color: IMAGE_OVERLAY_ICON_COLOR,
126
+ color: _floatingToolsCore.IMAGE_OVERLAY_ICON_COLOR,
182
127
  renderIcon: size => /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.ImageOverlayIcon, {
183
128
  size: size,
184
- color: IMAGE_OVERLAY_ICON_COLOR
129
+ color: _floatingToolsCore.IMAGE_OVERLAY_ICON_COLOR
185
130
  })
186
131
  }, {
187
132
  id: "perf-monitor-modal",
@@ -8,6 +8,7 @@ exports.isExternalSyncAvailable = isExternalSyncAvailable;
8
8
  var _react = require("react");
9
9
  var _reactNative = require("react-native");
10
10
  var _optionalRequire = require("./optionalRequire.js");
11
+ var _appSyncAdapter = require("./sync/appSyncAdapter.js");
11
12
  /**
12
13
  * Zero-config device→desktop sync for FloatingDevTools.
13
14
  *
@@ -220,7 +221,12 @@ function AutoExternalSync({
220
221
  };
221
222
  }, [socket, isPro, licenseKey]);
222
223
  const tools = (0, _react.useMemo)(() => {
223
- const map = {};
224
+ // Core's own adapter — device-level capabilities (JS-bundle reload) that
225
+ // don't belong to any tool package. Registered unconditionally so remote
226
+ // drivers can rely on it for every app, whatever tools are installed.
227
+ const map = {
228
+ app: _appSyncAdapter.appSyncAdapter
229
+ };
224
230
  if (storageModule?.storageSyncAdapter) {
225
231
  map.storage = storageModule.storageSyncAdapter;
226
232
  }
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.appSyncAdapter = void 0;
7
+ var _sharedUi = require("@buoy-gg/shared-ui");
8
+ /**
9
+ * Sync adapter for the "app" pseudo-tool — device-level capabilities that
10
+ * belong to the app itself rather than to any one Buoy tool, consumed by
11
+ * @buoy-gg/external-sync's `useExternalSync` (structurally matches its
12
+ * ToolSyncAdapter interface so this package doesn't need a dependency on it).
13
+ *
14
+ * Lives in core and is registered UNCONDITIONALLY, so a remote driver (Buoy
15
+ * Desktop, the MCP server) can count on it for every connected app — no tool
16
+ * package, and no native peer deps, required.
17
+ *
18
+ * Today that's one thing: reloading the JS bundle. The snapshot is static
19
+ * (there is nothing to stream), it just advertises whether a reload would
20
+ * work and which mechanism would run, so a driver can say so up front instead
21
+ * of discovering it by failing.
22
+ */
23
+ /**
24
+ * When THIS JS realm booted. A reload replaces the realm, so a driver that
25
+ * remembers this value can tell "the app came back" apart from "the old,
26
+ * doomed realm answered me" — the difference between reporting a reload done
27
+ * and reporting it too early.
28
+ */
29
+ const REALM_STARTED_AT = Date.now();
30
+ const appSyncAdapter = exports.appSyncAdapter = {
31
+ version: 1,
32
+ getSnapshot: () => {
33
+ const strategy = (0, _sharedUi.resolveReloadStrategy)("auto");
34
+ return {
35
+ startedAt: REALM_STARTED_AT,
36
+ reload: {
37
+ available: strategy !== null,
38
+ strategy
39
+ }
40
+ };
41
+ },
42
+ // Nothing changes over time — take the callback and hand back a no-op
43
+ // unsubscribe so the sync layer's contract still holds.
44
+ subscribe: _onChange => () => {},
45
+ actions: {
46
+ /**
47
+ * Cheap round-trip liveness probe. Only a live JS realm can answer it, and
48
+ * `startedAt` identifies WHICH realm — that's how a driver confirms a
49
+ * reload actually completed rather than just being accepted.
50
+ */
51
+ ping: () => ({
52
+ ok: true,
53
+ startedAt: REALM_STARTED_AT
54
+ }),
55
+ /**
56
+ * Reload the app's JS bundle: RN's `DevSettings.reload()` in dev builds,
57
+ * `expo-updates` otherwise. The same primitive perf-monitor's batch runner
58
+ * uses between cases, and the MCP server's `reload_app`.
59
+ *
60
+ * Returns BEFORE the reload fires: the realm dies the moment it does, so
61
+ * the ack has to be on the wire first (scheduleReloadApp arms it a beat
62
+ * later). An unavailable mechanism throws here, so the caller gets a real
63
+ * error instead of a silent no-op.
64
+ */
65
+ reloadApp: params => {
66
+ const p = params ?? {};
67
+ const {
68
+ strategy,
69
+ delayMs
70
+ } = (0, _sharedUi.scheduleReloadApp)({
71
+ strategy: p.strategy,
72
+ delayMs: p.delayMs
73
+ });
74
+ return {
75
+ scheduled: true,
76
+ strategy,
77
+ delayMs
78
+ };
79
+ }
80
+ }
81
+ };
@@ -7,6 +7,7 @@ var _exportNames = {
7
7
  Buoy: true,
8
8
  BuoyDefault: true,
9
9
  FloatingDevTools: true,
10
+ appSyncAdapter: true,
10
11
  autoDiscoverPresets: true,
11
12
  autoDiscoverPresetsWithCustom: true,
12
13
  createDefaultConfig: true,
@@ -115,6 +116,12 @@ Object.defineProperty(exports, "MinimizedToolsStack", {
115
116
  return _MinimizedToolsStack.MinimizedToolsStack;
116
117
  }
117
118
  });
119
+ Object.defineProperty(exports, "appSyncAdapter", {
120
+ enumerable: true,
121
+ get: function () {
122
+ return _appSyncAdapter.appSyncAdapter;
123
+ }
124
+ });
118
125
  Object.defineProperty(exports, "autoDiscoverPresets", {
119
126
  enumerable: true,
120
127
  get: function () {
@@ -231,6 +238,7 @@ Object.defineProperty(exports, "validateDialConfig", {
231
238
  });
232
239
  var _Buoy = _interopRequireWildcard(require("./Buoy.js"));
233
240
  var _FloatingDevTools = require("./floatingMenu/FloatingDevTools");
241
+ var _appSyncAdapter = require("./floatingMenu/sync/appSyncAdapter.js");
234
242
  var _autoDiscoverPresets = require("./floatingMenu/autoDiscoverPresets.js");
235
243
  var _defaultConfig = require("./floatingMenu/defaultConfig.js");
236
244
  var _FloatingMenu = require("./floatingMenu/FloatingMenu.js");
@@ -18,75 +18,19 @@
18
18
  */
19
19
 
20
20
  import React from "react";
21
- import { View, Text } from "react-native";
22
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";
23
22
  import { ImageOverlayIcon } from "@buoy-gg/shared-ui";
24
23
 
25
- // ─── Color constants for tools whose icons live in optional packages ─────────
26
- // Copied verbatim from the source icon components so the vendored copies below
27
- // render identically to the real tool icons.
28
-
29
- /** Zustand brand color — copied from @buoy-gg/zustand ZustandIcon.tsx */
30
- import { jsx as _jsx } from "react/jsx-runtime";
31
- const ZUSTAND_ICON_COLOR = "#463B3F";
32
- /** Jotai brand color — copied from @buoy-gg/jotai JotaiIcon.tsx */
33
- const JOTAI_ICON_COLOR = "#6C47FF";
34
- /** Image overlay purple — matches the preset */
35
- const IMAGE_OVERLAY_ICON_COLOR = "#A855F7";
36
-
37
- // ─── Vendored copies of optional-package icons ───────────────────────────────
38
- // Zustand and Jotai ship their real icons inside their own packages (which may
39
- // not be installed), so we cannot import them from a required dependency.
40
- //
41
- // The REAL icons in @buoy-gg/zustand and @buoy-gg/jotai are themselves a single
42
- // centered letter glyph (verified — there are no SVG logos in those packages).
43
- // These are faithful copies of those source components, so unavailable items
44
- // render the ACTUAL tool icon (just dimmed by DialIcon), not a placeholder.
45
-
46
- /** Faithful copy of @buoy-gg/zustand `ZustandIcon` */
47
- const ZustandIcon = ({
48
- size,
49
- color
50
- }) => /*#__PURE__*/_jsx(View, {
51
- style: {
52
- width: size,
53
- height: size,
54
- justifyContent: "center",
55
- alignItems: "center"
56
- },
57
- children: /*#__PURE__*/_jsx(Text, {
58
- style: {
59
- fontSize: size * 0.75,
60
- color: color || ZUSTAND_ICON_COLOR,
61
- fontWeight: "700"
62
- },
63
- children: "Z"
64
- })
65
- });
66
-
67
- /** Faithful copy of @buoy-gg/jotai `JotaiIcon` */
68
- const JotaiIcon = ({
69
- size,
70
- color
71
- }) => /*#__PURE__*/_jsx(View, {
72
- style: {
73
- width: size,
74
- height: size,
75
- justifyContent: "center",
76
- alignItems: "center"
77
- },
78
- children: /*#__PURE__*/_jsx(Text, {
79
- style: {
80
- fontSize: size * 0.75,
81
- color: color || JOTAI_ICON_COLOR,
82
- fontWeight: "700"
83
- },
84
- children: "J"
85
- })
86
- });
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 } from "@buoy-gg/floating-tools-core";
87
31
 
88
32
  // ─── Registry entry type ──────────────────────────────────────────────────────
89
-
33
+ import { jsx as _jsx } from "react/jsx-runtime";
90
34
  // ─── Canonical catalog ────────────────────────────────────────────────────────
91
35
 
92
36
  /**
@@ -17,6 +17,7 @@
17
17
  import { useEffect, useMemo, useRef } from "react";
18
18
  import { Platform } from "react-native";
19
19
  import { reportOptionalRequireError } from "./optionalRequire.js";
20
+ import { appSyncAdapter } from "./sync/appSyncAdapter.js";
20
21
 
21
22
  /* eslint-disable @typescript-eslint/no-var-requires */
22
23
 
@@ -215,7 +216,12 @@ export function AutoExternalSync({
215
216
  };
216
217
  }, [socket, isPro, licenseKey]);
217
218
  const tools = useMemo(() => {
218
- const map = {};
219
+ // Core's own adapter — device-level capabilities (JS-bundle reload) that
220
+ // don't belong to any tool package. Registered unconditionally so remote
221
+ // drivers can rely on it for every app, whatever tools are installed.
222
+ const map = {
223
+ app: appSyncAdapter
224
+ };
219
225
  if (storageModule?.storageSyncAdapter) {
220
226
  map.storage = storageModule.storageSyncAdapter;
221
227
  }
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+
3
+ import { resolveReloadStrategy, scheduleReloadApp } from "@buoy-gg/shared-ui";
4
+
5
+ /**
6
+ * Sync adapter for the "app" pseudo-tool — device-level capabilities that
7
+ * belong to the app itself rather than to any one Buoy tool, consumed by
8
+ * @buoy-gg/external-sync's `useExternalSync` (structurally matches its
9
+ * ToolSyncAdapter interface so this package doesn't need a dependency on it).
10
+ *
11
+ * Lives in core and is registered UNCONDITIONALLY, so a remote driver (Buoy
12
+ * Desktop, the MCP server) can count on it for every connected app — no tool
13
+ * package, and no native peer deps, required.
14
+ *
15
+ * Today that's one thing: reloading the JS bundle. The snapshot is static
16
+ * (there is nothing to stream), it just advertises whether a reload would
17
+ * work and which mechanism would run, so a driver can say so up front instead
18
+ * of discovering it by failing.
19
+ */
20
+ /**
21
+ * When THIS JS realm booted. A reload replaces the realm, so a driver that
22
+ * remembers this value can tell "the app came back" apart from "the old,
23
+ * doomed realm answered me" — the difference between reporting a reload done
24
+ * and reporting it too early.
25
+ */
26
+ const REALM_STARTED_AT = Date.now();
27
+ export const appSyncAdapter = {
28
+ version: 1,
29
+ getSnapshot: () => {
30
+ const strategy = resolveReloadStrategy("auto");
31
+ return {
32
+ startedAt: REALM_STARTED_AT,
33
+ reload: {
34
+ available: strategy !== null,
35
+ strategy
36
+ }
37
+ };
38
+ },
39
+ // Nothing changes over time — take the callback and hand back a no-op
40
+ // unsubscribe so the sync layer's contract still holds.
41
+ subscribe: _onChange => () => {},
42
+ actions: {
43
+ /**
44
+ * Cheap round-trip liveness probe. Only a live JS realm can answer it, and
45
+ * `startedAt` identifies WHICH realm — that's how a driver confirms a
46
+ * reload actually completed rather than just being accepted.
47
+ */
48
+ ping: () => ({
49
+ ok: true,
50
+ startedAt: REALM_STARTED_AT
51
+ }),
52
+ /**
53
+ * Reload the app's JS bundle: RN's `DevSettings.reload()` in dev builds,
54
+ * `expo-updates` otherwise. The same primitive perf-monitor's batch runner
55
+ * uses between cases, and the MCP server's `reload_app`.
56
+ *
57
+ * Returns BEFORE the reload fires: the realm dies the moment it does, so
58
+ * the ack has to be on the wire first (scheduleReloadApp arms it a beat
59
+ * later). An unavailable mechanism throws here, so the caller gets a real
60
+ * error instead of a silent no-op.
61
+ */
62
+ reloadApp: params => {
63
+ const p = params ?? {};
64
+ const {
65
+ strategy,
66
+ delayMs
67
+ } = scheduleReloadApp({
68
+ strategy: p.strategy,
69
+ delayMs: p.delayMs
70
+ });
71
+ return {
72
+ scheduled: true,
73
+ strategy,
74
+ delayMs
75
+ };
76
+ }
77
+ }
78
+ };
@@ -4,6 +4,10 @@
4
4
  export { Buoy, default as BuoyDefault } from "./Buoy.js";
5
5
  // Export unified component - primary interface
6
6
  export { FloatingDevTools } from "./floatingMenu/FloatingDevTools";
7
+ // Device-level sync adapter (JS-bundle reload). FloatingDevTools registers it
8
+ // automatically; exported for apps that wire <DevToolsSync> by hand.
9
+ export { appSyncAdapter } from "./floatingMenu/sync/appSyncAdapter.js";
10
+
7
11
  // Export auto-discovery utilities
8
12
  export { autoDiscoverPresets, autoDiscoverPresetsWithCustom } from "./floatingMenu/autoDiscoverPresets.js";
9
13
 
@@ -1 +1 @@
1
- {"version":3,"file":"allToolsRegistry.d.ts","sourceRoot":"","sources":["../../../../src/floatingMenu/allToolsRegistry.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAgE1B,MAAM,WAAW,aAAa;IAC5B,wEAAwE;IACxE,EAAE,EAAE,MAAM,CAAC;IACX,2DAA2D;IAC3D,IAAI,EAAE,MAAM,CAAC;IACb,mBAAmB;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,+DAA+D;IAC/D,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS,CAAC;CAC/C;AAID;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,kBAAkB,EAAE,aAAa,EAyE7C,CAAC"}
1
+ {"version":3,"file":"allToolsRegistry.d.ts","sourceRoot":"","sources":["../../../../src/floatingMenu/allToolsRegistry.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAwC1B,MAAM,WAAW,aAAa;IAC5B,wEAAwE;IACxE,EAAE,EAAE,MAAM,CAAC;IACX,2DAA2D;IAC3D,IAAI,EAAE,MAAM,CAAC;IACb,mBAAmB;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,+DAA+D;IAC/D,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS,CAAC;CAC/C;AAID;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,kBAAkB,EAAE,aAAa,EAyE7C,CAAC"}
@@ -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;AA+HvD,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;CAC5B;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,OAAO,EACP,eAAe,EACf,KAAK,EACL,UAAU,GACX,EAAE,qBAAqB,QAgHvB"}
1
+ {"version":3,"file":"autoExternalSync.d.ts","sourceRoot":"","sources":["../../../../src/floatingMenu/autoExternalSync.tsx"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAgIvD,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;CAC5B;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,OAAO,EACP,eAAe,EACf,KAAK,EACL,UAAU,GACX,EAAE,qBAAqB,QAmHvB"}
@@ -0,0 +1,38 @@
1
+ export declare const appSyncAdapter: {
2
+ version: number;
3
+ getSnapshot: () => {
4
+ startedAt: number;
5
+ reload: {
6
+ available: boolean;
7
+ strategy: import("@buoy-gg/shared-ui").ResolvedReloadStrategy | null;
8
+ };
9
+ };
10
+ subscribe: (_onChange: () => void) => () => void;
11
+ actions: {
12
+ /**
13
+ * Cheap round-trip liveness probe. Only a live JS realm can answer it, and
14
+ * `startedAt` identifies WHICH realm — that's how a driver confirms a
15
+ * reload actually completed rather than just being accepted.
16
+ */
17
+ ping: () => {
18
+ ok: boolean;
19
+ startedAt: number;
20
+ };
21
+ /**
22
+ * Reload the app's JS bundle: RN's `DevSettings.reload()` in dev builds,
23
+ * `expo-updates` otherwise. The same primitive perf-monitor's batch runner
24
+ * uses between cases, and the MCP server's `reload_app`.
25
+ *
26
+ * Returns BEFORE the reload fires: the realm dies the moment it does, so
27
+ * the ack has to be on the wire first (scheduleReloadApp arms it a beat
28
+ * later). An unavailable mechanism throws here, so the caller gets a real
29
+ * error instead of a silent no-op.
30
+ */
31
+ reloadApp: (params: unknown) => {
32
+ scheduled: boolean;
33
+ strategy: import("@buoy-gg/shared-ui").ResolvedReloadStrategy;
34
+ delayMs: number;
35
+ };
36
+ };
37
+ };
38
+ //# sourceMappingURL=appSyncAdapter.d.ts.map
@@ -0,0 +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;4BACiB,OAAO;;;;;;CAY9B,CAAC"}
@@ -3,6 +3,7 @@ export type { BuoyConfig } from "./Buoy";
3
3
  export { FloatingDevTools } from "./floatingMenu/FloatingDevTools";
4
4
  export type { FloatingDevToolsProps, EnvVarConfig, StorageKeyConfig, } from "./floatingMenu/FloatingDevTools";
5
5
  export type { ExternalSyncOptions } from "./floatingMenu/autoExternalSync";
6
+ export { appSyncAdapter } from "./floatingMenu/sync/appSyncAdapter";
6
7
  export { autoDiscoverPresets, autoDiscoverPresetsWithCustom, } from "./floatingMenu/autoDiscoverPresets";
7
8
  export { createDefaultConfig, validateDialConfig, isFloatingToolId, isDialToolId, MAX_DIAL_TOOLS, } from "./floatingMenu/defaultConfig";
8
9
  export type { BuiltInToolId, FloatingToolId, FloatingOnlyToolId, DialToolId, DefaultFloatingConfig, DefaultDialConfig, } from "./floatingMenu/defaultConfig";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,QAAQ,CAAC;AACtD,YAAY,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAGzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,YAAY,EACV,qBAAqB,EACrB,YAAY,EACZ,gBAAgB,GACjB,MAAM,iCAAiC,CAAC;AACzC,YAAY,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAG3E,OAAO,EACL,mBAAmB,EACnB,6BAA6B,GAC9B,MAAM,oCAAoC,CAAC;AAG5C,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EAChB,YAAY,EACZ,cAAc,GACf,MAAM,8BAA8B,CAAC;AACtC,YAAY,EACV,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,UAAU,EACV,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,8BAA8B,CAAC;AAGtC,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,cAAc,sBAAsB,CAAC;AACrC,OAAO,EACL,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,sCAAsC,CAAC;AAC9C,YAAY,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAGrG,OAAO,EACL,eAAe,EACf,UAAU,EACV,UAAU,GACX,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EACL,0BAA0B,EAC1B,qBAAqB,GACtB,MAAM,0CAA0C,CAAC;AAGlD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAGvE,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,eAAe,EACf,WAAW,GACZ,MAAM,sCAAsC,CAAC;AAC9C,YAAY,EACV,aAAa,EACb,iBAAiB,EACjB,YAAY,GACb,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAIzE,OAAO,EACL,cAAc,EACd,uBAAuB,EACvB,UAAU,EACV,gBAAgB,EAChB,QAAQ,EACR,aAAa,EACb,KAAK,EACL,cAAc,GACf,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,sBAAsB,EACtB,0BAA0B,GAC3B,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,QAAQ,CAAC;AACtD,YAAY,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAGzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,YAAY,EACV,qBAAqB,EACrB,YAAY,EACZ,gBAAgB,GACjB,MAAM,iCAAiC,CAAC;AACzC,YAAY,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAI3E,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAGpE,OAAO,EACL,mBAAmB,EACnB,6BAA6B,GAC9B,MAAM,oCAAoC,CAAC;AAG5C,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EAChB,YAAY,EACZ,cAAc,GACf,MAAM,8BAA8B,CAAC;AACtC,YAAY,EACV,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,UAAU,EACV,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,8BAA8B,CAAC;AAGtC,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,cAAc,sBAAsB,CAAC;AACrC,OAAO,EACL,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,sCAAsC,CAAC;AAC9C,YAAY,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAGrG,OAAO,EACL,eAAe,EACf,UAAU,EACV,UAAU,GACX,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EACL,0BAA0B,EAC1B,qBAAqB,GACtB,MAAM,0CAA0C,CAAC;AAGlD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAGvE,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,eAAe,EACf,WAAW,GACZ,MAAM,sCAAsC,CAAC;AAC9C,YAAY,EACV,aAAa,EACb,iBAAiB,EACjB,YAAY,GACb,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAIzE,OAAO,EACL,cAAc,EACd,uBAAuB,EACvB,UAAU,EACV,gBAAgB,EAChB,QAAQ,EACR,aAAa,EACb,KAAK,EACL,cAAc,GACf,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,sBAAsB,EACtB,0BAA0B,GAC3B,MAAM,kBAAkB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"allToolsRegistry.d.ts","sourceRoot":"","sources":["../../../../src/floatingMenu/allToolsRegistry.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAgE1B,MAAM,WAAW,aAAa;IAC5B,wEAAwE;IACxE,EAAE,EAAE,MAAM,CAAC;IACX,2DAA2D;IAC3D,IAAI,EAAE,MAAM,CAAC;IACb,mBAAmB;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,+DAA+D;IAC/D,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS,CAAC;CAC/C;AAID;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,kBAAkB,EAAE,aAAa,EAyE7C,CAAC"}
1
+ {"version":3,"file":"allToolsRegistry.d.ts","sourceRoot":"","sources":["../../../../src/floatingMenu/allToolsRegistry.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAwC1B,MAAM,WAAW,aAAa;IAC5B,wEAAwE;IACxE,EAAE,EAAE,MAAM,CAAC;IACX,2DAA2D;IAC3D,IAAI,EAAE,MAAM,CAAC;IACb,mBAAmB;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,+DAA+D;IAC/D,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS,CAAC;CAC/C;AAID;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,kBAAkB,EAAE,aAAa,EAyE7C,CAAC"}
@@ -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;AA+HvD,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;CAC5B;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,OAAO,EACP,eAAe,EACf,KAAK,EACL,UAAU,GACX,EAAE,qBAAqB,QAgHvB"}
1
+ {"version":3,"file":"autoExternalSync.d.ts","sourceRoot":"","sources":["../../../../src/floatingMenu/autoExternalSync.tsx"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAgIvD,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;CAC5B;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,OAAO,EACP,eAAe,EACf,KAAK,EACL,UAAU,GACX,EAAE,qBAAqB,QAmHvB"}
@@ -0,0 +1,38 @@
1
+ export declare const appSyncAdapter: {
2
+ version: number;
3
+ getSnapshot: () => {
4
+ startedAt: number;
5
+ reload: {
6
+ available: boolean;
7
+ strategy: import("@buoy-gg/shared-ui").ResolvedReloadStrategy | null;
8
+ };
9
+ };
10
+ subscribe: (_onChange: () => void) => () => void;
11
+ actions: {
12
+ /**
13
+ * Cheap round-trip liveness probe. Only a live JS realm can answer it, and
14
+ * `startedAt` identifies WHICH realm — that's how a driver confirms a
15
+ * reload actually completed rather than just being accepted.
16
+ */
17
+ ping: () => {
18
+ ok: boolean;
19
+ startedAt: number;
20
+ };
21
+ /**
22
+ * Reload the app's JS bundle: RN's `DevSettings.reload()` in dev builds,
23
+ * `expo-updates` otherwise. The same primitive perf-monitor's batch runner
24
+ * uses between cases, and the MCP server's `reload_app`.
25
+ *
26
+ * Returns BEFORE the reload fires: the realm dies the moment it does, so
27
+ * the ack has to be on the wire first (scheduleReloadApp arms it a beat
28
+ * later). An unavailable mechanism throws here, so the caller gets a real
29
+ * error instead of a silent no-op.
30
+ */
31
+ reloadApp: (params: unknown) => {
32
+ scheduled: boolean;
33
+ strategy: import("@buoy-gg/shared-ui").ResolvedReloadStrategy;
34
+ delayMs: number;
35
+ };
36
+ };
37
+ };
38
+ //# sourceMappingURL=appSyncAdapter.d.ts.map
@@ -0,0 +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;4BACiB,OAAO;;;;;;CAY9B,CAAC"}
@@ -3,6 +3,7 @@ export type { BuoyConfig } from "./Buoy";
3
3
  export { FloatingDevTools } from "./floatingMenu/FloatingDevTools";
4
4
  export type { FloatingDevToolsProps, EnvVarConfig, StorageKeyConfig, } from "./floatingMenu/FloatingDevTools";
5
5
  export type { ExternalSyncOptions } from "./floatingMenu/autoExternalSync";
6
+ export { appSyncAdapter } from "./floatingMenu/sync/appSyncAdapter";
6
7
  export { autoDiscoverPresets, autoDiscoverPresetsWithCustom, } from "./floatingMenu/autoDiscoverPresets";
7
8
  export { createDefaultConfig, validateDialConfig, isFloatingToolId, isDialToolId, MAX_DIAL_TOOLS, } from "./floatingMenu/defaultConfig";
8
9
  export type { BuiltInToolId, FloatingToolId, FloatingOnlyToolId, DialToolId, DefaultFloatingConfig, DefaultDialConfig, } from "./floatingMenu/defaultConfig";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,QAAQ,CAAC;AACtD,YAAY,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAGzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,YAAY,EACV,qBAAqB,EACrB,YAAY,EACZ,gBAAgB,GACjB,MAAM,iCAAiC,CAAC;AACzC,YAAY,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAG3E,OAAO,EACL,mBAAmB,EACnB,6BAA6B,GAC9B,MAAM,oCAAoC,CAAC;AAG5C,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EAChB,YAAY,EACZ,cAAc,GACf,MAAM,8BAA8B,CAAC;AACtC,YAAY,EACV,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,UAAU,EACV,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,8BAA8B,CAAC;AAGtC,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,cAAc,sBAAsB,CAAC;AACrC,OAAO,EACL,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,sCAAsC,CAAC;AAC9C,YAAY,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAGrG,OAAO,EACL,eAAe,EACf,UAAU,EACV,UAAU,GACX,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EACL,0BAA0B,EAC1B,qBAAqB,GACtB,MAAM,0CAA0C,CAAC;AAGlD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAGvE,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,eAAe,EACf,WAAW,GACZ,MAAM,sCAAsC,CAAC;AAC9C,YAAY,EACV,aAAa,EACb,iBAAiB,EACjB,YAAY,GACb,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAIzE,OAAO,EACL,cAAc,EACd,uBAAuB,EACvB,UAAU,EACV,gBAAgB,EAChB,QAAQ,EACR,aAAa,EACb,KAAK,EACL,cAAc,GACf,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,sBAAsB,EACtB,0BAA0B,GAC3B,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,QAAQ,CAAC;AACtD,YAAY,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAGzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,YAAY,EACV,qBAAqB,EACrB,YAAY,EACZ,gBAAgB,GACjB,MAAM,iCAAiC,CAAC;AACzC,YAAY,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAI3E,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAGpE,OAAO,EACL,mBAAmB,EACnB,6BAA6B,GAC9B,MAAM,oCAAoC,CAAC;AAG5C,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EAChB,YAAY,EACZ,cAAc,GACf,MAAM,8BAA8B,CAAC;AACtC,YAAY,EACV,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,UAAU,EACV,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,8BAA8B,CAAC;AAGtC,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,cAAc,sBAAsB,CAAC;AACrC,OAAO,EACL,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,sCAAsC,CAAC;AAC9C,YAAY,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAGrG,OAAO,EACL,eAAe,EACf,UAAU,EACV,UAAU,GACX,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EACL,0BAA0B,EAC1B,qBAAqB,GACtB,MAAM,0CAA0C,CAAC;AAGlD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAGvE,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,eAAe,EACf,WAAW,GACZ,MAAM,sCAAsC,CAAC;AAC9C,YAAY,EACV,aAAa,EACb,iBAAiB,EACjB,YAAY,GACb,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAIzE,OAAO,EACL,cAAc,EACd,uBAAuB,EACvB,UAAU,EACV,gBAAgB,EAChB,QAAQ,EACR,aAAa,EACb,KAAK,EACL,cAAc,GACf,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,sBAAsB,EACtB,0BAA0B,GAC3B,MAAM,kBAAkB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@buoy-gg/core",
3
- "version": "7.0.3",
3
+ "version": "7.0.5",
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",
@@ -22,10 +22,10 @@
22
22
  ],
23
23
  "sideEffects": false,
24
24
  "dependencies": {
25
- "@buoy-gg/shared-ui": "7.0.3",
26
- "@buoy-gg/floating-tools-core": "7.0.3",
27
- "@buoy-gg/license": "7.0.3",
28
- "@buoy-gg/floating-tools-react": "7.0.3"
25
+ "@buoy-gg/shared-ui": "7.0.5",
26
+ "@buoy-gg/license": "7.0.5",
27
+ "@buoy-gg/floating-tools-core": "7.0.5",
28
+ "@buoy-gg/floating-tools-react": "7.0.5"
29
29
  },
30
30
  "peerDependencies": {
31
31
  "react": "*",