visionclaw 0.1.210 → 0.1.211-beta.0

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 (434) hide show
  1. package/dist/agent/engines/claude/session.d.ts.map +1 -1
  2. package/dist/agent/engines/claude/session.js +4 -1
  3. package/dist/agent/engines/claude/session.js.map +1 -1
  4. package/dist/agent/engines/pi/tools.d.ts +3 -0
  5. package/dist/agent/engines/pi/tools.d.ts.map +1 -1
  6. package/dist/agent/engines/pi/tools.js +8 -2
  7. package/dist/agent/engines/pi/tools.js.map +1 -1
  8. package/dist/agent/engines/pi-coding/session.d.ts.map +1 -1
  9. package/dist/agent/engines/pi-coding/session.js +4 -1
  10. package/dist/agent/engines/pi-coding/session.js.map +1 -1
  11. package/dist/agent/engines/pi-coding/tools.d.ts +2 -0
  12. package/dist/agent/engines/pi-coding/tools.d.ts.map +1 -1
  13. package/dist/agent/engines/pi-coding/tools.js.map +1 -1
  14. package/dist/agent/interrupt-handler.d.ts.map +1 -1
  15. package/dist/agent/interrupt-handler.js +3 -0
  16. package/dist/agent/interrupt-handler.js.map +1 -1
  17. package/dist/agent/loop.d.ts.map +1 -1
  18. package/dist/agent/loop.js +2 -0
  19. package/dist/agent/loop.js.map +1 -1
  20. package/dist/agent/system-prompt.d.ts +2 -0
  21. package/dist/agent/system-prompt.d.ts.map +1 -1
  22. package/dist/agent/system-prompt.js +2 -0
  23. package/dist/agent/system-prompt.js.map +1 -1
  24. package/dist/builtin-skills/fin-app/SKILL.md +2 -2
  25. package/dist/tools/index.d.ts +7 -0
  26. package/dist/tools/index.d.ts.map +1 -1
  27. package/dist/tools/index.js +2 -0
  28. package/dist/tools/index.js.map +1 -1
  29. package/dist-agent/bundle.cjs +5012 -4550
  30. package/package.json +1 -1
  31. package/dist/agent/applied-credential-signature.d.ts +0 -53
  32. package/dist/agent/applied-credential-signature.d.ts.map +0 -1
  33. package/dist/agent/applied-credential-signature.js +0 -137
  34. package/dist/agent/applied-credential-signature.js.map +0 -1
  35. package/dist/agent/capabilities.d.ts +0 -56
  36. package/dist/agent/capabilities.d.ts.map +0 -1
  37. package/dist/agent/capabilities.js +0 -121
  38. package/dist/agent/capabilities.js.map +0 -1
  39. package/dist/agent/engines/client-factory.d.ts +0 -63
  40. package/dist/agent/engines/client-factory.d.ts.map +0 -1
  41. package/dist/agent/engines/client-factory.js +0 -382
  42. package/dist/agent/engines/client-factory.js.map +0 -1
  43. package/dist/agent/engines/engine.d.ts +0 -8
  44. package/dist/agent/engines/engine.d.ts.map +0 -1
  45. package/dist/agent/engines/engine.js +0 -15
  46. package/dist/agent/engines/engine.js.map +0 -1
  47. package/dist/agent/engines/openai/file-session.d.ts +0 -19
  48. package/dist/agent/engines/openai/file-session.d.ts.map +0 -1
  49. package/dist/agent/engines/openai/file-session.js +0 -78
  50. package/dist/agent/engines/openai/file-session.js.map +0 -1
  51. package/dist/agent/engines/openai/file-tools.d.ts +0 -35
  52. package/dist/agent/engines/openai/file-tools.d.ts.map +0 -1
  53. package/dist/agent/engines/openai/file-tools.js +0 -194
  54. package/dist/agent/engines/openai/file-tools.js.map +0 -1
  55. package/dist/agent/engines/openai/session.d.ts +0 -55
  56. package/dist/agent/engines/openai/session.d.ts.map +0 -1
  57. package/dist/agent/engines/openai/session.js +0 -447
  58. package/dist/agent/engines/openai/session.js.map +0 -1
  59. package/dist/agent/engines/openai/tools.d.ts +0 -15
  60. package/dist/agent/engines/openai/tools.d.ts.map +0 -1
  61. package/dist/agent/engines/openai/tools.js +0 -221
  62. package/dist/agent/engines/openai/tools.js.map +0 -1
  63. package/dist/agent/engines/pi/session.d.ts +0 -49
  64. package/dist/agent/engines/pi/session.d.ts.map +0 -1
  65. package/dist/agent/engines/pi/session.js +0 -309
  66. package/dist/agent/engines/pi/session.js.map +0 -1
  67. package/dist/agent/memory-preload.d.ts +0 -55
  68. package/dist/agent/memory-preload.d.ts.map +0 -1
  69. package/dist/agent/memory-preload.js +0 -166
  70. package/dist/agent/memory-preload.js.map +0 -1
  71. package/dist/agent/providers/claude/cli-resolver.d.ts +0 -16
  72. package/dist/agent/providers/claude/cli-resolver.d.ts.map +0 -1
  73. package/dist/agent/providers/claude/cli-resolver.js +0 -83
  74. package/dist/agent/providers/claude/cli-resolver.js.map +0 -1
  75. package/dist/agent/providers/claude/session-browser-policy.d.ts +0 -9
  76. package/dist/agent/providers/claude/session-browser-policy.d.ts.map +0 -1
  77. package/dist/agent/providers/claude/session-browser-policy.js +0 -49
  78. package/dist/agent/providers/claude/session-browser-policy.js.map +0 -1
  79. package/dist/agent/providers/claude/session.d.ts +0 -304
  80. package/dist/agent/providers/claude/session.d.ts.map +0 -1
  81. package/dist/agent/providers/claude/session.js +0 -1236
  82. package/dist/agent/providers/claude/session.js.map +0 -1
  83. package/dist/agent/providers/client-factory.d.ts +0 -60
  84. package/dist/agent/providers/client-factory.d.ts.map +0 -1
  85. package/dist/agent/providers/client-factory.js +0 -400
  86. package/dist/agent/providers/client-factory.js.map +0 -1
  87. package/dist/agent/providers/openai/file-session.d.ts +0 -19
  88. package/dist/agent/providers/openai/file-session.d.ts.map +0 -1
  89. package/dist/agent/providers/openai/file-session.js +0 -78
  90. package/dist/agent/providers/openai/file-session.js.map +0 -1
  91. package/dist/agent/providers/openai/session.d.ts +0 -55
  92. package/dist/agent/providers/openai/session.d.ts.map +0 -1
  93. package/dist/agent/providers/openai/session.js +0 -447
  94. package/dist/agent/providers/openai/session.js.map +0 -1
  95. package/dist/agent/providers/openai/tools.d.ts +0 -15
  96. package/dist/agent/providers/openai/tools.d.ts.map +0 -1
  97. package/dist/agent/providers/openai/tools.js +0 -229
  98. package/dist/agent/providers/openai/tools.js.map +0 -1
  99. package/dist/agent/providers/session-types.d.ts +0 -153
  100. package/dist/agent/providers/session-types.d.ts.map +0 -1
  101. package/dist/agent/providers/session-types.js +0 -2
  102. package/dist/agent/providers/session-types.js.map +0 -1
  103. package/dist/agent/providers/system-prompt-log.d.ts +0 -9
  104. package/dist/agent/providers/system-prompt-log.d.ts.map +0 -1
  105. package/dist/agent/providers/system-prompt-log.js +0 -46
  106. package/dist/agent/providers/system-prompt-log.js.map +0 -1
  107. package/dist/agent/qq-claim-signal.d.ts +0 -9
  108. package/dist/agent/qq-claim-signal.d.ts.map +0 -1
  109. package/dist/agent/qq-claim-signal.js +0 -38
  110. package/dist/agent/qq-claim-signal.js.map +0 -1
  111. package/dist/agent/runtime-telemetry-redaction.d.ts +0 -4
  112. package/dist/agent/runtime-telemetry-redaction.d.ts.map +0 -1
  113. package/dist/agent/runtime-telemetry-redaction.js +0 -92
  114. package/dist/agent/runtime-telemetry-redaction.js.map +0 -1
  115. package/dist/agent/transcript-backfill.d.ts +0 -54
  116. package/dist/agent/transcript-backfill.d.ts.map +0 -1
  117. package/dist/agent/transcript-backfill.js +0 -604
  118. package/dist/agent/transcript-backfill.js.map +0 -1
  119. package/dist/agent/transcript-indexer.d.ts +0 -200
  120. package/dist/agent/transcript-indexer.d.ts.map +0 -1
  121. package/dist/agent/transcript-indexer.js +0 -775
  122. package/dist/agent/transcript-indexer.js.map +0 -1
  123. package/dist/agent/transcript-memory-migrations.d.ts +0 -25
  124. package/dist/agent/transcript-memory-migrations.d.ts.map +0 -1
  125. package/dist/agent/transcript-memory-migrations.js +0 -87
  126. package/dist/agent/transcript-memory-migrations.js.map +0 -1
  127. package/dist/agent/tunnel-credential-handler.d.ts +0 -90
  128. package/dist/agent/tunnel-credential-handler.d.ts.map +0 -1
  129. package/dist/agent/tunnel-credential-handler.js +0 -162
  130. package/dist/agent/tunnel-credential-handler.js.map +0 -1
  131. package/dist/agent/usage-backfill-handler.d.ts +0 -18
  132. package/dist/agent/usage-backfill-handler.d.ts.map +0 -1
  133. package/dist/agent/usage-backfill-handler.js +0 -69
  134. package/dist/agent/usage-backfill-handler.js.map +0 -1
  135. package/dist/agent/usage-gate.d.ts +0 -25
  136. package/dist/agent/usage-gate.d.ts.map +0 -1
  137. package/dist/agent/usage-gate.js +0 -83
  138. package/dist/agent/usage-gate.js.map +0 -1
  139. package/dist/agent/usage-handler.d.ts +0 -7
  140. package/dist/agent/usage-handler.d.ts.map +0 -1
  141. package/dist/agent/usage-handler.js +0 -28
  142. package/dist/agent/usage-handler.js.map +0 -1
  143. package/dist/agent/usage-report-builder.d.ts +0 -26
  144. package/dist/agent/usage-report-builder.d.ts.map +0 -1
  145. package/dist/agent/usage-report-builder.js +0 -80
  146. package/dist/agent/usage-report-builder.js.map +0 -1
  147. package/dist/agent/usage-report-queue.d.ts +0 -26
  148. package/dist/agent/usage-report-queue.d.ts.map +0 -1
  149. package/dist/agent/usage-report-queue.js +0 -199
  150. package/dist/agent/usage-report-queue.js.map +0 -1
  151. package/dist/agent/usage-report-types.d.ts +0 -41
  152. package/dist/agent/usage-report-types.d.ts.map +0 -1
  153. package/dist/agent/usage-report-types.js +0 -2
  154. package/dist/agent/usage-report-types.js.map +0 -1
  155. package/dist/agent/usage-reporter.d.ts +0 -31
  156. package/dist/agent/usage-reporter.d.ts.map +0 -1
  157. package/dist/agent/usage-reporter.js +0 -102
  158. package/dist/agent/usage-reporter.js.map +0 -1
  159. package/dist/agent/wake-cycle-tool-tracker.d.ts +0 -39
  160. package/dist/agent/wake-cycle-tool-tracker.d.ts.map +0 -1
  161. package/dist/agent/wake-cycle-tool-tracker.js +0 -72
  162. package/dist/agent/wake-cycle-tool-tracker.js.map +0 -1
  163. package/dist/anthropic-credentials.d.ts +0 -24
  164. package/dist/anthropic-credentials.d.ts.map +0 -1
  165. package/dist/anthropic-credentials.js +0 -37
  166. package/dist/anthropic-credentials.js.map +0 -1
  167. package/dist/billing/payg-handler.d.ts +0 -29
  168. package/dist/billing/payg-handler.d.ts.map +0 -1
  169. package/dist/billing/payg-handler.js +0 -92
  170. package/dist/billing/payg-handler.js.map +0 -1
  171. package/dist/billing/payment-handler.d.ts +0 -24
  172. package/dist/billing/payment-handler.d.ts.map +0 -1
  173. package/dist/billing/payment-handler.js +0 -101
  174. package/dist/billing/payment-handler.js.map +0 -1
  175. package/dist/builtin-skills/catalog/phone-adb-automation/SKILL.md +0 -412
  176. package/dist/builtin-skills/catalog/phone-adb-automation/phone_input.sh +0 -132
  177. package/dist/builtin-skills/catalog/phone-adb-automation/phone_launch.sh +0 -166
  178. package/dist/builtin-skills/catalog/phone-adb-automation/phone_screenshot.sh +0 -87
  179. package/dist/builtin-skills/catalog/phone-adb-automation/phone_security_kbd.py +0 -174
  180. package/dist/builtin-skills/catalog/phone-adb-automation/phone_setup.sh +0 -274
  181. package/dist/builtin-skills/catalog/phone-adb-automation/phone_swipe.sh +0 -111
  182. package/dist/builtin-skills/catalog/phone-adb-automation/phone_tap.sh +0 -87
  183. package/dist/builtin-skills/catalog/phone-adb-automation/phone_ui_parse.py +0 -176
  184. package/dist/builtin-skills/catalog/phone-adb-automation/phone_wake_unlock.sh +0 -67
  185. package/dist/builtin-skills/transcribe-audio/SKILL.md +0 -122
  186. package/dist/calendar/google-calendar.d.ts +0 -54
  187. package/dist/calendar/google-calendar.d.ts.map +0 -1
  188. package/dist/calendar/google-calendar.js +0 -156
  189. package/dist/calendar/google-calendar.js.map +0 -1
  190. package/dist/channels/web.d.ts +0 -40
  191. package/dist/channels/web.d.ts.map +0 -1
  192. package/dist/channels/web.js +0 -137
  193. package/dist/channels/web.js.map +0 -1
  194. package/dist/config/models.d.ts +0 -32
  195. package/dist/config/models.d.ts.map +0 -1
  196. package/dist/config/models.js +0 -57
  197. package/dist/config/models.js.map +0 -1
  198. package/dist/data-processing/convert-demo-cli.d.ts +0 -7
  199. package/dist/data-processing/convert-demo-cli.d.ts.map +0 -1
  200. package/dist/data-processing/convert-demo-cli.js +0 -30
  201. package/dist/data-processing/convert-demo-cli.js.map +0 -1
  202. package/dist/data-processing/convert-demo.d.ts +0 -26
  203. package/dist/data-processing/convert-demo.d.ts.map +0 -1
  204. package/dist/data-processing/convert-demo.js +0 -233
  205. package/dist/data-processing/convert-demo.js.map +0 -1
  206. package/dist/drive/google-drive.d.ts +0 -83
  207. package/dist/drive/google-drive.d.ts.map +0 -1
  208. package/dist/drive/google-drive.js +0 -219
  209. package/dist/drive/google-drive.js.map +0 -1
  210. package/dist/email/gmail-email.d.ts +0 -64
  211. package/dist/email/gmail-email.d.ts.map +0 -1
  212. package/dist/email/gmail-email.js +0 -167
  213. package/dist/email/gmail-email.js.map +0 -1
  214. package/dist/factcheck/agent.d.ts +0 -50
  215. package/dist/factcheck/agent.d.ts.map +0 -1
  216. package/dist/factcheck/agent.js +0 -508
  217. package/dist/factcheck/agent.js.map +0 -1
  218. package/dist/factcheck/financial-verifier.d.ts +0 -49
  219. package/dist/factcheck/financial-verifier.d.ts.map +0 -1
  220. package/dist/factcheck/financial-verifier.js +0 -109
  221. package/dist/factcheck/financial-verifier.js.map +0 -1
  222. package/dist/factcheck/setup.d.ts +0 -32
  223. package/dist/factcheck/setup.d.ts.map +0 -1
  224. package/dist/factcheck/setup.js +0 -70
  225. package/dist/factcheck/setup.js.map +0 -1
  226. package/dist/factcheck/sidecar.d.ts +0 -131
  227. package/dist/factcheck/sidecar.d.ts.map +0 -1
  228. package/dist/factcheck/sidecar.js +0 -348
  229. package/dist/factcheck/sidecar.js.map +0 -1
  230. package/dist/factcheck/store.d.ts +0 -111
  231. package/dist/factcheck/store.d.ts.map +0 -1
  232. package/dist/factcheck/store.js +0 -246
  233. package/dist/factcheck/store.js.map +0 -1
  234. package/dist/factcheck/web-searcher.d.ts +0 -22
  235. package/dist/factcheck/web-searcher.d.ts.map +0 -1
  236. package/dist/factcheck/web-searcher.js +0 -90
  237. package/dist/factcheck/web-searcher.js.map +0 -1
  238. package/dist/obs/auth.d.ts +0 -45
  239. package/dist/obs/auth.d.ts.map +0 -1
  240. package/dist/obs/auth.js +0 -181
  241. package/dist/obs/auth.js.map +0 -1
  242. package/dist/obs/mini-app/tasks.d.ts +0 -2
  243. package/dist/obs/mini-app/tasks.d.ts.map +0 -1
  244. package/dist/obs/mini-app/tasks.js +0 -506
  245. package/dist/obs/mini-app/tasks.js.map +0 -1
  246. package/dist/obs/rdp/icons/icons/app_windows.svg +0 -4
  247. package/dist/obs/rdp/icons/icons/clip_get.svg +0 -4
  248. package/dist/obs/rdp/icons/icons/clip_send.svg +0 -4
  249. package/dist/obs/rdp/icons/icons/clip_shared.svg +0 -4
  250. package/dist/obs/rdp/icons/icons/clipboard.svg +0 -4
  251. package/dist/obs/rdp/icons/icons/clipboard_shared.svg +0 -4
  252. package/dist/obs/rdp/icons/icons/control.svg +0 -4
  253. package/dist/obs/rdp/icons/icons/desktop.svg +0 -4
  254. package/dist/obs/rdp/icons/icons/display.svg +0 -4
  255. package/dist/obs/rdp/icons/icons/launchpad.svg +0 -4
  256. package/dist/obs/rdp/icons/icons/mission_control.svg +0 -4
  257. package/dist/obs/rdp/icons/icons/screenshot.svg +0 -4
  258. package/dist/obs/rdp/icons/icons/zoom_actual.svg +0 -4
  259. package/dist/obs/rdp/icons/icons/zoom_fit.svg +0 -4
  260. package/dist/obs/rdp/icons/icons/zoom_in.svg +0 -4
  261. package/dist/obs/rdp/icons/icons/zoom_out.svg +0 -4
  262. package/dist/obs/tunnel-telemetry.d.ts +0 -46
  263. package/dist/obs/tunnel-telemetry.d.ts.map +0 -1
  264. package/dist/obs/tunnel-telemetry.js +0 -70
  265. package/dist/obs/tunnel-telemetry.js.map +0 -1
  266. package/dist/onboarding/cloudflared-cert.d.ts +0 -15
  267. package/dist/onboarding/cloudflared-cert.d.ts.map +0 -1
  268. package/dist/onboarding/cloudflared-cert.js +0 -57
  269. package/dist/onboarding/cloudflared-cert.js.map +0 -1
  270. package/dist/onboarding/gh-auth-browser.d.ts +0 -10
  271. package/dist/onboarding/gh-auth-browser.d.ts.map +0 -1
  272. package/dist/onboarding/gh-auth-browser.js +0 -70
  273. package/dist/onboarding/gh-auth-browser.js.map +0 -1
  274. package/dist/onboarding/provision-eth-wallet.d.ts +0 -7
  275. package/dist/onboarding/provision-eth-wallet.d.ts.map +0 -1
  276. package/dist/onboarding/provision-eth-wallet.js +0 -14
  277. package/dist/onboarding/provision-eth-wallet.js.map +0 -1
  278. package/dist/onboarding/provision-workspace-account.d.ts +0 -14
  279. package/dist/onboarding/provision-workspace-account.d.ts.map +0 -1
  280. package/dist/onboarding/provision-workspace-account.js +0 -165
  281. package/dist/onboarding/provision-workspace-account.js.map +0 -1
  282. package/dist/onboarding/provisioning-spec.d.ts +0 -62
  283. package/dist/onboarding/provisioning-spec.d.ts.map +0 -1
  284. package/dist/onboarding/provisioning-spec.js +0 -159
  285. package/dist/onboarding/provisioning-spec.js.map +0 -1
  286. package/dist/onboarding/send-identity-credentials.d.ts +0 -11
  287. package/dist/onboarding/send-identity-credentials.d.ts.map +0 -1
  288. package/dist/onboarding/send-identity-credentials.js +0 -110
  289. package/dist/onboarding/send-identity-credentials.js.map +0 -1
  290. package/dist/onboarding/setup-credentials.d.ts +0 -7
  291. package/dist/onboarding/setup-credentials.d.ts.map +0 -1
  292. package/dist/onboarding/setup-credentials.js +0 -44
  293. package/dist/onboarding/setup-credentials.js.map +0 -1
  294. package/dist/openai-credentials.d.ts +0 -30
  295. package/dist/openai-credentials.d.ts.map +0 -1
  296. package/dist/openai-credentials.js +0 -37
  297. package/dist/openai-credentials.js.map +0 -1
  298. package/dist/phonecall-credentials.d.ts +0 -21
  299. package/dist/phonecall-credentials.d.ts.map +0 -1
  300. package/dist/phonecall-credentials.js +0 -34
  301. package/dist/phonecall-credentials.js.map +0 -1
  302. package/dist/realtime/agent-bridge.d.ts +0 -7
  303. package/dist/realtime/agent-bridge.d.ts.map +0 -1
  304. package/dist/realtime/agent-bridge.js +0 -31
  305. package/dist/realtime/agent-bridge.js.map +0 -1
  306. package/dist/realtime/assets/index.html +0 -1058
  307. package/dist/realtime/assets/samples/alloy.mp3 +0 -0
  308. package/dist/realtime/assets/samples/ash.mp3 +0 -0
  309. package/dist/realtime/assets/samples/ballad.mp3 +0 -0
  310. package/dist/realtime/assets/samples/cedar.mp3 +0 -0
  311. package/dist/realtime/assets/samples/coral.mp3 +0 -0
  312. package/dist/realtime/assets/samples/echo.mp3 +0 -0
  313. package/dist/realtime/assets/samples/marin.mp3 +0 -0
  314. package/dist/realtime/assets/samples/sage.mp3 +0 -0
  315. package/dist/realtime/assets/samples/shimmer.mp3 +0 -0
  316. package/dist/realtime/assets/samples/verse.mp3 +0 -0
  317. package/dist/realtime/context.d.ts +0 -14
  318. package/dist/realtime/context.d.ts.map +0 -1
  319. package/dist/realtime/context.js +0 -153
  320. package/dist/realtime/context.js.map +0 -1
  321. package/dist/realtime/http-helpers.d.ts +0 -5
  322. package/dist/realtime/http-helpers.d.ts.map +0 -1
  323. package/dist/realtime/http-helpers.js +0 -29
  324. package/dist/realtime/http-helpers.js.map +0 -1
  325. package/dist/realtime/index.d.ts +0 -62
  326. package/dist/realtime/index.d.ts.map +0 -1
  327. package/dist/realtime/index.js +0 -94
  328. package/dist/realtime/index.js.map +0 -1
  329. package/dist/realtime/server.d.ts +0 -6
  330. package/dist/realtime/server.d.ts.map +0 -1
  331. package/dist/realtime/server.js +0 -479
  332. package/dist/realtime/server.js.map +0 -1
  333. package/dist/realtime/telegram-auth.d.ts +0 -2
  334. package/dist/realtime/telegram-auth.d.ts.map +0 -1
  335. package/dist/realtime/telegram-auth.js +0 -24
  336. package/dist/realtime/telegram-auth.js.map +0 -1
  337. package/dist/realtime/tools.d.ts +0 -829
  338. package/dist/realtime/tools.d.ts.map +0 -1
  339. package/dist/realtime/tools.js +0 -611
  340. package/dist/realtime/tools.js.map +0 -1
  341. package/dist/realtime/types.d.ts +0 -62
  342. package/dist/realtime/types.d.ts.map +0 -1
  343. package/dist/realtime/types.js +0 -3
  344. package/dist/realtime/types.js.map +0 -1
  345. package/dist/realtime/voice-summarizer.d.ts +0 -4
  346. package/dist/realtime/voice-summarizer.d.ts.map +0 -1
  347. package/dist/realtime/voice-summarizer.js +0 -123
  348. package/dist/realtime/voice-summarizer.js.map +0 -1
  349. package/dist/realtime/websocket.d.ts +0 -7
  350. package/dist/realtime/websocket.d.ts.map +0 -1
  351. package/dist/realtime/websocket.js +0 -65
  352. package/dist/realtime/websocket.js.map +0 -1
  353. package/dist/service/gbox-tun.d.ts +0 -14
  354. package/dist/service/gbox-tun.d.ts.map +0 -1
  355. package/dist/service/gbox-tun.js +0 -315
  356. package/dist/service/gbox-tun.js.map +0 -1
  357. package/dist/skills/installed.d.ts +0 -11
  358. package/dist/skills/installed.d.ts.map +0 -1
  359. package/dist/skills/installed.js +0 -35
  360. package/dist/skills/installed.js.map +0 -1
  361. package/dist/threads/worker-desktop-runtime.d.ts +0 -6
  362. package/dist/threads/worker-desktop-runtime.d.ts.map +0 -1
  363. package/dist/threads/worker-desktop-runtime.js +0 -26
  364. package/dist/threads/worker-desktop-runtime.js.map +0 -1
  365. package/dist/tools/card.d.ts +0 -11
  366. package/dist/tools/card.d.ts.map +0 -1
  367. package/dist/tools/card.js +0 -87
  368. package/dist/tools/card.js.map +0 -1
  369. package/dist/tools/coordinate-resolver.d.ts +0 -30
  370. package/dist/tools/coordinate-resolver.d.ts.map +0 -1
  371. package/dist/tools/coordinate-resolver.js +0 -104
  372. package/dist/tools/coordinate-resolver.js.map +0 -1
  373. package/dist/tools/sms.d.ts +0 -16
  374. package/dist/tools/sms.d.ts.map +0 -1
  375. package/dist/tools/sms.js +0 -78
  376. package/dist/tools/sms.js.map +0 -1
  377. package/dist/tools/stock-data.d.ts +0 -70
  378. package/dist/tools/stock-data.d.ts.map +0 -1
  379. package/dist/tools/stock-data.js +0 -596
  380. package/dist/tools/stock-data.js.map +0 -1
  381. package/dist/tools/webapp.d.ts +0 -30
  382. package/dist/tools/webapp.d.ts.map +0 -1
  383. package/dist/tools/webapp.js +0 -114
  384. package/dist/tools/webapp.js.map +0 -1
  385. package/dist/tui/auth.d.ts +0 -6
  386. package/dist/tui/auth.d.ts.map +0 -1
  387. package/dist/tui/auth.js +0 -65
  388. package/dist/tui/auth.js.map +0 -1
  389. package/dist/tui/run-store.d.ts +0 -47
  390. package/dist/tui/run-store.d.ts.map +0 -1
  391. package/dist/tui/run-store.js +0 -166
  392. package/dist/tui/run-store.js.map +0 -1
  393. package/dist/utils/wechat-monitor.d.ts +0 -21
  394. package/dist/utils/wechat-monitor.d.ts.map +0 -1
  395. package/dist/utils/wechat-monitor.js +0 -88
  396. package/dist/utils/wechat-monitor.js.map +0 -1
  397. package/dist/webapp/index.d.ts +0 -28
  398. package/dist/webapp/index.d.ts.map +0 -1
  399. package/dist/webapp/index.js +0 -75
  400. package/dist/webapp/index.js.map +0 -1
  401. package/dist/webapp/server.d.ts +0 -32
  402. package/dist/webapp/server.d.ts.map +0 -1
  403. package/dist/webapp/server.js +0 -375
  404. package/dist/webapp/server.js.map +0 -1
  405. package/dist/webapp/storage.d.ts +0 -64
  406. package/dist/webapp/storage.d.ts.map +0 -1
  407. package/dist/webapp/storage.js +0 -103
  408. package/dist/webapp/storage.js.map +0 -1
  409. package/dist/webapp/ui.d.ts +0 -2
  410. package/dist/webapp/ui.d.ts.map +0 -1
  411. package/dist/webapp/ui.js +0 -319
  412. package/dist/webapp/ui.js.map +0 -1
  413. package/dist-agent/assets/index.html +0 -1058
  414. package/dist-agent/assets/samples/alloy.mp3 +0 -0
  415. package/dist-agent/assets/samples/ash.mp3 +0 -0
  416. package/dist-agent/assets/samples/ballad.mp3 +0 -0
  417. package/dist-agent/assets/samples/cedar.mp3 +0 -0
  418. package/dist-agent/assets/samples/coral.mp3 +0 -0
  419. package/dist-agent/assets/samples/echo.mp3 +0 -0
  420. package/dist-agent/assets/samples/marin.mp3 +0 -0
  421. package/dist-agent/assets/samples/sage.mp3 +0 -0
  422. package/dist-agent/assets/samples/shimmer.mp3 +0 -0
  423. package/dist-agent/assets/samples/verse.mp3 +0 -0
  424. package/dist-agent/realtime/assets/index.html +0 -1058
  425. package/dist-agent/realtime/assets/samples/alloy.mp3 +0 -0
  426. package/dist-agent/realtime/assets/samples/ash.mp3 +0 -0
  427. package/dist-agent/realtime/assets/samples/ballad.mp3 +0 -0
  428. package/dist-agent/realtime/assets/samples/cedar.mp3 +0 -0
  429. package/dist-agent/realtime/assets/samples/coral.mp3 +0 -0
  430. package/dist-agent/realtime/assets/samples/echo.mp3 +0 -0
  431. package/dist-agent/realtime/assets/samples/marin.mp3 +0 -0
  432. package/dist-agent/realtime/assets/samples/sage.mp3 +0 -0
  433. package/dist-agent/realtime/assets/samples/shimmer.mp3 +0 -0
  434. package/dist-agent/realtime/assets/samples/verse.mp3 +0 -0
