@withbuddi/buddi 0.1.0-pre.47 → 0.1.0-pre.49

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 (578) hide show
  1. package/extension/manifest.json +2 -2
  2. package/node_modules/@buddi/cli/dist/.tsbuildinfo +1 -1
  3. package/node_modules/@buddi/core/dist/.tsbuildinfo +1 -1
  4. package/node_modules/@buddi/core/dist/agents/frontmatter.d.ts +4 -4
  5. package/node_modules/@buddi/core/dist/host/build.d.ts +8 -1
  6. package/node_modules/@buddi/core/dist/host/build.d.ts.map +1 -1
  7. package/node_modules/@buddi/core/dist/host/build.js +45 -0
  8. package/node_modules/@buddi/core/dist/host/build.js.map +1 -1
  9. package/node_modules/@buddi/core/dist/host/types.d.ts +53 -1
  10. package/node_modules/@buddi/core/dist/host/types.d.ts.map +1 -1
  11. package/node_modules/@buddi/core/dist/index.d.ts +1 -0
  12. package/node_modules/@buddi/core/dist/index.d.ts.map +1 -1
  13. package/node_modules/@buddi/core/dist/index.js +1 -0
  14. package/node_modules/@buddi/core/dist/index.js.map +1 -1
  15. package/node_modules/@buddi/core/dist/pages.d.ts +60 -1
  16. package/node_modules/@buddi/core/dist/pages.d.ts.map +1 -1
  17. package/node_modules/@buddi/core/dist/pages.js +71 -5
  18. package/node_modules/@buddi/core/dist/pages.js.map +1 -1
  19. package/node_modules/@buddi/core/dist/plugin/assets.d.ts +4 -4
  20. package/node_modules/@buddi/core/dist/plugin/assets.d.ts.map +1 -1
  21. package/node_modules/@buddi/core/dist/plugin/assets.js +2 -2
  22. package/node_modules/@buddi/core/dist/plugin/assets.js.map +1 -1
  23. package/node_modules/@buddi/core/dist/plugin/index.d.ts +8 -4
  24. package/node_modules/@buddi/core/dist/plugin/index.d.ts.map +1 -1
  25. package/node_modules/@buddi/core/dist/plugin/index.js +1 -1
  26. package/node_modules/@buddi/core/dist/plugin/index.js.map +1 -1
  27. package/node_modules/@buddi/core/dist/plugin/requires.d.ts +20 -0
  28. package/node_modules/@buddi/core/dist/plugin/requires.d.ts.map +1 -1
  29. package/node_modules/@buddi/core/dist/plugin/requires.js +11 -0
  30. package/node_modules/@buddi/core/dist/plugin/requires.js.map +1 -1
  31. package/node_modules/@buddi/core/dist/plugin/uses.d.ts +1 -1
  32. package/node_modules/@buddi/core/dist/plugin/uses.d.ts.map +1 -1
  33. package/node_modules/@buddi/core/dist/plugin/uses.js +2 -0
  34. package/node_modules/@buddi/core/dist/plugin/uses.js.map +1 -1
  35. package/node_modules/@buddi/core/dist/plugin/version.d.ts +1 -1
  36. package/node_modules/@buddi/core/dist/plugin/version.js +1 -1
  37. package/node_modules/@buddi/core/dist/plugin-assets.d.ts.map +1 -1
  38. package/node_modules/@buddi/core/dist/plugin-assets.js +3 -1
  39. package/node_modules/@buddi/core/dist/plugin-assets.js.map +1 -1
  40. package/node_modules/@buddi/core/dist/registry.d.ts.map +1 -1
  41. package/node_modules/@buddi/core/dist/registry.js +8 -1
  42. package/node_modules/@buddi/core/dist/registry.js.map +1 -1
  43. package/node_modules/@buddi/core/dist/runtimes/__fixtures__/server.d.ts +26 -0
  44. package/node_modules/@buddi/core/dist/runtimes/__fixtures__/server.d.ts.map +1 -0
  45. package/node_modules/@buddi/core/dist/runtimes/__fixtures__/server.js +93 -0
  46. package/node_modules/@buddi/core/dist/runtimes/__fixtures__/server.js.map +1 -0
  47. package/node_modules/@buddi/core/dist/runtimes/area.d.ts +22 -0
  48. package/node_modules/@buddi/core/dist/runtimes/area.d.ts.map +1 -0
  49. package/node_modules/@buddi/core/dist/runtimes/area.js +127 -0
  50. package/node_modules/@buddi/core/dist/runtimes/area.js.map +1 -0
  51. package/node_modules/@buddi/core/dist/runtimes/config.d.ts +54 -0
  52. package/node_modules/@buddi/core/dist/runtimes/config.d.ts.map +1 -0
  53. package/node_modules/@buddi/core/dist/runtimes/config.js +57 -0
  54. package/node_modules/@buddi/core/dist/runtimes/config.js.map +1 -0
  55. package/node_modules/@buddi/core/dist/runtimes/consent.d.ts +170 -0
  56. package/node_modules/@buddi/core/dist/runtimes/consent.d.ts.map +1 -0
  57. package/node_modules/@buddi/core/dist/runtimes/consent.js +205 -0
  58. package/node_modules/@buddi/core/dist/runtimes/consent.js.map +1 -0
  59. package/node_modules/@buddi/core/dist/runtimes/download.d.ts +95 -0
  60. package/node_modules/@buddi/core/dist/runtimes/download.d.ts.map +1 -0
  61. package/node_modules/@buddi/core/dist/runtimes/download.js +333 -0
  62. package/node_modules/@buddi/core/dist/runtimes/download.js.map +1 -0
  63. package/node_modules/@buddi/core/dist/runtimes/index.d.ts +10 -0
  64. package/node_modules/@buddi/core/dist/runtimes/index.d.ts.map +1 -0
  65. package/node_modules/@buddi/core/dist/runtimes/index.js +10 -0
  66. package/node_modules/@buddi/core/dist/runtimes/index.js.map +1 -0
  67. package/node_modules/@buddi/core/dist/runtimes/models.d.ts +78 -0
  68. package/node_modules/@buddi/core/dist/runtimes/models.d.ts.map +1 -0
  69. package/node_modules/@buddi/core/dist/runtimes/models.js +240 -0
  70. package/node_modules/@buddi/core/dist/runtimes/models.js.map +1 -0
  71. package/node_modules/@buddi/core/dist/runtimes/native.d.ts +49 -0
  72. package/node_modules/@buddi/core/dist/runtimes/native.d.ts.map +1 -0
  73. package/node_modules/@buddi/core/dist/runtimes/native.js +27 -0
  74. package/node_modules/@buddi/core/dist/runtimes/native.js.map +1 -0
  75. package/node_modules/@buddi/core/dist/runtimes/onnx.d.ts +87 -0
  76. package/node_modules/@buddi/core/dist/runtimes/onnx.d.ts.map +1 -0
  77. package/node_modules/@buddi/core/dist/runtimes/onnx.js +582 -0
  78. package/node_modules/@buddi/core/dist/runtimes/onnx.js.map +1 -0
  79. package/node_modules/@buddi/core/dist/runtimes/pins.d.ts +53 -0
  80. package/node_modules/@buddi/core/dist/runtimes/pins.d.ts.map +1 -0
  81. package/node_modules/@buddi/core/dist/runtimes/pins.js +75 -0
  82. package/node_modules/@buddi/core/dist/runtimes/pins.js.map +1 -0
  83. package/node_modules/@buddi/core/dist/scheduler/missions.d.ts +9 -3
  84. package/node_modules/@buddi/core/dist/scheduler/missions.d.ts.map +1 -1
  85. package/node_modules/@buddi/core/dist/scheduler/missions.js +12 -3
  86. package/node_modules/@buddi/core/dist/scheduler/missions.js.map +1 -1
  87. package/node_modules/@buddi/core/dist/scheduler/types.d.ts +8 -3
  88. package/node_modules/@buddi/core/dist/scheduler/types.d.ts.map +1 -1
  89. package/node_modules/@buddi/core/dist/scheduler/types.js +5 -1
  90. package/node_modules/@buddi/core/dist/scheduler/types.js.map +1 -1
  91. package/node_modules/@buddi/core/dist/secrets/approval.d.ts.map +1 -1
  92. package/node_modules/@buddi/core/dist/secrets/approval.js +3 -1
  93. package/node_modules/@buddi/core/dist/secrets/approval.js.map +1 -1
  94. package/node_modules/@buddi/core/dist/secrets/use.d.ts +3 -1
  95. package/node_modules/@buddi/core/dist/secrets/use.d.ts.map +1 -1
  96. package/node_modules/@buddi/core/dist/secrets/use.js +2 -0
  97. package/node_modules/@buddi/core/dist/secrets/use.js.map +1 -1
  98. package/node_modules/@buddi/core/dist/surfaces.d.ts +1 -1
  99. package/node_modules/@buddi/core/dist/surfaces.d.ts.map +1 -1
  100. package/node_modules/@buddi/core/dist/surfaces.js +2 -2
  101. package/node_modules/@buddi/core/dist/surfaces.js.map +1 -1
  102. package/node_modules/@buddi/core/dist/tools.d.ts +26 -0
  103. package/node_modules/@buddi/core/dist/tools.d.ts.map +1 -1
  104. package/node_modules/@buddi/core/dist/tools.js.map +1 -1
  105. package/node_modules/@buddi/core/dist/views.d.ts +751 -10
  106. package/node_modules/@buddi/core/dist/views.d.ts.map +1 -1
  107. package/node_modules/@buddi/core/dist/views.js +105 -0
  108. package/node_modules/@buddi/core/dist/views.js.map +1 -1
  109. package/node_modules/@buddi/core/migrations/079_mission_browser_owner.sql +7 -0
  110. package/node_modules/@buddi/gateway/dist/.tsbuildinfo +1 -1
  111. package/node_modules/@buddi/gateway/dist/agents/catalog.d.ts.map +1 -1
  112. package/node_modules/@buddi/gateway/dist/agents/catalog.js +6 -3
  113. package/node_modules/@buddi/gateway/dist/agents/catalog.js.map +1 -1
  114. package/node_modules/@buddi/gateway/dist/agents/catalogue-package.d.ts +24 -10
  115. package/node_modules/@buddi/gateway/dist/agents/catalogue-package.d.ts.map +1 -1
  116. package/node_modules/@buddi/gateway/dist/agents/catalogue-package.js +6 -2
  117. package/node_modules/@buddi/gateway/dist/agents/catalogue-package.js.map +1 -1
  118. package/node_modules/@buddi/gateway/dist/agents/platform-catalogue.d.ts +17 -4
  119. package/node_modules/@buddi/gateway/dist/agents/platform-catalogue.d.ts.map +1 -1
  120. package/node_modules/@buddi/gateway/dist/agents/platform-catalogue.js +25 -5
  121. package/node_modules/@buddi/gateway/dist/agents/platform-catalogue.js.map +1 -1
  122. package/node_modules/@buddi/gateway/dist/browser-host.d.ts +7 -0
  123. package/node_modules/@buddi/gateway/dist/browser-host.d.ts.map +1 -1
  124. package/node_modules/@buddi/gateway/dist/browser-host.js +22 -0
  125. package/node_modules/@buddi/gateway/dist/browser-host.js.map +1 -1
  126. package/node_modules/@buddi/gateway/dist/missions/chrome-scope.d.ts +91 -0
  127. package/node_modules/@buddi/gateway/dist/missions/chrome-scope.d.ts.map +1 -0
  128. package/node_modules/@buddi/gateway/dist/missions/chrome-scope.js +194 -0
  129. package/node_modules/@buddi/gateway/dist/missions/chrome-scope.js.map +1 -0
  130. package/node_modules/@buddi/gateway/dist/missions/execute.d.ts +20 -0
  131. package/node_modules/@buddi/gateway/dist/missions/execute.d.ts.map +1 -1
  132. package/node_modules/@buddi/gateway/dist/missions/execute.js +76 -3
  133. package/node_modules/@buddi/gateway/dist/missions/execute.js.map +1 -1
  134. package/node_modules/@buddi/gateway/dist/missions/reminders.d.ts +10 -2
  135. package/node_modules/@buddi/gateway/dist/missions/reminders.d.ts.map +1 -1
  136. package/node_modules/@buddi/gateway/dist/missions/reminders.js +53 -5
  137. package/node_modules/@buddi/gateway/dist/missions/reminders.js.map +1 -1
  138. package/node_modules/@buddi/gateway/dist/missions/run-consent.d.ts +12 -0
  139. package/node_modules/@buddi/gateway/dist/missions/run-consent.d.ts.map +1 -0
  140. package/node_modules/@buddi/gateway/dist/missions/run-consent.js +26 -0
  141. package/node_modules/@buddi/gateway/dist/missions/run-consent.js.map +1 -0
  142. package/node_modules/@buddi/gateway/dist/owner-notify.d.ts +0 -11
  143. package/node_modules/@buddi/gateway/dist/owner-notify.d.ts.map +1 -1
  144. package/node_modules/@buddi/gateway/dist/owner-notify.js +3 -1
  145. package/node_modules/@buddi/gateway/dist/owner-notify.js.map +1 -1
  146. package/node_modules/@buddi/gateway/dist/plugins/asset-image.d.ts.map +1 -1
  147. package/node_modules/@buddi/gateway/dist/plugins/asset-image.js +11 -2
  148. package/node_modules/@buddi/gateway/dist/plugins/asset-image.js.map +1 -1
  149. package/node_modules/@buddi/gateway/dist/plugins/update.d.ts.map +1 -1
  150. package/node_modules/@buddi/gateway/dist/plugins/update.js +3 -0
  151. package/node_modules/@buddi/gateway/dist/plugins/update.js.map +1 -1
  152. package/node_modules/@buddi/gateway/dist/report-audio.d.ts +10 -0
  153. package/node_modules/@buddi/gateway/dist/report-audio.d.ts.map +1 -0
  154. package/node_modules/@buddi/gateway/dist/report-audio.js +13 -0
  155. package/node_modules/@buddi/gateway/dist/report-audio.js.map +1 -0
  156. package/node_modules/@buddi/gateway/dist/serve.d.ts.map +1 -1
  157. package/node_modules/@buddi/gateway/dist/serve.js +2 -1
  158. package/node_modules/@buddi/gateway/dist/serve.js.map +1 -1
  159. package/node_modules/@buddi/gateway/dist/telegram/api.d.ts +1 -0
  160. package/node_modules/@buddi/gateway/dist/telegram/api.d.ts.map +1 -1
  161. package/node_modules/@buddi/gateway/dist/telegram/api.js +1 -0
  162. package/node_modules/@buddi/gateway/dist/telegram/api.js.map +1 -1
  163. package/node_modules/@buddi/gateway/dist/telegram/approvals.d.ts +2 -1
  164. package/node_modules/@buddi/gateway/dist/telegram/approvals.d.ts.map +1 -1
  165. package/node_modules/@buddi/gateway/dist/telegram/approvals.js +16 -4
  166. package/node_modules/@buddi/gateway/dist/telegram/approvals.js.map +1 -1
  167. package/node_modules/@buddi/gateway/dist/telegram/html.js +2 -2
  168. package/node_modules/@buddi/gateway/dist/telegram/leading-media.d.ts +43 -0
  169. package/node_modules/@buddi/gateway/dist/telegram/leading-media.d.ts.map +1 -0
  170. package/node_modules/@buddi/gateway/dist/telegram/leading-media.js +68 -0
  171. package/node_modules/@buddi/gateway/dist/telegram/leading-media.js.map +1 -0
  172. package/node_modules/@buddi/gateway/dist/telegram/main.d.ts.map +1 -1
  173. package/node_modules/@buddi/gateway/dist/telegram/main.js +25 -3
  174. package/node_modules/@buddi/gateway/dist/telegram/main.js.map +1 -1
  175. package/node_modules/@buddi/gateway/dist/telegram/outbound.d.ts +4 -2
  176. package/node_modules/@buddi/gateway/dist/telegram/outbound.d.ts.map +1 -1
  177. package/node_modules/@buddi/gateway/dist/telegram/outbound.js +33 -7
  178. package/node_modules/@buddi/gateway/dist/telegram/outbound.js.map +1 -1
  179. package/node_modules/@buddi/gateway/dist/telegram/surface.d.ts +4 -0
  180. package/node_modules/@buddi/gateway/dist/telegram/surface.d.ts.map +1 -1
  181. package/node_modules/@buddi/gateway/dist/telegram/surface.js +10 -7
  182. package/node_modules/@buddi/gateway/dist/telegram/surface.js.map +1 -1
  183. package/node_modules/@buddi/gateway/dist/web/api-routes.d.ts.map +1 -1
  184. package/node_modules/@buddi/gateway/dist/web/api-routes.js +13 -3
  185. package/node_modules/@buddi/gateway/dist/web/api-routes.js.map +1 -1
  186. package/node_modules/@buddi/gateway/dist/web/approval-ask.d.ts +8 -0
  187. package/node_modules/@buddi/gateway/dist/web/approval-ask.d.ts.map +1 -1
  188. package/node_modules/@buddi/gateway/dist/web/approval-ask.js +25 -0
  189. package/node_modules/@buddi/gateway/dist/web/approval-ask.js.map +1 -1
  190. package/node_modules/@buddi/gateway/dist/web/plugins.d.ts +1 -0
  191. package/node_modules/@buddi/gateway/dist/web/plugins.d.ts.map +1 -1
  192. package/node_modules/@buddi/gateway/dist/web/plugins.js +13 -2
  193. package/node_modules/@buddi/gateway/dist/web/plugins.js.map +1 -1
  194. package/node_modules/@buddi/gateway/dist/web/read.d.ts +2 -0
  195. package/node_modules/@buddi/gateway/dist/web/read.d.ts.map +1 -1
  196. package/node_modules/@buddi/gateway/dist/web/read.js +1 -0
  197. package/node_modules/@buddi/gateway/dist/web/read.js.map +1 -1
  198. package/node_modules/@buddi/gateway/dist/web/runtimes.d.ts +10 -0
  199. package/node_modules/@buddi/gateway/dist/web/runtimes.d.ts.map +1 -0
  200. package/node_modules/@buddi/gateway/dist/web/runtimes.js +25 -0
  201. package/node_modules/@buddi/gateway/dist/web/runtimes.js.map +1 -0
  202. package/node_modules/@buddi/gateway/dist/web/server.d.ts +1 -1
  203. package/node_modules/@buddi/gateway/dist/web/server.d.ts.map +1 -1
  204. package/node_modules/@buddi/gateway/dist/web/server.js +46 -12
  205. package/node_modules/@buddi/gateway/dist/web/server.js.map +1 -1
  206. package/node_modules/@buddi/gateway/dist/web/service.d.ts +9 -0
  207. package/node_modules/@buddi/gateway/dist/web/service.d.ts.map +1 -1
  208. package/node_modules/@buddi/gateway/dist/web/service.js +27 -0
  209. package/node_modules/@buddi/gateway/dist/web/service.js.map +1 -1
  210. package/node_modules/@buddi/gateway/dist/web/write.d.ts +11 -1
  211. package/node_modules/@buddi/gateway/dist/web/write.d.ts.map +1 -1
  212. package/node_modules/@buddi/gateway/dist/web/write.js +18 -1
  213. package/node_modules/@buddi/gateway/dist/web/write.js.map +1 -1
  214. package/node_modules/@buddi/install/dist/.tsbuildinfo +1 -1
  215. package/node_modules/@buddi/runtime/dist/.tsbuildinfo +1 -1
  216. package/node_modules/@buddi/runtime/dist/delegate.d.ts.map +1 -1
  217. package/node_modules/@buddi/runtime/dist/delegate.js +1 -0
  218. package/node_modules/@buddi/runtime/dist/delegate.js.map +1 -1
  219. package/node_modules/@buddi/tool-artifacts/dist/.tsbuildinfo +1 -1
  220. package/node_modules/@buddi/tool-browser/dist/.tsbuildinfo +1 -1
  221. package/node_modules/@buddi/tool-browser/dist/controller.d.ts +5 -0
  222. package/node_modules/@buddi/tool-browser/dist/controller.d.ts.map +1 -1
  223. package/node_modules/@buddi/tool-browser/dist/controller.js +41 -5
  224. package/node_modules/@buddi/tool-browser/dist/controller.js.map +1 -1
  225. package/node_modules/@buddi/tool-browser/dist/routes.d.ts +6 -0
  226. package/node_modules/@buddi/tool-browser/dist/routes.d.ts.map +1 -1
  227. package/node_modules/@buddi/tool-browser/dist/routes.js +2 -2
  228. package/node_modules/@buddi/tool-browser/dist/routes.js.map +1 -1
  229. package/node_modules/@buddi/tool-email/dist/.tsbuildinfo +1 -1
  230. package/node_modules/@buddi/tool-host/dist/.tsbuildinfo +1 -1
  231. package/node_modules/@buddi/tool-mcp/dist/.tsbuildinfo +1 -1
  232. package/node_modules/@buddi/tool-memory/dist/.tsbuildinfo +1 -1
  233. package/node_modules/@buddi/tool-web/dist/.tsbuildinfo +1 -1
  234. package/node_modules/docx/dist/charts.cjs +18 -10
  235. package/node_modules/docx/dist/charts.iife.js +18 -10
  236. package/node_modules/docx/dist/charts.mjs +18 -10
  237. package/node_modules/docx/dist/charts.umd.cjs +18 -10
  238. package/node_modules/docx/dist/index.cjs +2300 -283
  239. package/node_modules/docx/dist/index.d.cts +605 -32
  240. package/node_modules/docx/dist/index.d.ts +605 -32
  241. package/node_modules/docx/dist/index.iife.js +2300 -283
  242. package/node_modules/docx/dist/index.mjs +2293 -284
  243. package/node_modules/docx/dist/index.umd.cjs +2300 -283
  244. package/node_modules/docx/dist/layout.cjs +50860 -0
  245. package/node_modules/docx/dist/layout.d.cts +385 -0
  246. package/node_modules/docx/dist/layout.d.ts +385 -0
  247. package/node_modules/docx/dist/layout.iife.js +50863 -0
  248. package/node_modules/docx/dist/layout.mjs +50856 -0
  249. package/node_modules/docx/dist/layout.umd.cjs +50864 -0
  250. package/node_modules/docx/dist/math.cjs +7 -7
  251. package/node_modules/docx/dist/math.iife.js +7 -7
  252. package/node_modules/docx/dist/math.mjs +7 -7
  253. package/node_modules/docx/dist/math.umd.cjs +7 -7
  254. package/node_modules/docx/dist/shapes.cjs +2051 -2470
  255. package/node_modules/docx/dist/shapes.iife.js +2051 -2470
  256. package/node_modules/docx/dist/shapes.mjs +2051 -2470
  257. package/node_modules/docx/dist/shapes.umd.cjs +2051 -2470
  258. package/node_modules/docx/dist/watermarks.cjs +4 -4
  259. package/node_modules/docx/dist/watermarks.iife.js +4 -4
  260. package/node_modules/docx/dist/watermarks.mjs +4 -4
  261. package/node_modules/docx/dist/watermarks.umd.cjs +4 -4
  262. package/node_modules/docx/package.json +18 -5
  263. package/node_modules/imapflow/CHANGELOG.md +17 -0
  264. package/node_modules/imapflow/dist/cjs/commands/append.js +10 -3
  265. package/node_modules/imapflow/dist/cjs/commands/authenticate.js +27 -18
  266. package/node_modules/imapflow/dist/cjs/commands/close.d.ts +12 -1
  267. package/node_modules/imapflow/dist/cjs/commands/close.js +4 -2
  268. package/node_modules/imapflow/dist/cjs/commands/copyuid-parser.js +16 -2
  269. package/node_modules/imapflow/dist/cjs/commands/delete.js +2 -1
  270. package/node_modules/imapflow/dist/cjs/commands/esearch-parser.js +8 -2
  271. package/node_modules/imapflow/dist/cjs/commands/fetch.js +35 -9
  272. package/node_modules/imapflow/dist/cjs/commands/id.js +8 -1
  273. package/node_modules/imapflow/dist/cjs/commands/idle.js +15 -5
  274. package/node_modules/imapflow/dist/cjs/commands/list.js +10 -1
  275. package/node_modules/imapflow/dist/cjs/commands/login.js +5 -1
  276. package/node_modules/imapflow/dist/cjs/commands/logout.js +7 -0
  277. package/node_modules/imapflow/dist/cjs/commands/namespace.js +7 -3
  278. package/node_modules/imapflow/dist/cjs/commands/quota.js +3 -1
  279. package/node_modules/imapflow/dist/cjs/commands/rename.js +2 -1
  280. package/node_modules/imapflow/dist/cjs/commands/select.js +5 -0
  281. package/node_modules/imapflow/dist/cjs/commands/status.js +6 -1
  282. package/node_modules/imapflow/dist/cjs/commands/store.d.ts +1 -1
  283. package/node_modules/imapflow/dist/cjs/commands/store.js +1 -2
  284. package/node_modules/imapflow/dist/cjs/download.js +82 -91
  285. package/node_modules/imapflow/dist/cjs/handler/imap-compiler.js +45 -29
  286. package/node_modules/imapflow/dist/cjs/handler/limits.d.ts +11 -0
  287. package/node_modules/imapflow/dist/cjs/handler/limits.js +16 -1
  288. package/node_modules/imapflow/dist/cjs/handler/parser-instance.d.ts +10 -0
  289. package/node_modules/imapflow/dist/cjs/handler/parser-instance.js +25 -10
  290. package/node_modules/imapflow/dist/cjs/handler/token-parser.js +162 -78
  291. package/node_modules/imapflow/dist/cjs/imap-flow.js +235 -89
  292. package/node_modules/imapflow/dist/cjs/package-info.d.ts +1 -1
  293. package/node_modules/imapflow/dist/cjs/package-info.js +1 -1
  294. package/node_modules/imapflow/dist/cjs/proxy-connection.js +7 -7
  295. package/node_modules/imapflow/dist/cjs/search-compiler.js +37 -16
  296. package/node_modules/imapflow/dist/cjs/special-use.js +10 -5
  297. package/node_modules/imapflow/dist/cjs/tools.d.ts +10 -1
  298. package/node_modules/imapflow/dist/cjs/tools.js +30 -3
  299. package/node_modules/imapflow/dist/cjs/types.d.ts +19 -4
  300. package/node_modules/imapflow/dist/esm/commands/append.js +11 -4
  301. package/node_modules/imapflow/dist/esm/commands/authenticate.js +28 -19
  302. package/node_modules/imapflow/dist/esm/commands/close.d.ts +12 -1
  303. package/node_modules/imapflow/dist/esm/commands/close.js +5 -3
  304. package/node_modules/imapflow/dist/esm/commands/copyuid-parser.js +16 -2
  305. package/node_modules/imapflow/dist/esm/commands/delete.js +2 -1
  306. package/node_modules/imapflow/dist/esm/commands/esearch-parser.js +8 -2
  307. package/node_modules/imapflow/dist/esm/commands/fetch.js +35 -9
  308. package/node_modules/imapflow/dist/esm/commands/id.js +9 -2
  309. package/node_modules/imapflow/dist/esm/commands/idle.js +16 -6
  310. package/node_modules/imapflow/dist/esm/commands/list.js +10 -1
  311. package/node_modules/imapflow/dist/esm/commands/login.js +6 -2
  312. package/node_modules/imapflow/dist/esm/commands/logout.js +7 -0
  313. package/node_modules/imapflow/dist/esm/commands/namespace.js +7 -3
  314. package/node_modules/imapflow/dist/esm/commands/quota.js +3 -1
  315. package/node_modules/imapflow/dist/esm/commands/rename.js +2 -1
  316. package/node_modules/imapflow/dist/esm/commands/select.js +5 -0
  317. package/node_modules/imapflow/dist/esm/commands/status.js +7 -2
  318. package/node_modules/imapflow/dist/esm/commands/store.d.ts +1 -1
  319. package/node_modules/imapflow/dist/esm/commands/store.js +1 -2
  320. package/node_modules/imapflow/dist/esm/download.js +82 -91
  321. package/node_modules/imapflow/dist/esm/handler/imap-compiler.js +45 -29
  322. package/node_modules/imapflow/dist/esm/handler/limits.d.ts +11 -0
  323. package/node_modules/imapflow/dist/esm/handler/limits.js +14 -0
  324. package/node_modules/imapflow/dist/esm/handler/parser-instance.d.ts +10 -0
  325. package/node_modules/imapflow/dist/esm/handler/parser-instance.js +25 -10
  326. package/node_modules/imapflow/dist/esm/handler/token-parser.js +163 -79
  327. package/node_modules/imapflow/dist/esm/imap-flow.js +235 -89
  328. package/node_modules/imapflow/dist/esm/package-info.d.ts +1 -1
  329. package/node_modules/imapflow/dist/esm/package-info.js +1 -1
  330. package/node_modules/imapflow/dist/esm/proxy-connection.js +7 -7
  331. package/node_modules/imapflow/dist/esm/search-compiler.js +37 -16
  332. package/node_modules/imapflow/dist/esm/special-use.js +10 -5
  333. package/node_modules/imapflow/dist/esm/tools.d.ts +10 -1
  334. package/node_modules/imapflow/dist/esm/tools.js +29 -3
  335. package/node_modules/imapflow/dist/esm/types.d.ts +19 -4
  336. package/node_modules/imapflow/package.json +3 -2
  337. package/package.json +2 -2
  338. package/packages/cli/dist/.tsbuildinfo +1 -1
  339. package/packages/core/dist/.tsbuildinfo +1 -1
  340. package/packages/core/dist/agents/frontmatter.d.ts +4 -4
  341. package/packages/core/dist/host/build.d.ts +8 -1
  342. package/packages/core/dist/host/build.d.ts.map +1 -1
  343. package/packages/core/dist/host/build.js +45 -0
  344. package/packages/core/dist/host/build.js.map +1 -1
  345. package/packages/core/dist/host/types.d.ts +53 -1
  346. package/packages/core/dist/host/types.d.ts.map +1 -1
  347. package/packages/core/dist/index.d.ts +1 -0
  348. package/packages/core/dist/index.d.ts.map +1 -1
  349. package/packages/core/dist/index.js +1 -0
  350. package/packages/core/dist/index.js.map +1 -1
  351. package/packages/core/dist/pages.d.ts +60 -1
  352. package/packages/core/dist/pages.d.ts.map +1 -1
  353. package/packages/core/dist/pages.js +71 -5
  354. package/packages/core/dist/pages.js.map +1 -1
  355. package/packages/core/dist/plugin/assets.d.ts +4 -4
  356. package/packages/core/dist/plugin/assets.d.ts.map +1 -1
  357. package/packages/core/dist/plugin/assets.js +2 -2
  358. package/packages/core/dist/plugin/assets.js.map +1 -1
  359. package/packages/core/dist/plugin/index.d.ts +8 -4
  360. package/packages/core/dist/plugin/index.d.ts.map +1 -1
  361. package/packages/core/dist/plugin/index.js +1 -1
  362. package/packages/core/dist/plugin/index.js.map +1 -1
  363. package/packages/core/dist/plugin/requires.d.ts +20 -0
  364. package/packages/core/dist/plugin/requires.d.ts.map +1 -1
  365. package/packages/core/dist/plugin/requires.js +11 -0
  366. package/packages/core/dist/plugin/requires.js.map +1 -1
  367. package/packages/core/dist/plugin/uses.d.ts +1 -1
  368. package/packages/core/dist/plugin/uses.d.ts.map +1 -1
  369. package/packages/core/dist/plugin/uses.js +2 -0
  370. package/packages/core/dist/plugin/uses.js.map +1 -1
  371. package/packages/core/dist/plugin/version.d.ts +1 -1
  372. package/packages/core/dist/plugin/version.js +1 -1
  373. package/packages/core/dist/plugin-assets.d.ts.map +1 -1
  374. package/packages/core/dist/plugin-assets.js +3 -1
  375. package/packages/core/dist/plugin-assets.js.map +1 -1
  376. package/packages/core/dist/registry.d.ts.map +1 -1
  377. package/packages/core/dist/registry.js +8 -1
  378. package/packages/core/dist/registry.js.map +1 -1
  379. package/packages/core/dist/runtimes/__fixtures__/server.d.ts +26 -0
  380. package/packages/core/dist/runtimes/__fixtures__/server.d.ts.map +1 -0
  381. package/packages/core/dist/runtimes/__fixtures__/server.js +93 -0
  382. package/packages/core/dist/runtimes/__fixtures__/server.js.map +1 -0
  383. package/packages/core/dist/runtimes/area.d.ts +22 -0
  384. package/packages/core/dist/runtimes/area.d.ts.map +1 -0
  385. package/packages/core/dist/runtimes/area.js +127 -0
  386. package/packages/core/dist/runtimes/area.js.map +1 -0
  387. package/packages/core/dist/runtimes/config.d.ts +54 -0
  388. package/packages/core/dist/runtimes/config.d.ts.map +1 -0
  389. package/packages/core/dist/runtimes/config.js +57 -0
  390. package/packages/core/dist/runtimes/config.js.map +1 -0
  391. package/packages/core/dist/runtimes/consent.d.ts +170 -0
  392. package/packages/core/dist/runtimes/consent.d.ts.map +1 -0
  393. package/packages/core/dist/runtimes/consent.js +205 -0
  394. package/packages/core/dist/runtimes/consent.js.map +1 -0
  395. package/packages/core/dist/runtimes/download.d.ts +95 -0
  396. package/packages/core/dist/runtimes/download.d.ts.map +1 -0
  397. package/packages/core/dist/runtimes/download.js +333 -0
  398. package/packages/core/dist/runtimes/download.js.map +1 -0
  399. package/packages/core/dist/runtimes/index.d.ts +10 -0
  400. package/packages/core/dist/runtimes/index.d.ts.map +1 -0
  401. package/packages/core/dist/runtimes/index.js +10 -0
  402. package/packages/core/dist/runtimes/index.js.map +1 -0
  403. package/packages/core/dist/runtimes/models.d.ts +78 -0
  404. package/packages/core/dist/runtimes/models.d.ts.map +1 -0
  405. package/packages/core/dist/runtimes/models.js +240 -0
  406. package/packages/core/dist/runtimes/models.js.map +1 -0
  407. package/packages/core/dist/runtimes/native.d.ts +49 -0
  408. package/packages/core/dist/runtimes/native.d.ts.map +1 -0
  409. package/packages/core/dist/runtimes/native.js +27 -0
  410. package/packages/core/dist/runtimes/native.js.map +1 -0
  411. package/packages/core/dist/runtimes/onnx.d.ts +87 -0
  412. package/packages/core/dist/runtimes/onnx.d.ts.map +1 -0
  413. package/packages/core/dist/runtimes/onnx.js +582 -0
  414. package/packages/core/dist/runtimes/onnx.js.map +1 -0
  415. package/packages/core/dist/runtimes/pins.d.ts +53 -0
  416. package/packages/core/dist/runtimes/pins.d.ts.map +1 -0
  417. package/packages/core/dist/runtimes/pins.js +75 -0
  418. package/packages/core/dist/runtimes/pins.js.map +1 -0
  419. package/packages/core/dist/scheduler/missions.d.ts +9 -3
  420. package/packages/core/dist/scheduler/missions.d.ts.map +1 -1
  421. package/packages/core/dist/scheduler/missions.js +12 -3
  422. package/packages/core/dist/scheduler/missions.js.map +1 -1
  423. package/packages/core/dist/scheduler/types.d.ts +8 -3
  424. package/packages/core/dist/scheduler/types.d.ts.map +1 -1
  425. package/packages/core/dist/scheduler/types.js +5 -1
  426. package/packages/core/dist/scheduler/types.js.map +1 -1
  427. package/packages/core/dist/secrets/approval.d.ts.map +1 -1
  428. package/packages/core/dist/secrets/approval.js +3 -1
  429. package/packages/core/dist/secrets/approval.js.map +1 -1
  430. package/packages/core/dist/secrets/use.d.ts +3 -1
  431. package/packages/core/dist/secrets/use.d.ts.map +1 -1
  432. package/packages/core/dist/secrets/use.js +2 -0
  433. package/packages/core/dist/secrets/use.js.map +1 -1
  434. package/packages/core/dist/surfaces.d.ts +1 -1
  435. package/packages/core/dist/surfaces.d.ts.map +1 -1
  436. package/packages/core/dist/surfaces.js +2 -2
  437. package/packages/core/dist/surfaces.js.map +1 -1
  438. package/packages/core/dist/tools.d.ts +26 -0
  439. package/packages/core/dist/tools.d.ts.map +1 -1
  440. package/packages/core/dist/tools.js.map +1 -1
  441. package/packages/core/dist/views.d.ts +751 -10
  442. package/packages/core/dist/views.d.ts.map +1 -1
  443. package/packages/core/dist/views.js +105 -0
  444. package/packages/core/dist/views.js.map +1 -1
  445. package/packages/core/migrations/079_mission_browser_owner.sql +7 -0
  446. package/packages/gateway/dist/.tsbuildinfo +1 -1
  447. package/packages/gateway/dist/agents/catalog.d.ts.map +1 -1
  448. package/packages/gateway/dist/agents/catalog.js +6 -3
  449. package/packages/gateway/dist/agents/catalog.js.map +1 -1
  450. package/packages/gateway/dist/agents/catalogue-package.d.ts +24 -10
  451. package/packages/gateway/dist/agents/catalogue-package.d.ts.map +1 -1
  452. package/packages/gateway/dist/agents/catalogue-package.js +6 -2
  453. package/packages/gateway/dist/agents/catalogue-package.js.map +1 -1
  454. package/packages/gateway/dist/agents/platform-catalogue.d.ts +17 -4
  455. package/packages/gateway/dist/agents/platform-catalogue.d.ts.map +1 -1
  456. package/packages/gateway/dist/agents/platform-catalogue.js +25 -5
  457. package/packages/gateway/dist/agents/platform-catalogue.js.map +1 -1
  458. package/packages/gateway/dist/browser-host.d.ts +7 -0
  459. package/packages/gateway/dist/browser-host.d.ts.map +1 -1
  460. package/packages/gateway/dist/browser-host.js +22 -0
  461. package/packages/gateway/dist/browser-host.js.map +1 -1
  462. package/packages/gateway/dist/missions/chrome-scope.d.ts +91 -0
  463. package/packages/gateway/dist/missions/chrome-scope.d.ts.map +1 -0
  464. package/packages/gateway/dist/missions/chrome-scope.js +194 -0
  465. package/packages/gateway/dist/missions/chrome-scope.js.map +1 -0
  466. package/packages/gateway/dist/missions/execute.d.ts +20 -0
  467. package/packages/gateway/dist/missions/execute.d.ts.map +1 -1
  468. package/packages/gateway/dist/missions/execute.js +76 -3
  469. package/packages/gateway/dist/missions/execute.js.map +1 -1
  470. package/packages/gateway/dist/missions/reminders.d.ts +10 -2
  471. package/packages/gateway/dist/missions/reminders.d.ts.map +1 -1
  472. package/packages/gateway/dist/missions/reminders.js +53 -5
  473. package/packages/gateway/dist/missions/reminders.js.map +1 -1
  474. package/packages/gateway/dist/missions/run-consent.d.ts +12 -0
  475. package/packages/gateway/dist/missions/run-consent.d.ts.map +1 -0
  476. package/packages/gateway/dist/missions/run-consent.js +26 -0
  477. package/packages/gateway/dist/missions/run-consent.js.map +1 -0
  478. package/packages/gateway/dist/owner-notify.d.ts +0 -11
  479. package/packages/gateway/dist/owner-notify.d.ts.map +1 -1
  480. package/packages/gateway/dist/owner-notify.js +3 -1
  481. package/packages/gateway/dist/owner-notify.js.map +1 -1
  482. package/packages/gateway/dist/plugins/asset-image.d.ts.map +1 -1
  483. package/packages/gateway/dist/plugins/asset-image.js +11 -2
  484. package/packages/gateway/dist/plugins/asset-image.js.map +1 -1
  485. package/packages/gateway/dist/plugins/update.d.ts.map +1 -1
  486. package/packages/gateway/dist/plugins/update.js +3 -0
  487. package/packages/gateway/dist/plugins/update.js.map +1 -1
  488. package/packages/gateway/dist/report-audio.d.ts +10 -0
  489. package/packages/gateway/dist/report-audio.d.ts.map +1 -0
  490. package/packages/gateway/dist/report-audio.js +13 -0
  491. package/packages/gateway/dist/report-audio.js.map +1 -0
  492. package/packages/gateway/dist/serve.d.ts.map +1 -1
  493. package/packages/gateway/dist/serve.js +2 -1
  494. package/packages/gateway/dist/serve.js.map +1 -1
  495. package/packages/gateway/dist/telegram/api.d.ts +1 -0
  496. package/packages/gateway/dist/telegram/api.d.ts.map +1 -1
  497. package/packages/gateway/dist/telegram/api.js +1 -0
  498. package/packages/gateway/dist/telegram/api.js.map +1 -1
  499. package/packages/gateway/dist/telegram/approvals.d.ts +2 -1
  500. package/packages/gateway/dist/telegram/approvals.d.ts.map +1 -1
  501. package/packages/gateway/dist/telegram/approvals.js +16 -4
  502. package/packages/gateway/dist/telegram/approvals.js.map +1 -1
  503. package/packages/gateway/dist/telegram/html.js +2 -2
  504. package/packages/gateway/dist/telegram/leading-media.d.ts +43 -0
  505. package/packages/gateway/dist/telegram/leading-media.d.ts.map +1 -0
  506. package/packages/gateway/dist/telegram/leading-media.js +68 -0
  507. package/packages/gateway/dist/telegram/leading-media.js.map +1 -0
  508. package/packages/gateway/dist/telegram/main.d.ts.map +1 -1
  509. package/packages/gateway/dist/telegram/main.js +25 -3
  510. package/packages/gateway/dist/telegram/main.js.map +1 -1
  511. package/packages/gateway/dist/telegram/outbound.d.ts +4 -2
  512. package/packages/gateway/dist/telegram/outbound.d.ts.map +1 -1
  513. package/packages/gateway/dist/telegram/outbound.js +33 -7
  514. package/packages/gateway/dist/telegram/outbound.js.map +1 -1
  515. package/packages/gateway/dist/telegram/surface.d.ts +4 -0
  516. package/packages/gateway/dist/telegram/surface.d.ts.map +1 -1
  517. package/packages/gateway/dist/telegram/surface.js +10 -7
  518. package/packages/gateway/dist/telegram/surface.js.map +1 -1
  519. package/packages/gateway/dist/web/api-routes.d.ts.map +1 -1
  520. package/packages/gateway/dist/web/api-routes.js +13 -3
  521. package/packages/gateway/dist/web/api-routes.js.map +1 -1
  522. package/packages/gateway/dist/web/approval-ask.d.ts +8 -0
  523. package/packages/gateway/dist/web/approval-ask.d.ts.map +1 -1
  524. package/packages/gateway/dist/web/approval-ask.js +25 -0
  525. package/packages/gateway/dist/web/approval-ask.js.map +1 -1
  526. package/packages/gateway/dist/web/plugins.d.ts +1 -0
  527. package/packages/gateway/dist/web/plugins.d.ts.map +1 -1
  528. package/packages/gateway/dist/web/plugins.js +13 -2
  529. package/packages/gateway/dist/web/plugins.js.map +1 -1
  530. package/packages/gateway/dist/web/read.d.ts +2 -0
  531. package/packages/gateway/dist/web/read.d.ts.map +1 -1
  532. package/packages/gateway/dist/web/read.js +1 -0
  533. package/packages/gateway/dist/web/read.js.map +1 -1
  534. package/packages/gateway/dist/web/runtimes.d.ts +10 -0
  535. package/packages/gateway/dist/web/runtimes.d.ts.map +1 -0
  536. package/packages/gateway/dist/web/runtimes.js +25 -0
  537. package/packages/gateway/dist/web/runtimes.js.map +1 -0
  538. package/packages/gateway/dist/web/server.d.ts +1 -1
  539. package/packages/gateway/dist/web/server.d.ts.map +1 -1
  540. package/packages/gateway/dist/web/server.js +46 -12
  541. package/packages/gateway/dist/web/server.js.map +1 -1
  542. package/packages/gateway/dist/web/service.d.ts +9 -0
  543. package/packages/gateway/dist/web/service.d.ts.map +1 -1
  544. package/packages/gateway/dist/web/service.js +27 -0
  545. package/packages/gateway/dist/web/service.js.map +1 -1
  546. package/packages/gateway/dist/web/write.d.ts +11 -1
  547. package/packages/gateway/dist/web/write.d.ts.map +1 -1
  548. package/packages/gateway/dist/web/write.js +18 -1
  549. package/packages/gateway/dist/web/write.js.map +1 -1
  550. package/packages/install/dist/.tsbuildinfo +1 -1
  551. package/packages/runtime/dist/.tsbuildinfo +1 -1
  552. package/packages/runtime/dist/delegate.d.ts.map +1 -1
  553. package/packages/runtime/dist/delegate.js +1 -0
  554. package/packages/runtime/dist/delegate.js.map +1 -1
  555. package/packages/tools/artifacts/dist/.tsbuildinfo +1 -1
  556. package/packages/tools/browser/dist/.tsbuildinfo +1 -1
  557. package/packages/tools/browser/dist/controller.d.ts +5 -0
  558. package/packages/tools/browser/dist/controller.d.ts.map +1 -1
  559. package/packages/tools/browser/dist/controller.js +41 -5
  560. package/packages/tools/browser/dist/controller.js.map +1 -1
  561. package/packages/tools/browser/dist/routes.d.ts +6 -0
  562. package/packages/tools/browser/dist/routes.d.ts.map +1 -1
  563. package/packages/tools/browser/dist/routes.js +2 -2
  564. package/packages/tools/browser/dist/routes.js.map +1 -1
  565. package/packages/tools/email/dist/.tsbuildinfo +1 -1
  566. package/packages/tools/host/dist/.tsbuildinfo +1 -1
  567. package/packages/tools/mcp/dist/.tsbuildinfo +1 -1
  568. package/packages/tools/memory/dist/.tsbuildinfo +1 -1
  569. package/packages/tools/web/dist/.tsbuildinfo +1 -1
  570. package/packages/web/dist/assets/index-DBVZzTau.css +1 -0
  571. package/packages/web/dist/assets/index-Dz7zNZd9.js +155 -0
  572. package/packages/web/dist/assets/lamejs-fr7QR4q8.js +14 -0
  573. package/packages/web/dist/assets/{lottie_light-CM_Bp6rc.js → lottie_light-CDos62XP.js} +1 -1
  574. package/packages/web/dist/build.json +1 -1
  575. package/packages/web/dist/index.html +2 -2
  576. package/packages/web/dist/precache.json +5 -4
  577. package/packages/web/dist/assets/index-Bxcetnpt.js +0 -150
  578. package/packages/web/dist/assets/index-CkzsX0YQ.css +0 -1
