@withbuddi/buddi 0.1.0-pre.51 → 0.1.0-pre.53

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 (503) hide show
  1. package/extension/background.js +1604 -847
  2. package/extension/manifest.json +3 -3
  3. package/extension/popup.css +91 -3
  4. package/extension/popup.html +49 -32
  5. package/extension/popup.js +215 -123
  6. package/node_modules/@buddi/cli/dist/.tsbuildinfo +1 -1
  7. package/node_modules/@buddi/core/dist/.tsbuildinfo +1 -1
  8. package/node_modules/@buddi/core/dist/plugin/index.d.ts +1 -1
  9. package/node_modules/@buddi/core/dist/plugin/index.d.ts.map +1 -1
  10. package/node_modules/@buddi/core/dist/plugin/index.js.map +1 -1
  11. package/node_modules/@buddi/core/dist/questions/store.d.ts +3 -1
  12. package/node_modules/@buddi/core/dist/questions/store.d.ts.map +1 -1
  13. package/node_modules/@buddi/core/dist/questions/store.js +3 -3
  14. package/node_modules/@buddi/core/dist/questions/store.js.map +1 -1
  15. package/node_modules/@buddi/core/dist/questions/types.d.ts +46 -1
  16. package/node_modules/@buddi/core/dist/questions/types.d.ts.map +1 -1
  17. package/node_modules/@buddi/core/dist/questions/types.js +2 -1
  18. package/node_modules/@buddi/core/dist/questions/types.js.map +1 -1
  19. package/node_modules/@buddi/core/dist/secrets/approval.d.ts +54 -0
  20. package/node_modules/@buddi/core/dist/secrets/approval.d.ts.map +1 -1
  21. package/node_modules/@buddi/core/dist/secrets/approval.js +58 -1
  22. package/node_modules/@buddi/core/dist/secrets/approval.js.map +1 -1
  23. package/node_modules/@buddi/core/dist/secrets/settings.d.ts +178 -0
  24. package/node_modules/@buddi/core/dist/secrets/settings.d.ts.map +1 -1
  25. package/node_modules/@buddi/core/dist/secrets/settings.js +63 -6
  26. package/node_modules/@buddi/core/dist/secrets/settings.js.map +1 -1
  27. package/node_modules/@buddi/core/dist/secrets/store.d.ts +31 -0
  28. package/node_modules/@buddi/core/dist/secrets/store.d.ts.map +1 -1
  29. package/node_modules/@buddi/core/dist/secrets/store.js +75 -0
  30. package/node_modules/@buddi/core/dist/secrets/store.js.map +1 -1
  31. package/node_modules/@buddi/core/dist/secrets/use.d.ts.map +1 -1
  32. package/node_modules/@buddi/core/dist/secrets/use.js +68 -3
  33. package/node_modules/@buddi/core/dist/secrets/use.js.map +1 -1
  34. package/node_modules/@buddi/core/dist/tools.d.ts +22 -0
  35. package/node_modules/@buddi/core/dist/tools.d.ts.map +1 -1
  36. package/node_modules/@buddi/core/dist/tools.js.map +1 -1
  37. package/node_modules/@buddi/core/migrations/080_secret_requests.sql +14 -0
  38. package/node_modules/@buddi/gateway/dist/.tsbuildinfo +1 -1
  39. package/node_modules/@buddi/gateway/dist/chat/session.d.ts.map +1 -1
  40. package/node_modules/@buddi/gateway/dist/chat/session.js +2 -1
  41. package/node_modules/@buddi/gateway/dist/chat/session.js.map +1 -1
  42. package/node_modules/@buddi/gateway/dist/missions/execute.d.ts.map +1 -1
  43. package/node_modules/@buddi/gateway/dist/missions/execute.js +3 -1
  44. package/node_modules/@buddi/gateway/dist/missions/execute.js.map +1 -1
  45. package/node_modules/@buddi/gateway/dist/surfaces/browser-cards.d.ts +15 -3
  46. package/node_modules/@buddi/gateway/dist/surfaces/browser-cards.d.ts.map +1 -1
  47. package/node_modules/@buddi/gateway/dist/surfaces/browser-cards.js +34 -7
  48. package/node_modules/@buddi/gateway/dist/surfaces/browser-cards.js.map +1 -1
  49. package/node_modules/@buddi/gateway/dist/surfaces/offered-actions.d.ts.map +1 -1
  50. package/node_modules/@buddi/gateway/dist/surfaces/offered-actions.js +8 -2
  51. package/node_modules/@buddi/gateway/dist/surfaces/offered-actions.js.map +1 -1
  52. package/node_modules/@buddi/gateway/dist/surfaces/pending-question.d.ts +3 -1
  53. package/node_modules/@buddi/gateway/dist/surfaces/pending-question.d.ts.map +1 -1
  54. package/node_modules/@buddi/gateway/dist/surfaces/pending-question.js.map +1 -1
  55. package/node_modules/@buddi/gateway/dist/surfaces/secret-request.d.ts +173 -0
  56. package/node_modules/@buddi/gateway/dist/surfaces/secret-request.d.ts.map +1 -0
  57. package/node_modules/@buddi/gateway/dist/surfaces/secret-request.js +332 -0
  58. package/node_modules/@buddi/gateway/dist/surfaces/secret-request.js.map +1 -0
  59. package/node_modules/@buddi/gateway/dist/system-context.js +1 -1
  60. package/node_modules/@buddi/gateway/dist/system-context.js.map +1 -1
  61. package/node_modules/@buddi/gateway/dist/telegram/main.d.ts.map +1 -1
  62. package/node_modules/@buddi/gateway/dist/telegram/main.js +14 -3
  63. package/node_modules/@buddi/gateway/dist/telegram/main.js.map +1 -1
  64. package/node_modules/@buddi/gateway/dist/telegram/surface.d.ts.map +1 -1
  65. package/node_modules/@buddi/gateway/dist/telegram/surface.js +4 -1
  66. package/node_modules/@buddi/gateway/dist/telegram/surface.js.map +1 -1
  67. package/node_modules/@buddi/gateway/dist/web/api-routes.d.ts.map +1 -1
  68. package/node_modules/@buddi/gateway/dist/web/api-routes.js +9 -1
  69. package/node_modules/@buddi/gateway/dist/web/api-routes.js.map +1 -1
  70. package/node_modules/@buddi/gateway/dist/web/approval-ask.js +2 -2
  71. package/node_modules/@buddi/gateway/dist/web/approval-ask.js.map +1 -1
  72. package/node_modules/@buddi/gateway/dist/web/browser-capture.d.ts +13 -0
  73. package/node_modules/@buddi/gateway/dist/web/browser-capture.d.ts.map +1 -0
  74. package/node_modules/@buddi/gateway/dist/web/browser-capture.js +24 -0
  75. package/node_modules/@buddi/gateway/dist/web/browser-capture.js.map +1 -0
  76. package/node_modules/@buddi/gateway/dist/web/chat.d.ts +26 -0
  77. package/node_modules/@buddi/gateway/dist/web/chat.d.ts.map +1 -1
  78. package/node_modules/@buddi/gateway/dist/web/chat.js +87 -2
  79. package/node_modules/@buddi/gateway/dist/web/chat.js.map +1 -1
  80. package/node_modules/@buddi/gateway/dist/web/extension.d.ts +30 -0
  81. package/node_modules/@buddi/gateway/dist/web/extension.d.ts.map +1 -1
  82. package/node_modules/@buddi/gateway/dist/web/extension.js +86 -6
  83. package/node_modules/@buddi/gateway/dist/web/extension.js.map +1 -1
  84. package/node_modules/@buddi/gateway/dist/web/onboarding.js +1 -1
  85. package/node_modules/@buddi/gateway/dist/web/onboarding.js.map +1 -1
  86. package/node_modules/@buddi/gateway/dist/web/remote-hand.d.ts +26 -2
  87. package/node_modules/@buddi/gateway/dist/web/remote-hand.d.ts.map +1 -1
  88. package/node_modules/@buddi/gateway/dist/web/remote-hand.js +89 -28
  89. package/node_modules/@buddi/gateway/dist/web/remote-hand.js.map +1 -1
  90. package/node_modules/@buddi/gateway/dist/web/secret-request.d.ts +54 -0
  91. package/node_modules/@buddi/gateway/dist/web/secret-request.d.ts.map +1 -0
  92. package/node_modules/@buddi/gateway/dist/web/secret-request.js +264 -0
  93. package/node_modules/@buddi/gateway/dist/web/secret-request.js.map +1 -0
  94. package/node_modules/@buddi/gateway/dist/web/secrets.d.ts +1 -0
  95. package/node_modules/@buddi/gateway/dist/web/secrets.d.ts.map +1 -1
  96. package/node_modules/@buddi/gateway/dist/web/secrets.js +1 -1
  97. package/node_modules/@buddi/gateway/dist/web/secrets.js.map +1 -1
  98. package/node_modules/@buddi/gateway/dist/web/server.d.ts.map +1 -1
  99. package/node_modules/@buddi/gateway/dist/web/server.js +72 -3
  100. package/node_modules/@buddi/gateway/dist/web/server.js.map +1 -1
  101. package/node_modules/@buddi/install/dist/.tsbuildinfo +1 -1
  102. package/node_modules/@buddi/install/dist/app-layout.d.ts +24 -0
  103. package/node_modules/@buddi/install/dist/app-layout.d.ts.map +1 -1
  104. package/node_modules/@buddi/install/dist/app-layout.js +64 -2
  105. package/node_modules/@buddi/install/dist/app-layout.js.map +1 -1
  106. package/node_modules/@buddi/install/dist/launcher.d.ts.map +1 -1
  107. package/node_modules/@buddi/install/dist/launcher.js +89 -10
  108. package/node_modules/@buddi/install/dist/launcher.js.map +1 -1
  109. package/node_modules/@buddi/install/dist/linux-install.d.ts +41 -0
  110. package/node_modules/@buddi/install/dist/linux-install.d.ts.map +1 -0
  111. package/node_modules/@buddi/install/dist/linux-install.js +86 -0
  112. package/node_modules/@buddi/install/dist/linux-install.js.map +1 -0
  113. package/node_modules/@buddi/install/dist/runtime-info.d.ts +23 -0
  114. package/node_modules/@buddi/install/dist/runtime-info.d.ts.map +1 -0
  115. package/node_modules/@buddi/install/dist/runtime-info.js +69 -0
  116. package/node_modules/@buddi/install/dist/runtime-info.js.map +1 -0
  117. package/node_modules/@buddi/install/dist/supervisor.d.ts.map +1 -1
  118. package/node_modules/@buddi/install/dist/supervisor.js +8 -6
  119. package/node_modules/@buddi/install/dist/supervisor.js.map +1 -1
  120. package/node_modules/@buddi/install/dist/uninstall.d.ts +20 -0
  121. package/node_modules/@buddi/install/dist/uninstall.d.ts.map +1 -1
  122. package/node_modules/@buddi/install/dist/uninstall.js +50 -1
  123. package/node_modules/@buddi/install/dist/uninstall.js.map +1 -1
  124. package/node_modules/@buddi/install/dist/upgrade.d.ts +4 -1
  125. package/node_modules/@buddi/install/dist/upgrade.d.ts.map +1 -1
  126. package/node_modules/@buddi/install/dist/upgrade.js +77 -51
  127. package/node_modules/@buddi/install/dist/upgrade.js.map +1 -1
  128. package/node_modules/@buddi/runtime/dist/.tsbuildinfo +1 -1
  129. package/node_modules/@buddi/runtime/dist/anthropic.d.ts +7 -0
  130. package/node_modules/@buddi/runtime/dist/anthropic.d.ts.map +1 -1
  131. package/node_modules/@buddi/runtime/dist/anthropic.js +19 -1
  132. package/node_modules/@buddi/runtime/dist/anthropic.js.map +1 -1
  133. package/node_modules/@buddi/tool-artifacts/dist/.tsbuildinfo +1 -1
  134. package/node_modules/@buddi/tool-browser/dist/.tsbuildinfo +1 -1
  135. package/node_modules/@buddi/tool-browser/dist/controller.d.ts +16 -1
  136. package/node_modules/@buddi/tool-browser/dist/controller.d.ts.map +1 -1
  137. package/node_modules/@buddi/tool-browser/dist/controller.js +59 -5
  138. package/node_modules/@buddi/tool-browser/dist/controller.js.map +1 -1
  139. package/node_modules/@buddi/tool-browser/dist/driver.d.ts +12 -0
  140. package/node_modules/@buddi/tool-browser/dist/driver.d.ts.map +1 -1
  141. package/node_modules/@buddi/tool-browser/dist/driver.js +41 -2
  142. package/node_modules/@buddi/tool-browser/dist/driver.js.map +1 -1
  143. package/node_modules/@buddi/tool-browser/dist/extension.d.ts +49 -9
  144. package/node_modules/@buddi/tool-browser/dist/extension.d.ts.map +1 -1
  145. package/node_modules/@buddi/tool-browser/dist/extension.js +145 -21
  146. package/node_modules/@buddi/tool-browser/dist/extension.js.map +1 -1
  147. package/node_modules/@buddi/tool-browser/dist/index.d.ts +10 -6
  148. package/node_modules/@buddi/tool-browser/dist/index.d.ts.map +1 -1
  149. package/node_modules/@buddi/tool-browser/dist/index.js +22 -8
  150. package/node_modules/@buddi/tool-browser/dist/index.js.map +1 -1
  151. package/node_modules/@buddi/tool-browser/dist/routes.d.ts +10 -1
  152. package/node_modules/@buddi/tool-browser/dist/routes.d.ts.map +1 -1
  153. package/node_modules/@buddi/tool-browser/dist/routes.js +24 -0
  154. package/node_modules/@buddi/tool-browser/dist/routes.js.map +1 -1
  155. package/node_modules/@buddi/tool-browser/dist/service.d.ts +48 -1
  156. package/node_modules/@buddi/tool-browser/dist/service.d.ts.map +1 -1
  157. package/node_modules/@buddi/tool-browser/dist/service.js +114 -11
  158. package/node_modules/@buddi/tool-browser/dist/service.js.map +1 -1
  159. package/node_modules/@buddi/tool-browser/dist/types.d.ts +54 -3
  160. package/node_modules/@buddi/tool-browser/dist/types.d.ts.map +1 -1
  161. package/node_modules/@buddi/tool-browser/dist/types.js +17 -1
  162. package/node_modules/@buddi/tool-browser/dist/types.js.map +1 -1
  163. package/node_modules/@buddi/tool-email/dist/.tsbuildinfo +1 -1
  164. package/node_modules/@buddi/tool-host/dist/.tsbuildinfo +1 -1
  165. package/node_modules/@buddi/tool-mcp/dist/.tsbuildinfo +1 -1
  166. package/node_modules/@buddi/tool-memory/dist/.tsbuildinfo +1 -1
  167. package/node_modules/@buddi/tool-web/dist/.tsbuildinfo +1 -1
  168. package/node_modules/@hono/node-server/package.json +2 -2
  169. package/node_modules/@types/node/README.md +1 -1
  170. package/node_modules/@types/node/package.json +2 -2
  171. package/node_modules/@types/node/util.d.ts +6 -3
  172. package/node_modules/content-disposition/README.md +105 -35
  173. package/node_modules/content-disposition/dist/index.d.ts +72 -0
  174. package/node_modules/content-disposition/dist/index.js +388 -0
  175. package/node_modules/content-disposition/dist/index.js.map +1 -0
  176. package/node_modules/content-disposition/package.json +31 -19
  177. package/node_modules/docx/dist/index.cjs +182 -80
  178. package/node_modules/docx/dist/index.d.cts +63 -6
  179. package/node_modules/docx/dist/index.d.ts +63 -6
  180. package/node_modules/docx/dist/index.iife.js +182 -80
  181. package/node_modules/docx/dist/index.mjs +182 -80
  182. package/node_modules/docx/dist/index.umd.cjs +182 -80
  183. package/node_modules/docx/dist/layout.cjs +1 -6
  184. package/node_modules/docx/dist/layout.iife.js +1 -6
  185. package/node_modules/docx/dist/layout.mjs +1 -6
  186. package/node_modules/docx/dist/layout.umd.cjs +1 -6
  187. package/node_modules/docx/package.json +4 -3
  188. package/node_modules/express/Readme.md +15 -9
  189. package/node_modules/express/lib/application.js +2 -2
  190. package/node_modules/express/lib/request.js +32 -19
  191. package/node_modules/express/lib/response.js +27 -30
  192. package/node_modules/express/node_modules/content-type/LICENSE +22 -0
  193. package/node_modules/express/node_modules/content-type/README.md +71 -0
  194. package/node_modules/express/node_modules/content-type/dist/index.d.ts +46 -0
  195. package/node_modules/express/node_modules/content-type/dist/index.js +176 -0
  196. package/node_modules/express/node_modules/content-type/dist/index.js.map +1 -0
  197. package/node_modules/express/node_modules/content-type/package.json +52 -0
  198. package/node_modules/express/package.json +10 -10
  199. package/node_modules/imapflow/CHANGELOG.md +48 -0
  200. package/node_modules/imapflow/dist/cjs/commands/append.d.ts +1 -1
  201. package/node_modules/imapflow/dist/cjs/commands/append.js +15 -4
  202. package/node_modules/imapflow/dist/cjs/commands/compress.js +2 -2
  203. package/node_modules/imapflow/dist/cjs/commands/id.js +5 -3
  204. package/node_modules/imapflow/dist/cjs/commands/idle.js +9 -9
  205. package/node_modules/imapflow/dist/cjs/commands/list.js +2 -2
  206. package/node_modules/imapflow/dist/cjs/commands/namespace.js +18 -14
  207. package/node_modules/imapflow/dist/cjs/commands/quota.js +2 -3
  208. package/node_modules/imapflow/dist/cjs/commands/select.d.ts +3 -14
  209. package/node_modules/imapflow/dist/cjs/commands/select.js +1 -4
  210. package/node_modules/imapflow/dist/cjs/commands/status.js +2 -4
  211. package/node_modules/imapflow/dist/cjs/connection-deadline.d.ts +1 -1
  212. package/node_modules/imapflow/dist/cjs/connection-deadline.js +2 -4
  213. package/node_modules/imapflow/dist/cjs/download.js +66 -35
  214. package/node_modules/imapflow/dist/cjs/errors.d.ts +15 -0
  215. package/node_modules/imapflow/dist/cjs/errors.js +22 -0
  216. package/node_modules/imapflow/dist/cjs/handler/imap-compiler.d.ts +4 -4
  217. package/node_modules/imapflow/dist/cjs/handler/imap-compiler.js +18 -18
  218. package/node_modules/imapflow/dist/cjs/handler/imap-parser.js +28 -3
  219. package/node_modules/imapflow/dist/cjs/handler/imap-stream.js +9 -8
  220. package/node_modules/imapflow/dist/cjs/handler/limits.d.ts +1 -1
  221. package/node_modules/imapflow/dist/cjs/handler/limits.js +5 -7
  222. package/node_modules/imapflow/dist/cjs/handler/parser-instance.js +23 -38
  223. package/node_modules/imapflow/dist/cjs/handler/token-parser.d.ts +12 -0
  224. package/node_modules/imapflow/dist/cjs/handler/token-parser.js +44 -104
  225. package/node_modules/imapflow/dist/cjs/imap-flow.d.ts +4 -3
  226. package/node_modules/imapflow/dist/cjs/imap-flow.js +128 -78
  227. package/node_modules/imapflow/dist/cjs/package-info.d.ts +1 -1
  228. package/node_modules/imapflow/dist/cjs/package-info.js +1 -1
  229. package/node_modules/imapflow/dist/cjs/proxy-connection.js +2 -5
  230. package/node_modules/imapflow/dist/cjs/search-compiler.js +2 -3
  231. package/node_modules/imapflow/dist/cjs/tools.d.ts +24 -3
  232. package/node_modules/imapflow/dist/cjs/tools.js +59 -18
  233. package/node_modules/imapflow/dist/cjs/types.d.ts +20 -1
  234. package/node_modules/imapflow/dist/esm/commands/append.d.ts +1 -1
  235. package/node_modules/imapflow/dist/esm/commands/append.js +15 -4
  236. package/node_modules/imapflow/dist/esm/commands/compress.js +2 -2
  237. package/node_modules/imapflow/dist/esm/commands/id.js +6 -4
  238. package/node_modules/imapflow/dist/esm/commands/idle.js +9 -9
  239. package/node_modules/imapflow/dist/esm/commands/list.js +3 -3
  240. package/node_modules/imapflow/dist/esm/commands/namespace.js +19 -15
  241. package/node_modules/imapflow/dist/esm/commands/quota.js +3 -4
  242. package/node_modules/imapflow/dist/esm/commands/select.d.ts +3 -14
  243. package/node_modules/imapflow/dist/esm/commands/select.js +1 -4
  244. package/node_modules/imapflow/dist/esm/commands/status.js +2 -4
  245. package/node_modules/imapflow/dist/esm/connection-deadline.d.ts +1 -1
  246. package/node_modules/imapflow/dist/esm/connection-deadline.js +2 -4
  247. package/node_modules/imapflow/dist/esm/download.js +66 -35
  248. package/node_modules/imapflow/dist/esm/errors.d.ts +15 -0
  249. package/node_modules/imapflow/dist/esm/errors.js +21 -0
  250. package/node_modules/imapflow/dist/esm/handler/imap-compiler.d.ts +4 -4
  251. package/node_modules/imapflow/dist/esm/handler/imap-compiler.js +18 -18
  252. package/node_modules/imapflow/dist/esm/handler/imap-parser.js +28 -3
  253. package/node_modules/imapflow/dist/esm/handler/imap-stream.js +9 -8
  254. package/node_modules/imapflow/dist/esm/handler/limits.d.ts +1 -1
  255. package/node_modules/imapflow/dist/esm/handler/limits.js +5 -7
  256. package/node_modules/imapflow/dist/esm/handler/parser-instance.js +23 -38
  257. package/node_modules/imapflow/dist/esm/handler/token-parser.d.ts +12 -0
  258. package/node_modules/imapflow/dist/esm/handler/token-parser.js +44 -104
  259. package/node_modules/imapflow/dist/esm/imap-flow.d.ts +4 -3
  260. package/node_modules/imapflow/dist/esm/imap-flow.js +130 -80
  261. package/node_modules/imapflow/dist/esm/package-info.d.ts +1 -1
  262. package/node_modules/imapflow/dist/esm/package-info.js +1 -1
  263. package/node_modules/imapflow/dist/esm/proxy-connection.js +2 -5
  264. package/node_modules/imapflow/dist/esm/search-compiler.js +2 -3
  265. package/node_modules/imapflow/dist/esm/tools.d.ts +24 -3
  266. package/node_modules/imapflow/dist/esm/tools.js +58 -19
  267. package/node_modules/imapflow/dist/esm/types.d.ts +20 -1
  268. package/node_modules/imapflow/package.json +6 -3
  269. package/node_modules/playwright/README.md +4 -4
  270. package/node_modules/playwright/lib/agents/playwright-test-generator.agent.md +1 -1
  271. package/node_modules/playwright/lib/cli/testActions.js +8 -5
  272. package/node_modules/playwright/lib/common/index.js +37 -23
  273. package/node_modules/playwright/lib/common/index.js.txt +8 -9
  274. package/node_modules/playwright/lib/index.js +16 -4
  275. package/node_modules/playwright/lib/matchers/expect.js +13 -7
  276. package/node_modules/playwright/lib/matchers/expect.js.txt +4 -4
  277. package/node_modules/playwright/lib/program.js +2 -1
  278. package/node_modules/playwright/lib/runner/index.js +438 -244
  279. package/node_modules/playwright/lib/runner/index.js.txt +12 -11
  280. package/node_modules/playwright/lib/transform/babelBundle.js +2612 -2396
  281. package/node_modules/playwright/lib/transform/babelBundle.js.LICENSE +15 -15
  282. package/node_modules/playwright/lib/transform/babelBundle.js.txt +14 -11
  283. package/node_modules/playwright/lib/transform/esmLoader.js +17 -5
  284. package/node_modules/playwright/lib/transform/esmLoader.js.txt +3 -3
  285. package/node_modules/playwright/lib/worker/workerProcessEntry.js +17 -18
  286. package/node_modules/playwright/package.json +2 -7
  287. package/node_modules/playwright/types/test.d.ts +156 -39
  288. package/node_modules/playwright-core/browsers.json +9 -9
  289. package/node_modules/playwright-core/cli.js +1 -0
  290. package/node_modules/playwright-core/lib/bootstrap.js +61 -0
  291. package/node_modules/playwright-core/lib/coreBundle.js +6393 -4170
  292. package/node_modules/playwright-core/lib/server/electron/loader.js +4 -0
  293. package/node_modules/playwright-core/lib/tools/cli-client/cli.js +2 -1
  294. package/node_modules/playwright-core/lib/tools/cli-client/help.json +99 -12
  295. package/node_modules/playwright-core/lib/tools/cli-client/output.js +17 -16
  296. package/node_modules/playwright-core/lib/tools/cli-client/program.js +8 -4
  297. package/node_modules/playwright-core/lib/tools/cli-client/session.js +2 -0
  298. package/node_modules/playwright-core/lib/tools/skills/playwright-cli/SKILL.md +71 -3
  299. package/node_modules/playwright-core/lib/tools/skills/playwright-cli/references/pr-attachments.md +60 -0
  300. package/node_modules/playwright-core/lib/tools/skills/playwright-cli/references/running-code.md +4 -0
  301. package/node_modules/playwright-core/lib/tools/skills/playwright-cli/references/session-management.md +2 -0
  302. package/node_modules/playwright-core/lib/tools/skills/playwright-cli/references/test-generation.md +1 -1
  303. package/node_modules/playwright-core/lib/tools/skills/playwright-cli/references/video-recording.md +76 -3
  304. package/node_modules/playwright-core/lib/tools/skills/playwright-trace/SKILL.md +1 -1
  305. package/node_modules/playwright-core/lib/utilsBundle.js +948 -227
  306. package/node_modules/playwright-core/lib/utilsBundle.js.LICENSE +6 -6
  307. package/node_modules/playwright-core/lib/vite/htmlReport/report.js +1 -1
  308. package/node_modules/playwright-core/lib/vite/recorder/assets/{codeMirrorModule-CVQWJZAA.js → codeMirrorModule-DK72OMRi.js} +1 -1
  309. package/node_modules/playwright-core/lib/vite/recorder/assets/index-Cn0mmDuv.js +129 -0
  310. package/node_modules/playwright-core/lib/vite/recorder/index.html +1 -1
  311. package/node_modules/playwright-core/lib/vite/traceViewer/assets/{codeMirrorModule-BbkfBe3n.js → codeMirrorModule-BEB2e8M3.js} +1 -1
  312. package/node_modules/playwright-core/lib/vite/traceViewer/assets/defaultSettingsView-D-g2vrvf.js +184 -0
  313. package/node_modules/playwright-core/lib/vite/traceViewer/assets/{xtermModule-DywYcAf8.js → xtermModule-B794rD2Z.js} +1 -1
  314. package/node_modules/playwright-core/lib/vite/traceViewer/{defaultSettingsView.Bqk9acqE.css → defaultSettingsView.C8BeHuxd.css} +1 -1
  315. package/node_modules/playwright-core/lib/vite/traceViewer/{index.B4cLoZK3.js → index.7-c5LSTW.js} +1 -1
  316. package/node_modules/playwright-core/lib/vite/traceViewer/index.html +3 -3
  317. package/node_modules/playwright-core/lib/vite/traceViewer/sw.bundle.js +3 -3
  318. package/node_modules/playwright-core/lib/vite/traceViewer/{uiMode.CU5KtEkS.js → uiMode.CYwC_gH1.js} +4 -4
  319. package/node_modules/playwright-core/lib/vite/traceViewer/uiMode.html +3 -3
  320. package/node_modules/playwright-core/package.json +1 -1
  321. package/node_modules/playwright-core/types/protocol.d.ts +468 -337
  322. package/node_modules/playwright-core/types/types.d.ts +572 -37
  323. package/node_modules/process-warning/.github/workflows/ci.yml +1 -1
  324. package/node_modules/process-warning/.github/workflows/lock-threads.yml +1 -1
  325. package/node_modules/process-warning/.github/workflows/release.yml +24 -0
  326. package/node_modules/process-warning/README.md +46 -46
  327. package/node_modules/process-warning/package.json +1 -1
  328. package/package.json +2 -2
  329. package/packages/cli/dist/.tsbuildinfo +1 -1
  330. package/packages/core/dist/.tsbuildinfo +1 -1
  331. package/packages/core/dist/plugin/index.d.ts +1 -1
  332. package/packages/core/dist/plugin/index.d.ts.map +1 -1
  333. package/packages/core/dist/plugin/index.js.map +1 -1
  334. package/packages/core/dist/questions/store.d.ts +3 -1
  335. package/packages/core/dist/questions/store.d.ts.map +1 -1
  336. package/packages/core/dist/questions/store.js +3 -3
  337. package/packages/core/dist/questions/store.js.map +1 -1
  338. package/packages/core/dist/questions/types.d.ts +46 -1
  339. package/packages/core/dist/questions/types.d.ts.map +1 -1
  340. package/packages/core/dist/questions/types.js +2 -1
  341. package/packages/core/dist/questions/types.js.map +1 -1
  342. package/packages/core/dist/secrets/approval.d.ts +54 -0
  343. package/packages/core/dist/secrets/approval.d.ts.map +1 -1
  344. package/packages/core/dist/secrets/approval.js +58 -1
  345. package/packages/core/dist/secrets/approval.js.map +1 -1
  346. package/packages/core/dist/secrets/settings.d.ts +178 -0
  347. package/packages/core/dist/secrets/settings.d.ts.map +1 -1
  348. package/packages/core/dist/secrets/settings.js +63 -6
  349. package/packages/core/dist/secrets/settings.js.map +1 -1
  350. package/packages/core/dist/secrets/store.d.ts +31 -0
  351. package/packages/core/dist/secrets/store.d.ts.map +1 -1
  352. package/packages/core/dist/secrets/store.js +75 -0
  353. package/packages/core/dist/secrets/store.js.map +1 -1
  354. package/packages/core/dist/secrets/use.d.ts.map +1 -1
  355. package/packages/core/dist/secrets/use.js +68 -3
  356. package/packages/core/dist/secrets/use.js.map +1 -1
  357. package/packages/core/dist/tools.d.ts +22 -0
  358. package/packages/core/dist/tools.d.ts.map +1 -1
  359. package/packages/core/dist/tools.js.map +1 -1
  360. package/packages/core/migrations/080_secret_requests.sql +14 -0
  361. package/packages/gateway/dist/.tsbuildinfo +1 -1
  362. package/packages/gateway/dist/chat/session.d.ts.map +1 -1
  363. package/packages/gateway/dist/chat/session.js +2 -1
  364. package/packages/gateway/dist/chat/session.js.map +1 -1
  365. package/packages/gateway/dist/missions/execute.d.ts.map +1 -1
  366. package/packages/gateway/dist/missions/execute.js +3 -1
  367. package/packages/gateway/dist/missions/execute.js.map +1 -1
  368. package/packages/gateway/dist/surfaces/browser-cards.d.ts +15 -3
  369. package/packages/gateway/dist/surfaces/browser-cards.d.ts.map +1 -1
  370. package/packages/gateway/dist/surfaces/browser-cards.js +34 -7
  371. package/packages/gateway/dist/surfaces/browser-cards.js.map +1 -1
  372. package/packages/gateway/dist/surfaces/offered-actions.d.ts.map +1 -1
  373. package/packages/gateway/dist/surfaces/offered-actions.js +8 -2
  374. package/packages/gateway/dist/surfaces/offered-actions.js.map +1 -1
  375. package/packages/gateway/dist/surfaces/pending-question.d.ts +3 -1
  376. package/packages/gateway/dist/surfaces/pending-question.d.ts.map +1 -1
  377. package/packages/gateway/dist/surfaces/pending-question.js.map +1 -1
  378. package/packages/gateway/dist/surfaces/secret-request.d.ts +173 -0
  379. package/packages/gateway/dist/surfaces/secret-request.d.ts.map +1 -0
  380. package/packages/gateway/dist/surfaces/secret-request.js +332 -0
  381. package/packages/gateway/dist/surfaces/secret-request.js.map +1 -0
  382. package/packages/gateway/dist/system-context.js +1 -1
  383. package/packages/gateway/dist/system-context.js.map +1 -1
  384. package/packages/gateway/dist/telegram/main.d.ts.map +1 -1
  385. package/packages/gateway/dist/telegram/main.js +14 -3
  386. package/packages/gateway/dist/telegram/main.js.map +1 -1
  387. package/packages/gateway/dist/telegram/surface.d.ts.map +1 -1
  388. package/packages/gateway/dist/telegram/surface.js +4 -1
  389. package/packages/gateway/dist/telegram/surface.js.map +1 -1
  390. package/packages/gateway/dist/web/api-routes.d.ts.map +1 -1
  391. package/packages/gateway/dist/web/api-routes.js +9 -1
  392. package/packages/gateway/dist/web/api-routes.js.map +1 -1
  393. package/packages/gateway/dist/web/approval-ask.js +2 -2
  394. package/packages/gateway/dist/web/approval-ask.js.map +1 -1
  395. package/packages/gateway/dist/web/browser-capture.d.ts +13 -0
  396. package/packages/gateway/dist/web/browser-capture.d.ts.map +1 -0
  397. package/packages/gateway/dist/web/browser-capture.js +24 -0
  398. package/packages/gateway/dist/web/browser-capture.js.map +1 -0
  399. package/packages/gateway/dist/web/chat.d.ts +26 -0
  400. package/packages/gateway/dist/web/chat.d.ts.map +1 -1
  401. package/packages/gateway/dist/web/chat.js +87 -2
  402. package/packages/gateway/dist/web/chat.js.map +1 -1
  403. package/packages/gateway/dist/web/extension.d.ts +30 -0
  404. package/packages/gateway/dist/web/extension.d.ts.map +1 -1
  405. package/packages/gateway/dist/web/extension.js +86 -6
  406. package/packages/gateway/dist/web/extension.js.map +1 -1
  407. package/packages/gateway/dist/web/onboarding.js +1 -1
  408. package/packages/gateway/dist/web/onboarding.js.map +1 -1
  409. package/packages/gateway/dist/web/remote-hand.d.ts +26 -2
  410. package/packages/gateway/dist/web/remote-hand.d.ts.map +1 -1
  411. package/packages/gateway/dist/web/remote-hand.js +89 -28
  412. package/packages/gateway/dist/web/remote-hand.js.map +1 -1
  413. package/packages/gateway/dist/web/secret-request.d.ts +54 -0
  414. package/packages/gateway/dist/web/secret-request.d.ts.map +1 -0
  415. package/packages/gateway/dist/web/secret-request.js +264 -0
  416. package/packages/gateway/dist/web/secret-request.js.map +1 -0
  417. package/packages/gateway/dist/web/secrets.d.ts +1 -0
  418. package/packages/gateway/dist/web/secrets.d.ts.map +1 -1
  419. package/packages/gateway/dist/web/secrets.js +1 -1
  420. package/packages/gateway/dist/web/secrets.js.map +1 -1
  421. package/packages/gateway/dist/web/server.d.ts.map +1 -1
  422. package/packages/gateway/dist/web/server.js +72 -3
  423. package/packages/gateway/dist/web/server.js.map +1 -1
  424. package/packages/install/dist/.tsbuildinfo +1 -1
  425. package/packages/install/dist/app-layout.d.ts +24 -0
  426. package/packages/install/dist/app-layout.d.ts.map +1 -1
  427. package/packages/install/dist/app-layout.js +64 -2
  428. package/packages/install/dist/app-layout.js.map +1 -1
  429. package/packages/install/dist/launcher.d.ts.map +1 -1
  430. package/packages/install/dist/launcher.js +89 -10
  431. package/packages/install/dist/launcher.js.map +1 -1
  432. package/packages/install/dist/linux-install.d.ts +41 -0
  433. package/packages/install/dist/linux-install.d.ts.map +1 -0
  434. package/packages/install/dist/linux-install.js +86 -0
  435. package/packages/install/dist/linux-install.js.map +1 -0
  436. package/packages/install/dist/runtime-info.d.ts +23 -0
  437. package/packages/install/dist/runtime-info.d.ts.map +1 -0
  438. package/packages/install/dist/runtime-info.js +69 -0
  439. package/packages/install/dist/runtime-info.js.map +1 -0
  440. package/packages/install/dist/supervisor.d.ts.map +1 -1
  441. package/packages/install/dist/supervisor.js +8 -6
  442. package/packages/install/dist/supervisor.js.map +1 -1
  443. package/packages/install/dist/uninstall.d.ts +20 -0
  444. package/packages/install/dist/uninstall.d.ts.map +1 -1
  445. package/packages/install/dist/uninstall.js +50 -1
  446. package/packages/install/dist/uninstall.js.map +1 -1
  447. package/packages/install/dist/upgrade.d.ts +4 -1
  448. package/packages/install/dist/upgrade.d.ts.map +1 -1
  449. package/packages/install/dist/upgrade.js +77 -51
  450. package/packages/install/dist/upgrade.js.map +1 -1
  451. package/packages/runtime/dist/.tsbuildinfo +1 -1
  452. package/packages/runtime/dist/anthropic.d.ts +7 -0
  453. package/packages/runtime/dist/anthropic.d.ts.map +1 -1
  454. package/packages/runtime/dist/anthropic.js +19 -1
  455. package/packages/runtime/dist/anthropic.js.map +1 -1
  456. package/packages/tools/artifacts/dist/.tsbuildinfo +1 -1
  457. package/packages/tools/browser/dist/.tsbuildinfo +1 -1
  458. package/packages/tools/browser/dist/controller.d.ts +16 -1
  459. package/packages/tools/browser/dist/controller.d.ts.map +1 -1
  460. package/packages/tools/browser/dist/controller.js +59 -5
  461. package/packages/tools/browser/dist/controller.js.map +1 -1
  462. package/packages/tools/browser/dist/driver.d.ts +12 -0
  463. package/packages/tools/browser/dist/driver.d.ts.map +1 -1
  464. package/packages/tools/browser/dist/driver.js +41 -2
  465. package/packages/tools/browser/dist/driver.js.map +1 -1
  466. package/packages/tools/browser/dist/extension.d.ts +49 -9
  467. package/packages/tools/browser/dist/extension.d.ts.map +1 -1
  468. package/packages/tools/browser/dist/extension.js +145 -21
  469. package/packages/tools/browser/dist/extension.js.map +1 -1
  470. package/packages/tools/browser/dist/index.d.ts +10 -6
  471. package/packages/tools/browser/dist/index.d.ts.map +1 -1
  472. package/packages/tools/browser/dist/index.js +22 -8
  473. package/packages/tools/browser/dist/index.js.map +1 -1
  474. package/packages/tools/browser/dist/routes.d.ts +10 -1
  475. package/packages/tools/browser/dist/routes.d.ts.map +1 -1
  476. package/packages/tools/browser/dist/routes.js +24 -0
  477. package/packages/tools/browser/dist/routes.js.map +1 -1
  478. package/packages/tools/browser/dist/service.d.ts +48 -1
  479. package/packages/tools/browser/dist/service.d.ts.map +1 -1
  480. package/packages/tools/browser/dist/service.js +114 -11
  481. package/packages/tools/browser/dist/service.js.map +1 -1
  482. package/packages/tools/browser/dist/types.d.ts +54 -3
  483. package/packages/tools/browser/dist/types.d.ts.map +1 -1
  484. package/packages/tools/browser/dist/types.js +17 -1
  485. package/packages/tools/browser/dist/types.js.map +1 -1
  486. package/packages/tools/email/dist/.tsbuildinfo +1 -1
  487. package/packages/tools/host/dist/.tsbuildinfo +1 -1
  488. package/packages/tools/mcp/dist/.tsbuildinfo +1 -1
  489. package/packages/tools/memory/dist/.tsbuildinfo +1 -1
  490. package/packages/tools/web/dist/.tsbuildinfo +1 -1
  491. package/packages/web/dist/assets/index-DgpPl0TR.js +155 -0
  492. package/packages/web/dist/assets/index-rMRjibNI.css +1 -0
  493. package/packages/web/dist/assets/{lottie_light-D7CS-IeP.js → lottie_light-twPed1FM.js} +1 -1
  494. package/packages/web/dist/build.json +1 -1
  495. package/packages/web/dist/index.html +2 -2
  496. package/packages/web/dist/precache.json +4 -4
  497. package/node_modules/content-disposition/index.js +0 -536
  498. package/node_modules/playwright/jsx-runtime.js +0 -42
  499. package/node_modules/playwright/jsx-runtime.mjs +0 -21
  500. package/node_modules/playwright-core/lib/vite/recorder/assets/index-hrlLqLtq.js +0 -129
  501. package/node_modules/playwright-core/lib/vite/traceViewer/assets/defaultSettingsView-Ds6CBOo0.js +0 -182
  502. package/packages/web/dist/assets/index-BibqUZwt.js +0 -155
  503. package/packages/web/dist/assets/index-DBVZzTau.css +0 -1
