visionclaw 0.1.208-beta.12 → 0.1.208-beta.14

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 (453) hide show
  1. package/dist/agent/engine-switch-handler.d.ts +3 -2
  2. package/dist/agent/engine-switch-handler.d.ts.map +1 -1
  3. package/dist/agent/engine-switch-handler.js +10 -10
  4. package/dist/agent/engine-switch-handler.js.map +1 -1
  5. package/dist/agent/engine-switch-target.d.ts +11 -23
  6. package/dist/agent/engine-switch-target.d.ts.map +1 -1
  7. package/dist/agent/engine-switch-target.js +36 -40
  8. package/dist/agent/engine-switch-target.js.map +1 -1
  9. package/dist/agent/engines/claude/session-browser-policy.d.ts +9 -10
  10. package/dist/agent/engines/claude/session-browser-policy.d.ts.map +1 -1
  11. package/dist/agent/engines/claude/session-browser-policy.js +95 -17
  12. package/dist/agent/engines/claude/session-browser-policy.js.map +1 -1
  13. package/dist/agent/engines/engine-factory.d.ts +1 -3
  14. package/dist/agent/engines/engine-factory.d.ts.map +1 -1
  15. package/dist/agent/engines/engine-factory.js +6 -8
  16. package/dist/agent/engines/engine-factory.js.map +1 -1
  17. package/dist/agent/engines/pi-coding/session.d.ts.map +1 -1
  18. package/dist/agent/engines/pi-coding/session.js +1 -2
  19. package/dist/agent/engines/pi-coding/session.js.map +1 -1
  20. package/dist/agent/heartbeat-manager.d.ts +6 -0
  21. package/dist/agent/heartbeat-manager.d.ts.map +1 -1
  22. package/dist/agent/heartbeat-manager.js +110 -19
  23. package/dist/agent/heartbeat-manager.js.map +1 -1
  24. package/dist/agent/loop.d.ts.map +1 -1
  25. package/dist/agent/loop.js +4 -0
  26. package/dist/agent/loop.js.map +1 -1
  27. package/dist/agent/model-provider.d.ts +21 -9
  28. package/dist/agent/model-provider.d.ts.map +1 -1
  29. package/dist/agent/model-provider.js +167 -70
  30. package/dist/agent/model-provider.js.map +1 -1
  31. package/dist/agent/onboarding-gate.js +1 -1
  32. package/dist/agent/onboarding-gate.js.map +1 -1
  33. package/dist/agent/provider-fallback.js +2 -2
  34. package/dist/agent/provider-fallback.js.map +1 -1
  35. package/dist/agent/runtime-surface.d.ts +2 -2
  36. package/dist/agent/runtime-surface.d.ts.map +1 -1
  37. package/dist/agent/runtime-surface.js +7 -8
  38. package/dist/agent/runtime-surface.js.map +1 -1
  39. package/dist/agent/status.d.ts +1 -3
  40. package/dist/agent/status.d.ts.map +1 -1
  41. package/dist/agent/status.js +2 -4
  42. package/dist/agent/status.js.map +1 -1
  43. package/dist/agent/usage/usage-report-builder.d.ts.map +1 -1
  44. package/dist/agent/usage/usage-report-builder.js +2 -1
  45. package/dist/agent/usage/usage-report-builder.js.map +1 -1
  46. package/dist/agent/wake-cycle-runner.d.ts.map +1 -1
  47. package/dist/agent/wake-cycle-runner.js +69 -3
  48. package/dist/agent/wake-cycle-runner.js.map +1 -1
  49. package/dist/channels/telegram.d.ts.map +1 -1
  50. package/dist/channels/telegram.js +6 -4
  51. package/dist/channels/telegram.js.map +1 -1
  52. package/dist/cli/index.d.ts.map +1 -1
  53. package/dist/cli/index.js +5 -3
  54. package/dist/cli/index.js.map +1 -1
  55. package/dist/config/index.d.ts.map +1 -1
  56. package/dist/config/index.js +4 -18
  57. package/dist/config/index.js.map +1 -1
  58. package/dist/config/types.d.ts +10 -21
  59. package/dist/config/types.d.ts.map +1 -1
  60. package/dist/config/types.js +5 -35
  61. package/dist/config/types.js.map +1 -1
  62. package/dist/entry/playwriter-relay.js +11 -5
  63. package/dist/entry/playwriter-relay.js.map +1 -1
  64. package/dist/index.js.map +1 -1
  65. package/dist/obs/server.d.ts.map +1 -1
  66. package/dist/obs/server.js +5 -8
  67. package/dist/obs/server.js.map +1 -1
  68. package/dist/onboarding/onboarding-service-client.d.ts +25 -21
  69. package/dist/onboarding/onboarding-service-client.d.ts.map +1 -1
  70. package/dist/onboarding/onboarding-service-client.js.map +1 -1
  71. package/dist/onboarding/playwriter-extension.d.ts +17 -6
  72. package/dist/onboarding/playwriter-extension.d.ts.map +1 -1
  73. package/dist/onboarding/playwriter-extension.js +61 -8
  74. package/dist/onboarding/playwriter-extension.js.map +1 -1
  75. package/dist/onboarding/setup-shared.d.ts +1 -3
  76. package/dist/onboarding/setup-shared.d.ts.map +1 -1
  77. package/dist/onboarding/setup-shared.js +1 -2
  78. package/dist/onboarding/setup-shared.js.map +1 -1
  79. package/dist/onboarding/setup-steps.d.ts.map +1 -1
  80. package/dist/onboarding/setup-steps.js +0 -5
  81. package/dist/onboarding/setup-steps.js.map +1 -1
  82. package/dist/reconfigure.d.ts.map +1 -1
  83. package/dist/reconfigure.js +19 -38
  84. package/dist/reconfigure.js.map +1 -1
  85. package/dist/threads/supervisor.d.ts +2 -3
  86. package/dist/threads/supervisor.d.ts.map +1 -1
  87. package/dist/threads/supervisor.js +5 -12
  88. package/dist/threads/supervisor.js.map +1 -1
  89. package/dist/threads/thread-meta.d.ts +11 -8
  90. package/dist/threads/thread-meta.d.ts.map +1 -1
  91. package/dist/threads/thread-meta.js +10 -11
  92. package/dist/threads/thread-meta.js.map +1 -1
  93. package/dist/threads/worker-entry.d.ts.map +1 -1
  94. package/dist/threads/worker-entry.js +5 -24
  95. package/dist/threads/worker-entry.js.map +1 -1
  96. package/dist/utils/playwriter-relay.d.ts.map +1 -1
  97. package/dist/utils/playwriter-relay.js +3 -4
  98. package/dist/utils/playwriter-relay.js.map +1 -1
  99. package/dist-agent/bundle.cjs +2210 -1977
  100. package/dist-agent/playwriter-relay.cjs +10 -1
  101. package/package.json +1 -1
  102. package/dist/agent/applied-credential-signature.d.ts +0 -53
  103. package/dist/agent/applied-credential-signature.d.ts.map +0 -1
  104. package/dist/agent/applied-credential-signature.js +0 -137
  105. package/dist/agent/applied-credential-signature.js.map +0 -1
  106. package/dist/agent/engines/client-factory.d.ts +0 -63
  107. package/dist/agent/engines/client-factory.d.ts.map +0 -1
  108. package/dist/agent/engines/client-factory.js +0 -382
  109. package/dist/agent/engines/client-factory.js.map +0 -1
  110. package/dist/agent/engines/engine.d.ts +0 -8
  111. package/dist/agent/engines/engine.d.ts.map +0 -1
  112. package/dist/agent/engines/engine.js +0 -15
  113. package/dist/agent/engines/engine.js.map +0 -1
  114. package/dist/agent/engines/openai/file-session.d.ts +0 -19
  115. package/dist/agent/engines/openai/file-session.d.ts.map +0 -1
  116. package/dist/agent/engines/openai/file-session.js +0 -78
  117. package/dist/agent/engines/openai/file-session.js.map +0 -1
  118. package/dist/agent/engines/openai/file-tools.d.ts +0 -35
  119. package/dist/agent/engines/openai/file-tools.d.ts.map +0 -1
  120. package/dist/agent/engines/openai/file-tools.js +0 -194
  121. package/dist/agent/engines/openai/file-tools.js.map +0 -1
  122. package/dist/agent/engines/openai/session.d.ts +0 -55
  123. package/dist/agent/engines/openai/session.d.ts.map +0 -1
  124. package/dist/agent/engines/openai/session.js +0 -447
  125. package/dist/agent/engines/openai/session.js.map +0 -1
  126. package/dist/agent/engines/openai/tools.d.ts +0 -15
  127. package/dist/agent/engines/openai/tools.d.ts.map +0 -1
  128. package/dist/agent/engines/openai/tools.js +0 -221
  129. package/dist/agent/engines/openai/tools.js.map +0 -1
  130. package/dist/agent/engines/pi/session.d.ts +0 -49
  131. package/dist/agent/engines/pi/session.d.ts.map +0 -1
  132. package/dist/agent/engines/pi/session.js +0 -309
  133. package/dist/agent/engines/pi/session.js.map +0 -1
  134. package/dist/agent/memory-preload.d.ts +0 -55
  135. package/dist/agent/memory-preload.d.ts.map +0 -1
  136. package/dist/agent/memory-preload.js +0 -166
  137. package/dist/agent/memory-preload.js.map +0 -1
  138. package/dist/agent/providers/claude/cli-resolver.d.ts +0 -16
  139. package/dist/agent/providers/claude/cli-resolver.d.ts.map +0 -1
  140. package/dist/agent/providers/claude/cli-resolver.js +0 -83
  141. package/dist/agent/providers/claude/cli-resolver.js.map +0 -1
  142. package/dist/agent/providers/claude/session-browser-policy.d.ts +0 -9
  143. package/dist/agent/providers/claude/session-browser-policy.d.ts.map +0 -1
  144. package/dist/agent/providers/claude/session-browser-policy.js +0 -49
  145. package/dist/agent/providers/claude/session-browser-policy.js.map +0 -1
  146. package/dist/agent/providers/claude/session.d.ts +0 -304
  147. package/dist/agent/providers/claude/session.d.ts.map +0 -1
  148. package/dist/agent/providers/claude/session.js +0 -1236
  149. package/dist/agent/providers/claude/session.js.map +0 -1
  150. package/dist/agent/providers/client-factory.d.ts +0 -60
  151. package/dist/agent/providers/client-factory.d.ts.map +0 -1
  152. package/dist/agent/providers/client-factory.js +0 -400
  153. package/dist/agent/providers/client-factory.js.map +0 -1
  154. package/dist/agent/providers/openai/file-session.d.ts +0 -19
  155. package/dist/agent/providers/openai/file-session.d.ts.map +0 -1
  156. package/dist/agent/providers/openai/file-session.js +0 -78
  157. package/dist/agent/providers/openai/file-session.js.map +0 -1
  158. package/dist/agent/providers/openai/session.d.ts +0 -55
  159. package/dist/agent/providers/openai/session.d.ts.map +0 -1
  160. package/dist/agent/providers/openai/session.js +0 -447
  161. package/dist/agent/providers/openai/session.js.map +0 -1
  162. package/dist/agent/providers/openai/tools.d.ts +0 -15
  163. package/dist/agent/providers/openai/tools.d.ts.map +0 -1
  164. package/dist/agent/providers/openai/tools.js +0 -229
  165. package/dist/agent/providers/openai/tools.js.map +0 -1
  166. package/dist/agent/providers/session-types.d.ts +0 -153
  167. package/dist/agent/providers/session-types.d.ts.map +0 -1
  168. package/dist/agent/providers/session-types.js +0 -2
  169. package/dist/agent/providers/session-types.js.map +0 -1
  170. package/dist/agent/providers/system-prompt-log.d.ts +0 -9
  171. package/dist/agent/providers/system-prompt-log.d.ts.map +0 -1
  172. package/dist/agent/providers/system-prompt-log.js +0 -46
  173. package/dist/agent/providers/system-prompt-log.js.map +0 -1
  174. package/dist/agent/qq-claim-signal.d.ts +0 -9
  175. package/dist/agent/qq-claim-signal.d.ts.map +0 -1
  176. package/dist/agent/qq-claim-signal.js +0 -38
  177. package/dist/agent/qq-claim-signal.js.map +0 -1
  178. package/dist/agent/transcript-backfill.d.ts +0 -54
  179. package/dist/agent/transcript-backfill.d.ts.map +0 -1
  180. package/dist/agent/transcript-backfill.js +0 -604
  181. package/dist/agent/transcript-backfill.js.map +0 -1
  182. package/dist/agent/transcript-indexer.d.ts +0 -200
  183. package/dist/agent/transcript-indexer.d.ts.map +0 -1
  184. package/dist/agent/transcript-indexer.js +0 -775
  185. package/dist/agent/transcript-indexer.js.map +0 -1
  186. package/dist/agent/transcript-memory-migrations.d.ts +0 -25
  187. package/dist/agent/transcript-memory-migrations.d.ts.map +0 -1
  188. package/dist/agent/transcript-memory-migrations.js +0 -87
  189. package/dist/agent/transcript-memory-migrations.js.map +0 -1
  190. package/dist/agent/tunnel-credential-handler.d.ts +0 -90
  191. package/dist/agent/tunnel-credential-handler.d.ts.map +0 -1
  192. package/dist/agent/tunnel-credential-handler.js +0 -162
  193. package/dist/agent/tunnel-credential-handler.js.map +0 -1
  194. package/dist/agent/usage-backfill-handler.d.ts +0 -18
  195. package/dist/agent/usage-backfill-handler.d.ts.map +0 -1
  196. package/dist/agent/usage-backfill-handler.js +0 -69
  197. package/dist/agent/usage-backfill-handler.js.map +0 -1
  198. package/dist/agent/usage-gate.d.ts +0 -25
  199. package/dist/agent/usage-gate.d.ts.map +0 -1
  200. package/dist/agent/usage-gate.js +0 -83
  201. package/dist/agent/usage-gate.js.map +0 -1
  202. package/dist/agent/usage-handler.d.ts +0 -7
  203. package/dist/agent/usage-handler.d.ts.map +0 -1
  204. package/dist/agent/usage-handler.js +0 -28
  205. package/dist/agent/usage-handler.js.map +0 -1
  206. package/dist/agent/usage-report-builder.d.ts +0 -26
  207. package/dist/agent/usage-report-builder.d.ts.map +0 -1
  208. package/dist/agent/usage-report-builder.js +0 -80
  209. package/dist/agent/usage-report-builder.js.map +0 -1
  210. package/dist/agent/usage-report-queue.d.ts +0 -26
  211. package/dist/agent/usage-report-queue.d.ts.map +0 -1
  212. package/dist/agent/usage-report-queue.js +0 -199
  213. package/dist/agent/usage-report-queue.js.map +0 -1
  214. package/dist/agent/usage-report-types.d.ts +0 -41
  215. package/dist/agent/usage-report-types.d.ts.map +0 -1
  216. package/dist/agent/usage-report-types.js +0 -2
  217. package/dist/agent/usage-report-types.js.map +0 -1
  218. package/dist/agent/usage-reporter.d.ts +0 -31
  219. package/dist/agent/usage-reporter.d.ts.map +0 -1
  220. package/dist/agent/usage-reporter.js +0 -102
  221. package/dist/agent/usage-reporter.js.map +0 -1
  222. package/dist/agent/wake-cycle-tool-tracker.d.ts +0 -39
  223. package/dist/agent/wake-cycle-tool-tracker.d.ts.map +0 -1
  224. package/dist/agent/wake-cycle-tool-tracker.js +0 -72
  225. package/dist/agent/wake-cycle-tool-tracker.js.map +0 -1
  226. package/dist/anthropic-credentials.d.ts +0 -24
  227. package/dist/anthropic-credentials.d.ts.map +0 -1
  228. package/dist/anthropic-credentials.js +0 -37
  229. package/dist/anthropic-credentials.js.map +0 -1
  230. package/dist/billing/payg-handler.d.ts +0 -29
  231. package/dist/billing/payg-handler.d.ts.map +0 -1
  232. package/dist/billing/payg-handler.js +0 -92
  233. package/dist/billing/payg-handler.js.map +0 -1
  234. package/dist/billing/payment-handler.d.ts +0 -24
  235. package/dist/billing/payment-handler.d.ts.map +0 -1
  236. package/dist/billing/payment-handler.js +0 -101
  237. package/dist/billing/payment-handler.js.map +0 -1
  238. package/dist/builtin-skills/catalog/phone-adb-automation/SKILL.md +0 -412
  239. package/dist/builtin-skills/catalog/phone-adb-automation/phone_input.sh +0 -132
  240. package/dist/builtin-skills/catalog/phone-adb-automation/phone_launch.sh +0 -166
  241. package/dist/builtin-skills/catalog/phone-adb-automation/phone_screenshot.sh +0 -87
  242. package/dist/builtin-skills/catalog/phone-adb-automation/phone_security_kbd.py +0 -174
  243. package/dist/builtin-skills/catalog/phone-adb-automation/phone_setup.sh +0 -274
  244. package/dist/builtin-skills/catalog/phone-adb-automation/phone_swipe.sh +0 -111
  245. package/dist/builtin-skills/catalog/phone-adb-automation/phone_tap.sh +0 -87
  246. package/dist/builtin-skills/catalog/phone-adb-automation/phone_ui_parse.py +0 -176
  247. package/dist/builtin-skills/catalog/phone-adb-automation/phone_wake_unlock.sh +0 -67
  248. package/dist/builtin-skills/transcribe-audio/SKILL.md +0 -122
  249. package/dist/calendar/google-calendar.d.ts +0 -54
  250. package/dist/calendar/google-calendar.d.ts.map +0 -1
  251. package/dist/calendar/google-calendar.js +0 -156
  252. package/dist/calendar/google-calendar.js.map +0 -1
  253. package/dist/channels/web.d.ts +0 -40
  254. package/dist/channels/web.d.ts.map +0 -1
  255. package/dist/channels/web.js +0 -137
  256. package/dist/channels/web.js.map +0 -1
  257. package/dist/config/models.d.ts +0 -32
  258. package/dist/config/models.d.ts.map +0 -1
  259. package/dist/config/models.js +0 -57
  260. package/dist/config/models.js.map +0 -1
  261. package/dist/data-processing/convert-demo-cli.d.ts +0 -7
  262. package/dist/data-processing/convert-demo-cli.d.ts.map +0 -1
  263. package/dist/data-processing/convert-demo-cli.js +0 -30
  264. package/dist/data-processing/convert-demo-cli.js.map +0 -1
  265. package/dist/data-processing/convert-demo.d.ts +0 -26
  266. package/dist/data-processing/convert-demo.d.ts.map +0 -1
  267. package/dist/data-processing/convert-demo.js +0 -233
  268. package/dist/data-processing/convert-demo.js.map +0 -1
  269. package/dist/drive/google-drive.d.ts +0 -83
  270. package/dist/drive/google-drive.d.ts.map +0 -1
  271. package/dist/drive/google-drive.js +0 -219
  272. package/dist/drive/google-drive.js.map +0 -1
  273. package/dist/email/gmail-email.d.ts +0 -64
  274. package/dist/email/gmail-email.d.ts.map +0 -1
  275. package/dist/email/gmail-email.js +0 -167
  276. package/dist/email/gmail-email.js.map +0 -1
  277. package/dist/obs/auth.d.ts +0 -45
  278. package/dist/obs/auth.d.ts.map +0 -1
  279. package/dist/obs/auth.js +0 -181
  280. package/dist/obs/auth.js.map +0 -1
  281. package/dist/obs/mini-app/tasks.d.ts +0 -2
  282. package/dist/obs/mini-app/tasks.d.ts.map +0 -1
  283. package/dist/obs/mini-app/tasks.js +0 -506
  284. package/dist/obs/mini-app/tasks.js.map +0 -1
  285. package/dist/obs/rdp/icons/icons/app_windows.svg +0 -4
  286. package/dist/obs/rdp/icons/icons/clip_get.svg +0 -4
  287. package/dist/obs/rdp/icons/icons/clip_send.svg +0 -4
  288. package/dist/obs/rdp/icons/icons/clip_shared.svg +0 -4
  289. package/dist/obs/rdp/icons/icons/clipboard.svg +0 -4
  290. package/dist/obs/rdp/icons/icons/clipboard_shared.svg +0 -4
  291. package/dist/obs/rdp/icons/icons/control.svg +0 -4
  292. package/dist/obs/rdp/icons/icons/desktop.svg +0 -4
  293. package/dist/obs/rdp/icons/icons/display.svg +0 -4
  294. package/dist/obs/rdp/icons/icons/launchpad.svg +0 -4
  295. package/dist/obs/rdp/icons/icons/mission_control.svg +0 -4
  296. package/dist/obs/rdp/icons/icons/screenshot.svg +0 -4
  297. package/dist/obs/rdp/icons/icons/zoom_actual.svg +0 -4
  298. package/dist/obs/rdp/icons/icons/zoom_fit.svg +0 -4
  299. package/dist/obs/rdp/icons/icons/zoom_in.svg +0 -4
  300. package/dist/obs/rdp/icons/icons/zoom_out.svg +0 -4
  301. package/dist/obs/tunnel-telemetry.d.ts +0 -46
  302. package/dist/obs/tunnel-telemetry.d.ts.map +0 -1
  303. package/dist/obs/tunnel-telemetry.js +0 -70
  304. package/dist/obs/tunnel-telemetry.js.map +0 -1
  305. package/dist/onboarding/cloudflared-cert.d.ts +0 -15
  306. package/dist/onboarding/cloudflared-cert.d.ts.map +0 -1
  307. package/dist/onboarding/cloudflared-cert.js +0 -57
  308. package/dist/onboarding/cloudflared-cert.js.map +0 -1
  309. package/dist/onboarding/gh-auth-browser.d.ts +0 -10
  310. package/dist/onboarding/gh-auth-browser.d.ts.map +0 -1
  311. package/dist/onboarding/gh-auth-browser.js +0 -70
  312. package/dist/onboarding/gh-auth-browser.js.map +0 -1
  313. package/dist/onboarding/provision-eth-wallet.d.ts +0 -7
  314. package/dist/onboarding/provision-eth-wallet.d.ts.map +0 -1
  315. package/dist/onboarding/provision-eth-wallet.js +0 -14
  316. package/dist/onboarding/provision-eth-wallet.js.map +0 -1
  317. package/dist/onboarding/provision-workspace-account.d.ts +0 -14
  318. package/dist/onboarding/provision-workspace-account.d.ts.map +0 -1
  319. package/dist/onboarding/provision-workspace-account.js +0 -165
  320. package/dist/onboarding/provision-workspace-account.js.map +0 -1
  321. package/dist/onboarding/send-identity-credentials.d.ts +0 -11
  322. package/dist/onboarding/send-identity-credentials.d.ts.map +0 -1
  323. package/dist/onboarding/send-identity-credentials.js +0 -110
  324. package/dist/onboarding/send-identity-credentials.js.map +0 -1
  325. package/dist/openai-credentials.d.ts +0 -30
  326. package/dist/openai-credentials.d.ts.map +0 -1
  327. package/dist/openai-credentials.js +0 -37
  328. package/dist/openai-credentials.js.map +0 -1
  329. package/dist/phonecall-credentials.d.ts +0 -21
  330. package/dist/phonecall-credentials.d.ts.map +0 -1
  331. package/dist/phonecall-credentials.js +0 -34
  332. package/dist/phonecall-credentials.js.map +0 -1
  333. package/dist/realtime/agent-bridge.d.ts +0 -7
  334. package/dist/realtime/agent-bridge.d.ts.map +0 -1
  335. package/dist/realtime/agent-bridge.js +0 -31
  336. package/dist/realtime/agent-bridge.js.map +0 -1
  337. package/dist/realtime/assets/index.html +0 -1058
  338. package/dist/realtime/assets/samples/alloy.mp3 +0 -0
  339. package/dist/realtime/assets/samples/ash.mp3 +0 -0
  340. package/dist/realtime/assets/samples/ballad.mp3 +0 -0
  341. package/dist/realtime/assets/samples/cedar.mp3 +0 -0
  342. package/dist/realtime/assets/samples/coral.mp3 +0 -0
  343. package/dist/realtime/assets/samples/echo.mp3 +0 -0
  344. package/dist/realtime/assets/samples/marin.mp3 +0 -0
  345. package/dist/realtime/assets/samples/sage.mp3 +0 -0
  346. package/dist/realtime/assets/samples/shimmer.mp3 +0 -0
  347. package/dist/realtime/assets/samples/verse.mp3 +0 -0
  348. package/dist/realtime/context.d.ts +0 -14
  349. package/dist/realtime/context.d.ts.map +0 -1
  350. package/dist/realtime/context.js +0 -153
  351. package/dist/realtime/context.js.map +0 -1
  352. package/dist/realtime/http-helpers.d.ts +0 -5
  353. package/dist/realtime/http-helpers.d.ts.map +0 -1
  354. package/dist/realtime/http-helpers.js +0 -29
  355. package/dist/realtime/http-helpers.js.map +0 -1
  356. package/dist/realtime/index.d.ts +0 -62
  357. package/dist/realtime/index.d.ts.map +0 -1
  358. package/dist/realtime/index.js +0 -94
  359. package/dist/realtime/index.js.map +0 -1
  360. package/dist/realtime/server.d.ts +0 -6
  361. package/dist/realtime/server.d.ts.map +0 -1
  362. package/dist/realtime/server.js +0 -479
  363. package/dist/realtime/server.js.map +0 -1
  364. package/dist/realtime/telegram-auth.d.ts +0 -2
  365. package/dist/realtime/telegram-auth.d.ts.map +0 -1
  366. package/dist/realtime/telegram-auth.js +0 -24
  367. package/dist/realtime/telegram-auth.js.map +0 -1
  368. package/dist/realtime/tools.d.ts +0 -829
  369. package/dist/realtime/tools.d.ts.map +0 -1
  370. package/dist/realtime/tools.js +0 -611
  371. package/dist/realtime/tools.js.map +0 -1
  372. package/dist/realtime/types.d.ts +0 -62
  373. package/dist/realtime/types.d.ts.map +0 -1
  374. package/dist/realtime/types.js +0 -3
  375. package/dist/realtime/types.js.map +0 -1
  376. package/dist/realtime/voice-summarizer.d.ts +0 -4
  377. package/dist/realtime/voice-summarizer.d.ts.map +0 -1
  378. package/dist/realtime/voice-summarizer.js +0 -123
  379. package/dist/realtime/voice-summarizer.js.map +0 -1
  380. package/dist/realtime/websocket.d.ts +0 -7
  381. package/dist/realtime/websocket.d.ts.map +0 -1
  382. package/dist/realtime/websocket.js +0 -65
  383. package/dist/realtime/websocket.js.map +0 -1
  384. package/dist/service/gbox-tun.d.ts +0 -14
  385. package/dist/service/gbox-tun.d.ts.map +0 -1
  386. package/dist/service/gbox-tun.js +0 -315
  387. package/dist/service/gbox-tun.js.map +0 -1
  388. package/dist/skills/installed.d.ts +0 -11
  389. package/dist/skills/installed.d.ts.map +0 -1
  390. package/dist/skills/installed.js +0 -35
  391. package/dist/skills/installed.js.map +0 -1
  392. package/dist/tools/card.d.ts +0 -11
  393. package/dist/tools/card.d.ts.map +0 -1
  394. package/dist/tools/card.js +0 -87
  395. package/dist/tools/card.js.map +0 -1
  396. package/dist/tools/coordinate-resolver.d.ts +0 -30
  397. package/dist/tools/coordinate-resolver.d.ts.map +0 -1
  398. package/dist/tools/coordinate-resolver.js +0 -104
  399. package/dist/tools/coordinate-resolver.js.map +0 -1
  400. package/dist/tools/sms.d.ts +0 -16
  401. package/dist/tools/sms.d.ts.map +0 -1
  402. package/dist/tools/sms.js +0 -78
  403. package/dist/tools/sms.js.map +0 -1
  404. package/dist/tools/stock-data.d.ts +0 -70
  405. package/dist/tools/stock-data.d.ts.map +0 -1
  406. package/dist/tools/stock-data.js +0 -596
  407. package/dist/tools/stock-data.js.map +0 -1
  408. package/dist/tools/webapp.d.ts +0 -30
  409. package/dist/tools/webapp.d.ts.map +0 -1
  410. package/dist/tools/webapp.js +0 -114
  411. package/dist/tools/webapp.js.map +0 -1
  412. package/dist/utils/wechat-monitor.d.ts +0 -21
  413. package/dist/utils/wechat-monitor.d.ts.map +0 -1
  414. package/dist/utils/wechat-monitor.js +0 -88
  415. package/dist/utils/wechat-monitor.js.map +0 -1
  416. package/dist/webapp/index.d.ts +0 -28
  417. package/dist/webapp/index.d.ts.map +0 -1
  418. package/dist/webapp/index.js +0 -75
  419. package/dist/webapp/index.js.map +0 -1
  420. package/dist/webapp/server.d.ts +0 -32
  421. package/dist/webapp/server.d.ts.map +0 -1
  422. package/dist/webapp/server.js +0 -375
  423. package/dist/webapp/server.js.map +0 -1
  424. package/dist/webapp/storage.d.ts +0 -64
  425. package/dist/webapp/storage.d.ts.map +0 -1
  426. package/dist/webapp/storage.js +0 -103
  427. package/dist/webapp/storage.js.map +0 -1
  428. package/dist/webapp/ui.d.ts +0 -2
  429. package/dist/webapp/ui.d.ts.map +0 -1
  430. package/dist/webapp/ui.js +0 -319
  431. package/dist/webapp/ui.js.map +0 -1
  432. package/dist-agent/assets/index.html +0 -1058
  433. package/dist-agent/assets/samples/alloy.mp3 +0 -0
  434. package/dist-agent/assets/samples/ash.mp3 +0 -0
  435. package/dist-agent/assets/samples/ballad.mp3 +0 -0
  436. package/dist-agent/assets/samples/cedar.mp3 +0 -0
  437. package/dist-agent/assets/samples/coral.mp3 +0 -0
  438. package/dist-agent/assets/samples/echo.mp3 +0 -0
  439. package/dist-agent/assets/samples/marin.mp3 +0 -0
  440. package/dist-agent/assets/samples/sage.mp3 +0 -0
  441. package/dist-agent/assets/samples/shimmer.mp3 +0 -0
  442. package/dist-agent/assets/samples/verse.mp3 +0 -0
  443. package/dist-agent/realtime/assets/index.html +0 -1058
  444. package/dist-agent/realtime/assets/samples/alloy.mp3 +0 -0
  445. package/dist-agent/realtime/assets/samples/ash.mp3 +0 -0
  446. package/dist-agent/realtime/assets/samples/ballad.mp3 +0 -0
  447. package/dist-agent/realtime/assets/samples/cedar.mp3 +0 -0
  448. package/dist-agent/realtime/assets/samples/coral.mp3 +0 -0
  449. package/dist-agent/realtime/assets/samples/echo.mp3 +0 -0
  450. package/dist-agent/realtime/assets/samples/marin.mp3 +0 -0
  451. package/dist-agent/realtime/assets/samples/sage.mp3 +0 -0
  452. package/dist-agent/realtime/assets/samples/shimmer.mp3 +0 -0
  453. package/dist-agent/realtime/assets/samples/verse.mp3 +0 -0
