@withbuddi/buddi 0.1.0-pre.44 → 0.1.0-pre.46

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 (492) hide show
  1. package/extension/background.js +157 -1
  2. package/extension/manifest.json +5 -2
  3. package/extension/popup.html +4 -0
  4. package/extension/popup.js +18 -0
  5. package/node_modules/@buddi/cli/dist/.tsbuildinfo +1 -1
  6. package/node_modules/@buddi/cli/dist/mcp/tools.d.ts +3 -8
  7. package/node_modules/@buddi/cli/dist/mcp/tools.d.ts.map +1 -1
  8. package/node_modules/@buddi/cli/dist/mcp/tools.js +22 -4
  9. package/node_modules/@buddi/cli/dist/mcp/tools.js.map +1 -1
  10. package/node_modules/@buddi/core/dist/.tsbuildinfo +1 -1
  11. package/node_modules/@buddi/core/dist/artifacts/orphans.d.ts +6 -4
  12. package/node_modules/@buddi/core/dist/artifacts/orphans.d.ts.map +1 -1
  13. package/node_modules/@buddi/core/dist/artifacts/orphans.js +10 -3
  14. package/node_modules/@buddi/core/dist/artifacts/orphans.js.map +1 -1
  15. package/node_modules/@buddi/core/dist/groups.d.ts +0 -9
  16. package/node_modules/@buddi/core/dist/groups.d.ts.map +1 -1
  17. package/node_modules/@buddi/core/dist/groups.js +13 -1
  18. package/node_modules/@buddi/core/dist/groups.js.map +1 -1
  19. package/node_modules/@buddi/core/dist/pages.d.ts +24 -1
  20. package/node_modules/@buddi/core/dist/pages.d.ts.map +1 -1
  21. package/node_modules/@buddi/core/dist/pages.js +61 -1
  22. package/node_modules/@buddi/core/dist/pages.js.map +1 -1
  23. package/node_modules/@buddi/core/dist/pending-input.d.ts +13 -2
  24. package/node_modules/@buddi/core/dist/pending-input.d.ts.map +1 -1
  25. package/node_modules/@buddi/core/dist/pending-input.js +57 -12
  26. package/node_modules/@buddi/core/dist/pending-input.js.map +1 -1
  27. package/node_modules/@buddi/core/dist/plugin/version.d.ts +1 -1
  28. package/node_modules/@buddi/core/dist/plugin/version.js +1 -1
  29. package/node_modules/@buddi/core/dist/tools.d.ts +6 -1
  30. package/node_modules/@buddi/core/dist/tools.d.ts.map +1 -1
  31. package/node_modules/@buddi/core/dist/tools.js.map +1 -1
  32. package/node_modules/@buddi/core/dist/web-settings.d.ts +8 -0
  33. package/node_modules/@buddi/core/dist/web-settings.d.ts.map +1 -1
  34. package/node_modules/@buddi/core/dist/web-settings.js +14 -0
  35. package/node_modules/@buddi/core/dist/web-settings.js.map +1 -1
  36. package/node_modules/@buddi/core/migrations/078_pending_input_files.sql +8 -0
  37. package/node_modules/@buddi/gateway/dist/.tsbuildinfo +1 -1
  38. package/node_modules/@buddi/gateway/dist/agents/agent-intro.d.ts +31 -0
  39. package/node_modules/@buddi/gateway/dist/agents/agent-intro.d.ts.map +1 -0
  40. package/node_modules/@buddi/gateway/dist/agents/agent-intro.js +116 -0
  41. package/node_modules/@buddi/gateway/dist/agents/agent-intro.js.map +1 -0
  42. package/node_modules/@buddi/gateway/dist/agents/delegation.d.ts +10 -0
  43. package/node_modules/@buddi/gateway/dist/agents/delegation.d.ts.map +1 -1
  44. package/node_modules/@buddi/gateway/dist/agents/delegation.js +18 -1
  45. package/node_modules/@buddi/gateway/dist/agents/delegation.js.map +1 -1
  46. package/node_modules/@buddi/gateway/dist/agents/platform.d.ts +14 -1
  47. package/node_modules/@buddi/gateway/dist/agents/platform.d.ts.map +1 -1
  48. package/node_modules/@buddi/gateway/dist/agents/platform.js +44 -11
  49. package/node_modules/@buddi/gateway/dist/agents/platform.js.map +1 -1
  50. package/node_modules/@buddi/gateway/dist/bootstrap.d.ts.map +1 -1
  51. package/node_modules/@buddi/gateway/dist/bootstrap.js +2 -0
  52. package/node_modules/@buddi/gateway/dist/bootstrap.js.map +1 -1
  53. package/node_modules/@buddi/gateway/dist/browser-host.d.ts.map +1 -1
  54. package/node_modules/@buddi/gateway/dist/browser-host.js +1 -0
  55. package/node_modules/@buddi/gateway/dist/browser-host.js.map +1 -1
  56. package/node_modules/@buddi/gateway/dist/edition-origin.d.ts +57 -0
  57. package/node_modules/@buddi/gateway/dist/edition-origin.d.ts.map +1 -0
  58. package/node_modules/@buddi/gateway/dist/edition-origin.js +156 -0
  59. package/node_modules/@buddi/gateway/dist/edition-origin.js.map +1 -0
  60. package/node_modules/@buddi/gateway/dist/system-context.d.ts +9 -0
  61. package/node_modules/@buddi/gateway/dist/system-context.d.ts.map +1 -1
  62. package/node_modules/@buddi/gateway/dist/system-context.js +28 -2
  63. package/node_modules/@buddi/gateway/dist/system-context.js.map +1 -1
  64. package/node_modules/@buddi/gateway/dist/telegram/approvals.d.ts +6 -0
  65. package/node_modules/@buddi/gateway/dist/telegram/approvals.d.ts.map +1 -1
  66. package/node_modules/@buddi/gateway/dist/telegram/approvals.js +10 -2
  67. package/node_modules/@buddi/gateway/dist/telegram/approvals.js.map +1 -1
  68. package/node_modules/@buddi/gateway/dist/telegram/main.d.ts.map +1 -1
  69. package/node_modules/@buddi/gateway/dist/telegram/main.js +10 -3
  70. package/node_modules/@buddi/gateway/dist/telegram/main.js.map +1 -1
  71. package/node_modules/@buddi/gateway/dist/telegram/outbound.d.ts +9 -0
  72. package/node_modules/@buddi/gateway/dist/telegram/outbound.d.ts.map +1 -1
  73. package/node_modules/@buddi/gateway/dist/telegram/outbound.js +43 -0
  74. package/node_modules/@buddi/gateway/dist/telegram/outbound.js.map +1 -1
  75. package/node_modules/@buddi/gateway/dist/telegram/surface.d.ts +2 -0
  76. package/node_modules/@buddi/gateway/dist/telegram/surface.d.ts.map +1 -1
  77. package/node_modules/@buddi/gateway/dist/telegram/surface.js +2 -1
  78. package/node_modules/@buddi/gateway/dist/telegram/surface.js.map +1 -1
  79. package/node_modules/@buddi/gateway/dist/tips/engine.d.ts +32 -0
  80. package/node_modules/@buddi/gateway/dist/tips/engine.d.ts.map +1 -1
  81. package/node_modules/@buddi/gateway/dist/tips/engine.js +69 -0
  82. package/node_modules/@buddi/gateway/dist/tips/engine.js.map +1 -1
  83. package/node_modules/@buddi/gateway/dist/tips/route.d.ts +1 -3
  84. package/node_modules/@buddi/gateway/dist/tips/route.d.ts.map +1 -1
  85. package/node_modules/@buddi/gateway/dist/tips/route.js +54 -30
  86. package/node_modules/@buddi/gateway/dist/tips/route.js.map +1 -1
  87. package/node_modules/@buddi/gateway/dist/web/agent-offers.d.ts +10 -1
  88. package/node_modules/@buddi/gateway/dist/web/agent-offers.d.ts.map +1 -1
  89. package/node_modules/@buddi/gateway/dist/web/agent-offers.js +14 -1
  90. package/node_modules/@buddi/gateway/dist/web/agent-offers.js.map +1 -1
  91. package/node_modules/@buddi/gateway/dist/web/api-routes.d.ts.map +1 -1
  92. package/node_modules/@buddi/gateway/dist/web/api-routes.js +38 -7
  93. package/node_modules/@buddi/gateway/dist/web/api-routes.js.map +1 -1
  94. package/node_modules/@buddi/gateway/dist/web/approval-ask.d.ts +16 -0
  95. package/node_modules/@buddi/gateway/dist/web/approval-ask.d.ts.map +1 -0
  96. package/node_modules/@buddi/gateway/dist/web/approval-ask.js +51 -0
  97. package/node_modules/@buddi/gateway/dist/web/approval-ask.js.map +1 -0
  98. package/node_modules/@buddi/gateway/dist/web/attention.d.ts +37 -0
  99. package/node_modules/@buddi/gateway/dist/web/attention.d.ts.map +1 -1
  100. package/node_modules/@buddi/gateway/dist/web/attention.js +54 -10
  101. package/node_modules/@buddi/gateway/dist/web/attention.js.map +1 -1
  102. package/node_modules/@buddi/gateway/dist/web/canvas-tabs.d.ts +41 -0
  103. package/node_modules/@buddi/gateway/dist/web/canvas-tabs.d.ts.map +1 -0
  104. package/node_modules/@buddi/gateway/dist/web/canvas-tabs.js +68 -0
  105. package/node_modules/@buddi/gateway/dist/web/canvas-tabs.js.map +1 -0
  106. package/node_modules/@buddi/gateway/dist/web/chat.d.ts +6 -9
  107. package/node_modules/@buddi/gateway/dist/web/chat.d.ts.map +1 -1
  108. package/node_modules/@buddi/gateway/dist/web/chat.js +37 -19
  109. package/node_modules/@buddi/gateway/dist/web/chat.js.map +1 -1
  110. package/node_modules/@buddi/gateway/dist/web/extension.d.ts +11 -1
  111. package/node_modules/@buddi/gateway/dist/web/extension.d.ts.map +1 -1
  112. package/node_modules/@buddi/gateway/dist/web/extension.js +51 -0
  113. package/node_modules/@buddi/gateway/dist/web/extension.js.map +1 -1
  114. package/node_modules/@buddi/gateway/dist/web/live.d.ts +7 -0
  115. package/node_modules/@buddi/gateway/dist/web/live.d.ts.map +1 -1
  116. package/node_modules/@buddi/gateway/dist/web/live.js +12 -0
  117. package/node_modules/@buddi/gateway/dist/web/live.js.map +1 -1
  118. package/node_modules/@buddi/gateway/dist/web/pages.d.ts.map +1 -1
  119. package/node_modules/@buddi/gateway/dist/web/pages.js +10 -1
  120. package/node_modules/@buddi/gateway/dist/web/pages.js.map +1 -1
  121. package/node_modules/@buddi/gateway/dist/web/server.d.ts +0 -4
  122. package/node_modules/@buddi/gateway/dist/web/server.d.ts.map +1 -1
  123. package/node_modules/@buddi/gateway/dist/web/server.js +102 -7
  124. package/node_modules/@buddi/gateway/dist/web/server.js.map +1 -1
  125. package/node_modules/@buddi/install/dist/.tsbuildinfo +1 -1
  126. package/node_modules/@buddi/runtime/dist/.tsbuildinfo +1 -1
  127. package/node_modules/@buddi/runtime/dist/codex-direct.d.ts +1 -1
  128. package/node_modules/@buddi/runtime/dist/codex-direct.js +1 -1
  129. package/node_modules/@buddi/runtime/dist/grounding.d.ts +54 -0
  130. package/node_modules/@buddi/runtime/dist/grounding.d.ts.map +1 -0
  131. package/node_modules/@buddi/runtime/dist/grounding.js +158 -0
  132. package/node_modules/@buddi/runtime/dist/grounding.js.map +1 -0
  133. package/node_modules/@buddi/runtime/dist/index.d.ts +1 -0
  134. package/node_modules/@buddi/runtime/dist/index.d.ts.map +1 -1
  135. package/node_modules/@buddi/runtime/dist/index.js +1 -0
  136. package/node_modules/@buddi/runtime/dist/index.js.map +1 -1
  137. package/node_modules/@buddi/runtime/dist/loop.d.ts +19 -0
  138. package/node_modules/@buddi/runtime/dist/loop.d.ts.map +1 -1
  139. package/node_modules/@buddi/runtime/dist/loop.js +123 -13
  140. package/node_modules/@buddi/runtime/dist/loop.js.map +1 -1
  141. package/node_modules/@buddi/tool-artifacts/dist/.tsbuildinfo +1 -1
  142. package/node_modules/@buddi/tool-artifacts/dist/extract.d.ts +6 -0
  143. package/node_modules/@buddi/tool-artifacts/dist/extract.d.ts.map +1 -1
  144. package/node_modules/@buddi/tool-artifacts/dist/extract.js +6 -0
  145. package/node_modules/@buddi/tool-artifacts/dist/extract.js.map +1 -1
  146. package/node_modules/@buddi/tool-artifacts/dist/tools/artifacts.d.ts +1 -0
  147. package/node_modules/@buddi/tool-artifacts/dist/tools/artifacts.d.ts.map +1 -1
  148. package/node_modules/@buddi/tool-artifacts/dist/tools/artifacts.js +30 -8
  149. package/node_modules/@buddi/tool-artifacts/dist/tools/artifacts.js.map +1 -1
  150. package/node_modules/@buddi/tool-browser/dist/.tsbuildinfo +1 -1
  151. package/node_modules/@buddi/tool-browser/dist/controller.d.ts +25 -0
  152. package/node_modules/@buddi/tool-browser/dist/controller.d.ts.map +1 -1
  153. package/node_modules/@buddi/tool-browser/dist/controller.js +25 -1
  154. package/node_modules/@buddi/tool-browser/dist/controller.js.map +1 -1
  155. package/node_modules/@buddi/tool-browser/dist/downloads.d.ts +138 -0
  156. package/node_modules/@buddi/tool-browser/dist/downloads.d.ts.map +1 -0
  157. package/node_modules/@buddi/tool-browser/dist/downloads.js +529 -0
  158. package/node_modules/@buddi/tool-browser/dist/downloads.js.map +1 -0
  159. package/node_modules/@buddi/tool-browser/dist/driver.d.ts +17 -1
  160. package/node_modules/@buddi/tool-browser/dist/driver.d.ts.map +1 -1
  161. package/node_modules/@buddi/tool-browser/dist/driver.js +48 -0
  162. package/node_modules/@buddi/tool-browser/dist/driver.js.map +1 -1
  163. package/node_modules/@buddi/tool-browser/dist/extension.d.ts +23 -0
  164. package/node_modules/@buddi/tool-browser/dist/extension.d.ts.map +1 -1
  165. package/node_modules/@buddi/tool-browser/dist/extension.js +20 -0
  166. package/node_modules/@buddi/tool-browser/dist/extension.js.map +1 -1
  167. package/node_modules/@buddi/tool-browser/dist/host.d.ts +3 -1
  168. package/node_modules/@buddi/tool-browser/dist/host.d.ts.map +1 -1
  169. package/node_modules/@buddi/tool-browser/dist/host.js +9 -2
  170. package/node_modules/@buddi/tool-browser/dist/host.js.map +1 -1
  171. package/node_modules/@buddi/tool-browser/dist/index.d.ts +7 -3
  172. package/node_modules/@buddi/tool-browser/dist/index.d.ts.map +1 -1
  173. package/node_modules/@buddi/tool-browser/dist/index.js +5 -3
  174. package/node_modules/@buddi/tool-browser/dist/index.js.map +1 -1
  175. package/node_modules/@buddi/tool-browser/dist/service.d.ts +28 -0
  176. package/node_modules/@buddi/tool-browser/dist/service.d.ts.map +1 -1
  177. package/node_modules/@buddi/tool-browser/dist/service.js +58 -1
  178. package/node_modules/@buddi/tool-browser/dist/service.js.map +1 -1
  179. package/node_modules/@buddi/tool-browser/dist/settings.d.ts +8 -0
  180. package/node_modules/@buddi/tool-browser/dist/settings.d.ts.map +1 -1
  181. package/node_modules/@buddi/tool-browser/dist/settings.js +9 -0
  182. package/node_modules/@buddi/tool-browser/dist/settings.js.map +1 -1
  183. package/node_modules/@buddi/tool-browser/dist/types.d.ts +31 -24
  184. package/node_modules/@buddi/tool-browser/dist/types.d.ts.map +1 -1
  185. package/node_modules/@buddi/tool-browser/dist/types.js.map +1 -1
  186. package/node_modules/@buddi/tool-email/dist/.tsbuildinfo +1 -1
  187. package/node_modules/@buddi/tool-email/dist/agent.d.ts +6 -1
  188. package/node_modules/@buddi/tool-email/dist/agent.d.ts.map +1 -1
  189. package/node_modules/@buddi/tool-email/dist/agent.js +6 -1
  190. package/node_modules/@buddi/tool-email/dist/agent.js.map +1 -1
  191. package/node_modules/@buddi/tool-email/dist/imap/fake.d.ts +8 -0
  192. package/node_modules/@buddi/tool-email/dist/imap/fake.d.ts.map +1 -1
  193. package/node_modules/@buddi/tool-email/dist/imap/fake.js +15 -0
  194. package/node_modules/@buddi/tool-email/dist/imap/fake.js.map +1 -1
  195. package/node_modules/@buddi/tool-email/dist/imap/imapflow-client.d.ts.map +1 -1
  196. package/node_modules/@buddi/tool-email/dist/imap/imapflow-client.js +26 -17
  197. package/node_modules/@buddi/tool-email/dist/imap/imapflow-client.js.map +1 -1
  198. package/node_modules/@buddi/tool-email/dist/index.d.ts +5 -1
  199. package/node_modules/@buddi/tool-email/dist/index.d.ts.map +1 -1
  200. package/node_modules/@buddi/tool-email/dist/index.js +11 -3
  201. package/node_modules/@buddi/tool-email/dist/index.js.map +1 -1
  202. package/node_modules/@buddi/tool-email/dist/mail.d.ts.map +1 -1
  203. package/node_modules/@buddi/tool-email/dist/mail.js +4 -1
  204. package/node_modules/@buddi/tool-email/dist/mail.js.map +1 -1
  205. package/node_modules/@buddi/tool-email/dist/pages/index.d.ts +2 -1
  206. package/node_modules/@buddi/tool-email/dist/pages/index.d.ts.map +1 -1
  207. package/node_modules/@buddi/tool-email/dist/pages/index.js +2 -2
  208. package/node_modules/@buddi/tool-email/dist/pages/index.js.map +1 -1
  209. package/node_modules/@buddi/tool-email/dist/pages/queries.d.ts +3 -2
  210. package/node_modules/@buddi/tool-email/dist/pages/queries.d.ts.map +1 -1
  211. package/node_modules/@buddi/tool-email/dist/pages/queries.js +19 -7
  212. package/node_modules/@buddi/tool-email/dist/pages/queries.js.map +1 -1
  213. package/node_modules/@buddi/tool-email/dist/ports.d.ts +15 -0
  214. package/node_modules/@buddi/tool-email/dist/ports.d.ts.map +1 -1
  215. package/node_modules/@buddi/tool-email/dist/ports.js.map +1 -1
  216. package/node_modules/@buddi/tool-email/dist/sources/inbox-poll.d.ts +9 -1
  217. package/node_modules/@buddi/tool-email/dist/sources/inbox-poll.d.ts.map +1 -1
  218. package/node_modules/@buddi/tool-email/dist/sources/inbox-poll.js +1 -0
  219. package/node_modules/@buddi/tool-email/dist/sources/inbox-poll.js.map +1 -1
  220. package/node_modules/@buddi/tool-email/dist/text-cleanup.d.ts +69 -0
  221. package/node_modules/@buddi/tool-email/dist/text-cleanup.d.ts.map +1 -0
  222. package/node_modules/@buddi/tool-email/dist/text-cleanup.js +96 -0
  223. package/node_modules/@buddi/tool-email/dist/text-cleanup.js.map +1 -0
  224. package/node_modules/@buddi/tool-email/dist/text.d.ts +29 -0
  225. package/node_modules/@buddi/tool-email/dist/text.d.ts.map +1 -0
  226. package/node_modules/@buddi/tool-email/dist/text.js +153 -0
  227. package/node_modules/@buddi/tool-email/dist/text.js.map +1 -0
  228. package/node_modules/@buddi/tool-email/dist/worker.d.ts +64 -0
  229. package/node_modules/@buddi/tool-email/dist/worker.d.ts.map +1 -0
  230. package/node_modules/@buddi/tool-email/dist/worker.js +123 -0
  231. package/node_modules/@buddi/tool-email/dist/worker.js.map +1 -0
  232. package/node_modules/@buddi/tool-email/migrations/028_reading.sql +5 -2
  233. package/node_modules/@buddi/tool-host/dist/.tsbuildinfo +1 -1
  234. package/node_modules/@buddi/tool-mcp/dist/.tsbuildinfo +1 -1
  235. package/node_modules/@buddi/tool-memory/dist/.tsbuildinfo +1 -1
  236. package/node_modules/@buddi/tool-web/dist/.tsbuildinfo +1 -1
  237. package/node_modules/marked/bin/main.js +1 -1
  238. package/node_modules/marked/lib/marked.d.ts +7 -0
  239. package/node_modules/marked/lib/marked.esm.js +14 -14
  240. package/node_modules/marked/lib/marked.esm.js.map +3 -3
  241. package/node_modules/marked/lib/marked.umd.js +19 -19
  242. package/node_modules/marked/lib/marked.umd.js.map +3 -3
  243. package/node_modules/marked/man/marked.1 +1 -1
  244. package/node_modules/marked/package.json +1 -1
  245. package/node_modules/nanoid/README.md +3 -3
  246. package/node_modules/nanoid/index.browser.js +4 -5
  247. package/node_modules/nanoid/index.d.ts +3 -3
  248. package/node_modules/nanoid/index.js +2 -3
  249. package/node_modules/nanoid/nanoid.js +1 -1
  250. package/node_modules/nanoid/package.json +2 -2
  251. package/node_modules/nanoid/url-alphabet/index.js +1 -1
  252. package/package.json +2 -2
  253. package/packages/cli/dist/.tsbuildinfo +1 -1
  254. package/packages/cli/dist/mcp/tools.d.ts +3 -8
  255. package/packages/cli/dist/mcp/tools.d.ts.map +1 -1
  256. package/packages/cli/dist/mcp/tools.js +22 -4
  257. package/packages/cli/dist/mcp/tools.js.map +1 -1
  258. package/packages/core/dist/.tsbuildinfo +1 -1
  259. package/packages/core/dist/artifacts/orphans.d.ts +6 -4
  260. package/packages/core/dist/artifacts/orphans.d.ts.map +1 -1
  261. package/packages/core/dist/artifacts/orphans.js +10 -3
  262. package/packages/core/dist/artifacts/orphans.js.map +1 -1
  263. package/packages/core/dist/groups.d.ts +0 -9
  264. package/packages/core/dist/groups.d.ts.map +1 -1
  265. package/packages/core/dist/groups.js +13 -1
  266. package/packages/core/dist/groups.js.map +1 -1
  267. package/packages/core/dist/pages.d.ts +24 -1
  268. package/packages/core/dist/pages.d.ts.map +1 -1
  269. package/packages/core/dist/pages.js +61 -1
  270. package/packages/core/dist/pages.js.map +1 -1
  271. package/packages/core/dist/pending-input.d.ts +13 -2
  272. package/packages/core/dist/pending-input.d.ts.map +1 -1
  273. package/packages/core/dist/pending-input.js +57 -12
  274. package/packages/core/dist/pending-input.js.map +1 -1
  275. package/packages/core/dist/plugin/version.d.ts +1 -1
  276. package/packages/core/dist/plugin/version.js +1 -1
  277. package/packages/core/dist/tools.d.ts +6 -1
  278. package/packages/core/dist/tools.d.ts.map +1 -1
  279. package/packages/core/dist/tools.js.map +1 -1
  280. package/packages/core/dist/web-settings.d.ts +8 -0
  281. package/packages/core/dist/web-settings.d.ts.map +1 -1
  282. package/packages/core/dist/web-settings.js +14 -0
  283. package/packages/core/dist/web-settings.js.map +1 -1
  284. package/packages/core/migrations/078_pending_input_files.sql +8 -0
  285. package/packages/gateway/dist/.tsbuildinfo +1 -1
  286. package/packages/gateway/dist/agents/agent-intro.d.ts +31 -0
  287. package/packages/gateway/dist/agents/agent-intro.d.ts.map +1 -0
  288. package/packages/gateway/dist/agents/agent-intro.js +116 -0
  289. package/packages/gateway/dist/agents/agent-intro.js.map +1 -0
  290. package/packages/gateway/dist/agents/delegation.d.ts +10 -0
  291. package/packages/gateway/dist/agents/delegation.d.ts.map +1 -1
  292. package/packages/gateway/dist/agents/delegation.js +18 -1
  293. package/packages/gateway/dist/agents/delegation.js.map +1 -1
  294. package/packages/gateway/dist/agents/platform.d.ts +14 -1
  295. package/packages/gateway/dist/agents/platform.d.ts.map +1 -1
  296. package/packages/gateway/dist/agents/platform.js +44 -11
  297. package/packages/gateway/dist/agents/platform.js.map +1 -1
  298. package/packages/gateway/dist/bootstrap.d.ts.map +1 -1
  299. package/packages/gateway/dist/bootstrap.js +2 -0
  300. package/packages/gateway/dist/bootstrap.js.map +1 -1
  301. package/packages/gateway/dist/browser-host.d.ts.map +1 -1
  302. package/packages/gateway/dist/browser-host.js +1 -0
  303. package/packages/gateway/dist/browser-host.js.map +1 -1
  304. package/packages/gateway/dist/edition-origin.d.ts +57 -0
  305. package/packages/gateway/dist/edition-origin.d.ts.map +1 -0
  306. package/packages/gateway/dist/edition-origin.js +156 -0
  307. package/packages/gateway/dist/edition-origin.js.map +1 -0
  308. package/packages/gateway/dist/system-context.d.ts +9 -0
  309. package/packages/gateway/dist/system-context.d.ts.map +1 -1
  310. package/packages/gateway/dist/system-context.js +28 -2
  311. package/packages/gateway/dist/system-context.js.map +1 -1
  312. package/packages/gateway/dist/telegram/approvals.d.ts +6 -0
  313. package/packages/gateway/dist/telegram/approvals.d.ts.map +1 -1
  314. package/packages/gateway/dist/telegram/approvals.js +10 -2
  315. package/packages/gateway/dist/telegram/approvals.js.map +1 -1
  316. package/packages/gateway/dist/telegram/main.d.ts.map +1 -1
  317. package/packages/gateway/dist/telegram/main.js +10 -3
  318. package/packages/gateway/dist/telegram/main.js.map +1 -1
  319. package/packages/gateway/dist/telegram/outbound.d.ts +9 -0
  320. package/packages/gateway/dist/telegram/outbound.d.ts.map +1 -1
  321. package/packages/gateway/dist/telegram/outbound.js +43 -0
  322. package/packages/gateway/dist/telegram/outbound.js.map +1 -1
  323. package/packages/gateway/dist/telegram/surface.d.ts +2 -0
  324. package/packages/gateway/dist/telegram/surface.d.ts.map +1 -1
  325. package/packages/gateway/dist/telegram/surface.js +2 -1
  326. package/packages/gateway/dist/telegram/surface.js.map +1 -1
  327. package/packages/gateway/dist/tips/engine.d.ts +32 -0
  328. package/packages/gateway/dist/tips/engine.d.ts.map +1 -1
  329. package/packages/gateway/dist/tips/engine.js +69 -0
  330. package/packages/gateway/dist/tips/engine.js.map +1 -1
  331. package/packages/gateway/dist/tips/route.d.ts +1 -3
  332. package/packages/gateway/dist/tips/route.d.ts.map +1 -1
  333. package/packages/gateway/dist/tips/route.js +54 -30
  334. package/packages/gateway/dist/tips/route.js.map +1 -1
  335. package/packages/gateway/dist/web/agent-offers.d.ts +10 -1
  336. package/packages/gateway/dist/web/agent-offers.d.ts.map +1 -1
  337. package/packages/gateway/dist/web/agent-offers.js +14 -1
  338. package/packages/gateway/dist/web/agent-offers.js.map +1 -1
  339. package/packages/gateway/dist/web/api-routes.d.ts.map +1 -1
  340. package/packages/gateway/dist/web/api-routes.js +38 -7
  341. package/packages/gateway/dist/web/api-routes.js.map +1 -1
  342. package/packages/gateway/dist/web/approval-ask.d.ts +16 -0
  343. package/packages/gateway/dist/web/approval-ask.d.ts.map +1 -0
  344. package/packages/gateway/dist/web/approval-ask.js +51 -0
  345. package/packages/gateway/dist/web/approval-ask.js.map +1 -0
  346. package/packages/gateway/dist/web/attention.d.ts +37 -0
  347. package/packages/gateway/dist/web/attention.d.ts.map +1 -1
  348. package/packages/gateway/dist/web/attention.js +54 -10
  349. package/packages/gateway/dist/web/attention.js.map +1 -1
  350. package/packages/gateway/dist/web/canvas-tabs.d.ts +41 -0
  351. package/packages/gateway/dist/web/canvas-tabs.d.ts.map +1 -0
  352. package/packages/gateway/dist/web/canvas-tabs.js +68 -0
  353. package/packages/gateway/dist/web/canvas-tabs.js.map +1 -0
  354. package/packages/gateway/dist/web/chat.d.ts +6 -9
  355. package/packages/gateway/dist/web/chat.d.ts.map +1 -1
  356. package/packages/gateway/dist/web/chat.js +37 -19
  357. package/packages/gateway/dist/web/chat.js.map +1 -1
  358. package/packages/gateway/dist/web/extension.d.ts +11 -1
  359. package/packages/gateway/dist/web/extension.d.ts.map +1 -1
  360. package/packages/gateway/dist/web/extension.js +51 -0
  361. package/packages/gateway/dist/web/extension.js.map +1 -1
  362. package/packages/gateway/dist/web/live.d.ts +7 -0
  363. package/packages/gateway/dist/web/live.d.ts.map +1 -1
  364. package/packages/gateway/dist/web/live.js +12 -0
  365. package/packages/gateway/dist/web/live.js.map +1 -1
  366. package/packages/gateway/dist/web/pages.d.ts.map +1 -1
  367. package/packages/gateway/dist/web/pages.js +10 -1
  368. package/packages/gateway/dist/web/pages.js.map +1 -1
  369. package/packages/gateway/dist/web/server.d.ts +0 -4
  370. package/packages/gateway/dist/web/server.d.ts.map +1 -1
  371. package/packages/gateway/dist/web/server.js +102 -7
  372. package/packages/gateway/dist/web/server.js.map +1 -1
  373. package/packages/install/dist/.tsbuildinfo +1 -1
  374. package/packages/runtime/dist/.tsbuildinfo +1 -1
  375. package/packages/runtime/dist/codex-direct.d.ts +1 -1
  376. package/packages/runtime/dist/codex-direct.js +1 -1
  377. package/packages/runtime/dist/grounding.d.ts +54 -0
  378. package/packages/runtime/dist/grounding.d.ts.map +1 -0
  379. package/packages/runtime/dist/grounding.js +158 -0
  380. package/packages/runtime/dist/grounding.js.map +1 -0
  381. package/packages/runtime/dist/index.d.ts +1 -0
  382. package/packages/runtime/dist/index.d.ts.map +1 -1
  383. package/packages/runtime/dist/index.js +1 -0
  384. package/packages/runtime/dist/index.js.map +1 -1
  385. package/packages/runtime/dist/loop.d.ts +19 -0
  386. package/packages/runtime/dist/loop.d.ts.map +1 -1
  387. package/packages/runtime/dist/loop.js +123 -13
  388. package/packages/runtime/dist/loop.js.map +1 -1
  389. package/packages/tools/artifacts/dist/.tsbuildinfo +1 -1
  390. package/packages/tools/artifacts/dist/extract.d.ts +6 -0
  391. package/packages/tools/artifacts/dist/extract.d.ts.map +1 -1
  392. package/packages/tools/artifacts/dist/extract.js +6 -0
  393. package/packages/tools/artifacts/dist/extract.js.map +1 -1
  394. package/packages/tools/artifacts/dist/tools/artifacts.d.ts +1 -0
  395. package/packages/tools/artifacts/dist/tools/artifacts.d.ts.map +1 -1
  396. package/packages/tools/artifacts/dist/tools/artifacts.js +30 -8
  397. package/packages/tools/artifacts/dist/tools/artifacts.js.map +1 -1
  398. package/packages/tools/browser/dist/.tsbuildinfo +1 -1
  399. package/packages/tools/browser/dist/controller.d.ts +25 -0
  400. package/packages/tools/browser/dist/controller.d.ts.map +1 -1
  401. package/packages/tools/browser/dist/controller.js +25 -1
  402. package/packages/tools/browser/dist/controller.js.map +1 -1
  403. package/packages/tools/browser/dist/downloads.d.ts +138 -0
  404. package/packages/tools/browser/dist/downloads.d.ts.map +1 -0
  405. package/packages/tools/browser/dist/downloads.js +529 -0
  406. package/packages/tools/browser/dist/downloads.js.map +1 -0
  407. package/packages/tools/browser/dist/driver.d.ts +17 -1
  408. package/packages/tools/browser/dist/driver.d.ts.map +1 -1
  409. package/packages/tools/browser/dist/driver.js +48 -0
  410. package/packages/tools/browser/dist/driver.js.map +1 -1
  411. package/packages/tools/browser/dist/extension.d.ts +23 -0
  412. package/packages/tools/browser/dist/extension.d.ts.map +1 -1
  413. package/packages/tools/browser/dist/extension.js +20 -0
  414. package/packages/tools/browser/dist/extension.js.map +1 -1
  415. package/packages/tools/browser/dist/host.d.ts +3 -1
  416. package/packages/tools/browser/dist/host.d.ts.map +1 -1
  417. package/packages/tools/browser/dist/host.js +9 -2
  418. package/packages/tools/browser/dist/host.js.map +1 -1
  419. package/packages/tools/browser/dist/index.d.ts +7 -3
  420. package/packages/tools/browser/dist/index.d.ts.map +1 -1
  421. package/packages/tools/browser/dist/index.js +5 -3
  422. package/packages/tools/browser/dist/index.js.map +1 -1
  423. package/packages/tools/browser/dist/service.d.ts +28 -0
  424. package/packages/tools/browser/dist/service.d.ts.map +1 -1
  425. package/packages/tools/browser/dist/service.js +58 -1
  426. package/packages/tools/browser/dist/service.js.map +1 -1
  427. package/packages/tools/browser/dist/settings.d.ts +8 -0
  428. package/packages/tools/browser/dist/settings.d.ts.map +1 -1
  429. package/packages/tools/browser/dist/settings.js +9 -0
  430. package/packages/tools/browser/dist/settings.js.map +1 -1
  431. package/packages/tools/browser/dist/types.d.ts +31 -24
  432. package/packages/tools/browser/dist/types.d.ts.map +1 -1
  433. package/packages/tools/browser/dist/types.js.map +1 -1
  434. package/packages/tools/email/dist/.tsbuildinfo +1 -1
  435. package/packages/tools/email/dist/agent.d.ts +6 -1
  436. package/packages/tools/email/dist/agent.d.ts.map +1 -1
  437. package/packages/tools/email/dist/agent.js +6 -1
  438. package/packages/tools/email/dist/agent.js.map +1 -1
  439. package/packages/tools/email/dist/imap/fake.d.ts +8 -0
  440. package/packages/tools/email/dist/imap/fake.d.ts.map +1 -1
  441. package/packages/tools/email/dist/imap/fake.js +15 -0
  442. package/packages/tools/email/dist/imap/fake.js.map +1 -1
  443. package/packages/tools/email/dist/imap/imapflow-client.d.ts.map +1 -1
  444. package/packages/tools/email/dist/imap/imapflow-client.js +26 -17
  445. package/packages/tools/email/dist/imap/imapflow-client.js.map +1 -1
  446. package/packages/tools/email/dist/index.d.ts +5 -1
  447. package/packages/tools/email/dist/index.d.ts.map +1 -1
  448. package/packages/tools/email/dist/index.js +11 -3
  449. package/packages/tools/email/dist/index.js.map +1 -1
  450. package/packages/tools/email/dist/mail.d.ts.map +1 -1
  451. package/packages/tools/email/dist/mail.js +4 -1
  452. package/packages/tools/email/dist/mail.js.map +1 -1
  453. package/packages/tools/email/dist/pages/index.d.ts +2 -1
  454. package/packages/tools/email/dist/pages/index.d.ts.map +1 -1
  455. package/packages/tools/email/dist/pages/index.js +2 -2
  456. package/packages/tools/email/dist/pages/index.js.map +1 -1
  457. package/packages/tools/email/dist/pages/queries.d.ts +3 -2
  458. package/packages/tools/email/dist/pages/queries.d.ts.map +1 -1
  459. package/packages/tools/email/dist/pages/queries.js +19 -7
  460. package/packages/tools/email/dist/pages/queries.js.map +1 -1
  461. package/packages/tools/email/dist/ports.d.ts +15 -0
  462. package/packages/tools/email/dist/ports.d.ts.map +1 -1
  463. package/packages/tools/email/dist/ports.js.map +1 -1
  464. package/packages/tools/email/dist/sources/inbox-poll.d.ts +9 -1
  465. package/packages/tools/email/dist/sources/inbox-poll.d.ts.map +1 -1
  466. package/packages/tools/email/dist/sources/inbox-poll.js +1 -0
  467. package/packages/tools/email/dist/sources/inbox-poll.js.map +1 -1
  468. package/packages/tools/email/dist/text-cleanup.d.ts +69 -0
  469. package/packages/tools/email/dist/text-cleanup.d.ts.map +1 -0
  470. package/packages/tools/email/dist/text-cleanup.js +96 -0
  471. package/packages/tools/email/dist/text-cleanup.js.map +1 -0
  472. package/packages/tools/email/dist/text.d.ts +29 -0
  473. package/packages/tools/email/dist/text.d.ts.map +1 -0
  474. package/packages/tools/email/dist/text.js +153 -0
  475. package/packages/tools/email/dist/text.js.map +1 -0
  476. package/packages/tools/email/dist/worker.d.ts +64 -0
  477. package/packages/tools/email/dist/worker.d.ts.map +1 -0
  478. package/packages/tools/email/dist/worker.js +123 -0
  479. package/packages/tools/email/dist/worker.js.map +1 -0
  480. package/packages/tools/email/migrations/028_reading.sql +5 -2
  481. package/packages/tools/host/dist/.tsbuildinfo +1 -1
  482. package/packages/tools/mcp/dist/.tsbuildinfo +1 -1
  483. package/packages/tools/memory/dist/.tsbuildinfo +1 -1
  484. package/packages/tools/web/dist/.tsbuildinfo +1 -1
  485. package/packages/web/dist/assets/index-C2yWZED2.css +1 -0
  486. package/packages/web/dist/assets/index-CIhME8Ui.js +150 -0
  487. package/packages/web/dist/assets/{lottie_light-DnYl9yaP.js → lottie_light-CVXFbeEK.js} +1 -1
  488. package/packages/web/dist/build.json +1 -1
  489. package/packages/web/dist/index.html +2 -2
  490. package/packages/web/dist/precache.json +4 -4
  491. package/packages/web/dist/assets/index-C1sRt7zd.js +0 -149
  492. package/packages/web/dist/assets/index-CdZpSJ4_.css +0 -1
