thursday-agent 0.17.0 → 0.17.2

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 (361) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +2 -0
  3. package/.next/build-manifest.json +3 -3
  4. package/.next/prerender-manifest.json +3 -3
  5. package/.next/routes-manifest.json +12 -0
  6. package/.next/server/app/_global-error/page.js.nft.json +1 -1
  7. package/.next/server/app/_global-error.html +1 -1
  8. package/.next/server/app/_global-error.rsc +1 -1
  9. package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  10. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  11. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  12. package/.next/server/app/_not-found/page.js.nft.json +1 -1
  13. package/.next/server/app/_not-found.html +1 -1
  14. package/.next/server/app/_not-found.rsc +1 -1
  15. package/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
  16. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  17. package/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  18. package/.next/server/app/api/artifact/route.js +9 -8
  19. package/.next/server/app/api/artifact/route.js.nft.json +1 -1
  20. package/.next/server/app/api/bot/memory/files/route.js.nft.json +1 -1
  21. package/.next/server/app/api/bot/memory/route.js +8 -7
  22. package/.next/server/app/api/bot/memory/route.js.nft.json +1 -1
  23. package/.next/server/app/api/bot/route.js +8 -7
  24. package/.next/server/app/api/bot/route.js.nft.json +1 -1
  25. package/.next/server/app/api/bot/thread/[id]/route.js +4 -4
  26. package/.next/server/app/api/bot/thread/[id]/route.js.nft.json +1 -1
  27. package/.next/server/app/api/bot/thread/route.js +3 -3
  28. package/.next/server/app/api/bot/thread/route.js.nft.json +1 -1
  29. package/.next/server/app/api/config/route.js.nft.json +1 -1
  30. package/.next/server/app/api/events/route.js.nft.json +1 -1
  31. package/.next/server/app/api/favicon/[host]/route.js +4 -3
  32. package/.next/server/app/api/favicon/[host]/route.js.nft.json +1 -1
  33. package/.next/server/app/api/file/[...path]/route.js.nft.json +1 -1
  34. package/.next/server/app/api/llm-model/automatic/route/app-paths-manifest.json +3 -0
  35. package/.next/server/app/api/llm-model/automatic/route/build-manifest.json +12 -0
  36. package/.next/server/app/api/llm-model/automatic/route/server-reference-manifest.json +4 -0
  37. package/.next/server/app/api/llm-model/automatic/route.js +17 -0
  38. package/.next/server/app/api/llm-model/automatic/route.js.map +5 -0
  39. package/.next/server/app/api/llm-model/automatic/route.js.nft.json +1 -0
  40. package/.next/server/app/api/llm-model/automatic/route_client-reference-manifest.js +3 -0
  41. package/.next/server/app/api/llm-model/catalog/route.js.nft.json +1 -1
  42. package/.next/server/app/api/llm-model/credits/route.js.nft.json +1 -1
  43. package/.next/server/app/api/llm-model/route.js.nft.json +1 -1
  44. package/.next/server/app/api/llm-model/subscription/route.js.nft.json +1 -1
  45. package/.next/server/app/api/mcp/[name]/route.js.nft.json +1 -1
  46. package/.next/server/app/api/mcp/oauth/callback/route.js.nft.json +1 -1
  47. package/.next/server/app/api/mcp/route.js.nft.json +1 -1
  48. package/.next/server/app/api/mcp/tools/route.js.nft.json +1 -1
  49. package/.next/server/app/api/memory/edit/route.js +14 -13
  50. package/.next/server/app/api/memory/edit/route.js.nft.json +1 -1
  51. package/.next/server/app/api/memory/route.js.nft.json +1 -1
  52. package/.next/server/app/api/reach/route.js +17 -16
  53. package/.next/server/app/api/reach/route.js.nft.json +1 -1
  54. package/.next/server/app/api/routine/route.js +10 -10
  55. package/.next/server/app/api/routine/route.js.nft.json +1 -1
  56. package/.next/server/app/api/signins/route.js.nft.json +1 -1
  57. package/.next/server/app/api/skills/[source]/[name]/route.js +9 -8
  58. package/.next/server/app/api/skills/[source]/[name]/route.js.nft.json +1 -1
  59. package/.next/server/app/api/skills/route.js +9 -8
  60. package/.next/server/app/api/skills/route.js.nft.json +1 -1
  61. package/.next/server/app/api/thursday/call/end/route/app-paths-manifest.json +3 -0
  62. package/.next/server/app/api/thursday/call/end/route/build-manifest.json +12 -0
  63. package/.next/server/app/api/thursday/call/end/route/server-reference-manifest.json +4 -0
  64. package/.next/server/app/api/thursday/call/end/route.js +17 -0
  65. package/.next/server/app/api/thursday/call/end/route.js.map +5 -0
  66. package/.next/server/app/api/thursday/call/end/route.js.nft.json +1 -0
  67. package/.next/server/app/api/thursday/call/end/route_client-reference-manifest.js +3 -0
  68. package/.next/server/app/api/thursday/call/route.js +6 -6
  69. package/.next/server/app/api/thursday/call/route.js.nft.json +1 -1
  70. package/.next/server/app/api/thursday/settings/route.js +5 -5
  71. package/.next/server/app/api/thursday/settings/route.js.nft.json +1 -1
  72. package/.next/server/app/api/thursday/text/route.js +16 -15
  73. package/.next/server/app/api/thursday/text/route.js.nft.json +1 -1
  74. package/.next/server/app/api/thursday/tool-call/route.js +13 -12
  75. package/.next/server/app/api/thursday/tool-call/route.js.nft.json +1 -1
  76. package/.next/server/app/api/workspace/files/route.js +5 -5
  77. package/.next/server/app/api/workspace/files/route.js.nft.json +1 -1
  78. package/.next/server/app/api/workspace/route.js +5 -5
  79. package/.next/server/app/api/workspace/route.js.nft.json +1 -1
  80. package/.next/server/app/artifact/[...path]/page/server-reference-manifest.json +3 -3
  81. package/.next/server/app/artifact/[...path]/page.js +2 -2
  82. package/.next/server/app/artifact/[...path]/page.js.nft.json +1 -1
  83. package/.next/server/app/artifact/[...path]/page_client-reference-manifest.js +1 -1
  84. package/.next/server/app/favicon.ico/route.js.nft.json +1 -1
  85. package/.next/server/app/manifest.webmanifest/route.js.nft.json +1 -1
  86. package/.next/server/app/page/server-reference-manifest.json +60 -60
  87. package/.next/server/app/page.js +8 -8
  88. package/.next/server/app/page.js.nft.json +1 -1
  89. package/.next/server/app/page_client-reference-manifest.js +1 -1
  90. package/.next/server/app-paths-manifest.json +2 -0
  91. package/.next/server/chunks/{[externals]__178rv3v._.js → [externals]__12stas-._.js} +1 -1
  92. package/.next/server/chunks/[root-of-the-server]__00qyw01._.js +1 -1
  93. package/.next/server/chunks/{[root-of-the-server]__1ignh6-._.js → [root-of-the-server]__01k3vi3._.js} +1 -1
  94. package/.next/server/chunks/[root-of-the-server]__01ypm_z._.js +1 -1
  95. package/.next/server/chunks/[root-of-the-server]__021dkui._.js +1 -1
  96. package/.next/server/chunks/[root-of-the-server]__03vunn6._.js +1 -1
  97. package/.next/server/chunks/[root-of-the-server]__03xamry._.js +1 -1
  98. package/.next/server/chunks/[root-of-the-server]__05dp5tr._.js +1 -1
  99. package/.next/server/chunks/{[root-of-the-server]__208vmyf._.js → [root-of-the-server]__061o2_x._.js} +1 -1
  100. package/.next/server/chunks/[root-of-the-server]__09gdscj._.js +3 -3
  101. package/.next/server/chunks/[root-of-the-server]__0bqveex._.js +5 -0
  102. package/.next/server/chunks/[root-of-the-server]__0eivkvk._.js +5 -0
  103. package/.next/server/chunks/[root-of-the-server]__0f7m79q._.js +3 -0
  104. package/.next/server/chunks/[root-of-the-server]__0g38-aj._.js +2 -2
  105. package/.next/server/chunks/[root-of-the-server]__0h656y-._.js +2 -2
  106. package/.next/server/chunks/[root-of-the-server]__0hkxwim._.js +3 -0
  107. package/.next/server/chunks/[root-of-the-server]__0hm3tiq._.js +5 -0
  108. package/.next/server/chunks/[root-of-the-server]__0hzdqnv._.js +5 -0
  109. package/.next/server/chunks/[root-of-the-server]__0liwkmx._.js +4 -4
  110. package/.next/server/chunks/[root-of-the-server]__0ljizgj._.js +2 -2
  111. package/.next/server/chunks/[root-of-the-server]__0mgyt8p._.js +5 -0
  112. package/.next/server/chunks/[root-of-the-server]__0mrk2it._.js +1 -1
  113. package/.next/server/chunks/[root-of-the-server]__0nmust6._.js +2 -2
  114. package/.next/server/chunks/[root-of-the-server]__0p80i1n._.js +3 -0
  115. package/.next/server/chunks/[root-of-the-server]__0qzho69._.js +3 -0
  116. package/.next/server/chunks/[root-of-the-server]__0sm5xvm._.js +1 -1
  117. package/.next/server/chunks/[root-of-the-server]__0svzjwa._.js +3 -3
  118. package/.next/server/chunks/{[root-of-the-server]__0b36yfw._.js → [root-of-the-server]__0ts7ai0._.js} +1 -1
  119. package/.next/server/chunks/[root-of-the-server]__1-18_pz._.js +3 -0
  120. package/.next/server/chunks/[root-of-the-server]__1-rmal0._.js +5 -0
  121. package/.next/server/chunks/[root-of-the-server]__13hng6h._.js +1 -1
  122. package/.next/server/chunks/[root-of-the-server]__1_04mcf._.js +2 -2
  123. package/.next/server/chunks/[root-of-the-server]__1_h4hf9._.js +3 -3
  124. package/.next/server/chunks/[root-of-the-server]__1ceammd._.js +1 -1
  125. package/.next/server/chunks/[root-of-the-server]__1ckt1yj._.js +3 -0
  126. package/.next/server/chunks/[root-of-the-server]__1cu5f3z._.js +5 -0
  127. package/.next/server/chunks/[root-of-the-server]__1hviq62._.js +5 -0
  128. package/.next/server/chunks/{[root-of-the-server]__12m24xl._.js → [root-of-the-server]__1k2qs1m._.js} +1 -1
  129. package/.next/server/chunks/[root-of-the-server]__1kmnkbk._.js +3 -0
  130. package/.next/server/chunks/[root-of-the-server]__1ndi14y._.js +1 -1
  131. package/.next/server/chunks/[root-of-the-server]__1p47fbb._.js +2 -2
  132. package/.next/server/chunks/[root-of-the-server]__1pugoq0._.js +3 -0
  133. package/.next/server/chunks/[root-of-the-server]__1t02-1p._.js +1 -1
  134. package/.next/server/chunks/[root-of-the-server]__1t0jj1j._.js +1 -1
  135. package/.next/server/chunks/[root-of-the-server]__1vlxv19._.js +2 -2
  136. package/.next/server/chunks/[root-of-the-server]__1ygplx1._.js +1 -1
  137. package/.next/server/chunks/[root-of-the-server]__1zn039k._.js +1 -1
  138. package/.next/server/chunks/_05gl-xy._.js +5 -5
  139. package/.next/server/chunks/_06hnfi8._.js +8 -0
  140. package/.next/server/chunks/_06u9yo-._.js +1 -1
  141. package/.next/server/chunks/_07nxi75._.js +25 -21
  142. package/.next/server/chunks/_08354bn._.js +25 -21
  143. package/.next/server/chunks/_08btiir._.js +3 -3
  144. package/.next/server/chunks/_0c49lmw._.js +5 -0
  145. package/.next/server/chunks/_0ey0s6v._.js +3 -0
  146. package/.next/server/chunks/_0hgvg55._.js +5 -0
  147. package/.next/server/chunks/_0j0-gq6._.js +2 -2
  148. package/.next/server/chunks/_0nn99o2._.js +1 -1
  149. package/.next/server/chunks/_0p6v1fr._.js +2 -2
  150. package/.next/server/chunks/_0s8ao8z._.js +3 -0
  151. package/.next/server/chunks/_0srlnvd._.js +1 -1
  152. package/.next/server/chunks/_0t_7gji._.js +1 -1
  153. package/.next/server/chunks/_0ucx1jv._.js +3 -0
  154. package/.next/server/chunks/_0uzj57i._.js +1 -1
  155. package/.next/server/chunks/_0xygcxs._.js +25 -21
  156. package/.next/server/chunks/_1-sk_q4._.js +1 -1
  157. package/.next/server/chunks/{_1xcnogc._.js → _108gsm8._.js} +4 -4
  158. package/.next/server/chunks/{_20oecmn._.js → _15negpy._.js} +4 -4
  159. package/.next/server/chunks/_19fh9t2._.js +3 -0
  160. package/.next/server/chunks/_19kea1l._.js +18 -18
  161. package/.next/server/chunks/_1dtm9bs._.js +1 -1
  162. package/.next/server/chunks/_1dxq827._.js +2 -2
  163. package/.next/server/chunks/_1e54wxa._.js +1 -1
  164. package/.next/server/chunks/_1frcwj1._.js +3 -0
  165. package/.next/server/chunks/_1gn2r2q._.js +5 -5
  166. package/.next/server/chunks/_1gxankq._.js +2 -2
  167. package/.next/server/chunks/_1i3uucm._.js +5 -0
  168. package/.next/server/chunks/_1m88lkh._.js +9 -9
  169. package/.next/server/chunks/_1mx9sfo._.js +1 -1
  170. package/.next/server/chunks/_1q6e56i._.js +5 -5
  171. package/.next/server/chunks/_1qxheoa._.js +1 -1
  172. package/.next/server/chunks/_1t5ijzv._.js +3 -0
  173. package/.next/server/chunks/_1wwl_7o._.js +1 -1
  174. package/.next/server/chunks/_1zfxb7j._.js +1 -1
  175. package/.next/server/chunks/_211dn2c._.js +1 -1
  176. package/.next/server/chunks/_next-internal_server_app_api_llm-model_automatic_route_actions_1-eyan7.js +3 -0
  177. package/.next/server/chunks/_next-internal_server_app_api_thursday_call_end_route_actions_0u5xjft.js +3 -0
  178. package/.next/server/chunks/config_ts_1g4sz5o._.js +1 -1
  179. package/.next/server/chunks/{features_0wm-ujw._.js → features_bot_08z387_._.js} +4 -4
  180. package/.next/server/chunks/{ssr/[root-of-the-server]__07660xu._.js → features_bot_0zy_q8y._.js} +8 -9
  181. package/.next/server/chunks/features_bot_1dfrdsb._.js +37 -0
  182. package/.next/server/chunks/features_workspace_workspace_ts_13h82gv._.js +3 -3
  183. package/.next/server/chunks/features_workspace_workspace_ts_1iyjroj._.js +3 -3
  184. package/.next/server/chunks/node_modules_103lpef._.js +3 -0
  185. package/.next/server/chunks/{node_modules_consola_dist_chunks_prompt_mjs_0_nz09c._.js → node_modules_consola_dist_chunks_prompt_mjs_0-t5tbs._.js} +1 -1
  186. package/.next/server/chunks/{node_modules_consola_dist_chunks_prompt_mjs_1341cnf._.js → node_modules_consola_dist_chunks_prompt_mjs_039fwo9._.js} +1 -1
  187. package/.next/server/chunks/{node_modules_consola_dist_chunks_prompt_mjs_1x3bsmx._.js → node_modules_consola_dist_chunks_prompt_mjs_0pce1b3._.js} +1 -1
  188. package/.next/server/chunks/node_modules_consola_dist_chunks_prompt_mjs_0tvy5lq._.js +3 -0
  189. package/.next/server/chunks/node_modules_consola_dist_chunks_prompt_mjs_0wxw35t._.js +3 -0
  190. package/.next/server/chunks/node_modules_consola_dist_chunks_prompt_mjs_1dlthym._.js +3 -0
  191. package/.next/server/chunks/node_modules_consola_dist_chunks_prompt_mjs_1smfi4-._.js +3 -0
  192. package/.next/server/chunks/node_modules_consola_dist_chunks_prompt_mjs_1x1omfi._.js +3 -0
  193. package/.next/server/chunks/node_modules_consola_dist_chunks_prompt_mjs_20is7e3._.js +3 -0
  194. package/.next/server/chunks/ssr/{[root-of-the-server]__149x25m._.js → [root-of-the-server]__0-af_o7._.js} +2 -2
  195. package/.next/server/chunks/ssr/[root-of-the-server]__09f39cp._.js +4 -0
  196. package/.next/server/chunks/ssr/[root-of-the-server]__0ouu4qp._.js +3 -0
  197. package/.next/server/chunks/ssr/[root-of-the-server]__0q9g9ea._.js +5 -0
  198. package/.next/server/chunks/ssr/[root-of-the-server]__17h1ggo._.js +11 -9
  199. package/.next/server/chunks/ssr/[root-of-the-server]__1jyeu61._.js +1 -1
  200. package/.next/server/chunks/ssr/{_0aeknva._.js → _01al00i._.js} +2 -2
  201. package/.next/server/chunks/ssr/_088vzgn._.js +1 -1
  202. package/.next/server/chunks/ssr/_0afrpci._.js +1 -1
  203. package/.next/server/chunks/ssr/_0bgse1c._.js +162 -0
  204. package/.next/server/chunks/ssr/_0cd6g3l._.js +15 -15
  205. package/.next/server/chunks/ssr/_0cv9tmv._.js +1 -1
  206. package/.next/server/chunks/ssr/{_0_vnw9v._.js → _0e2fnvg._.js} +2 -2
  207. package/.next/server/chunks/ssr/_0fo4552._.js +25 -21
  208. package/.next/server/chunks/ssr/_0jstvlg._.js +39 -0
  209. package/.next/server/chunks/ssr/{_0r0g9ki._.js → _0l7rjg5._.js} +2 -2
  210. package/.next/server/chunks/ssr/_0qsmpcu._.js +1 -1
  211. package/.next/server/chunks/ssr/_0v9r8g2._.js +1 -1
  212. package/.next/server/chunks/ssr/{_18-e7zi._.js → _0vo_oym._.js} +4 -4
  213. package/.next/server/chunks/ssr/_0x8ophf._.js +1 -1
  214. package/.next/server/chunks/ssr/{_0ztbn5q._.js → _0xfafez._.js} +2 -2
  215. package/.next/server/chunks/ssr/_0z38nha._.js +1 -1
  216. package/.next/server/chunks/ssr/_10-_awu._.js +1 -1
  217. package/.next/server/chunks/ssr/{_1z6pirx._.js → _10_ph1t._.js} +2 -2
  218. package/.next/server/chunks/ssr/_116lfdc._.js +3 -0
  219. package/.next/server/chunks/ssr/_14dfh7a._.js +1 -1
  220. package/.next/server/chunks/ssr/_14oirtb._.js +3 -0
  221. package/.next/server/chunks/ssr/{_1umbr78._.js → _163dr78._.js} +2 -2
  222. package/.next/server/chunks/ssr/{_1c5iqz1._.js → _17a4qyk._.js} +3 -3
  223. package/.next/server/chunks/ssr/{_1sttj8x._.js → _1_5xof_._.js} +2 -2
  224. package/.next/server/chunks/ssr/{_1hbjh6n._.js → _1aqjk-1._.js} +2 -2
  225. package/.next/server/chunks/ssr/{_0n2scfq._.js → _1dfv66y._.js} +2 -2
  226. package/.next/server/chunks/ssr/_1neoj22._.js +1 -1
  227. package/.next/server/chunks/ssr/_1ou5sj0._.js +1 -1
  228. package/.next/server/chunks/ssr/{_15m5ctz._.js → _1tmw842._.js} +2 -2
  229. package/.next/server/chunks/ssr/_1uij_rj._.js +1 -1
  230. package/.next/server/chunks/ssr/_1w9w1ok._.js +1 -1
  231. package/.next/server/chunks/ssr/features_0796o8r._.js +1 -1
  232. package/.next/server/chunks/ssr/features_bot_0ouemw8._.js +3 -0
  233. package/.next/server/chunks/ssr/{features_133mpna._.js → features_bot_0tb4ui-._.js} +2 -2
  234. package/.next/server/chunks/ssr/{features_config_0n0zu89._.js → features_config_09n-q9q._.js} +3 -3
  235. package/.next/server/chunks/ssr/features_connectors_components_mcp-setting_tsx_0jmbgvp._.js +1 -1
  236. package/.next/server/chunks/ssr/features_memory_components_memory-setting_tsx_0oa43sw._.js +1 -1
  237. package/.next/server/chunks/ssr/features_routine_components_routine-setting_tsx_055fknz._.js +1 -1
  238. package/.next/server/chunks/ssr/features_workspace_workspace_ts_1wc7_u_._.js +4 -4
  239. package/.next/server/chunks/ssr/{node_modules_1hefp6h._.js → node_modules_021lid9._.js} +1 -1
  240. package/.next/server/chunks/ssr/{node_modules_0kwie-o._.js → node_modules_04x5wyv._.js} +1 -1
  241. package/.next/server/chunks/ssr/{node_modules_180l3i0._.js → node_modules_096up6a._.js} +1 -1
  242. package/.next/server/chunks/ssr/{node_modules_00h1t1j._.js → node_modules_0__0tvm._.js} +1 -1
  243. package/.next/server/chunks/ssr/{node_modules_03uejh6._.js → node_modules_0cjnmzp._.js} +1 -1
  244. package/.next/server/chunks/ssr/{node_modules_1ubln7w._.js → node_modules_0d6j33x._.js} +1 -1
  245. package/.next/server/chunks/ssr/{node_modules_1_n9o9s._.js → node_modules_0gd9hbz._.js} +1 -1
  246. package/.next/server/chunks/ssr/{node_modules_0zf3wuu._.js → node_modules_0k8-y89._.js} +1 -1
  247. package/.next/server/chunks/ssr/{node_modules_0u_8z64._.js → node_modules_0m73b88._.js} +1 -1
  248. package/.next/server/chunks/ssr/{node_modules_09ikzel._.js → node_modules_0msrhxf._.js} +1 -1
  249. package/.next/server/chunks/ssr/{node_modules_0f5bmkb._.js → node_modules_0nmkv-v._.js} +1 -1
  250. package/.next/server/chunks/ssr/{node_modules_07mo9rn._.js → node_modules_0nw5jz7._.js} +1 -1
  251. package/.next/server/chunks/ssr/{node_modules_09e8kz_._.js → node_modules_0q-klni._.js} +1 -1
  252. package/.next/server/chunks/ssr/{node_modules_02ficyi._.js → node_modules_10_fv2a._.js} +1 -1
  253. package/.next/server/chunks/ssr/{node_modules_142z3o5._.js → node_modules_113l3e5._.js} +1 -1
  254. package/.next/server/chunks/ssr/{node_modules_1wyhtw9._.js → node_modules_13bqv6i._.js} +1 -1
  255. package/.next/server/chunks/ssr/{node_modules_0_d_7gq._.js → node_modules_13g-d25._.js} +1 -1
  256. package/.next/server/chunks/ssr/{node_modules_0r-9e4n._.js → node_modules_156kv_t._.js} +1 -1
  257. package/.next/server/chunks/ssr/{node_modules_06grs09._.js → node_modules_1_8-jcj._.js} +1 -1
  258. package/.next/server/chunks/ssr/{node_modules_1fw32pg._.js → node_modules_1gq3ght._.js} +1 -1
  259. package/.next/server/chunks/ssr/{node_modules_0_p8w7p._.js → node_modules_1k5i-_9._.js} +1 -1
  260. package/.next/server/chunks/ssr/{node_modules_03q71_j._.js → node_modules_1lmyts8._.js} +1 -1
  261. package/.next/server/chunks/ssr/{node_modules_1irot3r._.js → node_modules_1p_6sq7._.js} +1 -1
  262. package/.next/server/chunks/ssr/{node_modules_1om2itc._.js → node_modules_1qstb1x._.js} +1 -1
  263. package/.next/server/chunks/ssr/{node_modules_197vh1s._.js → node_modules_1ri_eip._.js} +1 -1
  264. package/.next/server/chunks/ssr/{node_modules_1-7fc7h._.js → node_modules_1xb-ndg._.js} +1 -1
  265. package/.next/server/chunks/ssr/{node_modules_@mermaid-js_parser_dist_chunks_mermaid-parser_core_0aczkbn._.js → node_modules_@mermaid-js_parser_dist_chunks_mermaid-parser_core_0amkw0b._.js} +1 -1
  266. package/.next/server/chunks/ssr/{node_modules_@mermaid-js_parser_dist_chunks_mermaid-parser_core_0ah684s._.js → node_modules_@mermaid-js_parser_dist_chunks_mermaid-parser_core_0zq3l45._.js} +1 -1
  267. package/.next/server/middleware-build-manifest.js +3 -3
  268. package/.next/server/middleware.js +1 -1
  269. package/.next/server/pages/404.html +1 -1
  270. package/.next/server/pages/500.html +1 -1
  271. package/.next/server/server-reference-manifest.js +1 -1
  272. package/.next/server/server-reference-manifest.json +61 -61
  273. package/.next/static/chunks/{38edd4rpcbvzp.js → 01l7kw74vfp32.js} +1 -1
  274. package/.next/static/chunks/0a5_-jqhaktjj.js +1 -0
  275. package/.next/static/chunks/{0_b_bi2pobasx.js → 0obogzscwwekj.js} +2 -2
  276. package/.next/static/chunks/{1-63yde5eaz7i.js → 0p2f6uv4xytfm.js} +1 -1
  277. package/.next/static/chunks/{2v6e_9p95o2e3.js → 0uxq_vs6uxi-b.js} +1 -1
  278. package/.next/static/chunks/{024plctckvq-1.js → 166smhw8v-s3j.js} +1 -1
  279. package/.next/static/chunks/{1wbqaidq7vc3_.js → 1bnhw-5fj7aiz.js} +1 -1
  280. package/.next/static/chunks/1cglo3a2mbeou.js +1 -0
  281. package/.next/static/chunks/{0sv142q1yrva2.js → 1in6nxpu33iab.js} +1 -1
  282. package/.next/static/chunks/1u7kg91f9qy3g.js +1 -0
  283. package/.next/static/chunks/{0sowxe4nnl5qu.js → 1xv4g10m-cl1s.js} +1 -1
  284. package/.next/static/chunks/{0dfvwgnyrp8qt.js → 2ajs12-fcdwzm.js} +1 -1
  285. package/.next/static/chunks/2i7qtmxc1kuqg.js +1 -0
  286. package/.next/static/chunks/{3-qp777vtfglj.js → 2kz1f6r59nky0.js} +1 -1
  287. package/.next/static/chunks/2qgkbdshzpq1c.js +1 -0
  288. package/.next/static/chunks/{1bgvxd3xny53w.js → 2zbl41hed17g3.js} +2 -2
  289. package/.next/static/chunks/35jj-5u4te56r.js +1 -0
  290. package/.next/static/chunks/37ixzapa06xlo.js +1 -0
  291. package/.next/static/chunks/3b96xy59nl_gd.js +1 -0
  292. package/.next/static/chunks/{0f47nnshdlucs.js → 3gsxnqqqphh-1.js} +1 -1
  293. package/.next/static/chunks/{44vre0f7xqsh-.js → 3jtcieuk1l6tw.js} +1 -1
  294. package/.next/static/chunks/{05scfrgo_a_5_.js → 3k1d8y03t5nax.js} +1 -1
  295. package/.next/static/chunks/3sla-dm1puqd1.js +35 -0
  296. package/.next/static/chunks/3t2c76awm9k_p.js +1 -0
  297. package/.next/static/chunks/3vrmcm31ih7gb.js +1 -0
  298. package/.next/static/chunks/3yiqr95d7ybeq.js +15 -0
  299. package/bin/autostart.mjs +4 -1
  300. package/bin/database.mjs +26 -4
  301. package/bin/lock.mjs +59 -0
  302. package/bin/node-check.mjs +21 -0
  303. package/bin/thursday.mjs +8 -1
  304. package/guide/bots.md +4 -2
  305. package/guide/calls.md +11 -9
  306. package/guide/memory.md +3 -2
  307. package/guide/phone.md +7 -4
  308. package/guide/setup.md +26 -9
  309. package/guide/trouble.md +11 -4
  310. package/package.json +1 -1
  311. package/public/voices/intro/asleepBare-15199d56.ogg +0 -0
  312. package/public/voices/intro/style-88adf274.ogg +0 -0
  313. package/seed-skills/concierge/travel/scripts/itinerary.mjs +6 -4
  314. package/skills/artifact/references/book.md +2 -1
  315. package/skills/artifact/references/sheet.md +12 -7
  316. package/skills/artifact/runtime/sheet/format.mjs +16 -9
  317. package/skills/artifact/scripts/book.mjs +19 -6
  318. package/skills/artifact/scripts/spreadsheet.mjs +194 -97
  319. package/skills/browser/SKILL.md +9 -6
  320. package/.next/server/chunks/[root-of-the-server]__03b09q0._.js +0 -5
  321. package/.next/server/chunks/[root-of-the-server]__05n-hql._.js +0 -5
  322. package/.next/server/chunks/[root-of-the-server]__0j_nz36._.js +0 -3
  323. package/.next/server/chunks/[root-of-the-server]__0jzwdg-._.js +0 -3
  324. package/.next/server/chunks/[root-of-the-server]__0tsded0._.js +0 -5
  325. package/.next/server/chunks/[root-of-the-server]__12tahb4._.js +0 -3
  326. package/.next/server/chunks/[root-of-the-server]__1de1o6m._.js +0 -3
  327. package/.next/server/chunks/[root-of-the-server]__1yl5l25._.js +0 -3
  328. package/.next/server/chunks/_02lipqs._.js +0 -5
  329. package/.next/server/chunks/_05sa7xl._.js +0 -3
  330. package/.next/server/chunks/_074f2ts._.js +0 -3
  331. package/.next/server/chunks/_0caua_s._.js +0 -3
  332. package/.next/server/chunks/_0p-h6xe._.js +0 -5
  333. package/.next/server/chunks/_0up2a9o._.js +0 -3
  334. package/.next/server/chunks/_17i1lt2._.js +0 -3
  335. package/.next/server/chunks/_1hy9x9_._.js +0 -3
  336. package/.next/server/chunks/_1hyvcgk._.js +0 -5
  337. package/.next/server/chunks/_1wl2g8_._.js +0 -6
  338. package/.next/server/chunks/_1y3mnz4._.js +0 -3
  339. package/.next/server/chunks/ssr/[root-of-the-server]__10eb-1x._.js +0 -3
  340. package/.next/server/chunks/ssr/[root-of-the-server]__19s8qyj._.js +0 -3
  341. package/.next/server/chunks/ssr/_0o_o9ji._.js +0 -3
  342. package/.next/server/chunks/ssr/_0qne8xs._.js +0 -3
  343. package/.next/server/chunks/ssr/_0rvbegp._.js +0 -7
  344. package/.next/server/chunks/ssr/_1vtgiou._.js +0 -162
  345. package/.next/server/chunks/ssr/features_bot_1kr0_m-._.js +0 -3
  346. package/.next/static/chunks/04toe_3nqfjqt.js +0 -1
  347. package/.next/static/chunks/0mtfu8adz57qz.js +0 -1
  348. package/.next/static/chunks/0tp868040z9nn.js +0 -35
  349. package/.next/static/chunks/14qitm0kwsb6g.js +0 -15
  350. package/.next/static/chunks/1cyrrz4q871aj.js +0 -1
  351. package/.next/static/chunks/1st3b0c9vhxg3.js +0 -1
  352. package/.next/static/chunks/28sxb_k460e9h.js +0 -1
  353. package/.next/static/chunks/33ekkscpcq-z1.js +0 -1
  354. package/.next/static/chunks/388l-zszwa_jf.js +0 -1
  355. package/.next/static/chunks/3bwrvpjk95_x4.js +0 -1
  356. package/.next/static/chunks/3itdg6t243u6f.js +0 -1
  357. package/.next/static/chunks/3kj0pri2oc1g1.js +0 -1
  358. package/public/voices/intro/style-cb6fa4f7.ogg +0 -0
  359. /package/.next/static/{VtbCMn-0G969p8QJsWdGv → 8I2hKtciyA9LXvd8txuOz}/_buildManifest.js +0 -0
  360. /package/.next/static/{VtbCMn-0G969p8QJsWdGv → 8I2hKtciyA9LXvd8txuOz}/_clientMiddlewareManifest.js +0 -0
  361. /package/.next/static/{VtbCMn-0G969p8QJsWdGv → 8I2hKtciyA9LXvd8txuOz}/_ssgManifest.js +0 -0
