react-native-mcp-kit 1.0.1 → 2.1.0
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 +220 -720
- package/dist/babel/stripPlugin.d.ts.map +1 -1
- package/dist/babel/stripPlugin.js +40 -3
- package/dist/babel/stripPlugin.js.map +1 -1
- package/dist/bin/ios-hid +0 -0
- package/dist/client/contexts/McpContext/McpProvider.d.ts +1 -1
- package/dist/client/contexts/McpContext/McpProvider.d.ts.map +1 -1
- package/dist/client/contexts/McpContext/McpProvider.js +67 -4
- package/dist/client/contexts/McpContext/McpProvider.js.map +1 -1
- package/dist/client/contexts/McpContext/types.d.ts +11 -1
- package/dist/client/contexts/McpContext/types.d.ts.map +1 -1
- package/dist/client/core/McpClient.d.ts +8 -0
- package/dist/client/core/McpClient.d.ts.map +1 -1
- package/dist/client/core/McpClient.js +112 -22
- package/dist/client/core/McpClient.js.map +1 -1
- package/dist/client/utils/connection.d.ts +7 -0
- package/dist/client/utils/connection.d.ts.map +1 -1
- package/dist/client/utils/connection.js +14 -1
- package/dist/client/utils/connection.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -2
- package/dist/index.js.map +1 -1
- package/dist/modules/device/device.d.ts.map +1 -1
- package/dist/modules/device/device.js +16 -4
- package/dist/modules/device/device.js.map +1 -1
- package/dist/modules/fiberTree/fiberTree.d.ts.map +1 -1
- package/dist/modules/fiberTree/fiberTree.js +61 -15
- package/dist/modules/fiberTree/fiberTree.js.map +1 -1
- package/dist/modules/fiberTree/types.d.ts +9 -0
- package/dist/modules/fiberTree/types.d.ts.map +1 -1
- package/dist/modules/fiberTree/utils.d.ts +2 -1
- package/dist/modules/fiberTree/utils.d.ts.map +1 -1
- package/dist/modules/fiberTree/utils.js +57 -1
- package/dist/modules/fiberTree/utils.js.map +1 -1
- package/dist/modules/index.d.ts +0 -1
- package/dist/modules/index.d.ts.map +1 -1
- package/dist/modules/index.js +1 -3
- package/dist/modules/index.js.map +1 -1
- package/dist/modules/navigation/navigation.d.ts.map +1 -1
- package/dist/modules/navigation/navigation.js +32 -40
- package/dist/modules/navigation/navigation.js.map +1 -1
- package/dist/modules/navigation/types.d.ts +2 -1
- package/dist/modules/navigation/types.d.ts.map +1 -1
- package/dist/server/bridge.d.ts +38 -12
- package/dist/server/bridge.d.ts.map +1 -1
- package/dist/server/bridge.js +158 -56
- package/dist/server/bridge.js.map +1 -1
- package/dist/server/cli.js +10 -1
- package/dist/server/cli.js.map +1 -1
- package/dist/server/host/deviceResolver.d.ts +53 -0
- package/dist/server/host/deviceResolver.d.ts.map +1 -0
- package/dist/server/host/deviceResolver.js +555 -0
- package/dist/server/host/deviceResolver.js.map +1 -0
- package/dist/server/host/helpers.d.ts +33 -0
- package/dist/server/host/helpers.d.ts.map +1 -0
- package/dist/server/host/helpers.js +42 -0
- package/dist/server/host/helpers.js.map +1 -0
- package/dist/server/host/hostModule.d.ts +4 -0
- package/dist/server/host/hostModule.d.ts.map +1 -0
- package/dist/server/host/hostModule.js +26 -0
- package/dist/server/host/hostModule.js.map +1 -0
- package/dist/server/host/index.d.ts +4 -0
- package/dist/server/host/index.d.ts.map +1 -0
- package/dist/server/host/index.js +8 -0
- package/dist/server/host/index.js.map +1 -0
- package/dist/server/host/iosInput.d.ts +15 -0
- package/dist/server/host/iosInput.d.ts.map +1 -0
- package/dist/server/host/iosInput.js +93 -0
- package/dist/server/host/iosInput.js.map +1 -0
- package/dist/server/host/modules/screenshot.d.ts +4 -0
- package/dist/server/host/modules/screenshot.d.ts.map +1 -0
- package/dist/server/host/modules/screenshot.js +615 -0
- package/dist/server/host/modules/screenshot.js.map +1 -0
- package/dist/server/host/processRunner.d.ts +19 -0
- package/dist/server/host/processRunner.d.ts.map +1 -0
- package/dist/server/host/processRunner.js +58 -0
- package/dist/server/host/processRunner.js.map +1 -0
- package/dist/server/host/tools/capture.d.ts +6 -0
- package/dist/server/host/tools/capture.d.ts.map +1 -0
- package/dist/server/host/tools/capture.js +148 -0
- package/dist/server/host/tools/capture.js.map +1 -0
- package/dist/server/host/tools/devices.d.ts +4 -0
- package/dist/server/host/tools/devices.d.ts.map +1 -0
- package/dist/server/host/tools/devices.js +17 -0
- package/dist/server/host/tools/devices.js.map +1 -0
- package/dist/server/host/tools/input.d.ts +7 -0
- package/dist/server/host/tools/input.d.ts.map +1 -0
- package/dist/server/host/tools/input.js +286 -0
- package/dist/server/host/tools/input.js.map +1 -0
- package/dist/server/host/tools/lifecycle.d.ts +6 -0
- package/dist/server/host/tools/lifecycle.d.ts.map +1 -0
- package/dist/server/host/tools/lifecycle.js +271 -0
- package/dist/server/host/tools/lifecycle.js.map +1 -0
- package/dist/server/host/types.d.ts +17 -0
- package/dist/server/host/types.d.ts.map +1 -0
- package/dist/{modules/components → server/host}/types.js.map +1 -1
- package/dist/server/host/wda.d.ts +15 -0
- package/dist/server/host/wda.d.ts.map +1 -0
- package/dist/server/host/wda.js +100 -0
- package/dist/server/host/wda.js.map +1 -0
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +10 -17
- package/dist/server/index.js.map +1 -1
- package/dist/server/mcpServer.d.ts +5 -10
- package/dist/server/mcpServer.d.ts.map +1 -1
- package/dist/server/mcpServer.js +438 -153
- package/dist/server/mcpServer.js.map +1 -1
- package/dist/server/types.d.ts +2 -8
- package/dist/server/types.d.ts.map +1 -1
- package/dist/shared/protocol.d.ts +39 -1
- package/dist/shared/protocol.d.ts.map +1 -1
- package/dist/shared/protocol.js +12 -1
- package/dist/shared/protocol.js.map +1 -1
- package/package.json +6 -12
- package/dist/client/contexts/McpTreeContext/McpTracker.d.ts +0 -10
- package/dist/client/contexts/McpTreeContext/McpTracker.d.ts.map +0 -1
- package/dist/client/contexts/McpTreeContext/McpTracker.js +0 -101
- package/dist/client/contexts/McpTreeContext/McpTracker.js.map +0 -1
- package/dist/client/contexts/McpTreeContext/McpTreeContext.d.ts +0 -2
- package/dist/client/contexts/McpTreeContext/McpTreeContext.d.ts.map +0 -1
- package/dist/client/contexts/McpTreeContext/McpTreeContext.js +0 -6
- package/dist/client/contexts/McpTreeContext/McpTreeContext.js.map +0 -1
- package/dist/client/contexts/McpTreeContext/McpTreeRegistry.d.ts +0 -16
- package/dist/client/contexts/McpTreeContext/McpTreeRegistry.d.ts.map +0 -1
- package/dist/client/contexts/McpTreeContext/McpTreeRegistry.js +0 -96
- package/dist/client/contexts/McpTreeContext/McpTreeRegistry.js.map +0 -1
- package/dist/client/contexts/McpTreeContext/index.d.ts +0 -5
- package/dist/client/contexts/McpTreeContext/index.d.ts.map +0 -1
- package/dist/client/contexts/McpTreeContext/index.js +0 -10
- package/dist/client/contexts/McpTreeContext/index.js.map +0 -1
- package/dist/client/contexts/McpTreeContext/types.d.ts +0 -14
- package/dist/client/contexts/McpTreeContext/types.d.ts.map +0 -1
- package/dist/client/contexts/McpTreeContext/types.js.map +0 -1
- package/dist/modules/components/components.d.ts +0 -8
- package/dist/modules/components/components.d.ts.map +0 -1
- package/dist/modules/components/components.js +0 -315
- package/dist/modules/components/components.js.map +0 -1
- package/dist/modules/components/index.d.ts +0 -3
- package/dist/modules/components/index.d.ts.map +0 -1
- package/dist/modules/components/index.js +0 -6
- package/dist/modules/components/index.js.map +0 -1
- package/dist/modules/components/types.d.ts +0 -18
- package/dist/modules/components/types.d.ts.map +0 -1
- package/dist/modules/components/types.js +0 -3
- package/dist/modules/components/utils.d.ts +0 -18
- package/dist/modules/components/utils.d.ts.map +0 -1
- package/dist/modules/components/utils.js +0 -386
- package/dist/modules/components/utils.js.map +0 -1
- package/dist/modules/screenshot/index.d.ts +0 -3
- package/dist/modules/screenshot/index.d.ts.map +0 -1
- package/dist/modules/screenshot/index.js +0 -6
- package/dist/modules/screenshot/index.js.map +0 -1
- package/dist/modules/screenshot/screenshot.d.ts +0 -4
- package/dist/modules/screenshot/screenshot.d.ts.map +0 -1
- package/dist/modules/screenshot/screenshot.js +0 -89
- package/dist/modules/screenshot/screenshot.js.map +0 -1
- package/dist/modules/screenshot/types.d.ts +0 -5
- package/dist/modules/screenshot/types.d.ts.map +0 -1
- package/dist/modules/screenshot/types.js +0 -3
- package/dist/modules/screenshot/types.js.map +0 -1
- package/dist/modules/tree/index.d.ts +0 -2
- package/dist/modules/tree/index.d.ts.map +0 -1
- package/dist/modules/tree/index.js +0 -6
- package/dist/modules/tree/index.js.map +0 -1
- package/dist/modules/tree/tree.d.ts +0 -3
- package/dist/modules/tree/tree.d.ts.map +0 -1
- package/dist/modules/tree/tree.js +0 -274
- package/dist/modules/tree/tree.js.map +0 -1
- /package/dist/{client/contexts/McpTreeContext → server/host}/types.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stripPlugin.d.ts","sourceRoot":"","sources":["../../src/babel/stripPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,KAAK,IAAI,UAAU,EAAE,MAAM,aAAa,CAAC;AAavE,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;IAAE,KAAK,EAAE,OAAO,UAAU,CAAA;CAAE,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"stripPlugin.d.ts","sourceRoot":"","sources":["../../src/babel/stripPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,KAAK,IAAI,UAAU,EAAE,MAAM,aAAa,CAAC;AAavE,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;IAAE,KAAK,EAAE,OAAO,UAAU,CAAA;CAAE,GAAG,SAAS,CAyJzF"}
|
|
@@ -87,12 +87,49 @@ function stripPlugin({ types: t }) {
|
|
|
87
87
|
path.remove();
|
|
88
88
|
}
|
|
89
89
|
},
|
|
90
|
-
// Replace <McpProvider>{children}</McpProvider> with just {children}
|
|
90
|
+
// Replace <McpProvider>{children}</McpProvider> with just {children}.
|
|
91
|
+
// The node parent may be JSX (children can sit as siblings) or an
|
|
92
|
+
// expression (arrow body / return / paren — must yield exactly one
|
|
93
|
+
// expression). JSXText whitespace and JSXExpressionContainer wrappers
|
|
94
|
+
// need to be normalised so the replacement is valid in either context.
|
|
91
95
|
JSXElement(path) {
|
|
92
96
|
const opening = path.node.openingElement;
|
|
93
|
-
if (t.isJSXIdentifier(opening.name, { name: 'McpProvider' }))
|
|
94
|
-
|
|
97
|
+
if (!t.isJSXIdentifier(opening.name, { name: 'McpProvider' }))
|
|
98
|
+
return;
|
|
99
|
+
const realChildren = path.node.children.filter((child) => {
|
|
100
|
+
if (t.isJSXText(child))
|
|
101
|
+
return child.value.trim() !== '';
|
|
102
|
+
return true;
|
|
103
|
+
});
|
|
104
|
+
if (realChildren.length === 0) {
|
|
105
|
+
path.remove();
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
const parent = path.parent;
|
|
109
|
+
const isJsxContext = t.isJSXElement(parent) || t.isJSXFragment(parent);
|
|
110
|
+
if (isJsxContext) {
|
|
111
|
+
path.replaceWithMultiple(realChildren);
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
if (realChildren.length === 1) {
|
|
115
|
+
const [only] = realChildren;
|
|
116
|
+
if (!only)
|
|
117
|
+
return;
|
|
118
|
+
// Unwrap {expr} back to expr in expression context — a bare
|
|
119
|
+
// JSXExpressionContainer is not a valid expression outside JSX.
|
|
120
|
+
if (t.isJSXExpressionContainer(only)) {
|
|
121
|
+
if (t.isJSXEmptyExpression(only.expression)) {
|
|
122
|
+
path.remove();
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
path.replaceWith(only.expression);
|
|
126
|
+
}
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
path.replaceWith(only);
|
|
130
|
+
return;
|
|
95
131
|
}
|
|
132
|
+
path.replaceWith(t.jsxFragment(t.jsxOpeningFragment(), t.jsxClosingFragment(), realChildren));
|
|
96
133
|
},
|
|
97
134
|
},
|
|
98
135
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stripPlugin.js","sourceRoot":"","sources":["../../src/babel/stripPlugin.ts"],"names":[],"mappings":";;AAaA,
|
|
1
|
+
{"version":3,"file":"stripPlugin.js","sourceRoot":"","sources":["../../src/babel/stripPlugin.ts"],"names":[],"mappings":"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"}
|
package/dist/bin/ios-hid
ADDED
|
Binary file
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { type McpContextValue, type McpProviderProps } from './types';
|
|
2
|
-
export declare const McpProvider: ({ children }: McpProviderProps) => import("react").FunctionComponentElement<import("react").ProviderProps<McpContextValue | null>>;
|
|
2
|
+
export declare const McpProvider: ({ children, debug, i18n, modules, navigationRef, queryClient, storages, }: McpProviderProps) => import("react").FunctionComponentElement<import("react").ProviderProps<McpContextValue | null>>;
|
|
3
3
|
//# sourceMappingURL=McpProvider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"McpProvider.d.ts","sourceRoot":"","sources":["../../../../src/client/contexts/McpContext/McpProvider.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"McpProvider.d.ts","sourceRoot":"","sources":["../../../../src/client/contexts/McpContext/McpProvider.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAiBtE,eAAO,MAAM,WAAW,8EAQrB,gBAAgB,oGAoElB,CAAC"}
|
|
@@ -3,10 +3,71 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.McpProvider = void 0;
|
|
4
4
|
const react_1 = require("react");
|
|
5
5
|
const McpClient_1 = require("../../../client/core/McpClient");
|
|
6
|
+
const alert_1 = require("../../../modules/alert");
|
|
7
|
+
const console_1 = require("../../../modules/console");
|
|
8
|
+
const device_1 = require("../../../modules/device");
|
|
9
|
+
const errors_1 = require("../../../modules/errors");
|
|
10
|
+
const fiberTree_1 = require("../../../modules/fiberTree");
|
|
11
|
+
const i18next_1 = require("../../../modules/i18next");
|
|
12
|
+
const navigation_1 = require("../../../modules/navigation");
|
|
13
|
+
const network_1 = require("../../../modules/network");
|
|
14
|
+
const reactQuery_1 = require("../../../modules/reactQuery");
|
|
15
|
+
const storage_1 = require("../../../modules/storage");
|
|
6
16
|
const McpContext_1 = require("./McpContext");
|
|
7
|
-
|
|
17
|
+
// Lazy-require so importing this file from Node (e.g. the server entry) does
|
|
18
|
+
// not pull react-native into scope. Matches the pattern used elsewhere in the
|
|
19
|
+
// library (see device/alert modules).
|
|
20
|
+
let ViewComponent;
|
|
21
|
+
const getView = () => {
|
|
22
|
+
if (!ViewComponent) {
|
|
23
|
+
// eslint-disable-next-line global-require, @typescript-eslint/no-require-imports
|
|
24
|
+
ViewComponent = require('react-native').View;
|
|
25
|
+
}
|
|
26
|
+
return ViewComponent;
|
|
27
|
+
};
|
|
28
|
+
const McpProvider = ({ children, debug, i18n, modules, navigationRef, queryClient, storages, }) => {
|
|
29
|
+
const client = (0, react_1.useMemo)(() => {
|
|
30
|
+
return McpClient_1.McpClient.initialize({ debug });
|
|
31
|
+
}, [debug]);
|
|
32
|
+
const rootRef = (0, react_1.useRef)(null);
|
|
33
|
+
// Always-on modules — fiberTree picks up the internal root ref so apps no
|
|
34
|
+
// longer need to manage one manually.
|
|
35
|
+
(0, react_1.useEffect)(() => {
|
|
36
|
+
client.registerModules([
|
|
37
|
+
(0, alert_1.alertModule)(),
|
|
38
|
+
(0, console_1.consoleModule)(),
|
|
39
|
+
(0, device_1.deviceModule)(),
|
|
40
|
+
(0, errors_1.errorsModule)(),
|
|
41
|
+
(0, network_1.networkModule)(),
|
|
42
|
+
(0, fiberTree_1.fiberTreeModule)({ rootRef }),
|
|
43
|
+
]);
|
|
44
|
+
}, [client]);
|
|
45
|
+
(0, react_1.useEffect)(() => {
|
|
46
|
+
if (!navigationRef)
|
|
47
|
+
return;
|
|
48
|
+
client.registerModule((0, navigation_1.navigationModule)(navigationRef));
|
|
49
|
+
}, [client, navigationRef]);
|
|
50
|
+
(0, react_1.useEffect)(() => {
|
|
51
|
+
if (!queryClient)
|
|
52
|
+
return;
|
|
53
|
+
client.registerModule((0, reactQuery_1.reactQueryModule)(queryClient));
|
|
54
|
+
}, [client, queryClient]);
|
|
55
|
+
(0, react_1.useEffect)(() => {
|
|
56
|
+
if (!i18n)
|
|
57
|
+
return;
|
|
58
|
+
client.registerModule((0, i18next_1.i18nextModule)(i18n));
|
|
59
|
+
}, [client, i18n]);
|
|
60
|
+
(0, react_1.useEffect)(() => {
|
|
61
|
+
if (!storages || storages.length === 0)
|
|
62
|
+
return;
|
|
63
|
+
client.registerModule((0, storage_1.storageModule)(...storages));
|
|
64
|
+
}, [client, storages]);
|
|
65
|
+
(0, react_1.useEffect)(() => {
|
|
66
|
+
if (!modules || modules.length === 0)
|
|
67
|
+
return;
|
|
68
|
+
client.registerModules(modules);
|
|
69
|
+
}, [client, modules]);
|
|
8
70
|
const contextValue = (0, react_1.useMemo)(() => {
|
|
9
|
-
const client = McpClient_1.McpClient.getInstance();
|
|
10
71
|
return {
|
|
11
72
|
registerTool: (name, tool) => {
|
|
12
73
|
client.registerTool(name, tool);
|
|
@@ -21,8 +82,10 @@ const McpProvider = ({ children }) => {
|
|
|
21
82
|
client.unregisterTool(name);
|
|
22
83
|
},
|
|
23
84
|
};
|
|
24
|
-
}, []);
|
|
25
|
-
return (0, react_1.createElement)(McpContext_1.McpContext.Provider, { value: contextValue },
|
|
85
|
+
}, [client]);
|
|
86
|
+
return (0, react_1.createElement)(McpContext_1.McpContext.Provider, { value: contextValue },
|
|
87
|
+
// eslint-disable-next-line react-hooks/refs
|
|
88
|
+
(0, react_1.createElement)(getView(), { collapsable: false, ref: rootRef, style: { flex: 1 } }, children));
|
|
26
89
|
};
|
|
27
90
|
exports.McpProvider = McpProvider;
|
|
28
91
|
//# sourceMappingURL=McpProvider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"McpProvider.js","sourceRoot":"","sources":["../../../../src/client/contexts/McpContext/McpProvider.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"McpProvider.js","sourceRoot":"","sources":["../../../../src/client/contexts/McpContext/McpProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
import { type ReactNode } from 'react';
|
|
2
|
-
import { type ToolHandler } from '../../../client/models/types';
|
|
2
|
+
import { type McpModule, type ToolHandler } from '../../../client/models/types';
|
|
3
|
+
import { type I18nLike } from '../../../modules/i18next/types';
|
|
4
|
+
import { type NavigationRef } from '../../../modules/navigation/types';
|
|
5
|
+
import { type QueryClientLike } from '../../../modules/reactQuery/types';
|
|
6
|
+
import { type NamedStorage } from '../../../modules/storage/types';
|
|
3
7
|
export interface McpContextValue {
|
|
4
8
|
registerTool: (name: string, tool: ToolHandler) => void;
|
|
5
9
|
removeState: (key: string) => void;
|
|
@@ -8,5 +12,11 @@ export interface McpContextValue {
|
|
|
8
12
|
}
|
|
9
13
|
export interface McpProviderProps {
|
|
10
14
|
children: ReactNode;
|
|
15
|
+
debug?: boolean;
|
|
16
|
+
i18n?: I18nLike;
|
|
17
|
+
modules?: McpModule[];
|
|
18
|
+
navigationRef?: NavigationRef;
|
|
19
|
+
queryClient?: QueryClientLike;
|
|
20
|
+
storages?: NamedStorage[];
|
|
11
21
|
}
|
|
12
22
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/client/contexts/McpContext/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/client/contexts/McpContext/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAE5D,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,KAAK,IAAI,CAAC;IACxD,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAChD,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACxC;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,SAAS,CAAC;IAEpB,KAAK,CAAC,EAAE,OAAO,CAAC;IAKhB,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC;IACtB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;CAC3B"}
|
|
@@ -3,11 +3,19 @@ export declare class McpClient {
|
|
|
3
3
|
private static instance;
|
|
4
4
|
private connection;
|
|
5
5
|
private debug;
|
|
6
|
+
private identity;
|
|
6
7
|
private moduleRunner;
|
|
7
8
|
private constructor();
|
|
9
|
+
private handleToolRequest;
|
|
8
10
|
static initialize(options?: {
|
|
11
|
+
appName?: string;
|
|
12
|
+
appVersion?: string;
|
|
13
|
+
bundleId?: string;
|
|
9
14
|
debug?: boolean;
|
|
15
|
+
deviceId?: string;
|
|
10
16
|
host?: string;
|
|
17
|
+
label?: string;
|
|
18
|
+
platform?: string;
|
|
11
19
|
port?: number;
|
|
12
20
|
}): McpClient;
|
|
13
21
|
static getInstance(): McpClient;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"McpClient.d.ts","sourceRoot":"","sources":["../../../src/client/core/McpClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,WAAW,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"McpClient.d.ts","sourceRoot":"","sources":["../../../src/client/core/McpClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAsHzE,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA0B;IAEjD,OAAO,CAAC,UAAU,CAAgB;IAClC,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,YAAY,CAAsB;IAE1C,OAAO;IAuCP,OAAO,CAAC,iBAAiB;IAsBzB,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;QAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,GAAG,SAAS;IA0Bb,MAAM,CAAC,WAAW,IAAI,SAAS;IAS/B,OAAO,IAAI,IAAI;IAMf,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAInC,cAAc,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI;IAMvC,eAAe,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,IAAI;IAa3C,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,IAAI;IAcnD,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAQ9B,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAS3C,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAUlC,OAAO,CAAC,GAAG;IASX,OAAO,CAAC,gBAAgB;CAsBzB"}
|
|
@@ -39,42 +39,116 @@ const formatTool = (moduleName, method) => {
|
|
|
39
39
|
};
|
|
40
40
|
// Capture original console.log before any module intercepts it
|
|
41
41
|
const originalConsoleLog = console.log.bind(console);
|
|
42
|
+
// react-native-device-info returns the literal string "unknown" on Android
|
|
43
|
+
// emulators and some real devices when Settings.Global.DEVICE_NAME is empty.
|
|
44
|
+
// Treat it the same as undefined so we can fall back to manufacturer + model.
|
|
45
|
+
const isUsefulString = (value) => {
|
|
46
|
+
return typeof value === 'string' && value.length > 0 && value.toLowerCase() !== 'unknown';
|
|
47
|
+
};
|
|
48
|
+
const autoDetectIdentity = () => {
|
|
49
|
+
const out = {};
|
|
50
|
+
try {
|
|
51
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires
|
|
52
|
+
const rn = require('react-native');
|
|
53
|
+
const os = rn.Platform?.OS ?? rn.default?.Platform?.OS;
|
|
54
|
+
if (typeof os === 'string') {
|
|
55
|
+
out.platform = os;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
// not running inside a React Native bundle — that's fine
|
|
60
|
+
}
|
|
61
|
+
try {
|
|
62
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires
|
|
63
|
+
const di = require('react-native-device-info');
|
|
64
|
+
const DI = di.default ?? di;
|
|
65
|
+
const appName = DI.getApplicationName?.();
|
|
66
|
+
const appVersion = DI.getVersion?.();
|
|
67
|
+
const bundleId = DI.getBundleId?.() ?? DI.getBundleIdSync?.();
|
|
68
|
+
const rawDeviceName = DI.getDeviceNameSync?.();
|
|
69
|
+
const model = DI.getModel?.();
|
|
70
|
+
const manufacturer = DI.getManufacturerSync?.() ?? DI.getBrand?.();
|
|
71
|
+
const deviceId = DI.getUniqueIdSync?.();
|
|
72
|
+
if (typeof appName === 'string') {
|
|
73
|
+
out.appName = appName;
|
|
74
|
+
}
|
|
75
|
+
if (typeof appVersion === 'string') {
|
|
76
|
+
out.appVersion = appVersion;
|
|
77
|
+
}
|
|
78
|
+
if (typeof bundleId === 'string') {
|
|
79
|
+
out.bundleId = bundleId;
|
|
80
|
+
}
|
|
81
|
+
if (isUsefulString(rawDeviceName)) {
|
|
82
|
+
out.label = rawDeviceName;
|
|
83
|
+
}
|
|
84
|
+
else if (isUsefulString(model)) {
|
|
85
|
+
out.label = isUsefulString(manufacturer) ? `${manufacturer} ${model}` : model;
|
|
86
|
+
}
|
|
87
|
+
if (typeof deviceId === 'string') {
|
|
88
|
+
out.deviceId = deviceId;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
catch {
|
|
92
|
+
// react-native-device-info not installed — identity stays partial
|
|
93
|
+
}
|
|
94
|
+
return out;
|
|
95
|
+
};
|
|
42
96
|
class McpClient {
|
|
43
97
|
static instance = null;
|
|
44
98
|
connection;
|
|
45
99
|
debug = false;
|
|
100
|
+
identity;
|
|
46
101
|
moduleRunner = new moduleRunner_1.ModuleRunner();
|
|
47
|
-
constructor(url) {
|
|
102
|
+
constructor(url, identity) {
|
|
103
|
+
this.identity = identity;
|
|
48
104
|
this.connection = new connection_1.McpConnection(url);
|
|
49
105
|
this.connection.onOpen(() => {
|
|
50
106
|
this.log('🚀 Connected to MCP server 🚀');
|
|
51
107
|
this.sendRegistration();
|
|
52
108
|
});
|
|
53
109
|
this.connection.onMessage((message) => {
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
.
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
type: 'tool_response',
|
|
72
|
-
});
|
|
73
|
-
});
|
|
110
|
+
switch (message.type) {
|
|
111
|
+
case 'server_hello':
|
|
112
|
+
if (message.protocolVersion !== protocol_1.PROTOCOL_VERSION) {
|
|
113
|
+
console.error(`${TAG} Protocol version mismatch — server ${message.protocolVersion}, client ${protocol_1.PROTOCOL_VERSION}. Update the mcp-kit package on one side so they line up; disconnecting.`);
|
|
114
|
+
this.connection.stopReconnect();
|
|
115
|
+
this.connection.dispose();
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
this.log(`Server hello — protocol v${message.protocolVersion}`);
|
|
119
|
+
break;
|
|
120
|
+
case 'version_mismatch':
|
|
121
|
+
console.error(`${TAG} Server rejected connection: ${message.reason} (server protocol v${message.serverVersion}, client protocol v${protocol_1.PROTOCOL_VERSION}). Not reconnecting.`);
|
|
122
|
+
this.connection.stopReconnect();
|
|
123
|
+
break;
|
|
124
|
+
case 'tool_request':
|
|
125
|
+
this.handleToolRequest(message);
|
|
126
|
+
break;
|
|
74
127
|
}
|
|
75
128
|
});
|
|
76
129
|
this.connection.connect();
|
|
77
130
|
}
|
|
131
|
+
handleToolRequest(message) {
|
|
132
|
+
this.log(`${ARROW_IN} ${formatTool(message.module, message.method)}`, message.args);
|
|
133
|
+
this.moduleRunner
|
|
134
|
+
.handleRequest(message)
|
|
135
|
+
.then((result) => {
|
|
136
|
+
this.log(`${ARROW_OUT} ${formatTool(message.module, message.method)}`, result);
|
|
137
|
+
this.connection.send({
|
|
138
|
+
id: message.id,
|
|
139
|
+
result,
|
|
140
|
+
type: 'tool_response',
|
|
141
|
+
});
|
|
142
|
+
})
|
|
143
|
+
.catch((error) => {
|
|
144
|
+
this.log(`${CROSS} ${formatTool(message.module, message.method)}`, error.message);
|
|
145
|
+
this.connection.send({
|
|
146
|
+
error: error.message,
|
|
147
|
+
id: message.id,
|
|
148
|
+
type: 'tool_response',
|
|
149
|
+
});
|
|
150
|
+
});
|
|
151
|
+
}
|
|
78
152
|
static initialize(options) {
|
|
79
153
|
if (McpClient.instance) {
|
|
80
154
|
if (options?.debug !== undefined) {
|
|
@@ -84,7 +158,16 @@ class McpClient {
|
|
|
84
158
|
}
|
|
85
159
|
const host = options?.host ?? 'localhost';
|
|
86
160
|
const port = options?.port ?? DEFAULT_PORT;
|
|
87
|
-
|
|
161
|
+
const auto = autoDetectIdentity();
|
|
162
|
+
const identity = {
|
|
163
|
+
appName: options?.appName ?? auto.appName,
|
|
164
|
+
appVersion: options?.appVersion ?? auto.appVersion,
|
|
165
|
+
bundleId: options?.bundleId ?? auto.bundleId,
|
|
166
|
+
deviceId: options?.deviceId ?? auto.deviceId,
|
|
167
|
+
label: options?.label ?? auto.label,
|
|
168
|
+
platform: options?.platform ?? auto.platform,
|
|
169
|
+
};
|
|
170
|
+
McpClient.instance = new McpClient(`ws://${host}:${port}`, identity);
|
|
88
171
|
McpClient.instance.debug = options?.debug ?? false;
|
|
89
172
|
return McpClient.instance;
|
|
90
173
|
}
|
|
@@ -174,7 +257,14 @@ class McpClient {
|
|
|
174
257
|
})
|
|
175
258
|
.join('\n '));
|
|
176
259
|
this.connection.send({
|
|
260
|
+
appName: this.identity.appName,
|
|
261
|
+
appVersion: this.identity.appVersion,
|
|
262
|
+
bundleId: this.identity.bundleId,
|
|
263
|
+
deviceId: this.identity.deviceId,
|
|
264
|
+
label: this.identity.label,
|
|
177
265
|
modules: descriptors,
|
|
266
|
+
platform: this.identity.platform,
|
|
267
|
+
protocolVersion: protocol_1.PROTOCOL_VERSION,
|
|
178
268
|
type: 'registration',
|
|
179
269
|
});
|
|
180
270
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"McpClient.js","sourceRoot":"","sources":["../../../src/client/core/McpClient.ts"],"names":[],"mappings":";;;AACA,0DAA0D;AAC1D,8DAA2D;AAC3D,
|
|
1
|
+
{"version":3,"file":"McpClient.js","sourceRoot":"","sources":["../../../src/client/core/McpClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,11 +6,18 @@ export declare class McpConnection {
|
|
|
6
6
|
private openHandler;
|
|
7
7
|
private reconnectTimer;
|
|
8
8
|
private disposed;
|
|
9
|
+
private reconnectDisabled;
|
|
9
10
|
constructor(url: string);
|
|
10
11
|
connect(): void;
|
|
11
12
|
send(message: ClientMessage): void;
|
|
12
13
|
onMessage(handler: (message: ServerMessage) => void): void;
|
|
13
14
|
onOpen(handler: () => void): void;
|
|
15
|
+
/**
|
|
16
|
+
* Stop the reconnect loop. Used after a fatal, non-recoverable close such as
|
|
17
|
+
* a protocol-version mismatch — retrying won't change the outcome and would
|
|
18
|
+
* just spam errors.
|
|
19
|
+
*/
|
|
20
|
+
stopReconnect(): void;
|
|
14
21
|
dispose(): void;
|
|
15
22
|
private scheduleReconnect;
|
|
16
23
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../../src/client/utils/connection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAI3E,qBAAa,aAAa;
|
|
1
|
+
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../../src/client/utils/connection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAI3E,qBAAa,aAAa;IAQZ,OAAO,CAAC,QAAQ,CAAC,GAAG;IAPhC,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,cAAc,CAAmD;IACzE,OAAO,CAAC,WAAW,CAA6B;IAChD,OAAO,CAAC,cAAc,CAA8C;IACpE,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,iBAAiB,CAAS;gBAEL,GAAG,EAAE,MAAM;IAExC,OAAO,IAAI,IAAI;IA+Bf,IAAI,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAMlC,SAAS,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,GAAG,IAAI;IAI1D,MAAM,CAAC,OAAO,EAAE,MAAM,IAAI,GAAG,IAAI;IAIjC;;;;OAIG;IACH,aAAa,IAAI,IAAI;IAQrB,OAAO,IAAI,IAAI;IASf,OAAO,CAAC,iBAAiB;CAM1B"}
|
|
@@ -9,6 +9,7 @@ class McpConnection {
|
|
|
9
9
|
openHandler = null;
|
|
10
10
|
reconnectTimer = null;
|
|
11
11
|
disposed = false;
|
|
12
|
+
reconnectDisabled = false;
|
|
12
13
|
constructor(url) {
|
|
13
14
|
this.url = url;
|
|
14
15
|
}
|
|
@@ -51,6 +52,18 @@ class McpConnection {
|
|
|
51
52
|
onOpen(handler) {
|
|
52
53
|
this.openHandler = handler;
|
|
53
54
|
}
|
|
55
|
+
/**
|
|
56
|
+
* Stop the reconnect loop. Used after a fatal, non-recoverable close such as
|
|
57
|
+
* a protocol-version mismatch — retrying won't change the outcome and would
|
|
58
|
+
* just spam errors.
|
|
59
|
+
*/
|
|
60
|
+
stopReconnect() {
|
|
61
|
+
this.reconnectDisabled = true;
|
|
62
|
+
if (this.reconnectTimer) {
|
|
63
|
+
clearTimeout(this.reconnectTimer);
|
|
64
|
+
this.reconnectTimer = null;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
54
67
|
dispose() {
|
|
55
68
|
this.disposed = true;
|
|
56
69
|
if (this.reconnectTimer) {
|
|
@@ -60,7 +73,7 @@ class McpConnection {
|
|
|
60
73
|
this.ws = null;
|
|
61
74
|
}
|
|
62
75
|
scheduleReconnect() {
|
|
63
|
-
if (this.disposed)
|
|
76
|
+
if (this.disposed || this.reconnectDisabled)
|
|
64
77
|
return;
|
|
65
78
|
this.reconnectTimer = setTimeout(() => {
|
|
66
79
|
this.connect();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../../../src/client/utils/connection.ts"],"names":[],"mappings":";;;AAEA,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAEhC,MAAa,aAAa;
|
|
1
|
+
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../../../src/client/utils/connection.ts"],"names":[],"mappings":";;;AAEA,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAEhC,MAAa,aAAa;IAQK;IAPrB,EAAE,GAAqB,IAAI,CAAC;IAC5B,cAAc,GAA8C,IAAI,CAAC;IACjE,WAAW,GAAwB,IAAI,CAAC;IACxC,cAAc,GAAyC,IAAI,CAAC;IAC5D,QAAQ,GAAG,KAAK,CAAC;IACjB,iBAAiB,GAAG,KAAK,CAAC;IAElC,YAA6B,GAAW;QAAX,QAAG,GAAH,GAAG,CAAQ;IAAG,CAAC;IAE5C,OAAO;QACL,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO;QAE1B,IAAI,CAAC;YACH,IAAI,CAAC,EAAE,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAElC,IAAI,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,EAAE;gBACpB,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACvB,CAAC,CAAC;YAEF,IAAI,CAAC,EAAE,CAAC,SAAS,GAAG,CAAC,KAAK,EAAE,EAAE;gBAC5B,IAAI,CAAC;oBACH,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAkB,CAAC;oBAChE,IAAI,CAAC,cAAc,EAAE,CAAC,OAAO,CAAC,CAAC;gBACjC,CAAC;gBAAC,MAAM,CAAC;oBACP,4BAA4B;gBAC9B,CAAC;YACH,CAAC,CAAC;YAEF,IAAI,CAAC,EAAE,CAAC,OAAO,GAAG,GAAG,EAAE;gBACrB,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC3B,CAAC,CAAC;YAEF,IAAI,CAAC,EAAE,CAAC,OAAO,GAAG,GAAG,EAAE;gBACrB,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC;YACnB,CAAC,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,IAAI,CAAC,OAAsB;QACzB,IAAI,IAAI,CAAC,EAAE,EAAE,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;YAC3C,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IAED,SAAS,CAAC,OAAyC;QACjD,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC;IAChC,CAAC;IAED,MAAM,CAAC,OAAmB;QACxB,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC;IAC7B,CAAC;IAED;;;;OAIG;IACH,aAAa;QACX,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAC9B,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAClC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,OAAO;QACL,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACpC,CAAC;QACD,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC;QACjB,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;IACjB,CAAC;IAEO,iBAAiB;QACvB,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,iBAAiB;YAAE,OAAO;QACpD,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC,GAAG,EAAE;YACpC,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,CAAC,EAAE,kBAAkB,CAAC,CAAC;IACzB,CAAC;CACF;AAnFD,sCAmFC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { McpClient, McpContext, McpProvider, useMcpModule, useMcpState, useMcpTool, } from './client/index';
|
|
2
2
|
export { type McpContextValue, type McpModule, type McpProviderProps, type ToolHandler, } from './client/index';
|
|
3
|
-
export { alertModule, fiberTreeModule, consoleModule, deviceModule, errorsModule, i18nextModule, navigationModule, networkModule, reactQueryModule,
|
|
3
|
+
export { alertModule, fiberTreeModule, consoleModule, deviceModule, errorsModule, i18nextModule, navigationModule, networkModule, reactQueryModule, storageModule, } from './modules/index';
|
|
4
4
|
export { type ClientMessage, type ModuleDescriptor, type ModuleToolDescriptor, type RegistrationMessage, type ServerMessage, type StateRemoveMessage, type StateUpdateMessage, type ToolRegisterMessage, type ToolRequest, type ToolResponse, type ToolUnregisterMessage, } from './shared/protocol';
|
|
5
5
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,SAAS,EACT,UAAU,EACV,WAAW,EACX,YAAY,EACZ,WAAW,EACX,UAAU,GACX,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,SAAS,EACd,KAAK,gBAAgB,EACrB,KAAK,WAAW,GACjB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,WAAW,EACX,eAAe,EACf,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,aAAa,EACb,gBAAgB,EAChB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,SAAS,EACT,UAAU,EACV,WAAW,EACX,YAAY,EACZ,WAAW,EACX,UAAU,GACX,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,SAAS,EACd,KAAK,gBAAgB,EACrB,KAAK,WAAW,GACjB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,WAAW,EACX,eAAe,EACf,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,aAAa,EACb,gBAAgB,EAChB,aAAa,GACd,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,qBAAqB,GAC3B,MAAM,mBAAmB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.storageModule = exports.
|
|
3
|
+
exports.storageModule = exports.reactQueryModule = exports.networkModule = exports.navigationModule = exports.i18nextModule = exports.errorsModule = exports.deviceModule = exports.consoleModule = exports.fiberTreeModule = exports.alertModule = exports.useMcpTool = exports.useMcpState = exports.useMcpModule = exports.McpProvider = exports.McpContext = exports.McpClient = void 0;
|
|
4
4
|
// Client (safe for React Native)
|
|
5
5
|
var index_1 = require("./client/index");
|
|
6
6
|
Object.defineProperty(exports, "McpClient", { enumerable: true, get: function () { return index_1.McpClient; } });
|
|
@@ -20,6 +20,5 @@ Object.defineProperty(exports, "i18nextModule", { enumerable: true, get: functio
|
|
|
20
20
|
Object.defineProperty(exports, "navigationModule", { enumerable: true, get: function () { return index_2.navigationModule; } });
|
|
21
21
|
Object.defineProperty(exports, "networkModule", { enumerable: true, get: function () { return index_2.networkModule; } });
|
|
22
22
|
Object.defineProperty(exports, "reactQueryModule", { enumerable: true, get: function () { return index_2.reactQueryModule; } });
|
|
23
|
-
Object.defineProperty(exports, "screenshotModule", { enumerable: true, get: function () { return index_2.screenshotModule; } });
|
|
24
23
|
Object.defineProperty(exports, "storageModule", { enumerable: true, get: function () { return index_2.storageModule; } });
|
|
25
24
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,iCAAiC;AACjC,wCAOwB;AANtB,kGAAA,SAAS,OAAA;AACT,mGAAA,UAAU,OAAA;AACV,oGAAA,WAAW,OAAA;AACX,qGAAA,YAAY,OAAA;AACZ,oGAAA,WAAW,OAAA;AACX,mGAAA,UAAU,OAAA;AASZ,kCAAkC;AAClC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,iCAAiC;AACjC,wCAOwB;AANtB,kGAAA,SAAS,OAAA;AACT,mGAAA,UAAU,OAAA;AACV,oGAAA,WAAW,OAAA;AACX,qGAAA,YAAY,OAAA;AACZ,oGAAA,WAAW,OAAA;AACX,mGAAA,UAAU,OAAA;AASZ,kCAAkC;AAClC,yCAWyB;AAVvB,oGAAA,WAAW,OAAA;AACX,wGAAA,eAAe,OAAA;AACf,sGAAA,aAAa,OAAA;AACb,qGAAA,YAAY,OAAA;AACZ,qGAAA,YAAY,OAAA;AACZ,sGAAA,aAAa,OAAA;AACb,yGAAA,gBAAgB,OAAA;AAChB,sGAAA,aAAa,OAAA;AACb,yGAAA,gBAAgB,OAAA;AAChB,sGAAA,aAAa,OAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"device.d.ts","sourceRoot":"","sources":["../../../src/modules/device/device.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAEvD,eAAO,MAAM,YAAY,QAAO,
|
|
1
|
+
{"version":3,"file":"device.d.ts","sourceRoot":"","sources":["../../../src/modules/device/device.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAEvD,eAAO,MAAM,YAAY,QAAO,SA2M/B,CAAC"}
|
|
@@ -86,12 +86,24 @@ const deviceModule = () => {
|
|
|
86
86
|
},
|
|
87
87
|
},
|
|
88
88
|
get_dimensions: {
|
|
89
|
-
description: 'Get screen and window dimensions (
|
|
89
|
+
description: 'Get screen and window dimensions in BOTH logical DP and physical pixels. `screen`/`window` hold the raw React Native values (DP, with scale/fontScale). `screenPixels`/`windowPixels` are width/height multiplied by `pixelRatio` — these match what host__tap / adb shell input tap consume.',
|
|
90
90
|
handler: () => {
|
|
91
|
-
const { Dimensions } = getRN();
|
|
91
|
+
const { Dimensions, PixelRatio } = getRN();
|
|
92
|
+
const ratio = PixelRatio.get();
|
|
93
|
+
const screen = Dimensions.get('screen');
|
|
94
|
+
const window = Dimensions.get('window');
|
|
92
95
|
return {
|
|
93
|
-
|
|
94
|
-
|
|
96
|
+
pixelRatio: ratio,
|
|
97
|
+
screen,
|
|
98
|
+
screenPixels: {
|
|
99
|
+
height: Math.round(screen.height * ratio),
|
|
100
|
+
width: Math.round(screen.width * ratio),
|
|
101
|
+
},
|
|
102
|
+
window,
|
|
103
|
+
windowPixels: {
|
|
104
|
+
height: Math.round(window.height * ratio),
|
|
105
|
+
width: Math.round(window.width * ratio),
|
|
106
|
+
},
|
|
95
107
|
};
|
|
96
108
|
},
|
|
97
109
|
},
|