deepadb 1.1.0 → 1.1.2

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.
Files changed (231) hide show
  1. package/LICENSE +202 -21
  2. package/NOTICE +16 -0
  3. package/README.md +95 -41
  4. package/build/bridge/adb-bridge.d.ts +14 -0
  5. package/build/bridge/adb-bridge.d.ts.map +1 -1
  6. package/build/bridge/adb-bridge.js +34 -5
  7. package/build/bridge/adb-bridge.js.map +1 -1
  8. package/build/bridge/device-manager.d.ts.map +1 -1
  9. package/build/bridge/device-manager.js +18 -9
  10. package/build/bridge/device-manager.js.map +1 -1
  11. package/build/bridge/local-bridge.d.ts +10 -2
  12. package/build/bridge/local-bridge.d.ts.map +1 -1
  13. package/build/bridge/local-bridge.js +51 -16
  14. package/build/bridge/local-bridge.js.map +1 -1
  15. package/build/config/config.d.ts +7 -0
  16. package/build/config/config.d.ts.map +1 -1
  17. package/build/config/config.js +26 -10
  18. package/build/config/config.js.map +1 -1
  19. package/build/graphql-api.d.ts.map +1 -1
  20. package/build/graphql-api.js +73 -3
  21. package/build/graphql-api.js.map +1 -1
  22. package/build/http-transport.d.ts.map +1 -1
  23. package/build/http-transport.js +44 -7
  24. package/build/http-transport.js.map +1 -1
  25. package/build/index.d.ts.map +1 -1
  26. package/build/index.js +41 -16
  27. package/build/index.js.map +1 -1
  28. package/build/middleware/auth.d.ts.map +1 -1
  29. package/build/middleware/auth.js +43 -6
  30. package/build/middleware/auth.js.map +1 -1
  31. package/build/middleware/chipset.d.ts.map +1 -1
  32. package/build/middleware/chipset.js +16 -1
  33. package/build/middleware/chipset.js.map +1 -1
  34. package/build/middleware/cleanup.d.ts +39 -7
  35. package/build/middleware/cleanup.d.ts.map +1 -1
  36. package/build/middleware/cleanup.js +148 -16
  37. package/build/middleware/cleanup.js.map +1 -1
  38. package/build/middleware/fetch-utils.d.ts +50 -7
  39. package/build/middleware/fetch-utils.d.ts.map +1 -1
  40. package/build/middleware/fetch-utils.js +127 -14
  41. package/build/middleware/fetch-utils.js.map +1 -1
  42. package/build/middleware/fs-utils.d.ts +126 -0
  43. package/build/middleware/fs-utils.d.ts.map +1 -0
  44. package/build/middleware/fs-utils.js +229 -0
  45. package/build/middleware/fs-utils.js.map +1 -0
  46. package/build/middleware/logger.d.ts +16 -0
  47. package/build/middleware/logger.d.ts.map +1 -1
  48. package/build/middleware/logger.js +18 -0
  49. package/build/middleware/logger.js.map +1 -1
  50. package/build/middleware/output-processor.d.ts.map +1 -1
  51. package/build/middleware/output-processor.js +43 -8
  52. package/build/middleware/output-processor.js.map +1 -1
  53. package/build/middleware/parse-utils.d.ts +19 -0
  54. package/build/middleware/parse-utils.d.ts.map +1 -0
  55. package/build/middleware/parse-utils.js +30 -0
  56. package/build/middleware/parse-utils.js.map +1 -0
  57. package/build/middleware/png-utils.d.ts.map +1 -1
  58. package/build/middleware/png-utils.js +33 -11
  59. package/build/middleware/png-utils.js.map +1 -1
  60. package/build/middleware/result-handle.d.ts +76 -0
  61. package/build/middleware/result-handle.d.ts.map +1 -0
  62. package/build/middleware/result-handle.js +378 -0
  63. package/build/middleware/result-handle.js.map +1 -0
  64. package/build/middleware/sanitize.d.ts +26 -0
  65. package/build/middleware/sanitize.d.ts.map +1 -1
  66. package/build/middleware/sanitize.js +43 -2
  67. package/build/middleware/sanitize.js.map +1 -1
  68. package/build/middleware/security.d.ts.map +1 -1
  69. package/build/middleware/security.js +30 -5
  70. package/build/middleware/security.js.map +1 -1
  71. package/build/middleware/ui-dump.d.ts.map +1 -1
  72. package/build/middleware/ui-dump.js +30 -10
  73. package/build/middleware/ui-dump.js.map +1 -1
  74. package/build/server.d.ts.map +1 -1
  75. package/build/server.js +36 -5
  76. package/build/server.js.map +1 -1
  77. package/build/tool-context.d.ts.map +1 -1
  78. package/build/tool-context.js +2 -0
  79. package/build/tool-context.js.map +1 -1
  80. package/build/tools/accessibility.d.ts.map +1 -1
  81. package/build/tools/accessibility.js +39 -40
  82. package/build/tools/accessibility.js.map +1 -1
  83. package/build/tools/at-commands.d.ts.map +1 -1
  84. package/build/tools/at-commands.js +61 -56
  85. package/build/tools/at-commands.js.map +1 -1
  86. package/build/tools/baseband.d.ts.map +1 -1
  87. package/build/tools/baseband.js +18 -7
  88. package/build/tools/baseband.js.map +1 -1
  89. package/build/tools/build.d.ts.map +1 -1
  90. package/build/tools/build.js +30 -8
  91. package/build/tools/build.js.map +1 -1
  92. package/build/tools/ci.d.ts.map +1 -1
  93. package/build/tools/ci.js +16 -5
  94. package/build/tools/ci.js.map +1 -1
  95. package/build/tools/control.d.ts.map +1 -1
  96. package/build/tools/control.js +19 -11
  97. package/build/tools/control.js.map +1 -1
  98. package/build/tools/device-farm.d.ts.map +1 -1
  99. package/build/tools/device-farm.js +27 -3
  100. package/build/tools/device-farm.js.map +1 -1
  101. package/build/tools/device-profiles.d.ts.map +1 -1
  102. package/build/tools/device-profiles.js +70 -8
  103. package/build/tools/device-profiles.js.map +1 -1
  104. package/build/tools/device.d.ts.map +1 -1
  105. package/build/tools/device.js +4 -2
  106. package/build/tools/device.js.map +1 -1
  107. package/build/tools/diagnostics.d.ts.map +1 -1
  108. package/build/tools/diagnostics.js +20 -10
  109. package/build/tools/diagnostics.js.map +1 -1
  110. package/build/tools/emulator.d.ts.map +1 -1
  111. package/build/tools/emulator.js +12 -13
  112. package/build/tools/emulator.js.map +1 -1
  113. package/build/tools/files.d.ts +27 -1
  114. package/build/tools/files.d.ts.map +1 -1
  115. package/build/tools/files.js +1109 -11
  116. package/build/tools/files.js.map +1 -1
  117. package/build/tools/firmware-analysis.d.ts.map +1 -1
  118. package/build/tools/firmware-analysis.js +35 -12
  119. package/build/tools/firmware-analysis.js.map +1 -1
  120. package/build/tools/forwarding.d.ts.map +1 -1
  121. package/build/tools/forwarding.js +284 -4
  122. package/build/tools/forwarding.js.map +1 -1
  123. package/build/tools/health.d.ts.map +1 -1
  124. package/build/tools/health.js +14 -3
  125. package/build/tools/health.js.map +1 -1
  126. package/build/tools/input-gestures.d.ts.map +1 -1
  127. package/build/tools/input-gestures.js +65 -13
  128. package/build/tools/input-gestures.js.map +1 -1
  129. package/build/tools/logcat-watch.d.ts.map +1 -1
  130. package/build/tools/logcat-watch.js +21 -14
  131. package/build/tools/logcat-watch.js.map +1 -1
  132. package/build/tools/logs.d.ts.map +1 -1
  133. package/build/tools/logs.js +8 -4
  134. package/build/tools/logs.js.map +1 -1
  135. package/build/tools/mirroring.d.ts.map +1 -1
  136. package/build/tools/mirroring.js +21 -19
  137. package/build/tools/mirroring.js.map +1 -1
  138. package/build/tools/multi-device.d.ts.map +1 -1
  139. package/build/tools/multi-device.js +10 -0
  140. package/build/tools/multi-device.js.map +1 -1
  141. package/build/tools/network-capture.d.ts.map +1 -1
  142. package/build/tools/network-capture.js +32 -8
  143. package/build/tools/network-capture.js.map +1 -1
  144. package/build/tools/network-discovery.d.ts.map +1 -1
  145. package/build/tools/network-discovery.js +11 -2
  146. package/build/tools/network-discovery.js.map +1 -1
  147. package/build/tools/ota-monitor.d.ts.map +1 -1
  148. package/build/tools/ota-monitor.js +26 -12
  149. package/build/tools/ota-monitor.js.map +1 -1
  150. package/build/tools/packages.d.ts.map +1 -1
  151. package/build/tools/packages.js +18 -11
  152. package/build/tools/packages.js.map +1 -1
  153. package/build/tools/plugins.d.ts +18 -0
  154. package/build/tools/plugins.d.ts.map +1 -1
  155. package/build/tools/plugins.js +47 -2
  156. package/build/tools/plugins.js.map +1 -1
  157. package/build/tools/prompts.d.ts.map +1 -1
  158. package/build/tools/prompts.js +2 -0
  159. package/build/tools/prompts.js.map +1 -1
  160. package/build/tools/qemu.d.ts +18 -0
  161. package/build/tools/qemu.d.ts.map +1 -1
  162. package/build/tools/qemu.js +42 -18
  163. package/build/tools/qemu.js.map +1 -1
  164. package/build/tools/registry.d.ts.map +1 -1
  165. package/build/tools/registry.js +76 -26
  166. package/build/tools/registry.js.map +1 -1
  167. package/build/tools/regression.d.ts +37 -0
  168. package/build/tools/regression.d.ts.map +1 -1
  169. package/build/tools/regression.js +63 -22
  170. package/build/tools/regression.js.map +1 -1
  171. package/build/tools/resources.d.ts.map +1 -1
  172. package/build/tools/resources.js +62 -15
  173. package/build/tools/resources.js.map +1 -1
  174. package/build/tools/result-handles.d.ts +37 -0
  175. package/build/tools/result-handles.d.ts.map +1 -0
  176. package/build/tools/result-handles.js +286 -0
  177. package/build/tools/result-handles.js.map +1 -0
  178. package/build/tools/ril-intercept.d.ts.map +1 -1
  179. package/build/tools/ril-intercept.js +15 -18
  180. package/build/tools/ril-intercept.js.map +1 -1
  181. package/build/tools/screen-record.d.ts.map +1 -1
  182. package/build/tools/screen-record.js +34 -5
  183. package/build/tools/screen-record.js.map +1 -1
  184. package/build/tools/screenshot-diff.d.ts.map +1 -1
  185. package/build/tools/screenshot-diff.js +29 -21
  186. package/build/tools/screenshot-diff.js.map +1 -1
  187. package/build/tools/selinux-audit.d.ts.map +1 -1
  188. package/build/tools/selinux-audit.js +7 -5
  189. package/build/tools/selinux-audit.js.map +1 -1
  190. package/build/tools/sensors.d.ts +18 -0
  191. package/build/tools/sensors.d.ts.map +1 -0
  192. package/build/tools/sensors.js +555 -0
  193. package/build/tools/sensors.js.map +1 -0
  194. package/build/tools/shell.d.ts.map +1 -1
  195. package/build/tools/shell.js +9 -0
  196. package/build/tools/shell.js.map +1 -1
  197. package/build/tools/snapshot.d.ts.map +1 -1
  198. package/build/tools/snapshot.js +38 -19
  199. package/build/tools/snapshot.js.map +1 -1
  200. package/build/tools/split-apk.d.ts.map +1 -1
  201. package/build/tools/split-apk.js +48 -24
  202. package/build/tools/split-apk.js.map +1 -1
  203. package/build/tools/test-gen.d.ts.map +1 -1
  204. package/build/tools/test-gen.js +29 -10
  205. package/build/tools/test-gen.js.map +1 -1
  206. package/build/tools/testing.d.ts.map +1 -1
  207. package/build/tools/testing.js +27 -9
  208. package/build/tools/testing.js.map +1 -1
  209. package/build/tools/thermal-power.d.ts +8 -1
  210. package/build/tools/thermal-power.d.ts.map +1 -1
  211. package/build/tools/thermal-power.js +35 -10
  212. package/build/tools/thermal-power.js.map +1 -1
  213. package/build/tools/ui.d.ts.map +1 -1
  214. package/build/tools/ui.js +20 -13
  215. package/build/tools/ui.js.map +1 -1
  216. package/build/tools/wireless-firmware.d.ts.map +1 -1
  217. package/build/tools/wireless-firmware.js +21 -7
  218. package/build/tools/wireless-firmware.js.map +1 -1
  219. package/build/tools/wireless.d.ts.map +1 -1
  220. package/build/tools/wireless.js +39 -3
  221. package/build/tools/wireless.js.map +1 -1
  222. package/build/tools/workflow-market.d.ts.map +1 -1
  223. package/build/tools/workflow-market.js +67 -13
  224. package/build/tools/workflow-market.js.map +1 -1
  225. package/build/tools/workflow.d.ts.map +1 -1
  226. package/build/tools/workflow.js +77 -8
  227. package/build/tools/workflow.js.map +1 -1
  228. package/build/ws-transport.d.ts.map +1 -1
  229. package/build/ws-transport.js +21 -3
  230. package/build/ws-transport.js.map +1 -1
  231. package/package.json +20 -8
