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,223 @@
1
+ /**
2
+ * Emulator Management Tools — AVD lifecycle management.
3
+ *
4
+ * Manages Android Virtual Devices: list available AVDs, start/stop emulators.
5
+ * Requires the Android SDK `emulator` binary to be on PATH or in the SDK directory.
6
+ */
7
+ import { z } from "zod";
8
+ import { execFile, spawn } from "child_process";
9
+ import { platform } from "os";
10
+ import { existsSync } from "fs";
11
+ import { OutputProcessor } from "../middleware/output-processor.js";
12
+ import { isOnDevice } from "../config/config.js";
13
+ import { registerCleanup } from "../middleware/cleanup.js";
14
+ /** Track spawned emulator processes for cleanup. Key = AVD name. */
15
+ const emulatorProcesses = new Map();
16
+ // Register cleanup via shared registry to kill orphaned emulators on server exit
17
+ function ensureCleanupRegistered() {
18
+ registerCleanup("emulator", () => {
19
+ for (const [, proc] of emulatorProcesses) {
20
+ try {
21
+ proc.kill();
22
+ }
23
+ catch { /* ignore */ }
24
+ }
25
+ emulatorProcesses.clear();
26
+ });
27
+ }
28
+ function getEmulatorPath() {
29
+ const isWindows = platform() === "win32";
30
+ const localAppData = process.env.LOCALAPPDATA ?? "";
31
+ if (isWindows && localAppData) {
32
+ const sdkPath = `${localAppData}\\Android\\Sdk\\emulator\\emulator.exe`;
33
+ if (existsSync(sdkPath))
34
+ return sdkPath;
35
+ }
36
+ // Check ANDROID_HOME / ANDROID_SDK_ROOT
37
+ const sdkRoot = process.env.ANDROID_HOME ?? process.env.ANDROID_SDK_ROOT;
38
+ if (sdkRoot) {
39
+ const sep = isWindows ? "\\" : "/";
40
+ const ext = isWindows ? ".exe" : "";
41
+ const sdkPath = `${sdkRoot}${sep}emulator${sep}emulator${ext}`;
42
+ if (existsSync(sdkPath))
43
+ return sdkPath;
44
+ }
45
+ return "emulator";
46
+ }
47
+ export function registerEmulatorTools(ctx) {
48
+ ensureCleanupRegistered();
49
+ ctx.server.tool("adb_avd_list", "List all available Android Virtual Devices (AVDs) that can be started.", {}, async () => {
50
+ try {
51
+ // On-device mode: SDK emulator binary is not available (it's compiled for
52
+ // desktop x86_64). Check for KVM and QEMU as an alternative virtualization path.
53
+ if (isOnDevice()) {
54
+ const sections = [];
55
+ sections.push("On-device mode: Android SDK emulator (AVD) is not available.");
56
+ sections.push("The SDK emulator binary is compiled for desktop platforms (x86_64 Linux/macOS/Windows).\n");
57
+ // Check for KVM support
58
+ const kvmAvailable = existsSync("/dev/kvm");
59
+ sections.push(`Hardware virtualization (KVM): ${kvmAvailable ? "✓ /dev/kvm available" : "✗ /dev/kvm not found"}`);
60
+ // Check if QEMU is installed in Termux
61
+ let qemuInstalled = false;
62
+ try {
63
+ const qemuCheck = await ctx.bridge.shell("which qemu-system-aarch64 2>/dev/null || which qemu-system-x86_64 2>/dev/null", {
64
+ ignoreExitCode: true, timeout: 5000,
65
+ });
66
+ qemuInstalled = qemuCheck.stdout.trim().length > 0;
67
+ }
68
+ catch { /* not installed */ }
69
+ sections.push(`QEMU: ${qemuInstalled ? "✓ installed" : "✗ not installed"}`);
70
+ if (kvmAvailable && !qemuInstalled) {
71
+ sections.push("\nQEMU with KVM is supported on this device for near-native emulation.");
72
+ sections.push("Setup: adb_qemu_setup install=true");
73
+ sections.push("Then: adb_qemu_images, adb_qemu_start, adb_qemu_stop, adb_qemu_status");
74
+ }
75
+ else if (kvmAvailable && qemuInstalled) {
76
+ sections.push("\n✓ QEMU with KVM is available for on-device virtualization.");
77
+ sections.push("Use: adb_qemu_images, adb_qemu_start, adb_qemu_stop, adb_qemu_status");
78
+ }
79
+ else {
80
+ sections.push("\nWithout KVM, emulation would be software-only and very slow.");
81
+ }
82
+ return { content: [{ type: "text", text: sections.join("\n") }] };
83
+ }
84
+ const emulatorPath = getEmulatorPath();
85
+ return new Promise((resolve) => {
86
+ execFile(emulatorPath, ["-list-avds"], {
87
+ timeout: 15000, windowsHide: true,
88
+ }, (error, stdout, stderr) => {
89
+ if (error && !stdout) {
90
+ resolve({
91
+ content: [{ type: "text", text: `Failed to list AVDs: ${error.message}\nIs the Android SDK emulator installed and on PATH?` }],
92
+ isError: true,
93
+ });
94
+ return;
95
+ }
96
+ const avds = (stdout?.toString() ?? "").trim().split("\n").filter((l) => l.trim().length > 0);
97
+ if (avds.length === 0) {
98
+ resolve({ content: [{ type: "text", text: "No AVDs found. Create one with Android Studio's AVD Manager or `avdmanager`." }] });
99
+ return;
100
+ }
101
+ // Also show any currently running emulators
102
+ const running = Array.from(emulatorProcesses.keys());
103
+ let output = `${avds.length} AVD(s) available:\n${avds.join("\n")}`;
104
+ if (running.length > 0) {
105
+ output += `\n\nCurrently running: ${running.join(", ")}`;
106
+ }
107
+ resolve({ content: [{ type: "text", text: output }] });
108
+ });
109
+ });
110
+ }
111
+ catch (error) {
112
+ return { content: [{ type: "text", text: OutputProcessor.formatError(error) }], isError: true };
113
+ }
114
+ });
115
+ ctx.server.tool("adb_emulator_start", "Launch an Android Virtual Device (AVD) emulator. Returns once the emulator process has started.", {
116
+ avdName: z.string().describe("AVD name (from adb_avd_list)"),
117
+ headless: z.boolean().optional().default(false).describe("Run without GUI window (-no-window)"),
118
+ coldBoot: z.boolean().optional().default(false).describe("Force cold boot (-no-snapshot-load)"),
119
+ gpuMode: z.enum(["auto", "host", "swiftshader_indirect", "off"]).optional().default("auto")
120
+ .describe("GPU acceleration mode"),
121
+ }, async ({ avdName, headless, coldBoot, gpuMode }) => {
122
+ try {
123
+ if (isOnDevice()) {
124
+ return {
125
+ content: [{
126
+ type: "text",
127
+ text: "On-device mode: AVD emulator is not available.\n" +
128
+ "The Android SDK emulator requires a desktop host (x86_64 Linux/macOS/Windows).\n\n" +
129
+ "Use the QEMU tools for on-device virtualization:\n" +
130
+ " adb_qemu_setup — install QEMU and verify KVM\n" +
131
+ " adb_qemu_images — create/manage disk images\n" +
132
+ " adb_qemu_start — boot a VM with KVM acceleration\n" +
133
+ " adb_qemu_status — view running VMs",
134
+ }],
135
+ isError: true,
136
+ };
137
+ }
138
+ if (emulatorProcesses.has(avdName)) {
139
+ return { content: [{ type: "text", text: `Emulator '${avdName}' is already running.` }], isError: true };
140
+ }
141
+ const emulatorPath = getEmulatorPath();
142
+ const args = ["-avd", avdName, `-gpu`, gpuMode];
143
+ if (headless)
144
+ args.push("-no-window");
145
+ if (coldBoot)
146
+ args.push("-no-snapshot-load");
147
+ const proc = spawn(emulatorPath, args, {
148
+ windowsHide: true,
149
+ stdio: ["ignore", "pipe", "pipe"],
150
+ detached: false,
151
+ });
152
+ emulatorProcesses.set(avdName, proc);
153
+ let stderrOutput = "";
154
+ proc.stderr?.on("data", (chunk) => {
155
+ stderrOutput += chunk.toString();
156
+ });
157
+ proc.on("error", (err) => {
158
+ ctx.logger.error(`[emulator:${avdName}] Spawn error: ${err.message}`);
159
+ emulatorProcesses.delete(avdName);
160
+ });
161
+ proc.on("exit", (code) => {
162
+ ctx.logger.info(`[emulator:${avdName}] Exited (code: ${code})`);
163
+ emulatorProcesses.delete(avdName);
164
+ });
165
+ // Wait briefly for startup errors
166
+ await new Promise((r) => setTimeout(r, 3000));
167
+ // Check if process died immediately
168
+ if (!emulatorProcesses.has(avdName)) {
169
+ const errorMsg = stderrOutput.trim().split("\n").slice(0, 5).join("\n");
170
+ return {
171
+ content: [{ type: "text", text: `Emulator '${avdName}' failed to start.${errorMsg ? "\n" + errorMsg : ""}` }],
172
+ isError: true,
173
+ };
174
+ }
175
+ ctx.deviceManager.invalidateCache();
176
+ return {
177
+ content: [{
178
+ type: "text",
179
+ text: `Emulator '${avdName}' starting...${headless ? " (headless)" : ""}\nUse adb_devices to check when it comes online.\nUse adb_emulator_stop to shut it down.`,
180
+ }],
181
+ };
182
+ }
183
+ catch (error) {
184
+ return { content: [{ type: "text", text: OutputProcessor.formatError(error) }], isError: true };
185
+ }
186
+ });
187
+ ctx.server.tool("adb_emulator_stop", "Stop a running emulator. Uses 'adb emu kill' for graceful shutdown.", {
188
+ avdName: z.string().optional().describe("AVD name to stop. If omitted, lists running emulators."),
189
+ device: z.string().optional().describe("Emulator device serial (e.g., 'emulator-5554') — alternative to avdName"),
190
+ }, async ({ avdName, device }) => {
191
+ try {
192
+ // If device serial is provided, kill via ADB directly
193
+ if (device) {
194
+ await ctx.bridge.exec(["emu", "kill"], { device, timeout: 10000, ignoreExitCode: true });
195
+ ctx.deviceManager.invalidateCache();
196
+ return { content: [{ type: "text", text: `Emulator ${device} shutdown initiated.` }] };
197
+ }
198
+ // If AVD name is provided, find and kill it
199
+ if (avdName) {
200
+ const proc = emulatorProcesses.get(avdName);
201
+ if (proc) {
202
+ try {
203
+ proc.kill();
204
+ }
205
+ catch { /* ignore */ }
206
+ emulatorProcesses.delete(avdName);
207
+ }
208
+ ctx.deviceManager.invalidateCache();
209
+ return { content: [{ type: "text", text: `Emulator '${avdName}' stop signal sent.` }] };
210
+ }
211
+ // No args — list running emulators
212
+ const running = Array.from(emulatorProcesses.keys());
213
+ if (running.length === 0) {
214
+ return { content: [{ type: "text", text: "No emulators tracked by DeepADB. Use device serial to stop externally-launched emulators." }] };
215
+ }
216
+ return { content: [{ type: "text", text: `Running emulators: ${running.join(", ")}\nProvide avdName or device serial to stop.` }] };
217
+ }
218
+ catch (error) {
219
+ return { content: [{ type: "text", text: OutputProcessor.formatError(error) }], isError: true };
220
+ }
221
+ });
222
+ }
223
+ //# sourceMappingURL=emulator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emulator.js","sourceRoot":"","sources":["../../src/tools/emulator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * File Tools — Push, pull, list, and manage files on the device.
3
+ */
4
+ import { ToolContext } from "../tool-context.js";
5
+ export declare function registerFileTools(ctx: ToolContext): void;
6
+ //# sourceMappingURL=files.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../src/tools/files.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAIjD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CAwFxD"}
@@ -0,0 +1,78 @@
1
+ /**
2
+ * File Tools — Push, pull, list, and manage files on the device.
3
+ */
4
+ import { z } from "zod";
5
+ import { join } from "path";
6
+ import { OutputProcessor } from "../middleware/output-processor.js";
7
+ import { shellEscape } from "../middleware/sanitize.js";
8
+ export function registerFileTools(ctx) {
9
+ ctx.server.tool("adb_push", "Push a local file to the device filesystem", {
10
+ localPath: z.string().describe("Local file path to push"),
11
+ remotePath: z.string().describe("Destination path on device"),
12
+ device: z.string().optional().describe("Device serial"),
13
+ }, async ({ localPath, remotePath, device }) => {
14
+ try {
15
+ const resolved = await ctx.deviceManager.resolveDevice(device);
16
+ const result = await ctx.bridge.exec(["push", localPath, remotePath], {
17
+ device: resolved.serial, timeout: 120000,
18
+ });
19
+ return { content: [{ type: "text", text: result.stdout.trim() || "File pushed successfully." }] };
20
+ }
21
+ catch (error) {
22
+ return { content: [{ type: "text", text: OutputProcessor.formatError(error) }], isError: true };
23
+ }
24
+ });
25
+ ctx.server.tool("adb_pull", "Pull a file from the device to local filesystem", {
26
+ remotePath: z.string().describe("File path on the device"),
27
+ localPath: z.string().optional().describe("Local destination (defaults to temp dir)"),
28
+ device: z.string().optional().describe("Device serial"),
29
+ }, async ({ remotePath, localPath, device }) => {
30
+ try {
31
+ const resolved = await ctx.deviceManager.resolveDevice(device);
32
+ const fileName = remotePath.split("/").pop() ?? "pulled_file";
33
+ const dest = localPath ?? join(ctx.config.tempDir, fileName);
34
+ const result = await ctx.bridge.exec(["pull", remotePath, dest], {
35
+ device: resolved.serial, timeout: 120000,
36
+ });
37
+ return {
38
+ content: [{ type: "text", text: `${result.stdout.trim()}\nSaved to: ${dest}` }],
39
+ };
40
+ }
41
+ catch (error) {
42
+ return { content: [{ type: "text", text: OutputProcessor.formatError(error) }], isError: true };
43
+ }
44
+ });
45
+ ctx.server.tool("adb_ls", "List files and directories on the device", {
46
+ path: z.string().default("/sdcard").describe("Directory path on device"),
47
+ device: z.string().optional().describe("Device serial"),
48
+ details: z.boolean().optional().default(false).describe("Show detailed listing (ls -la)"),
49
+ }, async ({ path, device, details }) => {
50
+ try {
51
+ const resolved = await ctx.deviceManager.resolveDevice(device);
52
+ const cmd = details ? `ls -la '${shellEscape(path)}'` : `ls '${shellEscape(path)}'`;
53
+ const result = await ctx.bridge.shell(cmd, { device: resolved.serial });
54
+ return { content: [{ type: "text", text: OutputProcessor.process(result.stdout) }] };
55
+ }
56
+ catch (error) {
57
+ return { content: [{ type: "text", text: OutputProcessor.formatError(error) }], isError: true };
58
+ }
59
+ });
60
+ ctx.server.tool("adb_cat", "Read a text file from the device", {
61
+ path: z.string().describe("File path on device"),
62
+ device: z.string().optional().describe("Device serial"),
63
+ maxLines: z.number().min(1).max(10000).optional().describe("Maximum lines to return (1-10000)"),
64
+ }, async ({ path, device, maxLines }) => {
65
+ try {
66
+ const resolved = await ctx.deviceManager.resolveDevice(device);
67
+ let cmd = `cat '${shellEscape(path)}'`;
68
+ if (maxLines)
69
+ cmd = `head -n ${maxLines} '${shellEscape(path)}'`;
70
+ const result = await ctx.bridge.shell(cmd, { device: resolved.serial });
71
+ return { content: [{ type: "text", text: OutputProcessor.process(result.stdout) }] };
72
+ }
73
+ catch (error) {
74
+ return { content: [{ type: "text", text: OutputProcessor.formatError(error) }], isError: true };
75
+ }
76
+ });
77
+ }
78
+ //# sourceMappingURL=files.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"files.js","sourceRoot":"","sources":["../../src/tools/files.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Modem Firmware Analysis — Comprehensive firmware version tracking and diffing.
3
+ *
4
+ * Parses and compares firmware version strings across OTA updates.
5
+ * Understands version numbering conventions for major chipset families:
6
+ *
7
+ * - Shannon/Exynos: Google Pixel/Tensor "g5123b-..." and Samsung "S5123AP_CL..." formats
8
+ * - Qualcomm: "MPSS.xx.yy.zz" (modem protocol software stack)
9
+ * - MediaTek: "MOLY.xxx.yyy" prefixed versions
10
+ * - Unisoc/Spreadtrum: SoC model + branch/version formats
11
+ * - HiSilicon/Kirin: Model + version with carrier codes, and encoded formats
12
+ * - Intel XMM: XMM model + branch/build formats
13
+ * - Generic: semver-like or date-based patterns
14
+ *
15
+ * Also parses bootloader versions (Pixel codename/version/build, Samsung model/carrier/revision)
16
+ * and RIL implementation strings (Samsung S.LSI, Qualcomm, MediaTek).
17
+ *
18
+ * Builds on the OTA fingerprint system — reads saved fingerprints from
19
+ * {tempDir}/ota-fingerprints/ to track firmware progression over time.
20
+ * Can also query the live device for current firmware details.
21
+ */
22
+ import { ToolContext } from "../tool-context.js";
23
+ export declare function registerFirmwareAnalysisTools(ctx: ToolContext): void;
24
+ //# sourceMappingURL=firmware-analysis.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"firmware-analysis.d.ts","sourceRoot":"","sources":["../../src/tools/firmware-analysis.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAKH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAwPjD,wBAAgB,6BAA6B,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CAqZpE"}