visionclaw 0.1.193 → 0.1.194-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 (352) hide show
  1. package/dist/agent/backup-uploader.d.ts +44 -0
  2. package/dist/agent/backup-uploader.d.ts.map +1 -0
  3. package/dist/agent/backup-uploader.js +83 -0
  4. package/dist/agent/backup-uploader.js.map +1 -0
  5. package/dist/agent/backup.d.ts +7 -1
  6. package/dist/agent/backup.d.ts.map +1 -1
  7. package/dist/agent/backup.js +337 -52
  8. package/dist/agent/backup.js.map +1 -1
  9. package/dist/agent/command-handlers.d.ts +2 -0
  10. package/dist/agent/command-handlers.d.ts.map +1 -1
  11. package/dist/agent/command-handlers.js +29 -3
  12. package/dist/agent/command-handlers.js.map +1 -1
  13. package/dist/agent/context.d.ts +2 -0
  14. package/dist/agent/context.d.ts.map +1 -1
  15. package/dist/agent/context.js +11 -1
  16. package/dist/agent/context.js.map +1 -1
  17. package/dist/agent/data-collector.d.ts.map +1 -1
  18. package/dist/agent/data-collector.js +23 -38
  19. package/dist/agent/data-collector.js.map +1 -1
  20. package/dist/agent/loop.d.ts +3 -0
  21. package/dist/agent/loop.d.ts.map +1 -1
  22. package/dist/agent/loop.js +48 -0
  23. package/dist/agent/loop.js.map +1 -1
  24. package/dist/agent/message-format.d.ts.map +1 -1
  25. package/dist/agent/message-format.js +3 -0
  26. package/dist/agent/message-format.js.map +1 -1
  27. package/dist/agent/status.d.ts.map +1 -1
  28. package/dist/agent/status.js +2 -1
  29. package/dist/agent/status.js.map +1 -1
  30. package/dist/backup.d.ts +4 -1
  31. package/dist/backup.d.ts.map +1 -1
  32. package/dist/backup.js +86 -3
  33. package/dist/backup.js.map +1 -1
  34. package/dist/calendar/google-calendar.d.ts +2 -0
  35. package/dist/calendar/google-calendar.d.ts.map +1 -1
  36. package/dist/calendar/google-calendar.js +3 -0
  37. package/dist/calendar/google-calendar.js.map +1 -1
  38. package/dist/channels/interface.d.ts +9 -0
  39. package/dist/channels/interface.d.ts.map +1 -1
  40. package/dist/channels/manager.d.ts +7 -1
  41. package/dist/channels/manager.d.ts.map +1 -1
  42. package/dist/channels/manager.js +12 -0
  43. package/dist/channels/manager.js.map +1 -1
  44. package/dist/channels/telegram.d.ts.map +1 -1
  45. package/dist/channels/telegram.js +5 -0
  46. package/dist/channels/telegram.js.map +1 -1
  47. package/dist/cli/index.d.ts +1 -0
  48. package/dist/cli/index.d.ts.map +1 -1
  49. package/dist/cli/index.js +42 -2
  50. package/dist/cli/index.js.map +1 -1
  51. package/dist/config/types.d.ts +9 -0
  52. package/dist/config/types.d.ts.map +1 -1
  53. package/dist/config/types.js +6 -0
  54. package/dist/config/types.js.map +1 -1
  55. package/dist/drive/google-drive.d.ts +1 -0
  56. package/dist/drive/google-drive.d.ts.map +1 -1
  57. package/dist/drive/google-drive.js +5 -0
  58. package/dist/drive/google-drive.js.map +1 -1
  59. package/dist/i18n/messages.d.ts +4 -0
  60. package/dist/i18n/messages.d.ts.map +1 -1
  61. package/dist/i18n/messages.js +7 -2
  62. package/dist/i18n/messages.js.map +1 -1
  63. package/dist/index.js.map +1 -1
  64. package/dist/obs/server.d.ts +7 -0
  65. package/dist/obs/server.d.ts.map +1 -1
  66. package/dist/obs/server.js +22 -0
  67. package/dist/obs/server.js.map +1 -1
  68. package/dist/onboarding/bot-profile.d.ts.map +1 -1
  69. package/dist/onboarding/bot-profile.js +1 -0
  70. package/dist/onboarding/bot-profile.js.map +1 -1
  71. package/dist/onboarding/index.d.ts.map +1 -1
  72. package/dist/onboarding/index.js +5 -0
  73. package/dist/onboarding/index.js.map +1 -1
  74. package/dist/onboarding/prepare-mac.d.ts +1 -0
  75. package/dist/onboarding/prepare-mac.d.ts.map +1 -1
  76. package/dist/onboarding/prepare-mac.js +32 -15
  77. package/dist/onboarding/prepare-mac.js.map +1 -1
  78. package/dist/onboarding/setup-shared.d.ts.map +1 -1
  79. package/dist/onboarding/setup-shared.js +6 -0
  80. package/dist/onboarding/setup-shared.js.map +1 -1
  81. package/dist/onboarding/setup-steps.d.ts.map +1 -1
  82. package/dist/onboarding/setup-steps.js +8 -0
  83. package/dist/onboarding/setup-steps.js.map +1 -1
  84. package/dist/realtime/agent-bridge.d.ts +7 -0
  85. package/dist/realtime/agent-bridge.d.ts.map +1 -0
  86. package/dist/realtime/agent-bridge.js +31 -0
  87. package/dist/realtime/agent-bridge.js.map +1 -0
  88. package/dist/realtime/assets/index.html +1058 -0
  89. package/dist/realtime/assets/samples/alloy.mp3 +0 -0
  90. package/dist/realtime/assets/samples/ash.mp3 +0 -0
  91. package/dist/realtime/assets/samples/ballad.mp3 +0 -0
  92. package/dist/realtime/assets/samples/cedar.mp3 +0 -0
  93. package/dist/realtime/assets/samples/coral.mp3 +0 -0
  94. package/dist/realtime/assets/samples/echo.mp3 +0 -0
  95. package/dist/realtime/assets/samples/marin.mp3 +0 -0
  96. package/dist/realtime/assets/samples/sage.mp3 +0 -0
  97. package/dist/realtime/assets/samples/shimmer.mp3 +0 -0
  98. package/dist/realtime/assets/samples/verse.mp3 +0 -0
  99. package/dist/realtime/context.d.ts +14 -0
  100. package/dist/realtime/context.d.ts.map +1 -0
  101. package/dist/realtime/context.js +153 -0
  102. package/dist/realtime/context.js.map +1 -0
  103. package/dist/realtime/http-helpers.d.ts +5 -0
  104. package/dist/realtime/http-helpers.d.ts.map +1 -0
  105. package/dist/realtime/http-helpers.js +29 -0
  106. package/dist/realtime/http-helpers.js.map +1 -0
  107. package/dist/realtime/index.d.ts +62 -0
  108. package/dist/realtime/index.d.ts.map +1 -0
  109. package/dist/realtime/index.js +94 -0
  110. package/dist/realtime/index.js.map +1 -0
  111. package/dist/realtime/server.d.ts +6 -0
  112. package/dist/realtime/server.d.ts.map +1 -0
  113. package/dist/realtime/server.js +476 -0
  114. package/dist/realtime/server.js.map +1 -0
  115. package/dist/realtime/telegram-auth.d.ts +2 -0
  116. package/dist/realtime/telegram-auth.d.ts.map +1 -0
  117. package/dist/realtime/telegram-auth.js +24 -0
  118. package/dist/realtime/telegram-auth.js.map +1 -0
  119. package/dist/realtime/tools.d.ts +829 -0
  120. package/dist/realtime/tools.d.ts.map +1 -0
  121. package/dist/realtime/tools.js +630 -0
  122. package/dist/realtime/tools.js.map +1 -0
  123. package/dist/realtime/types.d.ts +62 -0
  124. package/dist/realtime/types.d.ts.map +1 -0
  125. package/dist/realtime/types.js +3 -0
  126. package/dist/realtime/types.js.map +1 -0
  127. package/dist/realtime/voice-summarizer.d.ts +4 -0
  128. package/dist/realtime/voice-summarizer.d.ts.map +1 -0
  129. package/dist/realtime/voice-summarizer.js +129 -0
  130. package/dist/realtime/voice-summarizer.js.map +1 -0
  131. package/dist/restore.d.ts +5 -0
  132. package/dist/restore.d.ts.map +1 -1
  133. package/dist/restore.js +132 -16
  134. package/dist/restore.js.map +1 -1
  135. package/dist/tools/email.d.ts +1 -1
  136. package/dist/tools/memory.d.ts +13 -0
  137. package/dist/tools/memory.d.ts.map +1 -1
  138. package/dist/tools/memory.js +43 -43
  139. package/dist/tools/memory.js.map +1 -1
  140. package/dist/tools/stock-data.d.ts +16 -0
  141. package/dist/tools/stock-data.d.ts.map +1 -1
  142. package/dist/tools/stock-data.js +36 -38
  143. package/dist/tools/stock-data.js.map +1 -1
  144. package/dist/tools/web-fetch.d.ts +4 -0
  145. package/dist/tools/web-fetch.d.ts.map +1 -1
  146. package/dist/tools/web-fetch.js +95 -23
  147. package/dist/tools/web-fetch.js.map +1 -1
  148. package/dist/tos-storage.d.ts +45 -0
  149. package/dist/tos-storage.d.ts.map +1 -0
  150. package/dist/tos-storage.js +134 -0
  151. package/dist/tos-storage.js.map +1 -0
  152. package/dist-agent/bundle.cjs +170934 -167547
  153. package/package.json +3 -2
  154. package/dist/agent/applied-credential-signature.d.ts +0 -53
  155. package/dist/agent/applied-credential-signature.d.ts.map +0 -1
  156. package/dist/agent/applied-credential-signature.js +0 -137
  157. package/dist/agent/applied-credential-signature.js.map +0 -1
  158. package/dist/agent/engines/claude/cli-resolver.d.ts +0 -16
  159. package/dist/agent/engines/claude/cli-resolver.d.ts.map +0 -1
  160. package/dist/agent/engines/claude/cli-resolver.js +0 -83
  161. package/dist/agent/engines/claude/cli-resolver.js.map +0 -1
  162. package/dist/agent/engines/claude/session-browser-policy.d.ts +0 -9
  163. package/dist/agent/engines/claude/session-browser-policy.d.ts.map +0 -1
  164. package/dist/agent/engines/claude/session-browser-policy.js +0 -49
  165. package/dist/agent/engines/claude/session-browser-policy.js.map +0 -1
  166. package/dist/agent/engines/claude/session.d.ts +0 -291
  167. package/dist/agent/engines/claude/session.d.ts.map +0 -1
  168. package/dist/agent/engines/claude/session.js +0 -1177
  169. package/dist/agent/engines/claude/session.js.map +0 -1
  170. package/dist/agent/engines/client-factory.d.ts +0 -63
  171. package/dist/agent/engines/client-factory.d.ts.map +0 -1
  172. package/dist/agent/engines/client-factory.js +0 -382
  173. package/dist/agent/engines/client-factory.js.map +0 -1
  174. package/dist/agent/engines/engine.d.ts +0 -8
  175. package/dist/agent/engines/engine.d.ts.map +0 -1
  176. package/dist/agent/engines/engine.js +0 -15
  177. package/dist/agent/engines/engine.js.map +0 -1
  178. package/dist/agent/engines/openai/file-session.d.ts +0 -49
  179. package/dist/agent/engines/openai/file-session.d.ts.map +0 -1
  180. package/dist/agent/engines/openai/file-session.js +0 -108
  181. package/dist/agent/engines/openai/file-session.js.map +0 -1
  182. package/dist/agent/engines/openai/file-tools.d.ts +0 -35
  183. package/dist/agent/engines/openai/file-tools.d.ts.map +0 -1
  184. package/dist/agent/engines/openai/file-tools.js +0 -194
  185. package/dist/agent/engines/openai/file-tools.js.map +0 -1
  186. package/dist/agent/engines/openai/session.d.ts +0 -190
  187. package/dist/agent/engines/openai/session.d.ts.map +0 -1
  188. package/dist/agent/engines/openai/session.js +0 -1066
  189. package/dist/agent/engines/openai/session.js.map +0 -1
  190. package/dist/agent/engines/openai/tools.d.ts +0 -13
  191. package/dist/agent/engines/openai/tools.d.ts.map +0 -1
  192. package/dist/agent/engines/openai/tools.js +0 -248
  193. package/dist/agent/engines/openai/tools.js.map +0 -1
  194. package/dist/agent/engines/session-types.d.ts +0 -146
  195. package/dist/agent/engines/session-types.d.ts.map +0 -1
  196. package/dist/agent/engines/session-types.js +0 -2
  197. package/dist/agent/engines/session-types.js.map +0 -1
  198. package/dist/agent/engines/system-prompt-log.d.ts +0 -9
  199. package/dist/agent/engines/system-prompt-log.d.ts.map +0 -1
  200. package/dist/agent/engines/system-prompt-log.js +0 -46
  201. package/dist/agent/engines/system-prompt-log.js.map +0 -1
  202. package/dist/agent/transcript/transcript-backfill.d.ts +0 -54
  203. package/dist/agent/transcript/transcript-backfill.d.ts.map +0 -1
  204. package/dist/agent/transcript/transcript-backfill.js +0 -604
  205. package/dist/agent/transcript/transcript-backfill.js.map +0 -1
  206. package/dist/agent/transcript/transcript-indexer.d.ts +0 -273
  207. package/dist/agent/transcript/transcript-indexer.d.ts.map +0 -1
  208. package/dist/agent/transcript/transcript-indexer.js +0 -1217
  209. package/dist/agent/transcript/transcript-indexer.js.map +0 -1
  210. package/dist/agent/transcript/transcript-memory-migrations.d.ts +0 -25
  211. package/dist/agent/transcript/transcript-memory-migrations.d.ts.map +0 -1
  212. package/dist/agent/transcript/transcript-memory-migrations.js +0 -87
  213. package/dist/agent/transcript/transcript-memory-migrations.js.map +0 -1
  214. package/dist/agent/transcript-memory-migrations.d.ts +0 -25
  215. package/dist/agent/transcript-memory-migrations.d.ts.map +0 -1
  216. package/dist/agent/transcript-memory-migrations.js +0 -87
  217. package/dist/agent/transcript-memory-migrations.js.map +0 -1
  218. package/dist/agent/tunnel-credential-handler.d.ts +0 -90
  219. package/dist/agent/tunnel-credential-handler.d.ts.map +0 -1
  220. package/dist/agent/tunnel-credential-handler.js +0 -162
  221. package/dist/agent/tunnel-credential-handler.js.map +0 -1
  222. package/dist/agent/usage/usage-backfill-handler.d.ts +0 -18
  223. package/dist/agent/usage/usage-backfill-handler.d.ts.map +0 -1
  224. package/dist/agent/usage/usage-backfill-handler.js +0 -69
  225. package/dist/agent/usage/usage-backfill-handler.js.map +0 -1
  226. package/dist/agent/usage/usage-gate.d.ts +0 -25
  227. package/dist/agent/usage/usage-gate.d.ts.map +0 -1
  228. package/dist/agent/usage/usage-gate.js +0 -83
  229. package/dist/agent/usage/usage-gate.js.map +0 -1
  230. package/dist/agent/usage/usage-handler.d.ts +0 -7
  231. package/dist/agent/usage/usage-handler.d.ts.map +0 -1
  232. package/dist/agent/usage/usage-handler.js +0 -28
  233. package/dist/agent/usage/usage-handler.js.map +0 -1
  234. package/dist/agent/usage/usage-report-builder.d.ts +0 -26
  235. package/dist/agent/usage/usage-report-builder.d.ts.map +0 -1
  236. package/dist/agent/usage/usage-report-builder.js +0 -80
  237. package/dist/agent/usage/usage-report-builder.js.map +0 -1
  238. package/dist/agent/usage/usage-report-queue.d.ts +0 -26
  239. package/dist/agent/usage/usage-report-queue.d.ts.map +0 -1
  240. package/dist/agent/usage/usage-report-queue.js +0 -199
  241. package/dist/agent/usage/usage-report-queue.js.map +0 -1
  242. package/dist/agent/usage/usage-report-types.d.ts +0 -41
  243. package/dist/agent/usage/usage-report-types.d.ts.map +0 -1
  244. package/dist/agent/usage/usage-report-types.js +0 -2
  245. package/dist/agent/usage/usage-report-types.js.map +0 -1
  246. package/dist/agent/usage/usage-reporter.d.ts +0 -31
  247. package/dist/agent/usage/usage-reporter.d.ts.map +0 -1
  248. package/dist/agent/usage/usage-reporter.js +0 -102
  249. package/dist/agent/usage/usage-reporter.js.map +0 -1
  250. package/dist/agent/usage-backfill-handler.d.ts +0 -18
  251. package/dist/agent/usage-backfill-handler.d.ts.map +0 -1
  252. package/dist/agent/usage-backfill-handler.js +0 -69
  253. package/dist/agent/usage-backfill-handler.js.map +0 -1
  254. package/dist/agent/usage-gate.d.ts +0 -25
  255. package/dist/agent/usage-gate.d.ts.map +0 -1
  256. package/dist/agent/usage-gate.js +0 -83
  257. package/dist/agent/usage-gate.js.map +0 -1
  258. package/dist/agent/usage-report-builder.d.ts +0 -26
  259. package/dist/agent/usage-report-builder.d.ts.map +0 -1
  260. package/dist/agent/usage-report-builder.js +0 -80
  261. package/dist/agent/usage-report-builder.js.map +0 -1
  262. package/dist/agent/usage-report-queue.d.ts +0 -26
  263. package/dist/agent/usage-report-queue.d.ts.map +0 -1
  264. package/dist/agent/usage-report-queue.js +0 -199
  265. package/dist/agent/usage-report-queue.js.map +0 -1
  266. package/dist/agent/usage-report-types.d.ts +0 -41
  267. package/dist/agent/usage-report-types.d.ts.map +0 -1
  268. package/dist/agent/usage-report-types.js +0 -2
  269. package/dist/agent/usage-report-types.js.map +0 -1
  270. package/dist/agent/usage-reporter.d.ts +0 -31
  271. package/dist/agent/usage-reporter.d.ts.map +0 -1
  272. package/dist/agent/usage-reporter.js +0 -102
  273. package/dist/agent/usage-reporter.js.map +0 -1
  274. package/dist/agent/wake-cycle-tool-tracker.d.ts +0 -39
  275. package/dist/agent/wake-cycle-tool-tracker.d.ts.map +0 -1
  276. package/dist/agent/wake-cycle-tool-tracker.js +0 -72
  277. package/dist/agent/wake-cycle-tool-tracker.js.map +0 -1
  278. package/dist/billing/payg-handler.d.ts +0 -29
  279. package/dist/billing/payg-handler.d.ts.map +0 -1
  280. package/dist/billing/payg-handler.js +0 -92
  281. package/dist/billing/payg-handler.js.map +0 -1
  282. package/dist/billing/payment-handler.d.ts +0 -24
  283. package/dist/billing/payment-handler.d.ts.map +0 -1
  284. package/dist/billing/payment-handler.js +0 -101
  285. package/dist/billing/payment-handler.js.map +0 -1
  286. package/dist/builtin-skills/catalog/phone-adb-automation/SKILL.md +0 -412
  287. package/dist/builtin-skills/catalog/phone-adb-automation/phone_input.sh +0 -132
  288. package/dist/builtin-skills/catalog/phone-adb-automation/phone_launch.sh +0 -166
  289. package/dist/builtin-skills/catalog/phone-adb-automation/phone_screenshot.sh +0 -87
  290. package/dist/builtin-skills/catalog/phone-adb-automation/phone_security_kbd.py +0 -174
  291. package/dist/builtin-skills/catalog/phone-adb-automation/phone_setup.sh +0 -274
  292. package/dist/builtin-skills/catalog/phone-adb-automation/phone_swipe.sh +0 -111
  293. package/dist/builtin-skills/catalog/phone-adb-automation/phone_tap.sh +0 -87
  294. package/dist/builtin-skills/catalog/phone-adb-automation/phone_ui_parse.py +0 -176
  295. package/dist/builtin-skills/catalog/phone-adb-automation/phone_wake_unlock.sh +0 -67
  296. package/dist/builtin-skills/transcribe-audio/SKILL.md +0 -122
  297. package/dist/data-processing/convert-demo-cli.d.ts +0 -7
  298. package/dist/data-processing/convert-demo-cli.d.ts.map +0 -1
  299. package/dist/data-processing/convert-demo-cli.js +0 -30
  300. package/dist/data-processing/convert-demo-cli.js.map +0 -1
  301. package/dist/data-processing/convert-demo.d.ts +0 -26
  302. package/dist/data-processing/convert-demo.d.ts.map +0 -1
  303. package/dist/data-processing/convert-demo.js +0 -233
  304. package/dist/data-processing/convert-demo.js.map +0 -1
  305. package/dist/obs/rdp/icons/icons/app_windows.svg +0 -4
  306. package/dist/obs/rdp/icons/icons/clip_get.svg +0 -4
  307. package/dist/obs/rdp/icons/icons/clip_send.svg +0 -4
  308. package/dist/obs/rdp/icons/icons/clip_shared.svg +0 -4
  309. package/dist/obs/rdp/icons/icons/clipboard.svg +0 -4
  310. package/dist/obs/rdp/icons/icons/clipboard_shared.svg +0 -4
  311. package/dist/obs/rdp/icons/icons/control.svg +0 -4
  312. package/dist/obs/rdp/icons/icons/desktop.svg +0 -4
  313. package/dist/obs/rdp/icons/icons/display.svg +0 -4
  314. package/dist/obs/rdp/icons/icons/launchpad.svg +0 -4
  315. package/dist/obs/rdp/icons/icons/mission_control.svg +0 -4
  316. package/dist/obs/rdp/icons/icons/screenshot.svg +0 -4
  317. package/dist/obs/rdp/icons/icons/zoom_actual.svg +0 -4
  318. package/dist/obs/rdp/icons/icons/zoom_fit.svg +0 -4
  319. package/dist/obs/rdp/icons/icons/zoom_in.svg +0 -4
  320. package/dist/obs/rdp/icons/icons/zoom_out.svg +0 -4
  321. package/dist/obs/tunnel-telemetry.d.ts +0 -46
  322. package/dist/obs/tunnel-telemetry.d.ts.map +0 -1
  323. package/dist/obs/tunnel-telemetry.js +0 -70
  324. package/dist/obs/tunnel-telemetry.js.map +0 -1
  325. package/dist/onboarding/cloudflared-cert.d.ts +0 -15
  326. package/dist/onboarding/cloudflared-cert.d.ts.map +0 -1
  327. package/dist/onboarding/cloudflared-cert.js +0 -57
  328. package/dist/onboarding/cloudflared-cert.js.map +0 -1
  329. package/dist/onboarding/playwriter-extension.d.ts +0 -19
  330. package/dist/onboarding/playwriter-extension.d.ts.map +0 -1
  331. package/dist/onboarding/playwriter-extension.js +0 -246
  332. package/dist/onboarding/playwriter-extension.js.map +0 -1
  333. package/dist/service/gbox-tun.d.ts +0 -14
  334. package/dist/service/gbox-tun.d.ts.map +0 -1
  335. package/dist/service/gbox-tun.js +0 -315
  336. package/dist/service/gbox-tun.js.map +0 -1
  337. package/dist/skills/installed.d.ts +0 -11
  338. package/dist/skills/installed.d.ts.map +0 -1
  339. package/dist/skills/installed.js +0 -35
  340. package/dist/skills/installed.js.map +0 -1
  341. package/dist/tools/coordinate-resolver.d.ts +0 -30
  342. package/dist/tools/coordinate-resolver.d.ts.map +0 -1
  343. package/dist/tools/coordinate-resolver.js +0 -104
  344. package/dist/tools/coordinate-resolver.js.map +0 -1
  345. package/dist/utils/playwriter-relay.d.ts +0 -9
  346. package/dist/utils/playwriter-relay.d.ts.map +0 -1
  347. package/dist/utils/playwriter-relay.js +0 -77
  348. package/dist/utils/playwriter-relay.js.map +0 -1
  349. package/dist/utils/wechat-monitor.d.ts +0 -21
  350. package/dist/utils/wechat-monitor.d.ts.map +0 -1
  351. package/dist/utils/wechat-monitor.js +0 -88
  352. package/dist/utils/wechat-monitor.js.map +0 -1
