deepadb 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +631 -0
- package/build/bridge/adb-bridge.d.ts +65 -0
- package/build/bridge/adb-bridge.d.ts.map +1 -0
- package/build/bridge/adb-bridge.js +164 -0
- package/build/bridge/adb-bridge.js.map +1 -0
- package/build/bridge/device-manager.d.ts +41 -0
- package/build/bridge/device-manager.d.ts.map +1 -0
- package/build/bridge/device-manager.js +109 -0
- package/build/bridge/device-manager.js.map +1 -0
- package/build/bridge/local-bridge.d.ts +92 -0
- package/build/bridge/local-bridge.d.ts.map +1 -0
- package/build/bridge/local-bridge.js +345 -0
- package/build/bridge/local-bridge.js.map +1 -0
- package/build/config/config.d.ts +39 -0
- package/build/config/config.d.ts.map +1 -0
- package/build/config/config.js +84 -0
- package/build/config/config.js.map +1 -0
- package/build/graphql-api.d.ts +36 -0
- package/build/graphql-api.d.ts.map +1 -0
- package/build/graphql-api.js +296 -0
- package/build/graphql-api.js.map +1 -0
- package/build/http-transport.d.ts +26 -0
- package/build/http-transport.d.ts.map +1 -0
- package/build/http-transport.js +105 -0
- package/build/http-transport.js.map +1 -0
- package/build/index.d.ts +14 -0
- package/build/index.d.ts.map +1 -0
- package/build/index.js +66 -0
- package/build/index.js.map +1 -0
- package/build/middleware/chipset.d.ts +29 -0
- package/build/middleware/chipset.d.ts.map +1 -0
- package/build/middleware/chipset.js +123 -0
- package/build/middleware/chipset.js.map +1 -0
- package/build/middleware/cleanup.d.ts +24 -0
- package/build/middleware/cleanup.d.ts.map +1 -0
- package/build/middleware/cleanup.js +53 -0
- package/build/middleware/cleanup.js.map +1 -0
- package/build/middleware/fetch-utils.d.ts +19 -0
- package/build/middleware/fetch-utils.d.ts.map +1 -0
- package/build/middleware/fetch-utils.js +64 -0
- package/build/middleware/fetch-utils.js.map +1 -0
- package/build/middleware/logger.d.ts +17 -0
- package/build/middleware/logger.d.ts.map +1 -0
- package/build/middleware/logger.js +38 -0
- package/build/middleware/logger.js.map +1 -0
- package/build/middleware/output-processor.d.ts +57 -0
- package/build/middleware/output-processor.d.ts.map +1 -0
- package/build/middleware/output-processor.js +162 -0
- package/build/middleware/output-processor.js.map +1 -0
- package/build/middleware/sanitize.d.ts +30 -0
- package/build/middleware/sanitize.d.ts.map +1 -0
- package/build/middleware/sanitize.js +46 -0
- package/build/middleware/sanitize.js.map +1 -0
- package/build/middleware/security.d.ts +52 -0
- package/build/middleware/security.d.ts.map +1 -0
- package/build/middleware/security.js +123 -0
- package/build/middleware/security.js.map +1 -0
- package/build/middleware/ui-dump.d.ts +23 -0
- package/build/middleware/ui-dump.d.ts.map +1 -0
- package/build/middleware/ui-dump.js +59 -0
- package/build/middleware/ui-dump.js.map +1 -0
- package/build/server.d.ts +18 -0
- package/build/server.d.ts.map +1 -0
- package/build/server.js +133 -0
- package/build/server.js.map +1 -0
- package/build/tool-context.d.ts +22 -0
- package/build/tool-context.d.ts.map +1 -0
- package/build/tool-context.js +9 -0
- package/build/tool-context.js.map +1 -0
- package/build/tools/accessibility.d.ts +10 -0
- package/build/tools/accessibility.d.ts.map +1 -0
- package/build/tools/accessibility.js +259 -0
- package/build/tools/accessibility.js.map +1 -0
- package/build/tools/at-commands.d.ts +20 -0
- package/build/tools/at-commands.d.ts.map +1 -0
- package/build/tools/at-commands.js +378 -0
- package/build/tools/at-commands.js.map +1 -0
- package/build/tools/baseband.d.ts +15 -0
- package/build/tools/baseband.d.ts.map +1 -0
- package/build/tools/baseband.js +323 -0
- package/build/tools/baseband.js.map +1 -0
- package/build/tools/build.d.ts +6 -0
- package/build/tools/build.d.ts.map +1 -0
- package/build/tools/build.js +80 -0
- package/build/tools/build.js.map +1 -0
- package/build/tools/ci.d.ts +9 -0
- package/build/tools/ci.d.ts.map +1 -0
- package/build/tools/ci.js +163 -0
- package/build/tools/ci.js.map +1 -0
- package/build/tools/control.d.ts +10 -0
- package/build/tools/control.d.ts.map +1 -0
- package/build/tools/control.js +197 -0
- package/build/tools/control.js.map +1 -0
- package/build/tools/device-farm.d.ts +10 -0
- package/build/tools/device-farm.d.ts.map +1 -0
- package/build/tools/device-farm.js +140 -0
- package/build/tools/device-farm.js.map +1 -0
- package/build/tools/device-profiles.d.ts +16 -0
- package/build/tools/device-profiles.d.ts.map +1 -0
- package/build/tools/device-profiles.js +272 -0
- package/build/tools/device-profiles.js.map +1 -0
- package/build/tools/device.d.ts +6 -0
- package/build/tools/device.d.ts.map +1 -0
- package/build/tools/device.js +72 -0
- package/build/tools/device.js.map +1 -0
- package/build/tools/diagnostics.d.ts +7 -0
- package/build/tools/diagnostics.d.ts.map +1 -0
- package/build/tools/diagnostics.js +153 -0
- package/build/tools/diagnostics.js.map +1 -0
- package/build/tools/emulator.d.ts +9 -0
- package/build/tools/emulator.d.ts.map +1 -0
- package/build/tools/emulator.js +223 -0
- package/build/tools/emulator.js.map +1 -0
- package/build/tools/files.d.ts +6 -0
- package/build/tools/files.d.ts.map +1 -0
- package/build/tools/files.js +78 -0
- package/build/tools/files.js.map +1 -0
- package/build/tools/firmware-analysis.d.ts +24 -0
- package/build/tools/firmware-analysis.d.ts.map +1 -0
- package/build/tools/firmware-analysis.js +623 -0
- package/build/tools/firmware-analysis.js.map +1 -0
- package/build/tools/forwarding.d.ts +7 -0
- package/build/tools/forwarding.d.ts.map +1 -0
- package/build/tools/forwarding.js +64 -0
- package/build/tools/forwarding.js.map +1 -0
- package/build/tools/health.d.ts +7 -0
- package/build/tools/health.d.ts.map +1 -0
- package/build/tools/health.js +112 -0
- package/build/tools/health.js.map +1 -0
- package/build/tools/logcat-watch.d.ts +11 -0
- package/build/tools/logcat-watch.d.ts.map +1 -0
- package/build/tools/logcat-watch.js +209 -0
- package/build/tools/logcat-watch.js.map +1 -0
- package/build/tools/logs.d.ts +6 -0
- package/build/tools/logs.d.ts.map +1 -0
- package/build/tools/logs.js +83 -0
- package/build/tools/logs.js.map +1 -0
- package/build/tools/mirroring.d.ts +14 -0
- package/build/tools/mirroring.d.ts.map +1 -0
- package/build/tools/mirroring.js +243 -0
- package/build/tools/mirroring.js.map +1 -0
- package/build/tools/multi-device.d.ts +9 -0
- package/build/tools/multi-device.d.ts.map +1 -0
- package/build/tools/multi-device.js +138 -0
- package/build/tools/multi-device.js.map +1 -0
- package/build/tools/network-capture.d.ts +10 -0
- package/build/tools/network-capture.d.ts.map +1 -0
- package/build/tools/network-capture.js +143 -0
- package/build/tools/network-capture.js.map +1 -0
- package/build/tools/network-discovery.d.ts +21 -0
- package/build/tools/network-discovery.d.ts.map +1 -0
- package/build/tools/network-discovery.js +284 -0
- package/build/tools/network-discovery.js.map +1 -0
- package/build/tools/ota-monitor.d.ts +16 -0
- package/build/tools/ota-monitor.d.ts.map +1 -0
- package/build/tools/ota-monitor.js +211 -0
- package/build/tools/ota-monitor.js.map +1 -0
- package/build/tools/packages.d.ts +6 -0
- package/build/tools/packages.d.ts.map +1 -0
- package/build/tools/packages.js +237 -0
- package/build/tools/packages.js.map +1 -0
- package/build/tools/plugins.d.ts +22 -0
- package/build/tools/plugins.d.ts.map +1 -0
- package/build/tools/plugins.js +118 -0
- package/build/tools/plugins.js.map +1 -0
- package/build/tools/prompts.d.ts +9 -0
- package/build/tools/prompts.d.ts.map +1 -0
- package/build/tools/prompts.js +94 -0
- package/build/tools/prompts.js.map +1 -0
- package/build/tools/qemu.d.ts +18 -0
- package/build/tools/qemu.d.ts.map +1 -0
- package/build/tools/qemu.js +791 -0
- package/build/tools/qemu.js.map +1 -0
- package/build/tools/registry.d.ts +13 -0
- package/build/tools/registry.d.ts.map +1 -0
- package/build/tools/registry.js +221 -0
- package/build/tools/registry.js.map +1 -0
- package/build/tools/regression.d.ts +10 -0
- package/build/tools/regression.d.ts.map +1 -0
- package/build/tools/regression.js +215 -0
- package/build/tools/regression.js.map +1 -0
- package/build/tools/resources.d.ts +10 -0
- package/build/tools/resources.d.ts.map +1 -0
- package/build/tools/resources.js +77 -0
- package/build/tools/resources.js.map +1 -0
- package/build/tools/ril-intercept.d.ts +24 -0
- package/build/tools/ril-intercept.d.ts.map +1 -0
- package/build/tools/ril-intercept.js +273 -0
- package/build/tools/ril-intercept.js.map +1 -0
- package/build/tools/screen-record.d.ts +9 -0
- package/build/tools/screen-record.d.ts.map +1 -0
- package/build/tools/screen-record.js +95 -0
- package/build/tools/screen-record.js.map +1 -0
- package/build/tools/screenshot-diff.d.ts +13 -0
- package/build/tools/screenshot-diff.d.ts.map +1 -0
- package/build/tools/screenshot-diff.js +370 -0
- package/build/tools/screenshot-diff.js.map +1 -0
- package/build/tools/selinux-audit.d.ts +17 -0
- package/build/tools/selinux-audit.d.ts.map +1 -0
- package/build/tools/selinux-audit.js +301 -0
- package/build/tools/selinux-audit.js.map +1 -0
- package/build/tools/shell.d.ts +6 -0
- package/build/tools/shell.d.ts.map +1 -0
- package/build/tools/shell.js +63 -0
- package/build/tools/shell.js.map +1 -0
- package/build/tools/snapshot.d.ts +9 -0
- package/build/tools/snapshot.d.ts.map +1 -0
- package/build/tools/snapshot.js +192 -0
- package/build/tools/snapshot.js.map +1 -0
- package/build/tools/split-apk.d.ts +13 -0
- package/build/tools/split-apk.d.ts.map +1 -0
- package/build/tools/split-apk.js +229 -0
- package/build/tools/split-apk.js.map +1 -0
- package/build/tools/test-gen.d.ts +14 -0
- package/build/tools/test-gen.d.ts.map +1 -0
- package/build/tools/test-gen.js +252 -0
- package/build/tools/test-gen.js.map +1 -0
- package/build/tools/testing.d.ts +9 -0
- package/build/tools/testing.d.ts.map +1 -0
- package/build/tools/testing.js +144 -0
- package/build/tools/testing.js.map +1 -0
- package/build/tools/thermal-power.d.ts +19 -0
- package/build/tools/thermal-power.d.ts.map +1 -0
- package/build/tools/thermal-power.js +330 -0
- package/build/tools/thermal-power.js.map +1 -0
- package/build/tools/ui.d.ts +6 -0
- package/build/tools/ui.d.ts.map +1 -0
- package/build/tools/ui.js +266 -0
- package/build/tools/ui.js.map +1 -0
- package/build/tools/wireless.d.ts +7 -0
- package/build/tools/wireless.d.ts.map +1 -0
- package/build/tools/wireless.js +78 -0
- package/build/tools/wireless.js.map +1 -0
- package/build/tools/workflow-market.d.ts +17 -0
- package/build/tools/workflow-market.d.ts.map +1 -0
- package/build/tools/workflow-market.js +237 -0
- package/build/tools/workflow-market.js.map +1 -0
- package/build/tools/workflow.d.ts +32 -0
- package/build/tools/workflow.d.ts.map +1 -0
- package/build/tools/workflow.js +374 -0
- package/build/tools/workflow.js.map +1 -0
- package/build/ws-transport.d.ts +30 -0
- package/build/ws-transport.d.ts.map +1 -0
- package/build/ws-transport.js +133 -0
- package/build/ws-transport.js.map +1 -0
- package/package.json +37 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ci.js","sourceRoot":"","sources":["../../src/tools/ci.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Device Control Tools — Toggle device settings for testing.
|
|
3
|
+
*
|
|
4
|
+
* Provides programmatic control over airplane mode, WiFi, mobile data,
|
|
5
|
+
* location services, screen state, Android settings, and device reboot.
|
|
6
|
+
* Essential for automated test workflows and device state manipulation.
|
|
7
|
+
*/
|
|
8
|
+
import { ToolContext } from "../tool-context.js";
|
|
9
|
+
export declare function registerControlTools(ctx: ToolContext): void;
|
|
10
|
+
//# sourceMappingURL=control.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"control.d.ts","sourceRoot":"","sources":["../../src/tools/control.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAIjD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CAwP3D"}
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Device Control Tools — Toggle device settings for testing.
|
|
3
|
+
*
|
|
4
|
+
* Provides programmatic control over airplane mode, WiFi, mobile data,
|
|
5
|
+
* location services, screen state, Android settings, and device reboot.
|
|
6
|
+
* Essential for automated test workflows and device state manipulation.
|
|
7
|
+
*/
|
|
8
|
+
import { z } from "zod";
|
|
9
|
+
import { OutputProcessor } from "../middleware/output-processor.js";
|
|
10
|
+
import { validateShellArg, validateShellArgs } from "../middleware/sanitize.js";
|
|
11
|
+
export function registerControlTools(ctx) {
|
|
12
|
+
ctx.server.tool("adb_airplane_mode", "Toggle airplane mode on/off. Useful for resetting cellular registration during radio testing.", {
|
|
13
|
+
enabled: z.boolean().describe("true = enable airplane mode, false = disable"),
|
|
14
|
+
device: z.string().optional().describe("Device serial"),
|
|
15
|
+
}, async ({ enabled, device }) => {
|
|
16
|
+
try {
|
|
17
|
+
const resolved = await ctx.deviceManager.resolveDevice(device);
|
|
18
|
+
const serial = resolved.serial;
|
|
19
|
+
const val = enabled ? "1" : "0";
|
|
20
|
+
// Set the setting
|
|
21
|
+
await ctx.bridge.shell(`settings put global airplane_mode_on ${val}`, { device: serial });
|
|
22
|
+
// Broadcast the change so the OS actually applies it
|
|
23
|
+
await ctx.bridge.shell(`am broadcast -a android.intent.action.AIRPLANE_MODE --ez state ${enabled}`, { device: serial, ignoreExitCode: true });
|
|
24
|
+
// Brief settle time for radios to toggle
|
|
25
|
+
await new Promise((r) => setTimeout(r, 1000));
|
|
26
|
+
// Verify
|
|
27
|
+
const check = await ctx.bridge.shell("settings get global airplane_mode_on", { device: serial });
|
|
28
|
+
const actual = check.stdout.trim() === "1" ? "ON" : "OFF";
|
|
29
|
+
return { content: [{ type: "text", text: `Airplane mode: ${actual}` }] };
|
|
30
|
+
}
|
|
31
|
+
catch (error) {
|
|
32
|
+
return { content: [{ type: "text", text: OutputProcessor.formatError(error) }], isError: true };
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
ctx.server.tool("adb_wifi", "Enable or disable WiFi", {
|
|
36
|
+
enabled: z.boolean().describe("true = enable WiFi, false = disable"),
|
|
37
|
+
device: z.string().optional().describe("Device serial"),
|
|
38
|
+
}, async ({ enabled, device }) => {
|
|
39
|
+
try {
|
|
40
|
+
const resolved = await ctx.deviceManager.resolveDevice(device);
|
|
41
|
+
const cmd = enabled ? "svc wifi enable" : "svc wifi disable";
|
|
42
|
+
await ctx.bridge.shell(cmd, { device: resolved.serial });
|
|
43
|
+
return { content: [{ type: "text", text: `WiFi: ${enabled ? "enabled" : "disabled"}` }] };
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
return { content: [{ type: "text", text: OutputProcessor.formatError(error) }], isError: true };
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
ctx.server.tool("adb_mobile_data", "Enable or disable mobile data", {
|
|
50
|
+
enabled: z.boolean().describe("true = enable mobile data, false = disable"),
|
|
51
|
+
device: z.string().optional().describe("Device serial"),
|
|
52
|
+
}, async ({ enabled, device }) => {
|
|
53
|
+
try {
|
|
54
|
+
const resolved = await ctx.deviceManager.resolveDevice(device);
|
|
55
|
+
const cmd = enabled ? "svc data enable" : "svc data disable";
|
|
56
|
+
await ctx.bridge.shell(cmd, { device: resolved.serial });
|
|
57
|
+
return { content: [{ type: "text", text: `Mobile data: ${enabled ? "enabled" : "disabled"}` }] };
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
return { content: [{ type: "text", text: OutputProcessor.formatError(error) }], isError: true };
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
ctx.server.tool("adb_location", "Enable or disable location services", {
|
|
64
|
+
mode: z.enum(["off", "sensors", "battery", "high"]).describe("Location mode: off, sensors (GPS only), battery (network only), high (GPS + network)"),
|
|
65
|
+
device: z.string().optional().describe("Device serial"),
|
|
66
|
+
}, async ({ mode, device }) => {
|
|
67
|
+
try {
|
|
68
|
+
const resolved = await ctx.deviceManager.resolveDevice(device);
|
|
69
|
+
const serial = resolved.serial;
|
|
70
|
+
// location_mode: 0=off, 1=sensors, 2=battery, 3=high
|
|
71
|
+
const modeMap = { off: "0", sensors: "1", battery: "2", high: "3" };
|
|
72
|
+
await ctx.bridge.shell(`settings put secure location_mode ${modeMap[mode]}`, { device: serial });
|
|
73
|
+
return { content: [{ type: "text", text: `Location mode: ${mode}` }] };
|
|
74
|
+
}
|
|
75
|
+
catch (error) {
|
|
76
|
+
return { content: [{ type: "text", text: OutputProcessor.formatError(error) }], isError: true };
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
ctx.server.tool("adb_screen", "Control screen state: wake, sleep, toggle, or unlock (swipe up)", {
|
|
80
|
+
action: z.enum(["wake", "sleep", "toggle", "unlock"]).describe("Screen action"),
|
|
81
|
+
device: z.string().optional().describe("Device serial"),
|
|
82
|
+
}, async ({ action, device }) => {
|
|
83
|
+
try {
|
|
84
|
+
const resolved = await ctx.deviceManager.resolveDevice(device);
|
|
85
|
+
const serial = resolved.serial;
|
|
86
|
+
switch (action) {
|
|
87
|
+
case "wake":
|
|
88
|
+
await ctx.bridge.shell("input keyevent KEYCODE_WAKEUP", { device: serial });
|
|
89
|
+
break;
|
|
90
|
+
case "sleep":
|
|
91
|
+
await ctx.bridge.shell("input keyevent KEYCODE_SLEEP", { device: serial });
|
|
92
|
+
break;
|
|
93
|
+
case "toggle":
|
|
94
|
+
await ctx.bridge.shell("input keyevent KEYCODE_POWER", { device: serial });
|
|
95
|
+
break;
|
|
96
|
+
case "unlock":
|
|
97
|
+
await ctx.bridge.shell("input keyevent KEYCODE_WAKEUP", { device: serial });
|
|
98
|
+
await new Promise((r) => setTimeout(r, 300));
|
|
99
|
+
await ctx.bridge.shell("input swipe 540 1800 540 400 300", { device: serial, ignoreExitCode: true });
|
|
100
|
+
break;
|
|
101
|
+
}
|
|
102
|
+
return { content: [{ type: "text", text: `Screen: ${action} sent` }] };
|
|
103
|
+
}
|
|
104
|
+
catch (error) {
|
|
105
|
+
return { content: [{ type: "text", text: OutputProcessor.formatError(error) }], isError: true };
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
ctx.server.tool("adb_airplane_cycle", "Cycle airplane mode on then off after a delay. Forces cellular re-registration — useful for radio diagnostics and network testing.", {
|
|
109
|
+
delaySeconds: z.number().min(1).max(60).optional().default(3).describe("Seconds to keep airplane mode on (1-60, default 3)"),
|
|
110
|
+
device: z.string().optional().describe("Device serial"),
|
|
111
|
+
}, async ({ delaySeconds, device }) => {
|
|
112
|
+
try {
|
|
113
|
+
const resolved = await ctx.deviceManager.resolveDevice(device);
|
|
114
|
+
const serial = resolved.serial;
|
|
115
|
+
// Enable airplane mode
|
|
116
|
+
await ctx.bridge.shell("settings put global airplane_mode_on 1", { device: serial });
|
|
117
|
+
await ctx.bridge.shell("am broadcast -a android.intent.action.AIRPLANE_MODE --ez state true", { device: serial, ignoreExitCode: true });
|
|
118
|
+
const status = [`Airplane mode ON at ${new Date().toISOString()}`];
|
|
119
|
+
status.push(`Waiting ${delaySeconds}s for radio shutdown...`);
|
|
120
|
+
await new Promise((r) => setTimeout(r, delaySeconds * 1000));
|
|
121
|
+
// Disable airplane mode
|
|
122
|
+
await ctx.bridge.shell("settings put global airplane_mode_on 0", { device: serial });
|
|
123
|
+
await ctx.bridge.shell("am broadcast -a android.intent.action.AIRPLANE_MODE --ez state false", { device: serial, ignoreExitCode: true });
|
|
124
|
+
status.push(`Airplane mode OFF at ${new Date().toISOString()}`);
|
|
125
|
+
status.push("Cellular re-registration in progress. Check telephony state in ~5-10s.");
|
|
126
|
+
return { content: [{ type: "text", text: status.join("\n") }] };
|
|
127
|
+
}
|
|
128
|
+
catch (error) {
|
|
129
|
+
return { content: [{ type: "text", text: OutputProcessor.formatError(error) }], isError: true };
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
ctx.server.tool("adb_settings_get", "Read an Android settings value from any namespace (system, secure, global)", {
|
|
133
|
+
namespace: z.enum(["system", "secure", "global"]).describe("Settings namespace"),
|
|
134
|
+
key: z.string().describe("Setting key (e.g., 'screen_brightness', 'location_mode', 'airplane_mode_on')"),
|
|
135
|
+
device: z.string().optional().describe("Device serial"),
|
|
136
|
+
}, async ({ namespace, key, device }) => {
|
|
137
|
+
try {
|
|
138
|
+
const keyErr = validateShellArg(key, "key");
|
|
139
|
+
if (keyErr)
|
|
140
|
+
return { content: [{ type: "text", text: keyErr }], isError: true };
|
|
141
|
+
const resolved = await ctx.deviceManager.resolveDevice(device);
|
|
142
|
+
const result = await ctx.bridge.shell(`settings get ${namespace} ${key}`, { device: resolved.serial });
|
|
143
|
+
const value = result.stdout.trim();
|
|
144
|
+
return { content: [{ type: "text", text: value === "null" ? `(not set) ${namespace}/${key}` : `${namespace}/${key} = ${value}` }] };
|
|
145
|
+
}
|
|
146
|
+
catch (error) {
|
|
147
|
+
return { content: [{ type: "text", text: OutputProcessor.formatError(error) }], isError: true };
|
|
148
|
+
}
|
|
149
|
+
});
|
|
150
|
+
ctx.server.tool("adb_settings_put", "Write an Android settings value to any namespace (system, secure, global)", {
|
|
151
|
+
namespace: z.enum(["system", "secure", "global"]).describe("Settings namespace"),
|
|
152
|
+
key: z.string().describe("Setting key"),
|
|
153
|
+
value: z.string().describe("Value to set"),
|
|
154
|
+
device: z.string().optional().describe("Device serial"),
|
|
155
|
+
}, async ({ namespace, key, value, device }) => {
|
|
156
|
+
try {
|
|
157
|
+
const argErr = validateShellArgs([[key, "key"], [value, "value"]]);
|
|
158
|
+
if (argErr)
|
|
159
|
+
return { content: [{ type: "text", text: argErr }], isError: true };
|
|
160
|
+
const resolved = await ctx.deviceManager.resolveDevice(device);
|
|
161
|
+
await ctx.bridge.shell(`settings put ${namespace} ${key} ${value}`, { device: resolved.serial });
|
|
162
|
+
// Read back to confirm
|
|
163
|
+
const check = await ctx.bridge.shell(`settings get ${namespace} ${key}`, { device: resolved.serial });
|
|
164
|
+
return { content: [{ type: "text", text: `${namespace}/${key} = ${check.stdout.trim()}` }] };
|
|
165
|
+
}
|
|
166
|
+
catch (error) {
|
|
167
|
+
return { content: [{ type: "text", text: OutputProcessor.formatError(error) }], isError: true };
|
|
168
|
+
}
|
|
169
|
+
});
|
|
170
|
+
ctx.server.tool("adb_reboot", "Reboot the device. Supports normal, recovery, and bootloader modes.", {
|
|
171
|
+
mode: z.enum(["normal", "recovery", "bootloader"]).optional().default("normal")
|
|
172
|
+
.describe("Reboot mode: normal (default), recovery, or bootloader"),
|
|
173
|
+
device: z.string().optional().describe("Device serial"),
|
|
174
|
+
}, async ({ mode, device }) => {
|
|
175
|
+
try {
|
|
176
|
+
const resolved = await ctx.deviceManager.resolveDevice(device);
|
|
177
|
+
const serial = resolved.serial;
|
|
178
|
+
const args = mode === "normal" ? ["reboot"] : ["reboot", mode];
|
|
179
|
+
const result = await ctx.bridge.exec(args, {
|
|
180
|
+
device: serial,
|
|
181
|
+
timeout: 30000,
|
|
182
|
+
ignoreExitCode: true,
|
|
183
|
+
});
|
|
184
|
+
ctx.deviceManager.invalidateCache();
|
|
185
|
+
return {
|
|
186
|
+
content: [{
|
|
187
|
+
type: "text",
|
|
188
|
+
text: `Rebooting ${serial} into ${mode} mode. Device will be unavailable during restart.${result.stdout.trim() ? "\n" + result.stdout.trim() : ""}`,
|
|
189
|
+
}],
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
catch (error) {
|
|
193
|
+
return { content: [{ type: "text", text: OutputProcessor.formatError(error) }], isError: true };
|
|
194
|
+
}
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
//# sourceMappingURL=control.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"control.js","sourceRoot":"","sources":["../../src/tools/control.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Device Farm Integration Tools — Cloud-based test execution via Firebase Test Lab.
|
|
3
|
+
*
|
|
4
|
+
* Wraps the `gcloud firebase test android` CLI for running tests at scale.
|
|
5
|
+
* Requires: Google Cloud SDK with `gcloud` on PATH, authenticated project.
|
|
6
|
+
* Falls back to helpful setup instructions if gcloud is unavailable.
|
|
7
|
+
*/
|
|
8
|
+
import { ToolContext } from "../tool-context.js";
|
|
9
|
+
export declare function registerDeviceFarmTools(ctx: ToolContext): void;
|
|
10
|
+
//# sourceMappingURL=device-farm.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"device-farm.d.ts","sourceRoot":"","sources":["../../src/tools/device-farm.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AA6BjD,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CAmI9D"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Device Farm Integration Tools — Cloud-based test execution via Firebase Test Lab.
|
|
3
|
+
*
|
|
4
|
+
* Wraps the `gcloud firebase test android` CLI for running tests at scale.
|
|
5
|
+
* Requires: Google Cloud SDK with `gcloud` on PATH, authenticated project.
|
|
6
|
+
* Falls back to helpful setup instructions if gcloud is unavailable.
|
|
7
|
+
*/
|
|
8
|
+
import { z } from "zod";
|
|
9
|
+
import { execFile } from "child_process";
|
|
10
|
+
import { OutputProcessor } from "../middleware/output-processor.js";
|
|
11
|
+
function execAsync(cmd, args, timeout) {
|
|
12
|
+
return new Promise((resolve) => {
|
|
13
|
+
execFile(cmd, args, { timeout, maxBuffer: 1024 * 1024 * 5, windowsHide: true }, (error, stdout, stderr) => {
|
|
14
|
+
resolve({
|
|
15
|
+
stdout: stdout?.toString() ?? "",
|
|
16
|
+
stderr: stderr?.toString() ?? "",
|
|
17
|
+
exitCode: error ? (typeof error.code === "number" ? error.code : 1) : 0,
|
|
18
|
+
});
|
|
19
|
+
});
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
async function checkGcloud() {
|
|
23
|
+
try {
|
|
24
|
+
const result = await execAsync("gcloud", ["--version"], 10000);
|
|
25
|
+
if (result.exitCode === 0)
|
|
26
|
+
return null;
|
|
27
|
+
return "gcloud CLI returned an error. Verify installation with `gcloud --version`.";
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
return "gcloud CLI not found. Install the Google Cloud SDK: https://cloud.google.com/sdk/docs/install\nThen run: gcloud auth login && gcloud config set project YOUR_PROJECT_ID";
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
export function registerDeviceFarmTools(ctx) {
|
|
34
|
+
ctx.server.tool("adb_farm_run", "Run tests on Firebase Test Lab. Uploads an APK and test APK, executes instrumented tests across specified device models and API levels. Requires gcloud CLI authenticated with a Firebase project.", {
|
|
35
|
+
appApk: z.string().describe("Path to the app APK file"),
|
|
36
|
+
testApk: z.string().describe("Path to the test/instrumentation APK file"),
|
|
37
|
+
devices: z.array(z.string()).optional()
|
|
38
|
+
.describe("Device specs as 'model=DEVICE,version=API' (e.g., 'model=bluejay,version=33'). Omit for default device."),
|
|
39
|
+
testTargets: z.string().optional().describe("Specific test class or method (e.g., 'class com.example.MyTest')"),
|
|
40
|
+
timeout: z.string().optional().default("300s").describe("Test timeout (e.g., '300s', '10m')"),
|
|
41
|
+
resultsBucket: z.string().optional().describe("GCS bucket for results (omit for default)"),
|
|
42
|
+
}, async ({ appApk, testApk, devices, testTargets, timeout, resultsBucket }) => {
|
|
43
|
+
try {
|
|
44
|
+
const gcloudError = await checkGcloud();
|
|
45
|
+
if (gcloudError) {
|
|
46
|
+
return { content: [{ type: "text", text: gcloudError }], isError: true };
|
|
47
|
+
}
|
|
48
|
+
const args = ["firebase", "test", "android", "run",
|
|
49
|
+
"--type", "instrumentation",
|
|
50
|
+
"--app", appApk,
|
|
51
|
+
"--test", testApk,
|
|
52
|
+
"--timeout", timeout,
|
|
53
|
+
"--format", "text",
|
|
54
|
+
];
|
|
55
|
+
if (devices && devices.length > 0) {
|
|
56
|
+
for (const spec of devices) {
|
|
57
|
+
args.push("--device", spec);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
if (testTargets) {
|
|
61
|
+
args.push("--test-targets", testTargets);
|
|
62
|
+
}
|
|
63
|
+
if (resultsBucket) {
|
|
64
|
+
args.push("--results-bucket", resultsBucket);
|
|
65
|
+
}
|
|
66
|
+
ctx.logger.info(`Firebase Test Lab: gcloud ${args.join(" ")}`);
|
|
67
|
+
const result = await execAsync("gcloud", args, 600000); // 10 min max
|
|
68
|
+
let output = result.stdout;
|
|
69
|
+
if (result.stderr)
|
|
70
|
+
output += `\n--- STDERR ---\n${result.stderr}`;
|
|
71
|
+
if (result.exitCode !== 0)
|
|
72
|
+
output += `\n--- Exit code: ${result.exitCode} ---`;
|
|
73
|
+
return { content: [{ type: "text", text: OutputProcessor.process(output) }] };
|
|
74
|
+
}
|
|
75
|
+
catch (error) {
|
|
76
|
+
return { content: [{ type: "text", text: OutputProcessor.formatError(error) }], isError: true };
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
ctx.server.tool("adb_farm_results", "Retrieve results from the most recent Firebase Test Lab run, or a specific test matrix ID. Shows pass/fail status, device results, and links to logs and artifacts.", {
|
|
80
|
+
matrixId: z.string().optional().describe("Test matrix ID (from adb_farm_run output). Omit to list recent matrices."),
|
|
81
|
+
}, async ({ matrixId }) => {
|
|
82
|
+
try {
|
|
83
|
+
const gcloudError = await checkGcloud();
|
|
84
|
+
if (gcloudError) {
|
|
85
|
+
return { content: [{ type: "text", text: gcloudError }], isError: true };
|
|
86
|
+
}
|
|
87
|
+
if (matrixId) {
|
|
88
|
+
const result = await execAsync("gcloud", [
|
|
89
|
+
"firebase", "test", "android", "describe", matrixId,
|
|
90
|
+
"--format", "text",
|
|
91
|
+
], 30000);
|
|
92
|
+
let output = result.stdout;
|
|
93
|
+
if (result.stderr)
|
|
94
|
+
output += `\n--- STDERR ---\n${result.stderr}`;
|
|
95
|
+
return { content: [{ type: "text", text: OutputProcessor.process(output) }] };
|
|
96
|
+
}
|
|
97
|
+
// List recent test matrices
|
|
98
|
+
const result = await execAsync("gcloud", [
|
|
99
|
+
"firebase", "test", "android", "list",
|
|
100
|
+
"--format", "table(testMatrixId,state,testExecutions.state,testExecutions.environment.androidDevice.androidModelId)",
|
|
101
|
+
"--limit", "10",
|
|
102
|
+
"--sort-by", "~createTime",
|
|
103
|
+
], 30000);
|
|
104
|
+
let output = "=== Recent Test Matrices ===\n";
|
|
105
|
+
output += result.stdout || "(none found)";
|
|
106
|
+
if (result.stderr && !result.stdout)
|
|
107
|
+
output += `\n${result.stderr}`;
|
|
108
|
+
return { content: [{ type: "text", text: OutputProcessor.process(output) }] };
|
|
109
|
+
}
|
|
110
|
+
catch (error) {
|
|
111
|
+
return { content: [{ type: "text", text: OutputProcessor.formatError(error) }], isError: true };
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
ctx.server.tool("adb_farm_matrix", "List available device models and API levels on Firebase Test Lab. Use to plan test matrices.", {
|
|
115
|
+
type: z.enum(["models", "versions"]).optional().default("models")
|
|
116
|
+
.describe("List available device models or Android API versions"),
|
|
117
|
+
}, async ({ type }) => {
|
|
118
|
+
try {
|
|
119
|
+
const gcloudError = await checkGcloud();
|
|
120
|
+
if (gcloudError) {
|
|
121
|
+
return { content: [{ type: "text", text: gcloudError }], isError: true };
|
|
122
|
+
}
|
|
123
|
+
const subcommand = type === "versions" ? "versions" : "models";
|
|
124
|
+
const formatFlag = type === "versions"
|
|
125
|
+
? "table(versionId,apiLevel,codeName,releaseDate.date())"
|
|
126
|
+
: "table(modelId,name,manufacturer,supportedVersionIds)";
|
|
127
|
+
const result = await execAsync("gcloud", [
|
|
128
|
+
"firebase", "test", "android", subcommand, "list",
|
|
129
|
+
"--format", formatFlag,
|
|
130
|
+
], 30000);
|
|
131
|
+
let output = `=== Available ${type === "versions" ? "Android Versions" : "Device Models"} ===\n`;
|
|
132
|
+
output += result.stdout || "(none found)";
|
|
133
|
+
return { content: [{ type: "text", text: OutputProcessor.process(output) }] };
|
|
134
|
+
}
|
|
135
|
+
catch (error) {
|
|
136
|
+
return { content: [{ type: "text", text: OutputProcessor.formatError(error) }], isError: true };
|
|
137
|
+
}
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=device-farm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"device-farm.js","sourceRoot":"","sources":["../../src/tools/device-farm.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Device Profile Library — Device-specific knowledge base.
|
|
3
|
+
*
|
|
4
|
+
* Maintains a library of device profiles containing known modem device nodes,
|
|
5
|
+
* chipset quirks, supported AT command sets, root method requirements, and
|
|
6
|
+
* hardware capabilities. Improves auto-detection accuracy across the tool suite.
|
|
7
|
+
*
|
|
8
|
+
* Profiles can be auto-detected from connected devices and saved for reuse,
|
|
9
|
+
* or loaded from the built-in library of known devices. Community contributions
|
|
10
|
+
* can extend the library through saved profiles.
|
|
11
|
+
*
|
|
12
|
+
* Profiles are stored as JSON in {tempDir}/device-profiles/.
|
|
13
|
+
*/
|
|
14
|
+
import { ToolContext } from "../tool-context.js";
|
|
15
|
+
export declare function registerDeviceProfileTools(ctx: ToolContext): void;
|
|
16
|
+
//# sourceMappingURL=device-profiles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"device-profiles.d.ts","sourceRoot":"","sources":["../../src/tools/device-profiles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAgHjD,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CAmNjE"}
|