@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
@@ -39,30 +39,26 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
39
39
  return (mod && mod.__esModule) ? mod : { "default": mod };
40
40
  };
41
41
  Object.defineProperty(exports, "__esModule", { value: true });
42
- exports.ImapFlow = exports.AuthenticationFailure = void 0;
42
+ exports.ImapFlow = exports.ImapFlowErrorCode = exports.AuthenticationFailure = void 0;
43
43
  const node_tls_1 = __importDefault(require("node:tls"));
44
44
  const node_net_1 = __importDefault(require("node:net"));
45
45
  const node_crypto_1 = __importDefault(require("node:crypto"));
46
46
  const node_zlib_1 = __importDefault(require("node:zlib"));
47
47
  const node_events_1 = require("node:events");
48
48
  const node_stream_1 = require("node:stream");
49
- const libmime_1 = __importDefault(require("libmime"));
50
- const libqp_1 = __importDefault(require("libqp"));
51
- const libbase64_1 = __importDefault(require("libbase64"));
52
- const mailsplit_1 = require("@zone-eu/mailsplit");
53
- const flowed_decoder_js_1 = __importDefault(require("@zone-eu/mailsplit/lib/flowed-decoder.js"));
54
- const logger_js_1 = __importDefault(require("./logger.js"));
49
+ const logger_js_1 = require("./logger.js");
55
50
  const packageInfo = __importStar(require("./package-info.js"));
56
- const limited_passthrough_js_1 = require("./limited-passthrough.js");
57
51
  const imap_stream_js_1 = require("./handler/imap-stream.js");
58
52
  const imap_handler_js_1 = require("./handler/imap-handler.js");
59
53
  const proxy_connection_js_1 = require("./proxy-connection.js");
60
54
  const connection_deadline_js_1 = require("./connection-deadline.js");
55
+ const download_js_1 = require("./download.js");
61
56
  const errors_js_1 = require("./errors.js");
62
57
  const imap_commands_js_1 = __importDefault(require("./imap-commands.js"));
63
58
  const tools_js_1 = require("./tools.js");
64
59
  var errors_js_2 = require("./errors.js");
65
60
  Object.defineProperty(exports, "AuthenticationFailure", { enumerable: true, get: function () { return errors_js_2.AuthenticationFailure; } });
61
+ Object.defineProperty(exports, "ImapFlowErrorCode", { enumerable: true, get: function () { return errors_js_2.ImapFlowErrorCode; } });
66
62
  const GREETING_TIMEOUT = 16 * 1000;
67
63
  const UPGRADE_TIMEOUT = 10 * 1000;
68
64
  const SOCKET_TIMEOUT = 5 * 60 * 1000;
