| /** | ||
| * Per-app network route context. | ||
| * | ||
| * Android routes traffic by UID through ip rules and network-policy state. | ||
| * This module resolves an installed package to its UID, then correlates that | ||
| * UID with the device's routing tables without changing any network state. | ||
| */ | ||
| import { ToolContext } from "../tool-context.js"; | ||
| /** Resolve an Android package UID from dumpsys/cmd package output. */ | ||
| export declare function parsePackageUid(output: string, packageName?: string): number | null; | ||
| /** Return true when an ip-rule line contains a uidrange covering the UID. */ | ||
| export declare function uidMatchesRule(line: string, uid: number): boolean; | ||
| /** Extract safe, deduplicated route-table names from matched ip rules. */ | ||
| export declare function extractRouteTables(lines: string[]): string[]; | ||
| export declare function registerAppNetworkTools(ctx: ToolContext): void; | ||
| //# sourceMappingURL=app-network.d.ts.map |
| {"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"} |
| // Copyright 2026 Jason <fullread@github> | ||
| // SPDX-License-Identifier: Apache-2.0 | ||
| /** | ||
| * Per-app network route context. | ||
| * | ||
| * Android routes traffic by UID through ip rules and network-policy state. | ||
| * This module resolves an installed package to its UID, then correlates that | ||
| * UID with the device's routing tables without changing any network state. | ||
| */ | ||
| import { z } from "zod"; | ||
| import { OutputProcessor } from "../middleware/output-processor.js"; | ||
| import { shellQuote } from "../middleware/sanitize.js"; | ||
| const PACKAGE_NAME_PATTERN = /^[A-Za-z][A-Za-z0-9_]*(?:\.[A-Za-z0-9_]+)+$/; | ||
| const ROUTE_TABLE_PATTERN = /^[A-Za-z0-9_.-]{1,32}$/; | ||
| /** Resolve an Android package UID from dumpsys/cmd package output. */ | ||
| export function parsePackageUid(output, packageName) { | ||
| const direct = output.match(/\b(?:userId|uid)=(\d+)\b/); | ||
| if (direct) | ||
| return Number.parseInt(direct[1], 10); | ||
| for (const line of output.split(/\r?\n/)) { | ||
| if (packageName && !line.includes(`package:${packageName}`)) | ||
| continue; | ||
| const listed = line.match(/\buid:(\d+)\b/); | ||
| if (listed) | ||
| return Number.parseInt(listed[1], 10); | ||
| } | ||
| return null; | ||
| } | ||
| /** Return true when an ip-rule line contains a uidrange covering the UID. */ | ||
| export function uidMatchesRule(line, uid) { | ||
| for (const match of line.matchAll(/\buidrange\s+(\d+)-(\d+)\b/g)) { | ||
| const start = Number.parseInt(match[1], 10); | ||
| const end = Number.parseInt(match[2], 10); | ||
| if (uid >= start && uid <= end) | ||
| return true; | ||
| } | ||
| return false; | ||
| } | ||
| /** Extract safe, deduplicated route-table names from matched ip rules. */ | ||
| export function extractRouteTables(lines) { | ||
| const tables = new Set(); | ||
| for (const line of lines) { | ||
| const match = line.match(/\b(?:lookup|table)\s+([^\s]+)/); | ||
| if (match && ROUTE_TABLE_PATTERN.test(match[1])) | ||
| tables.add(match[1]); | ||
| } | ||
| return [...tables]; | ||
| } | ||
| function policyLinesForUid(output, uid) { | ||
| const uidToken = new RegExp(`(^|\\D)${uid}(\\D|$)`); | ||
| return output.split(/\r?\n/).map((line) => line.trim()).filter((line) => uidToken.test(line)); | ||
| } | ||
| function summarizeConnectivity(output) { | ||
| const summary = []; | ||
| const defaultNetwork = output.match(/defaultNetwork\s*[=:]\s*(\d+)/i) | ||
| ?? output.match(/NetworkAgentInfo\{[^}]*\[?([0-9]+)\]?[^}]*VALIDATED/i); | ||
| summary.push(`Default network: ${defaultNetwork?.[1] ?? "not identified"}`); | ||
| summary.push(`VPN present: ${/\bVPN\b|TRANSPORT_VPN/i.test(output) ? "yes" : "no"}`); | ||
| summary.push(`Validated network present: ${/\bVALIDATED\b/.test(output) ? "yes" : "no"}`); | ||
| summary.push(`Private DNS active: ${/privateDns.*(?:active|validated|true)/i.test(output) ? "yes" : "not reported"}`); | ||
| return summary; | ||
| } | ||
| export function registerAppNetworkTools(ctx) { | ||
| 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.", { | ||
| packageName: z.string().regex(PACKAGE_NAME_PATTERN).describe("Installed Android package to inspect"), | ||
| includeConnectivitySummary: z.boolean().optional().default(true) | ||
| .describe("Include a privacy-conscious connectivity/VPN/default-network summary"), | ||
| device: z.string().optional().describe("Device serial"), | ||
| }, async ({ packageName, includeConnectivitySummary, device }) => { | ||
| try { | ||
| const resolved = await ctx.deviceManager.resolveDevice(device); | ||
| const serial = resolved.serial; | ||
| const packageDump = await ctx.bridge.shell(`dumpsys package ${shellQuote(packageName)}`, { | ||
| device: serial, | ||
| timeout: 15000, | ||
| ignoreExitCode: true, | ||
| }); | ||
| let uid = parsePackageUid(packageDump.stdout, packageName); | ||
| if (uid === null) { | ||
| const listed = await ctx.bridge.shell(`cmd package list packages -U ${shellQuote(packageName)}`, { | ||
| device: serial, | ||
| timeout: 10000, | ||
| ignoreExitCode: true, | ||
| }); | ||
| uid = parsePackageUid(listed.stdout, packageName); | ||
| } | ||
| if (uid === null) { | ||
| return { content: [{ type: "text", text: `Package is not installed or its UID could not be resolved: ${packageName}` }], isError: true }; | ||
| } | ||
| const [rules, routes4, routes6, policy, connectivity] = await Promise.all([ | ||
| ctx.bridge.shell("ip rule show", { device: serial, timeout: 10000, ignoreExitCode: true }), | ||
| ctx.bridge.shell("ip route show", { device: serial, timeout: 10000, ignoreExitCode: true }), | ||
| ctx.bridge.shell("ip -6 route show", { device: serial, timeout: 10000, ignoreExitCode: true }), | ||
| ctx.bridge.shell("cmd netpolicy list uid-policy", { device: serial, timeout: 10000, ignoreExitCode: true }), | ||
| includeConnectivitySummary | ||
| ? ctx.bridge.shell("dumpsys connectivity", { device: serial, timeout: 20000, ignoreExitCode: true }) | ||
| : Promise.resolve({ stdout: "", stderr: "", exitCode: 0, timedOut: false, bufferExceeded: false }), | ||
| ]); | ||
| const matchedRules = rules.stdout.split(/\r?\n/).map((line) => line.trim()) | ||
| .filter((line) => uidMatchesRule(line, uid)); | ||
| const tableNames = extractRouteTables(matchedRules); | ||
| const tableResults = await Promise.all(tableNames.map(async (table) => { | ||
| // table came from device output, so re-validate before shell reuse. | ||
| if (!ROUTE_TABLE_PATTERN.test(table)) | ||
| return `${table}: rejected unsafe table name`; | ||
| const result = await ctx.bridge.shell(`ip route show table ${shellQuote(table)}`, { | ||
| device: serial, | ||
| timeout: 10000, | ||
| ignoreExitCode: true, | ||
| }); | ||
| return `${table}:\n${result.stdout.trim() || " (empty or unavailable)"}`; | ||
| })); | ||
| const sections = [ | ||
| "=== Per-App Route Context ===", | ||
| `Package: ${packageName}`, | ||
| `UID: ${uid}`, | ||
| `INTERNET permission: ${/android\.permission\.INTERNET/.test(packageDump.stdout) ? "declared/granted" : "not reported"}`, | ||
| "", | ||
| "── Matching UID rules ──", | ||
| matchedRules.length ? matchedRules.join("\n") : "(no explicit uidrange rule; system defaults may apply)", | ||
| "", | ||
| "── Referenced route tables ──", | ||
| tableResults.length ? tableResults.join("\n\n") : "(none referenced by matching UID rules)", | ||
| "", | ||
| "── Default IPv4 routes ──", | ||
| routes4.stdout.split(/\r?\n/).filter((line) => /^default\b/.test(line.trim())).join("\n") || "(none reported)", | ||
| "", | ||
| "── Default IPv6 routes ──", | ||
| routes6.stdout.split(/\r?\n/).filter((line) => /^default\b/.test(line.trim())).join("\n") || "(none reported)", | ||
| "", | ||
| "── UID network policy ──", | ||
| policyLinesForUid(policy.stdout, uid).join("\n") || "(no explicit UID policy)", | ||
| ]; | ||
| if (includeConnectivitySummary) { | ||
| sections.push("", "── Connectivity summary ──", ...summarizeConnectivity(connectivity.stdout)); | ||
| } | ||
| return { content: [{ type: "text", text: OutputProcessor.process(sections.join("\n"), 40000) }] }; | ||
| } | ||
| catch (error) { | ||
| return { content: [{ type: "text", text: OutputProcessor.formatError(error) }], isError: true }; | ||
| } | ||
| }); | ||
| } | ||
| //# sourceMappingURL=app-network.js.map |
| {"version":3,"file":"app-network.js","sourceRoot":"","sources":["../../src/tools/app-network.ts"],"names":[],"mappings":"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"} |
| /** | ||
| * Read-only Room / SQLite inspection. | ||
| * | ||
| * The tool deliberately scopes database access to an installed package's | ||
| * databases directory and requires either Android's run-as sandbox or root. | ||
| * SQL is validated before any device lookup and sqlite3 is launched with both | ||
| * -readonly and PRAGMA query_only=ON as defense in depth. | ||
| */ | ||
| import { ToolContext } from "../tool-context.js"; | ||
| export interface ReadOnlySqlValidation { | ||
| sql?: string; | ||
| kind?: "query" | "pragma" | "explain"; | ||
| error?: string; | ||
| } | ||
| /** Require a regular file and explicitly reject symbolic links before reading. */ | ||
| export declare function buildReadOnlyFileGuard(path: string): string; | ||
| /** Validate and normalize a single read-only SQLite statement. */ | ||
| export declare function validateReadOnlySql(input: string): ReadOnlySqlValidation; | ||
| /** Apply a hard row cap to result-producing SELECT/WITH queries. */ | ||
| export declare function limitReadOnlySql(validation: ReadOnlySqlValidation, maxRows: number): string; | ||
| export declare function registerDatabaseInspectorTools(ctx: ToolContext): void; | ||
| //# sourceMappingURL=database-inspector.d.ts.map |
| {"version":3,"file":"database-inspector.d.ts","sourceRoot":"","sources":["../../src/tools/database-inspector.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AAQH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAkCjD,MAAM,WAAW,qBAAqB;IACpC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,kFAAkF;AAClF,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAG3D;AA4BD,kEAAkE;AAClE,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,qBAAqB,CAyCxE;AAED,oEAAoE;AACpE,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,qBAAqB,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAM3F;AAyLD,wBAAgB,8BAA8B,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CAkIrE"} |
| // Copyright 2026 Jason <fullread@github> | ||
| // SPDX-License-Identifier: Apache-2.0 | ||
| /** | ||
| * Read-only Room / SQLite inspection. | ||
| * | ||
| * The tool deliberately scopes database access to an installed package's | ||
| * databases directory and requires either Android's run-as sandbox or root. | ||
| * SQL is validated before any device lookup and sqlite3 is launched with both | ||
| * -readonly and PRAGMA query_only=ON as defense in depth. | ||
| */ | ||
| import { z } from "zod"; | ||
| import { createWriteStream, unlinkSync } from "fs"; | ||
| import { randomBytes } from "crypto"; | ||
| import { join } from "path"; | ||
| import { Transform } from "stream"; | ||
| import { pipeline } from "stream/promises"; | ||
| import { OutputProcessor } from "../middleware/output-processor.js"; | ||
| import { shellQuote } from "../middleware/sanitize.js"; | ||
| import { ensurePrivateDir } from "../middleware/fs-utils.js"; | ||
| import { isOnDevice } from "../config/config.js"; | ||
| const PACKAGE_NAME_PATTERN = /^[A-Za-z][A-Za-z0-9_]*(?:\.[A-Za-z0-9_]+)+$/; | ||
| const DATABASE_NAME_PATTERN = /^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$/; | ||
| const MAX_SQL_LENGTH = 8192; | ||
| const MAX_DATABASE_BYTES = 64 * 1024 * 1024; | ||
| const READ_ONLY_PRAGMAS = new Set([ | ||
| "application_id", | ||
| "compile_options", | ||
| "database_list", | ||
| "encoding", | ||
| "foreign_key_list", | ||
| "freelist_count", | ||
| "index_info", | ||
| "index_list", | ||
| "index_xinfo", | ||
| "integrity_check", | ||
| "page_count", | ||
| "quick_check", | ||
| "schema_version", | ||
| "table_info", | ||
| "table_list", | ||
| "table_xinfo", | ||
| "user_version", | ||
| ]); | ||
| const MUTATING_SQL = /\b(?:ALTER|ANALYZE|ATTACH|BEGIN|COMMIT|CREATE|DELETE|DETACH|DROP|EVAL|INSERT|LOAD_EXTENSION|PRAGMA\s+WRITABLE_SCHEMA|READFILE|REINDEX|RELEASE|REPLACE|ROLLBACK|SAVEPOINT|UPDATE|VACUUM|WRITEFILE)\b/i; | ||
| const SIDE_EFFECT_FUNCTION = /(?:^|[^A-Za-z0-9_])(?:EVAL|LOAD_EXTENSION|READFILE|WRITEFILE|"(?:EVAL|LOAD_EXTENSION|READFILE|WRITEFILE)"|`(?:EVAL|LOAD_EXTENSION|READFILE|WRITEFILE)`|\[(?:EVAL|LOAD_EXTENSION|READFILE|WRITEFILE)\])\s*\(/i; | ||
| /** Require a regular file and explicitly reject symbolic links before reading. */ | ||
| export function buildReadOnlyFileGuard(path) { | ||
| const quoted = shellQuote(path); | ||
| return `test -f ${quoted} && ! test -L ${quoted}`; | ||
| } | ||
| /** Mask SQL string/identifier literals so safety keywords are checked as syntax, not data. */ | ||
| function maskSqlLiterals(sql) { | ||
| let quote = null; | ||
| let masked = ""; | ||
| for (let index = 0; index < sql.length; index++) { | ||
| const char = sql[index]; | ||
| if (quote) { | ||
| if (char === quote && sql[index + 1] === quote) { | ||
| masked += " "; | ||
| index++; | ||
| } | ||
| else if (char === quote) { | ||
| quote = null; | ||
| masked += char; | ||
| } | ||
| else { | ||
| masked += " "; | ||
| } | ||
| } | ||
| else if (char === "'" || char === '"') { | ||
| quote = char; | ||
| masked += char; | ||
| } | ||
| else { | ||
| masked += char; | ||
| } | ||
| } | ||
| return masked; | ||
| } | ||
| /** Validate and normalize a single read-only SQLite statement. */ | ||
| export function validateReadOnlySql(input) { | ||
| if (input.length > MAX_SQL_LENGTH) { | ||
| return { error: `SQL exceeds ${MAX_SQL_LENGTH} characters.` }; | ||
| } | ||
| let sql = input.trim(); | ||
| if (!sql) | ||
| return { error: "SQL query must not be empty." }; | ||
| if (sql.includes("\0")) | ||
| return { error: "SQL query contains a NUL byte." }; | ||
| if (sql.endsWith(";")) | ||
| sql = sql.slice(0, -1).trimEnd(); | ||
| const syntaxOnly = maskSqlLiterals(sql); | ||
| if (/--|\/\*|\*\//.test(syntaxOnly)) { | ||
| return { error: "SQL comments are not allowed in read-only inspection queries." }; | ||
| } | ||
| if (syntaxOnly.includes(";")) { | ||
| return { error: "Only one SQL statement is allowed." }; | ||
| } | ||
| if (MUTATING_SQL.test(syntaxOnly) || SIDE_EFFECT_FUNCTION.test(sql)) { | ||
| return { error: "Only read-only SELECT, WITH, EXPLAIN, and approved PRAGMA statements are allowed." }; | ||
| } | ||
| if (/^(?:SELECT|WITH)\b/i.test(sql)) { | ||
| return { sql, kind: "query" }; | ||
| } | ||
| if (/^EXPLAIN(?:\s+QUERY\s+PLAN)?\s+(?:SELECT|WITH)\b/i.test(sql)) { | ||
| return { sql, kind: "explain" }; | ||
| } | ||
| const pragma = sql.match(/^PRAGMA\s+([A-Za-z0-9_]+)(?:\s*\([^;]*\))?$/i); | ||
| if (pragma) { | ||
| const name = pragma[1].toLowerCase(); | ||
| if (!READ_ONLY_PRAGMAS.has(name)) { | ||
| return { error: `PRAGMA ${name} is not on the read-only allowlist.` }; | ||
| } | ||
| if (/=/.test(sql)) { | ||
| return { error: "PRAGMA assignments are not allowed." }; | ||
| } | ||
| return { sql, kind: "pragma" }; | ||
| } | ||
| return { error: "Only read-only SELECT, WITH, EXPLAIN, and approved PRAGMA statements are allowed." }; | ||
| } | ||
| /** Apply a hard row cap to result-producing SELECT/WITH queries. */ | ||
| export function limitReadOnlySql(validation, maxRows) { | ||
| if (!validation.sql || !validation.kind) | ||
| throw new Error("Validated SQL is required."); | ||
| if (validation.kind === "query") { | ||
| return `SELECT * FROM (${validation.sql}) AS deepadb_readonly LIMIT ${maxRows}`; | ||
| } | ||
| return validation.sql; | ||
| } | ||
| async function resolveAccessMode(ctx, serial, packageName, requested) { | ||
| if (requested === "run-as" || requested === "auto") { | ||
| const probe = await ctx.bridge.shell(`run-as ${shellQuote(packageName)} id`, { | ||
| device: serial, | ||
| timeout: 5000, | ||
| ignoreExitCode: true, | ||
| }); | ||
| if (probe.exitCode === 0 && /uid=\d+/.test(probe.stdout)) | ||
| return "run-as"; | ||
| if (requested === "run-as") | ||
| return null; | ||
| } | ||
| const rootProbe = await ctx.bridge.shell("su -c id", { | ||
| device: serial, | ||
| timeout: 5000, | ||
| ignoreExitCode: true, | ||
| }); | ||
| return rootProbe.stdout.includes("uid=0") ? "root" : null; | ||
| } | ||
| async function executeForPackage(ctx, serial, packageName, access, command) { | ||
| if (access === "run-as") { | ||
| return ctx.bridge.shell(`run-as ${shellQuote(packageName)} sh -c ${shellQuote(command)}`, { | ||
| device: serial, | ||
| timeout: 30000, | ||
| ignoreExitCode: true, | ||
| }); | ||
| } | ||
| return ctx.bridge.rootShell(command, { | ||
| device: serial, | ||
| timeout: 30000, | ||
| ignoreExitCode: true, | ||
| }); | ||
| } | ||
| async function copyPackageFileToHost(ctx, serial, packageName, access, remotePath, localPath, maxBytes) { | ||
| const guardedRead = `${buildReadOnlyFileGuard(remotePath)} && cat ${shellQuote(remotePath)}`; | ||
| const args = access === "run-as" | ||
| ? ["exec-out", "run-as", packageName, "sh", "-c", guardedRead] | ||
| : ["exec-out", "su", "-c", guardedRead]; | ||
| const child = ctx.bridge.spawnStreaming(args, serial); | ||
| if (!child.stdout) | ||
| throw new Error("ADB snapshot stream has no stdout pipe."); | ||
| let bytes = 0; | ||
| let stderr = ""; | ||
| let timedOut = false; | ||
| const timeout = setTimeout(() => { | ||
| timedOut = true; | ||
| child.kill(); | ||
| }, 60000); | ||
| child.stderr?.on("data", (chunk) => { | ||
| if (stderr.length < 8192) | ||
| stderr += chunk.toString().slice(0, 8192 - stderr.length); | ||
| }); | ||
| const limiter = new Transform({ | ||
| transform(chunk, _encoding, callback) { | ||
| bytes += chunk.length; | ||
| if (bytes > maxBytes) { | ||
| callback(new Error(`Database snapshot exceeds the ${Math.floor(maxBytes / 1024 / 1024)} MiB safety limit.`)); | ||
| } | ||
| else { | ||
| callback(null, chunk); | ||
| } | ||
| }, | ||
| }); | ||
| const exited = new Promise((resolve, reject) => { | ||
| child.once("error", reject); | ||
| child.once("close", (code) => resolve(code)); | ||
| }); | ||
| try { | ||
| await pipeline(child.stdout, limiter, createWriteStream(localPath, { mode: 0o600 })); | ||
| const exitCode = await exited; | ||
| if (timedOut) | ||
| throw new Error("Database snapshot copy timed out after 60 seconds."); | ||
| if (exitCode !== 0) | ||
| throw new Error(`ADB snapshot copy failed (exit ${exitCode}): ${stderr.trim() || "no detail"}`); | ||
| return bytes; | ||
| } | ||
| catch (error) { | ||
| child.kill(); | ||
| try { | ||
| unlinkSync(localPath); | ||
| } | ||
| catch { /* best-effort cleanup */ } | ||
| throw error; | ||
| } | ||
| finally { | ||
| clearTimeout(timeout); | ||
| } | ||
| } | ||
| function formatSqliteRows(rows) { | ||
| if (rows.length === 0) | ||
| return "(no rows returned)"; | ||
| const columns = [...new Set(rows.flatMap((row) => Object.keys(row)))]; | ||
| const display = (value) => { | ||
| if (value === null) | ||
| return "NULL"; | ||
| if (value instanceof Uint8Array) | ||
| return `<BLOB ${value.byteLength} bytes>`; | ||
| const text = String(value).replace(/[\r\n\t]+/g, " "); | ||
| return text.length > 1000 ? `${text.slice(0, 1000)}…` : text; | ||
| }; | ||
| return [columns.join("\t"), ...rows.map((row) => columns.map((column) => display(row[column])).join("\t"))].join("\n"); | ||
| } | ||
| async function executeHostSnapshotQuery(ctx, serial, packageName, access, remoteDatabasePath, sql) { | ||
| const snapshotDir = join(ctx.config.tempDir, "sqlite-readonly"); | ||
| ensurePrivateDir(snapshotDir); | ||
| const unique = `${process.pid}_${Date.now()}_${randomBytes(4).toString("hex")}`; | ||
| const localDatabase = join(snapshotDir, `snapshot_${unique}.db`); | ||
| const localWal = `${localDatabase}-wal`; | ||
| const cleanup = () => { | ||
| for (const path of [localDatabase, localWal, `${localDatabase}-shm`]) { | ||
| try { | ||
| unlinkSync(path); | ||
| } | ||
| catch { /* missing or already cleaned */ } | ||
| } | ||
| }; | ||
| try { | ||
| const bytes = await copyPackageFileToHost(ctx, serial, packageName, access, remoteDatabasePath, localDatabase, MAX_DATABASE_BYTES); | ||
| const walProbe = await executeForPackage(ctx, serial, packageName, access, `wal=${shellQuote(`${remoteDatabasePath}-wal`)}; if test -L "$wal"; then echo WAL_UNSAFE_LINK; elif test -f "$wal"; then stat -c '%s' "$wal"; else echo 0; fi`); | ||
| if (walProbe.stdout.trim() === "WAL_UNSAFE_LINK") { | ||
| throw new Error("The database WAL is a symbolic link; package-scoped inspection refuses linked files."); | ||
| } | ||
| const walBytes = Number.parseInt(walProbe.stdout.trim(), 10) || 0; | ||
| if (walBytes > 0) { | ||
| if (bytes + walBytes > MAX_DATABASE_BYTES) { | ||
| throw new Error(`Database plus WAL exceeds the ${MAX_DATABASE_BYTES / 1024 / 1024} MiB safety limit.`); | ||
| } | ||
| try { | ||
| await copyPackageFileToHost(ctx, serial, packageName, access, `${remoteDatabasePath}-wal`, localWal, MAX_DATABASE_BYTES - bytes); | ||
| } | ||
| catch (error) { | ||
| ctx.logger.warn(`SQLite WAL snapshot was unavailable; inspecting the main database copy only: ${error instanceof Error ? error.message : error}`); | ||
| } | ||
| } | ||
| const sqlite = await import("node:sqlite"); | ||
| const database = new sqlite.DatabaseSync(localDatabase, { readOnly: true, allowExtension: false }); | ||
| try { | ||
| database.exec("PRAGMA query_only=ON"); | ||
| const statement = database.prepare(sql); | ||
| statement.setReadBigInts(true); | ||
| const rows = statement.all(); | ||
| return { text: formatSqliteRows(rows), bytes: bytes + walBytes }; | ||
| } | ||
| finally { | ||
| database.close(); | ||
| } | ||
| } | ||
| catch (error) { | ||
| if (error instanceof Error && /node:sqlite|No such built-in module/i.test(error.message)) { | ||
| throw new Error("Neither device sqlite3 nor the Node.js node:sqlite fallback is available. Use Node.js 22.5 or newer.", { cause: error }); | ||
| } | ||
| throw error; | ||
| } | ||
| finally { | ||
| cleanup(); | ||
| } | ||
| } | ||
| export function registerDatabaseInspectorTools(ctx) { | ||
| ctx.server.tool("adb_sqlite_inspect", "Safely inspect a Room or SQLite database inside an installed app. Lists package databases, shows schema, or executes one validated read-only query. Requires a debuggable app (run-as) or root; uses device sqlite3 when available and otherwise a bounded read-only host snapshot.", { | ||
| packageName: z.string().regex(PACKAGE_NAME_PATTERN) | ||
| .describe("Installed Android package whose databases directory may be inspected"), | ||
| action: z.enum(["list", "schema", "query"]).optional().default("list") | ||
| .describe("List databases, show sqlite_master schema, or run a read-only query"), | ||
| database: z.string().regex(DATABASE_NAME_PATTERN).optional() | ||
| .describe("Database filename inside the package databases directory (no path separators)"), | ||
| query: z.string().max(MAX_SQL_LENGTH).optional() | ||
| .describe("One read-only SELECT, WITH, EXPLAIN, or allowlisted PRAGMA statement"), | ||
| maxRows: z.number().int().min(1).max(1000).optional().default(100) | ||
| .describe("Maximum rows returned for SELECT/WITH queries (1-1000, default 100)"), | ||
| access: z.enum(["auto", "run-as", "root"]).optional().default("auto") | ||
| .describe("Access method. auto prefers run-as and falls back to root."), | ||
| device: z.string().optional().describe("Device serial"), | ||
| }, async ({ packageName, action, database, query, maxRows, access, device }) => { | ||
| try { | ||
| let validatedSql; | ||
| if (action === "query") { | ||
| if (!database) { | ||
| return { content: [{ type: "text", text: "database is required for action=query." }], isError: true }; | ||
| } | ||
| if (!query) { | ||
| return { content: [{ type: "text", text: "query is required for action=query." }], isError: true }; | ||
| } | ||
| validatedSql = validateReadOnlySql(query); | ||
| if (validatedSql.error) { | ||
| return { content: [{ type: "text", text: validatedSql.error }], isError: true }; | ||
| } | ||
| } | ||
| if (action === "schema" && !database) { | ||
| return { content: [{ type: "text", text: "database is required for action=schema." }], isError: true }; | ||
| } | ||
| const resolved = await ctx.deviceManager.resolveDevice(device); | ||
| const serial = resolved.serial; | ||
| const packageProbe = await ctx.bridge.shell(`pm path ${shellQuote(packageName)}`, { | ||
| device: serial, | ||
| timeout: 10000, | ||
| ignoreExitCode: true, | ||
| }); | ||
| if (!packageProbe.stdout.includes("package:")) { | ||
| return { content: [{ type: "text", text: `Package is not installed: ${packageName}` }], isError: true }; | ||
| } | ||
| const selectedAccess = await resolveAccessMode(ctx, serial, packageName, access); | ||
| if (!selectedAccess) { | ||
| return { | ||
| content: [{ type: "text", text: `Cannot inspect ${packageName}: run-as is unavailable and root access was not detected.` }], | ||
| isError: true, | ||
| }; | ||
| } | ||
| const databaseDir = `/data/user/0/${packageName}/databases`; | ||
| if (action === "list") { | ||
| const command = [ | ||
| `dir=${shellQuote(databaseDir)}`, | ||
| `test -d "$dir" || { echo NO_DATABASE_DIR; exit 0; }`, | ||
| `for f in "$dir"/*; do`, | ||
| ` test -f "$f" || continue`, | ||
| ` test -L "$f" && continue`, | ||
| ` name=$(basename "$f")`, | ||
| ` case "$name" in *-wal|*-shm|*-journal) continue ;; esac`, | ||
| ` size=$(stat -c '%s' "$f" 2>/dev/null || echo unknown)`, | ||
| ` printf '%s\t%s bytes\n' "$name" "$size"`, | ||
| `done`, | ||
| ].join("\n"); | ||
| const result = await executeForPackage(ctx, serial, packageName, selectedAccess, command); | ||
| const body = result.stdout.trim(); | ||
| if (body === "NO_DATABASE_DIR" || !body) { | ||
| return { content: [{ type: "text", text: `${packageName} has no visible databases in its app data directory (access: ${selectedAccess}).` }] }; | ||
| } | ||
| return { content: [{ type: "text", text: `=== Databases for ${packageName} (${selectedAccess}) ===\n${OutputProcessor.process(body, 30000)}` }] }; | ||
| } | ||
| const databasePath = `${databaseDir}/${database}`; | ||
| const selectedSql = action === "schema" | ||
| ? "SELECT type, name, tbl_name, sql FROM sqlite_master ORDER BY type, name" | ||
| : limitReadOnlySql(validatedSql, maxRows); | ||
| const fileProbe = await executeForPackage(ctx, serial, packageName, selectedAccess, `db=${shellQuote(databasePath)}; if test -L "$db"; then echo DATABASE_UNSAFE_LINK; elif test -f "$db"; then echo DATABASE_OK; else echo DATABASE_NOT_FOUND; fi`); | ||
| if (fileProbe.stdout.includes("DATABASE_UNSAFE_LINK")) { | ||
| return { content: [{ type: "text", text: `Database is a symbolic link and cannot be inspected safely: ${database}` }], isError: true }; | ||
| } | ||
| if (!fileProbe.stdout.includes("DATABASE_OK")) { | ||
| return { content: [{ type: "text", text: `Database not found inside ${packageName}: ${database}` }], isError: true }; | ||
| } | ||
| const sqliteProbe = await executeForPackage(ctx, serial, packageName, selectedAccess, "command -v sqlite3 >/dev/null 2>&1 && echo SQLITE_OK"); | ||
| let body; | ||
| let execution = "device sqlite3 (-readonly + query_only)"; | ||
| if (sqliteProbe.stdout.includes("SQLITE_OK")) { | ||
| const command = `${buildReadOnlyFileGuard(databasePath)} || { echo 'DeepADB: linked or non-regular database refused' >&2; exit 1; }; sqlite3 -readonly -batch -header -column ${shellQuote(databasePath)} ${shellQuote(`PRAGMA query_only=ON; ${selectedSql}`)}`; | ||
| const result = await executeForPackage(ctx, serial, packageName, selectedAccess, command); | ||
| if (result.exitCode !== 0 || result.stderr.trim()) { | ||
| const detail = (result.stderr || result.stdout).trim(); | ||
| return { content: [{ type: "text", text: `Read-only SQLite inspection failed: ${detail || `exit ${result.exitCode}`}` }], isError: true }; | ||
| } | ||
| body = result.stdout.trim() || "(no rows returned)"; | ||
| } | ||
| else if (!isOnDevice()) { | ||
| const snapshot = await executeHostSnapshotQuery(ctx, serial, packageName, selectedAccess, databasePath, selectedSql); | ||
| body = snapshot.text; | ||
| execution = `host read-only snapshot (${snapshot.bytes} bytes copied; private local snapshot deleted after use)`; | ||
| } | ||
| else { | ||
| return { | ||
| content: [{ type: "text", text: "sqlite3 is unavailable on this Android host. In on-device mode, install a trusted sqlite3 binary; no database was changed." }], | ||
| isError: true, | ||
| }; | ||
| } | ||
| const title = action === "schema" ? "Schema" : `Read-only query (max ${maxRows} rows)`; | ||
| return { | ||
| content: [{ type: "text", text: `=== ${title}: ${packageName}/${database} ===\nAccess: ${selectedAccess}\nExecution: ${execution}\n${OutputProcessor.process(body, 30000)}` }], | ||
| }; | ||
| } | ||
| catch (error) { | ||
| return { content: [{ type: "text", text: OutputProcessor.formatError(error) }], isError: true }; | ||
| } | ||
| }); | ||
| } | ||
| //# sourceMappingURL=database-inspector.js.map |
| {"version":3,"file":"database-inspector.js","sourceRoot":"","sources":["../../src/tools/database-inspector.ts"],"names":[],"mappings":"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"} |
| /** Unified, read-only DeepADB runtime readiness audit. */ | ||
| import { ToolContext } from "../tool-context.js"; | ||
| /** Build a safe probe that accepts modem character devices only. */ | ||
| export declare function buildModemCharacterDeviceProbe(paths: string[]): string; | ||
| export declare function registerRuntimeAuditTools(ctx: ToolContext): void; | ||
| //# sourceMappingURL=runtime-audit.d.ts.map |
| {"version":3,"file":"runtime-audit.d.ts","sourceRoot":"","sources":["../../src/tools/runtime-audit.ts"],"names":[],"mappings":"AAEA,0DAA0D;AAG1D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAWjD,oEAAoE;AACpE,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAEtE;AAOD,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CAkGhE"} |
| // Copyright 2026 Jason <fullread@github> | ||
| // SPDX-License-Identifier: Apache-2.0 | ||
| /** Unified, read-only DeepADB runtime readiness audit. */ | ||
| import { z } from "zod"; | ||
| import { OutputProcessor } from "../middleware/output-processor.js"; | ||
| import { MODEM_PATHS, detectChipsetFamily } from "../middleware/chipset.js"; | ||
| import { isOnDevice } from "../config/config.js"; | ||
| import { shellQuote } from "../middleware/sanitize.js"; | ||
| /** Build a safe probe that accepts modem character devices only. */ | ||
| export function buildModemCharacterDeviceProbe(paths) { | ||
| return paths.map((path) => `test -c ${shellQuote(path)} && echo ${shellQuote(path)}`).join("; "); | ||
| } | ||
| function parseCapabilities(output, names) { | ||
| const found = new Set(output.split(/\r?\n/).map((line) => line.trim()).filter(Boolean)); | ||
| return names.map((name) => ({ name, available: found.has(name) })); | ||
| } | ||
| export function registerRuntimeAuditTools(ctx) { | ||
| ctx.server.tool("adb_runtime_audit", "Run a unified, read-only DeepADB readiness audit covering transport, authorization, Android state, root, SELinux, storage, common binaries, UI/network support, SQLite, chipset/modem nodes, and Wear prerequisites. Makes no device changes.", { | ||
| device: z.string().optional().describe("Device serial to audit"), | ||
| }, async ({ device }) => { | ||
| try { | ||
| const devices = await ctx.deviceManager.listDevices(); | ||
| const resolved = await ctx.deviceManager.resolveDevice(device); | ||
| const serial = resolved.serial; | ||
| const props = await ctx.deviceManager.getDeviceProps(serial); | ||
| const family = detectChipsetFamily(props); | ||
| const capabilityNames = ["am", "cmd", "dumpsys", "getenforce", "ip", "logcat", "pm", "settings", "sqlite3", "uiautomator"]; | ||
| const [version, identity, rootIdentity, selinux, boot, storage, capabilities, routes, battery, gms, characteristics] = await Promise.all([ | ||
| ctx.bridge.version().catch((error) => `unavailable: ${error instanceof Error ? error.message : error}`), | ||
| ctx.bridge.shell("id", { device: serial, timeout: 5000, ignoreExitCode: true }), | ||
| ctx.bridge.shell("su -c id", { device: serial, timeout: 5000, ignoreExitCode: true }), | ||
| ctx.bridge.shell("getenforce", { device: serial, timeout: 5000, ignoreExitCode: true }), | ||
| ctx.bridge.shell("getprop sys.boot_completed", { device: serial, timeout: 5000, ignoreExitCode: true }), | ||
| ctx.bridge.shell("df -k /data /sdcard", { device: serial, timeout: 10000, ignoreExitCode: true }), | ||
| ctx.bridge.shell(`for c in ${capabilityNames.join(" ")}; do command -v "$c" >/dev/null 2>&1 && echo "$c"; done`, { | ||
| device: serial, timeout: 10000, ignoreExitCode: true, | ||
| }), | ||
| ctx.bridge.shell("ip route show", { device: serial, timeout: 10000, ignoreExitCode: true }), | ||
| ctx.bridge.shell("dumpsys battery", { device: serial, timeout: 10000, ignoreExitCode: true }), | ||
| ctx.bridge.shell("pm path com.google.android.gms", { device: serial, timeout: 10000, ignoreExitCode: true }), | ||
| ctx.bridge.shell("getprop ro.build.characteristics", { device: serial, timeout: 5000, ignoreExitCode: true }), | ||
| ]); | ||
| const rootAvailable = /uid=0\b/.test(rootIdentity.stdout); | ||
| const modemPaths = MODEM_PATHS[family] ?? MODEM_PATHS.generic ?? []; | ||
| let existingModemPaths = []; | ||
| if (rootAvailable && modemPaths.length > 0) { | ||
| const probe = buildModemCharacterDeviceProbe(modemPaths); | ||
| const result = await ctx.bridge.rootShell(probe, { device: serial, timeout: 10000, ignoreExitCode: true }); | ||
| existingModemPaths = result.stdout.split(/\r?\n/).map((line) => line.trim()) | ||
| .filter((line) => modemPaths.includes(line)); | ||
| } | ||
| const parsedCapabilities = parseCapabilities(capabilities.stdout, capabilityNames); | ||
| const has = (name) => parsedCapabilities.some((item) => item.name === name && item.available); | ||
| let hostSqlite = false; | ||
| if (!isOnDevice()) { | ||
| try { | ||
| const sqlite = await import("node:sqlite"); | ||
| hostSqlite = typeof sqlite.DatabaseSync === "function"; | ||
| } | ||
| catch { /* unavailable on early Node 22 builds */ } | ||
| } | ||
| const bootComplete = boot.stdout.trim() === "1"; | ||
| const routeAvailable = routes.stdout.trim().length > 0; | ||
| const isWear = characteristics.stdout.toLowerCase().split(",").map((value) => value.trim()).includes("watch"); | ||
| const readiness = [ | ||
| ["Core ADB", bootComplete && /uid=\d+/.test(identity.stdout), bootComplete ? "transport and Android userspace responsive" : "device is not fully booted"], | ||
| ["UI automation", has("uiautomator") && has("am"), has("uiautomator") ? "uiautomator available" : "uiautomator missing"], | ||
| ["Network diagnostics", has("ip") && routeAvailable, routeAvailable ? "route table readable" : "no routes reported"], | ||
| ["SQLite inspection", has("sqlite3") || hostSqlite, has("sqlite3") ? "device sqlite3 available" : hostSqlite ? "host read-only snapshot fallback available" : "no SQLite execution backend"], | ||
| ["Root diagnostics", rootAvailable, rootAvailable ? "su returns uid=0" : "root unavailable"], | ||
| ["Modem / AT", rootAvailable && existingModemPaths.length > 0, existingModemPaths.length ? `${existingModemPaths.length} ${family} node(s) visible` : `no visible ${family} modem node`], | ||
| ["Wear Data Layer", gms.stdout.includes("package:"), `${isWear ? "watch" : "handheld"}; Google Play services ${gms.stdout.includes("package:") ? "present" : "missing"}`], | ||
| ]; | ||
| const sections = [ | ||
| "=== DeepADB Unified Runtime Audit (read-only) ===", | ||
| `Mode: ${isOnDevice() ? "on-device LocalBridge" : "host ADB"}`, | ||
| `ADB: ${version.split(/\r?\n/)[0]}`, | ||
| `Connected devices: ${devices.length} (${devices.filter((item) => item.state === "device").length} online)`, | ||
| `Target: ${props["ro.product.model"] ?? resolved.model ?? "unknown"} / Android ${props["ro.build.version.release"] ?? "unknown"} (SDK ${props["ro.build.version.sdk"] ?? "unknown"})`, | ||
| `Boot completed: ${bootComplete ? "yes" : "no"}`, | ||
| `Shell identity: ${identity.stdout.trim() || "unavailable"}`, | ||
| `Root: ${rootAvailable ? "available" : "not available"}`, | ||
| `SELinux: ${selinux.stdout.trim() || "unknown"}`, | ||
| `Chipset family: ${family}`, | ||
| "", | ||
| "── Readiness matrix ──", | ||
| ...readiness.map(([name, ready, detail]) => `${ready ? "✓" : "○"} ${name}: ${detail}`), | ||
| "", | ||
| "── Command capabilities ──", | ||
| parsedCapabilities.map((item) => `${item.available ? "✓" : "○"} ${item.name}`).join("\n"), | ||
| "", | ||
| "── Storage snapshot ──", | ||
| storage.stdout.trim() || "(unavailable)", | ||
| "", | ||
| "── Battery snapshot ──", | ||
| battery.stdout.split(/\r?\n/).map((line) => line.trim()).filter((line) => /^(level|status|health|temperature|powered):/i.test(line)).join("\n") || "(unavailable)", | ||
| "", | ||
| "No files, settings, packages, routes, or device state were modified.", | ||
| ]; | ||
| return { content: [{ type: "text", text: OutputProcessor.process(sections.join("\n"), 40000) }] }; | ||
| } | ||
| catch (error) { | ||
| return { content: [{ type: "text", text: OutputProcessor.formatError(error) }], isError: true }; | ||
| } | ||
| }); | ||
| } | ||
| //# sourceMappingURL=runtime-audit.js.map |
| {"version":3,"file":"runtime-audit.js","sourceRoot":"","sources":["../../src/tools/runtime-audit.ts"],"names":[],"mappings":"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"} |
| /** Read-only Wear OS Data Layer preflight across a phone/watch pair. */ | ||
| import { ToolContext } from "../tool-context.js"; | ||
| export declare function isWearDeviceProperties(props: Record<string, string>): boolean; | ||
| export declare function registerWearTools(ctx: ToolContext): void; | ||
| //# sourceMappingURL=wear.d.ts.map |
| {"version":3,"file":"wear.d.ts","sourceRoot":"","sources":["../../src/tools/wear.ts"],"names":[],"mappings":"AAEA,wEAAwE;AAGxE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAOjD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAM7E;AAoDD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CAqFxD"} |
| // Copyright 2026 Jason <fullread@github> | ||
| // SPDX-License-Identifier: Apache-2.0 | ||
| /** Read-only Wear OS Data Layer preflight across a phone/watch pair. */ | ||
| import { z } from "zod"; | ||
| import { OutputProcessor } from "../middleware/output-processor.js"; | ||
| import { shellQuote } from "../middleware/sanitize.js"; | ||
| const PACKAGE_NAME_PATTERN = /^[A-Za-z][A-Za-z0-9_]*(?:\.[A-Za-z0-9_]+)+$/; | ||
| export function isWearDeviceProperties(props) { | ||
| return (props["ro.build.characteristics"] ?? "") | ||
| .toLowerCase() | ||
| .split(",") | ||
| .map((value) => value.trim()) | ||
| .includes("watch"); | ||
| } | ||
| async function inspectSide(ctx, device, packageName) { | ||
| const serial = device.info.serial; | ||
| const [gms, bluetooth, services, app] = await Promise.all([ | ||
| ctx.bridge.shell("pm path com.google.android.gms", { device: serial, timeout: 10000, ignoreExitCode: true }), | ||
| ctx.bridge.shell("settings get global bluetooth_on", { device: serial, timeout: 5000, ignoreExitCode: true }), | ||
| ctx.bridge.shell("dumpsys activity services com.google.android.gms", { device: serial, timeout: 20000, ignoreExitCode: true }), | ||
| packageName | ||
| ? ctx.bridge.shell(`dumpsys package ${shellQuote(packageName)}`, { device: serial, timeout: 15000, ignoreExitCode: true }) | ||
| : Promise.resolve({ stdout: "", stderr: "", exitCode: 0, timedOut: false, bufferExceeded: false }), | ||
| ]); | ||
| let appState; | ||
| if (packageName) { | ||
| const installed = /\bPackage \[|\buserId=/.test(app.stdout); | ||
| const disabled = /enabled=(?:0|false|disabled)|enabledSetting=(?:2|3|4)/i.test(app.stdout); | ||
| appState = { packageName, installed, enabled: installed && !disabled }; | ||
| } | ||
| return { | ||
| model: device.props["ro.product.model"] ?? device.info.model ?? "unknown", | ||
| gms: gms.stdout.includes("package:"), | ||
| bluetooth: bluetooth.stdout.trim() === "1", | ||
| app: appState, | ||
| dataLayerSignal: /wearable|data.?layer|node.?peer/i.test(services.stdout), | ||
| }; | ||
| } | ||
| function countAssociations(output) { | ||
| const lines = output.split(/\r?\n/).map((line) => line.trim()).filter(Boolean); | ||
| const associationLines = lines.filter((line) => /association|deviceprofile|mDeviceMacAddress|packageName/i.test(line)); | ||
| return associationLines.length; | ||
| } | ||
| export function registerWearTools(ctx) { | ||
| ctx.server.tool("adb_wear_datalayer_preflight", "Run a read-only Wear OS Data Layer preflight across a connected phone and watch. Checks device roles, Google Play services, Bluetooth, optional app packages, companion association presence, and Data Layer service signals without exposing pairing identifiers.", { | ||
| phonePackage: z.string().regex(PACKAGE_NAME_PATTERN).optional() | ||
| .describe("Optional companion app package expected on the phone"), | ||
| wearPackage: z.string().regex(PACKAGE_NAME_PATTERN).optional() | ||
| .describe("Optional Wear app package expected on the watch"), | ||
| phoneDevice: z.string().optional().describe("Phone device serial; auto-detected when omitted"), | ||
| wearDevice: z.string().optional().describe("Wear device serial; auto-detected when omitted"), | ||
| }, async ({ phonePackage, wearPackage, phoneDevice, wearDevice }) => { | ||
| try { | ||
| const online = (await ctx.deviceManager.listDevices()).filter((device) => device.state === "device"); | ||
| const classified = await Promise.all(online.map(async (info) => { | ||
| const props = await ctx.deviceManager.getDeviceProps(info.serial); | ||
| return { info, props, wear: isWearDeviceProperties(props) }; | ||
| })); | ||
| const phone = phoneDevice | ||
| ? classified.find((device) => device.info.serial === phoneDevice && !device.wear) | ||
| : classified.find((device) => !device.wear); | ||
| const watch = wearDevice | ||
| ? classified.find((device) => device.info.serial === wearDevice && device.wear) | ||
| : classified.find((device) => device.wear); | ||
| const sections = ["=== Wear Data Layer Preflight (read-only) ==="]; | ||
| if (!phone) | ||
| sections.push(`○ Phone: ${phoneDevice ? "specified device is unavailable or classified as a watch" : "no connected handheld device found"}`); | ||
| if (!watch) | ||
| sections.push(`○ Watch: ${wearDevice ? "specified device is unavailable or not classified as a watch" : "no connected Wear OS device found"}`); | ||
| if (!phone || !watch) { | ||
| sections.push("", `Connected online devices: ${classified.length} (${classified.filter((device) => device.wear).length} watch, ${classified.filter((device) => !device.wear).length} handheld)`); | ||
| sections.push("Connect both sides, authorize USB debugging, and rerun the preflight. No pairing state was changed."); | ||
| return { content: [{ type: "text", text: sections.join("\n") }] }; | ||
| } | ||
| const [phoneState, watchState, associations] = await Promise.all([ | ||
| inspectSide(ctx, phone, phonePackage), | ||
| inspectSide(ctx, watch, wearPackage), | ||
| ctx.bridge.shell("cmd companiondevice list associations", { | ||
| device: phone.info.serial, timeout: 10000, ignoreExitCode: true, | ||
| }).then(async (result) => { | ||
| if (result.exitCode === 0 && !/unknown command|not found/i.test(result.stdout + result.stderr)) | ||
| return result.stdout; | ||
| const fallback = await ctx.bridge.shell("dumpsys companiondevice", { | ||
| device: phone.info.serial, timeout: 15000, ignoreExitCode: true, | ||
| }); | ||
| return fallback.stdout; | ||
| }), | ||
| ]); | ||
| const associationSignals = countAssociations(associations); | ||
| const requiredAppsReady = (!phoneState.app || (phoneState.app.installed && phoneState.app.enabled)) | ||
| && (!watchState.app || (watchState.app.installed && watchState.app.enabled)); | ||
| const ready = phoneState.gms && watchState.gms && phoneState.bluetooth && watchState.bluetooth && requiredAppsReady; | ||
| const describeSide = (role, state) => [ | ||
| `${role}: ${state.model}`, | ||
| ` ${state.gms ? "✓" : "✗"} Google Play services`, | ||
| ` ${state.bluetooth ? "✓" : "✗"} Bluetooth enabled`, | ||
| state.app | ||
| ? ` ${state.app.installed && state.app.enabled ? "✓" : "✗"} ${state.app.packageName}: ${!state.app.installed ? "not installed" : state.app.enabled ? "installed and enabled" : "disabled"}` | ||
| : " ○ App package check not requested", | ||
| ` ${state.dataLayerSignal ? "✓" : "○"} Active Data Layer service signal${state.dataLayerSignal ? " detected" : " not observed (may be idle)"}`, | ||
| ]; | ||
| sections.push("", ...describeSide("Phone", phoneState), "", ...describeSide("Watch", watchState), "", `${associationSignals > 0 ? "✓" : "○"} Companion association signals: ${associationSignals} (identifiers intentionally omitted)`, "", ready | ||
| ? "=== PREFLIGHT READY ===\nCore prerequisites are present. An app-level node/message exchange is still the definitive end-to-end test." | ||
| : "=== PREFLIGHT NEEDS ATTENTION ===\nResolve the failed prerequisites above, then rerun before testing an app-level node/message exchange.", "No Bluetooth, pairing, package, or service state was modified."); | ||
| return { content: [{ type: "text", text: OutputProcessor.process(sections.join("\n"), 30000) }] }; | ||
| } | ||
| catch (error) { | ||
| return { content: [{ type: "text", text: OutputProcessor.formatError(error) }], isError: true }; | ||
| } | ||
| }); | ||
| } | ||
| //# sourceMappingURL=wear.js.map |
| {"version":3,"file":"wear.js","sourceRoot":"","sources":["../../src/tools/wear.ts"],"names":[],"mappings":"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"} |
@@ -1,1 +0,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"} | ||
| {"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"} |
@@ -18,2 +18,3 @@ // Copyright 2026 Jason <fullread@github> | ||
| shannon: [ | ||
| "/dev/umts_router", | ||
| "/dev/umts_router0", | ||
@@ -20,0 +21,0 @@ "/dev/umts_router1", |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"chipset.js","sourceRoot":"","sources":["../../src/middleware/chipset.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"chipset.js","sourceRoot":"","sources":["../../src/middleware/chipset.ts"],"names":[],"mappings":"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"} |
@@ -1,1 +0,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"} | ||
| {"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"} |
+10
-2
@@ -28,2 +28,3 @@ // Copyright 2026 Jason <fullread@github> | ||
| import { registerHealthTools } from "./tools/health.js"; | ||
| import { registerRuntimeAuditTools } from "./tools/runtime-audit.js"; | ||
| import { registerWirelessTools } from "./tools/wireless.js"; | ||
@@ -61,2 +62,5 @@ import { registerControlTools } from "./tools/control.js"; | ||
| import { registerNetworkDiscoveryTools } from "./tools/network-discovery.js"; | ||
| import { registerAppNetworkTools } from "./tools/app-network.js"; | ||
| import { registerDatabaseInspectorTools } from "./tools/database-inspector.js"; | ||
| import { registerWearTools } from "./tools/wear.js"; | ||
| import { registerSensorTools } from "./tools/sensors.js"; | ||
@@ -110,3 +114,3 @@ import { registerWirelessFirmwareTools } from "./tools/wireless-firmware.js"; | ||
| const ctx = { server, bridge, deviceManager, logger, security, config }; | ||
| // Register all tool modules (45 modules) | ||
| // Register all tool modules (49 modules) | ||
| registerDeviceTools(ctx); | ||
@@ -121,2 +125,3 @@ registerShellTools(ctx); | ||
| registerHealthTools(ctx); | ||
| registerRuntimeAuditTools(ctx); | ||
| registerWirelessTools(ctx); | ||
@@ -154,2 +159,5 @@ registerControlTools(ctx); | ||
| registerNetworkDiscoveryTools(ctx); | ||
| registerAppNetworkTools(ctx); | ||
| registerDatabaseInspectorTools(ctx); | ||
| registerWearTools(ctx); | ||
| registerSensorTools(ctx); | ||
@@ -170,5 +178,5 @@ registerWirelessFirmwareTools(ctx); | ||
| } | ||
| logger.info("DeepADB MCP server initialized — 45 tool modules, 5 resources, 4 prompts. Ready."); | ||
| logger.info("DeepADB MCP server initialized — 49 tool modules, 5 resources, 4 prompts. Ready."); | ||
| return { server, logger, bridge, deviceManager }; | ||
| } | ||
| //# sourceMappingURL=server.js.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"} |
@@ -19,3 +19,14 @@ /** | ||
| import { ToolContext } from "../tool-context.js"; | ||
| /** | ||
| * Build the guarded device-side AT exchange. | ||
| * | ||
| * CPIF/SIPC nodes return an empty read after roughly 100ms when their RX queue | ||
| * is empty. A one-shot `cat` therefore exits before a slightly delayed modem | ||
| * response. Re-arm bounded reads until a terminal result arrives, and start the | ||
| * writer after the first read is waiting. `dd conv=nocreat` is deliberate: a | ||
| * shell redirection would create a regular file under /dev when a candidate | ||
| * node is absent and the caller has root. | ||
| */ | ||
| export declare function buildAtShellCommand(deviceNode: string, command: string, timeoutMs: number): string; | ||
| export declare function registerAtCommandTools(ctx: ToolContext): void; | ||
| //# sourceMappingURL=at-commands.d.ts.map |
@@ -1,1 +0,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"} | ||
| {"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"} |
+135
-15
@@ -92,4 +92,33 @@ // Copyright 2026 Jason <fullread@github> | ||
| /** | ||
| * Send an AT command to a device node and capture the response. | ||
| * Uses `echo` + `cat` with timeout via root shell. | ||
| * Build the guarded device-side AT exchange. | ||
| * | ||
| * CPIF/SIPC nodes return an empty read after roughly 100ms when their RX queue | ||
| * is empty. A one-shot `cat` therefore exits before a slightly delayed modem | ||
| * response. Re-arm bounded reads until a terminal result arrives, and start the | ||
| * writer after the first read is waiting. `dd conv=nocreat` is deliberate: a | ||
| * shell redirection would create a regular file under /dev when a candidate | ||
| * node is absent and the caller has root. | ||
| */ | ||
| export function buildAtShellCommand(deviceNode, command, timeoutMs) { | ||
| const portErr = validateDeviceNode(deviceNode); | ||
| if (portErr) | ||
| throw new Error(portErr); | ||
| const cmdErr = validateAtCommand(command); | ||
| if (cmdErr) | ||
| throw new Error(cmdErr); | ||
| const cmd = command.trimEnd(); | ||
| const node = shellQuote(deviceNode); | ||
| const payload = shellQuote(cmd); | ||
| const maxReads = Math.max(1, Math.ceil(timeoutMs / 100)); | ||
| const terminator = (MODEM_PATHS.shannon ?? []).includes(deviceNode) ? "%s\\r\\n" : "%s\\r"; | ||
| return [ | ||
| `test -c ${node} || { printf '%s\\n' 'DeepADB: target is not a character device' >&2; exit 1; }`, | ||
| `(sleep 0.1; printf '${terminator}' ${payload} | dd of=${node} conv=nocreat,notrunc status=none) & writer_pid=$!`, | ||
| "i=0", | ||
| `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`, | ||
| 'wait "$writer_pid"', | ||
| ].join("; "); | ||
| } | ||
| /** | ||
| * Send an AT command to a character-device modem node and capture its response. | ||
| * Both the command and device node are validated before interpolation. | ||
@@ -106,10 +135,3 @@ */ | ||
| return { response: "", error: cmdErr }; | ||
| const cmd = command.trimEnd(); | ||
| // Send the command and read response with a timeout. | ||
| // Both cmd and deviceNode are validated above — no shell metacharacters. | ||
| // Use printf with '%s\r' format to separate format string from data — | ||
| // AT commands may contain % (e.g., AT%RESTART) which printf would | ||
| // misinterpret as format specifiers if cmd were in the format position. | ||
| const timeoutSec = Math.max(1, Math.ceil(timeoutMs / 1000)); | ||
| const shellCmd = `printf '%s\\r' '${cmd}' > '${deviceNode}' && timeout ${timeoutSec} cat '${deviceNode}' 2>&1 || true`; | ||
| const shellCmd = buildAtShellCommand(deviceNode, command, timeoutMs); | ||
| try { | ||
@@ -133,3 +155,4 @@ const result = await ctx.bridge.rootShell(shellCmd, { | ||
| * Auto-detect the first existing modem device node for the given chipset family. | ||
| * Probes MODEM_PATHS entries via `test -e` through root shell. | ||
| * Probes MODEM_PATHS entries via `test -c` through root shell so regular files, | ||
| * block devices, and stale filesystem artifacts can never be selected. | ||
| * Returns the first existing node path, or null if none found. | ||
@@ -148,3 +171,3 @@ */ | ||
| // accidentally word-split here. | ||
| const existCmd = paths.map((p) => `test -e ${shellQuote(p)} && echo "EXISTS:${p}"`).join("; "); | ||
| const existCmd = paths.map((p) => `test -c ${shellQuote(p)} && echo "EXISTS:${p}"`).join("; "); | ||
| const existResult = await ctx.bridge.rootShell(existCmd, { | ||
@@ -159,2 +182,99 @@ device: serial, timeout: 5000, ignoreExitCode: true, | ||
| export function registerAtCommandTools(ctx) { | ||
| 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.", { | ||
| port: z.string().optional().describe("Optional Shannon device node override (for example /dev/umts_router)"), | ||
| timeout: z.number().int().min(1000).max(10000).optional().default(3000) | ||
| .describe("Handshake timeout per port in milliseconds (1000-10000, default 3000)"), | ||
| includeIdentity: z.boolean().optional().default(false) | ||
| .describe("After a successful AT handshake, also send the read-only ATI identity query"), | ||
| device: z.string().optional().describe("Device serial"), | ||
| }, async ({ port, timeout, includeIdentity, device }) => { | ||
| try { | ||
| if (port) { | ||
| const portError = validateDeviceNode(port); | ||
| if (portError) { | ||
| return { content: [{ type: "text", text: portError }], isError: true }; | ||
| } | ||
| if (!(MODEM_PATHS.shannon ?? []).includes(port)) { | ||
| return { | ||
| content: [{ type: "text", text: `Shannon session port must be one of the known Shannon AT nodes: ${(MODEM_PATHS.shannon ?? []).join(", ")}` }], | ||
| isError: true, | ||
| }; | ||
| } | ||
| } | ||
| const resolved = await ctx.deviceManager.resolveDevice(device); | ||
| const serial = resolved.serial; | ||
| const props = await ctx.deviceManager.getDeviceProps(serial); | ||
| const family = detectChipsetFamily(props); | ||
| const sections = [ | ||
| "=== Shannon Session Preflight ===", | ||
| `Device: ${props["ro.product.model"] ?? "unknown"}`, | ||
| `Chipset family: ${family}`, | ||
| ]; | ||
| if (family !== "shannon") { | ||
| sections.push("Result: this device does not identify as Shannon/Exynos. Use adb_at_detect for generic modem discovery."); | ||
| return { content: [{ type: "text", text: sections.join("\n") }], isError: true }; | ||
| } | ||
| const rootProbe = await ctx.bridge.shell("su -c id", { | ||
| device: serial, timeout: 5000, ignoreExitCode: true, | ||
| }); | ||
| if (!/uid=0\b/.test(rootProbe.stdout)) { | ||
| sections.push("Root: unavailable", "Result: Shannon device nodes require root access."); | ||
| return { content: [{ type: "text", text: sections.join("\n") }], isError: true }; | ||
| } | ||
| sections.push("Root: available"); | ||
| const candidates = port ? [port] : (MODEM_PATHS.shannon ?? []); | ||
| const existenceProbe = candidates | ||
| .map((candidate) => `test -c ${shellQuote(candidate)} && echo ${shellQuote(`EXISTS:${candidate}`)}`) | ||
| .join("; "); | ||
| const existence = await ctx.bridge.rootShell(existenceProbe, { | ||
| device: serial, timeout: 10000, ignoreExitCode: true, | ||
| }); | ||
| const existing = existence.stdout.split(/\r?\n/) | ||
| .filter((line) => line.startsWith("EXISTS:")) | ||
| .map((line) => line.slice("EXISTS:".length).trim()) | ||
| .filter((candidate) => candidates.includes(candidate)); | ||
| sections.push(`Ports checked: ${candidates.length}`, `Ports present: ${existing.length ? existing.join(", ") : "none"}`); | ||
| if (existing.length === 0) { | ||
| sections.push("Result: no Shannon AT device node is currently visible."); | ||
| return { content: [{ type: "text", text: sections.join("\n") }] }; | ||
| } | ||
| let selected = null; | ||
| let identity = ""; | ||
| sections.push("", "── Handshakes ──"); | ||
| for (const candidate of existing) { | ||
| const handshake = await sendAtCommand(ctx, serial, candidate, "AT", timeout); | ||
| const ok = /(^|\r?\n)\s*OK\s*($|\r?\n)/i.test(handshake.response) || handshake.response.trim() === "OK"; | ||
| if (handshake.error) { | ||
| sections.push(`○ ${candidate}: ${handshake.error}`); | ||
| } | ||
| else if (ok) { | ||
| sections.push(`✓ ${candidate}: AT / OK handshake complete`); | ||
| selected = candidate; | ||
| if (includeIdentity) { | ||
| const identityResult = await sendAtCommand(ctx, serial, candidate, "ATI", timeout); | ||
| identity = identityResult.error | ||
| ? `Identity query error: ${identityResult.error}` | ||
| : (identityResult.response.trim() || "Identity query returned no text"); | ||
| } | ||
| break; | ||
| } | ||
| else { | ||
| sections.push(`○ ${candidate}: ${handshake.response.trim() ? "response received without OK" : "no response before timeout"}`); | ||
| } | ||
| } | ||
| if (selected) { | ||
| sections.push("", "=== SHANNON SESSION READY ===", `Selected port: ${selected}`); | ||
| if (includeIdentity) | ||
| sections.push("", "── ATI identity ──", identity); | ||
| } | ||
| else { | ||
| sections.push("", "=== SHANNON SESSION NOT READY ===", "Device nodes are present, but no AT / OK handshake completed."); | ||
| } | ||
| sections.push("Only AT and, when requested, ATI were sent; no modem configuration was changed."); | ||
| return { content: [{ type: "text", text: OutputProcessor.process(sections.join("\n"), 20000) }] }; | ||
| } | ||
| catch (error) { | ||
| return { content: [{ type: "text", text: OutputProcessor.formatError(error) }], isError: true }; | ||
| } | ||
| }); | ||
| 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.", { | ||
@@ -183,3 +303,3 @@ device: z.string().optional().describe("Device serial"), | ||
| // T5 fix (same rationale as autoDetectAtPort) | ||
| const existCmd = allPaths.map((p) => `test -e ${shellQuote(p)} && echo "EXISTS:${p}"`).join("; "); | ||
| const existCmd = allPaths.map((p) => `test -c ${shellQuote(p)} && echo "EXISTS:${p}"`).join("; "); | ||
| const existResult = await ctx.bridge.rootShell(existCmd, { | ||
@@ -234,3 +354,3 @@ device: serial, timeout: 10000, ignoreExitCode: true, | ||
| command: z.string().describe("AT command to send (e.g., 'AT+CSQ', 'ATI', 'AT+COPS?')"), | ||
| port: z.string().optional().describe("Modem device node (e.g., '/dev/umts_router0'). If omitted, auto-detects."), | ||
| port: z.string().optional().describe("Modem device node (e.g., '/dev/umts_router'). If omitted, auto-detects."), | ||
| timeout: z.number().min(1000).max(30000).optional().default(5000).describe("Response timeout in ms (1000-30000, default 5000)"), | ||
@@ -452,3 +572,3 @@ force: z.boolean().optional().default(false).describe("Bypass dangerous command safety check"), | ||
| sections.push("This is expected in ADB mode. Use on-device mode (Termux) for full AT cross-validation."); | ||
| sections.push("Alternatively, specify 'port' manually (e.g., '/dev/umts_router0' for Shannon)."); | ||
| sections.push("Alternatively, specify 'port' manually (e.g., '/dev/umts_router' for Google Tensor/Shannon)."); | ||
| sections.push("\nFalling back to property-only analysis..."); | ||
@@ -455,0 +575,0 @@ } |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"at-commands.js","sourceRoot":"","sources":["../../src/tools/at-commands.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"at-commands.js","sourceRoot":"","sources":["../../src/tools/at-commands.ts"],"names":[],"mappings":"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"} |
@@ -31,7 +31,7 @@ // Copyright 2026 Jason <fullread@github> | ||
| chipsetFamily: "shannon", | ||
| modemDeviceNodes: ["/dev/umts_router0", "/dev/umts_router1", "/dev/umts_atc0"], | ||
| supports5G: false, | ||
| modemDeviceNodes: ["/dev/umts_router"], | ||
| supports5G: true, | ||
| quirks: [ | ||
| "Shannon/Exynos Modem 5123 baseband", | ||
| "AT commands via /dev/umts_router0 (root required)", | ||
| "AT commands via /dev/umts_router (root required)", | ||
| "Radio logcat uses RILJ/RILC tags", | ||
@@ -46,3 +46,3 @@ ], | ||
| chipsetFamily: "shannon", | ||
| modemDeviceNodes: ["/dev/umts_router0", "/dev/umts_router1"], | ||
| modemDeviceNodes: ["/dev/umts_router"], | ||
| supports5G: true, | ||
@@ -60,3 +60,3 @@ quirks: [ | ||
| chipsetFamily: "shannon", | ||
| modemDeviceNodes: ["/dev/umts_router0", "/dev/umts_router1"], | ||
| modemDeviceNodes: ["/dev/umts_router"], | ||
| supports5G: true, | ||
@@ -78,3 +78,3 @@ quirks: [ | ||
| "Modem paths vary by SoC variant", | ||
| "Qualcomm variant: /dev/smd11, Exynos variant: /dev/umts_router0", | ||
| "Qualcomm variant: /dev/smd11; Exynos paths vary and may include /dev/umts_router", | ||
| ], | ||
@@ -129,3 +129,3 @@ }, | ||
| if (rootAvailable) { | ||
| const existCmd = paths.map((p) => `test -e ${p} && echo "EXISTS:${p}"`).join("; "); | ||
| const existCmd = paths.map((p) => `test -c ${p} && echo "EXISTS:${p}"`).join("; "); | ||
| const existResult = await ctx.bridge.rootShell(existCmd, { | ||
@@ -132,0 +132,0 @@ device: serial, timeout: 10000, ignoreExitCode: true, |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"device-profiles.js","sourceRoot":"","sources":["../../src/tools/device-profiles.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"device-profiles.js","sourceRoot":"","sources":["../../src/tools/device-profiles.ts"],"names":[],"mappings":"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"} |
+9
-9
| { | ||
| "name": "deepadb", | ||
| "version": "1.1.3", | ||
| "description": "DeepADB — full-featured Android Debug Bridge MCP server. 204 tools across 45 modules for device inspection from UI to baseband.", | ||
| "version": "1.1.4", | ||
| "description": "DeepADB — full-featured Android Debug Bridge MCP server. 209 tools across 49 modules for device inspection from UI to baseband.", | ||
| "mcpName": "io.github.fullread/deepadb", | ||
@@ -38,15 +38,15 @@ "type": "module", | ||
| "@modelcontextprotocol/sdk": "^1.24.0", | ||
| "zod": "^4.4.3" | ||
| "zod": "^4.5.4" | ||
| }, | ||
| "devDependencies": { | ||
| "@eslint/js": "^10.0.1", | ||
| "@types/node": "^25.9.1", | ||
| "c8": "^11.0.0", | ||
| "eslint": "^10.4.0", | ||
| "@types/node": "^26.4.0", | ||
| "c8": "^12.0.0", | ||
| "eslint": "^10.9.1", | ||
| "fast-check": "^4.8.0", | ||
| "graphql": "^16.14.0", | ||
| "typescript": "^6.0.2", | ||
| "typescript-eslint": "^8.60.0", | ||
| "graphql": "^17.0.2", | ||
| "typescript": "^6.0.3", | ||
| "typescript-eslint": "^8.68.0", | ||
| "ws": "^8.21.0" | ||
| } | ||
| } |
Sorry, the diff of this file is too big to display
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
AI-detected potential code anomaly
Supply chain riskAI has identified unusual behaviors that may pose a security risk.
Found 3 instances
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
AI-detected potential code anomaly
Supply chain riskAI has identified unusual behaviors that may pose a security risk.
Found 2 instances
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
2117781
5.09%300
5.63%21822
4.54%776
5.72%94
2.17%Updated