@withbuddi/buddi 0.1.0-pre.37 → 0.1.0-pre.38

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 (703) hide show
  1. package/extension/background.js +130 -12
  2. package/extension/manifest.json +2 -2
  3. package/node_modules/@buddi/cli/dist/.tsbuildinfo +1 -1
  4. package/node_modules/@buddi/cli/dist/access-cmd.d.ts +10 -0
  5. package/node_modules/@buddi/cli/dist/access-cmd.d.ts.map +1 -0
  6. package/node_modules/@buddi/cli/dist/access-cmd.js +160 -0
  7. package/node_modules/@buddi/cli/dist/access-cmd.js.map +1 -0
  8. package/node_modules/@buddi/cli/dist/args.d.ts +10 -0
  9. package/node_modules/@buddi/cli/dist/args.d.ts.map +1 -1
  10. package/node_modules/@buddi/cli/dist/args.js +29 -1
  11. package/node_modules/@buddi/cli/dist/args.js.map +1 -1
  12. package/node_modules/@buddi/cli/dist/commands.d.ts.map +1 -1
  13. package/node_modules/@buddi/cli/dist/commands.js +28 -2
  14. package/node_modules/@buddi/cli/dist/commands.js.map +1 -1
  15. package/node_modules/@buddi/cli/dist/doctor-probes.d.ts.map +1 -1
  16. package/node_modules/@buddi/cli/dist/doctor-probes.js +54 -29
  17. package/node_modules/@buddi/cli/dist/doctor-probes.js.map +1 -1
  18. package/node_modules/@buddi/cli/dist/doctor.d.ts +36 -12
  19. package/node_modules/@buddi/cli/dist/doctor.d.ts.map +1 -1
  20. package/node_modules/@buddi/cli/dist/doctor.js +32 -9
  21. package/node_modules/@buddi/cli/dist/doctor.js.map +1 -1
  22. package/node_modules/@buddi/cli/dist/main.d.ts +2 -0
  23. package/node_modules/@buddi/cli/dist/main.d.ts.map +1 -1
  24. package/node_modules/@buddi/cli/dist/main.js +18 -1
  25. package/node_modules/@buddi/cli/dist/main.js.map +1 -1
  26. package/node_modules/@buddi/core/dist/.tsbuildinfo +1 -1
  27. package/node_modules/@buddi/core/dist/agents/catalog.d.ts +2 -0
  28. package/node_modules/@buddi/core/dist/agents/catalog.d.ts.map +1 -1
  29. package/node_modules/@buddi/core/dist/agents/catalog.js +1 -0
  30. package/node_modules/@buddi/core/dist/agents/catalog.js.map +1 -1
  31. package/node_modules/@buddi/core/dist/agents/edit.d.ts +2 -0
  32. package/node_modules/@buddi/core/dist/agents/edit.d.ts.map +1 -1
  33. package/node_modules/@buddi/core/dist/agents/edit.js +3 -1
  34. package/node_modules/@buddi/core/dist/agents/edit.js.map +1 -1
  35. package/node_modules/@buddi/core/dist/agents/frontmatter.d.ts +11 -0
  36. package/node_modules/@buddi/core/dist/agents/frontmatter.d.ts.map +1 -1
  37. package/node_modules/@buddi/core/dist/agents/frontmatter.js +7 -0
  38. package/node_modules/@buddi/core/dist/agents/frontmatter.js.map +1 -1
  39. package/node_modules/@buddi/core/dist/index.d.ts +1 -0
  40. package/node_modules/@buddi/core/dist/index.d.ts.map +1 -1
  41. package/node_modules/@buddi/core/dist/index.js +1 -0
  42. package/node_modules/@buddi/core/dist/index.js.map +1 -1
  43. package/node_modules/@buddi/core/dist/plugin/index.d.ts +3 -0
  44. package/node_modules/@buddi/core/dist/plugin/index.d.ts.map +1 -1
  45. package/node_modules/@buddi/core/dist/plugin/index.js +3 -0
  46. package/node_modules/@buddi/core/dist/plugin/index.js.map +1 -1
  47. package/node_modules/@buddi/core/dist/plugin/version.d.ts +1 -1
  48. package/node_modules/@buddi/core/dist/plugin/version.js +1 -1
  49. package/node_modules/@buddi/core/dist/questions/store.d.ts +12 -0
  50. package/node_modules/@buddi/core/dist/questions/store.d.ts.map +1 -1
  51. package/node_modules/@buddi/core/dist/questions/store.js +11 -1
  52. package/node_modules/@buddi/core/dist/questions/store.js.map +1 -1
  53. package/node_modules/@buddi/core/dist/questions/types.d.ts +8 -0
  54. package/node_modules/@buddi/core/dist/questions/types.d.ts.map +1 -1
  55. package/node_modules/@buddi/core/dist/questions/types.js +15 -0
  56. package/node_modules/@buddi/core/dist/questions/types.js.map +1 -1
  57. package/node_modules/@buddi/core/dist/queue/jobs.d.ts +8 -0
  58. package/node_modules/@buddi/core/dist/queue/jobs.d.ts.map +1 -1
  59. package/node_modules/@buddi/core/dist/queue/jobs.js +9 -3
  60. package/node_modules/@buddi/core/dist/queue/jobs.js.map +1 -1
  61. package/node_modules/@buddi/core/dist/queue/worker.d.ts +2 -0
  62. package/node_modules/@buddi/core/dist/queue/worker.d.ts.map +1 -1
  63. package/node_modules/@buddi/core/dist/queue/worker.js +2 -1
  64. package/node_modules/@buddi/core/dist/queue/worker.js.map +1 -1
  65. package/node_modules/@buddi/core/dist/registry.d.ts +7 -1
  66. package/node_modules/@buddi/core/dist/registry.d.ts.map +1 -1
  67. package/node_modules/@buddi/core/dist/registry.js +73 -11
  68. package/node_modules/@buddi/core/dist/registry.js.map +1 -1
  69. package/node_modules/@buddi/core/dist/routes.d.ts +153 -0
  70. package/node_modules/@buddi/core/dist/routes.d.ts.map +1 -0
  71. package/node_modules/@buddi/core/dist/routes.js +47 -0
  72. package/node_modules/@buddi/core/dist/routes.js.map +1 -0
  73. package/node_modules/@buddi/core/dist/scheduler/missions.d.ts +5 -3
  74. package/node_modules/@buddi/core/dist/scheduler/missions.d.ts.map +1 -1
  75. package/node_modules/@buddi/core/dist/scheduler/missions.js +9 -7
  76. package/node_modules/@buddi/core/dist/scheduler/missions.js.map +1 -1
  77. package/node_modules/@buddi/core/dist/scheduler/types.d.ts +7 -0
  78. package/node_modules/@buddi/core/dist/scheduler/types.d.ts.map +1 -1
  79. package/node_modules/@buddi/core/dist/scheduler/types.js +1 -0
  80. package/node_modules/@buddi/core/dist/scheduler/types.js.map +1 -1
  81. package/node_modules/@buddi/core/dist/tools.d.ts +59 -2
  82. package/node_modules/@buddi/core/dist/tools.d.ts.map +1 -1
  83. package/node_modules/@buddi/core/dist/tools.js.map +1 -1
  84. package/node_modules/@buddi/core/migrations/075_access_providers.sql +43 -0
  85. package/node_modules/@buddi/core/migrations/076_mission_browser.sql +7 -0
  86. package/node_modules/@buddi/gateway/dist/.tsbuildinfo +1 -1
  87. package/node_modules/@buddi/gateway/dist/agents/canvas.d.ts +12 -12
  88. package/node_modules/@buddi/gateway/dist/agents/catalogue-package.d.ts +38 -20
  89. package/node_modules/@buddi/gateway/dist/agents/catalogue-package.d.ts.map +1 -1
  90. package/node_modules/@buddi/gateway/dist/agents/catalogue-package.js +6 -0
  91. package/node_modules/@buddi/gateway/dist/agents/catalogue-package.js.map +1 -1
  92. package/node_modules/@buddi/gateway/dist/agents/delegation.d.ts +10 -0
  93. package/node_modules/@buddi/gateway/dist/agents/delegation.d.ts.map +1 -1
  94. package/node_modules/@buddi/gateway/dist/agents/delegation.js +1 -0
  95. package/node_modules/@buddi/gateway/dist/agents/delegation.js.map +1 -1
  96. package/node_modules/@buddi/gateway/dist/agents/platform-catalogue.d.ts +7 -1
  97. package/node_modules/@buddi/gateway/dist/agents/platform-catalogue.d.ts.map +1 -1
  98. package/node_modules/@buddi/gateway/dist/agents/platform-catalogue.js +15 -6
  99. package/node_modules/@buddi/gateway/dist/agents/platform-catalogue.js.map +1 -1
  100. package/node_modules/@buddi/gateway/dist/bootstrap.d.ts.map +1 -1
  101. package/node_modules/@buddi/gateway/dist/bootstrap.js +8 -0
  102. package/node_modules/@buddi/gateway/dist/bootstrap.js.map +1 -1
  103. package/node_modules/@buddi/gateway/dist/browser-host.d.ts +30 -1
  104. package/node_modules/@buddi/gateway/dist/browser-host.d.ts.map +1 -1
  105. package/node_modules/@buddi/gateway/dist/browser-host.js +56 -1
  106. package/node_modules/@buddi/gateway/dist/browser-host.js.map +1 -1
  107. package/node_modules/@buddi/gateway/dist/chat/session.d.ts.map +1 -1
  108. package/node_modules/@buddi/gateway/dist/chat/session.js +9 -5
  109. package/node_modules/@buddi/gateway/dist/chat/session.js.map +1 -1
  110. package/node_modules/@buddi/gateway/dist/index.d.ts +2 -1
  111. package/node_modules/@buddi/gateway/dist/index.d.ts.map +1 -1
  112. package/node_modules/@buddi/gateway/dist/index.js +2 -1
  113. package/node_modules/@buddi/gateway/dist/index.js.map +1 -1
  114. package/node_modules/@buddi/gateway/dist/missions/execute.d.ts +34 -1
  115. package/node_modules/@buddi/gateway/dist/missions/execute.d.ts.map +1 -1
  116. package/node_modules/@buddi/gateway/dist/missions/execute.js +92 -8
  117. package/node_modules/@buddi/gateway/dist/missions/execute.js.map +1 -1
  118. package/node_modules/@buddi/gateway/dist/missions/parked.d.ts +133 -0
  119. package/node_modules/@buddi/gateway/dist/missions/parked.d.ts.map +1 -0
  120. package/node_modules/@buddi/gateway/dist/missions/parked.js +249 -0
  121. package/node_modules/@buddi/gateway/dist/missions/parked.js.map +1 -0
  122. package/node_modules/@buddi/gateway/dist/serve.d.ts +7 -0
  123. package/node_modules/@buddi/gateway/dist/serve.d.ts.map +1 -1
  124. package/node_modules/@buddi/gateway/dist/serve.js +49 -9
  125. package/node_modules/@buddi/gateway/dist/serve.js.map +1 -1
  126. package/node_modules/@buddi/gateway/dist/surfaces/browser-cards.d.ts +18 -0
  127. package/node_modules/@buddi/gateway/dist/surfaces/browser-cards.d.ts.map +1 -0
  128. package/node_modules/@buddi/gateway/dist/surfaces/browser-cards.js +42 -0
  129. package/node_modules/@buddi/gateway/dist/surfaces/browser-cards.js.map +1 -0
  130. package/node_modules/@buddi/gateway/dist/surfaces/browser-continuation.js +1 -1
  131. package/node_modules/@buddi/gateway/dist/surfaces/browser-continuation.js.map +1 -1
  132. package/node_modules/@buddi/gateway/dist/surfaces/owner-request.d.ts +6 -0
  133. package/node_modules/@buddi/gateway/dist/surfaces/owner-request.d.ts.map +1 -1
  134. package/node_modules/@buddi/gateway/dist/surfaces/owner-request.js +7 -1
  135. package/node_modules/@buddi/gateway/dist/surfaces/owner-request.js.map +1 -1
  136. package/node_modules/@buddi/gateway/dist/system-context.d.ts.map +1 -1
  137. package/node_modules/@buddi/gateway/dist/system-context.js +6 -7
  138. package/node_modules/@buddi/gateway/dist/system-context.js.map +1 -1
  139. package/node_modules/@buddi/gateway/dist/telegram/browser-view.d.ts +17 -17
  140. package/node_modules/@buddi/gateway/dist/telegram/browser-view.d.ts.map +1 -1
  141. package/node_modules/@buddi/gateway/dist/telegram/browser-view.js +33 -37
  142. package/node_modules/@buddi/gateway/dist/telegram/browser-view.js.map +1 -1
  143. package/node_modules/@buddi/gateway/dist/telegram/channel.d.ts.map +1 -1
  144. package/node_modules/@buddi/gateway/dist/telegram/channel.js +17 -1
  145. package/node_modules/@buddi/gateway/dist/telegram/channel.js.map +1 -1
  146. package/node_modules/@buddi/gateway/dist/telegram/main.d.ts.map +1 -1
  147. package/node_modules/@buddi/gateway/dist/telegram/main.js +11 -3
  148. package/node_modules/@buddi/gateway/dist/telegram/main.js.map +1 -1
  149. package/node_modules/@buddi/gateway/dist/telegram/surface.d.ts.map +1 -1
  150. package/node_modules/@buddi/gateway/dist/telegram/surface.js +10 -0
  151. package/node_modules/@buddi/gateway/dist/telegram/surface.js.map +1 -1
  152. package/node_modules/@buddi/gateway/dist/tips/facts.d.ts +8 -0
  153. package/node_modules/@buddi/gateway/dist/tips/facts.d.ts.map +1 -1
  154. package/node_modules/@buddi/gateway/dist/tips/facts.js +8 -2
  155. package/node_modules/@buddi/gateway/dist/tips/facts.js.map +1 -1
  156. package/node_modules/@buddi/gateway/dist/tips/rules.d.ts +2 -0
  157. package/node_modules/@buddi/gateway/dist/tips/rules.d.ts.map +1 -1
  158. package/node_modules/@buddi/gateway/dist/tips/rules.js +15 -0
  159. package/node_modules/@buddi/gateway/dist/tips/rules.js.map +1 -1
  160. package/node_modules/@buddi/gateway/dist/web/access/arrival.d.ts +24 -0
  161. package/node_modules/@buddi/gateway/dist/web/access/arrival.d.ts.map +1 -0
  162. package/node_modules/@buddi/gateway/dist/web/access/arrival.js +18 -0
  163. package/node_modules/@buddi/gateway/dist/web/access/arrival.js.map +1 -0
  164. package/node_modules/@buddi/gateway/dist/web/access/cloudflare-api.d.ts +124 -0
  165. package/node_modules/@buddi/gateway/dist/web/access/cloudflare-api.d.ts.map +1 -0
  166. package/node_modules/@buddi/gateway/dist/web/access/cloudflare-api.js +206 -0
  167. package/node_modules/@buddi/gateway/dist/web/access/cloudflare-api.js.map +1 -0
  168. package/node_modules/@buddi/gateway/dist/web/access/cloudflare-setup.d.ts +163 -0
  169. package/node_modules/@buddi/gateway/dist/web/access/cloudflare-setup.d.ts.map +1 -0
  170. package/node_modules/@buddi/gateway/dist/web/access/cloudflare-setup.js +438 -0
  171. package/node_modules/@buddi/gateway/dist/web/access/cloudflare-setup.js.map +1 -0
  172. package/node_modules/@buddi/gateway/dist/web/access/cloudflare-token.d.ts +31 -0
  173. package/node_modules/@buddi/gateway/dist/web/access/cloudflare-token.d.ts.map +1 -0
  174. package/node_modules/@buddi/gateway/dist/web/access/cloudflare-token.js +74 -0
  175. package/node_modules/@buddi/gateway/dist/web/access/cloudflare-token.js.map +1 -0
  176. package/node_modules/@buddi/gateway/dist/web/access/cloudflare.d.ts +145 -0
  177. package/node_modules/@buddi/gateway/dist/web/access/cloudflare.d.ts.map +1 -0
  178. package/node_modules/@buddi/gateway/dist/web/access/cloudflare.js +474 -0
  179. package/node_modules/@buddi/gateway/dist/web/access/cloudflare.js.map +1 -0
  180. package/node_modules/@buddi/gateway/dist/web/access/index.d.ts +9 -0
  181. package/node_modules/@buddi/gateway/dist/web/access/index.d.ts.map +1 -0
  182. package/node_modules/@buddi/gateway/dist/web/access/index.js +9 -0
  183. package/node_modules/@buddi/gateway/dist/web/access/index.js.map +1 -0
  184. package/node_modules/@buddi/gateway/dist/web/access/ingress.d.ts +30 -0
  185. package/node_modules/@buddi/gateway/dist/web/access/ingress.d.ts.map +1 -0
  186. package/node_modules/@buddi/gateway/dist/web/access/ingress.js +76 -0
  187. package/node_modules/@buddi/gateway/dist/web/access/ingress.js.map +1 -0
  188. package/node_modules/@buddi/gateway/dist/web/access/provider.d.ts +173 -0
  189. package/node_modules/@buddi/gateway/dist/web/access/provider.d.ts.map +1 -0
  190. package/node_modules/@buddi/gateway/dist/web/access/provider.js +11 -0
  191. package/node_modules/@buddi/gateway/dist/web/access/provider.js.map +1 -0
  192. package/node_modules/@buddi/gateway/dist/web/access/registry.d.ts +33 -0
  193. package/node_modules/@buddi/gateway/dist/web/access/registry.d.ts.map +1 -0
  194. package/node_modules/@buddi/gateway/dist/web/access/registry.js +32 -0
  195. package/node_modules/@buddi/gateway/dist/web/access/registry.js.map +1 -0
  196. package/node_modules/@buddi/gateway/dist/web/{tailscale.d.ts → access/tailscale.d.ts} +27 -0
  197. package/node_modules/@buddi/gateway/dist/web/access/tailscale.d.ts.map +1 -0
  198. package/node_modules/@buddi/gateway/dist/web/{tailscale.js → access/tailscale.js} +118 -3
  199. package/node_modules/@buddi/gateway/dist/web/access/tailscale.js.map +1 -0
  200. package/node_modules/@buddi/gateway/dist/web/agents.d.ts +2 -0
  201. package/node_modules/@buddi/gateway/dist/web/agents.d.ts.map +1 -1
  202. package/node_modules/@buddi/gateway/dist/web/agents.js +19 -1
  203. package/node_modules/@buddi/gateway/dist/web/agents.js.map +1 -1
  204. package/node_modules/@buddi/gateway/dist/web/api-routes.d.ts +4 -3
  205. package/node_modules/@buddi/gateway/dist/web/api-routes.d.ts.map +1 -1
  206. package/node_modules/@buddi/gateway/dist/web/api-routes.js +96 -17
  207. package/node_modules/@buddi/gateway/dist/web/api-routes.js.map +1 -1
  208. package/node_modules/@buddi/gateway/dist/web/attention.d.ts.map +1 -1
  209. package/node_modules/@buddi/gateway/dist/web/attention.js +11 -3
  210. package/node_modules/@buddi/gateway/dist/web/attention.js.map +1 -1
  211. package/node_modules/@buddi/gateway/dist/web/chat.d.ts +23 -0
  212. package/node_modules/@buddi/gateway/dist/web/chat.d.ts.map +1 -1
  213. package/node_modules/@buddi/gateway/dist/web/chat.js +62 -2
  214. package/node_modules/@buddi/gateway/dist/web/chat.js.map +1 -1
  215. package/node_modules/@buddi/gateway/dist/web/client-key.d.ts +3 -0
  216. package/node_modules/@buddi/gateway/dist/web/client-key.d.ts.map +1 -1
  217. package/node_modules/@buddi/gateway/dist/web/client-key.js +8 -1
  218. package/node_modules/@buddi/gateway/dist/web/client-key.js.map +1 -1
  219. package/node_modules/@buddi/gateway/dist/web/extension.d.ts +9 -1
  220. package/node_modules/@buddi/gateway/dist/web/extension.d.ts.map +1 -1
  221. package/node_modules/@buddi/gateway/dist/web/extension.js +61 -1
  222. package/node_modules/@buddi/gateway/dist/web/extension.js.map +1 -1
  223. package/node_modules/@buddi/gateway/dist/web/http.d.ts +7 -0
  224. package/node_modules/@buddi/gateway/dist/web/http.d.ts.map +1 -1
  225. package/node_modules/@buddi/gateway/dist/web/http.js +15 -1
  226. package/node_modules/@buddi/gateway/dist/web/http.js.map +1 -1
  227. package/node_modules/@buddi/gateway/dist/web/index.d.ts +1 -1
  228. package/node_modules/@buddi/gateway/dist/web/index.d.ts.map +1 -1
  229. package/node_modules/@buddi/gateway/dist/web/index.js +1 -1
  230. package/node_modules/@buddi/gateway/dist/web/index.js.map +1 -1
  231. package/node_modules/@buddi/gateway/dist/web/onboarding.js +1 -1
  232. package/node_modules/@buddi/gateway/dist/web/onboarding.js.map +1 -1
  233. package/node_modules/@buddi/gateway/dist/web/server.d.ts +38 -2
  234. package/node_modules/@buddi/gateway/dist/web/server.d.ts.map +1 -1
  235. package/node_modules/@buddi/gateway/dist/web/server.js +576 -145
  236. package/node_modules/@buddi/gateway/dist/web/server.js.map +1 -1
  237. package/node_modules/@buddi/gateway/dist/web/sessions.d.ts +24 -14
  238. package/node_modules/@buddi/gateway/dist/web/sessions.d.ts.map +1 -1
  239. package/node_modules/@buddi/gateway/dist/web/sessions.js +42 -14
  240. package/node_modules/@buddi/gateway/dist/web/sessions.js.map +1 -1
  241. package/node_modules/@buddi/gateway/dist/web/signed-out.d.ts +10 -0
  242. package/node_modules/@buddi/gateway/dist/web/signed-out.d.ts.map +1 -1
  243. package/node_modules/@buddi/gateway/dist/web/signed-out.js +47 -0
  244. package/node_modules/@buddi/gateway/dist/web/signed-out.js.map +1 -1
  245. package/node_modules/@buddi/install/dist/.tsbuildinfo +1 -1
  246. package/node_modules/@buddi/runtime/dist/.tsbuildinfo +1 -1
  247. package/node_modules/@buddi/runtime/dist/delegate.d.ts +8 -0
  248. package/node_modules/@buddi/runtime/dist/delegate.d.ts.map +1 -1
  249. package/node_modules/@buddi/runtime/dist/delegate.js +19 -1
  250. package/node_modules/@buddi/runtime/dist/delegate.js.map +1 -1
  251. package/node_modules/@buddi/runtime/dist/loop.d.ts +2 -0
  252. package/node_modules/@buddi/runtime/dist/loop.d.ts.map +1 -1
  253. package/node_modules/@buddi/runtime/dist/loop.js +18 -4
  254. package/node_modules/@buddi/runtime/dist/loop.js.map +1 -1
  255. package/node_modules/@buddi/tool-artifacts/dist/.tsbuildinfo +1 -1
  256. package/node_modules/@buddi/tool-browser/dist/.tsbuildinfo +1 -1
  257. package/node_modules/@buddi/tool-browser/dist/availability.d.ts +2 -2
  258. package/node_modules/@buddi/tool-browser/dist/availability.d.ts.map +1 -1
  259. package/node_modules/@buddi/tool-browser/dist/availability.js +2 -2
  260. package/node_modules/@buddi/tool-browser/dist/availability.js.map +1 -1
  261. package/node_modules/@buddi/tool-browser/dist/controller.d.ts +76 -58
  262. package/node_modules/@buddi/tool-browser/dist/controller.d.ts.map +1 -1
  263. package/node_modules/@buddi/tool-browser/dist/controller.js +751 -219
  264. package/node_modules/@buddi/tool-browser/dist/controller.js.map +1 -1
  265. package/node_modules/@buddi/tool-browser/dist/extension.d.ts +12 -0
  266. package/node_modules/@buddi/tool-browser/dist/extension.d.ts.map +1 -1
  267. package/node_modules/@buddi/tool-browser/dist/extension.js +8 -0
  268. package/node_modules/@buddi/tool-browser/dist/extension.js.map +1 -1
  269. package/node_modules/@buddi/tool-browser/dist/index.d.ts +13 -5
  270. package/node_modules/@buddi/tool-browser/dist/index.d.ts.map +1 -1
  271. package/node_modules/@buddi/tool-browser/dist/index.js +29 -12
  272. package/node_modules/@buddi/tool-browser/dist/index.js.map +1 -1
  273. package/node_modules/@buddi/tool-browser/dist/manager.d.ts +39 -21
  274. package/node_modules/@buddi/tool-browser/dist/manager.d.ts.map +1 -1
  275. package/node_modules/@buddi/tool-browser/dist/manager.js +229 -136
  276. package/node_modules/@buddi/tool-browser/dist/manager.js.map +1 -1
  277. package/node_modules/@buddi/tool-browser/dist/routes.d.ts +130 -0
  278. package/node_modules/@buddi/tool-browser/dist/routes.d.ts.map +1 -0
  279. package/node_modules/@buddi/tool-browser/dist/routes.js +283 -0
  280. package/node_modules/@buddi/tool-browser/dist/routes.js.map +1 -0
  281. package/node_modules/@buddi/tool-browser/dist/service.d.ts +157 -114
  282. package/node_modules/@buddi/tool-browser/dist/service.d.ts.map +1 -1
  283. package/node_modules/@buddi/tool-browser/dist/service.js +379 -390
  284. package/node_modules/@buddi/tool-browser/dist/service.js.map +1 -1
  285. package/node_modules/@buddi/tool-browser/dist/settings.d.ts +88 -0
  286. package/node_modules/@buddi/tool-browser/dist/settings.d.ts.map +1 -0
  287. package/node_modules/@buddi/tool-browser/dist/settings.js +86 -0
  288. package/node_modules/@buddi/tool-browser/dist/settings.js.map +1 -0
  289. package/node_modules/@buddi/tool-browser/dist/telemetry.d.ts +203 -0
  290. package/node_modules/@buddi/tool-browser/dist/telemetry.d.ts.map +1 -0
  291. package/node_modules/@buddi/tool-browser/dist/telemetry.js +142 -0
  292. package/node_modules/@buddi/tool-browser/dist/telemetry.js.map +1 -0
  293. package/node_modules/@buddi/tool-browser/dist/types.d.ts +14 -3
  294. package/node_modules/@buddi/tool-browser/dist/types.d.ts.map +1 -1
  295. package/node_modules/@buddi/tool-browser/dist/types.js +9 -9
  296. package/node_modules/@buddi/tool-browser/dist/types.js.map +1 -1
  297. package/node_modules/@buddi/tool-email/dist/.tsbuildinfo +1 -1
  298. package/node_modules/@buddi/tool-host/dist/.tsbuildinfo +1 -1
  299. package/node_modules/@buddi/tool-mcp/dist/.tsbuildinfo +1 -1
  300. package/node_modules/@buddi/tool-memory/dist/.tsbuildinfo +1 -1
  301. package/node_modules/@buddi/tool-web/dist/.tsbuildinfo +1 -1
  302. package/node_modules/imapflow/CHANGELOG.md +15 -0
  303. package/node_modules/imapflow/dist/cjs/package-info.d.ts +1 -1
  304. package/node_modules/imapflow/dist/cjs/package-info.js +1 -1
  305. package/node_modules/imapflow/dist/cjs/search-compiler.js +21 -31
  306. package/node_modules/imapflow/dist/esm/package-info.d.ts +1 -1
  307. package/node_modules/imapflow/dist/esm/package-info.js +1 -1
  308. package/node_modules/imapflow/dist/esm/search-compiler.js +21 -31
  309. package/node_modules/imapflow/package.json +2 -2
  310. package/node_modules/pino/CONTRIBUTING.md +1 -5
  311. package/node_modules/pino/LICENSE +1 -1
  312. package/node_modules/pino/README.md +1 -1
  313. package/node_modules/pino/SECURITY.md +2 -18
  314. package/node_modules/pino/browser.js +8 -68
  315. package/node_modules/pino/docs/api.md +4 -75
  316. package/node_modules/pino/docs/asynchronous.md +3 -18
  317. package/node_modules/pino/docs/browser.md +0 -63
  318. package/node_modules/pino/docs/child-loggers.md +1 -22
  319. package/node_modules/pino/docs/ecosystem.md +0 -1
  320. package/node_modules/pino/docs/help.md +3 -11
  321. package/node_modules/pino/docs/lts.md +0 -29
  322. package/node_modules/pino/docs/pretty.md +0 -3
  323. package/node_modules/pino/docs/redaction.md +8 -3
  324. package/node_modules/pino/docs/transports.md +0 -71
  325. package/node_modules/pino/docs/web.md +14 -11
  326. package/node_modules/pino/eslint.config.js +7 -15
  327. package/node_modules/pino/lib/caller.js +0 -10
  328. package/node_modules/pino/lib/meta.js +1 -1
  329. package/node_modules/pino/lib/multistream.js +7 -15
  330. package/node_modules/pino/lib/redaction.js +3 -8
  331. package/node_modules/pino/lib/symbols.js +1 -3
  332. package/node_modules/pino/lib/tools.js +2 -2
  333. package/node_modules/pino/lib/transport.js +1 -14
  334. package/node_modules/pino/lib/worker.js +1 -4
  335. package/node_modules/pino/package.json +22 -14
  336. package/node_modules/pino/pino.d.ts +736 -709
  337. package/node_modules/pino/pino.js +2 -27
  338. package/node_modules/pino/test/basic.test.js +0 -66
  339. package/node_modules/pino/test/escaping.test.js +0 -17
  340. package/node_modules/pino/test/fixtures/ts/transpile.cjs +3 -3
  341. package/node_modules/pino/test/helper.js +2 -6
  342. package/node_modules/pino/test/multistream.test.js +0 -64
  343. package/node_modules/pino/test/redact.test.js +0 -30
  344. package/node_modules/pino/test/transport/core.test.js +0 -85
  345. package/node_modules/pino/test/transport/sync-false.test.js +0 -12
  346. package/node_modules/pino/test/transport/uses-pino-config.test.js +4 -4
  347. package/node_modules/pino/test/types/pino-import.test-d.cts +30 -0
  348. package/node_modules/pino/test/types/pino-multistream.test-d.ts +28 -0
  349. package/node_modules/pino/test/types/pino-top-export.test-d.ts +34 -0
  350. package/node_modules/pino/test/types/{pino-transport.tst.ts → pino-transport.test-d.ts} +70 -85
  351. package/node_modules/pino/test/types/pino-type-only.test-d.ts +75 -0
  352. package/node_modules/pino/test/types/{pino.tst.ts → pino.test-d.ts} +137 -135
  353. package/node_modules/pino/test/types/pino.ts +7 -14
  354. package/node_modules/pino/tsconfig.json +6 -6
  355. package/node_modules/real-require/README.md +6 -6
  356. package/node_modules/real-require/package.json +21 -10
  357. package/node_modules/real-require/src/index.js +2 -2
  358. package/node_modules/thread-stream/node_modules/real-require/LICENSE.md +21 -0
  359. package/node_modules/thread-stream/node_modules/real-require/README.md +51 -0
  360. package/node_modules/thread-stream/node_modules/real-require/package.json +38 -0
  361. package/node_modules/thread-stream/node_modules/real-require/src/index.js +14 -0
  362. package/package.json +2 -2
  363. package/packages/cli/dist/.tsbuildinfo +1 -1
  364. package/packages/cli/dist/access-cmd.d.ts +10 -0
  365. package/packages/cli/dist/access-cmd.d.ts.map +1 -0
  366. package/packages/cli/dist/access-cmd.js +160 -0
  367. package/packages/cli/dist/access-cmd.js.map +1 -0
  368. package/packages/cli/dist/args.d.ts +10 -0
  369. package/packages/cli/dist/args.d.ts.map +1 -1
  370. package/packages/cli/dist/args.js +29 -1
  371. package/packages/cli/dist/args.js.map +1 -1
  372. package/packages/cli/dist/commands.d.ts.map +1 -1
  373. package/packages/cli/dist/commands.js +28 -2
  374. package/packages/cli/dist/commands.js.map +1 -1
  375. package/packages/cli/dist/doctor-probes.d.ts.map +1 -1
  376. package/packages/cli/dist/doctor-probes.js +54 -29
  377. package/packages/cli/dist/doctor-probes.js.map +1 -1
  378. package/packages/cli/dist/doctor.d.ts +36 -12
  379. package/packages/cli/dist/doctor.d.ts.map +1 -1
  380. package/packages/cli/dist/doctor.js +32 -9
  381. package/packages/cli/dist/doctor.js.map +1 -1
  382. package/packages/cli/dist/main.d.ts +2 -0
  383. package/packages/cli/dist/main.d.ts.map +1 -1
  384. package/packages/cli/dist/main.js +18 -1
  385. package/packages/cli/dist/main.js.map +1 -1
  386. package/packages/core/dist/.tsbuildinfo +1 -1
  387. package/packages/core/dist/agents/catalog.d.ts +2 -0
  388. package/packages/core/dist/agents/catalog.d.ts.map +1 -1
  389. package/packages/core/dist/agents/catalog.js +1 -0
  390. package/packages/core/dist/agents/catalog.js.map +1 -1
  391. package/packages/core/dist/agents/edit.d.ts +2 -0
  392. package/packages/core/dist/agents/edit.d.ts.map +1 -1
  393. package/packages/core/dist/agents/edit.js +3 -1
  394. package/packages/core/dist/agents/edit.js.map +1 -1
  395. package/packages/core/dist/agents/frontmatter.d.ts +11 -0
  396. package/packages/core/dist/agents/frontmatter.d.ts.map +1 -1
  397. package/packages/core/dist/agents/frontmatter.js +7 -0
  398. package/packages/core/dist/agents/frontmatter.js.map +1 -1
  399. package/packages/core/dist/index.d.ts +1 -0
  400. package/packages/core/dist/index.d.ts.map +1 -1
  401. package/packages/core/dist/index.js +1 -0
  402. package/packages/core/dist/index.js.map +1 -1
  403. package/packages/core/dist/plugin/index.d.ts +3 -0
  404. package/packages/core/dist/plugin/index.d.ts.map +1 -1
  405. package/packages/core/dist/plugin/index.js +3 -0
  406. package/packages/core/dist/plugin/index.js.map +1 -1
  407. package/packages/core/dist/plugin/version.d.ts +1 -1
  408. package/packages/core/dist/plugin/version.js +1 -1
  409. package/packages/core/dist/questions/store.d.ts +12 -0
  410. package/packages/core/dist/questions/store.d.ts.map +1 -1
  411. package/packages/core/dist/questions/store.js +11 -1
  412. package/packages/core/dist/questions/store.js.map +1 -1
  413. package/packages/core/dist/questions/types.d.ts +8 -0
  414. package/packages/core/dist/questions/types.d.ts.map +1 -1
  415. package/packages/core/dist/questions/types.js +15 -0
  416. package/packages/core/dist/questions/types.js.map +1 -1
  417. package/packages/core/dist/queue/jobs.d.ts +8 -0
  418. package/packages/core/dist/queue/jobs.d.ts.map +1 -1
  419. package/packages/core/dist/queue/jobs.js +9 -3
  420. package/packages/core/dist/queue/jobs.js.map +1 -1
  421. package/packages/core/dist/queue/worker.d.ts +2 -0
  422. package/packages/core/dist/queue/worker.d.ts.map +1 -1
  423. package/packages/core/dist/queue/worker.js +2 -1
  424. package/packages/core/dist/queue/worker.js.map +1 -1
  425. package/packages/core/dist/registry.d.ts +7 -1
  426. package/packages/core/dist/registry.d.ts.map +1 -1
  427. package/packages/core/dist/registry.js +73 -11
  428. package/packages/core/dist/registry.js.map +1 -1
  429. package/packages/core/dist/routes.d.ts +153 -0
  430. package/packages/core/dist/routes.d.ts.map +1 -0
  431. package/packages/core/dist/routes.js +47 -0
  432. package/packages/core/dist/routes.js.map +1 -0
  433. package/packages/core/dist/scheduler/missions.d.ts +5 -3
  434. package/packages/core/dist/scheduler/missions.d.ts.map +1 -1
  435. package/packages/core/dist/scheduler/missions.js +9 -7
  436. package/packages/core/dist/scheduler/missions.js.map +1 -1
  437. package/packages/core/dist/scheduler/types.d.ts +7 -0
  438. package/packages/core/dist/scheduler/types.d.ts.map +1 -1
  439. package/packages/core/dist/scheduler/types.js +1 -0
  440. package/packages/core/dist/scheduler/types.js.map +1 -1
  441. package/packages/core/dist/tools.d.ts +59 -2
  442. package/packages/core/dist/tools.d.ts.map +1 -1
  443. package/packages/core/dist/tools.js.map +1 -1
  444. package/packages/core/migrations/075_access_providers.sql +43 -0
  445. package/packages/core/migrations/076_mission_browser.sql +7 -0
  446. package/packages/gateway/dist/.tsbuildinfo +1 -1
  447. package/packages/gateway/dist/agents/canvas.d.ts +12 -12
  448. package/packages/gateway/dist/agents/catalogue-package.d.ts +38 -20
  449. package/packages/gateway/dist/agents/catalogue-package.d.ts.map +1 -1
  450. package/packages/gateway/dist/agents/catalogue-package.js +6 -0
  451. package/packages/gateway/dist/agents/catalogue-package.js.map +1 -1
  452. package/packages/gateway/dist/agents/delegation.d.ts +10 -0
  453. package/packages/gateway/dist/agents/delegation.d.ts.map +1 -1
  454. package/packages/gateway/dist/agents/delegation.js +1 -0
  455. package/packages/gateway/dist/agents/delegation.js.map +1 -1
  456. package/packages/gateway/dist/agents/platform-catalogue.d.ts +7 -1
  457. package/packages/gateway/dist/agents/platform-catalogue.d.ts.map +1 -1
  458. package/packages/gateway/dist/agents/platform-catalogue.js +15 -6
  459. package/packages/gateway/dist/agents/platform-catalogue.js.map +1 -1
  460. package/packages/gateway/dist/bootstrap.d.ts.map +1 -1
  461. package/packages/gateway/dist/bootstrap.js +8 -0
  462. package/packages/gateway/dist/bootstrap.js.map +1 -1
  463. package/packages/gateway/dist/browser-host.d.ts +30 -1
  464. package/packages/gateway/dist/browser-host.d.ts.map +1 -1
  465. package/packages/gateway/dist/browser-host.js +56 -1
  466. package/packages/gateway/dist/browser-host.js.map +1 -1
  467. package/packages/gateway/dist/chat/session.d.ts.map +1 -1
  468. package/packages/gateway/dist/chat/session.js +9 -5
  469. package/packages/gateway/dist/chat/session.js.map +1 -1
  470. package/packages/gateway/dist/index.d.ts +2 -1
  471. package/packages/gateway/dist/index.d.ts.map +1 -1
  472. package/packages/gateway/dist/index.js +2 -1
  473. package/packages/gateway/dist/index.js.map +1 -1
  474. package/packages/gateway/dist/missions/execute.d.ts +34 -1
  475. package/packages/gateway/dist/missions/execute.d.ts.map +1 -1
  476. package/packages/gateway/dist/missions/execute.js +92 -8
  477. package/packages/gateway/dist/missions/execute.js.map +1 -1
  478. package/packages/gateway/dist/missions/parked.d.ts +133 -0
  479. package/packages/gateway/dist/missions/parked.d.ts.map +1 -0
  480. package/packages/gateway/dist/missions/parked.js +249 -0
  481. package/packages/gateway/dist/missions/parked.js.map +1 -0
  482. package/packages/gateway/dist/serve.d.ts +7 -0
  483. package/packages/gateway/dist/serve.d.ts.map +1 -1
  484. package/packages/gateway/dist/serve.js +49 -9
  485. package/packages/gateway/dist/serve.js.map +1 -1
  486. package/packages/gateway/dist/surfaces/browser-cards.d.ts +18 -0
  487. package/packages/gateway/dist/surfaces/browser-cards.d.ts.map +1 -0
  488. package/packages/gateway/dist/surfaces/browser-cards.js +42 -0
  489. package/packages/gateway/dist/surfaces/browser-cards.js.map +1 -0
  490. package/packages/gateway/dist/surfaces/browser-continuation.js +1 -1
  491. package/packages/gateway/dist/surfaces/browser-continuation.js.map +1 -1
  492. package/packages/gateway/dist/surfaces/owner-request.d.ts +6 -0
  493. package/packages/gateway/dist/surfaces/owner-request.d.ts.map +1 -1
  494. package/packages/gateway/dist/surfaces/owner-request.js +7 -1
  495. package/packages/gateway/dist/surfaces/owner-request.js.map +1 -1
  496. package/packages/gateway/dist/system-context.d.ts.map +1 -1
  497. package/packages/gateway/dist/system-context.js +6 -7
  498. package/packages/gateway/dist/system-context.js.map +1 -1
  499. package/packages/gateway/dist/telegram/browser-view.d.ts +17 -17
  500. package/packages/gateway/dist/telegram/browser-view.d.ts.map +1 -1
  501. package/packages/gateway/dist/telegram/browser-view.js +33 -37
  502. package/packages/gateway/dist/telegram/browser-view.js.map +1 -1
  503. package/packages/gateway/dist/telegram/channel.d.ts.map +1 -1
  504. package/packages/gateway/dist/telegram/channel.js +17 -1
  505. package/packages/gateway/dist/telegram/channel.js.map +1 -1
  506. package/packages/gateway/dist/telegram/main.d.ts.map +1 -1
  507. package/packages/gateway/dist/telegram/main.js +11 -3
  508. package/packages/gateway/dist/telegram/main.js.map +1 -1
  509. package/packages/gateway/dist/telegram/surface.d.ts.map +1 -1
  510. package/packages/gateway/dist/telegram/surface.js +10 -0
  511. package/packages/gateway/dist/telegram/surface.js.map +1 -1
  512. package/packages/gateway/dist/tips/facts.d.ts +8 -0
  513. package/packages/gateway/dist/tips/facts.d.ts.map +1 -1
  514. package/packages/gateway/dist/tips/facts.js +8 -2
  515. package/packages/gateway/dist/tips/facts.js.map +1 -1
  516. package/packages/gateway/dist/tips/rules.d.ts +2 -0
  517. package/packages/gateway/dist/tips/rules.d.ts.map +1 -1
  518. package/packages/gateway/dist/tips/rules.js +15 -0
  519. package/packages/gateway/dist/tips/rules.js.map +1 -1
  520. package/packages/gateway/dist/web/access/arrival.d.ts +24 -0
  521. package/packages/gateway/dist/web/access/arrival.d.ts.map +1 -0
  522. package/packages/gateway/dist/web/access/arrival.js +18 -0
  523. package/packages/gateway/dist/web/access/arrival.js.map +1 -0
  524. package/packages/gateway/dist/web/access/cloudflare-api.d.ts +124 -0
  525. package/packages/gateway/dist/web/access/cloudflare-api.d.ts.map +1 -0
  526. package/packages/gateway/dist/web/access/cloudflare-api.js +206 -0
  527. package/packages/gateway/dist/web/access/cloudflare-api.js.map +1 -0
  528. package/packages/gateway/dist/web/access/cloudflare-setup.d.ts +163 -0
  529. package/packages/gateway/dist/web/access/cloudflare-setup.d.ts.map +1 -0
  530. package/packages/gateway/dist/web/access/cloudflare-setup.js +438 -0
  531. package/packages/gateway/dist/web/access/cloudflare-setup.js.map +1 -0
  532. package/packages/gateway/dist/web/access/cloudflare-token.d.ts +31 -0
  533. package/packages/gateway/dist/web/access/cloudflare-token.d.ts.map +1 -0
  534. package/packages/gateway/dist/web/access/cloudflare-token.js +74 -0
  535. package/packages/gateway/dist/web/access/cloudflare-token.js.map +1 -0
  536. package/packages/gateway/dist/web/access/cloudflare.d.ts +145 -0
  537. package/packages/gateway/dist/web/access/cloudflare.d.ts.map +1 -0
  538. package/packages/gateway/dist/web/access/cloudflare.js +474 -0
  539. package/packages/gateway/dist/web/access/cloudflare.js.map +1 -0
  540. package/packages/gateway/dist/web/access/index.d.ts +9 -0
  541. package/packages/gateway/dist/web/access/index.d.ts.map +1 -0
  542. package/packages/gateway/dist/web/access/index.js +9 -0
  543. package/packages/gateway/dist/web/access/index.js.map +1 -0
  544. package/packages/gateway/dist/web/access/ingress.d.ts +30 -0
  545. package/packages/gateway/dist/web/access/ingress.d.ts.map +1 -0
  546. package/packages/gateway/dist/web/access/ingress.js +76 -0
  547. package/packages/gateway/dist/web/access/ingress.js.map +1 -0
  548. package/packages/gateway/dist/web/access/provider.d.ts +173 -0
  549. package/packages/gateway/dist/web/access/provider.d.ts.map +1 -0
  550. package/packages/gateway/dist/web/access/provider.js +11 -0
  551. package/packages/gateway/dist/web/access/provider.js.map +1 -0
  552. package/packages/gateway/dist/web/access/registry.d.ts +33 -0
  553. package/packages/gateway/dist/web/access/registry.d.ts.map +1 -0
  554. package/packages/gateway/dist/web/access/registry.js +32 -0
  555. package/packages/gateway/dist/web/access/registry.js.map +1 -0
  556. package/packages/gateway/dist/web/{tailscale.d.ts → access/tailscale.d.ts} +27 -0
  557. package/packages/gateway/dist/web/access/tailscale.d.ts.map +1 -0
  558. package/packages/gateway/dist/web/{tailscale.js → access/tailscale.js} +118 -3
  559. package/packages/gateway/dist/web/access/tailscale.js.map +1 -0
  560. package/packages/gateway/dist/web/agents.d.ts +2 -0
  561. package/packages/gateway/dist/web/agents.d.ts.map +1 -1
  562. package/packages/gateway/dist/web/agents.js +19 -1
  563. package/packages/gateway/dist/web/agents.js.map +1 -1
  564. package/packages/gateway/dist/web/api-routes.d.ts +4 -3
  565. package/packages/gateway/dist/web/api-routes.d.ts.map +1 -1
  566. package/packages/gateway/dist/web/api-routes.js +96 -17
  567. package/packages/gateway/dist/web/api-routes.js.map +1 -1
  568. package/packages/gateway/dist/web/attention.d.ts.map +1 -1
  569. package/packages/gateway/dist/web/attention.js +11 -3
  570. package/packages/gateway/dist/web/attention.js.map +1 -1
  571. package/packages/gateway/dist/web/chat.d.ts +23 -0
  572. package/packages/gateway/dist/web/chat.d.ts.map +1 -1
  573. package/packages/gateway/dist/web/chat.js +62 -2
  574. package/packages/gateway/dist/web/chat.js.map +1 -1
  575. package/packages/gateway/dist/web/client-key.d.ts +3 -0
  576. package/packages/gateway/dist/web/client-key.d.ts.map +1 -1
  577. package/packages/gateway/dist/web/client-key.js +8 -1
  578. package/packages/gateway/dist/web/client-key.js.map +1 -1
  579. package/packages/gateway/dist/web/extension.d.ts +9 -1
  580. package/packages/gateway/dist/web/extension.d.ts.map +1 -1
  581. package/packages/gateway/dist/web/extension.js +61 -1
  582. package/packages/gateway/dist/web/extension.js.map +1 -1
  583. package/packages/gateway/dist/web/http.d.ts +7 -0
  584. package/packages/gateway/dist/web/http.d.ts.map +1 -1
  585. package/packages/gateway/dist/web/http.js +15 -1
  586. package/packages/gateway/dist/web/http.js.map +1 -1
  587. package/packages/gateway/dist/web/index.d.ts +1 -1
  588. package/packages/gateway/dist/web/index.d.ts.map +1 -1
  589. package/packages/gateway/dist/web/index.js +1 -1
  590. package/packages/gateway/dist/web/index.js.map +1 -1
  591. package/packages/gateway/dist/web/onboarding.js +1 -1
  592. package/packages/gateway/dist/web/onboarding.js.map +1 -1
  593. package/packages/gateway/dist/web/server.d.ts +38 -2
  594. package/packages/gateway/dist/web/server.d.ts.map +1 -1
  595. package/packages/gateway/dist/web/server.js +576 -145
  596. package/packages/gateway/dist/web/server.js.map +1 -1
  597. package/packages/gateway/dist/web/sessions.d.ts +24 -14
  598. package/packages/gateway/dist/web/sessions.d.ts.map +1 -1
  599. package/packages/gateway/dist/web/sessions.js +42 -14
  600. package/packages/gateway/dist/web/sessions.js.map +1 -1
  601. package/packages/gateway/dist/web/signed-out.d.ts +10 -0
  602. package/packages/gateway/dist/web/signed-out.d.ts.map +1 -1
  603. package/packages/gateway/dist/web/signed-out.js +47 -0
  604. package/packages/gateway/dist/web/signed-out.js.map +1 -1
  605. package/packages/install/dist/.tsbuildinfo +1 -1
  606. package/packages/runtime/dist/.tsbuildinfo +1 -1
  607. package/packages/runtime/dist/delegate.d.ts +8 -0
  608. package/packages/runtime/dist/delegate.d.ts.map +1 -1
  609. package/packages/runtime/dist/delegate.js +19 -1
  610. package/packages/runtime/dist/delegate.js.map +1 -1
  611. package/packages/runtime/dist/loop.d.ts +2 -0
  612. package/packages/runtime/dist/loop.d.ts.map +1 -1
  613. package/packages/runtime/dist/loop.js +18 -4
  614. package/packages/runtime/dist/loop.js.map +1 -1
  615. package/packages/tools/artifacts/dist/.tsbuildinfo +1 -1
  616. package/packages/tools/browser/dist/.tsbuildinfo +1 -1
  617. package/packages/tools/browser/dist/availability.d.ts +2 -2
  618. package/packages/tools/browser/dist/availability.d.ts.map +1 -1
  619. package/packages/tools/browser/dist/availability.js +2 -2
  620. package/packages/tools/browser/dist/availability.js.map +1 -1
  621. package/packages/tools/browser/dist/controller.d.ts +76 -58
  622. package/packages/tools/browser/dist/controller.d.ts.map +1 -1
  623. package/packages/tools/browser/dist/controller.js +751 -219
  624. package/packages/tools/browser/dist/controller.js.map +1 -1
  625. package/packages/tools/browser/dist/extension.d.ts +12 -0
  626. package/packages/tools/browser/dist/extension.d.ts.map +1 -1
  627. package/packages/tools/browser/dist/extension.js +8 -0
  628. package/packages/tools/browser/dist/extension.js.map +1 -1
  629. package/packages/tools/browser/dist/index.d.ts +13 -5
  630. package/packages/tools/browser/dist/index.d.ts.map +1 -1
  631. package/packages/tools/browser/dist/index.js +29 -12
  632. package/packages/tools/browser/dist/index.js.map +1 -1
  633. package/packages/tools/browser/dist/manager.d.ts +39 -21
  634. package/packages/tools/browser/dist/manager.d.ts.map +1 -1
  635. package/packages/tools/browser/dist/manager.js +229 -136
  636. package/packages/tools/browser/dist/manager.js.map +1 -1
  637. package/packages/tools/browser/dist/routes.d.ts +130 -0
  638. package/packages/tools/browser/dist/routes.d.ts.map +1 -0
  639. package/packages/tools/browser/dist/routes.js +283 -0
  640. package/packages/tools/browser/dist/routes.js.map +1 -0
  641. package/packages/tools/browser/dist/service.d.ts +157 -114
  642. package/packages/tools/browser/dist/service.d.ts.map +1 -1
  643. package/packages/tools/browser/dist/service.js +379 -390
  644. package/packages/tools/browser/dist/service.js.map +1 -1
  645. package/packages/tools/browser/dist/settings.d.ts +88 -0
  646. package/packages/tools/browser/dist/settings.d.ts.map +1 -0
  647. package/packages/tools/browser/dist/settings.js +86 -0
  648. package/packages/tools/browser/dist/settings.js.map +1 -0
  649. package/packages/tools/browser/dist/telemetry.d.ts +203 -0
  650. package/packages/tools/browser/dist/telemetry.d.ts.map +1 -0
  651. package/packages/tools/browser/dist/telemetry.js +142 -0
  652. package/packages/tools/browser/dist/telemetry.js.map +1 -0
  653. package/packages/tools/browser/dist/types.d.ts +14 -3
  654. package/packages/tools/browser/dist/types.d.ts.map +1 -1
  655. package/packages/tools/browser/dist/types.js +9 -9
  656. package/packages/tools/browser/dist/types.js.map +1 -1
  657. package/packages/tools/email/dist/.tsbuildinfo +1 -1
  658. package/packages/tools/host/dist/.tsbuildinfo +1 -1
  659. package/packages/tools/mcp/dist/.tsbuildinfo +1 -1
  660. package/packages/tools/memory/dist/.tsbuildinfo +1 -1
  661. package/packages/tools/web/dist/.tsbuildinfo +1 -1
  662. package/packages/web/dist/assets/index-Bac-CdD-.css +1 -0
  663. package/packages/web/dist/assets/index-DI8bp_D7.js +146 -0
  664. package/packages/web/dist/assets/{lottie_light-CKJ88Yuk.js → lottie_light-CuiSMqnl.js} +1 -1
  665. package/packages/web/dist/build.json +1 -1
  666. package/packages/web/dist/index.html +2 -2
  667. package/packages/web/dist/precache.json +4 -4
  668. package/node_modules/@buddi/gateway/dist/web/apps.d.ts +0 -18
  669. package/node_modules/@buddi/gateway/dist/web/apps.d.ts.map +0 -1
  670. package/node_modules/@buddi/gateway/dist/web/apps.js +0 -84
  671. package/node_modules/@buddi/gateway/dist/web/apps.js.map +0 -1
  672. package/node_modules/@buddi/gateway/dist/web/tailscale.d.ts.map +0 -1
  673. package/node_modules/@buddi/gateway/dist/web/tailscale.js.map +0 -1
  674. package/node_modules/@buddi/tool-browser/dist/computer.d.ts +0 -153
  675. package/node_modules/@buddi/tool-browser/dist/computer.d.ts.map +0 -1
  676. package/node_modules/@buddi/tool-browser/dist/computer.js +0 -392
  677. package/node_modules/@buddi/tool-browser/dist/computer.js.map +0 -1
  678. package/node_modules/@buddi/tool-browser/dist/native/buddi-computer +0 -0
  679. package/node_modules/pino/test/browser-bindings.test.js +0 -114
  680. package/node_modules/pino/test/browser-redaction.test.js +0 -264
  681. package/node_modules/pino/test/browser-set-bindings.test.js +0 -99
  682. package/node_modules/pino/test/caller.test.js +0 -20
  683. package/node_modules/pino/test/fixtures/caller-loop.js +0 -6
  684. package/node_modules/pino/test/smoke.js +0 -59
  685. package/node_modules/pino/test/types/pino-import.tst.cts +0 -30
  686. package/node_modules/pino/test/types/pino-import.tst.js +0 -73
  687. package/node_modules/pino/test/types/pino-multistream.tst.ts +0 -49
  688. package/node_modules/pino/test/types/pino-top-export.tst.ts +0 -32
  689. package/node_modules/pino/test/types/pino-type-only.tst.ts +0 -77
  690. package/node_modules/pino/test/types/tsconfig.json +0 -10
  691. package/packages/gateway/dist/web/apps.d.ts +0 -18
  692. package/packages/gateway/dist/web/apps.d.ts.map +0 -1
  693. package/packages/gateway/dist/web/apps.js +0 -84
  694. package/packages/gateway/dist/web/apps.js.map +0 -1
  695. package/packages/gateway/dist/web/tailscale.d.ts.map +0 -1
  696. package/packages/gateway/dist/web/tailscale.js.map +0 -1
  697. package/packages/tools/browser/dist/computer.d.ts +0 -153
  698. package/packages/tools/browser/dist/computer.d.ts.map +0 -1
  699. package/packages/tools/browser/dist/computer.js +0 -392
  700. package/packages/tools/browser/dist/computer.js.map +0 -1
  701. package/packages/tools/browser/dist/native/buddi-computer +0 -0
  702. package/packages/web/dist/assets/index-CN1AXMI1.css +0 -1
  703. package/packages/web/dist/assets/index-CQRE9LJX.js +0 -145
