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.
Files changed (157) hide show
  1. package/README.md +22 -10
  2. package/dist/bin/ios-hid +0 -0
  3. package/dist/client/contexts/McpContext/McpProvider.d.ts.map +1 -1
  4. package/dist/client/contexts/McpContext/McpProvider.js +5 -5
  5. package/dist/client/contexts/McpContext/McpProvider.js.map +1 -1
  6. package/dist/client/core/McpClient.d.ts.map +1 -1
  7. package/dist/client/core/McpClient.js +26 -32
  8. package/dist/client/core/McpClient.js.map +1 -1
  9. package/dist/modules/alert/alert.d.ts.map +1 -1
  10. package/dist/modules/alert/alert.js +2 -5
  11. package/dist/modules/alert/alert.js.map +1 -1
  12. package/dist/modules/console/console.d.ts.map +1 -1
  13. package/dist/modules/console/console.js +32 -107
  14. package/dist/modules/console/console.js.map +1 -1
  15. package/dist/modules/console/types.d.ts +1 -0
  16. package/dist/modules/console/types.d.ts.map +1 -1
  17. package/dist/modules/device/device.d.ts.map +1 -1
  18. package/dist/modules/device/device.js +224 -133
  19. package/dist/modules/device/device.js.map +1 -1
  20. package/dist/modules/errors/errors.d.ts.map +1 -1
  21. package/dist/modules/errors/errors.js +19 -36
  22. package/dist/modules/errors/errors.js.map +1 -1
  23. package/dist/modules/fiberTree/children.d.ts +49 -0
  24. package/dist/modules/fiberTree/children.d.ts.map +1 -0
  25. package/dist/modules/fiberTree/children.js +182 -0
  26. package/dist/modules/fiberTree/children.js.map +1 -0
  27. package/dist/modules/fiberTree/constants.d.ts +13 -0
  28. package/dist/modules/fiberTree/constants.d.ts.map +1 -0
  29. package/dist/modules/fiberTree/constants.js +24 -0
  30. package/dist/modules/fiberTree/constants.js.map +1 -0
  31. package/dist/modules/fiberTree/fiberTree.d.ts +3 -6
  32. package/dist/modules/fiberTree/fiberTree.d.ts.map +1 -1
  33. package/dist/modules/fiberTree/fiberTree.js +219 -1080
  34. package/dist/modules/fiberTree/fiberTree.js.map +1 -1
  35. package/dist/modules/fiberTree/finder.d.ts +60 -0
  36. package/dist/modules/fiberTree/finder.d.ts.map +1 -0
  37. package/dist/modules/fiberTree/finder.js +107 -0
  38. package/dist/modules/fiberTree/finder.js.map +1 -0
  39. package/dist/modules/fiberTree/hooks.d.ts +103 -0
  40. package/dist/modules/fiberTree/hooks.d.ts.map +1 -0
  41. package/dist/modules/fiberTree/hooks.js +532 -0
  42. package/dist/modules/fiberTree/hooks.js.map +1 -0
  43. package/dist/modules/fiberTree/projection.d.ts +49 -0
  44. package/dist/modules/fiberTree/projection.d.ts.map +1 -0
  45. package/dist/modules/fiberTree/projection.js +82 -0
  46. package/dist/modules/fiberTree/projection.js.map +1 -0
  47. package/dist/modules/fiberTree/query.d.ts +56 -0
  48. package/dist/modules/fiberTree/query.d.ts.map +1 -0
  49. package/dist/modules/fiberTree/query.js +151 -0
  50. package/dist/modules/fiberTree/query.js.map +1 -0
  51. package/dist/modules/fiberTree/redact.d.ts +24 -0
  52. package/dist/modules/fiberTree/redact.d.ts.map +1 -0
  53. package/dist/modules/fiberTree/redact.js +51 -0
  54. package/dist/modules/fiberTree/redact.js.map +1 -0
  55. package/dist/modules/fiberTree/types.d.ts +7 -0
  56. package/dist/modules/fiberTree/types.d.ts.map +1 -1
  57. package/dist/modules/fiberTree/utils.d.ts +8 -2
  58. package/dist/modules/fiberTree/utils.d.ts.map +1 -1
  59. package/dist/modules/fiberTree/utils.js +79 -78
  60. package/dist/modules/fiberTree/utils.js.map +1 -1
  61. package/dist/modules/fiberTree/viewport.d.ts +28 -0
  62. package/dist/modules/fiberTree/viewport.d.ts.map +1 -0
  63. package/dist/modules/fiberTree/viewport.js +50 -0
  64. package/dist/modules/fiberTree/viewport.js.map +1 -0
  65. package/dist/modules/fiberTree/waitFor.d.ts +52 -0
  66. package/dist/modules/fiberTree/waitFor.d.ts.map +1 -0
  67. package/dist/modules/fiberTree/waitFor.js +98 -0
  68. package/dist/modules/fiberTree/waitFor.js.map +1 -0
  69. package/dist/modules/logBox/logBox.d.ts.map +1 -1
  70. package/dist/modules/logBox/logBox.js +59 -66
  71. package/dist/modules/logBox/logBox.js.map +1 -1
  72. package/dist/modules/navigation/navigation.d.ts.map +1 -1
  73. package/dist/modules/navigation/navigation.js +115 -114
  74. package/dist/modules/navigation/navigation.js.map +1 -1
  75. package/dist/modules/network/network.d.ts.map +1 -1
  76. package/dist/modules/network/network.js +78 -197
  77. package/dist/modules/network/network.js.map +1 -1
  78. package/dist/modules/network/types.d.ts +23 -27
  79. package/dist/modules/network/types.d.ts.map +1 -1
  80. package/dist/modules/reactQuery/reactQuery.d.ts.map +1 -1
  81. package/dist/modules/reactQuery/reactQuery.js +46 -52
  82. package/dist/modules/reactQuery/reactQuery.js.map +1 -1
  83. package/dist/modules/storage/storage.d.ts.map +1 -1
  84. package/dist/modules/storage/storage.js +20 -3
  85. package/dist/modules/storage/storage.js.map +1 -1
  86. package/dist/server/host/tools/input.js +2 -2
  87. package/dist/server/host/tools/input.js.map +1 -1
  88. package/dist/server/index.d.ts.map +1 -1
  89. package/dist/server/index.js +33 -0
  90. package/dist/server/index.js.map +1 -1
  91. package/dist/server/mcpServer.d.ts.map +1 -1
  92. package/dist/server/mcpServer.js +43 -3
  93. package/dist/server/mcpServer.js.map +1 -1
  94. package/dist/server/metro/eventCapture.d.ts +0 -2
  95. package/dist/server/metro/eventCapture.d.ts.map +1 -1
  96. package/dist/server/metro/eventCapture.js +1 -2
  97. package/dist/server/metro/eventCapture.js.map +1 -1
  98. package/dist/server/metro/tools/events.d.ts.map +1 -1
  99. package/dist/server/metro/tools/events.js +11 -11
  100. package/dist/server/metro/tools/events.js.map +1 -1
  101. package/dist/shared/projection/projectValue.d.ts +90 -0
  102. package/dist/shared/projection/projectValue.d.ts.map +1 -0
  103. package/dist/shared/projection/projectValue.js +322 -0
  104. package/dist/shared/projection/projectValue.js.map +1 -0
  105. package/dist/shared/projection/redact.d.ts +31 -0
  106. package/dist/shared/projection/redact.d.ts.map +1 -0
  107. package/dist/shared/projection/redact.js +78 -0
  108. package/dist/shared/projection/redact.js.map +1 -0
  109. package/dist/shared/projection/resolvePath.d.ts +45 -0
  110. package/dist/shared/projection/resolvePath.d.ts.map +1 -0
  111. package/dist/shared/projection/resolvePath.js +211 -0
  112. package/dist/shared/projection/resolvePath.js.map +1 -0
  113. package/dist/shared/rn/core.d.ts +48 -0
  114. package/dist/shared/rn/core.d.ts.map +1 -0
  115. package/dist/shared/rn/core.js +100 -0
  116. package/dist/shared/rn/core.js.map +1 -0
  117. package/dist/shared/rn/deviceInfo.d.ts +40 -0
  118. package/dist/shared/rn/deviceInfo.d.ts.map +1 -0
  119. package/dist/shared/rn/deviceInfo.js +78 -0
  120. package/dist/shared/rn/deviceInfo.js.map +1 -0
  121. package/package.json +2 -2
  122. package/dist/client/hooks/useMcpState.d.ts +0 -3
  123. package/dist/client/hooks/useMcpState.d.ts.map +0 -1
  124. package/dist/client/hooks/useMcpState.js +0 -20
  125. package/dist/client/hooks/useMcpState.js.map +0 -1
  126. package/dist/server/canonicalize.d.ts +0 -8
  127. package/dist/server/canonicalize.d.ts.map +0 -1
  128. package/dist/server/canonicalize.js +0 -23
  129. package/dist/server/canonicalize.js.map +0 -1
  130. package/dist/server/host/modules/screenshot.d.ts +0 -4
  131. package/dist/server/host/modules/screenshot.d.ts.map +0 -1
  132. package/dist/server/host/modules/screenshot.js +0 -615
  133. package/dist/server/host/modules/screenshot.js.map +0 -1
  134. package/dist/server/host/tools/connectionStatus.d.ts +0 -9
  135. package/dist/server/host/tools/connectionStatus.d.ts.map +0 -1
  136. package/dist/server/host/tools/connectionStatus.js +0 -39
  137. package/dist/server/host/tools/connectionStatus.js.map +0 -1
  138. package/dist/server/host/tools/symbolicate.d.ts +0 -3
  139. package/dist/server/host/tools/symbolicate.d.ts.map +0 -1
  140. package/dist/server/host/tools/symbolicate.js +0 -209
  141. package/dist/server/host/tools/symbolicate.js.map +0 -1
  142. package/dist/server/host/wda.d.ts +0 -15
  143. package/dist/server/host/wda.d.ts.map +0 -1
  144. package/dist/server/host/wda.js +0 -100
  145. package/dist/server/host/wda.js.map +0 -1
  146. package/dist/server/inputSchemaToZod.d.ts +0 -19
  147. package/dist/server/inputSchemaToZod.d.ts.map +0 -1
  148. package/dist/server/inputSchemaToZod.js +0 -89
  149. package/dist/server/inputSchemaToZod.js.map +0 -1
  150. package/dist/server/metro/tools/openUrl.d.ts +0 -3
  151. package/dist/server/metro/tools/openUrl.d.ts.map +0 -1
  152. package/dist/server/metro/tools/openUrl.js +0 -71
  153. package/dist/server/metro/tools/openUrl.js.map +0 -1
  154. package/dist/shared/slice.d.ts +0 -16
  155. package/dist/shared/slice.d.ts.map +0 -1
  156. package/dist/shared/slice.js +0 -29
  157. package/dist/shared/slice.js.map +0 -1
