deepadb 1.1.1 → 1.1.3

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 (230) hide show
  1. package/LICENSE +202 -21
  2. package/NOTICE +16 -0
  3. package/README.md +55 -29
  4. package/build/bridge/adb-bridge.d.ts +14 -0
  5. package/build/bridge/adb-bridge.d.ts.map +1 -1
  6. package/build/bridge/adb-bridge.js +34 -5
  7. package/build/bridge/adb-bridge.js.map +1 -1
  8. package/build/bridge/device-manager.d.ts.map +1 -1
  9. package/build/bridge/device-manager.js +18 -9
  10. package/build/bridge/device-manager.js.map +1 -1
  11. package/build/bridge/local-bridge.d.ts +10 -2
  12. package/build/bridge/local-bridge.d.ts.map +1 -1
  13. package/build/bridge/local-bridge.js +51 -16
  14. package/build/bridge/local-bridge.js.map +1 -1
  15. package/build/config/config.d.ts +7 -0
  16. package/build/config/config.d.ts.map +1 -1
  17. package/build/config/config.js +26 -10
  18. package/build/config/config.js.map +1 -1
  19. package/build/graphql-api.d.ts.map +1 -1
  20. package/build/graphql-api.js +73 -3
  21. package/build/graphql-api.js.map +1 -1
  22. package/build/http-transport.d.ts.map +1 -1
  23. package/build/http-transport.js +44 -7
  24. package/build/http-transport.js.map +1 -1
  25. package/build/index.d.ts.map +1 -1
  26. package/build/index.js +41 -16
  27. package/build/index.js.map +1 -1
  28. package/build/middleware/auth.d.ts.map +1 -1
  29. package/build/middleware/auth.js +43 -6
  30. package/build/middleware/auth.js.map +1 -1
  31. package/build/middleware/chipset.d.ts.map +1 -1
  32. package/build/middleware/chipset.js +16 -1
  33. package/build/middleware/chipset.js.map +1 -1
  34. package/build/middleware/cleanup.d.ts +39 -7
  35. package/build/middleware/cleanup.d.ts.map +1 -1
  36. package/build/middleware/cleanup.js +148 -16
  37. package/build/middleware/cleanup.js.map +1 -1
  38. package/build/middleware/fetch-utils.d.ts +50 -7
  39. package/build/middleware/fetch-utils.d.ts.map +1 -1
  40. package/build/middleware/fetch-utils.js +127 -14
  41. package/build/middleware/fetch-utils.js.map +1 -1
  42. package/build/middleware/fs-utils.d.ts +126 -0
  43. package/build/middleware/fs-utils.d.ts.map +1 -0
  44. package/build/middleware/fs-utils.js +229 -0
  45. package/build/middleware/fs-utils.js.map +1 -0
  46. package/build/middleware/logger.d.ts +16 -0
  47. package/build/middleware/logger.d.ts.map +1 -1
  48. package/build/middleware/logger.js +18 -0
  49. package/build/middleware/logger.js.map +1 -1
  50. package/build/middleware/output-processor.d.ts.map +1 -1
  51. package/build/middleware/output-processor.js +43 -8
  52. package/build/middleware/output-processor.js.map +1 -1
  53. package/build/middleware/parse-utils.d.ts +19 -0
  54. package/build/middleware/parse-utils.d.ts.map +1 -0
  55. package/build/middleware/parse-utils.js +30 -0
  56. package/build/middleware/parse-utils.js.map +1 -0
  57. package/build/middleware/png-utils.d.ts.map +1 -1
  58. package/build/middleware/png-utils.js +33 -11
  59. package/build/middleware/png-utils.js.map +1 -1
  60. package/build/middleware/result-handle.d.ts +76 -0
  61. package/build/middleware/result-handle.d.ts.map +1 -0
  62. package/build/middleware/result-handle.js +378 -0
  63. package/build/middleware/result-handle.js.map +1 -0
  64. package/build/middleware/sanitize.d.ts +26 -0
  65. package/build/middleware/sanitize.d.ts.map +1 -1
  66. package/build/middleware/sanitize.js +43 -2
  67. package/build/middleware/sanitize.js.map +1 -1
  68. package/build/middleware/security.d.ts.map +1 -1
  69. package/build/middleware/security.js +30 -5
  70. package/build/middleware/security.js.map +1 -1
  71. package/build/middleware/ui-dump.d.ts.map +1 -1
  72. package/build/middleware/ui-dump.js +30 -10
  73. package/build/middleware/ui-dump.js.map +1 -1
  74. package/build/server.d.ts.map +1 -1
  75. package/build/server.js +34 -5
  76. package/build/server.js.map +1 -1
  77. package/build/tool-context.d.ts.map +1 -1
  78. package/build/tool-context.js +2 -0
  79. package/build/tool-context.js.map +1 -1
  80. package/build/tools/accessibility.d.ts.map +1 -1
  81. package/build/tools/accessibility.js +39 -40
  82. package/build/tools/accessibility.js.map +1 -1
  83. package/build/tools/at-commands.d.ts.map +1 -1
  84. package/build/tools/at-commands.js +31 -6
  85. package/build/tools/at-commands.js.map +1 -1
  86. package/build/tools/baseband.d.ts.map +1 -1
  87. package/build/tools/baseband.js +18 -7
  88. package/build/tools/baseband.js.map +1 -1
  89. package/build/tools/build.d.ts.map +1 -1
  90. package/build/tools/build.js +30 -8
  91. package/build/tools/build.js.map +1 -1
  92. package/build/tools/ci.d.ts.map +1 -1
  93. package/build/tools/ci.js +16 -5
  94. package/build/tools/ci.js.map +1 -1
  95. package/build/tools/control.d.ts.map +1 -1
  96. package/build/tools/control.js +19 -11
  97. package/build/tools/control.js.map +1 -1
  98. package/build/tools/device-farm.d.ts.map +1 -1
  99. package/build/tools/device-farm.js +27 -3
  100. package/build/tools/device-farm.js.map +1 -1
  101. package/build/tools/device-profiles.d.ts.map +1 -1
  102. package/build/tools/device-profiles.js +70 -8
  103. package/build/tools/device-profiles.js.map +1 -1
  104. package/build/tools/device.d.ts.map +1 -1
  105. package/build/tools/device.js +4 -2
  106. package/build/tools/device.js.map +1 -1
  107. package/build/tools/diagnostics.d.ts.map +1 -1
  108. package/build/tools/diagnostics.js +17 -9
  109. package/build/tools/diagnostics.js.map +1 -1
  110. package/build/tools/emulator.d.ts.map +1 -1
  111. package/build/tools/emulator.js +12 -13
  112. package/build/tools/emulator.js.map +1 -1
  113. package/build/tools/files.d.ts +1 -1
  114. package/build/tools/files.d.ts.map +1 -1
  115. package/build/tools/files.js +98 -56
  116. package/build/tools/files.js.map +1 -1
  117. package/build/tools/firmware-analysis.d.ts.map +1 -1
  118. package/build/tools/firmware-analysis.js +35 -12
  119. package/build/tools/firmware-analysis.js.map +1 -1
  120. package/build/tools/forwarding.d.ts.map +1 -1
  121. package/build/tools/forwarding.js +248 -6
  122. package/build/tools/forwarding.js.map +1 -1
  123. package/build/tools/health.d.ts.map +1 -1
  124. package/build/tools/health.js +14 -3
  125. package/build/tools/health.js.map +1 -1
  126. package/build/tools/input-gestures.d.ts.map +1 -1
  127. package/build/tools/input-gestures.js +65 -13
  128. package/build/tools/input-gestures.js.map +1 -1
  129. package/build/tools/logcat-watch.d.ts.map +1 -1
  130. package/build/tools/logcat-watch.js +21 -14
  131. package/build/tools/logcat-watch.js.map +1 -1
  132. package/build/tools/logs.d.ts.map +1 -1
  133. package/build/tools/logs.js +8 -4
  134. package/build/tools/logs.js.map +1 -1
  135. package/build/tools/mirroring.d.ts.map +1 -1
  136. package/build/tools/mirroring.js +21 -19
  137. package/build/tools/mirroring.js.map +1 -1
  138. package/build/tools/multi-device.d.ts.map +1 -1
  139. package/build/tools/multi-device.js +10 -0
  140. package/build/tools/multi-device.js.map +1 -1
  141. package/build/tools/network-capture.d.ts.map +1 -1
  142. package/build/tools/network-capture.js +32 -8
  143. package/build/tools/network-capture.js.map +1 -1
  144. package/build/tools/network-discovery.d.ts.map +1 -1
  145. package/build/tools/network-discovery.js +11 -2
  146. package/build/tools/network-discovery.js.map +1 -1
  147. package/build/tools/ota-monitor.d.ts.map +1 -1
  148. package/build/tools/ota-monitor.js +26 -12
  149. package/build/tools/ota-monitor.js.map +1 -1
  150. package/build/tools/packages.d.ts.map +1 -1
  151. package/build/tools/packages.js +18 -11
  152. package/build/tools/packages.js.map +1 -1
  153. package/build/tools/plugins.d.ts +18 -0
  154. package/build/tools/plugins.d.ts.map +1 -1
  155. package/build/tools/plugins.js +47 -2
  156. package/build/tools/plugins.js.map +1 -1
  157. package/build/tools/prompts.d.ts.map +1 -1
  158. package/build/tools/prompts.js +2 -0
  159. package/build/tools/prompts.js.map +1 -1
  160. package/build/tools/qemu.d.ts +6 -3
  161. package/build/tools/qemu.d.ts.map +1 -1
  162. package/build/tools/qemu.js +28 -16
  163. package/build/tools/qemu.js.map +1 -1
  164. package/build/tools/registry.d.ts.map +1 -1
  165. package/build/tools/registry.js +76 -26
  166. package/build/tools/registry.js.map +1 -1
  167. package/build/tools/regression.d.ts +37 -0
  168. package/build/tools/regression.d.ts.map +1 -1
  169. package/build/tools/regression.js +63 -22
  170. package/build/tools/regression.js.map +1 -1
  171. package/build/tools/resources.d.ts.map +1 -1
  172. package/build/tools/resources.js +62 -15
  173. package/build/tools/resources.js.map +1 -1
  174. package/build/tools/result-handles.d.ts +37 -0
  175. package/build/tools/result-handles.d.ts.map +1 -0
  176. package/build/tools/result-handles.js +286 -0
  177. package/build/tools/result-handles.js.map +1 -0
  178. package/build/tools/ril-intercept.d.ts.map +1 -1
  179. package/build/tools/ril-intercept.js +15 -18
  180. package/build/tools/ril-intercept.js.map +1 -1
  181. package/build/tools/screen-record.d.ts.map +1 -1
  182. package/build/tools/screen-record.js +34 -5
  183. package/build/tools/screen-record.js.map +1 -1
  184. package/build/tools/screenshot-diff.d.ts.map +1 -1
  185. package/build/tools/screenshot-diff.js +29 -21
  186. package/build/tools/screenshot-diff.js.map +1 -1
  187. package/build/tools/selinux-audit.d.ts.map +1 -1
  188. package/build/tools/selinux-audit.js +7 -5
  189. package/build/tools/selinux-audit.js.map +1 -1
  190. package/build/tools/sensors.d.ts.map +1 -1
  191. package/build/tools/sensors.js +26 -4
  192. package/build/tools/sensors.js.map +1 -1
  193. package/build/tools/shell.d.ts.map +1 -1
  194. package/build/tools/shell.js +9 -0
  195. package/build/tools/shell.js.map +1 -1
  196. package/build/tools/snapshot.d.ts.map +1 -1
  197. package/build/tools/snapshot.js +38 -19
  198. package/build/tools/snapshot.js.map +1 -1
  199. package/build/tools/split-apk.d.ts.map +1 -1
  200. package/build/tools/split-apk.js +48 -24
  201. package/build/tools/split-apk.js.map +1 -1
  202. package/build/tools/test-gen.d.ts.map +1 -1
  203. package/build/tools/test-gen.js +29 -10
  204. package/build/tools/test-gen.js.map +1 -1
  205. package/build/tools/testing.d.ts.map +1 -1
  206. package/build/tools/testing.js +27 -9
  207. package/build/tools/testing.js.map +1 -1
  208. package/build/tools/thermal-power.d.ts +8 -1
  209. package/build/tools/thermal-power.d.ts.map +1 -1
  210. package/build/tools/thermal-power.js +35 -10
  211. package/build/tools/thermal-power.js.map +1 -1
  212. package/build/tools/ui.d.ts.map +1 -1
  213. package/build/tools/ui.js +20 -13
  214. package/build/tools/ui.js.map +1 -1
  215. package/build/tools/wireless-firmware.d.ts.map +1 -1
  216. package/build/tools/wireless-firmware.js +21 -7
  217. package/build/tools/wireless-firmware.js.map +1 -1
  218. package/build/tools/wireless.d.ts.map +1 -1
  219. package/build/tools/wireless.js +39 -3
  220. package/build/tools/wireless.js.map +1 -1
  221. package/build/tools/workflow-market.d.ts.map +1 -1
  222. package/build/tools/workflow-market.js +67 -13
  223. package/build/tools/workflow-market.js.map +1 -1
  224. package/build/tools/workflow.d.ts.map +1 -1
  225. package/build/tools/workflow.js +77 -8
  226. package/build/tools/workflow.js.map +1 -1
  227. package/build/ws-transport.d.ts.map +1 -1
  228. package/build/ws-transport.js +21 -3
  229. package/build/ws-transport.js.map +1 -1
  230. package/package.json +20 -8
