@withbuddi/buddi 0.1.0-pre.40 → 0.1.0-pre.42

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 (302) hide show
  1. package/extension/background.js +11 -0
  2. package/extension/manifest.json +2 -2
  3. package/extension/popup.html +1 -1
  4. package/extension/popup.js +83 -1
  5. package/node_modules/@buddi/cli/dist/.tsbuildinfo +1 -1
  6. package/node_modules/@buddi/cli/dist/args.d.ts +2 -0
  7. package/node_modules/@buddi/cli/dist/args.d.ts.map +1 -1
  8. package/node_modules/@buddi/cli/dist/args.js +11 -2
  9. package/node_modules/@buddi/cli/dist/args.js.map +1 -1
  10. package/node_modules/@buddi/cli/dist/backup/index.d.ts +3 -1
  11. package/node_modules/@buddi/cli/dist/backup/index.d.ts.map +1 -1
  12. package/node_modules/@buddi/cli/dist/backup/index.js +16 -1
  13. package/node_modules/@buddi/cli/dist/backup/index.js.map +1 -1
  14. package/node_modules/@buddi/cli/dist/commands.d.ts.map +1 -1
  15. package/node_modules/@buddi/cli/dist/commands.js +6 -4
  16. package/node_modules/@buddi/cli/dist/commands.js.map +1 -1
  17. package/node_modules/@buddi/cli/dist/main.d.ts +4 -1
  18. package/node_modules/@buddi/cli/dist/main.d.ts.map +1 -1
  19. package/node_modules/@buddi/cli/dist/main.js +41 -3
  20. package/node_modules/@buddi/cli/dist/main.js.map +1 -1
  21. package/node_modules/@buddi/cli/dist/mode.d.ts +41 -0
  22. package/node_modules/@buddi/cli/dist/mode.d.ts.map +1 -0
  23. package/node_modules/@buddi/cli/dist/mode.js +103 -0
  24. package/node_modules/@buddi/cli/dist/mode.js.map +1 -0
  25. package/node_modules/@buddi/cli/dist/paths.d.ts +13 -1
  26. package/node_modules/@buddi/cli/dist/paths.d.ts.map +1 -1
  27. package/node_modules/@buddi/cli/dist/paths.js +23 -2
  28. package/node_modules/@buddi/cli/dist/paths.js.map +1 -1
  29. package/node_modules/@buddi/cli/dist/uninstall-cmd.d.ts +12 -2
  30. package/node_modules/@buddi/cli/dist/uninstall-cmd.d.ts.map +1 -1
  31. package/node_modules/@buddi/cli/dist/uninstall-cmd.js +63 -12
  32. package/node_modules/@buddi/cli/dist/uninstall-cmd.js.map +1 -1
  33. package/node_modules/@buddi/cli/dist/vault-cmd.d.ts +3 -0
  34. package/node_modules/@buddi/cli/dist/vault-cmd.d.ts.map +1 -1
  35. package/node_modules/@buddi/cli/dist/vault-cmd.js +26 -5
  36. package/node_modules/@buddi/cli/dist/vault-cmd.js.map +1 -1
  37. package/node_modules/@buddi/cli/package.json +4 -0
  38. package/node_modules/@buddi/core/dist/.tsbuildinfo +1 -1
  39. package/node_modules/@buddi/core/dist/uninstall.d.ts +18 -0
  40. package/node_modules/@buddi/core/dist/uninstall.d.ts.map +1 -1
  41. package/node_modules/@buddi/core/dist/uninstall.js +47 -0
  42. package/node_modules/@buddi/core/dist/uninstall.js.map +1 -1
  43. package/node_modules/@buddi/gateway/dist/.tsbuildinfo +1 -1
  44. package/node_modules/@buddi/gateway/dist/codex-accounts.d.ts +2 -0
  45. package/node_modules/@buddi/gateway/dist/codex-accounts.d.ts.map +1 -1
  46. package/node_modules/@buddi/gateway/dist/codex-accounts.js +4 -4
  47. package/node_modules/@buddi/gateway/dist/codex-accounts.js.map +1 -1
  48. package/node_modules/@buddi/gateway/dist/serve.d.ts.map +1 -1
  49. package/node_modules/@buddi/gateway/dist/serve.js +31 -0
  50. package/node_modules/@buddi/gateway/dist/serve.js.map +1 -1
  51. package/node_modules/@buddi/gateway/dist/web/api-routes.d.ts.map +1 -1
  52. package/node_modules/@buddi/gateway/dist/web/api-routes.js +23 -3
  53. package/node_modules/@buddi/gateway/dist/web/api-routes.js.map +1 -1
  54. package/node_modules/@buddi/gateway/dist/web/cli-tool.d.ts +11 -0
  55. package/node_modules/@buddi/gateway/dist/web/cli-tool.d.ts.map +1 -0
  56. package/node_modules/@buddi/gateway/dist/web/cli-tool.js +27 -0
  57. package/node_modules/@buddi/gateway/dist/web/cli-tool.js.map +1 -0
  58. package/node_modules/@buddi/gateway/dist/web/extension.d.ts +37 -0
  59. package/node_modules/@buddi/gateway/dist/web/extension.d.ts.map +1 -1
  60. package/node_modules/@buddi/gateway/dist/web/extension.js +138 -11
  61. package/node_modules/@buddi/gateway/dist/web/extension.js.map +1 -1
  62. package/node_modules/@buddi/gateway/dist/web/lock.d.ts +18 -0
  63. package/node_modules/@buddi/gateway/dist/web/lock.d.ts.map +1 -1
  64. package/node_modules/@buddi/gateway/dist/web/lock.js +17 -2
  65. package/node_modules/@buddi/gateway/dist/web/lock.js.map +1 -1
  66. package/node_modules/@buddi/gateway/dist/web/onboarding.d.ts +19 -2
  67. package/node_modules/@buddi/gateway/dist/web/onboarding.d.ts.map +1 -1
  68. package/node_modules/@buddi/gateway/dist/web/onboarding.js +9 -2
  69. package/node_modules/@buddi/gateway/dist/web/onboarding.js.map +1 -1
  70. package/node_modules/@buddi/gateway/dist/web/passphrase-notice.d.ts +64 -0
  71. package/node_modules/@buddi/gateway/dist/web/passphrase-notice.d.ts.map +1 -0
  72. package/node_modules/@buddi/gateway/dist/web/passphrase-notice.js +112 -0
  73. package/node_modules/@buddi/gateway/dist/web/passphrase-notice.js.map +1 -0
  74. package/node_modules/@buddi/gateway/dist/web/server.d.ts.map +1 -1
  75. package/node_modules/@buddi/gateway/dist/web/server.js +75 -7
  76. package/node_modules/@buddi/gateway/dist/web/server.js.map +1 -1
  77. package/node_modules/@buddi/gateway/dist/web/signed-out.d.ts +19 -0
  78. package/node_modules/@buddi/gateway/dist/web/signed-out.d.ts.map +1 -1
  79. package/node_modules/@buddi/gateway/dist/web/signed-out.js +61 -3
  80. package/node_modules/@buddi/gateway/dist/web/signed-out.js.map +1 -1
  81. package/node_modules/@buddi/gateway/dist/web/take-on.d.ts +28 -3
  82. package/node_modules/@buddi/gateway/dist/web/take-on.d.ts.map +1 -1
  83. package/node_modules/@buddi/gateway/dist/web/take-on.js +48 -3
  84. package/node_modules/@buddi/gateway/dist/web/take-on.js.map +1 -1
  85. package/node_modules/@buddi/gateway/dist/web/uninstall.d.ts +36 -0
  86. package/node_modules/@buddi/gateway/dist/web/uninstall.d.ts.map +1 -0
  87. package/node_modules/@buddi/gateway/dist/web/uninstall.js +116 -0
  88. package/node_modules/@buddi/gateway/dist/web/uninstall.js.map +1 -0
  89. package/node_modules/@buddi/gateway/dist/web/widgets.d.ts +2 -0
  90. package/node_modules/@buddi/gateway/dist/web/widgets.d.ts.map +1 -1
  91. package/node_modules/@buddi/gateway/dist/web/widgets.js +47 -13
  92. package/node_modules/@buddi/gateway/dist/web/widgets.js.map +1 -1
  93. package/node_modules/@buddi/install/dist/.tsbuildinfo +1 -1
  94. package/node_modules/@buddi/install/dist/app-layout.d.ts +4 -0
  95. package/node_modules/@buddi/install/dist/app-layout.d.ts.map +1 -1
  96. package/node_modules/@buddi/install/dist/app-layout.js +6 -0
  97. package/node_modules/@buddi/install/dist/app-layout.js.map +1 -1
  98. package/node_modules/@buddi/install/dist/cli-shim.d.ts +78 -0
  99. package/node_modules/@buddi/install/dist/cli-shim.d.ts.map +1 -0
  100. package/node_modules/@buddi/install/dist/cli-shim.js +219 -0
  101. package/node_modules/@buddi/install/dist/cli-shim.js.map +1 -0
  102. package/node_modules/@buddi/install/dist/doctor-timezone.js +1 -1
  103. package/node_modules/@buddi/install/dist/doctor-timezone.js.map +1 -1
  104. package/node_modules/@buddi/install/dist/environment.d.ts +90 -1
  105. package/node_modules/@buddi/install/dist/environment.d.ts.map +1 -1
  106. package/node_modules/@buddi/install/dist/environment.js +216 -3
  107. package/node_modules/@buddi/install/dist/environment.js.map +1 -1
  108. package/node_modules/@buddi/install/dist/kept-data.d.ts.map +1 -1
  109. package/node_modules/@buddi/install/dist/kept-data.js +3 -1
  110. package/node_modules/@buddi/install/dist/kept-data.js.map +1 -1
  111. package/node_modules/@buddi/install/dist/launcher.d.ts.map +1 -1
  112. package/node_modules/@buddi/install/dist/launcher.js +231 -6
  113. package/node_modules/@buddi/install/dist/launcher.js.map +1 -1
  114. package/node_modules/@buddi/install/dist/product-uninstall.d.ts +86 -0
  115. package/node_modules/@buddi/install/dist/product-uninstall.d.ts.map +1 -0
  116. package/node_modules/@buddi/install/dist/product-uninstall.js +150 -0
  117. package/node_modules/@buddi/install/dist/product-uninstall.js.map +1 -0
  118. package/node_modules/@buddi/install/dist/supervisor.d.ts +59 -1
  119. package/node_modules/@buddi/install/dist/supervisor.d.ts.map +1 -1
  120. package/node_modules/@buddi/install/dist/supervisor.js +288 -19
  121. package/node_modules/@buddi/install/dist/supervisor.js.map +1 -1
  122. package/node_modules/@buddi/install/dist/uninstall.d.ts +37 -1
  123. package/node_modules/@buddi/install/dist/uninstall.d.ts.map +1 -1
  124. package/node_modules/@buddi/install/dist/uninstall.js +150 -38
  125. package/node_modules/@buddi/install/dist/uninstall.js.map +1 -1
  126. package/node_modules/@buddi/runtime/dist/.tsbuildinfo +1 -1
  127. package/node_modules/@buddi/runtime/dist/codex-oauth.d.ts +6 -0
  128. package/node_modules/@buddi/runtime/dist/codex-oauth.d.ts.map +1 -1
  129. package/node_modules/@buddi/runtime/dist/codex-oauth.js +15 -0
  130. package/node_modules/@buddi/runtime/dist/codex-oauth.js.map +1 -1
  131. package/node_modules/@buddi/runtime/dist/openai.d.ts +9 -2
  132. package/node_modules/@buddi/runtime/dist/openai.d.ts.map +1 -1
  133. package/node_modules/@buddi/runtime/dist/openai.js +117 -16
  134. package/node_modules/@buddi/runtime/dist/openai.js.map +1 -1
  135. package/node_modules/@buddi/tool-browser/dist/.tsbuildinfo +1 -1
  136. package/node_modules/@buddi/tool-browser/dist/availability.d.ts +2 -2
  137. package/node_modules/@buddi/tool-browser/dist/availability.d.ts.map +1 -1
  138. package/node_modules/@buddi/tool-browser/dist/availability.js +2 -2
  139. package/node_modules/@buddi/tool-browser/dist/availability.js.map +1 -1
  140. package/node_modules/@buddi/tool-browser/dist/controller.d.ts +1 -1
  141. package/node_modules/@buddi/tool-browser/dist/controller.d.ts.map +1 -1
  142. package/node_modules/@buddi/tool-browser/dist/controller.js +1 -1
  143. package/node_modules/@buddi/tool-browser/dist/controller.js.map +1 -1
  144. package/node_modules/@zone-eu/mailsplit/package.json +4 -4
  145. package/node_modules/imapflow/CHANGELOG.md +7 -0
  146. package/node_modules/imapflow/dist/cjs/package-info.d.ts +1 -1
  147. package/node_modules/imapflow/dist/cjs/package-info.js +1 -1
  148. package/node_modules/imapflow/dist/esm/package-info.d.ts +1 -1
  149. package/node_modules/imapflow/dist/esm/package-info.js +1 -1
  150. package/node_modules/imapflow/package.json +4 -4
  151. package/node_modules/libbase64/CHANGELOG.md +7 -0
  152. package/node_modules/libbase64/lib/libbase64.js +110 -58
  153. package/node_modules/libbase64/package.json +1 -1
  154. package/node_modules/libmime/CHANGELOG.md +7 -0
  155. package/node_modules/libmime/package.json +2 -2
  156. package/package.json +2 -2
  157. package/packages/cli/dist/.tsbuildinfo +1 -1
  158. package/packages/cli/dist/args.d.ts +2 -0
  159. package/packages/cli/dist/args.d.ts.map +1 -1
  160. package/packages/cli/dist/args.js +11 -2
  161. package/packages/cli/dist/args.js.map +1 -1
  162. package/packages/cli/dist/backup/index.d.ts +3 -1
  163. package/packages/cli/dist/backup/index.d.ts.map +1 -1
  164. package/packages/cli/dist/backup/index.js +16 -1
  165. package/packages/cli/dist/backup/index.js.map +1 -1
  166. package/packages/cli/dist/commands.d.ts.map +1 -1
  167. package/packages/cli/dist/commands.js +6 -4
  168. package/packages/cli/dist/commands.js.map +1 -1
  169. package/packages/cli/dist/main.d.ts +4 -1
  170. package/packages/cli/dist/main.d.ts.map +1 -1
  171. package/packages/cli/dist/main.js +41 -3
  172. package/packages/cli/dist/main.js.map +1 -1
  173. package/packages/cli/dist/mode.d.ts +41 -0
  174. package/packages/cli/dist/mode.d.ts.map +1 -0
  175. package/packages/cli/dist/mode.js +103 -0
  176. package/packages/cli/dist/mode.js.map +1 -0
  177. package/packages/cli/dist/paths.d.ts +13 -1
  178. package/packages/cli/dist/paths.d.ts.map +1 -1
  179. package/packages/cli/dist/paths.js +23 -2
  180. package/packages/cli/dist/paths.js.map +1 -1
  181. package/packages/cli/dist/uninstall-cmd.d.ts +12 -2
  182. package/packages/cli/dist/uninstall-cmd.d.ts.map +1 -1
  183. package/packages/cli/dist/uninstall-cmd.js +63 -12
  184. package/packages/cli/dist/uninstall-cmd.js.map +1 -1
  185. package/packages/cli/dist/vault-cmd.d.ts +3 -0
  186. package/packages/cli/dist/vault-cmd.d.ts.map +1 -1
  187. package/packages/cli/dist/vault-cmd.js +26 -5
  188. package/packages/cli/dist/vault-cmd.js.map +1 -1
  189. package/packages/cli/package.json +4 -0
  190. package/packages/core/dist/.tsbuildinfo +1 -1
  191. package/packages/core/dist/uninstall.d.ts +18 -0
  192. package/packages/core/dist/uninstall.d.ts.map +1 -1
  193. package/packages/core/dist/uninstall.js +47 -0
  194. package/packages/core/dist/uninstall.js.map +1 -1
  195. package/packages/gateway/dist/.tsbuildinfo +1 -1
  196. package/packages/gateway/dist/codex-accounts.d.ts +2 -0
  197. package/packages/gateway/dist/codex-accounts.d.ts.map +1 -1
  198. package/packages/gateway/dist/codex-accounts.js +4 -4
  199. package/packages/gateway/dist/codex-accounts.js.map +1 -1
  200. package/packages/gateway/dist/serve.d.ts.map +1 -1
  201. package/packages/gateway/dist/serve.js +31 -0
  202. package/packages/gateway/dist/serve.js.map +1 -1
  203. package/packages/gateway/dist/web/api-routes.d.ts.map +1 -1
  204. package/packages/gateway/dist/web/api-routes.js +23 -3
  205. package/packages/gateway/dist/web/api-routes.js.map +1 -1
  206. package/packages/gateway/dist/web/cli-tool.d.ts +11 -0
  207. package/packages/gateway/dist/web/cli-tool.d.ts.map +1 -0
  208. package/packages/gateway/dist/web/cli-tool.js +27 -0
  209. package/packages/gateway/dist/web/cli-tool.js.map +1 -0
  210. package/packages/gateway/dist/web/extension.d.ts +37 -0
  211. package/packages/gateway/dist/web/extension.d.ts.map +1 -1
  212. package/packages/gateway/dist/web/extension.js +138 -11
  213. package/packages/gateway/dist/web/extension.js.map +1 -1
  214. package/packages/gateway/dist/web/lock.d.ts +18 -0
  215. package/packages/gateway/dist/web/lock.d.ts.map +1 -1
  216. package/packages/gateway/dist/web/lock.js +17 -2
  217. package/packages/gateway/dist/web/lock.js.map +1 -1
  218. package/packages/gateway/dist/web/onboarding.d.ts +19 -2
  219. package/packages/gateway/dist/web/onboarding.d.ts.map +1 -1
  220. package/packages/gateway/dist/web/onboarding.js +9 -2
  221. package/packages/gateway/dist/web/onboarding.js.map +1 -1
  222. package/packages/gateway/dist/web/passphrase-notice.d.ts +64 -0
  223. package/packages/gateway/dist/web/passphrase-notice.d.ts.map +1 -0
  224. package/packages/gateway/dist/web/passphrase-notice.js +112 -0
  225. package/packages/gateway/dist/web/passphrase-notice.js.map +1 -0
  226. package/packages/gateway/dist/web/server.d.ts.map +1 -1
  227. package/packages/gateway/dist/web/server.js +75 -7
  228. package/packages/gateway/dist/web/server.js.map +1 -1
  229. package/packages/gateway/dist/web/signed-out.d.ts +19 -0
  230. package/packages/gateway/dist/web/signed-out.d.ts.map +1 -1
  231. package/packages/gateway/dist/web/signed-out.js +61 -3
  232. package/packages/gateway/dist/web/signed-out.js.map +1 -1
  233. package/packages/gateway/dist/web/take-on.d.ts +28 -3
  234. package/packages/gateway/dist/web/take-on.d.ts.map +1 -1
  235. package/packages/gateway/dist/web/take-on.js +48 -3
  236. package/packages/gateway/dist/web/take-on.js.map +1 -1
  237. package/packages/gateway/dist/web/uninstall.d.ts +36 -0
  238. package/packages/gateway/dist/web/uninstall.d.ts.map +1 -0
  239. package/packages/gateway/dist/web/uninstall.js +116 -0
  240. package/packages/gateway/dist/web/uninstall.js.map +1 -0
  241. package/packages/gateway/dist/web/widgets.d.ts +2 -0
  242. package/packages/gateway/dist/web/widgets.d.ts.map +1 -1
  243. package/packages/gateway/dist/web/widgets.js +47 -13
  244. package/packages/gateway/dist/web/widgets.js.map +1 -1
  245. package/packages/install/dist/.tsbuildinfo +1 -1
  246. package/packages/install/dist/app-layout.d.ts +4 -0
  247. package/packages/install/dist/app-layout.d.ts.map +1 -1
  248. package/packages/install/dist/app-layout.js +6 -0
  249. package/packages/install/dist/app-layout.js.map +1 -1
  250. package/packages/install/dist/cli-shim.d.ts +78 -0
  251. package/packages/install/dist/cli-shim.d.ts.map +1 -0
  252. package/packages/install/dist/cli-shim.js +219 -0
  253. package/packages/install/dist/cli-shim.js.map +1 -0
  254. package/packages/install/dist/doctor-timezone.js +1 -1
  255. package/packages/install/dist/doctor-timezone.js.map +1 -1
  256. package/packages/install/dist/environment.d.ts +90 -1
  257. package/packages/install/dist/environment.d.ts.map +1 -1
  258. package/packages/install/dist/environment.js +216 -3
  259. package/packages/install/dist/environment.js.map +1 -1
  260. package/packages/install/dist/kept-data.d.ts.map +1 -1
  261. package/packages/install/dist/kept-data.js +3 -1
  262. package/packages/install/dist/kept-data.js.map +1 -1
  263. package/packages/install/dist/launcher.d.ts.map +1 -1
  264. package/packages/install/dist/launcher.js +231 -6
  265. package/packages/install/dist/launcher.js.map +1 -1
  266. package/packages/install/dist/product-uninstall.d.ts +86 -0
  267. package/packages/install/dist/product-uninstall.d.ts.map +1 -0
  268. package/packages/install/dist/product-uninstall.js +150 -0
  269. package/packages/install/dist/product-uninstall.js.map +1 -0
  270. package/packages/install/dist/supervisor.d.ts +59 -1
  271. package/packages/install/dist/supervisor.d.ts.map +1 -1
  272. package/packages/install/dist/supervisor.js +288 -19
  273. package/packages/install/dist/supervisor.js.map +1 -1
  274. package/packages/install/dist/uninstall.d.ts +37 -1
  275. package/packages/install/dist/uninstall.d.ts.map +1 -1
  276. package/packages/install/dist/uninstall.js +150 -38
  277. package/packages/install/dist/uninstall.js.map +1 -1
  278. package/packages/runtime/dist/.tsbuildinfo +1 -1
  279. package/packages/runtime/dist/codex-oauth.d.ts +6 -0
  280. package/packages/runtime/dist/codex-oauth.d.ts.map +1 -1
  281. package/packages/runtime/dist/codex-oauth.js +15 -0
  282. package/packages/runtime/dist/codex-oauth.js.map +1 -1
  283. package/packages/runtime/dist/openai.d.ts +9 -2
  284. package/packages/runtime/dist/openai.d.ts.map +1 -1
  285. package/packages/runtime/dist/openai.js +117 -16
  286. package/packages/runtime/dist/openai.js.map +1 -1
  287. package/packages/tools/browser/dist/.tsbuildinfo +1 -1
  288. package/packages/tools/browser/dist/availability.d.ts +2 -2
  289. package/packages/tools/browser/dist/availability.d.ts.map +1 -1
  290. package/packages/tools/browser/dist/availability.js +2 -2
  291. package/packages/tools/browser/dist/availability.js.map +1 -1
  292. package/packages/tools/browser/dist/controller.d.ts +1 -1
  293. package/packages/tools/browser/dist/controller.d.ts.map +1 -1
  294. package/packages/tools/browser/dist/controller.js +1 -1
  295. package/packages/tools/browser/dist/controller.js.map +1 -1
  296. package/packages/web/dist/assets/{index-DYfeUW-0.css → index-BrA8nWN-.css} +1 -1
  297. package/packages/web/dist/assets/index-lmUTDd2T.js +146 -0
  298. package/packages/web/dist/assets/{lottie_light-DB7hai8n.js → lottie_light-CQmEj1as.js} +1 -1
  299. package/packages/web/dist/build.json +1 -1
  300. package/packages/web/dist/index.html +2 -2
  301. package/packages/web/dist/precache.json +4 -4
  302. package/packages/web/dist/assets/index-CO4OawAX.js +0 -146
