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.
Files changed (230) hide show
  1. package/LICENSE +202 -21
  2. package/NOTICE +16 -0
  3. package/README.md +55 -29
  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 +34 -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 +31 -6
  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 +17 -9
  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 +1 -1
  114. package/build/tools/files.d.ts.map +1 -1
  115. package/build/tools/files.js +98 -56
  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 +248 -6
  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 +6 -3
  161. package/build/tools/qemu.d.ts.map +1 -1
  162. package/build/tools/qemu.js +28 -16
  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.map +1 -1
  191. package/build/tools/sensors.js +26 -4
  192. package/build/tools/sensors.js.map +1 -1
  193. package/build/tools/shell.d.ts.map +1 -1
  194. package/build/tools/shell.js +9 -0
  195. package/build/tools/shell.js.map +1 -1
  196. package/build/tools/snapshot.d.ts.map +1 -1
  197. package/build/tools/snapshot.js +38 -19
  198. package/build/tools/snapshot.js.map +1 -1
  199. package/build/tools/split-apk.d.ts.map +1 -1
  200. package/build/tools/split-apk.js +48 -24
  201. package/build/tools/split-apk.js.map +1 -1
  202. package/build/tools/test-gen.d.ts.map +1 -1
  203. package/build/tools/test-gen.js +29 -10
  204. package/build/tools/test-gen.js.map +1 -1
  205. package/build/tools/testing.d.ts.map +1 -1
  206. package/build/tools/testing.js +27 -9
  207. package/build/tools/testing.js.map +1 -1
  208. package/build/tools/thermal-power.d.ts +8 -1
  209. package/build/tools/thermal-power.d.ts.map +1 -1
  210. package/build/tools/thermal-power.js +35 -10
  211. package/build/tools/thermal-power.js.map +1 -1
  212. package/build/tools/ui.d.ts.map +1 -1
  213. package/build/tools/ui.js +20 -13
  214. package/build/tools/ui.js.map +1 -1
  215. package/build/tools/wireless-firmware.d.ts.map +1 -1
  216. package/build/tools/wireless-firmware.js +21 -7
  217. package/build/tools/wireless-firmware.js.map +1 -1
  218. package/build/tools/wireless.d.ts.map +1 -1
  219. package/build/tools/wireless.js +39 -3
  220. package/build/tools/wireless.js.map +1 -1
  221. package/build/tools/workflow-market.d.ts.map +1 -1
  222. package/build/tools/workflow-market.js +67 -13
  223. package/build/tools/workflow-market.js.map +1 -1
  224. package/build/tools/workflow.d.ts.map +1 -1
  225. package/build/tools/workflow.js +77 -8
  226. package/build/tools/workflow.js.map +1 -1
  227. package/build/ws-transport.d.ts.map +1 -1
  228. package/build/ws-transport.js +21 -3
  229. package/build/ws-transport.js.map +1 -1
  230. 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":"AAAA,yCAAyC;AACzC,sCAAsC;AACtC;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,IAAI,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,yBAAyB,EAAE,+BAA+B,EAAE,WAAW,EAAE,iBAAiB,EAAC,MAAM,2BAA2B,CAAC;AAEzK,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAczE,SAAS,cAAc,CAAC,OAAe;IACrC,OAAO,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;AACrC,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,aAAa,CAAC,MAAc;IAC1C,4CAA4C;IAC5C,IAAI,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;IACnD,IAAI,KAAK;QAAE,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACzC,wCAAwC;IACxC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACzC,OAAO,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC/C,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAAC,MAAc,EAAE,GAAW;IACzD,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;IAC9D,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,oBAAoB,UAAU,EAAE,CAAC,CAAC,CAAC;IACzE,OAAO,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7C,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAAC,MAAc;IAC5C,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;IAClE,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;IACzD,OAAO;QACL,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI;QACtD,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI;KACvD,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,MAAc;IACvC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAC7C,OAAO,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,GAAgB;IAEtD,GAAG,CAAC,MAAM,CAAC,IAAI,CACb,yBAAyB,EACzB,sLAAsL,EACtL;QACE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;QAC3D,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,6DAA6D,CAAC;QACxH,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;KACxD,EACD,KAAK,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE;QACvC,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;YAChF,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAC/D,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;YAE/B,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa,CAAC,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC;gBAC/F,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,UAAU,CAAC,WAAW,CAAC,eAAe,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;gBACrI,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,UAAU,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;gBAClI,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,UAAU,CAAC,WAAW,CAAC,wCAAwC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;gBAC9J,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;gBAC5F,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;aACvF,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9E,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9E,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9E,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YACvF,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YAC/F,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;YAEvC,MAAM,QAAQ,GAAiB;gBAC7B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,MAAM,EAAE,MAAM;gBACd,WAAW;gBACX,KAAK;gBACL,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC;gBAC/B,UAAU,EAAE,eAAe,CAAC,MAAM,EAAE,WAAW,CAAC;gBAChD,WAAW,EAAE,MAAM,CAAC,KAAK;gBACzB,WAAW,EAAE,MAAM,CAAC,KAAK;gBACzB,YAAY,EAAE,iBAAiB,CAAC,OAAO,CAAC;gBACxC,WAAW,EAAE,MAAM,IAAI,IAAI;aAC5B,CAAC;YAEF,MAAM,GAAG,GAAG,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC/C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC;YAC5C,MAAM,SAAS,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAC;YACnD,MAAM,OAAO,GAAG,+BAA+B,CAAC,WAAW,CAAC,CAAC;YAC7D,MAAM,QAAQ,GAAG,GAAG,OAAO,IAAI,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC;YAC9D,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;YACrC,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAE7D,MAAM,OAAO,GAAa,CAAC,sBAAsB,KAAK,EAAE,CAAC,CAAC;YAC1D,OAAO,CAAC,IAAI,CAAC,YAAY,WAAW,EAAE,CAAC,CAAC;YACxC,OAAO,CAAC,IAAI,CAAC,WAAW,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC;YAC7G,OAAO,CAAC,IAAI,CAAC,QAAQ,QAAQ,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC;YACjG,OAAO,CAAC,IAAI,CAAC,WAAW,QAAQ,CAAC,WAAW,IAAI,GAAG,WAAW,QAAQ,CAAC,WAAW,IAAI,GAAG,QAAQ,CAAC,CAAC;YACnG,OAAO,CAAC,IAAI,CAAC,YAAY,QAAQ,CAAC,YAAY,IAAI,GAAG,GAAG,CAAC,CAAC;YAC1D,OAAO,CAAC,IAAI,CAAC,YAAY,QAAQ,CAAC,WAAW,IAAI,SAAS,EAAE,CAAC,CAAC;YAC9D,OAAO,CAAC,IAAI,CAAC,UAAU,QAAQ,EAAE,CAAC,CAAC;YAEnC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;QACnE,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,sBAAsB,EACtB,qLAAqL,EACrL;QACE,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;QACzE,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,8DAA8D,CAAC;QAC5I,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,2DAA2D,CAAC;QACtI,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,iEAAiE,CAAC;QAC7I,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;KACxD,EACD,KAAK,EAAE,EAAE,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,EAAE,EAAE,EAAE;QAC/E,IAAI,CAAC;YACH,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;gBACnD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,oDAAoD,GAAG,CAAC,MAAM,CAAC,OAAO,WAAW,YAAY,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAC/J,CAAC;YACD,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC9B,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,uBAAuB,YAAY,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YACrG,CAAC;YACD,MAAM,QAAQ,GAAiB,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC;YAC/E,MAAM,MAAM,GAAG,gBAAgB,CAAC,QAAQ,CAAC,WAAW,EAAE,6BAA6B,CAAC,CAAC;YACrF,IAAI,MAAM;gBAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAChF,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAC/D,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;YAC/B,MAAM,GAAG,GAAG,QAAQ,CAAC,WAAW,CAAC;YAEjC,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC;gBACjE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,UAAU,CAAC,GAAG,CAAC,eAAe,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;gBAC7H,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;gBAC1H,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,UAAU,CAAC,GAAG,CAAC,wCAAwC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;aACvJ,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9E,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9E,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9E,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;YACzC,MAAM,UAAU,GAAG,eAAe,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YAChD,MAAM,aAAa,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;YAE9C,MAAM,WAAW,GAAa,EAAE,CAAC;YACjC,MAAM,WAAW,GAAa,EAAE,CAAC;YAEjC,WAAW,CAAC,IAAI,CAAC,sBAAsB,QAAQ,CAAC,KAAK,KAAK,QAAQ,CAAC,SAAS,GAAG,CAAC,CAAC;YACjF,WAAW,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;YAEtC,oBAAoB;YACpB,IAAI,QAAQ,CAAC,QAAQ,IAAI,UAAU,EAAE,CAAC;gBACpC,MAAM,GAAG,GAAG,CAAC,CAAC,UAAU,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC;gBACzE,MAAM,IAAI,GAAG,GAAG,GAAG,eAAe,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC;gBACvF,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;gBACjK,IAAI,GAAG,GAAG,eAAe;oBAAE,WAAW,CAAC,IAAI,CAAC,oBAAoB,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,iBAAiB,eAAe,IAAI,CAAC,CAAC;YACtH,CAAC;iBAAM,CAAC;gBACN,WAAW,CAAC,IAAI,CAAC,oBAAoB,QAAQ,CAAC,QAAQ,IAAI,GAAG,YAAY,UAAU,IAAI,GAAG,2BAA2B,CAAC,CAAC;YACzH,CAAC;YAED,iBAAiB;YACjB,IAAI,QAAQ,CAAC,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;gBACxD,MAAM,GAAG,GAAG,QAAQ,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC,GAAG,QAAQ,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC3G,MAAM,IAAI,GAAG,GAAG,GAAG,YAAY,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC;gBAC1D,WAAW,CAAC,IAAI,CAAC,QAAQ,QAAQ,CAAC,UAAU,OAAO,UAAU,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;gBACpH,IAAI,GAAG,GAAG,YAAY;oBAAE,WAAW,CAAC,IAAI,CAAC,iBAAiB,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,iBAAiB,YAAY,IAAI,CAAC,CAAC;YAC7G,CAAC;YAED,kBAAkB;YAClB,IAAI,QAAQ,CAAC,WAAW,IAAI,QAAQ,CAAC,WAAW,KAAK,IAAI,IAAI,aAAa,CAAC,KAAK,IAAI,aAAa,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;gBACjH,MAAM,YAAY,GAAG,QAAQ,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBACxG,MAAM,YAAY,GAAG,aAAa,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBACrG,MAAM,IAAI,GAAG,YAAY,GAAG,YAAY,CAAC;gBACzC,MAAM,IAAI,GAAG,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC;gBAC5D,WAAW,CAAC,IAAI,CAAC,cAAc,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;gBAC9I,IAAI,IAAI,GAAG,aAAa;oBAAE,WAAW,CAAC,IAAI,CAAC,uBAAuB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,kCAAkC,aAAa,IAAI,CAAC,CAAC;YACxI,CAAC;YAED,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3B,WAAW,CAAC,IAAI,CAAC,SAAS,WAAW,CAAC,MAAM,6BAA6B,CAAC,CAAC;gBAC3E,KAAK,MAAM,CAAC,IAAI,WAAW;oBAAE,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAC5D,CAAC;iBAAM,CAAC;gBACN,WAAW,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;YACxD,CAAC;YAED,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;QACvE,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,wBAAwB,EACxB,mGAAmG,EACnG;QACE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;KACtE,EACD,KAAK,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE;QACxB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC/C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACrB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,2EAA2E,EAAE,CAAC,EAAE,CAAC;YAC5H,CAAC;YAED,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACzE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,gCAAgC,EAAE,CAAC,EAAE,CAAC;YACjF,CAAC;YAED,gEAAgE;YAChE,kEAAkE;YAClE,MAAM,SAAS,GAAmB,EAAE,CAAC;YACrC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,IAAI,GAAG,iBAAiB,CAAe,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,oBAAoB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;gBAChG,IAAI,IAAI,IAAI,CAAC,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,KAAK,WAAW,CAAC,EAAE,CAAC;oBAC/D,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACvB,CAAC;YACH,CAAC;YAED,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC3B,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,0BAA0B,WAAW,GAAG,CAAC,CAAC,CAAC,qBAAqB,EAAE,CAAC,EAAE,CAAC;YAC/H,CAAC;YAED,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBAChC,MAAM,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;gBACrE,MAAM,GAAG,GAAG,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;gBAC7D,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,WAAW,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;gBACxH,OAAO,GAAG,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,KAAK,UAAU,GAAG,QAAQ,GAAG,SAAS,IAAI,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;YAChH,CAAC,CAAC,CAAC;YAEH,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,GAAG,SAAS,CAAC,MAAM,oBAAoB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;qBAChE,CAAC;aACH,CAAC;QACJ,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 +1 @@