@@ -0,0 +1,322 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isMarker = exports.projectValue = exports.applyProjection = exports.projectAsValue = exports.PROJECTION_SCHEMA = exports.makeProjectionSchema = exports.DEFAULT_MAX_BYTES = exports.DEFAULT_PREVIEW_CAP = exports.DEFAULT_ARRAY_CAP = exports.DEFAULT_OBJECT_CAP = exports.MAX_DEPTH = exports.DEFAULT_DEPTH = void 0;
4
+ const redact_1 = require("./redact");
5
+ const resolvePath_1 = require("./resolvePath");
6
+ /**
7
+ * Single canonical "render this value into a compact, agent-friendly JSON"
8
+ * primitive. Replaces the per-module serializers (`fiberTree:serializeValue`,
9
+ * `console:serializeArg`, `network:captureBody`).
10
+ *
11
+ * Behaviour:
12
+ * - Walks the value to depth `depth` (default 1, max 8).
13
+ * - Containers expanded inside the depth budget → raw JSON.
14
+ * - Containers beyond depth, or specials (Date/Error/etc.) → string-keyed
15
+ * sentinel marker `{ "${kind}": meta }` (see plan §2 for full table).
16
+ * - Wide containers are width-capped: 30 keys for objects, 50 items for
17
+ * arrays; the cut adds a `${truncated}` sentinel as the FIRST entry of
18
+ * the container.
19
+ * - Long strings (> previewCap) become `{ "${str}": { "len": N, "preview": "..." } }`.
20
+ * - Cycles → `{ "${cyc}": true }`.
21
+ * - Pluggable `collapse` rules let modules detect domain-specific shapes
22
+ * (fiberTree component refs) and replace them with their own marker.
23
+ * - Optional `path` — resolves the path inside `input` first; then projects
24
+ * the resolved subtree under the same rules. Path slice (`[N:M]`) overrides
25
+ * the default container width-cap for that specific level.
26
+ */
27
+ exports.DEFAULT_DEPTH = 1;
28
+ exports.MAX_DEPTH = 8;
29
+ exports.DEFAULT_OBJECT_CAP = 30;
30
+ exports.DEFAULT_ARRAY_CAP = 50;
31
+ exports.DEFAULT_PREVIEW_CAP = 100;
32
+ exports.DEFAULT_MAX_BYTES = 50_000;
33
+ /**
34
+ * Standard `path` / `depth` / `maxBytes` arg shape for any tool that returns
35
+ * heavy JSON. Modules call `makeProjectionSchema(defaultDepth)` to get a
36
+ * description string that reflects their per-tool default, and spread the
37
+ * result into their inputSchema. Args are then funnelled through
38
+ * `applyProjection` at the handler exit.
39
+ */
40
+ // Reusable description shared across all tools: full path/depth/maxBytes
41
+ // semantics live in the server BASE_INSTRUCTIONS — schemas just reference it
42
+ // to keep `describe_tool` payloads small.
43
+ const makeProjectionSchema = (defaultDepth = exports.DEFAULT_DEPTH) => {
44
+ return {
45
+ depth: {
46
+ description: `Expansion depth (default ${defaultDepth}, max ${exports.MAX_DEPTH}). See server instructions § Path-based drill.`,
47
+ examples: [1, 3, 8],
48
+ type: 'number',
49
+ },
50
+ maxBytes: {
51
+ description: `Soft byte cap (default ${exports.DEFAULT_MAX_BYTES}). See server instructions § Path-based drill.`,
52
+ type: 'number',
53
+ },
54
+ path: {
55
+ description: 'Path drill into response (`.key`, `[N]`, `[a:b]`). See server instructions § Path-based drill for full syntax.',
56
+ examples: ['items[0].body', 'items[0:3].id', 'data.user.email'],
57
+ type: 'string',
58
+ },
59
+ };
60
+ };
61
+ exports.makeProjectionSchema = makeProjectionSchema;
62
+ /** Default-depth projection schema — for modules that don't override depth. */
63
+ exports.PROJECTION_SCHEMA = (0, exports.makeProjectionSchema)();
64
+ /**
65
+ * Convenience wrapper around `projectValue` that returns just the projected
66
+ * value (drops the `{ bytes, truncated }` envelope). Most module handlers
67
+ * want this form when they don't need byte-cap telemetry.
68
+ */
69
+ const projectAsValue = (value, options) => {
70
+ return (0, exports.projectValue)(value, options).value;
71
+ };
72
+ exports.projectAsValue = projectAsValue;
73
+ /**
74
+ * Standard handler-exit hook. Call this on the final raw response with the
75
+ * tool's args; it pulls `path`/`depth`/`maxBytes` and forwards to the given
76
+ * projector. Modules may override `defaultDepth` per-tool (e.g. fiberTree
77
+ * uses 2 because its top-level shape is an array of matches and depth 1
78
+ * would collapse the array itself into a marker).
79
+ */
80
+ const applyProjection = (result, args, projector, defaultDepth = exports.DEFAULT_DEPTH) => {
81
+ return projector(result, {
82
+ depth: args.depth ?? defaultDepth,
83
+ maxBytes: args.maxBytes,
84
+ path: args.path,
85
+ });
86
+ };
87
+ exports.applyProjection = applyProjection;
88
+ const isPlainObject = (v) => {
89
+ if (v === null || typeof v !== 'object')
90
+ return false;
91
+ const proto = Object.getPrototypeOf(v);
92
+ return proto === Object.prototype || proto === null;
93
+ };
94
+ const isMarker = (v) => {
95
+ if (!v || typeof v !== 'object' || Array.isArray(v))
96
+ return false;
97
+ const keys = Object.keys(v);
98
+ return keys.length === 1 && keys[0].startsWith('${') && keys[0].endsWith('}');
99
+ };
100
+ exports.isMarker = isMarker;
101
+ const constructorName = (v) => {
102
+ const proto = Object.getPrototypeOf(v);
103
+ if (!proto || proto === Object.prototype)
104
+ return null;
105
+ const ctor = proto.constructor;
106
+ return ctor?.name ?? null;
107
+ };
108
+ const projectString = (s, previewCap) => {
109
+ if (s.length <= previewCap)
110
+ return s;
111
+ return { ['${str}']: { len: s.length, preview: s.slice(0, previewCap) } };
112
+ };
113
+ const projectSpecial = (v, collapse) => {
114
+ // built-ins first
115
+ if (v instanceof Date)
116
+ return { ['${Date}']: v.toISOString() };
117
+ if (v instanceof RegExp)
118
+ return { ['${RegExp}']: v.toString() };
119
+ if (v instanceof Error) {
120
+ return { ['${Err}']: { msg: v.message, name: v.name } };
121
+ }
122
+ if (v instanceof Map)
123
+ return { ['${map}']: v.size };
124
+ if (v instanceof Set)
125
+ return { ['${set}']: v.size };
126
+ if (typeof v === 'function') {
127
+ const name = v.name;
128
+ return { ['${fun}']: name && name.length > 0 ? name : '<anon>' };
129
+ }
130
+ if (typeof v === 'symbol') {
131
+ return { ['${sym}']: v.toString() };
132
+ }
133
+ // pluggable collapse rules (fiberTree component refs etc.)
134
+ for (const rule of collapse) {
135
+ const out = rule(v);
136
+ if (out !== undefined)
137
+ return out;
138
+ }
139
+ return undefined;
140
+ };
141
+ const collapsedContainer = (v) => {
142
+ if (Array.isArray(v))
143
+ return { ['${arr}']: v.length };
144
+ if (isPlainObject(v))
145
+ return { ['${obj}']: Object.keys(v).length };
146
+ if (v && typeof v === 'object') {
147
+ const cls = constructorName(v);
148
+ if (cls)
149
+ return { ['${cls}']: { len: Object.keys(v).length, name: cls } };
150
+ return { ['${obj}']: Object.keys(v).length };
151
+ }
152
+ return undefined;
153
+ };
154
+ const walkContainer = (v, depth, ctx, seen) => {
155
+ // strings, primitives — handled before this fn is called
156
+ // specials (Date, Error, ...) — handled before via projectSpecial
157
+ if (Array.isArray(v)) {
158
+ return walkArray(v, depth, ctx, seen);
159
+ }
160
+ return walkObject(v, depth, ctx, seen);
161
+ };
162
+ const walkArray = (arr, depth, ctx, seen) => {
163
+ const total = arr.length;
164
+ const cap = ctx.arrayCap;
165
+ const sliced = arr.slice(0, cap);
166
+ const out = [];
167
+ if (total > cap) {
168
+ out.push({ ['${truncated}']: { slice: [0, cap], total } });
169
+ }
170
+ for (const item of sliced) {
171
+ out.push(walk(item, depth - 1, ctx, seen));
172
+ }
173
+ return out;
174
+ };
175
+ const walkObject = (obj, depth, ctx, seen) => {
176
+ const allKeys = Object.keys(obj).filter((k) => {
177
+ return !matchesSkip(k, ctx);
178
+ });
179
+ const total = allKeys.length;
180
+ const cap = ctx.objectCap;
181
+ const keys = allKeys.slice(0, cap);
182
+ const out = {};
183
+ if (total > cap) {
184
+ out['${truncated}'] = { slice: [0, cap], total };
185
+ }
186
+ for (const k of keys) {
187
+ if ((0, redact_1.matchesRedact)(k, ctx.compiledRedact)) {
188
+ out[k] = '[redacted]';
189
+ continue;
190
+ }
191
+ out[k] = walk(obj[k], depth - 1, ctx, seen);
192
+ }
193
+ return out;
194
+ };
195
+ const matchesSkip = (key, ctx) => {
196
+ if (ctx.skipExact.has(key))
197
+ return true;
198
+ for (const rx of ctx.skipRegex)
199
+ if (rx.test(key))
200
+ return true;
201
+ return false;
202
+ };
203
+ const walk = (v, remainingDepth, ctx, seen) => {
204
+ // primitives
205
+ if (v === null || v === undefined)
206
+ return v;
207
+ const t = typeof v;
208
+ if (t === 'number' || t === 'boolean')
209
+ return v;
210
+ if (t === 'bigint')
211
+ return { ['${bigint}']: v.toString() };
212
+ if (t === 'string')
213
+ return projectString(v, ctx.previewCap);
214
+ // specials before container check (Map/Set/Date/etc. typeof === 'object')
215
+ const special = projectSpecial(v, ctx.collapse);
216
+ if (special !== undefined)
217
+ return special;
218
+ // cycle
219
+ if (typeof v === 'object' && v !== null) {
220
+ if (seen.has(v))
221
+ return { ['${cyc}']: true };
222
+ seen.add(v);
223
+ }
224
+ // depth exhausted — collapse to marker
225
+ if (remainingDepth <= 0) {
226
+ const collapsed = collapsedContainer(v);
227
+ return collapsed ?? v;
228
+ }
229
+ // expand container
230
+ return walkContainer(v, remainingDepth, ctx, seen);
231
+ };
232
+ const projectValue = (input, options) => {
233
+ const opts = options ?? {};
234
+ const depth = clampDepth(opts.depth ?? exports.DEFAULT_DEPTH);
235
+ const objectCap = exports.DEFAULT_OBJECT_CAP;
236
+ const arrayCap = exports.DEFAULT_ARRAY_CAP;
237
+ const previewCap = opts.previewCap ?? exports.DEFAULT_PREVIEW_CAP;
238
+ const maxBytes = opts.maxBytes ?? exports.DEFAULT_MAX_BYTES;
239
+ const collapse = opts.collapse ?? [];
240
+ const skipExact = new Set();
241
+ const skipRegex = [];
242
+ for (const k of opts.skipKeys ?? []) {
243
+ if (typeof k === 'string')
244
+ skipExact.add(k);
245
+ else
246
+ skipRegex.push(k);
247
+ }
248
+ const compiledRedact = (0, redact_1.compileRedact)(opts.redact);
249
+ // resolve path first (if any) — applies to the input tree, not the projection
250
+ let target = input;
251
+ let pathResolved = false;
252
+ if (opts.path) {
253
+ const res = (0, resolvePath_1.resolvePath)(input, opts.path);
254
+ if (!res.ok) {
255
+ return {
256
+ bytes: 0,
257
+ truncated: false,
258
+ value: { error: res.error, validUpTo: res.validUpTo },
259
+ };
260
+ }
261
+ target = res.value;
262
+ pathResolved = true;
263
+ }
264
+ // When path explicitly resolves to a string scalar, return the raw string
265
+ // (truncated only if it would blow the maxBytes cap). The user navigated
266
+ // to a leaf — they asked for the content, not a preview marker.
267
+ if (pathResolved && typeof target === 'string') {
268
+ if (target.length > maxBytes) {
269
+ return {
270
+ bytes: target.length,
271
+ truncated: true,
272
+ value: { ['${str}']: { len: target.length, preview: target.slice(0, 200) } },
273
+ };
274
+ }
275
+ return { bytes: target.length, truncated: false, value: target };
276
+ }
277
+ const ctx = {
278
+ arrayCap,
279
+ collapse,
280
+ compiledRedact,
281
+ objectCap,
282
+ previewCap,
283
+ skipExact,
284
+ skipRegex,
285
+ };
286
+ const seen = new WeakSet();
287
+ // walk with depth + 1 because the caller's "depth: N" means N levels of
288
+ // container expansion; our walk decrements before recursing into children.
289
+ const projected = walk(target, depth, ctx, seen);
290
+ // soft byte cap — if exceeded, replace with a string-marker that carries
291
+ // the original size + a short preview
292
+ const serialized = safeStringify(projected);
293
+ if (serialized.length > maxBytes) {
294
+ const preview = serialized.slice(0, Math.min(maxBytes, 200));
295
+ return {
296
+ bytes: serialized.length,
297
+ truncated: true,
298
+ value: {
299
+ ['${str}']: {
300
+ len: serialized.length,
301
+ preview,
302
+ },
303
+ },
304
+ };
305
+ }
306
+ return { bytes: serialized.length, truncated: false, value: projected };
307
+ };
308
+ exports.projectValue = projectValue;
309
+ const clampDepth = (d) => {
310
+ if (!Number.isFinite(d) || d < 0)
311
+ return exports.DEFAULT_DEPTH;
312
+ return Math.min(Math.floor(d), exports.MAX_DEPTH);
313
+ };
314
+ const safeStringify = (v) => {
315
+ try {
316
+ return JSON.stringify(v) ?? '';
317
+ }
318
+ catch {
319
+ return '';
320
+ }
321
+ };
322
+ //# sourceMappingURL=projectValue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projectValue.js","sourceRoot":"","sources":["../../../src/shared/projection/projectValue.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Shared redact utility used by `projectValue` and modules that have their
3
+ * own redact lists (network headers/body keys). Extracted from `network.ts`
4
+ * verbatim so behaviour stays identical for existing callers.
5
+ *
6
+ * - Pattern list is `Array<string | RegExp>`. Strings are lowercased and
7
+ * matched as substring on lowercased keys; regexes are matched verbatim.
8
+ * - `false` (instead of array) — disables redaction.
9
+ * - `undefined` — uses provided defaults.
10
+ */
11
+ export type RedactPatterns = ReadonlyArray<string | RegExp> | false;
12
+ interface CompiledRedact {
13
+ empty: boolean;
14
+ exact: Set<string>;
15
+ regexes: RegExp[];
16
+ }
17
+ export declare const compileRedact: (list: RedactPatterns | undefined, defaults?: ReadonlyArray<string | RegExp>) => CompiledRedact | null;
18
+ export declare const matchesRedact: (key: string, compiled: CompiledRedact | null) => boolean;
19
+ /**
20
+ * Walk an object/array graph; replace value of any key matching a redact
21
+ * pattern with `[redacted]`. Preserves shape so caller still sees the field
22
+ * exists. Used by network for request/response bodies; also re-exported for
23
+ * `projectValue` which inlines the same matcher in its walk.
24
+ */
25
+ export declare const redactValue: (value: unknown, compiled: CompiledRedact | null) => unknown;
26
+ /**
27
+ * Redact a flat headers map (case-insensitive on key names).
28
+ */
29
+ export declare const redactHeaders: (headers: Record<string, string>, compiled: CompiledRedact | null) => Record<string, string>;
30
+ export {};
31
+ //# sourceMappingURL=redact.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redact.d.ts","sourceRoot":"","sources":["../../../src/shared/projection/redact.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,MAAM,cAAc,GAAG,aAAa,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,KAAK,CAAC;AAEpE,UAAU,cAAc;IACtB,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,eAAO,MAAM,aAAa,SAClB,cAAc,GAAG,SAAS,aACtB,aAAa,CAAC,MAAM,GAAG,MAAM,CAAC,KACvC,cAAc,GAAG,IAUnB,CAAC;AAEF,eAAO,MAAM,aAAa,QAAS,MAAM,YAAY,cAAc,GAAG,IAAI,KAAG,OAQ5E,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,WAAW,UAAW,OAAO,YAAY,cAAc,GAAG,IAAI,KAAG,OAa7E,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa,YACf,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,YACrB,cAAc,GAAG,IAAI,KAC9B,MAAM,CAAC,MAAM,EAAE,MAAM,CAOvB,CAAC"}
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ /**
3
+ * Shared redact utility used by `projectValue` and modules that have their
4
+ * own redact lists (network headers/body keys). Extracted from `network.ts`
5
+ * verbatim so behaviour stays identical for existing callers.
6
+ *
7
+ * - Pattern list is `Array<string | RegExp>`. Strings are lowercased and
8
+ * matched as substring on lowercased keys; regexes are matched verbatim.
9
+ * - `false` (instead of array) — disables redaction.
10
+ * - `undefined` — uses provided defaults.
11
+ */
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.redactHeaders = exports.redactValue = exports.matchesRedact = exports.compileRedact = void 0;
14
+ const compileRedact = (list, defaults = []) => {
15
+ if (list === false)
16
+ return null;
17
+ const src = list === undefined ? defaults : list;
18
+ const exact = new Set();
19
+ const regexes = [];
20
+ for (const item of src) {
21
+ if (typeof item === 'string')
22
+ exact.add(item.toLowerCase());
23
+ else
24
+ regexes.push(item);
25
+ }
26
+ return { empty: exact.size === 0 && regexes.length === 0, exact, regexes };
27
+ };
28
+ exports.compileRedact = compileRedact;
29
+ const matchesRedact = (key, compiled) => {
30
+ if (!compiled || compiled.empty)
31
+ return false;
32
+ const lower = key.toLowerCase();
33
+ if (compiled.exact.has(lower))
34
+ return true;
35
+ for (const rx of compiled.regexes) {
36
+ if (rx.test(key))
37
+ return true;
38
+ }
39
+ return false;
40
+ };
41
+ exports.matchesRedact = matchesRedact;
42
+ /**
43
+ * Walk an object/array graph; replace value of any key matching a redact
44
+ * pattern with `[redacted]`. Preserves shape so caller still sees the field
45
+ * exists. Used by network for request/response bodies; also re-exported for
46
+ * `projectValue` which inlines the same matcher in its walk.
47
+ */
48
+ const redactValue = (value, compiled) => {
49
+ if (!compiled || compiled.empty)
50
+ return value;
51
+ if (value === null || typeof value !== 'object')
52
+ return value;
53
+ if (Array.isArray(value)) {
54
+ return value.map((item) => {
55
+ return (0, exports.redactValue)(item, compiled);
56
+ });
57
+ }
58
+ const out = {};
59
+ for (const [key, v] of Object.entries(value)) {
60
+ out[key] = (0, exports.matchesRedact)(key, compiled) ? '[redacted]' : (0, exports.redactValue)(v, compiled);
61
+ }
62
+ return out;
63
+ };
64
+ exports.redactValue = redactValue;
65
+ /**
66
+ * Redact a flat headers map (case-insensitive on key names).
67
+ */
68
+ const redactHeaders = (headers, compiled) => {
69
+ if (!compiled || compiled.empty)
70
+ return headers;
71
+ const out = {};
72
+ for (const [key, value] of Object.entries(headers)) {
73
+ out[key] = (0, exports.matchesRedact)(key, compiled) ? '[redacted]' : value;
74
+ }
75
+ return out;
76
+ };
77
+ exports.redactHeaders = redactHeaders;
78
+ //# sourceMappingURL=redact.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redact.js","sourceRoot":"","sources":["../../../src/shared/projection/redact.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * JS-style path parser/resolver. Path examples:
3
+ * foo.bar — object key access
4
+ * foo[3] — array index
5
+ * foo[1:5] — array/object slice (Python-style)
6
+ * foo[3:] — slice from 3 to end
7
+ * foo[:5] — slice from start to 5
8
+ * foo["key.with.dots"] — bracket-quoted object key
9
+ * foo['k'] — single-quoted also accepted
10
+ *
11
+ * Used by `projectValue` to navigate inside a response before applying
12
+ * shape rendering. After a slice, chained access has special semantics:
13
+ * - array slice + `.key` → map (apply to every element)
14
+ * - array slice + `[N]` → pick Nth element of the window
15
+ * - object slice + `.key` → take key from sub-object (no map)
16
+ * - object slice + `[N]` → Nth key in window (insertion order)
17
+ */
18
+ export type PathSegment = {
19
+ kind: 'key';
20
+ name: string;
21
+ } | {
22
+ index: number;
23
+ kind: 'index';
24
+ } | {
25
+ kind: 'slice';
26
+ end?: number;
27
+ start?: number;
28
+ };
29
+ export type PathResult = {
30
+ ok: true;
31
+ value: unknown;
32
+ } | {
33
+ actual: unknown;
34
+ error: string;
35
+ ok: false;
36
+ validUpTo: string;
37
+ };
38
+ export declare const parsePath: (path: string) => PathSegment[];
39
+ /**
40
+ * Walk a path through a value tree. Slice + chained access has the semantics
41
+ * documented in this file's header. Returns either the resolved value or a
42
+ * detailed failure pointing at where the path broke.
43
+ */
44
+ export declare const resolvePath: (root: unknown, path: string) => PathResult;
45
+ //# sourceMappingURL=resolvePath.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolvePath.d.ts","sourceRoot":"","sources":["../../../src/shared/projection/resolvePath.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC7B;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpD,MAAM,MAAM,UAAU,GAClB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GAC5B;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,KAAK,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC;AAErE,eAAO,MAAM,SAAS,SAAU,MAAM,KAAG,WAAW,EA4BnD,CAAC;AAqDF;;;;GAIG;AACH,eAAO,MAAM,WAAW,SAAU,OAAO,QAAQ,MAAM,KAAG,UAgCzD,CAAC"}