@@ -1,5 +1,5 @@
1
1
  import { WebSocketServer } from 'ws';
2
- import { HAND_QUALITY, HAND_QUALITY_LOW } from '@buddi/tool-browser';
2
+ import { HAND_QUALITY, HAND_QUALITY_LOW, HAND_QUALITY_SHARP, MAX_HAND_COPY, handLevel } from '@buddi/tool-browser';
3
3
  import { SessionStore } from './sessions.js';
4
4
  /** The dashboard's half of the take-over, on the same upgrade listener. */
5
5
  export const REMOTE_HAND_SOCKET_PATH = '/api/browser/hand';
@@ -32,6 +32,61 @@ const SLOW_LINK_BYTES = 256 * 1024;
32
32
  const SLOW_LINK_MS = 1_000;
33
33
  /** And how long it has to be clear again before the picture grows back. */
34
34
  const FAST_LINK_MS = 5_000;
35
+ /** A frame the socket took within this long was acked promptly. */
36
+ const PROMPT_ACK_MS = 150;
37
+ /** One that took longer than this is lag, whatever the buffer says. */
38
+ const LAGGING_ACK_MS = 600;
39
+ /** How long frames have to go out promptly before the picture gets sharp; doubled after each step back down. */
40
+ const SHARP_LINK_MS = 3_000;
41
+ const MAX_SHARP_WAIT_MS = 48_000;
42
+ /**
43
+ * The picture's next size, or nothing: one sample per frame that left.
44
+ *
45
+ * Three steps. A link that stays behind (megabytes buffered, or a frame the
46
+ * socket took more than `LAGGING_ACK_MS` to take) for a second steps down:
47
+ * sharp to normal, normal to low. A low picture grows back to normal after
48
+ * five clear seconds; a normal one goes sharp once every frame has been taken
49
+ * promptly for `sharpWaitMs`, which doubles each time sharp had to step down
50
+ * again, so a link on the edge does not see-saw.
51
+ */
52
+ export function stepQuality(track, sample) {
53
+ const { now } = sample;
54
+ const slow = sample.buffered > SLOW_LINK_BYTES || sample.ackMs > LAGGING_ACK_MS;
55
+ const prompt = !slow && sample.ackMs <= PROMPT_ACK_MS && sample.buffered <= SLOW_LINK_BYTES / 4;
56
+ if (slow) {
57
+ track.slowSince ??= now;
58
+ track.fastSince = undefined;
59
+ track.promptSince = undefined;
60
+ }
61
+ else {
62
+ track.fastSince ??= now;
63
+ track.slowSince = undefined;
64
+ }
65
+ if (prompt)
66
+ track.promptSince ??= now;
67
+ else
68
+ track.promptSince = undefined;
69
+ const level = handLevel(track.quality);
70
+ const lagged = track.slowSince !== undefined && now - track.slowSince >= SLOW_LINK_MS;
71
+ let wanted;
72
+ if (level === 'sharp' && lagged) {
73
+ wanted = HAND_QUALITY;
74
+ track.sharpWaitMs = Math.min(MAX_SHARP_WAIT_MS, track.sharpWaitMs * 2);
75
+ }
76
+ else if (level === 'normal' && lagged)
77
+ wanted = HAND_QUALITY_LOW;
78
+ else if (level === 'normal' && track.promptSince !== undefined && now - track.promptSince >= track.sharpWaitMs)
79
+ wanted = HAND_QUALITY_SHARP;
80
+ else if (level === 'low' && track.fastSince !== undefined && now - track.fastSince >= FAST_LINK_MS)
81
+ wanted = HAND_QUALITY;
82
+ if (!wanted)
83
+ return undefined;
84
+ track.quality = wanted;
85
+ track.slowSince = undefined;
86
+ track.fastSince = undefined;
87
+ track.promptSince = undefined;
88
+ return wanted;
89
+ }
35
90
  /**
36
91
  * At most this many of the owner's events are in flight at the host at once.
37
92
  *
@@ -49,8 +104,8 @@ const IN_FLIGHT = 4;
49
104
  * byte, the metadata's length, the metadata as JSON, and the JPEG. The
50
105
  * dashboard's `readFrame` is the other half of this and nothing else reads it.
51
106
  */