1
- {"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../../src/tools/resources.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGjD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CAqFxD"}
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"}
@@ -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 props = await ctx.deviceManager.getDeviceProps(resolved.serial);
16
- const info = [
17
- `Model: ${props["ro.product.model"] ?? "unknown"}`,
18
- `Manufacturer: ${props["ro.product.manufacturer"] ?? "unknown"}`,
19
- `Android: ${props["ro.build.version.release"] ?? "unknown"} (SDK ${props["ro.build.version.sdk"] ?? "?"})`,
20
- `Build: ${props["ro.build.display.id"] ?? "unknown"}`,
21
- `Security Patch: ${props["ro.build.version.security_patch"] ?? "unknown"}`,
22
- `ABI: ${props["ro.product.cpu.abi"] ?? "unknown"}`,
23
- `Serial: ${resolved.serial}`,
24
- ].join("\n");
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 result = await ctx.bridge.shell("dumpsys battery", { device: resolved.serial });
36
- const parsed = OutputProcessor.parseBattery(result.stdout);
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 result = await ctx.bridge.shell("dumpsys telephony.registry", {
48
- device: resolved.serial, timeout: 15000,
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: OutputProcessor.process(result.stdout, 20000) }] };
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":"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"}
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":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAIH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAyEjD,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CA2OhE"}
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
- for (const [, session] of sessions) {
66
- try {
67
- session.process.kill();
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
- for (const [, s] of sessions) {
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
- try {
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}`);