@@ -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/claude → default family model + first compatible provider
6
+ * Payload `{ engine: "default" | "gpt" | "claude" | "<modelId>" }`:
7
+ * - default → follow 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/claude → default family model + first compatible provider
14
+ * Payload `{ engine: "default" | "gpt" | "claude" | "<modelId>" }`:
15
+ * - default → follow 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"}
@@ -1,7 +1,7 @@
1
1
  import { execFileSync, spawn } from "node:child_process";
2
2
  import fs from "node:fs";
3
3
  import { getPlaywriterProfileDir } from "../../../config/index.js";
4
- import { cleanPlaywriterExternalUninstalls, } from "../../../onboarding/playwriter-extension.js";
4
+ import { cleanPlaywriterExternalUninstalls, resolveBundledExtensionDir, shouldInstallBundledPlaywriterExtension, } from "../../../onboarding/playwriter-extension.js";
5
5
  import { getPlaywriterRelayStatus, getRelayExtensionDiagnosis, invalidateRelayStatusCache, } from "../../../utils/playwriter-relay.js";
6
6
  import { logger } from "../../../logger.js";
7
7
  let _dataDir = null;
@@ -29,6 +29,59 @@ function getChromePath() {
29
29
  _chromePath ??= findChromePath();
30
30
  return _chromePath;
31
31
  }