@@ -0,0 +1,438 @@
1
+ import { CloudflareApiError, CONNECTOR_TOKEN } from './cloudflare-api.js';
2
+ import { plausibleEmail, validateCloudflareInput } from './cloudflare.js';
3
+ /** Where the record of what buddi made lives (a web setting). Ids only, never a token. */
4
+ export const CLOUDFLARE_SETUP_KEY = 'access.cloudflare.setup';
5
+ /** The owner secret holding the API token. */
6
+ export const CLOUDFLARE_TOKEN_SECRET = 'CLOUDFLARE_API_TOKEN';
7
+ export const tunnelNameFor = (host) => `buddi-${host}`;
8
+ export const policyNameFor = (host) => `buddi — ${host}`;
9
+ export const appNameFor = (host) => `buddi (${host})`;
10
+ /** The DNS record's comment: buddi's tag on it. */
11
+ /** After the Done line: a new Access application takes a minute or two to reach Cloudflare's sign-in page. */
12
+ export const SETUP_PROPAGATION = 'Cloudflare needs a minute or two before the first sign-in works; if its page says it can’t find the application, reload.';
13
+ export const DNS_COMMENT = 'Made by buddi for Sign in from elsewhere. Remove it from buddi.';
14
+ const ownsRecord = (r) => (r.comment ?? '').startsWith('Made by buddi');
15
+ /** How often the tunnel's health is asked, and for how long. */
16
+ export const HEALTH_POLL_MS = 5_000;
17
+ export const HEALTH_WAIT_MS = 30 * 60_000;
18
+ /** In this process, the one setup or removal going, or null. */
19
+ let operation = null;
20
+ /** Claim the one operation slot, synchronously; null when another holds it. */
21
+ export function claimSetupOperation(kind) {
22
+ if (operation)
23
+ return null;
24
+ const mine = { kind };
25
+ operation = mine;
26
+ return { kind, release: () => { if (operation === mine)
27
+ operation = null; } };
28
+ }
29
+ /** What holds the slot, or null. */
30
+ export const setupOperation = () => operation?.kind ?? null;
31
+ /** The sentence for a second caller, by what is going. */
32
+ export function setupBusySentence(kind) {
33
+ return kind === 'remove'
34
+ ? 'buddi is removing what it made in Cloudflare. Wait for it to finish, then try again.'
35
+ : 'A Cloudflare setup is already running. Wait for it, or stop it, then try again.';
36
+ }
37
+ /** A hostname, lower case, or null. */
38
+ export function normalizeHost(raw) {
39
+ const value = raw.trim().toLowerCase().replace(/^https?:\/\//, '').replace(/\/.*$/, '').replace(/\.$/, '');
40
+ if (value.length > 253 || !value.includes('.'))
41
+ return null;
42
+ return value.split('.').every((label) => /^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$/.test(label)) ? value : null;
43
+ }
44
+ /** The input checked: what is wrong with it, or null. */
45
+ export function checkSetupInput(input) {
46
+ if (normalizeHost(input.host) === null)
47
+ return 'The hostname must be a name like buddi.example.com, on a domain in your Cloudflare account.';
48
+ if (!plausibleEmail(input.email.trim()))
49
+ return 'That is not an email address.';
50
+ if (input.zone !== undefined && input.zone.trim() !== '' && normalizeHost(input.zone) === null)
51
+ return 'The zone must be a domain like example.com.';
52
+ return null;
53
+ }
54
+ /** The line to run, for this platform. */
55
+ export function installFor(token, platform) {
56
+ // The line goes into an owner's sudo: never anything but a token in it.
57
+ if (!CONNECTOR_TOKEN.test(token))
58
+ throw new CloudflareApiError('Cloudflare answered without the tunnel’s connector token.', 200, []);
59
+ if (platform === 'win32') {
60
+ return { command: `cloudflared.exe service install ${token}`, note: 'Run it in a terminal opened as administrator, after installing cloudflared from Cloudflare’s downloads page.' };
61
+ }
62
+ if (platform === 'darwin') {
63
+ return {
64
+ command: `sudo cloudflared service install ${token}`,
65
+ note: 'No cloudflared yet? brew install cloudflared first. If sudo can’t find it, use its full path: /opt/homebrew/bin/cloudflared (on an Intel Mac, /usr/local/bin/cloudflared).',
66
+ };
67
+ }
68
+ return {
69
+ command: `sudo cloudflared service install ${token}`,
70
+ note: 'No cloudflared yet? Install it from Cloudflare’s .deb or its package repository first.',
71
+ };
72
+ }
73
+ export function uninstallFor(platform) {
74
+ return platform === 'win32' ? 'cloudflared.exe service uninstall' : 'sudo cloudflared service uninstall';
75
+ }
76
+ const LABELS = {
77
+ token: 'Checking the token',
78
+ tunnel: 'Creating the tunnel',
79
+ route: 'Routing the hostname',
80
+ dns: 'Adding the DNS record',
81
+ access: 'Creating the Access application',
82
+ save: 'Filling in buddi’s settings',
83
+ connector: 'Install the connector',
84
+ healthy: 'Waiting for the tunnel to connect',
85
+ test: 'Testing the setup',
86
+ };
87
+ const ORDER = ['token', 'tunnel', 'route', 'dns', 'access', 'save', 'connector', 'healthy', 'test'];
88
+ export function freshProgress(host = '', email = '') {
89
+ return {
90
+ state: 'idle', host, email,
91
+ steps: ORDER.map((id) => ({ id, state: 'next', text: LABELS[id] })),
92
+ install: null, error: null, url: null, removed: [], uninstall: null, adoptable: false,
93
+ };
94
+ }
95
+ function sentence(error) {
96
+ if (error instanceof CloudflareApiError || error instanceof SetupError)
97
+ return error.message;
98
+ // Anything else is a defect, and its message may hold anything: say little.
99
+ return 'Something went wrong talking to Cloudflare. Try again; nothing buddi made is lost.';
100
+ }
101
+ class SetupError extends Error {
102
+ }
103
+ const realSleep = (ms, signal) => new Promise((resolve) => {
104
+ const timer = setTimeout(resolve, ms);
105
+ signal?.addEventListener('abort', () => { clearTimeout(timer); resolve(); }, { once: true });
106
+ });
107
+ /**
108
+ * Run the setup. Never throws: the progress it ends on says how it went.
109
+ * `onProgress` gets a copy at every change.
110
+ */
111
+ export async function runCloudflareSetup(input, deps, onProgress = () => { }) {
112
+ const lease = deps.lease ?? claimSetupOperation('setup');
113
+ if (!lease) {
114
+ const p = freshProgress(input.host.trim(), input.email.trim());
115
+ p.state = 'failed';
116
+ p.error = setupBusySentence(setupOperation());
117
+ onProgress(structuredClone(p));
118
+ return p;
119
+ }
120
+ try {
121
+ return await setupRun(input, deps, onProgress);
122
+ }
123
+ finally {
124
+ if (!deps.lease)
125
+ lease.release();
126
+ }
127
+ }
128
+ async function setupRun(input, deps, onProgress) {
129
+ const host = normalizeHost(input.host) ?? input.host.trim();
130
+ const email = input.email.trim();
131
+ const p = freshProgress(host, email);
132
+ p.state = 'running';
133
+ const emit = () => onProgress(structuredClone(p));
134
+ const step = (id) => p.steps.find((s) => s.id === id);
135
+ const begin = (id) => { const s = step(id); s.state = 'now'; s.text = LABELS[id]; emit(); };
136
+ const finish = (id, text) => { const s = step(id); s.state = 'done'; s.text = text; emit(); };
137
+ const sleep = deps.sleep ?? realSleep;
138
+ const now = deps.now ?? (() => new Date());
139
+ let current = 'token';
140
+ const at = (id) => { current = id; begin(id); };
141
+ const invalid = checkSetupInput(input);
142
+ if (invalid) {
143
+ const s = step('token');
144
+ s.state = 'failed';
145
+ s.why = invalid;
146
+ p.state = 'failed';
147
+ p.error = invalid;
148
+ emit();
149
+ return p;
150
+ }
151
+ try {
152
+ const { api } = deps;
153
+ // 1. The token, and the zone and account it reaches.
154
+ at('token');
155
+ // A record for another hostname is never overwritten: its ids are the
156
+ // only way Remove finds what buddi made there.
157
+ const earlier = await deps.readRecord();
158
+ if (earlier && earlier.host !== host && (earlier.tunnelId || earlier.dnsRecordId || earlier.policyId || earlier.appId)) {
159
+ throw new SetupError(`buddi already set up ${earlier.host}. Remove what it made first, or set up the same hostname again.`);
160
+ }
161
+ await api.verifyToken();
162
+ const zones = await api.zones();
163
+ const wanted = input.zone?.trim() ? normalizeHost(input.zone) : null;
164
+ const candidates = zones.filter((z) => host === z.name || host.endsWith(`.${z.name}`));
165
+ const zone = wanted
166
+ ? candidates.find((z) => z.name === wanted)
167
+ : candidates.sort((a, b) => b.name.length - a.name.length)[0];
168
+ if (!zone) {
169
+ if (wanted && zones.some((z) => z.name === wanted))
170
+ throw new SetupError(`${host} is not a name on ${wanted}.`);
171
+ if (zones.length === 0)
172
+ throw new SetupError(`The token can’t see any domain. Give it ${'Zone · DNS · Edit'} on the zone of ${host}, then try again.`);
173
+ throw new SetupError(`None of the domains this token can edit holds ${host}. It can edit ${zones.slice(0, 5).map((z) => z.name).join(', ')}${zones.length > 5 ? ', …' : ''}.`);
174
+ }
175
+ const accountId = zone.account.id;
176
+ let teamDomain;
177
+ try {
178
+ teamDomain = await api.teamDomain(accountId);
179
+ }
180
+ catch (error) {
181
+ if (error instanceof CloudflareApiError && error.status === 404) {
182
+ throw new SetupError('Zero Trust isn’t set up on this Cloudflare account yet. Open Zero Trust in Cloudflare’s dashboard once and pick a team name, then try again.');
183
+ }
184
+ throw error;
185
+ }
186
+ if (!/^[a-z0-9-]+\.cloudflareaccess\.com$/.test(teamDomain)) {
187
+ throw new SetupError('Zero Trust isn’t set up on this Cloudflare account yet. Open Zero Trust in Cloudflare’s dashboard once and pick a team name, then try again.');
188
+ }
189
+ const record = { host, email, zone: { id: zone.id, name: zone.name }, accountId, teamDomain, at: now().toISOString() };
190
+ const previous = await deps.readRecord();
191
+ if (previous && previous.host === host) {
192
+ Object.assign(record, { tunnelId: previous.tunnelId, dnsRecordId: previous.dnsRecordId, policyId: previous.policyId, appId: previous.appId, aud: previous.aud });
193
+ }
194
+ await deps.saveRecord(record);
195
+ const adopt = input.adopt === true;
196
+ /** Stop at an object buddi didn't make, offering "Use it anyway". */
197
+ const notOurs = (what) => {
198
+ p.adoptable = true;
199
+ throw new SetupError(`${what} buddi didn’t make it. Use it anyway to let buddi take it over, or delete it in Cloudflare first.`);
200
+ };
201
+ finish('token', `Token checked · ${zone.name} · team ${teamDomain}`);
202
+ // 2. The tunnel.
203
+ at('tunnel');
204
+ const name = tunnelNameFor(host);
205
+ let tunnel = await api.findTunnel(accountId, name);
206
+ if (tunnel && tunnel.id !== record.tunnelId && !adopt)
207
+ notOurs(`There is already a tunnel named ${name} in this Cloudflare account, and`);
208
+ const reusedTunnel = tunnel !== null;
209
+ tunnel ??= await api.createTunnel(accountId, name);
210
+ record.tunnelId = tunnel.id;
211
+ await deps.saveRecord(record);
212
+ finish('tunnel', `Tunnel ${name} ${reusedTunnel ? 'found' : 'created'}`);
213
+ // 3. Its ingress: the hostname to the ingress listener, nothing else.
214
+ at('route');
215
+ const service = `http://127.0.0.1:${deps.ingressPort}`;
216
+ await api.putTunnelConfig(accountId, tunnel.id, host, service);
217
+ finish('route', `${host} → ${service}`);
218
+ // 4. DNS: a proxied CNAME to the tunnel.
219
+ at('dns');
220
+ const target = `${tunnel.id}.cfargotunnel.com`;
221
+ const records = (await api.dnsRecords(zone.id, host)).filter((r) => r.name.toLowerCase() === host);
222
+ let dnsWords = `DNS record ${host} added`;
223
+ const pointing = records.find((r) => r.type === 'CNAME' && r.content.toLowerCase() === target);
224
+ if (pointing) {
225
+ if (pointing.id !== record.dnsRecordId && !adopt)
226
+ notOurs(`${host} already has a DNS record to this tunnel, and`);
227
+ record.dnsRecordId = pointing.id;
228
+ dnsWords = `DNS record ${host} found`;
229
+ }
230
+ else {
231
+ const others = records.filter((r) => r.id !== record.dnsRecordId);
232
+ const foreign = others.find((r) => !ownsRecord(r));
233
+ if (foreign) {
234
+ throw new SetupError(`${host} already has a DNS record (${foreign.type} to ${foreign.content}). Pick another hostname, or delete that record in Cloudflare first.`);
235
+ }
236
+ if (others.length > 0 && !adopt)
237
+ notOurs(`${host} already has a DNS record tagged as buddi’s, but`);
238
+ // buddi's own record for an older tunnel goes; the new one replaces it.
239
+ for (const old of records)
240
+ await api.deleteDnsRecord(zone.id, old.id);
241
+ record.dnsRecordId = (await api.createCname(zone.id, host, target, DNS_COMMENT)).id;
242
+ }
243
+ await deps.saveRecord(record);
244
+ finish('dns', dnsWords);
245
+ // 5. The Allow policy and the Access application.
246
+ at('access');
247
+ const policyName = policyNameFor(host);
248
+ const allPolicies = await api.policies(accountId);
249
+ const namedPolicy = allPolicies.find((x) => x.name === policyName);
250
+ const ourPolicy = allPolicies.find((x) => x.id === record.policyId);
251
+ if (namedPolicy && !ourPolicy && !adopt)
252
+ notOurs(`There is already an Access policy named “${policyName}”, and`);
253
+ const existingPolicy = ourPolicy ?? namedPolicy;
254
+ const policy = existingPolicy
255
+ ? await api.updatePolicy(accountId, existingPolicy.id, policyName, email)
256
+ : await api.createPolicy(accountId, policyName, email);
257
+ record.policyId = policy.id;
258
+ await deps.saveRecord(record);
259
+ const appName = appNameFor(host);
260
+ const apps = await api.apps(accountId);
261
+ const sameHost = apps.filter((a) => (a.domain ?? '').toLowerCase().replace(/\/.*$/, '') === host);
262
+ const foreignApp = sameHost.find((a) => a.name !== appName && a.id !== record.appId);
263
+ if (foreignApp) {
264
+ throw new SetupError(`There is already an Access application for ${host} (“${foreignApp.name}”). buddi won’t change it: delete it in Cloudflare, or use “I’ll do it myself” with its AUD tag.`);
265
+ }
266
+ const existingApp = sameHost.find((a) => a.id === record.appId) ?? sameHost.find((a) => a.name === appName);
267
+ if (existingApp && existingApp.id !== record.appId && !adopt)
268
+ notOurs(`There is already an Access application named “${appName}” for ${host}, and`);
269
+ const app = existingApp
270
+ ? await api.updateApp(accountId, existingApp.id, { name: appName, domain: host, policyId: policy.id })
271
+ : await api.createApp(accountId, { name: appName, domain: host, policyId: policy.id });
272
+ record.appId = app.id;
273
+ if (!app.aud) {
274
+ await deps.saveRecord(record);
275
+ throw new SetupError('Cloudflare made the Access application but gave no AUD tag. Try again.');
276
+ }
277
+ record.aud = app.aud;
278
+ await deps.saveRecord(record);
279
+ finish('access', `Access application · allows ${email} · 24 h sessions`);
280
+ // 6. buddi's own setting: on, for this team, application and email.
281
+ at('save');
282
+ const checked = validateCloudflareInput({ enabled: true, teamDomain, aud: app.aud, email, publicOrigin: `https://${host}` });
283
+ if (!checked.ok)
284
+ throw new SetupError(checked.error);
285
+ await deps.saveSetting(checked.value);
286
+ finish('save', 'buddi’s settings filled in');
287
+ // 7. The one command buddi does not run.
288
+ at('connector');
289
+ p.install = installFor(await api.tunnelToken(accountId, tunnel.id), deps.platform);
290
+ p.state = 'waiting';
291
+ emit();
292
+ // 8. Wait for cloudflared to connect.
293
+ const deadline = now().getTime() + (deps.waitMs ?? HEALTH_WAIT_MS);
294
+ let healthy = false;
295
+ let first = true;
296
+ while (!deps.signal?.aborted) {
297
+ const status = (await api.tunnel(accountId, tunnel.id)).status ?? '';
298
+ if (status === 'healthy' || status === 'degraded') {
299
+ healthy = true;
300
+ break;
301
+ }
302
+ if (first) {
303
+ first = false;
304
+ step('healthy').state = 'now';
305
+ emit();
306
+ }
307
+ if (now().getTime() >= deadline)
308
+ break;
309
+ await sleep(deps.pollMs ?? HEALTH_POLL_MS, deps.signal);
310
+ }
311
+ if (!healthy) {
312
+ if (deps.signal?.aborted) {
313
+ p.state = 'stopped';
314
+ p.error = 'Stopped waiting. Everything buddi made stays; run the command, then Set it up again to finish.';
315
+ emit();
316
+ return p;
317
+ }
318
+ current = 'healthy';
319
+ throw new SetupError('The tunnel hasn’t connected yet. Run the command above on this computer, then try again.');
320
+ }
321
+ finish('connector', 'Connector installed');
322
+ finish('healthy', 'Tunnel connected');
323
+ // 9. Test my setup.
324
+ at('test');
325
+ const tested = await deps.test(teamDomain);
326
+ if (!tested.ok)
327
+ throw new SetupError(tested.error ?? 'Cloudflare’s signing keys could not be fetched.');
328
+ finish('test', `${teamDomain} answered with ${tested.keys} signing key${tested.keys === 1 ? '' : 's'}`);
329
+ p.state = 'done';
330
+ p.url = `https://${host}`;
331
+ emit();
332
+ return p;
333
+ }
334
+ catch (error) {
335
+ const s = step(current);
336
+ s.state = 'failed';
337
+ s.why = sentence(error);
338
+ p.state = 'failed';
339
+ p.error = s.why;
340
+ emit();
341
+ return p;
342
+ }
343
+ }
344
+ /**
345
+ * Remove what buddi made: the Access application and policy, the DNS record
346
+ * and the tunnel whose ids the setup record holds, and nothing found by name.
347
+ * Each id leaves the record as its object goes, so Remove again retries only
348
+ * what is left. Turns signing in through Cloudflare off when the setting is
349
+ * the one setup filled in, and forgets the record. Never throws.
350
+ */
351
+ export async function removeCloudflareSetup(deps, onProgress = () => { }) {
352
+ const lease = deps.lease ?? claimSetupOperation('remove');
353
+ if (!lease) {
354
+ const p = freshProgress();
355
+ p.state = 'failed';
356
+ p.error = setupBusySentence(setupOperation());
357
+ onProgress(structuredClone(p));
358
+ return p;
359
+ }
360
+ try {
361
+ return await removeRun(deps, onProgress);
362
+ }
363
+ finally {
364
+ if (!deps.lease)
365
+ lease.release();
366
+ }
367
+ }
368
+ async function removeRun(deps, onProgress) {
369
+ const record = await deps.readRecord();
370
+ const host = record?.host ?? (deps.host ? normalizeHost(deps.host) : null) ?? '';
371
+ const p = freshProgress(host, record?.email ?? '');
372
+ p.state = 'removing';
373
+ p.steps = [];
374
+ const emit = () => onProgress(structuredClone(p));
375
+ emit();
376
+ if (!record) {
377
+ p.state = 'removed';
378
+ p.error = host
379
+ ? `buddi has no record of making anything in Cloudflare for ${host}, so it removes nothing. Delete what is there in Cloudflare by hand.`
380
+ : 'buddi has made nothing in Cloudflare to remove.';
381
+ emit();
382
+ return p;
383
+ }
384
+ const { api } = deps;
385
+ const failures = [];
386
+ const gone = (error) => error instanceof CloudflareApiError && error.status === 404;
387
+ const attempt = async (what, key, run) => {
388
+ const id = record[key];
389
+ if (!id)
390
+ return;
391
+ try {
392
+ await run(id);
393
+ p.removed.push(what);
394
+ emit();
395
+ }
396
+ catch (error) {
397
+ // Already deleted in Cloudflare: nothing left to remove.
398
+ if (!gone(error)) {
399
+ failures.push(`${what}: ${sentence(error)}`);
400
+ return;
401
+ }
402
+ }
403
+ record[key] = undefined;
404
+ await deps.saveRecord(record).catch(() => undefined);
405
+ };
406
+ const account = record.accountId;
407
+ const zone = record.zone.id;
408
+ await attempt('the Access application', 'appId', (id) => api.deleteApp(account, id));
409
+ await attempt('its policy', 'policyId', (id) => api.deletePolicy(account, id));
410
+ await attempt('the DNS record', 'dnsRecordId', (id) => api.deleteDnsRecord(zone, id));
411
+ await attempt('the tunnel', 'tunnelId', (id) => api.deleteTunnel(account, id));
412
+ // buddi's setting goes off when it is the one setup filled in.
413
+ try {
414
+ const setting = await deps.readSetting();
415
+ if (setting.enabled && (!record.aud || setting.aud === record.aud) && setting.publicOrigin === `https://${host}`) {
416
+ await deps.saveSetting({ ...setting, enabled: false, aud: '', teamDomain: '', publicOrigin: '' });
417
+ }
418
+ }
419
+ catch {
420
+ failures.push('buddi’s own setting could not be turned off; turn it off by hand.');
421
+ }
422
+ if (failures.length === 0)
423
+ await deps.saveRecord(null).catch(() => undefined);
424
+ p.state = 'removed';
425
+ p.uninstall = uninstallFor(deps.platform);
426
+ p.error = failures.length ? `Some of it is still there. ${failures.join(' ')} Try Remove again.` : null;
427
+ emit();
428
+ return p;
429
+ }
430
+ /** "a, b and c". */
431
+ export function removedInWords(items) {
432
+ if (items.length === 0)
433
+ return 'nothing';
434
+ if (items.length === 1)
435
+ return items[0];
436
+ return `${items.slice(0, -1).join(', ')} and ${items[items.length - 1]}`;
437
+ }
438
+ //# sourceMappingURL=cloudflare-setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloudflare-setup.js","sourceRoot":"","sources":["../../../src/web/access/cloudflare-setup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * The Cloudflare API token "Set it up for me" uses, kept as an owner secret
3
+ * (docs/owner-secrets.md): a row named `CLOUDFLARE_API_TOKEN`, its value in
4
+ * the vault, bound pre-approved to the gateway's own `access.cloudflare`
5
+ * destination because the owner pasted it into this very panel (or the CLI's
6
+ * hidden prompt). Saving it primes the scrubber, so the value is masked in
7
+ * every log line and tool result from then on.
8
+ *
9
+ * Read once per setup or Remove run, through `useOwnerSecret` with the value
10
+ * delivered straight into the caller (the use is recorded like any other),
11
+ * and held only for that run.
12
+ */
13
+ import { type Vault } from '@buddi/core';
14
+ import type { Pool } from 'pg';
15
+ export declare const ACCESS_CLOUDFLARE_KIND = "access.cloudflare";
16
+ /** The gateway's destination for the token. Delivered only into the gateway itself. */
17
+ export declare function registerCloudflareTokenDestination(): void;
18
+ export interface CloudflareTokenStore {
19
+ /** Is one stored? */
20
+ has(): Promise<boolean>;
21
+ put(value: string): Promise<void>;
22
+ /** The value, for one run; null when none is stored or it cannot be read. */
23
+ use(): Promise<string | null>;
24
+ remove(): Promise<void>;
25
+ }
26
+ export declare function ownerSecretTokenStore(pool: Pool, vault: Vault | undefined): CloudflareTokenStore;
27
+ /** A store in memory: tests. */
28
+ export declare function memoryTokenStore(initial?: string | null): CloudflareTokenStore & {
29
+ value: string | null;
30
+ };
31
+ //# sourceMappingURL=cloudflare-token.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloudflare-token.d.ts","sourceRoot":"","sources":["../../../src/web/access/cloudflare-token.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EASL,KAAK,KAAK,EACX,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAG/B,eAAO,MAAM,sBAAsB,sBAAsB,CAAC;AAG1D,uFAAuF;AACvF,wBAAgB,kCAAkC,IAAI,IAAI,CAWzD;AAED,MAAM,WAAW,oBAAoB;IACnC,qBAAqB;IACrB,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IACxB,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,6EAA6E;IAC7E,GAAG,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC9B,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACzB;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,GAAG,SAAS,GAAG,oBAAoB,CAgChG;AAED,gCAAgC;AAChC,wBAAgB,gBAAgB,CAAC,OAAO,GAAE,MAAM,GAAG,IAAW,GAAG,oBAAoB,GAAG;IAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAS/G"}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * The Cloudflare API token "Set it up for me" uses, kept as an owner secret
3
+ * (docs/owner-secrets.md): a row named `CLOUDFLARE_API_TOKEN`, its value in
4
+ * the vault, bound pre-approved to the gateway's own `access.cloudflare`
5
+ * destination because the owner pasted it into this very panel (or the CLI's
6
+ * hidden prompt). Saving it primes the scrubber, so the value is masked in
7
+ * every log line and tool result from then on.
8
+ *
9
+ * Read once per setup or Remove run, through `useOwnerSecret` with the value
10
+ * delivered straight into the caller (the use is recorded like any other),
11
+ * and held only for that run.
12
+ */
13
+ import { deleteOwnerSecret, findSecret, primeSecretScrubber, putOwnerSecret, registerSecretDestination, secretDestination, useOwnerSecret, } from '@buddi/core';
14
+ import { CLOUDFLARE_TOKEN_SECRET } from './cloudflare-setup.js';
15
+ export const ACCESS_CLOUDFLARE_KIND = 'access.cloudflare';
16
+ const TARGET = 'setup';
17
+ /** The gateway's destination for the token. Delivered only into the gateway itself. */
18
+ export function registerCloudflareTokenDestination() {
19
+ if (secretDestination(ACCESS_CLOUDFLARE_KIND))
20
+ return;
21
+ registerSecretDestination('access', {
22
+ kind: ACCESS_CLOUDFLARE_KIND,
23
+ maxRule: 'pre-approved',
24
+ checkTarget: (target) => target === TARGET,
25
+ describe: () => 'Cloudflare setup (Settings → Sign in from elsewhere)',
26
+ deliver() {
27
+ throw new Error('access.cloudflare delivers through the gateway itself, never through a destination');
28
+ },
29
+ });
30
+ }
31
+ export function ownerSecretTokenStore(pool, vault) {
32
+ registerCloudflareTokenDestination();
33
+ return {
34
+ has: async () => (await findSecret(pool, CLOUDFLARE_TOKEN_SECRET)) !== null,
35
+ async put(value) {
36
+ if (!vault)
37
+ throw new Error('This installation has no vault, so the token cannot be kept.');
38
+ await putOwnerSecret(pool, vault, {
39
+ name: CLOUDFLARE_TOKEN_SECRET,
40
+ value: value.trim(),
41
+ bindings: [{ kind: ACCESS_CLOUDFLARE_KIND, target: TARGET, rule: 'pre-approved' }],
42
+ });
43
+ await primeSecretScrubber();
44
+ },
45
+ async use() {
46
+ let value = null;
47
+ const result = await useOwnerSecret({
48
+ pool,
49
+ vault,
50
+ plugin: 'access',
51
+ buddi: { version: '0.0', plugin: 'access' },
52
+ now: () => new Date(),
53
+ deliverInto: (delivered) => { value = delivered; },
54
+ }, { name: CLOUDFLARE_TOKEN_SECRET, kind: ACCESS_CLOUDFLARE_KIND, target: TARGET });
55
+ return 'done' in result ? value : null;
56
+ },
57
+ async remove() {
58
+ if (vault)
59
+ await deleteOwnerSecret(pool, vault, CLOUDFLARE_TOKEN_SECRET);
60
+ },
61
+ };
62
+ }
63
+ /** A store in memory: tests. */
64
+ export function memoryTokenStore(initial = null) {
65
+ const store = {
66
+ value: initial,
67
+ has: async () => store.value !== null,
68
+ put: async (value) => { store.value = value.trim(); },
69
+ use: async () => store.value,
70
+ remove: async () => { store.value = null; },
71
+ };
72
+ return store;
73
+ }
74
+ //# sourceMappingURL=cloudflare-token.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloudflare-token.js","sourceRoot":"","sources":["../../../src/web/access/cloudflare-token.ts"],"names":[],"mappings":"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"}