@withbuddi/buddi 0.1.0-pre.20 → 0.1.0-pre.22

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 (1529) hide show
  1. package/node_modules/@buddi/cli/dist/.tsbuildinfo +1 -1
  2. package/node_modules/@buddi/cli/dist/args.d.ts +6 -0
  3. package/node_modules/@buddi/cli/dist/args.d.ts.map +1 -1
  4. package/node_modules/@buddi/cli/dist/args.js +15 -0
  5. package/node_modules/@buddi/cli/dist/args.js.map +1 -1
  6. package/node_modules/@buddi/cli/dist/commands.d.ts.map +1 -1
  7. package/node_modules/@buddi/cli/dist/commands.js +22 -2
  8. package/node_modules/@buddi/cli/dist/commands.js.map +1 -1
  9. package/node_modules/@buddi/cli/dist/main.d.ts.map +1 -1
  10. package/node_modules/@buddi/cli/dist/main.js +7 -0
  11. package/node_modules/@buddi/cli/dist/main.js.map +1 -1
  12. package/node_modules/@buddi/core/dist/.tsbuildinfo +1 -1
  13. package/node_modules/@buddi/core/dist/actions/permissions.d.ts +14 -0
  14. package/node_modules/@buddi/core/dist/actions/permissions.d.ts.map +1 -1
  15. package/node_modules/@buddi/core/dist/actions/permissions.js +15 -0
  16. package/node_modules/@buddi/core/dist/actions/permissions.js.map +1 -1
  17. package/node_modules/@buddi/core/dist/agents/catalog.d.ts +12 -1
  18. package/node_modules/@buddi/core/dist/agents/catalog.d.ts.map +1 -1
  19. package/node_modules/@buddi/core/dist/agents/catalog.js +57 -6
  20. package/node_modules/@buddi/core/dist/agents/catalog.js.map +1 -1
  21. package/node_modules/@buddi/core/dist/agents/delegates.d.ts +54 -0
  22. package/node_modules/@buddi/core/dist/agents/delegates.d.ts.map +1 -0
  23. package/node_modules/@buddi/core/dist/agents/delegates.js +51 -0
  24. package/node_modules/@buddi/core/dist/agents/delegates.js.map +1 -0
  25. package/node_modules/@buddi/core/dist/agents/index.d.ts +1 -0
  26. package/node_modules/@buddi/core/dist/agents/index.d.ts.map +1 -1
  27. package/node_modules/@buddi/core/dist/agents/index.js +1 -0
  28. package/node_modules/@buddi/core/dist/agents/index.js.map +1 -1
  29. package/node_modules/@buddi/core/dist/host/build.d.ts +26 -5
  30. package/node_modules/@buddi/core/dist/host/build.d.ts.map +1 -1
  31. package/node_modules/@buddi/core/dist/host/build.js +105 -16
  32. package/node_modules/@buddi/core/dist/host/build.js.map +1 -1
  33. package/node_modules/@buddi/core/dist/host/types.d.ts +84 -5
  34. package/node_modules/@buddi/core/dist/host/types.d.ts.map +1 -1
  35. package/node_modules/@buddi/core/dist/index.d.ts +1 -0
  36. package/node_modules/@buddi/core/dist/index.d.ts.map +1 -1
  37. package/node_modules/@buddi/core/dist/index.js +1 -0
  38. package/node_modules/@buddi/core/dist/index.js.map +1 -1
  39. package/node_modules/@buddi/core/dist/json-schema.d.ts +32 -0
  40. package/node_modules/@buddi/core/dist/json-schema.d.ts.map +1 -0
  41. package/node_modules/@buddi/core/dist/json-schema.js +147 -0
  42. package/node_modules/@buddi/core/dist/json-schema.js.map +1 -0
  43. package/node_modules/@buddi/core/dist/learning/sources.d.ts.map +1 -1
  44. package/node_modules/@buddi/core/dist/learning/sources.js +3 -0
  45. package/node_modules/@buddi/core/dist/learning/sources.js.map +1 -1
  46. package/node_modules/@buddi/core/dist/learning/types.d.ts +4 -3
  47. package/node_modules/@buddi/core/dist/learning/types.d.ts.map +1 -1
  48. package/node_modules/@buddi/core/dist/learning/types.js +1 -1
  49. package/node_modules/@buddi/core/dist/learning/types.js.map +1 -1
  50. package/node_modules/@buddi/core/dist/notifications/index.d.ts +1 -0
  51. package/node_modules/@buddi/core/dist/notifications/index.d.ts.map +1 -1
  52. package/node_modules/@buddi/core/dist/notifications/index.js +1 -0
  53. package/node_modules/@buddi/core/dist/notifications/index.js.map +1 -1
  54. package/node_modules/@buddi/core/dist/notifications/notify.d.ts.map +1 -1
  55. package/node_modules/@buddi/core/dist/notifications/notify.js +47 -5
  56. package/node_modules/@buddi/core/dist/notifications/notify.js.map +1 -1
  57. package/node_modules/@buddi/core/dist/notifications/store.d.ts.map +1 -1
  58. package/node_modules/@buddi/core/dist/notifications/store.js +3 -1
  59. package/node_modules/@buddi/core/dist/notifications/store.js.map +1 -1
  60. package/node_modules/@buddi/core/dist/notifications/topic.d.ts +25 -0
  61. package/node_modules/@buddi/core/dist/notifications/topic.d.ts.map +1 -0
  62. package/node_modules/@buddi/core/dist/notifications/topic.js +116 -0
  63. package/node_modules/@buddi/core/dist/notifications/topic.js.map +1 -0
  64. package/node_modules/@buddi/core/dist/notifications/types.d.ts +4 -0
  65. package/node_modules/@buddi/core/dist/notifications/types.d.ts.map +1 -1
  66. package/node_modules/@buddi/core/dist/onboarding/language-tag.d.ts +12 -0
  67. package/node_modules/@buddi/core/dist/onboarding/language-tag.d.ts.map +1 -0
  68. package/node_modules/@buddi/core/dist/onboarding/language-tag.js +64 -0
  69. package/node_modules/@buddi/core/dist/onboarding/language-tag.js.map +1 -0
  70. package/node_modules/@buddi/core/dist/pages/__fixtures__/demo.d.ts +11 -0
  71. package/node_modules/@buddi/core/dist/pages/__fixtures__/demo.d.ts.map +1 -1
  72. package/node_modules/@buddi/core/dist/pages/__fixtures__/demo.js +24 -1
  73. package/node_modules/@buddi/core/dist/pages/__fixtures__/demo.js.map +1 -1
  74. package/node_modules/@buddi/core/dist/pages.d.ts +93 -0
  75. package/node_modules/@buddi/core/dist/pages.d.ts.map +1 -1
  76. package/node_modules/@buddi/core/dist/pages.js +40 -1
  77. package/node_modules/@buddi/core/dist/pages.js.map +1 -1
  78. package/node_modules/@buddi/core/dist/plugin/index.d.ts +5 -4
  79. package/node_modules/@buddi/core/dist/plugin/index.d.ts.map +1 -1
  80. package/node_modules/@buddi/core/dist/plugin/version.d.ts +1 -1
  81. package/node_modules/@buddi/core/dist/plugin/version.js +1 -1
  82. package/node_modules/@buddi/core/dist/provider-accounts.d.ts +39 -0
  83. package/node_modules/@buddi/core/dist/provider-accounts.d.ts.map +1 -1
  84. package/node_modules/@buddi/core/dist/provider-accounts.js +8 -0
  85. package/node_modules/@buddi/core/dist/provider-accounts.js.map +1 -1
  86. package/node_modules/@buddi/core/dist/registry.d.ts +37 -1
  87. package/node_modules/@buddi/core/dist/registry.d.ts.map +1 -1
  88. package/node_modules/@buddi/core/dist/registry.js +187 -32
  89. package/node_modules/@buddi/core/dist/registry.js.map +1 -1
  90. package/node_modules/@buddi/core/dist/secrets/scrub.d.ts +2 -0
  91. package/node_modules/@buddi/core/dist/secrets/scrub.d.ts.map +1 -1
  92. package/node_modules/@buddi/core/dist/secrets/scrub.js +29 -0
  93. package/node_modules/@buddi/core/dist/secrets/scrub.js.map +1 -1
  94. package/node_modules/@buddi/core/dist/surfaces.d.ts +11 -0
  95. package/node_modules/@buddi/core/dist/surfaces.d.ts.map +1 -1
  96. package/node_modules/@buddi/core/dist/surfaces.js +4 -0
  97. package/node_modules/@buddi/core/dist/surfaces.js.map +1 -1
  98. package/node_modules/@buddi/core/dist/tools.d.ts +36 -1
  99. package/node_modules/@buddi/core/dist/tools.d.ts.map +1 -1
  100. package/node_modules/@buddi/core/dist/tools.js.map +1 -1
  101. package/node_modules/@buddi/core/dist/views.d.ts +12 -12
  102. package/node_modules/@buddi/core/migrations/048_surface_chat_voice.sql +13 -0
  103. package/node_modules/@buddi/core/migrations/049_surface_chat_voice_form.sql +8 -0
  104. package/node_modules/@buddi/core/migrations/050_notification_topic.sql +8 -0
  105. package/node_modules/@buddi/core/package.json +2 -0
  106. package/node_modules/@buddi/gateway/assets/mascot/core-idle.tgs +0 -0
  107. package/node_modules/@buddi/gateway/assets/mascot/core-working.tgs +0 -0
  108. package/node_modules/@buddi/gateway/dist/.tsbuildinfo +1 -1
  109. package/node_modules/@buddi/gateway/dist/agents/canvas.d.ts +2 -2
  110. package/node_modules/@buddi/gateway/dist/agents/canvas.d.ts.map +1 -1
  111. package/node_modules/@buddi/gateway/dist/agents/canvas.js.map +1 -1
  112. package/node_modules/@buddi/gateway/dist/agents/catalog.d.ts.map +1 -1
  113. package/node_modules/@buddi/gateway/dist/agents/catalog.js +15 -6
  114. package/node_modules/@buddi/gateway/dist/agents/catalog.js.map +1 -1
  115. package/node_modules/@buddi/gateway/dist/agents/delegation.d.ts +20 -3
  116. package/node_modules/@buddi/gateway/dist/agents/delegation.d.ts.map +1 -1
  117. package/node_modules/@buddi/gateway/dist/agents/delegation.js +38 -12
  118. package/node_modules/@buddi/gateway/dist/agents/delegation.js.map +1 -1
  119. package/node_modules/@buddi/gateway/dist/agents/platform.d.ts +43 -13
  120. package/node_modules/@buddi/gateway/dist/agents/platform.d.ts.map +1 -1
  121. package/node_modules/@buddi/gateway/dist/agents/platform.js +97 -3
  122. package/node_modules/@buddi/gateway/dist/agents/platform.js.map +1 -1
  123. package/node_modules/@buddi/gateway/dist/agents/starter-team.d.ts +57 -0
  124. package/node_modules/@buddi/gateway/dist/agents/starter-team.d.ts.map +1 -0
  125. package/node_modules/@buddi/gateway/dist/agents/starter-team.js +151 -0
  126. package/node_modules/@buddi/gateway/dist/agents/starter-team.js.map +1 -0
  127. package/node_modules/@buddi/gateway/dist/agents-cli.d.ts +2 -0
  128. package/node_modules/@buddi/gateway/dist/agents-cli.d.ts.map +1 -1
  129. package/node_modules/@buddi/gateway/dist/agents-cli.js +5 -3
  130. package/node_modules/@buddi/gateway/dist/agents-cli.js.map +1 -1
  131. package/node_modules/@buddi/gateway/dist/anthropic-accounts.d.ts.map +1 -1
  132. package/node_modules/@buddi/gateway/dist/anthropic-accounts.js +9 -20
  133. package/node_modules/@buddi/gateway/dist/anthropic-accounts.js.map +1 -1
  134. package/node_modules/@buddi/gateway/dist/bootstrap.d.ts +3 -0
  135. package/node_modules/@buddi/gateway/dist/bootstrap.d.ts.map +1 -1
  136. package/node_modules/@buddi/gateway/dist/bootstrap.js +58 -2
  137. package/node_modules/@buddi/gateway/dist/bootstrap.js.map +1 -1
  138. package/node_modules/@buddi/gateway/dist/chat/session.d.ts.map +1 -1
  139. package/node_modules/@buddi/gateway/dist/chat/session.js +2 -2
  140. package/node_modules/@buddi/gateway/dist/chat/session.js.map +1 -1
  141. package/node_modules/@buddi/gateway/dist/chat/usage.d.ts +16 -0
  142. package/node_modules/@buddi/gateway/dist/chat/usage.d.ts.map +1 -1
  143. package/node_modules/@buddi/gateway/dist/chat/usage.js +53 -11
  144. package/node_modules/@buddi/gateway/dist/chat/usage.js.map +1 -1
  145. package/node_modules/@buddi/gateway/dist/codex-accounts.d.ts +7 -1
  146. package/node_modules/@buddi/gateway/dist/codex-accounts.d.ts.map +1 -1
  147. package/node_modules/@buddi/gateway/dist/codex-accounts.js +25 -26
  148. package/node_modules/@buddi/gateway/dist/codex-accounts.js.map +1 -1
  149. package/node_modules/@buddi/gateway/dist/index.d.ts +1 -0
  150. package/node_modules/@buddi/gateway/dist/index.d.ts.map +1 -1
  151. package/node_modules/@buddi/gateway/dist/index.js +1 -0
  152. package/node_modules/@buddi/gateway/dist/index.js.map +1 -1
  153. package/node_modules/@buddi/gateway/dist/mcp/requests.d.ts +8 -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 +8 -1
  156. package/node_modules/@buddi/gateway/dist/mcp/requests.js.map +1 -1
  157. package/node_modules/@buddi/gateway/dist/missions/goals-page.d.ts.map +1 -1
  158. package/node_modules/@buddi/gateway/dist/missions/goals-page.js +57 -0
  159. package/node_modules/@buddi/gateway/dist/missions/goals-page.js.map +1 -1
  160. package/node_modules/@buddi/gateway/dist/plugins/approve.js +45 -9
  161. package/node_modules/@buddi/gateway/dist/plugins/approve.js.map +1 -1
  162. package/node_modules/@buddi/gateway/dist/plugins/load.d.ts.map +1 -1
  163. package/node_modules/@buddi/gateway/dist/plugins/load.js +4 -0
  164. package/node_modules/@buddi/gateway/dist/plugins/load.js.map +1 -1
  165. package/node_modules/@buddi/gateway/dist/plugins/npm.d.ts +5 -1
  166. package/node_modules/@buddi/gateway/dist/plugins/npm.d.ts.map +1 -1
  167. package/node_modules/@buddi/gateway/dist/plugins/npm.js +6 -0
  168. package/node_modules/@buddi/gateway/dist/plugins/npm.js.map +1 -1
  169. package/node_modules/@buddi/gateway/dist/plugins/scaffold.d.ts +15 -4
  170. package/node_modules/@buddi/gateway/dist/plugins/scaffold.d.ts.map +1 -1
  171. package/node_modules/@buddi/gateway/dist/plugins/scaffold.js +86 -16
  172. package/node_modules/@buddi/gateway/dist/plugins/scaffold.js.map +1 -1
  173. package/node_modules/@buddi/gateway/dist/plugins/stage.d.ts +35 -1
  174. package/node_modules/@buddi/gateway/dist/plugins/stage.d.ts.map +1 -1
  175. package/node_modules/@buddi/gateway/dist/plugins/stage.js +134 -8
  176. package/node_modules/@buddi/gateway/dist/plugins/stage.js.map +1 -1
  177. package/node_modules/@buddi/gateway/dist/plugins-cli.d.ts +5 -1
  178. package/node_modules/@buddi/gateway/dist/plugins-cli.d.ts.map +1 -1
  179. package/node_modules/@buddi/gateway/dist/plugins-cli.js +26 -4
  180. package/node_modules/@buddi/gateway/dist/plugins-cli.js.map +1 -1
  181. package/node_modules/@buddi/gateway/dist/provider-accounts.d.ts +4 -0
  182. package/node_modules/@buddi/gateway/dist/provider-accounts.d.ts.map +1 -1
  183. package/node_modules/@buddi/gateway/dist/provider-accounts.js +34 -4
  184. package/node_modules/@buddi/gateway/dist/provider-accounts.js.map +1 -1
  185. package/node_modules/@buddi/gateway/dist/provider-diagnostics.d.ts +14 -2
  186. package/node_modules/@buddi/gateway/dist/provider-diagnostics.d.ts.map +1 -1
  187. package/node_modules/@buddi/gateway/dist/provider-diagnostics.js +25 -9
  188. package/node_modules/@buddi/gateway/dist/provider-diagnostics.js.map +1 -1
  189. package/node_modules/@buddi/gateway/dist/speech-cli.d.ts +43 -0
  190. package/node_modules/@buddi/gateway/dist/speech-cli.d.ts.map +1 -0
  191. package/node_modules/@buddi/gateway/dist/speech-cli.js +105 -0
  192. package/node_modules/@buddi/gateway/dist/speech-cli.js.map +1 -0
  193. package/node_modules/@buddi/gateway/dist/telegram/api.d.ts +59 -0
  194. package/node_modules/@buddi/gateway/dist/telegram/api.d.ts.map +1 -1
  195. package/node_modules/@buddi/gateway/dist/telegram/api.js +111 -0
  196. package/node_modules/@buddi/gateway/dist/telegram/api.js.map +1 -1
  197. package/node_modules/@buddi/gateway/dist/telegram/browser-view.d.ts +2 -1
  198. package/node_modules/@buddi/gateway/dist/telegram/browser-view.d.ts.map +1 -1
  199. package/node_modules/@buddi/gateway/dist/telegram/browser-view.js +4 -2
  200. package/node_modules/@buddi/gateway/dist/telegram/browser-view.js.map +1 -1
  201. package/node_modules/@buddi/gateway/dist/telegram/main.d.ts.map +1 -1
  202. package/node_modules/@buddi/gateway/dist/telegram/main.js +27 -2
  203. package/node_modules/@buddi/gateway/dist/telegram/main.js.map +1 -1
  204. package/node_modules/@buddi/gateway/dist/telegram/outbound.d.ts +5 -0
  205. package/node_modules/@buddi/gateway/dist/telegram/outbound.d.ts.map +1 -1
  206. package/node_modules/@buddi/gateway/dist/telegram/outbound.js +10 -0
  207. package/node_modules/@buddi/gateway/dist/telegram/outbound.js.map +1 -1
  208. package/node_modules/@buddi/gateway/dist/telegram/stickers.d.ts +30 -0
  209. package/node_modules/@buddi/gateway/dist/telegram/stickers.d.ts.map +1 -0
  210. package/node_modules/@buddi/gateway/dist/telegram/stickers.js +146 -0
  211. package/node_modules/@buddi/gateway/dist/telegram/stickers.js.map +1 -0
  212. package/node_modules/@buddi/gateway/dist/telegram/surface.d.ts +31 -0
  213. package/node_modules/@buddi/gateway/dist/telegram/surface.d.ts.map +1 -1
  214. package/node_modules/@buddi/gateway/dist/telegram/surface.js +248 -13
  215. package/node_modules/@buddi/gateway/dist/telegram/surface.js.map +1 -1
  216. package/node_modules/@buddi/gateway/dist/telegram/voice.d.ts +112 -0
  217. package/node_modules/@buddi/gateway/dist/telegram/voice.d.ts.map +1 -0
  218. package/node_modules/@buddi/gateway/dist/telegram/voice.js +220 -0
  219. package/node_modules/@buddi/gateway/dist/telegram/voice.js.map +1 -0
  220. package/node_modules/@buddi/gateway/dist/tips/engine.d.ts +75 -0
  221. package/node_modules/@buddi/gateway/dist/tips/engine.d.ts.map +1 -0
  222. package/node_modules/@buddi/gateway/dist/tips/engine.js +135 -0
  223. package/node_modules/@buddi/gateway/dist/tips/engine.js.map +1 -0
  224. package/node_modules/@buddi/gateway/dist/tips/facts.d.ts +69 -0
  225. package/node_modules/@buddi/gateway/dist/tips/facts.d.ts.map +1 -0
  226. package/node_modules/@buddi/gateway/dist/tips/facts.js +104 -0
  227. package/node_modules/@buddi/gateway/dist/tips/facts.js.map +1 -0
  228. package/node_modules/@buddi/gateway/dist/tips/route.d.ts +25 -0
  229. package/node_modules/@buddi/gateway/dist/tips/route.d.ts.map +1 -0
  230. package/node_modules/@buddi/gateway/dist/tips/route.js +96 -0
  231. package/node_modules/@buddi/gateway/dist/tips/route.js.map +1 -0
  232. package/node_modules/@buddi/gateway/dist/tips/rules.d.ts +33 -0
  233. package/node_modules/@buddi/gateway/dist/tips/rules.d.ts.map +1 -0
  234. package/node_modules/@buddi/gateway/dist/tips/rules.js +54 -0
  235. package/node_modules/@buddi/gateway/dist/tips/rules.js.map +1 -0
  236. package/node_modules/@buddi/gateway/dist/web/agent-offers.d.ts +30 -0
  237. package/node_modules/@buddi/gateway/dist/web/agent-offers.d.ts.map +1 -1
  238. package/node_modules/@buddi/gateway/dist/web/agent-offers.js +64 -1
  239. package/node_modules/@buddi/gateway/dist/web/agent-offers.js.map +1 -1
  240. package/node_modules/@buddi/gateway/dist/web/chat.d.ts +31 -8
  241. package/node_modules/@buddi/gateway/dist/web/chat.d.ts.map +1 -1
  242. package/node_modules/@buddi/gateway/dist/web/chat.js +3 -2
  243. package/node_modules/@buddi/gateway/dist/web/chat.js.map +1 -1
  244. package/node_modules/@buddi/gateway/dist/web/connections.d.ts +83 -0
  245. package/node_modules/@buddi/gateway/dist/web/connections.d.ts.map +1 -0
  246. package/node_modules/@buddi/gateway/dist/web/connections.js +270 -0
  247. package/node_modules/@buddi/gateway/dist/web/connections.js.map +1 -0
  248. package/node_modules/@buddi/gateway/dist/web/onboarding.d.ts +14 -3
  249. package/node_modules/@buddi/gateway/dist/web/onboarding.d.ts.map +1 -1
  250. package/node_modules/@buddi/gateway/dist/web/onboarding.js +29 -7
  251. package/node_modules/@buddi/gateway/dist/web/onboarding.js.map +1 -1
  252. package/node_modules/@buddi/gateway/dist/web/plugins.d.ts +12 -0
  253. package/node_modules/@buddi/gateway/dist/web/plugins.d.ts.map +1 -1
  254. package/node_modules/@buddi/gateway/dist/web/plugins.js +12 -2
  255. package/node_modules/@buddi/gateway/dist/web/plugins.js.map +1 -1
  256. package/node_modules/@buddi/gateway/dist/web/profile.js +3 -2
  257. package/node_modules/@buddi/gateway/dist/web/profile.js.map +1 -1
  258. package/node_modules/@buddi/gateway/dist/web/read.d.ts +21 -12
  259. package/node_modules/@buddi/gateway/dist/web/read.d.ts.map +1 -1
  260. package/node_modules/@buddi/gateway/dist/web/read.js +20 -14
  261. package/node_modules/@buddi/gateway/dist/web/read.js.map +1 -1
  262. package/node_modules/@buddi/gateway/dist/web/server.d.ts +6 -0
  263. package/node_modules/@buddi/gateway/dist/web/server.d.ts.map +1 -1
  264. package/node_modules/@buddi/gateway/dist/web/server.js +84 -2
  265. package/node_modules/@buddi/gateway/dist/web/server.js.map +1 -1
  266. package/node_modules/@buddi/gateway/dist/web/speech.d.ts +47 -0
  267. package/node_modules/@buddi/gateway/dist/web/speech.d.ts.map +1 -0
  268. package/node_modules/@buddi/gateway/dist/web/speech.js +83 -0
  269. package/node_modules/@buddi/gateway/dist/web/speech.js.map +1 -0
  270. package/node_modules/@buddi/gateway/dist/web/static.d.ts.map +1 -1
  271. package/node_modules/@buddi/gateway/dist/web/static.js +1 -0
  272. package/node_modules/@buddi/gateway/dist/web/static.js.map +1 -1
  273. package/node_modules/@buddi/gateway/dist/web/stream.d.ts +0 -24
  274. package/node_modules/@buddi/gateway/dist/web/stream.d.ts.map +1 -1
  275. package/node_modules/@buddi/gateway/dist/web/stream.js +26 -2
  276. package/node_modules/@buddi/gateway/dist/web/stream.js.map +1 -1
  277. package/node_modules/@buddi/gateway/dist/web/usage-view.d.ts +15 -0
  278. package/node_modules/@buddi/gateway/dist/web/usage-view.d.ts.map +1 -0
  279. package/node_modules/@buddi/gateway/dist/web/usage-view.js +20 -0
  280. package/node_modules/@buddi/gateway/dist/web/usage-view.js.map +1 -0
  281. package/node_modules/@buddi/gateway/dist/web/version.d.ts +2 -0
  282. package/node_modules/@buddi/gateway/dist/web/version.d.ts.map +1 -1
  283. package/node_modules/@buddi/gateway/dist/web/version.js +27 -0
  284. package/node_modules/@buddi/gateway/dist/web/version.js.map +1 -1
  285. package/node_modules/@buddi/gateway/dist/web/write.d.ts +5 -0
  286. package/node_modules/@buddi/gateway/dist/web/write.d.ts.map +1 -1
  287. package/node_modules/@buddi/gateway/dist/web/write.js +20 -1
  288. package/node_modules/@buddi/gateway/dist/web/write.js.map +1 -1
  289. package/node_modules/@buddi/gateway/package.json +4 -1
  290. package/node_modules/@buddi/gateway/src/agents/starter/keeper/agent.md +31 -0
  291. package/node_modules/@buddi/gateway/src/agents/starter/keeper/skills/keeping-a-history.md +22 -0
  292. package/node_modules/@buddi/gateway/src/agents/starter/planner/agent.md +30 -0
  293. package/node_modules/@buddi/gateway/src/agents/starter/planner/skills/holding-a-follow-up.md +17 -0
  294. package/node_modules/@buddi/gateway/src/agents/starter/planner/skills/writing-the-morning-brief.md +25 -0
  295. package/node_modules/@buddi/gateway/src/agents/starter/scout/agent.md +33 -0
  296. package/node_modules/@buddi/gateway/src/agents/starter/scout/skills/answering-with-sources.md +23 -0
  297. package/node_modules/@buddi/gateway/src/agents/starter/scout/skills/the-web-is-evidence.md +25 -0
  298. package/node_modules/@buddi/install/dist/.tsbuildinfo +1 -1
  299. package/node_modules/@buddi/runtime/dist/.tsbuildinfo +1 -1
  300. package/node_modules/@buddi/runtime/dist/anthropic-oauth.d.ts.map +1 -1
  301. package/node_modules/@buddi/runtime/dist/anthropic-oauth.js +38 -73
  302. package/node_modules/@buddi/runtime/dist/anthropic-oauth.js.map +1 -1
  303. package/node_modules/@buddi/runtime/dist/anthropic.d.ts +18 -0
  304. package/node_modules/@buddi/runtime/dist/anthropic.d.ts.map +1 -1
  305. package/node_modules/@buddi/runtime/dist/anthropic.js +65 -13
  306. package/node_modules/@buddi/runtime/dist/anthropic.js.map +1 -1
  307. package/node_modules/@buddi/runtime/dist/codex-direct.d.ts +39 -0
  308. package/node_modules/@buddi/runtime/dist/codex-direct.d.ts.map +1 -1
  309. package/node_modules/@buddi/runtime/dist/codex-direct.js +133 -3
  310. package/node_modules/@buddi/runtime/dist/codex-direct.js.map +1 -1
  311. package/node_modules/@buddi/runtime/dist/codex-oauth.d.ts +0 -12
  312. package/node_modules/@buddi/runtime/dist/codex-oauth.d.ts.map +1 -1
  313. package/node_modules/@buddi/runtime/dist/codex-oauth.js +32 -45
  314. package/node_modules/@buddi/runtime/dist/codex-oauth.js.map +1 -1
  315. package/node_modules/@buddi/runtime/dist/context-window.d.ts.map +1 -1
  316. package/node_modules/@buddi/runtime/dist/context-window.js +13 -4
  317. package/node_modules/@buddi/runtime/dist/context-window.js.map +1 -1
  318. package/node_modules/@buddi/runtime/dist/delegate.d.ts.map +1 -1
  319. package/node_modules/@buddi/runtime/dist/delegate.js +4 -2
  320. package/node_modules/@buddi/runtime/dist/delegate.js.map +1 -1
  321. package/node_modules/@buddi/runtime/dist/index.d.ts +2 -0
  322. package/node_modules/@buddi/runtime/dist/index.d.ts.map +1 -1
  323. package/node_modules/@buddi/runtime/dist/index.js +2 -0
  324. package/node_modules/@buddi/runtime/dist/index.js.map +1 -1
  325. package/node_modules/@buddi/runtime/dist/loop.d.ts.map +1 -1
  326. package/node_modules/@buddi/runtime/dist/loop.js +6 -0
  327. package/node_modules/@buddi/runtime/dist/loop.js.map +1 -1
  328. package/node_modules/@buddi/runtime/dist/oauth-port.d.ts +68 -0
  329. package/node_modules/@buddi/runtime/dist/oauth-port.d.ts.map +1 -0
  330. package/node_modules/@buddi/runtime/dist/oauth-port.js +51 -0
  331. package/node_modules/@buddi/runtime/dist/oauth-port.js.map +1 -0
  332. package/node_modules/@buddi/runtime/dist/oauth.d.ts +255 -0
  333. package/node_modules/@buddi/runtime/dist/oauth.d.ts.map +1 -0
  334. package/node_modules/@buddi/runtime/dist/oauth.js +535 -0
  335. package/node_modules/@buddi/runtime/dist/oauth.js.map +1 -0
  336. package/node_modules/@buddi/runtime/dist/openai.d.ts +16 -4
  337. package/node_modules/@buddi/runtime/dist/openai.d.ts.map +1 -1
  338. package/node_modules/@buddi/runtime/dist/openai.js +23 -4
  339. package/node_modules/@buddi/runtime/dist/openai.js.map +1 -1
  340. package/node_modules/@buddi/runtime/dist/provider-models.d.ts.map +1 -1
  341. package/node_modules/@buddi/runtime/dist/provider-models.js +5 -1
  342. package/node_modules/@buddi/runtime/dist/provider-models.js.map +1 -1
  343. package/node_modules/@buddi/tool-artifacts/dist/.tsbuildinfo +1 -1
  344. package/node_modules/@buddi/tool-browser/dist/.tsbuildinfo +1 -1
  345. package/node_modules/@buddi/tool-browser/dist/computer.d.ts +53 -1
  346. package/node_modules/@buddi/tool-browser/dist/computer.d.ts.map +1 -1
  347. package/node_modules/@buddi/tool-browser/dist/computer.js +154 -5
  348. package/node_modules/@buddi/tool-browser/dist/computer.js.map +1 -1
  349. package/node_modules/@buddi/tool-browser/dist/controller.d.ts +20 -3
  350. package/node_modules/@buddi/tool-browser/dist/controller.d.ts.map +1 -1
  351. package/node_modules/@buddi/tool-browser/dist/controller.js +170 -5
  352. package/node_modules/@buddi/tool-browser/dist/controller.js.map +1 -1
  353. package/node_modules/@buddi/tool-browser/dist/index.d.ts.map +1 -1
  354. package/node_modules/@buddi/tool-browser/dist/index.js +9 -1
  355. package/node_modules/@buddi/tool-browser/dist/index.js.map +1 -1
  356. package/node_modules/@buddi/tool-browser/dist/service.d.ts +14 -1
  357. package/node_modules/@buddi/tool-browser/dist/service.d.ts.map +1 -1
  358. package/node_modules/@buddi/tool-browser/dist/service.js +28 -5
  359. package/node_modules/@buddi/tool-browser/dist/service.js.map +1 -1
  360. package/node_modules/@buddi/tool-browser/dist/types.d.ts +11 -0
  361. package/node_modules/@buddi/tool-browser/dist/types.d.ts.map +1 -1
  362. package/node_modules/@buddi/tool-browser/dist/types.js +16 -3
  363. package/node_modules/@buddi/tool-browser/dist/types.js.map +1 -1
  364. package/node_modules/@buddi/tool-browser/package.json +1 -1
  365. package/node_modules/@buddi/tool-email/dist/.tsbuildinfo +1 -1
  366. package/node_modules/@buddi/tool-email/dist/types.d.ts +2 -2
  367. package/node_modules/@buddi/tool-email/dist/types.d.ts.map +1 -1
  368. package/node_modules/@buddi/tool-host/dist/.tsbuildinfo +1 -1
  369. package/node_modules/@buddi/tool-mcp/dist/.tsbuildinfo +1 -0
  370. package/node_modules/@buddi/tool-mcp/dist/catalog.d.ts +26 -0
  371. package/node_modules/@buddi/tool-mcp/dist/catalog.d.ts.map +1 -0
  372. package/node_modules/@buddi/tool-mcp/dist/catalog.js +17 -0
  373. package/node_modules/@buddi/tool-mcp/dist/catalog.js.map +1 -0
  374. package/node_modules/@buddi/tool-mcp/dist/fetch.d.ts +44 -0
  375. package/node_modules/@buddi/tool-mcp/dist/fetch.d.ts.map +1 -0
  376. package/node_modules/@buddi/tool-mcp/dist/fetch.js +88 -0
  377. package/node_modules/@buddi/tool-mcp/dist/fetch.js.map +1 -0
  378. package/node_modules/@buddi/tool-mcp/dist/index.d.ts +27 -0
  379. package/node_modules/@buddi/tool-mcp/dist/index.d.ts.map +1 -0
  380. package/node_modules/@buddi/tool-mcp/dist/index.js +74 -0
  381. package/node_modules/@buddi/tool-mcp/dist/index.js.map +1 -0
  382. package/node_modules/@buddi/tool-mcp/dist/output.d.ts +38 -0
  383. package/node_modules/@buddi/tool-mcp/dist/output.d.ts.map +1 -0
  384. package/node_modules/@buddi/tool-mcp/dist/output.js +90 -0
  385. package/node_modules/@buddi/tool-mcp/dist/output.js.map +1 -0
  386. package/node_modules/@buddi/tool-mcp/dist/ports.d.ts +105 -0
  387. package/node_modules/@buddi/tool-mcp/dist/ports.d.ts.map +1 -0
  388. package/node_modules/@buddi/tool-mcp/dist/ports.js +9 -0
  389. package/node_modules/@buddi/tool-mcp/dist/ports.js.map +1 -0
  390. package/node_modules/@buddi/tool-mcp/dist/service.d.ts +220 -0
  391. package/node_modules/@buddi/tool-mcp/dist/service.d.ts.map +1 -0
  392. package/node_modules/@buddi/tool-mcp/dist/service.js +742 -0
  393. package/node_modules/@buddi/tool-mcp/dist/service.js.map +1 -0
  394. package/node_modules/@buddi/tool-mcp/dist/session.d.ts +50 -0
  395. package/node_modules/@buddi/tool-mcp/dist/session.d.ts.map +1 -0
  396. package/node_modules/@buddi/tool-mcp/dist/session.js +108 -0
  397. package/node_modules/@buddi/tool-mcp/dist/session.js.map +1 -0
  398. package/node_modules/@buddi/tool-mcp/dist/store.d.ts +70 -0
  399. package/node_modules/@buddi/tool-mcp/dist/store.d.ts.map +1 -0
  400. package/node_modules/@buddi/tool-mcp/dist/store.js +78 -0
  401. package/node_modules/@buddi/tool-mcp/dist/store.js.map +1 -0
  402. package/node_modules/@buddi/tool-mcp/dist/testing/fake.d.ts +51 -0
  403. package/node_modules/@buddi/tool-mcp/dist/testing/fake.d.ts.map +1 -0
  404. package/node_modules/@buddi/tool-mcp/dist/testing/fake.js +147 -0
  405. package/node_modules/@buddi/tool-mcp/dist/testing/fake.js.map +1 -0
  406. package/node_modules/@buddi/tool-mcp/dist/tiers.d.ts +51 -0
  407. package/node_modules/@buddi/tool-mcp/dist/tiers.d.ts.map +1 -0
  408. package/node_modules/@buddi/tool-mcp/dist/tiers.js +106 -0
  409. package/node_modules/@buddi/tool-mcp/dist/tiers.js.map +1 -0
  410. package/node_modules/@buddi/tool-mcp/dist/tokens.d.ts +35 -0
  411. package/node_modules/@buddi/tool-mcp/dist/tokens.d.ts.map +1 -0
  412. package/node_modules/@buddi/tool-mcp/dist/tokens.js +75 -0
  413. package/node_modules/@buddi/tool-mcp/dist/tokens.js.map +1 -0
  414. package/node_modules/@buddi/tool-mcp/migrations/001_connections.sql +49 -0
  415. package/node_modules/@buddi/tool-mcp/migrations/002_review_again.sql +15 -0
  416. package/node_modules/@buddi/tool-mcp/package.json +34 -0
  417. package/node_modules/@buddi/tool-memory/dist/.tsbuildinfo +1 -1
  418. package/node_modules/@buddi/tool-web/dist/.tsbuildinfo +1 -1
  419. package/node_modules/@zone-eu/mailsplit/lib/flowed-decoder.js +1 -5
  420. package/node_modules/@zone-eu/mailsplit/lib/headers.js +35 -25
  421. package/node_modules/@zone-eu/mailsplit/lib/message-splitter.js +126 -79
  422. package/node_modules/@zone-eu/mailsplit/lib/mime-node.js +27 -5
  423. package/node_modules/@zone-eu/mailsplit/lib/node-rewriter.js +3 -2
  424. package/node_modules/@zone-eu/mailsplit/lib/types.d.ts +0 -3
  425. package/node_modules/@zone-eu/mailsplit/package.json +5 -5
  426. package/node_modules/hono/dist/_virtual/_rolldown/runtime.js +13 -0
  427. package/node_modules/hono/dist/adapter/aws-lambda/conninfo.js +42 -23
  428. package/node_modules/hono/dist/adapter/aws-lambda/handler.js +318 -344
  429. package/node_modules/hono/dist/adapter/aws-lambda/index.js +2 -8
  430. package/node_modules/hono/dist/adapter/aws-lambda/types.js +1 -0
  431. package/node_modules/hono/dist/adapter/bun/conninfo.js +20 -25
  432. package/node_modules/hono/dist/adapter/bun/index.js +3 -13
  433. package/node_modules/hono/dist/adapter/bun/serve-static.js +27 -27
  434. package/node_modules/hono/dist/adapter/bun/server.js +11 -5
  435. package/node_modules/hono/dist/adapter/bun/ssg.js +25 -15
  436. package/node_modules/hono/dist/adapter/bun/websocket.js +61 -68
  437. package/node_modules/hono/dist/adapter/cloudflare-pages/conninfo.js +24 -9
  438. package/node_modules/hono/dist/adapter/cloudflare-pages/handler.js +59 -62
  439. package/node_modules/hono/dist/adapter/cloudflare-pages/index.js +2 -8
  440. package/node_modules/hono/dist/adapter/cloudflare-workers/conninfo.js +7 -9
  441. package/node_modules/hono/dist/adapter/cloudflare-workers/index.js +3 -8
  442. package/node_modules/hono/dist/adapter/cloudflare-workers/serve-static-module.js +5 -6
  443. package/node_modules/hono/dist/adapter/cloudflare-workers/serve-static.js +26 -20
  444. package/node_modules/hono/dist/adapter/cloudflare-workers/utils.js +21 -34
  445. package/node_modules/hono/dist/adapter/cloudflare-workers/websocket.js +31 -39
  446. package/node_modules/hono/dist/adapter/deno/conninfo.js +16 -13
  447. package/node_modules/hono/dist/adapter/deno/deno.d.js +1 -0
  448. package/node_modules/hono/dist/adapter/deno/index.js +3 -10
  449. package/node_modules/hono/dist/adapter/deno/serve-static.js +33 -38
  450. package/node_modules/hono/dist/adapter/deno/ssg.js +27 -16
  451. package/node_modules/hono/dist/adapter/deno/websocket.js +30 -30
  452. package/node_modules/hono/dist/adapter/lambda-edge/conninfo.js +7 -9
  453. package/node_modules/hono/dist/adapter/lambda-edge/handler.js +102 -101
  454. package/node_modules/hono/dist/adapter/lambda-edge/index.js +2 -6
  455. package/node_modules/hono/dist/adapter/netlify/conninfo.js +24 -9
  456. package/node_modules/hono/dist/adapter/netlify/handler.js +10 -8
  457. package/node_modules/hono/dist/adapter/netlify/index.js +3 -2
  458. package/node_modules/hono/dist/adapter/netlify/mod.js +2 -6
  459. package/node_modules/hono/dist/adapter/service-worker/handler.js +15 -19
  460. package/node_modules/hono/dist/adapter/service-worker/index.js +23 -7
  461. package/node_modules/hono/dist/adapter/service-worker/types.js +1 -0
  462. package/node_modules/hono/dist/adapter/vercel/conninfo.js +7 -10
  463. package/node_modules/hono/dist/adapter/vercel/handler.js +8 -6
  464. package/node_modules/hono/dist/adapter/vercel/index.js +2 -6
  465. package/node_modules/hono/dist/cjs/_virtual/_rolldown/runtime.js +33 -0
  466. package/node_modules/hono/dist/cjs/adapter/aws-lambda/conninfo.js +42 -44
  467. package/node_modules/hono/dist/cjs/adapter/aws-lambda/handler.js +326 -373
  468. package/node_modules/hono/dist/cjs/adapter/aws-lambda/index.js +7 -34
  469. package/node_modules/hono/dist/cjs/adapter/aws-lambda/types.js +0 -15
  470. package/node_modules/hono/dist/cjs/adapter/bun/conninfo.js +21 -47
  471. package/node_modules/hono/dist/cjs/adapter/bun/index.js +14 -45
  472. package/node_modules/hono/dist/cjs/adapter/bun/serve-static.js +29 -50
  473. package/node_modules/hono/dist/cjs/adapter/bun/server.js +11 -26
  474. package/node_modules/hono/dist/cjs/adapter/bun/ssg.js +24 -35
  475. package/node_modules/hono/dist/cjs/adapter/bun/websocket.js +63 -91
  476. package/node_modules/hono/dist/cjs/adapter/cloudflare-pages/conninfo.js +25 -31
  477. package/node_modules/hono/dist/cjs/adapter/cloudflare-pages/handler.js +61 -85
  478. package/node_modules/hono/dist/cjs/adapter/cloudflare-pages/index.js +7 -34
  479. package/node_modules/hono/dist/cjs/adapter/cloudflare-workers/conninfo.js +8 -31
  480. package/node_modules/hono/dist/cjs/adapter/cloudflare-workers/index.js +7 -33
  481. package/node_modules/hono/dist/cjs/adapter/cloudflare-workers/serve-static-module.js +7 -29
  482. package/node_modules/hono/dist/cjs/adapter/cloudflare-workers/serve-static.js +27 -42
  483. package/node_modules/hono/dist/cjs/adapter/cloudflare-workers/utils.js +21 -55
  484. package/node_modules/hono/dist/cjs/adapter/cloudflare-workers/websocket.js +33 -62
  485. package/node_modules/hono/dist/cjs/adapter/deno/conninfo.js +16 -34
  486. package/node_modules/hono/dist/cjs/adapter/deno/index.js +10 -38
  487. package/node_modules/hono/dist/cjs/adapter/deno/serve-static.js +33 -59
  488. package/node_modules/hono/dist/cjs/adapter/deno/ssg.js +27 -37
  489. package/node_modules/hono/dist/cjs/adapter/deno/websocket.js +32 -53
  490. package/node_modules/hono/dist/cjs/adapter/lambda-edge/conninfo.js +8 -31
  491. package/node_modules/hono/dist/cjs/adapter/lambda-edge/handler.js +102 -130
  492. package/node_modules/hono/dist/cjs/adapter/lambda-edge/index.js +5 -30
  493. package/node_modules/hono/dist/cjs/adapter/netlify/conninfo.js +25 -31
  494. package/node_modules/hono/dist/cjs/adapter/netlify/handler.js +10 -29
  495. package/node_modules/hono/dist/cjs/adapter/netlify/index.js +5 -21
  496. package/node_modules/hono/dist/cjs/adapter/netlify/mod.js +5 -30
  497. package/node_modules/hono/dist/cjs/adapter/service-worker/handler.js +16 -41
  498. package/node_modules/hono/dist/cjs/adapter/service-worker/index.js +25 -30
  499. package/node_modules/hono/dist/cjs/adapter/service-worker/types.js +0 -15
  500. package/node_modules/hono/dist/cjs/adapter/vercel/conninfo.js +8 -32
  501. package/node_modules/hono/dist/cjs/adapter/vercel/handler.js +8 -27
  502. package/node_modules/hono/dist/cjs/adapter/vercel/index.js +5 -30
  503. package/node_modules/hono/dist/cjs/client/client.js +139 -212
  504. package/node_modules/hono/dist/cjs/client/fetch-result-please.js +62 -80
  505. package/node_modules/hono/dist/cjs/client/index.js +7 -32
  506. package/node_modules/hono/dist/cjs/client/types.js +0 -15
  507. package/node_modules/hono/dist/cjs/client/utils.js +54 -92
  508. package/node_modules/hono/dist/cjs/compose.js +49 -66
  509. package/node_modules/hono/dist/cjs/context.js +379 -450
  510. package/node_modules/hono/dist/cjs/helper/accepts/accepts.js +47 -72
  511. package/node_modules/hono/dist/cjs/helper/accepts/index.js +3 -27
  512. package/node_modules/hono/dist/cjs/helper/adapter/index.js +33 -73
  513. package/node_modules/hono/dist/cjs/helper/conninfo/index.js +0 -15
  514. package/node_modules/hono/dist/cjs/helper/conninfo/types.js +0 -15
  515. package/node_modules/hono/dist/cjs/helper/cookie/index.js +75 -116
  516. package/node_modules/hono/dist/cjs/helper/css/common.js +165 -244
  517. package/node_modules/hono/dist/cjs/helper/css/index.js +136 -151
  518. package/node_modules/hono/dist/cjs/helper/dev/index.js +45 -71
  519. package/node_modules/hono/dist/cjs/helper/factory/index.js +30 -51
  520. package/node_modules/hono/dist/cjs/helper/html/index.js +32 -62
  521. package/node_modules/hono/dist/cjs/helper/proxy/index.js +113 -106
  522. package/node_modules/hono/dist/cjs/helper/route/index.js +123 -66
  523. package/node_modules/hono/dist/cjs/helper/ssg/index.js +19 -43
  524. package/node_modules/hono/dist/cjs/helper/ssg/middleware.js +56 -64
  525. package/node_modules/hono/dist/cjs/helper/ssg/plugins.js +55 -57
  526. package/node_modules/hono/dist/cjs/helper/ssg/ssg.js +196 -296
  527. package/node_modules/hono/dist/cjs/helper/ssg/utils.js +47 -90
  528. package/node_modules/hono/dist/cjs/helper/streaming/index.js +8 -35
  529. package/node_modules/hono/dist/cjs/helper/streaming/sse.js +53 -85
  530. package/node_modules/hono/dist/cjs/helper/streaming/stream.js +23 -53
  531. package/node_modules/hono/dist/cjs/helper/streaming/text.js +10 -32
  532. package/node_modules/hono/dist/cjs/helper/streaming/utils.js +13 -32
  533. package/node_modules/hono/dist/cjs/helper/testing/index.js +16 -31
  534. package/node_modules/hono/dist/cjs/helper/websocket/index.js +51 -76
  535. package/node_modules/hono/dist/cjs/hono-base.js +345 -403
  536. package/node_modules/hono/dist/cjs/hono.js +28 -42
  537. package/node_modules/hono/dist/cjs/http-exception.js +55 -56
  538. package/node_modules/hono/dist/cjs/index.js +22 -30
  539. package/node_modules/hono/dist/cjs/jsx/base.js +237 -366
  540. package/node_modules/hono/dist/cjs/jsx/children.js +16 -41
  541. package/node_modules/hono/dist/cjs/jsx/components.js +119 -192
  542. package/node_modules/hono/dist/cjs/jsx/constants.js +15 -42
  543. package/node_modules/hono/dist/cjs/jsx/context.js +144 -162
  544. package/node_modules/hono/dist/cjs/jsx/dom/client.js +49 -69
  545. package/node_modules/hono/dist/cjs/jsx/dom/components.js +23 -52
  546. package/node_modules/hono/dist/cjs/jsx/dom/context.js +39 -67
  547. package/node_modules/hono/dist/cjs/jsx/dom/css.js +143 -158
  548. package/node_modules/hono/dist/cjs/jsx/dom/hooks/index.js +55 -64
  549. package/node_modules/hono/dist/cjs/jsx/dom/index.js +114 -173
  550. package/node_modules/hono/dist/cjs/jsx/dom/intrinsic-element/components.js +282 -375
  551. package/node_modules/hono/dist/cjs/jsx/dom/jsx-dev-runtime.js +14 -49
  552. package/node_modules/hono/dist/cjs/jsx/dom/jsx-runtime.js +5 -32
  553. package/node_modules/hono/dist/cjs/jsx/dom/render.js +469 -623
  554. package/node_modules/hono/dist/cjs/jsx/dom/server.js +37 -64
  555. package/node_modules/hono/dist/cjs/jsx/dom/utils.js +7 -30
  556. package/node_modules/hono/dist/cjs/jsx/hooks/index.js +225 -318
  557. package/node_modules/hono/dist/cjs/jsx/index.js +86 -135
  558. package/node_modules/hono/dist/cjs/jsx/intrinsic-element/common.js +20 -43
  559. package/node_modules/hono/dist/cjs/jsx/intrinsic-element/components.js +117 -168
  560. package/node_modules/hono/dist/cjs/jsx/intrinsic-elements.js +0 -15
  561. package/node_modules/hono/dist/cjs/jsx/jsx-dev-runtime.js +14 -39
  562. package/node_modules/hono/dist/cjs/jsx/jsx-runtime.js +34 -68
  563. package/node_modules/hono/dist/cjs/jsx/streaming.js +123 -166
  564. package/node_modules/hono/dist/cjs/jsx/types.js +0 -15
  565. package/node_modules/hono/dist/cjs/jsx/utils.js +91 -175
  566. package/node_modules/hono/dist/cjs/middleware/basic-auth/index.js +98 -86
  567. package/node_modules/hono/dist/cjs/middleware/bearer-auth/index.js +92 -109
  568. package/node_modules/hono/dist/cjs/middleware/body-limit/index.js +66 -72
  569. package/node_modules/hono/dist/cjs/middleware/cache/index.js +153 -199
  570. package/node_modules/hono/dist/cjs/middleware/combine/index.js +133 -95
  571. package/node_modules/hono/dist/cjs/middleware/compress/index.js +73 -88
  572. package/node_modules/hono/dist/cjs/middleware/context-storage/index.js +49 -41
  573. package/node_modules/hono/dist/cjs/middleware/cors/index.js +107 -107
  574. package/node_modules/hono/dist/cjs/middleware/csrf/index.js +101 -72
  575. package/node_modules/hono/dist/cjs/middleware/etag/digest.js +58 -97
  576. package/node_modules/hono/dist/cjs/middleware/etag/index.js +71 -91
  577. package/node_modules/hono/dist/cjs/middleware/ip-restriction/index.js +161 -169
  578. package/node_modules/hono/dist/cjs/middleware/jsx-renderer/index.js +99 -77
  579. package/node_modules/hono/dist/cjs/middleware/jwk/index.js +3 -27
  580. package/node_modules/hono/dist/cjs/middleware/jwk/jwk.js +118 -135
  581. package/node_modules/hono/dist/cjs/middleware/jwt/index.js +9 -38
  582. package/node_modules/hono/dist/cjs/middleware/jwt/jwt.js +120 -141
  583. package/node_modules/hono/dist/cjs/middleware/language/index.js +7 -35
  584. package/node_modules/hono/dist/cjs/middleware/language/language.js +184 -182
  585. package/node_modules/hono/dist/cjs/middleware/logger/index.js +41 -62
  586. package/node_modules/hono/dist/cjs/middleware/method-not-allowed/index.js +82 -88
  587. package/node_modules/hono/dist/cjs/middleware/method-override/index.js +101 -102
  588. package/node_modules/hono/dist/cjs/middleware/powered-by/index.js +23 -30
  589. package/node_modules/hono/dist/cjs/middleware/pretty-json/index.js +38 -42
  590. package/node_modules/hono/dist/cjs/middleware/request-id/index.js +3 -27
  591. package/node_modules/hono/dist/cjs/middleware/request-id/request-id.js +34 -42
  592. package/node_modules/hono/dist/cjs/middleware/secure-headers/index.js +4 -29
  593. package/node_modules/hono/dist/cjs/middleware/secure-headers/permissions-policy.js +0 -15
  594. package/node_modules/hono/dist/cjs/middleware/secure-headers/secure-headers.js +142 -174
  595. package/node_modules/hono/dist/cjs/middleware/serve-static/index.js +55 -93
  596. package/node_modules/hono/dist/cjs/middleware/serve-static/path.js +15 -38
  597. package/node_modules/hono/dist/cjs/middleware/timeout/index.js +40 -45
  598. package/node_modules/hono/dist/cjs/middleware/timing/index.js +7 -35
  599. package/node_modules/hono/dist/cjs/middleware/timing/timing.js +177 -118
  600. package/node_modules/hono/dist/cjs/middleware/trailing-slash/index.js +85 -58
  601. package/node_modules/hono/dist/cjs/preset/quick.js +18 -37
  602. package/node_modules/hono/dist/cjs/preset/tiny.js +15 -33
  603. package/node_modules/hono/dist/cjs/request/constants.js +5 -27
  604. package/node_modules/hono/dist/cjs/request.js +334 -346
  605. package/node_modules/hono/dist/cjs/router/linear-router/index.js +3 -27
  606. package/node_modules/hono/dist/cjs/router/linear-router/router.js +95 -143
  607. package/node_modules/hono/dist/cjs/router/pattern-router/index.js +3 -27
  608. package/node_modules/hono/dist/cjs/router/pattern-router/router.js +41 -63
  609. package/node_modules/hono/dist/cjs/router/reg-exp-router/index.js +7 -34
  610. package/node_modules/hono/dist/cjs/router/reg-exp-router/matcher.js +18 -45
  611. package/node_modules/hono/dist/cjs/router/reg-exp-router/node.js +91 -135
  612. package/node_modules/hono/dist/cjs/router/reg-exp-router/prepared-router.js +92 -161
  613. package/node_modules/hono/dist/cjs/router/reg-exp-router/router.js +98 -147
  614. package/node_modules/hono/dist/cjs/router/reg-exp-router/trie.js +73 -89
  615. package/node_modules/hono/dist/cjs/router/smart-router/index.js +3 -27
  616. package/node_modules/hono/dist/cjs/router/smart-router/router.js +49 -79
  617. package/node_modules/hono/dist/cjs/router/trie-router/index.js +3 -27
  618. package/node_modules/hono/dist/cjs/router/trie-router/node.js +134 -186
  619. package/node_modules/hono/dist/cjs/router/trie-router/router.js +15 -39
  620. package/node_modules/hono/dist/cjs/router/utils.js +5 -27
  621. package/node_modules/hono/dist/cjs/router.js +37 -37
  622. package/node_modules/hono/dist/cjs/types.js +5 -28
  623. package/node_modules/hono/dist/cjs/utils/accept.js +177 -225
  624. package/node_modules/hono/dist/cjs/utils/basic-auth.js +16 -40
  625. package/node_modules/hono/dist/cjs/utils/body.js +84 -110
  626. package/node_modules/hono/dist/cjs/utils/buffer.js +43 -91
  627. package/node_modules/hono/dist/cjs/utils/color.js +35 -44
  628. package/node_modules/hono/dist/cjs/utils/compress.js +11 -26
  629. package/node_modules/hono/dist/cjs/utils/concurrent.js +29 -59
  630. package/node_modules/hono/dist/cjs/utils/constants.js +7 -26
  631. package/node_modules/hono/dist/cjs/utils/cookie.js +107 -177
  632. package/node_modules/hono/dist/cjs/utils/crypto.js +30 -61
  633. package/node_modules/hono/dist/cjs/utils/encode.js +31 -48
  634. package/node_modules/hono/dist/cjs/utils/filepath.js +23 -54
  635. package/node_modules/hono/dist/cjs/utils/handler.js +11 -33
  636. package/node_modules/hono/dist/cjs/utils/headers.js +0 -15
  637. package/node_modules/hono/dist/cjs/utils/html.js +96 -137
  638. package/node_modules/hono/dist/cjs/utils/http-status.js +0 -15
  639. package/node_modules/hono/dist/cjs/utils/ipaddr.js +213 -286
  640. package/node_modules/hono/dist/cjs/utils/jwt/index.js +14 -27
  641. package/node_modules/hono/dist/cjs/utils/jwt/jwa.js +25 -42
  642. package/node_modules/hono/dist/cjs/utils/jwt/jws.js +119 -199
  643. package/node_modules/hono/dist/cjs/utils/jwt/jwt.js +122 -206
  644. package/node_modules/hono/dist/cjs/utils/jwt/types.js +122 -159
  645. package/node_modules/hono/dist/cjs/utils/jwt/utf8.js +9 -28
  646. package/node_modules/hono/dist/cjs/utils/mime.js +75 -101
  647. package/node_modules/hono/dist/cjs/utils/stream.js +88 -111
  648. package/node_modules/hono/dist/cjs/utils/types.js +0 -15
  649. package/node_modules/hono/dist/cjs/utils/url.js +185 -234
  650. package/node_modules/hono/dist/cjs/validator/index.js +3 -27
  651. package/node_modules/hono/dist/cjs/validator/utils.js +0 -15
  652. package/node_modules/hono/dist/cjs/validator/validator.js +60 -103
  653. package/node_modules/hono/dist/client/client.js +138 -197
  654. package/node_modules/hono/dist/client/fetch-result-please.js +59 -56
  655. package/node_modules/hono/dist/client/index.js +3 -7
  656. package/node_modules/hono/dist/client/types.js +1 -0
  657. package/node_modules/hono/dist/client/utils.js +51 -68
  658. package/node_modules/hono/dist/compose.js +49 -45
  659. package/node_modules/hono/dist/context.js +376 -426
  660. package/node_modules/hono/dist/helper/accepts/accepts.js +47 -51
  661. package/node_modules/hono/dist/helper/accepts/index.js +1 -4
  662. package/node_modules/hono/dist/helper/adapter/index.js +33 -52
  663. package/node_modules/hono/dist/helper/conninfo/index.js +1 -0
  664. package/node_modules/hono/dist/helper/conninfo/types.js +1 -0
  665. package/node_modules/hono/dist/helper/cookie/index.js +74 -94
  666. package/node_modules/hono/dist/helper/css/common.js +167 -225
  667. package/node_modules/hono/dist/helper/css/index.js +132 -137
  668. package/node_modules/hono/dist/helper/dev/index.js +44 -49
  669. package/node_modules/hono/dist/helper/factory/index.js +27 -27
  670. package/node_modules/hono/dist/helper/html/index.js +30 -39
  671. package/node_modules/hono/dist/helper/proxy/index.js +116 -88
  672. package/node_modules/hono/dist/helper/route/index.js +121 -43
  673. package/node_modules/hono/dist/helper/ssg/index.js +3 -18
  674. package/node_modules/hono/dist/helper/ssg/middleware.js +53 -40
  675. package/node_modules/hono/dist/helper/ssg/plugins.js +55 -36
  676. package/node_modules/hono/dist/helper/ssg/ssg.js +198 -283
  677. package/node_modules/hono/dist/helper/ssg/utils.js +53 -75
  678. package/node_modules/hono/dist/helper/streaming/index.js +2 -8
  679. package/node_modules/hono/dist/helper/streaming/sse.js +50 -61
  680. package/node_modules/hono/dist/helper/streaming/stream.js +22 -31
  681. package/node_modules/hono/dist/helper/streaming/text.js +9 -10
  682. package/node_modules/hono/dist/helper/streaming/utils.js +9 -12
  683. package/node_modules/hono/dist/helper/testing/index.js +16 -10
  684. package/node_modules/hono/dist/helper/websocket/index.js +49 -53
  685. package/node_modules/hono/dist/hono-base.js +342 -379
  686. package/node_modules/hono/dist/hono.js +27 -20
  687. package/node_modules/hono/dist/http-exception.js +53 -33
  688. package/node_modules/hono/dist/index.js +19 -6
  689. package/node_modules/hono/dist/jsx/base.js +231 -340
  690. package/node_modules/hono/dist/jsx/children.js +16 -20
  691. package/node_modules/hono/dist/jsx/components.js +118 -170
  692. package/node_modules/hono/dist/jsx/constants.js +9 -15
  693. package/node_modules/hono/dist/jsx/context.js +153 -150
  694. package/node_modules/hono/dist/jsx/dom/client.js +45 -48
  695. package/node_modules/hono/dist/jsx/dom/components.js +21 -29
  696. package/node_modules/hono/dist/jsx/dom/context.js +37 -44
  697. package/node_modules/hono/dist/jsx/dom/css.js +142 -147
  698. package/node_modules/hono/dist/jsx/dom/hooks/index.js +52 -40
  699. package/node_modules/hono/dist/jsx/dom/index.js +71 -134
  700. package/node_modules/hono/dist/jsx/dom/intrinsic-element/components.js +275 -359
  701. package/node_modules/hono/dist/jsx/dom/jsx-dev-runtime.js +14 -18
  702. package/node_modules/hono/dist/jsx/dom/jsx-runtime.js +2 -8
  703. package/node_modules/hono/dist/jsx/dom/render.js +492 -631
  704. package/node_modules/hono/dist/jsx/dom/server.js +32 -32
  705. package/node_modules/hono/dist/jsx/dom/utils.js +6 -8
  706. package/node_modules/hono/dist/jsx/hooks/index.js +236 -308
  707. package/node_modules/hono/dist/jsx/index.js +45 -98
  708. package/node_modules/hono/dist/jsx/intrinsic-element/common.js +20 -22
  709. package/node_modules/hono/dist/jsx/intrinsic-element/components.js +113 -154
  710. package/node_modules/hono/dist/jsx/intrinsic-elements.js +1 -0
  711. package/node_modules/hono/dist/jsx/jsx-dev-runtime.js +12 -16
  712. package/node_modules/hono/dist/jsx/jsx-runtime.js +29 -42
  713. package/node_modules/hono/dist/jsx/streaming.js +120 -142
  714. package/node_modules/hono/dist/jsx/types.js +1 -0
  715. package/node_modules/hono/dist/jsx/utils.js +105 -168
  716. package/node_modules/hono/dist/middleware/basic-auth/index.js +96 -63
  717. package/node_modules/hono/dist/middleware/bearer-auth/index.js +93 -89
  718. package/node_modules/hono/dist/middleware/body-limit/index.js +66 -51
  719. package/node_modules/hono/dist/middleware/cache/index.js +165 -190
  720. package/node_modules/hono/dist/middleware/combine/index.js +132 -73
  721. package/node_modules/hono/dist/middleware/compress/index.js +75 -69
  722. package/node_modules/hono/dist/middleware/context-storage/index.js +49 -19
  723. package/node_modules/hono/dist/middleware/cors/index.js +107 -86
  724. package/node_modules/hono/dist/middleware/csrf/index.js +103 -53
  725. package/node_modules/hono/dist/middleware/etag/digest.js +59 -77
  726. package/node_modules/hono/dist/middleware/etag/index.js +71 -70
  727. package/node_modules/hono/dist/middleware/ip-restriction/index.js +163 -158
  728. package/node_modules/hono/dist/middleware/jsx-renderer/index.js +97 -54
  729. package/node_modules/hono/dist/middleware/jwk/index.js +1 -4
  730. package/node_modules/hono/dist/middleware/jwk/jwk.js +116 -112
  731. package/node_modules/hono/dist/middleware/jwt/index.js +2 -10
  732. package/node_modules/hono/dist/middleware/jwt/jwt.js +114 -114
  733. package/node_modules/hono/dist/middleware/language/index.js +2 -15
  734. package/node_modules/hono/dist/middleware/language/language.js +180 -157
  735. package/node_modules/hono/dist/middleware/logger/index.js +43 -37
  736. package/node_modules/hono/dist/middleware/method-not-allowed/index.js +81 -66
  737. package/node_modules/hono/dist/middleware/method-override/index.js +101 -81
  738. package/node_modules/hono/dist/middleware/powered-by/index.js +23 -9
  739. package/node_modules/hono/dist/middleware/pretty-json/index.js +39 -22
  740. package/node_modules/hono/dist/middleware/request-id/index.js +1 -4
  741. package/node_modules/hono/dist/middleware/request-id/request-id.js +33 -20
  742. package/node_modules/hono/dist/middleware/secure-headers/index.js +1 -5
  743. package/node_modules/hono/dist/middleware/secure-headers/permissions-policy.js +1 -0
  744. package/node_modules/hono/dist/middleware/secure-headers/secure-headers.js +144 -155
  745. package/node_modules/hono/dist/middleware/serve-static/index.js +55 -72
  746. package/node_modules/hono/dist/middleware/serve-static/path.js +15 -17
  747. package/node_modules/hono/dist/middleware/timeout/index.js +40 -23
  748. package/node_modules/hono/dist/middleware/timing/index.js +2 -9
  749. package/node_modules/hono/dist/middleware/timing/timing.js +177 -97
  750. package/node_modules/hono/dist/middleware/trailing-slash/index.js +85 -37
  751. package/node_modules/hono/dist/preset/quick.js +17 -15
  752. package/node_modules/hono/dist/preset/tiny.js +14 -11
  753. package/node_modules/hono/dist/request/constants.js +4 -5
  754. package/node_modules/hono/dist/request.js +328 -319
  755. package/node_modules/hono/dist/router/linear-router/index.js +1 -4
  756. package/node_modules/hono/dist/router/linear-router/router.js +93 -120
  757. package/node_modules/hono/dist/router/pattern-router/index.js +1 -4
  758. package/node_modules/hono/dist/router/pattern-router/router.js +39 -40
  759. package/node_modules/hono/dist/router/reg-exp-router/index.js +1 -7
  760. package/node_modules/hono/dist/router/reg-exp-router/matcher.js +17 -23
  761. package/node_modules/hono/dist/router/reg-exp-router/node.js +87 -110
  762. package/node_modules/hono/dist/router/reg-exp-router/prepared-router.js +89 -137
  763. package/node_modules/hono/dist/router/reg-exp-router/router.js +92 -129
  764. package/node_modules/hono/dist/router/reg-exp-router/trie.js +69 -64
  765. package/node_modules/hono/dist/router/smart-router/index.js +1 -4
  766. package/node_modules/hono/dist/router/smart-router/router.js +46 -55
  767. package/node_modules/hono/dist/router/trie-router/index.js +1 -4
  768. package/node_modules/hono/dist/router/trie-router/node.js +131 -162
  769. package/node_modules/hono/dist/router/trie-router/router.js +11 -14
  770. package/node_modules/hono/dist/router/utils.js +4 -5
  771. package/node_modules/hono/dist/router.js +35 -14
  772. package/node_modules/hono/dist/types/adapter/aws-lambda/conninfo.d.ts +4 -1
  773. package/node_modules/hono/dist/types/adapter/aws-lambda/handler.d.ts +150 -105
  774. package/node_modules/hono/dist/types/adapter/aws-lambda/index.d.ts +4 -8
  775. package/node_modules/hono/dist/types/adapter/aws-lambda/types.d.ts +152 -123
  776. package/node_modules/hono/dist/types/adapter/bun/conninfo.d.ts +4 -1
  777. package/node_modules/hono/dist/types/adapter/bun/index.d.ts +6 -10
  778. package/node_modules/hono/dist/types/adapter/bun/serve-static.d.ts +7 -2
  779. package/node_modules/hono/dist/types/adapter/bun/server.d.ts +4 -5
  780. package/node_modules/hono/dist/types/adapter/bun/ssg.d.ts +5 -1
  781. package/node_modules/hono/dist/types/adapter/bun/websocket.d.ts +31 -17
  782. package/node_modules/hono/dist/types/adapter/cloudflare-pages/conninfo.d.ts +4 -1
  783. package/node_modules/hono/dist/types/adapter/cloudflare-pages/handler.d.ts +29 -18
  784. package/node_modules/hono/dist/types/adapter/cloudflare-pages/index.d.ts +3 -7
  785. package/node_modules/hono/dist/types/adapter/cloudflare-workers/conninfo.d.ts +6 -1
  786. package/node_modules/hono/dist/types/adapter/cloudflare-workers/index.d.ts +4 -7
  787. package/node_modules/hono/dist/types/adapter/cloudflare-workers/serve-static-module.d.ts +5 -3
  788. package/node_modules/hono/dist/types/adapter/cloudflare-workers/serve-static.d.ts +10 -5
  789. package/node_modules/hono/dist/types/adapter/cloudflare-workers/utils.d.ts +10 -2
  790. package/node_modules/hono/dist/types/adapter/cloudflare-workers/websocket.d.ts +6 -1
  791. package/node_modules/hono/dist/types/adapter/deno/conninfo.d.ts +4 -1
  792. package/node_modules/hono/dist/types/adapter/deno/deno.d.ts +1 -0
  793. package/node_modules/hono/dist/types/adapter/deno/index.d.ts +5 -8
  794. package/node_modules/hono/dist/types/adapter/deno/serve-static.d.ts +7 -2
  795. package/node_modules/hono/dist/types/adapter/deno/ssg.d.ts +5 -1
  796. package/node_modules/hono/dist/types/adapter/deno/websocket.d.ts +6 -1
  797. package/node_modules/hono/dist/types/adapter/lambda-edge/conninfo.d.ts +6 -1
  798. package/node_modules/hono/dist/types/adapter/lambda-edge/handler.d.ts +83 -58
  799. package/node_modules/hono/dist/types/adapter/lambda-edge/index.d.ts +3 -7
  800. package/node_modules/hono/dist/types/adapter/netlify/conninfo.d.ts +4 -1
  801. package/node_modules/hono/dist/types/adapter/netlify/handler.d.ts +6 -1
  802. package/node_modules/hono/dist/types/adapter/netlify/index.d.ts +3 -5
  803. package/node_modules/hono/dist/types/adapter/netlify/mod.d.ts +3 -2
  804. package/node_modules/hono/dist/types/adapter/service-worker/handler.d.ts +9 -8
  805. package/node_modules/hono/dist/types/adapter/service-worker/index.d.ts +6 -9
  806. package/node_modules/hono/dist/types/adapter/service-worker/types.d.ts +12 -8
  807. package/node_modules/hono/dist/types/adapter/vercel/conninfo.d.ts +6 -1
  808. package/node_modules/hono/dist/types/adapter/vercel/handler.d.ts +6 -1
  809. package/node_modules/hono/dist/types/adapter/vercel/index.d.ts +3 -6
  810. package/node_modules/hono/dist/types/client/client.d.ts +5 -3
  811. package/node_modules/hono/dist/types/client/fetch-result-please.d.ts +21 -19
  812. package/node_modules/hono/dist/types/client/index.d.ts +5 -7
  813. package/node_modules/hono/dist/types/client/types.d.ts +134 -160
  814. package/node_modules/hono/dist/types/client/utils.d.ts +6 -4
  815. package/node_modules/hono/dist/types/compose.d.ts +4 -2
  816. package/node_modules/hono/dist/types/context.d.ts +335 -336
  817. package/node_modules/hono/dist/types/helper/accepts/accepts.d.ts +11 -9
  818. package/node_modules/hono/dist/types/helper/accepts/index.d.ts +2 -5
  819. package/node_modules/hono/dist/types/helper/adapter/index.d.ts +4 -6
  820. package/node_modules/hono/dist/types/helper/conninfo/index.d.ts +2 -5
  821. package/node_modules/hono/dist/types/helper/conninfo/types.d.ts +25 -23
  822. package/node_modules/hono/dist/types/helper/cookie/index.d.ts +10 -13
  823. package/node_modules/hono/dist/types/helper/css/common.d.ts +11 -10
  824. package/node_modules/hono/dist/types/helper/css/index.d.ts +25 -28
  825. package/node_modules/hono/dist/types/helper/dev/index.d.ts +10 -13
  826. package/node_modules/hono/dist/types/helper/factory/index.d.ts +26 -74
  827. package/node_modules/hono/dist/types/helper/html/index.d.ts +4 -7
  828. package/node_modules/hono/dist/types/helper/proxy/index.d.ts +19 -22
  829. package/node_modules/hono/dist/types/helper/route/index.d.ts +4 -2
  830. package/node_modules/hono/dist/types/helper/ssg/index.d.ts +4 -7
  831. package/node_modules/hono/dist/types/helper/ssg/middleware.d.ts +8 -7
  832. package/node_modules/hono/dist/types/helper/ssg/plugins.d.ts +3 -1
  833. package/node_modules/hono/dist/types/helper/ssg/ssg.d.ts +38 -36
  834. package/node_modules/hono/dist/types/helper/ssg/utils.d.ts +5 -4
  835. package/node_modules/hono/dist/types/helper/streaming/index.d.ts +4 -8
  836. package/node_modules/hono/dist/types/helper/streaming/sse.d.ts +10 -8
  837. package/node_modules/hono/dist/types/helper/streaming/stream.d.ts +4 -2
  838. package/node_modules/hono/dist/types/helper/streaming/text.d.ts +4 -2
  839. package/node_modules/hono/dist/types/helper/streaming/utils.d.ts +2 -0
  840. package/node_modules/hono/dist/types/helper/testing/index.d.ts +7 -10
  841. package/node_modules/hono/dist/types/helper/websocket/index.d.ts +30 -33
  842. package/node_modules/hono/dist/types/hono-base.d.ts +208 -211
  843. package/node_modules/hono/dist/types/hono.d.ts +11 -10
  844. package/node_modules/hono/dist/types/http-exception.d.ts +20 -23
  845. package/node_modules/hono/dist/types/index.d.ts +6 -37
  846. package/node_modules/hono/dist/types/jsx/base.d.ts +36 -35
  847. package/node_modules/hono/dist/types/jsx/children.d.ts +8 -6
  848. package/node_modules/hono/dist/types/jsx/components.d.ts +8 -5
  849. package/node_modules/hono/dist/types/jsx/constants.d.ts +2 -0
  850. package/node_modules/hono/dist/types/jsx/context.d.ts +9 -7
  851. package/node_modules/hono/dist/types/jsx/dom/client.d.ts +8 -10
  852. package/node_modules/hono/dist/types/jsx/dom/components.d.ts +9 -6
  853. package/node_modules/hono/dist/types/jsx/dom/context.d.ts +3 -1
  854. package/node_modules/hono/dist/types/jsx/dom/css.d.ts +26 -30
  855. package/node_modules/hono/dist/types/jsx/dom/hooks/index.d.ts +11 -13
  856. package/node_modules/hono/dist/types/jsx/dom/index.d.ts +78 -83
  857. package/node_modules/hono/dist/types/jsx/dom/intrinsic-element/components.d.ts +9 -5
  858. package/node_modules/hono/dist/types/jsx/dom/jsx-dev-runtime.d.ts +4 -6
  859. package/node_modules/hono/dist/types/jsx/dom/jsx-runtime.d.ts +3 -7
  860. package/node_modules/hono/dist/types/jsx/dom/render.d.ts +32 -51
  861. package/node_modules/hono/dist/types/jsx/dom/server.d.ts +86 -85
  862. package/node_modules/hono/dist/types/jsx/dom/utils.d.ts +2 -0
  863. package/node_modules/hono/dist/types/jsx/hooks/index.d.ts +16 -17
  864. package/node_modules/hono/dist/types/jsx/index.d.ts +70 -73
  865. package/node_modules/hono/dist/types/jsx/intrinsic-element/common.d.ts +3 -1
  866. package/node_modules/hono/dist/types/jsx/intrinsic-element/components.d.ts +7 -4
  867. package/node_modules/hono/dist/types/jsx/intrinsic-elements.d.ts +708 -708
  868. package/node_modules/hono/dist/types/jsx/jsx-dev-runtime.d.ts +4 -7
  869. package/node_modules/hono/dist/types/jsx/jsx-runtime.d.ts +7 -10
  870. package/node_modules/hono/dist/types/jsx/streaming.d.ts +9 -10
  871. package/node_modules/hono/dist/types/jsx/types.d.ts +11 -13
  872. package/node_modules/hono/dist/types/jsx/utils.d.ts +2 -0
  873. package/node_modules/hono/dist/types/middleware/basic-auth/index.d.ts +17 -20
  874. package/node_modules/hono/dist/types/middleware/bearer-auth/index.d.ts +46 -49
  875. package/node_modules/hono/dist/types/middleware/body-limit/index.d.ts +6 -9
  876. package/node_modules/hono/dist/types/middleware/cache/index.d.ts +13 -15
  877. package/node_modules/hono/dist/types/middleware/combine/index.d.ts +4 -7
  878. package/node_modules/hono/dist/types/middleware/compress/index.d.ts +8 -10
  879. package/node_modules/hono/dist/types/middleware/context-storage/index.d.ts +4 -6
  880. package/node_modules/hono/dist/types/middleware/cors/index.d.ts +10 -13
  881. package/node_modules/hono/dist/types/middleware/csrf/index.d.ts +6 -9
  882. package/node_modules/hono/dist/types/middleware/etag/digest.d.ts +2 -0
  883. package/node_modules/hono/dist/types/middleware/etag/index.d.ts +6 -9
  884. package/node_modules/hono/dist/types/middleware/ip-restriction/index.d.ts +11 -13
  885. package/node_modules/hono/dist/types/middleware/jsx-renderer/index.d.ts +11 -12
  886. package/node_modules/hono/dist/types/middleware/jwk/index.d.ts +2 -1
  887. package/node_modules/hono/dist/types/middleware/jwk/jwk.d.ts +20 -23
  888. package/node_modules/hono/dist/types/middleware/jwt/index.d.ts +6 -6
  889. package/node_modules/hono/dist/types/middleware/jwt/jwt.d.ts +28 -30
  890. package/node_modules/hono/dist/types/middleware/language/index.d.ts +5 -5
  891. package/node_modules/hono/dist/types/middleware/language/language.d.ts +42 -44
  892. package/node_modules/hono/dist/types/middleware/logger/index.d.ts +3 -6
  893. package/node_modules/hono/dist/types/middleware/method-not-allowed/index.d.ts +7 -10
  894. package/node_modules/hono/dist/types/middleware/method-override/index.d.ts +14 -17
  895. package/node_modules/hono/dist/types/middleware/powered-by/index.d.ts +8 -11
  896. package/node_modules/hono/dist/types/middleware/pretty-json/index.d.ts +18 -21
  897. package/node_modules/hono/dist/types/middleware/request-id/index.d.ts +5 -5
  898. package/node_modules/hono/dist/types/middleware/request-id/request-id.d.ts +9 -11
  899. package/node_modules/hono/dist/types/middleware/secure-headers/index.d.ts +5 -6
  900. package/node_modules/hono/dist/types/middleware/secure-headers/permissions-policy.d.ts +2 -1
  901. package/node_modules/hono/dist/types/middleware/secure-headers/secure-headers.d.ts +55 -58
  902. package/node_modules/hono/dist/types/middleware/serve-static/index.d.ts +22 -24
  903. package/node_modules/hono/dist/types/middleware/serve-static/path.d.ts +2 -0
  904. package/node_modules/hono/dist/types/middleware/timeout/index.d.ts +5 -7
  905. package/node_modules/hono/dist/types/middleware/timing/index.d.ts +5 -5
  906. package/node_modules/hono/dist/types/middleware/timing/timing.d.ts +17 -21
  907. package/node_modules/hono/dist/types/middleware/trailing-slash/index.d.ts +35 -38
  908. package/node_modules/hono/dist/types/preset/quick.d.ts +6 -9
  909. package/node_modules/hono/dist/types/preset/tiny.d.ts +6 -9
  910. package/node_modules/hono/dist/types/request/constants.d.ts +2 -0
  911. package/node_modules/hono/dist/types/request.d.ts +288 -287
  912. package/node_modules/hono/dist/types/router/linear-router/index.d.ts +2 -5
  913. package/node_modules/hono/dist/types/router/linear-router/router.d.ts +7 -5
  914. package/node_modules/hono/dist/types/router/pattern-router/index.d.ts +2 -5
  915. package/node_modules/hono/dist/types/router/pattern-router/router.d.ts +7 -5
  916. package/node_modules/hono/dist/types/router/reg-exp-router/index.d.ts +3 -6
  917. package/node_modules/hono/dist/types/router/reg-exp-router/matcher.d.ts +3 -1
  918. package/node_modules/hono/dist/types/router/reg-exp-router/node.d.ts +6 -4
  919. package/node_modules/hono/dist/types/router/reg-exp-router/prepared-router.d.ts +11 -11
  920. package/node_modules/hono/dist/types/router/reg-exp-router/router.d.ts +10 -9
  921. package/node_modules/hono/dist/types/router/reg-exp-router/trie.d.ts +7 -5
  922. package/node_modules/hono/dist/types/router/smart-router/index.d.ts +2 -5
  923. package/node_modules/hono/dist/types/router/smart-router/router.d.ts +11 -9
  924. package/node_modules/hono/dist/types/router/trie-router/index.d.ts +2 -5
  925. package/node_modules/hono/dist/types/router/trie-router/node.d.ts +6 -4
  926. package/node_modules/hono/dist/types/router/trie-router/router.d.ts +7 -5
  927. package/node_modules/hono/dist/types/router/utils.d.ts +2 -0
  928. package/node_modules/hono/dist/types/router.d.ts +23 -22
  929. package/node_modules/hono/dist/types/types.d.ts +146 -506
  930. package/node_modules/hono/dist/types/utils/accept.d.ts +5 -3
  931. package/node_modules/hono/dist/types/utils/basic-auth.d.ts +4 -2
  932. package/node_modules/hono/dist/types/utils/body.d.ts +46 -51
  933. package/node_modules/hono/dist/types/utils/buffer.d.ts +7 -6
  934. package/node_modules/hono/dist/types/utils/color.d.ts +2 -0
  935. package/node_modules/hono/dist/types/utils/compress.d.ts +2 -0
  936. package/node_modules/hono/dist/types/utils/concurrent.d.ts +6 -4
  937. package/node_modules/hono/dist/types/utils/constants.d.ts +2 -0
  938. package/node_modules/hono/dist/types/utils/cookie.d.ts +20 -19
  939. package/node_modules/hono/dist/types/utils/crypto.d.ts +5 -8
  940. package/node_modules/hono/dist/types/utils/encode.d.ts +2 -0
  941. package/node_modules/hono/dist/types/utils/filepath.d.ts +5 -4
  942. package/node_modules/hono/dist/types/utils/handler.d.ts +2 -0
  943. package/node_modules/hono/dist/types/utils/headers.d.ts +2 -0
  944. package/node_modules/hono/dist/types/utils/html.d.ts +11 -10
  945. package/node_modules/hono/dist/types/utils/http-status.d.ts +2 -0
  946. package/node_modules/hono/dist/types/utils/ipaddr.d.ts +4 -6
  947. package/node_modules/hono/dist/types/utils/jwt/index.d.ts +18 -12
  948. package/node_modules/hono/dist/types/utils/jwt/jwa.d.ts +15 -13
  949. package/node_modules/hono/dist/types/utils/jwt/jws.d.ts +4 -7
  950. package/node_modules/hono/dist/types/utils/jwt/jwt.d.ts +26 -29
  951. package/node_modules/hono/dist/types/utils/jwt/types.d.ts +48 -45
  952. package/node_modules/hono/dist/types/utils/jwt/utf8.d.ts +2 -0
  953. package/node_modules/hono/dist/types/utils/mime.d.ts +59 -57
  954. package/node_modules/hono/dist/types/utils/stream.d.ts +27 -25
  955. package/node_modules/hono/dist/types/utils/types.d.ts +14 -27
  956. package/node_modules/hono/dist/types/utils/url.d.ts +2 -1
  957. package/node_modules/hono/dist/types/validator/index.d.ts +3 -7
  958. package/node_modules/hono/dist/types/validator/utils.d.ts +6 -9
  959. package/node_modules/hono/dist/types/validator/validator.d.ts +11 -10
  960. package/node_modules/hono/dist/types.js +4 -6
  961. package/node_modules/hono/dist/utils/accept.js +185 -212
  962. package/node_modules/hono/dist/utils/basic-auth.js +18 -21
  963. package/node_modules/hono/dist/utils/body.js +87 -92
  964. package/node_modules/hono/dist/utils/buffer.js +44 -71
  965. package/node_modules/hono/dist/utils/color.js +33 -21
  966. package/node_modules/hono/dist/utils/compress.js +11 -5
  967. package/node_modules/hono/dist/utils/concurrent.js +29 -38
  968. package/node_modules/hono/dist/utils/constants.js +7 -5
  969. package/node_modules/hono/dist/utils/cookie.js +114 -163
  970. package/node_modules/hono/dist/utils/crypto.js +30 -40
  971. package/node_modules/hono/dist/utils/encode.js +30 -26
  972. package/node_modules/hono/dist/utils/filepath.js +23 -33
  973. package/node_modules/hono/dist/utils/handler.js +10 -11
  974. package/node_modules/hono/dist/utils/headers.js +1 -0
  975. package/node_modules/hono/dist/utils/html.js +97 -117
  976. package/node_modules/hono/dist/utils/http-status.js +1 -0
  977. package/node_modules/hono/dist/utils/ipaddr.js +227 -279
  978. package/node_modules/hono/dist/utils/jwt/index.js +12 -4
  979. package/node_modules/hono/dist/utils/jwt/jwa.js +24 -20
  980. package/node_modules/hono/dist/utils/jwt/jws.js +115 -174
  981. package/node_modules/hono/dist/utils/jwt/jwt.js +120 -198
  982. package/node_modules/hono/dist/utils/jwt/types.js +79 -95
  983. package/node_modules/hono/dist/utils/jwt/utf8.js +9 -7
  984. package/node_modules/hono/dist/utils/mime.js +74 -79
  985. package/node_modules/hono/dist/utils/stream.js +86 -88
  986. package/node_modules/hono/dist/utils/types.js +1 -0
  987. package/node_modules/hono/dist/utils/url.js +187 -215
  988. package/node_modules/hono/dist/validator/index.js +1 -4
  989. package/node_modules/hono/dist/validator/utils.js +1 -0
  990. package/node_modules/hono/dist/validator/validator.js +61 -83
  991. package/node_modules/hono/package.json +27 -27
  992. package/node_modules/imapflow/CHANGELOG.md +43 -0
  993. package/node_modules/imapflow/README.md +2 -0
  994. package/node_modules/imapflow/dist/cjs/commands/append.js +12 -12
  995. package/node_modules/imapflow/dist/cjs/commands/authenticate.d.ts +3 -8
  996. package/node_modules/imapflow/dist/cjs/commands/close.js +2 -1
  997. package/node_modules/imapflow/dist/cjs/commands/copy.js +4 -4
  998. package/node_modules/imapflow/dist/cjs/commands/create.js +2 -3
  999. package/node_modules/imapflow/dist/cjs/commands/delete.js +4 -4
  1000. package/node_modules/imapflow/dist/cjs/commands/expunge.js +8 -5
  1001. package/node_modules/imapflow/dist/cjs/commands/fetch.js +12 -10
  1002. package/node_modules/imapflow/dist/cjs/commands/idle.js +6 -2
  1003. package/node_modules/imapflow/dist/cjs/commands/list.js +37 -21
  1004. package/node_modules/imapflow/dist/cjs/commands/move.js +11 -6
  1005. package/node_modules/imapflow/dist/cjs/commands/namespace.js +1 -1
  1006. package/node_modules/imapflow/dist/cjs/commands/quota.js +10 -9
  1007. package/node_modules/imapflow/dist/cjs/commands/rename.js +4 -4
  1008. package/node_modules/imapflow/dist/cjs/commands/search.js +7 -8
  1009. package/node_modules/imapflow/dist/cjs/commands/select.js +12 -9
  1010. package/node_modules/imapflow/dist/cjs/commands/status.js +11 -11
  1011. package/node_modules/imapflow/dist/cjs/commands/store.js +5 -5
  1012. package/node_modules/imapflow/dist/cjs/commands/subscribe.js +2 -17
  1013. package/node_modules/imapflow/dist/cjs/commands/subscription.d.ts +10 -0
  1014. package/node_modules/imapflow/dist/cjs/commands/subscription.js +29 -0
  1015. package/node_modules/imapflow/dist/cjs/commands/unsubscribe.js +2 -17
  1016. package/node_modules/imapflow/dist/cjs/download.d.ts +22 -0
  1017. package/node_modules/imapflow/dist/cjs/download.js +588 -0
  1018. package/node_modules/imapflow/dist/cjs/errors.d.ts +52 -1
  1019. package/node_modules/imapflow/dist/cjs/errors.js +56 -1
  1020. package/node_modules/imapflow/dist/cjs/handler/imap-compiler.js +1 -1
  1021. package/node_modules/imapflow/dist/cjs/handler/imap-stream.d.ts +13 -2
  1022. package/node_modules/imapflow/dist/cjs/handler/imap-stream.js +58 -41
  1023. package/node_modules/imapflow/dist/cjs/handler/parser-instance.js +2 -2
  1024. package/node_modules/imapflow/dist/cjs/handler/token-parser.js +15 -9
  1025. package/node_modules/imapflow/dist/cjs/imap-flow.d.ts +30 -84
  1026. package/node_modules/imapflow/dist/cjs/imap-flow.js +335 -760
  1027. package/node_modules/imapflow/dist/cjs/jp-decoder.js +1 -1
  1028. package/node_modules/imapflow/dist/cjs/logger.d.ts +21 -3
  1029. package/node_modules/imapflow/dist/cjs/logger.js +35 -5
  1030. package/node_modules/imapflow/dist/cjs/package-info.d.ts +1 -1
  1031. package/node_modules/imapflow/dist/cjs/package-info.js +3 -3
  1032. package/node_modules/imapflow/dist/cjs/search-compiler.d.ts +1 -1
  1033. package/node_modules/imapflow/dist/cjs/search-compiler.js +53 -47
  1034. package/node_modules/imapflow/dist/cjs/tools.d.ts +52 -11
  1035. package/node_modules/imapflow/dist/cjs/tools.js +95 -25
  1036. package/node_modules/imapflow/dist/cjs/types.d.ts +30 -16
  1037. package/node_modules/imapflow/dist/esm/commands/append.js +13 -13
  1038. package/node_modules/imapflow/dist/esm/commands/authenticate.d.ts +3 -8
  1039. package/node_modules/imapflow/dist/esm/commands/close.js +2 -1
  1040. package/node_modules/imapflow/dist/esm/commands/copy.js +5 -5
  1041. package/node_modules/imapflow/dist/esm/commands/create.js +3 -4
  1042. package/node_modules/imapflow/dist/esm/commands/delete.js +5 -5
  1043. package/node_modules/imapflow/dist/esm/commands/expunge.js +9 -6
  1044. package/node_modules/imapflow/dist/esm/commands/fetch.js +13 -11
  1045. package/node_modules/imapflow/dist/esm/commands/idle.js +7 -3
  1046. package/node_modules/imapflow/dist/esm/commands/list.js +37 -21
  1047. package/node_modules/imapflow/dist/esm/commands/move.js +12 -7
  1048. package/node_modules/imapflow/dist/esm/commands/namespace.js +2 -2
  1049. package/node_modules/imapflow/dist/esm/commands/quota.js +11 -10
  1050. package/node_modules/imapflow/dist/esm/commands/rename.js +5 -5
  1051. package/node_modules/imapflow/dist/esm/commands/search.js +8 -9
  1052. package/node_modules/imapflow/dist/esm/commands/select.js +13 -10
  1053. package/node_modules/imapflow/dist/esm/commands/status.js +12 -12
  1054. package/node_modules/imapflow/dist/esm/commands/store.js +6 -6
  1055. package/node_modules/imapflow/dist/esm/commands/subscribe.js +2 -17
  1056. package/node_modules/imapflow/dist/esm/commands/subscription.d.ts +10 -0
  1057. package/node_modules/imapflow/dist/esm/commands/subscription.js +26 -0
  1058. package/node_modules/imapflow/dist/esm/commands/unsubscribe.js +2 -17
  1059. package/node_modules/imapflow/dist/esm/download.d.ts +22 -0
  1060. package/node_modules/imapflow/dist/esm/download.js +581 -0
  1061. package/node_modules/imapflow/dist/esm/errors.d.ts +52 -1
  1062. package/node_modules/imapflow/dist/esm/errors.js +55 -0
  1063. package/node_modules/imapflow/dist/esm/handler/imap-compiler.js +1 -1
  1064. package/node_modules/imapflow/dist/esm/handler/imap-stream.d.ts +13 -2
  1065. package/node_modules/imapflow/dist/esm/handler/imap-stream.js +58 -38
  1066. package/node_modules/imapflow/dist/esm/handler/parser-instance.js +2 -2
  1067. package/node_modules/imapflow/dist/esm/handler/token-parser.js +15 -9
  1068. package/node_modules/imapflow/dist/esm/imap-flow.d.ts +30 -84
  1069. package/node_modules/imapflow/dist/esm/imap-flow.js +335 -761
  1070. package/node_modules/imapflow/dist/esm/jp-decoder.js +1 -1
  1071. package/node_modules/imapflow/dist/esm/logger.d.ts +21 -3
  1072. package/node_modules/imapflow/dist/esm/logger.js +33 -3
  1073. package/node_modules/imapflow/dist/esm/package-info.d.ts +1 -1
  1074. package/node_modules/imapflow/dist/esm/package-info.js +3 -3
  1075. package/node_modules/imapflow/dist/esm/search-compiler.d.ts +1 -1
  1076. package/node_modules/imapflow/dist/esm/search-compiler.js +54 -48
  1077. package/node_modules/imapflow/dist/esm/tools.d.ts +52 -11
  1078. package/node_modules/imapflow/dist/esm/tools.js +88 -23
  1079. package/node_modules/imapflow/dist/esm/types.d.ts +30 -16
  1080. package/node_modules/imapflow/package.json +8 -8
  1081. package/node_modules/libbase64/.github/workflows/release.yaml +12 -10
  1082. package/node_modules/libbase64/.ncurc.js +7 -1
  1083. package/node_modules/libbase64/CHANGELOG.md +7 -0
  1084. package/node_modules/libbase64/lib/libbase64.js +27 -0
  1085. package/node_modules/libbase64/package.json +4 -4
  1086. package/node_modules/libmime/CHANGELOG.md +14 -0
  1087. package/node_modules/libmime/lib/libmime.js +41 -21
  1088. package/node_modules/libmime/package.json +3 -3
  1089. package/node_modules/libqp/.github/workflows/release.yaml +12 -10
  1090. package/node_modules/libqp/CHANGELOG.md +7 -0
  1091. package/node_modules/libqp/lib/libqp.js +6 -4
  1092. package/node_modules/libqp/package.json +2 -2
  1093. package/node_modules/libqp/test/libqp-test.js +71 -14
  1094. package/package.json +4 -2
  1095. package/packages/cli/dist/.tsbuildinfo +1 -1
  1096. package/packages/cli/dist/args.d.ts +6 -0
  1097. package/packages/cli/dist/args.d.ts.map +1 -1
  1098. package/packages/cli/dist/args.js +15 -0
  1099. package/packages/cli/dist/args.js.map +1 -1
  1100. package/packages/cli/dist/commands.d.ts.map +1 -1
  1101. package/packages/cli/dist/commands.js +22 -2
  1102. package/packages/cli/dist/commands.js.map +1 -1
  1103. package/packages/cli/dist/main.d.ts.map +1 -1
  1104. package/packages/cli/dist/main.js +7 -0
  1105. package/packages/cli/dist/main.js.map +1 -1
  1106. package/packages/core/dist/.tsbuildinfo +1 -1
  1107. package/packages/core/dist/actions/permissions.d.ts +14 -0
  1108. package/packages/core/dist/actions/permissions.d.ts.map +1 -1
  1109. package/packages/core/dist/actions/permissions.js +15 -0
  1110. package/packages/core/dist/actions/permissions.js.map +1 -1
  1111. package/packages/core/dist/agents/catalog.d.ts +12 -1
  1112. package/packages/core/dist/agents/catalog.d.ts.map +1 -1
  1113. package/packages/core/dist/agents/catalog.js +57 -6
  1114. package/packages/core/dist/agents/catalog.js.map +1 -1
  1115. package/packages/core/dist/agents/delegates.d.ts +54 -0
  1116. package/packages/core/dist/agents/delegates.d.ts.map +1 -0
  1117. package/packages/core/dist/agents/delegates.js +51 -0
  1118. package/packages/core/dist/agents/delegates.js.map +1 -0
  1119. package/packages/core/dist/agents/index.d.ts +1 -0
  1120. package/packages/core/dist/agents/index.d.ts.map +1 -1
  1121. package/packages/core/dist/agents/index.js +1 -0
  1122. package/packages/core/dist/agents/index.js.map +1 -1
  1123. package/packages/core/dist/host/build.d.ts +26 -5
  1124. package/packages/core/dist/host/build.d.ts.map +1 -1
  1125. package/packages/core/dist/host/build.js +105 -16
  1126. package/packages/core/dist/host/build.js.map +1 -1
  1127. package/packages/core/dist/host/types.d.ts +84 -5
  1128. package/packages/core/dist/host/types.d.ts.map +1 -1
  1129. package/packages/core/dist/index.d.ts +1 -0
  1130. package/packages/core/dist/index.d.ts.map +1 -1
  1131. package/packages/core/dist/index.js +1 -0
  1132. package/packages/core/dist/index.js.map +1 -1
  1133. package/packages/core/dist/json-schema.d.ts +32 -0
  1134. package/packages/core/dist/json-schema.d.ts.map +1 -0
  1135. package/packages/core/dist/json-schema.js +147 -0
  1136. package/packages/core/dist/json-schema.js.map +1 -0
  1137. package/packages/core/dist/learning/sources.d.ts.map +1 -1
  1138. package/packages/core/dist/learning/sources.js +3 -0
  1139. package/packages/core/dist/learning/sources.js.map +1 -1
  1140. package/packages/core/dist/learning/types.d.ts +4 -3
  1141. package/packages/core/dist/learning/types.d.ts.map +1 -1
  1142. package/packages/core/dist/learning/types.js +1 -1
  1143. package/packages/core/dist/learning/types.js.map +1 -1
  1144. package/packages/core/dist/notifications/index.d.ts +1 -0
  1145. package/packages/core/dist/notifications/index.d.ts.map +1 -1
  1146. package/packages/core/dist/notifications/index.js +1 -0
  1147. package/packages/core/dist/notifications/index.js.map +1 -1
  1148. package/packages/core/dist/notifications/notify.d.ts.map +1 -1
  1149. package/packages/core/dist/notifications/notify.js +47 -5
  1150. package/packages/core/dist/notifications/notify.js.map +1 -1
  1151. package/packages/core/dist/notifications/store.d.ts.map +1 -1
  1152. package/packages/core/dist/notifications/store.js +3 -1
  1153. package/packages/core/dist/notifications/store.js.map +1 -1
  1154. package/packages/core/dist/notifications/topic.d.ts +25 -0
  1155. package/packages/core/dist/notifications/topic.d.ts.map +1 -0
  1156. package/packages/core/dist/notifications/topic.js +116 -0
  1157. package/packages/core/dist/notifications/topic.js.map +1 -0
  1158. package/packages/core/dist/notifications/types.d.ts +4 -0
  1159. package/packages/core/dist/notifications/types.d.ts.map +1 -1
  1160. package/packages/core/dist/onboarding/language-tag.d.ts +12 -0
  1161. package/packages/core/dist/onboarding/language-tag.d.ts.map +1 -0
  1162. package/packages/core/dist/onboarding/language-tag.js +64 -0
  1163. package/packages/core/dist/onboarding/language-tag.js.map +1 -0
  1164. package/packages/core/dist/pages/__fixtures__/demo.d.ts +11 -0
  1165. package/packages/core/dist/pages/__fixtures__/demo.d.ts.map +1 -1
  1166. package/packages/core/dist/pages/__fixtures__/demo.js +24 -1
  1167. package/packages/core/dist/pages/__fixtures__/demo.js.map +1 -1
  1168. package/packages/core/dist/pages.d.ts +93 -0
  1169. package/packages/core/dist/pages.d.ts.map +1 -1
  1170. package/packages/core/dist/pages.js +40 -1
  1171. package/packages/core/dist/pages.js.map +1 -1
  1172. package/packages/core/dist/plugin/index.d.ts +5 -4
  1173. package/packages/core/dist/plugin/index.d.ts.map +1 -1
  1174. package/packages/core/dist/plugin/version.d.ts +1 -1
  1175. package/packages/core/dist/plugin/version.js +1 -1
  1176. package/packages/core/dist/provider-accounts.d.ts +39 -0
  1177. package/packages/core/dist/provider-accounts.d.ts.map +1 -1
  1178. package/packages/core/dist/provider-accounts.js +8 -0
  1179. package/packages/core/dist/provider-accounts.js.map +1 -1
  1180. package/packages/core/dist/registry.d.ts +37 -1
  1181. package/packages/core/dist/registry.d.ts.map +1 -1
  1182. package/packages/core/dist/registry.js +187 -32
  1183. package/packages/core/dist/registry.js.map +1 -1
  1184. package/packages/core/dist/secrets/scrub.d.ts +2 -0
  1185. package/packages/core/dist/secrets/scrub.d.ts.map +1 -1
  1186. package/packages/core/dist/secrets/scrub.js +29 -0
  1187. package/packages/core/dist/secrets/scrub.js.map +1 -1
  1188. package/packages/core/dist/surfaces.d.ts +11 -0
  1189. package/packages/core/dist/surfaces.d.ts.map +1 -1
  1190. package/packages/core/dist/surfaces.js +4 -0
  1191. package/packages/core/dist/surfaces.js.map +1 -1
  1192. package/packages/core/dist/tools.d.ts +36 -1
  1193. package/packages/core/dist/tools.d.ts.map +1 -1
  1194. package/packages/core/dist/tools.js.map +1 -1
  1195. package/packages/core/dist/views.d.ts +12 -12
  1196. package/packages/core/migrations/048_surface_chat_voice.sql +13 -0
  1197. package/packages/core/migrations/049_surface_chat_voice_form.sql +8 -0
  1198. package/packages/core/migrations/050_notification_topic.sql +8 -0
  1199. package/packages/core/package.json +2 -0
  1200. package/packages/gateway/assets/mascot/core-idle.tgs +0 -0
  1201. package/packages/gateway/assets/mascot/core-working.tgs +0 -0
  1202. package/packages/gateway/dist/.tsbuildinfo +1 -1
  1203. package/packages/gateway/dist/agents/canvas.d.ts +2 -2
  1204. package/packages/gateway/dist/agents/canvas.d.ts.map +1 -1
  1205. package/packages/gateway/dist/agents/canvas.js.map +1 -1
  1206. package/packages/gateway/dist/agents/catalog.d.ts.map +1 -1
  1207. package/packages/gateway/dist/agents/catalog.js +15 -6
  1208. package/packages/gateway/dist/agents/catalog.js.map +1 -1
  1209. package/packages/gateway/dist/agents/delegation.d.ts +20 -3
  1210. package/packages/gateway/dist/agents/delegation.d.ts.map +1 -1
  1211. package/packages/gateway/dist/agents/delegation.js +38 -12
  1212. package/packages/gateway/dist/agents/delegation.js.map +1 -1
  1213. package/packages/gateway/dist/agents/platform.d.ts +43 -13
  1214. package/packages/gateway/dist/agents/platform.d.ts.map +1 -1
  1215. package/packages/gateway/dist/agents/platform.js +97 -3
  1216. package/packages/gateway/dist/agents/platform.js.map +1 -1
  1217. package/packages/gateway/dist/agents/starter-team.d.ts +57 -0
  1218. package/packages/gateway/dist/agents/starter-team.d.ts.map +1 -0
  1219. package/packages/gateway/dist/agents/starter-team.js +151 -0
  1220. package/packages/gateway/dist/agents/starter-team.js.map +1 -0
  1221. package/packages/gateway/dist/agents-cli.d.ts +2 -0
  1222. package/packages/gateway/dist/agents-cli.d.ts.map +1 -1
  1223. package/packages/gateway/dist/agents-cli.js +5 -3
  1224. package/packages/gateway/dist/agents-cli.js.map +1 -1
  1225. package/packages/gateway/dist/anthropic-accounts.d.ts.map +1 -1
  1226. package/packages/gateway/dist/anthropic-accounts.js +9 -20
  1227. package/packages/gateway/dist/anthropic-accounts.js.map +1 -1
  1228. package/packages/gateway/dist/bootstrap.d.ts +3 -0
  1229. package/packages/gateway/dist/bootstrap.d.ts.map +1 -1
  1230. package/packages/gateway/dist/bootstrap.js +58 -2
  1231. package/packages/gateway/dist/bootstrap.js.map +1 -1
  1232. package/packages/gateway/dist/chat/session.d.ts.map +1 -1
  1233. package/packages/gateway/dist/chat/session.js +2 -2
  1234. package/packages/gateway/dist/chat/session.js.map +1 -1
  1235. package/packages/gateway/dist/chat/usage.d.ts +16 -0
  1236. package/packages/gateway/dist/chat/usage.d.ts.map +1 -1
  1237. package/packages/gateway/dist/chat/usage.js +53 -11
  1238. package/packages/gateway/dist/chat/usage.js.map +1 -1
  1239. package/packages/gateway/dist/codex-accounts.d.ts +7 -1
  1240. package/packages/gateway/dist/codex-accounts.d.ts.map +1 -1
  1241. package/packages/gateway/dist/codex-accounts.js +25 -26
  1242. package/packages/gateway/dist/codex-accounts.js.map +1 -1
  1243. package/packages/gateway/dist/index.d.ts +1 -0
  1244. package/packages/gateway/dist/index.d.ts.map +1 -1
  1245. package/packages/gateway/dist/index.js +1 -0
  1246. package/packages/gateway/dist/index.js.map +1 -1
  1247. package/packages/gateway/dist/mcp/requests.d.ts +8 -1
  1248. package/packages/gateway/dist/mcp/requests.d.ts.map +1 -1
  1249. package/packages/gateway/dist/mcp/requests.js +8 -1
  1250. package/packages/gateway/dist/mcp/requests.js.map +1 -1
  1251. package/packages/gateway/dist/missions/goals-page.d.ts.map +1 -1
  1252. package/packages/gateway/dist/missions/goals-page.js +57 -0
  1253. package/packages/gateway/dist/missions/goals-page.js.map +1 -1
  1254. package/packages/gateway/dist/plugins/approve.js +45 -9
  1255. package/packages/gateway/dist/plugins/approve.js.map +1 -1
  1256. package/packages/gateway/dist/plugins/load.d.ts.map +1 -1
  1257. package/packages/gateway/dist/plugins/load.js +4 -0
  1258. package/packages/gateway/dist/plugins/load.js.map +1 -1
  1259. package/packages/gateway/dist/plugins/npm.d.ts +5 -1
  1260. package/packages/gateway/dist/plugins/npm.d.ts.map +1 -1
  1261. package/packages/gateway/dist/plugins/npm.js +6 -0
  1262. package/packages/gateway/dist/plugins/npm.js.map +1 -1
  1263. package/packages/gateway/dist/plugins/scaffold.d.ts +15 -4
  1264. package/packages/gateway/dist/plugins/scaffold.d.ts.map +1 -1
  1265. package/packages/gateway/dist/plugins/scaffold.js +86 -16
  1266. package/packages/gateway/dist/plugins/scaffold.js.map +1 -1
  1267. package/packages/gateway/dist/plugins/stage.d.ts +35 -1
  1268. package/packages/gateway/dist/plugins/stage.d.ts.map +1 -1
  1269. package/packages/gateway/dist/plugins/stage.js +134 -8
  1270. package/packages/gateway/dist/plugins/stage.js.map +1 -1
  1271. package/packages/gateway/dist/plugins-cli.d.ts +5 -1
  1272. package/packages/gateway/dist/plugins-cli.d.ts.map +1 -1
  1273. package/packages/gateway/dist/plugins-cli.js +26 -4
  1274. package/packages/gateway/dist/plugins-cli.js.map +1 -1
  1275. package/packages/gateway/dist/provider-accounts.d.ts +4 -0
  1276. package/packages/gateway/dist/provider-accounts.d.ts.map +1 -1
  1277. package/packages/gateway/dist/provider-accounts.js +34 -4
  1278. package/packages/gateway/dist/provider-accounts.js.map +1 -1
  1279. package/packages/gateway/dist/provider-diagnostics.d.ts +14 -2
  1280. package/packages/gateway/dist/provider-diagnostics.d.ts.map +1 -1
  1281. package/packages/gateway/dist/provider-diagnostics.js +25 -9
  1282. package/packages/gateway/dist/provider-diagnostics.js.map +1 -1
  1283. package/packages/gateway/dist/speech-cli.d.ts +43 -0
  1284. package/packages/gateway/dist/speech-cli.d.ts.map +1 -0
  1285. package/packages/gateway/dist/speech-cli.js +105 -0
  1286. package/packages/gateway/dist/speech-cli.js.map +1 -0
  1287. package/packages/gateway/dist/telegram/api.d.ts +59 -0
  1288. package/packages/gateway/dist/telegram/api.d.ts.map +1 -1
  1289. package/packages/gateway/dist/telegram/api.js +111 -0
  1290. package/packages/gateway/dist/telegram/api.js.map +1 -1
  1291. package/packages/gateway/dist/telegram/browser-view.d.ts +2 -1
  1292. package/packages/gateway/dist/telegram/browser-view.d.ts.map +1 -1
  1293. package/packages/gateway/dist/telegram/browser-view.js +4 -2
  1294. package/packages/gateway/dist/telegram/browser-view.js.map +1 -1
  1295. package/packages/gateway/dist/telegram/main.d.ts.map +1 -1
  1296. package/packages/gateway/dist/telegram/main.js +27 -2
  1297. package/packages/gateway/dist/telegram/main.js.map +1 -1
  1298. package/packages/gateway/dist/telegram/outbound.d.ts +5 -0
  1299. package/packages/gateway/dist/telegram/outbound.d.ts.map +1 -1
  1300. package/packages/gateway/dist/telegram/outbound.js +10 -0
  1301. package/packages/gateway/dist/telegram/outbound.js.map +1 -1
  1302. package/packages/gateway/dist/telegram/stickers.d.ts +30 -0
  1303. package/packages/gateway/dist/telegram/stickers.d.ts.map +1 -0
  1304. package/packages/gateway/dist/telegram/stickers.js +146 -0
  1305. package/packages/gateway/dist/telegram/stickers.js.map +1 -0
  1306. package/packages/gateway/dist/telegram/surface.d.ts +31 -0
  1307. package/packages/gateway/dist/telegram/surface.d.ts.map +1 -1
  1308. package/packages/gateway/dist/telegram/surface.js +248 -13
  1309. package/packages/gateway/dist/telegram/surface.js.map +1 -1
  1310. package/packages/gateway/dist/telegram/voice.d.ts +112 -0
  1311. package/packages/gateway/dist/telegram/voice.d.ts.map +1 -0
  1312. package/packages/gateway/dist/telegram/voice.js +220 -0
  1313. package/packages/gateway/dist/telegram/voice.js.map +1 -0
  1314. package/packages/gateway/dist/tips/engine.d.ts +75 -0
  1315. package/packages/gateway/dist/tips/engine.d.ts.map +1 -0
  1316. package/packages/gateway/dist/tips/engine.js +135 -0
  1317. package/packages/gateway/dist/tips/engine.js.map +1 -0
  1318. package/packages/gateway/dist/tips/facts.d.ts +69 -0
  1319. package/packages/gateway/dist/tips/facts.d.ts.map +1 -0
  1320. package/packages/gateway/dist/tips/facts.js +104 -0
  1321. package/packages/gateway/dist/tips/facts.js.map +1 -0
  1322. package/packages/gateway/dist/tips/route.d.ts +25 -0
  1323. package/packages/gateway/dist/tips/route.d.ts.map +1 -0
  1324. package/packages/gateway/dist/tips/route.js +96 -0
  1325. package/packages/gateway/dist/tips/route.js.map +1 -0
  1326. package/packages/gateway/dist/tips/rules.d.ts +33 -0
  1327. package/packages/gateway/dist/tips/rules.d.ts.map +1 -0
  1328. package/packages/gateway/dist/tips/rules.js +54 -0
  1329. package/packages/gateway/dist/tips/rules.js.map +1 -0
  1330. package/packages/gateway/dist/web/agent-offers.d.ts +30 -0
  1331. package/packages/gateway/dist/web/agent-offers.d.ts.map +1 -1
  1332. package/packages/gateway/dist/web/agent-offers.js +64 -1
  1333. package/packages/gateway/dist/web/agent-offers.js.map +1 -1
  1334. package/packages/gateway/dist/web/chat.d.ts +31 -8
  1335. package/packages/gateway/dist/web/chat.d.ts.map +1 -1
  1336. package/packages/gateway/dist/web/chat.js +3 -2
  1337. package/packages/gateway/dist/web/chat.js.map +1 -1
  1338. package/packages/gateway/dist/web/connections.d.ts +83 -0
  1339. package/packages/gateway/dist/web/connections.d.ts.map +1 -0
  1340. package/packages/gateway/dist/web/connections.js +270 -0
  1341. package/packages/gateway/dist/web/connections.js.map +1 -0
  1342. package/packages/gateway/dist/web/onboarding.d.ts +14 -3
  1343. package/packages/gateway/dist/web/onboarding.d.ts.map +1 -1
  1344. package/packages/gateway/dist/web/onboarding.js +29 -7
  1345. package/packages/gateway/dist/web/onboarding.js.map +1 -1
  1346. package/packages/gateway/dist/web/plugins.d.ts +12 -0
  1347. package/packages/gateway/dist/web/plugins.d.ts.map +1 -1
  1348. package/packages/gateway/dist/web/plugins.js +12 -2
  1349. package/packages/gateway/dist/web/plugins.js.map +1 -1
  1350. package/packages/gateway/dist/web/profile.js +3 -2
  1351. package/packages/gateway/dist/web/profile.js.map +1 -1
  1352. package/packages/gateway/dist/web/read.d.ts +21 -12
  1353. package/packages/gateway/dist/web/read.d.ts.map +1 -1
  1354. package/packages/gateway/dist/web/read.js +20 -14
  1355. package/packages/gateway/dist/web/read.js.map +1 -1
  1356. package/packages/gateway/dist/web/server.d.ts +6 -0
  1357. package/packages/gateway/dist/web/server.d.ts.map +1 -1
  1358. package/packages/gateway/dist/web/server.js +84 -2
  1359. package/packages/gateway/dist/web/server.js.map +1 -1
  1360. package/packages/gateway/dist/web/speech.d.ts +47 -0
  1361. package/packages/gateway/dist/web/speech.d.ts.map +1 -0
  1362. package/packages/gateway/dist/web/speech.js +83 -0
  1363. package/packages/gateway/dist/web/speech.js.map +1 -0
  1364. package/packages/gateway/dist/web/static.d.ts.map +1 -1
  1365. package/packages/gateway/dist/web/static.js +1 -0
  1366. package/packages/gateway/dist/web/static.js.map +1 -1
  1367. package/packages/gateway/dist/web/stream.d.ts +0 -24
  1368. package/packages/gateway/dist/web/stream.d.ts.map +1 -1
  1369. package/packages/gateway/dist/web/stream.js +26 -2
  1370. package/packages/gateway/dist/web/stream.js.map +1 -1
  1371. package/packages/gateway/dist/web/usage-view.d.ts +15 -0
  1372. package/packages/gateway/dist/web/usage-view.d.ts.map +1 -0
  1373. package/packages/gateway/dist/web/usage-view.js +20 -0
  1374. package/packages/gateway/dist/web/usage-view.js.map +1 -0
  1375. package/packages/gateway/dist/web/version.d.ts +2 -0
  1376. package/packages/gateway/dist/web/version.d.ts.map +1 -1
  1377. package/packages/gateway/dist/web/version.js +27 -0
  1378. package/packages/gateway/dist/web/version.js.map +1 -1
  1379. package/packages/gateway/dist/web/write.d.ts +5 -0
  1380. package/packages/gateway/dist/web/write.d.ts.map +1 -1
  1381. package/packages/gateway/dist/web/write.js +20 -1
  1382. package/packages/gateway/dist/web/write.js.map +1 -1
  1383. package/packages/gateway/package.json +4 -1
  1384. package/packages/gateway/src/agents/starter/keeper/agent.md +31 -0
  1385. package/packages/gateway/src/agents/starter/keeper/skills/keeping-a-history.md +22 -0
  1386. package/packages/gateway/src/agents/starter/planner/agent.md +30 -0
  1387. package/packages/gateway/src/agents/starter/planner/skills/holding-a-follow-up.md +17 -0
  1388. package/packages/gateway/src/agents/starter/planner/skills/writing-the-morning-brief.md +25 -0
  1389. package/packages/gateway/src/agents/starter/scout/agent.md +33 -0
  1390. package/packages/gateway/src/agents/starter/scout/skills/answering-with-sources.md +23 -0
  1391. package/packages/gateway/src/agents/starter/scout/skills/the-web-is-evidence.md +25 -0
  1392. package/packages/install/dist/.tsbuildinfo +1 -1
  1393. package/packages/runtime/dist/.tsbuildinfo +1 -1
  1394. package/packages/runtime/dist/anthropic-oauth.d.ts.map +1 -1
  1395. package/packages/runtime/dist/anthropic-oauth.js +38 -73
  1396. package/packages/runtime/dist/anthropic-oauth.js.map +1 -1
  1397. package/packages/runtime/dist/anthropic.d.ts +18 -0
  1398. package/packages/runtime/dist/anthropic.d.ts.map +1 -1
  1399. package/packages/runtime/dist/anthropic.js +65 -13
  1400. package/packages/runtime/dist/anthropic.js.map +1 -1
  1401. package/packages/runtime/dist/codex-direct.d.ts +39 -0
  1402. package/packages/runtime/dist/codex-direct.d.ts.map +1 -1
  1403. package/packages/runtime/dist/codex-direct.js +133 -3
  1404. package/packages/runtime/dist/codex-direct.js.map +1 -1
  1405. package/packages/runtime/dist/codex-oauth.d.ts +0 -12
  1406. package/packages/runtime/dist/codex-oauth.d.ts.map +1 -1
  1407. package/packages/runtime/dist/codex-oauth.js +32 -45
  1408. package/packages/runtime/dist/codex-oauth.js.map +1 -1
  1409. package/packages/runtime/dist/context-window.d.ts.map +1 -1
  1410. package/packages/runtime/dist/context-window.js +13 -4
  1411. package/packages/runtime/dist/context-window.js.map +1 -1
  1412. package/packages/runtime/dist/delegate.d.ts.map +1 -1
  1413. package/packages/runtime/dist/delegate.js +4 -2
  1414. package/packages/runtime/dist/delegate.js.map +1 -1
  1415. package/packages/runtime/dist/index.d.ts +2 -0
  1416. package/packages/runtime/dist/index.d.ts.map +1 -1
  1417. package/packages/runtime/dist/index.js +2 -0
  1418. package/packages/runtime/dist/index.js.map +1 -1
  1419. package/packages/runtime/dist/loop.d.ts.map +1 -1
  1420. package/packages/runtime/dist/loop.js +6 -0
  1421. package/packages/runtime/dist/loop.js.map +1 -1
  1422. package/packages/runtime/dist/oauth-port.d.ts +68 -0
  1423. package/packages/runtime/dist/oauth-port.d.ts.map +1 -0
  1424. package/packages/runtime/dist/oauth-port.js +51 -0
  1425. package/packages/runtime/dist/oauth-port.js.map +1 -0
  1426. package/packages/runtime/dist/oauth.d.ts +255 -0
  1427. package/packages/runtime/dist/oauth.d.ts.map +1 -0
  1428. package/packages/runtime/dist/oauth.js +535 -0
  1429. package/packages/runtime/dist/oauth.js.map +1 -0
  1430. package/packages/runtime/dist/openai.d.ts +16 -4
  1431. package/packages/runtime/dist/openai.d.ts.map +1 -1
  1432. package/packages/runtime/dist/openai.js +23 -4
  1433. package/packages/runtime/dist/openai.js.map +1 -1
  1434. package/packages/runtime/dist/provider-models.d.ts.map +1 -1
  1435. package/packages/runtime/dist/provider-models.js +5 -1
  1436. package/packages/runtime/dist/provider-models.js.map +1 -1
  1437. package/packages/tools/artifacts/dist/.tsbuildinfo +1 -1
  1438. package/packages/tools/browser/dist/.tsbuildinfo +1 -1
  1439. package/packages/tools/browser/dist/computer.d.ts +53 -1
  1440. package/packages/tools/browser/dist/computer.d.ts.map +1 -1
  1441. package/packages/tools/browser/dist/computer.js +154 -5
  1442. package/packages/tools/browser/dist/computer.js.map +1 -1
  1443. package/packages/tools/browser/dist/controller.d.ts +20 -3
  1444. package/packages/tools/browser/dist/controller.d.ts.map +1 -1
  1445. package/packages/tools/browser/dist/controller.js +170 -5
  1446. package/packages/tools/browser/dist/controller.js.map +1 -1
  1447. package/packages/tools/browser/dist/index.d.ts.map +1 -1
  1448. package/packages/tools/browser/dist/index.js +9 -1
  1449. package/packages/tools/browser/dist/index.js.map +1 -1
  1450. package/packages/tools/browser/dist/service.d.ts +14 -1
  1451. package/packages/tools/browser/dist/service.d.ts.map +1 -1
  1452. package/packages/tools/browser/dist/service.js +28 -5
  1453. package/packages/tools/browser/dist/service.js.map +1 -1
  1454. package/packages/tools/browser/dist/types.d.ts +11 -0
  1455. package/packages/tools/browser/dist/types.d.ts.map +1 -1
  1456. package/packages/tools/browser/dist/types.js +16 -3
  1457. package/packages/tools/browser/dist/types.js.map +1 -1
  1458. package/packages/tools/browser/package.json +1 -1
  1459. package/packages/tools/email/dist/.tsbuildinfo +1 -1
  1460. package/packages/tools/email/dist/types.d.ts +2 -2
  1461. package/packages/tools/email/dist/types.d.ts.map +1 -1
  1462. package/packages/tools/host/dist/.tsbuildinfo +1 -1
  1463. package/packages/tools/mcp/dist/.tsbuildinfo +1 -0
  1464. package/packages/tools/mcp/dist/catalog.d.ts +26 -0
  1465. package/packages/tools/mcp/dist/catalog.d.ts.map +1 -0
  1466. package/packages/tools/mcp/dist/catalog.js +17 -0
  1467. package/packages/tools/mcp/dist/catalog.js.map +1 -0
  1468. package/packages/tools/mcp/dist/fetch.d.ts +44 -0
  1469. package/packages/tools/mcp/dist/fetch.d.ts.map +1 -0
  1470. package/packages/tools/mcp/dist/fetch.js +88 -0
  1471. package/packages/tools/mcp/dist/fetch.js.map +1 -0
  1472. package/packages/tools/mcp/dist/index.d.ts +27 -0
  1473. package/packages/tools/mcp/dist/index.d.ts.map +1 -0
  1474. package/packages/tools/mcp/dist/index.js +74 -0
  1475. package/packages/tools/mcp/dist/index.js.map +1 -0
  1476. package/packages/tools/mcp/dist/output.d.ts +38 -0
  1477. package/packages/tools/mcp/dist/output.d.ts.map +1 -0
  1478. package/packages/tools/mcp/dist/output.js +90 -0
  1479. package/packages/tools/mcp/dist/output.js.map +1 -0
  1480. package/packages/tools/mcp/dist/ports.d.ts +105 -0
  1481. package/packages/tools/mcp/dist/ports.d.ts.map +1 -0
  1482. package/packages/tools/mcp/dist/ports.js +9 -0
  1483. package/packages/tools/mcp/dist/ports.js.map +1 -0
  1484. package/packages/tools/mcp/dist/service.d.ts +220 -0
  1485. package/packages/tools/mcp/dist/service.d.ts.map +1 -0
  1486. package/packages/tools/mcp/dist/service.js +742 -0
  1487. package/packages/tools/mcp/dist/service.js.map +1 -0
  1488. package/packages/tools/mcp/dist/session.d.ts +50 -0
  1489. package/packages/tools/mcp/dist/session.d.ts.map +1 -0
  1490. package/packages/tools/mcp/dist/session.js +108 -0
  1491. package/packages/tools/mcp/dist/session.js.map +1 -0
  1492. package/packages/tools/mcp/dist/store.d.ts +70 -0
  1493. package/packages/tools/mcp/dist/store.d.ts.map +1 -0
  1494. package/packages/tools/mcp/dist/store.js +78 -0
  1495. package/packages/tools/mcp/dist/store.js.map +1 -0
  1496. package/packages/tools/mcp/dist/testing/fake.d.ts +51 -0
  1497. package/packages/tools/mcp/dist/testing/fake.d.ts.map +1 -0
  1498. package/packages/tools/mcp/dist/testing/fake.js +147 -0
  1499. package/packages/tools/mcp/dist/testing/fake.js.map +1 -0
  1500. package/packages/tools/mcp/dist/tiers.d.ts +51 -0
  1501. package/packages/tools/mcp/dist/tiers.d.ts.map +1 -0
  1502. package/packages/tools/mcp/dist/tiers.js +106 -0
  1503. package/packages/tools/mcp/dist/tiers.js.map +1 -0
  1504. package/packages/tools/mcp/dist/tokens.d.ts +35 -0
  1505. package/packages/tools/mcp/dist/tokens.d.ts.map +1 -0
  1506. package/packages/tools/mcp/dist/tokens.js +75 -0
  1507. package/packages/tools/mcp/dist/tokens.js.map +1 -0
  1508. package/packages/tools/mcp/migrations/001_connections.sql +49 -0
  1509. package/packages/tools/mcp/migrations/002_review_again.sql +15 -0
  1510. package/packages/tools/mcp/package.json +34 -0
  1511. package/packages/tools/memory/dist/.tsbuildinfo +1 -1
  1512. package/packages/tools/web/dist/.tsbuildinfo +1 -1
  1513. package/packages/web/dist/apple-touch-icon.png +0 -0
  1514. package/packages/web/dist/assets/index-CBEdA2dN.js +125 -0
  1515. package/packages/web/dist/assets/index-Ddp9egOQ.css +1 -0
  1516. package/packages/web/dist/assets/lottie_light-BCNsQpt8.js +9 -0
  1517. package/packages/web/dist/build.json +1 -0
  1518. package/packages/web/dist/icon-192.png +0 -0
  1519. package/packages/web/dist/icon-512.png +0 -0
  1520. package/packages/web/dist/icon-maskable-512.png +0 -0
  1521. package/packages/web/dist/index.html +6 -3
  1522. package/packages/web/dist/manifest.webmanifest +16 -0
  1523. package/packages/web/dist/mascot/README.md +5 -0
  1524. package/packages/web/dist/mascot/anim/core-idle.json +1 -0
  1525. package/packages/web/dist/mascot/anim/core-working.json +1 -0
  1526. package/packages/web/dist/precache.json +28 -0
  1527. package/packages/web/dist/sw.js +99 -0
  1528. package/packages/web/dist/assets/index-BRc5auXm.js +0 -123
  1529. package/packages/web/dist/assets/index-DwUpotTR.css +0 -1
