deepadb 1.1.2 → 1.1.4

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.
@@ -1 +1 @@
1
- {"version":3,"file":"chipset.d.ts","sourceRoot":"","sources":["../../src/middleware/chipset.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AAEH;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAwDhD,CAAC;AAEF;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAuDzE;AAED,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB;AAKD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAOxE"}
1
+ {"version":3,"file":"chipset.d.ts","sourceRoot":"","sources":["../../src/middleware/chipset.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AAEH;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAyDhD,CAAC;AAEF;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAuDzE;AAED,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB;AAKD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAOxE"}
@@ -15,6 +15,7 @@
15
15
  export const MODEM_PATHS = {
16
16
  // Samsung Shannon/Exynos (Pixel 6, 6a, 7, 7a, 8, Samsung Galaxy S series)
17
17
  shannon: [
18
+ "/dev/umts_router",
18
19
  "/dev/umts_router0",
19
20
  "/dev/umts_router1",
20
21
  "/dev/umts_atc0",
@@ -1 +1 @@
1
- {"version":3,"file":"chipset.js","sourceRoot":"","sources":["../../src/middleware/chipset.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,sCAAsC;AACtC;;;;;;;GAOG;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,WAAW,GAA6B;IACnD,0EAA0E;IAC1E,OAAO,EAAE;QACP,mBAAmB;QACnB,mBAAmB;QACnB,gBAAgB;KACjB;IACD,kCAAkC;IAClC,QAAQ,EAAE;QACR,YAAY;QACZ,WAAW;QACX,WAAW;QACX,kBAAkB;QAClB,cAAc;KACf;IACD,oCAAoC;IACpC,QAAQ,EAAE;QACR,yBAAyB;QACzB,kBAAkB;QAClB,YAAY;QACZ,YAAY;KACb;IACD,oBAAoB;IACpB,MAAM,EAAE;QACN,gBAAgB;QAChB,eAAe;QACf,cAAc;KACf;IACD,0CAA0C;IAC1C,SAAS,EAAE;QACT,eAAe;QACf,eAAe;QACf,aAAa;KACd;IACD,4EAA4E;IAC5E,KAAK,EAAE;QACL,cAAc;QACd,cAAc;QACd,cAAc;KACf;IACD,wEAAwE;IACxE,sEAAsE;IACtE,uEAAuE;IACvE,uEAAuE;IACvE,0EAA0E;IAC1E,0EAA0E;IAC1E,yEAAyE;IACzE,gCAAgC;IAChC,4BAA4B;IAC5B,OAAO,EAAE;QACP,cAAc;QACd,cAAc;QACd,cAAc;QACd,cAAc;QACd,cAAc;KACf;CACF,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAA6B;IAC/D,MAAM,QAAQ,GAAG,CAAC,KAAK,CAAC,sBAAsB,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IACrE,MAAM,QAAQ,GAAG,CAAC,KAAK,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAClE,MAAM,QAAQ,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAC5D,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAExD,0FAA0F;IAC1F,IAAI,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC;QACvD,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC;QACjD,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACjE,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC;QACxD,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9D,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,mEAAmE;IACnE,uEAAuE;IACvE,yEAAyE;IACzE,yEAAyE;IACzE,yEAAyE;IACzE,oDAAoD;IACpD,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC/E,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC;QAC5D,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC;QACzD,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7D,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,qBAAqB;IACrB,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;QAClD,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QAC7D,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,mBAAmB;IACnB,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC;QACnD,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;QACnE,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,oDAAoD;IACpD,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC;QACxD,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC;QACpD,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC;QAC5D,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QACvD,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,8CAA8C;IAC9C,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC;QACtD,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACtD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAQD,kFAAkF;AAClF,MAAM,aAAa,GAAG,CAAC,CAAC;AAExB;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,KAA6B;IAC3D,MAAM,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC,mCAAmC,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;IAC1F,MAAM,YAAY,GAAG,CAAC,KAAK,CAAC,+BAA+B,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAClF,MAAM,OAAO,GAAG,YAAY,IAAI,CAAC,IAAI,YAAY,KAAK,MAAM,IAAI,YAAY,KAAK,MAAM,IAAI,YAAY,KAAK,MAAM,CAAC;IACnH,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAElF,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC;AAC7C,CAAC"}
1
+ {"version":3,"file":"chipset.js","sourceRoot":"","sources":["../../src/middleware/chipset.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
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"}
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;AA6DhD,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,CAoHhE"}
package/build/server.js CHANGED
@@ -25,6 +25,7 @@ import { registerDiagnosticTools } from "./tools/diagnostics.js";
25
25
  import { registerUiTools } from "./tools/ui.js";
26
26
  import { registerBuildTools } from "./tools/build.js";
27
27
  import { registerHealthTools } from "./tools/health.js";
28
+ import { registerRuntimeAuditTools } from "./tools/runtime-audit.js";
28
29
  import { registerWirelessTools } from "./tools/wireless.js";
29
30
  import { registerControlTools } from "./tools/control.js";
30
31
  import { registerLogcatWatchTools } from "./tools/logcat-watch.js";
@@ -57,6 +58,9 @@ import { registerWorkflowMarketTools } from "./tools/workflow-market.js";
57
58
  import { registerSelinuxAuditTools } from "./tools/selinux-audit.js";
58
59
  import { registerThermalPowerTools } from "./tools/thermal-power.js";
59
60
  import { registerNetworkDiscoveryTools } from "./tools/network-discovery.js";
61
+ import { registerAppNetworkTools } from "./tools/app-network.js";
62
+ import { registerDatabaseInspectorTools } from "./tools/database-inspector.js";
63
+ import { registerWearTools } from "./tools/wear.js";
60
64
  import { registerSensorTools } from "./tools/sensors.js";
61
65
  import { registerWirelessFirmwareTools } from "./tools/wireless-firmware.js";
62
66
  import { registerInputGestureTools } from "./tools/input-gestures.js";
@@ -105,7 +109,7 @@ export async function createServer() {
105
109
  });
106
110
  // Build unified tool context
107
111
  const ctx = { server, bridge, deviceManager, logger, security, config };
108
- // Register all tool modules (45 modules)
112
+ // Register all tool modules (49 modules)
109
113
  registerDeviceTools(ctx);
110
114
  registerShellTools(ctx);
111
115
  registerPackageTools(ctx);
@@ -115,6 +119,7 @@ export async function createServer() {
115
119
  registerUiTools(ctx);
116
120
  registerBuildTools(ctx);
117
121
  registerHealthTools(ctx);
122
+ registerRuntimeAuditTools(ctx);
118
123
  registerWirelessTools(ctx);
119
124
  registerControlTools(ctx);
120
125
  registerLogcatWatchTools(ctx);
@@ -147,6 +152,9 @@ export async function createServer() {
147
152
  registerSelinuxAuditTools(ctx);
148
153
  registerThermalPowerTools(ctx);
149
154
  registerNetworkDiscoveryTools(ctx);
155
+ registerAppNetworkTools(ctx);
156
+ registerDatabaseInspectorTools(ctx);
157
+ registerWearTools(ctx);
150
158
  registerSensorTools(ctx);
151
159
  registerWirelessFirmwareTools(ctx);
152
160
  registerInputGestureTools(ctx);
@@ -162,7 +170,7 @@ export async function createServer() {
162
170
  if (sweepResult.evicted > 0 || sweepResult.kept > 0) {
163
171
  logger.info(`Result-handle store: ${sweepResult.kept} active, ${sweepResult.evicted} evicted at startup.`);
164
172
  }
165
- logger.info("DeepADB MCP server initialized — 45 tool modules, 5 resources, 4 prompts. Ready.");
173
+ logger.info("DeepADB MCP server initialized — 49 tool modules, 5 resources, 4 prompts. Ready.");
166
174
  return { server, logger, bridge, deviceManager };
167
175
  }
168
176
  //# sourceMappingURL=server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Per-app network route context.
3
+ *
4
+ * Android routes traffic by UID through ip rules and network-policy state.
5
+ * This module resolves an installed package to its UID, then correlates that
6
+ * UID with the device's routing tables without changing any network state.
7
+ */
8
+ import { ToolContext } from "../tool-context.js";
9
+ /** Resolve an Android package UID from dumpsys/cmd package output. */
10
+ export declare function parsePackageUid(output: string, packageName?: string): number | null;
11
+ /** Return true when an ip-rule line contains a uidrange covering the UID. */
12
+ export declare function uidMatchesRule(line: string, uid: number): boolean;
13
+ /** Extract safe, deduplicated route-table names from matched ip rules. */
14
+ export declare function extractRouteTables(lines: string[]): string[];
15
+ export declare function registerAppNetworkTools(ctx: ToolContext): void;
16
+ //# sourceMappingURL=app-network.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-network.d.ts","sourceRoot":"","sources":["../../src/tools/app-network.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAOjD,sEAAsE;AACtE,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAUnF;AAED,6EAA6E;AAC7E,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAOjE;AAED,0EAA0E;AAC1E,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAO5D;AAkBD,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CAuF9D"}
@@ -0,0 +1,144 @@
1
+ // Copyright 2026 Jason <fullread@github>
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ /**
4
+ * Per-app network route context.
5
+ *
6
+ * Android routes traffic by UID through ip rules and network-policy state.
7
+ * This module resolves an installed package to its UID, then correlates that
8
+ * UID with the device's routing tables without changing any network state.
9
+ */
10
+ import { z } from "zod";
11
+ import { OutputProcessor } from "../middleware/output-processor.js";
12
+ import { shellQuote } from "../middleware/sanitize.js";
13
+ const PACKAGE_NAME_PATTERN = /^[A-Za-z][A-Za-z0-9_]*(?:\.[A-Za-z0-9_]+)+$/;
14
+ const ROUTE_TABLE_PATTERN = /^[A-Za-z0-9_.-]{1,32}$/;
15
+ /** Resolve an Android package UID from dumpsys/cmd package output. */
16
+ export function parsePackageUid(output, packageName) {
17
+ const direct = output.match(/\b(?:userId|uid)=(\d+)\b/);
18
+ if (direct)
19
+ return Number.parseInt(direct[1], 10);
20
+ for (const line of output.split(/\r?\n/)) {
21
+ if (packageName && !line.includes(`package:${packageName}`))
22
+ continue;
23
+ const listed = line.match(/\buid:(\d+)\b/);
24
+ if (listed)
25
+ return Number.parseInt(listed[1], 10);
26
+ }
27
+ return null;
28
+ }
29
+ /** Return true when an ip-rule line contains a uidrange covering the UID. */
30
+ export function uidMatchesRule(line, uid) {
31
+ for (const match of line.matchAll(/\buidrange\s+(\d+)-(\d+)\b/g)) {
32
+ const start = Number.parseInt(match[1], 10);
33
+ const end = Number.parseInt(match[2], 10);
34
+ if (uid >= start && uid <= end)
35
+ return true;
36
+ }
37
+ return false;
38
+ }
39
+ /** Extract safe, deduplicated route-table names from matched ip rules. */
40
+ export function extractRouteTables(lines) {
41
+ const tables = new Set();
42
+ for (const line of lines) {
43
+ const match = line.match(/\b(?:lookup|table)\s+([^\s]+)/);
44
+ if (match && ROUTE_TABLE_PATTERN.test(match[1]))
45
+ tables.add(match[1]);
46
+ }
47
+ return [...tables];
48
+ }
49
+ function policyLinesForUid(output, uid) {
50
+ const uidToken = new RegExp(`(^|\\D)${uid}(\\D|$)`);
51
+ return output.split(/\r?\n/).map((line) => line.trim()).filter((line) => uidToken.test(line));
52
+ }
53
+ function summarizeConnectivity(output) {
54
+ const summary = [];
55
+ const defaultNetwork = output.match(/defaultNetwork\s*[=:]\s*(\d+)/i)
56
+ ?? output.match(/NetworkAgentInfo\{[^}]*\[?([0-9]+)\]?[^}]*VALIDATED/i);
57
+ summary.push(`Default network: ${defaultNetwork?.[1] ?? "not identified"}`);
58
+ summary.push(`VPN present: ${/\bVPN\b|TRANSPORT_VPN/i.test(output) ? "yes" : "no"}`);
59
+ summary.push(`Validated network present: ${/\bVALIDATED\b/.test(output) ? "yes" : "no"}`);
60
+ summary.push(`Private DNS active: ${/privateDns.*(?:active|validated|true)/i.test(output) ? "yes" : "not reported"}`);
61
+ return summary;
62
+ }
63
+ export function registerAppNetworkTools(ctx) {
64
+ ctx.server.tool("adb_app_route_context", "Show the effective Android routing context for one installed app by correlating its UID with ip rules, route tables, network policy, VPN, and default-network state. Read-only; does not alter routes or app policy.", {
65
+ packageName: z.string().regex(PACKAGE_NAME_PATTERN).describe("Installed Android package to inspect"),
66
+ includeConnectivitySummary: z.boolean().optional().default(true)
67
+ .describe("Include a privacy-conscious connectivity/VPN/default-network summary"),
68
+ device: z.string().optional().describe("Device serial"),
69
+ }, async ({ packageName, includeConnectivitySummary, device }) => {
70
+ try {
71
+ const resolved = await ctx.deviceManager.resolveDevice(device);
72
+ const serial = resolved.serial;
73
+ const packageDump = await ctx.bridge.shell(`dumpsys package ${shellQuote(packageName)}`, {
74
+ device: serial,
75
+ timeout: 15000,
76
+ ignoreExitCode: true,
77
+ });
78
+ let uid = parsePackageUid(packageDump.stdout, packageName);
79
+ if (uid === null) {
80
+ const listed = await ctx.bridge.shell(`cmd package list packages -U ${shellQuote(packageName)}`, {
81
+ device: serial,
82
+ timeout: 10000,
83
+ ignoreExitCode: true,
84
+ });
85
+ uid = parsePackageUid(listed.stdout, packageName);
86
+ }
87
+ if (uid === null) {
88
+ return { content: [{ type: "text", text: `Package is not installed or its UID could not be resolved: ${packageName}` }], isError: true };
89
+ }
90
+ const [rules, routes4, routes6, policy, connectivity] = await Promise.all([
91
+ ctx.bridge.shell("ip rule show", { device: serial, timeout: 10000, ignoreExitCode: true }),
92
+ ctx.bridge.shell("ip route show", { device: serial, timeout: 10000, ignoreExitCode: true }),
93
+ ctx.bridge.shell("ip -6 route show", { device: serial, timeout: 10000, ignoreExitCode: true }),
94
+ ctx.bridge.shell("cmd netpolicy list uid-policy", { device: serial, timeout: 10000, ignoreExitCode: true }),
95
+ includeConnectivitySummary
96
+ ? ctx.bridge.shell("dumpsys connectivity", { device: serial, timeout: 20000, ignoreExitCode: true })
97
+ : Promise.resolve({ stdout: "", stderr: "", exitCode: 0, timedOut: false, bufferExceeded: false }),
98
+ ]);
99
+ const matchedRules = rules.stdout.split(/\r?\n/).map((line) => line.trim())
100
+ .filter((line) => uidMatchesRule(line, uid));
101
+ const tableNames = extractRouteTables(matchedRules);
102
+ const tableResults = await Promise.all(tableNames.map(async (table) => {
103
+ // table came from device output, so re-validate before shell reuse.
104
+ if (!ROUTE_TABLE_PATTERN.test(table))
105
+ return `${table}: rejected unsafe table name`;
106
+ const result = await ctx.bridge.shell(`ip route show table ${shellQuote(table)}`, {
107
+ device: serial,
108
+ timeout: 10000,
109
+ ignoreExitCode: true,
110
+ });
111
+ return `${table}:\n${result.stdout.trim() || " (empty or unavailable)"}`;
112
+ }));
113
+ const sections = [
114
+ "=== Per-App Route Context ===",
115
+ `Package: ${packageName}`,
116
+ `UID: ${uid}`,
117
+ `INTERNET permission: ${/android\.permission\.INTERNET/.test(packageDump.stdout) ? "declared/granted" : "not reported"}`,
118
+ "",
119
+ "── Matching UID rules ──",
120
+ matchedRules.length ? matchedRules.join("\n") : "(no explicit uidrange rule; system defaults may apply)",
121
+ "",
122
+ "── Referenced route tables ──",
123
+ tableResults.length ? tableResults.join("\n\n") : "(none referenced by matching UID rules)",
124
+ "",
125
+ "── Default IPv4 routes ──",
126
+ routes4.stdout.split(/\r?\n/).filter((line) => /^default\b/.test(line.trim())).join("\n") || "(none reported)",
127
+ "",
128
+ "── Default IPv6 routes ──",
129
+ routes6.stdout.split(/\r?\n/).filter((line) => /^default\b/.test(line.trim())).join("\n") || "(none reported)",
130
+ "",
131
+ "── UID network policy ──",
132
+ policyLinesForUid(policy.stdout, uid).join("\n") || "(no explicit UID policy)",
133
+ ];
134
+ if (includeConnectivitySummary) {
135
+ sections.push("", "── Connectivity summary ──", ...summarizeConnectivity(connectivity.stdout));
136
+ }
137
+ return { content: [{ type: "text", text: OutputProcessor.process(sections.join("\n"), 40000) }] };
138
+ }
139
+ catch (error) {
140
+ return { content: [{ type: "text", text: OutputProcessor.formatError(error) }], isError: true };
141
+ }
142
+ });
143
+ }
144
+ //# sourceMappingURL=app-network.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-network.js","sourceRoot":"","sources":["../../src/tools/app-network.ts"],"names":[],"mappings":"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"}
@@ -16,5 +16,16 @@
16
16
  * of the most dangerous commands. Use `force: true` to bypass.
17
17
  */
18
18
  import { ToolContext } from "../tool-context.js";
19
+ /**
20
+ * Build the guarded device-side AT exchange.
21
+ *
22
+ * CPIF/SIPC nodes return an empty read after roughly 100ms when their RX queue
23
+ * is empty. A one-shot `cat` therefore exits before a slightly delayed modem
24
+ * response. Re-arm bounded reads until a terminal result arrives, and start the
25
+ * writer after the first read is waiting. `dd conv=nocreat` is deliberate: a
26
+ * shell redirection would create a regular file under /dev when a candidate
27
+ * node is absent and the caller has root.
28
+ */
29
+ export declare function buildAtShellCommand(deviceNode: string, command: string, timeoutMs: number): string;
19
30
  export declare function registerAtCommandTools(ctx: ToolContext): void;
20
31
  //# sourceMappingURL=at-commands.d.ts.map
@@ -1 +1 @@
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"}
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;AA6EjD;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,GAChB,MAAM,CAmBR;AAuED,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CAukB7D"}
@@ -89,8 +89,37 @@ function validateAtCommand(cmd) {
89
89
  return null;
90
90
  }
91
91
  /**
92
- * Send an AT command to a device node and capture the response.
93
- * Uses `echo` + `cat` with timeout via root shell.
92
+ * Build the guarded device-side AT exchange.
93
+ *
94
+ * CPIF/SIPC nodes return an empty read after roughly 100ms when their RX queue
95
+ * is empty. A one-shot `cat` therefore exits before a slightly delayed modem
96
+ * response. Re-arm bounded reads until a terminal result arrives, and start the
97
+ * writer after the first read is waiting. `dd conv=nocreat` is deliberate: a
98
+ * shell redirection would create a regular file under /dev when a candidate
99
+ * node is absent and the caller has root.
100
+ */
101
+ export function buildAtShellCommand(deviceNode, command, timeoutMs) {
102
+ const portErr = validateDeviceNode(deviceNode);
103
+ if (portErr)
104
+ throw new Error(portErr);
105
+ const cmdErr = validateAtCommand(command);
106
+ if (cmdErr)
107
+ throw new Error(cmdErr);
108
+ const cmd = command.trimEnd();
109
+ const node = shellQuote(deviceNode);
110
+ const payload = shellQuote(cmd);
111
+ const maxReads = Math.max(1, Math.ceil(timeoutMs / 100));
112
+ const terminator = (MODEM_PATHS.shannon ?? []).includes(deviceNode) ? "%s\\r\\n" : "%s\\r";
113
+ return [
114
+ `test -c ${node} || { printf '%s\\n' 'DeepADB: target is not a character device' >&2; exit 1; }`,
115
+ `(sleep 0.1; printf '${terminator}' ${payload} | dd of=${node} conv=nocreat,notrunc status=none) & writer_pid=$!`,
116
+ "i=0",
117
+ `while [ "$i" -lt ${maxReads} ]; do chunk=$(dd if=${node} bs=4096 count=1 status=none 2>/dev/null); if [ -n "$chunk" ]; then printf '%s\\n' "$chunk"; if printf '%s\\n' "$chunk" | tr -d '\\r' | grep -Eq '^(OK|ERROR|\\+CME ERROR:|\\+CMS ERROR:)'; then break; fi; fi; i=$((i + 1)); done`,
118
+ 'wait "$writer_pid"',
119
+ ].join("; ");
120
+ }
121
+ /**
122
+ * Send an AT command to a character-device modem node and capture its response.
94
123
  * Both the command and device node are validated before interpolation.
95
124
  */
96
125
  async function sendAtCommand(ctx, serial, deviceNode, command, timeoutMs) {
@@ -102,14 +131,7 @@ async function sendAtCommand(ctx, serial, deviceNode, command, timeoutMs) {
102
131
  const cmdErr = validateAtCommand(command);
103
132
  if (cmdErr)
104
133
  return { response: "", error: cmdErr };
105
- const cmd = command.trimEnd();
106
- // Send the command and read response with a timeout.
107
- // Both cmd and deviceNode are validated above — no shell metacharacters.
108
- // Use printf with '%s\r' format to separate format string from data —
109
- // AT commands may contain % (e.g., AT%RESTART) which printf would
110
- // misinterpret as format specifiers if cmd were in the format position.
111
- const timeoutSec = Math.max(1, Math.ceil(timeoutMs / 1000));
112
- const shellCmd = `printf '%s\\r' '${cmd}' > '${deviceNode}' && timeout ${timeoutSec} cat '${deviceNode}' 2>&1 || true`;
134
+ const shellCmd = buildAtShellCommand(deviceNode, command, timeoutMs);
113
135
  try {
114
136
  const result = await ctx.bridge.rootShell(shellCmd, {
115
137
  device: serial,
@@ -128,7 +150,8 @@ async function sendAtCommand(ctx, serial, deviceNode, command, timeoutMs) {
128
150
  }
129
151
  /**
130
152
  * Auto-detect the first existing modem device node for the given chipset family.
131
- * Probes MODEM_PATHS entries via `test -e` through root shell.
153
+ * Probes MODEM_PATHS entries via `test -c` through root shell so regular files,
154
+ * block devices, and stale filesystem artifacts can never be selected.
132
155
  * Returns the first existing node path, or null if none found.
133
156
  */
134
157
  async function autoDetectAtPort(ctx, serial, family) {
@@ -142,7 +165,7 @@ async function autoDetectAtPort(ctx, serial, family) {
142
165
  // or metacharacters), so this is safe by construction today. Wrapping
143
166
  // ensures a future contributor adding a path with whitespace doesn't
144
167
  // accidentally word-split here.
145
- const existCmd = paths.map((p) => `test -e ${shellQuote(p)} && echo "EXISTS:${p}"`).join("; ");
168
+ const existCmd = paths.map((p) => `test -c ${shellQuote(p)} && echo "EXISTS:${p}"`).join("; ");
146
169
  const existResult = await ctx.bridge.rootShell(existCmd, {
147
170
  device: serial, timeout: 5000, ignoreExitCode: true,
148
171
  });
@@ -152,6 +175,103 @@ async function autoDetectAtPort(ctx, serial, family) {
152
175
  return existing.length > 0 ? existing[0] : null;
153
176
  }
154
177
  export function registerAtCommandTools(ctx) {
178
+ ctx.server.tool("adb_shannon_session", "Preflight a Samsung Shannon/Exynos modem session by checking the chipset, root access, known AT ports, and a benign AT handshake together. Optionally sends ATI for identification after a successful handshake. Makes no modem configuration changes.", {
179
+ port: z.string().optional().describe("Optional Shannon device node override (for example /dev/umts_router)"),
180
+ timeout: z.number().int().min(1000).max(10000).optional().default(3000)
181
+ .describe("Handshake timeout per port in milliseconds (1000-10000, default 3000)"),
182
+ includeIdentity: z.boolean().optional().default(false)
183
+ .describe("After a successful AT handshake, also send the read-only ATI identity query"),
184
+ device: z.string().optional().describe("Device serial"),
185
+ }, async ({ port, timeout, includeIdentity, device }) => {
186
+ try {
187
+ if (port) {
188
+ const portError = validateDeviceNode(port);
189
+ if (portError) {
190
+ return { content: [{ type: "text", text: portError }], isError: true };
191
+ }
192
+ if (!(MODEM_PATHS.shannon ?? []).includes(port)) {
193
+ return {
194
+ content: [{ type: "text", text: `Shannon session port must be one of the known Shannon AT nodes: ${(MODEM_PATHS.shannon ?? []).join(", ")}` }],
195
+ isError: true,
196
+ };
197
+ }
198
+ }
199
+ const resolved = await ctx.deviceManager.resolveDevice(device);
200
+ const serial = resolved.serial;
201
+ const props = await ctx.deviceManager.getDeviceProps(serial);
202
+ const family = detectChipsetFamily(props);
203
+ const sections = [
204
+ "=== Shannon Session Preflight ===",
205
+ `Device: ${props["ro.product.model"] ?? "unknown"}`,
206
+ `Chipset family: ${family}`,
207
+ ];
208
+ if (family !== "shannon") {
209
+ sections.push("Result: this device does not identify as Shannon/Exynos. Use adb_at_detect for generic modem discovery.");
210
+ return { content: [{ type: "text", text: sections.join("\n") }], isError: true };
211
+ }
212
+ const rootProbe = await ctx.bridge.shell("su -c id", {
213
+ device: serial, timeout: 5000, ignoreExitCode: true,
214
+ });
215
+ if (!/uid=0\b/.test(rootProbe.stdout)) {
216
+ sections.push("Root: unavailable", "Result: Shannon device nodes require root access.");
217
+ return { content: [{ type: "text", text: sections.join("\n") }], isError: true };
218
+ }
219
+ sections.push("Root: available");
220
+ const candidates = port ? [port] : (MODEM_PATHS.shannon ?? []);
221
+ const existenceProbe = candidates
222
+ .map((candidate) => `test -c ${shellQuote(candidate)} && echo ${shellQuote(`EXISTS:${candidate}`)}`)
223
+ .join("; ");
224
+ const existence = await ctx.bridge.rootShell(existenceProbe, {
225
+ device: serial, timeout: 10000, ignoreExitCode: true,
226
+ });
227
+ const existing = existence.stdout.split(/\r?\n/)
228
+ .filter((line) => line.startsWith("EXISTS:"))
229
+ .map((line) => line.slice("EXISTS:".length).trim())
230
+ .filter((candidate) => candidates.includes(candidate));
231
+ sections.push(`Ports checked: ${candidates.length}`, `Ports present: ${existing.length ? existing.join(", ") : "none"}`);
232
+ if (existing.length === 0) {
233
+ sections.push("Result: no Shannon AT device node is currently visible.");
234
+ return { content: [{ type: "text", text: sections.join("\n") }] };
235
+ }
236
+ let selected = null;
237
+ let identity = "";
238
+ sections.push("", "── Handshakes ──");
239
+ for (const candidate of existing) {
240
+ const handshake = await sendAtCommand(ctx, serial, candidate, "AT", timeout);
241
+ const ok = /(^|\r?\n)\s*OK\s*($|\r?\n)/i.test(handshake.response) || handshake.response.trim() === "OK";
242
+ if (handshake.error) {
243
+ sections.push(`○ ${candidate}: ${handshake.error}`);
244
+ }
245
+ else if (ok) {
246
+ sections.push(`✓ ${candidate}: AT / OK handshake complete`);
247
+ selected = candidate;
248
+ if (includeIdentity) {
249
+ const identityResult = await sendAtCommand(ctx, serial, candidate, "ATI", timeout);
250
+ identity = identityResult.error
251
+ ? `Identity query error: ${identityResult.error}`
252
+ : (identityResult.response.trim() || "Identity query returned no text");
253
+ }
254
+ break;
255
+ }
256
+ else {
257
+ sections.push(`○ ${candidate}: ${handshake.response.trim() ? "response received without OK" : "no response before timeout"}`);
258
+ }
259
+ }
260
+ if (selected) {
261
+ sections.push("", "=== SHANNON SESSION READY ===", `Selected port: ${selected}`);
262
+ if (includeIdentity)
263
+ sections.push("", "── ATI identity ──", identity);
264
+ }
265
+ else {
266
+ sections.push("", "=== SHANNON SESSION NOT READY ===", "Device nodes are present, but no AT / OK handshake completed.");
267
+ }
268
+ sections.push("Only AT and, when requested, ATI were sent; no modem configuration was changed.");
269
+ return { content: [{ type: "text", text: OutputProcessor.process(sections.join("\n"), 20000) }] };
270
+ }
271
+ catch (error) {
272
+ return { content: [{ type: "text", text: OutputProcessor.formatError(error) }], isError: true };
273
+ }
274
+ });
155
275
  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.", {
156
276
  device: z.string().optional().describe("Device serial"),
157
277
  }, async ({ device }) => {
@@ -175,7 +295,7 @@ export function registerAtCommandTools(ctx) {
175
295
  sections.push(`\nProbing ${allPaths.length} device nodes...`);
176
296
  // Check which device nodes exist
177
297
  // T5 fix (same rationale as autoDetectAtPort)
178
- const existCmd = allPaths.map((p) => `test -e ${shellQuote(p)} && echo "EXISTS:${p}"`).join("; ");
298
+ const existCmd = allPaths.map((p) => `test -c ${shellQuote(p)} && echo "EXISTS:${p}"`).join("; ");
179
299
  const existResult = await ctx.bridge.rootShell(existCmd, {
180
300
  device: serial, timeout: 10000, ignoreExitCode: true,
181
301
  });
@@ -225,7 +345,7 @@ export function registerAtCommandTools(ctx) {
225
345
  });
226
346
  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.", {
227
347
  command: z.string().describe("AT command to send (e.g., 'AT+CSQ', 'ATI', 'AT+COPS?')"),
228
- port: z.string().optional().describe("Modem device node (e.g., '/dev/umts_router0'). If omitted, auto-detects."),
348
+ port: z.string().optional().describe("Modem device node (e.g., '/dev/umts_router'). If omitted, auto-detects."),
229
349
  timeout: z.number().min(1000).max(30000).optional().default(5000).describe("Response timeout in ms (1000-30000, default 5000)"),
230
350
  force: z.boolean().optional().default(false).describe("Bypass dangerous command safety check"),
231
351
  device: z.string().optional().describe("Device serial"),
@@ -442,7 +562,7 @@ export function registerAtCommandTools(ctx) {
442
562
  sections.push("\n── AT Command Responses ──");
443
563
  sections.push("No modem device node found — AT port auto-detection requires root and direct modem node access.");
444
564
  sections.push("This is expected in ADB mode. Use on-device mode (Termux) for full AT cross-validation.");
445
- sections.push("Alternatively, specify 'port' manually (e.g., '/dev/umts_router0' for Shannon).");
565
+ sections.push("Alternatively, specify 'port' manually (e.g., '/dev/umts_router' for Google Tensor/Shannon).");
446
566
  sections.push("\nFalling back to property-only analysis...");
447
567
  }
448
568
  // ── Gather property-based firmware info ──