@withbuddi/buddi 0.1.0-pre.26 → 0.1.0-pre.28

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 (818) hide show
  1. package/extension/manifest.json +2 -2
  2. package/node_modules/@buddi/cli/dist/.tsbuildinfo +1 -1
  3. package/node_modules/@buddi/cli/dist/commands.d.ts +10 -0
  4. package/node_modules/@buddi/cli/dist/commands.d.ts.map +1 -1
  5. package/node_modules/@buddi/cli/dist/commands.js +237 -18
  6. package/node_modules/@buddi/cli/dist/commands.js.map +1 -1
  7. package/node_modules/@buddi/cli/dist/doctor-probes.d.ts.map +1 -1
  8. package/node_modules/@buddi/cli/dist/doctor-probes.js +10 -8
  9. package/node_modules/@buddi/cli/dist/doctor-probes.js.map +1 -1
  10. package/node_modules/@buddi/cli/dist/doctor.d.ts +28 -0
  11. package/node_modules/@buddi/cli/dist/doctor.d.ts.map +1 -1
  12. package/node_modules/@buddi/cli/dist/doctor.js +36 -0
  13. package/node_modules/@buddi/cli/dist/doctor.js.map +1 -1
  14. package/node_modules/@buddi/cli/dist/mcp/tools.d.ts.map +1 -1
  15. package/node_modules/@buddi/cli/dist/mcp/tools.js +3 -2
  16. package/node_modules/@buddi/cli/dist/mcp/tools.js.map +1 -1
  17. package/node_modules/@buddi/core/dist/.tsbuildinfo +1 -1
  18. package/node_modules/@buddi/core/dist/agents/catalog.d.ts +3 -0
  19. package/node_modules/@buddi/core/dist/agents/catalog.d.ts.map +1 -1
  20. package/node_modules/@buddi/core/dist/agents/catalog.js +1 -0
  21. package/node_modules/@buddi/core/dist/agents/catalog.js.map +1 -1
  22. package/node_modules/@buddi/core/dist/agents/edit.d.ts +3 -0
  23. package/node_modules/@buddi/core/dist/agents/edit.d.ts.map +1 -1
  24. package/node_modules/@buddi/core/dist/agents/edit.js +3 -1
  25. package/node_modules/@buddi/core/dist/agents/edit.js.map +1 -1
  26. package/node_modules/@buddi/core/dist/agents/frontmatter.d.ts +10 -0
  27. package/node_modules/@buddi/core/dist/agents/frontmatter.d.ts.map +1 -1
  28. package/node_modules/@buddi/core/dist/agents/frontmatter.js +7 -0
  29. package/node_modules/@buddi/core/dist/agents/frontmatter.js.map +1 -1
  30. package/node_modules/@buddi/core/dist/agents/idle-rollover.d.ts +20 -0
  31. package/node_modules/@buddi/core/dist/agents/idle-rollover.d.ts.map +1 -0
  32. package/node_modules/@buddi/core/dist/agents/idle-rollover.js +30 -0
  33. package/node_modules/@buddi/core/dist/agents/idle-rollover.js.map +1 -0
  34. package/node_modules/@buddi/core/dist/agents/index.d.ts +1 -0
  35. package/node_modules/@buddi/core/dist/agents/index.d.ts.map +1 -1
  36. package/node_modules/@buddi/core/dist/agents/index.js +1 -0
  37. package/node_modules/@buddi/core/dist/agents/index.js.map +1 -1
  38. package/node_modules/@buddi/core/dist/backup/dump.d.ts +9 -0
  39. package/node_modules/@buddi/core/dist/backup/dump.d.ts.map +1 -1
  40. package/node_modules/@buddi/core/dist/backup/dump.js +10 -1
  41. package/node_modules/@buddi/core/dist/backup/dump.js.map +1 -1
  42. package/node_modules/@buddi/core/dist/backup/index.d.ts +1 -0
  43. package/node_modules/@buddi/core/dist/backup/index.d.ts.map +1 -1
  44. package/node_modules/@buddi/core/dist/backup/index.js +1 -0
  45. package/node_modules/@buddi/core/dist/backup/index.js.map +1 -1
  46. package/node_modules/@buddi/core/dist/backup/load.d.ts +18 -0
  47. package/node_modules/@buddi/core/dist/backup/load.d.ts.map +1 -1
  48. package/node_modules/@buddi/core/dist/backup/load.js +3 -2
  49. package/node_modules/@buddi/core/dist/backup/load.js.map +1 -1
  50. package/node_modules/@buddi/core/dist/backup/pending.d.ts +114 -0
  51. package/node_modules/@buddi/core/dist/backup/pending.d.ts.map +1 -0
  52. package/node_modules/@buddi/core/dist/backup/pending.js +392 -0
  53. package/node_modules/@buddi/core/dist/backup/pending.js.map +1 -0
  54. package/node_modules/@buddi/core/dist/backup/restore.d.ts +3 -1
  55. package/node_modules/@buddi/core/dist/backup/restore.d.ts.map +1 -1
  56. package/node_modules/@buddi/core/dist/backup/restore.js +55 -2
  57. package/node_modules/@buddi/core/dist/backup/restore.js.map +1 -1
  58. package/node_modules/@buddi/core/dist/feedback/index.d.ts +108 -0
  59. package/node_modules/@buddi/core/dist/feedback/index.d.ts.map +1 -0
  60. package/node_modules/@buddi/core/dist/feedback/index.js +160 -0
  61. package/node_modules/@buddi/core/dist/feedback/index.js.map +1 -0
  62. package/node_modules/@buddi/core/dist/home.d.ts +24 -0
  63. package/node_modules/@buddi/core/dist/home.d.ts.map +1 -1
  64. package/node_modules/@buddi/core/dist/home.js +3 -0
  65. package/node_modules/@buddi/core/dist/home.js.map +1 -1
  66. package/node_modules/@buddi/core/dist/host/build.d.ts.map +1 -1
  67. package/node_modules/@buddi/core/dist/host/build.js +28 -1
  68. package/node_modules/@buddi/core/dist/host/build.js.map +1 -1
  69. package/node_modules/@buddi/core/dist/host/types.d.ts +29 -2
  70. package/node_modules/@buddi/core/dist/host/types.d.ts.map +1 -1
  71. package/node_modules/@buddi/core/dist/index.d.ts +1 -0
  72. package/node_modules/@buddi/core/dist/index.d.ts.map +1 -1
  73. package/node_modules/@buddi/core/dist/index.js +1 -0
  74. package/node_modules/@buddi/core/dist/index.js.map +1 -1
  75. package/node_modules/@buddi/core/dist/learning/policies.d.ts +7 -1
  76. package/node_modules/@buddi/core/dist/learning/policies.d.ts.map +1 -1
  77. package/node_modules/@buddi/core/dist/learning/policies.js +4 -1
  78. package/node_modules/@buddi/core/dist/learning/policies.js.map +1 -1
  79. package/node_modules/@buddi/core/dist/learning/store.d.ts +29 -1
  80. package/node_modules/@buddi/core/dist/learning/store.d.ts.map +1 -1
  81. package/node_modules/@buddi/core/dist/learning/store.js +33 -8
  82. package/node_modules/@buddi/core/dist/learning/store.js.map +1 -1
  83. package/node_modules/@buddi/core/dist/learning/types.d.ts +24 -1
  84. package/node_modules/@buddi/core/dist/learning/types.d.ts.map +1 -1
  85. package/node_modules/@buddi/core/dist/learning/types.js +6 -0
  86. package/node_modules/@buddi/core/dist/learning/types.js.map +1 -1
  87. package/node_modules/@buddi/core/dist/owner.d.ts +2 -1
  88. package/node_modules/@buddi/core/dist/owner.d.ts.map +1 -1
  89. package/node_modules/@buddi/core/dist/owner.js.map +1 -1
  90. package/node_modules/@buddi/core/dist/pages.d.ts +27 -0
  91. package/node_modules/@buddi/core/dist/pages.d.ts.map +1 -1
  92. package/node_modules/@buddi/core/dist/pages.js +24 -3
  93. package/node_modules/@buddi/core/dist/pages.js.map +1 -1
  94. package/node_modules/@buddi/core/dist/plugin/index.d.ts +7 -6
  95. package/node_modules/@buddi/core/dist/plugin/index.d.ts.map +1 -1
  96. package/node_modules/@buddi/core/dist/plugin/index.js +1 -1
  97. package/node_modules/@buddi/core/dist/plugin/index.js.map +1 -1
  98. package/node_modules/@buddi/core/dist/plugin/version.d.ts +1 -1
  99. package/node_modules/@buddi/core/dist/plugin/version.js +1 -1
  100. package/node_modules/@buddi/core/dist/postgres/binaries.d.ts +3 -1
  101. package/node_modules/@buddi/core/dist/postgres/binaries.d.ts.map +1 -1
  102. package/node_modules/@buddi/core/dist/postgres/binaries.js +15 -23
  103. package/node_modules/@buddi/core/dist/postgres/binaries.js.map +1 -1
  104. package/node_modules/@buddi/core/dist/postgres/cluster.js +1 -1
  105. package/node_modules/@buddi/core/dist/postgres/cluster.js.map +1 -1
  106. package/node_modules/@buddi/core/dist/postgres/index.d.ts +1 -0
  107. package/node_modules/@buddi/core/dist/postgres/index.d.ts.map +1 -1
  108. package/node_modules/@buddi/core/dist/postgres/index.js +1 -0
  109. package/node_modules/@buddi/core/dist/postgres/index.js.map +1 -1
  110. package/node_modules/@buddi/core/dist/postgres/links.d.ts +15 -0
  111. package/node_modules/@buddi/core/dist/postgres/links.d.ts.map +1 -0
  112. package/node_modules/@buddi/core/dist/postgres/links.js +98 -0
  113. package/node_modules/@buddi/core/dist/postgres/links.js.map +1 -0
  114. package/node_modules/@buddi/core/dist/registry.d.ts +10 -1
  115. package/node_modules/@buddi/core/dist/registry.d.ts.map +1 -1
  116. package/node_modules/@buddi/core/dist/registry.js +13 -0
  117. package/node_modules/@buddi/core/dist/registry.js.map +1 -1
  118. package/node_modules/@buddi/core/dist/sources/index.d.ts +1 -0
  119. package/node_modules/@buddi/core/dist/sources/index.d.ts.map +1 -1
  120. package/node_modules/@buddi/core/dist/sources/index.js +1 -0
  121. package/node_modules/@buddi/core/dist/sources/index.js.map +1 -1
  122. package/node_modules/@buddi/core/dist/sources/watch.d.ts +37 -0
  123. package/node_modules/@buddi/core/dist/sources/watch.d.ts.map +1 -0
  124. package/node_modules/@buddi/core/dist/sources/watch.js +81 -0
  125. package/node_modules/@buddi/core/dist/sources/watch.js.map +1 -0
  126. package/node_modules/@buddi/core/dist/tools.d.ts +47 -0
  127. package/node_modules/@buddi/core/dist/tools.d.ts.map +1 -1
  128. package/node_modules/@buddi/core/dist/tools.js.map +1 -1
  129. package/node_modules/@buddi/core/migrations/055_pending_plugin_data.sql +24 -0
  130. package/node_modules/@buddi/core/migrations/056_dashboard_sessions.sql +37 -0
  131. package/node_modules/@buddi/core/migrations/057_proposal_decided_by.sql +34 -0
  132. package/node_modules/@buddi/core/migrations/058_message_feedback.sql +50 -0
  133. package/node_modules/@buddi/core/package.json +4 -0
  134. package/node_modules/@buddi/gateway/dist/.tsbuildinfo +1 -1
  135. package/node_modules/@buddi/gateway/dist/agents/learning-digest.d.ts +7 -1
  136. package/node_modules/@buddi/gateway/dist/agents/learning-digest.d.ts.map +1 -1
  137. package/node_modules/@buddi/gateway/dist/agents/learning-digest.js +29 -3
  138. package/node_modules/@buddi/gateway/dist/agents/learning-digest.js.map +1 -1
  139. package/node_modules/@buddi/gateway/dist/agents/platform-files.d.ts +2 -0
  140. package/node_modules/@buddi/gateway/dist/agents/platform-files.d.ts.map +1 -1
  141. package/node_modules/@buddi/gateway/dist/agents/platform-files.js +2 -0
  142. package/node_modules/@buddi/gateway/dist/agents/platform-files.js.map +1 -1
  143. package/node_modules/@buddi/gateway/dist/agents/platform.d.ts +20 -0
  144. package/node_modules/@buddi/gateway/dist/agents/platform.d.ts.map +1 -1
  145. package/node_modules/@buddi/gateway/dist/agents/platform.js +46 -3
  146. package/node_modules/@buddi/gateway/dist/agents/platform.js.map +1 -1
  147. package/node_modules/@buddi/gateway/dist/agents-cli.d.ts +1 -1
  148. package/node_modules/@buddi/gateway/dist/agents-cli.d.ts.map +1 -1
  149. package/node_modules/@buddi/gateway/dist/agents-cli.js +12 -2
  150. package/node_modules/@buddi/gateway/dist/agents-cli.js.map +1 -1
  151. package/node_modules/@buddi/gateway/dist/chat/session.d.ts.map +1 -1
  152. package/node_modules/@buddi/gateway/dist/chat/session.js +2 -1
  153. package/node_modules/@buddi/gateway/dist/chat/session.js.map +1 -1
  154. package/node_modules/@buddi/gateway/dist/mcp/requests.d.ts.map +1 -1
  155. package/node_modules/@buddi/gateway/dist/mcp/requests.js +1 -0
  156. package/node_modules/@buddi/gateway/dist/mcp/requests.js.map +1 -1
  157. package/node_modules/@buddi/gateway/dist/plugins/approve.d.ts.map +1 -1
  158. package/node_modules/@buddi/gateway/dist/plugins/approve.js +13 -2
  159. package/node_modules/@buddi/gateway/dist/plugins/approve.js.map +1 -1
  160. package/node_modules/@buddi/gateway/dist/plugins/migrate.d.ts.map +1 -1
  161. package/node_modules/@buddi/gateway/dist/plugins/migrate.js +11 -1
  162. package/node_modules/@buddi/gateway/dist/plugins/migrate.js.map +1 -1
  163. package/node_modules/@buddi/gateway/dist/plugins/paths.d.ts +14 -0
  164. package/node_modules/@buddi/gateway/dist/plugins/paths.d.ts.map +1 -1
  165. package/node_modules/@buddi/gateway/dist/plugins/paths.js +27 -1
  166. package/node_modules/@buddi/gateway/dist/plugins/paths.js.map +1 -1
  167. package/node_modules/@buddi/gateway/dist/plugins/stage.d.ts +27 -3
  168. package/node_modules/@buddi/gateway/dist/plugins/stage.d.ts.map +1 -1
  169. package/node_modules/@buddi/gateway/dist/plugins/stage.js +35 -5
  170. package/node_modules/@buddi/gateway/dist/plugins/stage.js.map +1 -1
  171. package/node_modules/@buddi/gateway/dist/plugins-cli.d.ts +4 -0
  172. package/node_modules/@buddi/gateway/dist/plugins-cli.d.ts.map +1 -1
  173. package/node_modules/@buddi/gateway/dist/plugins-cli.js +42 -9
  174. package/node_modules/@buddi/gateway/dist/plugins-cli.js.map +1 -1
  175. package/node_modules/@buddi/gateway/dist/serve.d.ts.map +1 -1
  176. package/node_modules/@buddi/gateway/dist/serve.js +14 -2
  177. package/node_modules/@buddi/gateway/dist/serve.js.map +1 -1
  178. package/node_modules/@buddi/gateway/dist/surfaces/browser-continuation.d.ts +2 -1
  179. package/node_modules/@buddi/gateway/dist/surfaces/browser-continuation.d.ts.map +1 -1
  180. package/node_modules/@buddi/gateway/dist/surfaces/browser-continuation.js +8 -5
  181. package/node_modules/@buddi/gateway/dist/surfaces/browser-continuation.js.map +1 -1
  182. package/node_modules/@buddi/gateway/dist/surfaces/browser-handoff.d.ts +27 -4
  183. package/node_modules/@buddi/gateway/dist/surfaces/browser-handoff.d.ts.map +1 -1
  184. package/node_modules/@buddi/gateway/dist/surfaces/browser-handoff.js +57 -7
  185. package/node_modules/@buddi/gateway/dist/surfaces/browser-handoff.js.map +1 -1
  186. package/node_modules/@buddi/gateway/dist/surfaces/carry-over.d.ts +89 -0
  187. package/node_modules/@buddi/gateway/dist/surfaces/carry-over.d.ts.map +1 -0
  188. package/node_modules/@buddi/gateway/dist/surfaces/carry-over.js +172 -0
  189. package/node_modules/@buddi/gateway/dist/surfaces/carry-over.js.map +1 -0
  190. package/node_modules/@buddi/gateway/dist/surfaces/conversation-lifetime.d.ts +5 -2
  191. package/node_modules/@buddi/gateway/dist/surfaces/conversation-lifetime.d.ts.map +1 -1
  192. package/node_modules/@buddi/gateway/dist/surfaces/conversation-lifetime.js +5 -2
  193. package/node_modules/@buddi/gateway/dist/surfaces/conversation-lifetime.js.map +1 -1
  194. package/node_modules/@buddi/gateway/dist/telegram/api.d.ts +34 -2
  195. package/node_modules/@buddi/gateway/dist/telegram/api.d.ts.map +1 -1
  196. package/node_modules/@buddi/gateway/dist/telegram/api.js +15 -2
  197. package/node_modules/@buddi/gateway/dist/telegram/api.js.map +1 -1
  198. package/node_modules/@buddi/gateway/dist/telegram/env-owner.d.ts +30 -0
  199. package/node_modules/@buddi/gateway/dist/telegram/env-owner.d.ts.map +1 -0
  200. package/node_modules/@buddi/gateway/dist/telegram/env-owner.js +45 -0
  201. package/node_modules/@buddi/gateway/dist/telegram/env-owner.js.map +1 -0
  202. package/node_modules/@buddi/gateway/dist/telegram/main.d.ts +0 -2
  203. package/node_modules/@buddi/gateway/dist/telegram/main.d.ts.map +1 -1
  204. package/node_modules/@buddi/gateway/dist/telegram/main.js +20 -25
  205. package/node_modules/@buddi/gateway/dist/telegram/main.js.map +1 -1
  206. package/node_modules/@buddi/gateway/dist/telegram/notify.d.ts.map +1 -1
  207. package/node_modules/@buddi/gateway/dist/telegram/notify.js +1 -1
  208. package/node_modules/@buddi/gateway/dist/telegram/notify.js.map +1 -1
  209. package/node_modules/@buddi/gateway/dist/telegram/outbound.d.ts +2 -2
  210. package/node_modules/@buddi/gateway/dist/telegram/outbound.d.ts.map +1 -1
  211. package/node_modules/@buddi/gateway/dist/telegram/outbound.js +12 -3
  212. package/node_modules/@buddi/gateway/dist/telegram/outbound.js.map +1 -1
  213. package/node_modules/@buddi/gateway/dist/telegram/reactions.d.ts +45 -0
  214. package/node_modules/@buddi/gateway/dist/telegram/reactions.d.ts.map +1 -0
  215. package/node_modules/@buddi/gateway/dist/telegram/reactions.js +97 -0
  216. package/node_modules/@buddi/gateway/dist/telegram/reactions.js.map +1 -0
  217. package/node_modules/@buddi/gateway/dist/telegram/surface.d.ts +27 -1
  218. package/node_modules/@buddi/gateway/dist/telegram/surface.d.ts.map +1 -1
  219. package/node_modules/@buddi/gateway/dist/telegram/surface.js +186 -12
  220. package/node_modules/@buddi/gateway/dist/telegram/surface.js.map +1 -1
  221. package/node_modules/@buddi/gateway/dist/web/agents.d.ts +7 -1
  222. package/node_modules/@buddi/gateway/dist/web/agents.d.ts.map +1 -1
  223. package/node_modules/@buddi/gateway/dist/web/agents.js +32 -2
  224. package/node_modules/@buddi/gateway/dist/web/agents.js.map +1 -1
  225. package/node_modules/@buddi/gateway/dist/web/chat.d.ts +10 -3
  226. package/node_modules/@buddi/gateway/dist/web/chat.d.ts.map +1 -1
  227. package/node_modules/@buddi/gateway/dist/web/chat.js +18 -5
  228. package/node_modules/@buddi/gateway/dist/web/chat.js.map +1 -1
  229. package/node_modules/@buddi/gateway/dist/web/plugins.d.ts +6 -1
  230. package/node_modules/@buddi/gateway/dist/web/plugins.d.ts.map +1 -1
  231. package/node_modules/@buddi/gateway/dist/web/plugins.js +31 -2
  232. package/node_modules/@buddi/gateway/dist/web/plugins.js.map +1 -1
  233. package/node_modules/@buddi/gateway/dist/web/proposals.d.ts +21 -0
  234. package/node_modules/@buddi/gateway/dist/web/proposals.d.ts.map +1 -1
  235. package/node_modules/@buddi/gateway/dist/web/proposals.js +50 -1
  236. package/node_modules/@buddi/gateway/dist/web/proposals.js.map +1 -1
  237. package/node_modules/@buddi/gateway/dist/web/read.d.ts +23 -0
  238. package/node_modules/@buddi/gateway/dist/web/read.d.ts.map +1 -1
  239. package/node_modules/@buddi/gateway/dist/web/read.js +36 -1
  240. package/node_modules/@buddi/gateway/dist/web/read.js.map +1 -1
  241. package/node_modules/@buddi/gateway/dist/web/recovery.d.ts +40 -2
  242. package/node_modules/@buddi/gateway/dist/web/recovery.d.ts.map +1 -1
  243. package/node_modules/@buddi/gateway/dist/web/recovery.js +215 -18
  244. package/node_modules/@buddi/gateway/dist/web/recovery.js.map +1 -1
  245. package/node_modules/@buddi/gateway/dist/web/server.d.ts.map +1 -1
  246. package/node_modules/@buddi/gateway/dist/web/server.js +87 -29
  247. package/node_modules/@buddi/gateway/dist/web/server.js.map +1 -1
  248. package/node_modules/@buddi/gateway/dist/web/sessions.d.ts +81 -7
  249. package/node_modules/@buddi/gateway/dist/web/sessions.d.ts.map +1 -1
  250. package/node_modules/@buddi/gateway/dist/web/sessions.js +242 -24
  251. package/node_modules/@buddi/gateway/dist/web/sessions.js.map +1 -1
  252. package/node_modules/@buddi/gateway/dist/web/signed-out.d.ts +46 -0
  253. package/node_modules/@buddi/gateway/dist/web/signed-out.d.ts.map +1 -0
  254. package/node_modules/@buddi/gateway/dist/web/signed-out.js +99 -0
  255. package/node_modules/@buddi/gateway/dist/web/signed-out.js.map +1 -0
  256. package/node_modules/@buddi/gateway/dist/web/tailscale.d.ts +13 -0
  257. package/node_modules/@buddi/gateway/dist/web/tailscale.d.ts.map +1 -1
  258. package/node_modules/@buddi/gateway/dist/web/tailscale.js +12 -0
  259. package/node_modules/@buddi/gateway/dist/web/tailscale.js.map +1 -1
  260. package/node_modules/@buddi/install/dist/.tsbuildinfo +1 -1
  261. package/node_modules/@buddi/install/dist/backup.d.ts +18 -0
  262. package/node_modules/@buddi/install/dist/backup.d.ts.map +1 -1
  263. package/node_modules/@buddi/install/dist/backup.js +39 -2
  264. package/node_modules/@buddi/install/dist/backup.js.map +1 -1
  265. package/node_modules/@buddi/install/dist/kept-data.d.ts +20 -0
  266. package/node_modules/@buddi/install/dist/kept-data.d.ts.map +1 -0
  267. package/node_modules/@buddi/install/dist/kept-data.js +34 -0
  268. package/node_modules/@buddi/install/dist/kept-data.js.map +1 -0
  269. package/node_modules/@buddi/install/dist/launcher.d.ts.map +1 -1
  270. package/node_modules/@buddi/install/dist/launcher.js +17 -3
  271. package/node_modules/@buddi/install/dist/launcher.js.map +1 -1
  272. package/node_modules/@buddi/install/dist/postgres-check.d.ts +18 -0
  273. package/node_modules/@buddi/install/dist/postgres-check.d.ts.map +1 -0
  274. package/node_modules/@buddi/install/dist/postgres-check.js +66 -0
  275. package/node_modules/@buddi/install/dist/postgres-check.js.map +1 -0
  276. package/node_modules/@buddi/install/dist/upgrade.d.ts +3 -0
  277. package/node_modules/@buddi/install/dist/upgrade.d.ts.map +1 -1
  278. package/node_modules/@buddi/install/dist/upgrade.js +30 -0
  279. package/node_modules/@buddi/install/dist/upgrade.js.map +1 -1
  280. package/node_modules/@buddi/runtime/dist/.tsbuildinfo +1 -1
  281. package/node_modules/@buddi/tool-artifacts/dist/.tsbuildinfo +1 -1
  282. package/node_modules/@buddi/tool-browser/dist/.tsbuildinfo +1 -1
  283. package/node_modules/@buddi/tool-email/dist/.tsbuildinfo +1 -1
  284. package/node_modules/@buddi/tool-email/dist/agent.d.ts.map +1 -1
  285. package/node_modules/@buddi/tool-email/dist/agent.js +11 -0
  286. package/node_modules/@buddi/tool-email/dist/agent.js.map +1 -1
  287. package/node_modules/@buddi/tool-email/dist/imap/fake.d.ts +89 -3
  288. package/node_modules/@buddi/tool-email/dist/imap/fake.d.ts.map +1 -1
  289. package/node_modules/@buddi/tool-email/dist/imap/fake.js +234 -4
  290. package/node_modules/@buddi/tool-email/dist/imap/fake.js.map +1 -1
  291. package/node_modules/@buddi/tool-email/dist/imap/imapflow-client.d.ts +14 -1
  292. package/node_modules/@buddi/tool-email/dist/imap/imapflow-client.d.ts.map +1 -1
  293. package/node_modules/@buddi/tool-email/dist/imap/imapflow-client.js +157 -2
  294. package/node_modules/@buddi/tool-email/dist/imap/imapflow-client.js.map +1 -1
  295. package/node_modules/@buddi/tool-email/dist/index.d.ts +14 -2
  296. package/node_modules/@buddi/tool-email/dist/index.d.ts.map +1 -1
  297. package/node_modules/@buddi/tool-email/dist/index.js +23 -4
  298. package/node_modules/@buddi/tool-email/dist/index.js.map +1 -1
  299. package/node_modules/@buddi/tool-email/dist/logins.d.ts +24 -0
  300. package/node_modules/@buddi/tool-email/dist/logins.d.ts.map +1 -0
  301. package/node_modules/@buddi/tool-email/dist/logins.js +35 -0
  302. package/node_modules/@buddi/tool-email/dist/logins.js.map +1 -0
  303. package/node_modules/@buddi/tool-email/dist/mail.d.ts +14 -0
  304. package/node_modules/@buddi/tool-email/dist/mail.d.ts.map +1 -1
  305. package/node_modules/@buddi/tool-email/dist/mail.js +23 -0
  306. package/node_modules/@buddi/tool-email/dist/mail.js.map +1 -1
  307. package/node_modules/@buddi/tool-email/dist/mailbox/actions.d.ts +205 -0
  308. package/node_modules/@buddi/tool-email/dist/mailbox/actions.d.ts.map +1 -0
  309. package/node_modules/@buddi/tool-email/dist/mailbox/actions.js +662 -0
  310. package/node_modules/@buddi/tool-email/dist/mailbox/actions.js.map +1 -0
  311. package/node_modules/@buddi/tool-email/dist/mailbox/arrival.d.ts +61 -0
  312. package/node_modules/@buddi/tool-email/dist/mailbox/arrival.d.ts.map +1 -0
  313. package/node_modules/@buddi/tool-email/dist/mailbox/arrival.js +153 -0
  314. package/node_modules/@buddi/tool-email/dist/mailbox/arrival.js.map +1 -0
  315. package/node_modules/@buddi/tool-email/dist/mailbox/select.d.ts +53 -0
  316. package/node_modules/@buddi/tool-email/dist/mailbox/select.d.ts.map +1 -0
  317. package/node_modules/@buddi/tool-email/dist/mailbox/select.js +117 -0
  318. package/node_modules/@buddi/tool-email/dist/mailbox/select.js.map +1 -0
  319. package/node_modules/@buddi/tool-email/dist/pages/accounts.d.ts +37 -1
  320. package/node_modules/@buddi/tool-email/dist/pages/accounts.d.ts.map +1 -1
  321. package/node_modules/@buddi/tool-email/dist/pages/accounts.js +104 -2
  322. package/node_modules/@buddi/tool-email/dist/pages/accounts.js.map +1 -1
  323. package/node_modules/@buddi/tool-email/dist/pages/descriptors.d.ts.map +1 -1
  324. package/node_modules/@buddi/tool-email/dist/pages/descriptors.js +142 -0
  325. package/node_modules/@buddi/tool-email/dist/pages/descriptors.js.map +1 -1
  326. package/node_modules/@buddi/tool-email/dist/pages/drafts-tools.d.ts +2 -2
  327. package/node_modules/@buddi/tool-email/dist/pages/format.d.ts +1 -12
  328. package/node_modules/@buddi/tool-email/dist/pages/format.d.ts.map +1 -1
  329. package/node_modules/@buddi/tool-email/dist/pages/format.js +17 -0
  330. package/node_modules/@buddi/tool-email/dist/pages/format.js.map +1 -1
  331. package/node_modules/@buddi/tool-email/dist/pages/index.d.ts.map +1 -1
  332. package/node_modules/@buddi/tool-email/dist/pages/index.js +5 -1
  333. package/node_modules/@buddi/tool-email/dist/pages/index.js.map +1 -1
  334. package/node_modules/@buddi/tool-email/dist/pages/policies-tools.d.ts +7 -0
  335. package/node_modules/@buddi/tool-email/dist/pages/policies-tools.d.ts.map +1 -1
  336. package/node_modules/@buddi/tool-email/dist/pages/policies-tools.js +11 -2
  337. package/node_modules/@buddi/tool-email/dist/pages/policies-tools.js.map +1 -1
  338. package/node_modules/@buddi/tool-email/dist/pages/queries.d.ts +16 -0
  339. package/node_modules/@buddi/tool-email/dist/pages/queries.d.ts.map +1 -1
  340. package/node_modules/@buddi/tool-email/dist/pages/queries.js +154 -3
  341. package/node_modules/@buddi/tool-email/dist/pages/queries.js.map +1 -1
  342. package/node_modules/@buddi/tool-email/dist/policies/auto.d.ts +133 -0
  343. package/node_modules/@buddi/tool-email/dist/policies/auto.d.ts.map +1 -0
  344. package/node_modules/@buddi/tool-email/dist/policies/auto.js +241 -0
  345. package/node_modules/@buddi/tool-email/dist/policies/auto.js.map +1 -0
  346. package/node_modules/@buddi/tool-email/dist/policies/gate.d.ts +34 -10
  347. package/node_modules/@buddi/tool-email/dist/policies/gate.d.ts.map +1 -1
  348. package/node_modules/@buddi/tool-email/dist/policies/gate.js +27 -12
  349. package/node_modules/@buddi/tool-email/dist/policies/gate.js.map +1 -1
  350. package/node_modules/@buddi/tool-email/dist/policies/learn.d.ts +26 -18
  351. package/node_modules/@buddi/tool-email/dist/policies/learn.d.ts.map +1 -1
  352. package/node_modules/@buddi/tool-email/dist/policies/learn.js +36 -10
  353. package/node_modules/@buddi/tool-email/dist/policies/learn.js.map +1 -1
  354. package/node_modules/@buddi/tool-email/dist/policies/learned.d.ts +25 -2
  355. package/node_modules/@buddi/tool-email/dist/policies/learned.d.ts.map +1 -1
  356. package/node_modules/@buddi/tool-email/dist/policies/learned.js +47 -5
  357. package/node_modules/@buddi/tool-email/dist/policies/learned.js.map +1 -1
  358. package/node_modules/@buddi/tool-email/dist/policies/store.d.ts +8 -2
  359. package/node_modules/@buddi/tool-email/dist/policies/store.d.ts.map +1 -1
  360. package/node_modules/@buddi/tool-email/dist/policies/store.js +19 -5
  361. package/node_modules/@buddi/tool-email/dist/policies/store.js.map +1 -1
  362. package/node_modules/@buddi/tool-email/dist/ports.d.ts +79 -0
  363. package/node_modules/@buddi/tool-email/dist/ports.d.ts.map +1 -1
  364. package/node_modules/@buddi/tool-email/dist/ports.js +6 -0
  365. package/node_modules/@buddi/tool-email/dist/ports.js.map +1 -1
  366. package/node_modules/@buddi/tool-email/dist/rows.d.ts.map +1 -1
  367. package/node_modules/@buddi/tool-email/dist/rows.js +3 -1
  368. package/node_modules/@buddi/tool-email/dist/rows.js.map +1 -1
  369. package/node_modules/@buddi/tool-email/dist/sources/idle.d.ts +90 -0
  370. package/node_modules/@buddi/tool-email/dist/sources/idle.d.ts.map +1 -0
  371. package/node_modules/@buddi/tool-email/dist/sources/idle.js +250 -0
  372. package/node_modules/@buddi/tool-email/dist/sources/idle.js.map +1 -0
  373. package/node_modules/@buddi/tool-email/dist/sources/inbox-poll.d.ts +12 -1
  374. package/node_modules/@buddi/tool-email/dist/sources/inbox-poll.d.ts.map +1 -1
  375. package/node_modules/@buddi/tool-email/dist/sources/inbox-poll.js +280 -134
  376. package/node_modules/@buddi/tool-email/dist/sources/inbox-poll.js.map +1 -1
  377. package/node_modules/@buddi/tool-email/dist/tools/mailbox.d.ts +108 -0
  378. package/node_modules/@buddi/tool-email/dist/tools/mailbox.d.ts.map +1 -0
  379. package/node_modules/@buddi/tool-email/dist/tools/mailbox.js +359 -0
  380. package/node_modules/@buddi/tool-email/dist/tools/mailbox.js.map +1 -0
  381. package/node_modules/@buddi/tool-email/dist/tools/policies.d.ts +8 -2
  382. package/node_modules/@buddi/tool-email/dist/tools/policies.d.ts.map +1 -1
  383. package/node_modules/@buddi/tool-email/dist/tools/policies.js +43 -3
  384. package/node_modules/@buddi/tool-email/dist/tools/policies.js.map +1 -1
  385. package/node_modules/@buddi/tool-email/dist/tools/read.d.ts +2 -2
  386. package/node_modules/@buddi/tool-email/dist/tools/triage.d.ts.map +1 -1
  387. package/node_modules/@buddi/tool-email/dist/tools/triage.js +10 -4
  388. package/node_modules/@buddi/tool-email/dist/tools/triage.js.map +1 -1
  389. package/node_modules/@buddi/tool-email/migrations/017_mailbox_actions.sql +60 -0
  390. package/node_modules/@buddi/tool-email/migrations/018_learned_auto.sql +30 -0
  391. package/node_modules/@buddi/tool-email/migrations/019_arrival_pending.sql +26 -0
  392. package/node_modules/@buddi/tool-email/package.json +3 -2
  393. package/node_modules/@buddi/tool-host/dist/.tsbuildinfo +1 -1
  394. package/node_modules/@buddi/tool-mcp/dist/.tsbuildinfo +1 -1
  395. package/node_modules/@buddi/tool-memory/dist/.tsbuildinfo +1 -1
  396. package/node_modules/@buddi/tool-web/dist/.tsbuildinfo +1 -1
  397. package/node_modules/imapflow/CHANGELOG.md +14 -0
  398. package/node_modules/imapflow/dist/cjs/commands/fetch.js +1 -1
  399. package/node_modules/imapflow/dist/cjs/imap-flow.d.ts +2 -0
  400. package/node_modules/imapflow/dist/cjs/imap-flow.js +14 -1
  401. package/node_modules/imapflow/dist/cjs/package-info.d.ts +1 -1
  402. package/node_modules/imapflow/dist/cjs/package-info.js +1 -1
  403. package/node_modules/imapflow/dist/cjs/tools.d.ts +2 -1
  404. package/node_modules/imapflow/dist/cjs/tools.js +8 -6
  405. package/node_modules/imapflow/dist/cjs/types.d.ts +9 -1
  406. package/node_modules/imapflow/dist/esm/commands/fetch.js +1 -1
  407. package/node_modules/imapflow/dist/esm/imap-flow.d.ts +2 -0
  408. package/node_modules/imapflow/dist/esm/imap-flow.js +14 -1
  409. package/node_modules/imapflow/dist/esm/package-info.d.ts +1 -1
  410. package/node_modules/imapflow/dist/esm/package-info.js +1 -1
  411. package/node_modules/imapflow/dist/esm/tools.d.ts +2 -1
  412. package/node_modules/imapflow/dist/esm/tools.js +8 -6
  413. package/node_modules/imapflow/dist/esm/types.d.ts +9 -1
  414. package/node_modules/imapflow/package.json +4 -4
  415. package/package.json +2 -2
  416. package/packages/cli/dist/.tsbuildinfo +1 -1
  417. package/packages/cli/dist/commands.d.ts +10 -0
  418. package/packages/cli/dist/commands.d.ts.map +1 -1
  419. package/packages/cli/dist/commands.js +237 -18
  420. package/packages/cli/dist/commands.js.map +1 -1
  421. package/packages/cli/dist/doctor-probes.d.ts.map +1 -1
  422. package/packages/cli/dist/doctor-probes.js +10 -8
  423. package/packages/cli/dist/doctor-probes.js.map +1 -1
  424. package/packages/cli/dist/doctor.d.ts +28 -0
  425. package/packages/cli/dist/doctor.d.ts.map +1 -1
  426. package/packages/cli/dist/doctor.js +36 -0
  427. package/packages/cli/dist/doctor.js.map +1 -1
  428. package/packages/cli/dist/mcp/tools.d.ts.map +1 -1
  429. package/packages/cli/dist/mcp/tools.js +3 -2
  430. package/packages/cli/dist/mcp/tools.js.map +1 -1
  431. package/packages/core/dist/.tsbuildinfo +1 -1
  432. package/packages/core/dist/agents/catalog.d.ts +3 -0
  433. package/packages/core/dist/agents/catalog.d.ts.map +1 -1
  434. package/packages/core/dist/agents/catalog.js +1 -0
  435. package/packages/core/dist/agents/catalog.js.map +1 -1
  436. package/packages/core/dist/agents/edit.d.ts +3 -0
  437. package/packages/core/dist/agents/edit.d.ts.map +1 -1
  438. package/packages/core/dist/agents/edit.js +3 -1
  439. package/packages/core/dist/agents/edit.js.map +1 -1
  440. package/packages/core/dist/agents/frontmatter.d.ts +10 -0
  441. package/packages/core/dist/agents/frontmatter.d.ts.map +1 -1
  442. package/packages/core/dist/agents/frontmatter.js +7 -0
  443. package/packages/core/dist/agents/frontmatter.js.map +1 -1
  444. package/packages/core/dist/agents/idle-rollover.d.ts +20 -0
  445. package/packages/core/dist/agents/idle-rollover.d.ts.map +1 -0
  446. package/packages/core/dist/agents/idle-rollover.js +30 -0
  447. package/packages/core/dist/agents/idle-rollover.js.map +1 -0
  448. package/packages/core/dist/agents/index.d.ts +1 -0
  449. package/packages/core/dist/agents/index.d.ts.map +1 -1
  450. package/packages/core/dist/agents/index.js +1 -0
  451. package/packages/core/dist/agents/index.js.map +1 -1
  452. package/packages/core/dist/backup/dump.d.ts +9 -0
  453. package/packages/core/dist/backup/dump.d.ts.map +1 -1
  454. package/packages/core/dist/backup/dump.js +10 -1
  455. package/packages/core/dist/backup/dump.js.map +1 -1
  456. package/packages/core/dist/backup/index.d.ts +1 -0
  457. package/packages/core/dist/backup/index.d.ts.map +1 -1
  458. package/packages/core/dist/backup/index.js +1 -0
  459. package/packages/core/dist/backup/index.js.map +1 -1
  460. package/packages/core/dist/backup/load.d.ts +18 -0
  461. package/packages/core/dist/backup/load.d.ts.map +1 -1
  462. package/packages/core/dist/backup/load.js +3 -2
  463. package/packages/core/dist/backup/load.js.map +1 -1
  464. package/packages/core/dist/backup/pending.d.ts +114 -0
  465. package/packages/core/dist/backup/pending.d.ts.map +1 -0
  466. package/packages/core/dist/backup/pending.js +392 -0
  467. package/packages/core/dist/backup/pending.js.map +1 -0
  468. package/packages/core/dist/backup/restore.d.ts +3 -1
  469. package/packages/core/dist/backup/restore.d.ts.map +1 -1
  470. package/packages/core/dist/backup/restore.js +55 -2
  471. package/packages/core/dist/backup/restore.js.map +1 -1
  472. package/packages/core/dist/feedback/index.d.ts +108 -0
  473. package/packages/core/dist/feedback/index.d.ts.map +1 -0
  474. package/packages/core/dist/feedback/index.js +160 -0
  475. package/packages/core/dist/feedback/index.js.map +1 -0
  476. package/packages/core/dist/home.d.ts +24 -0
  477. package/packages/core/dist/home.d.ts.map +1 -1
  478. package/packages/core/dist/home.js +3 -0
  479. package/packages/core/dist/home.js.map +1 -1
  480. package/packages/core/dist/host/build.d.ts.map +1 -1
  481. package/packages/core/dist/host/build.js +28 -1
  482. package/packages/core/dist/host/build.js.map +1 -1
  483. package/packages/core/dist/host/types.d.ts +29 -2
  484. package/packages/core/dist/host/types.d.ts.map +1 -1
  485. package/packages/core/dist/index.d.ts +1 -0
  486. package/packages/core/dist/index.d.ts.map +1 -1
  487. package/packages/core/dist/index.js +1 -0
  488. package/packages/core/dist/index.js.map +1 -1
  489. package/packages/core/dist/learning/policies.d.ts +7 -1
  490. package/packages/core/dist/learning/policies.d.ts.map +1 -1
  491. package/packages/core/dist/learning/policies.js +4 -1
  492. package/packages/core/dist/learning/policies.js.map +1 -1
  493. package/packages/core/dist/learning/store.d.ts +29 -1
  494. package/packages/core/dist/learning/store.d.ts.map +1 -1
  495. package/packages/core/dist/learning/store.js +33 -8
  496. package/packages/core/dist/learning/store.js.map +1 -1
  497. package/packages/core/dist/learning/types.d.ts +24 -1
  498. package/packages/core/dist/learning/types.d.ts.map +1 -1
  499. package/packages/core/dist/learning/types.js +6 -0
  500. package/packages/core/dist/learning/types.js.map +1 -1
  501. package/packages/core/dist/owner.d.ts +2 -1
  502. package/packages/core/dist/owner.d.ts.map +1 -1
  503. package/packages/core/dist/owner.js.map +1 -1
  504. package/packages/core/dist/pages.d.ts +27 -0
  505. package/packages/core/dist/pages.d.ts.map +1 -1
  506. package/packages/core/dist/pages.js +24 -3
  507. package/packages/core/dist/pages.js.map +1 -1
  508. package/packages/core/dist/plugin/index.d.ts +7 -6
  509. package/packages/core/dist/plugin/index.d.ts.map +1 -1
  510. package/packages/core/dist/plugin/index.js +1 -1
  511. package/packages/core/dist/plugin/index.js.map +1 -1
  512. package/packages/core/dist/plugin/version.d.ts +1 -1
  513. package/packages/core/dist/plugin/version.js +1 -1
  514. package/packages/core/dist/postgres/binaries.d.ts +3 -1
  515. package/packages/core/dist/postgres/binaries.d.ts.map +1 -1
  516. package/packages/core/dist/postgres/binaries.js +15 -23
  517. package/packages/core/dist/postgres/binaries.js.map +1 -1
  518. package/packages/core/dist/postgres/cluster.js +1 -1
  519. package/packages/core/dist/postgres/cluster.js.map +1 -1
  520. package/packages/core/dist/postgres/index.d.ts +1 -0
  521. package/packages/core/dist/postgres/index.d.ts.map +1 -1
  522. package/packages/core/dist/postgres/index.js +1 -0
  523. package/packages/core/dist/postgres/index.js.map +1 -1
  524. package/packages/core/dist/postgres/links.d.ts +15 -0
  525. package/packages/core/dist/postgres/links.d.ts.map +1 -0
  526. package/packages/core/dist/postgres/links.js +98 -0
  527. package/packages/core/dist/postgres/links.js.map +1 -0
  528. package/packages/core/dist/registry.d.ts +10 -1
  529. package/packages/core/dist/registry.d.ts.map +1 -1
  530. package/packages/core/dist/registry.js +13 -0
  531. package/packages/core/dist/registry.js.map +1 -1
  532. package/packages/core/dist/sources/index.d.ts +1 -0
  533. package/packages/core/dist/sources/index.d.ts.map +1 -1
  534. package/packages/core/dist/sources/index.js +1 -0
  535. package/packages/core/dist/sources/index.js.map +1 -1
  536. package/packages/core/dist/sources/watch.d.ts +37 -0
  537. package/packages/core/dist/sources/watch.d.ts.map +1 -0
  538. package/packages/core/dist/sources/watch.js +81 -0
  539. package/packages/core/dist/sources/watch.js.map +1 -0
  540. package/packages/core/dist/tools.d.ts +47 -0
  541. package/packages/core/dist/tools.d.ts.map +1 -1
  542. package/packages/core/dist/tools.js.map +1 -1
  543. package/packages/core/migrations/055_pending_plugin_data.sql +24 -0
  544. package/packages/core/migrations/056_dashboard_sessions.sql +37 -0
  545. package/packages/core/migrations/057_proposal_decided_by.sql +34 -0
  546. package/packages/core/migrations/058_message_feedback.sql +50 -0
  547. package/packages/core/package.json +4 -0
  548. package/packages/gateway/dist/.tsbuildinfo +1 -1
  549. package/packages/gateway/dist/agents/learning-digest.d.ts +7 -1
  550. package/packages/gateway/dist/agents/learning-digest.d.ts.map +1 -1
  551. package/packages/gateway/dist/agents/learning-digest.js +29 -3
  552. package/packages/gateway/dist/agents/learning-digest.js.map +1 -1
  553. package/packages/gateway/dist/agents/platform-files.d.ts +2 -0
  554. package/packages/gateway/dist/agents/platform-files.d.ts.map +1 -1
  555. package/packages/gateway/dist/agents/platform-files.js +2 -0
  556. package/packages/gateway/dist/agents/platform-files.js.map +1 -1
  557. package/packages/gateway/dist/agents/platform.d.ts +20 -0
  558. package/packages/gateway/dist/agents/platform.d.ts.map +1 -1
  559. package/packages/gateway/dist/agents/platform.js +46 -3
  560. package/packages/gateway/dist/agents/platform.js.map +1 -1
  561. package/packages/gateway/dist/agents-cli.d.ts +1 -1
  562. package/packages/gateway/dist/agents-cli.d.ts.map +1 -1
  563. package/packages/gateway/dist/agents-cli.js +12 -2
  564. package/packages/gateway/dist/agents-cli.js.map +1 -1
  565. package/packages/gateway/dist/chat/session.d.ts.map +1 -1
  566. package/packages/gateway/dist/chat/session.js +2 -1
  567. package/packages/gateway/dist/chat/session.js.map +1 -1
  568. package/packages/gateway/dist/mcp/requests.d.ts.map +1 -1
  569. package/packages/gateway/dist/mcp/requests.js +1 -0
  570. package/packages/gateway/dist/mcp/requests.js.map +1 -1
  571. package/packages/gateway/dist/plugins/approve.d.ts.map +1 -1
  572. package/packages/gateway/dist/plugins/approve.js +13 -2
  573. package/packages/gateway/dist/plugins/approve.js.map +1 -1
  574. package/packages/gateway/dist/plugins/migrate.d.ts.map +1 -1
  575. package/packages/gateway/dist/plugins/migrate.js +11 -1
  576. package/packages/gateway/dist/plugins/migrate.js.map +1 -1
  577. package/packages/gateway/dist/plugins/paths.d.ts +14 -0
  578. package/packages/gateway/dist/plugins/paths.d.ts.map +1 -1
  579. package/packages/gateway/dist/plugins/paths.js +27 -1
  580. package/packages/gateway/dist/plugins/paths.js.map +1 -1
  581. package/packages/gateway/dist/plugins/stage.d.ts +27 -3
  582. package/packages/gateway/dist/plugins/stage.d.ts.map +1 -1
  583. package/packages/gateway/dist/plugins/stage.js +35 -5
  584. package/packages/gateway/dist/plugins/stage.js.map +1 -1
  585. package/packages/gateway/dist/plugins-cli.d.ts +4 -0
  586. package/packages/gateway/dist/plugins-cli.d.ts.map +1 -1
  587. package/packages/gateway/dist/plugins-cli.js +42 -9
  588. package/packages/gateway/dist/plugins-cli.js.map +1 -1
  589. package/packages/gateway/dist/serve.d.ts.map +1 -1
  590. package/packages/gateway/dist/serve.js +14 -2
  591. package/packages/gateway/dist/serve.js.map +1 -1
  592. package/packages/gateway/dist/surfaces/browser-continuation.d.ts +2 -1
  593. package/packages/gateway/dist/surfaces/browser-continuation.d.ts.map +1 -1
  594. package/packages/gateway/dist/surfaces/browser-continuation.js +8 -5
  595. package/packages/gateway/dist/surfaces/browser-continuation.js.map +1 -1
  596. package/packages/gateway/dist/surfaces/browser-handoff.d.ts +27 -4
  597. package/packages/gateway/dist/surfaces/browser-handoff.d.ts.map +1 -1
  598. package/packages/gateway/dist/surfaces/browser-handoff.js +57 -7
  599. package/packages/gateway/dist/surfaces/browser-handoff.js.map +1 -1
  600. package/packages/gateway/dist/surfaces/carry-over.d.ts +89 -0
  601. package/packages/gateway/dist/surfaces/carry-over.d.ts.map +1 -0
  602. package/packages/gateway/dist/surfaces/carry-over.js +172 -0
  603. package/packages/gateway/dist/surfaces/carry-over.js.map +1 -0
  604. package/packages/gateway/dist/surfaces/conversation-lifetime.d.ts +5 -2
  605. package/packages/gateway/dist/surfaces/conversation-lifetime.d.ts.map +1 -1
  606. package/packages/gateway/dist/surfaces/conversation-lifetime.js +5 -2
  607. package/packages/gateway/dist/surfaces/conversation-lifetime.js.map +1 -1
  608. package/packages/gateway/dist/telegram/api.d.ts +34 -2
  609. package/packages/gateway/dist/telegram/api.d.ts.map +1 -1
  610. package/packages/gateway/dist/telegram/api.js +15 -2
  611. package/packages/gateway/dist/telegram/api.js.map +1 -1
  612. package/packages/gateway/dist/telegram/env-owner.d.ts +30 -0
  613. package/packages/gateway/dist/telegram/env-owner.d.ts.map +1 -0
  614. package/packages/gateway/dist/telegram/env-owner.js +45 -0
  615. package/packages/gateway/dist/telegram/env-owner.js.map +1 -0
  616. package/packages/gateway/dist/telegram/main.d.ts +0 -2
  617. package/packages/gateway/dist/telegram/main.d.ts.map +1 -1
  618. package/packages/gateway/dist/telegram/main.js +20 -25
  619. package/packages/gateway/dist/telegram/main.js.map +1 -1
  620. package/packages/gateway/dist/telegram/notify.d.ts.map +1 -1
  621. package/packages/gateway/dist/telegram/notify.js +1 -1
  622. package/packages/gateway/dist/telegram/notify.js.map +1 -1
  623. package/packages/gateway/dist/telegram/outbound.d.ts +2 -2
  624. package/packages/gateway/dist/telegram/outbound.d.ts.map +1 -1
  625. package/packages/gateway/dist/telegram/outbound.js +12 -3
  626. package/packages/gateway/dist/telegram/outbound.js.map +1 -1
  627. package/packages/gateway/dist/telegram/reactions.d.ts +45 -0
  628. package/packages/gateway/dist/telegram/reactions.d.ts.map +1 -0
  629. package/packages/gateway/dist/telegram/reactions.js +97 -0
  630. package/packages/gateway/dist/telegram/reactions.js.map +1 -0
  631. package/packages/gateway/dist/telegram/surface.d.ts +27 -1
  632. package/packages/gateway/dist/telegram/surface.d.ts.map +1 -1
  633. package/packages/gateway/dist/telegram/surface.js +186 -12
  634. package/packages/gateway/dist/telegram/surface.js.map +1 -1
  635. package/packages/gateway/dist/web/agents.d.ts +7 -1
  636. package/packages/gateway/dist/web/agents.d.ts.map +1 -1
  637. package/packages/gateway/dist/web/agents.js +32 -2
  638. package/packages/gateway/dist/web/agents.js.map +1 -1
  639. package/packages/gateway/dist/web/chat.d.ts +10 -3
  640. package/packages/gateway/dist/web/chat.d.ts.map +1 -1
  641. package/packages/gateway/dist/web/chat.js +18 -5
  642. package/packages/gateway/dist/web/chat.js.map +1 -1
  643. package/packages/gateway/dist/web/plugins.d.ts +6 -1
  644. package/packages/gateway/dist/web/plugins.d.ts.map +1 -1
  645. package/packages/gateway/dist/web/plugins.js +31 -2
  646. package/packages/gateway/dist/web/plugins.js.map +1 -1
  647. package/packages/gateway/dist/web/proposals.d.ts +21 -0
  648. package/packages/gateway/dist/web/proposals.d.ts.map +1 -1
  649. package/packages/gateway/dist/web/proposals.js +50 -1
  650. package/packages/gateway/dist/web/proposals.js.map +1 -1
  651. package/packages/gateway/dist/web/read.d.ts +23 -0
  652. package/packages/gateway/dist/web/read.d.ts.map +1 -1
  653. package/packages/gateway/dist/web/read.js +36 -1
  654. package/packages/gateway/dist/web/read.js.map +1 -1
  655. package/packages/gateway/dist/web/recovery.d.ts +40 -2
  656. package/packages/gateway/dist/web/recovery.d.ts.map +1 -1
  657. package/packages/gateway/dist/web/recovery.js +215 -18
  658. package/packages/gateway/dist/web/recovery.js.map +1 -1
  659. package/packages/gateway/dist/web/server.d.ts.map +1 -1
  660. package/packages/gateway/dist/web/server.js +87 -29
  661. package/packages/gateway/dist/web/server.js.map +1 -1
  662. package/packages/gateway/dist/web/sessions.d.ts +81 -7
  663. package/packages/gateway/dist/web/sessions.d.ts.map +1 -1
  664. package/packages/gateway/dist/web/sessions.js +242 -24
  665. package/packages/gateway/dist/web/sessions.js.map +1 -1
  666. package/packages/gateway/dist/web/signed-out.d.ts +46 -0
  667. package/packages/gateway/dist/web/signed-out.d.ts.map +1 -0
  668. package/packages/gateway/dist/web/signed-out.js +99 -0
  669. package/packages/gateway/dist/web/signed-out.js.map +1 -0
  670. package/packages/gateway/dist/web/tailscale.d.ts +13 -0
  671. package/packages/gateway/dist/web/tailscale.d.ts.map +1 -1
  672. package/packages/gateway/dist/web/tailscale.js +12 -0
  673. package/packages/gateway/dist/web/tailscale.js.map +1 -1
  674. package/packages/install/dist/.tsbuildinfo +1 -1
  675. package/packages/install/dist/backup.d.ts +18 -0
  676. package/packages/install/dist/backup.d.ts.map +1 -1
  677. package/packages/install/dist/backup.js +39 -2
  678. package/packages/install/dist/backup.js.map +1 -1
  679. package/packages/install/dist/kept-data.d.ts +20 -0
  680. package/packages/install/dist/kept-data.d.ts.map +1 -0
  681. package/packages/install/dist/kept-data.js +34 -0
  682. package/packages/install/dist/kept-data.js.map +1 -0
  683. package/packages/install/dist/launcher.d.ts.map +1 -1
  684. package/packages/install/dist/launcher.js +17 -3
  685. package/packages/install/dist/launcher.js.map +1 -1
  686. package/packages/install/dist/postgres-check.d.ts +18 -0
  687. package/packages/install/dist/postgres-check.d.ts.map +1 -0
  688. package/packages/install/dist/postgres-check.js +66 -0
  689. package/packages/install/dist/postgres-check.js.map +1 -0
  690. package/packages/install/dist/upgrade.d.ts +3 -0
  691. package/packages/install/dist/upgrade.d.ts.map +1 -1
  692. package/packages/install/dist/upgrade.js +30 -0
  693. package/packages/install/dist/upgrade.js.map +1 -1
  694. package/packages/runtime/dist/.tsbuildinfo +1 -1
  695. package/packages/tools/artifacts/dist/.tsbuildinfo +1 -1
  696. package/packages/tools/browser/dist/.tsbuildinfo +1 -1
  697. package/packages/tools/email/dist/.tsbuildinfo +1 -1
  698. package/packages/tools/email/dist/agent.d.ts.map +1 -1
  699. package/packages/tools/email/dist/agent.js +11 -0
  700. package/packages/tools/email/dist/agent.js.map +1 -1
  701. package/packages/tools/email/dist/imap/fake.d.ts +89 -3
  702. package/packages/tools/email/dist/imap/fake.d.ts.map +1 -1
  703. package/packages/tools/email/dist/imap/fake.js +234 -4
  704. package/packages/tools/email/dist/imap/fake.js.map +1 -1
  705. package/packages/tools/email/dist/imap/imapflow-client.d.ts +14 -1
  706. package/packages/tools/email/dist/imap/imapflow-client.d.ts.map +1 -1
  707. package/packages/tools/email/dist/imap/imapflow-client.js +157 -2
  708. package/packages/tools/email/dist/imap/imapflow-client.js.map +1 -1
  709. package/packages/tools/email/dist/index.d.ts +14 -2
  710. package/packages/tools/email/dist/index.d.ts.map +1 -1
  711. package/packages/tools/email/dist/index.js +23 -4
  712. package/packages/tools/email/dist/index.js.map +1 -1
  713. package/packages/tools/email/dist/logins.d.ts +24 -0
  714. package/packages/tools/email/dist/logins.d.ts.map +1 -0
  715. package/packages/tools/email/dist/logins.js +35 -0
  716. package/packages/tools/email/dist/logins.js.map +1 -0
  717. package/packages/tools/email/dist/mail.d.ts +14 -0
  718. package/packages/tools/email/dist/mail.d.ts.map +1 -1
  719. package/packages/tools/email/dist/mail.js +23 -0
  720. package/packages/tools/email/dist/mail.js.map +1 -1
  721. package/packages/tools/email/dist/mailbox/actions.d.ts +205 -0
  722. package/packages/tools/email/dist/mailbox/actions.d.ts.map +1 -0
  723. package/packages/tools/email/dist/mailbox/actions.js +662 -0
  724. package/packages/tools/email/dist/mailbox/actions.js.map +1 -0
  725. package/packages/tools/email/dist/mailbox/arrival.d.ts +61 -0
  726. package/packages/tools/email/dist/mailbox/arrival.d.ts.map +1 -0
  727. package/packages/tools/email/dist/mailbox/arrival.js +153 -0
  728. package/packages/tools/email/dist/mailbox/arrival.js.map +1 -0
  729. package/packages/tools/email/dist/mailbox/select.d.ts +53 -0
  730. package/packages/tools/email/dist/mailbox/select.d.ts.map +1 -0
  731. package/packages/tools/email/dist/mailbox/select.js +117 -0
  732. package/packages/tools/email/dist/mailbox/select.js.map +1 -0
  733. package/packages/tools/email/dist/pages/accounts.d.ts +37 -1
  734. package/packages/tools/email/dist/pages/accounts.d.ts.map +1 -1
  735. package/packages/tools/email/dist/pages/accounts.js +104 -2
  736. package/packages/tools/email/dist/pages/accounts.js.map +1 -1
  737. package/packages/tools/email/dist/pages/descriptors.d.ts.map +1 -1
  738. package/packages/tools/email/dist/pages/descriptors.js +142 -0
  739. package/packages/tools/email/dist/pages/descriptors.js.map +1 -1
  740. package/packages/tools/email/dist/pages/drafts-tools.d.ts +2 -2
  741. package/packages/tools/email/dist/pages/format.d.ts +1 -12
  742. package/packages/tools/email/dist/pages/format.d.ts.map +1 -1
  743. package/packages/tools/email/dist/pages/format.js +17 -0
  744. package/packages/tools/email/dist/pages/format.js.map +1 -1
  745. package/packages/tools/email/dist/pages/index.d.ts.map +1 -1
  746. package/packages/tools/email/dist/pages/index.js +5 -1
  747. package/packages/tools/email/dist/pages/index.js.map +1 -1
  748. package/packages/tools/email/dist/pages/policies-tools.d.ts +7 -0
  749. package/packages/tools/email/dist/pages/policies-tools.d.ts.map +1 -1
  750. package/packages/tools/email/dist/pages/policies-tools.js +11 -2
  751. package/packages/tools/email/dist/pages/policies-tools.js.map +1 -1
  752. package/packages/tools/email/dist/pages/queries.d.ts +16 -0
  753. package/packages/tools/email/dist/pages/queries.d.ts.map +1 -1
  754. package/packages/tools/email/dist/pages/queries.js +154 -3
  755. package/packages/tools/email/dist/pages/queries.js.map +1 -1
  756. package/packages/tools/email/dist/policies/auto.d.ts +133 -0
  757. package/packages/tools/email/dist/policies/auto.d.ts.map +1 -0
  758. package/packages/tools/email/dist/policies/auto.js +241 -0
  759. package/packages/tools/email/dist/policies/auto.js.map +1 -0
  760. package/packages/tools/email/dist/policies/gate.d.ts +34 -10
  761. package/packages/tools/email/dist/policies/gate.d.ts.map +1 -1
  762. package/packages/tools/email/dist/policies/gate.js +27 -12
  763. package/packages/tools/email/dist/policies/gate.js.map +1 -1
  764. package/packages/tools/email/dist/policies/learn.d.ts +26 -18
  765. package/packages/tools/email/dist/policies/learn.d.ts.map +1 -1
  766. package/packages/tools/email/dist/policies/learn.js +36 -10
  767. package/packages/tools/email/dist/policies/learn.js.map +1 -1
  768. package/packages/tools/email/dist/policies/learned.d.ts +25 -2
  769. package/packages/tools/email/dist/policies/learned.d.ts.map +1 -1
  770. package/packages/tools/email/dist/policies/learned.js +47 -5
  771. package/packages/tools/email/dist/policies/learned.js.map +1 -1
  772. package/packages/tools/email/dist/policies/store.d.ts +8 -2
  773. package/packages/tools/email/dist/policies/store.d.ts.map +1 -1
  774. package/packages/tools/email/dist/policies/store.js +19 -5
  775. package/packages/tools/email/dist/policies/store.js.map +1 -1
  776. package/packages/tools/email/dist/ports.d.ts +79 -0
  777. package/packages/tools/email/dist/ports.d.ts.map +1 -1
  778. package/packages/tools/email/dist/ports.js +6 -0
  779. package/packages/tools/email/dist/ports.js.map +1 -1
  780. package/packages/tools/email/dist/rows.d.ts.map +1 -1
  781. package/packages/tools/email/dist/rows.js +3 -1
  782. package/packages/tools/email/dist/rows.js.map +1 -1
  783. package/packages/tools/email/dist/sources/idle.d.ts +90 -0
  784. package/packages/tools/email/dist/sources/idle.d.ts.map +1 -0
  785. package/packages/tools/email/dist/sources/idle.js +250 -0
  786. package/packages/tools/email/dist/sources/idle.js.map +1 -0
  787. package/packages/tools/email/dist/sources/inbox-poll.d.ts +12 -1
  788. package/packages/tools/email/dist/sources/inbox-poll.d.ts.map +1 -1
  789. package/packages/tools/email/dist/sources/inbox-poll.js +280 -134
  790. package/packages/tools/email/dist/sources/inbox-poll.js.map +1 -1
  791. package/packages/tools/email/dist/tools/mailbox.d.ts +108 -0
  792. package/packages/tools/email/dist/tools/mailbox.d.ts.map +1 -0
  793. package/packages/tools/email/dist/tools/mailbox.js +359 -0
  794. package/packages/tools/email/dist/tools/mailbox.js.map +1 -0
  795. package/packages/tools/email/dist/tools/policies.d.ts +8 -2
  796. package/packages/tools/email/dist/tools/policies.d.ts.map +1 -1
  797. package/packages/tools/email/dist/tools/policies.js +43 -3
  798. package/packages/tools/email/dist/tools/policies.js.map +1 -1
  799. package/packages/tools/email/dist/tools/read.d.ts +2 -2
  800. package/packages/tools/email/dist/tools/triage.d.ts.map +1 -1
  801. package/packages/tools/email/dist/tools/triage.js +10 -4
  802. package/packages/tools/email/dist/tools/triage.js.map +1 -1
  803. package/packages/tools/email/migrations/017_mailbox_actions.sql +60 -0
  804. package/packages/tools/email/migrations/018_learned_auto.sql +30 -0
  805. package/packages/tools/email/migrations/019_arrival_pending.sql +26 -0
  806. package/packages/tools/email/package.json +3 -2
  807. package/packages/tools/host/dist/.tsbuildinfo +1 -1
  808. package/packages/tools/mcp/dist/.tsbuildinfo +1 -1
  809. package/packages/tools/memory/dist/.tsbuildinfo +1 -1
  810. package/packages/tools/web/dist/.tsbuildinfo +1 -1
  811. package/packages/web/dist/assets/index-CKuhKCWw.js +131 -0
  812. package/packages/web/dist/assets/index-DsK8UWCJ.css +1 -0
  813. package/packages/web/dist/assets/{lottie_light-7wQnGwdw.js → lottie_light-CSeMXM8D.js} +1 -1
  814. package/packages/web/dist/build.json +1 -1
  815. package/packages/web/dist/index.html +2 -2
  816. package/packages/web/dist/precache.json +4 -4
  817. package/packages/web/dist/assets/index-BxbiKNMS.css +0 -1
  818. package/packages/web/dist/assets/index-Rrze3bGo.js +0 -130