@@ -7,22 +7,17 @@ import crypto from 'node:crypto';
7
7
  import zlib from 'node:zlib';
8
8
  import { EventEmitter } from 'node:events';
9
9
  import { PassThrough } from 'node:stream';
10
- import libmime from 'libmime';
11
- import libqp from 'libqp';
12
- import libbase64 from 'libbase64';
13
- import { Headers } from '@zone-eu/mailsplit';
14
- import FlowedDecoder from '@zone-eu/mailsplit/lib/flowed-decoder.js';
15
- import logger from './logger.js';
10
+ import { createConnectionLogger } from './logger.js';
16
11
  import * as packageInfo from './package-info.js';
17
- import { LimitedPassthrough, normalizeByteLimit } from './limited-passthrough.js';
18
12
  import { ImapStream } from './handler/imap-stream.js';
19
13
  import { parser, compiler } from './handler/imap-handler.js';
20
14
  import { proxyConnection, detachEarlyErrorHandler } from './proxy-connection.js';
21
15
  import { ConnectionDeadline } from './connection-deadline.js';
16
+ import { downloadMessage, downloadMessageParts } from './download.js';
22
17
  import { AuthenticationFailure } from './errors.js';
23
18
  import imapCommands from './imap-commands.js';
24
- import { comparePaths, updateCapabilities, getFolderTree, formatMessageResponse, getDecoder, packMessageRange, normalizePath, expandRange, getColorFlags, hasCapability, isRev2Active, logConnectionError, unrefTimer, clearTimer, parseUintValue, isUnsafeKey, getStringList, buildConnectionError, guardedPromise, guardedReject, MAX_UINT32_DIGITS } from './tools.js';
25
- export { AuthenticationFailure } from './errors.js';
19
+ import { comparePaths, updateCapabilities, getFolderTree, formatMessageResponse, packMessageRange, normalizePath, expandRange, getColorFlags, hasCapability, isRev2Active, logConnectionError, unrefTimer, clearTimer, parseUintValue, getStringList, getTextValues, emitSafe, buildConnectionError, guardedPromise, guardedReject, MAX_UINT32_DIGITS } from './tools.js';
20
+ export { AuthenticationFailure, ImapFlowErrorCode } from './errors.js';
26
21
  const GREETING_TIMEOUT = 16 * 1000;