@@ -910,6 +910,7 @@ function fieldFacts(read) {
910
910
  function fieldObservation(read) {
911
911
  return { field: fieldFacts(read) };
912
912
  }
913
+ var DOWNLOAD_COMMANDS = /* @__PURE__ */ new Set(["navigate", "click", "press", "select", "fill"]);
913
914
  var BrowserCommands = class {
914
915
  #chrome;
915
916
  #sessions = /* @__PURE__ */ new Map();
@@ -936,6 +937,7 @@ var BrowserCommands = class {
936
937
  #ownerWaitMs;
937
938
  constructor(chrome2, options = {}) {
938
939
  this.#chrome = chrome2;
940
+ this.downloads = options.downloads;
939
941
  this.logins = new HeldLogins(options.onLogin ?? (() => void 0));
940
942
  chrome2.tabs.onRemoved?.addListener((tabId) => this.logins.clearTab(tabId));
941
943
  this.#onEvent = options.onEvent ?? (() => void 0);
@@ -959,8 +961,32 @@ var BrowserCommands = class {
959
961
  this.#uuid = options.uuid ?? (() => crypto.randomUUID());
960
962
  this.#contentFile = options.contentFile ?? "content.js";
961
963
  }
964
+ /** Downloads an agent's command starts, noticed while it runs (and a few seconds after). */
965
+ downloads;
966
+ /** The addresses of a session's tabs, for telling its downloads from the owner's. */
967
+ async #tabUrls(name) {
968
+ const session = this.#sessions.get(name);
969
+ if (!session) return [];
970
+ const urls = [];
971
+ for (const tabId of session.tabs.values()) {
972
+ const tab = await this.#chrome.tabs.get(tabId).catch(() => void 0);
973
+ if (tab?.url) urls.push(tab.url);
974
+ }
975
+ return urls;
976
+ }
962
977
  async run(command, cancel = new Cancellation()) {
963
978
  cancel.check();
979
+ if (this.downloads?.attached && !command.owner && DOWNLOAD_COMMANDS.has(command.name)) {
980
+ const action = this.downloads.begin(command.session, await this.#tabUrls(command.session));
981
+ try {
982
+ return await this.#dispatch(command, cancel);
983
+ } finally {
984
+ this.downloads.end(action, await this.#tabUrls(command.session).catch(() => []));
985
+ }
986
+ }
987
+ return this.#dispatch(command, cancel);
988
+ }
989
+ async #dispatch(command, cancel) {
964
990
  switch (command.name) {
965
991
  case "navigate":
966
992
  return this.#navigate(command, cancel);
@@ -1017,6 +1043,7 @@ var BrowserCommands = class {
1017
1043
  this.#held.clear();
1018
1044
  this.#heldLogins.clear();
1019
1045
  this.logins.clear();
1046
+ this.downloads?.forget();
1020
1047
  }
1021
1048
  /* ---- take-over in place ---- */
1022
1049
  /**
@@ -1365,6 +1392,7 @@ var BrowserCommands = class {
1365
1392
  }
1366
1393
  this.#sessions.delete(command.session);
1367
1394
  this.#refs.delete(command.session);
1395
+ this.downloads?.forget(command.session);
1368
1396
  return {};
1369
1397
  }
1370
1398
  /** The owner may have closed or adopted an agent tab; a session forgets those before it reports. */
@@ -1953,6 +1981,126 @@ function heldLoginFacts(raw) {
1953
1981
  return { never: sites, saved: kept };
1954
1982
  }
1955
1983
 
1984
+ // src/downloads.ts
1985
+ var DOWNLOAD_GRACE_MS = 15e3;
1986
+ var DOWNLOADS_PERMISSION = "downloads";
1987
+ function originOf(url) {
1988
+ if (!url) return void 0;
1989
+ try {
1990
+ const parsed = new URL(url);
1991
+ if (parsed.protocol === "blob:") return new URL(parsed.pathname).origin;
1992
+ return parsed.protocol === "http:" || parsed.protocol === "https:" ? parsed.origin : void 0;
1993
+ } catch {
1994
+ return void 0;
1995
+ }
1996
+ }
1997
+ function basename(file) {
1998
+ return file.split(/[\\/]/).pop() || "download";
1999
+ }
2000
+ var AgentDownloads = class {
2001
+ #actions = /* @__PURE__ */ new Map();
2002
+ #next = 1;
2003
+ #claimed = /* @__PURE__ */ new Map();
2004
+ #api;
2005
+ #send;
2006
+ #now;
2007
+ constructor(options) {
2008
+ this.#send = options.send;
2009
+ this.#now = options.now ?? (() => Date.now());
2010
+ }
2011
+ /** Chrome's downloads API, once the owner granted it. Listening starts here, once. */
2012
+ attach(api) {
2013
+ if (!api || this.#api) return;
2014
+ this.#api = api;
2015
+ api.onCreated.addListener((item) => this.created(item));
2016
+ api.onChanged.addListener((delta) => {
2017
+ void this.changed(delta).catch(() => void 0);
2018
+ });
2019
+ }
2020
+ get attached() {
2021
+ return this.#api !== void 0;
2022
+ }
2023
+ /** An agent command starts in this session, whose tabs are on these addresses. Returns the command's handle for `end`. */
2024
+ begin(session, urls) {
2025
+ this.#expire();
2026
+ const id = this.#next++;
2027
+ const origins = /* @__PURE__ */ new Set();
2028
+ for (const url of urls) {
2029
+ const origin = originOf(url);
2030
+ if (origin) origins.add(origin);
2031
+ }
2032
+ this.#actions.set(id, { session, origins, running: true, until: 0, at: this.#now() });
2033
+ return id;
2034
+ }
2035
+ /** That command ended; its tabs may have moved on to these. Its downloads still count for a few seconds, its own. */
2036
+ end(id, urls = []) {
2037
+ const action = this.#actions.get(id);
2038
+ if (!action) return;
2039
+ for (const url of urls) {
2040
+ const origin = originOf(url);
2041
+ if (origin) action.origins.add(origin);
2042
+ }
2043
+ action.running = false;
2044
+ action.until = this.#now() + DOWNLOAD_GRACE_MS;
2045
+ }
2046
+ /** Commands whose few seconds are over count for nothing any more. */
2047
+ #expire() {
2048
+ const now = this.#now();
2049
+ for (const [id, action] of this.#actions) if (!action.running && now > action.until) this.#actions.delete(id);
2050
+ }
2051
+ /** The session ended or the socket went: nothing more is its. */
2052
+ forget(session) {
2053
+ if (session === void 0) {
2054
+ this.#actions.clear();
2055
+ this.#claimed.clear();
2056
+ return;
2057
+ }
2058
+ for (const [id, action] of this.#actions) if (action.session === session) this.#actions.delete(id);
2059
+ for (const [id, owner] of this.#claimed) if (owner === session) this.#claimed.delete(id);
2060
+ }
2061
+ /** Which session's command this download belongs to, if any. */
2062
+ #owner(item) {
2063
+ if (item.byExtensionId) return void 0;
2064
+ const origin = originOf(item.referrer) ?? originOf(item.finalUrl ?? item.url);
2065
+ if (!origin) return void 0;
2066
+ this.#expire();
2067
+ let best;
2068
+ for (const action of this.#actions.values()) {
2069
+ if (!action.origins.has(origin)) continue;
2070
+ if (!best || action.at > best.at) best = action;
2071
+ }
2072
+ return best?.session;
2073
+ }
2074
+ created(item) {
2075
+ const session = this.#owner(item);
2076
+ if (session) this.#claimed.set(item.id, session);
2077
+ }
2078
+ async changed(delta) {
2079
+ const session = this.#claimed.get(delta.id);
2080
+ const state = delta.state?.current;
2081
+ if (!session || !state) return;
2082
+ if (state === "interrupted") {
2083
+ this.#claimed.delete(delta.id);
2084
+ return;
2085
+ }
2086
+ if (state !== "complete") return;
2087
+ this.#claimed.delete(delta.id);
2088
+ const [item] = await (this.#api?.search({ id: delta.id }) ?? Promise.resolve([]));
2089
+ if (!item?.filename) return;
2090
+ const url = item.finalUrl || item.url || "";
2091
+ const size = item.fileSize !== void 0 && item.fileSize >= 0 ? item.fileSize : item.totalBytes !== void 0 && item.totalBytes >= 0 ? item.totalBytes : void 0;
2092
+ this.#send({
2093
+ type: "download",
2094
+ session,
2095
+ path: item.filename,
2096
+ filename: basename(item.filename),
2097
+ url,
2098
+ ...item.mime ? { mime: item.mime } : {},
2099
+ ...size !== void 0 ? { size } : {}
2100
+ });
2101
+ }
2102
+ };
2103
+
1956
2104
  // src/external.ts
1957
2105
  function isLoopbackOrigin(origin) {
1958
2106
  if (!origin) return false;
@@ -2028,7 +2176,15 @@ function flush(open) {
2028
2176
  }
2029
2177
  }
2030
2178
  }
2031
- var commands = new BrowserCommands(chrome, { onFrame: send, onEvent: send, onLogin: send });
2179
+ var downloads = new AgentDownloads({ send });
2180
+ var attachDownloads = () => {
2181
+ if (chrome.downloads) downloads.attach(chrome.downloads);
2182
+ };
2183
+ attachDownloads();
2184
+ chrome.permissions?.onAdded?.addListener((added) => {
2185
+ if (added.permissions?.includes(DOWNLOADS_PERMISSION)) attachDownloads();
2186
+ });
2187
+ var commands = new BrowserCommands(chrome, { onFrame: send, onEvent: send, onLogin: send, downloads });
2032
2188
  var attempt = 0;
2033
2189
  var timer;
2034
2190
  var silence;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "manifest_version": 3,
3
3
  "name": "buddi",
4
- "version": "0.1.0.44",
4
+ "version": "0.1.0.46",
5
5
  "description": "Lets your buddi work in background tabs of this browser. The sites it opens are the ones you ask it for; it opens none on its own.",
6
6
  "minimum_chrome_version": "116",
7
7
  "key": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwR4JT/OlKKPcZQ33euO9mSv7RrSIWNVanldhT2Uzc9YfzF/X0lg5NfXLc+G/UGFjB8v+uMCbpMhRBZ2SVwDHQH3buv3VEUzuOIDTPHgv99T5lq5imZrDxmIE+EL/fWrsjhcXaIB4e4fn0tJqw6ivJUGmYpG5XhWn65nlLniHfFBKMpZ/y7bVnvfzAgMQUa13qTAVxPTpMRtNl/flQq4Q/vWYm28H7W7OzygDV+/4X2azUrB8yPk67QsipbdDLxiX2GMxjXuKK6iD5CQiytoxTsAqUzB886HbOZsxJfQpRIjrUgBmGjLyaKuz617ZGJW9zS23LmnlL6mkX3+ggca1AQIDAQAB",
@@ -13,6 +13,9 @@
13
13
  "storage",
14
14
  "alarms"
15
15
  ],
16
+ "optional_permissions": [
17
+ "downloads"
18
+ ],
16
19
  "host_permissions": [
17
20
  "http://*/*",
18
21
  "https://*/*"
@@ -42,5 +45,5 @@
42
45
  "48": "icons/48.png",
43
46
  "128": "icons/128.png"
44
47
  },
45
- "version_name": "0.1.0-pre.44"
48
+ "version_name": "0.1.0-pre.46"
46
49
  }
@@ -46,7 +46,11 @@
46
46
  <p class="fact" id="paired-to"></p>
47
47
  <p class="quiet" id="working">Nothing open right now.</p>
48
48
  </div>
49
+ <div class="facts" id="downloads-box" hidden>
50
+ <p class="quiet" id="downloads-note">Let agents hand buddi the files they download in your Chrome, like a bank statement. Only downloads an agent's click starts are read; yours are never touched.</p>
51
+ </div>
49
52
  <div class="actions">
53
+ <button class="btn" id="allow-downloads" type="button" hidden>Allow downloads</button>
50
54
  <button class="btn" id="open-buddi" type="button">Open buddi</button>
51
55
  </div>
52
56
  <footer class="foot">
@@ -1,3 +1,6 @@
1
+ // src/downloads.ts
2
+ var DOWNLOADS_PERMISSION = "downloads";
3
+
1
4
  // src/popup.ts
2
5
  var SETTINGS_HASH = "#/settings/computer";
3
6
  var PILL = {
@@ -125,6 +128,19 @@ function wireCopy(button, read) {
125
128
  })();
126
129
  });
127
130
  }
131
+ async function wireDownloads(doc, permissions) {
132
+ const box = byId(doc, "downloads-box");
133
+ const button = byId(doc, "allow-downloads");
134
+ if (!permissions || !box || !button) return;
135
+ const show = (granted) => {
136
+ box.hidden = granted;
137
+ button.hidden = granted;
138
+ };
139
+ show(await permissions.contains({ permissions: [DOWNLOADS_PERMISSION] }).catch(() => true));
140
+ button.addEventListener("click", () => {
141
+ void permissions.request({ permissions: [DOWNLOADS_PERMISSION] }).then(show, () => void 0);
142
+ });
143
+ }
128
144
  async function countBuddiTabs(api) {
129
145
  try {
130
146
  const groups = new Set((await api.tabGroups.query({ title: "buddi" })).map((group) => group.id));
@@ -229,6 +245,7 @@ async function main() {
229
245
  });
230
246
  });
231
247
  byId(document, "open-buddi").addEventListener("click", () => open(""));
248
+ void wireDownloads(document, chrome.permissions);
232
249
  byId(document, "forget").addEventListener("click", async () => {
233
250
  const answer = await ask({ type: "buddi-forget" });
234
251
  if (answer?.state) {
@@ -253,5 +270,6 @@ export {
253
270
  triesApp,
254
271
  viewOf,
255
272
  wireCopy,
273
+ wireDownloads,
256
274
  workingLine
257
275
  };