visionclaw 0.1.193-beta.5 → 0.1.193-dev.feat-backup-progress-reporting.1

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 (319) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/dist/agent/api-proxy.d.ts.map +1 -1
  3. package/dist/agent/api-proxy.js +185 -25
  4. package/dist/agent/api-proxy.js.map +1 -1
  5. package/dist/agent/backup.d.ts.map +1 -1
  6. package/dist/agent/backup.js +91 -2
  7. package/dist/agent/backup.js.map +1 -1
  8. package/dist/agent/command-handlers.d.ts +2 -0
  9. package/dist/agent/command-handlers.d.ts.map +1 -1
  10. package/dist/agent/command-handlers.js +26 -1
  11. package/dist/agent/command-handlers.js.map +1 -1
  12. package/dist/agent/context.d.ts +2 -0
  13. package/dist/agent/context.d.ts.map +1 -1
  14. package/dist/agent/context.js +11 -1
  15. package/dist/agent/context.js.map +1 -1
  16. package/dist/agent/data-collector.d.ts.map +1 -1
  17. package/dist/agent/data-collector.js +62 -4
  18. package/dist/agent/data-collector.js.map +1 -1
  19. package/dist/agent/loop.d.ts +3 -0
  20. package/dist/agent/loop.d.ts.map +1 -1
  21. package/dist/agent/loop.js +48 -0
  22. package/dist/agent/loop.js.map +1 -1
  23. package/dist/agent/status.d.ts.map +1 -1
  24. package/dist/agent/status.js +1 -0
  25. package/dist/agent/status.js.map +1 -1
  26. package/dist/agent/transcript-summarizer.d.ts.map +1 -1
  27. package/dist/agent/transcript-summarizer.js +3 -2
  28. package/dist/agent/transcript-summarizer.js.map +1 -1
  29. package/dist/calendar/google-calendar.d.ts +2 -0
  30. package/dist/calendar/google-calendar.d.ts.map +1 -1
  31. package/dist/calendar/google-calendar.js +3 -0
  32. package/dist/calendar/google-calendar.js.map +1 -1
  33. package/dist/channels/interface.d.ts +9 -0
  34. package/dist/channels/interface.d.ts.map +1 -1
  35. package/dist/channels/manager.d.ts.map +1 -1
  36. package/dist/channels/manager.js +3 -0
  37. package/dist/channels/manager.js.map +1 -1
  38. package/dist/channels/telegram.d.ts.map +1 -1
  39. package/dist/channels/telegram.js +5 -0
  40. package/dist/channels/telegram.js.map +1 -1
  41. package/dist/drive/google-drive.d.ts +1 -0
  42. package/dist/drive/google-drive.d.ts.map +1 -1
  43. package/dist/drive/google-drive.js +5 -0
  44. package/dist/drive/google-drive.js.map +1 -1
  45. package/dist/i18n/messages.d.ts +4 -0
  46. package/dist/i18n/messages.d.ts.map +1 -1
  47. package/dist/i18n/messages.js +5 -0
  48. package/dist/i18n/messages.js.map +1 -1
  49. package/dist/index.js.map +1 -1
  50. package/dist/obs/server.d.ts +7 -0
  51. package/dist/obs/server.d.ts.map +1 -1
  52. package/dist/obs/server.js +30 -0
  53. package/dist/obs/server.js.map +1 -1
  54. package/dist/onboarding/bot-profile.d.ts.map +1 -1
  55. package/dist/onboarding/bot-profile.js +1 -0
  56. package/dist/onboarding/bot-profile.js.map +1 -1
  57. package/dist/onboarding/index.d.ts.map +1 -1
  58. package/dist/onboarding/index.js +20 -6
  59. package/dist/onboarding/index.js.map +1 -1
  60. package/dist/onboarding/prepare-mac.d.ts +1 -0
  61. package/dist/onboarding/prepare-mac.d.ts.map +1 -1
  62. package/dist/onboarding/prepare-mac.js +32 -15
  63. package/dist/onboarding/prepare-mac.js.map +1 -1
  64. package/dist/onboarding/provisioning-spec.d.ts +1 -0
  65. package/dist/onboarding/provisioning-spec.d.ts.map +1 -1
  66. package/dist/onboarding/provisioning-spec.js +1 -0
  67. package/dist/onboarding/provisioning-spec.js.map +1 -1
  68. package/dist/onboarding/setup-steps.d.ts.map +1 -1
  69. package/dist/onboarding/setup-steps.js +14 -7
  70. package/dist/onboarding/setup-steps.js.map +1 -1
  71. package/dist/realtime/assets/index.html +1073 -0
  72. package/dist/realtime/assets/samples/alloy.mp3 +0 -0
  73. package/dist/realtime/assets/samples/ash.mp3 +0 -0
  74. package/dist/realtime/assets/samples/ballad.mp3 +0 -0
  75. package/dist/realtime/assets/samples/cedar.mp3 +0 -0
  76. package/dist/realtime/assets/samples/coral.mp3 +0 -0
  77. package/dist/realtime/assets/samples/echo.mp3 +0 -0
  78. package/dist/realtime/assets/samples/marin.mp3 +0 -0
  79. package/dist/realtime/assets/samples/sage.mp3 +0 -0
  80. package/dist/realtime/assets/samples/shimmer.mp3 +0 -0
  81. package/dist/realtime/assets/samples/verse.mp3 +0 -0
  82. package/dist/realtime/context.d.ts +14 -0
  83. package/dist/realtime/context.d.ts.map +1 -0
  84. package/dist/realtime/context.js +114 -0
  85. package/dist/realtime/context.js.map +1 -0
  86. package/dist/realtime/http-helpers.d.ts +5 -0
  87. package/dist/realtime/http-helpers.d.ts.map +1 -0
  88. package/dist/realtime/http-helpers.js +29 -0
  89. package/dist/realtime/http-helpers.js.map +1 -0
  90. package/dist/realtime/index.d.ts +55 -0
  91. package/dist/realtime/index.d.ts.map +1 -0
  92. package/dist/realtime/index.js +93 -0
  93. package/dist/realtime/index.js.map +1 -0
  94. package/dist/realtime/server.d.ts +6 -0
  95. package/dist/realtime/server.d.ts.map +1 -0
  96. package/dist/realtime/server.js +526 -0
  97. package/dist/realtime/server.js.map +1 -0
  98. package/dist/realtime/telegram-auth.d.ts +2 -0
  99. package/dist/realtime/telegram-auth.d.ts.map +1 -0
  100. package/dist/realtime/telegram-auth.js +24 -0
  101. package/dist/realtime/telegram-auth.js.map +1 -0
  102. package/dist/realtime/tools.d.ts +344 -0
  103. package/dist/realtime/tools.d.ts.map +1 -0
  104. package/dist/realtime/tools.js +318 -0
  105. package/dist/realtime/tools.js.map +1 -0
  106. package/dist/realtime/types.d.ts +50 -0
  107. package/dist/realtime/types.d.ts.map +1 -0
  108. package/dist/realtime/types.js +3 -0
  109. package/dist/realtime/types.js.map +1 -0
  110. package/dist/realtime/voice-summarizer.d.ts +4 -0
  111. package/dist/realtime/voice-summarizer.d.ts.map +1 -0
  112. package/dist/realtime/voice-summarizer.js +129 -0
  113. package/dist/realtime/voice-summarizer.js.map +1 -0
  114. package/dist/realtime/websocket.d.ts +7 -0
  115. package/dist/realtime/websocket.d.ts.map +1 -0
  116. package/dist/realtime/websocket.js +65 -0
  117. package/dist/realtime/websocket.js.map +1 -0
  118. package/dist/tools/email.d.ts +1 -1
  119. package/dist-agent/bundle.cjs +5403 -3646
  120. package/package.json +2 -2
  121. package/dist/agent/applied-credential-signature.d.ts +0 -53
  122. package/dist/agent/applied-credential-signature.d.ts.map +0 -1
  123. package/dist/agent/applied-credential-signature.js +0 -137
  124. package/dist/agent/applied-credential-signature.js.map +0 -1
  125. package/dist/agent/engines/claude/cli-resolver.d.ts +0 -16
  126. package/dist/agent/engines/claude/cli-resolver.d.ts.map +0 -1
  127. package/dist/agent/engines/claude/cli-resolver.js +0 -83
  128. package/dist/agent/engines/claude/cli-resolver.js.map +0 -1
  129. package/dist/agent/engines/claude/session-browser-policy.d.ts +0 -9
  130. package/dist/agent/engines/claude/session-browser-policy.d.ts.map +0 -1
  131. package/dist/agent/engines/claude/session-browser-policy.js +0 -49
  132. package/dist/agent/engines/claude/session-browser-policy.js.map +0 -1
  133. package/dist/agent/engines/claude/session.d.ts +0 -291
  134. package/dist/agent/engines/claude/session.d.ts.map +0 -1
  135. package/dist/agent/engines/claude/session.js +0 -1177
  136. package/dist/agent/engines/claude/session.js.map +0 -1
  137. package/dist/agent/engines/client-factory.d.ts +0 -63
  138. package/dist/agent/engines/client-factory.d.ts.map +0 -1
  139. package/dist/agent/engines/client-factory.js +0 -382
  140. package/dist/agent/engines/client-factory.js.map +0 -1
  141. package/dist/agent/engines/engine.d.ts +0 -8
  142. package/dist/agent/engines/engine.d.ts.map +0 -1
  143. package/dist/agent/engines/engine.js +0 -15
  144. package/dist/agent/engines/engine.js.map +0 -1
  145. package/dist/agent/engines/openai/file-session.d.ts +0 -49
  146. package/dist/agent/engines/openai/file-session.d.ts.map +0 -1
  147. package/dist/agent/engines/openai/file-session.js +0 -108
  148. package/dist/agent/engines/openai/file-session.js.map +0 -1
  149. package/dist/agent/engines/openai/file-tools.d.ts +0 -35
  150. package/dist/agent/engines/openai/file-tools.d.ts.map +0 -1
  151. package/dist/agent/engines/openai/file-tools.js +0 -194
  152. package/dist/agent/engines/openai/file-tools.js.map +0 -1
  153. package/dist/agent/engines/openai/session.d.ts +0 -190
  154. package/dist/agent/engines/openai/session.d.ts.map +0 -1
  155. package/dist/agent/engines/openai/session.js +0 -1066
  156. package/dist/agent/engines/openai/session.js.map +0 -1
  157. package/dist/agent/engines/openai/tools.d.ts +0 -13
  158. package/dist/agent/engines/openai/tools.d.ts.map +0 -1
  159. package/dist/agent/engines/openai/tools.js +0 -248
  160. package/dist/agent/engines/openai/tools.js.map +0 -1
  161. package/dist/agent/engines/session-types.d.ts +0 -146
  162. package/dist/agent/engines/session-types.d.ts.map +0 -1
  163. package/dist/agent/engines/session-types.js +0 -2
  164. package/dist/agent/engines/session-types.js.map +0 -1
  165. package/dist/agent/engines/system-prompt-log.d.ts +0 -9
  166. package/dist/agent/engines/system-prompt-log.d.ts.map +0 -1
  167. package/dist/agent/engines/system-prompt-log.js +0 -46
  168. package/dist/agent/engines/system-prompt-log.js.map +0 -1
  169. package/dist/agent/transcript/transcript-backfill.d.ts +0 -54
  170. package/dist/agent/transcript/transcript-backfill.d.ts.map +0 -1
  171. package/dist/agent/transcript/transcript-backfill.js +0 -604
  172. package/dist/agent/transcript/transcript-backfill.js.map +0 -1
  173. package/dist/agent/transcript/transcript-indexer.d.ts +0 -273
  174. package/dist/agent/transcript/transcript-indexer.d.ts.map +0 -1
  175. package/dist/agent/transcript/transcript-indexer.js +0 -1217
  176. package/dist/agent/transcript/transcript-indexer.js.map +0 -1
  177. package/dist/agent/transcript/transcript-memory-migrations.d.ts +0 -25
  178. package/dist/agent/transcript/transcript-memory-migrations.d.ts.map +0 -1
  179. package/dist/agent/transcript/transcript-memory-migrations.js +0 -87
  180. package/dist/agent/transcript/transcript-memory-migrations.js.map +0 -1
  181. package/dist/agent/transcript-memory-migrations.d.ts +0 -25
  182. package/dist/agent/transcript-memory-migrations.d.ts.map +0 -1
  183. package/dist/agent/transcript-memory-migrations.js +0 -87
  184. package/dist/agent/transcript-memory-migrations.js.map +0 -1
  185. package/dist/agent/tunnel-credential-handler.d.ts +0 -90
  186. package/dist/agent/tunnel-credential-handler.d.ts.map +0 -1
  187. package/dist/agent/tunnel-credential-handler.js +0 -162
  188. package/dist/agent/tunnel-credential-handler.js.map +0 -1
  189. package/dist/agent/usage/usage-backfill-handler.d.ts +0 -18
  190. package/dist/agent/usage/usage-backfill-handler.d.ts.map +0 -1
  191. package/dist/agent/usage/usage-backfill-handler.js +0 -69
  192. package/dist/agent/usage/usage-backfill-handler.js.map +0 -1
  193. package/dist/agent/usage/usage-gate.d.ts +0 -25
  194. package/dist/agent/usage/usage-gate.d.ts.map +0 -1
  195. package/dist/agent/usage/usage-gate.js +0 -83
  196. package/dist/agent/usage/usage-gate.js.map +0 -1
  197. package/dist/agent/usage/usage-handler.d.ts +0 -7
  198. package/dist/agent/usage/usage-handler.d.ts.map +0 -1
  199. package/dist/agent/usage/usage-handler.js +0 -28
  200. package/dist/agent/usage/usage-handler.js.map +0 -1
  201. package/dist/agent/usage/usage-report-builder.d.ts +0 -26
  202. package/dist/agent/usage/usage-report-builder.d.ts.map +0 -1
  203. package/dist/agent/usage/usage-report-builder.js +0 -80
  204. package/dist/agent/usage/usage-report-builder.js.map +0 -1
  205. package/dist/agent/usage/usage-report-queue.d.ts +0 -26
  206. package/dist/agent/usage/usage-report-queue.d.ts.map +0 -1
  207. package/dist/agent/usage/usage-report-queue.js +0 -199
  208. package/dist/agent/usage/usage-report-queue.js.map +0 -1
  209. package/dist/agent/usage/usage-report-types.d.ts +0 -41
  210. package/dist/agent/usage/usage-report-types.d.ts.map +0 -1
  211. package/dist/agent/usage/usage-report-types.js +0 -2
  212. package/dist/agent/usage/usage-report-types.js.map +0 -1
  213. package/dist/agent/usage/usage-reporter.d.ts +0 -31
  214. package/dist/agent/usage/usage-reporter.d.ts.map +0 -1
  215. package/dist/agent/usage/usage-reporter.js +0 -102
  216. package/dist/agent/usage/usage-reporter.js.map +0 -1
  217. package/dist/agent/usage-backfill-handler.d.ts +0 -18
  218. package/dist/agent/usage-backfill-handler.d.ts.map +0 -1
  219. package/dist/agent/usage-backfill-handler.js +0 -69
  220. package/dist/agent/usage-backfill-handler.js.map +0 -1
  221. package/dist/agent/usage-gate.d.ts +0 -25
  222. package/dist/agent/usage-gate.d.ts.map +0 -1
  223. package/dist/agent/usage-gate.js +0 -83
  224. package/dist/agent/usage-gate.js.map +0 -1
  225. package/dist/agent/usage-report-builder.d.ts +0 -26
  226. package/dist/agent/usage-report-builder.d.ts.map +0 -1
  227. package/dist/agent/usage-report-builder.js +0 -80
  228. package/dist/agent/usage-report-builder.js.map +0 -1
  229. package/dist/agent/usage-report-queue.d.ts +0 -26
  230. package/dist/agent/usage-report-queue.d.ts.map +0 -1
  231. package/dist/agent/usage-report-queue.js +0 -199
  232. package/dist/agent/usage-report-queue.js.map +0 -1
  233. package/dist/agent/usage-report-types.d.ts +0 -41
  234. package/dist/agent/usage-report-types.d.ts.map +0 -1
  235. package/dist/agent/usage-report-types.js +0 -2
  236. package/dist/agent/usage-report-types.js.map +0 -1
  237. package/dist/agent/usage-reporter.d.ts +0 -31
  238. package/dist/agent/usage-reporter.d.ts.map +0 -1
  239. package/dist/agent/usage-reporter.js +0 -102
  240. package/dist/agent/usage-reporter.js.map +0 -1
  241. package/dist/agent/wake-cycle-tool-tracker.d.ts +0 -39
  242. package/dist/agent/wake-cycle-tool-tracker.d.ts.map +0 -1
  243. package/dist/agent/wake-cycle-tool-tracker.js +0 -72
  244. package/dist/agent/wake-cycle-tool-tracker.js.map +0 -1
  245. package/dist/billing/payg-handler.d.ts +0 -29
  246. package/dist/billing/payg-handler.d.ts.map +0 -1
  247. package/dist/billing/payg-handler.js +0 -92
  248. package/dist/billing/payg-handler.js.map +0 -1
  249. package/dist/billing/payment-handler.d.ts +0 -24
  250. package/dist/billing/payment-handler.d.ts.map +0 -1
  251. package/dist/billing/payment-handler.js +0 -101
  252. package/dist/billing/payment-handler.js.map +0 -1
  253. package/dist/builtin-skills/catalog/phone-adb-automation/SKILL.md +0 -412
  254. package/dist/builtin-skills/catalog/phone-adb-automation/phone_input.sh +0 -132
  255. package/dist/builtin-skills/catalog/phone-adb-automation/phone_launch.sh +0 -166
  256. package/dist/builtin-skills/catalog/phone-adb-automation/phone_screenshot.sh +0 -87
  257. package/dist/builtin-skills/catalog/phone-adb-automation/phone_security_kbd.py +0 -174
  258. package/dist/builtin-skills/catalog/phone-adb-automation/phone_setup.sh +0 -274
  259. package/dist/builtin-skills/catalog/phone-adb-automation/phone_swipe.sh +0 -111
  260. package/dist/builtin-skills/catalog/phone-adb-automation/phone_tap.sh +0 -87
  261. package/dist/builtin-skills/catalog/phone-adb-automation/phone_ui_parse.py +0 -176
  262. package/dist/builtin-skills/catalog/phone-adb-automation/phone_wake_unlock.sh +0 -67
  263. package/dist/builtin-skills/transcribe-audio/SKILL.md +0 -122
  264. package/dist/data-processing/convert-demo-cli.d.ts +0 -7
  265. package/dist/data-processing/convert-demo-cli.d.ts.map +0 -1
  266. package/dist/data-processing/convert-demo-cli.js +0 -30
  267. package/dist/data-processing/convert-demo-cli.js.map +0 -1
  268. package/dist/data-processing/convert-demo.d.ts +0 -26
  269. package/dist/data-processing/convert-demo.d.ts.map +0 -1
  270. package/dist/data-processing/convert-demo.js +0 -233
  271. package/dist/data-processing/convert-demo.js.map +0 -1
  272. package/dist/obs/rdp/icons/icons/app_windows.svg +0 -4
  273. package/dist/obs/rdp/icons/icons/clip_get.svg +0 -4
  274. package/dist/obs/rdp/icons/icons/clip_send.svg +0 -4
  275. package/dist/obs/rdp/icons/icons/clip_shared.svg +0 -4
  276. package/dist/obs/rdp/icons/icons/clipboard.svg +0 -4
  277. package/dist/obs/rdp/icons/icons/clipboard_shared.svg +0 -4
  278. package/dist/obs/rdp/icons/icons/control.svg +0 -4
  279. package/dist/obs/rdp/icons/icons/desktop.svg +0 -4
  280. package/dist/obs/rdp/icons/icons/display.svg +0 -4
  281. package/dist/obs/rdp/icons/icons/launchpad.svg +0 -4
  282. package/dist/obs/rdp/icons/icons/mission_control.svg +0 -4
  283. package/dist/obs/rdp/icons/icons/screenshot.svg +0 -4
  284. package/dist/obs/rdp/icons/icons/zoom_actual.svg +0 -4
  285. package/dist/obs/rdp/icons/icons/zoom_fit.svg +0 -4
  286. package/dist/obs/rdp/icons/icons/zoom_in.svg +0 -4
  287. package/dist/obs/rdp/icons/icons/zoom_out.svg +0 -4
  288. package/dist/obs/tunnel-telemetry.d.ts +0 -46
  289. package/dist/obs/tunnel-telemetry.d.ts.map +0 -1
  290. package/dist/obs/tunnel-telemetry.js +0 -70
  291. package/dist/obs/tunnel-telemetry.js.map +0 -1
  292. package/dist/onboarding/cloudflared-cert.d.ts +0 -15
  293. package/dist/onboarding/cloudflared-cert.d.ts.map +0 -1
  294. package/dist/onboarding/cloudflared-cert.js +0 -57
  295. package/dist/onboarding/cloudflared-cert.js.map +0 -1
  296. package/dist/onboarding/playwriter-extension.d.ts +0 -19
  297. package/dist/onboarding/playwriter-extension.d.ts.map +0 -1
  298. package/dist/onboarding/playwriter-extension.js +0 -246
  299. package/dist/onboarding/playwriter-extension.js.map +0 -1
  300. package/dist/service/gbox-tun.d.ts +0 -14
  301. package/dist/service/gbox-tun.d.ts.map +0 -1
  302. package/dist/service/gbox-tun.js +0 -315
  303. package/dist/service/gbox-tun.js.map +0 -1
  304. package/dist/skills/installed.d.ts +0 -11
  305. package/dist/skills/installed.d.ts.map +0 -1
  306. package/dist/skills/installed.js +0 -35
  307. package/dist/skills/installed.js.map +0 -1
  308. package/dist/tools/coordinate-resolver.d.ts +0 -30
  309. package/dist/tools/coordinate-resolver.d.ts.map +0 -1
  310. package/dist/tools/coordinate-resolver.js +0 -104
  311. package/dist/tools/coordinate-resolver.js.map +0 -1
  312. package/dist/utils/playwriter-relay.d.ts +0 -9
  313. package/dist/utils/playwriter-relay.d.ts.map +0 -1
  314. package/dist/utils/playwriter-relay.js +0 -77
  315. package/dist/utils/playwriter-relay.js.map +0 -1
  316. package/dist/utils/wechat-monitor.d.ts +0 -21
  317. package/dist/utils/wechat-monitor.d.ts.map +0 -1
  318. package/dist/utils/wechat-monitor.js +0 -88
  319. package/dist/utils/wechat-monitor.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,3 +1,13 @@