@@ -61,7 +61,7 @@ import { setDelegatesFromWeb } from './write.js';
61
61
  import { mlxhBaseUrl, probeMlxh } from '../mlxh.js';
62
62
  import { PullRefusal, createOllamaPulls, ollamaMachine } from '../ollama-local.js';
63
63
  import { OnboardingRefusal, hasOwnerAgent, WEB_ONBOARDING_STEPS, WEB_ONBOARDING_SURFACE, claimOpeningTurn, createFirstAgent, OLLAMA_BASE_URL, probeOllama, readOnboarding, rebindBrain, updateFirstAgent, withFirstRunFacts, readFirstAgentPersona } from './onboarding.js';
64
- import { TakeOnRefusal, readTakeOn, startTakeOn } from './take-on.js';
64
+ import { TakeOnRefusal, readTakeOn, readTakeOnOffers, startTakeOn } from './take-on.js';
65
65
  import { TelegramWebError, saveTelegramToken, telegramBot, telegramDevices, telegramPairing, telegramStatus, unpairTelegramDevice, } from './telegram.js';
66
66
  import { PAGE_ROUTE, sendPageFile, actOnPage, actRateLimited, listPageDescriptors, runPageQuery, } from './pages.js';
67
67
  import { listSecrets, ownerLoginKey, ownerLoginNames, ownerLoginStore, secretUses, secretsAct } from './secrets.js';
