visionclaw 0.1.208-beta.8 → 0.1.208

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 (504) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/agent/applied-credential-signature.d.ts +53 -0
  3. package/dist/agent/applied-credential-signature.d.ts.map +1 -0
  4. package/dist/agent/applied-credential-signature.js +137 -0
  5. package/dist/agent/applied-credential-signature.js.map +1 -0
  6. package/dist/agent/engine-switch-handler.d.ts +3 -2
  7. package/dist/agent/engine-switch-handler.d.ts.map +1 -1
  8. package/dist/agent/engine-switch-handler.js +10 -10
  9. package/dist/agent/engine-switch-handler.js.map +1 -1
  10. package/dist/agent/engine-switch-target.d.ts +11 -23
  11. package/dist/agent/engine-switch-target.d.ts.map +1 -1
  12. package/dist/agent/engine-switch-target.js +36 -40
  13. package/dist/agent/engine-switch-target.js.map +1 -1
  14. package/dist/agent/engines/claude/session-browser-policy.d.ts +9 -10
  15. package/dist/agent/engines/claude/session-browser-policy.d.ts.map +1 -1
  16. package/dist/agent/engines/claude/session-browser-policy.js +95 -17
  17. package/dist/agent/engines/claude/session-browser-policy.js.map +1 -1
  18. package/dist/agent/engines/client-factory.d.ts +63 -0
  19. package/dist/agent/engines/client-factory.d.ts.map +1 -0
  20. package/dist/agent/engines/client-factory.js +382 -0
  21. package/dist/agent/engines/client-factory.js.map +1 -0
  22. package/dist/agent/engines/engine-factory.d.ts +1 -3
  23. package/dist/agent/engines/engine-factory.d.ts.map +1 -1
  24. package/dist/agent/engines/engine-factory.js +6 -8
  25. package/dist/agent/engines/engine-factory.js.map +1 -1
  26. package/dist/agent/engines/engine.d.ts +8 -0
  27. package/dist/agent/engines/engine.d.ts.map +1 -0
  28. package/dist/agent/engines/engine.js +15 -0
  29. package/dist/agent/engines/engine.js.map +1 -0
  30. package/dist/agent/engines/openai/file-session.d.ts +19 -0
  31. package/dist/agent/engines/openai/file-session.d.ts.map +1 -0
  32. package/dist/agent/engines/openai/file-session.js +78 -0
  33. package/dist/agent/engines/openai/file-session.js.map +1 -0
  34. package/dist/agent/engines/openai/file-tools.d.ts +35 -0
  35. package/dist/agent/engines/openai/file-tools.d.ts.map +1 -0
  36. package/dist/agent/engines/openai/file-tools.js +194 -0
  37. package/dist/agent/engines/openai/file-tools.js.map +1 -0
  38. package/dist/agent/engines/openai/session.d.ts +55 -0
  39. package/dist/agent/engines/openai/session.d.ts.map +1 -0
  40. package/dist/agent/engines/openai/session.js +447 -0
  41. package/dist/agent/engines/openai/session.js.map +1 -0
  42. package/dist/agent/engines/openai/tools.d.ts +15 -0
  43. package/dist/agent/engines/openai/tools.d.ts.map +1 -0
  44. package/dist/agent/engines/openai/tools.js +221 -0
  45. package/dist/agent/engines/openai/tools.js.map +1 -0
  46. package/dist/agent/engines/pi/session.d.ts +49 -0
  47. package/dist/agent/engines/pi/session.d.ts.map +1 -0
  48. package/dist/agent/engines/pi/session.js +309 -0
  49. package/dist/agent/engines/pi/session.js.map +1 -0
  50. package/dist/agent/engines/pi-coding/session.d.ts.map +1 -1
  51. package/dist/agent/engines/pi-coding/session.js +1 -2
  52. package/dist/agent/engines/pi-coding/session.js.map +1 -1
  53. package/dist/agent/heartbeat-manager.d.ts +6 -0
  54. package/dist/agent/heartbeat-manager.d.ts.map +1 -1
  55. package/dist/agent/heartbeat-manager.js +110 -19
  56. package/dist/agent/heartbeat-manager.js.map +1 -1
  57. package/dist/agent/loop.d.ts.map +1 -1
  58. package/dist/agent/loop.js +31 -1
  59. package/dist/agent/loop.js.map +1 -1
  60. package/dist/agent/memory-preload.d.ts +55 -0
  61. package/dist/agent/memory-preload.d.ts.map +1 -0
  62. package/dist/agent/memory-preload.js +166 -0
  63. package/dist/agent/memory-preload.js.map +1 -0
  64. package/dist/agent/model-provider.d.ts +21 -9
  65. package/dist/agent/model-provider.d.ts.map +1 -1
  66. package/dist/agent/model-provider.js +167 -70
  67. package/dist/agent/model-provider.js.map +1 -1
  68. package/dist/agent/onboarding-gate.d.ts.map +1 -1
  69. package/dist/agent/onboarding-gate.js +112 -48
  70. package/dist/agent/onboarding-gate.js.map +1 -1
  71. package/dist/agent/provider-fallback.js +2 -2
  72. package/dist/agent/provider-fallback.js.map +1 -1
  73. package/dist/agent/providers/claude/cli-resolver.d.ts +16 -0
  74. package/dist/agent/providers/claude/cli-resolver.d.ts.map +1 -0
  75. package/dist/agent/providers/claude/cli-resolver.js +83 -0
  76. package/dist/agent/providers/claude/cli-resolver.js.map +1 -0
  77. package/dist/agent/providers/claude/session-browser-policy.d.ts +9 -0
  78. package/dist/agent/providers/claude/session-browser-policy.d.ts.map +1 -0
  79. package/dist/agent/providers/claude/session-browser-policy.js +49 -0
  80. package/dist/agent/providers/claude/session-browser-policy.js.map +1 -0
  81. package/dist/agent/providers/claude/session.d.ts +304 -0
  82. package/dist/agent/providers/claude/session.d.ts.map +1 -0
  83. package/dist/agent/providers/claude/session.js +1236 -0
  84. package/dist/agent/providers/claude/session.js.map +1 -0
  85. package/dist/agent/providers/client-factory.d.ts +60 -0
  86. package/dist/agent/providers/client-factory.d.ts.map +1 -0
  87. package/dist/agent/providers/client-factory.js +400 -0
  88. package/dist/agent/providers/client-factory.js.map +1 -0
  89. package/dist/agent/providers/openai/file-session.d.ts +19 -0
  90. package/dist/agent/providers/openai/file-session.d.ts.map +1 -0
  91. package/dist/agent/providers/openai/file-session.js +78 -0
  92. package/dist/agent/providers/openai/file-session.js.map +1 -0
  93. package/dist/agent/providers/openai/session.d.ts +55 -0
  94. package/dist/agent/providers/openai/session.d.ts.map +1 -0
  95. package/dist/agent/providers/openai/session.js +447 -0
  96. package/dist/agent/providers/openai/session.js.map +1 -0
  97. package/dist/agent/providers/openai/tools.d.ts +15 -0
  98. package/dist/agent/providers/openai/tools.d.ts.map +1 -0
  99. package/dist/agent/providers/openai/tools.js +229 -0
  100. package/dist/agent/providers/openai/tools.js.map +1 -0
  101. package/dist/agent/providers/session-types.d.ts +153 -0
  102. package/dist/agent/providers/session-types.d.ts.map +1 -0
  103. package/dist/agent/providers/session-types.js +2 -0
  104. package/dist/agent/providers/session-types.js.map +1 -0
  105. package/dist/agent/providers/system-prompt-log.d.ts +9 -0
  106. package/dist/agent/providers/system-prompt-log.d.ts.map +1 -0
  107. package/dist/agent/providers/system-prompt-log.js +46 -0
  108. package/dist/agent/providers/system-prompt-log.js.map +1 -0
  109. package/dist/agent/qq-claim-signal.d.ts +9 -0
  110. package/dist/agent/qq-claim-signal.d.ts.map +1 -0
  111. package/dist/agent/qq-claim-signal.js +38 -0
  112. package/dist/agent/qq-claim-signal.js.map +1 -0
  113. package/dist/agent/runtime-credentials.d.ts.map +1 -1
  114. package/dist/agent/runtime-credentials.js +56 -42
  115. package/dist/agent/runtime-credentials.js.map +1 -1
  116. package/dist/agent/runtime-surface.d.ts +2 -2
  117. package/dist/agent/runtime-surface.d.ts.map +1 -1
  118. package/dist/agent/runtime-surface.js +7 -8
  119. package/dist/agent/runtime-surface.js.map +1 -1
  120. package/dist/agent/status.d.ts +1 -3
  121. package/dist/agent/status.d.ts.map +1 -1
  122. package/dist/agent/status.js +2 -4
  123. package/dist/agent/status.js.map +1 -1
  124. package/dist/agent/transcript-backfill.d.ts +54 -0
  125. package/dist/agent/transcript-backfill.d.ts.map +1 -0
  126. package/dist/agent/transcript-backfill.js +604 -0
  127. package/dist/agent/transcript-backfill.js.map +1 -0
  128. package/dist/agent/transcript-indexer.d.ts +200 -0
  129. package/dist/agent/transcript-indexer.d.ts.map +1 -0
  130. package/dist/agent/transcript-indexer.js +775 -0
  131. package/dist/agent/transcript-indexer.js.map +1 -0
  132. package/dist/agent/transcript-memory-migrations.d.ts +25 -0
  133. package/dist/agent/transcript-memory-migrations.d.ts.map +1 -0
  134. package/dist/agent/transcript-memory-migrations.js +87 -0
  135. package/dist/agent/transcript-memory-migrations.js.map +1 -0
  136. package/dist/agent/tunnel-credential-handler.d.ts +90 -0
  137. package/dist/agent/tunnel-credential-handler.d.ts.map +1 -0
  138. package/dist/agent/tunnel-credential-handler.js +162 -0
  139. package/dist/agent/tunnel-credential-handler.js.map +1 -0
  140. package/dist/agent/usage/usage-report-builder.d.ts.map +1 -1
  141. package/dist/agent/usage/usage-report-builder.js +2 -1
  142. package/dist/agent/usage/usage-report-builder.js.map +1 -1
  143. package/dist/agent/usage-backfill-handler.d.ts +18 -0
  144. package/dist/agent/usage-backfill-handler.d.ts.map +1 -0
  145. package/dist/agent/usage-backfill-handler.js +69 -0
  146. package/dist/agent/usage-backfill-handler.js.map +1 -0
  147. package/dist/agent/usage-gate.d.ts +25 -0
  148. package/dist/agent/usage-gate.d.ts.map +1 -0
  149. package/dist/agent/usage-gate.js +83 -0
  150. package/dist/agent/usage-gate.js.map +1 -0
  151. package/dist/agent/usage-handler.d.ts +7 -0
  152. package/dist/agent/usage-handler.d.ts.map +1 -0
  153. package/dist/agent/usage-handler.js +28 -0
  154. package/dist/agent/usage-handler.js.map +1 -0
  155. package/dist/agent/usage-report-builder.d.ts +26 -0
  156. package/dist/agent/usage-report-builder.d.ts.map +1 -0
  157. package/dist/agent/usage-report-builder.js +80 -0
  158. package/dist/agent/usage-report-builder.js.map +1 -0
  159. package/dist/agent/usage-report-queue.d.ts +26 -0
  160. package/dist/agent/usage-report-queue.d.ts.map +1 -0
  161. package/dist/agent/usage-report-queue.js +199 -0
  162. package/dist/agent/usage-report-queue.js.map +1 -0
  163. package/dist/agent/usage-report-types.d.ts +41 -0
  164. package/dist/agent/usage-report-types.d.ts.map +1 -0
  165. package/dist/agent/usage-report-types.js +2 -0
  166. package/dist/agent/usage-report-types.js.map +1 -0
  167. package/dist/agent/usage-reporter.d.ts +31 -0
  168. package/dist/agent/usage-reporter.d.ts.map +1 -0
  169. package/dist/agent/usage-reporter.js +102 -0
  170. package/dist/agent/usage-reporter.js.map +1 -0
  171. package/dist/agent/wake-cycle-runner.d.ts.map +1 -1
  172. package/dist/agent/wake-cycle-runner.js +69 -3
  173. package/dist/agent/wake-cycle-runner.js.map +1 -1
  174. package/dist/agent/wake-cycle-tool-tracker.d.ts +39 -0
  175. package/dist/agent/wake-cycle-tool-tracker.d.ts.map +1 -0
  176. package/dist/agent/wake-cycle-tool-tracker.js +72 -0
  177. package/dist/agent/wake-cycle-tool-tracker.js.map +1 -0
  178. package/dist/anthropic-credentials.d.ts +24 -0
  179. package/dist/anthropic-credentials.d.ts.map +1 -0
  180. package/dist/anthropic-credentials.js +37 -0
  181. package/dist/anthropic-credentials.js.map +1 -0
  182. package/dist/billing/payg-handler.d.ts +29 -0
  183. package/dist/billing/payg-handler.d.ts.map +1 -0
  184. package/dist/billing/payg-handler.js +92 -0
  185. package/dist/billing/payg-handler.js.map +1 -0
  186. package/dist/billing/payment-handler.d.ts +24 -0
  187. package/dist/billing/payment-handler.d.ts.map +1 -0
  188. package/dist/billing/payment-handler.js +101 -0
  189. package/dist/billing/payment-handler.js.map +1 -0
  190. package/dist/builtin-skills/catalog/phone-adb-automation/SKILL.md +412 -0
  191. package/dist/builtin-skills/catalog/phone-adb-automation/phone_input.sh +132 -0
  192. package/dist/builtin-skills/catalog/phone-adb-automation/phone_launch.sh +166 -0
  193. package/dist/builtin-skills/catalog/phone-adb-automation/phone_screenshot.sh +87 -0
  194. package/dist/builtin-skills/catalog/phone-adb-automation/phone_security_kbd.py +174 -0
  195. package/dist/builtin-skills/catalog/phone-adb-automation/phone_setup.sh +274 -0
  196. package/dist/builtin-skills/catalog/phone-adb-automation/phone_swipe.sh +111 -0
  197. package/dist/builtin-skills/catalog/phone-adb-automation/phone_tap.sh +87 -0
  198. package/dist/builtin-skills/catalog/phone-adb-automation/phone_ui_parse.py +176 -0
  199. package/dist/builtin-skills/catalog/phone-adb-automation/phone_wake_unlock.sh +67 -0
  200. package/dist/builtin-skills/transcribe-audio/SKILL.md +122 -0
  201. package/dist/calendar/google-calendar.d.ts +54 -0
  202. package/dist/calendar/google-calendar.d.ts.map +1 -0
  203. package/dist/calendar/google-calendar.js +156 -0
  204. package/dist/calendar/google-calendar.js.map +1 -0
  205. package/dist/channels/queue.d.ts +11 -0
  206. package/dist/channels/queue.d.ts.map +1 -1
  207. package/dist/channels/queue.js +15 -0
  208. package/dist/channels/queue.js.map +1 -1
  209. package/dist/channels/telegram.d.ts.map +1 -1
  210. package/dist/channels/telegram.js +6 -4
  211. package/dist/channels/telegram.js.map +1 -1
  212. package/dist/channels/web.d.ts +40 -0
  213. package/dist/channels/web.d.ts.map +1 -0
  214. package/dist/channels/web.js +137 -0
  215. package/dist/channels/web.js.map +1 -0
  216. package/dist/channels/zoho-mail.d.ts +1 -0
  217. package/dist/channels/zoho-mail.d.ts.map +1 -1
  218. package/dist/channels/zoho-mail.js +35 -17
  219. package/dist/channels/zoho-mail.js.map +1 -1
  220. package/dist/cli/index.d.ts.map +1 -1
  221. package/dist/cli/index.js +5 -3
  222. package/dist/cli/index.js.map +1 -1
  223. package/dist/config/index.d.ts.map +1 -1
  224. package/dist/config/index.js +4 -18
  225. package/dist/config/index.js.map +1 -1
  226. package/dist/config/types.d.ts +15 -21
  227. package/dist/config/types.d.ts.map +1 -1
  228. package/dist/config/types.js +29 -35
  229. package/dist/config/types.js.map +1 -1
  230. package/dist/data-processing/convert-demo-cli.d.ts +7 -0
  231. package/dist/data-processing/convert-demo-cli.d.ts.map +1 -0
  232. package/dist/data-processing/convert-demo-cli.js +30 -0
  233. package/dist/data-processing/convert-demo-cli.js.map +1 -0
  234. package/dist/data-processing/convert-demo.d.ts +26 -0
  235. package/dist/data-processing/convert-demo.d.ts.map +1 -0
  236. package/dist/data-processing/convert-demo.js +233 -0
  237. package/dist/data-processing/convert-demo.js.map +1 -0
  238. package/dist/drive/google-drive.d.ts +83 -0
  239. package/dist/drive/google-drive.d.ts.map +1 -0
  240. package/dist/drive/google-drive.js +219 -0
  241. package/dist/drive/google-drive.js.map +1 -0
  242. package/dist/email/gmail-email.d.ts +64 -0
  243. package/dist/email/gmail-email.d.ts.map +1 -0
  244. package/dist/email/gmail-email.js +167 -0
  245. package/dist/email/gmail-email.js.map +1 -0
  246. package/dist/entry/playwriter-relay.js +11 -5
  247. package/dist/entry/playwriter-relay.js.map +1 -1
  248. package/dist/index.js.map +1 -1
  249. package/dist/obs/auth.d.ts +45 -0
  250. package/dist/obs/auth.d.ts.map +1 -0
  251. package/dist/obs/auth.js +181 -0
  252. package/dist/obs/auth.js.map +1 -0
  253. package/dist/obs/mini-app/tasks.d.ts +2 -0
  254. package/dist/obs/mini-app/tasks.d.ts.map +1 -0
  255. package/dist/obs/mini-app/tasks.js +506 -0
  256. package/dist/obs/mini-app/tasks.js.map +1 -0
  257. package/dist/obs/rdp/icons/icons/app_windows.svg +4 -0
  258. package/dist/obs/rdp/icons/icons/clip_get.svg +4 -0
  259. package/dist/obs/rdp/icons/icons/clip_send.svg +4 -0
  260. package/dist/obs/rdp/icons/icons/clip_shared.svg +4 -0
  261. package/dist/obs/rdp/icons/icons/clipboard.svg +4 -0
  262. package/dist/obs/rdp/icons/icons/clipboard_shared.svg +4 -0
  263. package/dist/obs/rdp/icons/icons/control.svg +4 -0
  264. package/dist/obs/rdp/icons/icons/desktop.svg +4 -0
  265. package/dist/obs/rdp/icons/icons/display.svg +4 -0
  266. package/dist/obs/rdp/icons/icons/launchpad.svg +4 -0
  267. package/dist/obs/rdp/icons/icons/mission_control.svg +4 -0
  268. package/dist/obs/rdp/icons/icons/screenshot.svg +4 -0
  269. package/dist/obs/rdp/icons/icons/zoom_actual.svg +4 -0
  270. package/dist/obs/rdp/icons/icons/zoom_fit.svg +4 -0
  271. package/dist/obs/rdp/icons/icons/zoom_in.svg +4 -0
  272. package/dist/obs/rdp/icons/icons/zoom_out.svg +4 -0
  273. package/dist/obs/server.d.ts.map +1 -1
  274. package/dist/obs/server.js +5 -8
  275. package/dist/obs/server.js.map +1 -1
  276. package/dist/obs/tunnel-telemetry.d.ts +46 -0
  277. package/dist/obs/tunnel-telemetry.d.ts.map +1 -0
  278. package/dist/obs/tunnel-telemetry.js +70 -0
  279. package/dist/obs/tunnel-telemetry.js.map +1 -0
  280. package/dist/onboarding/bootstrap-client.d.ts +35 -0
  281. package/dist/onboarding/bootstrap-client.d.ts.map +1 -0
  282. package/dist/onboarding/bootstrap-client.js +59 -0
  283. package/dist/onboarding/bootstrap-client.js.map +1 -0
  284. package/dist/onboarding/cloudflared-cert.d.ts +15 -0
  285. package/dist/onboarding/cloudflared-cert.d.ts.map +1 -0
  286. package/dist/onboarding/cloudflared-cert.js +57 -0
  287. package/dist/onboarding/cloudflared-cert.js.map +1 -0
  288. package/dist/onboarding/finalize-channel-binding.d.ts +102 -0
  289. package/dist/onboarding/finalize-channel-binding.d.ts.map +1 -0
  290. package/dist/onboarding/finalize-channel-binding.js +131 -0
  291. package/dist/onboarding/finalize-channel-binding.js.map +1 -0
  292. package/dist/onboarding/gh-auth-browser.d.ts +10 -0
  293. package/dist/onboarding/gh-auth-browser.d.ts.map +1 -0
  294. package/dist/onboarding/gh-auth-browser.js +70 -0
  295. package/dist/onboarding/gh-auth-browser.js.map +1 -0
  296. package/dist/onboarding/onboarding-service-client.d.ts +29 -22
  297. package/dist/onboarding/onboarding-service-client.d.ts.map +1 -1
  298. package/dist/onboarding/onboarding-service-client.js.map +1 -1
  299. package/dist/onboarding/playwriter-extension.d.ts +17 -6
  300. package/dist/onboarding/playwriter-extension.d.ts.map +1 -1
  301. package/dist/onboarding/playwriter-extension.js +61 -8
  302. package/dist/onboarding/playwriter-extension.js.map +1 -1
  303. package/dist/onboarding/pre-owner-bind-redeemer.d.ts +73 -0
  304. package/dist/onboarding/pre-owner-bind-redeemer.d.ts.map +1 -0
  305. package/dist/onboarding/pre-owner-bind-redeemer.js +48 -0
  306. package/dist/onboarding/pre-owner-bind-redeemer.js.map +1 -0
  307. package/dist/onboarding/provision-eth-wallet.d.ts +7 -0
  308. package/dist/onboarding/provision-eth-wallet.d.ts.map +1 -0
  309. package/dist/onboarding/provision-eth-wallet.js +14 -0
  310. package/dist/onboarding/provision-eth-wallet.js.map +1 -0
  311. package/dist/onboarding/provision-workspace-account.d.ts +14 -0
  312. package/dist/onboarding/provision-workspace-account.d.ts.map +1 -0
  313. package/dist/onboarding/provision-workspace-account.js +165 -0
  314. package/dist/onboarding/provision-workspace-account.js.map +1 -0
  315. package/dist/onboarding/remote-set-owner.d.ts.map +1 -1
  316. package/dist/onboarding/remote-set-owner.js +1 -0
  317. package/dist/onboarding/remote-set-owner.js.map +1 -1
  318. package/dist/onboarding/resume-channel-binding.d.ts +67 -0
  319. package/dist/onboarding/resume-channel-binding.d.ts.map +1 -0
  320. package/dist/onboarding/resume-channel-binding.js +82 -0
  321. package/dist/onboarding/resume-channel-binding.js.map +1 -0
  322. package/dist/onboarding/send-identity-credentials.d.ts +11 -0
  323. package/dist/onboarding/send-identity-credentials.d.ts.map +1 -0
  324. package/dist/onboarding/send-identity-credentials.js +110 -0
  325. package/dist/onboarding/send-identity-credentials.js.map +1 -0
  326. package/dist/onboarding/set-owner.d.ts.map +1 -1
  327. package/dist/onboarding/set-owner.js +1 -0
  328. package/dist/onboarding/set-owner.js.map +1 -1
  329. package/dist/onboarding/setup-credentials.d.ts +5 -1
  330. package/dist/onboarding/setup-credentials.d.ts.map +1 -1
  331. package/dist/onboarding/setup-credentials.js +6 -1
  332. package/dist/onboarding/setup-credentials.js.map +1 -1
  333. package/dist/onboarding/setup-shared.d.ts +1 -3
  334. package/dist/onboarding/setup-shared.d.ts.map +1 -1
  335. package/dist/onboarding/setup-shared.js +1 -2
  336. package/dist/onboarding/setup-shared.js.map +1 -1
  337. package/dist/onboarding/setup-steps.d.ts.map +1 -1
  338. package/dist/onboarding/setup-steps.js +9 -12
  339. package/dist/onboarding/setup-steps.js.map +1 -1
  340. package/dist/openai-credentials.d.ts +30 -0
  341. package/dist/openai-credentials.d.ts.map +1 -0
  342. package/dist/openai-credentials.js +37 -0
  343. package/dist/openai-credentials.js.map +1 -0
  344. package/dist/phonecall-credentials.d.ts +21 -0
  345. package/dist/phonecall-credentials.d.ts.map +1 -0
  346. package/dist/phonecall-credentials.js +34 -0
  347. package/dist/phonecall-credentials.js.map +1 -0
  348. package/dist/realtime/agent-bridge.d.ts +7 -0
  349. package/dist/realtime/agent-bridge.d.ts.map +1 -0
  350. package/dist/realtime/agent-bridge.js +31 -0
  351. package/dist/realtime/agent-bridge.js.map +1 -0
  352. package/dist/realtime/assets/index.html +1058 -0
  353. package/dist/realtime/assets/samples/alloy.mp3 +0 -0
  354. package/dist/realtime/assets/samples/ash.mp3 +0 -0
  355. package/dist/realtime/assets/samples/ballad.mp3 +0 -0
  356. package/dist/realtime/assets/samples/cedar.mp3 +0 -0
  357. package/dist/realtime/assets/samples/coral.mp3 +0 -0
  358. package/dist/realtime/assets/samples/echo.mp3 +0 -0
  359. package/dist/realtime/assets/samples/marin.mp3 +0 -0
  360. package/dist/realtime/assets/samples/sage.mp3 +0 -0
  361. package/dist/realtime/assets/samples/shimmer.mp3 +0 -0
  362. package/dist/realtime/assets/samples/verse.mp3 +0 -0
  363. package/dist/realtime/context.d.ts +14 -0
  364. package/dist/realtime/context.d.ts.map +1 -0
  365. package/dist/realtime/context.js +153 -0
  366. package/dist/realtime/context.js.map +1 -0
  367. package/dist/realtime/http-helpers.d.ts +5 -0
  368. package/dist/realtime/http-helpers.d.ts.map +1 -0
  369. package/dist/realtime/http-helpers.js +29 -0
  370. package/dist/realtime/http-helpers.js.map +1 -0
  371. package/dist/realtime/index.d.ts +62 -0
  372. package/dist/realtime/index.d.ts.map +1 -0
  373. package/dist/realtime/index.js +94 -0
  374. package/dist/realtime/index.js.map +1 -0
  375. package/dist/realtime/server.d.ts +6 -0
  376. package/dist/realtime/server.d.ts.map +1 -0
  377. package/dist/realtime/server.js +479 -0
  378. package/dist/realtime/server.js.map +1 -0
  379. package/dist/realtime/telegram-auth.d.ts +2 -0
  380. package/dist/realtime/telegram-auth.d.ts.map +1 -0
  381. package/dist/realtime/telegram-auth.js +24 -0
  382. package/dist/realtime/telegram-auth.js.map +1 -0
  383. package/dist/realtime/tools.d.ts +829 -0
  384. package/dist/realtime/tools.d.ts.map +1 -0
  385. package/dist/realtime/tools.js +611 -0
  386. package/dist/realtime/tools.js.map +1 -0
  387. package/dist/realtime/types.d.ts +62 -0
  388. package/dist/realtime/types.d.ts.map +1 -0
  389. package/dist/realtime/types.js +3 -0
  390. package/dist/realtime/types.js.map +1 -0
  391. package/dist/realtime/voice-summarizer.d.ts +4 -0
  392. package/dist/realtime/voice-summarizer.d.ts.map +1 -0
  393. package/dist/realtime/voice-summarizer.js +123 -0
  394. package/dist/realtime/voice-summarizer.js.map +1 -0
  395. package/dist/realtime/websocket.d.ts +7 -0
  396. package/dist/realtime/websocket.d.ts.map +1 -0
  397. package/dist/realtime/websocket.js +65 -0
  398. package/dist/realtime/websocket.js.map +1 -0
  399. package/dist/reconfigure.d.ts.map +1 -1
  400. package/dist/reconfigure.js +23 -39
  401. package/dist/reconfigure.js.map +1 -1
  402. package/dist/service/gbox-tun.d.ts +14 -0
  403. package/dist/service/gbox-tun.d.ts.map +1 -0
  404. package/dist/service/gbox-tun.js +315 -0
  405. package/dist/service/gbox-tun.js.map +1 -0
  406. package/dist/skills/installed.d.ts +11 -0
  407. package/dist/skills/installed.d.ts.map +1 -0
  408. package/dist/skills/installed.js +35 -0
  409. package/dist/skills/installed.js.map +1 -0
  410. package/dist/threads/supervisor.d.ts +2 -3
  411. package/dist/threads/supervisor.d.ts.map +1 -1
  412. package/dist/threads/supervisor.js +5 -12
  413. package/dist/threads/supervisor.js.map +1 -1
  414. package/dist/threads/thread-meta.d.ts +11 -8
  415. package/dist/threads/thread-meta.d.ts.map +1 -1
  416. package/dist/threads/thread-meta.js +10 -11
  417. package/dist/threads/thread-meta.js.map +1 -1
  418. package/dist/threads/worker-entry.d.ts.map +1 -1
  419. package/dist/threads/worker-entry.js +5 -24
  420. package/dist/threads/worker-entry.js.map +1 -1
  421. package/dist/tools/card.d.ts +11 -0
  422. package/dist/tools/card.d.ts.map +1 -0
  423. package/dist/tools/card.js +87 -0
  424. package/dist/tools/card.js.map +1 -0
  425. package/dist/tools/coordinate-resolver.d.ts +30 -0
  426. package/dist/tools/coordinate-resolver.d.ts.map +1 -0
  427. package/dist/tools/coordinate-resolver.js +104 -0
  428. package/dist/tools/coordinate-resolver.js.map +1 -0
  429. package/dist/tools/sms.d.ts +16 -0
  430. package/dist/tools/sms.d.ts.map +1 -0
  431. package/dist/tools/sms.js +78 -0
  432. package/dist/tools/sms.js.map +1 -0
  433. package/dist/tools/stock-data.d.ts +70 -0
  434. package/dist/tools/stock-data.d.ts.map +1 -0
  435. package/dist/tools/stock-data.js +596 -0
  436. package/dist/tools/stock-data.js.map +1 -0
  437. package/dist/tools/web-fetch.d.ts.map +1 -1
  438. package/dist/tools/web-fetch.js +26 -13
  439. package/dist/tools/web-fetch.js.map +1 -1
  440. package/dist/tools/webapp.d.ts +30 -0
  441. package/dist/tools/webapp.d.ts.map +1 -0
  442. package/dist/tools/webapp.js +114 -0
  443. package/dist/tools/webapp.js.map +1 -0
  444. package/dist/utils/playwriter-relay.d.ts.map +1 -1
  445. package/dist/utils/playwriter-relay.js +3 -4
  446. package/dist/utils/playwriter-relay.js.map +1 -1
  447. package/dist/utils/wechat-monitor.d.ts +21 -0
  448. package/dist/utils/wechat-monitor.d.ts.map +1 -0
  449. package/dist/utils/wechat-monitor.js +88 -0
  450. package/dist/utils/wechat-monitor.js.map +1 -0
  451. package/dist/webapp/index.d.ts +28 -0
  452. package/dist/webapp/index.d.ts.map +1 -0
  453. package/dist/webapp/index.js +75 -0
  454. package/dist/webapp/index.js.map +1 -0
  455. package/dist/webapp/server.d.ts +32 -0
  456. package/dist/webapp/server.d.ts.map +1 -0
  457. package/dist/webapp/server.js +375 -0
  458. package/dist/webapp/server.js.map +1 -0
  459. package/dist/webapp/storage.d.ts +64 -0
  460. package/dist/webapp/storage.d.ts.map +1 -0
  461. package/dist/webapp/storage.js +103 -0
  462. package/dist/webapp/storage.js.map +1 -0
  463. package/dist/webapp/ui.d.ts +2 -0
  464. package/dist/webapp/ui.d.ts.map +1 -0
  465. package/dist/webapp/ui.js +319 -0
  466. package/dist/webapp/ui.js.map +1 -0
  467. package/dist/workspace/provider-factory.d.ts.map +1 -1
  468. package/dist/workspace/provider-factory.js +13 -2
  469. package/dist/workspace/provider-factory.js.map +1 -1
  470. package/dist/workspace/zoho/zoho-calendar.d.ts.map +1 -1
  471. package/dist/workspace/zoho/zoho-calendar.js +7 -6
  472. package/dist/workspace/zoho/zoho-calendar.js.map +1 -1
  473. package/dist/workspace/zoho/zoho-mail.d.ts +10 -0
  474. package/dist/workspace/zoho/zoho-mail.d.ts.map +1 -1
  475. package/dist/workspace/zoho/zoho-mail.js +64 -14
  476. package/dist/workspace/zoho/zoho-mail.js.map +1 -1
  477. package/dist/workspace/zoho/zoho-workdrive.d.ts.map +1 -1
  478. package/dist/workspace/zoho/zoho-workdrive.js +8 -3
  479. package/dist/workspace/zoho/zoho-workdrive.js.map +1 -1
  480. package/dist-agent/assets/index.html +1058 -0
  481. package/dist-agent/assets/samples/alloy.mp3 +0 -0
  482. package/dist-agent/assets/samples/ash.mp3 +0 -0
  483. package/dist-agent/assets/samples/ballad.mp3 +0 -0
  484. package/dist-agent/assets/samples/cedar.mp3 +0 -0
  485. package/dist-agent/assets/samples/coral.mp3 +0 -0
  486. package/dist-agent/assets/samples/echo.mp3 +0 -0
  487. package/dist-agent/assets/samples/marin.mp3 +0 -0
  488. package/dist-agent/assets/samples/sage.mp3 +0 -0
  489. package/dist-agent/assets/samples/shimmer.mp3 +0 -0
  490. package/dist-agent/assets/samples/verse.mp3 +0 -0
  491. package/dist-agent/bundle.cjs +2632 -2099
  492. package/dist-agent/playwriter-relay.cjs +10 -1
  493. package/dist-agent/realtime/assets/index.html +1058 -0
  494. package/dist-agent/realtime/assets/samples/alloy.mp3 +0 -0
  495. package/dist-agent/realtime/assets/samples/ash.mp3 +0 -0
  496. package/dist-agent/realtime/assets/samples/ballad.mp3 +0 -0
  497. package/dist-agent/realtime/assets/samples/cedar.mp3 +0 -0
  498. package/dist-agent/realtime/assets/samples/coral.mp3 +0 -0
  499. package/dist-agent/realtime/assets/samples/echo.mp3 +0 -0
  500. package/dist-agent/realtime/assets/samples/marin.mp3 +0 -0
  501. package/dist-agent/realtime/assets/samples/sage.mp3 +0 -0
  502. package/dist-agent/realtime/assets/samples/shimmer.mp3 +0 -0
  503. package/dist-agent/realtime/assets/samples/verse.mp3 +0 -0
  504. package/package.json +3 -2