@@ -1,5 +1,5 @@
1
1
  module.exports=[61514,a=>a.a(async(b,c)=>{try{var d=a.i(868468),e=a.i(569572),f=a.i(344853),g=a.i(706210),h=a.i(182248),i=b([f]);async function j(){let a=await (0,f.listThreadOverview)();if(!a.length)return null;let b=a.map(a=>{let b=(0,d.formatDistanceToNowStrict)((0,g.toDate)(a.updatedAt),{addSuffix:!0}),c=a.room.questions[0],f="waiting"===a.status&&c?`waiting on the user since ${b} — ${c.bot} asked: ${(0,h.clip)(c.text,e.PROMPT_LINE.jobOutcome)}`:"waiting"===a.status?`stopped ${b}, not finished`:"running"===a.status?`running, last moved ${b}`:`${a.status} ${b}`;return`- "${a.label}" (${a.id}) — ${a.bot} — ${f}`});return`[The threads as this call opened, open work first. They move while you talk.]
2
- ${b.join("\n")}`}[f]=i.then?(await i)():i,a.s(["loadCallStanding",0,j]),c()}catch(a){c(a)}},!1),614747,a=>a.a(async(b,c)=>{try{var d=a.i(569572),e=a.i(884780),f=a.i(762008),g=a.i(221214),h=a.i(446957),i=a.i(344853),j=a.i(986743),k=a.i(661210),l=a.i(138100),m=a.i(569549),n=a.i(821415),o=a.i(644468),p=a.i(269353),q=a.i(938934),r=b([g,i,j,l,m,o]);async function s(a){var b,c,r,s,v,w,x,y;let z,{backendPrompt:A,written:B=!1,phone:C=!1,readSkills:D}=a,E=await (0,n.openWorkspace)(),[F,G,H,I,J,K,L]=await Promise.all([(0,l.loadSkills)(E),(0,j.listNoteIndex)(),(0,j.readNotes)(k.MEMORY_ALWAYS_LISTED,{touch:!1}),(0,o.listConnectedToolNames)(),(0,g.listJobBots)(),(0,m.listRecentTurns)(d.RECENT_CALL.rows),(0,g.readBotMemoryOn)()]),M=await (0,i.listCallJobs)(K.map(a=>a.callId)),N=[(0,q.thursdayIdentity)(),B?(0,p.personaLines)(a.persona):"",B?(0,q.styleLines)(a.stylePrompt):"",function(a,b){let{crowded:c,heavy:d}=(0,q.tidying)(a),e=[...d].sort((a,b)=>b.factCount-a.factCount).slice(0,3).map(a=>a.path),g=c||d.length?`
2
+ ${b.join("\n")}`}[f]=i.then?(await i)():i,a.s(["loadCallStanding",0,j]),c()}catch(a){c(a)}},!1),614747,a=>a.a(async(b,c)=>{try{var d=a.i(569572),e=a.i(884780),f=a.i(762008),g=a.i(221214),h=a.i(446957),i=a.i(344853),j=a.i(986743),k=a.i(661210),l=a.i(138100),m=a.i(569549),n=a.i(821415),o=a.i(644468),p=a.i(269353),q=a.i(938934),r=b([g,i,j,l,m,o]);async function s(a){var b,c,r,s,v,w,x,y;let z,{backendPrompt:A,written:B=!1,phone:C=!1,readSkills:D}=a,E=await (0,n.openWorkspace)(),[F,G,H,I,J,K,L]=await Promise.all([(0,l.loadSkills)(E),(0,j.listNoteIndex)(),(0,j.readNotes)(k.MEMORY_ALWAYS_LISTED,{touch:!1}),(0,o.listConnectedToolNames)(),(0,g.listJobBots)(),(0,m.listRecentTurns)(d.RECENT_CALL.rows,a.callId),(0,g.readBotMemoryOn)()]),M=await (0,i.listCallJobs)(K.map(a=>a.callId)),N=[(0,q.thursdayIdentity)(),B?(0,p.personaLines)(a.persona):"",B?(0,q.styleLines)(a.stylePrompt):"",function(a,b){let{crowded:c,heavy:d}=(0,q.tidying)(a),e=[...d].sort((a,b)=>b.factCount-a.factCount).slice(0,3).map(a=>a.path),g=c||d.length?`
3
3
 
4
4
  Saved memory has grown past what it holds well${e.length?` (${e.join(", ")})`:""}: say so once in what you return, go through what looks out of date with the user, and forget only what they name.`:"",h=new Set(b.map(a=>a.path)),i=`## Memory
5
5
 
@@ -11,7 +11,7 @@ ${(0,q.noteLines)(a.filter(a=>!h.has(a.path)),c)}${g}
11
11
 
12
12
  Open a note before answering out of it; a topic not listed is one you know nothing about. A fact marked \`said\` came from a call.
13
13
 
14
- Keep what the user tells you as it comes up, with \`${f.TOOL_NAMES.memory_remember}\`, without waiting to be asked: what they actually said, never a guess, nothing they asked you not to keep, and from a bot's report only what it confirmed about them. What tells you most about them comes first: what they loved or could not stand and why — how they want you to talk goes under preferences — then what they are going through or working toward, good news, stories from their past and the people in their life, and last plain facts and tastes. A subject that is not on the listing gets a note of its own with \`${f.TOOL_NAMES.memory_create}\`, under one of the paths below.
14
+ Keep what the user tells you as it comes up, with \`${f.TOOL_NAMES.memory_remember}\`, without waiting to be asked: what they actually said, never a guess, nothing they asked you not to keep, and from a bot's report only what it confirmed about them. What they say that bears on work already handed over is said to that thread as well (\`${f.TOOL_NAMES.thread_tell}\`). What tells you most about them comes first: what they loved or could not stand and why — how they want you to talk goes under preferences — then what they are going through or working toward, good news, stories from their past and the people in their life, and last plain facts and tastes. A subject that is not on the listing gets a note of its own with \`${f.TOOL_NAMES.memory_create}\`, under one of the paths below.
15
15
 
16
16
  **Keep memory clean as you write.** A fact that repeats, narrows or changes one already in the note replaces it, merged into one line, rather than sitting beside it. A later call finds a note only by its path and its line: give something new its own path below, and when a line no longer says what its note is about, \`${f.TOOL_NAMES.memory_describe}\` puts it right.
17
17
 
@@ -25,7 +25,7 @@ What bots can reach for: ${c}.`:""}
25
25
 
26
26
  **A bot can take on almost anything, and anything that takes more than a few seconds is a bot's**; a note, a look at a file or one command is yours. A bot has this computer, a real browser, the web, a shell to build what is missing and far more time than a call; it signs in where it has to and carries work to the end, so something you do not know how to do is work for a bot, not a no. Bots bring each other in, so work that spans several things is still one thread.${r?" Each bot keeps its own memory from thread to thread: when the user says how a bot should work from now on, pass it to that bot to remember.":""}
27
27
 
28
- **Work lives in threads.** A thread's bot remembers that thread and nothing else, so the same bot started on a new one begins from nothing. More about work already handed over — a correction, the next step once it finished, going on after it stopped — is said to that thread (\`${f.TOOL_NAMES.thread_tell}\`); only a request that stands on its own starts a new one (\`${f.TOOL_NAMES.thread_start}\`). The threads open as this call started come into the conversation at the start, and they move while you talk: \`${f.TOOL_NAMES.thread_status}\` reads them as they are now, before you answer about one or hand anything over. Ask the user which it is only when the request could be either. Write the request in the user's own words, with what it stands on — including how they told you they want work done — and nothing they did not say.
28
+ **Work lives in threads.** A thread's bot remembers that thread and nothing else, so the same bot started on a new one begins from nothing. More about work already handed over — a correction, the next step once it finished, going on after it stopped — is said to that thread (\`${f.TOOL_NAMES.thread_tell}\`); only a request that stands on its own starts a new one (\`${f.TOOL_NAMES.thread_start}\`). The threads open as this call started come into the conversation at the start, and they move while you talk: \`${f.TOOL_NAMES.thread_status}\` reads them as they are now, before you answer about one or hand anything over. Ask the user which it is only when the request could be either. Write the request in the user's own words, with what it stands on — including how they told you they want work done — and nothing they did not say. When something the work needs is still missing, either ask the user yourself before handing it over or let the bot ask them — never both.
29
29
 
30
30
  **Work that should start by itself — every morning, every few hours — is a routine.** \`${f.TOOL_NAMES.routine}\` makes one from a bot, the work in the user's own words, and when; from then on it starts a thread for it each time without being asked, and the result reaches the user like any thread's. Ask once for whichever of those they left out, and read the ones that exist before making, changing or deleting one.
31
31
 
@@ -42,9 +42,9 @@ Skills are written-down ways of doing things here. \`${f.TOOL_NAMES.load_skill}\
42
42
 
43
43
  ${(0,q.skillLines)(w,{short:!0})}`),B?`## Answer in writing
44
44
 
45
- This call is in writing: there is no voice, and what you write is what the user reads, so answer them directly, in their language. Say the relevant facts, whether the task is complete, and what comes next — for work you handed over, who has it and whether it carries an earlier thread on or starts a new one — or the one question they have to answer first. Use confirmed values from tool results and the notes above, and never invent a successful action. Keep it short and plain.`:`## Return the result
45
+ This call is in writing: there is no voice, and what you write is what the user reads, so answer them directly, in their language. Say the relevant facts, whether the task is complete, and what comes next — for work you handed over, who has it and whether it carries an earlier thread on or starts a new one — or the one question they have to answer first. Use confirmed values from tool results and the notes above, and never invent a successful action. Keep it short and plain. News from a bot comes in the middle of whatever you were talking about: say whose work it is and which job before what it says.`:`## Return the result
46
46
 
47
- Return the relevant facts, whether the task is complete, and what comes next — for work you handed over, who has it and whether it carries an earlier thread on or starts a new one — or the one question the user has to answer first. Use confirmed values from tool results and the notes above, and never invent a successful action. What you return is said aloud: keep it short and plain, and carry what they do not know yet — never a confirmation this conversation has already given them.`,(x=K,y=M,x.some(a=>a.turns.length>0)?`## Earlier calls
47
+ Return the relevant facts, whether the task is complete, and what comes next — for work you handed over, who has it and whether it carries an earlier thread on or starts a new one — or the one question the user has to answer first. Use confirmed values from tool results and the notes above, and never invent a successful action. What you return is said aloud: keep it short and plain, and carry what they do not know yet — never a confirmation this conversation has already given them. When all the turn did was keep what they told you about themselves, return only that it was kept: the voice is already answering them.`,(x=K,y=M,x.some(a=>a.turns.length>0)?`## Earlier calls
48
48
 
49
49
  What was said on the last calls, verbatim, newest last. It is the past: pick it up when the user does, and never answer it as a new request.
50
50
 
@@ -113,25 +113,25 @@ ${this.parser.parse(a)}</blockquote>
113
113
  ${a}</tr>
114
114
  `}tablecell(a){let b=this.parser.parseInline(a.tokens),c=a.header?"th":"td";return(a.align?`<${c} align="${a.align}">`:`<${c}>`)+b+`</${c}>
115
115
  `}strong({tokens:a}){return`<strong>${this.parser.parseInline(a)}</strong>`}em({tokens:a}){return`<em>${this.parser.parseInline(a)}</em>`}codespan({text:a}){return`<code>${ae(a,!0)}</code>`}br(a){return"<br>"}del({tokens:a}){return`<del>${this.parser.parseInline(a)}</del>`}link({href:a,title:b,tokens:c}){let d=this.parser.parseInline(c),e=af(a);if(null===e)return d;let f='<a href="'+(a=e)+'"';return b&&(f+=' title="'+ae(b)+'"'),f+=">"+d+"</a>"}image({href:a,title:b,text:c,tokens:d}){d&&(c=this.parser.parseInline(d,this.parser.textRenderer));let e=af(a);if(null===e)return ae(c);a=e;let f=`<img src="${a}" alt="${ae(c)}"`;return b&&(f+=` title="${ae(b)}"`),f+=">"}text(a){return"tokens"in a&&a.tokens?this.parser.parseInline(a.tokens):"escaped"in a&&a.escaped?a.text:ae(a.text)}},am=class{strong({text:a}){return a}em({text:a}){return a}codespan({text:a}){return a}del({text:a}){return a}html({text:a}){return a}text({text:a}){return a}link({text:a}){return""+a}image({text:a}){return""+a}br(){return""}checkbox({raw:a}){return a}},an=class a{options;renderer;textRenderer;constructor(a){this.options=a||c,this.options.renderer=this.options.renderer||new al,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new am}static parse(b,c){return new a(c).parse(b)}static parseInline(b,c){return new a(c).parseInline(b)}parse(a){this.renderer.parser=this;let b="";for(let c=0;c<a.length;c++){let d=a[c];if(this.options.extensions?.renderers?.[d.type]){let a=this.options.extensions.renderers[d.type].call({parser:this},d);if(!1!==a||!["space","hr","heading","code","table","blockquote","list","html","def","paragraph","text"].includes(d.type)){b+=a||"";continue}}switch(d.type){case"space":b+=this.renderer.space(d);break;case"hr":b+=this.renderer.hr(d);break;case"heading":b+=this.renderer.heading(d);break;case"code":b+=this.renderer.code(d);break;case"table":b+=this.renderer.table(d);break;case"blockquote":b+=this.renderer.blockquote(d);break;case"list":b+=this.renderer.list(d);break;case"checkbox":b+=this.renderer.checkbox(d);break;case"html":b+=this.renderer.html(d);break;case"def":b+=this.renderer.def(d);break;case"paragraph":b+=this.renderer.paragraph(d);break;case"text":b+=this.renderer.text(d);break;default:{let a='Token with "'+d.type+'" type was not found.';if(this.options.silent)return console.error(a),"";throw Error(a)}}}return b}parseInline(a,b=this.renderer){this.renderer.parser=this;let c="";for(let d=0;d<a.length;d++){let e=a[d];if(this.options.extensions?.renderers?.[e.type]){let a=this.options.extensions.renderers[e.type].call({parser:this},e);if(!1!==a||!["escape","html","link","image","strong","em","codespan","br","del","text"].includes(e.type)){c+=a||"";continue}}switch(e.type){case"escape":case"text":c+=b.text(e);break;case"html":c+=b.html(e);break;case"link":c+=b.link(e);break;case"image":c+=b.image(e);break;case"checkbox":c+=b.checkbox(e);break;case"strong":c+=b.strong(e);break;case"em":c+=b.em(e);break;case"codespan":c+=b.codespan(e);break;case"br":c+=b.br(e);break;case"del":c+=b.del(e);break;default:{let a='Token with "'+e.type+'" type was not found.';if(this.options.silent)return console.error(a),"";throw Error(a)}}}return c}},ao=class{options;block;constructor(a){this.options=a||c}static passThroughHooks=new Set(["preprocess","postprocess","processAllTokens","emStrongMask"]);static passThroughHooksRespectAsync=new Set(["preprocess","postprocess","processAllTokens"]);preprocess(a){return a}postprocess(a){return a}processAllTokens(a){return a}emStrongMask(a){return a}provideLexer(a=this.block){return a?ak.lex:ak.lexInline}provideParser(a=this.block){return a?an.parse:an.parseInline}},ap=new class{defaults=b();options=this.setOptions;parse=this.parseMarkdown(!0);parseInline=this.parseMarkdown(!1);Parser=an;Renderer=al;TextRenderer=am;Lexer=ak;Tokenizer=aj;Hooks=ao;constructor(...a){this.use(...a)}walkTokens(a,b){let c=[];for(let d of a)switch(c=c.concat(b.call(this,d)),d.type){case"table":for(let a of d.header)c=c.concat(this.walkTokens(a.tokens,b));for(let a of d.rows)for(let d of a)c=c.concat(this.walkTokens(d.tokens,b));break;case"list":c=c.concat(this.walkTokens(d.items,b));break;default:{let a=d;this.defaults.extensions?.childTokens?.[a.type]?this.defaults.extensions.childTokens[a.type].forEach(d=>{let e=a[d].flat(1/0);c=c.concat(this.walkTokens(e,b))}):a.tokens&&(c=c.concat(this.walkTokens(a.tokens,b)))}}return c}use(...a){let b=this.defaults.extensions||{renderers:{},childTokens:{}};return a.forEach(a=>{let c={...a};if(c.async=this.defaults.async||c.async||!1,a.extensions&&(a.extensions.forEach(a=>{if(!a.name)throw Error("extension name required");if("renderer"in a){let c=b.renderers[a.name];c?b.renderers[a.name]=function(...b){let d=a.renderer.apply(this,b);return!1===d&&(d=c.apply(this,b)),d}:b.renderers[a.name]=a.renderer}if("tokenizer"in a){if(!a.level||"block"!==a.level&&"inline"!==a.level)throw Error("extension level must be 'block' or 'inline'");let c=b[a.level];c?c.unshift(a.tokenizer):b[a.level]=[a.tokenizer],a.start&&("block"===a.level?b.startBlock?b.startBlock.push(a.start):b.startBlock=[a.start]:"inline"===a.level&&(b.startInline?b.startInline.push(a.start):b.startInline=[a.start]))}"childTokens"in a&&a.childTokens&&(b.childTokens[a.name]=a.childTokens)}),c.extensions=b),a.renderer){let b=this.defaults.renderer||new al(this.defaults);for(let c in a.renderer){if(!(c in b))throw Error(`renderer '${c}' does not exist`);if(["options","parser"].includes(c))continue;let d=a.renderer[c],e=b[c];b[c]=(...a)=>{let c=d.apply(b,a);return!1===c&&(c=e.apply(b,a)),c||""}}c.renderer=b}if(a.tokenizer){let b=this.defaults.tokenizer||new aj(this.defaults);for(let c in a.tokenizer){if(!(c in b))throw Error(`tokenizer '${c}' does not exist`);if(["options","rules","lexer"].includes(c))continue;let d=a.tokenizer[c],e=b[c];b[c]=(...a)=>{let c=d.apply(b,a);return!1===c&&(c=e.apply(b,a)),c}}c.tokenizer=b}if(a.hooks){let b=this.defaults.hooks||new ao;for(let c in a.hooks){if(!(c in b))throw Error(`hook '${c}' does not exist`);if(["options","block"].includes(c))continue;let d=a.hooks[c],e=b[c];ao.passThroughHooks.has(c)?b[c]=a=>{if(this.defaults.async&&ao.passThroughHooksRespectAsync.has(c))return(async()=>{let c=await d.call(b,a);return e.call(b,c)})();let f=d.call(b,a);return e.call(b,f)}:b[c]=(...a)=>{if(this.defaults.async)return(async()=>{let c=await d.apply(b,a);return!1===c&&(c=await e.apply(b,a)),c})();let c=d.apply(b,a);return!1===c&&(c=e.apply(b,a)),c}}c.hooks=b}if(a.walkTokens){let b=this.defaults.walkTokens,d=a.walkTokens;c.walkTokens=function(a){let c=[];return c.push(d.call(this,a)),b&&(c=c.concat(b.call(this,a))),c}}this.defaults={...this.defaults,...c}}),this}setOptions(a){return this.defaults={...this.defaults,...a},this}lexer(a,b){return ak.lex(a,b??this.defaults)}parser(a,b){return an.parse(a,b??this.defaults)}parseMarkdown(a){return(b,c)=>{let d={...c},e={...this.defaults,...d},f=this.onError(!!e.silent,!!e.async);if(!0===this.defaults.async&&!1===d.async)return f(Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof b>"u"||null===b)return f(Error("marked(): input parameter is undefined or null"));if("string"!=typeof b)return f(Error("marked(): input parameter is of type "+Object.prototype.toString.call(b)+", string expected"));if(e.hooks&&(e.hooks.options=e,e.hooks.block=a),e.async)return(async()=>{let c=e.hooks?await e.hooks.preprocess(b):b,d=await (e.hooks?await e.hooks.provideLexer(a):a?ak.lex:ak.lexInline)(c,e),f=e.hooks?await e.hooks.processAllTokens(d):d;e.walkTokens&&await Promise.all(this.walkTokens(f,e.walkTokens));let g=await (e.hooks?await e.hooks.provideParser(a):a?an.parse:an.parseInline)(f,e);return e.hooks?await e.hooks.postprocess(g):g})().catch(f);try{e.hooks&&(b=e.hooks.preprocess(b));let c=(e.hooks?e.hooks.provideLexer(a):a?ak.lex:ak.lexInline)(b,e);e.hooks&&(c=e.hooks.processAllTokens(c)),e.walkTokens&&this.walkTokens(c,e.walkTokens);let d=(e.hooks?e.hooks.provideParser(a):a?an.parse:an.parseInline)(c,e);return e.hooks&&(d=e.hooks.postprocess(d)),d}catch(a){return f(a)}}}onError(a,b){return c=>{if(c.message+=`
116
- Please report this to https://github.com/markedjs/marked.`,a){let a="<p>An error occurred:</p><pre>"+ae(c.message+"",!0)+"</pre>";return b?Promise.resolve(a):a}if(b)return Promise.reject(c);throw c}}};function aq(a,b){return ap.parse(a,b)}function ar(a,b){let c=[],d=a;for(;d.length>b;){let a=d.slice(0,b),e=[a.lastIndexOf("\n\n"),a.lastIndexOf("\n"),a.lastIndexOf(" ")].find(a=>a>b/2),f=e??b,g=d.charCodeAt(f-1);!e&&g>=55296&&g<=56319&&(f-=1),c.push(d.slice(0,f).trim()),d=d.slice(f).trim()}return d&&c.push(d),c}function as(a,b){var c,d,e,f,g,h,i;switch(a.type){case"heading":return c=at(a.tokens??[],b),d=a.depth,"discord"===(e=b)&&d<=3?`${"#".repeat(d)} ${c}`:av(c,"strong",e);case"paragraph":return at(a.tokens??[],b);case"text":return a.tokens?at(a.tokens,b):ax(az(a.text),b);case"list":return function a(b,c,d){return b.items.map((e,f)=>{let g=b.ordered?`${Number(b.start||1)+f}.`:"discord"===c?"-":"•",h=e.task?e.checked?"☑ ":"☐ ":"",[i,...j]=e.tokens.filter(a=>"checkbox"!==a.type),k=`${d} `;return[`${d}${g} ${h}${i?as(i,c):""}`,...j.map(b=>"list"===b.type?a(b,c,k):as(b,c).replace(/^/gm,k))].filter(a=>a.trim()).join("\n")}).join("\n")}(a,b,"");case"blockquote":return f=(a.tokens??[]).map(a=>as(a,b)).filter(Boolean).join("\n"),g=b,f?"telegram"===g?`<blockquote>${f}</blockquote>`:"plain"===g?f:f.replace(/^/gm,"> "):"";case"table":let j;return h=a,i=b,[av((j=a=>a.map(a=>at(a.tokens,i)).join(" · "))(h.header),"strong",i),...h.rows.map(j)].join("\n");case"code":return aw(a.lang??"",a.text,b);case"html":return ax(az(a.text.replace(/<[^>]*>/g,"")).trim(),b);default:return""}}function at(a,b){return a.map(a=>{switch(a.type){case"text":return a.tokens?at(a.tokens,b):ax(az(a.text),b);case"escape":return ax(a.text,b);case"strong":case"em":case"del":return av(at(a.tokens??[],b),a.type,b);case"codespan":var c,d;return c=a.text,"telegram"===(d=b)?`<code>${ax(c,d)}</code>`:"slack"===d?`\`${ax(c,d)}\``:"discord"===d?c.includes("`")?`\`\` ${c} \`\``:`\`${c}\``:c;case"link":var e=a,f=b;let g=at(e.tokens,f);if(!/^(https?|mailto):/i.test(e.href))return g;let h=e.text===e.href;switch(f){case"telegram":return`<a href="${ax(e.href,f).replaceAll('"',"&quot;")}">${g}</a>`;case"discord":return h?e.href:`[${g}](${e.href.replaceAll(")","%29")})`;case"slack":return h?`<${e.href}>`:`<${e.href}|${g}>`;default:return h?e.href:`${g} ${e.href}`}case"image":return ax(az(a.text),b);case"br":return"\n";case"html":return/^<br\s*\/?>$/i.test(a.text)?"\n":"";default:return"text"in a?ax(az(String(a.text)),b):""}}).join("")}aq.options=aq.setOptions=function(a){return ap.setOptions(a),aq.defaults=ap.defaults,c=aq.defaults,aq},aq.getDefaults=b,aq.defaults=c,aq.use=function(...a){return ap.use(...a),aq.defaults=ap.defaults,c=aq.defaults,aq},aq.walkTokens=function(a,b){return ap.walkTokens(a,b)},aq.parseInline=ap.parseInline,aq.Parser=an,aq.parser=an.parse,aq.Renderer=al,aq.TextRenderer=am,aq.Lexer=ak,aq.lexer=ak.lex,aq.Tokenizer=aj,aq.Hooks=ao,aq.parse=aq,aq.options,aq.setOptions,aq.use,aq.walkTokens,aq.parseInline,an.parse,ak.lex;let au={telegram:{strong:["<b>","</b>"],em:["<i>","</i>"],del:["<s>","</s>"]},discord:{strong:["**","**"],em:["*","*"],del:["~~","~~"]},slack:{strong:["*","*"],em:["_","_"],del:["~","~"]}};function av(a,b,c){if(!a||"plain"===c)return a;let[d,e]=au[c][b];return`${d}${a}${e}`}function aw(a,b,c){return"telegram"===c?a?`<pre><code class="language-${ax(a,c)}">${ax(b,c)}</code></pre>`:`<pre>${ax(b,c)}</pre>`:"discord"===c?`\`\`\`${a}
116
+ Please report this to https://github.com/markedjs/marked.`,a){let a="<p>An error occurred:</p><pre>"+ae(c.message+"",!0)+"</pre>";return b?Promise.resolve(a):a}if(b)return Promise.reject(c);throw c}}};function aq(a,b){return ap.parse(a,b)}function ar(a,b){let c=[],d=a;for(;d.length>b;){let a=d.slice(0,b),e=[a.lastIndexOf("\n\n"),a.lastIndexOf("\n"),a.lastIndexOf(" ")].find(a=>a>b/2),f=e??b,g=d.charCodeAt(f-1);!e&&g>=55296&&g<=56319&&(f-=1),c.push(d.slice(0,f).trim()),d=d.slice(f).trim()}return d&&c.push(d),c}function as(a,b){var c,d,e,f,g,h,i;switch(a.type){case"heading":return c=at(a.tokens??[],b),d=a.depth,"discord"===(e=b)&&d<=3?`${"#".repeat(d)} ${c}`:av(c,"strong",e);case"paragraph":return at(a.tokens??[],b);case"text":return a.tokens?at(a.tokens,b):ay(aA(a.text),b);case"list":return function a(b,c,d){return b.items.map((e,f)=>{let g=b.ordered?`${Number(b.start||1)+f}.`:"discord"===c?"-":"•",h=e.task?e.checked?"☑ ":"☐ ":"",[i,...j]=e.tokens.filter(a=>"checkbox"!==a.type),k=`${d} `;return[`${d}${g} ${h}${i?as(i,c):""}`,...j.map(b=>"list"===b.type?a(b,c,k):as(b,c).replace(/^/gm,k))].filter(a=>a.trim()).join("\n")}).join("\n")}(a,b,"");case"blockquote":return f=(a.tokens??[]).map(a=>as(a,b)).filter(Boolean).join("\n"),g=b,f?"telegram"===g?`<blockquote>${f}</blockquote>`:"plain"===g?f:f.replace(/^/gm,"> "):"";case"table":let j;return h=a,i=b,[av((j=a=>a.map(a=>at(a.tokens,i)).join(" · "))(h.header),"strong",i),...h.rows.map(j)].join("\n");case"code":return aw(a.lang??"",a.text,b);case"html":return ay(aA(a.text.replace(/<[^>]*>/g,"")).trim(),b);default:return""}}function at(a,b){return a.map(a=>{switch(a.type){case"text":return a.tokens?at(a.tokens,b):ay(aA(a.text),b);case"escape":return ay(a.text,b);case"strong":case"em":case"del":return av(at(a.tokens??[],b),a.type,b);case"codespan":var c,d;return c=a.text,"telegram"===(d=b)?`<code>${ay(c,d)}</code>`:"slack"===d?`\`${ay(c,d)}\``:"discord"===d?c.includes("`")?`\`\` ${c} \`\``:`\`${c}\``:c;case"link":var e=a,f=b;let g=at(e.tokens,f)||ay(ax(e.href),f);if(!/^(https?|mailto):/i.test(e.href))return g;let h=e.text===e.href;switch(f){case"telegram":return`<a href="${ay(e.href,f).replaceAll('"',"&quot;")}">${g}</a>`;case"discord":return h?e.href:`[${g}](${e.href.replaceAll(")","%29")})`;case"slack":return h?`<${e.href}>`:`<${e.href}|${g}>`;default:return h?e.href:`${g} ${e.href}`}case"image":return ay(aA(a.text)||ax(a.href),b);case"br":return"\n";case"html":return/^<br\s*\/?>$/i.test(a.text)?"\n":"";default:return"text"in a?ay(aA(String(a.text)),b):""}}).join("")}aq.options=aq.setOptions=function(a){return ap.setOptions(a),aq.defaults=ap.defaults,c=aq.defaults,aq},aq.getDefaults=b,aq.defaults=c,aq.use=function(...a){return ap.use(...a),aq.defaults=ap.defaults,c=aq.defaults,aq},aq.walkTokens=function(a,b){return ap.walkTokens(a,b)},aq.parseInline=ap.parseInline,aq.Parser=an,aq.parser=an.parse,aq.Renderer=al,aq.TextRenderer=am,aq.Lexer=ak,aq.lexer=ak.lex,aq.Tokenizer=aj,aq.Hooks=ao,aq.parse=aq,aq.options,aq.setOptions,aq.use,aq.walkTokens,aq.parseInline,an.parse,ak.lex;let au={telegram:{strong:["<b>","</b>"],em:["<i>","</i>"],del:["<s>","</s>"]},discord:{strong:["**","**"],em:["*","*"],del:["~~","~~"]},slack:{strong:["*","*"],em:["_","_"],del:["~","~"]}};function av(a,b,c){if(!a||"plain"===c)return a;let[d,e]=au[c][b];return`${d}${a}${e}`}function aw(a,b,c){return"telegram"===c?a?`<pre><code class="language-${ay(a,c)}">${ay(b,c)}</code></pre>`:`<pre>${ay(b,c)}</pre>`:"discord"===c?`\`\`\`${a}
117
117
  ${b}
118
118
  \`\`\``:"slack"===c?`\`\`\`
119
- ${ax(b,c)}
120
- \`\`\``:b}function ax(a,b){return"telegram"===b||"slack"===b?a.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;"):"discord"===b?a.replace(/[\\*_~`|>[\]]/g,"\\$&").replace(/^(\s*)(#|-|\+|\d+\.)(?=\s)/gm,"$1\\$2"):a}let ay={amp:"&",lt:"<",gt:">",quot:'"',apos:"'",nbsp:" "};function az(a){return a.replace(/&(#x[\da-f]+|#\d+|[a-z]+);/gi,(a,b)=>{if("#"!==b[0])return ay[b.toLowerCase()]??a;let c="x"===b[1].toLowerCase()?Number.parseInt(b.slice(2),16):Number(b.slice(1));return c>0&&c<=1114111?String.fromCodePoint(c):a})}a.s(["chatPieces",0,function(a,b,c){let d="plain"in a?[{kind:"text",drawn:ax(a.plain,b),words:a.plain}]:new ak({gfm:!0}).lex(a.markdown).flatMap(a=>(function(a,b){if("code"===a.type)return[{kind:"code",lang:a.lang??"",body:a.text}];let c=as(a,b);return c?[{kind:"text",drawn:c,words:as(a,"plain")}]:[]})(a,b)),e=[],f="",g=a=>{if(f&&f.length+2+a.length<=c){f+=`
119
+ ${ay(b,c)}
120
+ \`\`\``:b}function ax(a){try{let b=new URL(a,"http://here"),c=b.searchParams.get("path")??b.pathname;return decodeURIComponent(c.split("/").filter(Boolean).pop()??"")}catch{return a.split("/").pop()??""}}function ay(a,b){return"telegram"===b||"slack"===b?a.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;"):"discord"===b?a.replace(/[\\*_~`|>[\]]/g,"\\$&").replace(/^(\s*)(#|-|\+|\d+\.)(?=\s)/gm,"$1\\$2"):a}let az={amp:"&",lt:"<",gt:">",quot:'"',apos:"'",nbsp:" "};function aA(a){return a.replace(/&(#x[\da-f]+|#\d+|[a-z]+);/gi,(a,b)=>{if("#"!==b[0])return az[b.toLowerCase()]??a;let c="x"===b[1].toLowerCase()?Number.parseInt(b.slice(2),16):Number(b.slice(1));return c>0&&c<=1114111?String.fromCodePoint(c):a})}a.s(["chatPieces",0,function(a,b,c){let d="plain"in a?[{kind:"text",drawn:ay(a.plain,b),words:a.plain}]:new ak({gfm:!0}).lex(a.markdown).flatMap(a=>(function(a,b){if("code"===a.type)return[{kind:"code",lang:a.lang??"",body:a.text}];let c=as(a,b);return c?[{kind:"text",drawn:c,words:as(a,"plain")}]:[]})(a,b)),e=[],f="",g=a=>{if(f&&f.length+2+a.length<=c){f+=`
121
121
 
122
- ${a}`;return}f&&e.push(f),f=a};for(let a of d){let d="code"===a.kind?aw(a.lang,a.body,b):a.drawn;if(d.length<=c)g(d);else if("code"===a.kind)for(let d of function(a,b,c,d){let e=d-aw(a,"",c).length,f=b.split("\n").flatMap(a=>a.length>e?ar(a,e):[a]),g=[],h=[];for(let b of f)h.length&&aw(a,[...h,b].join("\n"),c).length>d&&(g.push(aw(a,h.join("\n"),c)),h=[]),h.push(b);return h.length&&g.push(aw(a,h.join("\n"),c)),g}(a.lang,a.body,b,c))g(d);else for(let d of function a(b,c,d){return ar(b,d).flatMap(b=>{let e=ax(b,c);return e.length<=d||b.length<2?[e]:a(b,c,Math.floor(d*b.length/e.length))})}(a.words,b,c))g(d)}return f&&e.push(f),e.length?e:[ax("…",b)]},"literal",0,a=>a.replace(/[\\`*_{}[\]()#+\-.!|~<>]/g,"\\$&")],465584)},242104,a=>{"use strict";a.s(["runSocket",0,function(a,b,c){return new Promise((d,e)=>{let f=new WebSocket(a),g=a=>{f.readyState===WebSocket.OPEN&&f.send(JSON.stringify(a))},h=!1,i=a=>{h||(h=!0,c.removeEventListener("abort",k),d(a))},j=(a,b)=>{i({code:a,reason:b}),f.close(a,b)},k=()=>j(1e3,"");c.addEventListener("abort",k,{once:!0}),f.addEventListener("message",a=>{try{b.message(JSON.parse(String(a.data)),g,j)}catch{}}),f.addEventListener("error",()=>{f.readyState===WebSocket.OPEN||h||(h=!0,c.removeEventListener("abort",k),e(Error(`Could not connect to ${new URL(a).host}`)))}),f.addEventListener("close",a=>i({code:a.code,reason:a.reason}))})}])},479286,a=>{"use strict";var b=a.i(936292),c=a.i(465584),d=a.i(242104);let e="https://discord.com/api/v10",f={4004:"Discord did not take the bot token: it was reset or mistyped. Reset it on the application's Bot page and paste the new one here.",4013:"Discord refused the intents this bot asked for.",4014:"Discord refused an intent this bot is not allowed — check the bot's page."};a.s(["createDiscord",0,function(a){async function g(c,d,f){let g=f instanceof FormData;for(let h=0;;h++){let i=await fetch(`${e}${d}`,{method:c,headers:{authorization:`Bot ${a}`,...g||!f?{}:{"content-type":"application/json"}},body:g?f:f?JSON.stringify(f):void 0}).catch(a=>{throw Error(`Could not reach ${new URL(e).host}`,{cause:a})});if(i.ok)return 204===i.status?null:await i.json();let j=await i.json().catch(()=>null);if(429===i.status&&await (0,b.waitOut)(j?.retry_after,h))continue;let k=j?.message??`Discord answered ${i.status}`;throw 401===i.status?new b.ChannelRefusal(k):Error(k)}}let h=a=>{let b=a.length<=5?1:5,c=[];for(let d=0;d<a.length&&c.length<5;d+=b)c.push({type:1,components:a.slice(d,d+b).map(a=>({type:2,style:2,label:a.text.slice(0,80),custom_id:a.data}))});return c};return{limits:{take:1/0,file:0x1400000,picture:0x1400000},async listen(c,e){let h,i=null,j=!0;try{let k=await (0,d.runSocket)("wss://gateway.discord.gg/?v=10&encoding=json",{message(b,d,e){let{op:f,d:k,s:l,t:m}=b;if(null!==l&&(i=l),10===f){let b=k.heartbeat_interval;h=setInterval(()=>{if(!j)return e(4e3,"Discord stopped answering");j=!1,d({op:1,d:i})},b),d({op:2,d:{token:a,intents:4096,properties:{os:process.platform,browser:"thursday",device:"thursday"}}})}else if(1===f)d({op:1,d:i});else if(11===f)j=!0;else if(7===f||9===f)e(4e3,"Discord asked for a new connection");else if(0===f&&"READY"===m){let a;c.ready(k.user.username,(a=k.application?.id)?`https://discord.com/oauth2/authorize?client_id=${a}&scope=bot&permissions=0`:null,k.user.id)}else if(0===f&&m){var n,o;let a=(n=m,o=k,"MESSAGE_CREATE"===n?o.guild_id||o.author.bot?null:{kind:"message",chat:o.channel_id,name:o.author.global_name||o.author.username,handle:`@${o.author.username}`,words:o.content.trim(),files:(o.attachments??[]).map(a=>({name:a.filename,size:a.size,fetch:async()=>{let b=await fetch(a.url);if(!b.ok)throw Error(`Discord answered ${b.status} for the file`);return new File([await b.arrayBuffer()],a.filename,{type:a.content_type??""})}})),unreadable:!1}:"INTERACTION_CREATE"===n?3!==o.type||o.guild_id?null:(g("POST",`/interactions/${o.id}/${o.token}/callback`,{type:6}).catch(()=>{}),{kind:"press",chat:o.channel_id,data:o.data?.custom_id??"",under:o.message?{id:o.message.id,text:o.message.content}:null}):null);a&&c.incoming(a)}}},e),l=f[k.code];if(l)throw new b.ChannelRefusal(l);if(!e.aborted)throw Error(k.reason||`Discord closed the connection (${k.code})`)}finally{clearInterval(h)}},async say(a,b,d){let e=(0,c.chatPieces)(b,"discord",1900);for(let[b,c]of e.entries())await g("POST",`/channels/${a}/messages`,{content:c,flags:4,allowed_mentions:{parse:[]},...d?.length&&b===e.length-1?{components:h(d)}:{}})},async typing(a){await g("POST",`/channels/${a}/typing`).catch(()=>{})},async settle(a,b,d){let e=`
122
+ ${a}`;return}f&&e.push(f),f=a};for(let a of d){let d="code"===a.kind?aw(a.lang,a.body,b):a.drawn;if(d.length<=c)g(d);else if("code"===a.kind)for(let d of function(a,b,c,d){let e=d-aw(a,"",c).length,f=b.split("\n").flatMap(a=>a.length>e?ar(a,e):[a]),g=[],h=[];for(let b of f)h.length&&aw(a,[...h,b].join("\n"),c).length>d&&(g.push(aw(a,h.join("\n"),c)),h=[]),h.push(b);return h.length&&g.push(aw(a,h.join("\n"),c)),g}(a.lang,a.body,b,c))g(d);else for(let d of function a(b,c,d){return ar(b,d).flatMap(b=>{let e=ay(b,c);return e.length<=d||b.length<2?[e]:a(b,c,Math.floor(d*b.length/e.length))})}(a.words,b,c))g(d)}return f&&e.push(f),e.length?e:[ay("…",b)]},"literal",0,a=>a.replace(/[\\`*_{}[\]()#+\-.!|~<>]/g,"\\$&")],465584)},242104,a=>{"use strict";a.s(["runSocket",0,function(a,b,c){return new Promise((d,e)=>{let f=new WebSocket(a),g=a=>{f.readyState===WebSocket.OPEN&&f.send(JSON.stringify(a))},h=!1,i=a=>{h||(h=!0,c.removeEventListener("abort",k),d(a))},j=(a,b)=>{i({code:a,reason:b}),f.close(a,b)},k=()=>j(1e3,"");c.addEventListener("abort",k,{once:!0}),f.addEventListener("message",a=>{try{b.message(JSON.parse(String(a.data)),g,j)}catch{}}),f.addEventListener("error",()=>{f.readyState===WebSocket.OPEN||h||(h=!0,c.removeEventListener("abort",k),e(Error(`Could not connect to ${new URL(a).host}`)))}),f.addEventListener("close",a=>i({code:a.code,reason:a.reason}))})}])},479286,a=>{"use strict";var b=a.i(936292),c=a.i(465584),d=a.i(242104);let e="https://discord.com/api/v10",f={4004:"Discord did not take the bot token: it was reset or mistyped. Reset it on the application's Bot page and paste the new one here.",4013:"Discord refused the intents this bot asked for.",4014:"Discord refused an intent this bot is not allowed — check the bot's page."};a.s(["createDiscord",0,function(a){async function g(c,d,f){let g=f instanceof FormData;for(let h=0;;h++){let i=await fetch(`${e}${d}`,{method:c,headers:{authorization:`Bot ${a}`,...g||!f?{}:{"content-type":"application/json"}},body:g?f:f?JSON.stringify(f):void 0}).catch(a=>{throw Error(`Could not reach ${new URL(e).host}`,{cause:a})});if(i.ok)return 204===i.status?null:await i.json();let j=await i.json().catch(()=>null);if(429===i.status&&await (0,b.waitOut)(j?.retry_after,h))continue;let k=j?.message??`Discord answered ${i.status}`;throw 401===i.status?new b.ChannelRefusal(k):Error(k)}}let h=a=>{let b=a.length<=5?1:5,c=[];for(let d=0;d<a.length&&c.length<5;d+=b)c.push({type:1,components:a.slice(d,d+b).map(a=>({type:2,style:2,label:a.text.slice(0,80),custom_id:a.data}))});return c};return{limits:{take:1/0,file:0x1400000,picture:0x1400000},async listen(c,e){let h,i=null,j=!0;try{let k=await (0,d.runSocket)("wss://gateway.discord.gg/?v=10&encoding=json",{message(b,d,e){let{op:f,d:k,s:l,t:m}=b;if(null!==l&&(i=l),10===f){let b=k.heartbeat_interval;h=setInterval(()=>{if(!j)return e(4e3,"Discord stopped answering");j=!1,d({op:1,d:i})},b),d({op:2,d:{token:a,intents:4096,properties:{os:process.platform,browser:"thursday",device:"thursday"}}})}else if(1===f)d({op:1,d:i});else if(11===f)j=!0;else if(7===f||9===f)e(4e3,"Discord asked for a new connection");else if(0===f&&"READY"===m){let a;c.ready(k.user.username,(a=k.application?.id)?`https://discord.com/oauth2/authorize?client_id=${a}&scope=bot&permissions=0`:null,k.user.id)}else if(0===f&&m){var n,o;let a=(n=m,o=k,"MESSAGE_CREATE"===n?o.guild_id||o.author.bot?null:{kind:"message",chat:o.channel_id,name:o.author.global_name||o.author.username,handle:`@${o.author.username}`,words:o.content.trim(),files:(o.attachments??[]).map(a=>({name:a.filename,size:a.size,fetch:async()=>{let b=await fetch(a.url);if(!b.ok)throw Error(`Discord answered ${b.status} for the file`);return new File([await b.arrayBuffer()],a.filename,{type:a.content_type??""})}})),unreadable:!1}:"INTERACTION_CREATE"===n?3!==o.type||o.guild_id?null:(g("POST",`/interactions/${o.id}/${o.token}/callback`,{type:6}).catch(()=>{}),{kind:"press",chat:o.channel_id,data:o.data?.custom_id??"",under:o.message?{id:o.message.id,text:o.message.content}:null}):null);a&&c.incoming(a)}}},e),l=f[k.code];if(l)throw new b.ChannelRefusal(l);if(!e.aborted)throw Error(k.reason||`Discord closed the connection (${k.code})`)}finally{clearInterval(h)}},async say(a,b,d){let e=(0,c.chatPieces)(b,"discord",1900);for(let[b,c]of e.entries())await g("POST",`/channels/${a}/messages`,{content:c,flags:4,allowed_mentions:{parse:[]},...d?.length&&b===e.length-1?{components:h(d)}:{}})},async typing(a){await g("POST",`/channels/${a}/typing`).catch(()=>{})},async settle(a,b,d){let e=`
123
123
 
124
124
  → ${(0,c.chatPieces)({plain:d},"discord",1900)[0]}`;await g("PATCH",`/channels/${a}/messages/${b.id}`,{content:`${b.text.slice(0,1900-e.length)}${e}`,components:[]}).catch(()=>{})},async sendFiles(a,b){for(let c=0;c<b.length;c+=10){let d=b.slice(c,c+10),e=new FormData;for(let[a,b]of(e.set("payload_json",JSON.stringify({attachments:d.map((a,b)=>({id:b,filename:a.name}))})),d.entries()))e.set(`files[${a}]`,new Blob([b.bytes]),b.name);await g("POST",`/channels/${a}/messages`,e)}}}}])},225310,a=>{"use strict";var b=a.i(912714),c=a.i(660526),d=a.i(750227),e=a.i(569572),f=a.i(684321),g=a.i(821415),h=a.i(176668),i=a.i(182248);let j=(0,d.join)(e.APP_DIR,e.PATHS.skills.default,"artifact","runtime","render.mjs"),k={viewport:{width:412,height:839},deviceScaleFactor:2},l=(0,i.PromiseChain)();async function m(a){let f=await (0,b.mkdtemp)((0,d.join)((0,c.tmpdir)(),"thursday-pictures-")),h=(0,d.join)(f,"browser.json");await (0,b.writeFile)(h,JSON.stringify({browser:{contextOptions:k}}));let i={PLAYWRIGHT_CLI_SESSION:"reach-pictures",PLAYWRIGHT_MCP_BROWSER:"chromium",PLAYWRIGHT_MCP_ISOLATED:"true",PLAYWRIGHT_MCP_CONFIG:h,RENDER:j,PAGE:a,OUT:f,NAME:(0,d.basename)(a,(0,d.extname)(a))},l=await (0,g.openWorkspace)();try{let a=await l.exec(`node "$RENDER" "$PAGE" --out "$OUT" --name "$NAME" --shot --most ${e.REACH.pictures}`,{env:i,timeoutMs:e.REACH.drawMs});if(0!==a.exitCode)throw Error(a.stderr.trim().split("\n").at(-1)||"no pictures");let c=(await (0,b.readdir)(f)).filter(a=>a.endsWith(".png")).sort();return await Promise.all(c.map(async a=>({bytes:await (0,b.readFile)((0,d.join)(f,a)),name:a,picture:!0})))}finally{await l.exec("playwright-cli close",{env:i,timeoutMs:15e3}).catch(()=>{}),await (0,b.rm)(f,{recursive:!0,force:!0})}}a.s(["picturesOf",0,function(a){return["html","htm"].includes((0,f.extensionOf)(a))?l(()=>m(a)).catch(b=>(h.logger.warn(`reach: no pictures of ${(0,d.basename)(a)}`,b),[])):Promise.resolve([])}])},129167,a=>{"use strict";var b=a.i(936292),c=a.i(465584),d=a.i(242104);let e="https://slack.com/api",f=new Set(["invalid_auth","not_authed","account_inactive","token_revoked","not_allowed_token_type","missing_scope"]);a.s(["createSlack",0,function(a,g){async function h(c,d,i=g){for(let g=0;;g++){let h=await fetch(`${e}/${c}`,{method:"POST",headers:{authorization:`Bearer ${i}`,"content-type":"application/json; charset=utf-8"},body:JSON.stringify(d)}).catch(a=>{throw Error(`Could not reach ${new URL(e).host}`,{cause:a})}),j=h.headers.get("retry-after");if(429===h.status&&await (0,b.waitOut)(null===j?null:Number(j),g))continue;let k=await h.json().catch(()=>null);if(k?.ok)return k;let l=k?.error??`http_${h.status}`;if(!f.has(l))throw Error(`Slack answered ${l} to ${c}`);let m=i===a,n=k?.needed??"a scope";throw new b.ChannelRefusal("missing_scope"===l?m?`Slack says this app-level token lacks ${n} — generate one with it under Basic Information › App-Level Tokens and paste it here.`:`Slack says the app lacks a permission (${n}) — make it from the manifest in the guide.`:m?`Slack turned the app-level token away (${l}). Generate a new one under Basic Information › App-Level Tokens and paste it here.`:`Slack turned the bot token away (${l}). Copy the Bot User OAuth Token again from Install App and paste it here.`,+!m)}}let i=new Map;async function j(a){let b=i.get(a);if(b)return b;let c=await h("users.info",{user:a}).then(b=>({name:b.user?.real_name||b.user?.name||a,handle:b.user?.name?`@${b.user.name}`:null})).catch(()=>({name:a,handle:null}));return i.set(a,c),c}async function k(a,b){if("events_api"===a){let a=b.event??{},c=!a.subtype||"file_share"===a.subtype;if("message"!==a.type||"im"!==a.channel_type||!c||a.bot_id||!a.user||!a.channel)return null;let d=await j(a.user);return{kind:"message",chat:a.channel,name:d.name,handle:d.handle,words:(a.text??"").trim(),files:(a.files??[]).flatMap(a=>{let b=a.url_private_download;if(!b)return[];let c=a.name??"file";return[{name:c,size:a.size,fetch:async()=>{let d=await fetch(b,{headers:{authorization:`Bearer ${g}`}});if(!d.ok)throw Error(`Slack answered ${d.status} for the file`);return new File([await d.arrayBuffer()],c,{type:a.mimetype??""})}}]}),unreadable:!1}}return"interactive"===a&&"block_actions"===b.type?b.channel?.id?{kind:"press",chat:b.channel.id,data:b.actions?.[0]?.value??"",under:b.message?.ts&&b.message.text?{id:b.message.ts,text:b.message.text}:null}:null:null}return{limits:{take:1/0,file:0x40000000,picture:0x40000000},async listen(b,c){let e=await h("auth.test",{}),{url:f}=await h("apps.connections.open",{},a);b.ready(e.user?`@${e.user}`:"the app",null,e.bot_id??e.user_id??"");let g=await (0,d.runSocket)(f,{message(a,c){let{type:d,envelope_id:e,payload:f}=a;e&&c({envelope_id:e}),d&&f&&k(d,f).then(a=>{a&&b.incoming(a)})}},c);if(!c.aborted)throw Error(`Slack closed the connection (${g.code})`)},async say(a,b,d){let e=(0,c.chatPieces)(b,"slack",2900);for(let[b,c]of e.entries()){let f=d?.length&&b===e.length-1;await h("chat.postMessage",{channel:a,text:c,unfurl_links:!1,unfurl_media:!1,...f?{blocks:[{type:"section",text:{type:"mrkdwn",text:c}},{type:"actions",elements:d.slice(0,25).map((a,b)=>({type:"button",action_id:`choice_${b}`,text:{type:"plain_text",text:a.text.slice(0,75)},value:a.data}))}]}:{}})}},async typing(){},async settle(a,b,d){let e=`
125
125
 
126
126
  → ${(0,c.chatPieces)({plain:d},"slack",2900)[0]}`;await h("chat.update",{channel:a,ts:b.id,text:`${b.text.slice(0,2900-e.length)}${e}`,blocks:[]}).catch(()=>{})},async sendFiles(a,b){let c=[];for(let{bytes:a,name:d}of b){let b=new URLSearchParams({filename:d,length:String(a.byteLength)}),f=await fetch(`${e}/files.getUploadURLExternal`,{method:"POST",headers:{authorization:`Bearer ${g}`},body:b}),h=await f.json();if(!h.ok||!h.upload_url||!h.file_id)throw Error(`Slack answered ${h.error??f.status} to the upload`);let i=await fetch(h.upload_url,{method:"POST",body:new Blob([a])});if(!i.ok)throw Error(`Slack answered ${i.status} to the upload`);c.push({id:h.file_id,title:d})}c.length&&await h("files.completeUploadExternal",{files:c,channel_id:a})}}}])},319261,a=>{"use strict";var b=a.i(569572),c=a.i(936292),d=a.i(465584);let e="https://api.telegram.org",f={take:0x1400000,file:0x3200000,picture:0xa00000};class g extends Error{status;constructor(a,b){super(a),this.status=b}}a.s(["createTelegram",0,function(a){async function h(b,d,f){let h=d instanceof FormData;for(let i=0;;i++){let j=await fetch(`${e}/bot${a}/${b}`,{method:"POST",signal:f,...h?{body:d}:{headers:{"content-type":"application/json"},body:JSON.stringify(d??{})}}).catch(a=>{throw Error(`Could not reach ${new URL(e).host}`,{cause:a})}),k=await j.json().catch(()=>null);if(k?.ok)return k.result;if(429===j.status&&await (0,c.waitOut)(k?.parameters?.retry_after,i))continue;let l=k?.description??`Telegram answered ${j.status}`;if(401===j.status)throw new c.ChannelRefusal(`Telegram said “${l}”: this token was revoked or mistyped. Get it again from @BotFather and paste it here.`);throw new g(l,j.status)}}async function i(b,c,d){let{file_path:f}=await h("getFile",{file_id:b});if(!f)throw Error("Telegram did not say where the file is");let g=await fetch(`${e}/file/bot${a}/${f}`);if(!g.ok)throw Error(`Telegram answered ${g.status} for the file`);let i=f.includes(".")?f.slice(f.lastIndexOf(".")):"";return new File([await g.arrayBuffer()],c.includes(".")?c:`${c}${i}`,d?{type:d}:void 0)}let j=0;async function k(a,b){let c=new FormData;if(c.set("chat_id",a),1===b.length){c.set("photo",new Blob([b[0].bytes]),b[0].name),await h("sendPhoto",c);return}for(let[a,d]of(c.set("media",JSON.stringify(b.map((a,b)=>({type:"photo",media:`attach://p${b}`})))),b.entries()))c.set(`p${a}`,new Blob([d.bytes]),d.name);await h("sendMediaGroup",c)}return{limits:f,async listen(a,c){let d=await h("getMe",void 0,c);for(a.ready(d.username?`@${d.username}`:d.first_name??"the bot",d.username?`https://t.me/${d.username}`:null,String(d.id));!c.aborted;)for(let d of(await h("getUpdates",{offset:j,timeout:b.REACH.pollSeconds,allowed_updates:["message","callback_query"]},AbortSignal.any([c,AbortSignal.timeout((b.REACH.pollSeconds+15)*1e3)])))){j=d.update_id+1;let b=function(a){let b,c=a.callback_query;if(c)return h("answerCallbackQuery",{callback_query_id:c.id}).catch(()=>{}),{kind:"press",chat:String(c.from.id),data:c.data??"",under:c.message?.text?{id:String(c.message.message_id),text:c.message.text,keep:c.message.entities}:null};let d=a.message;if(!d?.from||"private"!==d.chat.type)return null;let e=d.photo?.at(-1),f=d.document?{id:d.document.file_id,name:d.document.file_name??"file",type:d.document.mime_type,size:d.document.file_size}:e?{id:e.file_id,name:`photo-${d.message_id}`,type:"",size:e.file_size}:null;return{kind:"message",chat:String(d.chat.id),name:(b=d.from,[b?.first_name,b?.last_name].filter(Boolean).join(" ")||(b?.username?`@${b.username}`:"Someone")),handle:d.from.username?`@${d.from.username}`:null,words:(d.text??d.caption??"").trim(),files:f?[{name:f.name,size:f.size,fetch:()=>i(f.id,f.name,f.type)}]:[],unreadable:!!(d.voice||d.audio||d.video)}}(d);b&&a.incoming(b)}},async say(a,b,c){let e=(0,d.chatPieces)(b,"telegram",4e3);for(let[b,d]of e.entries())await h("sendMessage",{chat_id:a,text:d,parse_mode:"HTML",link_preview_options:{is_disabled:!0},...c?.length&&b===e.length-1?{reply_markup:{inline_keyboard:c.map(a=>[{text:a.text,callback_data:a.data}])}}:{}})},async typing(a){await h("sendChatAction",{chat_id:a,action:"typing"}).catch(()=>{})},async settle(a,b,c){await h("editMessageText",{chat_id:a,message_id:Number(b.id),text:`${b.text}
127
127
 
128
- → ${c}`,entities:b.keep,link_preview_options:{is_disabled:!0}}).catch(()=>{})},async sendFiles(a,b){let c=b.filter(a=>a.picture),d=b.filter(a=>!a.picture);for(let b=0;b<c.length;b+=10){let e=c.slice(b,b+10);await k(a,e).catch(a=>{if(!(a instanceof g&&400===a.status))throw a;d.unshift(...e)})}for(let b of d){let c=new FormData;c.set("chat_id",a),c.set("document",new Blob([b.bytes]),b.name),await h("sendDocument",c)}}}}])},233398,a=>a.a(async(b,c)=>{try{var d=a.i(666680),e=a.i(912714),f=a.i(203469),g=a.i(569572),h=a.i(875931),i=a.i(938934),j=a.i(346580),k=a.i(674986),l=a.i(839430),m=a.i(344853),n=a.i(725466),o=a.i(92706),p=a.i(569549),q=a.i(143699),r=a.i(626550),s=a.i(684321),t=a.i(821415),u=a.i(941981),v=a.i(706210),w=a.i(176668),x=a.i(293480),y=a.i(936292),z=a.i(465584),A=a.i(479286),B=a.i(225310),C=a.i(558067),D=a.i(129167),E=a.i(319261),F=b([h,k,l,m,n,p,q,u]);[h,k,l,m,n,p,q,u]=F.then?(await F)():F;let ad={telegram:a=>(0,E.createTelegram)(a),discord:a=>(0,A.createDiscord)(a),slack:(a,b)=>(0,D.createSlack)(a,b)},ae=globalThis,af=ae.__reach??={live:new Map,last:null,told:new Map,choices:new Map,listening:null,gone:null,looking:null,idle:null},ag=()=>f.appEvents.emit({type:"reach"});async function G(a){return await af.live.get(a)?.settled,H(a)}async function H(a){let b=await (0,n.readConfig)((0,C.reachPersonKey)(a));if(!b)return null;try{let a=JSON.parse(b);return"string"==typeof a.chat&&"string"==typeof a.name?{chat:a.chat,name:a.name,bot:"string"==typeof a.bot?a.bot:null}:null}catch{return null}}let ah=(a,b)=>(0,n.writeConfig)((0,C.reachPersonKey)(a),JSON.stringify(b));async function I(a){for(let b of a?[a]:C.REACH_CHANNELS){let c=af.live.get(b);c?.stop.abort(),af.live.delete(b),a&&c?.line&&await (0,p.endCall)(c.line.callId).catch(()=>{});let d=await Promise.all(C.REACH_KEYS[b].map(n.readConfig));if(!d.every(a=>!!a)){a&&await (0,n.removeConfig)((0,C.reachPersonKey)(b));continue}let e=a&&c?.id?await H(b):null;e&&null===e.bot&&c?.id&&await ah(b,{...e,bot:c.id});let f={name:b,channel:ad[b](...d),stop:new AbortController,bot:null,link:null,problem:null,refused:null,id:null,adopt:!a,settled:Promise.resolve(),asking:null,held:[],line:null,calls:new Set,busy:!1,notes:[]};af.live.set(b,f),J(f)}af.live.size&&(af.listening??=f.appEvents.subscribe(a=>{"threads"===a.type&&Z()}),af.gone??=f.presence.onGone(_),Z(),af.idle??=setInterval(()=>{S().catch(a=>w.logger.error("reach: idle lines",a))},g.REACH.idleMs).unref()),ag()}async function J(a){let{signal:b}=a.stop,c=b=>{a.problem!==b&&(a.problem=b,ag())};for(;!b.aborted;){try{await a.channel.listen({ready:(b,c,d)=>{a.bot=b,a.link=c,a.problem=null,a.id=d,a.settled=K(a,d).catch(b=>w.logger.error(`reach ${a.name}: who is let in`,b)),ag()},incoming:b=>void L(a,b).catch(b=>w.logger.error(`reach ${a.name}: what arrived`,b))},b)}catch(e){if(b.aborted)return;let d=e instanceof Error?e.message:String(e);if(e instanceof y.ChannelRefusal){w.logger.warn(`reach ${a.name}: ${d}`);let b=C.REACH_KEYS[a.name];return a.refused=b[e.token]??b[0],a.problem=d,ag()}c(d)}await new Promise(a=>setTimeout(a,g.REACH.retryMs))}}async function K(a,b){let c=await H(a.name);if(c&&c.bot!==b){if(null===c.bot&&a.adopt)return ah(a.name,{...c,bot:b});await (0,n.removeConfig)((0,C.reachPersonKey)(a.name)),ag()}}async function L(a,b){let c=await G(a.name);if("press"===b.kind){if(c?.chat!==b.chat)return;return ac(a,c,b.data,b.under)}return c?.chat===b.chat?N(a,c,b):c?a.channel.say(b.chat,{plain:"This Thursday already answers someone else."}):M(a,b)}async function M(a,b){if(a.asking&&a.asking.chat!==b.chat)return a.channel.say(b.chat,{plain:"Someone else is already waiting to be let in here. If that is not you, press Not them on the computer, then write again."});a.held.length<g.REACH.held&&a.held.push(b),a.asking||(a.asking={chat:b.chat,name:b.name,handle:b.handle,said:b.words,code:(0,d.randomInt)(10**g.REACH.codeDigits).toString().padStart(g.REACH.codeDigits,"0")},ag(),await a.channel.say(b.chat,{plain:`Almost there. Thursday is asking on your computer whether to let you in. Press Allow there only if it shows ${a.asking.code}, and she answers what you wrote.`}))}async function N(a,b,c){let d=await O(a,c);d&&V(a,b,d)}async function O(a,b){let{channel:c}=a;af.last=a.name;let{kept:d,lost:e}=await P(a,b.files);e.length&&await c.say(b.chat,{plain:e.map(({name:a,why:b})=>`${a} did not come through: ${b}.`).join("\n")}).catch(b=>w.logger.warn(`reach ${a.name}: could not say so`,b));let f=[b.words,...d].filter(Boolean).join("\n");return f?(e.length&&a.notes.push({text:`[Sent from their phone with what follows, and lost on the way: ${e.map(({name:a,why:b})=>`${a} (${b})`).join("; ")}. They have been told.]`,said:!1}),f):(b.unreadable&&!e.length&&await c.say(b.chat,{plain:"I can read words, pictures and files here — not voice or video yet. Write it instead."}),null)}async function P(a,b){let c=Math.min(a.channel.limits.take,g.REACH.fileBytes),d=[],e=b.filter(b=>!b.size||b.size<=c||(d.push({name:b.name,why:`it is ${aj(b.size)}, and the most taken from ${C.REACH_LABEL[a.name]} is ${aj(c)}`}),!1)),f=await Promise.allSettled(e.map(a=>a.fetch())),h=[];for(let[a,b]of f.entries())"fulfilled"===b.status?h.push(b.value):d.push({name:e[a].name,why:ai(b.reason)});if(!h.length)return{kept:[],lost:d};try{return{kept:await (0,u.keepGivenFiles)(h),lost:d}}catch(b){let a=ai(b);return{kept:[],lost:[...d,...h.map(b=>({name:b.name,why:a}))]}}}let ai=a=>a instanceof Error?a.message:String(a),aj=a=>`${Math.ceil(a/1048576)} MB`;async function Q(a,b,c){let d=af.live.get(a),e=ak(d,b,c);if(!d||!e)return;let f={chat:e.chat,name:e.name,bot:d.id};await ah(a,f),d.asking=null,ag();let g=d.held.splice(0);await d.channel.say(b,{plain:g.length?"You are in. Thursday answers what you wrote.":"You are in. Write here and Thursday answers."}).catch(b=>w.logger.warn(`reach ${a}: could not say so`,b));let h=[];for(let b of g){let c=await O(d,b).catch(b=>(w.logger.warn(`reach ${a}: what they wrote while waiting`,b),null));c&&h.push(c)}h.length&&V(d,f,h.join("\n"))}let ak=(a,b,c)=>a?.asking?.chat===b&&a.asking.code===c?a.asking:null;async function R(a){await (0,n.removeConfig)((0,C.reachPersonKey)(a));let b=af.live.get(a);b&&(b.notes=[],b.calls.clear(),await U(b)),ag()}async function S(){for(let a of af.live.values())a.line&&!a.busy&&await T(a.line)&&await U(a)}async function T(a){return!(Date.now()-a.lastAt<=g.REACH.idleMs)&&!(await (0,m.listCallJobs)([a.callId])).some(a=>"running"===a.status)}async function U(a){let b=a.line;a.line=null,b&&await (0,p.endCall)(b.callId).catch(()=>{})}function V(a,b,c){a.busy?a.notes.push({text:c,said:!0}):(a.busy=!0,(async()=>{try{for(let d=c;null!==d;){await W(a,b,d);let c=a.notes.filter(a=>a.said);a.notes=a.notes.filter(a=>!a.said),d=c.length?c.map(a=>a.text).join("\n"):null}}finally{a.busy=!1}})())}async function W(a,b,c){let{channel:d}=a;d.typing(b.chat).catch(()=>{});let e=setInterval(()=>void d.typing(b.chat).catch(()=>{}),4e3),f=a.notes.filter(a=>!a.said);a.notes=a.notes.filter(a=>a.said);try{let e=a.line;(!e||!await (0,p.isCallOpen)(e.callId)||await T(e))&&(await U(a),a.line={...await (0,q.openTextCall)(),messages:[],lastAt:0},a.calls.add(a.line.callId));let h=a.line,i=await (0,q.answerInWriting)({callId:h.callId,standing:h.standing,messages:[...h.messages,...f.map(a=>({role:"user",content:a.text})),{role:"user",content:c}],said:c,notes:()=>a.notes.splice(0)});h.messages=function(a){let b=Math.max(a.findLastIndex(a=>"user"===a.role),0),c=[...(0,j.asWords)(a.slice(0,b),(a,b)=>(0,r.toolLine)(a,JSON.stringify(b??{}))??a,a=>a.length>g.REACH.oldChars?`${a.slice(0,g.REACH.oldChars)}…`:a),...a.slice(b)];if(c.length<=g.REACH.messages)return c;let d=c.findIndex((a,b)=>b>=c.length-g.REACH.trimTo&&"user"===a.role);return d>0?c.slice(d):c}(i.messages),h.lastAt=Date.now();let k=[...new Set(i.did)].join(" · ");await d.say(b.chat,{markdown:[i.text,k&&`— ${(0,z.literal)(k)}`].filter(Boolean).join("\n\n")||"…"}),await X(a,b,i.text)}catch(e){a.notes.unshift(...f),a.line&&!a.line.lastAt&&await U(a);let c=(0,x.isPublicError)(e)?e.message:(0,h.modelErrorToString)(e);w.logger.warn(`reach ${a.name}: ${c}`),await d.say(b.chat,{plain:c}).catch(()=>{})}finally{clearInterval(e)}}async function X(a,b,c){let d=await (0,t.filesOnDisk)((0,s.pathsIn)(c),null),f=d.slice(0,Math.max(d.length-g.REACH.files,0)).map(a=>({name:a,why:`only ${g.REACH.files} files go with one answer`})),{limits:h}=a.channel,i=Math.min(h.file,g.REACH.fileBytes);for(let c of d.slice(-g.REACH.files)){let d=await (0,t.insideWorkspace)(c),g=d?await (0,e.stat)(d).catch(()=>null):null;if(d&&g){if(g.size>i){f.push({name:c,why:`it is ${aj(g.size)}, and the most that goes to ${C.REACH_LABEL[a.name]} is ${aj(i)}`});continue}try{await a.channel.sendFiles(b.chat,[...await (0,B.picturesOf)(d),{bytes:await (0,e.readFile)(d),name:c.split("/").pop()??"file",picture:"image"===(0,s.viewKindOf)(c)&&g.size<=h.picture}])}catch(b){w.logger.warn(`reach ${a.name}: could not send ${c}`,b),f.push({name:c,why:ai(b)})}}}f.length&&(await a.channel.say(b.chat,{plain:["Not sent — still on this computer:",...f.map(({name:a,why:b})=>`• ${a}: ${b}`)].join("\n")}).catch(b=>w.logger.warn(`reach ${a.name}: could not say so`,b)),a.notes.push({text:`[Named in what went to their phone, and not sent: ${f.map(({name:a,why:b})=>`${a} (${b})`).join("; ")}. They have been told.]`,said:!1}))}async function Y(){for(let a of[...af.last?[af.last]:[],...C.REACH_CHANNELS.filter(a=>a!==af.last)]){let b=af.live.get(a),c=b?await G(a):null;if(b&&c)return{live:b,person:c}}return null}let al=Date.now()-1e3*process.uptime();function Z(a=g.REACH.lookMs){af.looking??=setTimeout(()=>{af.looking=null,$().catch(a=>w.logger.error("reach: open work",a))},a)}async function $(){let a=al+g.BROWSER_GONE_MS-Date.now();if(a>0)return Z(a);let b=await Y();if(!b)return;let c=await (0,m.listInboxThreads)(),d=(0,o.openWork)(c).filter(a=>"progress"!==a.kind),e=new Set(d.map(a=>a.key));for(let a of af.told.keys())e.has(a)||af.told.delete(a);for(let[a,b]of af.choices)e.has((0,o.questionKey)(b.question))||af.choices.delete(a);let h=d.filter(a=>!af.told.has(a.key));if(!h.length)return;let i=await aa();for(let a of h){let d=c.find(b=>b.id===a.threadId);if(!d)continue;let e=i.get(a.threadId),g=e?await G(e.name):null,h=e&&g?{live:e,person:g}:!f.presence.watching&&(0,v.toDate)(d.updatedAt).getTime()>=al?b:null;af.told.set(a.key,{kind:a.kind,phone:!!h}),h&&await ab(h,a,d)}}function _(){for(let[a,b]of af.told)"question"!==b.kind||b.phone||af.told.delete(a);Z(0)}async function aa(){let a=[...af.live.values()],b=await (0,m.listCallJobs)(a.flatMap(a=>[...a.calls]));return new Map(b.flatMap(b=>{let c=a.find(a=>a.calls.has(b.callId??""));return c?[[b.id,c]]:[]}))}async function ab(a,b,c){let{live:d,person:e}=a,f=c.room.questions.find(a=>(0,o.questionKey)(a.id)===b.key),g=(f?.options??[]).map((a,b)=>{let d=`${f?.id.slice(0,40)}:${b}`;return af.choices.set(d,{threadId:c.id,bot:f?.bot??"",question:f?.id??"",answer:a}),{text:a,data:d}});try{await d.channel.say(e.chat,{markdown:`${(0,z.literal)(`${b.show.line} \xb7 ${b.show.name}`)}
128
+ → ${c}`,entities:b.keep,link_preview_options:{is_disabled:!0}}).catch(()=>{})},async sendFiles(a,b){let c=b.filter(a=>a.picture),d=b.filter(a=>!a.picture);for(let b=0;b<c.length;b+=10){let e=c.slice(b,b+10);await k(a,e).catch(a=>{if(!(a instanceof g&&400===a.status))throw a;d.unshift(...e)})}for(let b of d){let c=new FormData;c.set("chat_id",a),c.set("document",new Blob([b.bytes]),b.name),await h("sendDocument",c)}}}}])},233398,a=>a.a(async(b,c)=>{try{var d=a.i(666680),e=a.i(912714),f=a.i(203469),g=a.i(569572),h=a.i(875931),i=a.i(938934),j=a.i(346580),k=a.i(674986),l=a.i(839430),m=a.i(344853),n=a.i(725466),o=a.i(92706),p=a.i(569549),q=a.i(143699),r=a.i(626550),s=a.i(684321),t=a.i(821415),u=a.i(941981),v=a.i(706210),w=a.i(176668),x=a.i(293480),y=a.i(936292),z=a.i(465584),A=a.i(479286),B=a.i(225310),C=a.i(558067),D=a.i(129167),E=a.i(319261),F=b([h,k,l,m,n,p,q,u]);[h,k,l,m,n,p,q,u]=F.then?(await F)():F;let ad={telegram:a=>(0,E.createTelegram)(a),discord:a=>(0,A.createDiscord)(a),slack:(a,b)=>(0,D.createSlack)(a,b)},ae=globalThis,af=ae.__reach??={live:new Map,last:null,told:new Map,choices:new Map,listening:null,gone:null,looking:null,idle:null},ag=()=>f.appEvents.emit({type:"reach"});async function G(a){return await af.live.get(a)?.settled,H(a)}async function H(a){let b=await (0,n.readConfig)((0,C.reachPersonKey)(a));if(!b)return null;try{let a=JSON.parse(b);return"string"==typeof a.chat&&"string"==typeof a.name?{chat:a.chat,name:a.name,bot:"string"==typeof a.bot?a.bot:null}:null}catch{return null}}let ah=(a,b)=>(0,n.writeConfig)((0,C.reachPersonKey)(a),JSON.stringify(b));async function I(a){for(let b of a?[a]:C.REACH_CHANNELS){let c=af.live.get(b);c?.stop.abort(),af.live.delete(b),a&&c?.line&&await (0,p.endCall)(c.line.callId).catch(()=>{});let d=await Promise.all(C.REACH_KEYS[b].map(n.readConfig));if(!d.every(a=>!!a)){a&&await (0,n.removeConfig)((0,C.reachPersonKey)(b));continue}let e=a&&c?.id?await H(b):null;e&&null===e.bot&&c?.id&&await ah(b,{...e,bot:c.id});let f={name:b,channel:ad[b](...d),stop:new AbortController,bot:null,link:null,problem:null,refused:null,id:null,adopt:!a,settled:Promise.resolve(),asking:null,held:[],line:null,calls:new Set,busy:!1,notes:[]};af.live.set(b,f),J(f)}af.live.size&&(af.listening??=f.appEvents.subscribe(a=>{"threads"===a.type&&Z()}),af.gone??=f.presence.onGone(_),Z(),af.idle??=setInterval(()=>{S().catch(a=>w.logger.error("reach: idle lines",a))},g.REACH.idleMs).unref()),ag()}async function J(a){let{signal:b}=a.stop,c=b=>{a.problem!==b&&(a.problem=b,ag())};for(;!b.aborted;){try{await a.channel.listen({ready:(b,c,d)=>{a.bot=b,a.link=c,a.problem=null,a.id=d,a.settled=K(a,d).catch(b=>w.logger.error(`reach ${a.name}: who is let in`,b)),ag()},incoming:b=>void L(a,b).catch(b=>w.logger.error(`reach ${a.name}: what arrived`,b))},b)}catch(e){if(b.aborted)return;let d=e instanceof Error?e.message:String(e);if(e instanceof y.ChannelRefusal){w.logger.warn(`reach ${a.name}: ${d}`);let b=C.REACH_KEYS[a.name];return a.refused=b[e.token]??b[0],a.problem=d,ag()}c(d)}await new Promise(a=>setTimeout(a,g.REACH.retryMs))}}async function K(a,b){let c=await H(a.name);if(c&&c.bot!==b){if(null===c.bot&&a.adopt)return ah(a.name,{...c,bot:b});await (0,n.removeConfig)((0,C.reachPersonKey)(a.name)),ag()}}async function L(a,b){let c=await G(a.name);if("press"===b.kind){if(c?.chat!==b.chat)return;return ac(a,c,b.data,b.under)}return c?.chat===b.chat?N(a,c,b):c?a.channel.say(b.chat,{plain:"This Thursday already answers someone else."}):M(a,b)}async function M(a,b){if(a.asking&&a.asking.chat!==b.chat)return a.channel.say(b.chat,{plain:"Someone else is already waiting to be let in here. If that is not you, press Not them on the computer, then write again."});a.held.length<g.REACH.held&&a.held.push(b),a.asking||(a.asking={chat:b.chat,name:b.name,handle:b.handle,said:b.words,code:(0,d.randomInt)(10**g.REACH.codeDigits).toString().padStart(g.REACH.codeDigits,"0")},ag(),await a.channel.say(b.chat,{plain:`Almost there. Thursday is asking on your computer whether to let you in. Press Allow there only if it shows ${a.asking.code}, and she answers what you wrote.`}))}async function N(a,b,c){let d=await O(a,c);d&&V(a,b,d)}async function O(a,b){let{channel:c}=a;af.last=a.name;let{kept:d,lost:e}=await P(a,b.files);e.length&&await c.say(b.chat,{plain:e.map(({name:a,why:b})=>`${a} did not come through: ${b}.`).join("\n")}).catch(b=>w.logger.warn(`reach ${a.name}: could not say so`,b));let f=[b.words,...d].filter(Boolean).join("\n");return f?(e.length&&a.notes.push({text:`[Sent from their phone with what follows, and lost on the way: ${e.map(({name:a,why:b})=>`${a} (${b})`).join("; ")}. They have been told.]`,said:!1}),f):(b.unreadable&&!e.length&&await c.say(b.chat,{plain:"I can read words, pictures and files here — not voice or video yet. Write it instead."}),null)}async function P(a,b){let c=Math.min(a.channel.limits.take,g.REACH.fileBytes),d=[],e=b.filter(b=>!b.size||b.size<=c||(d.push({name:b.name,why:`it is ${aj(b.size)}, and the most taken from ${C.REACH_LABEL[a.name]} is ${aj(c)}`}),!1)),f=await Promise.allSettled(e.map(a=>a.fetch())),h=[];for(let[a,b]of f.entries())"fulfilled"===b.status?h.push(b.value):d.push({name:e[a].name,why:ai(b.reason)});if(!h.length)return{kept:[],lost:d};try{return{kept:await (0,u.keepGivenFiles)(h),lost:d}}catch(b){let a=ai(b);return{kept:[],lost:[...d,...h.map(b=>({name:b.name,why:a}))]}}}let ai=a=>a instanceof Error?a.message:String(a),aj=a=>`${Math.ceil(a/1048576)} MB`;async function Q(a,b,c){let d=af.live.get(a),e=ak(d,b,c);if(!d||!e)return;let f={chat:e.chat,name:e.name,bot:d.id};await ah(a,f),d.asking=null,ag();let g=d.held.splice(0);await d.channel.say(b,{plain:g.length?"You are in. Thursday answers what you wrote.":"You are in. Write here and Thursday answers."}).catch(b=>w.logger.warn(`reach ${a}: could not say so`,b));let h=[];for(let b of g){let c=await O(d,b).catch(b=>(w.logger.warn(`reach ${a}: what they wrote while waiting`,b),null));c&&h.push(c)}h.length&&V(d,f,h.join("\n"))}let ak=(a,b,c)=>a?.asking?.chat===b&&a.asking.code===c?a.asking:null;async function R(a){await (0,n.removeConfig)((0,C.reachPersonKey)(a));let b=af.live.get(a);b&&(b.notes=[],b.calls.clear(),await U(b)),ag()}async function S(){for(let a of af.live.values())a.line&&!a.busy&&await T(a.line)&&await U(a)}async function T(a){return!(Date.now()-a.lastAt<=g.REACH.idleMs)&&!(await (0,m.listCallJobs)([a.callId])).some(a=>"running"===a.status)}async function U(a){let b=a.line;a.line=null,b&&await (0,p.endCall)(b.callId).catch(()=>{})}function V(a,b,c){a.busy?a.notes.push({text:c,said:!0}):(a.busy=!0,(async()=>{try{for(let d=c;null!==d;){await W(a,b,d);let c=a.notes.filter(a=>a.said);a.notes=a.notes.filter(a=>!a.said),d=c.length?c.map(a=>a.text).join("\n"):null}}finally{a.busy=!1}})())}async function W(a,b,c){let{channel:d}=a;d.typing(b.chat).catch(()=>{});let e=setInterval(()=>void d.typing(b.chat).catch(()=>{}),4e3),f=a.notes.filter(a=>!a.said);a.notes=a.notes.filter(a=>a.said);try{let e=a.line;(!e||!await (0,p.isCallOpen)(e.callId)||await T(e))&&(await U(a),a.line={...await (0,q.openTextCall)(),messages:[],lastAt:0},a.calls.add(a.line.callId));let h=a.line,i=await (0,q.answerInWriting)({callId:h.callId,standing:h.standing,messages:[...h.messages,...f.map(a=>({role:"user",content:a.text})),{role:"user",content:c}],said:c,notes:()=>a.notes.splice(0)});h.messages=function(a){let b=Math.max(a.findLastIndex(a=>"user"===a.role),0),c=[...(0,j.asWords)(a.slice(0,b),(a,b)=>(0,r.toolLine)(a,JSON.stringify(b??{}))??a,a=>a.length>g.REACH.oldChars?`${a.slice(0,g.REACH.oldChars)}…`:a),...a.slice(b)];if(c.length<=g.REACH.messages)return c;let d=c.findIndex((a,b)=>b>=c.length-g.REACH.trimTo&&"user"===a.role);return d>0?c.slice(d):c}(i.messages),h.lastAt=Date.now();let k=[...new Set(i.did)].join(" · ");await d.say(b.chat,{markdown:i.text?.trim()||(k?`— ${(0,z.literal)(k)}`:"…")}),await X(a,b,i.text)}catch(e){a.notes.unshift(...f),a.line&&!a.line.lastAt&&await U(a);let c=(0,x.isPublicError)(e)?e.message:(0,h.modelErrorToString)(e);w.logger.warn(`reach ${a.name}: ${c}`),await d.say(b.chat,{plain:c}).catch(()=>{})}finally{clearInterval(e)}}async function X(a,b,c){let d=await (0,t.filesOnDisk)((0,s.pathsIn)(c),null),f=d.slice(0,Math.max(d.length-g.REACH.files,0)).map(a=>({name:a,why:`only ${g.REACH.files} files go with one answer`})),{limits:h}=a.channel,i=Math.min(h.file,g.REACH.fileBytes);for(let c of d.slice(-g.REACH.files)){let d=await (0,t.insideWorkspace)(c),g=d?await (0,e.stat)(d).catch(()=>null):null;if(d&&g){if(g.size>i){f.push({name:c,why:`it is ${aj(g.size)}, and the most that goes to ${C.REACH_LABEL[a.name]} is ${aj(i)}`});continue}try{let i=await (0,B.picturesOf)(d);await a.channel.sendFiles(b.chat,i.length?i:[{bytes:await (0,e.readFile)(d),name:c.split("/").pop()??"file",picture:"image"===(0,s.viewKindOf)(c)&&g.size<=h.picture}]),i.length&&f.push({name:c,why:"sent as pictures above; the page itself opens on the computer"})}catch(b){w.logger.warn(`reach ${a.name}: could not send ${c}`,b),f.push({name:c,why:ai(b)})}}}f.length&&(await a.channel.say(b.chat,{plain:["Not sent — still on this computer:",...f.map(({name:a,why:b})=>`• ${a}: ${b}`)].join("\n")}).catch(b=>w.logger.warn(`reach ${a.name}: could not say so`,b)),a.notes.push({text:`[Named in what went to their phone, and not sent: ${f.map(({name:a,why:b})=>`${a} (${b})`).join("; ")}. They have been told.]`,said:!1}))}async function Y(){for(let a of[...af.last?[af.last]:[],...C.REACH_CHANNELS.filter(a=>a!==af.last)]){let b=af.live.get(a),c=b?await G(a):null;if(b&&c)return{live:b,person:c}}return null}let al=Date.now()-1e3*process.uptime();function Z(a=g.REACH.lookMs){af.looking??=setTimeout(()=>{af.looking=null,$().catch(a=>w.logger.error("reach: open work",a))},a)}async function $(){let a=al+g.BROWSER_GONE_MS-Date.now();if(a>0)return Z(a);let b=await Y();if(!b)return;let c=await (0,m.listInboxThreads)(),d=(0,o.openWork)(c).filter(a=>"progress"!==a.kind),e=new Set(d.map(a=>a.key));for(let a of af.told.keys())e.has(a)||af.told.delete(a);for(let[a,b]of af.choices)e.has((0,o.questionKey)(b.question))||af.choices.delete(a);let h=d.filter(a=>!af.told.has(a.key));if(!h.length)return;let i=await aa();for(let a of h){let d=c.find(b=>b.id===a.threadId);if(!d)continue;let e=i.get(a.threadId),g=e?await G(e.name):null,h=e&&g?{live:e,person:g}:!f.presence.watching&&(0,v.toDate)(d.updatedAt).getTime()>=al?b:null;af.told.set(a.key,{kind:a.kind,phone:!!h}),h&&await ab(h,a,d)}}function _(){for(let[a,b]of af.told)"question"!==b.kind||b.phone||af.told.delete(a);Z(0)}async function aa(){let a=[...af.live.values()],b=await (0,m.listCallJobs)(a.flatMap(a=>[...a.calls]));return new Map(b.flatMap(b=>{let c=a.find(a=>a.calls.has(b.callId??""));return c?[[b.id,c]]:[]}))}async function ab(a,b,c){let{live:d,person:e}=a,f=c.room.questions.find(a=>(0,o.questionKey)(a.id)===b.key),g=(f?.options??[]).map((a,b)=>{let d=`${f?.id.slice(0,40)}:${b}`;return af.choices.set(d,{threadId:c.id,bot:f?.bot??"",question:f?.id??"",answer:a}),{text:a,data:d}});try{await d.channel.say(e.chat,{markdown:`${(0,z.literal)(`${b.show.line} \xb7 ${b.show.name}`)}
129
129
 
130
130
  ${b.text||"…"}`},g)}catch(a){w.logger.warn(`reach ${d.name}: could not tell ${b.key}`,a),af.told.delete(b.key);return}await X(d,e,b.text),d.notes.push({text:`${b.line}
131
- [The user has had this on their phone, as ${b.show.bot} wrote it, since ${(0,i.clockNow)()}.]`,said:!1}),"ending"===b.kind?await (0,m.markSeen)([b.threadId]):await (0,l.acceptRoomRelays)(b.relayIds)}async function ac(a,b,c,d){let e=af.choices.get(c);if(!e)return void await a.channel.say(b.chat,{plain:"That question is no longer open here. Write your answer instead."});for(let[a,b]of af.choices)b.question===e.question&&af.choices.delete(a);try{await (0,k.answerThread)(e.threadId,e.answer,"user",e.bot),d&&await a.channel.settle(b.chat,d,e.answer),a.notes.push({text:`[The user answered ${e.bot}'s question from their phone at ${(0,i.clockNow)()}: ${e.answer}. It has reached ${e.bot}.]`,said:!1})}catch(c){await a.channel.say(b.chat,{plain:(0,x.isPublicError)(c)?c.message:"That answer did not get through."})}}a.s(["allowReach",0,Q,"declineReach",0,function(a,b,c){let d=af.live.get(a);d&&ak(d,b,c)&&(d.asking=null,d.held=[],ag())},"forgetReach",0,R,"reachChannelOf",0,a=>C.REACH_CHANNELS.find(b=>C.REACH_KEYS[b].includes(a))??null,"startReach",0,I]),c()}catch(a){c(a)}},!1),92706,a=>{"use strict";var b=a.i(569572),c=a.i(446957),d=a.i(706210);let e={message:"says",question:"asks",report:"reports",interrupted:"was cut off"},f={question:0,stopped:1,done:2,progress:3};function g(a){let c=a.trim();if(c.length<=b.CALL_RELAY.chars)return c;let d=c.slice(0,b.CALL_RELAY.chars),e=Math.max(d.lastIndexOf("\n\n"),d.lastIndexOf(". "),d.lastIndexOf(".\n"),d.lastIndexOf("。")),f=(e>b.CALL_RELAY.chars/3?d.slice(0,e+1):d).trim();return`${f}
132
- [The message goes on; the rest is in its thread on screen.]`}let h=a=>`question:${a}`;a.s(["openWork",0,function(a){let b=[];for(let i of a){let{relays:a,questions:j}=i.room,k=(0,d.toDate)(i.updatedAt).getTime(),l=(a,b)=>`[${a} → Thursday, thread "${i.label}" (${i.id}), ${b}.]`,m=(a,b)=>({kind:"relay",name:i.label,line:b,done:!0,bot:a});for(let c of j){let d=c.options?.length?` Options: ${c.options.join(" / ")}.`:"";b.push({rank:f.question,key:h(c.id),kind:"question",line:`${l(c.bot,"question")}
133
- ${g(c.text)}${d}`,relayIds:a.filter(a=>a.messageId===c.id).map(a=>a.id),threadId:i.id,text:c.text,show:m(c.bot,`${c.bot} asks`)})}let n=a.filter(a=>!j.some(b=>b.id===a.messageId)),o="done"===i.status,p="waiting"===i.status&&(0,c.isAppStop)(i.ask);if(o||p){if(i.seen)continue;let a=p?"stopped":"done",c=(p?i.ask?.question:null)??i.outcome??"",d="stopped"===a?`It stopped before finishing. Where it got to: ${g(c)}`:`Done. Its answer: ${g(c)}`;b.push({rank:f[a],key:`${a}:${i.id}@${k}`,kind:"ending",line:`${l(i.bot,a)}
134
- ${d}`,relayIds:n.map(a=>a.id),threadId:i.id,text:c,show:m(i.bot,"stopped"===a?`${i.bot} stopped`:`${i.bot} finished`)});continue}for(let a of n)b.push({rank:f.progress,key:`progress:${a.id}`,kind:"progress",line:`${l(a.bot,a.kind)}
135
- ${g(a.text)}`,relayIds:[a.id],threadId:i.id,text:a.text,show:m(a.bot,`${a.bot} ${e[a.kind]}`)})}return b.sort((a,b)=>a.rank-b.rank)},"questionKey",0,h])},143699,a=>a.a(async(b,c)=>{try{var d=a.i(47919),e=a.i(53112),f=a.i(569572),g=a.i(552556),h=a.i(738131),i=a.i(875931),j=a.i(689656),k=a.i(61514),l=a.i(614747),m=a.i(762008),n=a.i(688034),o=a.i(725466),p=a.i(69721);a.i(422842);var q=a.i(293480),r=a.i(569549),s=a.i(3894),t=a.i(626550),u=b([h,i,k,l,o,r]);async function v(){let a=await Promise.all(s.TEXT_CALL_PROVIDERS.map(async a=>await (0,o.readConfig)(a.apiKeyName)?a.apiKeyName:null));return(0,s.textCallRunsOn)(b=>a.includes(b))}async function w(a,b){if(b)return b;let c=await v();return c||(0,q.publicError)(C),{provider:c,model:a.backendModel}}async function x(a){let b=await w(await (0,r.readLiveSettings)(),a),[c,d]=await Promise.all([(0,r.insertCall)({provider:b.provider,model:f.TEXT_CALL.model,backendModel:b.model}),(0,k.loadCallStanding)()]);return{callId:c,standing:d}}[h,i,k,l,o,r]=u.then?(await u)():u,e.z.object({callId:e.z.string().min(1),standing:e.z.string().nullish(),runsOn:j.textModelRefSchema.nullish(),turn:e.z.string().min(1),messages:e.z.array(e.z.unknown()).min(1)});let A=globalThis.__textCallTurns??=new Map;async function y(a){var b;let c,{callId:e,standing:g,messages:h,said:i,signal:j}=a,[k,l]=await Promise.all([z(e,null,!0),(0,r.nextTurnSeq)(e)]);null!==i&&await (0,r.saveTurns)(e,[{id:crypto.randomUUID(),role:"user",text:i,seq:l}]);let n=(b=e,c=null===i?l:l+1,{step:async a=>{for(let d of a.content)if("tool-call"===d.type){let e=a.content.find(a=>"tool-result"===a.type&&a.toolCallId===d.toolCallId);await (0,r.saveTurns)(b,[{id:d.toolCallId,role:"tool",tool:d.toolName,text:d.toolName===m.TOOL_NAMES.web_search?function(a,b){let c=b??{},d=[(a??{}).query,c.action?.query].find(a=>"string"==typeof a&&!!a.trim()),e=Array.isArray(c.sources)?c.sources.flatMap(a=>a&&"object"==typeof a&&"url"in a&&"string"==typeof a.url?[{url:a.url,..."title"in a&&"string"==typeof a.title?{title:a.title}:{}}]:[]):[];return JSON.stringify({query:d??null,sources:e})}(d.input,e?.type==="tool-result"?e.output:null):JSON.stringify(d.input??{}),seq:c++}])}else"text"===d.type&&d.text.trim()?await (0,r.saveTurns)(b,[{id:crypto.randomUUID(),role:"assistant",text:d.text.trim(),seq:c++}]):"reasoning"===d.type&&d.text.trim()&&await (0,r.saveThought)(b,{id:crypto.randomUUID(),text:d.text.trim(),seq:c})},said:(a,d=crypto.randomUUID())=>(0,r.saveTurns)(b,[{id:d,role:"user",text:a,seq:c++}])}),o=B(g),p=[...o,...h],q=await (0,d.generateText)({model:k.model,instructions:k.system,messages:p,allowSystemInMessages:!0,tools:k.tools,providerOptions:k.providerOptions,stopWhen:(0,d.stepCountIs)(f.TEXT_CALL.maxSteps),abortSignal:j,prepareStep:async({stepNumber:b,messages:c})=>{let d=b>0?a.notes?.()??[]:[];for(let a of(p=[...c,...d.map(a=>({role:"user",content:a.text}))],d))a.said&&await n.said(a.text);return d.length?{messages:p}:void 0},onStepEnd:n.step});return{text:q.text.trim(),did:q.steps.flatMap(a=>a.toolCalls.map(a=>(0,t.toolLine)(a.toolName,JSON.stringify(a.input??{}))??a.toolName)),messages:[...p.slice(o.length),...q.steps.at(-1)?.response.messages??[]]}}let B=a=>a?[{role:"system",content:a}]:[];async function z(a,b,c=!1){let d=await (0,r.readLiveSettings)(),e=await w(d,b),f="openai"===e.provider||"chatgpt"===e.provider,[j,k,q,s,t]=await Promise.all([(0,i.getTextModel)(e),(0,l.loadThursdayPrompt)({backendPrompt:d.backendPrompt,written:!0,phone:c,persona:d.persona,stylePrompt:d.stylePrompt,readSkills:d.readSkills}),(0,h.loadTools)({target:"thursday",callId:a,webSearch:d.webSearch,readSkills:d.readSkills,written:!0,model:e,phone:c}),(0,o.readConfig)(n.EXA_API_KEY),(0,o.readConfig)(g.LIVE_PROVIDER.apiKeyName)]),u=j.searchTools&&Object.values(j.searchTools)[0],v={...q,...d.webSearch&&!s&&u?{[m.TOOL_NAMES.web_search]:u}:{}},x=f?t?await (0,p.acceptedReasoning)({apiKey:t,model:e.model,effort:d.reasoningEffort}):(0,p.wantedReasoning)(d.reasoningEffort):null;return{model:j.model,system:k,tools:v,providerOptions:{openai:{...x?.effort?{reasoningEffort:x.effort}:{},...x&&"summary"in x&&x.summary?{reasoningSummary:x.summary}:{}}}}}let C="Writing to Thursday needs a GPT subscription sign-in or an OpenAI key — Settings › API keys.";a.s(["answerInWriting",0,y,"openTextCall",0,x,"tellTextCall",0,function(a,b,c){let d=A.get(b);return!!d&&d.callId===a&&(d.notes.push(c),!0)}]),c()}catch(a){c(a)}},!1),69721,a=>{"use strict";var b=a.i(53112),c=a.i(569572),d=a.i(176668),e=a.i(293480),f=a.i(746609);let g=b.z.object({session:b.z.object({id:b.z.string().min(1)}),transport:b.z.object({type:b.z.literal("webrtc"),sdp:b.z.string().min(1)})}),h=new Map;function i(a){return"none"===a?{effort:a}:{...a?{effort:a}:{},summary:"auto"}}async function j(a){let{apiKey:b,model:e,effort:f}=a,g=`${e} ${f??"auto"}`,j=h.get(g);if(void 0!==j)return j;let k=i(f);for(;;){let a=await fetch("https://api.openai.com/v1/responses/input_tokens",{method:"POST",headers:{Authorization:`Bearer ${b}`,"Content-Type":"application/json"},signal:AbortSignal.timeout(c.LIVE_CALL.reasoningCheckMs),body:JSON.stringify({model:e,input:".",reasoning:k})}).catch(()=>null);if(!a)return k;let f=Object.keys(k).length?k:null;if(a.ok)return h.set(g,f),f;let i=await a.json().catch(()=>null),j=i?.error?.param?.replace(/^reasoning\./,"");if("effort"!==j&&"summary"!==j||!(j in k))return k;if(d.logger.warn(`${e} takes no reasoning ${j}; calls omit it`),delete k[j],!Object.keys(k).length)return h.set(g,null),null}}async function k(a){let b=await fetch("https://api.openai.com/v1/models",{headers:{Authorization:`Bearer ${a}`},signal:AbortSignal.timeout(c.LIVE_CALL.keyCheckMs)}).catch(()=>null);if(!b||401!==b.status&&403!==b.status)return null;let d=await b.json().catch(()=>null);return d?.error?.message?.trim()||`It answered ${b.status}.`}async function l(a){let b,h=await fetch("https://api.openai.com/v1/live/sessions",{method:"POST",headers:{Authorization:`Bearer ${a.apiKey}`,"Content-Type":"application/json"},signal:AbortSignal.timeout(c.LIVE_CALL.startupMs),body:JSON.stringify({session:{model:f.LIVE_MODEL,instructions:a.instructions,audio:{output:{voice:a.voice}},store:!1,delegation:{type:"responses",responses:{model:a.backend.model,instructions:a.backend.instructions,tools:[...a.backend.tools.map(a=>({type:"function",...a})),...a.backend.hosted.map(a=>f.LIVE_HOSTED_TOOLS[a].declare)],tool_choice:"auto",parallel_tool_calls:!0,max_output_tokens:c.LIVE_CALL.backendOutputTokens,...a.backend.reasoning?{reasoning:a.backend.reasoning}:{}}}},transport:{type:"webrtc",sdp:a.sdp}})}).catch(a=>{d.logger.warn("OpenAI Live unreachable",a),(0,e.publicError)("Could not reach OpenAI Live.")}),i=await h.text();try{b=JSON.parse(i)}catch{b=null}if(!h.ok){let a=b;(0,e.publicError)(a?.error?.message||i||`OpenAI Live refused the call (${h.status}).`)}let j=g.safeParse(b);return j.success||(0,e.publicError)("OpenAI Live returned an invalid session connection."),j.data}a.s(["acceptedReasoning",0,j,"createLiveCall",0,l,"keyRefusal",0,k,"wantedReasoning",0,i])}];
131
+ [The user has had this on their phone, as ${b.show.bot} wrote it, since ${(0,i.clockNow)()}.]`,said:!1}),"ending"===b.kind?await (0,m.markSeen)([b.threadId]):await (0,l.acceptRoomRelays)(b.relayIds)}async function ac(a,b,c,d){let e=af.choices.get(c);if(!e)return void await a.channel.say(b.chat,{plain:"That question is no longer open here. Write your answer instead."});for(let[a,b]of af.choices)b.question===e.question&&af.choices.delete(a);try{await (0,k.answerThread)(e.threadId,e.answer,"user",e.bot),d&&await a.channel.settle(b.chat,d,e.answer),a.notes.push({text:`[The user answered ${e.bot}'s question from their phone at ${(0,i.clockNow)()}: ${e.answer}. It has reached ${e.bot}.]`,said:!1})}catch(c){await a.channel.say(b.chat,{plain:(0,x.isPublicError)(c)?c.message:"That answer did not get through."})}}a.s(["allowReach",0,Q,"declineReach",0,function(a,b,c){let d=af.live.get(a);d&&ak(d,b,c)&&(d.asking=null,d.held=[],ag())},"forgetReach",0,R,"reachChannelOf",0,a=>C.REACH_CHANNELS.find(b=>C.REACH_KEYS[b].includes(a))??null,"startReach",0,I]),c()}catch(a){c(a)}},!1),92706,a=>{"use strict";var b=a.i(569572),c=a.i(446957),d=a.i(706210),e=a.i(182248);let f={message:"says",question:"asks",report:"reports",interrupted:"was cut off"},g={question:0,stopped:1,done:2,progress:3};function h(a){let c=(0,e.captionText)(a.replace(/!\[[^\]]*\]\([^)]*\)/g," ")).replace(e.MARKDOWN_LINK,"$1").replace(/^• /gm,"").trim();if(c.length<=b.CALL_RELAY.chars)return c;let d=c.slice(0,b.CALL_RELAY.chars),f=Math.max(d.lastIndexOf("\n\n"),d.lastIndexOf(". "),d.lastIndexOf(".\n"),d.lastIndexOf("。")),g=(f>b.CALL_RELAY.chars/3?d.slice(0,f+1):d).trim();return`${g}
132
+ [The message goes on; the rest is in its thread on screen.]`}let i=a=>`question:${a}`;a.s(["openWork",0,function(a){let b=[];for(let e of a){let{relays:a,questions:j}=e.room,k=(0,d.toDate)(e.updatedAt).getTime(),l=(a,b)=>`[${a} → Thursday, thread "${e.label}" (${e.id}), ${b}.]`,m=(a,b)=>({kind:"relay",name:e.label,line:b,done:!0,bot:a});for(let c of j){let d=c.options?.length?` Options: ${c.options.join(" / ")}.`:"";b.push({rank:g.question,key:i(c.id),kind:"question",line:`${l(c.bot,"question")}
133
+ ${h(c.text)}${d}`,relayIds:a.filter(a=>a.messageId===c.id).map(a=>a.id),threadId:e.id,text:c.text,show:m(c.bot,`${c.bot} asks`)})}let n=a.filter(a=>!j.some(b=>b.id===a.messageId)),o="done"===e.status,p="waiting"===e.status&&(0,c.isAppStop)(e.ask);if(o||p){if(e.seen)continue;let a=p?"stopped":"done",c=(p?e.ask?.question:null)??e.outcome??"",d="stopped"===a?`It stopped before finishing. Where it got to: ${h(c)}`:`Done. Its answer: ${h(c)}`;b.push({rank:g[a],key:`${a}:${e.id}@${k}`,kind:"ending",line:`${l(e.bot,a)}
134
+ ${d}`,relayIds:n.map(a=>a.id),threadId:e.id,text:c,show:m(e.bot,"stopped"===a?`${e.bot} stopped`:`${e.bot} finished`)});continue}for(let a of n)b.push({rank:g.progress,key:`progress:${a.id}`,kind:"progress",line:`${l(a.bot,a.kind)}
135
+ ${h(a.text)}`,relayIds:[a.id],threadId:e.id,text:a.text,show:m(a.bot,`${a.bot} ${f[a.kind]}`)})}return b.sort((a,b)=>a.rank-b.rank)},"questionKey",0,i])},143699,a=>a.a(async(b,c)=>{try{var d=a.i(47919),e=a.i(53112),f=a.i(569572),g=a.i(552556),h=a.i(738131),i=a.i(875931),j=a.i(689656),k=a.i(61514),l=a.i(614747),m=a.i(762008),n=a.i(688034),o=a.i(725466),p=a.i(69721);a.i(422842);var q=a.i(293480),r=a.i(569549),s=a.i(3894),t=a.i(626550),u=b([h,i,k,l,o,r]);async function v(){let a=await Promise.all(s.TEXT_CALL_PROVIDERS.map(async a=>await (0,o.readConfig)(a.apiKeyName)?a.apiKeyName:null));return(0,s.textCallRunsOn)(b=>a.includes(b))}async function w(a,b){if(b)return b;let c=await v();return c||(0,q.publicError)(C),{provider:c,model:a.backendModel}}async function x(a){let b=await w(await (0,r.readLiveSettings)(),a),[c,d]=await Promise.all([(0,r.insertCall)({provider:b.provider,model:f.TEXT_CALL.model,backendModel:b.model}),(0,k.loadCallStanding)()]);return{callId:c,standing:d}}[h,i,k,l,o,r]=u.then?(await u)():u,e.z.object({callId:e.z.string().min(1),standing:e.z.string().nullish(),runsOn:j.textModelRefSchema.nullish(),turn:e.z.string().min(1),messages:e.z.array(e.z.unknown()).min(1)});let A=globalThis.__textCallTurns??=new Map;async function y(a){var b;let c,{callId:e,standing:g,messages:h,said:i,signal:j}=a,[k,l]=await Promise.all([z(e,null,!0),(0,r.nextTurnSeq)(e)]);null!==i&&await (0,r.saveTurns)(e,[{id:crypto.randomUUID(),role:"user",text:i,seq:l}]);let n=(b=e,c=null===i?l:l+1,{step:async a=>{for(let d of a.content)if("tool-call"===d.type){let e=a.content.find(a=>"tool-result"===a.type&&a.toolCallId===d.toolCallId);await (0,r.saveTurns)(b,[{id:d.toolCallId,role:"tool",tool:d.toolName,text:d.toolName===m.TOOL_NAMES.web_search?function(a,b){let c=b??{},d=[(a??{}).query,c.action?.query].find(a=>"string"==typeof a&&!!a.trim()),e=Array.isArray(c.sources)?c.sources.flatMap(a=>a&&"object"==typeof a&&"url"in a&&"string"==typeof a.url?[{url:a.url,..."title"in a&&"string"==typeof a.title?{title:a.title}:{}}]:[]):[];return JSON.stringify({query:d??null,sources:e})}(d.input,e?.type==="tool-result"?e.output:null):JSON.stringify(d.input??{}),seq:c++}])}else"text"===d.type&&d.text.trim()?await (0,r.saveTurns)(b,[{id:crypto.randomUUID(),role:"assistant",text:d.text.trim(),seq:c++}]):"reasoning"===d.type&&d.text.trim()&&await (0,r.saveThought)(b,{id:crypto.randomUUID(),text:d.text.trim(),seq:c})},said:(a,d=crypto.randomUUID())=>(0,r.saveTurns)(b,[{id:d,role:"user",text:a,seq:c++}])}),o=B(g),p=[...o,...h],q=await (0,d.generateText)({model:k.model,instructions:k.system,messages:p,allowSystemInMessages:!0,tools:k.tools,providerOptions:k.providerOptions,stopWhen:(0,d.stepCountIs)(f.TEXT_CALL.maxSteps),abortSignal:j,prepareStep:async({stepNumber:b,messages:c})=>{let d=b>0?a.notes?.()??[]:[];for(let a of(p=[...c,...d.map(a=>({role:"user",content:a.text}))],d))a.said&&await n.said(a.text);return d.length?{messages:p}:void 0},onStepEnd:n.step});return{text:q.text.trim(),did:q.steps.flatMap(a=>a.toolCalls.map(a=>(0,t.toolLine)(a.toolName,JSON.stringify(a.input??{}))??a.toolName)),messages:[...p.slice(o.length),...q.steps.at(-1)?.response.messages??[]]}}let B=a=>a?[{role:"system",content:a}]:[];async function z(a,b,c=!1){let d=await (0,r.readLiveSettings)(),e=await w(d,b),f="openai"===e.provider||"chatgpt"===e.provider,[j,k,q,s,t]=await Promise.all([(0,i.getTextModel)(e),(0,l.loadThursdayPrompt)({backendPrompt:d.backendPrompt,written:!0,callId:a,phone:c,persona:d.persona,stylePrompt:d.stylePrompt,readSkills:d.readSkills}),(0,h.loadTools)({target:"thursday",callId:a,webSearch:d.webSearch,readSkills:d.readSkills,written:!0,model:e,phone:c}),(0,o.readConfig)(n.EXA_API_KEY),(0,o.readConfig)(g.LIVE_PROVIDER.apiKeyName)]),u=j.searchTools&&Object.values(j.searchTools)[0],v={...q,...d.webSearch&&!s&&u?{[m.TOOL_NAMES.web_search]:u}:{}},x=f?t?await (0,p.acceptedReasoning)({apiKey:t,model:e.model,effort:d.reasoningEffort}):(0,p.wantedReasoning)(d.reasoningEffort):null;return{model:j.model,system:k,tools:v,providerOptions:{openai:{...x?.effort?{reasoningEffort:x.effort}:{},...x&&"summary"in x&&x.summary?{reasoningSummary:x.summary}:{}}}}}let C="Writing to Thursday needs a GPT subscription sign-in or an OpenAI key — Settings › API keys.";a.s(["answerInWriting",0,y,"openTextCall",0,x,"tellTextCall",0,function(a,b,c){let d=A.get(b);return!!d&&d.callId===a&&(d.notes.push(c),!0)}]),c()}catch(a){c(a)}},!1),69721,a=>{"use strict";var b=a.i(53112),c=a.i(569572),d=a.i(176668),e=a.i(293480),f=a.i(746609);let g=b.z.object({session:b.z.object({id:b.z.string().min(1)}),transport:b.z.object({type:b.z.literal("webrtc"),sdp:b.z.string().min(1)})}),h=new Map;function i(a){return"none"===a?{effort:a}:{...a?{effort:a}:{},summary:"auto"}}async function j(a){let{apiKey:b,model:e,effort:f}=a,g=`${e} ${f??"auto"}`,j=h.get(g);if(void 0!==j)return j;let k=i(f);for(;;){let a=await fetch("https://api.openai.com/v1/responses/input_tokens",{method:"POST",headers:{Authorization:`Bearer ${b}`,"Content-Type":"application/json"},signal:AbortSignal.timeout(c.LIVE_CALL.reasoningCheckMs),body:JSON.stringify({model:e,input:".",reasoning:k})}).catch(()=>null);if(!a)return k;let f=Object.keys(k).length?k:null;if(a.ok)return h.set(g,f),f;let i=await a.json().catch(()=>null),j=i?.error?.param?.replace(/^reasoning\./,"");if("effort"!==j&&"summary"!==j||!(j in k))return k;if(d.logger.warn(`${e} takes no reasoning ${j}; calls omit it`),delete k[j],!Object.keys(k).length)return h.set(g,null),null}}async function k(a){let b=await fetch("https://api.openai.com/v1/models",{headers:{Authorization:`Bearer ${a}`},signal:AbortSignal.timeout(c.LIVE_CALL.keyCheckMs)}).catch(()=>null);if(!b||401!==b.status&&403!==b.status)return null;let d=await b.json().catch(()=>null);return d?.error?.message?.trim()||`It answered ${b.status}.`}async function l(a){let b,h=await fetch("https://api.openai.com/v1/live/sessions",{method:"POST",headers:{Authorization:`Bearer ${a.apiKey}`,"Content-Type":"application/json"},signal:AbortSignal.timeout(c.LIVE_CALL.startupMs),body:JSON.stringify({session:{model:f.LIVE_MODEL,instructions:a.instructions,audio:{output:{voice:a.voice}},store:!1,delegation:{type:"responses",responses:{model:a.backend.model,instructions:a.backend.instructions,tools:[...a.backend.tools.map(a=>({type:"function",...a})),...a.backend.hosted.map(a=>f.LIVE_HOSTED_TOOLS[a].declare)],tool_choice:"auto",parallel_tool_calls:!0,max_output_tokens:c.LIVE_CALL.backendOutputTokens,...a.backend.reasoning?{reasoning:a.backend.reasoning}:{}}}},transport:{type:"webrtc",sdp:a.sdp}})}).catch(a=>{d.logger.warn("OpenAI Live unreachable",a),(0,e.publicError)("Could not reach OpenAI Live.")}),i=await h.text();try{b=JSON.parse(i)}catch{b=null}if(!h.ok){let a=b;(0,e.publicError)(a?.error?.message||i||`OpenAI Live refused the call (${h.status}).`)}let j=g.safeParse(b);return j.success||(0,e.publicError)("OpenAI Live returned an invalid session connection."),j.data}a.s(["acceptedReasoning",0,j,"createLiveCall",0,l,"keyRefusal",0,k,"wantedReasoning",0,i])}];
136
136
 