@@ -103,7 +103,7 @@ import { ownerSecretTokenStore } from './access/cloudflare-token.js';
103
103
  import { createAccessRegistry } from './access/registry.js';
104
104
  import { createIngress } from './access/ingress.js';
105
105
  import { clientKey } from './client-key.js';
106
- import { retryHref, sendSignedOut, wantsSignedOutPage } from './signed-out.js';
106
+ import { appLinkFor, retryHref, sendSignedOut, wantsSignedOutPage } from './signed-out.js';
107
107
  import { extensionEndpoint } from './extension.js';
108
108
  import { REMOTE_HAND_SOCKET_PATH, RemoteHandEndpoint } from './remote-hand.js';
109
109
  import { csrfCookieName, CSRF_HEADER, sessionCookieName, requestPort, BodyTooLargeError, first, cookieHeader, parseCookies, parseUrl, readJsonBody, requestOrigin, requestScope, sendEmpty, sendJson, sendText, } from './http.js';
@@ -136,6 +136,9 @@ import { StreamBudget, frame, resumeCursor, streamConversation } from './stream.
136
136
  import { ensureWebToken, verifyTicket } from './token.js';
137
137
  import { MAX_UPLOAD_BYTES, readUpload } from './upload.js';
138
138
  import { LOCKED_BODY, LockUnavailable, allowedWhileLocked, clientOf, createLock } from './lock.js';