@@ -1,103 +0,0 @@
1
- import fs from "node:fs";
2
- import path from "node:path";
3
- import { getConfigDir } from "../config/index.js";
4
- import { logger } from "../logger.js";
5
- const DASHBOARDS_DIRNAME = "dashboards";
6
- const WORKSPACE_FILENAME = "workspace.json";
7
- export function getDashboardsDir() {
8
- return path.join(getConfigDir(), DASHBOARDS_DIRNAME);
9
- }
10
- export function getWorkspaceFile() {
11
- return path.join(getConfigDir(), WORKSPACE_FILENAME);
12
- }
13
- /**
14
- * Validate + normalize a dashboard slug. Allows lowercase letters, digits,
15
- * and hyphens only (DNS-label-ish) so it is safe to use as a filename and in
16
- * URLs. Throws on invalid input.
17
- */
18
- export function normalizeDashboardName(raw) {
19
- const name = raw.trim().toLowerCase().replace(/[^a-z0-9-]/g, "-").replace(/-+/g, "-").replace(/^-|-$/g, "");
20
- if (!name)
21
- throw new Error(`Invalid dashboard name: "${raw}"`);
22
- if (name.length > 64)
23
- throw new Error(`Dashboard name too long (max 64 chars): "${raw}"`);
24
- return name;
25
- }
26
- function emptyWorkspace() {
27
- return { tabs: [], sidebar: [], focus: [], updatedAt: new Date().toISOString() };
28
- }
29
- export function loadWorkspace() {
30
- const file = getWorkspaceFile();
31
- if (!fs.existsSync(file))
32
- return emptyWorkspace();
33
- try {
34
- const parsed = JSON.parse(fs.readFileSync(file, "utf-8"));
35
- return {
36
- tabs: Array.isArray(parsed.tabs) ? parsed.tabs : [],
37
- sidebar: Array.isArray(parsed.sidebar) ? parsed.sidebar : [],
38
- focus: Array.isArray(parsed.focus) ? parsed.focus : [],
39
- updatedAt: typeof parsed.updatedAt === "string" ? parsed.updatedAt : new Date().toISOString(),
40
- };
41
- }
42
- catch (err) {
43
- logger.warn(`[webapp] Failed to parse workspace.json: ${err instanceof Error ? err.message : String(err)}`);
44
- return emptyWorkspace();
45
- }
46
- }
47
- export function saveWorkspace(ws) {
48
- ws.updatedAt = new Date().toISOString();
49
- const file = getWorkspaceFile();
50
- fs.mkdirSync(path.dirname(file), { recursive: true });
51
- fs.writeFileSync(file, JSON.stringify(ws, null, 2), "utf-8");
52
- }
53
- /** Resolve a dashboard HTML path, guarding against path traversal. */
54
- export function getDashboardHtmlPath(name) {
55
- const safe = normalizeDashboardName(name);
56
- return path.join(getDashboardsDir(), `${safe}.html`);
57
- }
58
- /**
59
- * Write a dashboard's HTML file and upsert its tab entry in workspace.json.
60
- * Returns the normalized slug.
61
- */
62
- export function writeDashboard(opts) {
63
- const name = normalizeDashboardName(opts.name);
64
- const dir = getDashboardsDir();
65
- fs.mkdirSync(dir, { recursive: true });
66
- fs.writeFileSync(path.join(dir, `${name}.html`), opts.html, "utf-8");
67
- const ws = loadWorkspace();
68
- const now = new Date().toISOString();
69
- const existing = ws.tabs.find((t) => t.name === name);
70
- if (existing) {
71
- existing.title = opts.title ?? existing.title;
72
- if (opts.group !== undefined)
73
- existing.group = opts.group;
74
- if (opts.temp !== undefined)
75
- existing.temp = opts.temp;
76
- existing.updatedAt = now;
77
- }
78
- else {
79
- ws.tabs.push({
80
- name,
81
- title: opts.title ?? name,
82
- group: opts.group,
83
- temp: opts.temp,
84
- updatedAt: now,
85
- });
86
- }
87
- saveWorkspace(ws);
88
- return name;
89
- }
90
- /** Delete a dashboard HTML file and remove it from workspace.json. */
91
- export function deleteDashboard(rawName) {
92
- const name = normalizeDashboardName(rawName);
93
- const file = path.join(getDashboardsDir(), `${name}.html`);
94
- if (fs.existsSync(file))
95
- fs.unlinkSync(file);
96
- const ws = loadWorkspace();
97
- ws.tabs = ws.tabs.filter((t) => t.name !== name);
98
- for (const group of ws.sidebar) {
99
- group.items = group.items.filter((i) => i !== name);
100
- }
101
- saveWorkspace(ws);
102
- }
103
- //# sourceMappingURL=storage.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"storage.js","sourceRoot":"","sources":["../../src/webapp/storage.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export declare function renderWorkspaceHtml(agentName: string): string;
2
- //# sourceMappingURL=ui.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../src/webapp/ui.ts"],"names":[],"mappings":"AAOA,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAuT7D"}
package/dist/webapp/ui.js DELETED
@@ -1,319 +0,0 @@
1
- // Dependency-free IDE-style shell for the VisionClaw web workspace.
2
- // No build step: a single self-contained HTML document with inline CSS/JS.
3
- // - Left sidebar: dashboard groups, temp views, focus notes (from /api/workspace)
4
- // - Main area: tabs, each rendering an agent-built dashboard in an iframe
5
- // - Right panel: chat with the agent (shares the same session as Telegram)
6
- // - Top: universal search; Bottom: status bar.
7
- export function renderWorkspaceHtml(agentName) {
8
- const safeName = agentName
9
- .replaceAll("&", "&")
10
- .replaceAll("<", "&lt;")
11
- .replaceAll(">", "&gt;");
12
- return `<!doctype html>
13
- <html lang="en">
14
- <head>
15
- <meta charset="utf-8" />
16
- <meta name="viewport" content="width=device-width, initial-scale=1" />
17
- <title>${safeName} · Workspace</title>
18
- <style>
19
- :root {
20
- --bg: #f4f1ff;
21
- --panel: #ffffff;
22
- --border: #e3def5;
23
- --text: #1f2430;
24
- --muted: #6b7280;
25
- --accent: #5b5bd6;
26
- --accent-soft: #ecebff;
27
- --good: #16a34a;
28
- --bad: #dc2626;
29
- --sans: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
30
- --mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
31
- }
32
- * { box-sizing: border-box; }
33
- html, body { height: 100%; margin: 0; }
34
- body { font-family: var(--sans); color: var(--text); background: var(--bg); display: flex; flex-direction: column; }
35
-
36
- /* Top bar */
37
- .topbar { flex: 0 0 auto; display: flex; align-items: center; gap: 12px; padding: 8px 14px; border-bottom: 1px solid var(--border); background: var(--panel); }
38
- .topbar .brand { font-weight: 700; font-size: 14px; white-space: nowrap; }
39
- .search { flex: 1 1 auto; max-width: 640px; margin: 0 auto; }
40
- .search input { width: 100%; padding: 7px 12px; border: 1px solid var(--border); border-radius: 999px; font: inherit; background: #faf9ff; }
41
- .topbar .session { font-size: 12px; color: var(--muted); white-space: nowrap; }
42
-
43
- /* Main 3-column layout */
44
- .layout { flex: 1 1 auto; display: grid; grid-template-columns: 248px 1fr 360px; min-height: 0; }
45
- .sidebar, .center, .chat { min-height: 0; min-width: 0; display: flex; flex-direction: column; }
46
- .sidebar { border-right: 1px solid var(--border); background: var(--panel); overflow: auto; }
47
- .chat { border-left: 1px solid var(--border); background: var(--panel); }
48
-
49
- /* Sidebar */
50
- .side-group { padding: 12px 14px 4px; }
51
- .side-group h3 { margin: 0 0 6px; font-size: 11px; text-transform: uppercase; letter-spacing: .06em; color: var(--muted); }
52
- .side-item { display: block; width: 100%; text-align: left; border: 0; background: transparent; padding: 6px 10px; border-radius: 8px; font: inherit; font-size: 13px; color: var(--text); cursor: pointer; }
53
- .side-item:hover { background: var(--accent-soft); }
54
- .side-item.active { background: var(--accent-soft); color: var(--accent); font-weight: 600; }
55
- .side-empty { padding: 6px 10px; font-size: 12px; color: var(--muted); }
56
- .focus-note { padding: 4px 10px; font-size: 12px; color: var(--muted); }
57
-
58
- /* Center / tabs */
59
- .tabs { flex: 0 0 auto; display: flex; gap: 4px; padding: 8px 10px 0; border-bottom: 1px solid var(--border); background: var(--panel); overflow-x: auto; }
60
- .tab { border: 1px solid transparent; border-bottom: none; background: transparent; color: var(--muted); padding: 8px 14px; border-radius: 10px 10px 0 0; font: inherit; font-size: 13px; cursor: pointer; white-space: nowrap; }
61
- .tab:hover { color: var(--text); }
62
- .tab.active { background: var(--bg); color: var(--text); border-color: var(--border); font-weight: 600; }
63
- .stage { flex: 1 1 auto; position: relative; background: var(--bg); }
64
- .stage iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; background: #fff; }
65
- .stage .placeholder { position: absolute; inset: 0; display: grid; place-items: center; text-align: center; color: var(--muted); padding: 24px; }
66
-
67
- /* Chat */
68
- .chat-head { flex: 0 0 auto; padding: 10px 14px; border-bottom: 1px solid var(--border); font-size: 13px; font-weight: 600; display: flex; align-items: center; gap: 8px; }
69
- .dot { width: 8px; height: 8px; border-radius: 50%; background: var(--bad); }
70
- .dot.ok { background: var(--good); }
71
- .messages { flex: 1 1 auto; overflow: auto; padding: 14px; display: flex; flex-direction: column; gap: 10px; }
72
- .bubble { max-width: 88%; padding: 8px 12px; border-radius: 12px; font-size: 13px; line-height: 1.45; white-space: pre-wrap; word-break: break-word; }
73
- .bubble.user { align-self: flex-end; background: var(--accent); color: #fff; border-bottom-right-radius: 4px; }
74
- .bubble.agent { align-self: flex-start; background: #f1f0fa; color: var(--text); border-bottom-left-radius: 4px; }
75
- .bubble.meta { align-self: center; background: transparent; color: var(--muted); font-size: 11px; padding: 2px 8px; }
76
- .composer { flex: 0 0 auto; display: flex; gap: 8px; padding: 10px; border-top: 1px solid var(--border); }
77
- .composer textarea { flex: 1 1 auto; resize: none; height: 40px; max-height: 140px; padding: 9px 11px; border: 1px solid var(--border); border-radius: 10px; font: inherit; font-size: 13px; background: #faf9ff; }
78
- .composer button { flex: 0 0 auto; border: 0; background: var(--accent); color: #fff; border-radius: 10px; padding: 0 16px; font: inherit; font-weight: 600; cursor: pointer; }
79
- .composer button:disabled { opacity: .5; cursor: default; }
80
-
81
- /* Status bar */
82
- .statusbar { flex: 0 0 auto; display: flex; align-items: center; gap: 16px; padding: 4px 14px; border-top: 1px solid var(--border); background: var(--panel); font-size: 11px; color: var(--muted); }
83
-
84
- @media (max-width: 920px) {
85
- .layout { grid-template-columns: 1fr; grid-template-rows: auto 1fr auto; }
86
- .sidebar { max-height: 160px; border-right: 0; border-bottom: 1px solid var(--border); }
87
- .chat { border-left: 0; border-top: 1px solid var(--border); max-height: 45vh; }
88
- }
89
- </style>
90
- </head>
91
- <body>
92
- <div class="topbar">
93
- <div class="brand">${safeName}</div>
94
- <div class="search"><input id="search" type="search" placeholder="Universal search…" /></div>
95
- <div class="session" id="session-label">Connecting…</div>
96
- </div>
97
-
98
- <div class="layout">
99
- <aside class="sidebar" id="sidebar"></aside>
100
-
101
- <section class="center">
102
- <div class="tabs" id="tabs"></div>
103
- <div class="stage" id="stage">
104
- <div class="placeholder" id="placeholder">No dashboards yet. Ask the agent in the chat to build one.</div>
105
- <iframe id="frame" title="dashboard" style="display:none"></iframe>
106
- </div>
107
- </section>
108
-
109
- <aside class="chat">
110
- <div class="chat-head"><span class="dot" id="conn-dot"></span> Chat</div>
111
- <div class="messages" id="messages"></div>
112
- <div class="composer">
113
- <textarea id="input" placeholder="Message the agent… (Enter to send)"></textarea>
114
- <button id="send">Send</button>
115
- </div>
116
- </aside>
117
- </div>
118
-
119
- <div class="statusbar">
120
- <span id="status-conn">SSE: connecting…</span>
121
- <span id="status-tab">No tab</span>
122
- <span style="margin-left:auto" id="status-agent">${safeName}</span>
123
- </div>
124
-
125
- <script>
126
- (function () {
127
- // Stable per-browser sender id so the SSE replay buffer survives reloads.
128
- var sender = localStorage.getItem('vc_web_sender');
129
- if (!sender) { sender = 'web-' + Math.random().toString(36).slice(2, 10); localStorage.setItem('vc_web_sender', sender); }
130
-
131
- var $sidebar = document.getElementById('sidebar');
132
- var $tabs = document.getElementById('tabs');
133
- var $frame = document.getElementById('frame');
134
- var $placeholder = document.getElementById('placeholder');
135
- var $messages = document.getElementById('messages');
136
- var $input = document.getElementById('input');
137
- var $send = document.getElementById('send');
138
- var $connDot = document.getElementById('conn-dot');
139
- var $statusConn = document.getElementById('status-conn');
140
- var $statusTab = document.getElementById('status-tab');
141
- var $sessionLabel = document.getElementById('session-label');
142
- var $search = document.getElementById('search');
143
-
144
- var workspace = { tabs: [], sidebar: [], focus: [] };
145
- var activeTab = null;
146
-
147
- function selectTab(name) {
148
- activeTab = name;
149
- $frame.style.display = name ? 'block' : 'none';
150
- $placeholder.style.display = name ? 'none' : 'grid';
151
- if (name) {
152
- $frame.src = '/dashboards/' + encodeURIComponent(name) + '.html?ts=' + Date.now();
153
- var tab = workspace.tabs.find(function (t) { return t.name === name; });
154
- $statusTab.textContent = tab ? tab.title : name;
155
- } else {
156
- $statusTab.textContent = 'No tab';
157
- }
158
- renderTabs();
159
- renderSidebar();
160
- }
161
-
162
- function renderTabs() {
163
- $tabs.innerHTML = '';
164
- workspace.tabs.forEach(function (t) {
165
- var b = document.createElement('button');
166
- b.className = 'tab' + (t.name === activeTab ? ' active' : '');
167
- b.textContent = t.title || t.name;
168
- b.onclick = function () { selectTab(t.name); };
169
- $tabs.appendChild(b);
170
- });
171
- }
172
-
173
- function renderSidebar() {
174
- $sidebar.innerHTML = '';
175
- var q = ($search.value || '').toLowerCase();
176
- var grouped = {};
177
- workspace.sidebar.forEach(function (g) { grouped[g.label] = g.items.slice(); });
178
-
179
- // Dashboards grouped by their group field (fallback: "Dashboards").
180
- var byGroup = {};
181
- workspace.tabs.forEach(function (t) {
182
- if (t.temp) return;
183
- var g = t.group || 'Dashboards';
184
- (byGroup[g] = byGroup[g] || []).push(t);
185
- });
186
-
187
- Object.keys(byGroup).forEach(function (groupLabel) {
188
- var items = byGroup[groupLabel].filter(function (t) {
189
- return !q || (t.title || t.name).toLowerCase().indexOf(q) !== -1;
190
- });
191
- if (!items.length) return;
192
- var wrap = document.createElement('div');
193
- wrap.className = 'side-group';
194
- var h = document.createElement('h3'); h.textContent = groupLabel; wrap.appendChild(h);
195
- items.forEach(function (t) {
196
- var btn = document.createElement('button');
197
- btn.className = 'side-item' + (t.name === activeTab ? ' active' : '');
198
- btn.textContent = t.title || t.name;
199
- btn.onclick = function () { selectTab(t.name); };
200
- wrap.appendChild(btn);
201
- });
202
- $sidebar.appendChild(wrap);
203
- });
204
-
205
- var temps = workspace.tabs.filter(function (t) { return t.temp && (!q || (t.title || t.name).toLowerCase().indexOf(q) !== -1); });
206
- if (temps.length) {
207
- var tw = document.createElement('div'); tw.className = 'side-group';
208
- var th = document.createElement('h3'); th.textContent = 'Temp Views'; tw.appendChild(th);
209
- temps.forEach(function (t) {
210
- var btn = document.createElement('button');
211
- btn.className = 'side-item' + (t.name === activeTab ? ' active' : '');
212
- btn.textContent = t.title || t.name;
213
- btn.onclick = function () { selectTab(t.name); };
214
- tw.appendChild(btn);
215
- });
216
- $sidebar.appendChild(tw);
217
- }
218
-
219
- if (!workspace.tabs.length) {
220
- var e = document.createElement('div'); e.className = 'side-empty';
221
- e.textContent = 'No dashboards yet.';
222
- $sidebar.appendChild(e);
223
- }
224
-
225
- if (workspace.focus && workspace.focus.length) {
226
- var fw = document.createElement('div'); fw.className = 'side-group';
227
- var fh = document.createElement('h3'); fh.textContent = 'Focus'; fw.appendChild(fh);
228
- workspace.focus.forEach(function (note) {
229
- var n = document.createElement('div'); n.className = 'focus-note'; n.textContent = note; fw.appendChild(n);
230
- });
231
- $sidebar.appendChild(fw);
232
- }
233
- }
234
-
235
- function loadWorkspace() {
236
- fetch('/api/workspace').then(function (r) { return r.json(); }).then(function (ws) {
237
- workspace = ws || { tabs: [], sidebar: [], focus: [] };
238
- renderSidebar();
239
- renderTabs();
240
- // Keep active tab if it still exists; otherwise pick the first.
241
- var stillThere = workspace.tabs.some(function (t) { return t.name === activeTab; });
242
- if (!stillThere) selectTab(workspace.tabs.length ? workspace.tabs[0].name : null);
243
- }).catch(function () {});
244
- }
245
-
246
- $search.addEventListener('input', renderSidebar);
247
-
248
- // ── Chat ────────────────────────────────────────────────────────────
249
- function addBubble(role, text) {
250
- var b = document.createElement('div');
251
- b.className = 'bubble ' + role;
252
- b.textContent = text;
253
- $messages.appendChild(b);
254
- $messages.scrollTop = $messages.scrollHeight;
255
- }
256
-
257
- function send() {
258
- var text = ($input.value || '').trim();
259
- if (!text) return;
260
- $input.value = '';
261
- addBubble('user', text);
262
- $send.disabled = true;
263
- fetch('/api/chat', {
264
- method: 'POST',
265
- headers: { 'content-type': 'application/json' },
266
- body: JSON.stringify({ text: text, sender: sender }),
267
- }).then(function (r) { return r.json(); }).then(function () {
268
- $send.disabled = false;
269
- $input.focus();
270
- }).catch(function () {
271
- $send.disabled = false;
272
- addBubble('meta', 'Failed to send. Check your connection.');
273
- });
274
- }
275
-
276
- $send.addEventListener('click', send);
277
- $input.addEventListener('keydown', function (e) {
278
- if (e.key === 'Enter' && !e.shiftKey) { e.preventDefault(); send(); }
279
- });
280
-
281
- // ── SSE: agent replies + reloads ────────────────────────────────────
282
- var es = new EventSource('/api/events?sender=' + encodeURIComponent(sender));
283
- es.onopen = function () {
284
- $connDot.classList.add('ok');
285
- $statusConn.textContent = 'SSE: connected';
286
- $sessionLabel.textContent = 'Connected · shared session';
287
- };
288
- es.onerror = function () {
289
- $connDot.classList.remove('ok');
290
- $statusConn.textContent = 'SSE: disconnected';
291
- $sessionLabel.textContent = 'Reconnecting…';
292
- };
293
- es.onmessage = function (ev) {
294
- try {
295
- var e = JSON.parse(ev.data);
296
- if (e.type === 'reply' && e.message) {
297
- addBubble('agent', e.message);
298
- // The agent may have just built/updated a dashboard — refresh layout.
299
- loadWorkspace();
300
- } else if (e.type === 'ack') {
301
- addBubble('meta', 'Queued…');
302
- } else if (e.type === 'status' && e.message) {
303
- addBubble('meta', e.message);
304
- } else if (e.type === 'error' && e.message) {
305
- addBubble('meta', 'Error: ' + e.message);
306
- }
307
- } catch (err) {}
308
- };
309
-
310
- // Periodically refresh workspace so agent-built dashboards appear even if a
311
- // reply event was missed.
312
- loadWorkspace();
313
- setInterval(loadWorkspace, 15000);
314
- })();
315
- </script>
316
- </body>
317
- </html>`;
318
- }
319
- //# sourceMappingURL=ui.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ui.js","sourceRoot":"","sources":["../../src/webapp/ui.ts"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,2EAA2E;AAC3E,kFAAkF;AAClF,0EAA0E;AAC1E,2EAA2E;AAC3E,+CAA+C;AAE/C,MAAM,UAAU,mBAAmB,CAAC,SAAiB;IACnD,MAAM,QAAQ,GAAG,SAAS;SACvB,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC;SACxB,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC;SACvB,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC3B,OAAO;;;;;WAKE,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBA4EM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uDA6BsB,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAmMvD,CAAC;AACT,CAAC"}