137
137
  //# sourceMappingURL=_0cd6g3l._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[545097,a=>{"use strict";var b=a.i(187924),c=a.i(497895);let d={muted:{under:"text-muted-foreground/60 dark:text-muted-foreground",band:"via-foreground"},waiting:{under:"text-waiting/70",band:"via-waiting/30"},reading:{under:"text-foreground",band:"via-waiting/80"}};a.s(["ShinyText",0,function({text:a,tone:e="muted",speed:f=2.4,className:g}){let{under:h,band:i}=d[e];return(0,b.jsxs)("span",{"data-slot":"shiny-text",className:(0,c.cn)("relative inline-block max-w-full",h,g),children:[a,(0,b.jsx)("span",{"aria-hidden":!0,style:{animationDuration:`${f}s`},className:(0,c.cn)("pointer-events-none absolute inset-0 animate-shine overflow-hidden bg-linear-120 from-transparent from-35% via-50% to-transparent to-65% bg-size-[200%_auto] bg-clip-text text-transparent p-[inherit] select-none [text-overflow:inherit] motion-reduce:hidden",i),children:a})]})}])},61876,a=>{"use strict";var b=a.i(156757),c=a.i(287702);let d=b.z.enum(["openai","chatgpt","anthropic","google","xai","vercel-ai-gateway","mistral","deepseek","groq","cerebras","togetherai","fireworks","deepinfra","cohere"]),e=b.z.object({provider:d,model:b.z.string().trim().min(1,"Model name is required").max(80)}),f=["none","minimal","low","medium","high","xhigh"],g=b.z.enum(f),h=b.z.enum(["openai","google","xai","vercel-ai-gateway"]),i=b.z.object({provider:h,model:b.z.string().trim().min(1,"Model name is required").max(120)}),j={openai:{label:"Open AI",apiKeyName:"OPENAI_API_KEY",models:{image:[{id:"gpt-image-1-mini",label:"GPT Image 1 mini",tier:"small"},{id:"gpt-image-2.5-flare",label:"GPT Image 2.5 Flare",tier:"mid"},{id:"gpt-image-2.5-sunburst",label:"GPT Image 2.5 Sunburst",tier:"large"}],video:[],speech:[{id:"tts-1",label:"TTS 1",tier:"small"},{id:"gpt-4o-mini-tts",label:"4o mini TTS",tier:"mid"},{id:"tts-1-hd",label:"TTS 1 HD",tier:"large"}],transcription:[{id:"gpt-4o-mini-transcribe",label:"4o mini Transcribe",tier:"small"},{id:"gpt-transcribe",label:"GPT Transcribe",tier:"mid"}]}},google:{label:"Gemini",apiKeyName:"GOOGLE_GENERATIVE_AI_API_KEY",models:{image:[{id:"gemini-3.1-flash-lite-image",label:"3.1 Flash Lite Image",tier:"small"},{id:"gemini-3.1-flash-image",label:"3.1 Flash Image",tier:"mid"},{id:"gemini-3-pro-image",label:"3 Pro Image",tier:"large"}],video:[{id:"veo-3.1-lite-generate-preview",label:"Veo 3.1 Lite",tier:"small"},{id:"veo-3.1-fast-generate-preview",label:"Veo 3.1 Fast",tier:"mid"},{id:"veo-3.1-generate-preview",label:"Veo 3.1",tier:"large"}],speech:[{id:"gemini-2.5-flash-preview-tts",label:"2.5 Flash TTS",tier:"small"},{id:"gemini-3.1-flash-tts-preview",label:"3.1 Flash TTS",tier:"mid"},{id:"gemini-2.5-pro-preview-tts",label:"2.5 Pro TTS",tier:"large"}],transcription:[{id:"gemini-3.5-transcribe",label:"3.5 Transcribe",tier:"mid"}]}},xai:{label:"xAI",apiKeyName:"XAI_API_KEY",models:{image:[{id:"grok-imagine-image",label:"Grok Imagine",tier:"small"},{id:"grok-imagine-image-2.0",label:"Grok Imagine 2.0",tier:"mid"}],video:[{id:"grok-imagine-video",label:"Grok Imagine Video",tier:"small"},{id:"grok-imagine-video-1.5",label:"Grok Imagine Video 1.5",tier:"mid"}],speech:[{id:"grok-tts",label:"Grok TTS",tier:"mid"}],transcription:[{id:"grok-stt",label:"Grok STT",tier:"mid"}]}},"vercel-ai-gateway":{label:"Vercel AI Gateway",apiKeyName:"AI_GATEWAY_API_KEY",models:{image:[{id:"bytedance/seedream-5.0-lite",label:"Seedream 5.0 Lite",tier:"small"},{id:"bfl/flux-2-klein-9b",label:"FLUX 2 Klein 9B",tier:"small"},{id:"spacexai/grok-imagine-image-2.0",label:"Grok Imagine 2.0",tier:"small"},{id:"bfl/flux-2-pro",label:"FLUX 2 Pro",tier:"mid"},{id:"bytedance/seedream-5.0-pro",label:"Seedream 5.0 Pro",tier:"mid"},{id:"recraft/recraft-v4.1",label:"Recraft V4.1",tier:"mid"},{id:"openai/gpt-image-2.5-sunburst",label:"GPT Image 2.5 Sunburst",tier:"large"}],video:[{id:"bytedance/seedance-2.0-mini",label:"Seedance 2.0 Mini",tier:"small"},{id:"google/veo-3.1-lite-generate-001",label:"Veo 3.1 Lite",tier:"small"},{id:"alibaba/wan-v2.6-t2v",label:"Wan 2.6",tier:"small"},{id:"google/veo-3.1-fast-generate-001",label:"Veo 3.1 Fast",tier:"mid"},{id:"bytedance/seedance-2.5",label:"Seedance 2.5",tier:"mid"},{id:"spacexai/grok-imagine-video-1.5",label:"Grok Imagine Video 1.5",tier:"mid"},{id:"klingai/kling-v3.0-t2v",label:"Kling 3.0",tier:"large"},{id:"google/veo-3.1-generate-001",label:"Veo 3.1",tier:"large"}],speech:[{id:"fish-audio/s1",label:"Fish Audio S1",tier:"small"},{id:"openai/tts-1",label:"OpenAI TTS 1",tier:"small"},{id:"spacexai/grok-tts",label:"Grok TTS",tier:"mid"},{id:"fish-audio/s2.1-pro",label:"Fish Audio S2.1 Pro",tier:"mid"},{id:"openai/tts-1-hd",label:"OpenAI TTS 1 HD",tier:"large"}],transcription:[{id:"spacexai/grok-stt",label:"Grok STT",tier:"small"},{id:"fish-audio/transcribe-1",label:"Fish Transcribe 1",tier:"small"},{id:"openai/gpt-4o-mini-transcribe",label:"4o mini Transcribe",tier:"small"},{id:"openai/gpt-4o-transcribe",label:"4o Transcribe",tier:"mid"},{id:"google/gemini-3.5-transcribe",label:"Gemini 3.5 Transcribe",tier:"mid"}]}}},k=Object.keys(j).map(a=>({id:a,...j[a]})),l={openai:{label:"Open AI",apiKeyName:"OPENAI_API_KEY",keysAt:"https://platform.openai.com/api-keys",keyLooks:"sk-…",suggestModels:[{id:"gpt-6-luna",label:"6 Luna",tier:"small",context:105e4,efforts:["none","low","medium","high","xhigh"]},{id:"gpt-6-sol",label:"6 Sol",tier:"mid",context:105e4,efforts:["none","low","medium","high","xhigh"]},{id:"gpt-6-astra",label:"6 Astra",tier:"large",context:105e4,efforts:["low","medium","high","xhigh"]}]},chatgpt:{label:"GPT Subscription",apiKeyName:"CHATGPT_SIGN_IN",signIn:!0,suggestModels:[{id:"gpt-6-luna",label:"6 Luna",tier:"small",context:272e3,efforts:["none","low","medium","high","xhigh"]},{id:"gpt-6-sol",label:"6 Sol",tier:"mid",context:272e3,efforts:["none","low","medium","high","xhigh"]},{id:"gpt-6-astra",label:"6 Astra",tier:"large",context:272e3,efforts:["low","medium","high","xhigh"]}]},anthropic:{label:"Claude",apiKeyName:"ANTHROPIC_API_KEY",keysAt:"https://platform.claude.com/settings/keys",keyLooks:"sk-ant-…",suggestModels:[{id:"claude-haiku-4-5",label:"Haiku 4.5",tier:"small",efforts:["none","minimal","low","medium","high","xhigh"]},{id:"claude-sonnet-5",label:"Sonnet 5",tier:"mid",context:1e6,efforts:["none","low","medium","high","xhigh"]},{id:"claude-opus-5-5",label:"Opus 5.5",tier:"large",context:1e6,efforts:["low","medium","high","xhigh"]},{id:"claude-fable-5-1",label:"Fable 5.1",tier:"large",efforts:["none","low","medium","high","xhigh"]}]},google:{label:"Gemini",apiKeyName:"GOOGLE_GENERATIVE_AI_API_KEY",keysAt:"https://aistudio.google.com/apikey",keyLooks:"AIza…",suggestModels:[{id:"gemini-3.5-flash-lite",label:"3.5 Flash Lite",tier:"small",context:1e6,efforts:["minimal","low","medium","high"]},{id:"gemini-3.8-flash",label:"3.8 Flash",tier:"mid",context:1e6,efforts:["low","medium","high"]}]},xai:{label:"xAI",apiKeyName:"XAI_API_KEY",keysAt:"https://console.x.ai",keyLooks:"xai-…",suggestModels:[{id:"grok-4.7",label:"Grok 4.7",tier:"large",context:5e5,efforts:["none","low","medium","high","xhigh"]}]},"vercel-ai-gateway":{label:"Vercel AI Gateway",apiKeyName:"AI_GATEWAY_API_KEY",keysAt:"https://vercel.com/docs/ai-gateway/authentication-and-byok/authentication",suggestModels:[{id:"zai/glm-5.3-flash",label:"GLM 5.3 Flash",tier:"small"},{id:"google/gemini-3.8-flash",label:"Gemini 3.8 Flash",tier:"small"},{id:"openai/gpt-6-luna",label:"GPT 6 Luna",tier:"small",context:105e4},{id:"zai/glm-5.3",label:"GLM 5.3",tier:"mid"},{id:"spacexai/grok-4.7",label:"Grok 4.7",tier:"mid",context:5e5},{id:"anthropic/claude-sonnet-5",label:"Claude Sonnet 5",tier:"mid"},{id:"openai/gpt-6-sol",label:"GPT 6 Sol",tier:"mid",context:105e4},{id:"moonshotai/kimi-k3",label:"Kimi K3",tier:"mid"},{id:"anthropic/claude-opus-5.5",label:"Claude Opus 5.5",tier:"large",context:1e6},{id:"openai/gpt-6-astra",label:"GPT 6 Astra",tier:"large",context:105e4}]},mistral:{label:"Mistral",apiKeyName:"MISTRAL_API_KEY",keysAt:"https://console.mistral.ai/api-keys",suggestModels:[{id:"ministral-8b-latest",label:"Ministral 8B",tier:"small",efforts:[]},{id:"mistral-small-latest",label:"Small",tier:"mid",efforts:["none","high"]},{id:"mistral-medium-latest",label:"Medium",tier:"large",efforts:["none","high"]},{id:"mistral-large-latest",label:"Large",tier:"large",efforts:[]}]},deepseek:{label:"DeepSeek",apiKeyName:"DEEPSEEK_API_KEY",keysAt:"https://platform.deepseek.com/api_keys",keyLooks:"sk-…",suggestModels:[{id:"deepseek-flash",label:"V4.1 Flash",tier:"small",context:1e6,efforts:["none","low","high","xhigh"]},{id:"deepseek-v4-pro",label:"V4 Pro",tier:"large",context:1e6,efforts:["none","low","high","xhigh"]}]},groq:{label:"Groq",apiKeyName:"GROQ_API_KEY",keysAt:"https://console.groq.com/keys",keyLooks:"gsk_…",suggestModels:[{id:"openai/gpt-oss-20b",label:"GPT OSS 20B",tier:"small",context:131072,efforts:["low","medium","high"]},{id:"openai/gpt-oss-120b",label:"GPT OSS 120B",tier:"mid",context:131072,efforts:["low","medium","high"]},{id:"llama-3.3-70b-versatile",label:"Llama 3.3 70B",tier:"mid",context:131072,efforts:[]}]},cerebras:{label:"Cerebras",apiKeyName:"CEREBRAS_API_KEY",keysAt:"https://cloud.cerebras.ai",keyLooks:"csk-…",suggestModels:[{id:"qwen-3.8-27b",label:"Qwen 3.8 27B",tier:"small",context:64e3},{id:"gpt-oss-120b",label:"GPT OSS 120B",tier:"mid",context:65536}]},togetherai:{label:"Together",apiKeyName:"TOGETHER_AI_API_KEY",keysAt:"https://api.together.ai/settings/api-keys",suggestModels:[{id:"Qwen/Qwen3.5-9B",label:"Qwen 3.5 9B",tier:"small",context:262144},{id:"zai-org/GLM-5.3-Flash",label:"GLM 5.3 Flash",tier:"small",context:1048575},{id:"openai/gpt-oss-120b",label:"GPT OSS 120B",tier:"mid",context:131072},{id:"deepseek-ai/DeepSeek-V4.1-Flash",label:"DeepSeek V4.1 Flash",tier:"mid",context:1e6},{id:"zai-org/GLM-5.3",label:"GLM 5.3",tier:"large",context:1048575},{id:"moonshotai/Kimi-K3",label:"Kimi K3",tier:"large",context:1048576}]},fireworks:{label:"Fireworks",apiKeyName:"FIREWORKS_API_KEY",keysAt:"https://app.fireworks.ai/account/api-keys",keyLooks:"fw_…",suggestModels:[{id:"accounts/fireworks/models/glm-5p3-flash",label:"GLM 5.3 Flash",tier:"small",context:1048576},{id:"accounts/fireworks/models/deepseek-v4p1-flash",label:"DeepSeek V4.1 Flash",tier:"mid",context:1048576},{id:"accounts/fireworks/models/minimax-m3",label:"MiniMax M3",tier:"mid",context:512e3},{id:"accounts/fireworks/models/glm-5p3",label:"GLM 5.3",tier:"large",context:1048576},{id:"accounts/fireworks/models/kimi-k3",label:"Kimi K3",tier:"large",context:1048576}]},deepinfra:{label:"DeepInfra",apiKeyName:"DEEPINFRA_API_KEY",keysAt:"https://deepinfra.com/dash/api_keys",suggestModels:[{id:"deepseek-ai/DeepSeek-V4-Flash-0731",label:"DeepSeek V4 Flash",tier:"small",context:1048576},{id:"deepseek-ai/DeepSeek-V4.1-Flash",label:"DeepSeek V4.1 Flash",tier:"mid",context:1048576},{id:"zai-org/GLM-5.2",label:"GLM 5.2",tier:"mid",context:1048576},{id:"zai-org/GLM-5.3",label:"GLM 5.3",tier:"large",context:1048576},{id:"moonshotai/Kimi-K3",label:"Kimi K3",tier:"large",context:1048576}]},cohere:{label:"Cohere",apiKeyName:"COHERE_API_KEY",keysAt:"https://dashboard.cohere.com/api-keys",suggestModels:[{id:"command-r7b-12-2024",label:"Command R7B",tier:"small",context:128e3},{id:"command-a-03-2025",label:"Command A",tier:"mid",context:256e3},{id:"command-a-plus-05-2026",label:"Command A+",tier:"large",context:128e3}]}},m=Object.keys(l).map(a=>({id:a,...l[a]}));a.s(["EFFORTS",0,f,"GATEWAY_OWNERS",0,{anthropic:"anthropic",openai:"openai",google:"google",spacexai:"xai",mistral:"mistral",deepseek:"deepseek",cohere:"cohere"},"GATEWAY_TEXT",0,"language","GATEWAY_TOOL_USE",0,"tool-use","MEDIA_MODEL_PROVIDERS",0,j,"MEDIA_MODEL_PROVIDER_LIST",0,k,"TEXT_MODEL_PROVIDERS",0,l,"TEXT_MODEL_PROVIDER_LIST",0,m,"canMakeKind",0,(a,b)=>(j[a]?.models[b]?.length??0)>0,"compactAtFor",0,a=>a&&a>0?Math.round(a*c.BOT_RUN.compactHeadroom):c.BOT_RUN.compactAt,"contextWindowOf",0,function(a,b,c=[]){if("vercel-ai-gateway"===a)return c.find(a=>a.id===b)?.contextWindow??null;let d=l[a].suggestModels;return d.find(a=>a.id===b)?.context??null},"effortSchema",0,g,"effortsOf",0,function(a,b,c=[]){if("vercel-ai-gateway"===a)return c.find(a=>a.id===b)?.efforts??null;let d=l[a].suggestModels;return d.find(a=>a.id===b)?.efforts??null},"parseMediaModel",0,function(a){let[b,...c]=(a??"").trim().split("/"),d=i.safeParse({provider:b,model:c.join("/")});return d.success?d.data:null},"parseTextModel",0,function(a){let[b,...c]=(a??"").trim().split("/"),d=e.safeParse({provider:b,model:c.join("/")});return d.success?d.data:null},"textModelProviderSchema",0,d,"textModelRefSchema",0,e])},181673,a=>{"use strict";var b=a.i(572131),c=a.i(168536),d=a.i(43074),e=a.i(357738),f=a.i(187828),g=a.i(854401),h=a.i(736069),i=a.i(426476),j=a.i(394552),k=a.i(307436),l=a.i(925123),m=a.i(30116),n=a.i(287084),o=a.i(572077),p=a.i(361813),q=a.i(185252),r=a.i(290833);a.s(["useHoverFloatingInteraction",0,function(a,s={}){let{enabled:t=!0,closeDelay:u=0,nodeId:v}=s,w="rootStore"in a?a.rootStore:a,x=w.useState("open"),y=w.useState("floatingElement"),z=w.useState("domReferenceElement"),{dataRef:A}=w.context,B=(0,l.useFloatingTree)(),C=(0,l.useFloatingParentNodeId)(),D=(0,o.useHoverInteractionSharedState)(w),E=(0,h.useTimeout)(),F=(0,g.useStableCallback)(()=>(0,q.isClickLikeOpenEvent)(A.current.openEvent?.type,D.interactedInside)),G=(0,g.useStableCallback)(()=>(0,q.isHoverOpenEvent)(A.current.openEvent?.type)),H=(0,g.useStableCallback)(()=>{(0,o.clearSafePolygonPointerEventsMutation)(D)});(0,e.useIsoLayoutEffect)(()=>{x||(D.pointerType=void 0,D.restTimeoutPending=!1,D.interactedInside=!1,H())},[x,D,H]),b.useEffect(()=>H,[H]),(0,e.useIsoLayoutEffect)(()=>{if(t&&x&&D.handleCloseOptions?.blockPointerEvents&&G()&&(0,i.isElement)(z)&&y){let a=(0,f.ownerDocument)(y),b=B?.nodesRef.current.find(a=>a.id===C)?.context?.elements.floating;b&&(b.style.pointerEvents="");let c=D.pointerEventsScopeElement!==y?D.pointerEventsScopeElement:null,d=b!==y?b:null,e=D.handleCloseOptions?.getScope?.()??c??d??z.closest("[data-rootownerid]")??a.body;return(0,o.applySafePolygonPointerEventsMutation)(D,{scopeElement:e,referenceElement:z,floatingElement:y}),()=>{H()}}},[t,x,z,y,D,G,B,C,H]),b.useEffect(()=>{if(t)return(0,d.mergeCleanups)(y&&(0,c.addEventListener)(y,"mouseenter",function(){D.openChangeTimeout.clear(),E.clear(),B?.events.off("floating.closed",b),H()}),y&&(0,c.addEventListener)(y,"mouseleave",function(c){if(a()&&B)return void B.events.on("floating.closed",b);if((0,r.isInsideEnabledTrigger)(c.relatedTarget,w.context.triggerElements))return;let d=A.current.floatingContext?.nodeId??v,e=c.relatedTarget;if(!(B&&d&&(0,i.isElement)(e)&&(0,n.getNodeChildren)(B.nodesRef.current,d,!1).some(a=>(0,m.contains)(a.context?.elements.floating,e)))){let a,b;if(D.handler)return void D.handler(c);H(),G()&&!F()&&(a=(0,q.getDelay)(u,"close",D.pointerType),b=()=>{w.setOpen(!1,(0,j.createChangeEventDetails)(k.REASONS.triggerHover,c)),B?.events.emit("floating.closed",c)},a?D.openChangeTimeout.start(a,b):(D.openChangeTimeout.clear(),b()))}}),y&&(0,c.addEventListener)(y,"pointerdown",function(a){let b=(0,m.getTarget)(a);if(!(0,p.isInteractiveElement)(b)){D.interactedInside=!1;return}D.interactedInside=b?.closest("[aria-haspopup]")!=null},!0),()=>{B?.events.off("floating.closed",b)});function a(){return!!(B&&C&&(0,n.getNodeChildren)(B.nodesRef.current,C).length>0)}function b(c){!B||!C||a()||E.start(0,()=>{B.events.off("floating.closed",b),w.setOpen(!1,(0,j.createChangeEventDetails)(k.REASONS.triggerHover,c)),B.events.emit("floating.closed",c)})}},[t,y,w,A,u,v,G,F,H,D,B,C,E])}])},572077,a=>{"use strict";var b=a.i(546329),c=a.i(779549),d=a.i(736069);a.i(361813);class e{constructor(){this.pointerType=void 0,this.interactedInside=!1,this.handler=void 0,this.blockMouseMove=!0,this.performedPointerEventsMutation=!1,this.pointerEventsScopeElement=null,this.pointerEventsReferenceElement=null,this.pointerEventsFloatingElement=null,this.restTimeoutPending=!1,this.openChangeTimeout=new d.Timeout,this.restTimeout=new d.Timeout,this.handleCloseOptions=void 0}static create(){return new e}dispose=()=>{this.openChangeTimeout.clear(),this.restTimeout.clear()};disposeEffect=()=>this.dispose}let f=new WeakMap;function g(a){if(!a.performedPointerEventsMutation)return;let b=a.pointerEventsScopeElement;b&&f.get(b)===a&&(a.pointerEventsScopeElement?.style.removeProperty("pointer-events"),a.pointerEventsReferenceElement?.style.removeProperty("pointer-events"),a.pointerEventsFloatingElement?.style.removeProperty("pointer-events"),f.delete(b)),a.performedPointerEventsMutation=!1,a.pointerEventsScopeElement=null,a.pointerEventsReferenceElement=null,a.pointerEventsFloatingElement=null}a.s(["applySafePolygonPointerEventsMutation",0,function(a,b){let{scopeElement:c,referenceElement:d,floatingElement:e}=b,h=f.get(c);h&&h!==a&&g(h),g(a),a.performedPointerEventsMutation=!0,a.pointerEventsScopeElement=c,a.pointerEventsReferenceElement=d,a.pointerEventsFloatingElement=e,f.set(c,a),c.style.pointerEvents="none",d.style.pointerEvents="auto",e.style.pointerEvents="auto"},"clearSafePolygonPointerEventsMutation",0,g,"useHoverInteractionSharedState",0,function(a){let d=a.context.dataRef.current,f=(0,c.useRefWithInit)(()=>d.hoverInteractionState??e.create()).current;return d.hoverInteractionState||(d.hoverInteractionState=f),(0,b.useOnMount)(d.hoverInteractionState.disposeEffect),d.hoverInteractionState}])},705735,a=>{"use strict";var b=a.i(572131),c=a.i(935112),d=a.i(168536),e=a.i(43074),f=a.i(187828),g=a.i(854401),h=a.i(389862),i=a.i(426476),j=a.i(394552),k=a.i(307436),l=a.i(925123),m=a.i(30116),n=a.i(614209),o=a.i(572077),p=a.i(185252),q=a.i(290833);let r={current:null};a.s(["useHoverReferenceInteraction",0,function(a,s={}){let{enabled:t=!0,delay:u=0,handleClose:v=null,mouseOnly:w=!1,restMs:x=0,move:y=!0,triggerElementRef:z=r,externalTree:A,isActiveTrigger:B=!0,getHandleCloseContext:C,isClosing:D,shouldOpen:E,guardStaleOpen:F=!1}=s,G="rootStore"in a?a.rootStore:a,{dataRef:H,events:I}=G.context,J=(0,l.useFloatingTree)(A),K=(0,o.useHoverInteractionSharedState)(G),L=b.useRef(!1),M=(0,h.useValueAsRef)(v),N=(0,h.useValueAsRef)(u),O=(0,h.useValueAsRef)(x),P=(0,h.useValueAsRef)(t),Q=(0,h.useValueAsRef)(E),R=(0,h.useValueAsRef)(D),S=(0,g.useStableCallback)(()=>(0,p.isClickLikeOpenEvent)(H.current.openEvent?.type,K.interactedInside)),T=(0,g.useStableCallback)(()=>Q.current?.()!==!1),U=(0,g.useStableCallback)((a,b,c)=>{let d=G.context.triggerElements;return d.hasElement(b)?!a||!(0,m.contains)(a,b):!!(0,i.isElement)(c)&&d.hasMatchingElement(a=>(0,m.contains)(a,c))&&(!a||!(0,m.contains)(a,c))}),V=(0,g.useStableCallback)(()=>{K.handler&&((0,f.ownerDocument)(G.select("domReferenceElement")).removeEventListener("mousemove",K.handler),K.handler=void 0)}),W=(0,g.useStableCallback)(()=>{(0,o.clearSafePolygonPointerEventsMutation)(K)});return B&&(K.handleCloseOptions=v?.__options),b.useEffect(()=>V,[V]),b.useEffect(()=>{if(t)return I.on("openchange",a),()=>{I.off("openchange",a)};function a(a){a.open?L.current=!1:(L.current=a.reason===k.REASONS.triggerHover,V(),K.openChangeTimeout.clear(),K.restTimeout.clear(),K.blockMouseMove=!0,K.restTimeoutPending=!1)}},[t,I,K,V]),b.useEffect(()=>{if(!t)return;function a(b,c=!0){let d=(0,p.getDelay)(N.current,"close",K.pointerType);d?K.openChangeTimeout.start(d,()=>{G.setOpen(!1,(0,j.createChangeEventDetails)(k.REASONS.triggerHover,b)),J?.events.emit("floating.closed",b)}):c&&(K.openChangeTimeout.clear(),G.setOpen(!1,(0,j.createChangeEventDetails)(k.REASONS.triggerHover,b)),J?.events.emit("floating.closed",b))}let b=z.current??(B?G.select("domReferenceElement"):null);if(!(0,i.isElement)(b))return;function c(a){if(K.openChangeTimeout.clear(),K.blockMouseMove=!1,w&&!(0,n.isMouseLikePointerType)(K.pointerType))return;let b=(0,p.getRestMs)(O.current),c=(0,p.getDelay)(N.current,"open",K.pointerType),d=(0,m.getTarget)(a),e=a.currentTarget??null,f=G.select("domReferenceElement"),g=e;if((0,i.isElement)(d)&&!G.context.triggerElements.hasElement(d)){for(let a of G.context.triggerElements.elements())if((0,m.contains)(a,d)){g=a;break}}(0,i.isElement)(e)&&(0,i.isElement)(f)&&!G.context.triggerElements.hasElement(e)&&(0,m.contains)(e,f)&&(g=f);let h=null!=g&&U(f,g,d),l=G.select("open"),o=R.current?.()??"ending"===G.select("transitionStatus"),q=!l&&o&&L.current,r=!h&&(0,i.isElement)(g)&&(0,i.isElement)(f)&&(0,m.contains)(f,g)&&q,s=b>0&&!c,t=!l||h;if(h&&(l||q)||r){T()&&G.setOpen(!0,(0,j.createChangeEventDetails)(k.REASONS.triggerHover,a,g));return}!s&&(c?K.openChangeTimeout.start(c,()=>{t&&T()&&G.setOpen(!0,(0,j.createChangeEventDetails)(k.REASONS.triggerHover,a,g))}):t&&T()&&G.setOpen(!0,(0,j.createChangeEventDetails)(k.REASONS.triggerHover,a,g)))}function g(b){if(S())return void W();V();let c=G.select("domReferenceElement"),d=(0,f.ownerDocument)(c);K.restTimeout.clear(),K.restTimeoutPending=!1;let e=H.current.floatingContext??C?.();if(!(0,q.isInsideEnabledTrigger)(b.relatedTarget,G.context.triggerElements)){if(M.current&&e){G.select("open")||K.openChangeTimeout.clear();let c=z.current;K.handler=M.current({...e,tree:J,x:b.clientX,y:b.clientY,onClose(){W(),V(),P.current&&!S()&&c===G.select("domReferenceElement")&&a(b,!0)}}),d.addEventListener("mousemove",K.handler),K.handler(b);return}"touch"===K.pointerType&&(0,m.contains)(G.select("floatingElement"),b.relatedTarget)||a(b)}}let h=F?(0,d.addEventListener)(b,"mouseout",function(a){(0,m.contains)(b,a.relatedTarget)||(K.openChangeTimeout.clear(),K.restTimeout.clear(),K.restTimeoutPending=!1)}):void 0;return y?(0,e.mergeCleanups)((0,d.addEventListener)(b,"mousemove",c,{once:!0}),(0,d.addEventListener)(b,"mouseenter",c),(0,d.addEventListener)(b,"mouseleave",g),h):(0,e.mergeCleanups)((0,d.addEventListener)(b,"mouseenter",c),(0,d.addEventListener)(b,"mouseleave",g),h)},[V,W,H,N,G,t,M,K,B,U,S,w,y,O,z,J,P,C,R,T,F]),b.useMemo(()=>{if(t)return{onPointerDown:a,onPointerEnter:a,onMouseMove(a){let{nativeEvent:b}=a,d=a.currentTarget,e=G.select("domReferenceElement"),f=G.select("open"),g=U(e,d,a.target);if(w&&!(0,n.isMouseLikePointerType)(K.pointerType))return;if(f&&g&&K.handleCloseOptions?.blockPointerEvents){let a=G.select("floatingElement");if(a){let b=K.handleCloseOptions?.getScope?.()??d.ownerDocument.body;(0,o.applySafePolygonPointerEventsMutation)(K,{scopeElement:b,referenceElement:d,floatingElement:a})}}let h=(0,p.getRestMs)(O.current);function i(){if(K.restTimeoutPending=!1,S())return;let a=G.select("open");!K.blockMouseMove&&(!a||g)&&T()&&G.setOpen(!0,(0,j.createChangeEventDetails)(k.REASONS.triggerHover,b,d))}(!f||g)&&0!==h&&(!g&&K.restTimeoutPending&&a.movementX**2+a.movementY**2<2||(K.restTimeout.clear(),"touch"===K.pointerType?c.flushSync(()=>{i()}):g&&f?i():(K.restTimeoutPending=!0,K.restTimeout.start(h,i))))}};function a(a){K.pointerType=a.pointerType}},[t,K,S,U,w,G,O,T])}])},185252,a=>{"use strict";var b=a.i(614209);a.s(["getDelay",0,function(a,c,d){let e=null==d||(0,b.isMouseLikePointerType)(d)?"function"==typeof a?a():a:0;return"number"==typeof e?e:e?.[c]},"getRestMs",0,function(a){return"function"==typeof a?a():a},"isClickLikeOpenEvent",0,function(a,b){return b||"click"===a||"mousedown"===a},"isHoverOpenEvent",0,function(a){return a?.includes("mouse")&&"mousedown"!==a}])},25003,a=>{"use strict";var b=a.i(426476),c=a.i(736069),d=a.i(30116),e=a.i(287084);let f=.1*.1;function g(a,b,c,d,e,f){return d>=b!=f>=b&&a<=(e-c)*(b-d)/(f-d)+c}function h(a,b,c,d,e,f,h,i,j,k){let l=!1;return g(a,b,c,d,e,f)&&(l=!l),g(a,b,e,f,h,i)&&(l=!l),g(a,b,h,i,j,k)&&(l=!l),g(a,b,j,k,c,d)&&(l=!l),l}function i(a,b,c,d,e,f){let g=Math.min(c,e),h=Math.max(c,e),i=Math.min(d,f),j=Math.max(d,f);return a>=g&&a<=h&&b>=i&&b<=j}a.s(["safePolygon",0,function(a={}){let{blockPointerEvents:g=!1}=a,j=new c.Timeout,k=({x:a,y:c,placement:g,elements:k,onClose:l,nodeId:m,tree:n})=>{let o=g?.split("-")[0],p=!1,q=null,r=null,s="u">typeof performance?performance.now():0;return function(g){j.clear();let t=k.domReference,u=k.floating;if(!t||!u||null==o||null==a||null==c)return;let{clientX:v,clientY:w}=g,x=(0,d.getTarget)(g),y="mouseleave"===g.type,z=(0,d.contains)(u,x),A=(0,d.contains)(t,x);if(z&&(p=!0,!y))return;if(A&&(p=!1,!y)){p=!0;return}if(y&&(0,b.isElement)(g.relatedTarget)&&(0,d.contains)(u,g.relatedTarget))return;function B(){return!!(n&&(0,e.getNodeChildren)(n.nodesRef.current,m).length>0)}function C(){B()||(j.clear(),l())}if(B())return;let D=t.getBoundingClientRect(),E=u.getBoundingClientRect(),F=a>E.right-E.width/2,G=c>E.bottom-E.height/2,H=E.width>D.width,I=E.height>D.height,J=(H?D:E).left,K=(H?D:E).right,L=(I?D:E).top,M=(I?D:E).bottom;if("top"===o&&c>=D.bottom-1||"bottom"===o&&c<=D.top+1||"left"===o&&a>=D.right-1||"right"===o&&a<=D.left+1)return void C();let N=!1;switch(o){case"top":N=i(v,w,J,D.top+1,K,E.bottom-1);break;case"bottom":N=i(v,w,J,E.top+1,K,D.bottom-1);break;case"left":N=i(v,w,E.right-1,M,D.left+1,L);break;case"right":N=i(v,w,D.right-1,M,E.left+1,L)}if(N)return;if(p&&(!(v>=D.x)||!(v<=D.x+D.width)||!(w>=D.y)||!(w<=D.y+D.height))||!y&&function(a,b){let c=performance.now(),d=c-s;if(null===q||null===r||0===d)return q=a,r=b,s=c,!1;let e=a-q,g=b-r;return q=a,r=b,s=c,e*e+g*g<d*d*f}(v,w))return void C();let O=!1;switch(o){case"top":{let b=H?.25:2,d=c+.5+1,e=F||H?E.bottom-.5:E.top,f=F?H?E.bottom-.5:E.top:E.bottom-.5;O=h(v,w,H||F?a+b:a-b,d,H?a-b:F?a+b:a-b,d,E.left,e,E.right,f);break}case"bottom":{let b=H?.25:2,d=c-.5,e=F||H?E.top+.5:E.bottom,f=F?H?E.top+.5:E.bottom:E.top+.5;O=h(v,w,H||F?a+b:a-b,d,H?a-b:F?a+b:a-b,d,E.left,e,E.right,f);break}case"left":{let b=I?.25:2,d=a+.5+1,e=G||I?E.right-.5:E.left,f=G?I?E.right-.5:E.left:E.right-.5;O=h(v,w,e,E.top,f,E.bottom,d,I||G?c+b:c-b,d,I?c-b:G?c+b:c-b);break}case"right":{let b=I?.25:2,d=a-.5,e=G||I?E.left+.5:E.right,f=G?I?E.left+.5:E.right:E.left+.5;O=h(v,w,d,I||G?c+b:c-b,d,I?c-b:G?c+b:c-b,e,E.top,f,E.bottom)}}O?p||j.start(40,C):C()}};return k.__options={...a,blockPointerEvents:g},k}])},290833,a=>{"use strict";var b=a.i(361813);a.s(["isInsideEnabledTrigger",()=>b.isTargetInsideEnabledTrigger])},19416,a=>{"use strict";var b=a.i(854662),c=a.i(572131);let d=c.createContext(void 0);a.s(["useToolbarRootContext",0,function(a){let e=c.useContext(d);if(void 0===e&&!a)throw Error((0,b.default)(69));return e}])},793332,a=>{"use strict";var b=a.i(572131),c=a.i(935112),d=a.i(30116),e=a.i(456498),f=a.i(394552),g=a.i(307436);a.s(["useTriggerFocusGuards",0,function(a,h){let i=b.useRef(null);return{preFocusGuardRef:i,handlePreFocusGuardFocus:function(b){c.flushSync(()=>{a.setOpen(!1,(0,f.createChangeEventDetails)(g.REASONS.focusOut,b.nativeEvent,b.currentTarget))});let d=(0,e.getTabbableBeforeElement)(i.current);d?.focus()},handleFocusTargetFocus:function(b){let i=a.select("positionerElement");if(i&&(0,e.isOutsideEvent)(b,i))a.context.beforeContentFocusGuardRef.current?.focus();else{c.flushSync(()=>{a.setOpen(!1,(0,f.createChangeEventDetails)(g.REASONS.focusOut,b.nativeEvent,b.currentTarget))});let j=(0,e.getTabbableAfterElement)(a.context.triggerFocusTargetRef.current||h.current);for(;null!==j&&(0,d.contains)(i,j);){let a=j;if((j=(0,e.getNextTabbable)(j))===a)break}j?.focus()}}}}])},402968,a=>{"use strict";var b=a.i(572131),c=a.i(187828),d=a.i(113259),e=a.i(357738);a.s(["useAnchoredPopupScrollLock",0,function(a,f,g,h){let[i,j]=b.useState(!1);(0,e.useIsoLayoutEffect)(()=>{if(!a||!f||null==g)return void j(!1);let b=(0,c.ownerDocument)(g).documentElement.clientWidth,d=g.offsetWidth;j(b>0&&d>0&&d>=b-20)},[a,f,g]),(0,d.useScrollLock)(a&&(!f||i),h)}])},362092,a=>{"use strict";var b=a.i(572131),c=a.i(935112),d=a.i(454125),e=a.i(754184),f=a.i(357738),g=a.i(854401),h=a.i(187828),i=a.i(443125),j=a.i(524715),k=a.i(144501);let l="--popup-width",m="--popup-height";var n=a.i(605632);function o(a,b,c){let d=a.style.getPropertyValue(b);return a.style.setProperty(b,c),()=>{a.style.setProperty(b,d)}}function p(a,b){let c=[];for(let[d,e]of Object.entries(b))c.push(o(a,d,e));return c.length?()=>{c.forEach(a=>a())}:j.NOOP}function q(a,b){let c="auto"===b?"auto":`${b.width}px`,d="auto"===b?"auto":`${b.height}px`;a.style.setProperty(l,c),a.style.setProperty(m,d)}function r(a,b){let c="max-content"===b?"max-content":`${b.width}px`,d="max-content"===b?"max-content":`${b.height}px`;a.style.setProperty(n.positionerWidth,c),a.style.setProperty(n.positionerHeight,d)}var s=a.i(162903),t=a.i(744530),u=a.i(20265),v=a.i(752240);let w={name:"adaptiveOrigin",async fn(a){let{x:b,y:c,rects:{floating:d},elements:{floating:e},platform:f,strategy:g,placement:i}=a,j=(0,t.ownerWindow)(e),k=j.getComputedStyle(e);if("0s"===k.transitionDuration||""===k.transitionDuration)return{x:b,y:c,data:v.DEFAULT_SIDES};let l=await f.getOffsetParent?.(e),m={width:0,height:0};if("fixed"===g&&j?.visualViewport)m={width:j.visualViewport.width,height:j.visualViewport.height};else if(l===j){let a=(0,h.ownerDocument)(e);m={width:a.documentElement.clientWidth,height:a.documentElement.clientHeight}}else await f.isElement?.(l)&&(m=await f.getDimensions(l));let n=(0,u.getSide)(i),o=b,p=c;return"left"===n&&(o=m.width-(b+d.width)),"top"===n&&(p=m.height-(c+d.height)),{x:o,y:p,data:{sideX:"left"===n?"right":v.DEFAULT_SIDES.sideX,sideY:"top"===n?"bottom":v.DEFAULT_SIDES.sideY}}}};var x=a.i(187924);a.s(["popupViewportStateMapping",0,{activationDirection:a=>a?{"data-activation-direction":a}:null},"usePopupViewport",0,function(a){let t,{store:u,side:v,children:y}=a,z=(0,s.useDirection)(),A=u.useState("activeTriggerElement"),B=u.useState("activeTriggerId"),C=u.useState("open"),D=u.useState("payload"),E=u.useState("mounted"),F=u.useState("popupElement"),G=u.useState("positionerElement"),H=function(a){let[c,d]=b.useState({current:a,previous:null});return Object.is(a,c.current)||d({current:a,previous:c.current}),c.previous}(C?A:null),I=function(a,c){let[d,e]=b.useState(0),g=b.useRef(a),h=b.useRef(c),i=b.useRef(!1);return(0,f.useIsoLayoutEffect)(()=>{let b=g.current,d=c!==h.current;a!==b?(e(a=>a+1),i.current=!d):i.current&&d&&(e(a=>a+1),i.current=!1),g.current=a,h.current=c},[a,c]),`${a??"current"}-${d}`}(B,D),J=b.useRef(null),[K,L]=b.useState(null),[M,N]=b.useState(null),O=b.useRef(null),P=b.useRef(null),Q=(0,i.useAnimationsFinished)(O,!0),R=(0,e.useAnimationFrame)(),S=b.useRef(null),[T,U]=b.useState(null),[V,W]=b.useState(!1);(0,f.useIsoLayoutEffect)(()=>(u.set("adaptiveOrigin",w),()=>{u.set("adaptiveOrigin",void 0)}),[u]);let X=(0,g.useStableCallback)(()=>{O.current?.style.setProperty("animation","none"),O.current?.style.setProperty("transition","none"),P.current?.style.setProperty("display","none")}),Y=(0,g.useStableCallback)(a=>{O.current?.style.removeProperty("animation"),O.current?.style.removeProperty("transition"),P.current?.style.removeProperty("display"),a&&U(a)}),Z=(0,g.useStableCallback)(()=>{S.current?.abort();let a=new AbortController;S.current=a,Q(()=>{L(null),U(null),J.current=null},a.signal)}),$=b.useRef(null);(0,f.useIsoLayoutEffect)(()=>{C&&E||($.current=null)},[C,E]),(0,f.useIsoLayoutEffect)(()=>{var a,b;let c,d,e,f;A&&H&&A!==H&&$.current!==A&&J.current&&(L(J.current),W(!0),N((a=H,b=A,c=a.getBoundingClientRect(),d=b.getBoundingClientRect(),e={x:c.left+c.width/2,y:c.top+c.height/2},{horizontal:(f={x:d.left+d.width/2,y:d.top+d.height/2}).x-e.x,vertical:f.y-e.y})),$.current=A)},[A,H]),(0,f.useIsoLayoutEffect)(()=>{null!=K&&(S.current?.abort(),W(!0),R.request(()=>{c.flushSync(()=>{W(!1)}),Z()}))},[I,K,Z,R]),(0,f.useIsoLayoutEffect)(()=>{let a=O.current;if(!a)return;let b=(0,h.ownerDocument)(a).createElement("div");for(let c of Array.from(a.childNodes))b.appendChild(c.cloneNode(!0));J.current=b});let _=null!=K;return t=_?(0,x.jsxs)(b.Fragment,{children:[(0,x.jsx)("div",{"data-previous":!0,inert:(0,d.inertValue)(!0),ref:P,style:{...T?{[l]:`${T.width}px`,[m]:`${T.height}px`}:null,position:"absolute"},"data-ending-style":V?void 0:""},"previous"),(0,x.jsx)("div",{"data-current":!0,ref:O,"data-starting-style":V?"":void 0,children:y},I)]}):(0,x.jsx)("div",{"data-current":!0,ref:O,children:y},I),(0,f.useIsoLayoutEffect)(()=>{let a=P.current;a&&K&&a.replaceChildren(...Array.from(K.childNodes))},[K]),!function(a){let{popupElement:c,positionerElement:d,content:h,mounted:s,onMeasureLayout:t,onMeasureLayoutComplete:u,side:v,direction:w}=a,x=(0,i.useAnimationsFinished)(c,!0),y=(0,e.useAnimationFrame)(),z=b.useRef(null),A=b.useRef(!0),B=b.useRef(j.NOOP),C=(0,g.useStableCallback)(t),D=(0,g.useStableCallback)(u),E=b.useMemo(()=>{var a,b;let c,d;return a=v,b=w,c="top"===a,d="left"===a||a===("rtl"===b?"inline-end":"inline-start"),c||d?{position:"absolute",[c?"bottom":"top"]:"0",[d?"right":"left"]:"0"}:j.EMPTY_OBJECT},[v,w]);(0,f.useIsoLayoutEffect)(()=>{if(!s){B.current=j.NOOP,A.current=!0,z.current=null;return}if(!c||!d)return;B.current=p(c,E),q(c,"auto");let a=o(c,"position","static"),b=o(c,"transform","none"),e=o(c,"scale","1"),f=p(d,{[n.availableWidth]:"max-content",[n.availableHeight]:"max-content"});function g(){a(),b(),f(),e()}if(C?.(),A.current||null===z.current){r(d,"max-content");let a=(0,k.getCssDimensions)(c);return z.current=a,r(d,a),g(),D?.(null,a),A.current=!1,()=>{B.current(),B.current=j.NOOP}}r(d,"max-content");let h=z.current,i=(0,k.getCssDimensions)(c);z.current=i,q(c,h),g(),D?.(h,i),r(d,i);let t=new AbortController;return y.request(()=>{q(c,i),x(()=>{c.style.setProperty(l,"auto"),c.style.setProperty(m,"auto")},t.signal)}),()=>{t.abort(),y.cancel(),B.current(),B.current=j.NOOP}},[h,c,d,x,y,s,C,D,E])}({popupElement:F,positionerElement:G,mounted:E,content:D,onMeasureLayout:X,onMeasureLayoutComplete:Y,side:v,direction:z}),{children:t,state:{activationDirection:function(a){if(a){var b,c;return`${(b=a.horizontal)>5?"right":b<-5?"left":""} ${(c=a.vertical)>5?"down":c<-5?"up":""}`}}(M),transitioning:_}}}],362092)}];