139
+ import { acknowledgePassphrase, passphraseNotice } from './passphrase-notice.js';
140
+ import { cliToolRoute } from './cli-tool.js';
141
+ import { createTokenStore, uninstallBackupRoute, uninstallJobRoute, uninstallPlanRoute, uninstallRoute as removeBuddiRoute, withoutPassphrase } from './uninstall.js';
139
142
  import { matchApiRoute, TOKEN_REFUSALS } from './api-routes.js';
140
143
  import { QUIET_UNAVAILABLE_TEXT, pluginCommands } from './composer.js';
141
144
  import { createEngagementHooks } from '../missions/engagement.js';
@@ -345,7 +348,7 @@ export function createWebApp(deps) {
345
348
  const ollamaPulls = deps.ollamaPulls ?? createOllamaPulls({ baseUrl: OLLAMA_BASE_URL });
346
349
  const machine = deps.ollamaMachine ?? (() => ollamaMachine());
347
350
  // Home's widgets: one cache per server (web/widgets.ts).
348
- const widgets = createWidgets({ pool: deps.pool, registry: deps.registry, ctx: deps.ctx, now: deps.now });
351
+ const widgets = createWidgets({ pool: deps.pool, registry: deps.registry, ctx: deps.ctx, now: deps.now, log });
349
352
  /*
350
353
  * The lock screen (web/lock.ts): which sessions are locked, the PIN, the
351
354
  * gate below. A session that locks has its streams closed and its remote
@@ -370,6 +373,8 @@ export function createWebApp(deps) {
370
373
  },
371
374
  recoveryActive: () => inRecovery(deps.pool),
372
375
  });
376
+ /** Remove buddi from this Mac: the token its plan mints (web/uninstall.ts). */
377
+ const uninstallTokens = createTokenStore();
373
378
  const lock = createLock({ pool: deps.pool, sessions, now: deps.now, get timezone() { return deps.timezone; }, widgets, needsYou, log });
374
379
  const openStreams = new Map();
375
380
  /*
@@ -784,6 +789,8 @@ export function createWebApp(deps) {
784
789
  tailscaleSignIn: !!setting?.enabled && tailscaleRefusal?.kind !== 'login',
785
790
  ...(tailscaleRefusal?.kind === 'login' ? { tailscaleRefusal: tailscaleRefusal.sentence } : {}),
786
791
  ...(tailscaleRefusal?.kind === 'unanswered' ? { tailscaleUnanswered: true } : {}),
792
+ // From the Chrome extension's popup, on this computer: offer buddi.app first.
793
+ ...((link) => arrived === 'local' && link ? { appLink: link } : {})(appLinkFor(search, first(req.headers['user-agent']) ?? '', req.headers.host ?? '')),
787
794
  ...locked,
788
795
  };
789
796
  };
@@ -1214,12 +1221,21 @@ export function createWebApp(deps) {
1214
1221
  examplesDir: EXAMPLES_AGENTS_DIR,
1215
1222
  reload: () => deps.catalog.reload?.(),
1216
1223
  registry: deps.registry,
1224
+ offers: (opts) => readTakeOnOffers({ env: deps.env ?? process.env, log }, opts),
1217
1225
  });
1218
1226
  /** What the backup routes need: the environment, and somewhere to log. */
1219
1227
  const backupDeps = () => ({
1220
1228
  env: deps.env ?? process.env,
1221
1229
  log,
1222
1230
  });
1231
+ /** Home's passphrase card: the backups, the words, and where "I saved it" is kept. */
1232
+ const noticeDeps = () => ({
1233
+ pool: deps.pool,
1234
+ listBackups: () => listBackups(backupDeps()),
1235
+ passphrase: () => passphraseRoute(backupDeps(), 'GET'),
1236
+ now: deps.now,
1237
+ log,
1238
+ });
1223
1239
  /** What the plugin page routes need: the registry, and the owner's context. */
1224
1240
  const pagesDeps = () => ({ registry: deps.registry, ctx: deps.ctx, now: deps.now, log });
1225
1241
  const agentOffersDeps = () => ({
@@ -1930,8 +1946,21 @@ export function createWebApp(deps) {
1930
1946
  return reply(res, await listBackups(backupDeps()));
1931
1947
  case '/api/backups/schedule':
1932
1948
  return reply(res, await scheduleRoute(backupDeps(), 'GET'));
1933
- case '/api/backups/passphrase':
1949
+ case '/api/backups/passphrase': {
1950
+ // Behind the PIN when there is one: Settings → Backup reveals it with POST …/reveal.
1951
+ const allowed = await lock.verify(undefined);
1952
+ if (!allowed.ok)
1953
+ return sendJson(res, 403, { error: 'Type your PIN to see the passphrase.', needsPin: true });
1934
1954
  return reply(res, await passphraseRoute(backupDeps(), 'GET'));
1955
+ }
1956
+ /* Home's card after the first encrypted backup, until "I saved it" (web/passphrase-notice.ts). */
1957
+ /* The words, so from this computer only, and behind the PIN when there is one (the card then reveals with POST …/reveal). */
1958
+ case '/api/backups/passphrase/notice': {
1959
+ if (session.via !== 'local')
1960
+ return sendJson(res, 403, { error: 'The passphrase shows on the computer buddi runs on.' });
1961
+ const allowed = await lock.verify(undefined);
1962
+ return sendJson(res, 200, await passphraseNotice(noticeDeps(), { words: allowed.ok }));
1963
+ }
1935
1964
  /*
1936
1965
  * Plugins: what is installed, what is staged and waiting to be read,
1937
1966
  * and the trust sentence the page shows above the install field. A
@@ -1974,7 +2003,7 @@ export function createWebApp(deps) {
1974
2003
  case '/api/secrets/uses':
1975
2004
  return reply(res, await secretUses(secretsDeps(), url));
1976
2005
  case '/api/onboarding':
1977
- return sendJson(res, 200, await readOnboarding(onboardingDeps()));
2006
+ return sendJson(res, 200, await readOnboarding(onboardingDeps(), { withOffers: true }));
1978
2007
  /*
1979
2008
  * Is Ollama running on this machine? Asked from here, never from the
1980
2009
  * page: the dashboard bundle reaches no host but its own, and the
@@ -2053,10 +2082,28 @@ export function createWebApp(deps) {
2053
2082
  }
2054
2083
  const upgradeJob = /^\/api\/upgrade\/jobs\/([0-9a-f-]{36})$/i.exec(path);
2055
2084
  if (upgradeJob)
2056
- return reply(res, await upgradeJobRoute(versionDeps(), upgradeJob[1]));
2085
+ return reply(res, withoutPassphrase(await upgradeJobRoute(versionDeps(), upgradeJob[1])));
2057
2086
  const backupJob = /^\/api\/backups\/jobs\/([0-9a-f-]{36})$/i.exec(path);
2058
2087
  if (backupJob)
2059
- return reply(res, await backupJobRoute(backupDeps(), backupJob[1]));
2088
+ return reply(res, withoutPassphrase(await backupJobRoute(backupDeps(), backupJob[1])));
2089
+ /* buddi.app's command line tool: whether it is installed, from this computer only. */
2090
+ if (path === '/api/system/cli') {
2091
+ if (session.via !== 'local')
2092
+ return sendJson(res, 403, { error: 'Change this from the computer buddi runs on.' });
2093
+ return reply(res, await cliToolRoute(deps.env ?? process.env, 'GET'));
2094
+ }
2095
+ /* Remove buddi from this Mac: the plan (with its token) and the last backup's job, from this computer only. */
2096
+ if (path === '/api/system/uninstall') {
2097
+ if (session.via !== 'local')
2098
+ return sendJson(res, 403, { error: 'Remove buddi from the computer it runs on.' });
2099
+ return reply(res, await uninstallPlanRoute({ env: deps.env ?? process.env, now: deps.now }, uninstallTokens));
2100
+ }
2101
+ const uninstallJob = /^\/api\/system\/uninstall\/jobs\/([0-9a-f-]{36})$/i.exec(path);
2102
+ if (uninstallJob) {
2103
+ if (session.via !== 'local')
2104
+ return sendJson(res, 403, { error: 'Remove buddi from the computer it runs on.' });
2105
+ return reply(res, await uninstallJobRoute({ env: deps.env ?? process.env }, uninstallJob[1]));
2106
+ }
2060
2107
  const catalogueJob = /^\/api\/catalogue\/jobs\/([0-9a-f-]{36})$/i.exec(path);
2061
2108
  if (catalogueJob)
2062
2109
  return reply(res, catalogueJobRoute(catalogueJob[1]));
@@ -3353,6 +3400,27 @@ export function createWebApp(deps) {
3353
3400
  return reply(res, await upgradeRoute(versionDeps(), body));
3354
3401
  if (path === '/api/backups')
3355
3402
  return reply(res, await createBackupRoute(backupDeps(), body));
3403
+ if (path === '/api/backups/passphrase/notice')
3404
+ return sendJson(res, 200, await acknowledgePassphrase({ pool: deps.pool, now: deps.now }));
3405
+ if (path === '/api/system/cli') {
3406
+ if (session.via !== 'local')
3407
+ return sendJson(res, 403, { error: 'Change this from the computer buddi runs on.' });
3408
+ return reply(res, await cliToolRoute(deps.env ?? process.env, 'POST'));
3409
+ }
3410
+ if (path === '/api/system/uninstall/backup' || path === '/api/system/uninstall') {
3411
+ if (session.via !== 'local')
3412
+ return sendJson(res, 403, { error: 'Remove buddi from the computer it runs on.' });
3413
+ const uninstallDeps = { env: deps.env ?? process.env, now: deps.now };
3414
+ return reply(res, path === '/api/system/uninstall/backup'
3415
+ ? await uninstallBackupRoute(uninstallDeps, uninstallTokens, body)
3416
+ : await removeBuddiRoute(uninstallDeps, uninstallTokens, body));
3417
+ }
3418
+ if (path === '/api/backups/passphrase/reveal') {
3419
+ const allowed = await lock.verify(body.pin);
3420
+ if (!allowed.ok)
3421
+ return sendJson(res, allowed.status, allowed.body);
3422
+ return reply(res, await passphraseRoute(backupDeps(), 'GET'));
3423
+ }
3356
3424
  if (path === '/api/backups/verify')
3357
3425
  return reply(res, await verifyBackupRoute(backupDeps(), body));
3358
3426
  if (path === '/api/backups/restore') {