@@ -1 +1 @@
1
- {"version":3,"file":"png-utils.js","sourceRoot":"","sources":["../../src/middleware/png-utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"png-utils.js","sourceRoot":"","sources":["../../src/middleware/png-utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,76 @@
1
+ /**
2
+ * Result Handle Storage — Tempdir-backed cache for tool result content blocks.
3
+ *
4
+ * Closes the "compaction gap" for expensive one-shot tools. When a tool opts
5
+ * in by accepting a `result_handle` parameter, its content can be stashed
6
+ * under a `result://<tool>/<name>` URI for retrieval via MCP Resources.
7
+ * Survives server restart; eviction by TTL + LRU within a total-size cap.
8
+ *
9
+ * Scope (v1.1.2): text content blocks only. Image/binary content is not
10
+ * supported because no current DeepADB tool emits image blocks in its MCP
11
+ * response (screenshots are saved as files on disk; the response is text
12
+ * with the path).
13
+ *
14
+ * Storage layout:
15
+ * ${DA_RESULT_HANDLE_DIR}/
16
+ * <tokenHash>/ ← isolates handles across DA_AUTH_TOKEN values
17
+ * <tool>/
18
+ * <name>.content.json ← JSON-serialized content blocks
19
+ * <name>.meta.json ← creation/expiry/access/size metadata
20
+ *
21
+ * Token-hash isolation: handles are scoped by the SHA-256 of the configured
22
+ * DA_AUTH_TOKEN (truncated to 16 hex chars). For stdio mode (no token), uses
23
+ * the literal "_local". This means token rotation invalidates old handles
24
+ * naturally (the old hash is no longer in use) and multiple DeepADB instances
25
+ * on the same machine with different tokens have separate stores.
26
+ */
27
+ /** Default 12 hours. Env var is in seconds; bounded to [60s, 7 days]. */
28
+ export declare const DEFAULT_TTL_SECONDS: number;
29
+ export interface HandleMeta {
30
+ name: string;
31
+ tool: string;
32
+ createdAt: number;
33
+ expiresAt: number;
34
+ lastAccessedAt: number;
35
+ size: number;
36
+ tokenHash: string;
37
+ }
38
+ export interface StoreResult {
39
+ ok: boolean;
40
+ uri?: string;
41
+ reason?: string;
42
+ evicted?: string[];
43
+ }
44
+ export interface ContentBlock {
45
+ type: string;
46
+ text?: string;
47
+ }
48
+ /** Store a tool result's content blocks under result://<tool>/<name>.
49
+ * Validates name + size, runs eviction, and persists atomically.
50
+ * Caller is responsible for ensuring `content` is the unmodified MCP
51
+ * result.content array (so retrieval can return it as-is). */
52
+ export declare function storeResult(tool: string, name: string, content: ContentBlock[], ttlSecondsOverride?: number): StoreResult;
53
+ /** Retrieve a stored handle's content blocks. Updates lastAccessedAt on hit.
54
+ * Returns null if the handle is missing, expired, or corrupt. */
55
+ export declare function getResult(tool: string, name: string): {
56
+ content: ContentBlock[];
57
+ meta: HandleMeta;
58
+ } | null;
59
+ /** Return metadata for all current handles (across all tools, current token). */
60
+ export declare function listHandles(): HandleMeta[];
61
+ /** Delete a specific handle. Returns true if it existed. */
62
+ export declare function dropHandle(tool: string, name: string): boolean;
63
+ /** Delete all handles for the current token. Returns count dropped. */
64
+ export declare function dropAllHandles(): number;
65
+ /** Startup sweep — called once from index.ts on server boot. Walks the store,
66
+ * enforces TTL and size caps against any existing handles from prior sessions,
67
+ * and reports a summary line to stderr. */
68
+ export declare function startupSweep(): {
69
+ evicted: number;
70
+ kept: number;
71
+ };
72
+ /** Exposed for the discoverability tools layer — current token's namespace. */
73
+ export declare function getTokenHash(): string;
74
+ /** Exposed for the discoverability tools layer — resolved store root. */
75
+ export declare function getStoreRoot(): string;
76
+ //# sourceMappingURL=result-handle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"result-handle.d.ts","sourceRoot":"","sources":["../../src/middleware/result-handle.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAkBH,yEAAyE;AACzE,eAAO,MAAM,mBAAmB,QAA+D,CAAC;AAoChG,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,OAAO,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CAEf;AAoJD;;;+DAG+D;AAC/D,wBAAgB,WAAW,CACzB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,YAAY,EAAE,EACvB,kBAAkB,CAAC,EAAE,MAAM,GAC1B,WAAW,CAsEb;AAED;kEACkE;AAClE,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,YAAY,EAAE,CAAC;IAAC,IAAI,EAAE,UAAU,CAAA;CAAE,GAAG,IAAI,CAmD1G;AAED,iFAAiF;AACjF,wBAAgB,WAAW,IAAI,UAAU,EAAE,CAE1C;AAED,4DAA4D;AAC5D,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAI9D;AAED,uEAAuE;AACvE,wBAAgB,cAAc,IAAI,MAAM,CAkBvC;AAED;;4CAE4C;AAC5C,wBAAgB,YAAY,IAAI;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAKhE;AAED,+EAA+E;AAC/E,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED,yEAAyE;AACzE,wBAAgB,YAAY,IAAI,MAAM,CAErC"}
@@ -0,0 +1,378 @@
1
+ // Copyright 2026 Jason <fullread@github>
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ /**
4
+ * Result Handle Storage — Tempdir-backed cache for tool result content blocks.
5
+ *
6
+ * Closes the "compaction gap" for expensive one-shot tools. When a tool opts
7
+ * in by accepting a `result_handle` parameter, its content can be stashed
8
+ * under a `result://<tool>/<name>` URI for retrieval via MCP Resources.
9
+ * Survives server restart; eviction by TTL + LRU within a total-size cap.
10
+ *
11
+ * Scope (v1.1.2): text content blocks only. Image/binary content is not
12
+ * supported because no current DeepADB tool emits image blocks in its MCP
13
+ * response (screenshots are saved as files on disk; the response is text
14
+ * with the path).
15
+ *
16
+ * Storage layout:
17
+ * ${DA_RESULT_HANDLE_DIR}/
18
+ * <tokenHash>/ ← isolates handles across DA_AUTH_TOKEN values
19
+ * <tool>/
20
+ * <name>.content.json ← JSON-serialized content blocks
21
+ * <name>.meta.json ← creation/expiry/access/size metadata
22
+ *
23
+ * Token-hash isolation: handles are scoped by the SHA-256 of the configured
24
+ * DA_AUTH_TOKEN (truncated to 16 hex chars). For stdio mode (no token), uses
25
+ * the literal "_local". This means token rotation invalidates old handles
26
+ * naturally (the old hash is no longer in use) and multiple DeepADB instances
27
+ * on the same machine with different tokens have separate stores.
28
+ */
29
+ import { createHash } from "crypto";
30
+ import { existsSync, readdirSync, readFileSync, unlinkSync, rmSync, statSync, } from "fs";
31
+ import { join } from "path";
32
+ import { config } from "../config/config.js";
33
+ import { ensurePrivateDir, writeAtomicSync } from "./fs-utils.js";
34
+ import { parseIntSafe } from "./parse-utils.js";
35
+ // ── Config (env-tunable with reasonable defaults) ────────────────────────
36
+ /** Default 12 hours. Env var is in seconds; bounded to [60s, 7 days]. */
37
+ export const DEFAULT_TTL_SECONDS = parseIntSafe(process.env.DA_RESULT_HANDLE_TTL, 12 * 60 * 60);
38
+ const MIN_TTL_SECONDS = 60;
39
+ const MAX_TTL_SECONDS = 7 * 24 * 60 * 60;
40
+ /** Per-handle and total-store size caps. Both env-tunable. */
41
+ const MAX_HANDLE_BYTES = parseIntSafe(process.env.DA_RESULT_HANDLE_MAX_BYTES, 5 * 1024 * 1024);
42
+ const MAX_TOTAL_BYTES = parseIntSafe(process.env.DA_RESULT_HANDLE_TOTAL_BYTES, 100 * 1024 * 1024);
43
+ const MAX_HANDLE_COUNT = parseIntSafe(process.env.DA_RESULT_HANDLE_MAX_COUNT, 100);
44
+ /** Refuse storing handles smaller than this. Sized so that a substantive
45
+ * multi-stat result (e.g., a screenshot-diff report) is accepted while
46
+ * trivial single-value responses (e.g., "OK", "Level: 78%") are not. */
47
+ const MIN_HANDLE_BYTES = 64;
48
+ /** Skip lastAccessedAt rewrites within this window. Coarse-LRU heuristic:
49
+ * evictions run at minutes-to-hours granularity, so updating timestamps
50
+ * more frequently than once a minute is wasted disk I/O without any
51
+ * observable change in eviction behavior. */
52
+ const LAST_ACCESS_UPDATE_THRESHOLD_MS = 60_000;
53
+ /** Validation regex for both tool names and operator-supplied handle names. */
54
+ const NAME_REGEX = /^[a-zA-Z0-9_-]{1,32}$/;
55
+ /** Truncated SHA-256 of the active auth token, or "_local" for stdio mode. */
56
+ const TOKEN_HASH = (() => {
57
+ const token = process.env.DA_AUTH_TOKEN ?? "";
58
+ if (!token)
59
+ return "_local";
60
+ return createHash("sha256").update(token).digest("hex").substring(0, 16);
61
+ })();
62
+ /** Resolved storage root. Operator-overridable via DA_RESULT_HANDLE_DIR. */
63
+ const STORE_ROOT = process.env.DA_RESULT_HANDLE_DIR ?? join(config.tempDir, "result-handles");
64
+ const TOKEN_DIR = join(STORE_ROOT, TOKEN_HASH);
65
+ // ── Helpers ──────────────────────────────────────────────────────────────
66
+ function validateName(name) {
67
+ return typeof name === "string" && NAME_REGEX.test(name);
68
+ }
69
+ /** Type guard: structurally validate a parsed JSON value as HandleMeta.
70
+ * Catches corruption (NaN timestamps, missing fields, wrong types) that the
71
+ * type system trusts on a generic JSON parse. Defense in depth against
72
+ * another process writing malformed meta files (which is feasible on shared
73
+ * Unix hosts with the world-readable directory mode pre-v1.1.3). */
74
+ function isValidMeta(value) {
75
+ if (value === null || typeof value !== "object")
76
+ return false;
77
+ const v = value;
78
+ return validateName(v.name)
79
+ && validateName(v.tool)
80
+ && typeof v.createdAt === "number" && isFinite(v.createdAt)
81
+ && typeof v.expiresAt === "number" && isFinite(v.expiresAt)
82
+ && typeof v.lastAccessedAt === "number" && isFinite(v.lastAccessedAt)
83
+ && typeof v.size === "number" && isFinite(v.size) && v.size >= 0
84
+ && typeof v.tokenHash === "string";
85
+ }
86
+ function pathsFor(tool, name) {
87
+ // B6 fix: belt-and-suspenders validation. All current callers validate
88
+ // tool/name upstream via validateName, but a future caller that forgets
89
+ // would build a traversal-vulnerable path. Refuse inputs the regex rejects.
90
+ if (!validateName(tool) || !validateName(name)) {
91
+ throw new Error(`pathsFor: invalid tool/name (must match ${NAME_REGEX})`);
92
+ }
93
+ const dir = join(TOKEN_DIR, tool);
94
+ return {
95
+ content: join(dir, `${name}.content.json`),
96
+ meta: join(dir, `${name}.meta.json`),
97
+ dir,
98
+ };
99
+ }
100
+ /** Try to read JSON. Returns null on any failure (missing, corrupt, etc.). */
101
+ function tryReadJson(path) {
102
+ try {
103
+ return JSON.parse(readFileSync(path, "utf-8"));
104
+ }
105
+ catch {
106
+ return null;
107
+ }
108
+ }
109
+ /** Try to delete a file. Silent on failure. Used in eviction paths where
110
+ * partial-cleanup is acceptable — the next scan will pick up stragglers. */
111
+ function tryUnlink(path) {
112
+ try {
113
+ unlinkSync(path);
114
+ }
115
+ catch { /* missing or busy — ignore */ }
116
+ }
117
+ /** Walk the current token's directory and return all valid handles.
118
+ * Skips files that don't have both .content.json and .meta.json (orphans),
119
+ * and skips meta files that fail to parse. */
120
+ function scanStore() {
121
+ const results = [];
122
+ if (!existsSync(TOKEN_DIR))
123
+ return results;
124
+ for (const toolDirName of readdirSync(TOKEN_DIR)) {
125
+ const toolDir = join(TOKEN_DIR, toolDirName);
126
+ let toolStat;
127
+ try {
128
+ toolStat = statSync(toolDir);
129
+ }
130
+ catch {
131
+ continue;
132
+ }
133
+ if (!toolStat.isDirectory())
134
+ continue;
135
+ // B7 fix: tool subdirectory may be deleted between the outer readdir
136
+ // and this inner one (concurrent eviction, manual cleanup, antivirus).
137
+ // Catch and skip rather than abort the whole scan mid-walk.
138
+ let files;
139
+ try {
140
+ files = readdirSync(toolDir);
141
+ }
142
+ catch {
143
+ continue;
144
+ }
145
+ for (const file of files) {
146
+ if (!file.endsWith(".meta.json"))
147
+ continue;
148
+ const baseName = file.substring(0, file.length - ".meta.json".length);
149
+ const metaPath = join(toolDir, file);
150
+ const contentPath = join(toolDir, `${baseName}.content.json`);
151
+ // Orphan check: meta without content
152
+ if (!existsSync(contentPath)) {
153
+ tryUnlink(metaPath);
154
+ continue;
155
+ }
156
+ const rawMeta = tryReadJson(metaPath);
157
+ if (!isValidMeta(rawMeta)) {
158
+ // Corrupt or malformed meta — drop both files
159
+ tryUnlink(metaPath);
160
+ tryUnlink(contentPath);
161
+ continue;
162
+ }
163
+ results.push({ ...rawMeta, contentPath, metaPath });
164
+ }
165
+ }
166
+ return results;
167
+ }
168
+ /** Drop a single handle from disk by path pair. Returns true if either was removed. */
169
+ function dropFiles(contentPath, metaPath) {
170
+ const had = existsSync(contentPath) || existsSync(metaPath);
171
+ tryUnlink(metaPath); // delete meta first so a partial state can't be "found"
172
+ tryUnlink(contentPath);
173
+ return had;
174
+ }
175
+ /** Run TTL + LRU + count eviction. Idempotent; safe to call repeatedly.
176
+ * Returns the list of URIs evicted, in eviction order. */
177
+ function evictIfNeeded(now) {
178
+ const evicted = [];
179
+ let handles = scanStore();
180
+ // Step 1: TTL eviction — drop anything past its expiry.
181
+ for (const h of handles) {
182
+ if (h.expiresAt <= now) {
183
+ if (dropFiles(h.contentPath, h.metaPath)) {
184
+ evicted.push(`result://${h.tool}/${h.name}`);
185
+ }
186
+ }
187
+ }
188
+ handles = handles.filter(h => h.expiresAt > now);
189
+ // Step 2: LRU eviction — while over count or total-bytes cap, drop oldest-accessed.
190
+ handles.sort((a, b) => a.lastAccessedAt - b.lastAccessedAt);
191
+ let totalBytes = handles.reduce((sum, h) => sum + h.size, 0);
192
+ // B11 fix: use >= so a write at exactly MAX_HANDLE_COUNT triggers
193
+ // eviction BEFORE the new entry pushes the store transiently to MAX+1.
194
+ // Same for byte budget.
195
+ while ((handles.length >= MAX_HANDLE_COUNT || totalBytes >= MAX_TOTAL_BYTES) && handles.length > 0) {
196
+ const victim = handles.shift();
197
+ if (dropFiles(victim.contentPath, victim.metaPath)) {
198
+ evicted.push(`result://${victim.tool}/${victim.name}`);
199
+ }
200
+ totalBytes -= victim.size;
201
+ }
202
+ return evicted;
203
+ }
204
+ // ── Public API ───────────────────────────────────────────────────────────
205
+ /** Store a tool result's content blocks under result://<tool>/<name>.
206
+ * Validates name + size, runs eviction, and persists atomically.
207
+ * Caller is responsible for ensuring `content` is the unmodified MCP
208
+ * result.content array (so retrieval can return it as-is). */
209
+ export function storeResult(tool, name, content, ttlSecondsOverride) {
210
+ if (!validateName(tool)) {
211
+ return { ok: false, reason: `Invalid tool name "${tool}". Must match ${NAME_REGEX} (a-z, A-Z, 0-9, _, -; 1-32 chars).` };
212
+ }
213
+ if (!validateName(name)) {
214
+ return { ok: false, reason: `Invalid handle name "${name}". Must match ${NAME_REGEX} (a-z, A-Z, 0-9, _, -; 1-32 chars).` };
215
+ }
216
+ if (!Array.isArray(content) || content.length === 0) {
217
+ return { ok: false, reason: "Content must be a non-empty array of content blocks." };
218
+ }
219
+ const ttlSec = ttlSecondsOverride !== undefined
220
+ ? Math.max(MIN_TTL_SECONDS, Math.min(MAX_TTL_SECONDS, ttlSecondsOverride))
221
+ : DEFAULT_TTL_SECONDS;
222
+ // Serialize and measure
223
+ const serialized = JSON.stringify(content);
224
+ const size = Buffer.byteLength(serialized, "utf-8");
225
+ if (size < MIN_HANDLE_BYTES) {
226
+ return {
227
+ ok: false,
228
+ reason: `Content (${size} bytes) is below the minimum handle size of ${MIN_HANDLE_BYTES} bytes. Small results are cheaper to regenerate than to store; skip the result_handle parameter for this call.`,
229
+ };
230
+ }
231
+ if (size > MAX_HANDLE_BYTES) {
232
+ return {
233
+ ok: false,
234
+ reason: `Content (${size.toLocaleString()} bytes) exceeds per-handle limit of ${MAX_HANDLE_BYTES.toLocaleString()} bytes. Tool should paginate or use a session-based primitive (e.g., adb_logcat_start) instead.`,
235
+ };
236
+ }
237
+ // Ensure storage directory exists
238
+ const paths = pathsFor(tool, name);
239
+ try {
240
+ ensurePrivateDir(paths.dir);
241
+ }
242
+ catch (e) {
243
+ return { ok: false, reason: `Failed to create handle directory: ${e.message}` };
244
+ }
245
+ // Evict before writing so we don't transiently exceed caps. The new handle
246
+ // itself is not yet on disk during this scan, so the cap check is against
247
+ // existing handles only — the +1 / +size margin is implicit headroom.
248
+ const now = Date.now();
249
+ const evicted = evictIfNeeded(now);
250
+ const meta = {
251
+ name,
252
+ tool,
253
+ createdAt: now,
254
+ expiresAt: now + ttlSec * 1000,
255
+ lastAccessedAt: now,
256
+ size,
257
+ tokenHash: TOKEN_HASH,
258
+ };
259
+ try {
260
+ writeAtomicSync(paths.content, serialized);
261
+ writeAtomicSync(paths.meta, JSON.stringify(meta, null, 2));
262
+ }
263
+ catch (e) {
264
+ // Cleanup partial state
265
+ tryUnlink(paths.content);
266
+ tryUnlink(paths.meta);
267
+ return { ok: false, reason: `Failed to write handle: ${e.message}` };
268
+ }
269
+ return {
270
+ ok: true,
271
+ uri: `result://${tool}/${name}`,
272
+ evicted: evicted.length > 0 ? evicted : undefined,
273
+ };
274
+ }
275
+ /** Retrieve a stored handle's content blocks. Updates lastAccessedAt on hit.
276
+ * Returns null if the handle is missing, expired, or corrupt. */
277
+ export function getResult(tool, name) {
278
+ if (!validateName(tool) || !validateName(name))
279
+ return null;
280
+ const paths = pathsFor(tool, name);
281
+ const rawMeta = tryReadJson(paths.meta);
282
+ if (!isValidMeta(rawMeta)) {
283
+ // Either parse failed, file missing, OR meta is structurally invalid.
284
+ // For structural invalidity, the file is corrupted (or was tampered
285
+ // with on a shared host) - drop both files to clean state.
286
+ if (rawMeta !== null)
287
+ dropFiles(paths.content, paths.meta);
288
+ return null;
289
+ }
290
+ const meta = rawMeta;
291
+ const now = Date.now();
292
+ if (meta.expiresAt <= now) {
293
+ // Lazy TTL eviction on access
294
+ dropFiles(paths.content, paths.meta);
295
+ return null;
296
+ }
297
+ const content = tryReadJson(paths.content);
298
+ if (!content) {
299
+ // Content gone or corrupt — clean up the orphaned meta
300
+ dropFiles(paths.content, paths.meta);
301
+ return null;
302
+ }
303
+ // Defensive: enforce size cap on read too. Protects against post-write
304
+ // file tampering or environment changes that lowered the cap.
305
+ const onDiskSize = Buffer.byteLength(JSON.stringify(content), "utf-8");
306
+ if (onDiskSize > MAX_HANDLE_BYTES) {
307
+ dropFiles(paths.content, paths.meta);
308
+ return null;
309
+ }
310
+ // Update lastAccessedAt (for LRU). Failure to update is non-fatal —
311
+ // the handle is still readable; we just lose some LRU precision.
312
+ // F5: skip the rewrite if the previous update was recent. Eviction
313
+ // operates at coarse time-scale, so 60s LRU precision is more than enough
314
+ // and we avoid a disk write on every read.
315
+ if (now - meta.lastAccessedAt <= LAST_ACCESS_UPDATE_THRESHOLD_MS) {
316
+ return { content, meta };
317
+ }
318
+ try {
319
+ const updated = { ...meta, lastAccessedAt: now };
320
+ writeAtomicSync(paths.meta, JSON.stringify(updated, null, 2));
321
+ return { content, meta: updated };
322
+ }
323
+ catch {
324
+ return { content, meta };
325
+ }
326
+ }
327
+ /** Return metadata for all current handles (across all tools, current token). */
328
+ export function listHandles() {
329
+ return scanStore().map(({ contentPath: _c, metaPath: _m, ...meta }) => meta);
330
+ }
331
+ /** Delete a specific handle. Returns true if it existed. */
332
+ export function dropHandle(tool, name) {
333
+ if (!validateName(tool) || !validateName(name))
334
+ return false;
335
+ const paths = pathsFor(tool, name);
336
+ return dropFiles(paths.content, paths.meta);
337
+ }
338
+ /** Delete all handles for the current token. Returns count dropped. */
339
+ export function dropAllHandles() {
340
+ const handles = scanStore();
341
+ let count = 0;
342
+ for (const h of handles) {
343
+ if (dropFiles(h.contentPath, h.metaPath))
344
+ count++;
345
+ }
346
+ // Also remove now-empty tool subdirectories
347
+ if (existsSync(TOKEN_DIR)) {
348
+ for (const toolDirName of readdirSync(TOKEN_DIR)) {
349
+ const toolDir = join(TOKEN_DIR, toolDirName);
350
+ try {
351
+ if (statSync(toolDir).isDirectory() && readdirSync(toolDir).length === 0) {
352
+ rmSync(toolDir, { recursive: false });
353
+ }
354
+ }
355
+ catch { /* ignore */ }
356
+ }
357
+ }
358
+ return count;
359
+ }
360
+ /** Startup sweep — called once from index.ts on server boot. Walks the store,
361
+ * enforces TTL and size caps against any existing handles from prior sessions,
362
+ * and reports a summary line to stderr. */
363
+ export function startupSweep() {
364
+ if (!existsSync(TOKEN_DIR))
365
+ return { evicted: 0, kept: 0 };
366
+ const evictedUris = evictIfNeeded(Date.now());
367
+ const after = scanStore().length;
368
+ return { evicted: evictedUris.length, kept: after };
369
+ }
370
+ /** Exposed for the discoverability tools layer — current token's namespace. */
371
+ export function getTokenHash() {
372
+ return TOKEN_HASH;
373
+ }
374
+ /** Exposed for the discoverability tools layer — resolved store root. */
375
+ export function getStoreRoot() {
376
+ return STORE_ROOT;
377
+ }
378
+ //# sourceMappingURL=result-handle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"result-handle.js","sourceRoot":"","sources":["../../src/middleware/result-handle.ts"],"names":[],"mappings":"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"}
@@ -15,6 +15,15 @@
15
15
  *
16
16
  * Returns null if safe, or an error message string if unsafe.
17
17
  */
18
+ /**
19
+ * D4 note: this function does NOT runtime type-check `value`. A caller
20
+ * mistakenly passing `null` or `undefined` would have it coerced to the
21
+ * string "null" / "undefined" before the regex test, and those literals
22
+ * pass as valid identifiers. All current callers receive Zod-validated
23
+ * strings from the MCP tool layer, so theoretical only — but future
24
+ * non-MCP callers should pre-check or this function will silently accept
25
+ * non-string inputs.
26
+ */
18
27
  export declare function validateShellArg(value: string, paramName: string): string | null;
19
28
  /**
20
29
  * Escape a string for safe use inside single-quoted shell arguments.
@@ -23,6 +32,23 @@ export declare function validateShellArg(value: string, paramName: string): stri
23
32
  * within single quotes.
24
33
  */
25
34
  export declare function shellEscape(str: string): string;
35
+ /**
36
+ * Wrap a string as a single shell argument using POSIX single-quote escaping.
37
+ *
38
+ * Unlike `shellEscape` (which only escapes inner single quotes), this returns
39
+ * a fully-wrapped, ready-to-interpolate token. Use this whenever a value is
40
+ * being substituted into a backtick template literal that becomes a shell
41
+ * command — it's the safe replacement for ALL `${shellEscape(x)}` sites that
42
+ * weren't already wrapped by their caller.
43
+ *
44
+ * Algorithm: close the open quote, escape with backslash, reopen.
45
+ * foo'bar → 'foo'\''bar'
46
+ * plain → 'plain'
47
+ * "" → ''
48
+ *
49
+ * Safe-by-construction inside POSIX `sh -c`. Works with toybox sh on Android.
50
+ */
51
+ export declare function shellQuote(arg: string): string;
26
52
  /**
27
53
  * Validate multiple arguments at once. Returns the first error found, or null if all pass.
28
54
  */
@@ -1 +1 @@
1
- {"version":3,"file":"sanitize.d.ts","sourceRoot":"","sources":["../../src/middleware/sanitize.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAKhF;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM,GAAG,IAAI,CAM9E"}
1
+ {"version":3,"file":"sanitize.d.ts","sourceRoot":"","sources":["../../src/middleware/sanitize.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AAgBH;;;;;;;;;GASG;AACH;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAKhF;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM,GAAG,IAAI,CAM9E"}