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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"regression.js","sourceRoot":"","sources":["../../src/tools/regression.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"regression.js","sourceRoot":"","sources":["../../src/tools/regression.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../../src/tools/resources.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../../src/tools/resources.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAsCjD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CA4FxD"}
|
package/build/tools/resources.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
// Copyright 2026 Jason <fullread@github>
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
1
3
|
/**
|
|
2
4
|
* MCP Resources — Read-only device state surfaces.
|
|
3
5
|
*
|
|
@@ -7,21 +9,61 @@
|
|
|
7
9
|
*/
|
|
8
10
|
import { ResourceTemplate } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
9
11
|
import { OutputProcessor } from "../middleware/output-processor.js";
|
|
12
|
+
/**
|
|
13
|
+
* AV3 fix: optional per-resource TTL cache. Off by default (TTL=0 → no
|
|
14
|
+
* caching, every read fetches fresh). Enable via DA_RESOURCE_CACHE_TTL_MS
|
|
15
|
+
* for high-frequency polling scenarios where slightly-stale data is
|
|
16
|
+
* acceptable. Bounded ~30s ceiling so stale data can't linger forever
|
|
17
|
+
* even if an operator sets a huge value.
|
|
18
|
+
*
|
|
19
|
+
* Key format: `${resourceName}:${serial}` keeps per-serial isolation.
|
|
20
|
+
* The cache is per-process (in-memory), cleared on server restart.
|
|
21
|
+
*/
|
|
22
|
+
const RESOURCE_CACHE_TTL_MS = (() => {
|
|
23
|
+
const raw = parseInt(process.env.DA_RESOURCE_CACHE_TTL_MS ?? "0", 10);
|
|
24
|
+
if (!Number.isFinite(raw) || raw < 0)
|
|
25
|
+
return 0;
|
|
26
|
+
return Math.min(raw, 30_000);
|
|
27
|
+
})();
|
|
28
|
+
const resourceCache = new Map();
|
|
29
|
+
function withCache(key, compute) {
|
|
30
|
+
if (RESOURCE_CACHE_TTL_MS === 0)
|
|
31
|
+
return compute();
|
|
32
|
+
const hit = resourceCache.get(key);
|
|
33
|
+
const now = Date.now();
|
|
34
|
+
if (hit && hit.expires > now)
|
|
35
|
+
return Promise.resolve(hit.value);
|
|
36
|
+
return compute().then((value) => {
|
|
37
|
+
resourceCache.set(key, { value, expires: now + RESOURCE_CACHE_TTL_MS });
|
|
38
|
+
// Opportunistic GC: drop a few expired entries on each insert. Bounded
|
|
39
|
+
// cost since we only check up to 20 entries.
|
|
40
|
+
let checked = 0;
|
|
41
|
+
for (const [k, v] of resourceCache) {
|
|
42
|
+
if (v.expires <= now)
|
|
43
|
+
resourceCache.delete(k);
|
|
44
|
+
if (++checked >= 20)
|
|
45
|
+
break;
|
|
46
|
+
}
|
|
47
|
+
return value;
|
|
48
|
+
});
|
|
49
|
+
}
|
|
10
50
|
export function registerResources(ctx) {
|
|
11
51
|
// Dynamic resource: device info by serial
|
|
12
52
|
ctx.server.resource("device-info", new ResourceTemplate("device://info/{serial}", { list: undefined }), { description: "Device properties (model, OS version, build, ABI)" }, async (uri, { serial }) => {
|
|
13
53
|
try {
|
|
14
54
|
const resolved = await ctx.deviceManager.resolveDevice(serial || undefined);
|
|
15
|
-
const
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
55
|
+
const info = await withCache(`device-info:${resolved.serial}`, async () => {
|
|
56
|
+
const props = await ctx.deviceManager.getDeviceProps(resolved.serial);
|
|
57
|
+
return [
|
|
58
|
+
`Model: ${props["ro.product.model"] ?? "unknown"}`,
|
|
59
|
+
`Manufacturer: ${props["ro.product.manufacturer"] ?? "unknown"}`,
|
|
60
|
+
`Android: ${props["ro.build.version.release"] ?? "unknown"} (SDK ${props["ro.build.version.sdk"] ?? "?"})`,
|
|
61
|
+
`Build: ${props["ro.build.display.id"] ?? "unknown"}`,
|
|
62
|
+
`Security Patch: ${props["ro.build.version.security_patch"] ?? "unknown"}`,
|
|
63
|
+
`ABI: ${props["ro.product.cpu.abi"] ?? "unknown"}`,
|
|
64
|
+
`Serial: ${resolved.serial}`,
|
|
65
|
+
].join("\n");
|
|
66
|
+
});
|
|
25
67
|
return { contents: [{ uri: uri.href, mimeType: "text/plain", text: info }] };
|
|
26
68
|
}
|
|
27
69
|
catch (error) {
|
|
@@ -32,8 +74,10 @@ export function registerResources(ctx) {
|
|
|
32
74
|
ctx.server.resource("device-battery", new ResourceTemplate("device://battery/{serial}", { list: undefined }), { description: "Battery status, level, temperature, and charging info" }, async (uri, { serial }) => {
|
|
33
75
|
try {
|
|
34
76
|
const resolved = await ctx.deviceManager.resolveDevice(serial || undefined);
|
|
35
|
-
const
|
|
36
|
-
|
|
77
|
+
const parsed = await withCache(`device-battery:${resolved.serial}`, async () => {
|
|
78
|
+
const result = await ctx.bridge.shell("dumpsys battery", { device: resolved.serial });
|
|
79
|
+
return OutputProcessor.parseBattery(result.stdout);
|
|
80
|
+
});
|
|
37
81
|
return { contents: [{ uri: uri.href, mimeType: "text/plain", text: parsed }] };
|
|
38
82
|
}
|
|
39
83
|
catch (error) {
|
|
@@ -44,10 +88,13 @@ export function registerResources(ctx) {
|
|
|
44
88
|
ctx.server.resource("device-telephony", new ResourceTemplate("device://telephony/{serial}", { list: undefined }), { description: "Telephony state: cell info, signal strength, network registration" }, async (uri, { serial }) => {
|
|
45
89
|
try {
|
|
46
90
|
const resolved = await ctx.deviceManager.resolveDevice(serial || undefined);
|
|
47
|
-
const
|
|
48
|
-
|
|
91
|
+
const text = await withCache(`device-telephony:${resolved.serial}`, async () => {
|
|
92
|
+
const result = await ctx.bridge.shell("dumpsys telephony.registry", {
|
|
93
|
+
device: resolved.serial, timeout: 15000,
|
|
94
|
+
});
|
|
95
|
+
return OutputProcessor.process(result.stdout, 20000);
|
|
49
96
|
});
|
|
50
|
-
return { contents: [{ uri: uri.href, mimeType: "text/plain", text
|
|
97
|
+
return { contents: [{ uri: uri.href, mimeType: "text/plain", text }] };
|
|
51
98
|
}
|
|
52
99
|
catch (error) {
|
|
53
100
|
return { contents: [{ uri: uri.href, mimeType: "text/plain", text: OutputProcessor.formatError(error) }] };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resources.js","sourceRoot":"","sources":["../../src/tools/resources.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,yCAAyC,CAAC;AAE3E,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAEpE,MAAM,UAAU,iBAAiB,CAAC,GAAgB;IAEhD,0CAA0C;IAC1C,GAAG,CAAC,MAAM,CAAC,QAAQ,CACjB,aAAa,EACb,IAAI,gBAAgB,CAAC,wBAAwB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EACnE,EAAE,WAAW,EAAE,mDAAmD,EAAE,EACpE,KAAK,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;QACxB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,aAAa,CAAC,MAAgB,IAAI,SAAS,CAAC,CAAC;YACtF,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"resources.js","sourceRoot":"","sources":["../../src/tools/resources.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Result Handle Tools — MCP-facing surface for the result-handle storage layer.
|
|
3
|
+
*
|
|
4
|
+
* Provides three discoverability tools (list/get/drop) and registers the
|
|
5
|
+
* `result://{tool}/{name}` resource scheme. Tier A tools opt in by adding
|
|
6
|
+
* a `result_handle` parameter to their schema and calling storeResult()
|
|
7
|
+
* after producing their response.
|
|
8
|
+
*
|
|
9
|
+
* The Resource scheme is intentionally non-enumerable (list: undefined) so
|
|
10
|
+
* resources/list does not leak active handle names — discoverability goes
|
|
11
|
+
* through adb_result_list, which is auth-gated like any other tool call.
|
|
12
|
+
*/
|
|
13
|
+
import { z } from "zod";
|
|
14
|
+
import { ToolContext } from "../tool-context.js";
|
|
15
|
+
import { storeResult as _storeResult, type HandleMeta, type ContentBlock, type StoreResult } from "../middleware/result-handle.js";
|
|
16
|
+
export { _storeResult as storeResult };
|
|
17
|
+
export type { HandleMeta, ContentBlock, StoreResult };
|
|
18
|
+
export declare function registerResultHandleTools(ctx: ToolContext): void;
|
|
19
|
+
/** Zod schema fragment to spread into any Tier A tool's args schema. */
|
|
20
|
+
export declare const resultHandleSchemaFields: {
|
|
21
|
+
result_handle: z.ZodOptional<z.ZodString>;
|
|
22
|
+
result_handle_ttl: z.ZodOptional<z.ZodNumber>;
|
|
23
|
+
};
|
|
24
|
+
/** Args shape that Tier A tool handlers destructure for the wrapper. */
|
|
25
|
+
export interface ResultHandleArgs {
|
|
26
|
+
result_handle?: string;
|
|
27
|
+
result_handle_ttl?: number;
|
|
28
|
+
}
|
|
29
|
+
/** Wrap a tool response with optional result-handle storage. No-op if
|
|
30
|
+
* result_handle is undefined. Appends a footer block describing the
|
|
31
|
+
* storage outcome (success URI or failure reason). The footer is the
|
|
32
|
+
* only mutation to the result on success — content blocks are preserved
|
|
33
|
+
* exactly as the tool produced them, so retrieval round-trips faithfully. */
|
|
34
|
+
export declare function withResultHandle<T extends {
|
|
35
|
+
content: ContentBlock[];
|
|
36
|
+
}>(result: T, toolName: string, args: ResultHandleArgs): T;
|
|
37
|
+
//# sourceMappingURL=result-handles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"result-handles.d.ts","sourceRoot":"","sources":["../../src/tools/result-handles.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EACL,WAAW,IAAI,YAAY,EAQ3B,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,WAAW,EACjB,MAAM,gCAAgC,CAAC;AAGxC,OAAO,EAAE,YAAY,IAAI,WAAW,EAAE,CAAC;AACvC,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC;AAqCtD,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CAyMhE;AAaD,wEAAwE;AACxE,eAAO,MAAM,wBAAwB;;;CAgBpC,CAAC;AAEF,wEAAwE;AACxE,MAAM,WAAW,gBAAgB;IAC/B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;;;8EAI8E;AAC9E,wBAAgB,gBAAgB,CAAC,CAAC,SAAS;IAAE,OAAO,EAAE,YAAY,EAAE,CAAA;CAAE,EACpE,MAAM,EAAE,CAAC,EACT,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,gBAAgB,GACrB,CAAC,CA0BH"}
|
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
// Copyright 2026 Jason <fullread@github>
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
/**
|
|
4
|
+
* Result Handle Tools — MCP-facing surface for the result-handle storage layer.
|
|
5
|
+
*
|
|
6
|
+
* Provides three discoverability tools (list/get/drop) and registers the
|
|
7
|
+
* `result://{tool}/{name}` resource scheme. Tier A tools opt in by adding
|
|
8
|
+
* a `result_handle` parameter to their schema and calling storeResult()
|
|
9
|
+
* after producing their response.
|
|
10
|
+
*
|
|
11
|
+
* The Resource scheme is intentionally non-enumerable (list: undefined) so
|
|
12
|
+
* resources/list does not leak active handle names — discoverability goes
|
|
13
|
+
* through adb_result_list, which is auth-gated like any other tool call.
|
|
14
|
+
*/
|
|
15
|
+
import { z } from "zod";
|
|
16
|
+
import { ResourceTemplate } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
17
|
+
import { storeResult as _storeResult, getResult, listHandles, dropHandle, dropAllHandles, getTokenHash, getStoreRoot, DEFAULT_TTL_SECONDS, } from "../middleware/result-handle.js";
|
|
18
|
+
// Re-export storage primitives so Tier A tools have a single import surface.
|
|
19
|
+
export { _storeResult as storeResult };
|
|
20
|
+
// ── Formatting helpers ───────────────────────────────────────────────────
|
|
21
|
+
function formatBytes(n) {
|
|
22
|
+
if (n < 1024)
|
|
23
|
+
return `${n} B`;
|
|
24
|
+
if (n < 1024 * 1024)
|
|
25
|
+
return `${(n / 1024).toFixed(1)} KB`;
|
|
26
|
+
return `${(n / (1024 * 1024)).toFixed(2)} MB`;
|
|
27
|
+
}
|
|
28
|
+
function formatRelative(ms, now) {
|
|
29
|
+
const diff = ms - now;
|
|
30
|
+
const abs = Math.abs(diff);
|
|
31
|
+
const sec = Math.floor(abs / 1000);
|
|
32
|
+
const min = Math.floor(sec / 60);
|
|
33
|
+
const hr = Math.floor(min / 60);
|
|
34
|
+
const day = Math.floor(hr / 24);
|
|
35
|
+
let s;
|
|
36
|
+
if (day > 0)
|
|
37
|
+
s = `${day}d ${hr % 24}h`;
|
|
38
|
+
else if (hr > 0)
|
|
39
|
+
s = `${hr}h ${min % 60}m`;
|
|
40
|
+
else if (min > 0)
|
|
41
|
+
s = `${min}m ${sec % 60}s`;
|
|
42
|
+
else
|
|
43
|
+
s = `${sec}s`;
|
|
44
|
+
return diff >= 0 ? `in ${s}` : `${s} ago`;
|
|
45
|
+
}
|
|
46
|
+
function formatHandleRow(h, now) {
|
|
47
|
+
return [
|
|
48
|
+
` result://${h.tool}/${h.name}`,
|
|
49
|
+
` size: ${formatBytes(h.size)}`,
|
|
50
|
+
` created: ${formatRelative(h.createdAt, now)}`,
|
|
51
|
+
` expires: ${formatRelative(h.expiresAt, now)}`,
|
|
52
|
+
` last accessed: ${formatRelative(h.lastAccessedAt, now)}`,
|
|
53
|
+
].join("\n");
|
|
54
|
+
}
|
|
55
|
+
// ── Tool registrations ───────────────────────────────────────────────────
|
|
56
|
+
export function registerResultHandleTools(ctx) {
|
|
57
|
+
// adb_result_list — enumerate active handles
|
|
58
|
+
ctx.server.tool("adb_result_list", "List all result handles currently stored in this session. Returns metadata for each: tool, name, size, creation/expiry/last-access times. Use the URIs (`result://<tool>/<name>`) with adb_result_get or by reading them as MCP Resources to retrieve stored content. Handles are scoped per-auth-token and survive server restart within their TTL.", {}, async () => {
|
|
59
|
+
try {
|
|
60
|
+
const handles = listHandles();
|
|
61
|
+
if (handles.length === 0) {
|
|
62
|
+
return {
|
|
63
|
+
content: [{
|
|
64
|
+
type: "text",
|
|
65
|
+
text: `No result handles stored.\nNamespace: ${getTokenHash()}\nStore root: ${getStoreRoot()}\n\nHandles are created opt-in by passing result_handle: "name" to supporting tools (adb_firmware_diff, adb_baseband_info, adb_dumpsys, adb_logcat, adb_logcat_poll, adb_find, adb_grep, adb_screenshot_diff, adb_screenshot_baseline, adb_screenshot_history).`,
|
|
66
|
+
}],
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
const now = Date.now();
|
|
70
|
+
const totalBytes = handles.reduce((sum, h) => sum + h.size, 0);
|
|
71
|
+
// Sort by most recently created first — typical use is "show me what I just stored"
|
|
72
|
+
handles.sort((a, b) => b.createdAt - a.createdAt);
|
|
73
|
+
const lines = [
|
|
74
|
+
`${handles.length} result handle(s) stored — ${formatBytes(totalBytes)} total`,
|
|
75
|
+
`Namespace: ${getTokenHash()}`,
|
|
76
|
+
"",
|
|
77
|
+
...handles.map(h => formatHandleRow(h, now)),
|
|
78
|
+
];
|
|
79
|
+
return { content: [{ type: "text", text: lines.join("\n") }] };
|
|
80
|
+
}
|
|
81
|
+
catch (error) {
|
|
82
|
+
return {
|
|
83
|
+
content: [{ type: "text", text: `Failed to list handles: ${error instanceof Error ? error.message : String(error)}` }],
|
|
84
|
+
isError: true,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
// adb_result_get — retrieve a handle's content as structured blocks
|
|
89
|
+
ctx.server.tool("adb_result_get", "Retrieve the content of a stored result handle by tool name + handle name. Returns the original content blocks as the source tool produced them. Updates the handle's last-accessed time. For URI-based retrieval, read `result://<tool>/<name>` as an MCP Resource instead.", {
|
|
90
|
+
tool: z.string().min(1).max(32).regex(/^[a-zA-Z0-9_-]+$/)
|
|
91
|
+
.describe("Source tool name (the tool that originally stored the handle, e.g., 'bugreport')"),
|
|
92
|
+
name: z.string().min(1).max(32).regex(/^[a-zA-Z0-9_-]+$/)
|
|
93
|
+
.describe("Handle name supplied at storage time (e.g., 'initial')"),
|
|
94
|
+
}, async ({ tool, name }) => {
|
|
95
|
+
try {
|
|
96
|
+
const stored = getResult(tool, name);
|
|
97
|
+
if (!stored) {
|
|
98
|
+
return {
|
|
99
|
+
content: [{
|
|
100
|
+
type: "text",
|
|
101
|
+
text: `Handle "result://${tool}/${name}" not found, expired, or invalid.\nUse adb_result_list to see active handles.`,
|
|
102
|
+
}],
|
|
103
|
+
isError: true,
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
// Return content blocks narrowed to MCP's strict text-block shape.
|
|
107
|
+
// v1.1.2 is text-only by design; the filter+map also guards against
|
|
108
|
+
// any non-text block sneaking into the store via future code paths.
|
|
109
|
+
return {
|
|
110
|
+
content: stored.content
|
|
111
|
+
.filter(b => b.type === "text" && typeof b.text === "string")
|
|
112
|
+
.map(b => ({ type: "text", text: b.text })),
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
catch (error) {
|
|
116
|
+
return {
|
|
117
|
+
content: [{ type: "text", text: `Failed to retrieve handle: ${error instanceof Error ? error.message : String(error)}` }],
|
|
118
|
+
isError: true,
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
// adb_result_drop — delete a single handle, or clear all
|
|
123
|
+
ctx.server.tool("adb_result_drop", "Delete a stored result handle, or clear all handles in this session. Either provide both `tool` and `name` to drop one specific handle, or pass `all: true` to drop everything in the current namespace. Useful for freeing up the store cap proactively or removing stale data before a sensitive operation.", {
|
|
124
|
+
tool: z.string().min(1).max(32).regex(/^[a-zA-Z0-9_-]+$/).optional()
|
|
125
|
+
.describe("Source tool name (required unless all=true)"),
|
|
126
|
+
name: z.string().min(1).max(32).regex(/^[a-zA-Z0-9_-]+$/).optional()
|
|
127
|
+
.describe("Handle name (required unless all=true)"),
|
|
128
|
+
all: z.boolean().optional().default(false)
|
|
129
|
+
.describe("If true, delete every handle in this namespace. tool/name must be omitted when all=true."),
|
|
130
|
+
}, async ({ tool, name, all }) => {
|
|
131
|
+
try {
|
|
132
|
+
if (all) {
|
|
133
|
+
if (tool !== undefined || name !== undefined) {
|
|
134
|
+
return {
|
|
135
|
+
content: [{ type: "text", text: "Cannot combine all=true with tool/name. Use one mode or the other." }],
|
|
136
|
+
isError: true,
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
const count = dropAllHandles();
|
|
140
|
+
return { content: [{ type: "text", text: `Dropped ${count} handle(s) from namespace ${getTokenHash()}.` }] };
|
|
141
|
+
}
|
|
142
|
+
if (!tool || !name) {
|
|
143
|
+
return {
|
|
144
|
+
content: [{ type: "text", text: "Must specify both tool and name, or pass all=true." }],
|
|
145
|
+
isError: true,
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
const dropped = dropHandle(tool, name);
|
|
149
|
+
if (!dropped) {
|
|
150
|
+
return {
|
|
151
|
+
content: [{ type: "text", text: `Handle "result://${tool}/${name}" not found (already evicted or never stored).` }],
|
|
152
|
+
isError: true,
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
return { content: [{ type: "text", text: `Dropped result://${tool}/${name}.` }] };
|
|
156
|
+
}
|
|
157
|
+
catch (error) {
|
|
158
|
+
return {
|
|
159
|
+
content: [{ type: "text", text: `Failed to drop handle: ${error instanceof Error ? error.message : String(error)}` }],
|
|
160
|
+
isError: true,
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
});
|
|
164
|
+
// ── MCP Resource: result://{tool}/{name} ─────────────────────────────
|
|
165
|
+
//
|
|
166
|
+
// Resolves a stored handle via the standard MCP Resources interface.
|
|
167
|
+
// Returns flattened text (concatenated text blocks) — for structured
|
|
168
|
+
// block retrieval, use adb_result_get instead.
|
|
169
|
+
//
|
|
170
|
+
// The template is non-enumerable (list: undefined) so resources/list
|
|
171
|
+
// does not leak active handle names. Discoverability goes through
|
|
172
|
+
// adb_result_list, which is auth-gated.
|
|
173
|
+
ctx.server.resource("result-handle", new ResourceTemplate("result://{tool}/{name}", { list: undefined }), {
|
|
174
|
+
description: "Stored tool result handle. Resolve by URI; URI is supplied by the source tool's storeResult response and listed in adb_result_list.",
|
|
175
|
+
}, async (uri, { tool, name }) => {
|
|
176
|
+
try {
|
|
177
|
+
// C6 note: the MCP SDK's ResourceTemplate parameter type is
|
|
178
|
+
// `string | string[]` to accommodate variadic templates. The template
|
|
179
|
+
// `result://{tool}/{name}` has single placeholders, so single-value
|
|
180
|
+
// extraction is guaranteed by the SDK contract — but the cast is
|
|
181
|
+
// unsafe-by-type-system. If this template ever evolves to use a
|
|
182
|
+
// variadic placeholder (e.g., `{name+}`), the cast would silently
|
|
183
|
+
// coerce an array to `[object Object]`. Guarded below to fail loud
|
|
184
|
+
// instead. Future-proof by checking shape, not just type.
|
|
185
|
+
if (typeof tool !== "string" || typeof name !== "string") {
|
|
186
|
+
return {
|
|
187
|
+
contents: [{
|
|
188
|
+
uri: uri.href,
|
|
189
|
+
mimeType: "text/plain",
|
|
190
|
+
text: `Handle URI parse failed: expected single-value tool and name parameters, got tool=${typeof tool} name=${typeof name}`,
|
|
191
|
+
}],
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
const stored = getResult(tool, name);
|
|
195
|
+
if (!stored) {
|
|
196
|
+
return {
|
|
197
|
+
contents: [{
|
|
198
|
+
uri: uri.href,
|
|
199
|
+
mimeType: "text/plain",
|
|
200
|
+
text: `Handle not found, expired, or invalid: ${uri.href}`,
|
|
201
|
+
}],
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
// Flatten text content blocks into a single resource entry.
|
|
205
|
+
// The structure-preserving path is adb_result_get; this surface
|
|
206
|
+
// optimizes for the common "just give me the text" use case.
|
|
207
|
+
const flat = stored.content
|
|
208
|
+
.filter(b => b.type === "text" && typeof b.text === "string")
|
|
209
|
+
.map(b => b.text)
|
|
210
|
+
.join("\n\n");
|
|
211
|
+
return {
|
|
212
|
+
contents: [{
|
|
213
|
+
uri: uri.href,
|
|
214
|
+
mimeType: "text/plain",
|
|
215
|
+
text: flat || "(handle stored but contains no text content)",
|
|
216
|
+
}],
|
|
217
|
+
};
|
|
218
|
+
}
|
|
219
|
+
catch (error) {
|
|
220
|
+
return {
|
|
221
|
+
contents: [{
|
|
222
|
+
uri: uri.href,
|
|
223
|
+
mimeType: "text/plain",
|
|
224
|
+
text: `Error resolving handle: ${error instanceof Error ? error.message : String(error)}`,
|
|
225
|
+
}],
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
// ── Tier-A wiring helpers ────────────────────────────────────────────────
|
|
231
|
+
//
|
|
232
|
+
// These two exports let any tool opt in to result-handle storage with two
|
|
233
|
+
// minimal additions to its existing registration:
|
|
234
|
+
// 1. Spread `resultHandleSchemaFields` into the Zod args schema
|
|
235
|
+
// 2. Wrap the response with `withResultHandle(result, "<tool_name>", args)`
|
|
236
|
+
// before returning
|
|
237
|
+
//
|
|
238
|
+
// The wrapper is a no-op when result_handle is undefined, so adding it does
|
|
239
|
+
// not change the behavior of tools called without the parameter.
|
|
240
|
+
/** Zod schema fragment to spread into any Tier A tool's args schema. */
|
|
241
|
+
export const resultHandleSchemaFields = {
|
|
242
|
+
result_handle: z.string()
|
|
243
|
+
.min(1).max(32).regex(/^[a-zA-Z0-9_-]+$/)
|
|
244
|
+
.optional()
|
|
245
|
+
.describe("Optional. If provided, store this tool's result under `result://<tool>/<name>` " +
|
|
246
|
+
"for retrieval after compaction. Name must be 1-32 chars, [a-zA-Z0-9_-]. " +
|
|
247
|
+
"Existing handles with the same tool+name are overwritten. " +
|
|
248
|
+
"Use adb_result_list to see active handles, adb_result_get or the MCP " +
|
|
249
|
+
"Resource URI to retrieve."),
|
|
250
|
+
result_handle_ttl: z.number().int().min(60).max(7 * 24 * 60 * 60).optional()
|
|
251
|
+
.describe("Optional. TTL in seconds for the result handle (60 to 604800). " +
|
|
252
|
+
"Default 43200 (12 hours). Ignored if result_handle is not provided."),
|
|
253
|
+
};
|
|
254
|
+
/** Wrap a tool response with optional result-handle storage. No-op if
|
|
255
|
+
* result_handle is undefined. Appends a footer block describing the
|
|
256
|
+
* storage outcome (success URI or failure reason). The footer is the
|
|
257
|
+
* only mutation to the result on success — content blocks are preserved
|
|
258
|
+
* exactly as the tool produced them, so retrieval round-trips faithfully. */
|
|
259
|
+
export function withResultHandle(result, toolName, args) {
|
|
260
|
+
if (!args.result_handle)
|
|
261
|
+
return result;
|
|
262
|
+
// Snapshot the original content for storage BEFORE we append the footer,
|
|
263
|
+
// so that retrieval returns the original tool output without the footer.
|
|
264
|
+
const originalContent = [...result.content];
|
|
265
|
+
const stored = _storeResult(toolName, args.result_handle, originalContent, args.result_handle_ttl);
|
|
266
|
+
if (stored.ok) {
|
|
267
|
+
// C8 fix: read the constant from result-handle.ts so this footer
|
|
268
|
+
// tracks DA_RESULT_HANDLE_TTL env var rather than lying about a 12h default.
|
|
269
|
+
const ttlDisplay = args.result_handle_ttl ?? DEFAULT_TTL_SECONDS;
|
|
270
|
+
const evictedNote = stored.evicted && stored.evicted.length > 0
|
|
271
|
+
? `\nEvicted ${stored.evicted.length} older handle(s) to make room: ${stored.evicted.join(", ")}`
|
|
272
|
+
: "";
|
|
273
|
+
result.content.push({
|
|
274
|
+
type: "text",
|
|
275
|
+
text: `\n──\nStored as ${stored.uri} (expires in ${ttlDisplay}s).${evictedNote}\nRetrieve with adb_result_get or by reading the URI as an MCP Resource.`,
|
|
276
|
+
});
|
|
277
|
+
}
|
|
278
|
+
else {
|
|
279
|
+
result.content.push({
|
|
280
|
+
type: "text",
|
|
281
|
+
text: `\n──\nResult handle "${args.result_handle}" NOT stored: ${stored.reason}`,
|
|
282
|
+
});
|
|
283
|
+
}
|
|
284
|
+
return result;
|
|
285
|
+
}
|
|
286
|
+
//# sourceMappingURL=result-handles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"result-handles.js","sourceRoot":"","sources":["../../src/tools/result-handles.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ril-intercept.d.ts","sourceRoot":"","sources":["../../src/tools/ril-intercept.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ril-intercept.d.ts","sourceRoot":"","sources":["../../src/tools/ril-intercept.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;GAoBG;AAIH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAiFjD,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CA2OhE"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
// Copyright 2026 Jason <fullread@github>
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
1
3
|
/**
|
|
2
4
|
* RIL Message Interception — Passive radio interface layer monitoring.
|
|
3
5
|
*
|
|
@@ -21,7 +23,7 @@
|
|
|
21
23
|
*/
|
|
22
24
|
import { z } from "zod";
|
|
23
25
|
import { OutputProcessor } from "../middleware/output-processor.js";
|
|
24
|
-
import { registerCleanup } from "../middleware/cleanup.js";
|
|
26
|
+
import { registerCleanup, gracefulKill } from "../middleware/cleanup.js";
|
|
25
27
|
/** Active RIL capture sessions by ID. */
|
|
26
28
|
const sessions = new Map();
|
|
27
29
|
let sessionCounter = 0;
|
|
@@ -40,6 +42,12 @@ const RIL_CATEGORIES = [
|
|
|
40
42
|
{ pattern: /NAS|EMM|5GMM|ATTACH|DETACH/i, category: "nas" },
|
|
41
43
|
];
|
|
42
44
|
function categorizeMessage(line) {
|
|
45
|
+
// AW4 note: ORDER MATTERS. First-match-wins via early return. If a single
|
|
46
|
+
// line matches multiple categories (e.g., both /VOICE/ and /CALL_STATE/),
|
|
47
|
+
// the category listed earlier in RIL_CATEGORIES is selected. Reordering
|
|
48
|
+
// entries changes downstream categorization for ambiguous messages.
|
|
49
|
+
// The current ordering puts the more-specific patterns before the more-
|
|
50
|
+
// general ones (e.g., voice-call patterns before generic radio patterns).
|
|
43
51
|
for (const { pattern, category } of RIL_CATEGORIES) {
|
|
44
52
|
if (pattern.test(line))
|
|
45
53
|
return category;
|
|
@@ -61,13 +69,10 @@ function parseRilLine(line) {
|
|
|
61
69
|
}
|
|
62
70
|
// Register cleanup via shared registry
|
|
63
71
|
function ensureCleanupRegistered() {
|
|
64
|
-
registerCleanup("ril-intercept", () => {
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
}
|
|
69
|
-
catch { /* ignore */ }
|
|
70
|
-
}
|
|
72
|
+
registerCleanup("ril-intercept", async () => {
|
|
73
|
+
// Same hazard as AC3/AK8: a stuck radio logcat reader can ignore
|
|
74
|
+
// SIGTERM. Two-stage gracefulKill ensures the child is reaped.
|
|
75
|
+
await Promise.all(Array.from(sessions.values()).map((s) => gracefulKill(s.process, 1500)));
|
|
71
76
|
sessions.clear();
|
|
72
77
|
});
|
|
73
78
|
}
|
|
@@ -230,12 +235,7 @@ export function registerRilInterceptTools(ctx) {
|
|
|
230
235
|
try {
|
|
231
236
|
if (sessionId === "all") {
|
|
232
237
|
const count = sessions.size;
|
|
233
|
-
|
|
234
|
-
try {
|
|
235
|
-
s.process.kill();
|
|
236
|
-
}
|
|
237
|
-
catch { /* ignore */ }
|
|
238
|
-
}
|
|
238
|
+
await Promise.all(Array.from(sessions.values()).map((s) => gracefulKill(s.process, 1500)));
|
|
239
239
|
sessions.clear();
|
|
240
240
|
return { content: [{ type: "text", text: `Stopped ${count} RIL session(s).` }] };
|
|
241
241
|
}
|
|
@@ -253,10 +253,7 @@ export function registerRilInterceptTools(ctx) {
|
|
|
253
253
|
.sort(([, a], [, b]) => b - a)
|
|
254
254
|
.map(([cat, n]) => ` ${cat}: ${n}`)
|
|
255
255
|
.join("\n");
|
|
256
|
-
|
|
257
|
-
session.process.kill();
|
|
258
|
-
}
|
|
259
|
-
catch { /* ignore */ }
|
|
256
|
+
await gracefulKill(session.process, 1500);
|
|
260
257
|
sessions.delete(sessionId);
|
|
261
258
|
const summary = [];
|
|
262
259
|
summary.push(`Stopped ${sessionId}. Duration: ${elapsed}s, Total messages: ${session.buffer.length}`);
|