52
- export function packFrame(picture) {
53
- const head = Buffer.from(JSON.stringify(picture.metadata), 'utf8');
107
+ export function packFrame(picture, level) {
108
+ const head = Buffer.from(JSON.stringify(level ? { ...picture.metadata, level } : picture.metadata), 'utf8');
54
109
  const prefix = Buffer.alloc(3);
55
110
  prefix.writeUInt8(1, 0);
56
111
  prefix.writeUInt16BE(head.length, 1);
@@ -144,6 +199,9 @@ export function readInput(raw) {
144
199
  return null;
145
200
  return { kind: 'text', text: pasted };
146
201
  }
202
+ // Cmd/Ctrl+C: nothing travels this way but the ask; the selection comes back as `clipboard`.
203
+ if (input.kind === 'copy')
204
+ return Object.keys(input).length === 1 ? { kind: 'copy' } : null;
147
205
  if (input.kind === 'nav') {
148
206
  // The window's buttons. An address is only shaped here; the driver runs
149
207
  // the same check every agent navigation goes through before it goes.
@@ -379,7 +437,7 @@ export class RemoteHandEndpoint {
379
437
  const batch = live.queue.splice(0, count);
380
438
  const sent = [];
381
439
  for (const input of batch) {
382
- sent.push(live.hand.input(input));
440
+ sent.push(input.kind === 'copy' ? this.#copy(live) : live.hand.input(input));
383
441
  this.#track(live.held, input);
384
442
  }
385
443
  const settled = await Promise.allSettled(sent);
@@ -391,10 +449,27 @@ export class RemoteHandEndpoint {
391
449
  }
392
450
  }
393
451
  }
452
+ /**
453
+ * The owner's Cmd/Ctrl+C, answered: what is selected on the held page goes
454
+ * back on this socket as `clipboard`, and the dashboard puts it on the
455
+ * owner's own clipboard. In order with the rest, so a select-all just before
456
+ * it is what gets copied. Never logged; a host that cannot read a selection
457
+ * answers with nothing, and the dashboard leaves the clipboard alone.
458
+ */
459
+ async #copy(live) {
460
+ const text = await (live.hand.copy?.() ?? Promise.resolve('')).catch(() => '');
461
+ const ws = live.ws;
462
+ if (this.#live !== live || ws.readyState !== ws.OPEN)
463
+ return;
464
+ try {
465
+ ws.send(JSON.stringify({ type: 'clipboard', text: typeof text === 'string' ? text.slice(0, MAX_HAND_COPY) : '' }));
466
+ }
467
+ catch { /* the close handler says so */ }
468
+ }
394
469
  /** What is down, so what is down can be let go of. Never the typed text. */
395
470
  #track(held, input) {
396
471
  // A paste holds nothing down, and nothing about it is worth remembering; nor does a window button.
397
- if (input.kind === 'text' || input.kind === 'nav')
472
+ if (input.kind === 'text' || input.kind === 'nav' || input.kind === 'copy')
398
473
  return;
399
474
  if (input.kind === 'wheel') {
400
475
  held.x = input.x;
@@ -480,7 +555,7 @@ export class RemoteHandEndpoint {
480
555
  }
481
556
  const now = Date.now();
482
557
  const live = { ws, req, lease: session.id, sessionId, hand: offer.hand, since: now, lastInput: now,
483
- checkedAt: now, missed: 0, closing: false, sending: false, quality: HAND_QUALITY, tuning: false, queue: [], inDrain: false,
558
+ checkedAt: now, missed: 0, closing: false, sending: false, link: { quality: HAND_QUALITY, sharpWaitMs: SHARP_LINK_MS }, tuning: false, queue: [], inDrain: false,
484
559
  held: { keys: new Map(), buttons: new Set(), x: 0, y: 0 } };
485
560
  this.#live = live;
486
561
  try {
@@ -567,12 +642,13 @@ export class RemoteHandEndpoint {
567
642
  const picture = live.latest;
568
643
  live.latest = undefined;
569
644
  live.sending = true;
570
- live.sendingSince = Date.now();
645
+ const since = Date.now();
646
+ live.sendingSince = since;
571
647
  try {
572
- ws.send(packFrame(picture), { binary: true }, () => {
648
+ ws.send(packFrame(picture, handLevel(live.link.quality)), { binary: true }, () => {
573
649
  live.sending = false;
574
650
  live.sendingSince = undefined;
575
- this.#link(live);
651
+ this.#link(live, Date.now() - since);
576
652
  this.#flush(live);
577
653
  });
578
654
  }
@@ -587,30 +663,15 @@ export class RemoteHandEndpoint {
587
663
  * `bufferedAmount` is what this process is still holding for a socket that
588
664
  * has not taken it. With one frame in flight, a number that stays above a
589
665
  * frame's worth means the link cannot carry this picture — so the picture
590
- * gets smaller, and grows back when the link is clear again.
666
+ * gets smaller, grows back when the link is clear again, and gets sharp when
667
+ * every frame goes out promptly (`stepQuality`).
591
668
  */
592
- #link(live) {
669
+ #link(live, ackMs) {
593
670
  if (!live.hand.tune || live.tuning || live.closing)
594
671
  return;
595
- const now = Date.now();
596
- const slow = live.ws.bufferedAmount > SLOW_LINK_BYTES;
597
- if (slow) {
598
- live.slowSince ??= now;
599
- live.fastSince = undefined;
600
- }
601
- else {
602
- live.fastSince ??= now;
603
- live.slowSince = undefined;
604
- }
605
- const low = live.quality === HAND_QUALITY_LOW;
606
- const wanted = !low && live.slowSince && now - live.slowSince >= SLOW_LINK_MS ? HAND_QUALITY_LOW
607
- : low && live.fastSince && now - live.fastSince >= FAST_LINK_MS ? HAND_QUALITY
608
- : undefined;
672
+ const wanted = stepQuality(live.link, { now: Date.now(), buffered: live.ws.bufferedAmount, ackMs });
609
673
  if (!wanted)
610
674
  return;
611
- live.quality = wanted;
612
- live.slowSince = undefined;
613
- live.fastSince = undefined;
614
675
  live.tuning = true;
615
676
  void live.hand.tune(wanted).catch(() => this.#say('the picture could not be resized')).finally(() => { live.tuning = false; });
616
677
  }
@@ -1 +1 @@
1
- {"version":3,"file":"remote-hand.js","sourceRoot":"","sources":["../../src/web/remote-hand.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"remote-hand.js","sourceRoot":"","sources":["../../src/web/remote-hand.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * The dashboard's side of an agent's `secret.request` card
3
+ * (docs/owner-secrets.md §6, "Saved from a conversation"; surfaces/secret-request.ts).
4
+ *
5
+ * POST /api/secrets save a set for one site, in one call; with
6
+ * `questionId` it answers that card too
7
+ * POST /api/secrets/request/decline "I'll sign in myself", or the card cancelled
8
+ *
9
+ * The values cross one boundary — this route's body — into core's ownerOnly
10
+ * `secrets.put_set`, which writes them to the vault. They are never in a chat
11
+ * message, an event, a question's answer or a log line: what the agent hears
12
+ * is the names and whether the form was filled.
13
+ *
14
+ * Save and fill is the owner's approval of the fill: it records one
15
+ * `secrets.use_set` action for the set, approved by that press, then fills the
16
+ * fields the agent named through `secret.fill` as the agent — which now goes
17
+ * through without a card, because the set's first use is approved.
18
+ */
19
+ import type { Pool } from 'pg';
20
+ import { type CoreToolContext, type ToolRegistry } from '@buddi/core';
21
+ import type { BrowserController } from '@buddi/tool-browser';
22
+ import type { RouteReply } from './secrets.js';
23
+ export interface SecretRequestRouteDeps {
24
+ pool: Pool;
25
+ registry: ToolRegistry;
26
+ ctx: Omit<CoreToolContext, 'db'>;
27
+ now: () => Date;
28
+ browser?: Partial<Pick<BrowserController, 'handOver'>> | undefined;
29
+ /** The agent carries on with the outcome; the thread shows `stamp`. */
30
+ carryOn?: ((input: {
31
+ conversationId: string;
32
+ agentId: string;
33
+ text: string;
34
+ stamp: string;
35
+ }) => Promise<string | null>) | undefined;
36
+ log?: ((line: string) => void) | undefined;
37
+ }
38
+ /**
39
+ * `POST /api/secrets` — a set of secrets for one site, saved in one call.
40
+ *
41
+ * `{ site, fields: [{ label, kind, value }] }` saves them, named after the site
42
+ * and each label ("Wikipedia password"), bound as `browser.field` to the site
43
+ * and every host under it, asking the first time. With `questionId` the site
44
+ * and the places come from that card, and `then` says what follows:
45
+ * `fill` (Save and fill) or `save` (Save only, and the owner gets the page).
46
+ */
47
+ export declare function saveSecretSet(deps: SecretRequestRouteDeps, body: unknown): Promise<RouteReply>;
48
+ /**
49
+ * `POST /api/secrets/request/decline` — `{ questionId, reason }`: "I'll sign in
50
+ * myself" hands the page to the owner the way Take over does; `cancelled`
51
+ * just closes the card. The agent hears `{ declined: reason }`.
52
+ */
53
+ export declare function declineSecretRequest(deps: SecretRequestRouteDeps, body: unknown): Promise<RouteReply>;
54
+ //# sourceMappingURL=secret-request.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secret-request.d.ts","sourceRoot":"","sources":["../../src/web/secret-request.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAC/B,OAAO,EAUL,KAAK,eAAe,EAIpB,KAAK,YAAY,EAClB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAW7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,IAAI,CAAC;IACX,QAAQ,EAAE,YAAY,CAAC;IACvB,GAAG,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;IACjC,GAAG,EAAE,MAAM,IAAI,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC,GAAG,SAAS,CAAC;IACnE,uEAAuE;IACvE,OAAO,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE;QAAE,cAAc,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC;IACpI,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;CAC5C;AA+ED;;;;;;;;GAQG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,sBAAsB,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,CA8DpG;AAoFD;;;;GAIG;AACH,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,sBAAsB,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,CAmB3G"}
@@ -0,0 +1,264 @@
1
+ import { createAction, decideApproval, describeSecretSetUse, executeApproved, getQuestion, OWNER_AGENT_ID, SECRETS_SET_TOOL, SECRETS_TOOL_VERSION, VAULT_LOCKED_SAVE, } from '@buddi/core';
2
+ import { normalizeSite, outcomeStamp, outcomeTurnText, requestOrigins, secretNameFor, } from '../surfaces/secret-request.js';
3
+ import { WEB_SURFACE, WEB_WORKER } from './write.js';
4
+ const reply = (status, body) => ({ status, body });
5
+ /** The field kinds a card's row may be. */
6
+ const KINDS = new Set(['username', 'password', 'totp', 'other']);
7
+ function postedFields(raw) {
8
+ if (!Array.isArray(raw) || raw.length === 0)
9
+ return 'Send the fields to save: [{ label, kind, value }].';
10
+ if (raw.length > 12)
11
+ return 'At most 12 fields at once.';
12
+ const out = [];
13
+ for (const item of raw) {
14
+ const { label, kind, value } = (item ?? {});
15
+ if (typeof label !== 'string' || label.trim() === '' || label.length > 60)
16
+ return 'Each field needs a label of up to 60 characters.';
17
+ if (typeof kind !== 'string' || !KINDS.has(kind))
18
+ return 'Each field\'s kind is username, password, totp or other.';
19
+ if (typeof value !== 'string')
20
+ return `"${label.trim()}" needs a value.`;
21
+ // An empty row is a row the owner left blank: skipped, not an error.
22
+ if (value.trim() === '')
23
+ continue;
24
+ if (value.length > 16_384)
25
+ return `"${label.trim()}" is too long.`;
26
+ out.push({ label: label.trim().replace(/\s+/g, ' '), kind: kind, value });
27
+ }
28
+ if (out.length === 0)
29
+ return 'Type at least one value.';
30
+ return out;
31
+ }
32
+ /** Names already taken, so a new one gets " 2" rather than overwriting an old secret. */
33
+ async function uniqueNames(pool, wanted) {
34
+ const { rows } = await pool.query(`select lower(name) as name from core.secrets`);
35
+ const taken = new Set(rows.map((row) => row.name));
36
+ return wanted.map((name) => {
37
+ let candidate = name;
38
+ for (let n = 2; taken.has(candidate.toLowerCase()); n += 1)
39
+ candidate = `${name} ${n}`;
40
+ taken.add(candidate.toLowerCase());
41
+ return candidate;
42
+ });
43
+ }
44
+ /** The card this question is, when it is an open `secret.request`. */
45
+ function openRequest(question, now) {
46
+ if (!question)
47
+ return 'That card is gone.';
48
+ if (question.answeredAt || Date.parse(question.expiresAt) <= now.getTime())
49
+ return 'That card is no longer waiting.';
50
+ if (question.request?.kind !== 'secret.request')
51
+ return 'That card is not a sign-in card.';
52
+ return { question, card: question.request };
53
+ }
54
+ /** Claim the card so a second press (another tab, a double tap) saves nothing twice. */
55
+ async function claim(pool, id, now) {
56
+ const { rows } = await pool.query(`update core.questions set answered_at = $2, answered_via = $3 where id = $1 and answered_at is null and expires_at > $2 returning id`, [id, now, WEB_SURFACE]);
57
+ return rows.length > 0;
58
+ }
59
+ /** Put the card back when the save it claimed for did not happen (a locked vault). */
60
+ async function unclaim(pool, id) {
61
+ await pool.query(`update core.questions set answered_at = null, answered_via = null where id = $1`, [id]);
62
+ }
63
+ /** Record what came of the card on its row: the outcome, names only. */
64
+ async function settle(pool, id, outcome) {
65
+ await pool.query(`update core.questions set answer = $2 where id = $1`, [id, JSON.stringify(outcome)]);
66
+ }
67
+ /** The ids of each saved secret's `browser.field` bindings — the page, the site, `*.` the site — by name. */
68
+ async function fieldBindings(pool, names) {
69
+ const { rows } = await pool.query(`select s.name, b.id::text as id from core.secrets s join core.secret_bindings b on b.secret_id = s.id
70
+ where s.name = any($1::text[]) and b.kind = 'browser.field' order by b.created_at, b.id`, [names]);
71
+ const out = new Map();
72
+ for (const row of rows)
73
+ out.set(row.name, [...(out.get(row.name) ?? []), row.id]);
74
+ return out;
75
+ }
76
+ /**
77
+ * `POST /api/secrets` — a set of secrets for one site, saved in one call.
78
+ *
79
+ * `{ site, fields: [{ label, kind, value }] }` saves them, named after the site
80
+ * and each label ("Wikipedia password"), bound as `browser.field` to the site
81
+ * and every host under it, asking the first time. With `questionId` the site
82
+ * and the places come from that card, and `then` says what follows:
83
+ * `fill` (Save and fill) or `save` (Save only, and the owner gets the page).
84
+ */
85
+ export async function saveSecretSet(deps, body) {
86
+ if (typeof body !== 'object' || body === null)
87
+ return reply(400, { error: 'Send `{ site, fields }`.' });
88
+ const input = body;
89
+ const fields = postedFields(input.fields);
90
+ if (typeof fields === 'string')
91
+ return reply(400, { error: fields });
92
+ const now = deps.now();
93
+ const questionId = typeof input.questionId === 'string' ? input.questionId : undefined;
94
+ const then = input.then === 'fill' ? 'fill' : 'save';
95
+ let site;
96
+ let origins;
97
+ let request;
98
+ if (questionId !== undefined) {
99
+ if (!/^[0-9a-f-]{36}$/i.test(questionId))
100
+ return reply(400, { error: 'questionId is a card id.' });
101
+ const open = openRequest(await getQuestion(deps.pool, questionId), now);
102
+ if (typeof open === 'string')
103
+ return reply(409, { error: open });
104
+ request = open;
105
+ site = open.card.site;
106
+ origins = open.card.origins;
107
+ }
108
+ else {
109
+ site = normalizeSite(typeof input.site === 'string' ? input.site : undefined);
110
+ if (!site)
111
+ return reply(400, { error: 'Name the site, like wikipedia.org.' });
112
+ origins = requestOrigins(site, undefined);
113
+ }
114
+ const names = await uniqueNames(deps.pool, fields.map((field) => secretNameFor(site, field.label)));
115
+ const bindings = origins.map((origin) => ({ kind: 'browser.field', target: origin, rule: 'first-time' }));
116
+ if (request && !(await claim(deps.pool, request.question.id, now)))
117
+ return reply(409, { error: 'That card is no longer waiting.' });
118
+ const saved = await deps.registry.invoke('secrets.put_set', {
119
+ site,
120
+ ...(request ? { conversationId: request.question.conversationId } : {}),
121
+ items: fields.map((field, index) => ({ name: names[index], value: field.value, totp: field.kind === 'totp', bindings })),
122
+ }, { ...deps.ctx, agentId: OWNER_AGENT_ID, db: deps.pool, now: deps.now });
123
+ if (!saved.ok) {
124
+ if (request)
125
+ await unclaim(deps.pool, request.question.id).catch(() => undefined);
126
+ if (saved.message === VAULT_LOCKED_SAVE) {
127
+ return reply(409, { error: VAULT_LOCKED_SAVE, locked: true });
128
+ }
129
+ return reply(400, { error: saved.message });
130
+ }
131
+ const savedNames = saved.output.names;
132
+ if (!request)
133
+ return reply(200, { saved: savedNames, site });
134
+ const { question, card } = request;
135
+ let filled = false;
136
+ const report = [];
137
+ if (then === 'fill') {
138
+ filled = await approveAndFill(deps, { question, card, fields, names: savedNames }, report);
139
+ }
140
+ else {
141
+ await deps.browser?.handOver?.({ conversationId: question.conversationId, agentId: question.agentId }).catch(() => false);
142
+ }
143
+ const outcome = { saved: savedNames, filled, ...(report.length > 0 ? { fields: report } : {}) };
144
+ await settle(deps.pool, question.id, outcome).catch(() => undefined);
145
+ const stamp = outcomeStamp(outcome, card.site, fields.map((field) => field.label));
146
+ await deps.carryOn?.({
147
+ conversationId: question.conversationId,
148
+ agentId: question.agentId,
149
+ text: outcomeTurnText(outcome, { filling: then === 'fill' }),
150
+ stamp,
151
+ }).catch((err) => deps.log?.(`secrets: carrying on after the sign-in card failed: ${err instanceof Error ? err.message : String(err)}`));
152
+ return reply(200, { saved: savedNames, filled, stamp });
153
+ }
154
+ /**
155
+ * Save and fill, after the save: one approval for the set (the press is the
156
+ * owner's yes), then each field the agent named filled through `secret.fill`
157
+ * as that agent. A field that looked like a card number, a CVV, an SSN or a
158
+ * one-time code is left out of both: it asks on its own first use.
159
+ */
160
+ async function approveAndFill(deps, input, report = []) {
161
+ const { question, card } = input;
162
+ const plan = input.fields.map((field, index) => {
163
+ const asked = card.fields.find((candidate) => candidate.label.toLowerCase() === field.label.toLowerCase());
164
+ return { name: input.names[index], label: field.label, page: asked?.name ?? asked?.label, ref: asked?.ref, warned: Boolean(asked?.warning) };
165
+ }).filter((item) => !item.warned);
166
+ if (plan.length === 0)
167
+ return false;
168
+ const bindings = await fieldBindings(deps.pool, plan.map((item) => item.name));
169
+ const items = plan.flatMap((item) => {
170
+ const [bindingId, ...alsoBindingIds] = bindings.get(item.name) ?? [];
171
+ return bindingId ? [{ bindingId, ...(alsoBindingIds.length > 0 ? { alsoBindingIds } : {}), secret: item.name, kind: 'browser.field', field: item.label.slice(0, 80) }] : [];
172
+ });
173
+ if (items.length === 0)
174
+ return false;
175
+ const args = { site: card.site, plugin: 'browser', items };
176
+ const described = describeSecretSetUse(args);
177
+ const now = deps.now();
178
+ const action = await createAction(deps.pool, {
179
+ tool: SECRETS_SET_TOOL,
180
+ toolVersion: SECRETS_TOOL_VERSION,
181
+ agentId: question.agentId,
182
+ conversationId: question.conversationId,
183
+ canonicalArgs: args,
184
+ envelope: described.envelope,
185
+ preview: described.preview,
186
+ tier: 'gated',
187
+ now,
188
+ });
189
+ const decided = await decideApproval(deps.pool, { actionId: action.id, decision: 'approved', by: deps.ctx.ownerId, via: WEB_SURFACE, now, registry: deps.registry });
190
+ if (!decided.ok) {
191
+ deps.log?.(`secrets: the set's approval could not be recorded: ${decided.message}`);
192
+ return false;
193
+ }
194
+ const executed = await executeApproved(deps.pool, {
195
+ actionId: action.id,
196
+ registry: deps.registry,
197
+ ctx: { ...deps.ctx, db: deps.pool, now: deps.now },
198
+ worker: WEB_WORKER,
199
+ now,
200
+ });
201
+ if (!executed.ok) {
202
+ deps.log?.(`secrets: the set's approval did not go through: ${executed.message}`);
203
+ return false;
204
+ }
205
+ // Approved for the set. Each field is filled by its label on the latest page (refs move once a fill
206
+ // redraws the page), its ref the fallback; one the agent named neither for is the agent's to fill.
207
+ const fillable = plan.filter((item) => item.page || item.ref);
208
+ for (const item of plan)
209
+ report.push({ name: item.name, label: item.page ?? item.label, ...(item.ref ? { ref: item.ref } : {}), filled: false });
210
+ if (fillable.length === 0)
211
+ return false;
212
+ let all = fillable.length === plan.length;
213
+ for (const item of fillable) {
214
+ const result = await deps.registry.invoke('secret.fill', { name: item.name, ...(item.page ? { label: item.page } : {}), ...(item.ref ? { ref: item.ref } : {}) }, {
215
+ ...deps.ctx,
216
+ agentId: question.agentId,
217
+ conversationId: question.conversationId,
218
+ db: deps.pool,
219
+ now: deps.now,
220
+ });
221
+ const output = result.ok ? result.output : null;
222
+ if (!result.ok || output?.filled !== true) {
223
+ all = false;
224
+ deps.log?.(`secrets: filling "${item.name}" after Save and fill did not go through${result.ok ? '' : `: ${result.message}`}`);
225
+ continue;
226
+ }
227
+ const done = report.find((entry) => entry.name === item.name);
228
+ if (done) {
229
+ done.filled = true;
230
+ if (typeof output.ref === 'string')
231
+ done.ref = output.ref;
232
+ }
233
+ }
234
+ return all;
235
+ }
236
+ /**
237
+ * `POST /api/secrets/request/decline` — `{ questionId, reason }`: "I'll sign in
238
+ * myself" hands the page to the owner the way Take over does; `cancelled`
239
+ * just closes the card. The agent hears `{ declined: reason }`.
240
+ */
241
+ export async function declineSecretRequest(deps, body) {
242
+ const input = (typeof body === 'object' && body !== null ? body : {});
243
+ const questionId = typeof input.questionId === 'string' ? input.questionId : '';
244
+ if (!/^[0-9a-f-]{36}$/i.test(questionId))
245
+ return reply(400, { error: 'questionId is a card id.' });
246
+ const reason = input.reason === 'cancelled' ? 'cancelled' : 'sign-in-myself';
247
+ const now = deps.now();
248
+ const open = openRequest(await getQuestion(deps.pool, questionId), now);
249
+ if (typeof open === 'string')
250
+ return reply(409, { error: open });
251
+ if (!(await claim(deps.pool, questionId, now)))
252
+ return reply(409, { error: 'That card is no longer waiting.' });
253
+ const { question, card } = open;
254
+ if (reason === 'sign-in-myself') {
255
+ await deps.browser?.handOver?.({ conversationId: question.conversationId, agentId: question.agentId }).catch(() => false);
256
+ }
257
+ const outcome = { declined: reason };
258
+ await settle(deps.pool, questionId, outcome).catch(() => undefined);
259
+ const stamp = outcomeStamp(outcome, card.site, []);
260
+ await deps.carryOn?.({ conversationId: question.conversationId, agentId: question.agentId, text: outcomeTurnText(outcome), stamp })
261
+ .catch((err) => deps.log?.(`secrets: carrying on after the sign-in card failed: ${err instanceof Error ? err.message : String(err)}`));
262
+ return reply(200, { declined: reason, stamp });
263
+ }
264
+ //# sourceMappingURL=secret-request.js.map