package/CHANGELOG.md CHANGED
@@ -1,3 +1,19 @@
1
+ ## [0.1.208](https://github.com/babelcloud/visionclaw/compare/v0.1.207...v0.1.208) (2026-08-05)
2
+
3
+ ### Bug Fixes
4
+
5
+ * **browser:** bypass Playwriter external approval prompt (#1168) ([1f30324](https://github.com/babelcloud/visionclaw/commit/1f30324dff7fbac459735cf7da532e91151c08c9))
6
+ * **agent:** refresh invalid Pi sessions immediately ([4c22cfe](https://github.com/babelcloud/visionclaw/commit/4c22cfe63a1e6c0c1a28a7924b05168846b63f4e))
7
+ * **calendar:** name actions in the tool description and scope the empty summary (#1112) ([4ced69f](https://github.com/babelcloud/visionclaw/commit/4ced69fc759f642d9efb3efd836652f4649f48ea))
8
+ * **financial-tool:** detect upstream forward-adjusted rescales instead of waiting out the TTL (#1077) ([32e22ec](https://github.com/babelcloud/visionclaw/commit/32e22ecc3f1eac508076f5f816d178cc238542f0))
9
+ * **financial-tool:** add adjusted to cache key + bound settled bars TTL (#1071) ([276d6df](https://github.com/babelcloud/visionclaw/commit/276d6dfbaa9e4f6b35dee50487dfb2ddb66dd1ec))
10
+ ### Features
11
+
12
+ * **web-fetch:** enhance Jina Reader fetching with cache handling ([f99fbe5](https://github.com/babelcloud/visionclaw/commit/f99fbe59e1d0c9e7ea33183597f3bb08bce3e1a1))
13
+ * **llm:** make server routing authoritative (#1158) ([a548a28](https://github.com/babelcloud/visionclaw/commit/a548a28dc72ba5541a19e85379379947a73e1cfe))
14
+ * **agent:** standardize LLM Gateway and harden context maintenance (#1108) ([27d4841](https://github.com/babelcloud/visionclaw/commit/27d4841180420332d95b45d192f2d723f2015e38))
15
+ * **financial-tool:** resolve non-US instrument reference from market-data (#1097) ([e3ec364](https://github.com/babelcloud/visionclaw/commit/e3ec364b48dc59e586cedf50b48b4a4c5f6916d8))
16
+
1
17
  ## [0.1.207](https://github.com/babelcloud/visionclaw/compare/v0.1.206...v0.1.207) (2026-08-01)
2
18
 
3
19
  ### Bug Fixes
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Applied-credential signature manifest.
3
+ *
4
+ * Persisted alongside materialised tunnel credentials at
5
+ * `<profileTunnelDir>/.applied-signature.json`. Records the signature
6
+ * the server handed us with the last bundle we successfully applied.
7
+ *
8
+ * The manifest is the *only* piece of state the agent has to remember
9
+ * across process restarts about credential bundles — everything else
10
+ * (creds JSON, config.yml) is reconstructable from a fresh server
11
+ * delivery. The signature is opaque to us; we just echo it back on the
12
+ * next heartbeat so the server can decide whether to re-ship the body.
13
+ *
14
+ * Self-healing properties (intentional):
15
+ * - Manifest missing on disk → no signature sent → server sends
16
+ * bundle → we re-apply and rewrite the manifest. Recovers any
17
+ * install where the manifest was deleted but credentials weren't,
18
+ * or vice versa.
19
+ * - Manifest present but probe says no live tunnel files → we treat
20
+ * the manifest as unusable (return null from `loadIfValid`), the
21
+ * next heartbeat goes signature-free, the server re-ships the
22
+ * bundle, and we land back in a coherent state.
23
+ * - Process restart with everything intact → manifest signature is
24
+ * sent on the startup heartbeat, server replies with no
25
+ * `credentialBundle`, no disk writes, no tunnel restart.
26
+ */
27
+ /**
28
+ * Read the persisted signature, if any. Returns `null` when the file
29
+ * does not exist, fails to parse, has the wrong shape, or refers to a
30
+ * tunnel state that no longer matches what's on disk.
31
+ *
32
+ * The on-disk-coherence check (`probeLocalTunnelCredential()`) is what
33
+ * gives us self-healing: a stranded manifest from a wiped tunnel dir
34
+ * gets ignored, forcing a fresh bundle on the next heartbeat.
35
+ */
36
+ export declare function loadAppliedSignatureIfValid(): string | null;
37
+ /**
38
+ * Persist the signature for the most recently applied bundle. Best-
39
+ * effort: a write failure is logged but does not throw, since the
40
+ * worst case is just an extra full-bundle delivery on the next
41
+ * heartbeat.
42
+ *
43
+ * The file is written with 0o600 to match the credentials sitting next
44
+ * to it; the directory itself is already 0o700 from
45
+ * `runtime-credentials.ts`.
46
+ */
47
+ export declare function writeAppliedSignature(signature: string): void;
48
+ /**
49
+ * Forget the persisted signature. Used by tests; production code never
50
+ * needs to delete it explicitly because writes overwrite in place.
51
+ */
52
+ export declare function __clearAppliedSignatureForTests(): void;
53
+ //# sourceMappingURL=applied-credential-signature.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"applied-credential-signature.d.ts","sourceRoot":"","sources":["../../src/agent/applied-credential-signature.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAwBH;;;;;;;;GAQG;AACH,wBAAgB,2BAA2B,IAAI,MAAM,GAAG,IAAI,CA2C3D;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAgC7D;AAED;;;GAGG;AACH,wBAAgB,+BAA+B,IAAI,IAAI,CAMtD"}
@@ -0,0 +1,137 @@
1
+ /**
2
+ * Applied-credential signature manifest.
3
+ *
4
+ * Persisted alongside materialised tunnel credentials at
5
+ * `<profileTunnelDir>/.applied-signature.json`. Records the signature
6
+ * the server handed us with the last bundle we successfully applied.
7
+ *
8
+ * The manifest is the *only* piece of state the agent has to remember
9
+ * across process restarts about credential bundles — everything else
10
+ * (creds JSON, config.yml) is reconstructable from a fresh server
11
+ * delivery. The signature is opaque to us; we just echo it back on the
12
+ * next heartbeat so the server can decide whether to re-ship the body.
13
+ *
14
+ * Self-healing properties (intentional):
15
+ * - Manifest missing on disk → no signature sent → server sends
16
+ * bundle → we re-apply and rewrite the manifest. Recovers any
17
+ * install where the manifest was deleted but credentials weren't,
18
+ * or vice versa.
19
+ * - Manifest present but probe says no live tunnel files → we treat
20
+ * the manifest as unusable (return null from `loadIfValid`), the
21
+ * next heartbeat goes signature-free, the server re-ships the
22
+ * bundle, and we land back in a coherent state.
23
+ * - Process restart with everything intact → manifest signature is
24
+ * sent on the startup heartbeat, server replies with no
25
+ * `credentialBundle`, no disk writes, no tunnel restart.
26
+ */
27
+ import fs from "node:fs";
28
+ import path from "node:path";
29
+ import { getProfileTunnelDir } from "../config/index.js";
30
+ import { probeLocalTunnelCredential } from "./runtime-credentials.js";
31
+ import { logger } from "../logger.js";
32
+ const MANIFEST_FILENAME = ".applied-signature.json";
33
+ const MANIFEST_VERSION = 1;
34
+ function getManifestPath() {
35
+ return path.join(getProfileTunnelDir(), MANIFEST_FILENAME);
36
+ }
37
+ /**
38
+ * Read the persisted signature, if any. Returns `null` when the file
39
+ * does not exist, fails to parse, has the wrong shape, or refers to a
40
+ * tunnel state that no longer matches what's on disk.
41
+ *
42
+ * The on-disk-coherence check (`probeLocalTunnelCredential()`) is what
43
+ * gives us self-healing: a stranded manifest from a wiped tunnel dir
44
+ * gets ignored, forcing a fresh bundle on the next heartbeat.
45
+ */
46
+ export function loadAppliedSignatureIfValid() {
47
+ const manifestPath = getManifestPath();
48
+ if (!fs.existsSync(manifestPath))
49
+ return null;
50
+ let raw;
51
+ try {
52
+ raw = fs.readFileSync(manifestPath, "utf-8");
53
+ }
54
+ catch (err) {
55
+ logger.warn(`Applied-signature manifest unreadable: ${err instanceof Error ? err.message : String(err)}`);
56
+ return null;
57
+ }
58
+ let parsed;
59
+ try {
60
+ parsed = JSON.parse(raw);
61
+ }
62
+ catch {
63
+ logger.warn(`Applied-signature manifest malformed; ignoring`);
64
+ return null;
65
+ }
66
+ if (!parsed ||
67
+ typeof parsed !== "object" ||
68
+ !("signature" in parsed) ||
69
+ typeof parsed.signature !== "string" ||
70
+ parsed.signature.trim() === "") {
71
+ return null;
72
+ }
73
+ const signature = parsed.signature.trim();
74
+ // Coherence: a manifest is only meaningful when the credentials it
75
+ // refers to actually still exist on disk. If the tunnel files were
76
+ // wiped (e.g. operator deleted `~/.visionclaw/profiles/default/tunnel`)
77
+ // the stored signature lies about our state, so pretend we have none
78
+ // and let the server reissue the bundle.
79
+ if (probeLocalTunnelCredential() === null) {
80
+ return null;
81
+ }
82
+ return signature;
83
+ }
84
+ /**
85
+ * Persist the signature for the most recently applied bundle. Best-
86
+ * effort: a write failure is logged but does not throw, since the
87
+ * worst case is just an extra full-bundle delivery on the next
88
+ * heartbeat.
89
+ *
90
+ * The file is written with 0o600 to match the credentials sitting next
91
+ * to it; the directory itself is already 0o700 from
92
+ * `runtime-credentials.ts`.
93
+ */
94
+ export function writeAppliedSignature(signature) {
95
+ if (typeof signature !== "string" || signature.trim() === "")
96
+ return;
97
+ const manifestPath = getManifestPath();
98
+ const dir = path.dirname(manifestPath);
99
+ try {
100
+ fs.mkdirSync(dir, { recursive: true });
101
+ }
102
+ catch {
103
+ // best-effort; the credential apply path will have created it
104
+ }
105
+ const payload = {
106
+ version: MANIFEST_VERSION,
107
+ signature: signature.trim(),
108
+ appliedAt: new Date().toISOString(),
109
+ };
110
+ try {
111
+ fs.writeFileSync(manifestPath, JSON.stringify(payload, null, 2), "utf-8");
112
+ if (process.platform !== "win32") {
113
+ try {
114
+ fs.chmodSync(manifestPath, 0o600);
115
+ }
116
+ catch {
117
+ // best-effort; directory perms still protect
118
+ }
119
+ }
120
+ }
121
+ catch (err) {
122
+ logger.warn(`Failed to persist applied-signature manifest: ${err instanceof Error ? err.message : String(err)}`);
123
+ }
124
+ }
125
+ /**
126
+ * Forget the persisted signature. Used by tests; production code never
127
+ * needs to delete it explicitly because writes overwrite in place.
128
+ */
129
+ export function __clearAppliedSignatureForTests() {
130
+ try {
131
+ fs.rmSync(getManifestPath(), { force: true });
132
+ }
133
+ catch {
134
+ // ignore
135
+ }
136
+ }
137
+ //# sourceMappingURL=applied-credential-signature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"applied-credential-signature.js","sourceRoot":"","sources":["../../src/agent/applied-credential-signature.ts"],"names":[],"mappings":"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"}
@@ -3,8 +3,9 @@ import type { VisionClawConfig } from "../config/types.js";
3
3
  /**
4
4
  * Creates a CommandHandler for the "switch_engine" remote command.
5
5
  *
6
- * Payload `{ engine: "gpt" | "claude" | "<modelId>" }`:
7
- * - gpt/claudedefault family model + first compatible provider
6
+ * Payload `{ engine: "default" | "gpt" | "claude" | "<modelId>" }`:
7
+ * - defaultfollow the server default
8
+ * - gpt/claude → persistent local engine override
8
9
  * - other → pinned model id (Pi + llm-gateway), validated via `/v1/models`
9
10
  */
10
11
  export declare function createEngineSwitchHandler(config: VisionClawConfig): CommandHandler;
@@ -1 +1 @@
1
- {"version":3,"file":"engine-switch-handler.d.ts","sourceRoot":"","sources":["../../src/agent/engine-switch-handler.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAkB3D;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,gBAAgB,GAAG,cAAc,CA6ElF"}
1
+ {"version":3,"file":"engine-switch-handler.d.ts","sourceRoot":"","sources":["../../src/agent/engine-switch-handler.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAmB3D;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,gBAAgB,GAAG,cAAc,CA4ElF"}
@@ -1,7 +1,7 @@
1
1
  import { z } from "zod";
2
2
  import { saveConfig, writePendingRestart } from "../config/index.js";
3
3
  import { logger } from "../logger.js";
4
- import { describeEngineTarget, isAlreadyOnEngineTarget, resolveEngineSwitchTarget, validateEngineSwitchTarget, } from "./engine-switch-target.js";
4
+ import { applyEngineSwitchTarget, describeEngineTarget, isAlreadyOnEngineTarget, resolveEngineSwitchTarget, validateEngineSwitchTarget, } from "./engine-switch-target.js";
5
5
  import { LlmGatewayModelsError } from "./llm-gateway-models.js";
6
6
  /** Family aliases or a concrete pinned model id (e.g. kimi-k3). */
7
7
  const EngineSwitchPayloadSchema = z.object({
@@ -11,15 +11,16 @@ const RESTART_DELAY = 5_000;
11
11
  /**
12
12
  * Creates a CommandHandler for the "switch_engine" remote command.
13
13
  *
14
- * Payload `{ engine: "gpt" | "claude" | "<modelId>" }`:
15
- * - gpt/claudedefault family model + first compatible provider
14
+ * Payload `{ engine: "default" | "gpt" | "claude" | "<modelId>" }`:
15
+ * - defaultfollow the server default
16
+ * - gpt/claude → persistent local engine override
16
17
  * - other → pinned model id (Pi + llm-gateway), validated via `/v1/models`
17
18
  */
18
19
  export function createEngineSwitchHandler(config) {
19
20
  return async (commandId, payload) => {
20
21
  const parsed = EngineSwitchPayloadSchema.safeParse(payload);
21
22
  if (!parsed.success) {
22
- const errMsg = `Invalid switch_engine payload: expected { engine: "gpt" | "claude" | "<modelId>" }`;
23
+ const errMsg = `Invalid switch_engine payload: expected { engine: "default" | "gpt" | "claude" | "<modelId>" }`;
23
24
  logger.err(`[engine-switch-handler] ${errMsg} (id=${commandId})`);
24
25
  return {
25
26
  status: "failed",
@@ -37,10 +38,10 @@ export function createEngineSwitchHandler(config) {
37
38
  }
38
39
  if (isAlreadyOnEngineTarget(config, target)) {
39
40
  const label = describeEngineTarget(target);
40
- logger.system(`[engine-switch-handler] Already on ${label} (model=${config.model}); no-op (id=${commandId})`);
41
+ logger.system(`[engine-switch-handler] Already on ${label}; no-op (id=${commandId})`);
41
42
  return {
42
43
  status: "completed",
43
- result: JSON.stringify({ message: `Already using ${label} (model=${config.model})` }),
44
+ result: JSON.stringify({ message: `Already using ${label}` }),
44
45
  };
45
46
  }
46
47
  try {
@@ -68,16 +69,15 @@ export function createEngineSwitchHandler(config) {
68
69
  });
69
70
  const { scheduleRestart } = await import("../utils/restart.js");
70
71
  const { runGracefulShutdown } = await import("./state.js");
71
- config.model = target.model;
72
- config.provider = target.provider;
72
+ applyEngineSwitchTarget(config, target);
73
73
  saveConfig(config);
74
74
  const label = describeEngineTarget(target);
75
- logger.system(`[engine-switch-handler] Engine switch to ${label} (${target.model}, provider=${target.provider}) requested via onboarding server (id=${commandId})`);
75
+ logger.system(`[engine-switch-handler] Engine switch to ${label} requested via onboarding server (id=${commandId})`);
76
76
  scheduleRestart(RESTART_DELAY, runGracefulShutdown);
77
77
  return {
78
78
  status: "completed",
79
79
  result: JSON.stringify({
80
- message: `Switching to ${label} (${target.model}, provider=${target.provider}); restarting in ${RESTART_DELAY / 1000}s`,
80
+ message: `Switching to ${label}; restarting in ${RESTART_DELAY / 1000}s`,
81
81
  }),
82
82
  };
83
83
  };
@@ -1 +1 @@
1
- {"version":3,"file":"engine-switch-handler.js","sourceRoot":"","sources":["../../src/agent/engine-switch-handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"engine-switch-handler.js","sourceRoot":"","sources":["../../src/agent/engine-switch-handler.ts"],"names":[],"mappings":"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"}
@@ -1,33 +1,21 @@
1
- /**
2
- * Shared resolution for `/engine` / `switch_engine` targets.
3
- */
4
- import { getEngineSwitchKey, isPinnedModel } from "../config/models.js";
5
- import { type Model, type Provider, type VisionClawConfig } from "../config/types.js";
1
+ /** Shared resolution for `/engine` / `switch_engine` targets. */
2
+ import type { Engine, VisionClawConfig } from "../config/types.js";
6
3
  export type EngineSwitchTarget = {
7
- kind: "family";
8
- family: "claude" | "gpt";
9
- model: Model;
10
- provider: Provider;
4
+ kind: "default";
5
+ } | {
6
+ kind: "engine";
7
+ engine: Engine;
11
8
  } | {
12
9
  kind: "pinned";
13
- model: Model;
14
- provider: Provider;
10
+ engine: "gpt";
11
+ model: string;
15
12
  };
16
- /** Parse `/engine <token>` `claude`/`gpt` are families; anything else is a pinned model id. */
17
- export declare function parseEngineSwitchToken(token: string): {
18
- family: "claude" | "gpt";
19
- } | {
20
- pinnedModelId: string;
21
- } | null;
13
+ export declare function parseEngineSwitchToken(token: string): EngineSwitchTarget | null;
22
14
  export declare function resolveEngineSwitchTarget(token: string): EngineSwitchTarget | null;
23
- export declare function isAlreadyOnEngineTarget(config: Pick<VisionClawConfig, "model">, target: EngineSwitchTarget): boolean;
24
- /**
25
- * Validate a pinned switch against LLM Gateway `/v1/models`.
26
- * Family switches are no-ops here.
27
- */
15
+ export declare function isAlreadyOnEngineTarget(config: Pick<VisionClawConfig, "engineOverride" | "pinnedModel">, target: EngineSwitchTarget): boolean;
28
16
  export declare function validateEngineSwitchTarget(config: VisionClawConfig, target: EngineSwitchTarget, options?: {
29
17
  fetchImpl?: typeof fetch;
30
18
  }): Promise<void>;
19
+ export declare function applyEngineSwitchTarget(config: VisionClawConfig, target: EngineSwitchTarget): void;
31
20
  export declare function describeEngineTarget(target: EngineSwitchTarget): string;
32
- export { isPinnedModel, getEngineSwitchKey };
33
21
  //# sourceMappingURL=engine-switch-target.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"engine-switch-target.d.ts","sourceRoot":"","sources":["../../src/agent/engine-switch-target.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAGL,kBAAkB,EAElB,aAAa,EACd,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAEL,KAAK,KAAK,EACV,KAAK,QAAQ,EACb,KAAK,gBAAgB,EACtB,MAAM,oBAAoB,CAAC;AAG5B,MAAM,MAAM,kBAAkB,GAC1B;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,QAAQ,GAAG,KAAK,CAAC;IAAC,KAAK,EAAE,KAAK,CAAC;IAAC,QAAQ,EAAE,QAAQ,CAAA;CAAE,GAC9E;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,KAAK,CAAC;IAAC,QAAQ,EAAE,QAAQ,CAAA;CAAE,CAAC;AAEzD,iGAAiG;AACjG,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,QAAQ,GAAG,KAAK,CAAA;CAAE,GAAG;IAAE,aAAa,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAmBrH;AAED,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,MAAM,GACZ,kBAAkB,GAAG,IAAI,CAa3B;AAED,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,IAAI,CAAC,gBAAgB,EAAE,OAAO,CAAC,EACvC,MAAM,EAAE,kBAAkB,GACzB,OAAO,CAMT;AAED;;;GAGG;AACH,wBAAsB,0BAA0B,CAC9C,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,kBAAkB,EAC1B,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,OAAO,KAAK,CAAA;CAAO,GACzC,OAAO,CAAC,IAAI,CAAC,CAUf;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,kBAAkB,GAAG,MAAM,CAKvE;AAED,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,CAAC"}
1
+ {"version":3,"file":"engine-switch-target.d.ts","sourceRoot":"","sources":["../../src/agent/engine-switch-target.ts"],"names":[],"mappings":"AAAA,iEAAiE;AAEjE,OAAO,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAInE,MAAM,MAAM,kBAAkB,GAC1B;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GACnB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAErD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI,CAY/E;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI,CAElF;AAED,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,IAAI,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,aAAa,CAAC,EAChE,MAAM,EAAE,kBAAkB,GACzB,OAAO,CAQT;AAED,wBAAsB,0BAA0B,CAC9C,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,kBAAkB,EAC1B,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,OAAO,KAAK,CAAA;CAAO,GACzC,OAAO,CAAC,IAAI,CAAC,CAoBf;AAED,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,kBAAkB,GACzB,IAAI,CAQN;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,kBAAkB,GAAG,MAAM,CAIvE"}
@@ -1,68 +1,64 @@
1
- /**
2
- * Shared resolution for `/engine` / `switch_engine` targets.
3
- */
4
- import { DEFAULT_CLAUDE_MODEL, GPT_HEAVY_MODEL, getEngineSwitchKey, isKnownModel, isPinnedModel, } from "../config/models.js";
5
- import { getSupportedProvidersForModel, } from "../config/types.js";
1
+ /** Shared resolution for `/engine` / `switch_engine` targets. */
6
2
  import { assertLlmGatewaySupportsModel } from "./llm-gateway-models.js";
7
- /** Parse `/engine <token>` `claude`/`gpt` are families; anything else is a pinned model id. */
3
+ import { getEffectiveRoute } from "./model-provider.js";
8
4
  export function parseEngineSwitchToken(token) {
9
5
  const trimmed = token.trim();
10
6
  if (!trimmed)
11
7
  return null;
12
8
  const lower = trimmed.toLowerCase();
9
+ if (lower === "default")
10
+ return { kind: "default" };
13
11
  if (lower === "claude" || lower === "gpt") {
14
- return { family: lower };
12
+ return { kind: "engine", engine: lower };
15
13
  }
16
- // Reject reserved runtime aliases that are not valid pinned gateway model ids.
17
14
  if (lower === "pi" || lower === "pi-coding" || lower === "coding") {
18
15
  return null;
19
16
  }
20
- // Reject built-in family model ids (e.g. claude-fable-5, gpt-5.6-luna):
21
- // they are NOT pinned models — isPinnedModel() would be false after the
22
- // switch, so routing would silently fall back to family behavior. Users
23
- // should switch families via `/engine claude` / `/engine gpt` instead.
24
- if (isKnownModel(trimmed)) {
25
- return null;
26
- }
27
- return { pinnedModelId: trimmed };
17
+ return { kind: "pinned", engine: "gpt", model: trimmed };
28
18
  }
29
19
  export function resolveEngineSwitchTarget(token) {
30
- const parsed = parseEngineSwitchToken(token);
31
- if (!parsed)
32
- return null;
33
- if ("family" in parsed) {
34
- const model = parsed.family === "gpt" ? GPT_HEAVY_MODEL : DEFAULT_CLAUDE_MODEL;
35
- const [provider] = getSupportedProvidersForModel(model);
36
- return { kind: "family", family: parsed.family, model, provider };
37
- }
38
- const model = parsed.pinnedModelId;
39
- const [provider] = getSupportedProvidersForModel(model);
40
- return { kind: "pinned", model, provider };
20
+ return parseEngineSwitchToken(token);
41
21
  }
42
22
  export function isAlreadyOnEngineTarget(config, target) {
43
- const currentKey = getEngineSwitchKey(config.model);
44
- if (target.kind === "family") {
45
- return currentKey === target.family;
23
+ if (target.kind === "default") {
24
+ return config.engineOverride === undefined && config.pinnedModel === undefined;
25
+ }
26
+ if (target.kind === "engine") {
27
+ return config.engineOverride === target.engine && config.pinnedModel === undefined;
46
28
  }
47
- return currentKey === target.model;
29
+ return config.engineOverride === "gpt" && config.pinnedModel === target.model;
48
30
  }
49
- /**
50
- * Validate a pinned switch against LLM Gateway `/v1/models`.
51
- * Family switches are no-ops here.
52
- */
53
31
  export async function validateEngineSwitchTarget(config, target, options = {}) {
54
- if (target.kind !== "pinned")
32
+ if (target.kind === "default")
33
+ return;
34
+ const route = getEffectiveRoute({
35
+ provider: config.provider,
36
+ engineOverride: target.engine,
37
+ });
38
+ if (!route) {
39
+ throw new Error(`Engine "${target.engine}" has no enabled LLM route`);
40
+ }
41
+ if (target.kind === "engine")
55
42
  return;
56
43
  await assertLlmGatewaySupportsModel({
57
44
  llmGatewayBaseUrl: config.llmGatewayBaseUrl,
58
45
  llmGatewayApiKey: config.llmGatewayApiKey,
59
46
  }, target.model, options);
60
47
  }
61
- export function describeEngineTarget(target) {
62
- if (target.kind === "family") {
63
- return `${target.family} engine`;
48
+ export function applyEngineSwitchTarget(config, target) {
49
+ if (target.kind === "default") {
50
+ config.engineOverride = undefined;
51
+ config.pinnedModel = undefined;
52
+ return;
64
53
  }
54
+ config.engineOverride = target.engine;
55
+ config.pinnedModel = target.kind === "pinned" ? target.model : undefined;
56
+ }
57
+ export function describeEngineTarget(target) {
58
+ if (target.kind === "default")
59
+ return "server default engine";
60
+ if (target.kind === "engine")
61
+ return `${target.engine} engine override`;
65
62
  return `pinned model "${target.model}"`;
66
63
  }
67
- export { isPinnedModel, getEngineSwitchKey };
68
64
  //# sourceMappingURL=engine-switch-target.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"engine-switch-target.js","sourceRoot":"","sources":["../../src/agent/engine-switch-target.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"engine-switch-target.js","sourceRoot":"","sources":["../../src/agent/engine-switch-target.ts"],"names":[],"mappings":"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"}
@@ -11,20 +11,19 @@ export declare function killPlaywrightProfileCdpChrome(): void;
11
11
  * {@link killPlaywrightProfileCdpChrome}, which only targets the CDP profile's
12
12
  * `--remote-debugging-port=9222` flag.
13
13
  */
14
- export declare function killPlaywriterChrome(): void;
14
+ export declare function killPlaywriterChrome(timeoutMs?: number): Promise<void>;
15
15
  /**
16
16
  * Launch Chrome with a dedicated user-data-dir for Playwriter.
17
17
  *
18
- * The Playwriter extension installs into this profile from its own
19
- * `External Extensions/<id>.json` (web-store `external_update_url`), written by
20
- * {@link ensurePlaywriterExtension}. Chrome installs externally-declared
21
- * extensions on launch, so we only scrub any stale `external_uninstalls`
22
- * blacklist entry first while this profile's Chrome is guaranteed not
23
- * running so a previously-removed copy is re-added. We deliberately do NOT use
24
- * `--load-extension`: that command-line switch is disabled by default on
25
- * Chrome 137+ (and fully on 149), so it silently loads nothing (issue #534).
18
+ * A new macOS External Extensions install is disabled until the user approves
19
+ * it, which leaves the relay with zero sockets and produces the misleading
20
+ * "Multiple extensions" 4003. When the profile has no usable extension (or is
21
+ * in that exact approval state), launch Chrome with a temporary debugging port
22
+ * and install the bundled extension using `Extensions.loadUnpacked`. This CDP
23
+ * command is supported in branded Chrome 137+ even though `--load-extension`
24
+ * is not. The profile-scoped External Extensions JSON remains a fallback.
26
25
  */
27
- export declare function launchPlaywriterProfileChrome(): void;
26
+ export declare function launchPlaywriterProfileChrome(): Promise<void>;
28
27
  /**
29
28
  * Check whether a Chrome process with the Playwriter data dir is running.
30
29
  */
@@ -1 +1 @@
1
- {"version":3,"file":"session-browser-policy.d.ts","sourceRoot":"","sources":["../../../../src/agent/engines/claude/session-browser-policy.ts"],"names":[],"mappings":"AAwCA;;;GAGG;AACH,wBAAgB,8BAA8B,IAAI,IAAI,CAMrD;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,IAAI,IAAI,CAM3C;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,6BAA6B,IAAI,IAAI,CA4BpD;AAED;;GAEG;AACH,wBAAgB,gCAAgC,IAAI,OAAO,CAO1D;AAYD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,sBAAsB,CAC1C,2BAA2B,EAAE,OAAO,EACpC,IAAI,SAAc,EAClB,IAAI,SAAQ,GACX,OAAO,CAAC,OAAO,CAAC,CA0BlB"}
1
+ {"version":3,"file":"session-browser-policy.d.ts","sourceRoot":"","sources":["../../../../src/agent/engines/claude/session-browser-policy.ts"],"names":[],"mappings":"AA+FA;;;GAGG;AACH,wBAAgB,8BAA8B,IAAI,IAAI,CAMrD;AAED;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CAAC,SAAS,SAAyB,GAAG,OAAO,CAAC,IAAI,CAAC,CAe5F;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,6BAA6B,IAAI,OAAO,CAAC,IAAI,CAAC,CA8CnE;AAED;;GAEG;AACH,wBAAgB,gCAAgC,IAAI,OAAO,CAO1D;AAYD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,sBAAsB,CAC1C,2BAA2B,EAAE,OAAO,EACpC,IAAI,SAAc,EAClB,IAAI,SAAQ,GACX,OAAO,CAAC,OAAO,CAAC,CA0BlB"}