deepadb 1.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 (247) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +631 -0
  3. package/build/bridge/adb-bridge.d.ts +65 -0
  4. package/build/bridge/adb-bridge.d.ts.map +1 -0
  5. package/build/bridge/adb-bridge.js +164 -0
  6. package/build/bridge/adb-bridge.js.map +1 -0
  7. package/build/bridge/device-manager.d.ts +41 -0
  8. package/build/bridge/device-manager.d.ts.map +1 -0
  9. package/build/bridge/device-manager.js +109 -0
  10. package/build/bridge/device-manager.js.map +1 -0
  11. package/build/bridge/local-bridge.d.ts +92 -0
  12. package/build/bridge/local-bridge.d.ts.map +1 -0
  13. package/build/bridge/local-bridge.js +345 -0
  14. package/build/bridge/local-bridge.js.map +1 -0
  15. package/build/config/config.d.ts +39 -0
  16. package/build/config/config.d.ts.map +1 -0
  17. package/build/config/config.js +84 -0
  18. package/build/config/config.js.map +1 -0
  19. package/build/graphql-api.d.ts +36 -0
  20. package/build/graphql-api.d.ts.map +1 -0
  21. package/build/graphql-api.js +296 -0
  22. package/build/graphql-api.js.map +1 -0
  23. package/build/http-transport.d.ts +26 -0
  24. package/build/http-transport.d.ts.map +1 -0
  25. package/build/http-transport.js +105 -0
  26. package/build/http-transport.js.map +1 -0
  27. package/build/index.d.ts +14 -0
  28. package/build/index.d.ts.map +1 -0
  29. package/build/index.js +66 -0
  30. package/build/index.js.map +1 -0
  31. package/build/middleware/chipset.d.ts +29 -0
  32. package/build/middleware/chipset.d.ts.map +1 -0
  33. package/build/middleware/chipset.js +123 -0
  34. package/build/middleware/chipset.js.map +1 -0
  35. package/build/middleware/cleanup.d.ts +24 -0
  36. package/build/middleware/cleanup.d.ts.map +1 -0
  37. package/build/middleware/cleanup.js +53 -0
  38. package/build/middleware/cleanup.js.map +1 -0
  39. package/build/middleware/fetch-utils.d.ts +19 -0
  40. package/build/middleware/fetch-utils.d.ts.map +1 -0
  41. package/build/middleware/fetch-utils.js +64 -0
  42. package/build/middleware/fetch-utils.js.map +1 -0
  43. package/build/middleware/logger.d.ts +17 -0
  44. package/build/middleware/logger.d.ts.map +1 -0
  45. package/build/middleware/logger.js +38 -0
  46. package/build/middleware/logger.js.map +1 -0
  47. package/build/middleware/output-processor.d.ts +57 -0
  48. package/build/middleware/output-processor.d.ts.map +1 -0
  49. package/build/middleware/output-processor.js +162 -0
  50. package/build/middleware/output-processor.js.map +1 -0
  51. package/build/middleware/sanitize.d.ts +30 -0
  52. package/build/middleware/sanitize.d.ts.map +1 -0
  53. package/build/middleware/sanitize.js +46 -0
  54. package/build/middleware/sanitize.js.map +1 -0
  55. package/build/middleware/security.d.ts +52 -0
  56. package/build/middleware/security.d.ts.map +1 -0
  57. package/build/middleware/security.js +123 -0
  58. package/build/middleware/security.js.map +1 -0
  59. package/build/middleware/ui-dump.d.ts +23 -0
  60. package/build/middleware/ui-dump.d.ts.map +1 -0
  61. package/build/middleware/ui-dump.js +59 -0
  62. package/build/middleware/ui-dump.js.map +1 -0
  63. package/build/server.d.ts +18 -0
  64. package/build/server.d.ts.map +1 -0
  65. package/build/server.js +133 -0
  66. package/build/server.js.map +1 -0
  67. package/build/tool-context.d.ts +22 -0
  68. package/build/tool-context.d.ts.map +1 -0
  69. package/build/tool-context.js +9 -0
  70. package/build/tool-context.js.map +1 -0
  71. package/build/tools/accessibility.d.ts +10 -0
  72. package/build/tools/accessibility.d.ts.map +1 -0
  73. package/build/tools/accessibility.js +259 -0
  74. package/build/tools/accessibility.js.map +1 -0
  75. package/build/tools/at-commands.d.ts +20 -0
  76. package/build/tools/at-commands.d.ts.map +1 -0
  77. package/build/tools/at-commands.js +378 -0
  78. package/build/tools/at-commands.js.map +1 -0
  79. package/build/tools/baseband.d.ts +15 -0
  80. package/build/tools/baseband.d.ts.map +1 -0
  81. package/build/tools/baseband.js +323 -0
  82. package/build/tools/baseband.js.map +1 -0
  83. package/build/tools/build.d.ts +6 -0
  84. package/build/tools/build.d.ts.map +1 -0
  85. package/build/tools/build.js +80 -0
  86. package/build/tools/build.js.map +1 -0
  87. package/build/tools/ci.d.ts +9 -0
  88. package/build/tools/ci.d.ts.map +1 -0
  89. package/build/tools/ci.js +163 -0
  90. package/build/tools/ci.js.map +1 -0
  91. package/build/tools/control.d.ts +10 -0
  92. package/build/tools/control.d.ts.map +1 -0
  93. package/build/tools/control.js +197 -0
  94. package/build/tools/control.js.map +1 -0
  95. package/build/tools/device-farm.d.ts +10 -0
  96. package/build/tools/device-farm.d.ts.map +1 -0
  97. package/build/tools/device-farm.js +140 -0
  98. package/build/tools/device-farm.js.map +1 -0
  99. package/build/tools/device-profiles.d.ts +16 -0
  100. package/build/tools/device-profiles.d.ts.map +1 -0
  101. package/build/tools/device-profiles.js +272 -0
  102. package/build/tools/device-profiles.js.map +1 -0
  103. package/build/tools/device.d.ts +6 -0
  104. package/build/tools/device.d.ts.map +1 -0
  105. package/build/tools/device.js +72 -0
  106. package/build/tools/device.js.map +1 -0
  107. package/build/tools/diagnostics.d.ts +7 -0
  108. package/build/tools/diagnostics.d.ts.map +1 -0
  109. package/build/tools/diagnostics.js +153 -0
  110. package/build/tools/diagnostics.js.map +1 -0
  111. package/build/tools/emulator.d.ts +9 -0
  112. package/build/tools/emulator.d.ts.map +1 -0
  113. package/build/tools/emulator.js +223 -0
  114. package/build/tools/emulator.js.map +1 -0
  115. package/build/tools/files.d.ts +6 -0
  116. package/build/tools/files.d.ts.map +1 -0
  117. package/build/tools/files.js +78 -0
  118. package/build/tools/files.js.map +1 -0
  119. package/build/tools/firmware-analysis.d.ts +24 -0
  120. package/build/tools/firmware-analysis.d.ts.map +1 -0
  121. package/build/tools/firmware-analysis.js +623 -0
  122. package/build/tools/firmware-analysis.js.map +1 -0
  123. package/build/tools/forwarding.d.ts +7 -0
  124. package/build/tools/forwarding.d.ts.map +1 -0
  125. package/build/tools/forwarding.js +64 -0
  126. package/build/tools/forwarding.js.map +1 -0
  127. package/build/tools/health.d.ts +7 -0
  128. package/build/tools/health.d.ts.map +1 -0
  129. package/build/tools/health.js +112 -0
  130. package/build/tools/health.js.map +1 -0
  131. package/build/tools/logcat-watch.d.ts +11 -0
  132. package/build/tools/logcat-watch.d.ts.map +1 -0
  133. package/build/tools/logcat-watch.js +209 -0
  134. package/build/tools/logcat-watch.js.map +1 -0
  135. package/build/tools/logs.d.ts +6 -0
  136. package/build/tools/logs.d.ts.map +1 -0
  137. package/build/tools/logs.js +83 -0
  138. package/build/tools/logs.js.map +1 -0
  139. package/build/tools/mirroring.d.ts +14 -0
  140. package/build/tools/mirroring.d.ts.map +1 -0
  141. package/build/tools/mirroring.js +243 -0
  142. package/build/tools/mirroring.js.map +1 -0
  143. package/build/tools/multi-device.d.ts +9 -0
  144. package/build/tools/multi-device.d.ts.map +1 -0
  145. package/build/tools/multi-device.js +138 -0
  146. package/build/tools/multi-device.js.map +1 -0
  147. package/build/tools/network-capture.d.ts +10 -0
  148. package/build/tools/network-capture.d.ts.map +1 -0
  149. package/build/tools/network-capture.js +143 -0
  150. package/build/tools/network-capture.js.map +1 -0
  151. package/build/tools/network-discovery.d.ts +21 -0
  152. package/build/tools/network-discovery.d.ts.map +1 -0
  153. package/build/tools/network-discovery.js +284 -0
  154. package/build/tools/network-discovery.js.map +1 -0
  155. package/build/tools/ota-monitor.d.ts +16 -0
  156. package/build/tools/ota-monitor.d.ts.map +1 -0
  157. package/build/tools/ota-monitor.js +211 -0
  158. package/build/tools/ota-monitor.js.map +1 -0
  159. package/build/tools/packages.d.ts +6 -0
  160. package/build/tools/packages.d.ts.map +1 -0
  161. package/build/tools/packages.js +237 -0
  162. package/build/tools/packages.js.map +1 -0
  163. package/build/tools/plugins.d.ts +22 -0
  164. package/build/tools/plugins.d.ts.map +1 -0
  165. package/build/tools/plugins.js +118 -0
  166. package/build/tools/plugins.js.map +1 -0
  167. package/build/tools/prompts.d.ts +9 -0
  168. package/build/tools/prompts.d.ts.map +1 -0
  169. package/build/tools/prompts.js +94 -0
  170. package/build/tools/prompts.js.map +1 -0
  171. package/build/tools/qemu.d.ts +18 -0
  172. package/build/tools/qemu.d.ts.map +1 -0
  173. package/build/tools/qemu.js +791 -0
  174. package/build/tools/qemu.js.map +1 -0
  175. package/build/tools/registry.d.ts +13 -0
  176. package/build/tools/registry.d.ts.map +1 -0
  177. package/build/tools/registry.js +221 -0
  178. package/build/tools/registry.js.map +1 -0
  179. package/build/tools/regression.d.ts +10 -0
  180. package/build/tools/regression.d.ts.map +1 -0
  181. package/build/tools/regression.js +215 -0
  182. package/build/tools/regression.js.map +1 -0
  183. package/build/tools/resources.d.ts +10 -0
  184. package/build/tools/resources.d.ts.map +1 -0
  185. package/build/tools/resources.js +77 -0
  186. package/build/tools/resources.js.map +1 -0
  187. package/build/tools/ril-intercept.d.ts +24 -0
  188. package/build/tools/ril-intercept.d.ts.map +1 -0
  189. package/build/tools/ril-intercept.js +273 -0
  190. package/build/tools/ril-intercept.js.map +1 -0
  191. package/build/tools/screen-record.d.ts +9 -0
  192. package/build/tools/screen-record.d.ts.map +1 -0
  193. package/build/tools/screen-record.js +95 -0
  194. package/build/tools/screen-record.js.map +1 -0
  195. package/build/tools/screenshot-diff.d.ts +13 -0
  196. package/build/tools/screenshot-diff.d.ts.map +1 -0
  197. package/build/tools/screenshot-diff.js +370 -0
  198. package/build/tools/screenshot-diff.js.map +1 -0
  199. package/build/tools/selinux-audit.d.ts +17 -0
  200. package/build/tools/selinux-audit.d.ts.map +1 -0
  201. package/build/tools/selinux-audit.js +301 -0
  202. package/build/tools/selinux-audit.js.map +1 -0
  203. package/build/tools/shell.d.ts +6 -0
  204. package/build/tools/shell.d.ts.map +1 -0
  205. package/build/tools/shell.js +63 -0
  206. package/build/tools/shell.js.map +1 -0
  207. package/build/tools/snapshot.d.ts +9 -0
  208. package/build/tools/snapshot.d.ts.map +1 -0
  209. package/build/tools/snapshot.js +192 -0
  210. package/build/tools/snapshot.js.map +1 -0
  211. package/build/tools/split-apk.d.ts +13 -0
  212. package/build/tools/split-apk.d.ts.map +1 -0
  213. package/build/tools/split-apk.js +229 -0
  214. package/build/tools/split-apk.js.map +1 -0
  215. package/build/tools/test-gen.d.ts +14 -0
  216. package/build/tools/test-gen.d.ts.map +1 -0
  217. package/build/tools/test-gen.js +252 -0
  218. package/build/tools/test-gen.js.map +1 -0
  219. package/build/tools/testing.d.ts +9 -0
  220. package/build/tools/testing.d.ts.map +1 -0
  221. package/build/tools/testing.js +144 -0
  222. package/build/tools/testing.js.map +1 -0
  223. package/build/tools/thermal-power.d.ts +19 -0
  224. package/build/tools/thermal-power.d.ts.map +1 -0
  225. package/build/tools/thermal-power.js +330 -0
  226. package/build/tools/thermal-power.js.map +1 -0
  227. package/build/tools/ui.d.ts +6 -0
  228. package/build/tools/ui.d.ts.map +1 -0
  229. package/build/tools/ui.js +266 -0
  230. package/build/tools/ui.js.map +1 -0
  231. package/build/tools/wireless.d.ts +7 -0
  232. package/build/tools/wireless.d.ts.map +1 -0
  233. package/build/tools/wireless.js +78 -0
  234. package/build/tools/wireless.js.map +1 -0
  235. package/build/tools/workflow-market.d.ts +17 -0
  236. package/build/tools/workflow-market.d.ts.map +1 -0
  237. package/build/tools/workflow-market.js +237 -0
  238. package/build/tools/workflow-market.js.map +1 -0
  239. package/build/tools/workflow.d.ts +32 -0
  240. package/build/tools/workflow.d.ts.map +1 -0
  241. package/build/tools/workflow.js +374 -0
  242. package/build/tools/workflow.js.map +1 -0
  243. package/build/ws-transport.d.ts +30 -0
  244. package/build/ws-transport.d.ts.map +1 -0
  245. package/build/ws-transport.js +133 -0
  246. package/build/ws-transport.js.map +1 -0
  247. package/package.json +37 -0
