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.
- package/LICENSE +202 -21
- package/NOTICE +16 -0
- package/README.md +55 -29
- package/build/bridge/adb-bridge.d.ts +14 -0
- package/build/bridge/adb-bridge.d.ts.map +1 -1
- package/build/bridge/adb-bridge.js +34 -5
- package/build/bridge/adb-bridge.js.map +1 -1
- package/build/bridge/device-manager.d.ts.map +1 -1
- package/build/bridge/device-manager.js +18 -9
- package/build/bridge/device-manager.js.map +1 -1
- package/build/bridge/local-bridge.d.ts +10 -2
- package/build/bridge/local-bridge.d.ts.map +1 -1
- package/build/bridge/local-bridge.js +51 -16
- package/build/bridge/local-bridge.js.map +1 -1
- package/build/config/config.d.ts +7 -0
- package/build/config/config.d.ts.map +1 -1
- package/build/config/config.js +26 -10
- package/build/config/config.js.map +1 -1
- package/build/graphql-api.d.ts.map +1 -1
- package/build/graphql-api.js +73 -3
- package/build/graphql-api.js.map +1 -1
- package/build/http-transport.d.ts.map +1 -1
- package/build/http-transport.js +44 -7
- package/build/http-transport.js.map +1 -1
- package/build/index.d.ts.map +1 -1
- package/build/index.js +41 -16
- package/build/index.js.map +1 -1
- package/build/middleware/auth.d.ts.map +1 -1
- package/build/middleware/auth.js +43 -6
- package/build/middleware/auth.js.map +1 -1
- package/build/middleware/chipset.d.ts.map +1 -1
- package/build/middleware/chipset.js +16 -1
- package/build/middleware/chipset.js.map +1 -1
- package/build/middleware/cleanup.d.ts +39 -7
- package/build/middleware/cleanup.d.ts.map +1 -1
- package/build/middleware/cleanup.js +148 -16
- package/build/middleware/cleanup.js.map +1 -1
- package/build/middleware/fetch-utils.d.ts +50 -7
- package/build/middleware/fetch-utils.d.ts.map +1 -1
- package/build/middleware/fetch-utils.js +127 -14
- package/build/middleware/fetch-utils.js.map +1 -1
- package/build/middleware/fs-utils.d.ts +126 -0
- package/build/middleware/fs-utils.d.ts.map +1 -0
- package/build/middleware/fs-utils.js +229 -0
- package/build/middleware/fs-utils.js.map +1 -0
- package/build/middleware/logger.d.ts +16 -0
- package/build/middleware/logger.d.ts.map +1 -1
- package/build/middleware/logger.js +18 -0
- package/build/middleware/logger.js.map +1 -1
- package/build/middleware/output-processor.d.ts.map +1 -1
- package/build/middleware/output-processor.js +43 -8
- package/build/middleware/output-processor.js.map +1 -1
- package/build/middleware/parse-utils.d.ts +19 -0
- package/build/middleware/parse-utils.d.ts.map +1 -0
- package/build/middleware/parse-utils.js +30 -0
- package/build/middleware/parse-utils.js.map +1 -0
- package/build/middleware/png-utils.d.ts.map +1 -1
- package/build/middleware/png-utils.js +33 -11
- package/build/middleware/png-utils.js.map +1 -1
- package/build/middleware/result-handle.d.ts +76 -0
- package/build/middleware/result-handle.d.ts.map +1 -0
- package/build/middleware/result-handle.js +378 -0
- package/build/middleware/result-handle.js.map +1 -0
- package/build/middleware/sanitize.d.ts +26 -0
- package/build/middleware/sanitize.d.ts.map +1 -1
- package/build/middleware/sanitize.js +43 -2
- package/build/middleware/sanitize.js.map +1 -1
- package/build/middleware/security.d.ts.map +1 -1
- package/build/middleware/security.js +30 -5
- package/build/middleware/security.js.map +1 -1
- package/build/middleware/ui-dump.d.ts.map +1 -1
- package/build/middleware/ui-dump.js +30 -10
- package/build/middleware/ui-dump.js.map +1 -1
- package/build/server.d.ts.map +1 -1
- package/build/server.js +34 -5
- package/build/server.js.map +1 -1
- package/build/tool-context.d.ts.map +1 -1
- package/build/tool-context.js +2 -0
- package/build/tool-context.js.map +1 -1
- package/build/tools/accessibility.d.ts.map +1 -1
- package/build/tools/accessibility.js +39 -40
- package/build/tools/accessibility.js.map +1 -1
- package/build/tools/at-commands.d.ts.map +1 -1
- package/build/tools/at-commands.js +31 -6
- package/build/tools/at-commands.js.map +1 -1
- package/build/tools/baseband.d.ts.map +1 -1
- package/build/tools/baseband.js +18 -7
- package/build/tools/baseband.js.map +1 -1
- package/build/tools/build.d.ts.map +1 -1
- package/build/tools/build.js +30 -8
- package/build/tools/build.js.map +1 -1
- package/build/tools/ci.d.ts.map +1 -1
- package/build/tools/ci.js +16 -5
- package/build/tools/ci.js.map +1 -1
- package/build/tools/control.d.ts.map +1 -1
- package/build/tools/control.js +19 -11
- package/build/tools/control.js.map +1 -1
- package/build/tools/device-farm.d.ts.map +1 -1
- package/build/tools/device-farm.js +27 -3
- package/build/tools/device-farm.js.map +1 -1
- package/build/tools/device-profiles.d.ts.map +1 -1
- package/build/tools/device-profiles.js +70 -8
- package/build/tools/device-profiles.js.map +1 -1
- package/build/tools/device.d.ts.map +1 -1
- package/build/tools/device.js +4 -2
- package/build/tools/device.js.map +1 -1
- package/build/tools/diagnostics.d.ts.map +1 -1
- package/build/tools/diagnostics.js +17 -9
- package/build/tools/diagnostics.js.map +1 -1
- package/build/tools/emulator.d.ts.map +1 -1
- package/build/tools/emulator.js +12 -13
- package/build/tools/emulator.js.map +1 -1
- package/build/tools/files.d.ts +1 -1
- package/build/tools/files.d.ts.map +1 -1
- package/build/tools/files.js +98 -56
- package/build/tools/files.js.map +1 -1
- package/build/tools/firmware-analysis.d.ts.map +1 -1
- package/build/tools/firmware-analysis.js +35 -12
- package/build/tools/firmware-analysis.js.map +1 -1
- package/build/tools/forwarding.d.ts.map +1 -1
- package/build/tools/forwarding.js +248 -6
- package/build/tools/forwarding.js.map +1 -1
- package/build/tools/health.d.ts.map +1 -1
- package/build/tools/health.js +14 -3
- package/build/tools/health.js.map +1 -1
- package/build/tools/input-gestures.d.ts.map +1 -1
- package/build/tools/input-gestures.js +65 -13
- package/build/tools/input-gestures.js.map +1 -1
- package/build/tools/logcat-watch.d.ts.map +1 -1
- package/build/tools/logcat-watch.js +21 -14
- package/build/tools/logcat-watch.js.map +1 -1
- package/build/tools/logs.d.ts.map +1 -1
- package/build/tools/logs.js +8 -4
- package/build/tools/logs.js.map +1 -1
- package/build/tools/mirroring.d.ts.map +1 -1
- package/build/tools/mirroring.js +21 -19
- package/build/tools/mirroring.js.map +1 -1
- package/build/tools/multi-device.d.ts.map +1 -1
- package/build/tools/multi-device.js +10 -0
- package/build/tools/multi-device.js.map +1 -1
- package/build/tools/network-capture.d.ts.map +1 -1
- package/build/tools/network-capture.js +32 -8
- package/build/tools/network-capture.js.map +1 -1
- package/build/tools/network-discovery.d.ts.map +1 -1
- package/build/tools/network-discovery.js +11 -2
- package/build/tools/network-discovery.js.map +1 -1
- package/build/tools/ota-monitor.d.ts.map +1 -1
- package/build/tools/ota-monitor.js +26 -12
- package/build/tools/ota-monitor.js.map +1 -1
- package/build/tools/packages.d.ts.map +1 -1
- package/build/tools/packages.js +18 -11
- package/build/tools/packages.js.map +1 -1
- package/build/tools/plugins.d.ts +18 -0
- package/build/tools/plugins.d.ts.map +1 -1
- package/build/tools/plugins.js +47 -2
- package/build/tools/plugins.js.map +1 -1
- package/build/tools/prompts.d.ts.map +1 -1
- package/build/tools/prompts.js +2 -0
- package/build/tools/prompts.js.map +1 -1
- package/build/tools/qemu.d.ts +6 -3
- package/build/tools/qemu.d.ts.map +1 -1
- package/build/tools/qemu.js +28 -16
- package/build/tools/qemu.js.map +1 -1
- package/build/tools/registry.d.ts.map +1 -1
- package/build/tools/registry.js +76 -26
- package/build/tools/registry.js.map +1 -1
- package/build/tools/regression.d.ts +37 -0
- package/build/tools/regression.d.ts.map +1 -1
- package/build/tools/regression.js +63 -22
- package/build/tools/regression.js.map +1 -1
- package/build/tools/resources.d.ts.map +1 -1
- package/build/tools/resources.js +62 -15
- package/build/tools/resources.js.map +1 -1
- package/build/tools/result-handles.d.ts +37 -0
- package/build/tools/result-handles.d.ts.map +1 -0
- package/build/tools/result-handles.js +286 -0
- package/build/tools/result-handles.js.map +1 -0
- package/build/tools/ril-intercept.d.ts.map +1 -1
- package/build/tools/ril-intercept.js +15 -18
- package/build/tools/ril-intercept.js.map +1 -1
- package/build/tools/screen-record.d.ts.map +1 -1
- package/build/tools/screen-record.js +34 -5
- package/build/tools/screen-record.js.map +1 -1
- package/build/tools/screenshot-diff.d.ts.map +1 -1
- package/build/tools/screenshot-diff.js +29 -21
- package/build/tools/screenshot-diff.js.map +1 -1
- package/build/tools/selinux-audit.d.ts.map +1 -1
- package/build/tools/selinux-audit.js +7 -5
- package/build/tools/selinux-audit.js.map +1 -1
- package/build/tools/sensors.d.ts.map +1 -1
- package/build/tools/sensors.js +26 -4
- package/build/tools/sensors.js.map +1 -1
- package/build/tools/shell.d.ts.map +1 -1
- package/build/tools/shell.js +9 -0
- package/build/tools/shell.js.map +1 -1
- package/build/tools/snapshot.d.ts.map +1 -1
- package/build/tools/snapshot.js +38 -19
- package/build/tools/snapshot.js.map +1 -1
- package/build/tools/split-apk.d.ts.map +1 -1
- package/build/tools/split-apk.js +48 -24
- package/build/tools/split-apk.js.map +1 -1
- package/build/tools/test-gen.d.ts.map +1 -1
- package/build/tools/test-gen.js +29 -10
- package/build/tools/test-gen.js.map +1 -1
- package/build/tools/testing.d.ts.map +1 -1
- package/build/tools/testing.js +27 -9
- package/build/tools/testing.js.map +1 -1
- package/build/tools/thermal-power.d.ts +8 -1
- package/build/tools/thermal-power.d.ts.map +1 -1
- package/build/tools/thermal-power.js +35 -10
- package/build/tools/thermal-power.js.map +1 -1
- package/build/tools/ui.d.ts.map +1 -1
- package/build/tools/ui.js +20 -13
- package/build/tools/ui.js.map +1 -1
- package/build/tools/wireless-firmware.d.ts.map +1 -1
- package/build/tools/wireless-firmware.js +21 -7
- package/build/tools/wireless-firmware.js.map +1 -1
- package/build/tools/wireless.d.ts.map +1 -1
- package/build/tools/wireless.js +39 -3
- package/build/tools/wireless.js.map +1 -1
- package/build/tools/workflow-market.d.ts.map +1 -1
- package/build/tools/workflow-market.js +67 -13
- package/build/tools/workflow-market.js.map +1 -1
- package/build/tools/workflow.d.ts.map +1 -1
- package/build/tools/workflow.js +77 -8
- package/build/tools/workflow.js.map +1 -1
- package/build/ws-transport.d.ts.map +1 -1
- package/build/ws-transport.js +21 -3
- package/build/ws-transport.js.map +1 -1
- 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
|
-
/**
|
|
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
|
|
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":"
|
|
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":"AAAA;;;;;;;;GAQG;AAsBH,MAAM,OAAO,kBAAkB;IACrB,MAAM,CAAiB;IACvB,MAAM,CAAS;IACf,UAAU,GAAe,EAAE,KAAK,EAAE,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;IAEvE,YAAY,MAAc;QACxB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG;YACZ,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,MAAM;YAC3C,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;YAChE,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;YAChE,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC;YAC9D,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY,KAAK,OAAO;
|
|
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":"
|
|
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 {
|
|
8
|
-
import {
|
|
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
|
-
//
|
|
41
|
-
//
|
|
42
|
-
//
|
|
43
|
-
|
|
44
|
-
|
|
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
|
|
47
|
-
const catResult = await bridge.shell(`cat
|
|
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
|
|
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":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"ui-dump.js","sourceRoot":"","sources":["../../src/middleware/ui-dump.ts"],"names":[],"mappings":"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"}
|
package/build/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"
|
|
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 {
|
|
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
|
-
|
|
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
|
-
|
|
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 (
|
|
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
|
-
|
|
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
|
package/build/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,
|
|
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":"
|
|
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"}
|
package/build/tool-context.js
CHANGED
|
@@ -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":"
|
|
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,
|
|
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
|
-
|
|
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
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
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
|
|
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
|
|
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":"
|
|
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"}
|