32
+ const DEVTOOLS_ACTIVE_PORT = "DevToolsActivePort";
33
+ const CHROME_EXIT_TIMEOUT_MS = 5_000;
34
+ function getDevToolsActivePortPath(profileDir) {
35
+ return `${profileDir}/${DEVTOOLS_ACTIVE_PORT}`;
36
+ }
37
+ async function readBrowserWebSocketUrl(profileDir, timeoutMs = 10_000) {
38
+ const portFile = getDevToolsActivePortPath(profileDir);
39
+ const deadline = Date.now() + timeoutMs;
40
+ while (Date.now() < deadline) {
41
+ try {
42
+ const [port, browserPath] = fs.readFileSync(portFile, "utf-8").trim().split("\n");
43
+ if (port && browserPath)
44
+ return `ws://127.0.0.1:${port}${browserPath}`;
45
+ }
46
+ catch {
47
+ // Chrome writes the file asynchronously after launch.
48
+ }
49
+ await new Promise((resolve) => setTimeout(resolve, 100));
50
+ }
51
+ return null;
52
+ }
53
+ async function installBundledExtensionOverCdp(webSocketUrl, extensionDir) {
54
+ return await new Promise((resolve) => {
55
+ const socket = new WebSocket(webSocketUrl);
56
+ const timer = setTimeout(() => {
57
+ socket.close();
58
+ resolve(false);
59
+ }, 10_000);
60
+ const finish = (ok) => {
61
+ clearTimeout(timer);
62
+ socket.close();
63
+ resolve(ok);
64
+ };
65
+ socket.addEventListener("open", () => {
66
+ socket.send(JSON.stringify({
67
+ id: 1,
68
+ method: "Extensions.loadUnpacked",
69
+ params: { path: extensionDir },
70
+ }));
71
+ });
72
+ socket.addEventListener("message", (event) => {
73
+ try {
74
+ const response = JSON.parse(String(event.data));
75
+ if (response.id === 1)
76
+ finish(!response.error);
77
+ }
78
+ catch {
79
+ finish(false);
80
+ }
81
+ });
82
+ socket.addEventListener("error", () => finish(false));
83
+ });
84
+ }
32
85
  /**
33
86
  * Kill any Chrome processes launched with `--remote-debugging-port=9222`
34
87
  * (the Playwright CDP profile). Safe to call when none are running.
@@ -49,27 +102,34 @@ export function killPlaywrightProfileCdpChrome() {
49
102
  * {@link killPlaywrightProfileCdpChrome}, which only targets the CDP profile's
50
103
  * `--remote-debugging-port=9222` flag.
51
104
  */