@@ -0,0 +1,378 @@
1
+ /**
2
+ * AT Command Interface — Raw modem AT command passthrough via root access.
3
+ *
4
+ * Enables direct modem interrogation beyond what the Android telephony
5
+ * framework exposes. Useful for advanced baseband research, cellular
6
+ * protocol analysis, and low-level radio diagnostics.
7
+ *
8
+ * Multi-device support: auto-detects modem device node by chipset family
9
+ * (Shannon/Exynos, Qualcomm, MediaTek, Unisoc, generic USB modems).
10
+ * Manual port override available for unknown hardware.
11
+ *
12
+ * Root access required — AT commands go through /dev/ serial device nodes.
13
+ *
14
+ * SAFETY: Certain AT commands can disable the radio (AT+CFUN=0), factory
15
+ * reset the modem, or alter NVRAM. A blocklist prevents accidental execution
16
+ * of the most dangerous commands. Use `force: true` to bypass.
17
+ */
18
+ import { z } from "zod";
19
+ import { OutputProcessor } from "../middleware/output-processor.js";
20
+ import { MODEM_PATHS, detectChipsetFamily } from "../middleware/chipset.js";
21
+ /** AT commands that can brick, factory-reset, or disable the modem. */
22
+ const DANGEROUS_AT_COMMANDS = [
23
+ "AT+CFUN=0", // Minimum functionality — kills radio
24
+ "AT+CFUN=4", // Disable TX
25
+ "AT+CLCK", // Lock facility (can lock SIM permanently)
26
+ "AT^RESET", // Modem hard reset (vendor-specific)
27
+ "AT+NVRAM", // NVRAM write (vendor-specific)
28
+ "AT+EGMR", // Write IMEI (illegal in many jurisdictions)
29
+ "AT%RESTART", // Modem restart
30
+ "AT+QPRTPARA", // Qualcomm parameter write
31
+ ];
32
+ function isDangerousCommand(cmd) {
33
+ const upper = cmd.toUpperCase().trim();
34
+ for (const dangerous of DANGEROUS_AT_COMMANDS) {
35
+ if (upper.startsWith(dangerous)) {
36
+ return `Blocked dangerous AT command: ${dangerous}. This command can disable/damage the modem. Use force=true to override.`;
37
+ }
38
+ }
39
+ return null;
40
+ }
41
+ /**
42
+ * Characters that are dangerous inside shell double-quotes or bare interpolation.
43
+ * AT commands legitimately contain: + = ? , . # * but never shell operators.
44
+ */
45
+ const AT_UNSAFE_CHARS = /["'`$\\!;|&(){}<>\n\r]/;
46
+ /**
47
+ * Validate that a device node path looks like a real /dev/ path.
48
+ * Rejects anything that doesn't start with /dev/ or contains shell metacharacters.
49
+ */
50
+ function validateDeviceNode(port) {
51
+ if (!port.startsWith("/dev/")) {
52
+ return `Invalid port: must start with /dev/ (got: "${port}")`;
53
+ }
54
+ if (AT_UNSAFE_CHARS.test(port)) {
55
+ return `Invalid port: contains shell metacharacters`;
56
+ }
57
+ if (port.includes("..")) {
58
+ return `Invalid port: path traversal not allowed`;
59
+ }
60
+ return null;
61
+ }
62
+ /**
63
+ * Validate that an AT command string is safe to echo into a device node.
64
+ * AT commands contain alphanumeric chars plus + = ? , . # * : / but
65
+ * must never contain shell metacharacters that could enable injection.
66
+ */
67
+ function validateAtCommand(cmd) {
68
+ if (AT_UNSAFE_CHARS.test(cmd)) {
69
+ return `Invalid AT command: contains shell-unsafe characters. AT commands must not include: \` " $ \\ ! ; | & ( ) { } < >`;
70
+ }
71
+ return null;
72
+ }
73
+ /**
74
+ * Send an AT command to a device node and capture the response.
75
+ * Uses `echo` + `cat` with timeout via root shell.
76
+ * Both the command and device node are validated before interpolation.
77
+ */
78
+ async function sendAtCommand(ctx, serial, deviceNode, command, timeoutMs) {
79
+ // Validate device node path
80
+ const portErr = validateDeviceNode(deviceNode);
81
+ if (portErr)
82
+ return { response: "", error: portErr };
83
+ // Validate AT command for shell safety
84
+ const cmdErr = validateAtCommand(command);
85
+ if (cmdErr)
86
+ return { response: "", error: cmdErr };
87
+ const cmd = command.trimEnd();
88
+ // Send the command and read response with a timeout.
89
+ // Both cmd and deviceNode are validated above — no shell metacharacters.
90
+ // Use printf instead of echo -e for portable carriage return handling
91
+ // (echo -e is not supported by all Android shell implementations).
92
+ const timeoutSec = Math.max(1, Math.ceil(timeoutMs / 1000));
93
+ const shellCmd = `printf '${cmd}\\r' > '${deviceNode}' && timeout ${timeoutSec} cat '${deviceNode}' 2>&1 || true`;
94
+ try {
95
+ const result = await ctx.bridge.rootShell(shellCmd, {
96
+ device: serial,
97
+ timeout: timeoutMs + 3000, // Extra buffer for ADB overhead
98
+ ignoreExitCode: true,
99
+ });
100
+ const response = result.stdout.trim();
101
+ if (result.stderr && result.stderr.trim()) {
102
+ return { response, error: result.stderr.trim() };
103
+ }
104
+ return { response };
105
+ }
106
+ catch (err) {
107
+ return { response: "", error: err instanceof Error ? err.message : String(err) };
108
+ }
109
+ }
110
+ export function registerAtCommandTools(ctx) {
111
+ ctx.server.tool("adb_at_detect", "Auto-detect the modem AT command device node. Identifies the chipset family (Shannon, Qualcomm, MediaTek, Unisoc) and probes known device node paths. Requires root. Returns the first responding node.", {
112
+ device: z.string().optional().describe("Device serial"),
113
+ }, async ({ device }) => {
114
+ try {
115
+ const resolved = await ctx.deviceManager.resolveDevice(device);
116
+ const serial = resolved.serial;
117
+ // Detect chipset family
118
+ const props = await ctx.deviceManager.getDeviceProps(serial);
119
+ const family = detectChipsetFamily(props);
120
+ const chipname = props["ro.hardware.chipname"] ?? "unknown";
121
+ const platform = props["ro.board.platform"] ?? "unknown";
122
+ const sections = [];
123
+ sections.push(`Chipset: ${chipname} (platform: ${platform})`);
124
+ sections.push(`Detected family: ${family}`);
125
+ // Probe paths for this family, then fall back to all others
126
+ const familyPaths = MODEM_PATHS[family] ?? [];
127
+ const otherPaths = Object.entries(MODEM_PATHS)
128
+ .filter(([k]) => k !== family)
129
+ .flatMap(([, v]) => v);
130
+ const allPaths = [...familyPaths, ...otherPaths];
131
+ sections.push(`\nProbing ${allPaths.length} device nodes...`);
132
+ // Check which device nodes exist
133
+ const existCmd = allPaths.map((p) => `test -e ${p} && echo "EXISTS:${p}"`).join("; ");
134
+ const existResult = await ctx.bridge.rootShell(existCmd, {
135
+ device: serial, timeout: 10000, ignoreExitCode: true,
136
+ });
137
+ const existingPaths = existResult.stdout
138
+ .split("\n")
139
+ .filter((l) => l.startsWith("EXISTS:"))
140
+ .map((l) => l.replace("EXISTS:", "").trim());
141
+ if (existingPaths.length === 0) {
142
+ sections.push("\nNo modem device nodes found. The device may not expose AT command interfaces, or may require a different access method.");
143
+ return { content: [{ type: "text", text: sections.join("\n") }] };
144
+ }
145
+ sections.push(`Found ${existingPaths.length} existing node(s): ${existingPaths.join(", ")}`);
146
+ // Try sending "AT" to each existing node and check for "OK" response
147
+ let respondingNode = null;
148
+ for (const nodePath of existingPaths) {
149
+ sections.push(`\nProbing ${nodePath}...`);
150
+ const { response, error } = await sendAtCommand(ctx, serial, nodePath, "AT", 3000);
151
+ if (error) {
152
+ sections.push(` Error: ${error}`);
153
+ continue;
154
+ }
155
+ if (response.includes("OK")) {
156
+ sections.push(` ✓ Response: OK — this node accepts AT commands`);
157
+ respondingNode = nodePath;
158
+ break;
159
+ }
160
+ else if (response.length > 0) {
161
+ sections.push(` ? Response: ${response.substring(0, 100)}`);
162
+ }
163
+ else {
164
+ sections.push(` ✗ No response (timeout)`);
165
+ }
166
+ }
167
+ if (respondingNode) {
168
+ sections.push(`\n=== Detected AT port: ${respondingNode} ===`);
169
+ sections.push(`Use this as the 'port' parameter in adb_at_send and adb_at_batch.`);
170
+ }
171
+ else {
172
+ sections.push(`\nNo responding AT port found. Nodes exist but did not respond to "AT".`);
173
+ sections.push(`Try manually with adb_at_send using one of: ${existingPaths.join(", ")}`);
174
+ }
175
+ return { content: [{ type: "text", text: sections.join("\n") }] };
176
+ }
177
+ catch (error) {
178
+ return { content: [{ type: "text", text: OutputProcessor.formatError(error) }], isError: true };
179
+ }
180
+ });
181
+ ctx.server.tool("adb_at_send", "Send a single AT command to the modem and capture the response. Requires root. Use adb_at_detect to find the correct port, or specify it manually.", {
182
+ command: z.string().describe("AT command to send (e.g., 'AT+CSQ', 'ATI', 'AT+COPS?')"),
183
+ port: z.string().optional().describe("Modem device node (e.g., '/dev/umts_router0'). If omitted, auto-detects."),
184
+ timeout: z.number().min(1000).max(30000).optional().default(5000).describe("Response timeout in ms (1000-30000, default 5000)"),
185
+ force: z.boolean().optional().default(false).describe("Bypass dangerous command safety check"),
186
+ device: z.string().optional().describe("Device serial"),
187
+ }, async ({ command, port, timeout, force, device }) => {
188
+ try {
189
+ // Safety check
190
+ if (!force) {
191
+ const blocked = isDangerousCommand(command);
192
+ if (blocked) {
193
+ return { content: [{ type: "text", text: blocked }], isError: true };
194
+ }
195
+ }
196
+ // Pre-flight input validation (same checks as sendAtCommand, but return isError)
197
+ const cmdErr = validateAtCommand(command);
198
+ if (cmdErr) {
199
+ return { content: [{ type: "text", text: cmdErr }], isError: true };
200
+ }
201
+ if (port) {
202
+ const portErr = validateDeviceNode(port);
203
+ if (portErr) {
204
+ return { content: [{ type: "text", text: portErr }], isError: true };
205
+ }
206
+ }
207
+ const resolved = await ctx.deviceManager.resolveDevice(device);
208
+ const serial = resolved.serial;
209
+ // Auto-detect port if not specified
210
+ let targetPort = port;
211
+ if (!targetPort) {
212
+ const props = await ctx.deviceManager.getDeviceProps(serial);
213
+ const family = detectChipsetFamily(props);
214
+ const paths = MODEM_PATHS[family] ?? MODEM_PATHS.generic;
215
+ // Quick probe: find first existing node
216
+ const existCmd = paths.map((p) => `test -e ${p} && echo "EXISTS:${p}"`).join("; ");
217
+ const existResult = await ctx.bridge.rootShell(existCmd, {
218
+ device: serial, timeout: 5000, ignoreExitCode: true,
219
+ });
220
+ const existing = existResult.stdout.split("\n")
221
+ .filter((l) => l.startsWith("EXISTS:"))
222
+ .map((l) => l.replace("EXISTS:", "").trim());
223
+ if (existing.length === 0) {
224
+ return {
225
+ content: [{ type: "text", text: "No modem device node found. Use adb_at_detect to identify available ports, or specify 'port' manually." }],
226
+ isError: true,
227
+ };
228
+ }
229
+ targetPort = existing[0];
230
+ }
231
+ const { response, error } = await sendAtCommand(ctx, serial, targetPort, command, timeout);
232
+ let output = `Port: ${targetPort}\nCommand: ${command}\n\n`;
233
+ if (error) {
234
+ output += `Error: ${error}\n`;
235
+ }
236
+ output += `Response:\n${response || "(no response)"}`;
237
+ return { content: [{ type: "text", text: output }] };
238
+ }
239
+ catch (error) {
240
+ return { content: [{ type: "text", text: OutputProcessor.formatError(error) }], isError: true };
241
+ }
242
+ });
243
+ ctx.server.tool("adb_at_batch", "Send multiple AT commands sequentially and capture all responses. Useful for running a diagnostic sequence. Requires root.", {
244
+ commands: z.array(z.string()).min(1).max(50).describe("Array of AT commands to send in order (max 50)"),
245
+ port: z.string().optional().describe("Modem device node (auto-detects if omitted)"),
246
+ timeout: z.number().min(1000).max(30000).optional().default(5000).describe("Timeout per command in ms"),
247
+ delayMs: z.number().min(0).max(10000).optional().default(500).describe("Delay between commands in ms (0-10000, default 500)"),
248
+ force: z.boolean().optional().default(false).describe("Bypass dangerous command safety checks"),
249
+ device: z.string().optional().describe("Device serial"),
250
+ }, async ({ commands, port, timeout, delayMs, force, device }) => {
251
+ try {
252
+ const resolved = await ctx.deviceManager.resolveDevice(device);
253
+ const serial = resolved.serial;
254
+ // Safety check all commands first
255
+ if (!force) {
256
+ for (const cmd of commands) {
257
+ const blocked = isDangerousCommand(cmd);
258
+ if (blocked) {
259
+ return { content: [{ type: "text", text: `Batch aborted: ${blocked}` }], isError: true };
260
+ }
261
+ }
262
+ }
263
+ // Pre-flight input validation for all commands and port
264
+ for (const cmd of commands) {
265
+ const cmdErr = validateAtCommand(cmd);
266
+ if (cmdErr) {
267
+ return { content: [{ type: "text", text: `Batch aborted: ${cmdErr}` }], isError: true };
268
+ }
269
+ }
270
+ if (port) {
271
+ const portErr = validateDeviceNode(port);
272
+ if (portErr) {
273
+ return { content: [{ type: "text", text: portErr }], isError: true };
274
+ }
275
+ }
276
+ // Auto-detect port if not specified
277
+ let targetPort = port;
278
+ if (!targetPort) {
279
+ const props = await ctx.deviceManager.getDeviceProps(serial);
280
+ const family = detectChipsetFamily(props);
281
+ const paths = MODEM_PATHS[family] ?? MODEM_PATHS.generic;
282
+ const existCmd = paths.map((p) => `test -e ${p} && echo "EXISTS:${p}"`).join("; ");
283
+ const existResult = await ctx.bridge.rootShell(existCmd, {
284
+ device: serial, timeout: 5000, ignoreExitCode: true,
285
+ });
286
+ const existing = existResult.stdout.split("\n")
287
+ .filter((l) => l.startsWith("EXISTS:"))
288
+ .map((l) => l.replace("EXISTS:", "").trim());
289
+ if (existing.length === 0) {
290
+ return {
291
+ content: [{ type: "text", text: "No modem device node found. Use adb_at_detect or specify 'port'." }],
292
+ isError: true,
293
+ };
294
+ }
295
+ targetPort = existing[0];
296
+ }
297
+ const results = [`Port: ${targetPort}`, `Commands: ${commands.length}`, ``];
298
+ for (let i = 0; i < commands.length; i++) {
299
+ const cmd = commands[i];
300
+ results.push(`--- [${i + 1}/${commands.length}] ${cmd} ---`);
301
+ const { response, error } = await sendAtCommand(ctx, serial, targetPort, cmd, timeout);
302
+ if (error) {
303
+ results.push(`Error: ${error}`);
304
+ }
305
+ results.push(response || "(no response)");
306
+ results.push("");
307
+ // Delay between commands (skip after last)
308
+ if (i < commands.length - 1 && delayMs > 0) {
309
+ await new Promise((r) => setTimeout(r, delayMs));
310
+ }
311
+ }
312
+ return { content: [{ type: "text", text: OutputProcessor.process(results.join("\n")) }] };
313
+ }
314
+ catch (error) {
315
+ return { content: [{ type: "text", text: OutputProcessor.formatError(error) }], isError: true };
316
+ }
317
+ });
318
+ ctx.server.tool("adb_at_probe", "Run a standard AT diagnostic probe: modem identification, signal quality, network registration, SIM status, and supported bands. Requires root.", {
319
+ port: z.string().optional().describe("Modem device node (auto-detects if omitted)"),
320
+ device: z.string().optional().describe("Device serial"),
321
+ }, async ({ port, device }) => {
322
+ try {
323
+ const resolved = await ctx.deviceManager.resolveDevice(device);
324
+ const serial = resolved.serial;
325
+ // Auto-detect port
326
+ let targetPort = port;
327
+ if (!targetPort) {
328
+ const props = await ctx.deviceManager.getDeviceProps(serial);
329
+ const family = detectChipsetFamily(props);
330
+ const paths = MODEM_PATHS[family] ?? MODEM_PATHS.generic;
331
+ const existCmd = paths.map((p) => `test -e ${p} && echo "EXISTS:${p}"`).join("; ");
332
+ const existResult = await ctx.bridge.rootShell(existCmd, {
333
+ device: serial, timeout: 5000, ignoreExitCode: true,
334
+ });
335
+ const existing = existResult.stdout.split("\n")
336
+ .filter((l) => l.startsWith("EXISTS:"))
337
+ .map((l) => l.replace("EXISTS:", "").trim());
338
+ if (existing.length === 0) {
339
+ return {
340
+ content: [{ type: "text", text: "No modem device node found. Use adb_at_detect or specify 'port'." }],
341
+ isError: true,
342
+ };
343
+ }
344
+ targetPort = existing[0];
345
+ }
346
+ // Standard diagnostic AT command sequence
347
+ const probeCommands = [
348
+ { cmd: "ATI", label: "Modem Identification" },
349
+ { cmd: "AT+CGMM", label: "Model" },
350
+ { cmd: "AT+CGMR", label: "Firmware Revision" },
351
+ { cmd: "AT+CGSN", label: "IMEI (serial number)" },
352
+ { cmd: "AT+CSQ", label: "Signal Quality (RSSI, BER)" },
353
+ { cmd: "AT+CREG?", label: "Network Registration (CS)" },
354
+ { cmd: "AT+CEREG?", label: "Network Registration (EPS/LTE)" },
355
+ { cmd: "AT+C5GREG?", label: "Network Registration (5G NR)" },
356
+ { cmd: "AT+COPS?", label: "Current Operator" },
357
+ { cmd: "AT+CPIN?", label: "SIM Status" },
358
+ { cmd: "AT+CFUN?", label: "Functionality Mode" },
359
+ { cmd: "AT+CNMI?", label: "SMS Notification Mode" },
360
+ ];
361
+ const sections = [`=== AT Diagnostic Probe ===`, `Port: ${targetPort}`, ``];
362
+ for (const { cmd, label } of probeCommands) {
363
+ const { response, error } = await sendAtCommand(ctx, serial, targetPort, cmd, 4000);
364
+ const display = error ? `Error: ${error}` : (response || "(no response)");
365
+ sections.push(`[${label}] ${cmd}`);
366
+ sections.push(` ${display.replace(/\n/g, "\n ")}`);
367
+ sections.push("");
368
+ // Brief delay between commands
369
+ await new Promise((r) => setTimeout(r, 300));
370
+ }
371
+ return { content: [{ type: "text", text: OutputProcessor.process(sections.join("\n")) }] };
372
+ }
373
+ catch (error) {
374
+ return { content: [{ type: "text", text: OutputProcessor.formatError(error) }], isError: true };
375
+ }
376
+ });
377
+ }
378
+ //# sourceMappingURL=at-commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"at-commands.js","sourceRoot":"","sources":["../../src/tools/at-commands.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Baseband/Modem Integration Tools — Deep cellular radio state inspection.
3
+ *
4
+ * Provides detailed modem and radio diagnostics for advanced Android
5
+ * development and cellular network research. Extracts modem identification,
6
+ * cell identity, signal measurements, neighboring cells, carrier config,
7
+ * and baseband logs.
8
+ *
9
+ * Supports Shannon/Exynos, Qualcomm, MediaTek, and Unisoc chipset families
10
+ * via standard Android telephony APIs. Root access enables additional
11
+ * kernel-level modem logging.
12
+ */
13
+ import { ToolContext } from "../tool-context.js";
14
+ export declare function registerBasebandTools(ctx: ToolContext): void;
15
+ //# sourceMappingURL=baseband.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"baseband.d.ts","sourceRoot":"","sources":["../../src/tools/baseband.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAKjD,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CAwX5D"}