1
+ module.exports=[545097,a=>{"use strict";var b=a.i(187924),c=a.i(497895);let d={muted:{under:"text-muted-foreground/60 dark:text-muted-foreground",band:"via-foreground"},waiting:{under:"text-waiting/70",band:"via-waiting/30"},reading:{under:"text-foreground",band:"via-waiting/80"}};a.s(["ShinyText",0,function({text:a,tone:e="muted",speed:f=2.4,className:g}){let{under:h,band:i}=d[e];return(0,b.jsxs)("span",{"data-slot":"shiny-text",className:(0,c.cn)("relative inline-block max-w-full",h,g),children:[a,(0,b.jsx)("span",{"aria-hidden":!0,style:{animationDuration:`${f}s`},className:(0,c.cn)("pointer-events-none absolute inset-0 animate-shine overflow-hidden bg-linear-120 from-transparent from-35% via-50% to-transparent to-65% bg-size-[200%_auto] bg-clip-text text-transparent p-[inherit] select-none [text-overflow:inherit] motion-reduce:hidden",i),children:a})]})}])},61876,a=>{"use strict";var b=a.i(156757),c=a.i(287702);let d=b.z.enum(["openai","chatgpt","anthropic","google","xai","vercel-ai-gateway","mistral","deepseek","groq","cerebras","togetherai","fireworks","deepinfra","cohere"]),e=b.z.object({provider:d,model:b.z.string().trim().min(1,"Model name is required").max(80)}),f=["none","minimal","low","medium","high","xhigh"],g=b.z.enum(f),h=b.z.enum(["openai","google","xai","vercel-ai-gateway"]),i=b.z.object({provider:h,model:b.z.string().trim().min(1,"Model name is required").max(120)}),j={openai:{label:"OpenAI",apiKeyName:"OPENAI_API_KEY",models:{image:[{id:"gpt-image-1-mini",label:"GPT Image 1 mini",tier:"small"},{id:"gpt-image-2.5-flare",label:"GPT Image 2.5 Flare",tier:"mid"},{id:"gpt-image-2.5-sunburst",label:"GPT Image 2.5 Sunburst",tier:"large"}],video:[],speech:[{id:"tts-1",label:"TTS 1",tier:"small"},{id:"gpt-4o-mini-tts",label:"4o mini TTS",tier:"mid"},{id:"tts-1-hd",label:"TTS 1 HD",tier:"large"}],transcription:[{id:"gpt-4o-mini-transcribe",label:"4o mini Transcribe",tier:"small"},{id:"gpt-transcribe",label:"GPT Transcribe",tier:"mid"}]}},google:{label:"Gemini",apiKeyName:"GOOGLE_GENERATIVE_AI_API_KEY",models:{image:[{id:"gemini-3.1-flash-lite-image",label:"3.1 Flash Lite Image",tier:"small"},{id:"gemini-3.1-flash-image",label:"3.1 Flash Image",tier:"mid"},{id:"gemini-3-pro-image",label:"3 Pro Image",tier:"large"}],video:[{id:"veo-3.1-lite-generate-preview",label:"Veo 3.1 Lite",tier:"small"},{id:"veo-3.1-fast-generate-preview",label:"Veo 3.1 Fast",tier:"mid"},{id:"veo-3.1-generate-preview",label:"Veo 3.1",tier:"large"}],speech:[{id:"gemini-2.5-flash-preview-tts",label:"2.5 Flash TTS",tier:"small"},{id:"gemini-3.1-flash-tts-preview",label:"3.1 Flash TTS",tier:"mid"},{id:"gemini-2.5-pro-preview-tts",label:"2.5 Pro TTS",tier:"large"}],transcription:[{id:"gemini-3.5-transcribe",label:"3.5 Transcribe",tier:"mid"}]}},xai:{label:"xAI",apiKeyName:"XAI_API_KEY",models:{image:[{id:"grok-imagine-image",label:"Grok Imagine",tier:"small"},{id:"grok-imagine-image-2.0",label:"Grok Imagine 2.0",tier:"mid"}],video:[{id:"grok-imagine-video",label:"Grok Imagine Video",tier:"small"},{id:"grok-imagine-video-1.5",label:"Grok Imagine Video 1.5",tier:"mid"}],speech:[{id:"grok-tts",label:"Grok TTS",tier:"mid"}],transcription:[{id:"grok-stt",label:"Grok STT",tier:"mid"}]}},"vercel-ai-gateway":{label:"Vercel AI Gateway",apiKeyName:"AI_GATEWAY_API_KEY",models:{image:[{id:"bytedance/seedream-5.0-lite",label:"Seedream 5.0 Lite",tier:"small"},{id:"bfl/flux-2-klein-9b",label:"FLUX 2 Klein 9B",tier:"small"},{id:"spacexai/grok-imagine-image-2.0",label:"Grok Imagine 2.0",tier:"small"},{id:"bfl/flux-2-pro",label:"FLUX 2 Pro",tier:"mid"},{id:"bytedance/seedream-5.0-pro",label:"Seedream 5.0 Pro",tier:"mid"},{id:"recraft/recraft-v4.1",label:"Recraft V4.1",tier:"mid"},{id:"openai/gpt-image-2.5-sunburst",label:"GPT Image 2.5 Sunburst",tier:"large"}],video:[{id:"bytedance/seedance-2.0-mini",label:"Seedance 2.0 Mini",tier:"small"},{id:"google/veo-3.1-lite-generate-001",label:"Veo 3.1 Lite",tier:"small"},{id:"alibaba/wan-v2.6-t2v",label:"Wan 2.6",tier:"small"},{id:"google/veo-3.1-fast-generate-001",label:"Veo 3.1 Fast",tier:"mid"},{id:"bytedance/seedance-2.5",label:"Seedance 2.5",tier:"mid"},{id:"spacexai/grok-imagine-video-1.5",label:"Grok Imagine Video 1.5",tier:"mid"},{id:"klingai/kling-v3.0-t2v",label:"Kling 3.0",tier:"large"},{id:"google/veo-3.1-generate-001",label:"Veo 3.1",tier:"large"}],speech:[{id:"fish-audio/s1",label:"Fish Audio S1",tier:"small"},{id:"openai/tts-1",label:"OpenAI TTS 1",tier:"small"},{id:"spacexai/grok-tts",label:"Grok TTS",tier:"mid"},{id:"fish-audio/s2.1-pro",label:"Fish Audio S2.1 Pro",tier:"mid"},{id:"openai/tts-1-hd",label:"OpenAI TTS 1 HD",tier:"large"}],transcription:[{id:"spacexai/grok-stt",label:"Grok STT",tier:"small"},{id:"fish-audio/transcribe-1",label:"Fish Transcribe 1",tier:"small"},{id:"openai/gpt-4o-mini-transcribe",label:"4o mini Transcribe",tier:"small"},{id:"openai/gpt-4o-transcribe",label:"4o Transcribe",tier:"mid"},{id:"google/gemini-3.5-transcribe",label:"Gemini 3.5 Transcribe",tier:"mid"}]}}},k=Object.keys(j).map(a=>({id:a,...j[a]})),l={openai:{label:"OpenAI",apiKeyName:"OPENAI_API_KEY",keysAt:"https://platform.openai.com/api-keys",keyLooks:"sk-…",defaultTier:"small",suggestModels:[{id:"gpt-6-luna",label:"6 Luna",tier:"small",context:105e4,efforts:["none","low","medium","high","xhigh"]},{id:"gpt-6-sol",label:"6 Sol",tier:"mid",context:105e4,efforts:["none","low","medium","high","xhigh"]},{id:"gpt-6-astra",label:"6 Astra",tier:"large",context:105e4,efforts:["low","medium","high","xhigh"]}]},chatgpt:{label:"GPT Subscription",apiKeyName:"CHATGPT_SIGN_IN",signIn:!0,suggestModels:[{id:"gpt-6-luna",label:"6 Luna",tier:"small",context:272e3,efforts:["none","low","medium","high","xhigh"]},{id:"gpt-6-sol",label:"6 Sol",tier:"mid",context:272e3,efforts:["none","low","medium","high","xhigh"]},{id:"gpt-6-astra",label:"6 Astra",tier:"large",context:272e3,efforts:["low","medium","high","xhigh"]}]},anthropic:{label:"Claude",apiKeyName:"ANTHROPIC_API_KEY",keysAt:"https://platform.claude.com/settings/keys",keyLooks:"sk-ant-…",suggestModels:[{id:"claude-haiku-4-5",label:"Haiku 4.5",tier:"small",efforts:["none","minimal","low","medium","high","xhigh"]},{id:"claude-sonnet-5",label:"Sonnet 5",tier:"mid",context:1e6,efforts:["none","low","medium","high","xhigh"]},{id:"claude-opus-5-5",label:"Opus 5.5",tier:"large",context:1e6,efforts:["low","medium","high","xhigh"]},{id:"claude-fable-5-1",label:"Fable 5.1",tier:"large",efforts:["none","low","medium","high","xhigh"]}]},google:{label:"Gemini",apiKeyName:"GOOGLE_GENERATIVE_AI_API_KEY",keysAt:"https://aistudio.google.com/apikey",keyLooks:"AIza…",suggestModels:[{id:"gemini-3.5-flash-lite",label:"3.5 Flash Lite",tier:"small",context:1e6,efforts:["minimal","low","medium","high"]},{id:"gemini-3.8-flash",label:"3.8 Flash",tier:"mid",context:1e6,efforts:["low","medium","high"]}]},xai:{label:"xAI",apiKeyName:"XAI_API_KEY",keysAt:"https://console.x.ai",keyLooks:"xai-…",suggestModels:[{id:"grok-4.7",label:"Grok 4.7",tier:"large",context:5e5,efforts:["none","low","medium","high","xhigh"]}]},"vercel-ai-gateway":{label:"Vercel AI Gateway",apiKeyName:"AI_GATEWAY_API_KEY",keysAt:"https://vercel.com/docs/ai-gateway/authentication-and-byok/authentication",suggestModels:[{id:"zai/glm-5.3-flash",label:"GLM 5.3 Flash",tier:"small"},{id:"google/gemini-3.8-flash",label:"Gemini 3.8 Flash",tier:"small"},{id:"openai/gpt-6-luna",label:"GPT 6 Luna",tier:"small",context:105e4},{id:"zai/glm-5.3",label:"GLM 5.3",tier:"mid"},{id:"spacexai/grok-4.7",label:"Grok 4.7",tier:"mid",context:5e5},{id:"anthropic/claude-sonnet-5",label:"Claude Sonnet 5",tier:"mid"},{id:"openai/gpt-6-sol",label:"GPT 6 Sol",tier:"mid",context:105e4},{id:"moonshotai/kimi-k3",label:"Kimi K3",tier:"mid"},{id:"anthropic/claude-opus-5.5",label:"Claude Opus 5.5",tier:"large",context:1e6},{id:"openai/gpt-6-astra",label:"GPT 6 Astra",tier:"large",context:105e4}]},mistral:{label:"Mistral",apiKeyName:"MISTRAL_API_KEY",keysAt:"https://console.mistral.ai/api-keys",suggestModels:[{id:"ministral-8b-latest",label:"Ministral 8B",tier:"small",efforts:[]},{id:"mistral-small-latest",label:"Small",tier:"mid",efforts:["none","high"]},{id:"mistral-medium-latest",label:"Medium",tier:"large",efforts:["none","high"]},{id:"mistral-large-latest",label:"Large",tier:"large",efforts:[]}]},deepseek:{label:"DeepSeek",apiKeyName:"DEEPSEEK_API_KEY",keysAt:"https://platform.deepseek.com/api_keys",keyLooks:"sk-…",suggestModels:[{id:"deepseek-flash",label:"V4.1 Flash",tier:"small",context:1e6,efforts:["none","low","high","xhigh"]},{id:"deepseek-v4-pro",label:"V4 Pro",tier:"large",context:1e6,efforts:["none","low","high","xhigh"]}]},groq:{label:"Groq",apiKeyName:"GROQ_API_KEY",keysAt:"https://console.groq.com/keys",keyLooks:"gsk_…",suggestModels:[{id:"openai/gpt-oss-20b",label:"GPT OSS 20B",tier:"small",context:131072,efforts:["low","medium","high"]},{id:"openai/gpt-oss-120b",label:"GPT OSS 120B",tier:"mid",context:131072,efforts:["low","medium","high"]},{id:"llama-3.3-70b-versatile",label:"Llama 3.3 70B",tier:"mid",context:131072,efforts:[]}]},cerebras:{label:"Cerebras",apiKeyName:"CEREBRAS_API_KEY",keysAt:"https://cloud.cerebras.ai",keyLooks:"csk-…",suggestModels:[{id:"qwen-3.8-27b",label:"Qwen 3.8 27B",tier:"small",context:64e3},{id:"gpt-oss-120b",label:"GPT OSS 120B",tier:"mid",context:65536}]},togetherai:{label:"Together",apiKeyName:"TOGETHER_AI_API_KEY",keysAt:"https://api.together.ai/settings/api-keys",suggestModels:[{id:"Qwen/Qwen3.5-9B",label:"Qwen 3.5 9B",tier:"small",context:262144},{id:"zai-org/GLM-5.3-Flash",label:"GLM 5.3 Flash",tier:"small",context:1048575},{id:"openai/gpt-oss-120b",label:"GPT OSS 120B",tier:"mid",context:131072},{id:"deepseek-ai/DeepSeek-V4.1-Flash",label:"DeepSeek V4.1 Flash",tier:"mid",context:1e6},{id:"zai-org/GLM-5.3",label:"GLM 5.3",tier:"large",context:1048575},{id:"moonshotai/Kimi-K3",label:"Kimi K3",tier:"large",context:1048576}]},fireworks:{label:"Fireworks",apiKeyName:"FIREWORKS_API_KEY",keysAt:"https://app.fireworks.ai/account/api-keys",keyLooks:"fw_…",suggestModels:[{id:"accounts/fireworks/models/glm-5p3-flash",label:"GLM 5.3 Flash",tier:"small",context:1048576},{id:"accounts/fireworks/models/deepseek-v4p1-flash",label:"DeepSeek V4.1 Flash",tier:"mid",context:1048576},{id:"accounts/fireworks/models/minimax-m3",label:"MiniMax M3",tier:"mid",context:512e3},{id:"accounts/fireworks/models/glm-5p3",label:"GLM 5.3",tier:"large",context:1048576},{id:"accounts/fireworks/models/kimi-k3",label:"Kimi K3",tier:"large",context:1048576}]},deepinfra:{label:"DeepInfra",apiKeyName:"DEEPINFRA_API_KEY",keysAt:"https://deepinfra.com/dash/api_keys",suggestModels:[{id:"deepseek-ai/DeepSeek-V4-Flash-0731",label:"DeepSeek V4 Flash",tier:"small",context:1048576},{id:"deepseek-ai/DeepSeek-V4.1-Flash",label:"DeepSeek V4.1 Flash",tier:"mid",context:1048576},{id:"zai-org/GLM-5.2",label:"GLM 5.2",tier:"mid",context:1048576},{id:"zai-org/GLM-5.3",label:"GLM 5.3",tier:"large",context:1048576},{id:"moonshotai/Kimi-K3",label:"Kimi K3",tier:"large",context:1048576}]},cohere:{label:"Cohere",apiKeyName:"COHERE_API_KEY",keysAt:"https://dashboard.cohere.com/api-keys",suggestModels:[{id:"command-r7b-12-2024",label:"Command R7B",tier:"small",context:128e3},{id:"command-a-03-2025",label:"Command A",tier:"mid",context:256e3},{id:"command-a-plus-05-2026",label:"Command A+",tier:"large",context:128e3}]}},m=Object.keys(l).map(a=>({id:a,...l[a]}));a.s(["EFFORTS",0,f,"GATEWAY_OWNERS",0,{anthropic:"anthropic",openai:"openai",google:"google",spacexai:"xai",mistral:"mistral",deepseek:"deepseek",cohere:"cohere"},"GATEWAY_TEXT",0,"language","GATEWAY_TOOL_USE",0,"tool-use","MEDIA_MODEL_PROVIDERS",0,j,"MEDIA_MODEL_PROVIDER_LIST",0,k,"TEXT_MODEL_PROVIDERS",0,l,"TEXT_MODEL_PROVIDER_LIST",0,m,"canMakeKind",0,(a,b)=>(j[a]?.models[b]?.length??0)>0,"compactAtFor",0,a=>a&&a>0?Math.round(a*c.BOT_RUN.compactHeadroom):c.BOT_RUN.compactAt,"contextWindowOf",0,function(a,b,c=[]){if("vercel-ai-gateway"===a)return c.find(a=>a.id===b)?.contextWindow??null;let d=l[a].suggestModels;return d.find(a=>a.id===b)?.context??null},"effortSchema",0,g,"effortsOf",0,function(a,b,c=[]){if("vercel-ai-gateway"===a)return c.find(a=>a.id===b)?.efforts??null;let d=l[a].suggestModels;return d.find(a=>a.id===b)?.efforts??null},"parseMediaModel",0,function(a){let[b,...c]=(a??"").trim().split("/"),d=i.safeParse({provider:b,model:c.join("/")});return d.success?d.data:null},"parseTextModel",0,function(a){let[b,...c]=(a??"").trim().split("/"),d=e.safeParse({provider:b,model:c.join("/")});return d.success?d.data:null},"textModelProviderSchema",0,d,"textModelRefSchema",0,e])},181673,a=>{"use strict";var b=a.i(572131),c=a.i(168536),d=a.i(43074),e=a.i(357738),f=a.i(187828),g=a.i(854401),h=a.i(736069),i=a.i(426476),j=a.i(394552),k=a.i(307436),l=a.i(925123),m=a.i(30116),n=a.i(287084),o=a.i(572077),p=a.i(361813),q=a.i(185252),r=a.i(290833);a.s(["useHoverFloatingInteraction",0,function(a,s={}){let{enabled:t=!0,closeDelay:u=0,nodeId:v}=s,w="rootStore"in a?a.rootStore:a,x=w.useState("open"),y=w.useState("floatingElement"),z=w.useState("domReferenceElement"),{dataRef:A}=w.context,B=(0,l.useFloatingTree)(),C=(0,l.useFloatingParentNodeId)(),D=(0,o.useHoverInteractionSharedState)(w),E=(0,h.useTimeout)(),F=(0,g.useStableCallback)(()=>(0,q.isClickLikeOpenEvent)(A.current.openEvent?.type,D.interactedInside)),G=(0,g.useStableCallback)(()=>(0,q.isHoverOpenEvent)(A.current.openEvent?.type)),H=(0,g.useStableCallback)(()=>{(0,o.clearSafePolygonPointerEventsMutation)(D)});(0,e.useIsoLayoutEffect)(()=>{x||(D.pointerType=void 0,D.restTimeoutPending=!1,D.interactedInside=!1,H())},[x,D,H]),b.useEffect(()=>H,[H]),(0,e.useIsoLayoutEffect)(()=>{if(t&&x&&D.handleCloseOptions?.blockPointerEvents&&G()&&(0,i.isElement)(z)&&y){let a=(0,f.ownerDocument)(y),b=B?.nodesRef.current.find(a=>a.id===C)?.context?.elements.floating;b&&(b.style.pointerEvents="");let c=D.pointerEventsScopeElement!==y?D.pointerEventsScopeElement:null,d=b!==y?b:null,e=D.handleCloseOptions?.getScope?.()??c??d??z.closest("[data-rootownerid]")??a.body;return(0,o.applySafePolygonPointerEventsMutation)(D,{scopeElement:e,referenceElement:z,floatingElement:y}),()=>{H()}}},[t,x,z,y,D,G,B,C,H]),b.useEffect(()=>{if(t)return(0,d.mergeCleanups)(y&&(0,c.addEventListener)(y,"mouseenter",function(){D.openChangeTimeout.clear(),E.clear(),B?.events.off("floating.closed",b),H()}),y&&(0,c.addEventListener)(y,"mouseleave",function(c){if(a()&&B)return void B.events.on("floating.closed",b);if((0,r.isInsideEnabledTrigger)(c.relatedTarget,w.context.triggerElements))return;let d=A.current.floatingContext?.nodeId??v,e=c.relatedTarget;if(!(B&&d&&(0,i.isElement)(e)&&(0,n.getNodeChildren)(B.nodesRef.current,d,!1).some(a=>(0,m.contains)(a.context?.elements.floating,e)))){let a,b;if(D.handler)return void D.handler(c);H(),G()&&!F()&&(a=(0,q.getDelay)(u,"close",D.pointerType),b=()=>{w.setOpen(!1,(0,j.createChangeEventDetails)(k.REASONS.triggerHover,c)),B?.events.emit("floating.closed",c)},a?D.openChangeTimeout.start(a,b):(D.openChangeTimeout.clear(),b()))}}),y&&(0,c.addEventListener)(y,"pointerdown",function(a){let b=(0,m.getTarget)(a);if(!(0,p.isInteractiveElement)(b)){D.interactedInside=!1;return}D.interactedInside=b?.closest("[aria-haspopup]")!=null},!0),()=>{B?.events.off("floating.closed",b)});function a(){return!!(B&&C&&(0,n.getNodeChildren)(B.nodesRef.current,C).length>0)}function b(c){!B||!C||a()||E.start(0,()=>{B.events.off("floating.closed",b),w.setOpen(!1,(0,j.createChangeEventDetails)(k.REASONS.triggerHover,c)),B.events.emit("floating.closed",c)})}},[t,y,w,A,u,v,G,F,H,D,B,C,E])}])},572077,a=>{"use strict";var b=a.i(546329),c=a.i(779549),d=a.i(736069);a.i(361813);class e{constructor(){this.pointerType=void 0,this.interactedInside=!1,this.handler=void 0,this.blockMouseMove=!0,this.performedPointerEventsMutation=!1,this.pointerEventsScopeElement=null,this.pointerEventsReferenceElement=null,this.pointerEventsFloatingElement=null,this.restTimeoutPending=!1,this.openChangeTimeout=new d.Timeout,this.restTimeout=new d.Timeout,this.handleCloseOptions=void 0}static create(){return new e}dispose=()=>{this.openChangeTimeout.clear(),this.restTimeout.clear()};disposeEffect=()=>this.dispose}let f=new WeakMap;function g(a){if(!a.performedPointerEventsMutation)return;let b=a.pointerEventsScopeElement;b&&f.get(b)===a&&(a.pointerEventsScopeElement?.style.removeProperty("pointer-events"),a.pointerEventsReferenceElement?.style.removeProperty("pointer-events"),a.pointerEventsFloatingElement?.style.removeProperty("pointer-events"),f.delete(b)),a.performedPointerEventsMutation=!1,a.pointerEventsScopeElement=null,a.pointerEventsReferenceElement=null,a.pointerEventsFloatingElement=null}a.s(["applySafePolygonPointerEventsMutation",0,function(a,b){let{scopeElement:c,referenceElement:d,floatingElement:e}=b,h=f.get(c);h&&h!==a&&g(h),g(a),a.performedPointerEventsMutation=!0,a.pointerEventsScopeElement=c,a.pointerEventsReferenceElement=d,a.pointerEventsFloatingElement=e,f.set(c,a),c.style.pointerEvents="none",d.style.pointerEvents="auto",e.style.pointerEvents="auto"},"clearSafePolygonPointerEventsMutation",0,g,"useHoverInteractionSharedState",0,function(a){let d=a.context.dataRef.current,f=(0,c.useRefWithInit)(()=>d.hoverInteractionState??e.create()).current;return d.hoverInteractionState||(d.hoverInteractionState=f),(0,b.useOnMount)(d.hoverInteractionState.disposeEffect),d.hoverInteractionState}])},705735,a=>{"use strict";var b=a.i(572131),c=a.i(935112),d=a.i(168536),e=a.i(43074),f=a.i(187828),g=a.i(854401),h=a.i(389862),i=a.i(426476),j=a.i(394552),k=a.i(307436),l=a.i(925123),m=a.i(30116),n=a.i(614209),o=a.i(572077),p=a.i(185252),q=a.i(290833);let r={current:null};a.s(["useHoverReferenceInteraction",0,function(a,s={}){let{enabled:t=!0,delay:u=0,handleClose:v=null,mouseOnly:w=!1,restMs:x=0,move:y=!0,triggerElementRef:z=r,externalTree:A,isActiveTrigger:B=!0,getHandleCloseContext:C,isClosing:D,shouldOpen:E,guardStaleOpen:F=!1}=s,G="rootStore"in a?a.rootStore:a,{dataRef:H,events:I}=G.context,J=(0,l.useFloatingTree)(A),K=(0,o.useHoverInteractionSharedState)(G),L=b.useRef(!1),M=(0,h.useValueAsRef)(v),N=(0,h.useValueAsRef)(u),O=(0,h.useValueAsRef)(x),P=(0,h.useValueAsRef)(t),Q=(0,h.useValueAsRef)(E),R=(0,h.useValueAsRef)(D),S=(0,g.useStableCallback)(()=>(0,p.isClickLikeOpenEvent)(H.current.openEvent?.type,K.interactedInside)),T=(0,g.useStableCallback)(()=>Q.current?.()!==!1),U=(0,g.useStableCallback)((a,b,c)=>{let d=G.context.triggerElements;return d.hasElement(b)?!a||!(0,m.contains)(a,b):!!(0,i.isElement)(c)&&d.hasMatchingElement(a=>(0,m.contains)(a,c))&&(!a||!(0,m.contains)(a,c))}),V=(0,g.useStableCallback)(()=>{K.handler&&((0,f.ownerDocument)(G.select("domReferenceElement")).removeEventListener("mousemove",K.handler),K.handler=void 0)}),W=(0,g.useStableCallback)(()=>{(0,o.clearSafePolygonPointerEventsMutation)(K)});return B&&(K.handleCloseOptions=v?.__options),b.useEffect(()=>V,[V]),b.useEffect(()=>{if(t)return I.on("openchange",a),()=>{I.off("openchange",a)};function a(a){a.open?L.current=!1:(L.current=a.reason===k.REASONS.triggerHover,V(),K.openChangeTimeout.clear(),K.restTimeout.clear(),K.blockMouseMove=!0,K.restTimeoutPending=!1)}},[t,I,K,V]),b.useEffect(()=>{if(!t)return;function a(b,c=!0){let d=(0,p.getDelay)(N.current,"close",K.pointerType);d?K.openChangeTimeout.start(d,()=>{G.setOpen(!1,(0,j.createChangeEventDetails)(k.REASONS.triggerHover,b)),J?.events.emit("floating.closed",b)}):c&&(K.openChangeTimeout.clear(),G.setOpen(!1,(0,j.createChangeEventDetails)(k.REASONS.triggerHover,b)),J?.events.emit("floating.closed",b))}let b=z.current??(B?G.select("domReferenceElement"):null);if(!(0,i.isElement)(b))return;function c(a){if(K.openChangeTimeout.clear(),K.blockMouseMove=!1,w&&!(0,n.isMouseLikePointerType)(K.pointerType))return;let b=(0,p.getRestMs)(O.current),c=(0,p.getDelay)(N.current,"open",K.pointerType),d=(0,m.getTarget)(a),e=a.currentTarget??null,f=G.select("domReferenceElement"),g=e;if((0,i.isElement)(d)&&!G.context.triggerElements.hasElement(d)){for(let a of G.context.triggerElements.elements())if((0,m.contains)(a,d)){g=a;break}}(0,i.isElement)(e)&&(0,i.isElement)(f)&&!G.context.triggerElements.hasElement(e)&&(0,m.contains)(e,f)&&(g=f);let h=null!=g&&U(f,g,d),l=G.select("open"),o=R.current?.()??"ending"===G.select("transitionStatus"),q=!l&&o&&L.current,r=!h&&(0,i.isElement)(g)&&(0,i.isElement)(f)&&(0,m.contains)(f,g)&&q,s=b>0&&!c,t=!l||h;if(h&&(l||q)||r){T()&&G.setOpen(!0,(0,j.createChangeEventDetails)(k.REASONS.triggerHover,a,g));return}!s&&(c?K.openChangeTimeout.start(c,()=>{t&&T()&&G.setOpen(!0,(0,j.createChangeEventDetails)(k.REASONS.triggerHover,a,g))}):t&&T()&&G.setOpen(!0,(0,j.createChangeEventDetails)(k.REASONS.triggerHover,a,g)))}function g(b){if(S())return void W();V();let c=G.select("domReferenceElement"),d=(0,f.ownerDocument)(c);K.restTimeout.clear(),K.restTimeoutPending=!1;let e=H.current.floatingContext??C?.();if(!(0,q.isInsideEnabledTrigger)(b.relatedTarget,G.context.triggerElements)){if(M.current&&e){G.select("open")||K.openChangeTimeout.clear();let c=z.current;K.handler=M.current({...e,tree:J,x:b.clientX,y:b.clientY,onClose(){W(),V(),P.current&&!S()&&c===G.select("domReferenceElement")&&a(b,!0)}}),d.addEventListener("mousemove",K.handler),K.handler(b);return}"touch"===K.pointerType&&(0,m.contains)(G.select("floatingElement"),b.relatedTarget)||a(b)}}let h=F?(0,d.addEventListener)(b,"mouseout",function(a){(0,m.contains)(b,a.relatedTarget)||(K.openChangeTimeout.clear(),K.restTimeout.clear(),K.restTimeoutPending=!1)}):void 0;return y?(0,e.mergeCleanups)((0,d.addEventListener)(b,"mousemove",c,{once:!0}),(0,d.addEventListener)(b,"mouseenter",c),(0,d.addEventListener)(b,"mouseleave",g),h):(0,e.mergeCleanups)((0,d.addEventListener)(b,"mouseenter",c),(0,d.addEventListener)(b,"mouseleave",g),h)},[V,W,H,N,G,t,M,K,B,U,S,w,y,O,z,J,P,C,R,T,F]),b.useMemo(()=>{if(t)return{onPointerDown:a,onPointerEnter:a,onMouseMove(a){let{nativeEvent:b}=a,d=a.currentTarget,e=G.select("domReferenceElement"),f=G.select("open"),g=U(e,d,a.target);if(w&&!(0,n.isMouseLikePointerType)(K.pointerType))return;if(f&&g&&K.handleCloseOptions?.blockPointerEvents){let a=G.select("floatingElement");if(a){let b=K.handleCloseOptions?.getScope?.()??d.ownerDocument.body;(0,o.applySafePolygonPointerEventsMutation)(K,{scopeElement:b,referenceElement:d,floatingElement:a})}}let h=(0,p.getRestMs)(O.current);function i(){if(K.restTimeoutPending=!1,S())return;let a=G.select("open");!K.blockMouseMove&&(!a||g)&&T()&&G.setOpen(!0,(0,j.createChangeEventDetails)(k.REASONS.triggerHover,b,d))}(!f||g)&&0!==h&&(!g&&K.restTimeoutPending&&a.movementX**2+a.movementY**2<2||(K.restTimeout.clear(),"touch"===K.pointerType?c.flushSync(()=>{i()}):g&&f?i():(K.restTimeoutPending=!0,K.restTimeout.start(h,i))))}};function a(a){K.pointerType=a.pointerType}},[t,K,S,U,w,G,O,T])}])},185252,a=>{"use strict";var b=a.i(614209);a.s(["getDelay",0,function(a,c,d){let e=null==d||(0,b.isMouseLikePointerType)(d)?"function"==typeof a?a():a:0;return"number"==typeof e?e:e?.[c]},"getRestMs",0,function(a){return"function"==typeof a?a():a},"isClickLikeOpenEvent",0,function(a,b){return b||"click"===a||"mousedown"===a},"isHoverOpenEvent",0,function(a){return a?.includes("mouse")&&"mousedown"!==a}])},25003,a=>{"use strict";var b=a.i(426476),c=a.i(736069),d=a.i(30116),e=a.i(287084);let f=.1*.1;function g(a,b,c,d,e,f){return d>=b!=f>=b&&a<=(e-c)*(b-d)/(f-d)+c}function h(a,b,c,d,e,f,h,i,j,k){let l=!1;return g(a,b,c,d,e,f)&&(l=!l),g(a,b,e,f,h,i)&&(l=!l),g(a,b,h,i,j,k)&&(l=!l),g(a,b,j,k,c,d)&&(l=!l),l}function i(a,b,c,d,e,f){let g=Math.min(c,e),h=Math.max(c,e),i=Math.min(d,f),j=Math.max(d,f);return a>=g&&a<=h&&b>=i&&b<=j}a.s(["safePolygon",0,function(a={}){let{blockPointerEvents:g=!1}=a,j=new c.Timeout,k=({x:a,y:c,placement:g,elements:k,onClose:l,nodeId:m,tree:n})=>{let o=g?.split("-")[0],p=!1,q=null,r=null,s="u">typeof performance?performance.now():0;return function(g){j.clear();let t=k.domReference,u=k.floating;if(!t||!u||null==o||null==a||null==c)return;let{clientX:v,clientY:w}=g,x=(0,d.getTarget)(g),y="mouseleave"===g.type,z=(0,d.contains)(u,x),A=(0,d.contains)(t,x);if(z&&(p=!0,!y))return;if(A&&(p=!1,!y)){p=!0;return}if(y&&(0,b.isElement)(g.relatedTarget)&&(0,d.contains)(u,g.relatedTarget))return;function B(){return!!(n&&(0,e.getNodeChildren)(n.nodesRef.current,m).length>0)}function C(){B()||(j.clear(),l())}if(B())return;let D=t.getBoundingClientRect(),E=u.getBoundingClientRect(),F=a>E.right-E.width/2,G=c>E.bottom-E.height/2,H=E.width>D.width,I=E.height>D.height,J=(H?D:E).left,K=(H?D:E).right,L=(I?D:E).top,M=(I?D:E).bottom;if("top"===o&&c>=D.bottom-1||"bottom"===o&&c<=D.top+1||"left"===o&&a>=D.right-1||"right"===o&&a<=D.left+1)return void C();let N=!1;switch(o){case"top":N=i(v,w,J,D.top+1,K,E.bottom-1);break;case"bottom":N=i(v,w,J,E.top+1,K,D.bottom-1);break;case"left":N=i(v,w,E.right-1,M,D.left+1,L);break;case"right":N=i(v,w,D.right-1,M,E.left+1,L)}if(N)return;if(p&&(!(v>=D.x)||!(v<=D.x+D.width)||!(w>=D.y)||!(w<=D.y+D.height))||!y&&function(a,b){let c=performance.now(),d=c-s;if(null===q||null===r||0===d)return q=a,r=b,s=c,!1;let e=a-q,g=b-r;return q=a,r=b,s=c,e*e+g*g<d*d*f}(v,w))return void C();let O=!1;switch(o){case"top":{let b=H?.25:2,d=c+.5+1,e=F||H?E.bottom-.5:E.top,f=F?H?E.bottom-.5:E.top:E.bottom-.5;O=h(v,w,H||F?a+b:a-b,d,H?a-b:F?a+b:a-b,d,E.left,e,E.right,f);break}case"bottom":{let b=H?.25:2,d=c-.5,e=F||H?E.top+.5:E.bottom,f=F?H?E.top+.5:E.bottom:E.top+.5;O=h(v,w,H||F?a+b:a-b,d,H?a-b:F?a+b:a-b,d,E.left,e,E.right,f);break}case"left":{let b=I?.25:2,d=a+.5+1,e=G||I?E.right-.5:E.left,f=G?I?E.right-.5:E.left:E.right-.5;O=h(v,w,e,E.top,f,E.bottom,d,I||G?c+b:c-b,d,I?c-b:G?c+b:c-b);break}case"right":{let b=I?.25:2,d=a-.5,e=G||I?E.left+.5:E.right,f=G?I?E.left+.5:E.right:E.left+.5;O=h(v,w,d,I||G?c+b:c-b,d,I?c-b:G?c+b:c-b,e,E.top,f,E.bottom)}}O?p||j.start(40,C):C()}};return k.__options={...a,blockPointerEvents:g},k}])},290833,a=>{"use strict";var b=a.i(361813);a.s(["isInsideEnabledTrigger",()=>b.isTargetInsideEnabledTrigger])},19416,a=>{"use strict";var b=a.i(854662),c=a.i(572131);let d=c.createContext(void 0);a.s(["useToolbarRootContext",0,function(a){let e=c.useContext(d);if(void 0===e&&!a)throw Error((0,b.default)(69));return e}])},793332,a=>{"use strict";var b=a.i(572131),c=a.i(935112),d=a.i(30116),e=a.i(456498),f=a.i(394552),g=a.i(307436);a.s(["useTriggerFocusGuards",0,function(a,h){let i=b.useRef(null);return{preFocusGuardRef:i,handlePreFocusGuardFocus:function(b){c.flushSync(()=>{a.setOpen(!1,(0,f.createChangeEventDetails)(g.REASONS.focusOut,b.nativeEvent,b.currentTarget))});let d=(0,e.getTabbableBeforeElement)(i.current);d?.focus()},handleFocusTargetFocus:function(b){let i=a.select("positionerElement");if(i&&(0,e.isOutsideEvent)(b,i))a.context.beforeContentFocusGuardRef.current?.focus();else{c.flushSync(()=>{a.setOpen(!1,(0,f.createChangeEventDetails)(g.REASONS.focusOut,b.nativeEvent,b.currentTarget))});let j=(0,e.getTabbableAfterElement)(a.context.triggerFocusTargetRef.current||h.current);for(;null!==j&&(0,d.contains)(i,j);){let a=j;if((j=(0,e.getNextTabbable)(j))===a)break}j?.focus()}}}}])},402968,a=>{"use strict";var b=a.i(572131),c=a.i(187828),d=a.i(113259),e=a.i(357738);a.s(["useAnchoredPopupScrollLock",0,function(a,f,g,h){let[i,j]=b.useState(!1);(0,e.useIsoLayoutEffect)(()=>{if(!a||!f||null==g)return void j(!1);let b=(0,c.ownerDocument)(g).documentElement.clientWidth,d=g.offsetWidth;j(b>0&&d>0&&d>=b-20)},[a,f,g]),(0,d.useScrollLock)(a&&(!f||i),h)}])},362092,a=>{"use strict";var b=a.i(572131),c=a.i(935112),d=a.i(454125),e=a.i(754184),f=a.i(357738),g=a.i(854401),h=a.i(187828),i=a.i(443125),j=a.i(524715),k=a.i(144501);let l="--popup-width",m="--popup-height";var n=a.i(605632);function o(a,b,c){let d=a.style.getPropertyValue(b);return a.style.setProperty(b,c),()=>{a.style.setProperty(b,d)}}function p(a,b){let c=[];for(let[d,e]of Object.entries(b))c.push(o(a,d,e));return c.length?()=>{c.forEach(a=>a())}:j.NOOP}function q(a,b){let c="auto"===b?"auto":`${b.width}px`,d="auto"===b?"auto":`${b.height}px`;a.style.setProperty(l,c),a.style.setProperty(m,d)}function r(a,b){let c="max-content"===b?"max-content":`${b.width}px`,d="max-content"===b?"max-content":`${b.height}px`;a.style.setProperty(n.positionerWidth,c),a.style.setProperty(n.positionerHeight,d)}var s=a.i(162903),t=a.i(744530),u=a.i(20265),v=a.i(752240);let w={name:"adaptiveOrigin",async fn(a){let{x:b,y:c,rects:{floating:d},elements:{floating:e},platform:f,strategy:g,placement:i}=a,j=(0,t.ownerWindow)(e),k=j.getComputedStyle(e);if("0s"===k.transitionDuration||""===k.transitionDuration)return{x:b,y:c,data:v.DEFAULT_SIDES};let l=await f.getOffsetParent?.(e),m={width:0,height:0};if("fixed"===g&&j?.visualViewport)m={width:j.visualViewport.width,height:j.visualViewport.height};else if(l===j){let a=(0,h.ownerDocument)(e);m={width:a.documentElement.clientWidth,height:a.documentElement.clientHeight}}else await f.isElement?.(l)&&(m=await f.getDimensions(l));let n=(0,u.getSide)(i),o=b,p=c;return"left"===n&&(o=m.width-(b+d.width)),"top"===n&&(p=m.height-(c+d.height)),{x:o,y:p,data:{sideX:"left"===n?"right":v.DEFAULT_SIDES.sideX,sideY:"top"===n?"bottom":v.DEFAULT_SIDES.sideY}}}};var x=a.i(187924);a.s(["popupViewportStateMapping",0,{activationDirection:a=>a?{"data-activation-direction":a}:null},"usePopupViewport",0,function(a){let t,{store:u,side:v,children:y}=a,z=(0,s.useDirection)(),A=u.useState("activeTriggerElement"),B=u.useState("activeTriggerId"),C=u.useState("open"),D=u.useState("payload"),E=u.useState("mounted"),F=u.useState("popupElement"),G=u.useState("positionerElement"),H=function(a){let[c,d]=b.useState({current:a,previous:null});return Object.is(a,c.current)||d({current:a,previous:c.current}),c.previous}(C?A:null),I=function(a,c){let[d,e]=b.useState(0),g=b.useRef(a),h=b.useRef(c),i=b.useRef(!1);return(0,f.useIsoLayoutEffect)(()=>{let b=g.current,d=c!==h.current;a!==b?(e(a=>a+1),i.current=!d):i.current&&d&&(e(a=>a+1),i.current=!1),g.current=a,h.current=c},[a,c]),`${a??"current"}-${d}`}(B,D),J=b.useRef(null),[K,L]=b.useState(null),[M,N]=b.useState(null),O=b.useRef(null),P=b.useRef(null),Q=(0,i.useAnimationsFinished)(O,!0),R=(0,e.useAnimationFrame)(),S=b.useRef(null),[T,U]=b.useState(null),[V,W]=b.useState(!1);(0,f.useIsoLayoutEffect)(()=>(u.set("adaptiveOrigin",w),()=>{u.set("adaptiveOrigin",void 0)}),[u]);let X=(0,g.useStableCallback)(()=>{O.current?.style.setProperty("animation","none"),O.current?.style.setProperty("transition","none"),P.current?.style.setProperty("display","none")}),Y=(0,g.useStableCallback)(a=>{O.current?.style.removeProperty("animation"),O.current?.style.removeProperty("transition"),P.current?.style.removeProperty("display"),a&&U(a)}),Z=(0,g.useStableCallback)(()=>{S.current?.abort();let a=new AbortController;S.current=a,Q(()=>{L(null),U(null),J.current=null},a.signal)}),$=b.useRef(null);(0,f.useIsoLayoutEffect)(()=>{C&&E||($.current=null)},[C,E]),(0,f.useIsoLayoutEffect)(()=>{var a,b;let c,d,e,f;A&&H&&A!==H&&$.current!==A&&J.current&&(L(J.current),W(!0),N((a=H,b=A,c=a.getBoundingClientRect(),d=b.getBoundingClientRect(),e={x:c.left+c.width/2,y:c.top+c.height/2},{horizontal:(f={x:d.left+d.width/2,y:d.top+d.height/2}).x-e.x,vertical:f.y-e.y})),$.current=A)},[A,H]),(0,f.useIsoLayoutEffect)(()=>{null!=K&&(S.current?.abort(),W(!0),R.request(()=>{c.flushSync(()=>{W(!1)}),Z()}))},[I,K,Z,R]),(0,f.useIsoLayoutEffect)(()=>{let a=O.current;if(!a)return;let b=(0,h.ownerDocument)(a).createElement("div");for(let c of Array.from(a.childNodes))b.appendChild(c.cloneNode(!0));J.current=b});let _=null!=K;return t=_?(0,x.jsxs)(b.Fragment,{children:[(0,x.jsx)("div",{"data-previous":!0,inert:(0,d.inertValue)(!0),ref:P,style:{...T?{[l]:`${T.width}px`,[m]:`${T.height}px`}:null,position:"absolute"},"data-ending-style":V?void 0:""},"previous"),(0,x.jsx)("div",{"data-current":!0,ref:O,"data-starting-style":V?"":void 0,children:y},I)]}):(0,x.jsx)("div",{"data-current":!0,ref:O,children:y},I),(0,f.useIsoLayoutEffect)(()=>{let a=P.current;a&&K&&a.replaceChildren(...Array.from(K.childNodes))},[K]),!function(a){let{popupElement:c,positionerElement:d,content:h,mounted:s,onMeasureLayout:t,onMeasureLayoutComplete:u,side:v,direction:w}=a,x=(0,i.useAnimationsFinished)(c,!0),y=(0,e.useAnimationFrame)(),z=b.useRef(null),A=b.useRef(!0),B=b.useRef(j.NOOP),C=(0,g.useStableCallback)(t),D=(0,g.useStableCallback)(u),E=b.useMemo(()=>{var a,b;let c,d;return a=v,b=w,c="top"===a,d="left"===a||a===("rtl"===b?"inline-end":"inline-start"),c||d?{position:"absolute",[c?"bottom":"top"]:"0",[d?"right":"left"]:"0"}:j.EMPTY_OBJECT},[v,w]);(0,f.useIsoLayoutEffect)(()=>{if(!s){B.current=j.NOOP,A.current=!0,z.current=null;return}if(!c||!d)return;B.current=p(c,E),q(c,"auto");let a=o(c,"position","static"),b=o(c,"transform","none"),e=o(c,"scale","1"),f=p(d,{[n.availableWidth]:"max-content",[n.availableHeight]:"max-content"});function g(){a(),b(),f(),e()}if(C?.(),A.current||null===z.current){r(d,"max-content");let a=(0,k.getCssDimensions)(c);return z.current=a,r(d,a),g(),D?.(null,a),A.current=!1,()=>{B.current(),B.current=j.NOOP}}r(d,"max-content");let h=z.current,i=(0,k.getCssDimensions)(c);z.current=i,q(c,h),g(),D?.(h,i),r(d,i);let t=new AbortController;return y.request(()=>{q(c,i),x(()=>{c.style.setProperty(l,"auto"),c.style.setProperty(m,"auto")},t.signal)}),()=>{t.abort(),y.cancel(),B.current(),B.current=j.NOOP}},[h,c,d,x,y,s,C,D,E])}({popupElement:F,positionerElement:G,mounted:E,content:D,onMeasureLayout:X,onMeasureLayoutComplete:Y,side:v,direction:z}),{children:t,state:{activationDirection:function(a){if(a){var b,c;return`${(b=a.horizontal)>5?"right":b<-5?"left":""} ${(c=a.vertical)>5?"down":c<-5?"up":""}`}}(M),transitioning:_}}}],362092)}];
2
2
 
3
3
  //# sourceMappingURL=_0cv9tmv._.js.map