deepadb 1.1.1 → 1.1.3
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 +202 -21
- package/NOTICE +16 -0
- package/README.md +55 -29
- package/build/bridge/adb-bridge.d.ts +14 -0
- package/build/bridge/adb-bridge.d.ts.map +1 -1
- package/build/bridge/adb-bridge.js +34 -5
- package/build/bridge/adb-bridge.js.map +1 -1
- package/build/bridge/device-manager.d.ts.map +1 -1
- package/build/bridge/device-manager.js +18 -9
- package/build/bridge/device-manager.js.map +1 -1
- package/build/bridge/local-bridge.d.ts +10 -2
- package/build/bridge/local-bridge.d.ts.map +1 -1
- package/build/bridge/local-bridge.js +51 -16
- package/build/bridge/local-bridge.js.map +1 -1
- package/build/config/config.d.ts +7 -0
- package/build/config/config.d.ts.map +1 -1
- package/build/config/config.js +26 -10
- package/build/config/config.js.map +1 -1
- package/build/graphql-api.d.ts.map +1 -1
- package/build/graphql-api.js +73 -3
- package/build/graphql-api.js.map +1 -1
- package/build/http-transport.d.ts.map +1 -1
- package/build/http-transport.js +44 -7
- package/build/http-transport.js.map +1 -1
- package/build/index.d.ts.map +1 -1
- package/build/index.js +41 -16
- package/build/index.js.map +1 -1
- package/build/middleware/auth.d.ts.map +1 -1
- package/build/middleware/auth.js +43 -6
- package/build/middleware/auth.js.map +1 -1
- package/build/middleware/chipset.d.ts.map +1 -1
- package/build/middleware/chipset.js +16 -1
- package/build/middleware/chipset.js.map +1 -1
- package/build/middleware/cleanup.d.ts +39 -7
- package/build/middleware/cleanup.d.ts.map +1 -1
- package/build/middleware/cleanup.js +148 -16
- package/build/middleware/cleanup.js.map +1 -1
- package/build/middleware/fetch-utils.d.ts +50 -7
- package/build/middleware/fetch-utils.d.ts.map +1 -1
- package/build/middleware/fetch-utils.js +127 -14
- package/build/middleware/fetch-utils.js.map +1 -1
- package/build/middleware/fs-utils.d.ts +126 -0
- package/build/middleware/fs-utils.d.ts.map +1 -0
- package/build/middleware/fs-utils.js +229 -0
- package/build/middleware/fs-utils.js.map +1 -0
- package/build/middleware/logger.d.ts +16 -0
- package/build/middleware/logger.d.ts.map +1 -1
- package/build/middleware/logger.js +18 -0
- package/build/middleware/logger.js.map +1 -1
- package/build/middleware/output-processor.d.ts.map +1 -1
- package/build/middleware/output-processor.js +43 -8
- package/build/middleware/output-processor.js.map +1 -1
- package/build/middleware/parse-utils.d.ts +19 -0
- package/build/middleware/parse-utils.d.ts.map +1 -0
- package/build/middleware/parse-utils.js +30 -0
- package/build/middleware/parse-utils.js.map +1 -0
- package/build/middleware/png-utils.d.ts.map +1 -1
- package/build/middleware/png-utils.js +33 -11
- package/build/middleware/png-utils.js.map +1 -1
- package/build/middleware/result-handle.d.ts +76 -0
- package/build/middleware/result-handle.d.ts.map +1 -0
- package/build/middleware/result-handle.js +378 -0
- package/build/middleware/result-handle.js.map +1 -0
- package/build/middleware/sanitize.d.ts +26 -0
- package/build/middleware/sanitize.d.ts.map +1 -1
- package/build/middleware/sanitize.js +43 -2
- package/build/middleware/sanitize.js.map +1 -1
- package/build/middleware/security.d.ts.map +1 -1
- package/build/middleware/security.js +30 -5
- package/build/middleware/security.js.map +1 -1
- package/build/middleware/ui-dump.d.ts.map +1 -1
- package/build/middleware/ui-dump.js +30 -10
- package/build/middleware/ui-dump.js.map +1 -1
- package/build/server.d.ts.map +1 -1
- package/build/server.js +34 -5
- package/build/server.js.map +1 -1
- package/build/tool-context.d.ts.map +1 -1
- package/build/tool-context.js +2 -0
- package/build/tool-context.js.map +1 -1
- package/build/tools/accessibility.d.ts.map +1 -1
- package/build/tools/accessibility.js +39 -40
- package/build/tools/accessibility.js.map +1 -1
- package/build/tools/at-commands.d.ts.map +1 -1
- package/build/tools/at-commands.js +31 -6
- package/build/tools/at-commands.js.map +1 -1
- package/build/tools/baseband.d.ts.map +1 -1
- package/build/tools/baseband.js +18 -7
- package/build/tools/baseband.js.map +1 -1
- package/build/tools/build.d.ts.map +1 -1
- package/build/tools/build.js +30 -8
- package/build/tools/build.js.map +1 -1
- package/build/tools/ci.d.ts.map +1 -1
- package/build/tools/ci.js +16 -5
- package/build/tools/ci.js.map +1 -1
- package/build/tools/control.d.ts.map +1 -1
- package/build/tools/control.js +19 -11
- package/build/tools/control.js.map +1 -1
- package/build/tools/device-farm.d.ts.map +1 -1
- package/build/tools/device-farm.js +27 -3
- package/build/tools/device-farm.js.map +1 -1
- package/build/tools/device-profiles.d.ts.map +1 -1
- package/build/tools/device-profiles.js +70 -8
- package/build/tools/device-profiles.js.map +1 -1
- package/build/tools/device.d.ts.map +1 -1
- package/build/tools/device.js +4 -2
- package/build/tools/device.js.map +1 -1
- package/build/tools/diagnostics.d.ts.map +1 -1
- package/build/tools/diagnostics.js +17 -9
- package/build/tools/diagnostics.js.map +1 -1
- package/build/tools/emulator.d.ts.map +1 -1
- package/build/tools/emulator.js +12 -13
- package/build/tools/emulator.js.map +1 -1
- package/build/tools/files.d.ts +1 -1
- package/build/tools/files.d.ts.map +1 -1
- package/build/tools/files.js +98 -56
- package/build/tools/files.js.map +1 -1
- package/build/tools/firmware-analysis.d.ts.map +1 -1
- package/build/tools/firmware-analysis.js +35 -12
- package/build/tools/firmware-analysis.js.map +1 -1
- package/build/tools/forwarding.d.ts.map +1 -1
- package/build/tools/forwarding.js +248 -6
- package/build/tools/forwarding.js.map +1 -1
- package/build/tools/health.d.ts.map +1 -1
- package/build/tools/health.js +14 -3
- package/build/tools/health.js.map +1 -1
- package/build/tools/input-gestures.d.ts.map +1 -1
- package/build/tools/input-gestures.js +65 -13
- package/build/tools/input-gestures.js.map +1 -1
- package/build/tools/logcat-watch.d.ts.map +1 -1
- package/build/tools/logcat-watch.js +21 -14
- package/build/tools/logcat-watch.js.map +1 -1
- package/build/tools/logs.d.ts.map +1 -1
- package/build/tools/logs.js +8 -4
- package/build/tools/logs.js.map +1 -1
- package/build/tools/mirroring.d.ts.map +1 -1
- package/build/tools/mirroring.js +21 -19
- package/build/tools/mirroring.js.map +1 -1
- package/build/tools/multi-device.d.ts.map +1 -1
- package/build/tools/multi-device.js +10 -0
- package/build/tools/multi-device.js.map +1 -1
- package/build/tools/network-capture.d.ts.map +1 -1
- package/build/tools/network-capture.js +32 -8
- package/build/tools/network-capture.js.map +1 -1
- package/build/tools/network-discovery.d.ts.map +1 -1
- package/build/tools/network-discovery.js +11 -2
- package/build/tools/network-discovery.js.map +1 -1
- package/build/tools/ota-monitor.d.ts.map +1 -1
- package/build/tools/ota-monitor.js +26 -12
- package/build/tools/ota-monitor.js.map +1 -1
- package/build/tools/packages.d.ts.map +1 -1
- package/build/tools/packages.js +18 -11
- package/build/tools/packages.js.map +1 -1
- package/build/tools/plugins.d.ts +18 -0
- package/build/tools/plugins.d.ts.map +1 -1
- package/build/tools/plugins.js +47 -2
- package/build/tools/plugins.js.map +1 -1
- package/build/tools/prompts.d.ts.map +1 -1
- package/build/tools/prompts.js +2 -0
- package/build/tools/prompts.js.map +1 -1
- package/build/tools/qemu.d.ts +6 -3
- package/build/tools/qemu.d.ts.map +1 -1
- package/build/tools/qemu.js +28 -16
- package/build/tools/qemu.js.map +1 -1
- package/build/tools/registry.d.ts.map +1 -1
- package/build/tools/registry.js +76 -26
- package/build/tools/registry.js.map +1 -1
- package/build/tools/regression.d.ts +37 -0
- package/build/tools/regression.d.ts.map +1 -1
- package/build/tools/regression.js +63 -22
- package/build/tools/regression.js.map +1 -1
- package/build/tools/resources.d.ts.map +1 -1
- package/build/tools/resources.js +62 -15
- package/build/tools/resources.js.map +1 -1
- package/build/tools/result-handles.d.ts +37 -0
- package/build/tools/result-handles.d.ts.map +1 -0
- package/build/tools/result-handles.js +286 -0
- package/build/tools/result-handles.js.map +1 -0
- package/build/tools/ril-intercept.d.ts.map +1 -1
- package/build/tools/ril-intercept.js +15 -18
- package/build/tools/ril-intercept.js.map +1 -1
- package/build/tools/screen-record.d.ts.map +1 -1
- package/build/tools/screen-record.js +34 -5
- package/build/tools/screen-record.js.map +1 -1
- package/build/tools/screenshot-diff.d.ts.map +1 -1
- package/build/tools/screenshot-diff.js +29 -21
- package/build/tools/screenshot-diff.js.map +1 -1
- package/build/tools/selinux-audit.d.ts.map +1 -1
- package/build/tools/selinux-audit.js +7 -5
- package/build/tools/selinux-audit.js.map +1 -1
- package/build/tools/sensors.d.ts.map +1 -1
- package/build/tools/sensors.js +26 -4
- package/build/tools/sensors.js.map +1 -1
- package/build/tools/shell.d.ts.map +1 -1
- package/build/tools/shell.js +9 -0
- package/build/tools/shell.js.map +1 -1
- package/build/tools/snapshot.d.ts.map +1 -1
- package/build/tools/snapshot.js +38 -19
- package/build/tools/snapshot.js.map +1 -1
- package/build/tools/split-apk.d.ts.map +1 -1
- package/build/tools/split-apk.js +48 -24
- package/build/tools/split-apk.js.map +1 -1
- package/build/tools/test-gen.d.ts.map +1 -1
- package/build/tools/test-gen.js +29 -10
- package/build/tools/test-gen.js.map +1 -1
- package/build/tools/testing.d.ts.map +1 -1
- package/build/tools/testing.js +27 -9
- package/build/tools/testing.js.map +1 -1
- package/build/tools/thermal-power.d.ts +8 -1
- package/build/tools/thermal-power.d.ts.map +1 -1
- package/build/tools/thermal-power.js +35 -10
- package/build/tools/thermal-power.js.map +1 -1
- package/build/tools/ui.d.ts.map +1 -1
- package/build/tools/ui.js +20 -13
- package/build/tools/ui.js.map +1 -1
- package/build/tools/wireless-firmware.d.ts.map +1 -1
- package/build/tools/wireless-firmware.js +21 -7
- package/build/tools/wireless-firmware.js.map +1 -1
- package/build/tools/wireless.d.ts.map +1 -1
- package/build/tools/wireless.js +39 -3
- package/build/tools/wireless.js.map +1 -1
- package/build/tools/workflow-market.d.ts.map +1 -1
- package/build/tools/workflow-market.js +67 -13
- package/build/tools/workflow-market.js.map +1 -1
- package/build/tools/workflow.d.ts.map +1 -1
- package/build/tools/workflow.js +77 -8
- package/build/tools/workflow.js.map +1 -1
- package/build/ws-transport.d.ts.map +1 -1
- package/build/ws-transport.js +21 -3
- package/build/ws-transport.js.map +1 -1
- package/package.json +20 -8
package/build/tools/test-gen.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
// Copyright 2026 Jason <fullread@github>
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
1
3
|
/**
|
|
2
4
|
* Automated Test Generation — Generate workflow JSON from live UI and intent analysis.
|
|
3
5
|
*
|
|
@@ -11,9 +13,10 @@
|
|
|
11
13
|
*/
|
|
12
14
|
import { z } from "zod";
|
|
13
15
|
import { join } from "path";
|
|
14
|
-
import {
|
|
16
|
+
import { existsSync } from "fs";
|
|
17
|
+
import { ensurePrivateDir, sanitizeFilenameComponent, writeAtomicSync } from "../middleware/fs-utils.js";
|
|
15
18
|
import { OutputProcessor } from "../middleware/output-processor.js";
|
|
16
|
-
import { validateShellArg } from "../middleware/sanitize.js";
|
|
19
|
+
import { validateShellArg, shellQuote } from "../middleware/sanitize.js";
|
|
17
20
|
import { captureUiDump, getAttr } from "../middleware/ui-dump.js";
|
|
18
21
|
function parseClickableElements(xml) {
|
|
19
22
|
const elements = [];
|
|
@@ -77,7 +80,7 @@ export function registerTestGenTools(ctx) {
|
|
|
77
80
|
for (let i = 0; i < targets.length; i++) {
|
|
78
81
|
const el = targets[i];
|
|
79
82
|
const label = el.text || el.contentDesc || el.resourceId || `element_${i}`;
|
|
80
|
-
const safeLabel = label
|
|
83
|
+
const safeLabel = sanitizeFilenameComponent(label).substring(0, 30);
|
|
81
84
|
// Tap the element
|
|
82
85
|
steps.push({
|
|
83
86
|
name: `tap_${safeLabel}`,
|
|
@@ -91,10 +94,16 @@ export function registerTestGenTools(ctx) {
|
|
|
91
94
|
steps.push({ name: `screenshot_${safeLabel}`, action: "screenshot" });
|
|
92
95
|
}
|
|
93
96
|
// Check for crash
|
|
97
|
+
// BD7 fix: use {{pkg}} variable substitution for consistency with
|
|
98
|
+
// adb_test_gen_from_intents (L233). Both tools now produce workflows
|
|
99
|
+
// that interpolate the package via workflow.ts substituteVars rather
|
|
100
|
+
// than embedding the package name verbatim. This makes the generated
|
|
101
|
+
// workflows portable: an operator can save the workflow and re-run
|
|
102
|
+
// it against a different package by changing only the variable.
|
|
94
103
|
steps.push({
|
|
95
104
|
name: `crash_check_${safeLabel}`,
|
|
96
105
|
action: "shell",
|
|
97
|
-
command: `logcat -d -b crash -t 5 | grep -Fc "
|
|
106
|
+
command: `logcat -d -b crash -t 5 | grep -Fc "{{pkg}}" || echo 0`,
|
|
98
107
|
capture: `crash_${i}`,
|
|
99
108
|
});
|
|
100
109
|
// Press Back to return
|
|
@@ -150,31 +159,39 @@ export function registerTestGenTools(ctx) {
|
|
|
150
159
|
const resolved = await ctx.deviceManager.resolveDevice(device);
|
|
151
160
|
const serial = resolved.serial;
|
|
152
161
|
// Get package dump to find activities
|
|
153
|
-
const dumpResult = await ctx.bridge.shell(`dumpsys package ${packageName} | grep -E 'Activity|android.intent.action'`, {
|
|
162
|
+
const dumpResult = await ctx.bridge.shell(`dumpsys package ${shellQuote(packageName)} | grep -E 'Activity|android.intent.action'`, {
|
|
154
163
|
device: serial, timeout: 15000, ignoreExitCode: true,
|
|
155
164
|
});
|
|
156
165
|
// Extract activity component names — full regex escape (not just dots)
|
|
157
166
|
const escapedPkg = packageName.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
158
167
|
const activityRegex = new RegExp(`(${escapedPkg}[/.]\\S+)`, "g");
|
|
159
168
|
const rawMatches = dumpResult.stdout.match(activityRegex) ?? [];
|
|
169
|
+
const totalActivityCount = new Set(rawMatches).size;
|
|
160
170
|
const activities = [...new Set(rawMatches)]
|
|
161
171
|
.filter((a) => !a.includes("$") && !a.includes("Resolver"))
|
|
162
172
|
.slice(0, 20); // Cap at 20 activities
|
|
163
173
|
if (activities.length === 0) {
|
|
164
174
|
return { content: [{ type: "text", text: `No activities found for ${packageName}.` }], isError: true };
|
|
165
175
|
}
|
|
176
|
+
// BD6 fix: surface the cap to the operator so they know N activities were
|
|
177
|
+
// tested out of M total. Large apps (system services, comprehensive
|
|
178
|
+
// SDKs) routinely exceed 20 activities; without this disclosure the
|
|
179
|
+
// operator might think the workflow covers everything when it doesn't.
|
|
180
|
+
const activityCapNote = totalActivityCount > activities.length
|
|
181
|
+
? `# Note: tested ${activities.length} of ${totalActivityCount} activities (cap=20 for tractable workflow size). Edit the workflow JSON manually to add more.\n`
|
|
182
|
+
: "";
|
|
166
183
|
// Generate workflow
|
|
167
184
|
const steps = [];
|
|
168
185
|
steps.push({ name: "clear_logcat", action: "shell", command: "logcat -c" });
|
|
169
186
|
for (let i = 0; i < activities.length; i++) {
|
|
170
187
|
const activity = activities[i];
|
|
171
188
|
const shortName = activity.split("/").pop() ?? activity.split(".").pop() ?? `activity_${i}`;
|
|
172
|
-
const safeName = shortName
|
|
189
|
+
const safeName = sanitizeFilenameComponent(shortName, 30);
|
|
173
190
|
// Launch the activity
|
|
174
191
|
steps.push({
|
|
175
192
|
name: `launch_${safeName}`,
|
|
176
193
|
action: "shell",
|
|
177
|
-
command: `am start -n ${activity}`,
|
|
194
|
+
command: `am start -n ${shellQuote(activity)}`,
|
|
178
195
|
});
|
|
179
196
|
steps.push({ name: `wait_${safeName}`, action: "sleep", ms: 1500 });
|
|
180
197
|
steps.push({ name: `screenshot_${safeName}`, action: "screenshot" });
|
|
@@ -208,6 +225,8 @@ export function registerTestGenTools(ctx) {
|
|
|
208
225
|
};
|
|
209
226
|
const workflowJson = JSON.stringify(workflow, null, 2);
|
|
210
227
|
const summary = [];
|
|
228
|
+
if (activityCapNote)
|
|
229
|
+
summary.push(activityCapNote);
|
|
211
230
|
summary.push(`Generated intent test workflow for ${activities.length} activities:\n`);
|
|
212
231
|
for (let i = 0; i < activities.length; i++) {
|
|
213
232
|
summary.push(` [${i + 1}] ${activities[i]}`);
|
|
@@ -238,10 +257,10 @@ export function registerTestGenTools(ctx) {
|
|
|
238
257
|
}
|
|
239
258
|
const dir = getWorkflowDir(ctx.config.tempDir);
|
|
240
259
|
if (!existsSync(dir))
|
|
241
|
-
|
|
242
|
-
const safeName = name
|
|
260
|
+
ensurePrivateDir(dir);
|
|
261
|
+
const safeName = sanitizeFilenameComponent(name);
|
|
243
262
|
const filePath = join(dir, `${safeName}.json`);
|
|
244
|
-
|
|
263
|
+
writeAtomicSync(filePath, JSON.stringify(parsed, null, 2));
|
|
245
264
|
return { content: [{ type: "text", text: `Workflow saved: ${filePath}\nRun with: adb_workflow_run workflow="${safeName}"` }] };
|
|
246
265
|
}
|
|
247
266
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-gen.js","sourceRoot":"","sources":["../../src/tools/test-gen.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAE1D,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAWlE,SAAS,sBAAsB,CAAC,GAAW;IACzC,MAAM,QAAQ,GAAe,EAAE,CAAC;IAChC,MAAM,SAAS,GAAG,sBAAsB,CAAC;IACzC,IAAI,KAA6B,CAAC;IAElC,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAC9C,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAEvB,IAAI,OAAO,CAAC,KAAK,EAAE,WAAW,CAAC,KAAK,MAAM;YAAE,SAAS;QACrD,IAAI,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,OAAO;YAAE,SAAS;QAEpD,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC3C,MAAM,WAAW,GAAG,SAAS,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACtE,IAAI,CAAC,WAAW;YAAE,SAAS;QAE3B,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC1C,MAAM,GAAG,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACzC,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC3C,MAAM,MAAM,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAE5C,QAAQ,CAAC,IAAI,CAAC;YACZ,UAAU,EAAE,OAAO,CAAC,KAAK,EAAE,aAAa,CAAC;YACzC,IAAI,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;YAC5B,WAAW,EAAE,OAAO,CAAC,KAAK,EAAE,cAAc,CAAC;YAC3C,SAAS,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC;YAC9F,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;YACvC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;SACxC,CAAC,CAAC;IACL,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,cAAc,CAAC,OAAe;IACrC,OAAO,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,GAAgB;IAEnD,GAAG,CAAC,MAAM,CAAC,IAAI,CACb,sBAAsB,EACtB,+MAA+M,EAC/M;QACE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qFAAqF,CAAC;QACvH,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;QACvD,mBAAmB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,kCAAkC,CAAC;QACtG,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,4DAA4D,CAAC;KAC3H,EACD,KAAK,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,mBAAmB,EAAE,aAAa,EAAE,EAAE,EAAE;QACpE,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,gBAAgB,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;YAC5D,IAAI,MAAM;gBAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAEhF,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAC/D,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;YAE/B,uBAAuB;YACvB,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACpD,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iCAAiC,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YACjG,CAAC;YAED,MAAM,OAAO,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAC;YAC5C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,sDAAsD,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YACtH,CAAC;YAED,oBAAoB;YACpB,MAAM,KAAK,GAAmC,EAAE,CAAC;YAEjD,qBAAqB;YACrB,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;YAC5E,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;YAEjE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACxC,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;gBACtB,MAAM,KAAK,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,IAAI,EAAE,CAAC,UAAU,IAAI,WAAW,CAAC,EAAE,CAAC;gBAC3E,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAEzE,kBAAkB;gBAClB,KAAK,CAAC,IAAI,CAAC;oBACT,IAAI,EAAE,OAAO,SAAS,EAAE;oBACxB,MAAM,EAAE,OAAO;oBACf,OAAO,EAAE,aAAa,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC,OAAO,EAAE;iBACjD,CAAC,CAAC;gBAEH,wBAAwB;gBACxB,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,SAAS,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;gBAErE,uBAAuB;gBACvB,IAAI,mBAAmB,EAAE,CAAC;oBACxB,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,cAAc,SAAS,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;gBACxE,CAAC;gBAED,kBAAkB;gBAClB,KAAK,CAAC,IAAI,CAAC;oBACT,IAAI,EAAE,eAAe,SAAS,EAAE;oBAChC,MAAM,EAAE,OAAO;oBACf,OAAO,EAAE,uCAAuC,WAAW,aAAa;oBACxE,OAAO,EAAE,SAAS,CAAC,EAAE;iBACtB,CAAC,CAAC;gBAEH,uBAAuB;gBACvB,IAAI,aAAa,EAAE,CAAC;oBAClB,KAAK,CAAC,IAAI,CAAC;wBACT,IAAI,EAAE,QAAQ,SAAS,EAAE;wBACzB,MAAM,EAAE,OAAO;wBACf,OAAO,EAAE,6BAA6B;qBACvC,CAAC,CAAC;oBACH,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,SAAS,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;gBACxE,CAAC;YACH,CAAC;YAED,uBAAuB;YACvB,KAAK,CAAC,IAAI,CAAC;gBACT,IAAI,EAAE,cAAc;gBACpB,MAAM,EAAE,QAAQ;gBAChB,GAAG,EAAE,WAAW;gBAChB,KAAK,EAAE,GAAG;gBACV,OAAO,EAAE,UAAU;aACpB,CAAC,CAAC;YAEH,MAAM,QAAQ,GAAG;gBACf,IAAI,EAAE,WAAW,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;gBAC/C,WAAW,EAAE,2BAA2B,OAAO,CAAC,MAAM,yCAAyC;gBAC/F,SAAS,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE;gBAC/B,KAAK;aACN,CAAC;YAEF,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YAEvD,kCAAkC;YAClC,MAAM,OAAO,GAAa,EAAE,CAAC;YAC7B,OAAO,CAAC,IAAI,CAAC,+BAA+B,OAAO,CAAC,MAAM,0BAA0B,CAAC,CAAC;YACtF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACxC,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;gBACtB,MAAM,KAAK,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,IAAI,EAAE,CAAC,UAAU,IAAI,cAAc,EAAE,CAAC,SAAS,GAAG,CAAC;gBAC1F,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC,SAAS,QAAQ,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;YACzF,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,eAAe,KAAK,CAAC,MAAM,QAAQ,CAAC,CAAC;YAClD,OAAO,CAAC,IAAI,CAAC,yFAAyF,CAAC,CAAC;YACxG,OAAO,CAAC,IAAI,CAAC,KAAK,YAAY,EAAE,CAAC,CAAC;YAElC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAC5F,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAClG,CAAC;IACH,CAAC,CACF,CAAC;IAEF,GAAG,CAAC,MAAM,CAAC,IAAI,CACb,2BAA2B,EAC3B,iNAAiN,EACjN;QACE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;QAC3D,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;KACxD,EACD,KAAK,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE;QAChC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,gBAAgB,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;YAC5D,IAAI,MAAM;gBAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAEhF,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAC/D,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;YAE/B,sCAAsC;YACtC,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,WAAW,6CAA6C,EAAE;gBACrH,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI;aACrD,CAAC,CAAC;YAEH,uEAAuE;YACvE,MAAM,UAAU,GAAG,WAAW,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;YACtE,MAAM,aAAa,GAAG,IAAI,MAAM,CAAC,IAAI,UAAU,WAAW,EAAE,GAAG,CAAC,CAAC;YACjE,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;YAChE,MAAM,UAAU,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;iBACxC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;iBAC1D,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,uBAAuB;YAExC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC5B,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,2BAA2B,WAAW,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YACzG,CAAC;YAED,oBAAoB;YACpB,MAAM,KAAK,GAAmC,EAAE,CAAC;YACjD,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;YAE5E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC3C,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;gBAC/B,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,YAAY,CAAC,EAAE,CAAC;gBAC5F,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAE3E,sBAAsB;gBACtB,KAAK,CAAC,IAAI,CAAC;oBACT,IAAI,EAAE,UAAU,QAAQ,EAAE;oBAC1B,MAAM,EAAE,OAAO;oBACf,OAAO,EAAE,eAAe,QAAQ,EAAE;iBACnC,CAAC,CAAC;gBACH,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,QAAQ,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;gBACpE,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,cAAc,QAAQ,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;gBAErE,cAAc;gBACd,KAAK,CAAC,IAAI,CAAC;oBACT,IAAI,EAAE,eAAe,QAAQ,EAAE;oBAC/B,MAAM,EAAE,OAAO;oBACf,OAAO,EAAE,wDAAwD;oBACjE,OAAO,EAAE,SAAS,CAAC,EAAE;iBACtB,CAAC,CAAC;gBAEH,qBAAqB;gBACrB,KAAK,CAAC,IAAI,CAAC;oBACT,IAAI,EAAE,QAAQ,QAAQ,EAAE;oBACxB,MAAM,EAAE,OAAO;oBACf,OAAO,EAAE,6BAA6B;iBACvC,CAAC,CAAC;gBACH,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,QAAQ,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;YACvE,CAAC;YAED,KAAK,CAAC,IAAI,CAAC;gBACT,IAAI,EAAE,cAAc;gBACpB,MAAM,EAAE,QAAQ;gBAChB,GAAG,EAAE,WAAW;gBAChB,KAAK,EAAE,GAAG;gBACV,OAAO,EAAE,UAAU;aACpB,CAAC,CAAC;YAEH,MAAM,QAAQ,GAAG;gBACf,IAAI,EAAE,eAAe,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;gBACnD,WAAW,EAAE,+BAA+B,UAAU,CAAC,MAAM,mBAAmB,WAAW,EAAE;gBAC7F,SAAS,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE;gBAC/B,KAAK;aACN,CAAC;YAEF,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YAEvD,MAAM,OAAO,GAAa,EAAE,CAAC;YAC7B,OAAO,CAAC,IAAI,CAAC,sCAAsC,UAAU,CAAC,MAAM,gBAAgB,CAAC,CAAC;YACtF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC3C,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAChD,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,eAAe,KAAK,CAAC,MAAM,QAAQ,CAAC,CAAC;YAClD,OAAO,CAAC,IAAI,CAAC,KAAK,YAAY,EAAE,CAAC,CAAC;YAElC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAC5F,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAClG,CAAC;IACH,CAAC,CACF,CAAC;IAEF,GAAG,CAAC,MAAM,CAAC,IAAI,CACb,mBAAmB,EACnB,sGAAsG,EACtG;QACE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;QAC7D,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;KAC9D,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE;QAC3B,IAAI,CAAC;YACH,oBAAoB;YACpB,IAAI,MAAe,CAAC;YACpB,IAAI,CAAC;gBACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAChC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAC3H,CAAC;YAED,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,IAAK,MAAkC,CAAC,EAAE,CAAC;gBAC9F,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,8DAA8D,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAC9H,CAAC;YAED,MAAM,GAAG,GAAG,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC/C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAE1D,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;YACtD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,OAAO,CAAC,CAAC;YAC/C,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAEzD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,QAAQ,0CAA0C,QAAQ,GAAG,EAAE,CAAC,EAAE,CAAC;QACjI,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAClG,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"test-gen.js","sourceRoot":"","sources":["../../src/tools/test-gen.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["../../src/tools/testing.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["../../src/tools/testing.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AAMH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AA2BjD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CAoK3D"}
|
package/build/tools/testing.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
// Copyright 2026 Jason <fullread@github>
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
1
3
|
/**
|
|
2
4
|
* Test Session Tools — Structured test workflow organization.
|
|
3
5
|
*
|
|
@@ -6,11 +8,21 @@
|
|
|
6
8
|
*/
|
|
7
9
|
import { z } from "zod";
|
|
8
10
|
import { join } from "path";
|
|
9
|
-
import {
|
|
11
|
+
import { writeFileSync } from "fs";
|
|
12
|
+
import { ensurePrivateDir, sanitizeFilenameComponent } from "../middleware/fs-utils.js";
|
|
10
13
|
import { OutputProcessor } from "../middleware/output-processor.js";
|
|
11
|
-
import {
|
|
12
|
-
import { shellEscape } from "../middleware/sanitize.js";
|
|
14
|
+
import { shellQuote } from "../middleware/sanitize.js";
|
|
13
15
|
/** Active test session. Only one at a time. */
|
|
16
|
+
// BE6 note: single-session global state. The MCP server runs a single-
|
|
17
|
+
// threaded JS event loop, so the only theoretical race is the gap between
|
|
18
|
+
// the `if (activeSession)` check at session-start and the assignment a few
|
|
19
|
+
// lines down — across that gap, the awaited `resolveDevice` call can yield
|
|
20
|
+
// to another concurrent tool invocation. Operator workflows are sequential
|
|
21
|
+
// in practice (the operator types one command and waits), so this race
|
|
22
|
+
// has never been observed. Tightening would mean writing a sentinel
|
|
23
|
+
// before the await; left as-is because the cost (lock-contention complexity)
|
|
24
|
+
// outweighs the realistic risk. If a future use case wants multiple
|
|
25
|
+
// concurrent sessions, replace this with a Map<sessionId, TestSession>.
|
|
14
26
|
let activeSession = null;
|
|
15
27
|
export function registerTestingTools(ctx) {
|
|
16
28
|
ctx.server.tool("adb_test_session_start", "Start a structured test session. Creates a named directory for organizing numbered screenshots and logcat captures.", {
|
|
@@ -26,10 +38,10 @@ export function registerTestingTools(ctx) {
|
|
|
26
38
|
}
|
|
27
39
|
const resolved = await ctx.deviceManager.resolveDevice(device);
|
|
28
40
|
const timestamp = new Date().toISOString().replace(/[:.]/g, "-").substring(0, 19);
|
|
29
|
-
const safeName = name
|
|
41
|
+
const safeName = sanitizeFilenameComponent(name);
|
|
30
42
|
const dirName = `${safeName}_${timestamp}`;
|
|
31
43
|
const directory = join(ctx.config.tempDir, "tests", dirName);
|
|
32
|
-
|
|
44
|
+
ensurePrivateDir(directory);
|
|
33
45
|
// Clear logcat so our captures start fresh
|
|
34
46
|
await ctx.bridge.shell("logcat -c", { device: resolved.serial, ignoreExitCode: true });
|
|
35
47
|
activeSession = {
|
|
@@ -70,20 +82,26 @@ export function registerTestingTools(ctx) {
|
|
|
70
82
|
const session = activeSession;
|
|
71
83
|
session.stepCount++;
|
|
72
84
|
const stepNum = String(session.stepCount).padStart(3, "0");
|
|
73
|
-
const stepPrefix = `${stepNum}_${description
|
|
85
|
+
const stepPrefix = `${stepNum}_${sanitizeFilenameComponent(description, 40)}`;
|
|
74
86
|
const results = [`Step ${stepNum}: ${description}`];
|
|
75
87
|
// Screenshot
|
|
76
88
|
if (captureScreenshot) {
|
|
77
89
|
const screenshotFile = `${stepPrefix}.png`;
|
|
78
|
-
const remoteDir =
|
|
90
|
+
const remoteDir = "/data/local/tmp";
|
|
91
|
+
// BE7 note: step screenshot remote path does NOT include PID or
|
|
92
|
+
// `Date.now()` uniqueness. Safe because activeSession is enforced
|
|
93
|
+
// to be single (BE6 above), so two concurrent sessions cannot exist
|
|
94
|
+
// and therefore cannot collide on stepNum. If multi-session support
|
|
95
|
+
// is ever added, this path must adopt the collision-defense pattern
|
|
96
|
+
// from middleware/ui-dump.ts captureUiDump (process.pid + Date.now + randomBytes).
|
|
79
97
|
const remotePath = `${remoteDir}/DA_test_${stepNum}.png`;
|
|
80
98
|
const localPath = join(session.directory, screenshotFile);
|
|
81
99
|
try {
|
|
82
|
-
await ctx.bridge.shell(`screencap -p
|
|
100
|
+
await ctx.bridge.shell(`screencap -p ${shellQuote(remotePath)}`, { device: session.device, timeout: 15000 });
|
|
83
101
|
await ctx.bridge.exec(["pull", remotePath, localPath], { device: session.device, timeout: 30000 });
|
|
84
102
|
}
|
|
85
103
|
finally {
|
|
86
|
-
await ctx.bridge.shell(`rm
|
|
104
|
+
await ctx.bridge.shell(`rm ${shellQuote(remotePath)}`, { device: session.device, ignoreExitCode: true }).catch(() => { });
|
|
87
105
|
}
|
|
88
106
|
results.push(`Screenshot: ${screenshotFile}`);
|
|
89
107
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testing.js","sourceRoot":"","sources":["../../src/tools/testing.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"testing.js","sourceRoot":"","sources":["../../src/tools/testing.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,7 +12,14 @@
|
|
|
12
12
|
* - /sys/class/power_supply/battery/ — detailed battery state
|
|
13
13
|
* - dumpsys batterystats — historical battery usage statistics
|
|
14
14
|
*
|
|
15
|
-
*
|
|
15
|
+
* Shell-construction surface (BF1 audit, corrected from earlier docstring):
|
|
16
|
+
* - Snapshot/compare tools: all sysfs reads use hardcoded paths in
|
|
17
|
+
* device-side for-loops. NO user input reaches shell interpolation.
|
|
18
|
+
* - adb_battery_drain: the per-package stats path interpolates a
|
|
19
|
+
* validated `packageName` into `dumpsys batterystats ${packageName}`.
|
|
20
|
+
* validateShellArg blocks metacharacters; the wrapping for
|
|
21
|
+
* defense-in-depth against whitespace word-splitting is queued in this
|
|
22
|
+
* release as part of the shellQuote promotion.
|
|
16
23
|
*/
|
|
17
24
|
import { ToolContext } from "../tool-context.js";
|
|
18
25
|
export declare function registerThermalPowerTools(ctx: ToolContext): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"thermal-power.d.ts","sourceRoot":"","sources":["../../src/tools/thermal-power.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"thermal-power.d.ts","sourceRoot":"","sources":["../../src/tools/thermal-power.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAMH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAejD,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CAkYhE"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
// Copyright 2026 Jason <fullread@github>
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
1
3
|
/**
|
|
2
4
|
* Thermal & Power Profiling — Temperature, CPU frequency, and battery drain analysis.
|
|
3
5
|
*
|
|
@@ -12,13 +14,21 @@
|
|
|
12
14
|
* - /sys/class/power_supply/battery/ — detailed battery state
|
|
13
15
|
* - dumpsys batterystats — historical battery usage statistics
|
|
14
16
|
*
|
|
15
|
-
*
|
|
17
|
+
* Shell-construction surface (BF1 audit, corrected from earlier docstring):
|
|
18
|
+
* - Snapshot/compare tools: all sysfs reads use hardcoded paths in
|
|
19
|
+
* device-side for-loops. NO user input reaches shell interpolation.
|
|
20
|
+
* - adb_battery_drain: the per-package stats path interpolates a
|
|
21
|
+
* validated `packageName` into `dumpsys batterystats ${packageName}`.
|
|
22
|
+
* validateShellArg blocks metacharacters; the wrapping for
|
|
23
|
+
* defense-in-depth against whitespace word-splitting is queued in this
|
|
24
|
+
* release as part of the shellQuote promotion.
|
|
16
25
|
*/
|
|
17
26
|
import { z } from "zod";
|
|
18
27
|
import { join } from "path";
|
|
19
|
-
import {
|
|
28
|
+
import { readFileSync, existsSync, readdirSync } from "fs";
|
|
29
|
+
import { ensurePrivateDir, sanitizeFilenameComponent, writeAtomicSync, isWithinDir } from "../middleware/fs-utils.js";
|
|
20
30
|
import { OutputProcessor } from "../middleware/output-processor.js";
|
|
21
|
-
import { validateShellArg } from "../middleware/sanitize.js";
|
|
31
|
+
import { validateShellArg, shellQuote } from "../middleware/sanitize.js";
|
|
22
32
|
function getThermalDir(tempDir) {
|
|
23
33
|
return join(tempDir, "thermal-profiles");
|
|
24
34
|
}
|
|
@@ -144,11 +154,11 @@ export function registerThermalPowerTools(ctx) {
|
|
|
144
154
|
};
|
|
145
155
|
const dir = getThermalDir(ctx.config.tempDir);
|
|
146
156
|
if (!existsSync(dir))
|
|
147
|
-
|
|
148
|
-
const safeLabel = label
|
|
149
|
-
const safeDevice = serial
|
|
157
|
+
ensurePrivateDir(dir);
|
|
158
|
+
const safeLabel = sanitizeFilenameComponent(label);
|
|
159
|
+
const safeDevice = sanitizeFilenameComponent(serial);
|
|
150
160
|
const filePath = join(dir, `${safeDevice}_${safeLabel}_${Date.now()}.json`);
|
|
151
|
-
|
|
161
|
+
writeAtomicSync(filePath, JSON.stringify(snapshot, null, 2));
|
|
152
162
|
sections.push(`\nSaved: ${filePath}`);
|
|
153
163
|
}
|
|
154
164
|
return { content: [{ type: "text", text: sections.join("\n") }] };
|
|
@@ -162,6 +172,12 @@ export function registerThermalPowerTools(ctx) {
|
|
|
162
172
|
device: z.string().optional().describe("Device serial"),
|
|
163
173
|
}, async ({ baselinePath, device }) => {
|
|
164
174
|
try {
|
|
175
|
+
// Path scoping for explicit baselinePath; the default-resolution
|
|
176
|
+
// path (when baselinePath is omitted) already produces a path
|
|
177
|
+
// inside tempDir.
|
|
178
|
+
if (baselinePath && !isWithinDir(baselinePath, ctx.config.tempDir)) {
|
|
179
|
+
return { content: [{ type: "text", text: `Baseline path must be inside the temp directory (${ctx.config.tempDir}). Got: ${baselinePath}` }], isError: true };
|
|
180
|
+
}
|
|
165
181
|
const resolved = await ctx.deviceManager.resolveDevice(device);
|
|
166
182
|
const serial = resolved.serial;
|
|
167
183
|
// Find baseline
|
|
@@ -171,7 +187,7 @@ export function registerThermalPowerTools(ctx) {
|
|
|
171
187
|
if (!existsSync(dir)) {
|
|
172
188
|
return { content: [{ type: "text", text: "No thermal baselines saved. Use adb_thermal_snapshot with save=true first." }], isError: true };
|
|
173
189
|
}
|
|
174
|
-
const safeDevice = serial
|
|
190
|
+
const safeDevice = sanitizeFilenameComponent(serial);
|
|
175
191
|
const files = readdirSync(dir)
|
|
176
192
|
.filter((f) => f.startsWith(safeDevice) && f.endsWith(".json"))
|
|
177
193
|
.sort()
|
|
@@ -255,7 +271,16 @@ export function registerThermalPowerTools(ctx) {
|
|
|
255
271
|
return { content: [{ type: "text", text: OutputProcessor.formatError(error) }], isError: true };
|
|
256
272
|
}
|
|
257
273
|
});
|
|
258
|
-
ctx.server.tool(
|
|
274
|
+
ctx.server.tool(
|
|
275
|
+
// BF8 note: adb_battery_drain BLOCKS the MCP server's event loop for
|
|
276
|
+
// the duration parameter (3-60 seconds via setTimeout). Single-threaded
|
|
277
|
+
// JS means no other tool calls can be serviced while the drain test is
|
|
278
|
+
// running. Acceptable for the use case — battery drain is an explicit
|
|
279
|
+
// long-running measurement and the operator chose the duration — but
|
|
280
|
+
// it does mean the client may appear unresponsive for up to 60s, and
|
|
281
|
+
// any concurrent device polling stops. Operators running multi-tool
|
|
282
|
+
// workflows should sequence drain LAST or in isolation.
|
|
283
|
+
"adb_battery_drain", "Measure battery drain rate over a specified duration. Takes initial and final readings and calculates mA draw, mW power consumption, and estimated percentage per hour. Useful for profiling power impact of specific operations.", {
|
|
259
284
|
durationMs: z.number().min(3000).max(60000).optional().default(10000).describe("Measurement duration in ms (3s-60s, default 10s)"),
|
|
260
285
|
packageName: z.string().optional().describe("If specified, show battery stats for this package (requires root for detailed stats)"),
|
|
261
286
|
device: z.string().optional().describe("Device serial"),
|
|
@@ -312,7 +337,7 @@ export function registerThermalPowerTools(ctx) {
|
|
|
312
337
|
}
|
|
313
338
|
// Package-specific stats if requested
|
|
314
339
|
if (packageName) {
|
|
315
|
-
const statsResult = await ctx.bridge.shell(`dumpsys batterystats ${packageName} | grep -E 'Uid|Total|Screen|Wifi|Cell|Sensor|Wake' | head -20`, { device: serial, timeout: 10000, ignoreExitCode: true });
|
|
340
|
+
const statsResult = await ctx.bridge.shell(`dumpsys batterystats ${shellQuote(packageName)} | grep -E 'Uid|Total|Screen|Wifi|Cell|Sensor|Wake' | head -20`, { device: serial, timeout: 10000, ignoreExitCode: true });
|
|
316
341
|
if (statsResult.stdout.trim()) {
|
|
317
342
|
sections.push(`\nBattery stats for ${packageName}:`);
|
|
318
343
|
for (const line of statsResult.stdout.trim().split("\n").slice(0, 15)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"thermal-power.js","sourceRoot":"","sources":["../../src/tools/thermal-power.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"thermal-power.js","sourceRoot":"","sources":["../../src/tools/thermal-power.ts"],"names":[],"mappings":"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"}
|
package/build/tools/ui.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../src/tools/ui.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../src/tools/ui.ts"],"names":[],"mappings":"AAEA;;GAEG;AAKH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAiBjD,wBAAgB,eAAe,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CA+XtD"}
|
package/build/tools/ui.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
// Copyright 2026 Jason <fullread@github>
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
1
3
|
/**
|
|
2
4
|
* UI Tools — Screenshots, input events, activity inspection, and UI hierarchy analysis.
|
|
3
5
|
*/
|
|
@@ -5,14 +7,19 @@ import { z } from "zod";
|
|
|
5
7
|
import { join, basename } from "path";
|
|
6
8
|
import { writeFileSync } from "fs";
|
|
7
9
|
import { OutputProcessor } from "../middleware/output-processor.js";
|
|
8
|
-
import {
|
|
10
|
+
import { shellQuote } from "../middleware/sanitize.js";
|
|
11
|
+
import { sanitizeFilenameComponentDotted } from "../middleware/fs-utils.js";
|
|
9
12
|
import { captureUiDump, parseUiNodes } from "../middleware/ui-dump.js";
|
|
10
13
|
import { decodePngPixels, encodePng, drawRect, drawLabel, ELEMENT_COLORS } from "../middleware/png-utils.js";
|
|
11
|
-
import { isOnDevice } from "../config/config.js";
|
|
12
14
|
function sanitizeFilename(name) {
|
|
15
|
+
// BG6 fix: route through canonical sanitizeFilenameComponentDotted from
|
|
16
|
+
// fs-utils.ts instead of duplicating the regex inline. The basename()
|
|
17
|
+
// strip and the timestamp fallback are preserved for back-compat;
|
|
18
|
+
// empty basename ("" or trailing slash) still yields file_{ts}, not "_".
|
|
13
19
|
const base = basename(name);
|
|
14
|
-
|
|
15
|
-
|
|
20
|
+
if (base.length === 0)
|
|
21
|
+
return `file_${Date.now()}`;
|
|
22
|
+
return sanitizeFilenameComponentDotted(base);
|
|
16
23
|
}
|
|
17
24
|
export function registerUiTools(ctx) {
|
|
18
25
|
ctx.server.tool("adb_screencap", "Take a screenshot and save to local filesystem. Returns the file path.", {
|
|
@@ -23,14 +30,14 @@ export function registerUiTools(ctx) {
|
|
|
23
30
|
const resolved = await ctx.deviceManager.resolveDevice(device);
|
|
24
31
|
const fname = sanitizeFilename(filename ?? `screenshot_${Date.now()}.png`);
|
|
25
32
|
const localPath = join(ctx.config.tempDir, fname);
|
|
26
|
-
const remoteDir =
|
|
33
|
+
const remoteDir = "/data/local/tmp";
|
|
27
34
|
const remotePath = `${remoteDir}/${fname}`;
|
|
28
35
|
try {
|
|
29
|
-
await ctx.bridge.shell(`screencap -p
|
|
36
|
+
await ctx.bridge.shell(`screencap -p ${shellQuote(remotePath)}`, { device: resolved.serial, timeout: 15000 });
|
|
30
37
|
await ctx.bridge.exec(["pull", remotePath, localPath], { device: resolved.serial, timeout: 30000 });
|
|
31
38
|
}
|
|
32
39
|
finally {
|
|
33
|
-
await ctx.bridge.shell(`rm
|
|
40
|
+
await ctx.bridge.shell(`rm ${shellQuote(remotePath)}`, { device: resolved.serial, ignoreExitCode: true }).catch(() => { });
|
|
34
41
|
}
|
|
35
42
|
return { content: [{ type: "text", text: `Screenshot saved: ${localPath}` }] };
|
|
36
43
|
}
|
|
@@ -60,7 +67,7 @@ export function registerUiTools(ctx) {
|
|
|
60
67
|
}
|
|
61
68
|
});
|
|
62
69
|
ctx.server.tool("adb_input", "Send input events to the device (tap, swipe, text, keyevent)", {
|
|
63
|
-
type: z.enum(["tap", "swipe", "text", "keyevent"]).describe("Input type"),
|
|
70
|
+
type: z.enum(["tap", "swipe", "text", "keyevent"]).describe("Input type — one of: tap (single touch), swipe (drag between two points), text (literal string entry), keyevent (Android key code like KEYCODE_HOME). The args field documents the expected argument format per type."),
|
|
64
71
|
args: z.string().describe("Arguments: tap='x y', swipe='x1 y1 x2 y2 [duration_ms]', text='string', keyevent='KEYCODE_HOME'"),
|
|
65
72
|
device: z.string().optional().describe("Device serial"),
|
|
66
73
|
}, async ({ type, args, device }) => {
|
|
@@ -91,7 +98,7 @@ export function registerUiTools(ctx) {
|
|
|
91
98
|
case "text":
|
|
92
99
|
// Text can contain anything — must be shell-escaped to prevent injection
|
|
93
100
|
// and to ensure special characters are typed literally on the device
|
|
94
|
-
shellCmd = `input text
|
|
101
|
+
shellCmd = `input text ${shellQuote(args)}`;
|
|
95
102
|
break;
|
|
96
103
|
}
|
|
97
104
|
const resolved = await ctx.deviceManager.resolveDevice(device);
|
|
@@ -209,19 +216,19 @@ export function registerUiTools(ctx) {
|
|
|
209
216
|
const resolved = await ctx.deviceManager.resolveDevice(device);
|
|
210
217
|
const serial = resolved.serial;
|
|
211
218
|
const ts = Date.now();
|
|
212
|
-
const remoteDir =
|
|
219
|
+
const remoteDir = "/data/local/tmp";
|
|
213
220
|
const remotePng = `${remoteDir}/DA_ann_${ts}.png`;
|
|
214
221
|
const outName = filename
|
|
215
|
-
? filename
|
|
222
|
+
? sanitizeFilenameComponentDotted(filename)
|
|
216
223
|
: `annotated_${ts}.png`;
|
|
217
224
|
const localPath = join(ctx.config.tempDir, outName);
|
|
218
225
|
// Capture screenshot and UI hierarchy in parallel
|
|
219
|
-
await ctx.bridge.shell(`screencap -p
|
|
226
|
+
await ctx.bridge.shell(`screencap -p ${shellQuote(remotePng)}`, { device: serial, timeout: 15000 });
|
|
220
227
|
try {
|
|
221
228
|
await ctx.bridge.exec(["pull", remotePng, localPath], { device: serial, timeout: 30000 });
|
|
222
229
|
}
|
|
223
230
|
finally {
|
|
224
|
-
await ctx.bridge.shell(`rm
|
|
231
|
+
await ctx.bridge.shell(`rm ${shellQuote(remotePng)}`, { device: serial, ignoreExitCode: true }).catch(() => { });
|
|
225
232
|
}
|
|
226
233
|
const xml = await captureUiDump(ctx.bridge, serial);
|
|
227
234
|
if (!xml) {
|