27
22
  const UPGRADE_TIMEOUT = 10 * 1000;
28
23
  const SOCKET_TIMEOUT = 5 * 60 * 1000;
@@ -160,6 +155,9 @@ export class ImapFlow extends EventEmitter {
160
155
  * Current module version as a static class property
161
156
  */
162
157
  static { this.version = packageInfo.version; }
158
+ /**
159
+ * Creates a client for one IMAP connection. Nothing is sent before `connect()` is called
160
+ */
163
161
  constructor(options) {
164
162
  super({ captureRejections: true });
165
163
  this.options = options || {};
@@ -310,7 +308,7 @@ export class ImapFlow extends EventEmitter {
310
308
  rid = '0'.repeat(20 - rid.length) + rid;
311
309
  }
312
310
  if (rid.length > 20) {
313
- rid = rid.substr(0, 20);
311
+ rid = rid.substring(0, 20);
314
312
  }
315
313
  return rid;
316
314
  }
@@ -898,11 +896,9 @@ export class ImapFlow extends EventEmitter {
898
896
  break;
899
897
  case 'NO':
900
898
  case 'BAD': {
901
- let txt = parsed.attributes &&
902
- parsed.attributes
903
- .filter(val => val.type === 'TEXT')
904
- .map(val => val.value.trim())
905
- .join(' ');
899
+ let txt = getTextValues(parsed.attributes)
900
+ .map(val => val.trim())
901
+ .join(' ');
906
902
  let err = new Error('Command failed');
907
903
  err.response = parsed;
908
904
  err.responseStatus = parsed.command.toUpperCase();
@@ -933,7 +929,7 @@ export class ImapFlow extends EventEmitter {
933
929
  // Example: "tag BAD Request is throttled. Suggested Backoff Time: 92415 milliseconds"
934
930
  if (/Request is throttled/i.test(txt) && /Backoff Time/i.test(txt)) {
935
931
  let throttlingMatch = txt.match(/Backoff Time[:=\s]+(\d+)/i);
936
- if (throttlingMatch && throttlingMatch[1] && !isNaN(throttlingMatch[1])) {
932
+ if (throttlingMatch) {
937
933
  throttleDelay = Number(throttlingMatch[1]);
938
934
  }
939
935
  }
@@ -941,8 +937,14 @@ export class ImapFlow extends EventEmitter {
941
937
  if (throttleDelay) {
942
938
  err.code = 'ETHROTTLE';
943
939
  err.throttleReset = throttleDelay;
944
- // The server-suggested delay can be very large, so throttleWait() caps it
945
- let delayResponse = Math.min(throttleDelay, MAX_THROTTLE_DELAY);
940
+ // The server-suggested delay can be very large, so throttleWait() caps it.
941
+ // The reader loop is parked for the whole wait, so it also stays well
942
+ // inside the socket inactivity timeout: a wait that outlasted it would
943
+ // fire the timeout handler, and the keepalive NOOP it sends can not be
944
+ // read while the loop is parked, so the connection would be torn down.
945
+ // A caller that retries (fetch) waits out the rest of the hint itself.
946
+ let delayResponse = Math.min(throttleDelay, MAX_THROTTLE_DELAY, Math.floor(this.socketTimeout / 2));
947
+ err.throttleWaited = delayResponse;
946
948
  this.log.warn({ msg: 'Throttling detected', cid: this.id, throttleDelay, delayResponse, err });
947
949
  let aborted = await this.throttleWait(delayResponse);
948
950
  if (aborted) {
@@ -1241,7 +1243,9 @@ export class ImapFlow extends EventEmitter {
1241
1243
  let chunk;
1242
1244
  while (this.writeSocket && (chunk = this.writeSocket.read()) !== null) {
1243
1245
  if (this._deflate && this._deflate.write(chunk) === false) {
1244
- this._deflate.once('drain', readNext);
1246
+ this._deflate.once('drain', () => {
1247
+ void readNext();
1248
+ });
1245
1249
  return;
1246
1250
  }
1247
1251
  // Yield to event loop every 100 chunks to prevent CPU blocking
@@ -1267,7 +1271,8 @@ export class ImapFlow extends EventEmitter {
1267
1271
  };
1268
1272
  writeSocket.on('readable', () => {
1269
1273
  if (!reading && this.writeSocket) {
1270
- readNext();
1274
+ // readNext() reports its own failures, the returned promise never rejects
1275
+ void readNext();
1271
1276
  }
1272
1277
  });
1273
1278
  writeSocket.on('error', err => {
@@ -1556,6 +1561,7 @@ export class ImapFlow extends EventEmitter {
1556
1561
  /** @internal */
1557
1562
  beginSession(onUnhandledError) {
1558
1563
  clearTimer(this.greetingTimeout);
1564
+ this.greetingReceived = true;
1559
1565
  this.untaggedHandlers.OK = null;
1560
1566
  this.untaggedHandlers.PREAUTH = null;
1561
1567
  if (this.isClosed) {
@@ -1585,9 +1591,7 @@ export class ImapFlow extends EventEmitter {
1585
1591
  }
1586
1592
  /** @internal */
1587
1593
  async initialOK(message) {
1588
- this.greeting = (message.attributes || [])
1589
- .filter(entry => entry.type === 'TEXT')
1590
- .map(entry => entry.value)
1594
+ this.greeting = getTextValues(message.attributes)
1591
1595
  .filter(entry => entry)
1592
1596
  .join('');
1593
1597
  // ALWAYS emit the error so users can handle it
@@ -1611,14 +1615,18 @@ export class ImapFlow extends EventEmitter {
1611
1615
  async serverBye(parsed) {
1612
1616
  // Extract BYE reason from response for better error messages
1613
1617
  let reason = parsed &&
1614
- parsed.attributes &&
1615
- parsed.attributes
1616
- .filter(val => val.type === 'TEXT')
1617
- .map(val => val.value.trim())
1618
+ getTextValues(parsed.attributes)
1619
+ .map(val => val.trim())
1618
1620
  .join(' ');
1619
1621
  this.byeReason = reason || 'Server closed connection';
1620
1622
  this.untaggedHandlers.BYE = null;
1621
1623
  this.state = this.states.LOGOUT;
1624
+ // A BYE greeting rejects the connection outright. Do not wait for the server to close
1625
+ // the socket: one that keeps it open would leave connect() pending until the greeting
1626
+ // timeout.
1627
+ if (!this.greetingReceived) {
1628
+ this.closeAfter();
1629
+ }
1622
1630
  }
1623
1631
  // Drops every capability-derived field together - the counterpart of
1624
1632
  // updateCapabilitiesFromRaw() below, which sets them together. rawCapabilities is
@@ -1801,7 +1809,7 @@ export class ImapFlow extends EventEmitter {
1801
1809
  // Replace "*" with the actual message count. Some servers reject bare "*"
1802
1810
  // in certain commands, and this also forces a sequence query (not UID).
1803
1811
  if (value === '*') {
1804
- if (!this.mailbox.exists) {
1812
+ if (!this.mailbox || !this.mailbox.exists) {
1805
1813
  return false;
1806
1814
  }
1807
1815
  value = this.mailbox.exists.toString();
@@ -1851,7 +1859,7 @@ export class ImapFlow extends EventEmitter {
1851
1859
  /** @internal */
1852
1860
  autoidle() {
1853
1861
  clearTimer(this.idleStartTimer);
1854
- if (this.options.disableAutoIdle || this.state !== this.states.SELECTED) {
1862
+ if (this.options.disableAutoIdle || !this.usable || this.state !== this.states.SELECTED) {
1855
1863
  return;
1856
1864
  }
1857
1865
  if (this.connectionBusy()) {
@@ -1863,7 +1871,7 @@ export class ImapFlow extends EventEmitter {
1863
1871
  // missed clearTimeout would inject IDLE between a caller's own commands. Declining
1864
1872
  // postpones rather than cancels: whatever made the connection busy calls autoidle()
1865
1873
  // again when it finishes.
1866
- if (this.state !== this.states.SELECTED || this.connectionBusy()) {
1874
+ if (!this.usable || this.state !== this.states.SELECTED || this.connectionBusy()) {
1867
1875
  return;
1868
1876
  }
1869
1877
  this.idle().catch(err => logConnectionError(this, 'Auto-IDLE failed', err));
@@ -1882,9 +1890,17 @@ export class ImapFlow extends EventEmitter {
1882
1890
  async connect() {
1883
1891
  if (this._connectCalled) {
1884
1892
  // Prevent re-using ImapFlow instances by allowing to call connect just once.
1885
- throw new Error('Can not re-use ImapFlow instance');
1893
+ let err = new Error('Can not re-use ImapFlow instance');
1894
+ err.code = 'InstanceReused';
1895
+ throw err;
1886
1896
  }
1887
1897
  this._connectCalled = true;
1898
+ let closedError = () => this.createNoConnectionError(this.byeReason, { rejectedFrom: 'connect' });
1899
+ // close() already ran, so there is no connection to set up and nothing would ever
1900
+ // settle a connect attempt started now.
1901
+ if (this.isClosed) {
1902
+ throw closedError();
1903
+ }
1888
1904
  // One deadline for the whole attempt, started before anything is resolved or negotiated.
1889
1905
  // Proxy DNS and proxy negotiation used to run entirely outside the timer, so a stalled
1890
1906
  // proxy could hang far beyond the documented connectionTimeout.
@@ -1930,9 +1946,20 @@ export class ImapFlow extends EventEmitter {
1930
1946
  error._err = err;
1931
1947
  throw error;
1932
1948
  }
1949
+ // close() during proxy setup found no socket to destroy and no connect to reject,
1950
+ // so the tunnel that just opened is dropped here instead of being handed to a
1951
+ // closed client.
1952
+ if (this.isClosed) {
1953
+ socket.destroy();
1954
+ throw closedError();
1955
+ }
1933
1956
  }
1934
1957
  // Guarded: close() rejects a pending connect() synchronously. See guardedPromise().
1935
1958
  let connectPromise = guardedPromise((resolve, reject) => {
1959
+ // Stored before the transport is up, so a close() that lands before onConnect
1960
+ // still rejects this attempt through closeConnectSteps().
1961
+ this.initialResolve = resolve;
1962
+ this.initialReject = reject;
1936
1963
  // Whatever the proxy phase already used is gone from the budget
1937
1964
  this.connectTimeout = setTimeout(() => {
1938
1965
  let err = deadline.error();
@@ -1984,9 +2011,6 @@ export class ImapFlow extends EventEmitter {
1984
2011
  this.setSocketHandlers();
1985
2012
  this.setEventHandlers();
1986
2013
  connected.pipe(this.streamer);
1987
- // executed by initial "* OK"
1988
- this.initialResolve = resolve;
1989
- this.initialReject = reject;
1990
2014
  /* c8 ignore next 4 */ // defensive: the onConnect setup body does not throw under normal operation
1991
2015
  }
1992
2016
  catch (ex) {
@@ -2069,50 +2093,14 @@ export class ImapFlow extends EventEmitter {
2069
2093
  */
2070
2094
  close() {
2071
2095
  try {
2072
- // clear pending timers
2073
- clearTimer(this.idleStartTimer);
2074
- clearTimer(this.upgradeTimeout);
2075
- clearTimer(this.connectTimeout);
2076
- clearTimer(this.greetingTimeout);
2077
- // Abort every in-flight throttle back-off so each waiter unblocks and its request is
2078
- // settled promptly rather than after the full delay.
2079
- for (let entry of this._throttleWaits) {
2080
- clearTimer(entry.timer);
2081
- entry.resolve(true);
2082
- }
2083
- this._throttleWaits.clear();
2096
+ this.closeTimers();
2084
2097
  this.usable = false;
2085
2098
  // close() takes over ownership of the idling state: dropping the session token means a
2086
2099
  // poll or IDLE that unwinds after this point sees that it no longer owns the flag and
2087
2100
  // leaves it alone (see claimIdling() in commands/idle.ts).
2088
2101
  this._idleSession = null;
2089
2102
  this.idling = false;
2090
- // An in-flight STARTTLS upgrade has to be settled through its own single settlement
2091
- // path, otherwise the upgrade promise (and the session it belongs to) stays pending
2092
- // for the lifetime of the process.
2093
- if (typeof this._upgradeReject === 'function') {
2094
- let reject = this._upgradeReject;
2095
- this._upgradeReject = null;
2096
- reject(this.createNoConnectionError(false, { rejectedFrom: 'upgrade' }));
2097
- }
2098
- if (typeof this.initialReject === 'function' && !this.options.verifyOnly) {
2099
- clearTimer(this.greetingTimeout);
2100
- let reject = this.initialReject;
2101
- this.initialResolve = false;
2102
- this.initialReject = false;
2103
- let err = new Error('Unexpected close');
2104
- /* c8 ignore next */ // closing a pending connect over an already-secure socket (the TLS branch) is not separately exercised
2105
- err.code = `ClosedAfterConnect${this.secureConnection ? 'TLS' : 'Text'}`;
2106
- // Surface the server's BYE reason (e.g. "Too many connections") when the
2107
- // connection was closed by an untagged BYE, so the caller sees why.
2108
- if (this.byeReason) {
2109
- err.reason = this.byeReason;
2110
- }
2111
- // Synchronous rejection is safe: connectPromise was built by guardedPromise(),
2112
- // so the rejection is already observed. close() is synchronous, so all cleanup
2113
- // completes before any microtask rejection handler runs.
2114
- reject(err);
2115
- }
2103
+ this.closeConnectSteps();
2116
2104
  if (typeof this.preCheck === 'function') {
2117
2105
  // Runs while the connection is being torn down, so the rejection this sees is
2118
2106
  // almost always the NoConnection close() is about to raise itself.
@@ -2139,99 +2127,9 @@ export class ImapFlow extends EventEmitter {
2139
2127
  }
2140
2128
  this.preCheck = false;
2141
2129
  }
2142
- // Collect all pending requests to reject
2143
- let pendingRequests = [];
2144
- // reject command that is currently processed
2145
- if (this.currentRequest && this.requestTagMap.has(this.currentRequest.tag)) {
2146
- let tag = this.currentRequest.tag;
2147
- let request = this.requestTagMap.get(tag);
2148
- if (request) {
2149
- this.requestTagMap.delete(tag);
2150
- pendingRequests.push(request);
2151
- }
2152
- this.currentRequest = false;
2153
- }
2154
- // reject all other pending commands
2155
- while (this.requestQueue.length) {
2156
- let req = this.requestQueue.shift();
2157
- if (req && this.requestTagMap.has(req.tag)) {
2158
- let request = this.requestTagMap.get(req.tag);
2159
- if (request) {
2160
- this.requestTagMap.delete(req.tag);
2161
- pendingRequests.push(request);
2162
- }
2163
- }
2164
- }
2165
- // Reject pending requests and locks synchronously. Every promise rejected here was
2166
- // built by guardedPromise(), so its rejection is already observed and cannot trigger
2167
- // unhandledRejection. close() is synchronous, so all remaining cleanup runs before
2168
- // any microtask rejection handler fires.
2169
- //
2170
- // The error travels on, though, through await chains and .then() links that
2171
- // guardedPromise() knows nothing about. Read a crash stack ending here as "this is
2172
- // the value that escaped", never as "this is the promise that escaped".
2173
- let byeReason = this.byeReason;
2174
- for (let request of pendingRequests) {
2175
- request.reject(this.createNoConnectionError(byeReason, { rejectedFrom: 'pendingRequest', command: request.command }));
2176
- }
2177
- // Clear current lock - holder will see errors when they try operations.
2178
- // Also clear the held-lock diagnostic timer so it doesn't fire post-close.
2179
- if (this.currentLock && this.currentLock.heldWarnTimer) {
2180
- clearTimer(this.currentLock.heldWarnTimer);
2181
- this.currentLock.heldWarnTimer = null;
2182
- }
2183
- this.currentLock = false;
2184
- if (this.locks && this.locks.length) {
2185
- let pendingLocks = this.locks.splice(0); // Take all locks and clear the array
2186
- for (let lock of pendingLocks) {
2187
- if (lock.acquireTimer) {
2188
- clearTimer(lock.acquireTimer);
2189
- lock.acquireTimer = null;
2190
- }
2191
- if (typeof lock.reject === 'function') {
2192
- lock.reject(this.createNoConnectionError(byeReason, { rejectedFrom: 'mailboxLock', path: lock.path }));
2193
- }
2194
- }
2195
- }
2196
- // cleanup compression streams if they exist
2197
- if (this._inflate) {
2198
- try {
2199
- this._inflate.unpipe();
2200
- this._inflate.destroy();
2201
- this._inflate = null;
2202
- }
2203
- catch (err) {
2204
- this.log.error({ err, msg: 'Failed to destroy inflate stream', cid: this.id });
2205
- }
2206
- }
2207
- if (this._deflate) {
2208
- try {
2209
- this._deflate.unpipe();
2210
- this._deflate.destroy();
2211
- this._deflate = null;
2212
- }
2213
- catch (err) {
2214
- this.log.error({ err, msg: 'Failed to destroy deflate stream', cid: this.id });
2215
- }
2216
- }
2217
- // cleanup streamer
2218
- if (this.streamer) {
2219
- try {
2220
- // remove our listeners explicitly by reference
2221
- if (this.socketReadable) {
2222
- this.streamer.removeListener('readable', this.socketReadable);
2223
- }
2224
- if (this._streamerErrorHandler) {
2225
- this.streamer.removeListener('error', this._streamerErrorHandler);
2226
- }
2227
- if (!this.streamer.destroyed) {
2228
- this.streamer.destroy();
2229
- }
2230
- }
2231
- catch (err) {
2232
- this.log.error({ err, msg: 'Failed to cleanup streamer', cid: this.id });
2233
- }
2234
- }
2130
+ this.closeRequests();
2131
+ this.closeLocks();
2132
+ this.closeStreams();
2235
2133
  // clear socket handlers
2236
2134
  this.clearSocketHandlers();
2237
2135
  // clear cached data
@@ -2244,39 +2142,7 @@ export class ImapFlow extends EventEmitter {
2244
2142
  // Set before teardown so a socket event that re-enters close() during destruction
2245
2143
  // cannot run this block a second time.
2246
2144
  this.isClosed = true;
2247
- // Socket teardown, in one documented order. Each stream owns and reports its own
2248
- // lifecycle, so each is destroyed exactly once:
2249
- // 1. the compression PassThrough (writeSocket), if compression replaced it
2250
- // 2. the raw socket, which is also writeSocket when compression is not active
2251
- // The compression streams themselves were destroyed above.
2252
- if (this.writeSocket && this.writeSocket !== this.socket && !this.writeSocket.destroyed) {
2253
- try {
2254
- this.writeSocket.destroy();
2255
- }
2256
- catch (err) {
2257
- this.log.error({ err, cid: this.id });
2258
- }
2259
- }
2260
- if (this.socket && !this.socket.destroyed) {
2261
- try {
2262
- this.socket.destroy();
2263
- }
2264
- catch (err) {
2265
- this.log.error({ err, cid: this.id });
2266
- }
2267
- }
2268
- // Null out all socket and handler references so the GC can collect
2269
- // them even if the ImapFlow instance itself is still referenced.
2270
- this.socket = null;
2271
- this.writeSocket = null;
2272
- this._inflate = null;
2273
- this._deflate = null;
2274
- this._streamerErrorHandler = null;
2275
- this._connectErrorHandler = null;
2276
- this._socketError = null;
2277
- this._socketClose = null;
2278
- this._socketEnd = null;
2279
- this._socketTimeout = null;
2145
+ this.closeSockets();
2280
2146
  this.log.debug({
2281
2147
  msg: 'Connection closed',
2282
2148
  cid: this.id,
@@ -2286,7 +2152,7 @@ export class ImapFlow extends EventEmitter {
2286
2152
  // whether the session ended with a clean logout or a lost transport. Emitted before
2287
2153
  // 'close' and only from the first close(), so no consumer sees it twice.
2288
2154
  if (closedMailbox) {
2289
- this.emit('mailboxClose', closedMailbox);
2155
+ emitSafe(this, 'mailboxClose', closedMailbox);
2290
2156
  }
2291
2157
  this.emit('close');
2292
2158
  }
@@ -2295,6 +2161,215 @@ export class ImapFlow extends EventEmitter {
2295
2161
  this.log.error({ err: ex, cid: this.id });
2296
2162
  }
2297
2163
  }
2164
+ /**
2165
+ * Part of close(): clears the pending timers and aborts every throttle back-off.
2166
+ *
2167
+ * @internal
2168
+ */
2169
+ closeTimers() {
2170
+ // clear pending timers
2171
+ clearTimer(this.idleStartTimer);
2172
+ clearTimer(this.upgradeTimeout);
2173
+ clearTimer(this.connectTimeout);
2174
+ clearTimer(this.greetingTimeout);
2175
+ // Abort every in-flight throttle back-off so each waiter unblocks and its request is
2176
+ // settled promptly rather than after the full delay.
2177
+ for (let entry of this._throttleWaits) {
2178
+ clearTimer(entry.timer);
2179
+ entry.resolve(true);
2180
+ }
2181
+ this._throttleWaits.clear();
2182
+ }
2183
+ /**
2184
+ * Part of close(): settles an in-flight STARTTLS upgrade and a pending connect().
2185
+ *
2186
+ * @internal
2187
+ */
2188
+ closeConnectSteps() {
2189
+ // An in-flight STARTTLS upgrade has to be settled through its own single settlement
2190
+ // path, otherwise the upgrade promise (and the session it belongs to) stays pending
2191
+ // for the lifetime of the process.
2192
+ if (typeof this._upgradeReject === 'function') {
2193
+ let reject = this._upgradeReject;
2194
+ this._upgradeReject = null;
2195
+ reject(this.createNoConnectionError(false, { rejectedFrom: 'upgrade' }));
2196
+ }
2197
+ // A verifyOnly session closes itself with LOGOUT and startSession() settles connect()
2198
+ // with the outcome, so the close is not a failure there. Before the greeting nothing
2199
+ // else can settle it (BYE greeting, FIN, close() while the transport is still coming up).
2200
+ if (typeof this.initialReject === 'function' && (!this.options.verifyOnly || !this.greetingReceived)) {
2201
+ clearTimer(this.greetingTimeout);
2202
+ let reject = this.initialReject;
2203
+ this.initialResolve = false;
2204
+ this.initialReject = false;
2205
+ let err = new Error('Unexpected close');
2206
+ /* c8 ignore next */ // closing a pending connect over an already-secure socket (the TLS branch) is not separately exercised
2207
+ err.code = `ClosedAfterConnect${this.secureConnection ? 'TLS' : 'Text'}`;
2208
+ // Surface the server's BYE reason (e.g. "Too many connections") when the
2209
+ // connection was closed by an untagged BYE, so the caller sees why.
2210
+ if (this.byeReason) {
2211
+ err.reason = this.byeReason;
2212
+ }
2213
+ // Synchronous rejection is safe: connectPromise was built by guardedPromise(),
2214
+ // so the rejection is already observed. close() is synchronous, so all cleanup
2215
+ // completes before any microtask rejection handler runs.
2216
+ reject(err);
2217
+ }
2218
+ }
2219
+ /**
2220
+ * Part of close(): rejects the command in flight and every queued command.
2221
+ *
2222
+ * @internal
2223
+ */
2224
+ closeRequests() {
2225
+ // Collect all pending requests to reject
2226
+ let pendingRequests = [];
2227
+ // reject command that is currently processed
2228
+ if (this.currentRequest && this.requestTagMap.has(this.currentRequest.tag)) {
2229
+ let tag = this.currentRequest.tag;
2230
+ let request = this.requestTagMap.get(tag);
2231
+ if (request) {
2232
+ this.requestTagMap.delete(tag);
2233
+ pendingRequests.push(request);
2234
+ }
2235
+ this.currentRequest = false;
2236
+ }
2237
+ // reject all other pending commands
2238
+ while (this.requestQueue.length) {
2239
+ let req = this.requestQueue.shift();
2240
+ if (req && this.requestTagMap.has(req.tag)) {
2241
+ let request = this.requestTagMap.get(req.tag);
2242
+ if (request) {
2243
+ this.requestTagMap.delete(req.tag);
2244
+ pendingRequests.push(request);
2245
+ }
2246
+ }
2247
+ }
2248
+ // Reject pending requests and locks synchronously. Every promise rejected here was
2249
+ // built by guardedPromise(), so its rejection is already observed and cannot trigger
2250
+ // unhandledRejection. close() is synchronous, so all remaining cleanup runs before
2251
+ // any microtask rejection handler fires.
2252
+ //
2253
+ // The error travels on, though, through await chains and .then() links that
2254
+ // guardedPromise() knows nothing about. Read a crash stack ending here as "this is
2255
+ // the value that escaped", never as "this is the promise that escaped".
2256
+ for (let request of pendingRequests) {
2257
+ request.reject(this.createNoConnectionError(this.byeReason, { rejectedFrom: 'pendingRequest', command: request.command }));
2258
+ }
2259
+ }
2260
+ /**
2261
+ * Part of close(): drops the held lock and rejects every pending lock request.
2262
+ *
2263
+ * @internal
2264
+ */
2265
+ closeLocks() {
2266
+ // Clear current lock - holder will see errors when they try operations.
2267
+ // Also clear the held-lock diagnostic timer so it doesn't fire post-close.
2268
+ if (this.currentLock && this.currentLock.heldWarnTimer) {
2269
+ clearTimer(this.currentLock.heldWarnTimer);
2270
+ this.currentLock.heldWarnTimer = null;
2271
+ }
2272
+ this.currentLock = false;
2273
+ if (this.locks && this.locks.length) {
2274
+ let pendingLocks = this.locks.splice(0); // Take all locks and clear the array
2275
+ for (let lock of pendingLocks) {
2276
+ if (lock.acquireTimer) {
2277
+ clearTimer(lock.acquireTimer);
2278
+ lock.acquireTimer = null;
2279
+ }
2280
+ if (typeof lock.reject === 'function') {
2281
+ lock.reject(this.createNoConnectionError(this.byeReason, { rejectedFrom: 'mailboxLock', path: lock.path }));
2282
+ }
2283
+ }
2284
+ }
2285
+ }
2286
+ /**
2287
+ * Part of close(): destroys the compression streams and the response streamer.
2288
+ *
2289
+ * @internal
2290
+ */
2291
+ closeStreams() {
2292
+ // cleanup compression streams if they exist
2293
+ if (this._inflate) {
2294
+ try {
2295
+ this._inflate.unpipe();
2296
+ this._inflate.destroy();
2297
+ this._inflate = null;
2298
+ }
2299
+ catch (err) {
2300
+ this.log.error({ err, msg: 'Failed to destroy inflate stream', cid: this.id });
2301
+ }
2302
+ }
2303
+ if (this._deflate) {
2304
+ try {
2305
+ this._deflate.unpipe();
2306
+ this._deflate.destroy();
2307
+ this._deflate = null;
2308
+ }
2309
+ catch (err) {
2310
+ this.log.error({ err, msg: 'Failed to destroy deflate stream', cid: this.id });
2311
+ }
2312
+ }
2313
+ // cleanup streamer
2314
+ if (this.streamer) {
2315
+ try {
2316
+ // remove our listeners explicitly by reference
2317
+ if (this.socketReadable) {
2318
+ this.streamer.removeListener('readable', this.socketReadable);
2319
+ }
2320
+ if (this._streamerErrorHandler) {
2321
+ this.streamer.removeListener('error', this._streamerErrorHandler);
2322
+ }
2323
+ if (!this.streamer.destroyed) {
2324
+ this.streamer.destroy();
2325
+ }
2326
+ }
2327
+ catch (err) {
2328
+ this.log.error({ err, msg: 'Failed to cleanup streamer', cid: this.id });
2329
+ }
2330
+ }
2331
+ }
2332
+ /**
2333
+ * Part of close(): destroys the sockets once and drops every socket and handler reference.
2334
+ *
2335
+ * @internal
2336
+ */
2337
+ closeSockets() {
2338
+ // Socket teardown, in one documented order. Each stream owns and reports its own
2339
+ // lifecycle, so each is destroyed exactly once:
2340
+ // 1. the compression PassThrough (writeSocket), if compression replaced it
2341
+ // 2. the raw socket, which is also writeSocket when compression is not active
2342
+ // The compression streams themselves were destroyed in closeStreams().
2343
+ if (this.writeSocket && this.writeSocket !== this.socket && !this.writeSocket.destroyed) {
2344
+ try {
2345
+ this.writeSocket.destroy();
2346
+ }
2347
+ catch (err) {
2348
+ this.log.error({ err, cid: this.id });
2349
+ }
2350
+ }
2351
+ if (this.socket && !this.socket.destroyed) {
2352
+ try {
2353
+ this.socket.destroy();
2354
+ }
2355
+ catch (err) {
2356
+ this.log.error({ err, cid: this.id });
2357
+ }
2358
+ }
2359
+ // Null out all socket and handler references so the GC can collect
2360
+ // them even if the ImapFlow instance itself is still referenced.
2361
+ this.socket = null;
2362
+ this.writeSocket = null;
2363
+ // closeStreams() leaves these set when destroying them failed
2364
+ this._inflate = null;
2365
+ this._deflate = null;
2366
+ this._streamerErrorHandler = null;
2367
+ this._connectErrorHandler = null;
2368
+ this._socketError = null;
2369
+ this._socketClose = null;
2370
+ this._socketEnd = null;
2371
+ this._socketTimeout = null;
2372
+ }
2298
2373
  /**
2299
2374
  * Returns current quota
2300
2375
  *
@@ -2433,7 +2508,26 @@ export class ImapFlow extends EventEmitter {
2433
2508
  * // 125
2434
2509
  */
2435
2510
  async mailboxOpen(path, options) {
2436
- return await this.run('SELECT', path, options);
2511
+ try {
2512
+ return await this.run('SELECT', path, options);
2513
+ }
2514
+ catch (err) {
2515
+ if (err.responseStatus === 'NO') {
2516
+ // SELECT failed with NO: verify whether the mailbox exists at all by running
2517
+ // LIST. This sets mailboxMissing on the error so the caller can distinguish
2518
+ // "doesn't exist" from other failures, for getMailboxLock() callers as well.
2519
+ try {
2520
+ let folders = await this.run('LIST', '', normalizePath(this, path), { listOnly: true });
2521
+ if (!folders || !folders.length) {
2522
+ err.mailboxMissing = true;
2523
+ }
2524
+ }
2525
+ catch (E) {
2526
+ this.log.trace({ msg: 'Failed to verify failed mailbox', path, err: E });
2527
+ }
2528
+ }
2529
+ throw err;
2530
+ }
2437
2531
  }
2438
2532
  /**
2439
2533
  * Closes a previously opened mailbox
@@ -2452,7 +2546,7 @@ export class ImapFlow extends EventEmitter {
2452
2546
  *
2453
2547
  * @param path mailbox path to check for (unicode string). If value is an array then it is joined using current delimiter symbols. Namespace prefix is added automatically if required.
2454
2548
  * @param query defines requested status items
2455
- * @returns status of the indicated mailbox
2549
+ * @returns status of the indicated mailbox, or `false` if the server rejected the request
2456
2550
  *
2457
2551
  * @example
2458
2552
  * let status = await client.status('INBOX', {unseen: true});
@@ -2467,7 +2561,7 @@ export class ImapFlow extends EventEmitter {
2467
2561
  * otherwise IDLE is started by default on connection inactivity. NB! If `idle()` is called manually then it does not
2468
2562
  * return until IDLE is finished which means you would have to call some other command out of scope.
2469
2563
  *
2470
- * @returns Did the operation succeed or not
2564
+ * @returns `false` if IDLE failed, `undefined` otherwise
2471
2565
  *
2472
2566
  * @example
2473
2567
  * let mailbox = await client.mailboxOpen('INBOX');
@@ -2906,433 +3000,13 @@ export class ImapFlow extends EventEmitter {
2906
3000
  * @example
2907
3001
  * let mailbox = await client.mailboxOpen('INBOX');
2908
3002
  * // download body part nr '1.2' from latest message
2909
- * let {meta, content} = await client.download('*', '1.2');
2910
- * content.pipe(fs.createWriteStream(meta.filename));
3003
+ * let download = await client.download('*', '1.2');
3004
+ * if (download.content) {
3005
+ * download.content.pipe(fs.createWriteStream(download.meta.filename));
3006
+ * }
2911
3007
  */
2912
3008
  async download(range, part, options) {
2913
- if (!this.mailbox) {
2914
- // no mailbox selected, nothing to do
2915
- return {};
2916
- }
2917
- let downloadOptions = Object.assign({
2918
- chunkSize: 64 * 1024,
2919
- maxBytes: Infinity
2920
- }, options || {});
2921
- let hasMore = true;
2922
- let processed = 0;
2923
- let chunkSize = Number(downloadOptions.chunkSize) || 64 * 1024;
2924
- // Normalized once here so every bounded stage of the pipeline below agrees on the budget
2925
- let maxBytes = normalizeByteLimit(downloadOptions.maxBytes);
2926
- let uid = false;
2927
- if (part === '1') {
2928
- // Special handling for part "1": in single-node emails (no childNodes),
2929
- // the body is accessed via "TEXT" rather than "1", and headers via
2930
- // "HEADER" instead of "1.MIME". Check bodyStructure to detect this.
2931
- let response = await this.fetchOne(range, { uid: true, bodyStructure: true }, downloadOptions);
2932
- if (!response) {
2933
- return { response: false, chunk: false };
2934
- }
2935
- if (!uid && response.uid) {
2936
- uid = response.uid;
2937
- // force UID from now on even if first range was a sequence number
2938
- range = uid;
2939
- downloadOptions.uid = true;
2940
- }
2941
- if (!response.bodyStructure.childNodes) {
2942
- // single text message
2943
- part = 'TEXT';
2944
- }
2945
- }
2946
- let getNextPart = async (query) => {
2947
- query = query || {};
2948
- let mimeKey;
2949
- if (!part) {
2950
- query.source = {
2951
- start: processed,
2952
- maxLength: chunkSize
2953
- };
2954
- }
2955
- else {
2956
- part = part.toString().toLowerCase().trim();
2957
- if (!query.bodyParts) {
2958
- query.bodyParts = [];
2959
- }
2960
- if (query.size) {
2961
- if (/^[\d.]+$/.test(part)) {
2962
- // fetch meta as well
2963
- mimeKey = part + '.mime';
2964
- query.bodyParts.push(mimeKey);
2965
- }
2966
- else if (part === 'text') {
2967
- mimeKey = 'header';
2968
- query.bodyParts.push(mimeKey);
2969
- }
2970
- }
2971
- query.bodyParts.push({
2972
- key: part,
2973
- start: processed,
2974
- maxLength: chunkSize
2975
- });
2976
- }
2977
- let response = await this.fetchOne(range, query, downloadOptions);
2978
- if (!response) {
2979
- return { response: false, chunk: false };
2980
- }
2981
- if (!uid && response.uid) {
2982
- uid = response.uid;
2983
- // force UID from now on even if first range was a sequence number
2984
- range = uid;
2985
- downloadOptions.uid = true;
2986
- }
2987
- let chunk = !part ? response.source : response.bodyParts && response.bodyParts.get(part);
2988
- if (!chunk) {
2989
- return {};
2990
- }
2991
- processed += chunk.length;
2992
- // A compliant server returns at most `chunkSize` bytes for a partial
2993
- // request. Some servers (Tencent Exmail among them) ignore the partial
2994
- // spec and answer every request with the complete part. That chunk is
2995
- // then larger than requested, so treating it as "full, keep going"
2996
- // would advance the offset past the end forever and never see a short
2997
- // chunk. An oversized answer already contains the whole part - stop.
2998
- hasMore = chunk.length === chunkSize;
2999
- if (chunk.length > chunkSize) {
3000
- this.log.warn({
3001
- msg: 'Server returned more than the requested window, treating the part as complete',
3002
- chunkSize,
3003
- received: chunk.length,
3004
- processed,
3005
- cid: this.id
3006
- });
3007
- }
3008
- let result = { chunk };
3009
- if (query.size) {
3010
- result.response = response;
3011
- }
3012
- if (query.bodyParts) {
3013
- if (mimeKey === 'header') {
3014
- result.mime = response.headers;
3015
- }
3016
- else {
3017
- result.mime = response.bodyParts && mimeKey ? response.bodyParts.get(mimeKey) : undefined;
3018
- }
3019
- }
3020
- return result;
3021
- };
3022
- let { response, chunk, mime } = await getNextPart({
3023
- size: true,
3024
- uid: true
3025
- });
3026
- if (!response || !chunk) {
3027
- // ???
3028
- return {};
3029
- }
3030
- let meta = {
3031
- expectedSize: response.size
3032
- };
3033
- if (!part) {
3034
- meta.contentType = 'message/rfc822';
3035
- }
3036
- else if (mime) {
3037
- let headers = new Headers(mime);
3038
- let contentType = libmime.parseHeaderValue(headers.getFirst('Content-Type'));
3039
- let transferEncoding = libmime.parseHeaderValue(headers.getFirst('Content-Transfer-Encoding'));
3040
- let disposition = libmime.parseHeaderValue(headers.getFirst('Content-Disposition'));
3041
- if (contentType.value.toLowerCase().trim()) {
3042
- meta.contentType = contentType.value.toLowerCase().trim();
3043
- }
3044
- if (contentType.params.charset) {
3045
- meta.charset = contentType.params.charset.toLowerCase().trim();
3046
- }
3047
- if (transferEncoding.value) {
3048
- meta.encoding = transferEncoding.value
3049
- .replace(/\(.*\)/g, '')
3050
- .toLowerCase()
3051
- .trim();
3052
- }
3053
- if (disposition.value) {
3054
- /* c8 ignore next */ // a parsed disposition value is never all-whitespace, so the `false` fallback is unreachable
3055
- meta.disposition = disposition.value.toLowerCase().trim() || false;
3056
- try {
3057
- meta.disposition = libmime.decodeWords(meta.disposition);
3058
- }
3059
- catch {
3060
- // failed to parse disposition, keep as is (most probably an unknown charset is used)
3061
- }
3062
- }
3063
- if (contentType.params.format && contentType.params.format.toLowerCase().trim() === 'flowed') {
3064
- meta.flowed = true;
3065
- if (contentType.params.delsp && contentType.params.delsp.toLowerCase().trim() === 'yes') {
3066
- meta.delSp = true;
3067
- }
3068
- }
3069
- let filename = disposition.params.filename || contentType.params.name || false;
3070
- if (filename) {
3071
- try {
3072
- filename = libmime.decodeWords(filename);
3073
- }
3074
- catch {
3075
- // failed to parse filename, keep as is (most probably an unknown charset is used)
3076
- }
3077
- meta.filename = filename;
3078
- }
3079
- }
3080
- let stream;
3081
- let output;
3082
- let fetchAborted = false;
3083
- // Build a decoder pipeline that progressively transforms the raw FETCH data:
3084
- // 1. Transfer-encoding decoder (base64 or quoted-printable -> binary)
3085
- // 2. Format decoder (format=flowed -> plain text, if applicable)
3086
- // 3. Charset decoder (non-UTF-8 -> UTF-8, for text parts only)
3087
- // 4. Byte limiter (enforces maxBytes cap)
3088
- // `stream` is the head of the pipeline (where raw chunks are written),
3089
- // `output` is the tail (what the caller reads from).
3090
- // Parts that arrived via FETCH BINARY (response.binaryParts) are already
3091
- // decoded by the server - decoding again would corrupt the data, so stage 1
3092
- // is skipped for them.
3093
- let clientEncoding = response.binaryParts && part && response.binaryParts.has(part) ? false : meta.encoding;
3094
- switch (clientEncoding) {
3095
- case 'base64':
3096
- output = stream = new libbase64.Decoder();
3097
- break;
3098
- case 'quoted-printable':
3099
- output = stream = new libqp.Decoder();
3100
- break;
3101
- default:
3102
- output = stream = new PassThrough();
3103
- }
3104
- // Every byte-bounded stage of the pipeline. The fetch loop below stops as soon as any of
3105
- // them has taken all it will accept. The limiter at the tail is not enough on its own: a
3106
- // transform in the middle that buffers its whole input before emitting anything (the
3107
- // format=flowed decoder, the Japanese charset decoder) leaves the tail limiter reporting
3108
- // `limited === false` however much the server sends, so a download with a small maxBytes
3109
- // would still pull the entire part off the wire.
3110
- let limiters = [];
3111
- let isLimited = () => limiters.some(entry => entry.limited);
3112
- // Appending a stage means forwarding the current tail's errors to it before piping, so a
3113
- // failure anywhere reaches the stream the caller is reading
3114
- let pipeStage = (stage) => {
3115
- output.on('error', err => {
3116
- stage.emit('error', err);
3117
- });
3118
- output = output.pipe(stage);
3119
- return stage;
3120
- };
3121
- let isTextNode = ['text/html', 'text/plain', 'text/x-amp-html'].includes(meta.contentType) || (part === '1' && !meta.contentType);
3122
- if ((!meta.disposition || meta.disposition === 'inline') && isTextNode) {
3123
- // RFC 3676 format=flowed text: unwrap soft line breaks
3124
- if (meta.flowed) {
3125
- // FlowedDecoder buffers its whole input before emitting, and being third party it
3126
- // carries no bound of its own, so bound what it can ever be handed. Unwrapping only
3127
- // removes bytes, so capping its input at maxBytes cannot push the delivered output
3128
- // above the cap either.
3129
- limiters.push(pipeStage(new LimitedPassthrough({ maxBytes })));
3130
- pipeStage(new FlowedDecoder(meta.delSp ? { delSp: true } : {}));
3131
- }
3132
- // Convert non-UTF-8 charsets to UTF-8 via a streaming decoder.
3133
- // ASCII and UTF-8 need no conversion. Unknown charsets are left as-is.
3134
- if (meta.charset && !['ascii', 'usascii', 'utf8'].includes(meta.charset.toLowerCase().replace(/[^a-z0-9]+/g, ''))) {
3135
- try {
3136
- let decoder = getDecoder(meta.charset, maxBytes);
3137
- // Safety listener attached first so the decoder always has at least
3138
- // one 'error' listener. Prevents Node.js from throwing
3139
- // ERR_UNHANDLED_ERROR if a later pipe setup step throws and leaves
3140
- // the source-forwarding closure attached without a downstream
3141
- // listener wired up. Any real listener the caller attaches still
3142
- // fires in addition to this one.
3143
- decoder.on('error', err => {
3144
- this.log.warn({ err, charset: meta.charset, cid: this.id });
3145
- });
3146
- // The Japanese decoder buffers its whole input as well, and reports the same
3147
- // `limited` flag the limiters do so the fetch loop can stop once it is full.
3148
- // A streaming decoder has no such flag, which reads as false and is correct.
3149
- limiters.push(pipeStage(decoder));
3150
- // force to utf-8 for output
3151
- meta.charset = 'utf-8';
3152
- }
3153
- catch {
3154
- // do not decode charset
3155
- }
3156
- }
3157
- }
3158
- let limiter = pipeStage(new LimitedPassthrough({ maxBytes }));
3159
- limiters.push(limiter);
3160
- // Cleanup function
3161
- const cleanup = () => {
3162
- fetchAborted = true;
3163
- if (stream && !stream.destroyed) {
3164
- stream.destroy();
3165
- }
3166
- };
3167
- // Listen for stream destruction
3168
- output.once('error', cleanup);
3169
- output.once('close', cleanup);
3170
- let writeChunk = (chunk) => {
3171
- if (isLimited() || fetchAborted || stream.destroyed) {
3172
- return true;
3173
- }
3174
- return stream.write(chunk);
3175
- };
3176
- // Ceiling on how many bytes one download may pull off the wire, as the backstop for the
3177
- // partial-ignoring servers above: a part whose size happens to equal chunkSize exactly
3178
- // comes back looking like a full window every time, so no test over chunk lengths can end
3179
- // that loop. RFC822.SIZE bounds any part of the message; doubled for servers that count
3180
- // line endings differently than they deliver, plus one window so a download sitting right
3181
- // at the bound still gets its terminating chunk. Infinity when the server reported no
3182
- // size, which leaves the loop bounded by maxBytes alone.
3183
- let maxTotalBytes = normalizeByteLimit(meta.expectedSize ? meta.expectedSize * 2 + chunkSize : 0);
3184
- // Fetch remaining chunks in a loop, writing each to the decoder stream.
3185
- // Stops when the server returns a short chunk (< chunkSize), answers with more than the
3186
- // requested window, the byte limiter is satisfied, or the consumer destroys the output
3187
- // stream. Throws when the ceiling above is crossed.
3188
- let fetchAllParts = async () => {
3189
- while (hasMore && !isLimited() && !fetchAborted) {
3190
- if (processed >= maxTotalBytes) {
3191
- // Loud on purpose. Everything written downstream by this point holds
3192
- // duplicated content, and a quiet stop is indistinguishable from a clean EOF,
3193
- // so the consumer would store a corrupt body believing it intact.
3194
- let err = new Error('Download exceeded the expected message size');
3195
- err.code = 'DownloadOverflow';
3196
- err.maxSize = maxTotalBytes;
3197
- err.cid = this.id;
3198
- throw err;
3199
- }
3200
- let { chunk } = await getNextPart();
3201
- if (!chunk || fetchAborted) {
3202
- break;
3203
- }
3204
- // Handle backpressure
3205
- if (writeChunk(chunk) === false) {
3206
- // Wait for drain event before continuing
3207
- try {
3208
- await new Promise((resolve, reject) => {
3209
- // finish() is the listener itself, as settle() is for the TLS upgrade:
3210
- // 'drain' and 'close' emit no arguments, 'error' emits the error, and
3211
- // removal needs no separate handler references. It removes only the
3212
- // three listeners this wait installed - removeAllListeners('error')
3213
- // also took off the forwarder pipeStage() attached to the head stream
3214
- // when the pipeline was built, and the head must keep that forwarder
3215
- // for the life of the download or a chunk failure has nowhere to go.
3216
- const finish = (err) => {
3217
- for (let event of ['drain', 'error', 'close']) {
3218
- stream.removeListener(event, finish);
3219
- }
3220
- /* c8 ignore next 2 */ // stream error during a backpressure drain wait is timing-dependent
3221
- if (err) {
3222
- reject(err);
3223
- }
3224
- else {
3225
- resolve();
3226
- }
3227
- };
3228
- stream.once('drain', finish);
3229
- stream.once('error', finish);
3230
- stream.once('close', finish);
3231
- });
3232
- /* c8 ignore start */ // re-throw path only triggers on a stream error mid-drain, which is timing-dependent
3233
- }
3234
- catch (err) {
3235
- // Re-throw only if not aborted
3236
- if (!fetchAborted) {
3237
- throw err;
3238
- }
3239
- }
3240
- /* c8 ignore stop */
3241
- // Check if we should abort after waiting
3242
- if (fetchAborted) {
3243
- break;
3244
- }
3245
- }
3246
- }
3247
- };
3248
- // A download is a sequence of chunk FETCHes with a backpressure wait in between. Those
3249
- // gaps look exactly like an inactive connection, so without this auto-IDLE would start
3250
- // between chunks and the next chunk would have to break it again - two extra round
3251
- // trips per chunk, for as long as the consumer is slow. Counted before control returns
3252
- // to the event loop: the head chunk's own FETCH already armed the auto-IDLE timer, and
3253
- // with a very short autoIdleDelay that timer could otherwise fire before the deferred
3254
- // chunk loop below has marked the download open.
3255
- this._openDownloads++;
3256
- let downloadDone = false;
3257
- let finishDownload = () => {
3258
- if (!downloadDone) {
3259
- downloadDone = true;
3260
- this._openDownloads--;
3261
- this.autoidle();
3262
- }
3263
- };
3264
- // Kick off the download pipeline asynchronously. The first chunk was
3265
- // already fetched above (to get metadata); write it to the decoder
3266
- // stream and then fetch remaining chunks via fetchAllParts().
3267
- // setImmediate ensures the caller gets the {meta, content} return
3268
- // value before streaming begins.
3269
- let runFetchAllParts = () => {
3270
- fetchAllParts()
3271
- .catch(err => {
3272
- if (!fetchAborted && stream && !stream.destroyed) {
3273
- stream.emit('error', err);
3274
- /* c8 ignore start */ // the else logs when a fetch error arrives after the stream was already torn down (timing-dependent)
3275
- }
3276
- else {
3277
- // Log when error cannot be emitted to stream
3278
- this.log.warn({
3279
- msg: 'Download error after stream closed',
3280
- err,
3281
- fetchAborted,
3282
- streamDestroyed: stream?.destroyed,
3283
- cid: this.id
3284
- });
3285
- }
3286
- /* c8 ignore stop */
3287
- })
3288
- .finally(() => {
3289
- finishDownload();
3290
- if (!fetchAborted && stream && !stream.destroyed) {
3291
- stream.end();
3292
- }
3293
- })
3294
- // Terminal guard: nothing consumes this chain, so a throw from either handler
3295
- // above rejects a promise nobody holds and takes the process down on
3296
- // unhandledRejection. Reaching it always means an invariant broke - the head
3297
- // stream kept pipeStage()'s error forwarder for the life of the download, so
3298
- // emit('error') above has somewhere to go - which is why it logs at error even
3299
- // for a routine-looking connection code.
3300
- .catch(err => this.log.error({ msg: 'Failed to fail the download stream', err, cid: this.id }));
3301
- };
3302
- setImmediate(() => {
3303
- let writeResult;
3304
- try {
3305
- writeResult = writeChunk(chunk);
3306
- }
3307
- catch (err) {
3308
- stream.emit('error', err);
3309
- finishDownload();
3310
- /* c8 ignore next 3 */ // emitting the error above triggers cleanup (fetchAborted=true), so this end() guard is already false here
3311
- if (!fetchAborted && stream && !stream.destroyed) {
3312
- stream.end();
3313
- }
3314
- return;
3315
- }
3316
- /* c8 ignore next 9 */ // `stream` is piped to the limiter before this runs, so the head write drains synchronously and always returns true (verified for chunkSize up to 8MB); the drain-wait branch is unreachable
3317
- if (!writeResult) {
3318
- // Initial chunk filled the buffer, wait for drain
3319
- stream.once('drain', () => {
3320
- if (!fetchAborted) {
3321
- runFetchAllParts();
3322
- }
3323
- else {
3324
- finishDownload();
3325
- }
3326
- });
3327
- }
3328
- else {
3329
- runFetchAllParts();
3330
- }
3331
- });
3332
- return {
3333
- meta,
3334
- content: output
3335
- };
3009
+ return await downloadMessage(this, range, part, options);
3336
3010
  }
3337
3011
  /**
3338
3012
  * Fetch multiple attachments as Buffer values
@@ -3350,119 +3024,7 @@ export class ImapFlow extends EventEmitter {
3350
3024
  * process.stdout.write(response[3].content)
3351
3025
  */
3352
3026
  async downloadMany(range, parts, options) {
3353
- if (!this.mailbox) {
3354
- // no mailbox selected, nothing to do
3355
- return {};
3356
- }
3357
- let downloadOptions = Object.assign({
3358
- chunkSize: 64 * 1024,
3359
- maxBytes: Infinity
3360
- }, options || {});
3361
- let query = { bodyParts: [] };
3362
- for (let part of parts) {
3363
- query.bodyParts.push(part + '.mime');
3364
- query.bodyParts.push(part);
3365
- }
3366
- let response = await this.fetchOne(range, query, downloadOptions);
3367
- if (!response || !response.bodyParts) {
3368
- return { response: false };
3369
- }
3370
- let data = {};
3371
- for (let [part, content] of response.bodyParts) {
3372
- let keyParts = part.split('.mime');
3373
- // The server chooses the BODY[...] keys it answers with: never let one be a
3374
- // prototype-chain name, or the assignments below write onto Object.prototype
3375
- // (process-wide pollution) instead of the result object.
3376
- if (isUnsafeKey(keyParts[0])) {
3377
- continue;
3378
- }
3379
- if (keyParts.length === 1) {
3380
- // content
3381
- let key = keyParts[0];
3382
- if (!data[key]) {
3383
- data[key] = { content };
3384
- }
3385
- else {
3386
- data[key].content = content;
3387
- }
3388
- }
3389
- else if (keyParts.length === 2) {
3390
- // header
3391
- let key = keyParts[0];
3392
- if (!data[key]) {
3393
- data[key] = {};
3394
- }
3395
- let entry = data[key];
3396
- if (!entry.meta) {
3397
- entry.meta = {};
3398
- }
3399
- let meta = entry.meta;
3400
- let headers = new Headers(content);
3401
- let contentType = libmime.parseHeaderValue(headers.getFirst('Content-Type'));
3402
- let transferEncoding = libmime.parseHeaderValue(headers.getFirst('Content-Transfer-Encoding'));
3403
- let disposition = libmime.parseHeaderValue(headers.getFirst('Content-Disposition'));
3404
- if (contentType.value.toLowerCase().trim()) {
3405
- meta.contentType = contentType.value.toLowerCase().trim();
3406
- }
3407
- if (contentType.params.charset) {
3408
- meta.charset = contentType.params.charset.toLowerCase().trim();
3409
- }
3410
- if (transferEncoding.value) {
3411
- meta.encoding = transferEncoding.value
3412
- .replace(/\(.*\)/g, '')
3413
- .toLowerCase()
3414
- .trim();
3415
- }
3416
- if (disposition.value) {
3417
- /* c8 ignore next */ // a parsed disposition value is never all-whitespace, so the `false` fallback is unreachable
3418
- meta.disposition = disposition.value.toLowerCase().trim() || false;
3419
- try {
3420
- meta.disposition = libmime.decodeWords(meta.disposition);
3421
- }
3422
- catch {
3423
- // failed to parse disposition, keep as is (most probably an unknown charset is used)
3424
- }
3425
- }
3426
- if (contentType.params.format && contentType.params.format.toLowerCase().trim() === 'flowed') {
3427
- meta.flowed = true;
3428
- if (contentType.params.delsp && contentType.params.delsp.toLowerCase().trim() === 'yes') {
3429
- meta.delSp = true;
3430
- }
3431
- }
3432
- let filename = disposition.params.filename || contentType.params.name || false;
3433
- if (filename) {
3434
- try {
3435
- filename = libmime.decodeWords(filename);
3436
- }
3437
- catch {
3438
- // failed to parse filename, keep as is (most probably an unknown charset is used)
3439
- }
3440
- meta.filename = filename;
3441
- }
3442
- }
3443
- }
3444
- for (let part of Object.keys(data)) {
3445
- let entry = data[part];
3446
- // `meta` is only built from the companion BODY[<part>.MIME] item. A server may
3447
- // legally answer with fewer items than were requested, and one part arriving
3448
- // without its MIME headers must not cost the caller the whole download.
3449
- let meta = entry.meta || {};
3450
- entry.meta = meta;
3451
- // parts that arrived via FETCH BINARY (response.binaryParts) are already
3452
- // decoded by the server - decoding again would corrupt the data
3453
- let clientEncoding = response.binaryParts && response.binaryParts.has(part) ? false : meta.encoding;
3454
- switch (clientEncoding) {
3455
- case 'base64':
3456
- entry.content = entry.content ? libbase64.decode(entry.content.toString()) : null;
3457
- break;
3458
- case 'quoted-printable':
3459
- entry.content = entry.content ? libqp.decode(entry.content.toString()) : null;
3460
- break;
3461
- default:
3462
- // keep as is, already a buffer
3463
- }
3464
- }
3465
- return data;
3027
+ return await downloadMessageParts(this, range, parts, options);
3466
3028
  }
3467
3029
  /** @internal */
3468
3030
  async run(command, ...args) {
@@ -3667,20 +3229,7 @@ export class ImapFlow extends EventEmitter {
3667
3229
  break; // Wait for this lock to be released
3668
3230
  }
3669
3231
  catch (err) {
3670
- if (err.responseStatus === 'NO') {
3671
- // SELECT failed with NO: verify whether the mailbox exists
3672
- // at all by running LIST. This sets mailboxMissing on the error
3673
- // so the caller can distinguish "doesn't exist" from other failures.
3674
- try {
3675
- let folders = await this.run('LIST', '', path, { listOnly: true });
3676
- if (!folders || !folders.length) {
3677
- err.mailboxMissing = true;
3678
- }
3679
- }
3680
- catch (E) {
3681
- this.log.trace({ msg: 'Failed to verify failed mailbox', path, err: E });
3682
- }
3683
- }
3232
+ // mailboxOpen() has already marked a missing mailbox (mailboxMissing)
3684
3233
  this.log.trace({
3685
3234
  msg: 'Failed to acquire mailbox lock',
3686
3235
  path,
@@ -3771,12 +3320,14 @@ export class ImapFlow extends EventEmitter {
3771
3320
  }
3772
3321
  /** @internal */
3773
3322
  getLogger() {
3774
- let mainLogger = this.options.logger && typeof this.options.logger === 'object'
3775
- ? this.options.logger
3776
- : logger.child({
3777
- component: 'imap-connection',
3778
- cid: this.id
3779
- });
3323
+ let mainLogger = {};
3324
+ if (this.options.logger && typeof this.options.logger === 'object') {
3325
+ mainLogger = this.options.logger;
3326
+ }
3327
+ else if (this.options.logger !== false) {
3328
+ // {logger:false} never consults mainLogger, so it does not create the default logger
3329
+ mainLogger = createConnectionLogger({ cid: this.id, logRaw: this.options.logRaw });
3330
+ }
3780
3331
  let synteticLogger = {};
3781
3332
  let levels = ['trace', 'debug', 'info', 'warn', 'error', 'fatal'];
3782
3333
  for (let level of levels) {
@@ -3832,7 +3383,8 @@ export class ImapFlow extends EventEmitter {
3832
3383
  }
3833
3384
  /**
3834
3385
  * Detaches sockets from the IMAP pipeline. Useful for upgrading the connection
3835
- * (e.g., STARTTLS) or transferring socket ownership.
3386
+ * (e.g., STARTTLS) or transferring socket ownership. Call it while the connection is not
3387
+ * idling: an IDLE in progress is not broken first, so the server still expects `DONE`.
3836
3388
  *
3837
3389
  * @returns Socket objects: `readSocket` is the read socket (inflated socket if compression is enabled, raw socket otherwise),
3838
3390
  * `writeSocket` the write socket and `socket` the raw underlying socket (same as readSocket/writeSocket when compression is disabled)
@@ -3847,6 +3399,11 @@ export class ImapFlow extends EventEmitter {
3847
3399
  // compression is active, the PassThrough writeSocket - so the connection
3848
3400
  // is fully released to the caller.
3849
3401
  this.clearSocketHandlers();
3402
+ // The socket now belongs to the caller. Marking the client unusable keeps
3403
+ // auto-IDLE (armed now, or re-armed by a lock release or a finished download)
3404
+ // and a later dispose from writing IDLE or LOGOUT onto it.
3405
+ this.usable = false;
3406
+ clearTimer(this.idleStartTimer);
3850
3407
  const readSocket = this._inflate || socket;
3851
3408
  const writeSocket = this.writeSocket || socket;
3852
3409
  // Defense-in-depth: when compression is active the raw socket is orphaned
@@ -3944,6 +3501,23 @@ export class ImapFlow extends EventEmitter {
3944
3501
  * console.log(`${entry.cid} ${entry.msg}`);
3945
3502
  * });
3946
3503
  */
3504
+ // Installed outside the class body: a computed `[Symbol.asyncDispose]` key would turn into a
3505
+ // method named "undefined" on Node.js 20.0-20.3, which predate the symbol
3506
+ if (typeof Symbol.asyncDispose === 'symbol') {
3507
+ ImapFlow.prototype[Symbol.asyncDispose] = async function () {
3508
+ if (this.usable) {
3509
+ try {
3510
+ await this.logout();
3511
+ }
3512
+ catch (err) {
3513
+ logConnectionError(this, 'LOGOUT failed while disposing', err);
3514
+ }
3515
+ }
3516
+ // logout() already closes the connection; close() is idempotent and covers a client
3517
+ // that never connected or whose logout was skipped
3518
+ this.close();
3519
+ };
3520
+ }
3947
3521
  // Both `import { ImapFlow } from 'imapflow'` and `import imapflow from 'imapflow'` work, the
3948
3522
  // latter matching the shape `require('imapflow')` has always had
3949
3523
  const imapflow = { ImapFlow, AuthenticationFailure };