@@ -0,0 +1,90 @@
1
+ /**
2
+ * Mail almost instantly: one IMAP IDLE connection per mailbox, on INBOX.
3
+ *
4
+ * The poll (`inbox-poll.ts`) reads what changed; this file only learns *that*
5
+ * something changed, and asks for that account's poll right away. So nothing
6
+ * here touches a cursor, a row or a flag, and everything the poll guarantees
7
+ * (the quad, the transaction, the dedup key) holds for a poll IDLE started.
8
+ *
9
+ * - **Its own connection.** Never the poll's reader and never the write
10
+ * port's, so a mailbox action (a MOVE, a STORE) cannot break IDLE, and an
11
+ * IDLE that dies costs the poll nothing. INBOX only, opened read-only;
12
+ * Sent stays on the poll.
13
+ * - **Coalesced.** A burst of EXISTS/EXPUNGE/FLAGS starts one timer
14
+ * (`IDLE_DEBOUNCE_MS`, 2s) and the poll runs when it fires. The source
15
+ * never runs two polls of one account at once; a change that lands during
16
+ * a poll asks for one more after it (`inbox-poll.ts`, `runLocked`).
17
+ * - **Re-issued.** imapflow breaks and re-issues IDLE every
18
+ * `IDLE_RESTART_MS` (10 min), inside the 29 minutes a server may allow.
19
+ * - **Reconnected with backoff.** A drop or a failed connect waits 5s, then
20
+ * 10s, 20s … up to 5 minutes; a session that stayed up a minute resets it.
21
+ * After a reconnect the poll runs once, for whatever arrived meanwhile.
22
+ * - **Quiet when it cannot.** A server without IDLE is said once and left to
23
+ * the poll. A refused login records the same `login_failed_at` the poll
24
+ * does ("Password needed") and is not retried until the password changes
25
+ * (Set password, or a poll whose login works again).
26
+ * - **Stopped cleanly.** Plugin taken out, buddi stopping, account removed or
27
+ * turned off: the socket is closed and every timer cleared.
28
+ *
29
+ * While IDLE is live the poll slows to `IDLE_SLOW_POLL_SECONDS` for that
30
+ * account (the safety net); while it is not, the poll keeps its normal period.
31
+ */
32
+ import type { BuddiHost } from '@buddi/core/plugin';
33
+ import { type EnvLike } from '../config.js';
34
+ import type { ImapIdleFactory } from '../ports.js';
35
+ /** How long a burst of IDLE changes is gathered before the poll runs. */
36
+ export declare const IDLE_DEBOUNCE_MS = 2000;
37
+ /** First reconnect delay; doubled per failure up to `IDLE_BACKOFF_MAX_MS`. */
38
+ export declare const IDLE_BACKOFF_FIRST_MS = 5000;
39
+ export declare const IDLE_BACKOFF_MAX_MS: number;
40
+ /** A session that lived this long counts as healthy: the backoff starts over. */
41
+ export declare const IDLE_STABLE_MS = 60000;
42
+ /** The poll's period for an account whose IDLE is live: the safety net. */
43
+ export declare const IDLE_SLOW_POLL_SECONDS: number;
44
+ export type IdleState =
45
+ /** Opening the connection. */
46
+ 'connecting'
47
+ /** Idling: the server tells us. */
48
+ | 'live'
49
+ /** Dropped or could not connect; waiting to try again. */
50
+ | 'retrying'
51
+ /** The server has no IDLE. The poll does it all. */
52
+ | 'unsupported'
53
+ /** The server refused the password. Waits for a new one. */
54
+ | 'refused'
55
+ /** No password could be read. Waits for the account to change. */
56
+ | 'no-password' | 'stopped';
57
+ export interface AccountChange {
58
+ /** The account that changed; absent when a mailbox was added or removed. */
59
+ accountId?: string;
60
+ /** Its password was replaced: reconnect with the new one. */
61
+ password?: boolean;
62
+ }
63
+ /** Said by the page tools after add, remove and Set password. */
64
+ export declare function accountChanged(change?: AccountChange): void;
65
+ /** Whether this process has a live IDLE on this account's INBOX right now. */
66
+ export declare function idleLive(accountId: string): boolean;
67
+ export interface IdleWatchersOptions {
68
+ idle: ImapIdleFactory;
69
+ host: BuddiHost;
70
+ /** Ask for this account's poll now. The source serialises it. */
71
+ poll: (accountId: string) => Promise<void>;
72
+ /** Passwords by name instead of the owner's secrets (tests). */
73
+ env?: EnvLike;
74
+ debounceMs?: number;
75
+ backoffFirstMs?: number;
76
+ backoffMaxMs?: number;
77
+ stableMs?: number;
78
+ }
79
+ /** Every enabled account's watcher, kept in step with `email.accounts`. */
80
+ export declare class IdleWatchers {
81
+ #private;
82
+ constructor(opts: IdleWatchersOptions);
83
+ state(accountId: string): IdleState | null;
84
+ /** Start, stop or restart watchers so they match the enabled accounts. Serialised. */
85
+ reconcile(): Promise<void>;
86
+ /** The password changed: drop the connection and open one with the new one. */
87
+ restart(accountId: string): Promise<void>;
88
+ stop(): Promise<void>;
89
+ }
90
+ //# sourceMappingURL=idle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"idle.d.ts","sourceRoot":"","sources":["../../src/sources/idle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAgB,KAAK,OAAO,EAAE,MAAM,cAAc,CAAC;AAG1D,OAAO,KAAK,EAAiB,eAAe,EAAmB,MAAM,aAAa,CAAC;AAEnF,yEAAyE;AACzE,eAAO,MAAM,gBAAgB,OAAQ,CAAC;AACtC,8EAA8E;AAC9E,eAAO,MAAM,qBAAqB,OAAQ,CAAC;AAC3C,eAAO,MAAM,mBAAmB,QAAa,CAAC;AAC9C,iFAAiF;AACjF,eAAO,MAAM,cAAc,QAAS,CAAC;AACrC,2EAA2E;AAC3E,eAAO,MAAM,sBAAsB,QAAU,CAAC;AAE9C,MAAM,MAAM,SAAS;AACnB,8BAA8B;AAC5B,YAAY;AACd,mCAAmC;GACjC,MAAM;AACR,0DAA0D;GACxD,UAAU;AACZ,oDAAoD;GAClD,aAAa;AACf,4DAA4D;GAC1D,SAAS;AACX,kEAAkE;GAChE,aAAa,GACb,SAAS,CAAC;AAMd,MAAM,WAAW,aAAa;IAC5B,4EAA4E;IAC5E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAID,iEAAiE;AACjE,wBAAgB,cAAc,CAAC,MAAM,GAAE,aAAkB,GAAG,IAAI,CAQ/D;AAQD,8EAA8E;AAC9E,wBAAgB,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAGnD;AAID,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,eAAe,CAAC;IACtB,IAAI,EAAE,SAAS,CAAC;IAChB,iEAAiE;IACjE,IAAI,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,gEAAgE;IAChE,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,2EAA2E;AAC3E,qBAAa,YAAY;;gBAOX,IAAI,EAAE,mBAAmB;IAWrC,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAI1C,sFAAsF;IACtF,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAwC1B,+EAA+E;IACzE,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IASzC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAS5B"}
@@ -0,0 +1,250 @@
1
+ import { listAccounts } from '../config.js';
2
+ import { mailboxAuth } from '../credentials.js';
3
+ import { isAuthFailure, recordLoginFailure } from '../logins.js';
4
+ /** How long a burst of IDLE changes is gathered before the poll runs. */
5
+ export const IDLE_DEBOUNCE_MS = 2_000;
6
+ /** First reconnect delay; doubled per failure up to `IDLE_BACKOFF_MAX_MS`. */
7
+ export const IDLE_BACKOFF_FIRST_MS = 5_000;
8
+ export const IDLE_BACKOFF_MAX_MS = 5 * 60_000;
9
+ /** A session that lived this long counts as healthy: the backoff starts over. */
10
+ export const IDLE_STABLE_MS = 60_000;
11
+ /** The poll's period for an account whose IDLE is live: the safety net. */
12
+ export const IDLE_SLOW_POLL_SECONDS = 15 * 60;
13
+ const changeListeners = new Set();
14
+ /** Said by the page tools after add, remove and Set password. */
15
+ export function accountChanged(change = {}) {
16
+ for (const listener of changeListeners) {
17
+ try {
18
+ listener(change);
19
+ }
20
+ catch {
21
+ // A watcher's trouble is its own; the tool that changed the row is done.
22
+ }
23
+ }
24
+ }
25
+ /* ------------------------------------------------------------------------ */
26
+ /* What the page reads. */
27
+ /* ------------------------------------------------------------------------ */
28
+ const managers = new Set();
29
+ /** Whether this process has a live IDLE on this account's INBOX right now. */
30
+ export function idleLive(accountId) {
31
+ for (const manager of managers)
32
+ if (manager.state(accountId) === 'live')
33
+ return true;
34
+ return false;
35
+ }
36
+ /** Every enabled account's watcher, kept in step with `email.accounts`. */
37
+ export class IdleWatchers {
38
+ #opts;
39
+ #watchers = new Map();
40
+ #unlisten;
41
+ #stopped = false;
42
+ #reconciling = Promise.resolve();
43
+ constructor(opts) {
44
+ this.#opts = opts;
45
+ managers.add(this);
46
+ const listener = (change) => {
47
+ const done = change.password && change.accountId ? this.restart(change.accountId) : this.reconcile();
48
+ done.catch((err) => this.#opts.host.log(`email.idle: ${err instanceof Error ? err.message : String(err)}`));
49
+ };
50
+ changeListeners.add(listener);
51
+ this.#unlisten = () => changeListeners.delete(listener);
52
+ }
53
+ state(accountId) {
54
+ return this.#watchers.get(accountId)?.state ?? null;
55
+ }
56
+ /** Start, stop or restart watchers so they match the enabled accounts. Serialised. */
57
+ reconcile() {
58
+ const next = this.#reconciling.then(() => this.#reconcile()).catch((err) => {
59
+ this.#opts.host.log(`email.idle: ${err instanceof Error ? err.message : String(err)}`);
60
+ });
61
+ this.#reconciling = next;
62
+ return next;
63
+ }
64
+ async #reconcile() {
65
+ if (this.#stopped)
66
+ return;
67
+ const accounts = await listAccounts(this.#opts.host.db);
68
+ if (this.#stopped)
69
+ return;
70
+ const byId = new Map(accounts.map((a) => [a.id, a]));
71
+ for (const [id, watcher] of [...this.#watchers]) {
72
+ const account = byId.get(id);
73
+ const moved = account !== undefined &&
74
+ (account.imapHost !== watcher.account.imapHost || account.imapPort !== watcher.account.imapPort ||
75
+ account.address !== watcher.account.address || account.secretName !== watcher.account.secretName);
76
+ // A refusal is over once a login works again (the poll or Set password
77
+ // cleared `login_failed_at`).
78
+ const unrefused = account !== undefined && watcher.state === 'refused' && !account.loginFailedAt;
79
+ // A password that could not be read may be readable now.
80
+ const unread = watcher.state === 'no-password';
81
+ if (account === undefined || moved || unrefused || unread) {
82
+ this.#watchers.delete(id);
83
+ await watcher.stop();
84
+ }
85
+ else {
86
+ watcher.account = account;
87
+ }
88
+ }
89
+ for (const account of accounts) {
90
+ if (this.#stopped || this.#watchers.has(account.id))
91
+ continue;
92
+ // A row whose password the provider refused waits for a new one.
93
+ if (account.loginFailedAt)
94
+ continue;
95
+ const watcher = new AccountWatcher(account, this.#opts);
96
+ this.#watchers.set(account.id, watcher);
97
+ watcher.start();
98
+ }
99
+ }
100
+ /** The password changed: drop the connection and open one with the new one. */
101
+ async restart(accountId) {
102
+ const watcher = this.#watchers.get(accountId);
103
+ if (watcher) {
104
+ this.#watchers.delete(accountId);
105
+ await watcher.stop();
106
+ }
107
+ await this.reconcile();
108
+ }
109
+ async stop() {
110
+ this.#stopped = true;
111
+ this.#unlisten();
112
+ managers.delete(this);
113
+ await this.#reconciling;
114
+ const all = [...this.#watchers.values()];
115
+ this.#watchers.clear();
116
+ await Promise.all(all.map((w) => w.stop()));
117
+ }
118
+ }
119
+ /** One account's IDLE connection, its reconnects and its debounce. */
120
+ class AccountWatcher {
121
+ account;
122
+ opts;
123
+ state = 'connecting';
124
+ #session = null;
125
+ #connecting = null;
126
+ #retryTimer = null;
127
+ #debounceTimer = null;
128
+ #attempt = 0;
129
+ #stopped = false;
130
+ constructor(account, opts) {
131
+ this.account = account;
132
+ this.opts = opts;
133
+ }
134
+ start() {
135
+ this.#launch(false);
136
+ }
137
+ /** Connect, never leaving a rejection unhandled: an unexpected error (a database read, the vault) retries with backoff. */
138
+ #launch(reconnect) {
139
+ this.#connecting = this.#connect(reconnect)
140
+ .catch((err) => {
141
+ if (!this.#stopped)
142
+ this.#retry(err);
143
+ })
144
+ .finally(() => {
145
+ this.#connecting = null;
146
+ });
147
+ }
148
+ #log(line) {
149
+ this.opts.host.log(`email.idle: ${this.account.address}: ${line}`);
150
+ }
151
+ async #connect(reconnect) {
152
+ if (this.#stopped)
153
+ return;
154
+ this.state = 'connecting';
155
+ const auth = await mailboxAuth({ buddi: this.opts.host }, this.account, this.opts.env);
156
+ if (this.#stopped)
157
+ return;
158
+ if (!auth.ok) {
159
+ this.state = 'no-password';
160
+ this.#log(`no IDLE: ${auth.problem.message}; checking on the poll`);
161
+ return;
162
+ }
163
+ let session;
164
+ try {
165
+ session = await this.opts.idle(this.account, auth.value, () => this.#changed());
166
+ }
167
+ catch (err) {
168
+ if (this.#stopped)
169
+ return;
170
+ if (isAuthFailure(err)) {
171
+ this.state = 'refused';
172
+ await recordLoginFailure(this.opts.host.db, this.account.id, err, this.opts.host.clock.now()).catch(() => { });
173
+ this.#log('refused its stored password; IDLE waits for a new one (Settings → Email → Set password)');
174
+ return;
175
+ }
176
+ this.#retry(err);
177
+ return;
178
+ }
179
+ if (session === 'unsupported') {
180
+ this.state = 'unsupported';
181
+ this.#log('the server has no IDLE; checking on the poll');
182
+ return;
183
+ }
184
+ if (this.#stopped) {
185
+ await session.close().catch(() => { });
186
+ return;
187
+ }
188
+ this.#session = session;
189
+ this.state = 'live';
190
+ const since = Date.now();
191
+ this.#log(reconnect ? 'IDLE is back' : 'IDLE on INBOX');
192
+ // Mail that arrived while the connection was down is the poll's to find.
193
+ if (reconnect)
194
+ this.#changed();
195
+ void session.ended.then(({ error }) => {
196
+ if (this.#session !== session)
197
+ return;
198
+ this.#session = null;
199
+ if (this.#stopped)
200
+ return;
201
+ if (Date.now() - since >= (this.opts.stableMs ?? IDLE_STABLE_MS))
202
+ this.#attempt = 0;
203
+ this.#retry(error ?? new Error('the server closed the connection'));
204
+ });
205
+ }
206
+ #retry(err) {
207
+ if (this.#stopped)
208
+ return;
209
+ this.state = 'retrying';
210
+ const first = this.opts.backoffFirstMs ?? IDLE_BACKOFF_FIRST_MS;
211
+ const max = this.opts.backoffMaxMs ?? IDLE_BACKOFF_MAX_MS;
212
+ const delay = Math.min(max, first * 2 ** Math.min(this.#attempt, 20));
213
+ this.#attempt += 1;
214
+ this.#log(`IDLE dropped (${err instanceof Error ? err.message : String(err)}); trying again in ${Math.round(delay / 1000)}s`);
215
+ this.#retryTimer = setTimeout(() => {
216
+ this.#retryTimer = null;
217
+ this.#launch(true);
218
+ }, delay);
219
+ this.#retryTimer.unref?.();
220
+ }
221
+ /** Something changed on INBOX: one poll, at most `debounceMs` from the first change. */
222
+ #changed() {
223
+ if (this.#stopped || this.#debounceTimer)
224
+ return;
225
+ this.#debounceTimer = setTimeout(() => {
226
+ this.#debounceTimer = null;
227
+ if (this.#stopped)
228
+ return;
229
+ this.opts.poll(this.account.id).catch((err) => {
230
+ this.#log(`poll after IDLE failed: ${err instanceof Error ? err.message : String(err)}`);
231
+ });
232
+ }, this.opts.debounceMs ?? IDLE_DEBOUNCE_MS);
233
+ this.#debounceTimer.unref?.();
234
+ }
235
+ async stop() {
236
+ this.#stopped = true;
237
+ this.state = 'stopped';
238
+ if (this.#retryTimer)
239
+ clearTimeout(this.#retryTimer);
240
+ if (this.#debounceTimer)
241
+ clearTimeout(this.#debounceTimer);
242
+ this.#retryTimer = null;
243
+ this.#debounceTimer = null;
244
+ await this.#connecting?.catch(() => { });
245
+ const session = this.#session;
246
+ this.#session = null;
247
+ await session?.close().catch(() => { });
248
+ }
249
+ }
250
+ //# sourceMappingURL=idle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"idle.js","sourceRoot":"","sources":["../../src/sources/idle.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { type EnvLike } from '../config.js';
2
- import type { ImapClientFactory } from '../ports.js';
2
+ import type { ImapClientFactory, ImapIdleFactory } from '../ports.js';
3
+ import { type IdleWatchersOptions } from './idle.js';
3
4
  import type { Source } from '../types.js';
4
5
  /** The agent every new message is triaged by. */
5
6
  export declare const TRIAGE_AGENT_ID = "mail-triage";
@@ -58,6 +59,16 @@ export interface InboxPollOptions {
58
59
  timeoutMs?: number;
59
60
  /** Newest-N to bring along on first contact. Overrides `EMAIL_BACKFILL`. */
60
61
  backfill?: number;
62
+ /**
63
+ * How IDLE connections are made. With one, the source has a `watch` that
64
+ * keeps one IDLE connection per enabled account on INBOX (`idle.ts`);
65
+ * without one (tests, one-shot callers) it only polls.
66
+ */
67
+ idle?: ImapIdleFactory;
68
+ /** Debounce and backoff, for tests. */
69
+ idleTuning?: Pick<IdleWatchersOptions, 'debounceMs' | 'backoffFirstMs' | 'backoffMaxMs' | 'stableMs'>;
70
+ /** The poll period, in seconds, for an account whose IDLE is live. Default 15 minutes. */
71
+ slowPollSeconds?: number;
61
72
  }
62
73
  /**
63
74
  * Build the source. The IMAP factory is a parameter, not a default, so the
@@ -1 +1 @@
1
- {"version":3,"file":"inbox-poll.d.ts","sourceRoot":"","sources":["../../src/sources/inbox-poll.ts"],"names":[],"mappings":"AAkDA,OAAO,EAA0C,KAAK,OAAO,EAAE,MAAM,cAAc,CAAC;AAQpF,OAAO,KAAK,EAA6B,iBAAiB,EAAiB,MAAM,aAAa,CAAC;AAI/F,OAAO,KAAK,EAAE,MAAM,EAAiB,MAAM,aAAa,CAAC;AAKzD,iDAAiD;AACjD,eAAO,MAAM,eAAe,gBAAgB,CAAC;AAE7C,+BAA+B;AAC/B,eAAO,MAAM,kBAAkB,MAAM,CAAC;AAEtC,sFAAsF;AACtF,eAAO,MAAM,YAAY,KAAK,CAAC;AAE/B;;;;;;;;GAQG;AACH,eAAO,MAAM,gBAAgB,OAAQ,CAAC;AAEtC,6EAA6E;AAC7E,eAAO,MAAM,eAAe,MAAM,CAAC;AAEnC,yEAAyE;AACzE,eAAO,MAAM,uBAAuB,QAAS,CAAC;AAC9C,eAAO,MAAM,gBAAgB,0BAA0B,CAAC;AAExD;;;GAGG;AACH,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAClC,eAAO,MAAM,YAAY,mBAAmB,CAAC;AAE7C,iFAAiF;AACjF,qBAAa,gBAAiB,SAAQ,KAAK;IAGvC,QAAQ,CAAC,EAAE,EAAE,MAAM;IACnB,QAAQ,CAAC,EAAE,EAAE,MAAM;IAHrB,SAAkB,IAAI,sBAAsB;gBAEjC,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM;CAItB;AAED;;;;;;;GAOG;AACH,wBAAsB,YAAY,CAAC,CAAC,EAClC,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,EAChB,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,GAC/B,OAAO,CAAC,CAAC,CAAC,CAsBZ;AAUD,kEAAkE;AAClE,wBAAgB,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED,MAAM,WAAW,gBAAgB;IAC/B,yEAAyE;IACzE,OAAO,EAAE,iBAAiB,CAAC;IAC3B,iEAAiE;IACjE,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qEAAqE;IACrE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AA8TD;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,gBAAgB,GAAG,MAAM,CAkLpE;AAmdD,gFAAgF;AAChF,eAAO,MAAM,mBAAmB,IAAI,CAAC;AACrC,eAAO,MAAM,mBAAmB,KAAK,CAAC"}
1
+ {"version":3,"file":"inbox-poll.d.ts","sourceRoot":"","sources":["../../src/sources/inbox-poll.ts"],"names":[],"mappings":"AAkDA,OAAO,EAAuD,KAAK,OAAO,EAAE,MAAM,cAAc,CAAC;AAUjG,OAAO,KAAK,EAA6B,iBAAiB,EAAE,eAAe,EAAiB,MAAM,aAAa,CAAC;AAChH,OAAO,EAAwC,KAAK,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAI3F,OAAO,KAAK,EAAE,MAAM,EAAiB,MAAM,aAAa,CAAC;AAMzD,iDAAiD;AACjD,eAAO,MAAM,eAAe,gBAAgB,CAAC;AAE7C,+BAA+B;AAC/B,eAAO,MAAM,kBAAkB,MAAM,CAAC;AAEtC,sFAAsF;AACtF,eAAO,MAAM,YAAY,KAAK,CAAC;AAE/B;;;;;;;;GAQG;AACH,eAAO,MAAM,gBAAgB,OAAQ,CAAC;AAEtC,6EAA6E;AAC7E,eAAO,MAAM,eAAe,MAAM,CAAC;AAEnC,yEAAyE;AACzE,eAAO,MAAM,uBAAuB,QAAS,CAAC;AAC9C,eAAO,MAAM,gBAAgB,0BAA0B,CAAC;AAExD;;;GAGG;AACH,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAClC,eAAO,MAAM,YAAY,mBAAmB,CAAC;AAE7C,iFAAiF;AACjF,qBAAa,gBAAiB,SAAQ,KAAK;IAGvC,QAAQ,CAAC,EAAE,EAAE,MAAM;IACnB,QAAQ,CAAC,EAAE,EAAE,MAAM;IAHrB,SAAkB,IAAI,sBAAsB;gBAEjC,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM;CAItB;AAED;;;;;;;GAOG;AACH,wBAAsB,YAAY,CAAC,CAAC,EAClC,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,EAChB,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,GAC/B,OAAO,CAAC,CAAC,CAAC,CAsBZ;AAUD,kEAAkE;AAClE,wBAAgB,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED,MAAM,WAAW,gBAAgB;IAC/B,yEAAyE;IACzE,OAAO,EAAE,iBAAiB,CAAC;IAC3B,iEAAiE;IACjE,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qEAAqE;IACrE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,uCAAuC;IACvC,UAAU,CAAC,EAAE,IAAI,CAAC,mBAAmB,EAAE,YAAY,GAAG,gBAAgB,GAAG,cAAc,GAAG,UAAU,CAAC,CAAC;IACtG,0FAA0F;IAC1F,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AA+TD;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,gBAAgB,GAAG,MAAM,CAwTpE;AAoeD,gFAAgF;AAChF,eAAO,MAAM,mBAAmB,IAAI,CAAC;AACrC,eAAO,MAAM,mBAAmB,KAAK,CAAC"}