react-native-mcp-kit 3.0.0 → 4.0.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 +22 -10
- package/dist/bin/ios-hid +0 -0
- package/dist/client/contexts/McpContext/McpProvider.d.ts.map +1 -1
- package/dist/client/contexts/McpContext/McpProvider.js +5 -5
- package/dist/client/contexts/McpContext/McpProvider.js.map +1 -1
- package/dist/client/core/McpClient.d.ts.map +1 -1
- package/dist/client/core/McpClient.js +26 -32
- package/dist/client/core/McpClient.js.map +1 -1
- package/dist/modules/alert/alert.d.ts.map +1 -1
- package/dist/modules/alert/alert.js +2 -5
- package/dist/modules/alert/alert.js.map +1 -1
- package/dist/modules/console/console.d.ts.map +1 -1
- package/dist/modules/console/console.js +32 -107
- package/dist/modules/console/console.js.map +1 -1
- package/dist/modules/console/types.d.ts +1 -0
- package/dist/modules/console/types.d.ts.map +1 -1
- package/dist/modules/device/device.d.ts.map +1 -1
- package/dist/modules/device/device.js +224 -133
- package/dist/modules/device/device.js.map +1 -1
- package/dist/modules/errors/errors.d.ts.map +1 -1
- package/dist/modules/errors/errors.js +19 -36
- package/dist/modules/errors/errors.js.map +1 -1
- package/dist/modules/fiberTree/children.d.ts +49 -0
- package/dist/modules/fiberTree/children.d.ts.map +1 -0
- package/dist/modules/fiberTree/children.js +182 -0
- package/dist/modules/fiberTree/children.js.map +1 -0
- package/dist/modules/fiberTree/constants.d.ts +13 -0
- package/dist/modules/fiberTree/constants.d.ts.map +1 -0
- package/dist/modules/fiberTree/constants.js +24 -0
- package/dist/modules/fiberTree/constants.js.map +1 -0
- package/dist/modules/fiberTree/fiberTree.d.ts +3 -6
- package/dist/modules/fiberTree/fiberTree.d.ts.map +1 -1
- package/dist/modules/fiberTree/fiberTree.js +219 -1080
- package/dist/modules/fiberTree/fiberTree.js.map +1 -1
- package/dist/modules/fiberTree/finder.d.ts +60 -0
- package/dist/modules/fiberTree/finder.d.ts.map +1 -0
- package/dist/modules/fiberTree/finder.js +107 -0
- package/dist/modules/fiberTree/finder.js.map +1 -0
- package/dist/modules/fiberTree/hooks.d.ts +103 -0
- package/dist/modules/fiberTree/hooks.d.ts.map +1 -0
- package/dist/modules/fiberTree/hooks.js +532 -0
- package/dist/modules/fiberTree/hooks.js.map +1 -0
- package/dist/modules/fiberTree/projection.d.ts +49 -0
- package/dist/modules/fiberTree/projection.d.ts.map +1 -0
- package/dist/modules/fiberTree/projection.js +82 -0
- package/dist/modules/fiberTree/projection.js.map +1 -0
- package/dist/modules/fiberTree/query.d.ts +56 -0
- package/dist/modules/fiberTree/query.d.ts.map +1 -0
- package/dist/modules/fiberTree/query.js +151 -0
- package/dist/modules/fiberTree/query.js.map +1 -0
- package/dist/modules/fiberTree/redact.d.ts +24 -0
- package/dist/modules/fiberTree/redact.d.ts.map +1 -0
- package/dist/modules/fiberTree/redact.js +51 -0
- package/dist/modules/fiberTree/redact.js.map +1 -0
- package/dist/modules/fiberTree/types.d.ts +7 -0
- package/dist/modules/fiberTree/types.d.ts.map +1 -1
- package/dist/modules/fiberTree/utils.d.ts +8 -2
- package/dist/modules/fiberTree/utils.d.ts.map +1 -1
- package/dist/modules/fiberTree/utils.js +79 -78
- package/dist/modules/fiberTree/utils.js.map +1 -1
- package/dist/modules/fiberTree/viewport.d.ts +28 -0
- package/dist/modules/fiberTree/viewport.d.ts.map +1 -0
- package/dist/modules/fiberTree/viewport.js +50 -0
- package/dist/modules/fiberTree/viewport.js.map +1 -0
- package/dist/modules/fiberTree/waitFor.d.ts +52 -0
- package/dist/modules/fiberTree/waitFor.d.ts.map +1 -0
- package/dist/modules/fiberTree/waitFor.js +98 -0
- package/dist/modules/fiberTree/waitFor.js.map +1 -0
- package/dist/modules/logBox/logBox.d.ts.map +1 -1
- package/dist/modules/logBox/logBox.js +59 -66
- package/dist/modules/logBox/logBox.js.map +1 -1
- package/dist/modules/navigation/navigation.d.ts.map +1 -1
- package/dist/modules/navigation/navigation.js +115 -114
- package/dist/modules/navigation/navigation.js.map +1 -1
- package/dist/modules/network/network.d.ts.map +1 -1
- package/dist/modules/network/network.js +78 -197
- package/dist/modules/network/network.js.map +1 -1
- package/dist/modules/network/types.d.ts +23 -27
- package/dist/modules/network/types.d.ts.map +1 -1
- package/dist/modules/reactQuery/reactQuery.d.ts.map +1 -1
- package/dist/modules/reactQuery/reactQuery.js +46 -52
- package/dist/modules/reactQuery/reactQuery.js.map +1 -1
- package/dist/modules/storage/storage.d.ts.map +1 -1
- package/dist/modules/storage/storage.js +20 -3
- package/dist/modules/storage/storage.js.map +1 -1
- package/dist/server/host/tools/input.js +2 -2
- package/dist/server/host/tools/input.js.map +1 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +33 -0
- package/dist/server/index.js.map +1 -1
- package/dist/server/mcpServer.d.ts.map +1 -1
- package/dist/server/mcpServer.js +43 -3
- package/dist/server/mcpServer.js.map +1 -1
- package/dist/server/metro/eventCapture.d.ts +0 -2
- package/dist/server/metro/eventCapture.d.ts.map +1 -1
- package/dist/server/metro/eventCapture.js +1 -2
- package/dist/server/metro/eventCapture.js.map +1 -1
- package/dist/server/metro/tools/events.d.ts.map +1 -1
- package/dist/server/metro/tools/events.js +11 -11
- package/dist/server/metro/tools/events.js.map +1 -1
- package/dist/shared/projection/projectValue.d.ts +90 -0
- package/dist/shared/projection/projectValue.d.ts.map +1 -0
- package/dist/shared/projection/projectValue.js +322 -0
- package/dist/shared/projection/projectValue.js.map +1 -0
- package/dist/shared/projection/redact.d.ts +31 -0
- package/dist/shared/projection/redact.d.ts.map +1 -0
- package/dist/shared/projection/redact.js +78 -0
- package/dist/shared/projection/redact.js.map +1 -0
- package/dist/shared/projection/resolvePath.d.ts +45 -0
- package/dist/shared/projection/resolvePath.d.ts.map +1 -0
- package/dist/shared/projection/resolvePath.js +211 -0
- package/dist/shared/projection/resolvePath.js.map +1 -0
- package/dist/shared/rn/core.d.ts +48 -0
- package/dist/shared/rn/core.d.ts.map +1 -0
- package/dist/shared/rn/core.js +100 -0
- package/dist/shared/rn/core.js.map +1 -0
- package/dist/shared/rn/deviceInfo.d.ts +40 -0
- package/dist/shared/rn/deviceInfo.d.ts.map +1 -0
- package/dist/shared/rn/deviceInfo.js +78 -0
- package/dist/shared/rn/deviceInfo.js.map +1 -0
- package/package.json +2 -2
- package/dist/client/hooks/useMcpState.d.ts +0 -3
- package/dist/client/hooks/useMcpState.d.ts.map +0 -1
- package/dist/client/hooks/useMcpState.js +0 -20
- package/dist/client/hooks/useMcpState.js.map +0 -1
- package/dist/server/canonicalize.d.ts +0 -8
- package/dist/server/canonicalize.d.ts.map +0 -1
- package/dist/server/canonicalize.js +0 -23
- package/dist/server/canonicalize.js.map +0 -1
- package/dist/server/host/modules/screenshot.d.ts +0 -4
- package/dist/server/host/modules/screenshot.d.ts.map +0 -1
- package/dist/server/host/modules/screenshot.js +0 -615
- package/dist/server/host/modules/screenshot.js.map +0 -1
- package/dist/server/host/tools/connectionStatus.d.ts +0 -9
- package/dist/server/host/tools/connectionStatus.d.ts.map +0 -1
- package/dist/server/host/tools/connectionStatus.js +0 -39
- package/dist/server/host/tools/connectionStatus.js.map +0 -1
- package/dist/server/host/tools/symbolicate.d.ts +0 -3
- package/dist/server/host/tools/symbolicate.d.ts.map +0 -1
- package/dist/server/host/tools/symbolicate.js +0 -209
- package/dist/server/host/tools/symbolicate.js.map +0 -1
- package/dist/server/host/wda.d.ts +0 -15
- package/dist/server/host/wda.d.ts.map +0 -1
- package/dist/server/host/wda.js +0 -100
- package/dist/server/host/wda.js.map +0 -1
- package/dist/server/inputSchemaToZod.d.ts +0 -19
- package/dist/server/inputSchemaToZod.d.ts.map +0 -1
- package/dist/server/inputSchemaToZod.js +0 -89
- package/dist/server/inputSchemaToZod.js.map +0 -1
- package/dist/server/metro/tools/openUrl.d.ts +0 -3
- package/dist/server/metro/tools/openUrl.d.ts.map +0 -1
- package/dist/server/metro/tools/openUrl.js +0 -71
- package/dist/server/metro/tools/openUrl.js.map +0 -1
- package/dist/shared/slice.d.ts +0 -16
- package/dist/shared/slice.d.ts.map +0 -1
- package/dist/shared/slice.js +0 -29
- package/dist/shared/slice.js.map +0 -1
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* JS-style path parser/resolver. Path examples:
|
|
4
|
+
* foo.bar — object key access
|
|
5
|
+
* foo[3] — array index
|
|
6
|
+
* foo[1:5] — array/object slice (Python-style)
|
|
7
|
+
* foo[3:] — slice from 3 to end
|
|
8
|
+
* foo[:5] — slice from start to 5
|
|
9
|
+
* foo["key.with.dots"] — bracket-quoted object key
|
|
10
|
+
* foo['k'] — single-quoted also accepted
|
|
11
|
+
*
|
|
12
|
+
* Used by `projectValue` to navigate inside a response before applying
|
|
13
|
+
* shape rendering. After a slice, chained access has special semantics:
|
|
14
|
+
* - array slice + `.key` → map (apply to every element)
|
|
15
|
+
* - array slice + `[N]` → pick Nth element of the window
|
|
16
|
+
* - object slice + `.key` → take key from sub-object (no map)
|
|
17
|
+
* - object slice + `[N]` → Nth key in window (insertion order)
|
|
18
|
+
*/
|
|
19
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
+
exports.resolvePath = exports.parsePath = void 0;
|
|
21
|
+
const parsePath = (path) => {
|
|
22
|
+
const out = [];
|
|
23
|
+
let i = 0;
|
|
24
|
+
const n = path.length;
|
|
25
|
+
while (i < n) {
|
|
26
|
+
const ch = path[i];
|
|
27
|
+
if (ch === '.') {
|
|
28
|
+
i += 1;
|
|
29
|
+
continue;
|
|
30
|
+
}
|
|
31
|
+
if (ch === '[') {
|
|
32
|
+
// bracket form — could be index, slice, or quoted key
|
|
33
|
+
const closeIdx = findMatchingBracket(path, i);
|
|
34
|
+
if (closeIdx === -1)
|
|
35
|
+
throw new Error(`Unbalanced bracket at position ${i}`);
|
|
36
|
+
const inner = path.slice(i + 1, closeIdx);
|
|
37
|
+
out.push(parseBracketContents(inner));
|
|
38
|
+
i = closeIdx + 1;
|
|
39
|
+
continue;
|
|
40
|
+
}
|
|
41
|
+
// bare identifier — read until next `.` or `[`
|
|
42
|
+
let j = i;
|
|
43
|
+
while (j < n && path[j] !== '.' && path[j] !== '[')
|
|
44
|
+
j += 1;
|
|
45
|
+
const name = path.slice(i, j);
|
|
46
|
+
if (name === '')
|
|
47
|
+
throw new Error(`Empty key at position ${i}`);
|
|
48
|
+
out.push({ kind: 'key', name });
|
|
49
|
+
i = j;
|
|
50
|
+
}
|
|
51
|
+
return out;
|
|
52
|
+
};
|
|
53
|
+
exports.parsePath = parsePath;
|
|
54
|
+
const findMatchingBracket = (path, openIdx) => {
|
|
55
|
+
let inSingle = false;
|
|
56
|
+
let inDouble = false;
|
|
57
|
+
for (let i = openIdx + 1; i < path.length; i++) {
|
|
58
|
+
const c = path[i];
|
|
59
|
+
if (c === '\\' && i + 1 < path.length) {
|
|
60
|
+
i += 1;
|
|
61
|
+
continue;
|
|
62
|
+
}
|
|
63
|
+
if (!inDouble && c === "'")
|
|
64
|
+
inSingle = !inSingle;
|
|
65
|
+
else if (!inSingle && c === '"')
|
|
66
|
+
inDouble = !inDouble;
|
|
67
|
+
else if (!inSingle && !inDouble && c === ']')
|
|
68
|
+
return i;
|
|
69
|
+
}
|
|
70
|
+
return -1;
|
|
71
|
+
};
|
|
72
|
+
const parseBracketContents = (inner) => {
|
|
73
|
+
const trimmed = inner.trim();
|
|
74
|
+
// quoted key
|
|
75
|
+
if ((trimmed.startsWith('"') && trimmed.endsWith('"')) ||
|
|
76
|
+
(trimmed.startsWith("'") && trimmed.endsWith("'"))) {
|
|
77
|
+
const raw = trimmed.slice(1, -1);
|
|
78
|
+
return { kind: 'key', name: unescape(raw) };
|
|
79
|
+
}
|
|
80
|
+
// slice — contains ':'
|
|
81
|
+
if (trimmed.includes(':')) {
|
|
82
|
+
const parts = trimmed.split(':');
|
|
83
|
+
const startStr = parts[0] ?? '';
|
|
84
|
+
const endStr = parts[1] ?? '';
|
|
85
|
+
const start = startStr.trim() === '' ? undefined : Number(startStr);
|
|
86
|
+
const end = endStr.trim() === '' ? undefined : Number(endStr);
|
|
87
|
+
if ((start !== undefined && Number.isNaN(start)) || (end !== undefined && Number.isNaN(end))) {
|
|
88
|
+
throw new Error(`Invalid slice "${inner}"`);
|
|
89
|
+
}
|
|
90
|
+
return { end, kind: 'slice', start };
|
|
91
|
+
}
|
|
92
|
+
// numeric index
|
|
93
|
+
const idx = Number(trimmed);
|
|
94
|
+
if (Number.isInteger(idx)) {
|
|
95
|
+
return { index: idx, kind: 'index' };
|
|
96
|
+
}
|
|
97
|
+
// bare identifier inside brackets — treat as key
|
|
98
|
+
return { kind: 'key', name: trimmed };
|
|
99
|
+
};
|
|
100
|
+
const unescape = (s) => {
|
|
101
|
+
return s.replace(/\\(.)/g, '$1');
|
|
102
|
+
};
|
|
103
|
+
/**
|
|
104
|
+
* Walk a path through a value tree. Slice + chained access has the semantics
|
|
105
|
+
* documented in this file's header. Returns either the resolved value or a
|
|
106
|
+
* detailed failure pointing at where the path broke.
|
|
107
|
+
*/
|
|
108
|
+
const resolvePath = (root, path) => {
|
|
109
|
+
let segments;
|
|
110
|
+
try {
|
|
111
|
+
segments = (0, exports.parsePath)(path);
|
|
112
|
+
}
|
|
113
|
+
catch (e) {
|
|
114
|
+
return {
|
|
115
|
+
actual: root,
|
|
116
|
+
error: `Invalid path: ${e.message}`,
|
|
117
|
+
ok: false,
|
|
118
|
+
validUpTo: '',
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
let current = root;
|
|
122
|
+
let validPath = '';
|
|
123
|
+
for (let i = 0; i < segments.length; i++) {
|
|
124
|
+
const seg = segments[i];
|
|
125
|
+
const stepResult = step(current, seg);
|
|
126
|
+
if (!stepResult.ok) {
|
|
127
|
+
return {
|
|
128
|
+
actual: current,
|
|
129
|
+
error: stepResult.error,
|
|
130
|
+
ok: false,
|
|
131
|
+
validUpTo: validPath,
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
current = stepResult.value;
|
|
135
|
+
validPath =
|
|
136
|
+
validPath === ''
|
|
137
|
+
? segmentToString(seg)
|
|
138
|
+
: `${validPath}${segmentSeparator(seg)}${segmentToString(seg)}`;
|
|
139
|
+
}
|
|
140
|
+
return { ok: true, value: current };
|
|
141
|
+
};
|
|
142
|
+
exports.resolvePath = resolvePath;
|
|
143
|
+
const segmentSeparator = (seg) => {
|
|
144
|
+
return seg.kind === 'key' ? '.' : '';
|
|
145
|
+
};
|
|
146
|
+
const segmentToString = (seg) => {
|
|
147
|
+
switch (seg.kind) {
|
|
148
|
+
case 'key':
|
|
149
|
+
return /^[a-zA-Z_$][a-zA-Z_$0-9]*$/.test(seg.name) ? seg.name : `["${seg.name}"]`;
|
|
150
|
+
case 'index':
|
|
151
|
+
return `[${seg.index}]`;
|
|
152
|
+
case 'slice':
|
|
153
|
+
return `[${seg.start ?? ''}:${seg.end ?? ''}]`;
|
|
154
|
+
}
|
|
155
|
+
};
|
|
156
|
+
const step = (current, seg) => {
|
|
157
|
+
if (seg.kind === 'key')
|
|
158
|
+
return stepKey(current, seg.name);
|
|
159
|
+
if (seg.kind === 'index')
|
|
160
|
+
return stepIndex(current, seg.index);
|
|
161
|
+
return stepSlice(current, seg);
|
|
162
|
+
};
|
|
163
|
+
const stepKey = (current, name) => {
|
|
164
|
+
if (Array.isArray(current)) {
|
|
165
|
+
// map: apply .key to each element. Each element must be an object.
|
|
166
|
+
const mapped = current.map((el) => {
|
|
167
|
+
return el && typeof el === 'object' ? el[name] : undefined;
|
|
168
|
+
});
|
|
169
|
+
return { ok: true, value: mapped };
|
|
170
|
+
}
|
|
171
|
+
if (current && typeof current === 'object') {
|
|
172
|
+
const rec = current;
|
|
173
|
+
if (!(name in rec)) {
|
|
174
|
+
return { error: `Key "${name}" not found`, ok: false };
|
|
175
|
+
}
|
|
176
|
+
return { ok: true, value: rec[name] };
|
|
177
|
+
}
|
|
178
|
+
return { error: `Cannot access key "${name}" on non-container`, ok: false };
|
|
179
|
+
};
|
|
180
|
+
const stepIndex = (current, index) => {
|
|
181
|
+
if (Array.isArray(current)) {
|
|
182
|
+
const real = index < 0 ? current.length + index : index;
|
|
183
|
+
if (real < 0 || real >= current.length) {
|
|
184
|
+
return { error: `Array index ${index} out of bounds (length ${current.length})`, ok: false };
|
|
185
|
+
}
|
|
186
|
+
return { ok: true, value: current[real] };
|
|
187
|
+
}
|
|
188
|
+
if (current && typeof current === 'object') {
|
|
189
|
+
// object indexing — Nth key in insertion order
|
|
190
|
+
const keys = Object.keys(current);
|
|
191
|
+
const real = index < 0 ? keys.length + index : index;
|
|
192
|
+
if (real < 0 || real >= keys.length) {
|
|
193
|
+
return { error: `Object index ${index} out of bounds (${keys.length} keys)`, ok: false };
|
|
194
|
+
}
|
|
195
|
+
return { ok: true, value: current[keys[real]] };
|
|
196
|
+
}
|
|
197
|
+
return { error: `Cannot index non-container with [${index}]`, ok: false };
|
|
198
|
+
};
|
|
199
|
+
const stepSlice = (current, seg) => {
|
|
200
|
+
const { end, start } = seg;
|
|
201
|
+
if (Array.isArray(current)) {
|
|
202
|
+
return { ok: true, value: current.slice(start, end) };
|
|
203
|
+
}
|
|
204
|
+
if (current && typeof current === 'object') {
|
|
205
|
+
const entries = Object.entries(current);
|
|
206
|
+
const sliced = entries.slice(start, end);
|
|
207
|
+
return { ok: true, value: Object.fromEntries(sliced) };
|
|
208
|
+
}
|
|
209
|
+
return { error: 'Cannot slice non-container', ok: false };
|
|
210
|
+
};
|
|
211
|
+
//# sourceMappingURL=resolvePath.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolvePath.js","sourceRoot":"","sources":["../../../src/shared/projection/resolvePath.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `react-native` is a peer dependency of this library — when running inside
|
|
3
|
+
* an RN app it's always present, but tests / docs / SDK-level code may load
|
|
4
|
+
* modules without RN around. Centralise the `require('react-native')` here
|
|
5
|
+
* so consumers don't each grow their own try / catch.
|
|
6
|
+
*
|
|
7
|
+
* Two entry points:
|
|
8
|
+
* - `getRN()` — bare require. Use from modules that are only ever invoked
|
|
9
|
+
* in-app (alert, device, logBox, fiberTree). Throws if the package is
|
|
10
|
+
* missing.
|
|
11
|
+
* - `loadRN()` — try-wrapped + memoised. Returns `null` when RN can't be
|
|
12
|
+
* resolved (e.g. handshake code running before bundle / in server
|
|
13
|
+
* tooling). Use from code paths that need to tolerate the absence.
|
|
14
|
+
*
|
|
15
|
+
* Plus `loadRNInternal(path)` for private RN modules that may move between
|
|
16
|
+
* RN versions (LogBox internals, getDevServer, ...). Same try-wrap + cache
|
|
17
|
+
* shape so the call-site doesn't need its own boilerplate.
|
|
18
|
+
*/
|
|
19
|
+
type AnyRN = any;
|
|
20
|
+
/**
|
|
21
|
+
* Bare `require('react-native')`. Throws if the package isn't installed —
|
|
22
|
+
* suitable for module factories that already assume an RN environment.
|
|
23
|
+
*/
|
|
24
|
+
export declare const getRN: () => AnyRN;
|
|
25
|
+
/**
|
|
26
|
+
* Try-wrapped `require('react-native')` with cached negative result. Returns
|
|
27
|
+
* `null` when RN can't be resolved. Use this in handshake / SDK-level code
|
|
28
|
+
* that wants to keep working in non-RN contexts.
|
|
29
|
+
*/
|
|
30
|
+
export declare const loadRN: () => AnyRN | null;
|
|
31
|
+
/**
|
|
32
|
+
* Known RN private sub-module paths. Add a new entry to RN_INTERNAL_LOADERS
|
|
33
|
+
* alongside any new path — keeps Metro's static analyser happy.
|
|
34
|
+
*/
|
|
35
|
+
export type RNInternalPath = 'Libraries/Core/Devtools/getDevServer' | 'Libraries/LogBox/Data/LogBoxData';
|
|
36
|
+
/**
|
|
37
|
+
* Try-load a private RN sub-module by path. RN doesn't promise these paths
|
|
38
|
+
* are stable across versions, so consumers must tolerate `null`. Result is
|
|
39
|
+
* memoised per-path so repeated calls don't re-require.
|
|
40
|
+
*
|
|
41
|
+
* Add new paths to `RN_INTERNAL_LOADERS` above — Metro requires literal
|
|
42
|
+
* `require('react-native/...')` strings to bundle the dependency.
|
|
43
|
+
*/
|
|
44
|
+
export declare const loadRNInternal: (subPath: RNInternalPath) => unknown;
|
|
45
|
+
/** Test-only: drop memoised modules so the next call re-requires. */
|
|
46
|
+
export declare const __resetRNCache: () => void;
|
|
47
|
+
export {};
|
|
48
|
+
//# sourceMappingURL=core.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../src/shared/rn/core.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,KAAK,KAAK,GAAG,GAAG,CAAC;AAKjB;;;GAGG;AACH,eAAO,MAAM,KAAK,QAAO,KAGxB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,MAAM,QAAO,KAAK,GAAG,IAUjC,CAAC;AAkBF;;;GAGG;AACH,MAAM,MAAM,cAAc,GACtB,sCAAsC,GACtC,kCAAkC,CAAC;AAEvC;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,YAAa,cAAc,KAAG,OAgBxD,CAAC;AAEF,qEAAqE;AACrE,eAAO,MAAM,cAAc,QAAO,IAGjC,CAAC"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* `react-native` is a peer dependency of this library — when running inside
|
|
4
|
+
* an RN app it's always present, but tests / docs / SDK-level code may load
|
|
5
|
+
* modules without RN around. Centralise the `require('react-native')` here
|
|
6
|
+
* so consumers don't each grow their own try / catch.
|
|
7
|
+
*
|
|
8
|
+
* Two entry points:
|
|
9
|
+
* - `getRN()` — bare require. Use from modules that are only ever invoked
|
|
10
|
+
* in-app (alert, device, logBox, fiberTree). Throws if the package is
|
|
11
|
+
* missing.
|
|
12
|
+
* - `loadRN()` — try-wrapped + memoised. Returns `null` when RN can't be
|
|
13
|
+
* resolved (e.g. handshake code running before bundle / in server
|
|
14
|
+
* tooling). Use from code paths that need to tolerate the absence.
|
|
15
|
+
*
|
|
16
|
+
* Plus `loadRNInternal(path)` for private RN modules that may move between
|
|
17
|
+
* RN versions (LogBox internals, getDevServer, ...). Same try-wrap + cache
|
|
18
|
+
* shape so the call-site doesn't need its own boilerplate.
|
|
19
|
+
*/
|
|
20
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
21
|
+
exports.__resetRNCache = exports.loadRNInternal = exports.loadRN = exports.getRN = void 0;
|
|
22
|
+
let cachedRN;
|
|
23
|
+
const cachedInternals = new Map();
|
|
24
|
+
/**
|
|
25
|
+
* Bare `require('react-native')`. Throws if the package isn't installed —
|
|
26
|
+
* suitable for module factories that already assume an RN environment.
|
|
27
|
+
*/
|
|
28
|
+
const getRN = () => {
|
|
29
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires
|
|
30
|
+
return require('react-native');
|
|
31
|
+
};
|
|
32
|
+
exports.getRN = getRN;
|
|
33
|
+
/**
|
|
34
|
+
* Try-wrapped `require('react-native')` with cached negative result. Returns
|
|
35
|
+
* `null` when RN can't be resolved. Use this in handshake / SDK-level code
|
|
36
|
+
* that wants to keep working in non-RN contexts.
|
|
37
|
+
*/
|
|
38
|
+
const loadRN = () => {
|
|
39
|
+
if (cachedRN !== undefined)
|
|
40
|
+
return cachedRN;
|
|
41
|
+
try {
|
|
42
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires
|
|
43
|
+
const rn = require('react-native');
|
|
44
|
+
cachedRN = rn.default ?? rn;
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
cachedRN = null;
|
|
48
|
+
}
|
|
49
|
+
return cachedRN;
|
|
50
|
+
};
|
|
51
|
+
exports.loadRN = loadRN;
|
|
52
|
+
// Metro can't statically resolve `require(`react-native/${subPath}`)` —
|
|
53
|
+
// dynamic template-literal requires are silently dropped at bundle time and
|
|
54
|
+
// throw `Invalid call at ...`. RN private API paths must therefore be wired
|
|
55
|
+
// up as literal `require(...)` calls. Each entry is a thunk so the actual
|
|
56
|
+
// require fires on demand (and lazy-fails when the path moved in a newer RN).
|
|
57
|
+
/* eslint-disable @typescript-eslint/no-require-imports */
|
|
58
|
+
const RN_INTERNAL_LOADERS = {
|
|
59
|
+
'Libraries/Core/Devtools/getDevServer': () => {
|
|
60
|
+
return require('react-native/Libraries/Core/Devtools/getDevServer');
|
|
61
|
+
},
|
|
62
|
+
'Libraries/LogBox/Data/LogBoxData': () => {
|
|
63
|
+
return require('react-native/Libraries/LogBox/Data/LogBoxData');
|
|
64
|
+
},
|
|
65
|
+
};
|
|
66
|
+
/**
|
|
67
|
+
* Try-load a private RN sub-module by path. RN doesn't promise these paths
|
|
68
|
+
* are stable across versions, so consumers must tolerate `null`. Result is
|
|
69
|
+
* memoised per-path so repeated calls don't re-require.
|
|
70
|
+
*
|
|
71
|
+
* Add new paths to `RN_INTERNAL_LOADERS` above — Metro requires literal
|
|
72
|
+
* `require('react-native/...')` strings to bundle the dependency.
|
|
73
|
+
*/
|
|
74
|
+
const loadRNInternal = (subPath) => {
|
|
75
|
+
if (cachedInternals.has(subPath))
|
|
76
|
+
return cachedInternals.get(subPath) ?? null;
|
|
77
|
+
const loader = RN_INTERNAL_LOADERS[subPath];
|
|
78
|
+
if (!loader) {
|
|
79
|
+
cachedInternals.set(subPath, null);
|
|
80
|
+
return null;
|
|
81
|
+
}
|
|
82
|
+
try {
|
|
83
|
+
const mod = loader();
|
|
84
|
+
const unwrapped = mod?.default ?? mod ?? null;
|
|
85
|
+
cachedInternals.set(subPath, unwrapped);
|
|
86
|
+
return unwrapped;
|
|
87
|
+
}
|
|
88
|
+
catch {
|
|
89
|
+
cachedInternals.set(subPath, null);
|
|
90
|
+
return null;
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
exports.loadRNInternal = loadRNInternal;
|
|
94
|
+
/** Test-only: drop memoised modules so the next call re-requires. */
|
|
95
|
+
const __resetRNCache = () => {
|
|
96
|
+
cachedRN = undefined;
|
|
97
|
+
cachedInternals.clear();
|
|
98
|
+
};
|
|
99
|
+
exports.__resetRNCache = __resetRNCache;
|
|
100
|
+
//# sourceMappingURL=core.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../../src/shared/rn/core.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;GAiBG;;;AAKH,IAAI,QAAkC,CAAC;AACvC,MAAM,eAAe,GAAG,IAAI,GAAG,EAAmB,CAAC;AAEnD;;;GAGG;AACI,MAAM,KAAK,GAAG,GAAU,EAAE;IAC/B,qGAAqG;IACrG,OAAO,OAAO,CAAC,cAAc,CAAC,CAAC;AACjC,CAAC,CAAC;AAHW,QAAA,KAAK,SAGhB;AAEF;;;;GAIG;AACI,MAAM,MAAM,GAAG,GAAiB,EAAE;IACvC,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAC;IAC5C,IAAI,CAAC;QACH,qGAAqG;QACrG,MAAM,EAAE,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;QACnC,QAAQ,GAAG,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,QAAQ,GAAG,IAAI,CAAC;IAClB,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAVW,QAAA,MAAM,UAUjB;AAEF,wEAAwE;AACxE,4EAA4E;AAC5E,4EAA4E;AAC5E,0EAA0E;AAC1E,8EAA8E;AAC9E,0DAA0D;AAC1D,MAAM,mBAAmB,GAA0C;IACjE,sCAAsC,EAAE,GAAG,EAAE;QAC3C,OAAO,OAAO,CAAC,mDAAmD,CAAC,CAAC;IACtE,CAAC;IACD,kCAAkC,EAAE,GAAG,EAAE;QACvC,OAAO,OAAO,CAAC,+CAA+C,CAAC,CAAC;IAClE,CAAC;CACF,CAAC;AAWF;;;;;;;GAOG;AACI,MAAM,cAAc,GAAG,CAAC,OAAuB,EAAW,EAAE;IACjE,IAAI,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC;QAAE,OAAO,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC;IAC9E,MAAM,MAAM,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAC5C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,eAAe,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,EAAuC,CAAC;QAC1D,MAAM,SAAS,GAAG,GAAG,EAAE,OAAO,IAAI,GAAG,IAAI,IAAI,CAAC;QAC9C,eAAe,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QACxC,OAAO,SAAS,CAAC;IACnB,CAAC;IAAC,MAAM,CAAC;QACP,eAAe,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AAhBW,QAAA,cAAc,kBAgBzB;AAEF,qEAAqE;AAC9D,MAAM,cAAc,GAAG,GAAS,EAAE;IACvC,QAAQ,GAAG,SAAS,CAAC;IACrB,eAAe,CAAC,KAAK,EAAE,CAAC;AAC1B,CAAC,CAAC;AAHW,QAAA,cAAc,kBAGzB"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `react-native-device-info` is treated as an OPTIONAL peer dependency
|
|
3
|
+
* everywhere in this library — the handshake (`McpClient.autoDetectIdentity`),
|
|
4
|
+
* the `device.info` aggregate read, and any future consumers all reach for
|
|
5
|
+
* the package the same way: lazy `require`, swallow ENOENT-style failures,
|
|
6
|
+
* fall back to `null` when it's not installed.
|
|
7
|
+
*
|
|
8
|
+
* This module centralises that pattern so the require lives in exactly one
|
|
9
|
+
* place. Consumers either call `loadDeviceInfo()` and check for null, or use
|
|
10
|
+
* the safe-call helpers below to invoke single fields without each site
|
|
11
|
+
* re-implementing the try/catch.
|
|
12
|
+
*/
|
|
13
|
+
type AnyDI = any;
|
|
14
|
+
/**
|
|
15
|
+
* Load `react-native-device-info` once and cache the result (including the
|
|
16
|
+
* negative case — repeated calls don't re-require when the package is
|
|
17
|
+
* absent). Returns the unwrapped module (`.default` or namespace) or `null`
|
|
18
|
+
* when the package isn't installed / fails to resolve.
|
|
19
|
+
*/
|
|
20
|
+
export declare const loadDeviceInfo: () => AnyDI | null;
|
|
21
|
+
/** Test-only: drop the memoised module so the next call re-requires. */
|
|
22
|
+
export declare const __resetDeviceInfoCache: () => void;
|
|
23
|
+
/**
|
|
24
|
+
* Call a sync method on the DI module if it exists. Returns `fallback`
|
|
25
|
+
* (default `null`) when the function is missing or throws. Useful for
|
|
26
|
+
* older device-info versions where individual getters may be absent.
|
|
27
|
+
*/
|
|
28
|
+
export declare const callDI: <T>(fn: unknown, fallback?: T | null) => T | null;
|
|
29
|
+
/** Async variant of `callDI` for DI methods that return Promises. */
|
|
30
|
+
export declare const callDIAsync: <T>(fn: unknown, fallback?: T | null) => Promise<T | null>;
|
|
31
|
+
/**
|
|
32
|
+
* Standard "package not available" payload used by both the device module
|
|
33
|
+
* and any other consumer that wants to surface the absence consistently.
|
|
34
|
+
*/
|
|
35
|
+
export declare const DEVICE_INFO_UNAVAILABLE: {
|
|
36
|
+
readonly reason: "react-native-device-info is not installed. Add it as a dependency to expose battery / memory / disk / extended identity fields.";
|
|
37
|
+
readonly unavailable: true;
|
|
38
|
+
};
|
|
39
|
+
export {};
|
|
40
|
+
//# sourceMappingURL=deviceInfo.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deviceInfo.d.ts","sourceRoot":"","sources":["../../../src/shared/rn/deviceInfo.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,KAAK,KAAK,GAAG,GAAG,CAAC;AAIjB;;;;;GAKG;AACH,eAAO,MAAM,cAAc,QAAO,KAAK,GAAG,IAUzC,CAAC;AAEF,wEAAwE;AACxE,eAAO,MAAM,sBAAsB,QAAO,IAEzC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,MAAM,GAAI,CAAC,MAAM,OAAO,aAAY,CAAC,GAAG,IAAI,KAAU,CAAC,GAAG,IAOtE,CAAC;AAEF,qEAAqE;AACrE,eAAO,MAAM,WAAW,GAAU,CAAC,MAAM,OAAO,aAAY,CAAC,GAAG,IAAI,KAAU,OAAO,CAAC,CAAC,GAAG,IAAI,CAO7F,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,uBAAuB;;;CAI1B,CAAC"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* `react-native-device-info` is treated as an OPTIONAL peer dependency
|
|
4
|
+
* everywhere in this library — the handshake (`McpClient.autoDetectIdentity`),
|
|
5
|
+
* the `device.info` aggregate read, and any future consumers all reach for
|
|
6
|
+
* the package the same way: lazy `require`, swallow ENOENT-style failures,
|
|
7
|
+
* fall back to `null` when it's not installed.
|
|
8
|
+
*
|
|
9
|
+
* This module centralises that pattern so the require lives in exactly one
|
|
10
|
+
* place. Consumers either call `loadDeviceInfo()` and check for null, or use
|
|
11
|
+
* the safe-call helpers below to invoke single fields without each site
|
|
12
|
+
* re-implementing the try/catch.
|
|
13
|
+
*/
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.DEVICE_INFO_UNAVAILABLE = exports.callDIAsync = exports.callDI = exports.__resetDeviceInfoCache = exports.loadDeviceInfo = void 0;
|
|
16
|
+
let cachedDI;
|
|
17
|
+
/**
|
|
18
|
+
* Load `react-native-device-info` once and cache the result (including the
|
|
19
|
+
* negative case — repeated calls don't re-require when the package is
|
|
20
|
+
* absent). Returns the unwrapped module (`.default` or namespace) or `null`
|
|
21
|
+
* when the package isn't installed / fails to resolve.
|
|
22
|
+
*/
|
|
23
|
+
const loadDeviceInfo = () => {
|
|
24
|
+
if (cachedDI !== undefined)
|
|
25
|
+
return cachedDI;
|
|
26
|
+
try {
|
|
27
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires
|
|
28
|
+
const di = require('react-native-device-info');
|
|
29
|
+
cachedDI = di.default ?? di;
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
cachedDI = null;
|
|
33
|
+
}
|
|
34
|
+
return cachedDI;
|
|
35
|
+
};
|
|
36
|
+
exports.loadDeviceInfo = loadDeviceInfo;
|
|
37
|
+
/** Test-only: drop the memoised module so the next call re-requires. */
|
|
38
|
+
const __resetDeviceInfoCache = () => {
|
|
39
|
+
cachedDI = undefined;
|
|
40
|
+
};
|
|
41
|
+
exports.__resetDeviceInfoCache = __resetDeviceInfoCache;
|
|
42
|
+
/**
|
|
43
|
+
* Call a sync method on the DI module if it exists. Returns `fallback`
|
|
44
|
+
* (default `null`) when the function is missing or throws. Useful for
|
|
45
|
+
* older device-info versions where individual getters may be absent.
|
|
46
|
+
*/
|
|
47
|
+
const callDI = (fn, fallback = null) => {
|
|
48
|
+
if (typeof fn !== 'function')
|
|
49
|
+
return fallback;
|
|
50
|
+
try {
|
|
51
|
+
return fn();
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
return fallback;
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
exports.callDI = callDI;
|
|
58
|
+
/** Async variant of `callDI` for DI methods that return Promises. */
|
|
59
|
+
const callDIAsync = async (fn, fallback = null) => {
|
|
60
|
+
if (typeof fn !== 'function')
|
|
61
|
+
return fallback;
|
|
62
|
+
try {
|
|
63
|
+
return (await fn());
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
return fallback;
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
exports.callDIAsync = callDIAsync;
|
|
70
|
+
/**
|
|
71
|
+
* Standard "package not available" payload used by both the device module
|
|
72
|
+
* and any other consumer that wants to surface the absence consistently.
|
|
73
|
+
*/
|
|
74
|
+
exports.DEVICE_INFO_UNAVAILABLE = {
|
|
75
|
+
reason: 'react-native-device-info is not installed. Add it as a dependency to expose battery / memory / disk / extended identity fields.',
|
|
76
|
+
unavailable: true,
|
|
77
|
+
};
|
|
78
|
+
//# sourceMappingURL=deviceInfo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deviceInfo.js","sourceRoot":"","sources":["../../../src/shared/rn/deviceInfo.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;;;AAKH,IAAI,QAAkC,CAAC;AAEvC;;;;;GAKG;AACI,MAAM,cAAc,GAAG,GAAiB,EAAE;IAC/C,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAC;IAC5C,IAAI,CAAC;QACH,qGAAqG;QACrG,MAAM,EAAE,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAAC;QAC/C,QAAQ,GAAG,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,QAAQ,GAAG,IAAI,CAAC;IAClB,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAVW,QAAA,cAAc,kBAUzB;AAEF,wEAAwE;AACjE,MAAM,sBAAsB,GAAG,GAAS,EAAE;IAC/C,QAAQ,GAAG,SAAS,CAAC;AACvB,CAAC,CAAC;AAFW,QAAA,sBAAsB,0BAEjC;AAEF;;;;GAIG;AACI,MAAM,MAAM,GAAG,CAAI,EAAW,EAAE,WAAqB,IAAI,EAAY,EAAE;IAC5E,IAAI,OAAO,EAAE,KAAK,UAAU;QAAE,OAAO,QAAQ,CAAC;IAC9C,IAAI,CAAC;QACH,OAAO,EAAE,EAAO,CAAC;IACnB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,QAAQ,CAAC;IAClB,CAAC;AACH,CAAC,CAAC;AAPW,QAAA,MAAM,UAOjB;AAEF,qEAAqE;AAC9D,MAAM,WAAW,GAAG,KAAK,EAAK,EAAW,EAAE,WAAqB,IAAI,EAAqB,EAAE;IAChG,IAAI,OAAO,EAAE,KAAK,UAAU;QAAE,OAAO,QAAQ,CAAC;IAC9C,IAAI,CAAC;QACH,OAAO,CAAC,MAAM,EAAE,EAAE,CAAM,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,QAAQ,CAAC;IAClB,CAAC;AACH,CAAC,CAAC;AAPW,QAAA,WAAW,eAOtB;AAEF;;;GAGG;AACU,QAAA,uBAAuB,GAAG;IACrC,MAAM,EACJ,iIAAiI;IACnI,WAAW,EAAE,IAAI;CACT,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-mcp-kit",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "4.0.0",
|
|
4
4
|
"description": "MCP server for React Native — drive, inspect, and debug running RN apps from AI agents via the real OS gesture pipeline",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Aliaksei Pranko",
|
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
"./server": "./dist/server/index.js"
|
|
63
63
|
},
|
|
64
64
|
"scripts": {
|
|
65
|
-
"build": "tsc && tsc-alias && ./scripts/build-ios-hid.sh",
|
|
65
|
+
"build": "rm -rf dist && tsc && tsc-alias && ./scripts/build-ios-hid.sh",
|
|
66
66
|
"dev": "tsc --watch",
|
|
67
67
|
"lint": "eslint --ext .ts --ext .tsx ./src",
|
|
68
68
|
"lint:fix": "eslint --ext .ts --ext .tsx ./src --fix",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useMcpState.d.ts","sourceRoot":"","sources":["../../../src/client/hooks/useMcpState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkC,KAAK,cAAc,EAAE,MAAM,OAAO,CAAC;AAI5E,eAAO,MAAM,WAAW,QAAS,MAAM,WAAW,MAAM,OAAO,QAAQ,cAAc,KAAG,IAYvF,CAAC"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.useMcpState = void 0;
|
|
4
|
-
const react_1 = require("react");
|
|
5
|
-
const McpContext_1 = require("../../client/contexts/McpContext");
|
|
6
|
-
const useMcpState = (key, factory, deps) => {
|
|
7
|
-
const ctx = (0, react_1.useContext)(McpContext_1.McpContext);
|
|
8
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
9
|
-
const value = (0, react_1.useMemo)(factory, deps);
|
|
10
|
-
(0, react_1.useEffect)(() => {
|
|
11
|
-
if (!ctx)
|
|
12
|
-
return;
|
|
13
|
-
ctx.setState(key, value);
|
|
14
|
-
return () => {
|
|
15
|
-
ctx.removeState(key);
|
|
16
|
-
};
|
|
17
|
-
}, [ctx, key, value]);
|
|
18
|
-
};
|
|
19
|
-
exports.useMcpState = useMcpState;
|
|
20
|
-
//# sourceMappingURL=useMcpState.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useMcpState.js","sourceRoot":"","sources":["../../../src/client/hooks/useMcpState.ts"],"names":[],"mappings":";;;AAAA,iCAA4E;AAE5E,6DAA0D;AAEnD,MAAM,WAAW,GAAG,CAAC,GAAW,EAAE,OAAsB,EAAE,IAAoB,EAAQ,EAAE;IAC7F,MAAM,GAAG,GAAG,IAAA,kBAAU,EAAC,uBAAU,CAAC,CAAC;IACnC,uDAAuD;IACvD,MAAM,KAAK,GAAG,IAAA,eAAO,EAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAErC,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAI,CAAC,GAAG;YAAE,OAAO;QACjB,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACzB,OAAO,GAAG,EAAE;YACV,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACvB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;AACxB,CAAC,CAAC;AAZW,QAAA,WAAW,eAYtB"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Recursively serialises a value to JSON with sorted object keys, producing a
|
|
3
|
-
* stable canonical form that's safe to use as a dedup Map key. Arrays keep
|
|
4
|
-
* their original order — caller is responsible for normalising them when
|
|
5
|
-
* order-independence is desired.
|
|
6
|
-
*/
|
|
7
|
-
export declare const canonicalize: (value: unknown) => string;
|
|
8
|
-
//# sourceMappingURL=canonicalize.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"canonicalize.d.ts","sourceRoot":"","sources":["../../src/server/canonicalize.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,eAAO,MAAM,YAAY,UAAW,OAAO,KAAG,MAW7C,CAAC"}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.canonicalize = void 0;
|
|
4
|
-
/**
|
|
5
|
-
* Recursively serialises a value to JSON with sorted object keys, producing a
|
|
6
|
-
* stable canonical form that's safe to use as a dedup Map key. Arrays keep
|
|
7
|
-
* their original order — caller is responsible for normalising them when
|
|
8
|
-
* order-independence is desired.
|
|
9
|
-
*/
|
|
10
|
-
const canonicalize = (value) => {
|
|
11
|
-
return JSON.stringify(value, (_key, v) => {
|
|
12
|
-
if (v && typeof v === 'object' && !Array.isArray(v)) {
|
|
13
|
-
const sorted = {};
|
|
14
|
-
for (const k of Object.keys(v).sort()) {
|
|
15
|
-
sorted[k] = v[k];
|
|
16
|
-
}
|
|
17
|
-
return sorted;
|
|
18
|
-
}
|
|
19
|
-
return v;
|
|
20
|
-
});
|
|
21
|
-
};
|
|
22
|
-
exports.canonicalize = canonicalize;
|
|
23
|
-
//# sourceMappingURL=canonicalize.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"canonicalize.js","sourceRoot":"","sources":["../../src/server/canonicalize.ts"],"names":[],"mappings":";;;AAAA;;;;;GAKG;AACI,MAAM,YAAY,GAAG,CAAC,KAAc,EAAU,EAAE;IACrD,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAU,EAAE,EAAE;QAChD,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YACpD,MAAM,MAAM,GAA4B,EAAE,CAAC;YAC3C,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAA4B,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;gBACjE,MAAM,CAAC,CAAC,CAAC,GAAI,CAA6B,CAAC,CAAC,CAAC,CAAC;YAChD,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAXW,QAAA,YAAY,gBAWvB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"screenshot.d.ts","sourceRoot":"","sources":["../../../../src/server/host/modules/screenshot.ts"],"names":[],"mappings":"AAUA,OAAO,EAAwB,KAAK,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACvF,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAmbxE,eAAO,MAAM,UAAU,WAAY,aAAa,KAAG,UAuTlD,CAAC"}
|