1
+ ## [0.1.193](https://github.com/babelcloud/visionclaw/compare/v0.1.192...v0.1.193) (2026-05-11)
2
+
3
+ ### Bug Fixes
4
+
5
+ ### Features
6
+
7
+ * Improve agent speed and more stable
8
+ * Better /refresh command to avoid stuck
9
+
10
+
1
11
  ## [0.1.192](https://github.com/babelcloud/visionclaw/compare/v0.1.191...v0.1.192) (2026-05-06)
2
12
 
3
13
  ### Bug Fixes
@@ -1 +1 @@
1
- {"version":3,"file":"api-proxy.d.ts","sourceRoot":"","sources":["../../src/agent/api-proxy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AASH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAuDD;;;GAGG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE;IACxC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC,cAAc,CAAC,CA8H1B"}
1
+ {"version":3,"file":"api-proxy.d.ts","sourceRoot":"","sources":["../../src/agent/api-proxy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAUH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAiND;;;GAGG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE;IACxC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC,cAAc,CAAC,CAmK1B"}
@@ -15,6 +15,7 @@ import http from "node:http";
15
15
  import https from "node:https";
16
16
  import fs from "node:fs";
17
17
  import path from "node:path";
18
+ import zlib from "node:zlib";
18
19
  import { URL } from "node:url";
19
20
  import { logger } from "../logger.js";
20
21
  let singleton = null;
@@ -27,13 +28,6 @@ const httpsAgent = new https.Agent({
27
28
  maxSockets: 10,
28
29
  ALPNProtocols: ["http/1.1"],
29
30
  });
30
- /**
31
- * Extract `<system-reminder>` text blocks from messages.
32
- *
33
- * The Claude Agent SDK injects these into user messages to provide the model
34
- * with skill descriptions, context reminders, and other metadata. We extract
35
- * them so the API log captures what the model actually sees.
36
- */
37
31
  function extractSystemReminders(messages) {
38
32
  const reminders = [];
39
33
  for (const msg of messages) {
@@ -50,6 +44,140 @@ function extractSystemReminders(messages) {
50
44
  }
51
45
  return reminders;
52
46
  }
47
+ function getHeaderValue(headers, name) {
48
+ const value = headers[name];
49
+ if (Array.isArray(value))
50
+ return value[0];
51
+ return value;
52
+ }
53
+ /**
54
+ * Decompress a buffered upstream response body for logging only.
55
+ *
56
+ * The proxy forwards the original (possibly compressed) bytes to the SDK
57
+ * client verbatim, so the SDK's transparent decompression keeps working.
58
+ * For our JSONL log we want the readable text instead, so we honor
59
+ * `content-encoding` here.
60
+ */
61
+ function decodeResponseBodyForLogging(responseBody, headers) {
62
+ if (responseBody.length === 0)
63
+ return "";
64
+ const encoding = getHeaderValue(headers, "content-encoding");
65
+ const normalized = encoding?.toLowerCase().trim();
66
+ try {
67
+ if (normalized === "gzip" || normalized === "x-gzip") {
68
+ return zlib.gunzipSync(responseBody).toString("utf-8");
69
+ }
70
+ if (normalized === "deflate") {
71
+ return zlib.inflateSync(responseBody).toString("utf-8");
72
+ }
73
+ if (normalized === "br") {
74
+ return zlib.brotliDecompressSync(responseBody).toString("utf-8");
75
+ }
76
+ }
77
+ catch (err) {
78
+ logger.warn(`[api-proxy] failed to decompress upstream body (encoding=${normalized ?? "none"}): ${err instanceof Error ? err.message : String(err)}`);
79
+ }
80
+ return responseBody.toString("utf-8");
81
+ }
82
+ function getUpstreamRequestId(headers) {
83
+ return getHeaderValue(headers, "request-id")
84
+ ?? getHeaderValue(headers, "x-request-id")
85
+ ?? getHeaderValue(headers, "anthropic-request-id")
86
+ ?? getHeaderValue(headers, "cf-request-id")
87
+ ?? getHeaderValue(headers, "x-amzn-trace-id")
88
+ ?? getHeaderValue(headers, "cf-ray")
89
+ ?? null;
90
+ }
91
+ function parseAnthropicResponseBody(responseBodyRaw) {
92
+ try {
93
+ return JSON.parse(responseBodyRaw);
94
+ }
95
+ catch {
96
+ return parseAnthropicSseFinalMessage(responseBodyRaw) ?? responseBodyRaw;
97
+ }
98
+ }
99
+ function parseAnthropicSseFinalMessage(responseBodyRaw) {
100
+ const events = responseBodyRaw.split(/\n\n+/u);
101
+ let finalMessage;
102
+ const contentBlocks = [];
103
+ let stopReason;
104
+ let stopSequence;
105
+ let usage;
106
+ for (const event of events) {
107
+ const dataLines = event
108
+ .split("\n")
109
+ .filter((line) => line.startsWith("data:"))
110
+ .map((line) => line.slice("data:".length).trim())
111
+ .filter((line) => line.length > 0 && line !== "[DONE]");
112
+ for (const dataLine of dataLines) {
113
+ let payload;
114
+ try {
115
+ payload = JSON.parse(dataLine);
116
+ }
117
+ catch {
118
+ continue;
119
+ }
120
+ if (payload.type === "message_start") {
121
+ finalMessage = payload.message;
122
+ continue;
123
+ }
124
+ if (payload.type === "content_block_start") {
125
+ const index = payload.index;
126
+ if (typeof index === "number") {
127
+ contentBlocks[index] = payload.content_block;
128
+ }
129
+ continue;
130
+ }
131
+ if (payload.type === "content_block_delta") {
132
+ const index = payload.index;
133
+ const delta = payload.delta;
134
+ if (typeof index !== "number" || !delta)
135
+ continue;
136
+ const block = contentBlocks[index] ?? {};
137
+ contentBlocks[index] = block;
138
+ if (delta.type === "text_delta" && typeof delta.text === "string") {
139
+ block.text = `${typeof block.text === "string" ? block.text : ""}${delta.text}`;
140
+ }
141
+ else if (delta.type === "input_json_delta" && typeof delta.partial_json === "string") {
142
+ block.partial_json = `${typeof block.partial_json === "string" ? block.partial_json : ""}${delta.partial_json}`;
143
+ }
144
+ continue;
145
+ }
146
+ if (payload.type === "message_delta") {
147
+ const delta = payload.delta;
148
+ stopReason = delta?.stop_reason;
149
+ stopSequence = delta?.stop_sequence;
150
+ usage = payload.usage;
151
+ }
152
+ }
153
+ }
154
+ if (!finalMessage)
155
+ return undefined;
156
+ return {
157
+ ...finalMessage,
158
+ content: contentBlocks.filter(Boolean).map(finalizeContentBlock),
159
+ stop_reason: stopReason,
160
+ stop_sequence: stopSequence,
161
+ usage: usage ?? finalMessage.usage,
162
+ };
163
+ }
164
+ function finalizeContentBlock(block) {
165
+ if (typeof block.partial_json !== "string")
166
+ return block;
167
+ const { partial_json: partialJson, ...rest } = block;
168
+ try {
169
+ return {
170
+ ...rest,
171
+ input: JSON.parse(partialJson),
172
+ };
173
+ }
174
+ catch {
175
+ return {
176
+ ...rest,
177
+ input_json_raw: partialJson,
178
+ };
179
+ }
180
+ }
53
181
  /**
54
182
  * Start the API logging proxy. Returns a handle with the assigned port.
55
183
  * Subsequent calls return the same singleton.
@@ -87,25 +215,11 @@ export async function startApiProxy(opts) {
87
215
  });
88
216
  req.on("end", () => {
89
217
  const body = Buffer.concat(chunks);
90
- // Log the request (best-effort)
218
+ const requestBodyRaw = body.toString("utf-8");
219
+ let parsedRequestBody;
91
220
  if (isMessagesEndpoint && body.length > 0) {
92
221
  try {
93
- const parsed = JSON.parse(body.toString("utf-8"));
94
- const messages = parsed.messages;
95
- const tools = parsed.tools;
96
- const entry = {
97
- timestamp: new Date().toISOString(),
98
- model: parsed.model,
99
- system: parsed.system,
100
- tools: tools ?? [],
101
- system_reminders: messages ? extractSystemReminders(messages) : [],
102
- messages_count: messages?.length ?? 0,
103
- messages_roles: messages?.map((m) => m.role ?? "unknown") ?? [],
104
- request_size_bytes: body.length,
105
- };
106
- const date = new Date().toISOString().slice(0, 10);
107
- const logPath = path.join(logDir, `api-calls-${date}.jsonl`);
108
- fs.appendFileSync(logPath, JSON.stringify(entry) + "\n", "utf-8");
222
+ parsedRequestBody = JSON.parse(requestBodyRaw);
109
223
  }
110
224
  catch {
111
225
  // Best-effort logging — don't break the proxy
@@ -122,8 +236,54 @@ export async function startApiProxy(opts) {
122
236
  headers: fwdHeaders,
123
237
  agent: httpsAgent,
124
238
  }, (proxyRes) => {
239
+ const responseChunks = [];
125
240
  res.writeHead(proxyRes.statusCode ?? 502, proxyRes.headers);
126
- proxyRes.pipe(res);
241
+ proxyRes.on("data", (chunk) => {
242
+ responseChunks.push(chunk);
243
+ res.write(chunk);
244
+ });
245
+ proxyRes.on("end", () => {
246
+ if (!res.writableEnded) {
247
+ res.end();
248
+ }
249
+ if (isMessagesEndpoint && body.length > 0) {
250
+ try {
251
+ const responseBody = Buffer.concat(responseChunks);
252
+ const responseBodyRaw = decodeResponseBodyForLogging(responseBody, proxyRes.headers);
253
+ const parsedResponseBody = parseAnthropicResponseBody(responseBodyRaw);
254
+ const messages = parsedRequestBody?.messages;
255
+ const entry = {
256
+ timestamp: new Date().toISOString(),
257
+ method: req.method,
258
+ url: req.url,
259
+ model: parsedRequestBody?.model,
260
+ request_body: parsedRequestBody ?? requestBodyRaw,
261
+ request_body_raw: requestBodyRaw,
262
+ system_reminders: messages ? extractSystemReminders(messages) : [],
263
+ messages_count: messages?.length ?? 0,
264
+ request_size_bytes: body.length,
265
+ response_status_code: proxyRes.statusCode,
266
+ upstream_request_id: getUpstreamRequestId(proxyRes.headers),
267
+ response_headers: proxyRes.headers,
268
+ response_body: parsedResponseBody,
269
+ response_body_raw: responseBodyRaw,
270
+ response_size_bytes: responseBody.length,
271
+ };
272
+ const date = new Date().toISOString().slice(0, 10);
273
+ const logPath = path.join(logDir, `api-calls-${date}.jsonl`);
274
+ fs.appendFileSync(logPath, `${JSON.stringify(entry)}\n`, "utf-8");
275
+ }
276
+ catch {
277
+ // Best-effort logging — don't break the proxy
278
+ }
279
+ }
280
+ });
281
+ proxyRes.on("error", (err) => {
282
+ logger.warn(`[api-proxy] upstream response error: ${err.message}`);
283
+ if (!res.writableEnded) {
284
+ res.destroy(err);
285
+ }
286
+ });
127
287
  });
128
288
  proxyReq.on("error", (err) => {
129
289
  if (!req.destroyed) {
@@ -1 +1 @@
1
- {"version":3,"file":"api-proxy.js","sourceRoot":"","sources":["../../src/agent/api-proxy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api-proxy.js","sourceRoot":"","sources":["../../src/agent/api-proxy.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"backup.d.ts","sourceRoot":"","sources":["../../src/agent/backup.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AA6L3D;;;;;;;;GAQG;AACH,wBAAsB,SAAS,CAC7B,MAAM,EAAE,gBAAgB,EACxB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC,CAoHjB"}
1
+ {"version":3,"file":"backup.d.ts","sourceRoot":"","sources":["../../src/agent/backup.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAkP3D;;;;;;;;GAQG;AACH,wBAAsB,SAAS,CAC7B,MAAM,EAAE,gBAAgB,EACxB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC,CAgLjB"}
@@ -12,6 +12,52 @@ const CLOUDFLARED_DIR = path.join(os.homedir(), ".cloudflared");
12
12
  const CLOUDFLARED_BACKUP_FILES = ["cert.pem", "config.yml"];
13
13
  const GH_CLI_DIR = path.join(os.homedir(), ".config", "gh");
14
14
  const GH_CLI_TOKEN_FILE = "oauth-token.txt";
15
+ const UPLOAD_PROGRESS_LOG_INTERVAL_MS = 5_000;
16
+ function formatBytes(bytes) {
17
+ if (bytes < 1024)
18
+ return `${bytes} B`;
19
+ const units = ["KB", "MB", "GB", "TB"];
20
+ let value = bytes / 1024;
21
+ let unitIndex = 0;
22
+ while (value >= 1024 && unitIndex < units.length - 1) {
23
+ value /= 1024;
24
+ unitIndex += 1;
25
+ }
26
+ return `${value.toFixed(value >= 10 ? 1 : 2)} ${units[unitIndex]}`;
27
+ }
28
+ function formatDuration(ms) {
29
+ if (ms < 1_000)
30
+ return `${Math.max(0, Math.round(ms))}ms`;
31
+ const totalSeconds = Math.max(1, Math.round(ms / 1_000));
32
+ const minutes = Math.floor(totalSeconds / 60);
33
+ const seconds = totalSeconds % 60;
34
+ if (minutes === 0)
35
+ return `${seconds}s`;
36
+ return `${minutes}m ${seconds}s`;
37
+ }
38
+ function getDirectorySize(dirPath) {
39
+ if (!fs.existsSync(dirPath))
40
+ return 0;
41
+ const stat = fs.lstatSync(dirPath);
42
+ if (stat.isFile())
43
+ return stat.size;
44
+ if (!stat.isDirectory())
45
+ return 0;
46
+ let size = 0;
47
+ for (const entry of fs.readdirSync(dirPath)) {
48
+ size += getDirectorySize(path.join(dirPath, entry));
49
+ }
50
+ return size;
51
+ }
52
+ function formatSizeBreakdown(parts) {
53
+ const totalBytes = parts.reduce((sum, part) => sum + part.bytes, 0);
54
+ return parts
55
+ .map((part) => {
56
+ const percent = totalBytes > 0 ? (part.bytes / totalBytes) * 100 : 0;
57
+ return `${part.label}: ${formatBytes(part.bytes)} (${percent.toFixed(1)}%)`;
58
+ })
59
+ .join("; ");
60
+ }
15
61
  function formatTimestamp() {
16
62
  const now = new Date();
17
63
  const pad = (n) => String(n).padStart(2, "0");
@@ -174,6 +220,27 @@ export async function runBackup(config, ownerEmail) {
174
220
  const cloudflared = snapshotCloudflared(stagedCloudflaredDir);
175
221
  const stagedGhCliDir = path.join(stagingRoot, ".config", "gh");
176
222
  const ghCli = await snapshotGhCli(stagedGhCliDir);
223
+ const sizeBreakdown = [
224
+ {
225
+ label: `.visionclaw/profiles/${profileDirName}`,
226
+ bytes: getDirectorySize(stagedProfileDir),
227
+ },
228
+ {
229
+ label: ".claude transcripts",
230
+ bytes: getDirectorySize(stagedTranscriptDir),
231
+ },
232
+ {
233
+ label: ".cloudflared",
234
+ bytes: getDirectorySize(stagedCloudflaredDir),
235
+ },
236
+ {
237
+ label: ".config/gh",
238
+ bytes: getDirectorySize(stagedGhCliDir),
239
+ },
240
+ ];
241
+ const stagedSizeBytes = sizeBreakdown.reduce((sum, part) => sum + part.bytes, 0);
242
+ logger.system(`Staging backup data in: ${stagingRoot}`);
243
+ logger.system(`Backup staging size: ${formatBytes(stagedSizeBytes)} (${formatSizeBreakdown(sizeBreakdown)}).`);
177
244
  logger.system(`Creating backup zip: ${zipPath} (.visionclaw/profiles/${profileDirName})`);
178
245
  if (snapshot.skippedPaths.length > 0) {
179
246
  logger.warn(`Skipping ${snapshot.skippedPaths.length} symlink or unsupported runtime entr${snapshot.skippedPaths.length === 1 ? "y" : "ies"} during backup.`);
@@ -205,17 +272,37 @@ export async function runBackup(config, ownerEmail) {
205
272
  }
206
273
  // Run zip from the staging directory so the archive keeps the expected
207
274
  // ~/.visionclaw/profiles/<profile> layout without touching live sockets.
275
+ const zipStartMs = Date.now();
208
276
  await execFileAsync("zip", ["-rq", zipPath, ...zipInputs], {
209
277
  cwd: stagingRoot,
210
278
  timeout: 10 * 60 * 1000,
211
279
  maxBuffer: 10 * 1024 * 1024,
212
280
  });
213
- logger.system("Backup zip created, uploading to Google Drive...");
281
+ const zipDurationMs = Date.now() - zipStartMs;
282
+ const zipSizeBytes = fs.statSync(zipPath).size;
283
+ logger.system(`Backup zip created: ${zipPath} (${formatBytes(zipSizeBytes)}, compressed in ${formatDuration(zipDurationMs)}).`);
214
284
  const drive = new GoogleDriveClient(config);
285
+ const uploadStartMs = Date.now();
286
+ let lastUploadProgressLogMs = 0;
287
+ logger.system(`Uploading backup to Google Drive (${formatBytes(zipSizeBytes)}; estimated time will update with measured speed)...`);
215
288
  const uploaded = await drive.uploadFile({
216
289
  localPath: zipPath,
217
290
  name: zipName,
218
291
  mimeType: "application/zip",
292
+ onProgress: (uploadedBytes) => {
293
+ const nowMs = Date.now();
294
+ if (uploadedBytes < zipSizeBytes &&
295
+ nowMs - lastUploadProgressLogMs < UPLOAD_PROGRESS_LOG_INTERVAL_MS) {
296
+ return;
297
+ }
298
+ lastUploadProgressLogMs = nowMs;
299
+ const elapsedMs = Math.max(1, nowMs - uploadStartMs);
300
+ const uploadedRatio = zipSizeBytes > 0 ? uploadedBytes / zipSizeBytes : 1;
301
+ const bytesPerSecond = uploadedBytes / (elapsedMs / 1_000);
302
+ const remainingBytes = Math.max(0, zipSizeBytes - uploadedBytes);
303
+ const etaMs = bytesPerSecond > 0 ? (remainingBytes / bytesPerSecond) * 1_000 : 0;
304
+ logger.system(`Upload progress: ${formatBytes(Math.min(uploadedBytes, zipSizeBytes))}/${formatBytes(zipSizeBytes)} (${Math.min(100, uploadedRatio * 100).toFixed(1)}%), ${formatBytes(bytesPerSecond)}/s, ETA ${formatDuration(etaMs)}.`);
305
+ },
219
306
  });
220
307
  await drive.shareFile({
221
308
  fileId: uploaded.id,
@@ -225,7 +312,9 @@ export async function runBackup(config, ownerEmail) {
225
312
  });
226
313
  const link = uploaded.webViewLink ??
227
314
  `https://drive.google.com/file/d/${uploaded.id}/view`;
228
- logger.system(`Backup uploaded: ${link}`);
315
+ const uploadDurationMs = Date.now() - uploadStartMs;
316
+ const averageUploadSpeed = zipSizeBytes / Math.max(1, uploadDurationMs / 1_000);
317
+ logger.system(`Backup uploaded in ${formatDuration(uploadDurationMs)} at ${formatBytes(averageUploadSpeed)}/s: ${link}`);
229
318
  return link;
230
319
  }
231
320
  finally {
@@ -1 +1 @@
1
- {"version":3,"file":"backup.js","sourceRoot":"","sources":["../../src/agent/backup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"backup.js","sourceRoot":"","sources":["../../src/agent/backup.ts"],"names":[],"mappings":"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"}
@@ -12,7 +12,9 @@ export interface CommandHandlerDeps {
12
12
  config: VisionClawConfig;
13
13
  ownerConfig: OwnerConfig;
14
14
  heartbeat: HeartbeatManager;
15
+ wakeMainLoop?: () => void;
15
16
  obsClose?: () => Promise<void>;
17
+ realtimeClose?: () => Promise<void>;
16
18
  }
17
19
  /**
18
20
  * Register all slash-command event handlers on the channel manager.
@@ -1 +1 @@
1
- {"version":3,"file":"command-handlers.d.ts","sourceRoot":"","sources":["../../src/agent/command-handlers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AA2BxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,KAAK,UAAU,EAAuB,MAAM,YAAY,CAAC;AAkBlE,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,UAAU,CAAC;IACvB,cAAc,EAAE,cAAc,CAAC;IAC/B,YAAY,EAAE,YAAY,CAAC;IAC3B,OAAO,EAAE,cAAc,CAAC;IACxB,MAAM,EAAE,gBAAgB,CAAC;IACzB,WAAW,EAAE,WAAW,CAAC;IACzB,SAAS,EAAE,gBAAgB,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAChC;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,kBAAkB,GAAG,IAAI,CA83BtE"}
1
+ {"version":3,"file":"command-handlers.d.ts","sourceRoot":"","sources":["../../src/agent/command-handlers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AA4BxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,KAAK,UAAU,EAAuB,MAAM,YAAY,CAAC;AAkBlE,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,UAAU,CAAC;IACvB,cAAc,EAAE,cAAc,CAAC;IAC/B,YAAY,EAAE,YAAY,CAAC;IAC3B,OAAO,EAAE,cAAc,CAAC;IACxB,MAAM,EAAE,gBAAgB,CAAC;IACzB,WAAW,EAAE,WAAW,CAAC;IACzB,SAAS,EAAE,gBAAgB,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACrC;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,kBAAkB,GAAG,IAAI,CAm6BtE"}
@@ -16,7 +16,7 @@ import { scheduleRestart } from "../utils/restart.js";
16
16
  * the message queue.
17
17
  */
18
18
  export function registerCommandHandlers(deps) {
19
- const { agentState, channelManager, messageQueue, session, config, ownerConfig, heartbeat } = deps;
19
+ const { agentState, channelManager, messageQueue, session, config, ownerConfig, heartbeat, wakeMainLoop } = deps;
20
20
  const pricingUrl = buildPricingUrl(config);
21
21
  const getLocale = () => resolveLocale(ownerConfig.language);
22
22
  channelManager.on("stop_request", (req) => {
@@ -77,6 +77,26 @@ export function registerCommandHandlers(deps) {
77
77
  logger.warn(`Failed to handle remote_desktop_request: ${err instanceof Error ? err.message : String(err)}`);
78
78
  });
79
79
  });
80
+ channelManager.on("realtime_request", (req) => {
81
+ logger.system(`Realtime Mini App requested by ${req.sender} via ${req.channel}`);
82
+ const doRealtime = async () => {
83
+ const tunnelUrl = agentState.consoleUrl;
84
+ if (!tunnelUrl) {
85
+ await channelManager.sendMessage(req.channel, req.sender, t("cmd.realtime.unavailable", getLocale()));
86
+ return;
87
+ }
88
+ const baseUrl = tunnelUrl.replace(/\/(obs|console)(\/.*)?$/, "").replace(/\/$/, "");
89
+ const realtimeUrl = `${baseUrl}/realtime`;
90
+ if (req.channel === "telegram" && req.chatId) {
91
+ await channelManager.sendTelegramMiniAppButton(req.chatId, "🎙️ VisionClaw Realtime Voice", "Open Realtime Voice", realtimeUrl);
92
+ return;
93
+ }
94
+ await channelManager.sendMessage(req.channel, req.sender, realtimeUrl);
95
+ };
96
+ doRealtime().catch((err) => {
97
+ logger.warn(`Failed to handle realtime_request: ${err instanceof Error ? err.message : String(err)}`);
98
+ });
99
+ });
80
100
  channelManager.on("console_request", (req) => {
81
101
  const url = agentState.consoleUrl;
82
102
  const reply = url
@@ -113,6 +133,8 @@ export function registerCommandHandlers(deps) {
113
133
  const doRestart = async () => {
114
134
  const { runGracefulShutdown } = await import("./state.js");
115
135
  const shutdownHook = async () => {
136
+ if (deps.realtimeClose)
137
+ await deps.realtimeClose();
116
138
  if (deps.obsClose)
117
139
  await deps.obsClose();
118
140
  await runGracefulShutdown();
@@ -264,6 +286,8 @@ export function registerCommandHandlers(deps) {
264
286
  saveConfig(freshConfig);
265
287
  await channelManager.sendMessage(req.channel, req.sender, t("cmd.weixin.success", getLocale(), result.message, accountId));
266
288
  const shutdownHook = async () => {
289
+ if (deps.realtimeClose)
290
+ await deps.realtimeClose();
267
291
  if (deps.obsClose)
268
292
  await deps.obsClose();
269
293
  await runGracefulShutdown();
@@ -447,6 +471,7 @@ export function registerCommandHandlers(deps) {
447
471
  }
448
472
  finally {
449
473
  agentState.compacting = false;
474
+ wakeMainLoop?.();
450
475
  }
451
476
  };
452
477
  doRefresh().catch((err) => {