@buoy-gg/mcp 7.0.5 → 7.0.7
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/dist/{chunk-KZFJFXI4.mjs → chunk-OJHJ2CKB.mjs} +21 -7
- package/dist/cli.js +21 -7
- package/dist/cli.mjs +1 -1
- package/dist/index.js +21 -7
- package/dist/index.mjs +1 -1
- package/package.json +2 -2
|
@@ -296,7 +296,7 @@ async function waitForBroker(url, attempts = 20) {
|
|
|
296
296
|
var delay = (ms) => new Promise((r) => setTimeout(r, ms));
|
|
297
297
|
|
|
298
298
|
// src/version.ts
|
|
299
|
-
var VERSION = "7.0.
|
|
299
|
+
var VERSION = "7.0.7" ? "7.0.7" : "0.0.0-dev";
|
|
300
300
|
var PACKAGE_NAME = "@buoy-gg/mcp";
|
|
301
301
|
|
|
302
302
|
// src/update/checkForUpdate.ts
|
|
@@ -1503,7 +1503,18 @@ var REDUX_TOOL_ID = "redux";
|
|
|
1503
1503
|
var text6 = (s) => ({ content: [{ type: "text", text: s }] });
|
|
1504
1504
|
var fail7 = (message) => ({ isError: true, content: [{ type: "text", text: message }] });
|
|
1505
1505
|
var errMsg7 = (e) => e instanceof Error ? e.message : String(e);
|
|
1506
|
-
|
|
1506
|
+
function noStoreMessage(reason) {
|
|
1507
|
+
switch (reason) {
|
|
1508
|
+
case "no-react-redux":
|
|
1509
|
+
return "react-redux is not installed in the app \u2014 the Redux tool requires it (npm install react-redux).";
|
|
1510
|
+
case "no-provider":
|
|
1511
|
+
return "No Redux Provider above <FloatingDevTools />. Move <FloatingDevTools /> inside your <Provider store={store}> and retry.";
|
|
1512
|
+
case "not-instrumented":
|
|
1513
|
+
default:
|
|
1514
|
+
return "Redux store not instrumented yet. On current Buoy versions the store binds automatically at app startup \u2014 this usually means the app is running an older @buoy-gg/core (upgrade it), or the Redux tool hasn't been opened once (older versions only). Apps can also bind explicitly with registerReduxStore(store) from @buoy-gg/redux.";
|
|
1515
|
+
}
|
|
1516
|
+
}
|
|
1517
|
+
var TOP_LEVEL_ONLY_NOTE = "\n\n_Note: capture is top-level-only on this device (thunk-internal / RTK Query actions aren't recorded). Put `import '@buoy-gg/redux';` first in the app entry, or add `buoyReduxMiddleware`, for full capture._";
|
|
1507
1518
|
function registerReduxTools(server, sync) {
|
|
1508
1519
|
server.registerTool(
|
|
1509
1520
|
"get_redux_state",
|
|
@@ -1528,19 +1539,22 @@ function registerReduxTools(server, sync) {
|
|
|
1528
1539
|
"No redux result from the device. The redux tool may be inactive, or the app needs a newer Buoy (get_redux_state requires the getState action)."
|
|
1529
1540
|
);
|
|
1530
1541
|
}
|
|
1531
|
-
if (!res.available) return
|
|
1542
|
+
if (!res.available) return fail7(noStoreMessage(res.reason));
|
|
1532
1543
|
const slices = res.slices.length ? res.slices.join(", ") : "(none)";
|
|
1544
|
+
const captureNote = res.capture === "top-level-only" ? TOP_LEVEL_ONLY_NOTE : "";
|
|
1533
1545
|
if (args.includeValues) {
|
|
1534
|
-
return text6(
|
|
1546
|
+
return text6(
|
|
1547
|
+
`**Redux store \u2014 slices: ${slices}**
|
|
1535
1548
|
|
|
1536
1549
|
\`\`\`json
|
|
1537
1550
|
${JSON.stringify(res.state, null, 2)}
|
|
1538
|
-
|
|
1551
|
+
\`\`\`${captureNote}`
|
|
1552
|
+
);
|
|
1539
1553
|
}
|
|
1540
1554
|
return text6(
|
|
1541
1555
|
`**Redux store \u2014 slices: ${slices}**
|
|
1542
1556
|
|
|
1543
|
-
_Compact view. Pass includeValues:true for the full state tree. Dispatch with redux_dispatch({type, payload})._`
|
|
1557
|
+
_Compact view. Pass includeValues:true for the full state tree. Dispatch with redux_dispatch({type, payload})._${captureNote}`
|
|
1544
1558
|
);
|
|
1545
1559
|
} catch (e) {
|
|
1546
1560
|
return fail7(errMsg7(e));
|
|
@@ -1563,7 +1577,7 @@ _Compact view. Pass includeValues:true for the full state tree. Dispatch with re
|
|
|
1563
1577
|
const action = { type: args.type };
|
|
1564
1578
|
if (args.payload !== void 0) action.payload = args.payload;
|
|
1565
1579
|
const res = await sync.callAction(REDUX_TOOL_ID, "dispatch", { action }, target);
|
|
1566
|
-
if (!res || !res.dispatched) return fail7(
|
|
1580
|
+
if (!res || !res.dispatched) return fail7(noStoreMessage(res?.reason));
|
|
1567
1581
|
return text6(`Dispatched \`${args.type}\`${args.payload !== void 0 ? ` with payload ${JSON.stringify(args.payload)}` : ""}.`);
|
|
1568
1582
|
} catch (e) {
|
|
1569
1583
|
return fail7(errMsg7(e));
|
package/dist/cli.js
CHANGED
|
@@ -336,7 +336,7 @@ var import_node_os = __toESM(require("os"));
|
|
|
336
336
|
var import_node_path = __toESM(require("path"));
|
|
337
337
|
|
|
338
338
|
// src/version.ts
|
|
339
|
-
var VERSION = "7.0.
|
|
339
|
+
var VERSION = "7.0.7" ? "7.0.7" : "0.0.0-dev";
|
|
340
340
|
var PACKAGE_NAME = "@buoy-gg/mcp";
|
|
341
341
|
|
|
342
342
|
// src/update/checkForUpdate.ts
|
|
@@ -1760,7 +1760,18 @@ var REDUX_TOOL_ID = "redux";
|
|
|
1760
1760
|
var text7 = (s) => ({ content: [{ type: "text", text: s }] });
|
|
1761
1761
|
var fail8 = (message) => ({ isError: true, content: [{ type: "text", text: message }] });
|
|
1762
1762
|
var errMsg8 = (e) => e instanceof Error ? e.message : String(e);
|
|
1763
|
-
|
|
1763
|
+
function noStoreMessage(reason) {
|
|
1764
|
+
switch (reason) {
|
|
1765
|
+
case "no-react-redux":
|
|
1766
|
+
return "react-redux is not installed in the app \u2014 the Redux tool requires it (npm install react-redux).";
|
|
1767
|
+
case "no-provider":
|
|
1768
|
+
return "No Redux Provider above <FloatingDevTools />. Move <FloatingDevTools /> inside your <Provider store={store}> and retry.";
|
|
1769
|
+
case "not-instrumented":
|
|
1770
|
+
default:
|
|
1771
|
+
return "Redux store not instrumented yet. On current Buoy versions the store binds automatically at app startup \u2014 this usually means the app is running an older @buoy-gg/core (upgrade it), or the Redux tool hasn't been opened once (older versions only). Apps can also bind explicitly with registerReduxStore(store) from @buoy-gg/redux.";
|
|
1772
|
+
}
|
|
1773
|
+
}
|
|
1774
|
+
var TOP_LEVEL_ONLY_NOTE = "\n\n_Note: capture is top-level-only on this device (thunk-internal / RTK Query actions aren't recorded). Put `import '@buoy-gg/redux';` first in the app entry, or add `buoyReduxMiddleware`, for full capture._";
|
|
1764
1775
|
function registerReduxTools(server, sync) {
|
|
1765
1776
|
server.registerTool(
|
|
1766
1777
|
"get_redux_state",
|
|
@@ -1785,19 +1796,22 @@ function registerReduxTools(server, sync) {
|
|
|
1785
1796
|
"No redux result from the device. The redux tool may be inactive, or the app needs a newer Buoy (get_redux_state requires the getState action)."
|
|
1786
1797
|
);
|
|
1787
1798
|
}
|
|
1788
|
-
if (!res.available) return
|
|
1799
|
+
if (!res.available) return fail8(noStoreMessage(res.reason));
|
|
1789
1800
|
const slices = res.slices.length ? res.slices.join(", ") : "(none)";
|
|
1801
|
+
const captureNote = res.capture === "top-level-only" ? TOP_LEVEL_ONLY_NOTE : "";
|
|
1790
1802
|
if (args.includeValues) {
|
|
1791
|
-
return text7(
|
|
1803
|
+
return text7(
|
|
1804
|
+
`**Redux store \u2014 slices: ${slices}**
|
|
1792
1805
|
|
|
1793
1806
|
\`\`\`json
|
|
1794
1807
|
${JSON.stringify(res.state, null, 2)}
|
|
1795
|
-
|
|
1808
|
+
\`\`\`${captureNote}`
|
|
1809
|
+
);
|
|
1796
1810
|
}
|
|
1797
1811
|
return text7(
|
|
1798
1812
|
`**Redux store \u2014 slices: ${slices}**
|
|
1799
1813
|
|
|
1800
|
-
_Compact view. Pass includeValues:true for the full state tree. Dispatch with redux_dispatch({type, payload})._`
|
|
1814
|
+
_Compact view. Pass includeValues:true for the full state tree. Dispatch with redux_dispatch({type, payload})._${captureNote}`
|
|
1801
1815
|
);
|
|
1802
1816
|
} catch (e) {
|
|
1803
1817
|
return fail8(errMsg8(e));
|
|
@@ -1820,7 +1834,7 @@ _Compact view. Pass includeValues:true for the full state tree. Dispatch with re
|
|
|
1820
1834
|
const action = { type: args.type };
|
|
1821
1835
|
if (args.payload !== void 0) action.payload = args.payload;
|
|
1822
1836
|
const res = await sync.callAction(REDUX_TOOL_ID, "dispatch", { action }, target);
|
|
1823
|
-
if (!res || !res.dispatched) return fail8(
|
|
1837
|
+
if (!res || !res.dispatched) return fail8(noStoreMessage(res?.reason));
|
|
1824
1838
|
return text7(`Dispatched \`${args.type}\`${args.payload !== void 0 ? ` with payload ${JSON.stringify(args.payload)}` : ""}.`);
|
|
1825
1839
|
} catch (e) {
|
|
1826
1840
|
return fail8(errMsg8(e));
|
package/dist/cli.mjs
CHANGED
package/dist/index.js
CHANGED
|
@@ -371,7 +371,7 @@ var import_node_os = __toESM(require("os"));
|
|
|
371
371
|
var import_node_path = __toESM(require("path"));
|
|
372
372
|
|
|
373
373
|
// src/version.ts
|
|
374
|
-
var VERSION = "7.0.
|
|
374
|
+
var VERSION = "7.0.7" ? "7.0.7" : "0.0.0-dev";
|
|
375
375
|
var PACKAGE_NAME = "@buoy-gg/mcp";
|
|
376
376
|
|
|
377
377
|
// src/update/checkForUpdate.ts
|
|
@@ -1795,7 +1795,18 @@ var REDUX_TOOL_ID = "redux";
|
|
|
1795
1795
|
var text7 = (s) => ({ content: [{ type: "text", text: s }] });
|
|
1796
1796
|
var fail8 = (message) => ({ isError: true, content: [{ type: "text", text: message }] });
|
|
1797
1797
|
var errMsg8 = (e) => e instanceof Error ? e.message : String(e);
|
|
1798
|
-
|
|
1798
|
+
function noStoreMessage(reason) {
|
|
1799
|
+
switch (reason) {
|
|
1800
|
+
case "no-react-redux":
|
|
1801
|
+
return "react-redux is not installed in the app \u2014 the Redux tool requires it (npm install react-redux).";
|
|
1802
|
+
case "no-provider":
|
|
1803
|
+
return "No Redux Provider above <FloatingDevTools />. Move <FloatingDevTools /> inside your <Provider store={store}> and retry.";
|
|
1804
|
+
case "not-instrumented":
|
|
1805
|
+
default:
|
|
1806
|
+
return "Redux store not instrumented yet. On current Buoy versions the store binds automatically at app startup \u2014 this usually means the app is running an older @buoy-gg/core (upgrade it), or the Redux tool hasn't been opened once (older versions only). Apps can also bind explicitly with registerReduxStore(store) from @buoy-gg/redux.";
|
|
1807
|
+
}
|
|
1808
|
+
}
|
|
1809
|
+
var TOP_LEVEL_ONLY_NOTE = "\n\n_Note: capture is top-level-only on this device (thunk-internal / RTK Query actions aren't recorded). Put `import '@buoy-gg/redux';` first in the app entry, or add `buoyReduxMiddleware`, for full capture._";
|
|
1799
1810
|
function registerReduxTools(server, sync) {
|
|
1800
1811
|
server.registerTool(
|
|
1801
1812
|
"get_redux_state",
|
|
@@ -1820,19 +1831,22 @@ function registerReduxTools(server, sync) {
|
|
|
1820
1831
|
"No redux result from the device. The redux tool may be inactive, or the app needs a newer Buoy (get_redux_state requires the getState action)."
|
|
1821
1832
|
);
|
|
1822
1833
|
}
|
|
1823
|
-
if (!res.available) return
|
|
1834
|
+
if (!res.available) return fail8(noStoreMessage(res.reason));
|
|
1824
1835
|
const slices = res.slices.length ? res.slices.join(", ") : "(none)";
|
|
1836
|
+
const captureNote = res.capture === "top-level-only" ? TOP_LEVEL_ONLY_NOTE : "";
|
|
1825
1837
|
if (args.includeValues) {
|
|
1826
|
-
return text7(
|
|
1838
|
+
return text7(
|
|
1839
|
+
`**Redux store \u2014 slices: ${slices}**
|
|
1827
1840
|
|
|
1828
1841
|
\`\`\`json
|
|
1829
1842
|
${JSON.stringify(res.state, null, 2)}
|
|
1830
|
-
|
|
1843
|
+
\`\`\`${captureNote}`
|
|
1844
|
+
);
|
|
1831
1845
|
}
|
|
1832
1846
|
return text7(
|
|
1833
1847
|
`**Redux store \u2014 slices: ${slices}**
|
|
1834
1848
|
|
|
1835
|
-
_Compact view. Pass includeValues:true for the full state tree. Dispatch with redux_dispatch({type, payload})._`
|
|
1849
|
+
_Compact view. Pass includeValues:true for the full state tree. Dispatch with redux_dispatch({type, payload})._${captureNote}`
|
|
1836
1850
|
);
|
|
1837
1851
|
} catch (e) {
|
|
1838
1852
|
return fail8(errMsg8(e));
|
|
@@ -1855,7 +1869,7 @@ _Compact view. Pass includeValues:true for the full state tree. Dispatch with re
|
|
|
1855
1869
|
const action = { type: args.type };
|
|
1856
1870
|
if (args.payload !== void 0) action.payload = args.payload;
|
|
1857
1871
|
const res = await sync.callAction(REDUX_TOOL_ID, "dispatch", { action }, target);
|
|
1858
|
-
if (!res || !res.dispatched) return fail8(
|
|
1872
|
+
if (!res || !res.dispatched) return fail8(noStoreMessage(res?.reason));
|
|
1859
1873
|
return text7(`Dispatched \`${args.type}\`${args.payload !== void 0 ? ` with payload ${JSON.stringify(args.payload)}` : ""}.`);
|
|
1860
1874
|
} catch (e) {
|
|
1861
1875
|
return fail8(errMsg8(e));
|
package/dist/index.mjs
CHANGED
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@buoy-gg/mcp",
|
|
3
3
|
"mcpName": "io.github.buoy-gg/mcp",
|
|
4
|
-
"version": "7.0.
|
|
4
|
+
"version": "7.0.7",
|
|
5
5
|
"description": "MCP server for Buoy devtools — lets any LLM copilot drive Buoy tools (perf-monitor benchmarks, etc.) over the devtool sync protocol",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"module": "dist/index.mjs",
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
32
32
|
"socket.io-client": "^4.8.1",
|
|
33
33
|
"zod": "^3.25.0",
|
|
34
|
-
"@buoy-gg/sync-broker": "7.0.
|
|
34
|
+
"@buoy-gg/sync-broker": "7.0.7"
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
37
|
"@types/node": "^22.0.0",
|