@@ -50,17 +50,12 @@ let toSequenceValue = (value) => [].concat(value).join(',');
50
50
  let toSearchValue = (value) => UNICODE_PATTERN.test(value) && !value.includes('\0') ? { type: 'LITERAL', value: Buffer.from(value) } : { type: 'ATOM', value };
51
51
  /**
52
52
  * Adds a search option with its value(s) to the attributes array.
53
- * Handles NOT operations and array values.
54
53
  *
55
54
  * @param attributes - Array to append the attribute to
56
55
  * @param term - The search term (e.g., 'FROM', 'SUBJECT')
57
- * @param value - The value for the search term (string, array, or falsy for NOT)
56
+ * @param value - The value for the search term (string or array)
58
57
  */
59
58
  let setOpt = (attributes, term, value) => {
60
- // Handle NOT operations for false or null values
61
- if (value === false || value === null) {
62
- attributes.push({ type: 'ATOM', value: 'NOT' });
63
- }
64
59
  attributes.push({ type: 'ATOM', value: term.toUpperCase() });
65
60
  // Handle array values (e.g. HEADER name/value pairs)
66
61
  if (Array.isArray(value)) {
@@ -250,6 +245,11 @@ export const searchCompiler = (connection, query) => {
250
245
  break;
251
246
  // Email ID support (OBJECTID or Gmail extension)
252
247
  case 'EMAILID':
248
+ // A falsy value means no criterion, as for the text fields. It used to
249
+ // compile into NOT EMAILID "false", which matched every message
250
+ if (!params[term]) {
251
+ break;
252
+ }
253
253
  if (connection.capabilities.has('OBJECTID')) {
254
254
  setOpt(attributes, 'EMAILID', params[term]);
255
255
  }
@@ -257,7 +257,7 @@ export const searchCompiler = (connection, query) => {
257
257
  // Fallback to Gmail message ID
258
258
  setOpt(attributes, 'X-GM-MSGID', params[term]);
259
259
  }
260
- else if (params[term]) {
260
+ else {
261
261
  // Dropping the criterion would widen the search to every message
262
262
  // matching the rest of the query, which a delete or move acts on
263
263
  fail('MissingServerExtension', 'Server does not support OBJECTID or X-GM-EXT-1 extension required for EMAILID');
@@ -265,6 +265,11 @@ export const searchCompiler = (connection, query) => {
265
265
  break;
266
266
  // Thread ID support (OBJECTID or Gmail extension)
267
267
  case 'THREADID':
268
+ // A falsy value means no criterion, as for the text fields. It used to
269
+ // compile into NOT THREADID "false", which matched every message
270
+ if (!params[term]) {
271
+ break;
272
+ }
268
273
  if (connection.capabilities.has('OBJECTID')) {
269
274
  setOpt(attributes, 'THREADID', params[term]);
270
275
  }
@@ -272,7 +277,7 @@ export const searchCompiler = (connection, query) => {
272
277
  // Fallback to Gmail thread ID
273
278
  setOpt(attributes, 'X-GM-THRID', params[term]);
274
279
  }
275
- else if (params[term]) {
280
+ else {
276
281
  // Dropping the criterion would widen the search to every message
277
282
  // matching the rest of the query, which a delete or move acts on
278
283
  fail('MissingServerExtension', 'Server does not support OBJECTID or X-GM-EXT-1 extension required for THREADID');
@@ -335,11 +340,11 @@ export const searchCompiler = (connection, query) => {
335
340
  if (!value) {
336
341
  break;
337
342
  }
338
- // Use WITHIN extension for better timezone handling if available
339
- if (connection.capabilities.has('WITHIN')) {
340
- // Convert to seconds ago from now
341
- const now = Date.now();
342
- const withinSeconds = Math.round(Math.max(0, now - value.getTime()) / 1000);
343
+ // Use WITHIN extension for better timezone handling if available.
344
+ // The interval is an nz-number (RFC 5032), so a date that is not in the
345
+ // past (OLDER 0 would be answered with BAD) takes the date path instead
346
+ const withinSeconds = Math.round((Date.now() - value.getTime()) / 1000);
347
+ if (connection.capabilities.has('WITHIN') && withinSeconds >= 1) {
343
348
  const withinKeyword = term.toUpperCase() === 'BEFORE' ? 'OLDER' : 'YOUNGER';
344
349
  setOpt(attributes, withinKeyword, withinSeconds.toString());
345
350
  break;
@@ -359,7 +364,15 @@ export const searchCompiler = (connection, query) => {
359
364
  case 'KEYWORD':
360
365
  case 'UNKEYWORD':
361
366
  {
367
+ if (typeof params[term] !== 'string') {
368
+ fail('InvalidSearchQuery', `Search value for ${term.toLowerCase()} must be a string`);
369
+ }
362
370
  let flag = formatFlag(params[term]);
371
+ // formatFlag() refuses \Recent, which is not a keyword. Dropping the
372
+ // criterion would widen the search, so the query is refused instead
373
+ if (flag === false) {
374
+ fail('InvalidSearchQuery', `${params[term]} can not be searched as a keyword, use the "recent" search key instead`);
375
+ }
363
376
  // Compiled even when the mailbox does not allow the keyword: the
364
377
  // correct answer is then the empty set, which dropping the
365
378
  // criterion would turn into every message matching the rest
@@ -386,8 +399,12 @@ export const searchCompiler = (connection, query) => {
386
399
  }
387
400
  break;
388
401
  // NOT operator
402
+ // A falsy operand means no NOT clause (`not: cond && {...}`). Any other one goes
403
+ // through walkOperand(), which refuses a value that is not a query object or
404
+ // compiles to nothing: dropping it would turn the filter into a search that
405
+ // matches everything
389
406
  case 'NOT':
390
- if (params[term] && typeof params[term] === 'object') {
407
+ if (params[term]) {
391
408
  attributes.push({ type: 'ATOM', value: 'NOT' });
392
409
  walkOperand('NOT', params[term]);
393
410
  }
@@ -400,8 +417,8 @@ export const searchCompiler = (connection, query) => {
400
417
  }
401
418
  // Single element - just process it directly
402
419
  if (params[term].length === 1) {
403
- if (typeof params[term][0] === 'object' && params[term][0]) {
404
- walk(params[term][0]);
420
+ if (params[term][0]) {
421
+ walkOperand('OR', params[term][0]);
405
422
  }
406
423
  break;
407
424
  }
@@ -453,6 +470,10 @@ export const searchCompiler = (connection, query) => {
453
470
  walkOrTree(genOrTree(params[term]));
454
471
  }
455
472
  break;
473
+ default:
474
+ // An unknown key is refused: dropping it silently widened the search (a
475
+ // query of only unknown keys matched every message)
476
+ fail('InvalidSearchQuery', `Unknown search key "${term}"`);
456
477
  }
457
478
  });
458
479
  };
@@ -74,6 +74,7 @@ const TOKEN_SPLIT = /[\s\-_/.,()[\]]+/;
74
74
  // we fall back to matching folder names against these lists of known
75
75
  // translations in various languages (including non-Latin scripts).
76
76
  export const flags = ['\\All', '\\Archive', '\\Drafts', '\\Flagged', '\\Junk', '\\Sent', '\\Trash'];
77
+ const LOWERCASE_FLAGS = flags.map(flag => flag.toLowerCase());
77
78
  export const names = {
78
79
  '\\Sent': [
79
80
  'aika',
@@ -860,9 +861,10 @@ for (let flag of Object.keys(names)) {
860
861
  }
861
862
  }
862
863
  // Fold a folder name into the form the name tables are stored in.
863
- // Remove U+200E (LEFT-TO-RIGHT MARK) which some mail clients (especially for
864
- // RTL languages like Arabic, Hebrew) insert into folder names for display purposes.
865
- // These invisible marks would otherwise prevent exact string matching.
864
+ // Remove U+200E and U+200F (LEFT-TO-RIGHT and RIGHT-TO-LEFT MARK) which some mail clients
865
+ // (especially for RTL languages like Arabic, Hebrew) insert into folder names for display
866
+ // purposes. These invisible marks would otherwise prevent exact string matching. U+200B
867
+ // (ZERO WIDTH SPACE) is kept, Khmer names in the tables use it as their word separator.
866
868
  // Normalize with NFKC last: the same folder name can arrive in different but
867
869
  // equivalent forms depending on the client that created it, and matching is exact.
868
870
  // NFKC rather than NFC because the compatibility folding is what maps halfwidth
@@ -871,7 +873,7 @@ for (let flag of Object.keys(names)) {
871
873
  function normalizeName(name) {
872
874
  return name
873
875
  .toLowerCase()
874
- .replace(/\u200e/g, '')
876
+ .replace(/[\u200e\u200f]/g, '')
875
877
  .trim()
876
878
  .normalize('NFKC');
877
879
  }
@@ -880,7 +882,10 @@ export const specialUse = (hasSpecialUseExtension, folder) => {
880
882
  // Extension-provided flags take precedence over name-based detection because they
881
883
  // are authoritative - the server explicitly marks the folder's role.
882
884
  if (hasSpecialUseExtension) {
883
- const flag = flags.find(flag => folder.flags.has(flag));
885
+ // Flags are atoms and compare case-insensitively (RFC 9051 section 9)
886
+ const listed = new Set();
887
+ folder.flags.forEach(flag => listed.add(flag.toLowerCase()));
888
+ const flag = flags.find((flag, i) => listed.has(LOWERCASE_FLAGS[i]));
884
889
  if (flag) {
885
890
  return { flag, source: 'extension' };
886
891
  }
@@ -119,6 +119,14 @@ export declare function unrefTimer<T extends NodeJS.Timeout | null | undefined>(
119
119
  * @param err - The error to log
120
120
  */
121
121
  export declare function logConnectionError(connection: ImapFlow, msg: string, err: ImapFlowError | null | undefined): void;
122
+ /**
123
+ * Whether a command failed because the server answered it with a tagged NO or BAD, as opposed
124
+ * to a lost connection, a timeout or a local failure that says nothing about the server's answer.
125
+ *
126
+ * @param err - The error the command failed with
127
+ * @returns True for a tagged NO or BAD
128
+ */
129
+ export declare function isServerRefusal(err: ImapFlowError | null | undefined): boolean;
122
130
  /**
123
131
  * Checks whether IMAP4rev2 semantics are active for the connection: either the
124
132
  * client enabled IMAP4rev2 explicitly, or the server is rev2-only (advertises
@@ -407,7 +415,8 @@ export declare function isUnsafeKey(key: unknown): boolean;
407
415
  /**
408
416
  * Reads a parsed attribute list of atoms or strings (a flag list, a capability list) into
409
417
  * an array of strings. Any element can be a parsed NIL, and the list itself can be NIL,
410
- * so both levels are guarded here rather than at each call site.
418
+ * so both levels are guarded here rather than at each call site. A literal (a Gmail label
419
+ * the server could not send quoted) arrives as a Buffer and is decoded as UTF-8.
411
420
  *
412
421
  * @param list - Parsed attribute list from a response.
413
422
  * @returns The string values, in order, with unusable entries dropped.
@@ -211,6 +211,16 @@ export function logConnectionError(connection, msg, err) {
211
211
  let routine = !!err && CONNECTION_GONE_CODES.has(err.code) && !err.reason;
212
212
  connection.log[routine ? 'debug' : 'warn']({ msg, err, cid: connection.id });
213
213
  }
214
+ /**
215
+ * Whether a command failed because the server answered it with a tagged NO or BAD, as opposed
216
+ * to a lost connection, a timeout or a local failure that says nothing about the server's answer.
217
+ *
218
+ * @param err - The error the command failed with
219
+ * @returns True for a tagged NO or BAD
220
+ */
221
+ export function isServerRefusal(err) {
222
+ return !!err && (err.responseStatus === 'NO' || err.responseStatus === 'BAD');
223
+ }
214
224
  /**
215
225
  * Checks whether IMAP4rev2 semantics are active for the connection: either the
216
226
  * client enabled IMAP4rev2 explicitly, or the server is rev2-only (advertises
@@ -538,7 +548,12 @@ export function getFolderTree(folders) {
538
548
  }
539
549
  return node;
540
550
  };
541
- for (let folder of folders) {
551
+ // Parents are inserted before their children, as getTreeNode() can only descend into nodes
552
+ // that already exist. LIST gives no ordering guarantee, and the LIST command sorts special-use
553
+ // mailboxes first, which put a child such as "[Gmail]/Sent Mail" ahead of "[Gmail]" and left
554
+ // it at the root. The sort is stable, so siblings keep their listing order
555
+ let byDepth = [...folders].sort((a, b) => (a.parent ? a.parent.length : 0) - (b.parent ? b.parent.length : 0));
556
+ for (let folder of byDepth) {
542
557
  let parent = getTreeNode(folder.parent);
543
558
  // see if entry already exists
544
559
  let existing = parent.folders && parent.folders.find(existing => existing.name === folder.name);
@@ -1357,7 +1372,8 @@ export function isUnsafeKey(key) {
1357
1372
  /**
1358
1373
  * Reads a parsed attribute list of atoms or strings (a flag list, a capability list) into
1359
1374
  * an array of strings. Any element can be a parsed NIL, and the list itself can be NIL,
1360
- * so both levels are guarded here rather than at each call site.
1375
+ * so both levels are guarded here rather than at each call site. A literal (a Gmail label
1376
+ * the server could not send quoted) arrives as a Buffer and is decoded as UTF-8.
1361
1377
  *
1362
1378
  * @param list - Parsed attribute list from a response.
1363
1379
  * @returns The string values, in order, with unusable entries dropped.
@@ -1366,7 +1382,17 @@ export function getStringList(list) {
1366
1382
  if (!Array.isArray(list)) {
1367
1383
  return [];
1368
1384
  }
1369
- return list.map(entry => (entry && typeof entry.value === 'string' ? entry.value : false)).filter(entry => entry);
1385
+ let strings = [];
1386
+ for (let entry of list) {
1387
+ let value = entry && entry.value;
1388
+ if (Buffer.isBuffer(value)) {
1389
+ value = value.toString();
1390
+ }
1391
+ if (value && typeof value === 'string') {
1392
+ strings.push(value);
1393
+ }
1394
+ }
1395
+ return strings;
1370
1396
  }
1371
1397
  /**
1372
1398
  * Parses an untrusted decimal value from a server response into a BigInt.
@@ -155,7 +155,15 @@ export interface ImapFlowOptions {
155
155
  * 30 minutes. Set to 0 or false to disable.
156
156
  */
157
157
  maxLockHoldTime?: number | false | undefined;
158
- /** If true, uses TLS. If false, uses cleartext. If not set, upgrades to TLS if available */
158
+ /**
159
+ * STARTTLS policy for a connection that was not opened with `secure: true`. If true, the
160
+ * connection must upgrade to TLS, and connecting fails when the server does not offer
161
+ * STARTTLS. If false, the connection stays in cleartext. If not set, the connection upgrades
162
+ * when the server offers STARTTLS and otherwise continues in cleartext with a warning logged:
163
+ * the capability list that decides this was itself received in cleartext, so an attacker on
164
+ * the path can strip it. Set `doSTARTTLS: true` whenever the credentials must never cross the
165
+ * wire unencrypted.
166
+ */
159
167
  doSTARTTLS?: boolean | undefined;
160
168
  /** Custom instance ID string for logs */
161
169
  id?: string | undefined;
@@ -646,8 +654,8 @@ export interface DownloadOptions {
646
654
  /** How large content parts to ask from the server. Defaults to 65536 */
647
655
  chunkSize?: number | undefined;
648
656
  }
649
- /** Options for downloadMany(), the same shape as the download() options */
650
- export type DownloadManyOptions = DownloadOptions;
657
+ /** Options for downloadMany(): the download() options without `chunkSize`, as the parts come in one FETCH */
658
+ export type DownloadManyOptions = Pick<DownloadOptions, 'uid' | 'maxBytes'>;
651
659
  export interface DownloadManyPart {
652
660
  meta: DownloadMeta;
653
661
  content?: Buffer | null | undefined;
@@ -769,6 +777,13 @@ export type LogLevel = 'trace' | 'debug' | 'info' | 'warn' | 'error' | 'fatal';
769
777
  */
770
778
  export type InternalLogger = {
771
779
  [level in LogLevel]: (obj: any) => void;
780
+ } & {
781
+ /**
782
+ * Whether an entry logged at this level reaches anyone (the logger, or a 'log' event
783
+ * listener). Set on the logger the connection builds; a logger assigned from outside may
784
+ * lack it, and every level then counts as enabled
785
+ */
786
+ isLevelEnabled?: ((level: LogLevel) => boolean) | undefined;
772
787
  };
773
788
  export interface LogEvent {
774
789
  /** Log level */
@@ -802,7 +817,7 @@ export interface ESearchResult {
802
817
  partial?: {
803
818
  /** The requested range, e.g. "1:100" */
804
819
  range: string;
805
- /** Matching UIDs in that range as compact sequence-set */
820
+ /** Matching UIDs in that range as compact sequence-set, an empty string when the range lies past the end of the results */
806
821
  messages: string;
807
822
  } | undefined;
808
823
  /** Highest mod-sequence of the matching messages (RFC 7162, present when the search used a modseq criterion on a CONDSTORE session) */
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "imapflow",
3
- "version": "2.2.5",
3
+ "version": "2.2.7",
4
4
  "description": "IMAP Client for Node",
5
5
  "type": "module",
6
6
  "main": "./dist/cjs/imap-flow.js",
@@ -45,6 +45,7 @@
45
45
  "pretest:workers": "npm run build",
46
46
  "test:workers": "node --import tsx --test test/cloudflare/cloudflare-test.ts",
47
47
  "test:rev2": "bash test/integration/run-rev2-tests.sh",
48
+ "test:mutation": "node scripts/mutation-test.js",
48
49
  "format": "prettier --write \"**/*.{js,cjs,ts,json,md,yml,yaml}\"",
49
50
  "format:check": "prettier --check \"**/*.{js,cjs,ts,json,md,yml,yaml}\"",
50
51
  "lint": "npm run typecheck && eslint .",
@@ -77,7 +78,7 @@
77
78
  "tsx": "4.23.15",
78
79
  "types-node-legacy": "npm:@types/node@20.0.0",
79
80
  "typescript": "6.0.3",
80
- "typescript-eslint": "8.71.0",
81
+ "typescript-eslint": "8.71.1",
81
82
  "wrangler": "4.147.0"
82
83
  },
83
84
  "dependencies": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@withbuddi/buddi",
3
- "version": "0.1.0-pre.47",
3
+ "version": "0.1.0-pre.49",
4
4
  "type": "module",
5
5
  "description": "Your personal agents, on your computer",
6
6
  "repository": {
@@ -17,7 +17,7 @@
17
17
  "buddi": "packages/install/dist/launcher.js"
18
18
  },
19
19
  "buddi": {
20
- "notes": "### Fixed\n\n- Agents answer in the language you wrote in. One answered an English question in Spanish, another in French after reading French news. Every agent is now told to answer in your message's language (your profile language when the message is too short to tell, else English), whatever language its documents, tools and colleagues used; and an answer that still comes out in another language is rewritten once before you see it. With no language on your profile, the front desk may ask for it once.\n- The reply-language check is sharper: \"give me a Spanish summary\" counts as asking for Spanish while \"French politics\" does not; a long or multi-line quotation no longer counts as the answer's language; a pasted article does not outvote the instruction above it; missions and reminders are read by their own words, not buddi's English around them; the profile language only stands in for a short message; and the language and sources checks retry at most once per turn between them, so a rewrite can no longer bring back an answer already held back.\n- The Chrome Web Store upload never prints the store credentials: the release talks to the store API itself and logs only the store's own explanation, and a refused upload now shows its warning instead of reporting success.\n\n### Changed\n\n- Releases send the Chrome extension to the Chrome Web Store themselves (submitted for review) once the store's API keys are in the repository; a refused upload is a notice and the zip stays on the GitHub release.\n- Hidden amounts look deliberate: on the Money page's cards (and anywhere a plugin page or Home masks a figure) the mask is four even dots on the value's own line, centred on the figure's height, with the label under it as when the amount shows; a screen reader hears \"hidden\". \"Show amounts\" is now a proper button with an eye, first among the page's actions, reading \"Hide amounts\" while they show (its label alone says the state, no pressed state on top); Home's and a section's Show/Hide match it."
20
+ "notes": "### Added\n\n- Host API 1.33 canvas renderers: `story` draws a plugin's story row (or a list of them) in the plugin's own words, `audio` plays a saved recording, and `query` draws a plugin's own page components against one of its page queries.\n\n- Host API 1.33 `messenger.mediaFirst` on a view and a reserved `attachments` field on a tool's output: Telegram sends the plugin's own cached picture or saved recording first, then the full answer below it. Attachments are checked against the tool's own plugin.\n\n- Host API 1.33 `approvals.configuredForRun` and the `consent_for_run` export: the plugin a mission run was started from may vouch for a tool in that run, on the owner's own settings, rechecked on every call.\n\n- Host API 1.33 `sheet` (a drawer opened by a page parameter) and `digest` (a saved digest card, with its recording) page components, and links that set page parameters.\n\n- Story cards, drawers and canvas show cached publisher feed images with source credits; plugin assets support an aspect-preserving 768px variant.\n\n### Fixed\n\n- A Telegram answer that Telegram refuses to format is sent again as plain text instead of being lost.\n\n- Every Telegram reply now renders light Markdown as safe Telegram HTML: clickable source names, bold labels and lists.\n\n- Saved recordings a tool's result lists also play in the dashboard transcript under the tool's row.\n\n- Audio waveforms fill the full seek area in wide canvas cards, keeping visual progress aligned with playback position.\n\n### Changed\n\n- Collapse appended mission material in chat while keeping its original text available for inspection.\n\n- Recording players support seeking and an MP3 download made in the browser; canvas results keep their technical details collapsed.\n\n- Chat keeps its original text size by default; A−, A+ and Reset in the chat menu adjust message text and tables, remembered in this browser.\n\n- Restore paragraph spacing in rendered chat replies so separate paragraphs remain easy to scan.\n\n- Inspect unrendered response text blocks from each chat reply; story drawer actions stay visible while long content scrolls.\n\n- A story's Ask button carries a removable story reference into a new conversation, with question buttons that send immediately when clicked and preserve your composer draft. Opening chat sends nothing.\n\n- Dashboard restart supports systemd and launchd; configured supervisor sockets are checked before a restart is offered.\n\n- Story rows may label where their headline, summary and update came from (the plugin's own words), and an update that repeats the summary is not drawn twice.\n\n- Host API 1.33 adds compact setup cards to plugin pages.\n\n- Plugin settings sections inside a polling container retain separate panels and header actions.\n\n- Plugin installs show preparation progress immediately, keep long descriptions in an expandable review with visible install actions, and guide you through restarting and setup. Managed development installs can restart from the dashboard; checking an already-current plugin says it is up to date."
21
21
  },
22
22
  "files": [
23
23
  "packages",