@@ -1,3 +1,5 @@
1
+ // Copyright 2026 Jason <fullread@github>
2
+ // SPDX-License-Identifier: Apache-2.0
1
3
  /**
2
4
  * Input Sanitization — Shell injection prevention for ADB command construction.
3
5
  *
@@ -5,7 +7,18 @@
5
7
  * must validate those parameters before passing them to bridge.shell().
6
8
  * This module provides validation for common parameter types.
7
9
  */
8
- /** Characters that are dangerous in shell command interpolation. */
10
+ /**
11
+ * Characters that are dangerous in shell command interpolation.
12
+ *
13
+ * D1 note: whitespace (space, tab) is NOT in this set. Whitespace would
14
+ * cause word-splitting if the value reached an UNQUOTED shell context, but
15
+ * v1.1.2 made `shellQuote` the canonical interpolation path across the
16
+ * codebase (Fix #1). Every interpolation that flows through
17
+ * `shellQuote(x)` wraps the value in single quotes, where whitespace is
18
+ * harmless. validateShellArg therefore intentionally permits whitespace —
19
+ * legitimate identifiers should not contain it, but the schema layer
20
+ * (Zod regex) is the right place to enforce that per-tool.
21
+ */
9
22
  const SHELL_METACHARACTERS = /[;|&$`(){}<>!\n\r\\'"]/;
10
23
  /**
11
24
  * Validate that a string is safe to interpolate into a shell command.
@@ -17,9 +30,18 @@ const SHELL_METACHARACTERS = /[;|&$`(){}<>!\n\r\\'"]/;
17
30
  *
18
31
  * Returns null if safe, or an error message string if unsafe.
19
32
  */
33
+ /**
34
+ * D4 note: this function does NOT runtime type-check `value`. A caller
35
+ * mistakenly passing `null` or `undefined` would have it coerced to the
36
+ * string "null" / "undefined" before the regex test, and those literals
37
+ * pass as valid identifiers. All current callers receive Zod-validated
38
+ * strings from the MCP tool layer, so theoretical only — but future
39
+ * non-MCP callers should pre-check or this function will silently accept
40
+ * non-string inputs.
41
+ */
20
42
  export function validateShellArg(value, paramName) {
21
43
  if (SHELL_METACHARACTERS.test(value)) {
22
- return `Invalid ${paramName}: contains shell metacharacters. Value must not include: ; | & $ \` ( ) { } < > ! \\ ' "`;
44
+ return `Invalid ${paramName}: contains shell metacharacters. Value must not include: ; | & $ \` ( ) { } < > ! \\ ' " (also no newlines or carriage returns)`;
23
45
  }
24
46
  return null;
25
47
  }
@@ -32,6 +54,25 @@ export function validateShellArg(value, paramName) {
32
54
  export function shellEscape(str) {
33
55
  return str.replace(/'/g, "'\\''");
34
56
  }
57
+ /**
58
+ * Wrap a string as a single shell argument using POSIX single-quote escaping.
59
+ *
60
+ * Unlike `shellEscape` (which only escapes inner single quotes), this returns
61
+ * a fully-wrapped, ready-to-interpolate token. Use this whenever a value is
62
+ * being substituted into a backtick template literal that becomes a shell
63
+ * command — it's the safe replacement for ALL `${shellEscape(x)}` sites that
64
+ * weren't already wrapped by their caller.
65
+ *
66
+ * Algorithm: close the open quote, escape with backslash, reopen.
67
+ * foo'bar → 'foo'\''bar'
68
+ * plain → 'plain'
69
+ * "" → ''
70
+ *
71
+ * Safe-by-construction inside POSIX `sh -c`. Works with toybox sh on Android.
72
+ */
73
+ export function shellQuote(arg) {
74
+ return `'${arg.replace(/'/g, "'\\''")}'`;
75
+ }
35
76
  /**
36
77
  * Validate multiple arguments at once. Returns the first error found, or null if all pass.
37
78
  */
@@ -1 +1 @@
1
- {"version":3,"file":"sanitize.js","sourceRoot":"","sources":["../../src/middleware/sanitize.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,oEAAoE;AACpE,MAAM,oBAAoB,GAAG,wBAAwB,CAAC;AAEtD;;;;;;;;;GASG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAa,EAAE,SAAiB;IAC/D,IAAI,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACrC,OAAO,WAAW,SAAS,0FAA0F,CAAC;IACxH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAA6B;IAC7D,KAAK,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC;QACtC,MAAM,KAAK,GAAG,gBAAgB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QACjD,IAAI,KAAK;YAAE,OAAO,KAAK,CAAC;IAC1B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"sanitize.js","sourceRoot":"","sources":["../../src/middleware/sanitize.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,sCAAsC;AACtC;;;;;;GAMG;AAEH;;;;;;;;;;;GAWG;AACH,MAAM,oBAAoB,GAAG,wBAAwB,CAAC;AAEtD;;;;;;;;;GASG;AACH;;;;;;;;GAQG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAa,EAAE,SAAiB;IAC/D,IAAI,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACrC,OAAO,WAAW,SAAS,iIAAiI,CAAC;IAC/J,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACpC,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,UAAU,CAAC,GAAW;IACpC,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC;AAC3C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAA6B;IAC7D,KAAK,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC;QACtC,MAAM,KAAK,GAAG,gBAAgB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QACjD,IAAI,KAAK;YAAE,OAAO,KAAK,CAAC;IAC1B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"security.d.ts","sourceRoot":"","sources":["../../src/middleware/security.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,MAAM,WAAW,cAAc;IAC7B,2FAA2F;IAC3F,OAAO,EAAE,OAAO,CAAC;IACjB,+DAA+D;IAC/D,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,0FAA0F;IAC1F,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,kDAAkD;IAClD,SAAS,EAAE,MAAM,CAAC;IAClB,2CAA2C;IAC3C,QAAQ,EAAE,OAAO,CAAC;CACnB;AAOD,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,UAAU,CAAqD;gBAE3D,MAAM,EAAE,MAAM;IAwB1B,OAAO,CAAC,SAAS;IAKjB;;;OAGG;IACH,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IA8C7D;;OAEG;IACH,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAOnE,8CAA8C;IAC9C,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,qCAAqC;IACrC,aAAa,IAAI;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,CAAA;KAAE;IAS1E;;;OAGG;IACH,OAAO,CAAC,YAAY;CAarB"}
1
+ {"version":3,"file":"security.d.ts","sourceRoot":"","sources":["../../src/middleware/security.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,MAAM,WAAW,cAAc;IAC7B,2FAA2F;IAC3F,OAAO,EAAE,OAAO,CAAC;IACjB,+DAA+D;IAC/D,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,0FAA0F;IAC1F,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,kDAAkD;IAClD,SAAS,EAAE,MAAM,CAAC;IAClB,2CAA2C;IAC3C,QAAQ,EAAE,OAAO,CAAC;CACnB;AAOD,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,UAAU,CAAqD;gBAE3D,MAAM,EAAE,MAAM;IAwB1B,OAAO,CAAC,SAAS;IAKjB;;;OAGG;IACH,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IA4D7D;;OAEG;IACH,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAOnE,8CAA8C;IAC9C,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,qCAAqC;IACrC,aAAa,IAAI;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,CAAA;KAAE;IAS1E;;;OAGG;IACH,OAAO,CAAC,YAAY;CAsBrB"}
@@ -1,3 +1,5 @@
1
+ // Copyright 2026 Jason <fullread@github>
2
+ // SPDX-License-Identifier: Apache-2.0
1
3
  /**
2
4
  * Security Middleware — Command filtering, rate limiting, and audit logging.
3
5
  *
@@ -18,7 +20,7 @@ export class SecurityMiddleware {
18
20
  blockedCommands: this.parseList(process.env.DA_BLOCKED_COMMANDS),
19
21
  allowedCommands: this.parseList(process.env.DA_ALLOWED_COMMANDS),
20
22
  rateLimit: parseInt(process.env.DA_RATE_LIMIT ?? "0", 10) || 0,
21
- auditLog: process.env.DA_AUDIT_LOG !== "false",
23
+ auditLog: (process.env.DA_AUDIT_LOG ?? "").toLowerCase() !== "false", // E1 fix: case-insensitive disable check
22
24
  };
23
25
  if (this.config.enabled) {
24
26
  logger.info("Security middleware enabled");
@@ -50,7 +52,21 @@ export class SecurityMiddleware {
50
52
  }
51
53
  if (!this.config.enabled)
52
54
  return null;
53
- // Rate limiting
55
+ // Rate limiting.
56
+ //
57
+ // G1 design note: this is a SINGLE GLOBAL bucket — there is no
58
+ // per-device, per-tool, or per-token isolation. Under the documented
59
+ // single-operator threat model (one operator, one MCP client, possibly
60
+ // multiple devices) this is sufficient: the limiter exists to backstop
61
+ // accidental tool-call fan-out (an LLM loop spamming requests), not
62
+ // to fairly arbitrate among competing clients. A burst from one
63
+ // workflow CAN briefly rate-limit another workflow on the same server
64
+ // — accept that under the threat model.
65
+ //
66
+ // If you ever need fairness across devices/tools/tokens, replace
67
+ // `this.rateBucket` with a `Map<key, bucket>` keyed by a stable
68
+ // dimension. Don't ship that as a default without re-deriving the
69
+ // memory bound (each bucket adds 16 bytes ish; cap the map size).
54
70
  if (this.config.rateLimit > 0) {
55
71
  const now = Date.now();
56
72
  const windowMs = 60_000;
@@ -67,7 +83,7 @@ export class SecurityMiddleware {
67
83
  const cmdLower = command.toLowerCase();
68
84
  for (const blocked of this.config.blockedCommands) {
69
85
  if (cmdLower.includes(blocked.toLowerCase())) {
70
- this.logger.warn(`Blocked command: ${command} (matched: ${blocked})`);
86
+ this.logger.warn(`Blocked command: ${this.redactForLog(command)} (matched: ${blocked})`);
71
87
  return `Command blocked by security policy (matched: "${blocked}").`;
72
88
  }
73
89
  }
@@ -75,7 +91,7 @@ export class SecurityMiddleware {
75
91
  if (this.config.allowedCommands.length > 0) {
76
92
  const allowed = this.config.allowedCommands.some((pattern) => cmdLower.includes(pattern.toLowerCase()));
77
93
  if (!allowed) {
78
- this.logger.warn(`Command not in allowlist: ${command}`);
94
+ this.logger.warn(`Command not in allowlist: ${this.redactForLog(command)}`);
79
95
  return "Command not in security allowlist.";
80
96
  }
81
97
  }
@@ -112,9 +128,18 @@ export class SecurityMiddleware {
112
128
  const MAX_LOG_LENGTH = 200;
113
129
  // Mask common credential patterns
114
130
  let redacted = command
115
- .replace(/(?:password|passwd|token|secret|key|auth)([\s=:]+)\S+/gi, (_, sep) => `***${sep}***REDACTED***`)
131
+ .replace(/(?:password|passwd|token|secret|api[_-]?key|bearer|authorization|auth)([\s=:]+)\S+/gi, (_, sep) => `***${sep}***REDACTED***`)
116
132
  .replace(/echo\s+["'].*?["']\s*>\s*/g, "echo '***' > ");
117
133
  if (redacted.length > MAX_LOG_LENGTH) {
134
+ // E5 note: emitting `command.length` here is a WEAK side-channel.
135
+ // A sudden +64 chars vs the operator's typical command-length baseline
136
+ // is a strong hint that a hex token was on the command line. Under
137
+ // DeepADB's threat model (single trusted operator on a host they
138
+ // control) this is acceptable — the operator sees their own audit
139
+ // log. For deployments shipping the audit log to an external SIEM
140
+ // or shared log aggregator, consider redacting the length too
141
+ // (replace with a coarse bucket like "+truncated"). Documented at
142
+ // the source so future log-egress changes can revisit.
118
143
  redacted = redacted.substring(0, MAX_LOG_LENGTH) + `... (${command.length} chars total)`;
119
144
  }
120
145
  return redacted;
@@ -1 +1 @@
1
- {"version":3,"file":"security.js","sourceRoot":"","sources":["../../src/middleware/security.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"security.js","sourceRoot":"","sources":["../../src/middleware/security.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ui-dump.d.ts","sourceRoot":"","sources":["../../src/middleware/ui-dump.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAIpD;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAUlD,CAAC;AAEF,4EAA4E;AAC5E,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAK3D;AAED;;;;;;GAMG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAmBxB;AAED,+CAA+C;AAC/C,MAAM,WAAW,SAAS;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CACxG;AAED,uDAAuD;AACvD,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,GAAG,SAAS,EAAE,CAyC7E"}
1
+ {"version":3,"file":"ui-dump.d.ts","sourceRoot":"","sources":["../../src/middleware/ui-dump.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAIpD;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAUlD,CAAC;AAEF,4EAA4E;AAC5E,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAK3D;AAED;;;;;;GAMG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAqCxB;AAED,+CAA+C;AAC/C,MAAM,WAAW,SAAS;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CACxG;AAED,uDAAuD;AACvD,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,GAAG,SAAS,EAAE,CAyC7E"}
@@ -1,11 +1,13 @@
1
+ // Copyright 2026 Jason <fullread@github>
2
+ // SPDX-License-Identifier: Apache-2.0
1
3
  /**
2
4
  * UI Dump Utilities — Shared uiautomator XML capture and attribute parsing.
3
5
  *
4
6
  * Used by ui.ts, accessibility.ts, and test-gen.ts to avoid duplicating
5
7
  * the dump→cat→rm pattern and regex-based attribute extraction.
6
8
  */
7
- import { isOnDevice } from "../config/config.js";
8
- import { shellEscape } from "./sanitize.js";
9
+ import { shellQuote } from "./sanitize.js";
10
+ import { randomBytes } from "crypto";
9
11
  /**
10
12
  * Pre-compiled regexes for uiautomator XML attribute extraction.
11
13
  * Avoids creating new RegExp objects inside hot parsing loops.
@@ -37,14 +39,32 @@ export function getAttr(attrs, name) {
37
39
  * Returns the XML string, or null if the dump failed.
38
40
  */
39
41
  export async function captureUiDump(bridge, serial, dumpPath) {
40
- // On-device: use /data/local/tmp/ which is world-readable/writable — avoids
41
- // scoped storage issues with /sdcard/ on Android 16+.
42
- // ADB mode: use /sdcard/ which is the standard ADB scratch location.
43
- const defaultDir = isOnDevice() ? "/data/local/tmp" : "/sdcard";
44
- const path = dumpPath ?? `${defaultDir}/DA_uidump_${Date.now()}.xml`;
42
+ // Use /data/local/tmp on the device — owned by the shell user, readable
43
+ // and writable in both rooted on-device and standard ADB modes, and not
44
+ // affected by Android 16+ scoped storage on /sdcard.
45
+ //
46
+ // Default filename embeds pid + timestamp + 4 random bytes so concurrent
47
+ // captureUiDump() calls cannot collide on the same path. Without the random
48
+ // suffix, two calls within the same millisecond (plausible under MCP tool
49
+ // fan-out) would write to the same file and race on read/cleanup.
50
+ const defaultDir = "/data/local/tmp";
51
+ const suffix = randomBytes(4).toString("hex");
52
+ // L1 fix: if a caller supplies dumpPath, ensure it stays under
53
+ // /data/local/tmp or /sdcard. Without this, a buggy caller could pass
54
+ // e.g., /system/etc/hostile.xml — uiautomator dump runs as shell user
55
+ // which can write some places it shouldn't be using as scratch. The
56
+ // device-side rm in the finally block would then delete from those
57
+ // places. Restricting to known scratch dirs eliminates the misuse.
58
+ if (dumpPath !== undefined) {
59
+ const allowed = ["/data/local/tmp/", "/sdcard/"];
60
+ if (!allowed.some(prefix => dumpPath.startsWith(prefix))) {
61
+ throw new Error(`captureUiDump dumpPath must start with one of ${allowed.join(", ")}; got: ${dumpPath}`);
62
+ }
63
+ }
64
+ const path = dumpPath ?? `${defaultDir}/DA_uidump_${process.pid}_${Date.now()}_${suffix}.xml`;
45
65
  try {
46
- await bridge.shell(`uiautomator dump '${shellEscape(path)}'`, { device: serial, timeout: 15000 });
47
- const catResult = await bridge.shell(`cat '${shellEscape(path)}'`, { device: serial });
66
+ await bridge.shell(`uiautomator dump ${shellQuote(path)}`, { device: serial, timeout: 15000 });
67
+ const catResult = await bridge.shell(`cat ${shellQuote(path)}`, { device: serial });
48
68
  const xml = catResult.stdout;
49
69
  if (!xml || xml.includes("ERROR") || !xml.includes("<hierarchy")) {
50
70
  return null;
@@ -53,7 +73,7 @@ export async function captureUiDump(bridge, serial, dumpPath) {
53
73
  }
54
74
  finally {
55
75
  // Always clean up the device-side dump file, even if cat/dump throws
56
- await bridge.shell(`rm '${shellEscape(path)}'`, { device: serial, ignoreExitCode: true }).catch(() => { });
76
+ await bridge.shell(`rm ${shellQuote(path)}`, { device: serial, ignoreExitCode: true }).catch(() => { });
57
77
  }
58
78
  }
59
79
  /** Parse <node> elements from uiautomator XML dump. */
@@ -1 +1 @@
1
- {"version":3,"file":"ui-dump.js","sourceRoot":"","sources":["../../src/middleware/ui-dump.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ui-dump.js","sourceRoot":"","sources":["../../src/middleware/ui-dump.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAEnD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAuDhD,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,SAAS,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,SAAS,CAAC;IAClB,aAAa,EAAE,aAAa,CAAC;CAC9B;AAED,wBAAsB,YAAY,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAuFhE"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGpE,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAEnD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAyDhD,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,SAAS,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,SAAS,CAAC;IAClB,aAAa,EAAE,aAAa,CAAC;CAC9B;AAED,wBAAsB,YAAY,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAgHhE"}
package/build/server.js CHANGED
@@ -1,3 +1,5 @@
1
+ // Copyright 2026 Jason <fullread@github>
2
+ // SPDX-License-Identifier: Apache-2.0
1
3
  /**
2
4
  * DeepADB MCP Server
3
5
  *
@@ -5,7 +7,8 @@
5
7
  * and all tool/resource/prompt modules into a single MCP server instance.
6
8
  */
7
9
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
8
- import { mkdirSync, existsSync } from "fs";
10
+ import { existsSync } from "fs";
11
+ import { ensurePrivateDir } from "./middleware/fs-utils.js";
9
12
  import { AdbBridge } from "./bridge/adb-bridge.js";
10
13
  import { LocalBridge } from "./bridge/local-bridge.js";
11
14
  import { DeviceManager } from "./bridge/device-manager.js";
@@ -57,11 +60,30 @@ import { registerNetworkDiscoveryTools } from "./tools/network-discovery.js";
57
60
  import { registerSensorTools } from "./tools/sensors.js";
58
61
  import { registerWirelessFirmwareTools } from "./tools/wireless-firmware.js";
59
62
  import { registerInputGestureTools } from "./tools/input-gestures.js";
63
+ import { registerResultHandleTools } from "./tools/result-handles.js";
64
+ import { startupSweep as resultHandleStartupSweep } from "./middleware/result-handle.js";
60
65
  // Resource and prompt registrations
61
66
  import { registerResources } from "./tools/resources.js";
62
67
  import { registerPrompts } from "./tools/prompts.js";
63
68
  export async function createServer() {
64
- const logger = new Logger(process.env.DA_LOG_LEVEL ?? "info");
69
+ // BM1 fix (M2+Q1): validate DA_LOG_LEVEL against the enum at runtime instead
70
+ // of using an unchecked `as` cast. The bare cast silently accepts any string
71
+ // (e.g., DA_LOG_LEVEL=verbose) and was passed to Logger which then disabled
72
+ // all logging because the value didn't match any threshold. Fail-open to
73
+ // "info" with a stderr warning when the env var is set but invalid.
74
+ const VALID_LOG_LEVELS = ["debug", "info", "warn", "error"];
75
+ const rawLevel = process.env.DA_LOG_LEVEL;
76
+ let logLevel = "info";
77
+ if (rawLevel !== undefined) {
78
+ if (VALID_LOG_LEVELS.includes(rawLevel)) {
79
+ logLevel = rawLevel;
80
+ }
81
+ else {
82
+ console.error(`[DeepADB] Invalid DA_LOG_LEVEL=${JSON.stringify(rawLevel)}. ` +
83
+ `Valid values: ${VALID_LOG_LEVELS.join(", ")}. Falling back to "info".`);
84
+ }
85
+ }
86
+ const logger = new Logger(logLevel);
65
87
  // Validate configuration at startup
66
88
  const warnings = validateConfig();
67
89
  for (const warning of warnings) {
@@ -69,7 +91,7 @@ export async function createServer() {
69
91
  }
70
92
  // Ensure temp directory exists once, before any tool module registration
71
93
  if (!existsSync(config.tempDir)) {
72
- mkdirSync(config.tempDir, { recursive: true });
94
+ ensurePrivateDir(config.tempDir);
73
95
  }
74
96
  const bridge = isOnDevice() ? new LocalBridge(logger) : new AdbBridge(logger);
75
97
  if (bridge instanceof LocalBridge) {
@@ -83,7 +105,7 @@ export async function createServer() {
83
105
  });
84
106
  // Build unified tool context
85
107
  const ctx = { server, bridge, deviceManager, logger, security, config };
86
- // Register all tool modules (44 modules)
108
+ // Register all tool modules (45 modules)
87
109
  registerDeviceTools(ctx);
88
110
  registerShellTools(ctx);
89
111
  registerPackageTools(ctx);
@@ -128,12 +150,19 @@ export async function createServer() {
128
150
  registerSensorTools(ctx);
129
151
  registerWirelessFirmwareTools(ctx);
130
152
  registerInputGestureTools(ctx);
153
+ registerResultHandleTools(ctx);
131
154
  // Register MCP resources and prompts
132
155
  registerResources(ctx);
133
156
  registerPrompts(ctx);
134
157
  // Load external plugins (async — scans plugin directory)
135
158
  await loadPlugins(ctx);
136
- logger.info("DeepADB MCP server initialized — 44 tool modules, 4 resources, 4 prompts. Ready.");
159
+ // Sweep any handles left over from prior sessions: enforce TTL + size caps
160
+ // against the on-disk store. Reports only if there was something to clean.
161
+ const sweepResult = resultHandleStartupSweep();
162
+ if (sweepResult.evicted > 0 || sweepResult.kept > 0) {
163
+ logger.info(`Result-handle store: ${sweepResult.kept} active, ${sweepResult.evicted} evicted at startup.`);
164
+ }
165
+ logger.info("DeepADB MCP server initialized — 45 tool modules, 5 resources, 4 prompts. Ready.");
137
166
  return { server, logger, bridge, deviceManager };
138
167
  }
139
168
  //# sourceMappingURL=server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"tool-context.d.ts","sourceRoot":"","sources":["../src/tool-context.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,SAAS,CAAC;IAClB,MAAM,EAAE,SAAS,CAAC;IAClB,aAAa,EAAE,aAAa,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,MAAM,EAAE,aAAa,CAAC;CACvB"}
1
+ {"version":3,"file":"tool-context.d.ts","sourceRoot":"","sources":["../src/tool-context.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,SAAS,CAAC;IAClB,MAAM,EAAE,SAAS,CAAC;IAClB,aAAa,EAAE,aAAa,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,MAAM,EAAE,aAAa,CAAC;CACvB"}
@@ -1,3 +1,5 @@
1
+ // Copyright 2026 Jason <fullread@github>
2
+ // SPDX-License-Identifier: Apache-2.0
1
3
  /**
2
4
  * ToolContext — Unified dependency bundle for all tool modules.
3
5
  *
@@ -1 +1 @@
1
- {"version":3,"file":"tool-context.js","sourceRoot":"","sources":["../src/tool-context.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
1
+ {"version":3,"file":"tool-context.js","sourceRoot":"","sources":["../src/tool-context.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,sCAAsC;AACtC;;;;;;GAMG"}
@@ -1 +1 @@
1
- {"version":3,"file":"accessibility.d.ts","sourceRoot":"","sources":["../../src/tools/accessibility.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAoJjD,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CAqKjE"}
1
+ {"version":3,"file":"accessibility.d.ts","sourceRoot":"","sources":["../../src/tools/accessibility.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AA+IjD,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CAmKjE"}
@@ -1,3 +1,5 @@
1
+ // Copyright 2026 Jason <fullread@github>
2
+ // SPDX-License-Identifier: Apache-2.0
1
3
  /**
2
4
  * Accessibility Auditing Tools — Automated a11y checks on the UI hierarchy.
3
5
  *
@@ -7,47 +9,46 @@
7
9
  */
8
10
  import { z } from "zod";
9
11
  import { OutputProcessor } from "../middleware/output-processor.js";
10
- import { captureUiDump, UI_ATTR_REGEXES } from "../middleware/ui-dump.js";
12
+ import { captureUiDump, parseUiNodes } from "../middleware/ui-dump.js";
11
13
  /** Minimum touch target size in dp (WCAG / Material Design guideline). */
12
14
  const MIN_TOUCH_TARGET_DP = 48;
13
15
  /** Default screen density for dp conversion (mdpi baseline). */
16
+ // S2 fix: `wm density` output may contain TWO densities — Physical and
17
+ // Override. The previous regex `/(\d+)/` captured the first digit run,
18
+ // always Physical. If the user has set an Override density, that's the
19
+ // effective value for dp conversion. Parse Override first, fall back to
20
+ // Physical, then the bare digit pattern.
21
+ function parseWmDensity(stdout, fallback) {
22
+ const override = stdout.match(/Override density:\s*(\d+)/);
23
+ if (override)
24
+ return parseInt(override[1], 10);
25
+ const physical = stdout.match(/Physical density:\s*(\d+)/);
26
+ if (physical)
27
+ return parseInt(physical[1], 10);
28
+ const digits = stdout.match(/(\d+)/);
29
+ return digits ? parseInt(digits[1], 10) : fallback;
30
+ }
14
31
  const DEFAULT_DENSITY = 160;
15
- const ATTR_REGEXES = UI_ATTR_REGEXES;
32
+ /**
33
+ * S1 fix: delegate to the canonical `parseUiNodes` in ui-dump.ts and
34
+ * post-process to derive A11yElement-specific fields (widthPx, heightPx).
35
+ * Previously this duplicated the entire `<node>` regex + attr extraction
36
+ * + bounds parsing already implemented in ui-dump. Single source of truth.
37
+ */
16
38
  function parseElements(xml) {
17
- const elements = [];
18
- const nodeRegex = /<node\s+([^>]+)\/?>/g;
19
- let match;
20
- while ((match = nodeRegex.exec(xml)) !== null) {
21
- const attrs = match[1];
22
- const get = (name) => {
23
- const regex = ATTR_REGEXES[name];
24
- if (!regex)
25
- return "";
26
- const m = attrs.match(regex);
27
- return m ? m[1] : "";
28
- };
29
- const boundsStr = get("bounds");
30
- const boundsMatch = boundsStr.match(/\[(\d+),(\d+)\]\[(\d+),(\d+)\]/);
31
- if (!boundsMatch)
32
- continue;
33
- const left = parseInt(boundsMatch[1], 10);
34
- const top = parseInt(boundsMatch[2], 10);
35
- const right = parseInt(boundsMatch[3], 10);
36
- const bottom = parseInt(boundsMatch[4], 10);
37
- elements.push({
38
- className: get("class").replace("android.widget.", "").replace("android.view.", ""),
39
- text: get("text"),
40
- contentDesc: get("content-desc"),
41
- resourceId: get("resource-id"),
42
- clickable: get("clickable") === "true",
43
- focusable: get("focusable") === "true",
44
- enabled: get("enabled") !== "false",
45
- bounds: { left, top, right, bottom },
46
- widthPx: right - left,
47
- heightPx: bottom - top,
48
- });
49
- }
50
- return elements;
39
+ const nodes = parseUiNodes(xml, /* clickableOnly */ false);
40
+ return nodes.map((n) => ({
41
+ className: n.className,
42
+ text: n.text,
43
+ contentDesc: n.contentDesc,
44
+ resourceId: n.resourceId,
45
+ clickable: n.clickable,
46
+ focusable: n.focusable,
47
+ enabled: n.enabled,
48
+ bounds: { left: n.bounds.left, top: n.bounds.top, right: n.bounds.right, bottom: n.bounds.bottom },
49
+ widthPx: n.bounds.right - n.bounds.left,
50
+ heightPx: n.bounds.bottom - n.bounds.top,
51
+ }));
51
52
  }
52
53
  function elementLabel(el) {
53
54
  const parts = [el.className];
@@ -132,8 +133,7 @@ export function registerAccessibilityTools(ctx) {
132
133
  }
133
134
  // Get screen density for dp conversion
134
135
  const densityResult = await ctx.bridge.shell("wm density", { device: serial, ignoreExitCode: true });
135
- const densityMatch = densityResult.stdout.match(/(\d+)/);
136
- const density = densityMatch ? parseInt(densityMatch[1], 10) : DEFAULT_DENSITY;
136
+ const density = parseWmDensity(densityResult.stdout, DEFAULT_DENSITY);
137
137
  const elements = parseElements(xml);
138
138
  const clickable = elements.filter((el) => el.clickable);
139
139
  const issues = runAudit(elements, density);
@@ -178,8 +178,7 @@ export function registerAccessibilityTools(ctx) {
178
178
  return { content: [{ type: "text", text: "Failed to capture UI hierarchy." }], isError: true };
179
179
  }
180
180
  const densityResult = await ctx.bridge.shell("wm density", { device: serial, ignoreExitCode: true });
181
- const densityMatch = densityResult.stdout.match(/(\d+)/);
182
- const density = densityMatch ? parseInt(densityMatch[1], 10) : DEFAULT_DENSITY;
181
+ const density = parseWmDensity(densityResult.stdout, DEFAULT_DENSITY);
183
182
  const dpScale = density / DEFAULT_DENSITY;
184
183
  const elements = parseElements(xml);
185
184
  const clickable = elements.filter((el) => el.clickable && el.widthPx > 0 && el.heightPx > 0);
@@ -1 +1 @@
1
- {"version":3,"file":"accessibility.js","sourceRoot":"","sources":["../../src/tools/accessibility.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"accessibility.js","sourceRoot":"","sources":["../../src/tools/accessibility.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"at-commands.d.ts","sourceRoot":"","sources":["../../src/tools/at-commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAqIjD,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CA4d7D"}
1
+ {"version":3,"file":"at-commands.d.ts","sourceRoot":"","sources":["../../src/tools/at-commands.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AA0JjD,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CA8d7D"}