52
- export function killPlaywriterChrome() {
105
+ export async function killPlaywriterChrome(timeoutMs = CHROME_EXIT_TIMEOUT_MS) {
53
106
  try {
54
107
  execFileSync("pkill", ["-f", "--", `--user-data-dir=${getDataDir()}`], { stdio: "ignore" });
55
108
  }
56
109
  catch {
57
110
  // No matching process — expected.
111
+ return;
112
+ }
113
+ const deadline = Date.now() + timeoutMs;
114
+ while (isPlaywriterProfileChromeRunning()) {
115
+ if (Date.now() >= deadline) {
116
+ throw new Error("Playwriter Chrome did not exit before restart timeout");
117
+ }
118
+ await new Promise((resolve) => setTimeout(resolve, 100));
58
119
  }
59
120
  }
60
121
  /**
61
122
  * Launch Chrome with a dedicated user-data-dir for Playwriter.
62
123
  *
63
- * The Playwriter extension installs into this profile from its own
64
- * `External Extensions/<id>.json` (web-store `external_update_url`), written by
65
- * {@link ensurePlaywriterExtension}. Chrome installs externally-declared
66
- * extensions on launch, so we only scrub any stale `external_uninstalls`
67
- * blacklist entry first — while this profile's Chrome is guaranteed not
68
- * running — so a previously-removed copy is re-added. We deliberately do NOT use
69
- * `--load-extension`: that command-line switch is disabled by default on
70
- * Chrome 137+ (and fully on 149), so it silently loads nothing (issue #534).
124
+ * A new macOS External Extensions install is disabled until the user approves
125
+ * it, which leaves the relay with zero sockets and produces the misleading
126
+ * "Multiple extensions" 4003. When the profile has no usable extension (or is
127
+ * in that exact approval state), launch Chrome with a temporary debugging port
128
+ * and install the bundled extension using `Extensions.loadUnpacked`. This CDP
129
+ * command is supported in branded Chrome 137+ even though `--load-extension`
130
+ * is not. The profile-scoped External Extensions JSON remains a fallback.
71
131
  */
72
- export function launchPlaywriterProfileChrome() {
132
+ export async function launchPlaywriterProfileChrome() {
73
133
  const chromePath = getChromePath();
74
134
  if (!fs.existsSync(chromePath)) {
75
135
  logger.warn(`Chrome not found at ${chromePath}`);
@@ -79,12 +139,21 @@ export function launchPlaywriterProfileChrome() {
79
139
  // Chrome is guaranteed not running, so Chrome re-installs the Playwriter
80
140
  // extension from the profile's External Extensions JSON on launch.
81
141
  cleanPlaywriterExternalUninstalls(getDataDir());
142
+ const profileDir = getDataDir();
143
+ const extensionDir = resolveBundledExtensionDir();
144
+ const installBundled = extensionDir !== null && shouldInstallBundledPlaywriterExtension(profileDir);
82
145
  const flags = [
83
- `--user-data-dir=${getDataDir()}`,
146
+ `--user-data-dir=${profileDir}`,
84
147
  "--no-first-run",
85
148
  "--no-default-browser-check",
86
149
  "--profile-directory=Default",
87
150
  ];
151
+ if (installBundled) {
152
+ flags.push("--remote-debugging-port=0", "--enable-unsafe-extension-debugging");
153
+ // Chrome leaves this file behind after exit. Remove it before launch so the
154
+ // CDP installer cannot connect to the previous browser's dead endpoint.
155
+ fs.rmSync(getDevToolsActivePortPath(profileDir), { force: true });
156
+ }
88
157
  const child = spawn(chromePath, flags, {
89
158
  detached: true,
90
159
  stdio: "ignore",
@@ -94,6 +163,15 @@ export function launchPlaywriterProfileChrome() {
94
163
  });
95
164
  child.unref();
96
165
  logger.system("Playwriter: launched dedicated Chrome instance");
166
+ if (installBundled) {
167
+ const browserWebSocketUrl = await readBrowserWebSocketUrl(profileDir);
168
+ if (browserWebSocketUrl && await installBundledExtensionOverCdp(browserWebSocketUrl, extensionDir)) {
169
+ logger.system("Playwriter: installed bundled extension through Chrome CDP");
170
+ }
171
+ else {
172
+ logger.warn("Playwriter: failed to install bundled extension through Chrome CDP; using External Extensions fallback");
173
+ }
174
+ }
97
175
  }
98
176
  /**
99
177
  * Check whether a Chrome process with the Playwriter data dir is running.
@@ -107,9 +185,9 @@ export function isPlaywriterProfileChromeRunning() {
107
185
  return false;
108
186
  }
109
187
  }
110
- function restartChromeForPlaywriter() {
111
- killPlaywriterChrome();
112
- launchPlaywriterProfileChrome();
188
+ async function restartChromeForPlaywriter() {
189
+ await killPlaywriterChrome();
190
+ await launchPlaywriterProfileChrome();
113
191
  // The restart kills + relaunches Chrome, so the old relay status (cached up to
114
192
  // 30s by the caller) may still report extensionConnected for a connection that
115
193
  // is already gone. Drop it so the next tool call does a fresh probe against the
@@ -136,7 +214,7 @@ function restartChromeForPlaywriter() {
136
214
  export async function ensurePlaywriterChrome(didResetConnectionsThisTurn, host = "127.0.0.1", port = 19988) {
137
215
  if (!isPlaywriterProfileChromeRunning()) {
138
216
  logger.system("Playwriter Chrome not running — launching");
139
- launchPlaywriterProfileChrome();
217
+ await launchPlaywriterProfileChrome();
140
218
  return didResetConnectionsThisTurn;
141
219
  }
142
220
  // Chrome is running. Only restart if its extension connection is stale, and
@@ -153,7 +231,7 @@ export async function ensurePlaywriterChrome(didResetConnectionsThisTurn, host =
153
231
  // close reason (issue #534, layer 2).
154
232
  const diagnosis = await getRelayExtensionDiagnosis(host, port);
155
233
  logger.system(`Playwriter Chrome running but relay extension not connected (${diagnosis.kind}: ${diagnosis.message}) — restarting`);
156
- restartChromeForPlaywriter();
234
+ await restartChromeForPlaywriter();
157
235
  return true;
158
236
  }
159
237
  //# sourceMappingURL=session-browser-policy.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"session-browser-policy.js","sourceRoot":"","sources":["../../../../src/agent/engines/claude/session-browser-policy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-browser-policy.js","sourceRoot":"","sources":["../../../../src/agent/engines/claude/session-browser-policy.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,4 @@
1
- import type { Model, VisionClawConfig } from "../../config/types.js";
1
+ import type { VisionClawConfig } from "../../config/types.js";
2
2
  export type AgentEngine = "claude" | "pi-coding";
3
- /** True only for built-in Claude family models (not pinned ids that happen to contain "claude"). */
4
- export declare function isClaudeModel(model: Model): boolean;
5
3
  export declare function getAgentEngine(config: VisionClawConfig): AgentEngine;
6
4
  //# sourceMappingURL=engine-factory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"engine-factory.d.ts","sourceRoot":"","sources":["../../../src/agent/engines/engine-factory.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAErE,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;AAEjD,oGAAoG;AACpG,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAEnD;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,gBAAgB,GAAG,WAAW,CAGpE"}
1
+ {"version":3,"file":"engine-factory.d.ts","sourceRoot":"","sources":["../../../src/agent/engines/engine-factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAG9D,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;AAEjD,wBAAgB,cAAc,CAAC,MAAM,EAAE,gBAAgB,GAAG,WAAW,CAMpE"}
@@ -1,11 +1,9 @@
1
- import { isKnownClaudeModel } from "../../config/models.js";
2
- /** True only for built-in Claude family models (not pinned ids that happen to contain "claude"). */
3
- export function isClaudeModel(model) {
4
- return isKnownClaudeModel(model);
5
- }
1
+ import { getEffectiveRoute } from "../model-provider.js";
6
2
  export function getAgentEngine(config) {
7
- if (isClaudeModel(config.model))
8
- return "claude";
9
- return "pi-coding";
3
+ const runtime = getEffectiveRoute(config)?.runtime;
4
+ if (!runtime) {
5
+ throw new Error("LLM routing unavailable: no cached or server route for the selected engine");
6
+ }
7
+ return runtime;
10
8
  }
11
9
  //# sourceMappingURL=engine-factory.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"engine-factory.js","sourceRoot":"","sources":["../../../src/agent/engines/engine-factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAK5D,oGAAoG;AACpG,MAAM,UAAU,aAAa,CAAC,KAAY;IACxC,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,MAAwB;IACrD,IAAI,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC;QAAE,OAAO,QAAQ,CAAC;IACjD,OAAO,WAAW,CAAC;AACrB,CAAC"}
1
+ {"version":3,"file":"engine-factory.js","sourceRoot":"","sources":["../../../src/agent/engines/engine-factory.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAIzD,MAAM,UAAU,cAAc,CAAC,MAAwB;IACrD,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IACnD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,4EAA4E,CAAC,CAAC;IAChG,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../../src/agent/engines/pi-coding/session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../../src/agent/engines/pi-coding/session.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,6 @@ import crypto from "crypto";
4
4
  import fs from "fs";
5
5
  import path from "path";
6
6
  import { getConfigDir, getSkillsDir, loadSessionId, loadUsageSnapshot, saveSessionId, saveUsageSnapshot } from "../../../config/index.js";
7
- import { isPinnedModel } from "../../../config/models.js";
8
7
  import { logger } from "../../../logger.js";
9
8
  import { armContextActionRestartFallback } from "../../context-action-restart-fallback.js";
10
9
  import { COMPACTION_ABORT_RESTART_GRACE_MS, DEFAULT_COMPACTION_TIMEOUT_MS, } from "../../compaction-policy.js";
@@ -489,7 +488,7 @@ export class PiCodingAgentSession {
489
488
  // Scoped to pinned models only (e.g. `/engine kimi-k3`) — the built-in
490
489
  // gpt/claude paths are known-good and stay byte-identical.
491
490
  pi.on("before_provider_request", (event) => {
492
- if (!isPinnedModel(this.config.model))
491
+ if (!this.config.pinnedModel)
493
492
  return undefined;
494
493
  return sanitizeToolSchemasInPayload(event.payload);
495
494
  });