@@ -1,69 +0,0 @@
1
- /**
2
- * Usage backfill handler — builds usage reports from stored wake cycle
3
- * records and uploads them directly to the onboarding server.
4
- *
5
- * For legacy rows that lack `tool_calls_json`, the handler attempts to
6
- * reconstruct tool calls by reading transcript lines from live or archived
7
- * transcript files (via `readWakeCycleTranscriptLines`).
8
- *
9
- * Backfill does NOT enqueue into usage.db and does NOT mutate
10
- * `usage_reported`. Server-side deduplication by `wakeCycleId` handles
11
- * any overlap with heartbeat-uploaded reports.
12
- */
13
- import { OnboardingServiceClient } from "../../onboarding/onboarding-service-client.js";
14
- import { logger } from "../../logger.js";
15
- import { listWakeCyclesForUsageBackfill, readWakeCycleTranscriptLines, extractToolCallsFromLines, updateWakeCycleToolCallsJson, } from "../transcript/transcript-indexer.js";
16
- import { buildWakeCycleUsageReportFromRecord } from "./usage-report-builder.js";
17
- const MAX_BACKFILL_REPORTS = 5_000;
18
- export function createUsageBackfillHandler(config) {
19
- return async () => {
20
- if (!config.onboardingServiceUrl || !config.visionclawServiceApiKey) {
21
- return { status: "failed", result: JSON.stringify({ error: "onboarding service credentials unavailable" }) };
22
- }
23
- const rows = listWakeCyclesForUsageBackfill(MAX_BACKFILL_REPORTS);
24
- const usageReports = [];
25
- for (const row of rows) {
26
- let overrideToolCalls;
27
- // If tool_calls_json is missing, attempt reconstruction from transcripts
28
- if (!row.tool_calls_json) {
29
- if (row.source_file && row.start_line > 0 && row.end_line > row.start_line) {
30
- try {
31
- const lines = await readWakeCycleTranscriptLines(row.source_file, row.start_line, row.end_line, row.timestamp_start);
32
- if (lines.length > 0) {
33
- const extracted = extractToolCallsFromLines(lines, {
34
- cycleStartedAt: row.timestamp_start,
35
- cycleEndedAt: row.timestamp_end,
36
- });
37
- overrideToolCalls = extracted.toolCalls;
38
- // Persist reconstructed tool calls for future backfills
39
- try {
40
- updateWakeCycleToolCallsJson(row.wake_cycle_id, JSON.stringify(extracted.toolCalls));
41
- }
42
- catch {
43
- // best-effort persistence — non-fatal
44
- }
45
- }
46
- }
47
- catch (err) {
48
- logger.warn(`[usage-backfill] Could not reconstruct tool calls for ${row.wake_cycle_id}: ${err instanceof Error ? err.message : String(err)}`);
49
- }
50
- }
51
- // If reconstruction failed or no source file, overrideToolCalls
52
- // remains undefined and buildWakeCycleUsageReportFromRecord will
53
- // produce empty tool calls from the NULL tool_calls_json.
54
- }
55
- usageReports.push(buildWakeCycleUsageReportFromRecord({
56
- row,
57
- config,
58
- overrideToolCalls,
59
- }));
60
- }
61
- const client = new OnboardingServiceClient(config.onboardingServiceUrl, config.agentName, config.visionclawServiceApiKey);
62
- const ok = await client.sendUsageBackfill(usageReports);
63
- if (!ok)
64
- return { status: "failed", result: JSON.stringify({ error: "backfill upload failed" }) };
65
- logger.system(`Usage backfill uploaded ${usageReports.length} wake cycle report(s)`);
66
- return { status: "completed", result: JSON.stringify({ count: usageReports.length }) };
67
- };
68
- }
69
- //# sourceMappingURL=usage-backfill-handler.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"usage-backfill-handler.js","sourceRoot":"","sources":["../../../src/agent/usage/usage-backfill-handler.ts"],"names":[],"mappings":"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"}
@@ -1,25 +0,0 @@
1
- import type { VisionClawConfig } from "../../config/types.js";
2
- import type { ChannelManager } from "../../channels/manager.js";
3
- import type { HeartbeatManager } from "../heartbeat-manager.js";
4
- import type { UsageStatus } from "./usage-report-types.js";
5
- export declare const USAGE_GATE_MESSAGE = "Your WorkUnit (WU) allowance for this period has been used up. Please upgrade your plan or buy a WU bundle to continue.";
6
- /**
7
- * Determine whether the usage gate should block new Claude wake cycles.
8
- *
9
- * The usage gate is subordinate to the billing/subscription gate:
10
- * - If billing is "skip" (disabled), the usage gate is never enforced,
11
- * regardless of metered usage.
12
- * - If billing is "expired", the subscription gate takes priority; the
13
- * usage gate should not fire until the subscription is resolved.
14
- *
15
- * Enforcement requires ALL of:
16
- * - subscriptionStatus is "active" (billing is on and subscription valid)
17
- * - status is "exhausted" (WU used >= available WU)
18
- * - coverage is "complete" or "cutover" — meaning the server has
19
- * sufficient data to trust the metering result. "partial" coverage
20
- * is intentionally excluded because historical data may be incomplete
21
- * and gating the user on inaccurate numbers would be wrong.
22
- */
23
- export declare function shouldEnforceUsageGate(usageStatus: UsageStatus | undefined, subscriptionStatus?: string): boolean;
24
- export declare function runUsageGate(config: VisionClawConfig, channelManager: ChannelManager, heartbeat: HeartbeatManager): Promise<void>;
25
- //# sourceMappingURL=usage-gate.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"usage-gate.d.ts","sourceRoot":"","sources":["../../../src/agent/usage/usage-gate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAO3D,eAAO,MAAM,kBAAkB,4HAA4H,CAAC;AAE5J;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,WAAW,GAAG,SAAS,EACpC,kBAAkB,CAAC,EAAE,MAAM,GAC1B,OAAO,CAKT;AAED,wBAAsB,YAAY,CAChC,MAAM,EAAE,gBAAgB,EACxB,cAAc,EAAE,cAAc,EAC9B,SAAS,EAAE,gBAAgB,GAC1B,OAAO,CAAC,IAAI,CAAC,CA+Cf"}
@@ -1,83 +0,0 @@
1
- import { loadOwnerConfig, buildPricingUrl } from "../../config/index.js";
2
- import { getAgentState } from "../state.js";
3
- import { logger } from "../../logger.js";
4
- const GATE_POLL_INTERVAL_MS = 10_000;
5
- export const USAGE_GATE_MESSAGE = "Your WorkUnit (WU) allowance for this period has been used up. Please upgrade your plan or buy a WU bundle to continue.";
6
- /**
7
- * Determine whether the usage gate should block new Claude wake cycles.
8
- *
9
- * The usage gate is subordinate to the billing/subscription gate:
10
- * - If billing is "skip" (disabled), the usage gate is never enforced,
11
- * regardless of metered usage.
12
- * - If billing is "expired", the subscription gate takes priority; the
13
- * usage gate should not fire until the subscription is resolved.
14
- *
15
- * Enforcement requires ALL of:
16
- * - subscriptionStatus is "active" (billing is on and subscription valid)
17
- * - status is "exhausted" (WU used >= available WU)
18
- * - coverage is "complete" or "cutover" — meaning the server has
19
- * sufficient data to trust the metering result. "partial" coverage
20
- * is intentionally excluded because historical data may be incomplete
21
- * and gating the user on inaccurate numbers would be wrong.
22
- */
23
- export function shouldEnforceUsageGate(usageStatus, subscriptionStatus) {
24
- // Usage gate only applies when billing is active. "skip" means billing
25
- // is turned off; "expired" is handled by the subscription gate first.
26
- if (subscriptionStatus !== "active")
27
- return false;
28
- return usageStatus?.status === "exhausted" && (usageStatus.coverage === "complete" || usageStatus.coverage === "cutover");
29
- }
30
- export async function runUsageGate(config, channelManager, heartbeat) {
31
- const ownerConfig = loadOwnerConfig();
32
- const agentState = getAgentState();
33
- agentState.gated = true;
34
- try {
35
- logger.system("Usage exhausted — entering usage gate (no Claude API calls)");
36
- const pricingUrl = buildPricingUrl(config);
37
- const message = `${USAGE_GATE_MESSAGE}\n\nBrowse plans or top up: ${pricingUrl}`;
38
- try {
39
- if (ownerConfig.telegramChatId) {
40
- const plans = heartbeat.lastBillingPlans;
41
- if (plans.length > 0) {
42
- await channelManager.sendTelegramPaymentPrompt(ownerConfig.telegramChatId, { message, plans });
43
- }
44
- else {
45
- await channelManager.sendMessage("telegram", String(ownerConfig.telegramChatId), message);
46
- }
47
- }
48
- else if (ownerConfig.ownerEmail) {
49
- await channelManager.sendMessage("gmail", ownerConfig.ownerEmail, message);
50
- }
51
- }
52
- catch {
53
- logger.warn("Failed to send usage gate notification to owner");
54
- }
55
- await heartbeat.stopRuntime();
56
- try {
57
- let status = heartbeat.lastUsageStatus;
58
- while (status?.status === "exhausted") {
59
- await new Promise((resolve) => setTimeout(resolve, GATE_POLL_INTERVAL_MS));
60
- status = await heartbeat.sendHeartbeatForUsageGate();
61
- if (status?.status !== "exhausted")
62
- break;
63
- logger.debug(`Usage gate: still exhausted, polling again in ${GATE_POLL_INTERVAL_MS / 1000}s`);
64
- }
65
- }
66
- finally {
67
- heartbeat.startRuntime(() => agentState.busy);
68
- }
69
- logger.system("Usage gate cleared — exiting usage gate");
70
- try {
71
- if (ownerConfig.telegramChatId) {
72
- await channelManager.sendMessage("telegram", String(ownerConfig.telegramChatId), "Usage balance updated. I can continue now.");
73
- }
74
- }
75
- catch {
76
- logger.warn("Failed to send usage gate cleared notification");
77
- }
78
- }
79
- finally {
80
- agentState.gated = false;
81
- }
82
- }
83
- //# sourceMappingURL=usage-gate.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"usage-gate.js","sourceRoot":"","sources":["../../../src/agent/usage/usage-gate.ts"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- import type { CommandHandler } from "../command-dispatcher.js";
2
- /**
3
- * Creates a CommandHandler for the "usage" remote command.
4
- * Delegates to buildToolUsageReport() — the same logic used by the /usage Telegram command.
5
- */
6
- export declare function createUsageHandler(): CommandHandler;
7
- //# sourceMappingURL=usage-handler.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"usage-handler.d.ts","sourceRoot":"","sources":["../../../src/agent/usage/usage-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAG/D;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,cAAc,CAoBnD"}
@@ -1,28 +0,0 @@
1
- import { logger } from "../../logger.js";
2
- /**
3
- * Creates a CommandHandler for the "usage" remote command.
4
- * Delegates to buildToolUsageReport() — the same logic used by the /usage Telegram command.
5
- */
6
- export function createUsageHandler() {
7
- return async (_commandId, _payload) => {
8
- try {
9
- logger.system("[usage-handler] Received remote usage command");
10
- const { buildToolUsageReport } = await import("../tool-usage.js");
11
- const report = await buildToolUsageReport();
12
- logger.system("[usage-handler] Usage report generated successfully");
13
- return {
14
- status: "completed",
15
- result: JSON.stringify({ message: report }),
16
- };
17
- }
18
- catch (err) {
19
- const errMsg = err instanceof Error ? err.message : String(err);
20
- logger.err(`[usage-handler] Failed to generate usage report: ${errMsg}`);
21
- return {
22
- status: "failed",
23
- result: JSON.stringify({ error: errMsg }),
24
- };
25
- }
26
- };
27
- }
28
- //# sourceMappingURL=usage-handler.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"usage-handler.js","sourceRoot":"","sources":["../../../src/agent/usage/usage-handler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEzC;;;GAGG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO,KAAK,EAAE,UAAkB,EAAE,QAAiB,EAAE,EAAE;QACrD,IAAI,CAAC;YACH,MAAM,CAAC,MAAM,CAAC,+CAA+C,CAAC,CAAC;YAC/D,MAAM,EAAE,oBAAoB,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;YAClE,MAAM,MAAM,GAAG,MAAM,oBAAoB,EAAE,CAAC;YAC5C,MAAM,CAAC,MAAM,CAAC,qDAAqD,CAAC,CAAC;YACrE,OAAO;gBACL,MAAM,EAAE,WAAoB;gBAC5B,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;aAC5C,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,MAAM,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAChE,MAAM,CAAC,GAAG,CAAC,oDAAoD,MAAM,EAAE,CAAC,CAAC;YACzE,OAAO;gBACL,MAAM,EAAE,QAAiB;gBACzB,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;aAC1C,CAAC;QACJ,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
@@ -1,26 +0,0 @@
1
- /**
2
- * Shared usage report builder — constructs a `WakeCycleUsageReport` from
3
- * a stored `WakeCycleRecord` row in `transcript_memory.db`.
4
- *
5
- * Used by:
6
- * - `UsageReporter` (background scan → enqueue into usage.db)
7
- * - `usage-backfill-handler` (direct server upload)
8
- */
9
- import type { VisionClawConfig } from "../../config/types.js";
10
- import { type ToolCallFact, type WakeCycleUsageReport } from "./usage-report-types.js";
11
- import type { WakeCycleRecord } from "../transcript/transcript-indexer.js";
12
- /**
13
- * Build a `WakeCycleUsageReport` from a stored wake cycle record.
14
- *
15
- * If `tool_calls_json` is missing or invalid, the report is built with
16
- * empty tool calls — the server will mark coverage as `missing_tool_calls`.
17
- *
18
- * If `overrideToolCalls` is provided, it takes precedence over the stored
19
- * JSON (used when backfill reconstructs tool calls from archived transcripts).
20
- */
21
- export declare function buildWakeCycleUsageReportFromRecord(input: {
22
- row: WakeCycleRecord;
23
- config: VisionClawConfig;
24
- overrideToolCalls?: ToolCallFact[];
25
- }): WakeCycleUsageReport;
26
- //# sourceMappingURL=usage-report-builder.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"usage-report-builder.d.ts","sourceRoot":"","sources":["../../../src/agent/usage/usage-report-builder.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAEL,KAAK,YAAY,EACjB,KAAK,oBAAoB,EAC1B,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAiC3E;;;;;;;;GAQG;AACH,wBAAgB,mCAAmC,CAAC,KAAK,EAAE;IACzD,GAAG,EAAE,eAAe,CAAC;IACrB,MAAM,EAAE,gBAAgB,CAAC;IACzB,iBAAiB,CAAC,EAAE,YAAY,EAAE,CAAC;CACpC,GAAG,oBAAoB,CA6BvB"}
@@ -1,80 +0,0 @@
1
- /**
2
- * Shared usage report builder — constructs a `WakeCycleUsageReport` from
3
- * a stored `WakeCycleRecord` row in `transcript_memory.db`.
4
- *
5
- * Used by:
6
- * - `UsageReporter` (background scan → enqueue into usage.db)
7
- * - `usage-backfill-handler` (direct server upload)
8
- */
9
- import { USAGE_REPORT_SCHEMA_VERSION, } from "./usage-report-types.js";
10
- function getCurrentVersionSafe() {
11
- try {
12
- return process.env.npm_package_version;
13
- }
14
- catch {
15
- return undefined;
16
- }
17
- }
18
- function durationSeconds(start, end) {
19
- const startMs = new Date(start).getTime();
20
- const endMs = new Date(end).getTime();
21
- if (Number.isNaN(startMs) || Number.isNaN(endMs) || endMs < startMs)
22
- return 0;
23
- return Math.max(0, Math.round((endMs - startMs) / 1000));
24
- }
25
- /**
26
- * Parse `tool_calls_json` from a wake cycle record.
27
- *
28
- * Returns an empty array if the JSON is null, empty, or invalid.
29
- */
30
- function parseToolCallsJson(json) {
31
- if (!json)
32
- return [];
33
- try {
34
- const parsed = JSON.parse(json);
35
- if (!Array.isArray(parsed))
36
- return [];
37
- return parsed;
38
- }
39
- catch {
40
- return [];
41
- }
42
- }
43
- /**
44
- * Build a `WakeCycleUsageReport` from a stored wake cycle record.
45
- *
46
- * If `tool_calls_json` is missing or invalid, the report is built with
47
- * empty tool calls — the server will mark coverage as `missing_tool_calls`.
48
- *
49
- * If `overrideToolCalls` is provided, it takes precedence over the stored
50
- * JSON (used when backfill reconstructs tool calls from archived transcripts).
51
- */
52
- export function buildWakeCycleUsageReportFromRecord(input) {
53
- const { row, config, overrideToolCalls } = input;
54
- const toolCalls = overrideToolCalls ?? parseToolCallsJson(row.tool_calls_json);
55
- const toolCallCount = overrideToolCalls
56
- ? overrideToolCalls.length
57
- : (row.tool_call_count || toolCalls.length);
58
- return {
59
- schemaVersion: USAGE_REPORT_SCHEMA_VERSION,
60
- wakeCycleId: row.wake_cycle_id,
61
- sessionType: row.session_type,
62
- startedAt: row.timestamp_start,
63
- endedAt: row.timestamp_end,
64
- durationSeconds: durationSeconds(row.timestamp_start, row.timestamp_end),
65
- triggerType: row.trigger_type ?? undefined,
66
- triggerChannel: row.trigger_channel ?? undefined,
67
- toolCalls,
68
- toolCallCount,
69
- ...(row.tool_calls_truncated
70
- ? {
71
- toolCallsTruncated: true,
72
- reportedToolCallCount: row.reported_tool_call_count ?? toolCalls.length,
73
- }
74
- : {}),
75
- outcome: row.outcome ?? "completed",
76
- agentVersion: getCurrentVersionSafe(),
77
- modelId: config.model,
78
- };
79
- }
80
- //# sourceMappingURL=usage-report-builder.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"usage-report-builder.js","sourceRoot":"","sources":["../../../src/agent/usage/usage-report-builder.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EACL,2BAA2B,GAG5B,MAAM,yBAAyB,CAAC;AAGjC,SAAS,qBAAqB;IAC5B,IAAI,CAAC;QACH,OAAO,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;IACzC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,KAAa,EAAE,GAAW;IACjD,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;IAC1C,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;IACtC,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,OAAO;QAAE,OAAO,CAAC,CAAC;IAC9E,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED;;;;GAIG;AACH,SAAS,kBAAkB,CAAC,IAAmB;IAC7C,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IACrB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAY,CAAC;QAC3C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YAAE,OAAO,EAAE,CAAC;QACtC,OAAO,MAAwB,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,mCAAmC,CAAC,KAInD;IACC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,iBAAiB,EAAE,GAAG,KAAK,CAAC;IAEjD,MAAM,SAAS,GAAG,iBAAiB,IAAI,kBAAkB,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAC/E,MAAM,aAAa,GAAG,iBAAiB;QACrC,CAAC,CAAC,iBAAiB,CAAC,MAAM;QAC1B,CAAC,CAAC,CAAC,GAAG,CAAC,eAAe,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC;IAE9C,OAAO;QACL,aAAa,EAAE,2BAA2B;QAC1C,WAAW,EAAE,GAAG,CAAC,aAAa;QAC9B,WAAW,EAAE,GAAG,CAAC,YAAY;QAC7B,SAAS,EAAE,GAAG,CAAC,eAAe;QAC9B,OAAO,EAAE,GAAG,CAAC,aAAa;QAC1B,eAAe,EAAE,eAAe,CAAC,GAAG,CAAC,eAAe,EAAE,GAAG,CAAC,aAAa,CAAC;QACxE,WAAW,EAAE,GAAG,CAAC,YAAY,IAAI,SAAS;QAC1C,cAAc,EAAE,GAAG,CAAC,eAAe,IAAI,SAAS;QAChD,SAAS;QACT,aAAa;QACb,GAAG,CAAC,GAAG,CAAC,oBAAoB;YAC1B,CAAC,CAAC;gBACE,kBAAkB,EAAE,IAAI;gBACxB,qBAAqB,EAAE,GAAG,CAAC,wBAAwB,IAAI,SAAS,CAAC,MAAM;aACxE;YACH,CAAC,CAAC,EAAE,CAAC;QACP,OAAO,EAAG,GAAG,CAAC,OAA2C,IAAI,WAAW;QACxE,YAAY,EAAE,qBAAqB,EAAE;QACrC,OAAO,EAAE,MAAM,CAAC,KAAK;KACtB,CAAC;AACJ,CAAC"}
@@ -1,26 +0,0 @@
1
- import type { WakeCycleUsageReport } from "./usage-report-types.js";
2
- export type UsageReportQueueStatus = "pending" | "inflight" | "stale" | "rejected" | "acked";
3
- export interface UsageReportQueueRow {
4
- wakeCycleId: string;
5
- report: WakeCycleUsageReport;
6
- status: UsageReportQueueStatus;
7
- attemptCount: number;
8
- lastAttemptAt: string | null;
9
- lastError: string | null;
10
- createdAt: string;
11
- ackedAt: string | null;
12
- reportSchemaVersion: number;
13
- }
14
- export declare function enqueueUsageReport(report: WakeCycleUsageReport): void;
15
- export declare function listPendingUsageReports(limit: number): UsageReportQueueRow[];
16
- export declare function markUsageReportsInflight(ids: string[]): void;
17
- export declare function markUsageReportsAcked(ids: string[]): void;
18
- export declare function markUsageReportsRejected(rejections: {
19
- wakeCycleId: string;
20
- reason: string;
21
- }[]): void;
22
- export declare function releaseStaleInflightUsageReports(timeoutMs: number): void;
23
- export declare function releaseInflightUsageReports(ids: string[], reason: string): void;
24
- export declare function markUsageReportsStaleOlderThan(days: number): void;
25
- export declare function closeUsageReportQueue(): void;
26
- //# sourceMappingURL=usage-report-queue.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"usage-report-queue.d.ts","sourceRoot":"","sources":["../../../src/agent/usage/usage-report-queue.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAEpE,MAAM,MAAM,sBAAsB,GAAG,SAAS,GAAG,UAAU,GAAG,OAAO,GAAG,UAAU,GAAG,OAAO,CAAC;AAE7F,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,oBAAoB,CAAC;IAC7B,MAAM,EAAE,sBAAsB,CAAC;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAqGD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,oBAAoB,GAAG,IAAI,CAerE;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,mBAAmB,EAAE,CAwB5E;AAED,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,CAK5D;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,CAKzD;AAED,wBAAgB,wBAAwB,CAAC,UAAU,EAAE;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EAAE,GAAG,IAAI,CAIpG;AAED,wBAAgB,gCAAgC,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAIxE;AAED,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAI/E;AAED,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAIjE;AAED,wBAAgB,qBAAqB,IAAI,IAAI,CAiB5C"}
@@ -1,199 +0,0 @@
1
- import { DatabaseSync } from "node:sqlite";
2
- import path from "node:path";
3
- import { getConfigDir } from "../../config/index.js";
4
- import { logger } from "../../logger.js";
5
- let db = null;
6
- let stmtInsert = null;
7
- let stmtListPending = null;
8
- let stmtMarkInflight = null;
9
- let stmtMarkAcked = null;
10
- let stmtMarkRejected = null;
11
- let stmtReleaseStale = null;
12
- let stmtReleaseByIds = null;
13
- let stmtMarkOldStale = null;
14
- function requireStatement(stmt, name) {
15
- if (!stmt)
16
- throw new Error(`Usage report queue statement not initialized: ${name}`);
17
- return stmt;
18
- }
19
- function getDb() {
20
- if (db)
21
- return db;
22
- const dbPath = path.join(getConfigDir(), "usage.db");
23
- db = new DatabaseSync(dbPath);
24
- db.exec("PRAGMA journal_mode = WAL");
25
- db.exec(`
26
- CREATE TABLE IF NOT EXISTS usage_reports (
27
- wake_cycle_id TEXT PRIMARY KEY,
28
- report_json TEXT NOT NULL,
29
- status TEXT NOT NULL DEFAULT 'pending',
30
- attempt_count INTEGER NOT NULL DEFAULT 0,
31
- last_attempt_at TEXT,
32
- last_error TEXT,
33
- created_at TEXT NOT NULL,
34
- acked_at TEXT,
35
- report_schema_version INTEGER NOT NULL,
36
- session_type TEXT,
37
- started_at TEXT,
38
- ended_at TEXT,
39
- duration_seconds INTEGER,
40
- trigger_type TEXT,
41
- trigger_channel TEXT,
42
- trigger_message_id TEXT
43
- )
44
- `);
45
- db.exec("CREATE INDEX IF NOT EXISTS idx_usage_reports_status_created ON usage_reports(status, created_at)");
46
- try {
47
- db.exec("ALTER TABLE usage_reports ADD COLUMN session_type TEXT");
48
- }
49
- catch { /* already migrated */ }
50
- try {
51
- db.exec("ALTER TABLE usage_reports ADD COLUMN started_at TEXT");
52
- }
53
- catch { /* already migrated */ }
54
- try {
55
- db.exec("ALTER TABLE usage_reports ADD COLUMN ended_at TEXT");
56
- }
57
- catch { /* already migrated */ }
58
- try {
59
- db.exec("ALTER TABLE usage_reports ADD COLUMN duration_seconds INTEGER");
60
- }
61
- catch { /* already migrated */ }
62
- try {
63
- db.exec("ALTER TABLE usage_reports ADD COLUMN trigger_type TEXT");
64
- }
65
- catch { /* already migrated */ }
66
- try {
67
- db.exec("ALTER TABLE usage_reports ADD COLUMN trigger_channel TEXT");
68
- }
69
- catch { /* already migrated */ }
70
- try {
71
- db.exec("ALTER TABLE usage_reports ADD COLUMN trigger_message_id TEXT");
72
- }
73
- catch { /* already migrated */ }
74
- stmtInsert = db.prepare(`
75
- INSERT INTO usage_reports (
76
- wake_cycle_id,
77
- report_json,
78
- status,
79
- attempt_count,
80
- created_at,
81
- report_schema_version,
82
- session_type,
83
- started_at,
84
- ended_at,
85
- duration_seconds,
86
- trigger_type,
87
- trigger_channel,
88
- trigger_message_id
89
- ) VALUES (?, ?, 'pending', 0, ?, ?, ?, ?, ?, ?, ?, ?, ?)
90
- ON CONFLICT(wake_cycle_id) DO NOTHING
91
- `);
92
- stmtListPending = db.prepare(`
93
- SELECT wake_cycle_id, report_json, status, attempt_count, last_attempt_at, last_error, created_at, acked_at, report_schema_version
94
- FROM usage_reports
95
- WHERE status IN ('pending', 'stale')
96
- ORDER BY created_at ASC
97
- LIMIT ?
98
- `);
99
- stmtMarkInflight = db.prepare(`
100
- UPDATE usage_reports
101
- SET status = 'inflight', attempt_count = attempt_count + 1, last_attempt_at = ?, last_error = NULL
102
- WHERE wake_cycle_id = ? AND status IN ('pending', 'stale')
103
- `);
104
- stmtMarkAcked = db.prepare("UPDATE usage_reports SET status = 'acked', acked_at = ?, last_error = NULL WHERE wake_cycle_id = ?");
105
- stmtMarkRejected = db.prepare("UPDATE usage_reports SET status = 'rejected', last_error = ? WHERE wake_cycle_id = ?");
106
- stmtReleaseStale = db.prepare(`
107
- UPDATE usage_reports
108
- SET status = 'pending', last_error = 'inflight_timeout'
109
- WHERE status = 'inflight' AND last_attempt_at <= ?
110
- `);
111
- stmtReleaseByIds = db.prepare(`
112
- UPDATE usage_reports
113
- SET status = 'pending', last_error = ?
114
- WHERE status = 'inflight' AND wake_cycle_id = ?
115
- `);
116
- stmtMarkOldStale = db.prepare(`
117
- UPDATE usage_reports
118
- SET status = 'stale', last_error = 'retention_expired'
119
- WHERE status IN ('pending', 'inflight') AND created_at < ?
120
- `);
121
- return db;
122
- }
123
- export function enqueueUsageReport(report) {
124
- getDb();
125
- requireStatement(stmtInsert, "insert").run(report.wakeCycleId, JSON.stringify(report), new Date().toISOString(), report.schemaVersion, report.sessionType, report.startedAt, report.endedAt, report.durationSeconds, report.triggerType ?? null, report.triggerChannel ?? null, null);
126
- }
127
- export function listPendingUsageReports(limit) {
128
- getDb();
129
- const rows = requireStatement(stmtListPending, "listPending").all(Math.max(1, limit));
130
- return rows.map((row) => ({
131
- wakeCycleId: row.wake_cycle_id,
132
- report: JSON.parse(row.report_json),
133
- status: row.status,
134
- attemptCount: row.attempt_count,
135
- lastAttemptAt: row.last_attempt_at,
136
- lastError: row.last_error,
137
- createdAt: row.created_at,
138
- ackedAt: row.acked_at,
139
- reportSchemaVersion: row.report_schema_version,
140
- }));
141
- }
142
- export function markUsageReportsInflight(ids) {
143
- getDb();
144
- const now = new Date().toISOString();
145
- const stmt = requireStatement(stmtMarkInflight, "markInflight");
146
- for (const id of ids)
147
- stmt.run(now, id);
148
- }
149
- export function markUsageReportsAcked(ids) {
150
- getDb();
151
- const now = new Date().toISOString();
152
- const stmt = requireStatement(stmtMarkAcked, "markAcked");
153
- for (const id of ids)
154
- stmt.run(now, id);
155
- }
156
- export function markUsageReportsRejected(rejections) {
157
- getDb();
158
- const stmt = requireStatement(stmtMarkRejected, "markRejected");
159
- for (const rejection of rejections)
160
- stmt.run(rejection.reason, rejection.wakeCycleId);
161
- }
162
- export function releaseStaleInflightUsageReports(timeoutMs) {
163
- getDb();
164
- const cutoff = new Date(Date.now() - timeoutMs).toISOString();
165
- requireStatement(stmtReleaseStale, "releaseStale").run(cutoff);
166
- }
167
- export function releaseInflightUsageReports(ids, reason) {
168
- getDb();
169
- const stmt = requireStatement(stmtReleaseByIds, "releaseByIds");
170
- for (const id of ids)
171
- stmt.run(reason, id);
172
- }
173
- export function markUsageReportsStaleOlderThan(days) {
174
- getDb();
175
- const cutoff = new Date(Date.now() - days * 24 * 60 * 60 * 1000).toISOString();
176
- requireStatement(stmtMarkOldStale, "markOldStale").run(cutoff);
177
- }
178
- export function closeUsageReportQueue() {
179
- if (!db)
180
- return;
181
- try {
182
- db.close();
183
- }
184
- catch (err) {
185
- logger.warn(`Failed to close usage report queue: ${err instanceof Error ? err.message : String(err)}`);
186
- }
187
- finally {
188
- db = null;
189
- stmtInsert = null;
190
- stmtListPending = null;
191
- stmtMarkInflight = null;
192
- stmtMarkAcked = null;
193
- stmtMarkRejected = null;
194
- stmtReleaseStale = null;
195
- stmtReleaseByIds = null;
196
- stmtMarkOldStale = null;
197
- }
198
- }
199
- //# sourceMappingURL=usage-report-queue.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"usage-report-queue.js","sourceRoot":"","sources":["../../../src/agent/usage/usage-report-queue.ts"],"names":[],"mappings":"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"}
@@ -1,41 +0,0 @@
1
- export declare const USAGE_REPORT_SCHEMA_VERSION = 2;
2
- export interface ToolCallFact {
3
- toolName: string;
4
- toolUseId?: string;
5
- parentToolUseId?: string;
6
- startedAt: string;
7
- endedAt: string;
8
- success: boolean;
9
- errorKind?: string;
10
- }
11
- export interface WakeCycleUsageReport {
12
- schemaVersion: number;
13
- wakeCycleId: string;
14
- sessionType: string;
15
- startedAt: string;
16
- endedAt: string;
17
- durationSeconds: number;
18
- triggerType?: string;
19
- triggerChannel?: string;
20
- toolCalls: ToolCallFact[];
21
- toolCallCount: number;
22
- toolCallsTruncated?: boolean;
23
- reportedToolCallCount?: number;
24
- outcome?: "completed" | "error" | "stopped" | "switched";
25
- agentVersion?: string;
26
- modelId?: string;
27
- }
28
- export interface RejectedUsageReport {
29
- wakeCycleId: string;
30
- reason: string;
31
- }
32
- export interface UsageStatus {
33
- status: "active" | "exhausted" | "skip";
34
- wuUsed: number;
35
- wuLimit: number | null;
36
- bundleWuRemaining: number;
37
- periodStart: string | null;
38
- periodEnd: string | null;
39
- coverage: "complete" | "partial" | "cutover";
40
- }
41
- //# sourceMappingURL=usage-report-types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"usage-report-types.d.ts","sourceRoot":"","sources":["../../../src/agent/usage/usage-report-types.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,2BAA2B,IAAI,CAAC;AAE7C,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,YAAY,EAAE,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,GAAG,SAAS,GAAG,UAAU,CAAC;IACzD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,QAAQ,GAAG,WAAW,GAAG,MAAM,CAAC;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,UAAU,GAAG,SAAS,GAAG,SAAS,CAAC;CAC9C"}