@@ -200,6 +196,9 @@ class ImapFlow extends node_events_1.EventEmitter {
200
196
  * Current module version as a static class property
201
197
  */
202
198
  static { this.version = packageInfo.version; }
199
+ /**
200
+ * Creates a client for one IMAP connection. Nothing is sent before `connect()` is called
201
+ */
203
202
  constructor(options) {
204
203
  super({ captureRejections: true });
205
204
  this.options = options || {};
@@ -350,7 +349,7 @@ class ImapFlow extends node_events_1.EventEmitter {
350
349
  rid = '0'.repeat(20 - rid.length) + rid;
351
350
  }
352
351
  if (rid.length > 20) {
353
- rid = rid.substr(0, 20);
352
+ rid = rid.substring(0, 20);
354
353
  }
355
354
  return rid;
356
355
  }
@@ -938,11 +937,9 @@ class ImapFlow extends node_events_1.EventEmitter {
938
937
  break;
939
938
  case 'NO':
940
939
  case 'BAD': {
941
- let txt = parsed.attributes &&
942
- parsed.attributes
943
- .filter(val => val.type === 'TEXT')
944
- .map(val => val.value.trim())
945
- .join(' ');
940
+ let txt = (0, tools_js_1.getTextValues)(parsed.attributes)
941
+ .map(val => val.trim())
942
+ .join(' ');
946
943
  let err = new Error('Command failed');
947
944
  err.response = parsed;
948
945
  err.responseStatus = parsed.command.toUpperCase();
@@ -973,7 +970,7 @@ class ImapFlow extends node_events_1.EventEmitter {
973
970
  // Example: "tag BAD Request is throttled. Suggested Backoff Time: 92415 milliseconds"
974
971
  if (/Request is throttled/i.test(txt) && /Backoff Time/i.test(txt)) {
975
972
  let throttlingMatch = txt.match(/Backoff Time[:=\s]+(\d+)/i);
976
- if (throttlingMatch && throttlingMatch[1] && !isNaN(throttlingMatch[1])) {
973
+ if (throttlingMatch) {
977
974
  throttleDelay = Number(throttlingMatch[1]);
978
975
  }
979
976
  }
@@ -981,8 +978,14 @@ class ImapFlow extends node_events_1.EventEmitter {
981
978
  if (throttleDelay) {
982
979
  err.code = 'ETHROTTLE';
983
980
  err.throttleReset = throttleDelay;
984
- // The server-suggested delay can be very large, so throttleWait() caps it
985
- let delayResponse = Math.min(throttleDelay, MAX_THROTTLE_DELAY);
981
+ // The server-suggested delay can be very large, so throttleWait() caps it.
982
+ // The reader loop is parked for the whole wait, so it also stays well
983
+ // inside the socket inactivity timeout: a wait that outlasted it would
984
+ // fire the timeout handler, and the keepalive NOOP it sends can not be
985
+ // read while the loop is parked, so the connection would be torn down.
986
+ // A caller that retries (fetch) waits out the rest of the hint itself.
987
+ let delayResponse = Math.min(throttleDelay, MAX_THROTTLE_DELAY, Math.floor(this.socketTimeout / 2));
988
+ err.throttleWaited = delayResponse;
986
989
  this.log.warn({ msg: 'Throttling detected', cid: this.id, throttleDelay, delayResponse, err });
987
990
  let aborted = await this.throttleWait(delayResponse);
988
991
  if (aborted) {
@@ -1281,7 +1284,9 @@ class ImapFlow extends node_events_1.EventEmitter {
1281
1284
  let chunk;
1282
1285
  while (this.writeSocket && (chunk = this.writeSocket.read()) !== null) {
1283
1286
  if (this._deflate && this._deflate.write(chunk) === false) {
1284
- this._deflate.once('drain', readNext);
1287
+ this._deflate.once('drain', () => {
1288
+ void readNext();
1289
+ });
1285
1290
  return;
1286
1291
  }
1287
1292
  // Yield to event loop every 100 chunks to prevent CPU blocking
@@ -1307,7 +1312,8 @@ class ImapFlow extends node_events_1.EventEmitter {
1307
1312
  };
1308
1313
  writeSocket.on('readable', () => {
1309
1314
  if (!reading && this.writeSocket) {
1310
- readNext();
1315
+ // readNext() reports its own failures, the returned promise never rejects
1316
+ void readNext();
1311
1317
  }
1312
1318
  });
1313
1319
  writeSocket.on('error', err => {
@@ -1596,6 +1602,7 @@ class ImapFlow extends node_events_1.EventEmitter {
1596
1602
  /** @internal */
1597
1603
  beginSession(onUnhandledError) {
1598
1604
  (0, tools_js_1.clearTimer)(this.greetingTimeout);
1605
+ this.greetingReceived = true;
1599
1606
  this.untaggedHandlers.OK = null;
1600
1607
  this.untaggedHandlers.PREAUTH = null;
1601
1608
  if (this.isClosed) {
@@ -1625,9 +1632,7 @@ class ImapFlow extends node_events_1.EventEmitter {
1625
1632
  }
1626
1633
  /** @internal */
1627
1634
  async initialOK(message) {
1628
- this.greeting = (message.attributes || [])
1629
- .filter(entry => entry.type === 'TEXT')
1630
- .map(entry => entry.value)
1635
+ this.greeting = (0, tools_js_1.getTextValues)(message.attributes)
1631
1636
  .filter(entry => entry)
1632
1637
  .join('');
1633
1638
  // ALWAYS emit the error so users can handle it
@@ -1651,14 +1656,18 @@ class ImapFlow extends node_events_1.EventEmitter {
1651
1656
  async serverBye(parsed) {
1652
1657
  // Extract BYE reason from response for better error messages
1653
1658
  let reason = parsed &&
1654
- parsed.attributes &&
1655
- parsed.attributes
1656
- .filter(val => val.type === 'TEXT')
1657
- .map(val => val.value.trim())
1659
+ (0, tools_js_1.getTextValues)(parsed.attributes)
1660
+ .map(val => val.trim())
1658
1661
  .join(' ');
1659
1662
  this.byeReason = reason || 'Server closed connection';
1660
1663
  this.untaggedHandlers.BYE = null;
1661
1664
  this.state = this.states.LOGOUT;
1665
+ // A BYE greeting rejects the connection outright. Do not wait for the server to close
1666
+ // the socket: one that keeps it open would leave connect() pending until the greeting
1667
+ // timeout.
1668
+ if (!this.greetingReceived) {
1669
+ this.closeAfter();
1670
+ }
1662
1671
  }
1663
1672
  // Drops every capability-derived field together - the counterpart of
1664
1673
  // updateCapabilitiesFromRaw() below, which sets them together. rawCapabilities is
@@ -1841,7 +1850,7 @@ class ImapFlow extends node_events_1.EventEmitter {
1841
1850
  // Replace "*" with the actual message count. Some servers reject bare "*"
1842
1851
  // in certain commands, and this also forces a sequence query (not UID).
1843
1852
  if (value === '*') {
1844
- if (!this.mailbox.exists) {
1853
+ if (!this.mailbox || !this.mailbox.exists) {
1845
1854
  return false;
1846
1855
  }
1847
1856
  value = this.mailbox.exists.toString();
@@ -1891,7 +1900,7 @@ class ImapFlow extends node_events_1.EventEmitter {
1891
1900
  /** @internal */
1892
1901
  autoidle() {
1893
1902
  (0, tools_js_1.clearTimer)(this.idleStartTimer);
1894
- if (this.options.disableAutoIdle || this.state !== this.states.SELECTED) {
1903
+ if (this.options.disableAutoIdle || !this.usable || this.state !== this.states.SELECTED) {
1895
1904
  return;
1896
1905
  }
1897
1906
  if (this.connectionBusy()) {
@@ -1903,7 +1912,7 @@ class ImapFlow extends node_events_1.EventEmitter {
1903
1912
  // missed clearTimeout would inject IDLE between a caller's own commands. Declining
1904
1913
  // postpones rather than cancels: whatever made the connection busy calls autoidle()
1905
1914
  // again when it finishes.
1906
- if (this.state !== this.states.SELECTED || this.connectionBusy()) {
1915
+ if (!this.usable || this.state !== this.states.SELECTED || this.connectionBusy()) {
1907
1916
  return;
1908
1917
  }
1909
1918
  this.idle().catch(err => (0, tools_js_1.logConnectionError)(this, 'Auto-IDLE failed', err));
@@ -1922,9 +1931,17 @@ class ImapFlow extends node_events_1.EventEmitter {
1922
1931
  async connect() {
1923
1932
  if (this._connectCalled) {
1924
1933
  // Prevent re-using ImapFlow instances by allowing to call connect just once.
1925
- throw new Error('Can not re-use ImapFlow instance');
1934
+ let err = new Error('Can not re-use ImapFlow instance');
1935
+ err.code = 'InstanceReused';
1936
+ throw err;
1926
1937
  }
1927
1938
  this._connectCalled = true;
1939
+ let closedError = () => this.createNoConnectionError(this.byeReason, { rejectedFrom: 'connect' });
1940
+ // close() already ran, so there is no connection to set up and nothing would ever
1941
+ // settle a connect attempt started now.
1942
+ if (this.isClosed) {
1943
+ throw closedError();
1944
+ }
1928
1945
  // One deadline for the whole attempt, started before anything is resolved or negotiated.
1929
1946
  // Proxy DNS and proxy negotiation used to run entirely outside the timer, so a stalled
1930
1947
  // proxy could hang far beyond the documented connectionTimeout.
@@ -1970,9 +1987,20 @@ class ImapFlow extends node_events_1.EventEmitter {
1970
1987
  error._err = err;
1971
1988
  throw error;
1972
1989
  }
1990
+ // close() during proxy setup found no socket to destroy and no connect to reject,
1991
+ // so the tunnel that just opened is dropped here instead of being handed to a
1992
+ // closed client.
1993
+ if (this.isClosed) {
1994
+ socket.destroy();
1995
+ throw closedError();
1996
+ }
1973
1997
  }
1974
1998
  // Guarded: close() rejects a pending connect() synchronously. See guardedPromise().
1975
1999
  let connectPromise = (0, tools_js_1.guardedPromise)((resolve, reject) => {
2000
+ // Stored before the transport is up, so a close() that lands before onConnect
2001
+ // still rejects this attempt through closeConnectSteps().
2002
+ this.initialResolve = resolve;
2003
+ this.initialReject = reject;
1976
2004
  // Whatever the proxy phase already used is gone from the budget
1977
2005
  this.connectTimeout = setTimeout(() => {
1978
2006
  let err = deadline.error();
@@ -2024,9 +2052,6 @@ class ImapFlow extends node_events_1.EventEmitter {
2024
2052
  this.setSocketHandlers();
2025
2053
  this.setEventHandlers();
2026
2054
  connected.pipe(this.streamer);
2027
- // executed by initial "* OK"
2028
- this.initialResolve = resolve;
2029
- this.initialReject = reject;
2030
2055
  /* c8 ignore next 4 */ // defensive: the onConnect setup body does not throw under normal operation
2031
2056
  }
2032
2057
  catch (ex) {
@@ -2109,50 +2134,14 @@ class ImapFlow extends node_events_1.EventEmitter {
2109
2134
  */
2110
2135
  close() {
2111
2136
  try {
2112
- // clear pending timers
2113
- (0, tools_js_1.clearTimer)(this.idleStartTimer);
2114
- (0, tools_js_1.clearTimer)(this.upgradeTimeout);
2115
- (0, tools_js_1.clearTimer)(this.connectTimeout);
2116
- (0, tools_js_1.clearTimer)(this.greetingTimeout);
2117
- // Abort every in-flight throttle back-off so each waiter unblocks and its request is
2118
- // settled promptly rather than after the full delay.
2119
- for (let entry of this._throttleWaits) {
2120
- (0, tools_js_1.clearTimer)(entry.timer);
2121
- entry.resolve(true);
2122
- }
2123
- this._throttleWaits.clear();
2137
+ this.closeTimers();
2124
2138
  this.usable = false;
2125
2139
  // close() takes over ownership of the idling state: dropping the session token means a
2126
2140
  // poll or IDLE that unwinds after this point sees that it no longer owns the flag and
2127
2141
  // leaves it alone (see claimIdling() in commands/idle.ts).
2128
2142
  this._idleSession = null;
2129
2143
  this.idling = false;
2130
- // An in-flight STARTTLS upgrade has to be settled through its own single settlement
2131
- // path, otherwise the upgrade promise (and the session it belongs to) stays pending
2132
- // for the lifetime of the process.
2133
- if (typeof this._upgradeReject === 'function') {
2134
- let reject = this._upgradeReject;
2135
- this._upgradeReject = null;
2136
- reject(this.createNoConnectionError(false, { rejectedFrom: 'upgrade' }));
2137
- }
2138
- if (typeof this.initialReject === 'function' && !this.options.verifyOnly) {
2139
- (0, tools_js_1.clearTimer)(this.greetingTimeout);
2140
- let reject = this.initialReject;
2141
- this.initialResolve = false;
2142
- this.initialReject = false;
2143
- let err = new Error('Unexpected close');
2144
- /* c8 ignore next */ // closing a pending connect over an already-secure socket (the TLS branch) is not separately exercised
2145
- err.code = `ClosedAfterConnect${this.secureConnection ? 'TLS' : 'Text'}`;
2146
- // Surface the server's BYE reason (e.g. "Too many connections") when the
2147
- // connection was closed by an untagged BYE, so the caller sees why.
2148
- if (this.byeReason) {
2149
- err.reason = this.byeReason;
2150
- }
2151
- // Synchronous rejection is safe: connectPromise was built by guardedPromise(),
2152
- // so the rejection is already observed. close() is synchronous, so all cleanup
2153
- // completes before any microtask rejection handler runs.
2154
- reject(err);
2155
- }
2144
+ this.closeConnectSteps();
2156
2145
  if (typeof this.preCheck === 'function') {
2157
2146
  // Runs while the connection is being torn down, so the rejection this sees is
2158
2147
  // almost always the NoConnection close() is about to raise itself.
@@ -2179,99 +2168,9 @@ class ImapFlow extends node_events_1.EventEmitter {
2179
2168
  }
2180
2169
  this.preCheck = false;
2181
2170
  }
2182
- // Collect all pending requests to reject
2183
- let pendingRequests = [];
2184
- // reject command that is currently processed
2185
- if (this.currentRequest && this.requestTagMap.has(this.currentRequest.tag)) {
2186
- let tag = this.currentRequest.tag;
2187
- let request = this.requestTagMap.get(tag);
2188
- if (request) {
2189
- this.requestTagMap.delete(tag);
2190
- pendingRequests.push(request);
2191
- }
2192
- this.currentRequest = false;
2193
- }
2194
- // reject all other pending commands
2195
- while (this.requestQueue.length) {
2196
- let req = this.requestQueue.shift();
2197
- if (req && this.requestTagMap.has(req.tag)) {
2198
- let request = this.requestTagMap.get(req.tag);
2199
- if (request) {
2200
- this.requestTagMap.delete(req.tag);
2201
- pendingRequests.push(request);
2202
- }
2203
- }
2204
- }
2205
- // Reject pending requests and locks synchronously. Every promise rejected here was
2206
- // built by guardedPromise(), so its rejection is already observed and cannot trigger
2207
- // unhandledRejection. close() is synchronous, so all remaining cleanup runs before
2208
- // any microtask rejection handler fires.
2209
- //
2210
- // The error travels on, though, through await chains and .then() links that
2211
- // guardedPromise() knows nothing about. Read a crash stack ending here as "this is
2212
- // the value that escaped", never as "this is the promise that escaped".
2213
- let byeReason = this.byeReason;
2214
- for (let request of pendingRequests) {
2215
- request.reject(this.createNoConnectionError(byeReason, { rejectedFrom: 'pendingRequest', command: request.command }));
2216
- }
2217
- // Clear current lock - holder will see errors when they try operations.
2218
- // Also clear the held-lock diagnostic timer so it doesn't fire post-close.
2219
- if (this.currentLock && this.currentLock.heldWarnTimer) {
2220
- (0, tools_js_1.clearTimer)(this.currentLock.heldWarnTimer);
2221
- this.currentLock.heldWarnTimer = null;
2222
- }
2223
- this.currentLock = false;
2224
- if (this.locks && this.locks.length) {
2225
- let pendingLocks = this.locks.splice(0); // Take all locks and clear the array
2226
- for (let lock of pendingLocks) {
2227
- if (lock.acquireTimer) {
2228
- (0, tools_js_1.clearTimer)(lock.acquireTimer);
2229
- lock.acquireTimer = null;
2230
- }
2231
- if (typeof lock.reject === 'function') {
2232
- lock.reject(this.createNoConnectionError(byeReason, { rejectedFrom: 'mailboxLock', path: lock.path }));
2233
- }
2234
- }
2235
- }
2236
- // cleanup compression streams if they exist
2237
- if (this._inflate) {
2238
- try {
2239
- this._inflate.unpipe();
2240
- this._inflate.destroy();
2241
- this._inflate = null;
2242
- }
2243
- catch (err) {
2244
- this.log.error({ err, msg: 'Failed to destroy inflate stream', cid: this.id });
2245
- }
2246
- }
2247
- if (this._deflate) {
2248
- try {
2249
- this._deflate.unpipe();
2250
- this._deflate.destroy();
2251
- this._deflate = null;
2252
- }
2253
- catch (err) {
2254
- this.log.error({ err, msg: 'Failed to destroy deflate stream', cid: this.id });
2255
- }
2256
- }
2257
- // cleanup streamer
2258
- if (this.streamer) {
2259
- try {
2260
- // remove our listeners explicitly by reference
2261
- if (this.socketReadable) {
2262
- this.streamer.removeListener('readable', this.socketReadable);
2263
- }
2264
- if (this._streamerErrorHandler) {
2265
- this.streamer.removeListener('error', this._streamerErrorHandler);
2266
- }
2267
- if (!this.streamer.destroyed) {
2268
- this.streamer.destroy();
2269
- }
2270
- }
2271
- catch (err) {
2272
- this.log.error({ err, msg: 'Failed to cleanup streamer', cid: this.id });
2273
- }
2274
- }
2171
+ this.closeRequests();
2172
+ this.closeLocks();
2173
+ this.closeStreams();
2275
2174
  // clear socket handlers
2276
2175
  this.clearSocketHandlers();
2277
2176
  // clear cached data
@@ -2284,39 +2183,7 @@ class ImapFlow extends node_events_1.EventEmitter {
2284
2183
  // Set before teardown so a socket event that re-enters close() during destruction
2285
2184
  // cannot run this block a second time.
2286
2185
  this.isClosed = true;
2287
- // Socket teardown, in one documented order. Each stream owns and reports its own
2288
- // lifecycle, so each is destroyed exactly once:
2289
- // 1. the compression PassThrough (writeSocket), if compression replaced it
2290
- // 2. the raw socket, which is also writeSocket when compression is not active
2291
- // The compression streams themselves were destroyed above.
2292
- if (this.writeSocket && this.writeSocket !== this.socket && !this.writeSocket.destroyed) {
2293
- try {
2294
- this.writeSocket.destroy();
2295
- }
2296
- catch (err) {
2297
- this.log.error({ err, cid: this.id });
2298
- }
2299
- }
2300
- if (this.socket && !this.socket.destroyed) {
2301
- try {
2302
- this.socket.destroy();
2303
- }
2304
- catch (err) {
2305
- this.log.error({ err, cid: this.id });
2306
- }
2307
- }
2308
- // Null out all socket and handler references so the GC can collect
2309
- // them even if the ImapFlow instance itself is still referenced.
2310
- this.socket = null;
2311
- this.writeSocket = null;
2312
- this._inflate = null;
2313
- this._deflate = null;
2314
- this._streamerErrorHandler = null;
2315
- this._connectErrorHandler = null;
2316
- this._socketError = null;
2317
- this._socketClose = null;
2318
- this._socketEnd = null;
2319
- this._socketTimeout = null;
2186
+ this.closeSockets();
2320
2187
  this.log.debug({
2321
2188
  msg: 'Connection closed',
2322
2189
  cid: this.id,
@@ -2326,7 +2193,7 @@ class ImapFlow extends node_events_1.EventEmitter {
2326
2193
  // whether the session ended with a clean logout or a lost transport. Emitted before
2327
2194
  // 'close' and only from the first close(), so no consumer sees it twice.
2328
2195
  if (closedMailbox) {
2329
- this.emit('mailboxClose', closedMailbox);
2196
+ (0, tools_js_1.emitSafe)(this, 'mailboxClose', closedMailbox);
2330
2197
  }
2331
2198
  this.emit('close');
2332
2199
  }
@@ -2335,6 +2202,215 @@ class ImapFlow extends node_events_1.EventEmitter {
2335
2202
  this.log.error({ err: ex, cid: this.id });
2336
2203
  }
2337
2204
  }
2205
+ /**
2206
+ * Part of close(): clears the pending timers and aborts every throttle back-off.
2207
+ *
2208
+ * @internal
2209
+ */
2210
+ closeTimers() {
2211
+ // clear pending timers
2212
+ (0, tools_js_1.clearTimer)(this.idleStartTimer);
2213
+ (0, tools_js_1.clearTimer)(this.upgradeTimeout);
2214
+ (0, tools_js_1.clearTimer)(this.connectTimeout);
2215
+ (0, tools_js_1.clearTimer)(this.greetingTimeout);
2216
+ // Abort every in-flight throttle back-off so each waiter unblocks and its request is
2217
+ // settled promptly rather than after the full delay.
2218
+ for (let entry of this._throttleWaits) {
2219
+ (0, tools_js_1.clearTimer)(entry.timer);
2220
+ entry.resolve(true);
2221
+ }
2222
+ this._throttleWaits.clear();
2223
+ }
2224
+ /**
2225
+ * Part of close(): settles an in-flight STARTTLS upgrade and a pending connect().
2226
+ *
2227
+ * @internal
2228
+ */
2229
+ closeConnectSteps() {
2230
+ // An in-flight STARTTLS upgrade has to be settled through its own single settlement
2231
+ // path, otherwise the upgrade promise (and the session it belongs to) stays pending
2232
+ // for the lifetime of the process.
2233
+ if (typeof this._upgradeReject === 'function') {
2234
+ let reject = this._upgradeReject;
2235
+ this._upgradeReject = null;
2236
+ reject(this.createNoConnectionError(false, { rejectedFrom: 'upgrade' }));
2237
+ }
2238
+ // A verifyOnly session closes itself with LOGOUT and startSession() settles connect()
2239
+ // with the outcome, so the close is not a failure there. Before the greeting nothing
2240
+ // else can settle it (BYE greeting, FIN, close() while the transport is still coming up).
2241
+ if (typeof this.initialReject === 'function' && (!this.options.verifyOnly || !this.greetingReceived)) {
2242
+ (0, tools_js_1.clearTimer)(this.greetingTimeout);
2243
+ let reject = this.initialReject;
2244
+ this.initialResolve = false;
2245
+ this.initialReject = false;
2246
+ let err = new Error('Unexpected close');
2247
+ /* c8 ignore next */ // closing a pending connect over an already-secure socket (the TLS branch) is not separately exercised
2248
+ err.code = `ClosedAfterConnect${this.secureConnection ? 'TLS' : 'Text'}`;
2249
+ // Surface the server's BYE reason (e.g. "Too many connections") when the
2250
+ // connection was closed by an untagged BYE, so the caller sees why.
2251
+ if (this.byeReason) {
2252
+ err.reason = this.byeReason;
2253
+ }
2254
+ // Synchronous rejection is safe: connectPromise was built by guardedPromise(),
2255
+ // so the rejection is already observed. close() is synchronous, so all cleanup
2256
+ // completes before any microtask rejection handler runs.
2257
+ reject(err);
2258
+ }
2259
+ }
2260
+ /**
2261
+ * Part of close(): rejects the command in flight and every queued command.
2262
+ *
2263
+ * @internal
2264
+ */
2265
+ closeRequests() {
2266
+ // Collect all pending requests to reject
2267
+ let pendingRequests = [];
2268
+ // reject command that is currently processed
2269
+ if (this.currentRequest && this.requestTagMap.has(this.currentRequest.tag)) {
2270
+ let tag = this.currentRequest.tag;
2271
+ let request = this.requestTagMap.get(tag);
2272
+ if (request) {
2273
+ this.requestTagMap.delete(tag);
2274
+ pendingRequests.push(request);
2275
+ }
2276
+ this.currentRequest = false;
2277
+ }
2278
+ // reject all other pending commands
2279
+ while (this.requestQueue.length) {
2280
+ let req = this.requestQueue.shift();
2281
+ if (req && this.requestTagMap.has(req.tag)) {
2282
+ let request = this.requestTagMap.get(req.tag);
2283
+ if (request) {
2284
+ this.requestTagMap.delete(req.tag);
2285
+ pendingRequests.push(request);
2286
+ }
2287
+ }
2288
+ }
2289
+ // Reject pending requests and locks synchronously. Every promise rejected here was
2290
+ // built by guardedPromise(), so its rejection is already observed and cannot trigger
2291
+ // unhandledRejection. close() is synchronous, so all remaining cleanup runs before
2292
+ // any microtask rejection handler fires.
2293
+ //
2294
+ // The error travels on, though, through await chains and .then() links that
2295
+ // guardedPromise() knows nothing about. Read a crash stack ending here as "this is
2296
+ // the value that escaped", never as "this is the promise that escaped".
2297
+ for (let request of pendingRequests) {
2298
+ request.reject(this.createNoConnectionError(this.byeReason, { rejectedFrom: 'pendingRequest', command: request.command }));
2299
+ }
2300
+ }
2301
+ /**
2302
+ * Part of close(): drops the held lock and rejects every pending lock request.
2303
+ *
2304
+ * @internal
2305
+ */
2306
+ closeLocks() {
2307
+ // Clear current lock - holder will see errors when they try operations.
2308
+ // Also clear the held-lock diagnostic timer so it doesn't fire post-close.
2309
+ if (this.currentLock && this.currentLock.heldWarnTimer) {
2310
+ (0, tools_js_1.clearTimer)(this.currentLock.heldWarnTimer);
2311
+ this.currentLock.heldWarnTimer = null;
2312
+ }
2313
+ this.currentLock = false;
2314
+ if (this.locks && this.locks.length) {
2315
+ let pendingLocks = this.locks.splice(0); // Take all locks and clear the array
2316
+ for (let lock of pendingLocks) {
2317
+ if (lock.acquireTimer) {
2318
+ (0, tools_js_1.clearTimer)(lock.acquireTimer);
2319
+ lock.acquireTimer = null;
2320
+ }
2321
+ if (typeof lock.reject === 'function') {
2322
+ lock.reject(this.createNoConnectionError(this.byeReason, { rejectedFrom: 'mailboxLock', path: lock.path }));
2323
+ }
2324
+ }
2325
+ }
2326
+ }
2327
+ /**
2328
+ * Part of close(): destroys the compression streams and the response streamer.
2329
+ *
2330
+ * @internal
2331
+ */
2332
+ closeStreams() {
2333
+ // cleanup compression streams if they exist
2334
+ if (this._inflate) {
2335
+ try {
2336
+ this._inflate.unpipe();
2337
+ this._inflate.destroy();
2338
+ this._inflate = null;
2339
+ }
2340
+ catch (err) {
2341
+ this.log.error({ err, msg: 'Failed to destroy inflate stream', cid: this.id });
2342
+ }
2343
+ }
2344
+ if (this._deflate) {
2345
+ try {
2346
+ this._deflate.unpipe();
2347
+ this._deflate.destroy();
2348
+ this._deflate = null;
2349
+ }
2350
+ catch (err) {
2351
+ this.log.error({ err, msg: 'Failed to destroy deflate stream', cid: this.id });
2352
+ }
2353
+ }
2354
+ // cleanup streamer
2355
+ if (this.streamer) {
2356
+ try {
2357
+ // remove our listeners explicitly by reference
2358
+ if (this.socketReadable) {
2359
+ this.streamer.removeListener('readable', this.socketReadable);
2360
+ }
2361
+ if (this._streamerErrorHandler) {
2362
+ this.streamer.removeListener('error', this._streamerErrorHandler);
2363
+ }
2364
+ if (!this.streamer.destroyed) {
2365
+ this.streamer.destroy();
2366
+ }
2367
+ }
2368
+ catch (err) {
2369
+ this.log.error({ err, msg: 'Failed to cleanup streamer', cid: this.id });
2370
+ }
2371
+ }
2372
+ }
2373
+ /**
2374
+ * Part of close(): destroys the sockets once and drops every socket and handler reference.
2375
+ *
2376
+ * @internal
2377
+ */
2378
+ closeSockets() {
2379
+ // Socket teardown, in one documented order. Each stream owns and reports its own
2380
+ // lifecycle, so each is destroyed exactly once:
2381
+ // 1. the compression PassThrough (writeSocket), if compression replaced it
2382
+ // 2. the raw socket, which is also writeSocket when compression is not active
2383
+ // The compression streams themselves were destroyed in closeStreams().
2384
+ if (this.writeSocket && this.writeSocket !== this.socket && !this.writeSocket.destroyed) {
2385
+ try {
2386
+ this.writeSocket.destroy();
2387
+ }
2388
+ catch (err) {
2389
+ this.log.error({ err, cid: this.id });
2390
+ }
2391
+ }
2392
+ if (this.socket && !this.socket.destroyed) {
2393
+ try {
2394
+ this.socket.destroy();
2395
+ }
2396
+ catch (err) {
2397
+ this.log.error({ err, cid: this.id });
2398
+ }
2399
+ }
2400
+ // Null out all socket and handler references so the GC can collect
2401
+ // them even if the ImapFlow instance itself is still referenced.
2402
+ this.socket = null;
2403
+ this.writeSocket = null;
2404
+ // closeStreams() leaves these set when destroying them failed
2405
+ this._inflate = null;
2406
+ this._deflate = null;
2407
+ this._streamerErrorHandler = null;
2408
+ this._connectErrorHandler = null;
2409
+ this._socketError = null;
2410
+ this._socketClose = null;
2411
+ this._socketEnd = null;
2412
+ this._socketTimeout = null;
2413
+ }
2338
2414
  /**
2339
2415
  * Returns current quota
2340
2416
  *
@@ -2473,7 +2549,26 @@ class ImapFlow extends node_events_1.EventEmitter {
2473
2549
  * // 125
2474
2550
  */
2475
2551
  async mailboxOpen(path, options) {
2476
- return await this.run('SELECT', path, options);
2552
+ try {
2553
+ return await this.run('SELECT', path, options);
2554
+ }
2555
+ catch (err) {
2556
+ if (err.responseStatus === 'NO') {
2557
+ // SELECT failed with NO: verify whether the mailbox exists at all by running
2558
+ // LIST. This sets mailboxMissing on the error so the caller can distinguish
2559
+ // "doesn't exist" from other failures, for getMailboxLock() callers as well.
2560
+ try {
2561
+ let folders = await this.run('LIST', '', (0, tools_js_1.normalizePath)(this, path), { listOnly: true });
2562
+ if (!folders || !folders.length) {
2563
+ err.mailboxMissing = true;
2564
+ }
2565
+ }
2566
+ catch (E) {
2567
+ this.log.trace({ msg: 'Failed to verify failed mailbox', path, err: E });
2568
+ }
2569
+ }
2570
+ throw err;
2571
+ }
2477
2572
  }
2478
2573
  /**
2479
2574
  * Closes a previously opened mailbox
@@ -2492,7 +2587,7 @@ class ImapFlow extends node_events_1.EventEmitter {
2492
2587
  *
2493
2588
  * @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.
2494
2589
  * @param query defines requested status items
2495
- * @returns status of the indicated mailbox
2590
+ * @returns status of the indicated mailbox, or `false` if the server rejected the request
2496
2591
  *
2497
2592
  * @example
2498
2593
  * let status = await client.status('INBOX', {unseen: true});
@@ -2507,7 +2602,7 @@ class ImapFlow extends node_events_1.EventEmitter {
2507
2602
  * otherwise IDLE is started by default on connection inactivity. NB! If `idle()` is called manually then it does not
2508
2603
  * return until IDLE is finished which means you would have to call some other command out of scope.
2509
2604
  *
2510
- * @returns Did the operation succeed or not
2605
+ * @returns `false` if IDLE failed, `undefined` otherwise
2511
2606
  *
2512
2607
  * @example
2513
2608
  * let mailbox = await client.mailboxOpen('INBOX');
@@ -2946,433 +3041,13 @@ class ImapFlow extends node_events_1.EventEmitter {
2946
3041
  * @example
2947
3042
  * let mailbox = await client.mailboxOpen('INBOX');
2948
3043
  * // download body part nr '1.2' from latest message
2949
- * let {meta, content} = await client.download('*', '1.2');
2950
- * content.pipe(fs.createWriteStream(meta.filename));
3044
+ * let download = await client.download('*', '1.2');
3045
+ * if (download.content) {
3046
+ * download.content.pipe(fs.createWriteStream(download.meta.filename));
3047
+ * }
2951
3048
  */
2952
3049
  async download(range, part, options) {
2953
- if (!this.mailbox) {
2954
- // no mailbox selected, nothing to do
2955
- return {};
2956
- }
2957
- let downloadOptions = Object.assign({
2958
- chunkSize: 64 * 1024,
2959
- maxBytes: Infinity
2960
- }, options || {});
2961
- let hasMore = true;
2962
- let processed = 0;
2963
- let chunkSize = Number(downloadOptions.chunkSize) || 64 * 1024;
2964
- // Normalized once here so every bounded stage of the pipeline below agrees on the budget
2965
- let maxBytes = (0, limited_passthrough_js_1.normalizeByteLimit)(downloadOptions.maxBytes);
2966
- let uid = false;
2967
- if (part === '1') {
2968
- // Special handling for part "1": in single-node emails (no childNodes),
2969
- // the body is accessed via "TEXT" rather than "1", and headers via
2970
- // "HEADER" instead of "1.MIME". Check bodyStructure to detect this.
2971
- let response = await this.fetchOne(range, { uid: true, bodyStructure: true }, downloadOptions);
2972
- if (!response) {
2973
- return { response: false, chunk: false };
2974
- }
2975
- if (!uid && response.uid) {
2976
- uid = response.uid;
2977
- // force UID from now on even if first range was a sequence number
2978
- range = uid;
2979
- downloadOptions.uid = true;
2980
- }
2981
- if (!response.bodyStructure.childNodes) {
2982
- // single text message
2983
- part = 'TEXT';
2984
- }
2985
- }
2986
- let getNextPart = async (query) => {
2987
- query = query || {};
2988
- let mimeKey;
2989
- if (!part) {
2990
- query.source = {
2991
- start: processed,
2992
- maxLength: chunkSize
2993
- };
2994
- }
2995
- else {
2996
- part = part.toString().toLowerCase().trim();
2997
- if (!query.bodyParts) {
2998
- query.bodyParts = [];
2999
- }
3000
- if (query.size) {
3001
- if (/^[\d.]+$/.test(part)) {
3002
- // fetch meta as well
3003
- mimeKey = part + '.mime';
3004
- query.bodyParts.push(mimeKey);
3005
- }
3006
- else if (part === 'text') {
3007
- mimeKey = 'header';
3008
- query.bodyParts.push(mimeKey);
3009
- }
3010
- }
3011
- query.bodyParts.push({
3012
- key: part,
3013
- start: processed,
3014
- maxLength: chunkSize
3015
- });
3016
- }
3017
- let response = await this.fetchOne(range, query, downloadOptions);
3018
- if (!response) {
3019
- return { response: false, chunk: false };
3020
- }
3021
- if (!uid && response.uid) {
3022
- uid = response.uid;
3023
- // force UID from now on even if first range was a sequence number
3024
- range = uid;
3025
- downloadOptions.uid = true;
3026
- }
3027
- let chunk = !part ? response.source : response.bodyParts && response.bodyParts.get(part);
3028
- if (!chunk) {
3029
- return {};
3030
- }
3031
- processed += chunk.length;
3032
- // A compliant server returns at most `chunkSize` bytes for a partial
3033
- // request. Some servers (Tencent Exmail among them) ignore the partial
3034
- // spec and answer every request with the complete part. That chunk is
3035
- // then larger than requested, so treating it as "full, keep going"
3036
- // would advance the offset past the end forever and never see a short
3037
- // chunk. An oversized answer already contains the whole part - stop.
3038
- hasMore = chunk.length === chunkSize;
3039
- if (chunk.length > chunkSize) {
3040
- this.log.warn({
3041
- msg: 'Server returned more than the requested window, treating the part as complete',
3042
- chunkSize,
3043
- received: chunk.length,
3044
- processed,
3045
- cid: this.id
3046
- });
3047
- }
3048
- let result = { chunk };
3049
- if (query.size) {
3050
- result.response = response;
3051
- }
3052
- if (query.bodyParts) {
3053
- if (mimeKey === 'header') {
3054
- result.mime = response.headers;
3055
- }
3056
- else {
3057
- result.mime = response.bodyParts && mimeKey ? response.bodyParts.get(mimeKey) : undefined;
3058
- }
3059
- }
3060
- return result;
3061
- };
3062
- let { response, chunk, mime } = await getNextPart({
3063
- size: true,
3064
- uid: true
3065
- });
3066
- if (!response || !chunk) {
3067
- // ???
3068
- return {};
3069
- }
3070
- let meta = {
3071
- expectedSize: response.size
3072
- };
3073
- if (!part) {
3074
- meta.contentType = 'message/rfc822';
3075
- }
3076
- else if (mime) {
3077
- let headers = new mailsplit_1.Headers(mime);
3078
- let contentType = libmime_1.default.parseHeaderValue(headers.getFirst('Content-Type'));
3079
- let transferEncoding = libmime_1.default.parseHeaderValue(headers.getFirst('Content-Transfer-Encoding'));
3080
- let disposition = libmime_1.default.parseHeaderValue(headers.getFirst('Content-Disposition'));
3081
- if (contentType.value.toLowerCase().trim()) {
3082
- meta.contentType = contentType.value.toLowerCase().trim();
3083
- }
3084
- if (contentType.params.charset) {
3085
- meta.charset = contentType.params.charset.toLowerCase().trim();
3086
- }
3087
- if (transferEncoding.value) {
3088
- meta.encoding = transferEncoding.value
3089
- .replace(/\(.*\)/g, '')
3090
- .toLowerCase()
3091
- .trim();
3092
- }
3093
- if (disposition.value) {
3094
- /* c8 ignore next */ // a parsed disposition value is never all-whitespace, so the `false` fallback is unreachable
3095
- meta.disposition = disposition.value.toLowerCase().trim() || false;
3096
- try {
3097
- meta.disposition = libmime_1.default.decodeWords(meta.disposition);
3098
- }
3099
- catch {
3100
- // failed to parse disposition, keep as is (most probably an unknown charset is used)
3101
- }
3102
- }
3103
- if (contentType.params.format && contentType.params.format.toLowerCase().trim() === 'flowed') {
3104
- meta.flowed = true;
3105
- if (contentType.params.delsp && contentType.params.delsp.toLowerCase().trim() === 'yes') {
3106
- meta.delSp = true;
3107
- }
3108
- }
3109
- let filename = disposition.params.filename || contentType.params.name || false;
3110
- if (filename) {
3111
- try {
3112
- filename = libmime_1.default.decodeWords(filename);
3113
- }
3114
- catch {
3115
- // failed to parse filename, keep as is (most probably an unknown charset is used)
3116
- }
3117
- meta.filename = filename;
3118
- }
3119
- }
3120
- let stream;
3121
- let output;
3122
- let fetchAborted = false;
3123
- // Build a decoder pipeline that progressively transforms the raw FETCH data:
3124
- // 1. Transfer-encoding decoder (base64 or quoted-printable -> binary)
3125
- // 2. Format decoder (format=flowed -> plain text, if applicable)
3126
- // 3. Charset decoder (non-UTF-8 -> UTF-8, for text parts only)
3127
- // 4. Byte limiter (enforces maxBytes cap)
3128
- // `stream` is the head of the pipeline (where raw chunks are written),
3129
- // `output` is the tail (what the caller reads from).
3130
- // Parts that arrived via FETCH BINARY (response.binaryParts) are already
3131
- // decoded by the server - decoding again would corrupt the data, so stage 1
3132
- // is skipped for them.
3133
- let clientEncoding = response.binaryParts && part && response.binaryParts.has(part) ? false : meta.encoding;
3134
- switch (clientEncoding) {
3135
- case 'base64':
3136
- output = stream = new libbase64_1.default.Decoder();
3137
- break;
3138
- case 'quoted-printable':
3139
- output = stream = new libqp_1.default.Decoder();
3140
- break;
3141
- default:
3142
- output = stream = new node_stream_1.PassThrough();
3143
- }
3144
- // Every byte-bounded stage of the pipeline. The fetch loop below stops as soon as any of
3145
- // them has taken all it will accept. The limiter at the tail is not enough on its own: a
3146
- // transform in the middle that buffers its whole input before emitting anything (the
3147
- // format=flowed decoder, the Japanese charset decoder) leaves the tail limiter reporting
3148
- // `limited === false` however much the server sends, so a download with a small maxBytes
3149
- // would still pull the entire part off the wire.
3150
- let limiters = [];
3151
- let isLimited = () => limiters.some(entry => entry.limited);
3152
- // Appending a stage means forwarding the current tail's errors to it before piping, so a
3153
- // failure anywhere reaches the stream the caller is reading
3154
- let pipeStage = (stage) => {
3155
- output.on('error', err => {
3156
- stage.emit('error', err);
3157
- });
3158
- output = output.pipe(stage);
3159
- return stage;
3160
- };
3161
- let isTextNode = ['text/html', 'text/plain', 'text/x-amp-html'].includes(meta.contentType) || (part === '1' && !meta.contentType);
3162
- if ((!meta.disposition || meta.disposition === 'inline') && isTextNode) {
3163
- // RFC 3676 format=flowed text: unwrap soft line breaks
3164
- if (meta.flowed) {
3165
- // FlowedDecoder buffers its whole input before emitting, and being third party it
3166
- // carries no bound of its own, so bound what it can ever be handed. Unwrapping only
3167
- // removes bytes, so capping its input at maxBytes cannot push the delivered output
3168
- // above the cap either.
3169
- limiters.push(pipeStage(new limited_passthrough_js_1.LimitedPassthrough({ maxBytes })));
3170
- pipeStage(new flowed_decoder_js_1.default(meta.delSp ? { delSp: true } : {}));
3171
- }
3172
- // Convert non-UTF-8 charsets to UTF-8 via a streaming decoder.
3173
- // ASCII and UTF-8 need no conversion. Unknown charsets are left as-is.
3174
- if (meta.charset && !['ascii', 'usascii', 'utf8'].includes(meta.charset.toLowerCase().replace(/[^a-z0-9]+/g, ''))) {
3175
- try {
3176
- let decoder = (0, tools_js_1.getDecoder)(meta.charset, maxBytes);
3177
- // Safety listener attached first so the decoder always has at least
3178
- // one 'error' listener. Prevents Node.js from throwing
3179
- // ERR_UNHANDLED_ERROR if a later pipe setup step throws and leaves
3180
- // the source-forwarding closure attached without a downstream
3181
- // listener wired up. Any real listener the caller attaches still
3182
- // fires in addition to this one.
3183
- decoder.on('error', err => {
3184
- this.log.warn({ err, charset: meta.charset, cid: this.id });
3185
- });
3186
- // The Japanese decoder buffers its whole input as well, and reports the same
3187
- // `limited` flag the limiters do so the fetch loop can stop once it is full.
3188
- // A streaming decoder has no such flag, which reads as false and is correct.
3189
- limiters.push(pipeStage(decoder));
3190
- // force to utf-8 for output
3191
- meta.charset = 'utf-8';
3192
- }
3193
- catch {
3194
- // do not decode charset
3195
- }
3196
- }
3197
- }
3198
- let limiter = pipeStage(new limited_passthrough_js_1.LimitedPassthrough({ maxBytes }));
3199
- limiters.push(limiter);
3200
- // Cleanup function
3201
- const cleanup = () => {
3202
- fetchAborted = true;
3203
- if (stream && !stream.destroyed) {
3204
- stream.destroy();
3205
- }
3206
- };
3207
- // Listen for stream destruction
3208
- output.once('error', cleanup);
3209
- output.once('close', cleanup);
3210
- let writeChunk = (chunk) => {
3211
- if (isLimited() || fetchAborted || stream.destroyed) {
3212
- return true;
3213
- }
3214
- return stream.write(chunk);
3215
- };
3216
- // Ceiling on how many bytes one download may pull off the wire, as the backstop for the
3217
- // partial-ignoring servers above: a part whose size happens to equal chunkSize exactly
3218
- // comes back looking like a full window every time, so no test over chunk lengths can end
3219
- // that loop. RFC822.SIZE bounds any part of the message; doubled for servers that count
3220
- // line endings differently than they deliver, plus one window so a download sitting right
3221
- // at the bound still gets its terminating chunk. Infinity when the server reported no
3222
- // size, which leaves the loop bounded by maxBytes alone.
3223
- let maxTotalBytes = (0, limited_passthrough_js_1.normalizeByteLimit)(meta.expectedSize ? meta.expectedSize * 2 + chunkSize : 0);
3224
- // Fetch remaining chunks in a loop, writing each to the decoder stream.
3225
- // Stops when the server returns a short chunk (< chunkSize), answers with more than the
3226
- // requested window, the byte limiter is satisfied, or the consumer destroys the output
3227
- // stream. Throws when the ceiling above is crossed.
3228
- let fetchAllParts = async () => {
3229
- while (hasMore && !isLimited() && !fetchAborted) {
3230
- if (processed >= maxTotalBytes) {
3231
- // Loud on purpose. Everything written downstream by this point holds
3232
- // duplicated content, and a quiet stop is indistinguishable from a clean EOF,
3233
- // so the consumer would store a corrupt body believing it intact.
3234
- let err = new Error('Download exceeded the expected message size');
3235
- err.code = 'DownloadOverflow';
3236
- err.maxSize = maxTotalBytes;
3237
- err.cid = this.id;
3238
- throw err;
3239
- }
3240
- let { chunk } = await getNextPart();
3241
- if (!chunk || fetchAborted) {
3242
- break;
3243
- }
3244
- // Handle backpressure
3245
- if (writeChunk(chunk) === false) {
3246
- // Wait for drain event before continuing
3247
- try {
3248
- await new Promise((resolve, reject) => {
3249
- // finish() is the listener itself, as settle() is for the TLS upgrade:
3250
- // 'drain' and 'close' emit no arguments, 'error' emits the error, and
3251
- // removal needs no separate handler references. It removes only the
3252
- // three listeners this wait installed - removeAllListeners('error')
3253
- // also took off the forwarder pipeStage() attached to the head stream
3254
- // when the pipeline was built, and the head must keep that forwarder
3255
- // for the life of the download or a chunk failure has nowhere to go.
3256
- const finish = (err) => {
3257
- for (let event of ['drain', 'error', 'close']) {
3258
- stream.removeListener(event, finish);
3259
- }
3260
- /* c8 ignore next 2 */ // stream error during a backpressure drain wait is timing-dependent
3261
- if (err) {
3262
- reject(err);
3263
- }
3264
- else {
3265
- resolve();
3266
- }
3267
- };
3268
- stream.once('drain', finish);
3269
- stream.once('error', finish);
3270
- stream.once('close', finish);
3271
- });
3272
- /* c8 ignore start */ // re-throw path only triggers on a stream error mid-drain, which is timing-dependent
3273
- }
3274
- catch (err) {
3275
- // Re-throw only if not aborted
3276
- if (!fetchAborted) {
3277
- throw err;
3278
- }
3279
- }
3280
- /* c8 ignore stop */
3281
- // Check if we should abort after waiting
3282
- if (fetchAborted) {
3283
- break;
3284
- }
3285
- }
3286
- }
3287
- };
3288
- // A download is a sequence of chunk FETCHes with a backpressure wait in between. Those
3289
- // gaps look exactly like an inactive connection, so without this auto-IDLE would start
3290
- // between chunks and the next chunk would have to break it again - two extra round
3291
- // trips per chunk, for as long as the consumer is slow. Counted before control returns
3292
- // to the event loop: the head chunk's own FETCH already armed the auto-IDLE timer, and
3293
- // with a very short autoIdleDelay that timer could otherwise fire before the deferred
3294
- // chunk loop below has marked the download open.
3295
- this._openDownloads++;
3296
- let downloadDone = false;
3297
- let finishDownload = () => {
3298
- if (!downloadDone) {
3299
- downloadDone = true;
3300
- this._openDownloads--;
3301
- this.autoidle();
3302
- }
3303
- };
3304
- // Kick off the download pipeline asynchronously. The first chunk was
3305
- // already fetched above (to get metadata); write it to the decoder
3306
- // stream and then fetch remaining chunks via fetchAllParts().
3307
- // setImmediate ensures the caller gets the {meta, content} return
3308
- // value before streaming begins.
3309
- let runFetchAllParts = () => {
3310
- fetchAllParts()
3311
- .catch(err => {
3312
- if (!fetchAborted && stream && !stream.destroyed) {
3313
- stream.emit('error', err);
3314
- /* c8 ignore start */ // the else logs when a fetch error arrives after the stream was already torn down (timing-dependent)
3315
- }
3316
- else {
3317
- // Log when error cannot be emitted to stream
3318
- this.log.warn({
3319
- msg: 'Download error after stream closed',
3320
- err,
3321
- fetchAborted,
3322
- streamDestroyed: stream?.destroyed,
3323
- cid: this.id
3324
- });
3325
- }
3326
- /* c8 ignore stop */
3327
- })
3328
- .finally(() => {
3329
- finishDownload();
3330
- if (!fetchAborted && stream && !stream.destroyed) {
3331
- stream.end();
3332
- }
3333
- })
3334
- // Terminal guard: nothing consumes this chain, so a throw from either handler
3335
- // above rejects a promise nobody holds and takes the process down on
3336
- // unhandledRejection. Reaching it always means an invariant broke - the head
3337
- // stream kept pipeStage()'s error forwarder for the life of the download, so
3338
- // emit('error') above has somewhere to go - which is why it logs at error even
3339
- // for a routine-looking connection code.
3340
- .catch(err => this.log.error({ msg: 'Failed to fail the download stream', err, cid: this.id }));
3341
- };
3342
- setImmediate(() => {
3343
- let writeResult;
3344
- try {
3345
- writeResult = writeChunk(chunk);
3346
- }
3347
- catch (err) {
3348
- stream.emit('error', err);
3349
- finishDownload();
3350
- /* c8 ignore next 3 */ // emitting the error above triggers cleanup (fetchAborted=true), so this end() guard is already false here
3351
- if (!fetchAborted && stream && !stream.destroyed) {
3352
- stream.end();
3353
- }
3354
- return;
3355
- }
3356
- /* 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
3357
- if (!writeResult) {
3358
- // Initial chunk filled the buffer, wait for drain
3359
- stream.once('drain', () => {
3360
- if (!fetchAborted) {
3361
- runFetchAllParts();
3362
- }
3363
- else {
3364
- finishDownload();
3365
- }
3366
- });
3367
- }
3368
- else {
3369
- runFetchAllParts();
3370
- }
3371
- });
3372
- return {
3373
- meta,
3374
- content: output
3375
- };
3050
+ return await (0, download_js_1.downloadMessage)(this, range, part, options);
3376
3051
  }
3377
3052
  /**
3378
3053
  * Fetch multiple attachments as Buffer values
@@ -3390,119 +3065,7 @@ class ImapFlow extends node_events_1.EventEmitter {
3390
3065
  * process.stdout.write(response[3].content)
3391
3066
  */
3392
3067
  async downloadMany(range, parts, options) {
3393
- if (!this.mailbox) {
3394
- // no mailbox selected, nothing to do
3395
- return {};
3396
- }
3397
- let downloadOptions = Object.assign({
3398
- chunkSize: 64 * 1024,
3399
- maxBytes: Infinity
3400
- }, options || {});
3401
- let query = { bodyParts: [] };
3402
- for (let part of parts) {
3403
- query.bodyParts.push(part + '.mime');
3404
- query.bodyParts.push(part);
3405
- }
3406
- let response = await this.fetchOne(range, query, downloadOptions);
3407
- if (!response || !response.bodyParts) {
3408
- return { response: false };
3409
- }
3410
- let data = {};
3411
- for (let [part, content] of response.bodyParts) {
3412
- let keyParts = part.split('.mime');
3413
- // The server chooses the BODY[...] keys it answers with: never let one be a
3414
- // prototype-chain name, or the assignments below write onto Object.prototype
3415
- // (process-wide pollution) instead of the result object.
3416
- if ((0, tools_js_1.isUnsafeKey)(keyParts[0])) {
3417
- continue;
3418
- }
3419
- if (keyParts.length === 1) {
3420
- // content
3421
- let key = keyParts[0];
3422
- if (!data[key]) {
3423
- data[key] = { content };
3424
- }
3425
- else {
3426
- data[key].content = content;
3427
- }
3428
- }
3429
- else if (keyParts.length === 2) {
3430
- // header
3431
- let key = keyParts[0];
3432
- if (!data[key]) {
3433
- data[key] = {};
3434
- }
3435
- let entry = data[key];
3436
- if (!entry.meta) {
3437
- entry.meta = {};
3438
- }
3439
- let meta = entry.meta;
3440
- let headers = new mailsplit_1.Headers(content);
3441
- let contentType = libmime_1.default.parseHeaderValue(headers.getFirst('Content-Type'));
3442
- let transferEncoding = libmime_1.default.parseHeaderValue(headers.getFirst('Content-Transfer-Encoding'));
3443
- let disposition = libmime_1.default.parseHeaderValue(headers.getFirst('Content-Disposition'));
3444
- if (contentType.value.toLowerCase().trim()) {
3445
- meta.contentType = contentType.value.toLowerCase().trim();
3446
- }
3447
- if (contentType.params.charset) {
3448
- meta.charset = contentType.params.charset.toLowerCase().trim();
3449
- }
3450
- if (transferEncoding.value) {
3451
- meta.encoding = transferEncoding.value
3452
- .replace(/\(.*\)/g, '')
3453
- .toLowerCase()
3454
- .trim();
3455
- }
3456
- if (disposition.value) {
3457
- /* c8 ignore next */ // a parsed disposition value is never all-whitespace, so the `false` fallback is unreachable
3458
- meta.disposition = disposition.value.toLowerCase().trim() || false;
3459
- try {
3460
- meta.disposition = libmime_1.default.decodeWords(meta.disposition);
3461
- }
3462
- catch {
3463
- // failed to parse disposition, keep as is (most probably an unknown charset is used)
3464
- }
3465
- }
3466
- if (contentType.params.format && contentType.params.format.toLowerCase().trim() === 'flowed') {
3467
- meta.flowed = true;
3468
- if (contentType.params.delsp && contentType.params.delsp.toLowerCase().trim() === 'yes') {
3469
- meta.delSp = true;
3470
- }
3471
- }
3472
- let filename = disposition.params.filename || contentType.params.name || false;
3473
- if (filename) {
3474
- try {
3475
- filename = libmime_1.default.decodeWords(filename);
3476
- }
3477
- catch {
3478
- // failed to parse filename, keep as is (most probably an unknown charset is used)
3479
- }
3480
- meta.filename = filename;
3481
- }
3482
- }
3483
- }
3484
- for (let part of Object.keys(data)) {
3485
- let entry = data[part];
3486
- // `meta` is only built from the companion BODY[<part>.MIME] item. A server may
3487
- // legally answer with fewer items than were requested, and one part arriving
3488
- // without its MIME headers must not cost the caller the whole download.
3489
- let meta = entry.meta || {};
3490
- entry.meta = meta;
3491
- // parts that arrived via FETCH BINARY (response.binaryParts) are already
3492
- // decoded by the server - decoding again would corrupt the data
3493
- let clientEncoding = response.binaryParts && response.binaryParts.has(part) ? false : meta.encoding;
3494
- switch (clientEncoding) {
3495
- case 'base64':
3496
- entry.content = entry.content ? libbase64_1.default.decode(entry.content.toString()) : null;
3497
- break;
3498
- case 'quoted-printable':
3499
- entry.content = entry.content ? libqp_1.default.decode(entry.content.toString()) : null;
3500
- break;
3501
- default:
3502
- // keep as is, already a buffer
3503
- }
3504
- }
3505
- return data;
3068
+ return await (0, download_js_1.downloadMessageParts)(this, range, parts, options);
3506
3069
  }
3507
3070
  /** @internal */
3508
3071
  async run(command, ...args) {
@@ -3707,20 +3270,7 @@ class ImapFlow extends node_events_1.EventEmitter {
3707
3270
  break; // Wait for this lock to be released
3708
3271
  }
3709
3272
  catch (err) {
3710
- if (err.responseStatus === 'NO') {
3711
- // SELECT failed with NO: verify whether the mailbox exists
3712
- // at all by running LIST. This sets mailboxMissing on the error
3713
- // so the caller can distinguish "doesn't exist" from other failures.
3714
- try {
3715
- let folders = await this.run('LIST', '', path, { listOnly: true });
3716
- if (!folders || !folders.length) {
3717
- err.mailboxMissing = true;
3718
- }
3719
- }
3720
- catch (E) {
3721
- this.log.trace({ msg: 'Failed to verify failed mailbox', path, err: E });
3722
- }
3723
- }
3273
+ // mailboxOpen() has already marked a missing mailbox (mailboxMissing)
3724
3274
  this.log.trace({
3725
3275
  msg: 'Failed to acquire mailbox lock',
3726
3276
  path,
@@ -3811,12 +3361,14 @@ class ImapFlow extends node_events_1.EventEmitter {
3811
3361
  }
3812
3362
  /** @internal */
3813
3363
  getLogger() {
3814
- let mainLogger = this.options.logger && typeof this.options.logger === 'object'
3815
- ? this.options.logger
3816
- : logger_js_1.default.child({
3817
- component: 'imap-connection',
3818
- cid: this.id
3819
- });
3364
+ let mainLogger = {};
3365
+ if (this.options.logger && typeof this.options.logger === 'object') {
3366
+ mainLogger = this.options.logger;
3367
+ }
3368
+ else if (this.options.logger !== false) {
3369
+ // {logger:false} never consults mainLogger, so it does not create the default logger
3370
+ mainLogger = (0, logger_js_1.createConnectionLogger)({ cid: this.id, logRaw: this.options.logRaw });
3371
+ }
3820
3372
  let synteticLogger = {};
3821
3373
  let levels = ['trace', 'debug', 'info', 'warn', 'error', 'fatal'];
3822
3374
  for (let level of levels) {
@@ -3872,7 +3424,8 @@ class ImapFlow extends node_events_1.EventEmitter {
3872
3424
  }
3873
3425
  /**
3874
3426
  * Detaches sockets from the IMAP pipeline. Useful for upgrading the connection
3875
- * (e.g., STARTTLS) or transferring socket ownership.
3427
+ * (e.g., STARTTLS) or transferring socket ownership. Call it while the connection is not
3428
+ * idling: an IDLE in progress is not broken first, so the server still expects `DONE`.
3876
3429
  *
3877
3430
  * @returns Socket objects: `readSocket` is the read socket (inflated socket if compression is enabled, raw socket otherwise),
3878
3431
  * `writeSocket` the write socket and `socket` the raw underlying socket (same as readSocket/writeSocket when compression is disabled)
@@ -3887,6 +3440,11 @@ class ImapFlow extends node_events_1.EventEmitter {
3887
3440
  // compression is active, the PassThrough writeSocket - so the connection
3888
3441
  // is fully released to the caller.
3889
3442
  this.clearSocketHandlers();
3443
+ // The socket now belongs to the caller. Marking the client unusable keeps
3444
+ // auto-IDLE (armed now, or re-armed by a lock release or a finished download)
3445
+ // and a later dispose from writing IDLE or LOGOUT onto it.
3446
+ this.usable = false;
3447
+ (0, tools_js_1.clearTimer)(this.idleStartTimer);
3890
3448
  const readSocket = this._inflate || socket;
3891
3449
  const writeSocket = this.writeSocket || socket;
3892
3450
  // Defense-in-depth: when compression is active the raw socket is orphaned
@@ -3985,6 +3543,23 @@ exports.ImapFlow = ImapFlow;
3985
3543
  * console.log(`${entry.cid} ${entry.msg}`);
3986
3544
  * });
3987
3545
  */
3546
+ // Installed outside the class body: a computed `[Symbol.asyncDispose]` key would turn into a
3547
+ // method named "undefined" on Node.js 20.0-20.3, which predate the symbol
3548
+ if (typeof Symbol.asyncDispose === 'symbol') {
3549
+ ImapFlow.prototype[Symbol.asyncDispose] = async function () {
3550
+ if (this.usable) {
3551
+ try {
3552
+ await this.logout();
3553
+ }
3554
+ catch (err) {
3555
+ (0, tools_js_1.logConnectionError)(this, 'LOGOUT failed while disposing', err);
3556
+ }
3557
+ }
3558
+ // logout() already closes the connection; close() is idempotent and covers a client
3559
+ // that never connected or whose logout was skipped
3560
+ this.close();
3561
+ };
3562
+ }
3988
3563
  // Both `import { ImapFlow } from 'imapflow'` and `import imapflow from 'imapflow'` work, the
3989
3564
  // latter matching the shape `require('imapflow')` has always had
3990
3565
  const imapflow = { ImapFlow, AuthenticationFailure: errors_js_1.AuthenticationFailure };