thursday-agent 0.17.1 → 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 (359) 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 +50 -46
  142. package/.next/server/chunks/_08354bn._.js +22 -18
  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 +50 -46
  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} +7 -8
  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]__0g__u45._.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/_01al00i._.js +3 -0
  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/{_1hn3szq._.js → _0e2fnvg._.js} +2 -2
  207. package/.next/server/chunks/ssr/_0fo4552._.js +21 -17
  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/{_113ukfo._.js → _0vo_oym._.js} +3 -3
  213. package/.next/server/chunks/ssr/_0x8ophf._.js +1 -1
  214. package/.next/server/chunks/ssr/{_03akcjz._.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/{_20ywznt._.js → _10_ph1t._.js} +2 -2
  218. package/.next/server/chunks/ssr/{_06xy39t._.js → _116lfdc._.js} +2 -2
  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/{_1swhm5m._.js → _17a4qyk._.js} +3 -3
  223. package/.next/server/chunks/ssr/{_00g5sq-._.js → _1_5xof_._.js} +2 -2
  224. package/.next/server/chunks/ssr/{_0sefgiu._.js → _1aqjk-1._.js} +2 -2
  225. package/.next/server/chunks/ssr/_1dfv66y._.js +3 -0
  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/{_1_gwau0._.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_09n-q9q._.js +20 -0
  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_0kg-vd-._.js → node_modules_021lid9._.js} +1 -1
  240. package/.next/server/chunks/ssr/{node_modules_17azpeb._.js → node_modules_04x5wyv._.js} +1 -1
  241. package/.next/server/chunks/ssr/{node_modules_0pyepmf._.js → node_modules_096up6a._.js} +1 -1
  242. package/.next/server/chunks/ssr/{node_modules_00kqq8n._.js → node_modules_0__0tvm._.js} +1 -1
  243. package/.next/server/chunks/ssr/{node_modules_1mcsva4._.js → node_modules_0cjnmzp._.js} +1 -1
  244. package/.next/server/chunks/ssr/{node_modules_1_il5l7._.js → node_modules_0d6j33x._.js} +1 -1
  245. package/.next/server/chunks/ssr/{node_modules_07w6r9n._.js → node_modules_0gd9hbz._.js} +1 -1
  246. package/.next/server/chunks/ssr/{node_modules_1aeg65a._.js → node_modules_0k8-y89._.js} +1 -1
  247. package/.next/server/chunks/ssr/{node_modules_0g0lr19._.js → node_modules_0m73b88._.js} +1 -1
  248. package/.next/server/chunks/ssr/{node_modules_04o9dd2._.js → node_modules_0msrhxf._.js} +1 -1
  249. package/.next/server/chunks/ssr/{node_modules_05jatne._.js → node_modules_0nmkv-v._.js} +1 -1
  250. package/.next/server/chunks/ssr/{node_modules_0p0xf5f._.js → node_modules_0nw5jz7._.js} +1 -1
  251. package/.next/server/chunks/ssr/{node_modules_08ld3lm._.js → node_modules_0q-klni._.js} +1 -1
  252. package/.next/server/chunks/ssr/{node_modules_13seln7._.js → node_modules_10_fv2a._.js} +1 -1
  253. package/.next/server/chunks/ssr/{node_modules_1iq8zjs._.js → node_modules_113l3e5._.js} +1 -1
  254. package/.next/server/chunks/ssr/{node_modules_1va4lz9._.js → node_modules_13bqv6i._.js} +1 -1
  255. package/.next/server/chunks/ssr/{node_modules_0ft86sp._.js → node_modules_13g-d25._.js} +1 -1
  256. package/.next/server/chunks/ssr/{node_modules_15vsfpv._.js → node_modules_156kv_t._.js} +1 -1
  257. package/.next/server/chunks/ssr/{node_modules_1d73q89._.js → node_modules_1_8-jcj._.js} +1 -1
  258. package/.next/server/chunks/ssr/{node_modules_0nl9i29._.js → node_modules_1gq3ght._.js} +1 -1
  259. package/.next/server/chunks/ssr/{node_modules_06rkzq5._.js → node_modules_1k5i-_9._.js} +1 -1
  260. package/.next/server/chunks/ssr/{node_modules_0vg-4fo._.js → node_modules_1lmyts8._.js} +1 -1
  261. package/.next/server/chunks/ssr/{node_modules_207ay1p._.js → node_modules_1p_6sq7._.js} +1 -1
  262. package/.next/server/chunks/ssr/{node_modules_1mhg5br._.js → node_modules_1qstb1x._.js} +1 -1
  263. package/.next/server/chunks/ssr/{node_modules_1mqisle._.js → node_modules_1ri_eip._.js} +1 -1
  264. package/.next/server/chunks/ssr/{node_modules_0y5upun._.js → node_modules_1xb-ndg._.js} +1 -1
  265. package/.next/server/chunks/ssr/{node_modules_@mermaid-js_parser_dist_chunks_mermaid-parser_core_0hefprb._.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_1uuvrfp._.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/{32oho7re_n3dq.js → 01l7kw74vfp32.js} +1 -1
  274. package/.next/static/chunks/0a5_-jqhaktjj.js +1 -0
  275. package/.next/static/chunks/{1-q6so9vze75d.js → 0obogzscwwekj.js} +2 -2
  276. package/.next/static/chunks/{44n-w1bs83ejz.js → 0p2f6uv4xytfm.js} +1 -1
  277. package/.next/static/chunks/{2y2v3bk65fdle.js → 0uxq_vs6uxi-b.js} +3 -3
  278. package/.next/static/chunks/{25ciqm-ee14nf.js → 166smhw8v-s3j.js} +1 -1
  279. package/.next/static/chunks/{1_me_-lnpwdfd.js → 1bnhw-5fj7aiz.js} +1 -1
  280. package/.next/static/chunks/1cglo3a2mbeou.js +1 -0
  281. package/.next/static/chunks/{3suz18umxycuk.js → 1in6nxpu33iab.js} +1 -1
  282. package/.next/static/chunks/1u7kg91f9qy3g.js +1 -0
  283. package/.next/static/chunks/{1njjf8bfkg4_v.js → 1xv4g10m-cl1s.js} +1 -1
  284. package/.next/static/chunks/{2rpyc6mevfhu6.js → 2ajs12-fcdwzm.js} +1 -1
  285. package/.next/static/chunks/2i7qtmxc1kuqg.js +1 -0
  286. package/.next/static/chunks/{106jbz6qd0c5l.js → 2kz1f6r59nky0.js} +1 -1
  287. package/.next/static/chunks/2qgkbdshzpq1c.js +1 -0
  288. package/.next/static/chunks/2zbl41hed17g3.js +18 -0
  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/{09opsnra7k4k0.js → 3gsxnqqqphh-1.js} +2 -2
  293. package/.next/static/chunks/{1mkw_05uc8_ft.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/browser/SKILL.md +9 -6
  315. package/.next/server/chunks/[root-of-the-server]__03b09q0._.js +0 -5
  316. package/.next/server/chunks/[root-of-the-server]__05n-hql._.js +0 -5
  317. package/.next/server/chunks/[root-of-the-server]__0j_nz36._.js +0 -3
  318. package/.next/server/chunks/[root-of-the-server]__0jzwdg-._.js +0 -3
  319. package/.next/server/chunks/[root-of-the-server]__0tsded0._.js +0 -5
  320. package/.next/server/chunks/[root-of-the-server]__12tahb4._.js +0 -3
  321. package/.next/server/chunks/[root-of-the-server]__1de1o6m._.js +0 -3
  322. package/.next/server/chunks/[root-of-the-server]__1yl5l25._.js +0 -3
  323. package/.next/server/chunks/_02lipqs._.js +0 -5
  324. package/.next/server/chunks/_05sa7xl._.js +0 -3
  325. package/.next/server/chunks/_074f2ts._.js +0 -3
  326. package/.next/server/chunks/_0caua_s._.js +0 -3
  327. package/.next/server/chunks/_0p-h6xe._.js +0 -5
  328. package/.next/server/chunks/_0up2a9o._.js +0 -3
  329. package/.next/server/chunks/_17i1lt2._.js +0 -3
  330. package/.next/server/chunks/_1hy9x9_._.js +0 -3
  331. package/.next/server/chunks/_1hyvcgk._.js +0 -5
  332. package/.next/server/chunks/_1wl2g8_._.js +0 -6
  333. package/.next/server/chunks/_1y3mnz4._.js +0 -3
  334. package/.next/server/chunks/ssr/[root-of-the-server]__07iyl1_._.js +0 -3
  335. package/.next/server/chunks/ssr/[root-of-the-server]__10eb-1x._.js +0 -3
  336. package/.next/server/chunks/ssr/_0-i6wdi._.js +0 -3
  337. package/.next/server/chunks/ssr/_0rvbegp._.js +0 -7
  338. package/.next/server/chunks/ssr/_12p8f9_._.js +0 -3
  339. package/.next/server/chunks/ssr/_1o7a11b._.js +0 -162
  340. package/.next/server/chunks/ssr/_1wac78_._.js +0 -3
  341. package/.next/server/chunks/ssr/features_bot_0j4h9qu._.js +0 -3
  342. package/.next/server/chunks/ssr/features_config_1xrlh3l._.js +0 -20
  343. package/.next/static/chunks/04toe_3nqfjqt.js +0 -1
  344. package/.next/static/chunks/0780wmy0_rva8.js +0 -1
  345. package/.next/static/chunks/0if7xqoj3ysfj.js +0 -1
  346. package/.next/static/chunks/0mtfu8adz57qz.js +0 -1
  347. package/.next/static/chunks/19wkcgzetkh6-.js +0 -1
  348. package/.next/static/chunks/29laj9_xhx0d1.js +0 -18
  349. package/.next/static/chunks/2b306ek_blfp1.js +0 -1
  350. package/.next/static/chunks/2mpqmpf8wcst1.js +0 -15
  351. package/.next/static/chunks/2wj77vx62ng3n.js +0 -1
  352. package/.next/static/chunks/388l-zszwa_jf.js +0 -1
  353. package/.next/static/chunks/3_s5svfgu9kl_.js +0 -35
  354. package/.next/static/chunks/3bwrvpjk95_x4.js +0 -1
  355. package/.next/static/chunks/3kj0pri2oc1g1.js +0 -1
  356. package/public/voices/intro/style-cb6fa4f7.ogg +0 -0
  357. /package/.next/static/{SNCDmWKeIrXB6yqnwzClS → 8I2hKtciyA9LXvd8txuOz}/_buildManifest.js +0 -0
  358. /package/.next/static/{SNCDmWKeIrXB6yqnwzClS → 8I2hKtciyA9LXvd8txuOz}/_clientMiddlewareManifest.js +0 -0
  359. /package/.next/static/{SNCDmWKeIrXB6yqnwzClS → 8I2hKtciyA9LXvd8txuOz}/_ssgManifest.js +0 -0
@@ -1,3 +1,3 @@
1
- module.exports=[249049,a=>{"use strict";var b=a.i(187924),c=a.i(823319),d=a.i(752562),e=a.i(474215),f=a.i(572131),g=a.i(767561),h=a.i(340695),i=a.i(205522),j=a.i(287702),k=a.i(379630),l=a.i(96340),m=a.i(61876),n=a.i(313237),o=a.i(759497),p=a.i(497895),q=a.i(76004),r=a.i(478978);function s({provider:a,saved:c,autoFocus:d,dense:e,plain:f,value:g,ready:h,saving:i,onValue:j,onSubmit:l}){return(0,b.jsxs)("div",{className:"space-y-2",children:[!f&&(0,b.jsxs)("span",{className:"flex items-center gap-2 px-0.5 text-muted-foreground",children:[(0,b.jsx)(k.ProviderIcon,{provider:a.id,className:"size-4 shrink-0"}),(0,b.jsx)("span",{className:(0,p.cn)("font-mono",e?"text-[11px]":"text-[12.5px]"),children:a.label})]}),(0,b.jsx)(u,{provider:a,saved:c,autoFocus:d,dense:e,mark:f,value:g,ready:h,saving:i,onValue:j,onSubmit:l})]})}let t=a=>a?.replace(/…$/,"")??"";function u({provider:a,saved:c,autoFocus:e,dense:f,mark:g,value:j,ready:l,saving:n,onValue:o,onSubmit:q}){var r;let s,v=(r=a.id,s=t(m.TEXT_MODEL_PROVIDERS[r].keyLooks),Object.entries(m.TEXT_MODEL_PROVIDERS).flatMap(([a,b])=>{let c=t(b.keyLooks);return a!==r&&c&&!s.startsWith(c)?[c]:[]})).some(a=>j.trim().startsWith(a));return(0,b.jsxs)("form",{onSubmit:a=>{a.preventDefault(),q()},className:(0,p.cn)("flex items-center gap-3 rounded-2xl border bg-muted/40 px-4 transition-colors",f?"h-11 rounded-xl px-3":"h-14",c||l?"border-foreground bg-transparent":"border-border"),children:[g&&(0,b.jsx)(k.ProviderIcon,{provider:a.id,className:"size-4 shrink-0 text-muted-foreground"}),(0,b.jsx)(i.Input,{autoFocus:e,type:"password","aria-label":"OpenAI API key",autoComplete:"off",value:j,spellCheck:!1,placeholder:c?"Replace it":"sk-…",onChange:a=>o(a.target.value),className:(0,p.cn)("min-w-0 flex-1 border-0 bg-transparent px-0 font-mono shadow-none focus-visible:ring-0 dark:bg-transparent",f?"h-7 text-[13px]":"h-9 text-[15px]")}),j?(0,b.jsx)(h.Button,{type:"submit",size:"sm",variant:v?"outline":"default",loading:n,disabled:!l,className:(0,p.cn)("shrink-0",f?"h-7 px-3":"h-9 px-4"),children:v?`Not ${a.label}?`:"Save"}):c&&(0,b.jsx)("span",{className:(0,p.cn)("grid shrink-0 animate-in place-items-center rounded-full bg-foreground text-background zoom-in-50 duration-300",f?"size-5":"size-7"),children:(0,b.jsx)(d.Check,{className:f?"size-3":"size-4"})})]})}a.s(["GetKeyLink",0,function(){let a=m.TEXT_MODEL_PROVIDERS[l.LIVE_PROVIDER.id].keysAt;return a?(0,b.jsxs)("a",{href:a,target:"_blank",rel:"noreferrer",className:"flex items-center gap-2.5 text-[13px] font-medium text-foreground no-underline",children:[(0,b.jsxs)("span",{className:"flex h-7.5 shrink-0 items-center gap-1.5 rounded-full bg-muted px-3.5 whitespace-nowrap transition-colors hover:bg-accent",children:["Get a key",(0,b.jsx)(c.ArrowUpRight,{className:"size-3.5"})]}),(0,b.jsx)("span",{className:"truncate font-mono text-[11px] font-normal text-muted-foreground/70",children:a.replace(/^https:\/\//,"")})]}):null},"KeyInput",0,u,"VoiceKeys",0,function({ref:a,autoFocus:c,dense:d=!1,plain:i=!1,onCancel:k,onSaved:m,className:t}){let{data:u}=(0,o.useServerRoute)(g.queryKey.config),[v,w]=(0,f.useState)({}),[x,y]=(0,f.useState)(null),[z,A]=(0,f.useState)(null),[B]=(0,n.useServerAction)(q.setConfigAction,{errorMessage:!1,onError:a=>A(a??"That key was not saved."),onOk:()=>{(0,o.revalidate)(g.queryKey.config),(0,o.revalidate)(g.queryKey.llmModel)}}),C=a=>(v[a]?.trim().length??0)>=j.KEY_MIN,D=async a=>{let b=a.apiKeyName;if(!C(b)||x)return!1;A(null),y(b);try{return await B(b,v[b]),w(a=>({...a,[b]:""})),m?.(a.id),!0}catch{return!1}finally{y(null)}};return(0,f.useImperativeHandle)(a,()=>({pending:()=>C(l.LIVE_PROVIDER.apiKeyName),flush:async()=>!C(l.LIVE_PROVIDER.apiKeyName)||D(l.LIVE_PROVIDER)})),(0,b.jsxs)("div",{className:(0,p.cn)("w-full",d?"space-y-2":"space-y-4",t),children:[d&&!i&&(0,b.jsxs)("div",{className:"flex h-6 items-center justify-between gap-2",children:[(0,b.jsx)("span",{className:"px-0.5 font-mono text-[11px] text-muted-foreground",children:"Voice key"}),k&&(0,b.jsx)(h.Button,{type:"button",size:"icon",variant:"ghost","aria-label":"Not now",onClick:k,className:"-my-1 size-6",children:(0,b.jsx)(e.X,{className:"size-3.5"})})]}),(0,b.jsx)(s,{provider:l.LIVE_PROVIDER,saved:(0,r.isConfigSet)(u,l.LIVE_PROVIDER.apiKeyName),autoFocus:c,dense:d,plain:i,value:v[l.LIVE_PROVIDER.apiKeyName]??"",ready:C(l.LIVE_PROVIDER.apiKeyName),saving:x===l.LIVE_PROVIDER.apiKeyName,onValue:a=>{A(null),w(b=>({...b,[l.LIVE_PROVIDER.apiKeyName]:a}))},onSubmit:()=>void D(l.LIVE_PROVIDER)}),z&&(0,b.jsx)("p",{className:(0,p.cn)("px-0.5 leading-5 break-words",d?"text-xs":"text-center text-[13px]",p.WAITING_INK),children:z}),!i&&(0,b.jsx)("p",{className:(0,p.cn)("px-0.5 font-mono text-muted-foreground",d?"text-[11px]":"pt-1 text-center text-[12.5px]"),children:d?"Live voice and reasoning share this OpenAI API key.":"Live uses an OpenAI API key, billed separately from ChatGPT. Stored on this machine, in this app's database."})]})}])},590513,510072,661779,539341,a=>{"use strict";var b=a.i(187924),c=a.i(572131),d=a.i(287702),e=a.i(483253),f=a.i(647509);function g(a,b,c){let d=(0|a)*0x165667b1+(0|b)*0x27d4eb2f+(0|c)*0x4bf19f61;return(((d=Math.imul(d^d>>>13,0x4bf19f61))^d>>>16)>>>0)/0x100000000}let h=(a,b,c)=>a+(b-a)*c;function i(a,b,c){let d=Math.floor(a),e=Math.floor(b),f=Math.floor(c),i=a-d,j=b-e,k=c-f,l=i*i*(3-2*i),m=j*j*(3-2*j),n=h(g(d,e,f),g(d+1,e,f),l),o=h(g(d,e+1,f),g(d+1,e+1,f),l),p=h(g(d,e,f+1),g(d+1,e,f+1),l),q=h(g(d,e+1,f+1),g(d+1,e+1,f+1),l);return h(h(n,o,m),h(p,q,m),k*k*(3-2*k))}function j(a,b,c,d=3){let e=0,f=.5,g=0;for(let h=0;h<d;h++)e+=f*i(a,b,c),g+=f,a*=2.03,b*=2.03,c*=1.97,f*=.5;return e/g}function k(a,b,c,d=4){let e=j(a,b,c,2),f=j(a+5.2,b+1.3,c+2.8,2);return j(a+d*e,b+d*f,c,3)}function l(a,b=0){let c=9.2*j(.1*a+3.7*b,3.1+b,1.4,2);return{x:Math.cos(c),y:Math.sin(c),g:.38+.62*Math.max(0,Math.min(1,(j(.11*a+5.3*b,7.7,2.2,3)-.38)*3.2))**1.5}}a.s(["fbm",0,j,"ihash",0,g,"vnoise",0,i,"warp",0,k,"windAt",0,l],510072);let m=2*Math.PI,n=(a,b,c)=>(0,f.smoothstep)(b,b+(c-b)*.3,a)*(1-(0,f.smoothstep)(c-(c-b)*.3,c,a)),o={x:0,y:0,rot:0,yaw:0,pitch:0,spin:0,axis:0,sx:1,sy:1,lidL:1,lidR:1,size:1,gx:0,gy:0},p=(()=>{let a=0;for(let b=0;b<5;b++)a+=Math.exp(-b/1.6);return Array.from({length:5},(b,c)=>Math.exp(-c/1.6)/a)})(),q={now:{wake:!0,sighs:!0,len:0,pose:()=>o},dust:{wake:!0,len:2.4,pose(a,b){let c=b?-1:1,d=.55*(0,f.smoothstep)(.16,.3,a)*Math.exp(-Math.max(0,a-.3)/.55),e=2.5*m*(a-.2),g=.3+.2*(0,f.smoothstep)(.05,.25,a)+.5*(0,f.smoothstep)(1.35,1.75,a),h=n(a,1.45,2.4);return{...o,yaw:c*d*Math.sin(e),x:.035*c*d*Math.sin(e-.5),rot:.03*c*d*Math.sin(e+.9),y:-.02*h,lidL:g,lidR:g,size:1+.06*h}},fx(a,b,c,d,e,g,h,i){let j=b?-1:1,k=1;for(let b=0;b<5;b++){let c=.2+(.25+.5*b)/2.5;k-=p[b]*(0,f.smoothstep)(c-.03,c+.1,a),a>=c&&g.thrown<=b&&(g.thrown=b+1,function(a,b,c,d){let e=a.head,f=Math.min(1.4,3.2*c),g=4+Math.round(6*f);for(let c=0;c<g;c++){let c=(Math.random()-.5)*1.6*d,g=b*Math.sqrt(Math.max(0,d*d-c*c))*(.1+.8*Math.random()),h=(230+170*Math.random())*(.55+.45*f),i=(Math.random()-.6)*90+c/d*50;for(let f=0;f<7;f++){let f=h*(.75+.5*Math.random());w(a,{...x,x:e.x*d+g+(Math.random()-.5)*24,y:e.y*d+c+(Math.random()-.5)*24,vx:b*f,vy:i+(Math.random()-.5)*50,life:1.3+.8*Math.random(),a:.55+.3*Math.random(),r0:4,r1:30+20*Math.random(),grow:.5,keep:.35,fall:45,curl:40,kind:2,hold:0,fadeP:1.5})}for(let f=0;f<3;f++)w(a,{...x,x:e.x*d+g,y:e.y*d+c,vx:b*h*(.8+.5*Math.random()),vy:i-40*Math.random(),life:.6+.4*Math.random(),a:.9,r0:1.5,r1:2.5,grow:1,keep:.4,fall:320,curl:0,kind:2,hold:0,fadeP:1})}}(d,j*(b%2?-1:1),p[b],i))}c.crust=Math.max(c.crust,a<0?(0,f.smoothstep)(-.8,-.3,a):Math.max(0,k))}},turn:{wake:!0,len:1.8,pose(a,b){let c=b?-1:1,d=m*(0,f.smoothstep)(-.6,.95,a),e=a>.95?-.1*Math.sin(Math.min(1,(a-.95)/.6)*Math.PI):0,g=(0,f.smoothstep)(0,.3,a);return{...o,spin:c*(d+e),axis:.22*c,y:-.02*n(a,.5,1.6),lidL:g,lidR:g}}},vape:{len:6.6,pose(a){let b=n(a,.2,1.7),c=(0,f.smoothstep)(1.7,2.3,a)*(1-(0,f.smoothstep)(5.2,6.4,a)),d=1-.35*b-.42*c;return{...o,pitch:.12*b-.08*c,y:-.02*b+.015*c,sx:1+.03*b,sy:1+.03*b,lidL:d,lidR:d}},fx(a,b,c,d,e,g,h,i){if(a<0||a>6.8)return;c.hush=Math.max(c.hush,.8*n(a,.2,2));let j=a>1.8&&a<5.4?(0,f.smoothstep)(1.8,2.2,a)*(.4+.6*Math.exp(-(a-1.8)/1.6))*(1-(0,f.smoothstep)(4.5,5.4,a)):0;j>0&&function(a,b,c,d,e,f){var g;let h,i,j,k,l,[m,n]=(g=.55*f,i=Math.cos((h=a.head).rot),j=Math.sin(h.rot),k=0*h.sx,l=g*h.sy,[h.x*f+k*i-l*j,h.y*f+k*j+l*i]),o=.88*b.field;for(c.owed+=110*d*e;c.owed>=1;){c.owed-=1;let b=Math.PI/2+(Math.random()-.5)*1.6,e=165*(.6+.4*d)*(.7+.6*Math.random());w(a,{x:m+(Math.random()-.5)*26,y:n+(Math.random()-.5)*10,vx:Math.cos(b)*e,vy:Math.sin(b)*e,life:5+2.5*Math.random(),a:.75,r0:10,r1:96*(.7+.6*Math.random()),grow:1.6,keep:.55,fall:10,rise:30,riseT:3.6,curl:85,splay:55,wall:o,home:o*Math.random()**.85*.92,peel:.1+1.0999999999999999*Math.random(),side:0,hitAt:-1,peeled:!1,kind:1,hold:3,fadeP:2.4})}}(d,e,g,j,h,i)}},look:{len:2.8,pose(a,b){let c=b?-1:1,d=n(a,.45,1.35),e=n(a,1.45,2.45);return{...o,yaw:c*(-.42*d+.42*e),gx:c*(-.08*d+.08*e),x:c*(-.03*d+.03*e),rot:c*(-.03*d+.03*e)}}},wink:{len:2,pose(a,b){let c=n(a,.8,1.35),d=.08*n(a,.7,1.55);return b?{...o,lidL:1-c,rot:-d}:{...o,lidR:1-c,rot:d}}},sleepy:{len:3.2,hold:!0,pose(a){let b=n(a,1.5,1.95),c=.8*(0,f.smoothstep)(.1,1.5,a)*(1-.8*b)+.2*(0,f.smoothstep)(1.95,3.1,a),d=1-.7*c;return{...o,y:.07*c,rot:.1*c,gy:.05*c,lidL:d,lidR:d}}},spin:{len:3,pose(a,b){let c=b?-1:1,d=-.25*n(a,0,.45)+m*(0,f.smoothstep)(.3,1.75,a),e=a>1.7?Math.exp(-(a-1.7)/.55)*(0,f.smoothstep)(1.7,1.85,a):0,g=1.5*m*(a-1.7),h=1-.3*e;return{...o,spin:c*d,axis:.62*c,x:.035*e*Math.sin(g),y:.022*e*Math.cos(g),rot:.07*e*Math.sin(g+.6),gx:.06*e*Math.sin(1.3*g),gy:.04*e*Math.cos(1.3*g),lidL:h,lidR:h}}}},r=Object.keys(q),s=r.filter(a=>q[a].wake),t=r.filter(a=>!q[a].wake),u=(a,b,c,d)=>a+(b-a)*(1-Math.exp(-d/c)),v=a=>Math.abs(a.x)+Math.abs(a.y)+Math.abs(a.rot)+Math.abs(a.yaw)+Math.abs(a.pitch)+Math.abs(a.spin)+Math.abs(a.sx-1)+Math.abs(a.sy-1)<1e-4;function w(a,b){a.parts.length>=2200||a.parts.push({...b,age:0,seed:60*Math.random()})}let x={rise:0,riseT:1,splay:0,wall:0,home:0,peel:0,side:0,hitAt:-1,peeled:!1},y={x:0,y:0},z={v:0,kind:0,hold:0,covers:!1},A=(a,b,c)=>a+(b-a)*c,B=(a,b,c)=>{let d,e=(d=(c-a)/(b-a))<0?0:d>1?1:d;return e*e*(3-2*e)};function C(a,b=!1,c=0){let d,e=b=>g(a,7*b+3,1),f=.5>e(3)?-1:1,h=(.26+.18*e(2))*f,i=[0,0],j=a=>[f*a*(.15+.07*e(9)),(e(10)-.5)*.07],k=a=>({ms:.62+.2*e(11),tilt:0,gaze:i,blink:[a,a+.22]});switch(b?[0,2,3,4][4*e(1)|0]:5*e(1)|0){case 0:d=[{ms:1.3+.9*e(4),tilt:0,gaze:i,snap:.01},{ms:1.4+.9*e(5),tilt:0,gaze:i},k(.12),{ms:1.2+.9*e(6),tilt:0,gaze:j(1),snap:.1},{ms:1.3+.9*e(7),tilt:0,gaze:i,snap:.12},{ms:.95,tilt:0,gaze:i,blink:[.1,.3],blink2:.5>e(8)?[.44,.64]:null},{ms:1.6+1.2*e(12),tilt:0,gaze:i}];break;case 1:d=[{ms:.9+.5*e(4),tilt:0,gaze:i,snap:.01},{ms:.8+.5*e(5),tilt:0,gaze:i},k(.1),{ms:.7+.6*e(6),tilt:0,gaze:i}];break;case 2:d=[{ms:1.2+.8*e(4),tilt:0,gaze:i,snap:.01},{ms:1.6+1.2*e(13),tilt:h,gaze:i,snap:.9},{ms:.8,tilt:h,gaze:i,blink:[.14,.36]},{ms:1.8+1.1*e(5),tilt:0,gaze:i,snap:.75},{ms:1.5+1.3*e(6),tilt:0,gaze:i}];break;case 3:d=[{ms:.9+.5*e(4),tilt:0,gaze:i,snap:.01},{ms:1.1+.7*e(5),tilt:0,gaze:j(1.1),snap:.09},{ms:1.4+.8*e(6),tilt:0,gaze:i,snap:.12},{ms:1,tilt:0,gaze:i,blink:[.08,.28],blink2:[.42,.62]},{ms:1.4+1.2*e(7),tilt:0,gaze:i}];break;default:d=[{ms:1.2+.7*e(4),tilt:0,gaze:i,snap:.01},{ms:1.2+.7*e(5),tilt:0,gaze:i},{ms:1+.6*e(6),tilt:0,gaze:j(1),snap:.09},{ms:.9+.5*e(7),tilt:0,gaze:j(-.85),snap:.09},{ms:1.2+.8*e(8),tilt:0,gaze:i,snap:.12},k(.12),{ms:1.3+ +e(12),tilt:0,gaze:i}]}let l=0;for(let a of d)l+=a.ms;for(let a=20;l<c;a+=2){let b=2.6+1.8*e(a);d.push({ms:b,tilt:0,gaze:i,blink:.7>e(a+1)?[.4,.62]:void 0}),l+=b}return{beats:d,total:l}}let D={gaze:[0,0],tilt:0,lid:1};var E=a.i(663390);let F=(a,b,c)=>a+(b-a)*c,G=(a,b,c,d)=>d<.5?a+(b-a)*d*2:b+(c-b)*(d-.5)*2;function H(a,b,c){return .58+.07*Math.sin(.35*c)+(j(.011*a+.04*c,.011*b-.03*c,.22*c,2)-.5)*.6}function I(){let a={face:0,hush:0,dim:0,ink:0,reach:0,few:0,narrow:0,hard:0,haze:0,sigh:{live:!1,t0:0,dir:Math.PI/2,seed:0,now:0,front:0},ways:{jumble:new Float32Array(257),reach:new Float32Array(257),gush:new Float32Array(257),gust:new Float32Array(257),lobe:new Float32Array(257)}};return J(a),a}function J(a){let b=F(.52,1,a.face);a.ink=F(1.52,2.5,a.face),a.reach=F(2.2,4,a.face),a.haze=F(.27,.57,a.face),a.few=G(4.2,1.9,1,b),a.narrow=G(.3,.17,.04,b),a.hard=G(2.6,2,1.25,b)}function K(a,b){return(0,f.smoothstep)(0,.05,a)*Math.max(.18,Math.exp(-Math.max(0,a-.5)/.3))*(.6+.8*j(5*a+b,1.7,2.9,2))}function L(a,b,c,d,e,g,h=!0){let i=a.sigh;h&&g>=0&&g<.3&&!i.live&&(i.live=!0,i.t0=b-g,i.dir=Math.PI/2+(.5>Math.random()?-1:1)*(.7+(Math.random()-.5)*.3),i.seed=50*Math.random());let k=(b-i.t0)*.65;i.live&&k>2.4&&(i.live=!1),i.now=i.live?K(k,i.seed)*(1-(0,f.smoothstep)(.855,2.4,k))*1.5*(0,f.smoothstep)(0,.25,k):0,i.front=.55+1.53*(1-Math.exp(-Math.max(0,k)/.6))+.18*Math.max(0,k),a.dim=Math.max(e,a.dim*Math.exp(-c/2.2));let l=g>=0?d*(0,f.smoothstep)(.65,.65+.2,g):0,m=l>a.face?2.05/2.3:.5;a.face+=(l-a.face)*(1-Math.exp(-c/m)),J(a);let n=a.ways;for(let a=0;a<=256;a++){let c=-Math.PI+a/256*Math.PI*2,d=Math.cos(c),e=Math.sin(c);n.jumble[a]=(j(2.2*d+11,2.2*e,.35*b,2)-.5)*220,n.reach[a]=Math.max(0,j(1.1*d+5,1.1*e,.12*b,2)-.22),n.gush[a]=(0,f.smoothstep)(.5,.78,j(1.6*d+3,1.6*e,.5*b,2)),n.gust[a]=.4+1.2*j(1.2*d+7,1.2*e,.4*b,2),i.live&&(n.lobe[a]=1.53*(.5+ +j(1.4*d+i.seed,1.4*e,.3*k,2)))}}function M(a,b){let c=(b+Math.PI)/(2*Math.PI)*256,d=Math.min(255,Math.max(0,Math.floor(c)));return a[d]+(a[d+1]-a[d])*(c-d)}function N(a,b,c,d,e,g,h){let i=a.px??a.dx,l=a.py??a.dy,m=a.sx??a.dx,n=a.sy??a.dy,o=.018*h.g*Math.min(1,a.dist/d)**2*d,p=Math.hypot(i-h.x*o,l-h.y*o),q=1-(0,f.smoothstep)(.55*d,d,p),r=q>0?(H(a.dx,a.dy,b)+c)*q:0;g.dim>.002&&(r*=1-.16*g.dim);let s=1-g.hush,t=Math.hypot(m-h.x*o,n-h.y*o);if(g.haze>0&&s>0&&t<1.32*d){let a=g.haze*s*(1-.39*g.dim)*(1-(0,f.smoothstep)(.9*d,1.32*d,t))*e;if(1.55*a>r){let c=a*(.45+1.1*k(.012*m+11,.012*n,.15*b,2));c>r&&(r=c)}}let u=.55+Math.max(0,.92*g.ink-.55)*(0,f.smoothstep)(.92*d,1.14*d,t);if(s>0&&u*e*s>r){let a=function(a,b,c,d,e,g,h,i,l){let m;if(e>d*(h.reach+.2+.54))return 0;let n=.087*i.g*e,o=a-i.x*n,p=b-i.y*n,q=Math.hypot(o,p)||1,r=Math.atan2(p,o),s=h.few/(1+.006*e),t=j(o/q*s,p/q*s,.008*(e-66*c-M(h.ways.jumble,r)),3),u=function(a,b){let c=a.sigh;if(!c.live||c.now<=.01)return 0;let d=b-c.dir;return d-=Math.round(d/(2*Math.PI))*Math.PI*2,c.now*(1-(0,f.smoothstep)(1.3608,3.024,Math.abs(d)))}(h,r),v=h.sigh.front,w=u>0?u*(1-(0,f.smoothstep)(v-.35,v+.05,e/d)):0,x=u>0?u*((m=v-1)<0?0:m>1?1:m):0,y=d*(1.05+(h.reach-1.05)*Math.min(1,2.4*M(h.ways.reach,r))+.54*x),z=(0,f.smoothstep)(.55*d,y,e),A=.4+h.narrow*z;if(1.2*t<=A)return 0;let B=t*(.8+.4*k(.02*a+3,.02*b,.3*c,2)),C=(3.2*Math.max(0,B-A))**h.hard;return C<=0?0:(C*=1+.9*M(h.ways.gush,r)+1.2*w,h.dim>.002&&(C*=1-.65*h.dim),Math.min(l,C*(1-z)**1.25*(.6+.65*(i.g*M(h.ways.gust,r)))*h.ink)*g)}(m,n,b,d,t,e,g,h,u)*s;a>r&&(r=a)}if(e<.98&&r>0){let b=k(.015*a.dx-7,.015*a.dy+3,11.4,2);r*=(0,f.smoothstep)(b-.34,b+.34,1.7*e-.24)}return r}function O(a,b,c,d){let e=d.sigh;if(!e.live)return 0;let g=(b-e.t0)*.65,h=a.dist/c-.55;if(h<=0)return 0;let i=Math.atan2(a.py??a.dy,a.px??a.dx)-e.dir;if(Math.abs(i-=Math.round(i/(2*Math.PI))*Math.PI*2)>3.141592653589793)return 0;let l=M(d.ways.lobe,i);if(h>l*(1-Math.exp(-g/.6))+.18*g)return 0;let m=-.6*Math.log(1-Math.min(h/l,.97));for(let a=0;a<3;a++){let a=Math.exp(-m/.6);m-=(l*(1-a)+.18*m-h)/(l*a/.6+.18)}let n=g-m;if(m<0||n<0||n>1.9)return 0;let o=K(n,e.seed),p=1-(0,f.smoothstep)(.855,2.4,g);if(o*p<.01)return 0;i+=(j(1.8*h,2.2*n,.3*b,2)-.5)*1.1*(.3+m);let q=Math.min(Math.PI,(.95+1.45*(1-Math.exp(-m/.45)))*1.8*(.55+.9*j(2.2*h+e.seed,1.7*n,3.3,2))),r=1-(0,f.smoothstep)(.55*q,q,Math.abs(i));if(r<=0)return 0;let s=1+.4*m,t=(3*Math.max(0,j(2.2*i/s+4,3*n+.6*h/s,5.1,3)-.32))**1.4,u=1-(0,f.smoothstep)(.15,.9,h)*(1-Math.min(1,.45+t)),v=1/(1+(h/.81)**2),w=(0,f.smoothstep)(.25,.65,k(.014*a.dx+e.seed,.014*a.dy,.9*n+.2*b,2)),x=1-.65*(0,f.smoothstep)(.1,.7,h)*(1-w);return Math.min(.95,H(a.dx,a.dy,b)*o*p*r*u*v*x*3.5)}a.s(["createSmoke",0,I,"restValue",0,N,"sighValue",0,O,"stepSmoke",0,L],661779);let P=(a,b,c)=>{let d,e=(d=(c-a)/(b-a))<0?0:d>1?1:d;return e*e*(3-2*e)},Q=[{letters:["0","1","7","4","9","2","8","3","5","6"],emoji:["🤍","🖤","⚪","⚫","☁️","🦢","🐧","🐼","🎱","🕊️"]},{letters:["/","\\","|","_","-","~","^","<",">","="],emoji:["🌑","🌒","🌓","🌔","🌕","🌖","🌗","🌘","🌙","🌚"]},{letters:["(",")","[","]","{","}",":",";","*","+"],emoji:["❄️","🫧","💧","🌊","🧊","🐳","🐟","🪸","🌌","🔮"]},{letters:[".",",","'","`",":",'"',";","·","*","^"],emoji:["🗿","💬","🖨️","📀","🗝️","🧷","📎","🖇️","🧮","🔭"]}];function R(a,b,c,d,e){let f=Math.floor(c/d);return T(a,b,c,f*d+.6+g(f,11,5)*d*.45,e*(.6+3.4*g(f,17,9)**2),f)}function S(a){let b=a;for(let a=0;a<400;a++,b++){let a=1+b%Q.length;if(.25>g(b,19,7)&&(2===a||3===a)&&.35>g(b,3,2))break}return b}function T(a,b,c,d,e,f){let h=c-d;if(h<0||h>e)return 0;let i=P(0,1.7+2.6*g(f,3,2),h),k=P(e-(1.5+2.8*g(f,4,3)),e,h),l=1+(4*g(f,19,7)|0);for(let c=0;c<l;c++){let d=(g(7*f+c,23,1)-.5)*300,e=(g(7*f+c,29,2)-.5)*300,h=a-d,l=b-e,m=Math.hypot(h,l),n=470*i*(.4+1.1*j(.011*h+f,.011*l,3.3*c,3));if(m>=n||k>.85*j(.016*h-4,.016*l+6,5.1*c+1,2)+.1)continue;let o=1-m/Math.max(1,n);if(!(j(.05*a+c,.05*b,2.7*f,2)>.95*o+.34))return 1+(f+c)%Q.length}return 0}a.s(["WASH_SETS",0,Q,"wakingSlot",0,S,"washAt",0,R,"washOnce",0,T],539341);let U=1e3/240,{fontSize:V,density:W}=d.ASCII_FACE,X=a=>`700 ${a}px ui-monospace,SFMono-Regular,Menlo,monospace`,Y=(a,b,c)=>X(a*(.5+.5*(0,f.emojiWeight)(b,c))),Z=[235,235,235];function $(a){let b=[[],[],[],[],[]],c=0;for(let d of Array.from(a.toUpperCase())){let a=f.LETTERS[d];if(a){if(b[0].length)for(let a of b)a.push(-1);a.forEach((a,d)=>{for(let e of a)b[d].push("#"===e?c:-1)})," "!==d&&c++}}return b}let _=$("ERROR");function aa(a,b,c,d,e){return a+(b-a)*Math.min(1,e/(b>a?c:d))}function ab(a,b,c,d,e,f){let g=Math.floor(b/(d*f)+a[0].length/2),h=Math.floor(c/(e*f)+a.length/2);return h<0||h>=a.length?-1:a[h][g]??-1}let ac=[...Q,{letters:["~","s","S","§","~","∫","s","≈","S","~"],emoji:["💨","☁️","🌫️","💨","☁️","🫧","💭","💨","☁️","🌫️"]},{letters:["*",":","'",".","*",",",":","`","*",";"],emoji:null}],ad=Q.length,ae={gap:1,size:1.1},af=a=>a<0?0:a>1?1:a;function ag(a,b,c,d){let e=a=>Math.max(1,Math.min(3,Math.floor(625.6/(a[0].length*b)),Math.floor(421.6/(a.length*c)))),f=$(d),g=3>e(f)?function(a){let b=Array.from(a.trim()),c=b.flatMap((a,b)=>" "===a?[b]:[]);if(!c.length)return null;let d=b.length/2,e=c.reduce((a,b)=>Math.abs(b-d)<Math.abs(a-d)?b:a),f=$(b.slice(0,e).join("")),g=$(b.slice(e+1).join(""));if(!f[0].length||!g[0].length)return null;let h=Math.max(-1,...f.flat())+1,i=Math.max(f[0].length,g[0].length),j=(a,b)=>{let c=Math.floor((i-a.length)/2);return[...Array(c).fill(-1),...a.map(a=>a<0?a:a+b),...Array(i-a.length-c).fill(-1)]},k=()=>Array(i).fill(-1);return[...f.map(a=>j(a,0)),k(),k(),...g.map(a=>j(a,h))]}(d):null,h=g&&e(g)>e(f)?g:f,i=e(h),j=0;for(let d of a)d.word=ab(h,d.dx,d.dy,b,c,i),j=Math.max(j,d.word+1);return j}a.s(["AsciiOrb",0,function({className:a,mode:g="idle",size:h=680,color:k=Z,getSpectrum:m,word:n=null,waking:p=!1}){let r=(0,c.useRef)(null),F=(0,c.useRef)(null),G=(0,c.useRef)([]),H=(0,c.useRef)(null),J=(0,c.useRef)({cur:[...k],target:k}),K=(0,c.useRef)(0),M=(0,c.useRef)(m);M.current=m;let P=(0,c.useRef)({phrase:0,bob:0,bobVel:0,amp:[,,,,].fill(0),phase:Array.from({length:4},(a,b)=>2.1*b),spin:0,rings:[]}),Q=(0,c.useRef)({mode:g,start:0}),$=(0,c.useRef)(performance.now()),ah=(0,c.useRef)(90*Math.random()).current,ai=(0,c.useRef)({scale:.3,lift:0,gather:0,comet:0,speech:0,err:0,word:0}),aj=(0,c.useRef)(null),ak=(0,c.useRef)({cw:1,ch:1}),al=(0,c.useRef)({script:null,from:0,until:0}),am=(0,c.useRef)(null),an=(0,c.useRef)(p);return(0,c.useEffect)(()=>{let a=r.current;if(!a)return;let b=.95*V/W,c=1.25*V/W,d=680/h,e=b*d,g=c*d,i=Math.max(1,Math.floor(625.6/(_[0].length*e)));K.current=h,ak.current={cw:e,ch:g};let j=[],k=Math.ceil(h/b),l=Math.ceil(h/c),m=new Int32Array(k*l).fill(-1);for(let a=0;a<l;a++)for(let l=0;l<k;l++){let n=l*b,o=a*c,p=(n-h/2)*d,q=(o-h/2)*d,r=Math.hypot(p,q),s=ab(_,p,q,e,g,i);s<0&&r>328||(m[a*k+l]=j.length,j.push({x:n+b/2,y:o+c/2,dx:p,dy:q,dist:r,angle:Math.atan2(q,p),cos:r>0?p/r:1,sin:r>0?q/r:0,seed:(0,f.hash)(l,a),grain:(0,f.hash)(5.7*l+19,2.3*a+53),gap:.05+.3*(0,f.hash)(7.3*l+11,3.1*a+5),speck:(0,f.hash)(4.1*l+23,6.3*a+41),letter:s,word:-1}))}G.current=j,am.current={cells:j,cols:k,rows:l,cw:e,ch:g,half:340,at:m,field:328},aj.current&&ag(j,e,g,aj.current.text),H.current={byLevel:Array.from({length:f.LEVELS},()=>new Int32Array(j.length)),inLevel:new Int32Array(f.LEVELS),glyph:Array(j.length),fast:new Float32Array(j.length),slow:new Float32Array(j.length),wasLevel:new Int8Array(j.length).fill(-9),turn:new Int32Array(j.length).fill(-9),pick:new Int32Array(j.length),pool:new Int8Array(j.length),poolFor:new Float32Array(j.length)};let n=Math.min(2,window.devicePixelRatio||1);a.width=h*n,a.height=h*n,a.style.width=`${h}px`,a.style.height=`${h}px`;let o=a.getContext("2d");return o&&(o.setTransform(n,0,0,n,0,0),o.textAlign="center",o.textBaseline="middle","emoji"===(0,E.faceGlyphs)()&&function(a,b,c){if(0===c.length)return;let d=new Set(f.EMOJI_POOL);for(let a of ac)for(let b of a.emoji??[])d.add(b);let e=f.LEVELS-1,g=[];for(let a=1;a<=e;a++)g.push(Y(b,a,e));for(let b of g){a.font=b;let e=0;for(let b of d){let d=c[97*e++%c.length];a.fillText(b,d.x,d.y)}}a.clearRect(0,0,a.canvas.width,a.canvas.height)}(o,V,j),F.current=o),()=>{o?.clearRect(0,0,h,h),G.current=[],am.current=null,H.current=null}},[h]),(0,c.useEffect)(()=>{J.current.target=k},[k]),(0,c.useEffect)(()=>{Q.current.mode!==g&&(Q.current={mode:g,start:.001*performance.now()})},[g]),(0,c.useEffect)(()=>{if(!n||Date.now()-n.at>(n.hold??3.4)*1e3)return;let{cw:a,ch:b}=ak.current,c=performance.now();if(aj.current={text:n.text,start:.001*c,letters:ag(G.current,a,b,n.text),hold:n.hold??3.4},c-$.current<600){let a=ai.current;a.word=1,a.scale=0}},[n]),(0,c.useEffect)(()=>{let a,b=0,c=(0,e.createVoiceFollower)(),g="letters"===(0,E.faceGlyphs)(),h=g?.4:.264,k=I(),m=(a=new Float32Array(0),{deck:[],lastWake:null,head:{...o},smoke:{...o},want:{hush:0,crust:0},doing:{hush:0,crust:0},yawSlow:0,yawV:0,moved:!1,turned:!1,hx:a,hy:a,hz:a,px:a,py:a,pd:a,sx:a,sy:a,crust:0,crustSeed:40*Math.random(),crustWas:new Uint8Array(0),crusted:0,crustedNow:0,parts:[],live:!1,calm:1,thick:a,top:a,kind:new Int8Array(0),keep:a}),n={dx:0,dy:0,dist:0,px:0,py:0,sx:0,sy:0},p=Array(e.SPECTRUM_BANDS).fill(0),r=.001*performance.now(),W=0,Z=0,$=an.current?{slot:S(4e3*Math.random()|0)}:null;if($){let a=C(1e6*Math.random()|0,!0);al.current={script:a,from:.15,until:1.4+a.total+1.5}}let _=-1/0,ab=a=>{var e,E;if(a-_<1e3/d.ASCII_FACE.fps-U){b=requestAnimationFrame(ab);return}_=a;let I=.001*a,S=Math.min(.05,Math.max(0,I-r));r=I;let ag=F.current,ak=H.current,an=am.current;if(!ag||!ak||!an){b=requestAnimationFrame(ab);return}let ao=K.current;ak.inLevel.fill(0);let ap=M.current?.();if(!ap||ap.length<2){for(let a=0;a<p.length;a++){let b=.5*Math.sin(1.7*I+1.7*a)+.3*Math.sin(.8*I+.6*a)+.2*Math.sin(3*I+2.9*a);p[a]=.5*b+.5}ap=p}let aq=P.current,ar=Math.max(1,Math.round(60*S)),as=c.read(ap,S);aq.phrase=as.phrase,as.onset>0&&(aq.bobVel+=.06*as.onset,aq.rings.push({born:I,power:as.onset}),aq.rings.length>5&&aq.rings.shift());for(let a=0;a<ar;a++)aq.bobVel+=-(.012*aq.bob)-.09*aq.bobVel,aq.bob+=aq.bobVel;W+=S;for(let a=0;a<4;a++){let b=Math.floor(a*as.bands.length/4),c=Math.max(b+1,Math.floor((a+1)*as.bands.length/4)),d=0;for(let a=b;a<c;a++)d+=as.bands[a];d/=c-b;let e=.7+.6*(0,f.hash)((.9*I|0)+31*a,a);aq.amp[a]+=(d*e-aq.amp[a])*(1-(1-(.05+.02*a))**ar),aq.phase[a]+=S*(.9+.5*a)*(a%2?-1:1)}for(aq.spin+=S*(1.1+.9*aq.phrase);aq.rings.length>0&&I-aq.rings[0].born>.7;)aq.rings.shift();let at=Q.current,au=aj.current,av=au?I-au.start:0,aw=null!==au&&"error"!==at.mode&&av<au.hold+.08*au.letters+.45+.35+.9,ax=function(a,b){let c={scale:1,lift:0,gather:0,comet:0,speech:0,err:0,word:0};switch(a){case"idle":return c;case"connecting":{let a=1-Math.exp(-b/1.3);return{...c,scale:.45+.55*a,lift:.06*a,gather:1}}case"speaking":return{...c,speech:1};case"working":return{...c,scale:0,comet:1};case"ending":return{...c,scale:0};case"error":return{...c,scale:0,err:1}}}(at.mode,I-at.start);aw&&(ax.word=1,null!==au&&av<au.hold&&(ax.scale=0,ax.lift=0,ax.gather=0,ax.comet=0,ax.speech=0));let ay=ai.current;ay.scale=aa(ay.scale,ax.scale,.45,"ending"===at.mode?.4:.7,S),ay.lift=aa(ay.lift,ax.lift,.22,.4,S),ay.gather=aa(ay.gather,ax.gather,.3,.95,S),ay.comet=aa(ay.comet,ax.comet,.45,.9,S),ay.speech=aa(ay.speech,ax.speech,.5,.75,S),"error"===at.mode&&(ay.err<=.01&&(Z=0),Z+=S),ay.err=aa(ay.err,ax.err,.5,.6,S),ay.word=aa(ay.word,ax.word,.35,.5,S);let az=ay.err>.5,aA=ay.word>.5,aB=l(W,ah),aC=Math.exp(-S/.085),aD=Math.exp(-S/.8),aE=ay.scale*(1-ay.speech)*(1-ay.comet)*(1-ay.gather),aF=null,aG=0,aH=0,aI=0,aJ=-1,aK=null,aL=-1,aM=al.current,aN=aE>.4&&!az&&!aA,aO=(0,f.smoothstep)(.4,.75,aE)*(1-(0,f.smoothstep)(0,.5,ay.word));if(!aN&&void 0===aM.cut&&aM.script&&W>aM.from&&W<aM.until&&(aM.cut=W),aN&&void 0===aM.cut&&W>aM.until){let a=0===aM.until,b=function(a){let[b,c]=function(a){let b=a.deck;if(!b.length){for(let a of s)for(let c of t)b.push([a,c]);for(let c=0;c<200;c++){for(let a=b.length-1;a>0;a--){let c=Math.random()*(a+1)|0;[b[a],b[c]]=[b[c],b[a]]}let c=b[b.length-1][0]!==a.lastWake;for(let a=1;c&&a<b.length;a++)c=b[a][0]!==b[a-1][0];if(c)break}}let c=b.pop()??[s[0],t[0]];return a.lastWake=c[0],c}(a),d=11*(.75+.5*Math.random()),e=Math.max(Math.max(q[b].len,1.5)+.8,d-q[c].len),f=(a,b)=>({key:a,at:b,m:.5>Math.random(),thrown:0,owed:0});return{items:[f(b,0),f(c,e)],open:e+q[c].len+.8*!q[c].hold}}(m);aM.plan=b,aM.script=C(1e3*W|0,!1,b.open),aM.from=W+(a?.15:17*(.55+.9*Math.random())),aM.until=aM.from+1.25+Math.max(aM.script.total,b.open)+1.5}if(aN||void 0!==aM.cut){let a=W-aM.from,b=aM.until-aM.from;if(aM.script&&a>0){let c=(0,f.smoothstep)(.4,.75,aE),d=b-1.5-.3,e=void 0===aM.cut?af((a-d)/1.35):Math.max(af((a-d)/1.35),af((W-aM.cut)/.4));aG=(0,f.smoothstep)(.75,1.05,a);let g=function(a,b){let c=0,d=[0,0],e=0;for(let f of a.beats){let a=b-c;if(a<f.ms){let b=B(0,f.snap??.12,a),c=1;for(let b of[f.blink,f.blink2])!b||a<=b[0]||a>=b[1]||(c*=Math.abs(Math.cos(Math.PI*((a-b[0])/(b[1]-b[0]))))**.7);return{gaze:[A(d[0],f.gaze[0],b),A(d[1],f.gaze[1],b)],tilt:A(e,f.tilt,b),lid:c}}c+=f.ms,d=f.gaze,e=f.tilt}return D}(aM.script,Math.max(0,a-.875)),h=g.lid*(0,f.smoothstep)(.75,1.13,a),i=(1-e)**2.2;aF={...g,gaze:[g.gaze[0],g.gaze[1]+.04*(0,f.smoothstep)(0,.65,e)],lid:h*i,fall:h*(1-i)*.3999999999999999},aH=aG*(1-e)*c,aI=(0,f.smoothstep)(.1,.9,e)*c,c>.5&&(aJ=a-.75),void 0===aM.cut?(aK=aM.plan??null,aL=a-.75):e>=1&&(aM.until=W,aM.cut=void 0,aF=null,aG=0)}}let aP=170*1.08*Math.max(.02,ay.scale);aF=function(a,b,c,d,e,g,h,k,l){var m;m=b.cells.length,a.hx.length!==m&&(a.hx=new Float32Array(m),a.hy=new Float32Array(m),a.hz=new Float32Array(m),a.px=new Float32Array(m),a.py=new Float32Array(m),a.pd=new Float32Array(m),a.sx=new Float32Array(m),a.sy=new Float32Array(m),a.crustWas=new Uint8Array(m),a.thick=new Float32Array(m),a.top=new Float32Array(m),a.kind=new Int8Array(m),a.keep=new Float32Array(m),a.parts.length=0,a.live=!1),a.calm=l,a.crusted=a.crustedNow,a.crustedNow=0;let n=o,p=a.want;if(p.hush=0,p.crust=0,e&&g>-1){let i={...o},l=!1;for(let c of e.items){let e=q[c.key],f=g-c.at;if(e.fx?.(f,c.m,p,a,b,c,d,k),f<(e.wake?-.8:0)||!e.hold&&f>e.len+.6)continue;let h=e.pose(f,c.m);h!==o&&(l=!0,i.x+=h.x,i.y+=h.y,i.rot+=h.rot,i.yaw+=h.yaw,i.pitch+=h.pitch,i.spin+=h.spin,h.spin&&(i.axis=h.axis),i.gx+=h.gx,i.gy+=h.gy,i.sx*=h.sx,i.sy*=h.sy,i.lidL*=h.lidL,i.lidR*=h.lidR,i.size*=h.size)}if(h&&g>=0){let a;i.yaw+=.08*(j(.13*c+3.1,1.7,.4,2)-.5)*2*(0,f.smoothstep)(0,1.2,g)*((a=h.lid)<0?0:a>1?1:a),l=!0}l&&(n=i)}let r=a.doing;r.hush=u(r.hush,p.hush,.15,d),r.crust=u(r.crust,p.crust,.1,d),a.crust=r.crust;let s=a.head,t=s.yaw,w=n!==o?.045:l<.99?.3:.6;s.spin=n.spin+Math.atan2(Math.sin(s.spin-n.spin),Math.cos(s.spin-n.spin)),n.spin&&(s.axis=n.axis),s.x=u(s.x,n.x,w,d),s.y=u(s.y,n.y,w,d),s.rot=u(s.rot,n.rot,w,d),s.yaw=u(s.yaw,n.yaw,w,d),s.pitch=u(s.pitch,n.pitch,w,d),s.spin=u(s.spin,n.spin,w,d),s.sx=u(s.sx,n.sx,w,d),s.sy=u(s.sy,n.sy,w,d),a.yawV=(s.yaw-t)/Math.max(d,.001);let x=a.smoke;a.yawSlow=u(a.yawSlow,s.yaw,.3,d);let z=1-Math.exp(-d/.12);return(x.x+=(s.x+.25*Math.sin(a.yawSlow)-x.x)*z,x.y+=(s.y-x.y)*z,x.rot+=(s.rot-x.rot)*z,x.sx+=(s.sx-x.sx)*z,x.sy+=(s.sy-x.sy)*z,a.moved=!(v(s)&&v(x)),a.turned=Math.abs(s.yaw)+Math.abs(s.pitch)+Math.abs(s.spin)>1e-4,a.moved&&function(a,b,c){let d=b.cells,e=a.head;{let b=Math.cos(e.rot),f=Math.sin(e.rot),g=e.x*c,h=e.y*c,i=a.turned?function(a){let b=Math.cos(a.yaw),c=Math.sin(a.yaw),d=Math.cos(a.pitch),e=Math.sin(a.pitch),f=[b,c*e,c*d,0,d,-e,-c,b*e,b*d];if(!a.spin)return f;let g=Math.sin(a.axis),h=Math.cos(a.axis),i=Math.cos(a.spin),j=Math.sin(a.spin),k=1-i,l=[i+g*g*k,g*h*k,h*j,g*h*k,i+h*h*k,-g*j,-h*j,g*j,i],m=Array(9);for(let a=0;a<3;a++)for(let b=0;b<3;b++)m[3*a+b]=l[3*a]*f[b]+l[3*a+1]*f[3+b]+l[3*a+2]*f[6+b];return m}(e):null,j=c*c;for(let c=0;c<d.length;c++){let k=d[c].dx-g,l=d[c].dy-h,m=(k*b+l*f)/e.sx,n=(-k*f+l*b)/e.sy;if(a.px[c]=m,a.py[c]=n,a.pd[c]=Math.hypot(m,n),i){let b=Math.sqrt(Math.max(0,j-m*m-n*n));a.hx[c]=i[0]*m+i[3]*n+i[6]*b,a.hy[c]=i[1]*m+i[4]*n+i[7]*b,a.hz[c]=i[2]*m+i[5]*n+i[8]*b}else a.hx[c]=m,a.hy[c]=n,a.hz[c]=1}}let f=a.smoke,g=Math.cos(f.rot),h=Math.sin(f.rot),i=f.x*c,j=f.y*c;for(let b=0;b<d.length;b++){let c=d[b].dx-i,e=d[b].dy-j;a.sx[b]=(c*g+e*h)/f.sx,a.sy[b]=(-c*h+e*g)/f.sy}}(a,b,k),function(a,b,c,d){let e=a.parts;if(!e.length&&!a.live)return;a.calm<.02&&(e.length=0),a.thick.fill(0),a.top.fill(0),a.keep.fill(0);let g=0;for(let h of e){if(h.age+=d,h.age>=h.life)continue;let j=h.x,k=h.y,l=h.keep**d;h.vx*=l,h.vy*=l,h.vy+=(h.fall-h.rise*Math.min(1,h.age/h.riseT))*d,h.splay&&(h.vx+=(0===h.vx?h.seed%2<1?-1:1:Math.sign(h.vx))*h.splay*Math.min(1,h.age/.8)*d),h.wall&&function(a,b){let c=Math.hypot(a.x,a.y);if(c>.94*a.wall){let d=a.x/c,e=a.y/c,f=-e,g=a.vx*d+a.vy*e;if(!a.side){let b=a.vx*f+a.vy*d;a.side=Math.abs(b)>1?Math.sign(b):a.seed%2<1?-1:1}c>a.wall&&g>0&&(a.vx+=-g*d+a.side*g*.85*f,a.vy+=-g*e+a.side*g*.85*d);let h=120*Math.max(0,1-a.age/3.2);a.vx+=a.side*f*h*b,a.vy+=a.side*d*h*b,c>a.wall&&(a.x-=d*(c-a.wall)*.5,a.y-=e*(c-a.wall)*.5),a.hitAt<0&&(a.hitAt=a.age)}if(a.hitAt>=0&&a.age-a.hitAt>a.peel&&c>1){a.peeled||(a.peeled=!0,a.rise=Math.min(a.rise,14));let d=1.2*(c-a.home)*Math.min(1,(a.age-a.hitAt-a.peel)/.6);a.vx-=a.x/c*d*b,a.vy-=a.y/c*d*b}}(h,d);let m=0,n=0;if(h.curl){let a=h.curl*Math.min(1,h.age/.4);!function(a,b,c){let d=.011*a,e=.011*b,f=.3*c;y.x=(i(d,e+.25,f)-i(d,e-.25,f))/.5,y.y=-(i(d+.25,e,f)-i(d-.25,e,f))/.5}(h.x+7*h.seed,h.y,c),m=y.x*a,n=y.y*a}h.x+=(h.vx+m)*d,h.y+=(h.vy+n)*d;let o=h.a*(1-(h.age/h.life)**h.fadeP)*(0,f.smoothstep)(0,.06,h.age)*a.calm,p=h.r0+(h.r1-h.r0)*(1-Math.exp(-h.age/h.grow)),q=Math.min(4,Math.max(1,Math.ceil(Math.hypot(h.x-j,h.y-k)/7)));for(let c=1;c<=q;c++)!function(a,b,c,d,e,f,g,h){let i=Math.min(70,e+9),j=(c+b.half)/b.cw,k=(d+b.half)/b.ch,l=i/b.cw,m=i/b.ch,n=Math.max(0,Math.floor(j-l)),o=Math.min(b.cols-1,Math.ceil(j+l)),p=Math.max(0,Math.floor(k-m)),q=Math.min(b.rows-1,Math.ceil(k+m)),r=1/(i*i),s=b.cells;for(let e=p;e<=q;e++)for(let i=n;i<=o;i++){let j=b.at[e*b.cols+i];if(j<0)continue;let k=s[j].dx-c,l=s[j].dy-d,m=1-(k*k+l*l)*r;if(m<=0)continue;let n=f*m*m;a.thick[j]+=n-a.thick[j]*n,n>a.top[j]&&(a.top[j]=n,a.kind[j]=g),h>a.keep[j]&&(a.keep[j]=h)}}(a,b,j+(h.x-j)*c/q,k+(h.y-k)*c/q,p,o/Math.sqrt(q),h.kind,h.hold);e[g++]=h}e.length=g,a.live=g>0}(a,b,c,d),h&&n!==o)?{...h,gaze:[h.gaze[0]+n.gx,h.gaze[1]+n.gy],lids:[n.lidL,n.lidR],size:n.size}:h}(m,an,I,S,aK,aL,aF,aP,aO),k.hush=m.doing.hush,L(k,I,S,aH,aI,aJ,null===aK||null!==(e=aK)&&!0===q[e.items[0].key].sighs);let aQ=m.moved,aR=m.live||m.crust>.004||m.crusted>0,aS=G.current;for(let a=0;a<aS.length;a++){let b=aS[a];aQ?(n.dx=m.hx[a],n.dy=m.hy[a],n.px=m.px[a],n.py=m.py[a],n.dist=m.pd[a],n.sx=m.sx[a],n.sy=m.sy[a]):(n.dx=n.px=n.sx=b.dx,n.dy=n.py=n.sy=b.dy,n.dist=b.dist);let c=function(a,b,c,d,e,g,h,i,j,k){let l,m,n,o,p=h.scale>.02?N(b,c,h.lift,170*1.08*h.scale,h.scale,j,k)*(1-.6*h.speech):0;return h.gather>.01&&(p+=function(a,b,c){let d=170*c;if(a.speck>=.55||a.dist<.8*d)return 0;let e=Math.min(55,Math.floor((a.angle+Math.PI)/(2*Math.PI)*56)),g=(.7*b+(0,f.hash)(e,5.3))%1,h=a.dist-(d+(320-d)*(1-g)**1.25)-(a.grain-.5)*16;return Math.exp(-(h*h)/260)*(0,f.smoothstep)(0,.2,g)*(1-g)*1.1}(a,c,h.scale)*h.gather),h.comet>.01&&(p+=(m=Math.exp(-((l=a.dist-210)*l)/1100),m*Math.exp(-((o=Math.atan2(Math.sin(n=a.angle-3*c),Math.cos(n)))*o)/(o<0?2.8:.16))*h.comet)),h.speech>.01&&(p+=function(a,b,c,d){var e;let f=170+40*c.phrase+85*c.bob;for(let b=0;b<4;b++)f+=28*c.amp[b]*Math.sin((b+2)*(a.angle+c.spin)+c.phase[b]);let g=170+(((e=f)<=205?Math.max(110,e):205+30*Math.tanh((e-205)/30))-170)*d,h=(a.grain-.5)*20+20*Math.sin(5*a.angle+.9*b+6.283*a.seed)*.3,i=a.dist-(g+h),j=Math.exp(-(i*i)/800)+.5*Math.exp(-(a.dist*a.dist)/6e3);if(a.dist<g&&(j+=.22*(1-a.dist/g)**.6*(.75+.25*Math.sin(.05*a.dist-1.2*b))),a.speck<.22){let d=90*(.6+.9*a.grain);for(let e=0;e<c.rings.length;e++){let f=c.rings[e],h=b-f.born,i=a.dist-(g+6+h*d);j+=Math.exp(-(i*i)/500)*f.power*Math.max(0,1-h/.7)}}return j}(a,c,i,h.speech)*h.speech),h.err>.01&&(p+=function(a,b,c){if(a.letter<0)return 0;let d=c%9.2,e=.12*a.seed;return Math.max(0,(0,f.smoothstep)(0,1,(d-.65*a.letter-e)/.8)-(0,f.smoothstep)(0,1,(d-5.6-.5*a.letter-e)/.7))*(.86+.14*Math.sin(3.5*b+6*a.seed))}(a,c,d)*h.err),h.word>.01&&(p+=function(a,b,c,d){if(a.word<0)return 0;let e=.45*a.seed,g=(0,f.smoothstep)(0,1,(c-.11*a.word-e)/.3),h=c-d-.08*a.word-e,i=(0,f.smoothstep)(0,1,h/.35),j=.2*(1-(0,f.smoothstep)(0,1,(h-.35)/.9));return Math.max(g-i,g>.5?j*i:0)*((g>0&&g<1||i>0&&j>0)&&.35>(0,f.hash)(Math.floor(14*b)+97*a.seed,31*a.grain)?.25:1)*(.86+.14*Math.sin(3.5*b+6*a.seed))}(a,c,e,g)*h.word),p}(b,n,I,Z,av,au?.hold??3.4,ay,aq,k,aB);if(k.sigh.live){let a=O(n,I,aP,k)*ay.scale;a>c&&(c=a)}let d=!(az&&b.letter>=0||aA&&b.word>=0),e=0,l=0,o=!1;if(aR&&d){let b=function(a,b,c,d,e,g,h){let k=b.cells[c];if(z.v=d,z.kind=0,z.hold=0,z.covers=!1,a.crust>.004||a.crusted>0){let b=a.moved?a.hx[c]:k.dx,d=a.moved?a.hy[c]:k.dy,e=a.moved?a.pd[c]:k.dist,i=1-(0,f.smoothstep)(.92*g,1.1*g,e),l=!1;if(i>.05){let c=.12+.76*j(.022*b+a.crustSeed,.022*d,2.7,2);(l=a.crust>c)&&(z.v=.42*(.5+.9*j(.09*b,.09*d,5.5,2))*i*h,z.kind=2,z.hold=.15,a.crustedNow++)}a.crustWas[c]&&!l&&.06>Math.random()&&function(a,b,c){let d=Math.sqrt(Math.max(0,c*c-b.dist*b.dist)),e=Math.max(-260,Math.min(260,a.yawV*d*.55)),f=90+80*Math.random();w(a,{...x,x:b.dx,y:b.dy,vx:e+b.cos*f,vy:b.sin*f-30,life:1+.7*Math.random(),a:.45+.25*Math.random(),r0:3,r1:18+12*Math.random(),grow:.6,keep:.3,fall:45,curl:35,kind:2,hold:0,fadeP:1.5}),.35>Math.random()&&w(a,{...x,x:b.dx,y:b.dy,vx:e+b.cos*(120+80*Math.random()),vy:b.sin*f-50,life:.6+.4*Math.random(),a:.9,r0:1.5,r1:2.5,grow:1,keep:.4,fall:300,curl:0,kind:2,hold:0,fadeP:1})}(a,k,g),a.crustWas[c]=+!!l}if(a.live){let b=a.thick[c];if(b>.02){let d=a.kind[c],f=b*h*(.6+.8*i(.04*k.dx+.3*e,.04*k.dy-.2*e,.5*e)),g=.1+.3*k.grain;f>g?(z.v=2===d?.5*(1-Math.exp(-1.5*f)):.3+.62*Math.min(1,f),z.kind=d,z.hold=.12,f>.45&&2===d&&(z.covers=!0)):a.keep[c]>0&&f>.5*g&&(z.kind=d,z.hold=a.keep[c]*(.5+k.grain))}}return z}(m,an,a,c,I,aP,ay.scale);c=b.v,e=b.kind,l=b.hold,o=b.covers}d&&(c*=(.66+.72*b.grain)*(.8+.4*(0,f.hash)(Math.floor(.05*b.dx+.5*I),Math.floor(.05*b.dy-.3*I))))>.3&&(0,f.hash)(31.7*Math.floor(1.6*I),613*b.seed)>.992&&(c=Math.max(c,.9));let p=!d||e?0:W<42?$?T(b.dx,b.dy,W,1,2.9,$.slot):0:R(b.dx,b.dy,W,42,3.2);if(e?(ak.pool[a]=ad+e,ak.poolFor[a]=l):p?(ak.pool[a]=p,ak.poolFor[a]=.3+.9*b.grain):ak.poolFor[a]>0?(ak.poolFor[a]-=S,ak.poolFor[a]<=0&&(ak.pool[a]=0)):ak.pool[a]=0,aG>.03&&null!==aF&&d&&!o&&(E=a,!m.turned||m.pd[E]<.985*aP&&m.hz[E]>0)&&function(a,b,c,d,e,f){if(d<=.03||e.lid<=.02)return!1;let g=c/112,h=g*f.size*(e.size??1);for(let i of[-1,1]){let k=e.lid*(e.lids?e.lids[i<0?0:1]:1);if(k<=.02)continue;let l=a-(44*i*g*f.gap+e.gaze[0]*c),m=b-(-20*g+e.gaze[1]*c+(e.fall??0)*51*h/2),n=Math.cos(e.tilt),o=Math.sin(e.tilt),p=l*n-m*o,q=51*h*k,r=(-(l*o+m*n)+q/2)/q;if(!(r<=0||r>=1||Math.abs(p- - -(2*(1-r)*r*1)*h)>38*h/2*Math.sin(Math.PI*r)**.35)&&!(d<.99&&d<.88*j(.026*l+3,.026*m,7.7,2)+.06))return!0}return!1}(aQ?m.hx[a]:b.dx,aQ?m.hy[a]:b.dy,aP,aG,aF,ae)){ak.fast[a]=0,ak.slow[a]=0,ak.pool[a]=0;continue}let q=ak.fast[a]=c>ak.fast[a]*aC?c:ak.fast[a]*aC,r=ak.slow[a]=c>ak.slow[a]*aD?c:ak.slow[a]*aD;c=q>.52*r?q:.52*r,d&&c<b.gap+.05*Math.sin(.28*I+6.283*b.seed)&&(c=0);let s=(c=c<0?0:c>1?1:c)*(f.LEVELS-1)|0;if(0===s)continue;let t=W*h+7*b.seed|0;(t!==ak.turn[a]||s-ak.wasLevel[a]>=2||ak.wasLevel[a]-s>=2)&&(ak.turn[a]=t,ak.wasLevel[a]=s,ak.pick[a]=(997*b.seed|0)+t+s);let u=ak.pick[a],v=ak.pool[a]?ac[ak.pool[a]-1]:null,y=g?v?.letters??f.RAMP[s]:v?.emoji??f.EMOJI_POOL;ak.glyph[a]=y[(u%y.length+y.length)%y.length],ak.byLevel[s][ak.inLevel[s]++]=a}ag.clearRect(0,0,ao,ao);let aT=G.current,aU=f.LEVELS-1,aV=J.current;for(let a=0;a<3;a++)aV.cur[a]+=(aV.target[a]-aV.cur[a])*(1-.95**ar);ag.fillStyle=`rgb(${0|aV.cur[0]},${0|aV.cur[1]},${0|aV.cur[2]})`,g&&(ag.font=X(V));for(let a=1;a<=aU;a++){let b=ak.inLevel[a];if(0===b)continue;g?ag.globalAlpha=f.ALPHA_TOP*(a/aU):(ag.globalAlpha=(0,f.emojiAlpha)(a,aU),ag.font=Y(V,a,aU));let c=ak.byLevel[a];for(let a=0;a<b;a++){let b=aT[c[a]];ag.fillText(ak.glyph[c[a]],b.x,b.y)}}ag.globalAlpha=1,b=requestAnimationFrame(ab)};return b=requestAnimationFrame(ab),()=>cancelAnimationFrame(b)},[]),(0,b.jsx)("canvas",{ref:r,className:a,"aria-hidden":!0,style:{display:"block",pointerEvents:"none"}})},"CHURN_EMOJI",0,.264,"CHURN_LETTERS",0,.4,"DESIGN",0,680,"GLYPH_FONT",0,X,"REST_R",0,170*1.08,"TRAIL_FAST",0,.085],590513)},445432,a=>{"use strict";var b=a.i(187924),c=a.i(572131),d=a.i(590513),e=a.i(730357),f=a.i(497895);let g={ending:"ending",idle:"idle",connecting:"connecting",listening:"idle",speaking:"speaking",working:"working",delegating:"working"},h=[247,247,247],i=[10,10,10];function j({status:a,failed:c,word:f,size:k,getSpectrum:l,waking:m,className:n}){let o=(0,e.useIsDark)();return(0,b.jsx)(d.AsciiOrb,{mode:c?"error":g[a],word:f,size:k,color:o?h:i,getSpectrum:l,waking:m,className:n})}let k=(0,c.memo)(function({status:a="idle",covered:d=!1,className:e,...g}){let h=(0,c.useRef)(null),[i,k]=(0,c.useState)(null),[l,m]=(0,c.useState)(!1);return(0,c.useEffect)(()=>{let a=h.current;if(!a)return;let b=new ResizeObserver(([a])=>{let b=Math.round(a.contentRect.width);b>0&&k(b)});return b.observe(a),()=>b.disconnect()},[]),(0,c.useEffect)(()=>{let a=requestAnimationFrame(()=>m(!0));return()=>cancelAnimationFrame(a)},[]),(0,b.jsx)("div",{ref:h,className:(0,f.cn)("aspect-square transition-opacity duration-700 ease-out",l&&null!==i?"opacity-100":"opacity-0",e),children:null!==i&&!d&&(0,b.jsx)(j,{...g,status:a,size:i})})});a.s(["Face",0,k])},461512,a=>{"use strict";var b=a.i(702080),c=a.i(61876),d=a.i(249890);let e=[{id:"chatgpt",...c.TEXT_MODEL_PROVIDERS.chatgpt},{id:"openai",...c.TEXT_MODEL_PROVIDERS.openai}];b.default.object({id:b.default.string().min(1),text:b.default.string(),said:b.default.boolean()});let f="note",g=a=>a.type===`data-${f}`?a.data:null,h={min:3,max:32},i=b.default.object({enabled:b.default.boolean(),phrase:b.default.string().trim().min(h.min).max(h.max)}),j=b.default.object({enabled:b.default.boolean(),combo:b.default.string().trim().min(1).max(64)}),k=["off","waiting","any"],l=b.default.enum(k),m=["center","sides"],n=b.default.enum(m);b.default.object({id:b.default.string().min(1),role:b.default.enum(["user","assistant","tool"]),tool:b.default.string().nullish(),text:b.default.string(),seq:b.default.number().int().min(0),fragments:b.default.array(d.LiveFragmentSchema).nullish()}),b.default.object({id:b.default.string().min(1),text:b.default.string(),seq:b.default.number().int().min(0)}),a.s(["CALL_BACK_DEFAULT",0,"waiting","CALL_BACK_LABEL",0,{off:"Never",waiting:"When a job needs me",any:"Whenever a job ends"},"CALL_BACK_MODES",0,k,"CAPTION_VIEWS",0,m,"CallBackSchema",0,l,"CaptionViewSchema",0,n,"HOTKEY_DEFAULT",0,{enabled:!1,combo:"alt+shift+KeyT"},"HotkeySchema",0,j,"TEXT_CALL_NOTE",0,f,"WAKE_DEFAULT",0,{enabled:!1,phrase:"hey thursday"},"WAKE_PHRASE",0,h,"WakeSchema",0,i,"isEnglishPhrase",0,a=>/^[a-z0-9\s'.,!?-]+$/i.test(a.trim())&&/[a-z]/i.test(a),"noteOf",0,g,"notesIn",0,a=>a.flatMap(a=>a.parts.flatMap(a=>{let b=g(a);return b?[b]:[]})),"textCallRunsOn",0,a=>e.find(b=>a(b.apiKeyName))?.id??null])},359006,a=>{"use strict";let b,c;var d=a.i(156757),e=a.i(920226);let f=a=>b=>{try{let c=a(b);if(c instanceof Promise)return c;return{then:a=>f(a)(c),catch(a){return this}}}catch(a){return{then(a){return this},catch:b=>f(b)(a)}}};var g=a.i(96340),h=a.i(61876),i=a.i(461512);let j=d.z.object({wake:i.WakeSchema.catch(i.WAKE_DEFAULT),hotkey:i.HotkeySchema.catch(i.HOTKEY_DEFAULT),callBack:i.CallBackSchema.catch(i.CALL_BACK_DEFAULT),captionView:i.CaptionViewSchema.catch("sides"),textModel:h.textModelRefSchema.nullable().catch(null)}),k={wake:i.WAKE_DEFAULT,hotkey:i.HOTKEY_DEFAULT,callBack:i.CALL_BACK_DEFAULT,captionView:"sides",textModel:null},l=(0,e.create)()((b=a=>({...k,carried:null,patch:b=>a(b),carriedDone:()=>a({carried:null})}),c={name:"thursday.settings",version:2,migrate:(a,b)=>b<1&&a&&"object"==typeof a?{...a,webSearch:!0}:a,partialize:a=>({wake:a.wake,hotkey:a.hotkey,callBack:a.callBack,captionView:a.captionView,textModel:a.textModel}),merge:(a,b)=>{let c=j.safeParse(a),d=c.success?c.data:k;return{...b,...d,carried:function(a){if(!a||"object"!=typeof a)return null;let b=[...Object.keys(g.LiveSettingsSchema.shape),"voicePrompt","systemPrompt","model"].filter(b=>b in a);return b.length?Object.fromEntries(b.map(b=>[b,a[b]])):null}(a)}}},(a,d,e)=>{let g,h={storage:function(a){let b;try{b=a()}catch(a){return}return{getItem:a=>{var c;let d=a=>null===a?null:JSON.parse(a,void 0),e=null!=(c=b.getItem(a))?c:null;return e instanceof Promise?e.then(d):d(e)},setItem:(a,c)=>b.setItem(a,JSON.stringify(c,void 0)),removeItem:a=>b.removeItem(a)}}(()=>window.localStorage),partialize:a=>a,version:0,merge:(a,b)=>({...b,...a}),...c},i=!1,j=0,k=new Set,l=new Set,m=h.storage;if(!m)return b((...b)=>{console.warn(`[zustand persist middleware] Unable to update item '${h.name}', the given storage is currently unavailable.`),a(...b)});let n=()=>{let a=h.partialize({...d()});return m.setItem(h.name,{state:a,version:h.version})},o=e.setState;e.setState=(a,b)=>(o(a,b),n());let p=b((...b)=>(a(...b),n()));e.getInitialState=()=>p;let q=()=>{var b,c;if(!m)return;let e=++j;i=!1,k.forEach(a=>{var b;return a(null!=(b=d())?b:p)});let o=(null==(c=h.onRehydrateStorage)?void 0:c.call(h,null!=(b=d())?b:p))||void 0;return f(m.getItem.bind(m))(h.name).then(a=>{if(a)if("number"!=typeof a.version||a.version===h.version)return[!1,a.state];else{if(h.migrate){let b=h.migrate(a.state,a.version);return b instanceof Promise?b.then(a=>[!0,a]):[!0,b]}console.error("State loaded from storage couldn't be migrated since no migrate function was provided")}return[!1,void 0]}).then(b=>{var c;if(e!==j)return;let[f,i]=b;if(a(g=h.merge(i,null!=(c=d())?c:p),!0),f)return n()}).then(()=>{e===j&&(null==o||o(d(),void 0),g=d(),i=!0,l.forEach(a=>a(g)))}).catch(a=>{e===j&&(null==o||o(void 0,a))})};return e.persist={setOptions:a=>{h={...h,...a},a.storage&&(m=a.storage)},clearStorage:()=>{++j,null==m||m.removeItem(h.name)},getOptions:()=>h,rehydrate:()=>q(),hasHydrated:()=>i,onHydrate:a=>(k.add(a),()=>{k.delete(a)}),onFinishHydration:a=>(l.add(a),()=>{l.delete(a)})},h.skipHydration||q(),g||p}));a.s(["useThursdayStore",0,l],359006)},27418,a=>{"use strict";var b=a.i(421042);let c={[b.TOOL_NAMES.memory_recall]:"Checking your notes",[b.TOOL_NAMES.memory_create]:"Starting a note",[b.TOOL_NAMES.memory_remember]:"Noting that down",[b.TOOL_NAMES.memory_describe]:"Renaming a note",[b.TOOL_NAMES.memory_forget]:"Forgetting that",[b.TOOL_NAMES.bash]:"Doing it on this computer",[b.TOOL_NAMES.web_search]:"Searching the web",[b.TOOL_NAMES.load_skill]:"Reading how to do this",[b.TOOL_NAMES.look_at]:"Looking at the picture",[b.TOOL_NAMES.make_deck]:"Making the deck",[b.TOOL_NAMES.end_call]:"Ending the call",[b.TOOL_NAMES.routine]:"Checking your routines"};function d(a,b=28){let c=a.trim().replace(/\s+/g," ");if(c.length<=b)return c;let e=c.slice(0,b),f=e.lastIndexOf(" ");return`${(f>b/2?e.slice(0,f):e).trimEnd()}…`}let e=(a,b)=>"string"==typeof a[b]?a[b].trim():"";function f(a){if(!a)return null;try{let b=JSON.parse(a);if(b&&"object"==typeof b&&!Array.isArray(b))return b}catch{}return null}let g=new Set([b.TOOL_NAMES.thread_tell,b.TOOL_NAMES.thread_answer,b.TOOL_NAMES.thread_status,b.TOOL_NAMES.thread_show,b.TOOL_NAMES.thread_cancel,b.TOOL_NAMES.thread_seen]);function h(a){return Array.isArray(a)?a.flatMap(a=>a&&"object"==typeof a&&"string"==typeof a.url?[a]:[]):[]}a.s(["reasoningTitle",0,function(a){return/^\s*\*\*(.+?)\*\*/.exec(a)?.[1]?.trim()||null},"searchOf",0,function(a,c){if(a!==b.TOOL_NAMES.web_search)return null;try{let a=JSON.parse(c);return{query:"string"==typeof a.query?a.query:null,sources:h(a.sources)}}catch{return null}},"searchQueryOf",0,function(a){let b=f(a)?.query;return"string"==typeof b&&b.trim()?b.trim():null},"searchSourcesOf",0,function(a){return h(f(a)?.sources)},"startedLabel",0,function(a,c){if(a!==b.TOOL_NAMES.thread_start)return null;try{let a=JSON.parse(c);return"string"==typeof a.label?a.label:null}catch{return null}},"toolBot",0,function(a,c,d,e){let h=f(c);if(!h)return null;if(a===b.TOOL_NAMES.thread_start)return"string"==typeof h.bot&&h.bot.trim()?h.bot.trim():null;if(!g.has(a))return null;let i="string"==typeof h.thread?h.thread.trim():"";if(!i||"all"===i.toLowerCase())return null;let j=i.toLowerCase(),k=d?.find(a=>a.id===i)??d?.find(a=>a.label.toLowerCase()===j);return k?a===b.TOOL_NAMES.thread_answer?k.room.questions[0]?.bot??k.bot:k.bot:function(a){let b=f(a);if(!b)return null;if("string"==typeof b.bot&&b.bot.trim())return b.bot.trim();let c=b.answered;return"string"==typeof c?.bot?c.bot:null}(e)},"toolLine",0,function(a,g,h=null){let i;if(a===b.TOOL_NAMES.tool_search||a===b.TOOL_NAMES.tool_call)return"Reaching a connected service";let j=f(g);return(j&&function(a,c,f){if(a===b.TOOL_NAMES.memory_remember||a===b.TOOL_NAMES.memory_create){let f=e(c,"path"),g=function(a){if(!Array.isArray(a.facts))return null;let b=a.facts.map(a=>a&&"object"==typeof a&&"string"==typeof a.text?a.text.trim():"").filter(Boolean);return b.length?{text:b[0],more:b.length-1}:null}(c),h=a===b.TOOL_NAMES.memory_create?"Starting":"Noting";if(!f)return null;if(!g)return`${h} ${f}`;let i=g.more>0?` (+${g.more})`:"";return`${h} ${f}: ${d(g.text)}${i}`}if(a===b.TOOL_NAMES.memory_recall){let a=e(c,"path");return a?`Checking \xb7 ${a}`:null}if(a===b.TOOL_NAMES.memory_describe){let a=e(c,"path");return a?`Renaming \xb7 ${a}`:null}if(a===b.TOOL_NAMES.bash){let a=e(c,"description")||e(c,"command");return a?`On this computer \xb7 ${d(a,44)}`:null}if(a===b.TOOL_NAMES.load_skill){let a=e(c,"name");return a?`Reading the ${a} skill`:null}if(a===b.TOOL_NAMES.look_at){let a=e(c,"path");return a?`Looking at ${a.split("/").filter(Boolean).at(-1)??""}`:null}if(a===b.TOOL_NAMES.make_deck){let a=e(c,"title");return a?`Making the deck \xb7 ${d(a,44)}`:null}if(a===b.TOOL_NAMES.thread_start){let a=e(c,"bot");return a?`Handing this to ${a}`:"Handing this over"}if(a===b.TOOL_NAMES.web_search){let a=e(c,"query");return a?`Searching \xb7 ${a}`:null}if(a===b.TOOL_NAMES.routine){if("create"===c.action){let a=[e(c,"bot"),function(a){if("string"==typeof a.at&&a.at.length>=16){let[b,c]=a.at.split(" "),[d,e,f]=b.split("-").map(Number),g=new Date(d,e-1,f);if(g.toDateString()===new Date().toDateString())return`once at ${c}`;let h=g.toLocaleDateString("en-US",{month:"short",day:"numeric"});return`once, ${h} ${c}`}return"string"==typeof a.time&&a.time?`daily at ${a.time}`:"number"==typeof a.everyHours?`every ${a.everyHours} hours`:null}(c)].filter(Boolean).join(", ");return a?`Setting a routine \xb7 ${a}`:"Setting a routine"}return"change"===c.action?"Changing a routine":"delete"===c.action?"Deleting a routine":null}let g=e(c,"thread");return a===b.TOOL_NAMES.thread_tell?f?`Telling ${f}`:"Passing that on":a===b.TOOL_NAMES.thread_answer?f?`Answering ${f}`:"Answering that":a===b.TOOL_NAMES.thread_cancel?g?`Stopping ${g}`:"Stopping that":a===b.TOOL_NAMES.thread_seen?g?`Marking ${g} as read`:"Marking that as read":a===b.TOOL_NAMES.thread_show?g?`Opening ${g}`:"Opening that":a===b.TOOL_NAMES.thread_status?g&&"all"!==g.toLowerCase()?`Checking on ${g}`:"Checking on the work":null}(a,j,h))??c[a]??((i=a.indexOf("__"))<=0?null:`Reaching ${a.slice(0,i).replace(/[-_]/g," ")}`)}])},926919,a=>{"use strict";var b=a.i(572131),c=a.i(767561),d=a.i(313237),e=a.i(759497),f=a.i(405050);let g=(0,f.createServerReference)("7f3925a2a0d63922470784ab5cb32d5cc91c1623ed",f.callServer,void 0,f.findSourceMapURL,"seedLiveSettingsAction"),h=(0,f.createServerReference)("7fb6d28b25bd7f622c3369c13d03bf762d02acb340",f.callServer,void 0,f.findSourceMapURL,"setLiveSettingsAction");var i=a.i(359006);a.s(["useLiveSettings",0,function(){let{data:a}=(0,e.useServerRoute)(c.queryKey.thursdaySettings),[f]=(0,d.useServerAction)(h,{onOk:()=>(0,e.revalidate)(c.queryKey.thursdaySettings)}),j=(0,b.useRef)(a);j.current=a;let k=(0,b.useCallback)(a=>{let b=j.current;b&&f({...b,...a})},[f]);return function(){let a=(0,i.useThursdayStore)(a=>a.carried),f=(0,i.useThursdayStore)(a=>a.carriedDone),[h]=(0,d.useServerAction)(g,{onOk:a=>{a&&(0,e.revalidate)(c.queryKey.thursdaySettings)},errorMessage:!1});(0,b.useEffect)(()=>{a&&(f(),h(a))},[a,f,h])}(),{settings:a,patch:k}}],926919)}];
1
+ module.exports=[249049,a=>{"use strict";var b=a.i(187924),c=a.i(823319),d=a.i(752562),e=a.i(474215),f=a.i(572131),g=a.i(767561),h=a.i(340695),i=a.i(205522),j=a.i(287702),k=a.i(379630),l=a.i(96340),m=a.i(61876),n=a.i(313237),o=a.i(759497),p=a.i(497895),q=a.i(906548),r=a.i(478978);function s({provider:a,saved:c,autoFocus:d,dense:e,plain:f,value:g,ready:h,saving:i,onValue:j,onSubmit:l}){return(0,b.jsxs)("div",{className:"space-y-2",children:[!f&&(0,b.jsxs)("span",{className:"flex items-center gap-2 px-0.5 text-muted-foreground",children:[(0,b.jsx)(k.ProviderIcon,{provider:a.id,className:"size-4 shrink-0"}),(0,b.jsx)("span",{className:(0,p.cn)("font-mono",e?"text-[11px]":"text-[12.5px]"),children:a.label})]}),(0,b.jsx)(u,{provider:a,saved:c,autoFocus:d,dense:e,mark:f,value:g,ready:h,saving:i,onValue:j,onSubmit:l})]})}let t=a=>a?.replace(/…$/,"")??"";function u({provider:a,saved:c,autoFocus:e,dense:f,mark:g,value:j,ready:l,saving:n,onValue:o,onSubmit:q}){var r;let s,v=(r=a.id,s=t(m.TEXT_MODEL_PROVIDERS[r].keyLooks),Object.entries(m.TEXT_MODEL_PROVIDERS).flatMap(([a,b])=>{let c=t(b.keyLooks);return a!==r&&c&&!s.startsWith(c)?[c]:[]})).some(a=>j.trim().startsWith(a));return(0,b.jsxs)("form",{onSubmit:a=>{a.preventDefault(),q()},className:(0,p.cn)("flex items-center gap-3 rounded-2xl border bg-muted/40 px-4 transition-colors",f?"h-11 rounded-xl px-3":"h-14",c||l?"border-foreground bg-transparent":"border-border"),children:[g&&(0,b.jsx)(k.ProviderIcon,{provider:a.id,className:"size-4 shrink-0 text-muted-foreground"}),(0,b.jsx)(i.Input,{autoFocus:e,type:"password","aria-label":"OpenAI API key",autoComplete:"off",value:j,spellCheck:!1,placeholder:c?"Replace it":"sk-…",onChange:a=>o(a.target.value),className:(0,p.cn)("min-w-0 flex-1 border-0 bg-transparent px-0 font-mono shadow-none focus-visible:ring-0 dark:bg-transparent",f?"h-7 text-[13px]":"h-9 text-[15px]")}),j?(0,b.jsx)(h.Button,{type:"submit",size:"sm",variant:v?"outline":"default",loading:n,disabled:!l,className:(0,p.cn)("shrink-0",f?"h-7 px-3":"h-9 px-4"),children:v?`Not ${a.label}?`:"Save"}):c&&(0,b.jsx)("span",{className:(0,p.cn)("grid shrink-0 animate-in place-items-center rounded-full bg-foreground text-background zoom-in-50 duration-300",f?"size-5":"size-7"),children:(0,b.jsx)(d.Check,{className:f?"size-3":"size-4"})})]})}a.s(["GetKeyLink",0,function(){let a=m.TEXT_MODEL_PROVIDERS[l.LIVE_PROVIDER.id].keysAt;return a?(0,b.jsxs)("a",{href:a,target:"_blank",rel:"noreferrer",className:"flex items-center gap-2.5 text-[13px] font-medium text-foreground no-underline",children:[(0,b.jsxs)("span",{className:"flex h-7.5 shrink-0 items-center gap-1.5 rounded-full bg-muted px-3.5 whitespace-nowrap transition-colors hover:bg-accent",children:["Get a key",(0,b.jsx)(c.ArrowUpRight,{className:"size-3.5"})]}),(0,b.jsx)("span",{className:"truncate font-mono text-[11px] font-normal text-muted-foreground/70",children:a.replace(/^https:\/\//,"")})]}):null},"KeyInput",0,u,"VoiceKeys",0,function({ref:a,autoFocus:c,dense:d=!1,plain:i=!1,onCancel:k,onSaved:m,className:t}){let{data:u}=(0,o.useServerRoute)(g.queryKey.config),[v,w]=(0,f.useState)({}),[x,y]=(0,f.useState)(null),[z,A]=(0,f.useState)(null),[B]=(0,n.useServerAction)(q.setConfigAction,{errorMessage:!1,onError:a=>A(a??"That key was not saved."),onOk:()=>{(0,o.revalidate)(g.queryKey.config),(0,o.revalidate)(g.queryKey.llmModel)}}),C=a=>(v[a]?.trim().length??0)>=j.KEY_MIN,D=async a=>{let b=a.apiKeyName;if(!C(b)||x)return!1;A(null),y(b);try{return await B(b,v[b]),w(a=>({...a,[b]:""})),m?.(a.id),!0}catch{return!1}finally{y(null)}};return(0,f.useImperativeHandle)(a,()=>({pending:()=>C(l.LIVE_PROVIDER.apiKeyName),flush:async()=>!C(l.LIVE_PROVIDER.apiKeyName)||D(l.LIVE_PROVIDER)})),(0,b.jsxs)("div",{className:(0,p.cn)("w-full",d?"space-y-2":"space-y-4",t),children:[d&&!i&&(0,b.jsxs)("div",{className:"flex h-6 items-center justify-between gap-2",children:[(0,b.jsx)("span",{className:"px-0.5 font-mono text-[11px] text-muted-foreground",children:"Voice key"}),k&&(0,b.jsx)(h.Button,{type:"button",size:"icon",variant:"ghost","aria-label":"Not now",onClick:k,className:"-my-1 size-6",children:(0,b.jsx)(e.X,{className:"size-3.5"})})]}),(0,b.jsx)(s,{provider:l.LIVE_PROVIDER,saved:(0,r.isConfigSet)(u,l.LIVE_PROVIDER.apiKeyName),autoFocus:c,dense:d,plain:i,value:v[l.LIVE_PROVIDER.apiKeyName]??"",ready:C(l.LIVE_PROVIDER.apiKeyName),saving:x===l.LIVE_PROVIDER.apiKeyName,onValue:a=>{A(null),w(b=>({...b,[l.LIVE_PROVIDER.apiKeyName]:a}))},onSubmit:()=>void D(l.LIVE_PROVIDER)}),z&&(0,b.jsx)("p",{className:(0,p.cn)("px-0.5 leading-5 break-words",d?"text-xs":"text-center text-[13px]",p.WAITING_INK),children:z}),!i&&(0,b.jsx)("p",{className:(0,p.cn)("px-0.5 font-mono text-muted-foreground",d?"text-[11px]":"pt-1 text-center text-[12.5px]"),children:d?"Live voice and reasoning share this OpenAI API key.":"Live uses an OpenAI API key, billed separately from ChatGPT. Stored on this machine, in this app's database."})]})}])},590513,510072,661779,539341,a=>{"use strict";var b=a.i(187924),c=a.i(572131),d=a.i(287702),e=a.i(483253),f=a.i(647509);function g(a,b,c){let d=(0|a)*0x165667b1+(0|b)*0x27d4eb2f+(0|c)*0x4bf19f61;return(((d=Math.imul(d^d>>>13,0x4bf19f61))^d>>>16)>>>0)/0x100000000}let h=(a,b,c)=>a+(b-a)*c;function i(a,b,c){let d=Math.floor(a),e=Math.floor(b),f=Math.floor(c),i=a-d,j=b-e,k=c-f,l=i*i*(3-2*i),m=j*j*(3-2*j),n=h(g(d,e,f),g(d+1,e,f),l),o=h(g(d,e+1,f),g(d+1,e+1,f),l),p=h(g(d,e,f+1),g(d+1,e,f+1),l),q=h(g(d,e+1,f+1),g(d+1,e+1,f+1),l);return h(h(n,o,m),h(p,q,m),k*k*(3-2*k))}function j(a,b,c,d=3){let e=0,f=.5,g=0;for(let h=0;h<d;h++)e+=f*i(a,b,c),g+=f,a*=2.03,b*=2.03,c*=1.97,f*=.5;return e/g}function k(a,b,c,d=4){let e=j(a,b,c,2),f=j(a+5.2,b+1.3,c+2.8,2);return j(a+d*e,b+d*f,c,3)}function l(a,b=0){let c=9.2*j(.1*a+3.7*b,3.1+b,1.4,2);return{x:Math.cos(c),y:Math.sin(c),g:.38+.62*Math.max(0,Math.min(1,(j(.11*a+5.3*b,7.7,2.2,3)-.38)*3.2))**1.5}}a.s(["fbm",0,j,"ihash",0,g,"vnoise",0,i,"warp",0,k,"windAt",0,l],510072);let m=2*Math.PI,n=(a,b,c)=>(0,f.smoothstep)(b,b+(c-b)*.3,a)*(1-(0,f.smoothstep)(c-(c-b)*.3,c,a)),o={x:0,y:0,rot:0,yaw:0,pitch:0,spin:0,axis:0,sx:1,sy:1,lidL:1,lidR:1,size:1,gx:0,gy:0},p=(()=>{let a=0;for(let b=0;b<5;b++)a+=Math.exp(-b/1.6);return Array.from({length:5},(b,c)=>Math.exp(-c/1.6)/a)})(),q={now:{wake:!0,sighs:!0,len:0,pose:()=>o},dust:{wake:!0,len:2.4,pose(a,b){let c=b?-1:1,d=.55*(0,f.smoothstep)(.16,.3,a)*Math.exp(-Math.max(0,a-.3)/.55),e=2.5*m*(a-.2),g=.3+.2*(0,f.smoothstep)(.05,.25,a)+.5*(0,f.smoothstep)(1.35,1.75,a),h=n(a,1.45,2.4);return{...o,yaw:c*d*Math.sin(e),x:.035*c*d*Math.sin(e-.5),rot:.03*c*d*Math.sin(e+.9),y:-.02*h,lidL:g,lidR:g,size:1+.06*h}},fx(a,b,c,d,e,g,h,i){let j=b?-1:1,k=1;for(let b=0;b<5;b++){let c=.2+(.25+.5*b)/2.5;k-=p[b]*(0,f.smoothstep)(c-.03,c+.1,a),a>=c&&g.thrown<=b&&(g.thrown=b+1,function(a,b,c,d){let e=a.head,f=Math.min(1.4,3.2*c),g=4+Math.round(6*f);for(let c=0;c<g;c++){let c=(Math.random()-.5)*1.6*d,g=b*Math.sqrt(Math.max(0,d*d-c*c))*(.1+.8*Math.random()),h=(230+170*Math.random())*(.55+.45*f),i=(Math.random()-.6)*90+c/d*50;for(let f=0;f<7;f++){let f=h*(.75+.5*Math.random());w(a,{...x,x:e.x*d+g+(Math.random()-.5)*24,y:e.y*d+c+(Math.random()-.5)*24,vx:b*f,vy:i+(Math.random()-.5)*50,life:1.3+.8*Math.random(),a:.55+.3*Math.random(),r0:4,r1:30+20*Math.random(),grow:.5,keep:.35,fall:45,curl:40,kind:2,hold:0,fadeP:1.5})}for(let f=0;f<3;f++)w(a,{...x,x:e.x*d+g,y:e.y*d+c,vx:b*h*(.8+.5*Math.random()),vy:i-40*Math.random(),life:.6+.4*Math.random(),a:.9,r0:1.5,r1:2.5,grow:1,keep:.4,fall:320,curl:0,kind:2,hold:0,fadeP:1})}}(d,j*(b%2?-1:1),p[b],i))}c.crust=Math.max(c.crust,a<0?(0,f.smoothstep)(-.8,-.3,a):Math.max(0,k))}},turn:{wake:!0,len:1.8,pose(a,b){let c=b?-1:1,d=m*(0,f.smoothstep)(-.6,.95,a),e=a>.95?-.1*Math.sin(Math.min(1,(a-.95)/.6)*Math.PI):0,g=(0,f.smoothstep)(0,.3,a);return{...o,spin:c*(d+e),axis:.22*c,y:-.02*n(a,.5,1.6),lidL:g,lidR:g}}},vape:{len:6.6,pose(a){let b=n(a,.2,1.7),c=(0,f.smoothstep)(1.7,2.3,a)*(1-(0,f.smoothstep)(5.2,6.4,a)),d=1-.35*b-.42*c;return{...o,pitch:.12*b-.08*c,y:-.02*b+.015*c,sx:1+.03*b,sy:1+.03*b,lidL:d,lidR:d}},fx(a,b,c,d,e,g,h,i){if(a<0||a>6.8)return;c.hush=Math.max(c.hush,.8*n(a,.2,2));let j=a>1.8&&a<5.4?(0,f.smoothstep)(1.8,2.2,a)*(.4+.6*Math.exp(-(a-1.8)/1.6))*(1-(0,f.smoothstep)(4.5,5.4,a)):0;j>0&&function(a,b,c,d,e,f){var g;let h,i,j,k,l,[m,n]=(g=.55*f,i=Math.cos((h=a.head).rot),j=Math.sin(h.rot),k=0*h.sx,l=g*h.sy,[h.x*f+k*i-l*j,h.y*f+k*j+l*i]),o=.88*b.field;for(c.owed+=110*d*e;c.owed>=1;){c.owed-=1;let b=Math.PI/2+(Math.random()-.5)*1.6,e=165*(.6+.4*d)*(.7+.6*Math.random());w(a,{x:m+(Math.random()-.5)*26,y:n+(Math.random()-.5)*10,vx:Math.cos(b)*e,vy:Math.sin(b)*e,life:5+2.5*Math.random(),a:.75,r0:10,r1:96*(.7+.6*Math.random()),grow:1.6,keep:.55,fall:10,rise:30,riseT:3.6,curl:85,splay:55,wall:o,home:o*Math.random()**.85*.92,peel:.1+1.0999999999999999*Math.random(),side:0,hitAt:-1,peeled:!1,kind:1,hold:3,fadeP:2.4})}}(d,e,g,j,h,i)}},look:{len:2.8,pose(a,b){let c=b?-1:1,d=n(a,.45,1.35),e=n(a,1.45,2.45);return{...o,yaw:c*(-.42*d+.42*e),gx:c*(-.08*d+.08*e),x:c*(-.03*d+.03*e),rot:c*(-.03*d+.03*e)}}},wink:{len:2,pose(a,b){let c=n(a,.8,1.35),d=.08*n(a,.7,1.55);return b?{...o,lidL:1-c,rot:-d}:{...o,lidR:1-c,rot:d}}},sleepy:{len:3.2,hold:!0,pose(a){let b=n(a,1.5,1.95),c=.8*(0,f.smoothstep)(.1,1.5,a)*(1-.8*b)+.2*(0,f.smoothstep)(1.95,3.1,a),d=1-.7*c;return{...o,y:.07*c,rot:.1*c,gy:.05*c,lidL:d,lidR:d}}},spin:{len:3,pose(a,b){let c=b?-1:1,d=-.25*n(a,0,.45)+m*(0,f.smoothstep)(.3,1.75,a),e=a>1.7?Math.exp(-(a-1.7)/.55)*(0,f.smoothstep)(1.7,1.85,a):0,g=1.5*m*(a-1.7),h=1-.3*e;return{...o,spin:c*d,axis:.62*c,x:.035*e*Math.sin(g),y:.022*e*Math.cos(g),rot:.07*e*Math.sin(g+.6),gx:.06*e*Math.sin(1.3*g),gy:.04*e*Math.cos(1.3*g),lidL:h,lidR:h}}}},r=Object.keys(q),s=r.filter(a=>q[a].wake),t=r.filter(a=>!q[a].wake),u=(a,b,c,d)=>a+(b-a)*(1-Math.exp(-d/c)),v=a=>Math.abs(a.x)+Math.abs(a.y)+Math.abs(a.rot)+Math.abs(a.yaw)+Math.abs(a.pitch)+Math.abs(a.spin)+Math.abs(a.sx-1)+Math.abs(a.sy-1)<1e-4;function w(a,b){a.parts.length>=2200||a.parts.push({...b,age:0,seed:60*Math.random()})}let x={rise:0,riseT:1,splay:0,wall:0,home:0,peel:0,side:0,hitAt:-1,peeled:!1},y={x:0,y:0},z={v:0,kind:0,hold:0,covers:!1},A=(a,b,c)=>a+(b-a)*c,B=(a,b,c)=>{let d,e=(d=(c-a)/(b-a))<0?0:d>1?1:d;return e*e*(3-2*e)};function C(a,b=!1,c=0){let d,e=b=>g(a,7*b+3,1),f=.5>e(3)?-1:1,h=(.26+.18*e(2))*f,i=[0,0],j=a=>[f*a*(.15+.07*e(9)),(e(10)-.5)*.07],k=a=>({ms:.62+.2*e(11),tilt:0,gaze:i,blink:[a,a+.22]});switch(b?[0,2,3,4][4*e(1)|0]:5*e(1)|0){case 0:d=[{ms:1.3+.9*e(4),tilt:0,gaze:i,snap:.01},{ms:1.4+.9*e(5),tilt:0,gaze:i},k(.12),{ms:1.2+.9*e(6),tilt:0,gaze:j(1),snap:.1},{ms:1.3+.9*e(7),tilt:0,gaze:i,snap:.12},{ms:.95,tilt:0,gaze:i,blink:[.1,.3],blink2:.5>e(8)?[.44,.64]:null},{ms:1.6+1.2*e(12),tilt:0,gaze:i}];break;case 1:d=[{ms:.9+.5*e(4),tilt:0,gaze:i,snap:.01},{ms:.8+.5*e(5),tilt:0,gaze:i},k(.1),{ms:.7+.6*e(6),tilt:0,gaze:i}];break;case 2:d=[{ms:1.2+.8*e(4),tilt:0,gaze:i,snap:.01},{ms:1.6+1.2*e(13),tilt:h,gaze:i,snap:.9},{ms:.8,tilt:h,gaze:i,blink:[.14,.36]},{ms:1.8+1.1*e(5),tilt:0,gaze:i,snap:.75},{ms:1.5+1.3*e(6),tilt:0,gaze:i}];break;case 3:d=[{ms:.9+.5*e(4),tilt:0,gaze:i,snap:.01},{ms:1.1+.7*e(5),tilt:0,gaze:j(1.1),snap:.09},{ms:1.4+.8*e(6),tilt:0,gaze:i,snap:.12},{ms:1,tilt:0,gaze:i,blink:[.08,.28],blink2:[.42,.62]},{ms:1.4+1.2*e(7),tilt:0,gaze:i}];break;default:d=[{ms:1.2+.7*e(4),tilt:0,gaze:i,snap:.01},{ms:1.2+.7*e(5),tilt:0,gaze:i},{ms:1+.6*e(6),tilt:0,gaze:j(1),snap:.09},{ms:.9+.5*e(7),tilt:0,gaze:j(-.85),snap:.09},{ms:1.2+.8*e(8),tilt:0,gaze:i,snap:.12},k(.12),{ms:1.3+ +e(12),tilt:0,gaze:i}]}let l=0;for(let a of d)l+=a.ms;for(let a=20;l<c;a+=2){let b=2.6+1.8*e(a);d.push({ms:b,tilt:0,gaze:i,blink:.7>e(a+1)?[.4,.62]:void 0}),l+=b}return{beats:d,total:l}}let D={gaze:[0,0],tilt:0,lid:1};var E=a.i(663390);let F=(a,b,c)=>a+(b-a)*c,G=(a,b,c,d)=>d<.5?a+(b-a)*d*2:b+(c-b)*(d-.5)*2;function H(a,b,c){return .58+.07*Math.sin(.35*c)+(j(.011*a+.04*c,.011*b-.03*c,.22*c,2)-.5)*.6}function I(){let a={face:0,hush:0,dim:0,ink:0,reach:0,few:0,narrow:0,hard:0,haze:0,sigh:{live:!1,t0:0,dir:Math.PI/2,seed:0,now:0,front:0},ways:{jumble:new Float32Array(257),reach:new Float32Array(257),gush:new Float32Array(257),gust:new Float32Array(257),lobe:new Float32Array(257)}};return J(a),a}function J(a){let b=F(.52,1,a.face);a.ink=F(1.52,2.5,a.face),a.reach=F(2.2,4,a.face),a.haze=F(.27,.57,a.face),a.few=G(4.2,1.9,1,b),a.narrow=G(.3,.17,.04,b),a.hard=G(2.6,2,1.25,b)}function K(a,b){return(0,f.smoothstep)(0,.05,a)*Math.max(.18,Math.exp(-Math.max(0,a-.5)/.3))*(.6+.8*j(5*a+b,1.7,2.9,2))}function L(a,b,c,d,e,g,h=!0){let i=a.sigh;h&&g>=0&&g<.3&&!i.live&&(i.live=!0,i.t0=b-g,i.dir=Math.PI/2+(.5>Math.random()?-1:1)*(.7+(Math.random()-.5)*.3),i.seed=50*Math.random());let k=(b-i.t0)*.65;i.live&&k>2.4&&(i.live=!1),i.now=i.live?K(k,i.seed)*(1-(0,f.smoothstep)(.855,2.4,k))*1.5*(0,f.smoothstep)(0,.25,k):0,i.front=.55+1.53*(1-Math.exp(-Math.max(0,k)/.6))+.18*Math.max(0,k),a.dim=Math.max(e,a.dim*Math.exp(-c/2.2));let l=g>=0?d*(0,f.smoothstep)(.65,.65+.2,g):0,m=l>a.face?2.05/2.3:.5;a.face+=(l-a.face)*(1-Math.exp(-c/m)),J(a);let n=a.ways;for(let a=0;a<=256;a++){let c=-Math.PI+a/256*Math.PI*2,d=Math.cos(c),e=Math.sin(c);n.jumble[a]=(j(2.2*d+11,2.2*e,.35*b,2)-.5)*220,n.reach[a]=Math.max(0,j(1.1*d+5,1.1*e,.12*b,2)-.22),n.gush[a]=(0,f.smoothstep)(.5,.78,j(1.6*d+3,1.6*e,.5*b,2)),n.gust[a]=.4+1.2*j(1.2*d+7,1.2*e,.4*b,2),i.live&&(n.lobe[a]=1.53*(.5+ +j(1.4*d+i.seed,1.4*e,.3*k,2)))}}function M(a,b){let c=(b+Math.PI)/(2*Math.PI)*256,d=Math.min(255,Math.max(0,Math.floor(c)));return a[d]+(a[d+1]-a[d])*(c-d)}function N(a,b,c,d,e,g,h){let i=a.px??a.dx,l=a.py??a.dy,m=a.sx??a.dx,n=a.sy??a.dy,o=.018*h.g*Math.min(1,a.dist/d)**2*d,p=Math.hypot(i-h.x*o,l-h.y*o),q=1-(0,f.smoothstep)(.55*d,d,p),r=q>0?(H(a.dx,a.dy,b)+c)*q:0;g.dim>.002&&(r*=1-.16*g.dim);let s=1-g.hush,t=Math.hypot(m-h.x*o,n-h.y*o);if(g.haze>0&&s>0&&t<1.32*d){let a=g.haze*s*(1-.39*g.dim)*(1-(0,f.smoothstep)(.9*d,1.32*d,t))*e;if(1.55*a>r){let c=a*(.45+1.1*k(.012*m+11,.012*n,.15*b,2));c>r&&(r=c)}}let u=.55+Math.max(0,.92*g.ink-.55)*(0,f.smoothstep)(.92*d,1.14*d,t);if(s>0&&u*e*s>r){let a=function(a,b,c,d,e,g,h,i,l){let m;if(e>d*(h.reach+.2+.54))return 0;let n=.087*i.g*e,o=a-i.x*n,p=b-i.y*n,q=Math.hypot(o,p)||1,r=Math.atan2(p,o),s=h.few/(1+.006*e),t=j(o/q*s,p/q*s,.008*(e-66*c-M(h.ways.jumble,r)),3),u=function(a,b){let c=a.sigh;if(!c.live||c.now<=.01)return 0;let d=b-c.dir;return d-=Math.round(d/(2*Math.PI))*Math.PI*2,c.now*(1-(0,f.smoothstep)(1.3608,3.024,Math.abs(d)))}(h,r),v=h.sigh.front,w=u>0?u*(1-(0,f.smoothstep)(v-.35,v+.05,e/d)):0,x=u>0?u*((m=v-1)<0?0:m>1?1:m):0,y=d*(1.05+(h.reach-1.05)*Math.min(1,2.4*M(h.ways.reach,r))+.54*x),z=(0,f.smoothstep)(.55*d,y,e),A=.4+h.narrow*z;if(1.2*t<=A)return 0;let B=t*(.8+.4*k(.02*a+3,.02*b,.3*c,2)),C=(3.2*Math.max(0,B-A))**h.hard;return C<=0?0:(C*=1+.9*M(h.ways.gush,r)+1.2*w,h.dim>.002&&(C*=1-.65*h.dim),Math.min(l,C*(1-z)**1.25*(.6+.65*(i.g*M(h.ways.gust,r)))*h.ink)*g)}(m,n,b,d,t,e,g,h,u)*s;a>r&&(r=a)}if(e<.98&&r>0){let b=k(.015*a.dx-7,.015*a.dy+3,11.4,2);r*=(0,f.smoothstep)(b-.34,b+.34,1.7*e-.24)}return r}function O(a,b,c,d){let e=d.sigh;if(!e.live)return 0;let g=(b-e.t0)*.65,h=a.dist/c-.55;if(h<=0)return 0;let i=Math.atan2(a.py??a.dy,a.px??a.dx)-e.dir;if(Math.abs(i-=Math.round(i/(2*Math.PI))*Math.PI*2)>3.141592653589793)return 0;let l=M(d.ways.lobe,i);if(h>l*(1-Math.exp(-g/.6))+.18*g)return 0;let m=-.6*Math.log(1-Math.min(h/l,.97));for(let a=0;a<3;a++){let a=Math.exp(-m/.6);m-=(l*(1-a)+.18*m-h)/(l*a/.6+.18)}let n=g-m;if(m<0||n<0||n>1.9)return 0;let o=K(n,e.seed),p=1-(0,f.smoothstep)(.855,2.4,g);if(o*p<.01)return 0;i+=(j(1.8*h,2.2*n,.3*b,2)-.5)*1.1*(.3+m);let q=Math.min(Math.PI,(.95+1.45*(1-Math.exp(-m/.45)))*1.8*(.55+.9*j(2.2*h+e.seed,1.7*n,3.3,2))),r=1-(0,f.smoothstep)(.55*q,q,Math.abs(i));if(r<=0)return 0;let s=1+.4*m,t=(3*Math.max(0,j(2.2*i/s+4,3*n+.6*h/s,5.1,3)-.32))**1.4,u=1-(0,f.smoothstep)(.15,.9,h)*(1-Math.min(1,.45+t)),v=1/(1+(h/.81)**2),w=(0,f.smoothstep)(.25,.65,k(.014*a.dx+e.seed,.014*a.dy,.9*n+.2*b,2)),x=1-.65*(0,f.smoothstep)(.1,.7,h)*(1-w);return Math.min(.95,H(a.dx,a.dy,b)*o*p*r*u*v*x*3.5)}a.s(["createSmoke",0,I,"restValue",0,N,"sighValue",0,O,"stepSmoke",0,L],661779);let P=(a,b,c)=>{let d,e=(d=(c-a)/(b-a))<0?0:d>1?1:d;return e*e*(3-2*e)},Q=[{letters:["0","1","7","4","9","2","8","3","5","6"],emoji:["🤍","🖤","⚪","⚫","☁️","🦢","🐧","🐼","🎱","🕊️"]},{letters:["/","\\","|","_","-","~","^","<",">","="],emoji:["🌑","🌒","🌓","🌔","🌕","🌖","🌗","🌘","🌙","🌚"]},{letters:["(",")","[","]","{","}",":",";","*","+"],emoji:["❄️","🫧","💧","🌊","🧊","🐳","🐟","🪸","🌌","🔮"]},{letters:[".",",","'","`",":",'"',";","·","*","^"],emoji:["🗿","💬","🖨️","📀","🗝️","🧷","📎","🖇️","🧮","🔭"]}];function R(a,b,c,d,e){let f=Math.floor(c/d);return T(a,b,c,f*d+.6+g(f,11,5)*d*.45,e*(.6+3.4*g(f,17,9)**2),f)}function S(a){let b=a;for(let a=0;a<400;a++,b++){let a=1+b%Q.length;if(.25>g(b,19,7)&&(2===a||3===a)&&.35>g(b,3,2))break}return b}function T(a,b,c,d,e,f){let h=c-d;if(h<0||h>e)return 0;let i=P(0,1.7+2.6*g(f,3,2),h),k=P(e-(1.5+2.8*g(f,4,3)),e,h),l=1+(4*g(f,19,7)|0);for(let c=0;c<l;c++){let d=(g(7*f+c,23,1)-.5)*300,e=(g(7*f+c,29,2)-.5)*300,h=a-d,l=b-e,m=Math.hypot(h,l),n=470*i*(.4+1.1*j(.011*h+f,.011*l,3.3*c,3));if(m>=n||k>.85*j(.016*h-4,.016*l+6,5.1*c+1,2)+.1)continue;let o=1-m/Math.max(1,n);if(!(j(.05*a+c,.05*b,2.7*f,2)>.95*o+.34))return 1+(f+c)%Q.length}return 0}a.s(["WASH_SETS",0,Q,"wakingSlot",0,S,"washAt",0,R,"washOnce",0,T],539341);let U=1e3/240,{fontSize:V,density:W}=d.ASCII_FACE,X=a=>`700 ${a}px ui-monospace,SFMono-Regular,Menlo,monospace`,Y=(a,b,c)=>X(a*(.5+.5*(0,f.emojiWeight)(b,c))),Z=[235,235,235];function $(a){let b=[[],[],[],[],[]],c=0;for(let d of Array.from(a.toUpperCase())){let a=f.LETTERS[d];if(a){if(b[0].length)for(let a of b)a.push(-1);a.forEach((a,d)=>{for(let e of a)b[d].push("#"===e?c:-1)})," "!==d&&c++}}return b}let _=$("ERROR");function aa(a,b,c,d,e){return a+(b-a)*Math.min(1,e/(b>a?c:d))}function ab(a,b,c,d,e,f){let g=Math.floor(b/(d*f)+a[0].length/2),h=Math.floor(c/(e*f)+a.length/2);return h<0||h>=a.length?-1:a[h][g]??-1}let ac=[...Q,{letters:["~","s","S","§","~","∫","s","≈","S","~"],emoji:["💨","☁️","🌫️","💨","☁️","🫧","💭","💨","☁️","🌫️"]},{letters:["*",":","'",".","*",",",":","`","*",";"],emoji:null}],ad=Q.length,ae={gap:1,size:1.1},af=a=>a<0?0:a>1?1:a;function ag(a,b,c,d){let e=a=>Math.max(1,Math.min(3,Math.floor(625.6/(a[0].length*b)),Math.floor(421.6/(a.length*c)))),f=$(d),g=3>e(f)?function(a){let b=Array.from(a.trim()),c=b.flatMap((a,b)=>" "===a?[b]:[]);if(!c.length)return null;let d=b.length/2,e=c.reduce((a,b)=>Math.abs(b-d)<Math.abs(a-d)?b:a),f=$(b.slice(0,e).join("")),g=$(b.slice(e+1).join(""));if(!f[0].length||!g[0].length)return null;let h=Math.max(-1,...f.flat())+1,i=Math.max(f[0].length,g[0].length),j=(a,b)=>{let c=Math.floor((i-a.length)/2);return[...Array(c).fill(-1),...a.map(a=>a<0?a:a+b),...Array(i-a.length-c).fill(-1)]},k=()=>Array(i).fill(-1);return[...f.map(a=>j(a,0)),k(),k(),...g.map(a=>j(a,h))]}(d):null,h=g&&e(g)>e(f)?g:f,i=e(h),j=0;for(let d of a)d.word=ab(h,d.dx,d.dy,b,c,i),j=Math.max(j,d.word+1);return j}a.s(["AsciiOrb",0,function({className:a,mode:g="idle",size:h=680,color:k=Z,getSpectrum:m,word:n=null,waking:p=!1}){let r=(0,c.useRef)(null),F=(0,c.useRef)(null),G=(0,c.useRef)([]),H=(0,c.useRef)(null),J=(0,c.useRef)({cur:[...k],target:k}),K=(0,c.useRef)(0),M=(0,c.useRef)(m);M.current=m;let P=(0,c.useRef)({phrase:0,bob:0,bobVel:0,amp:[,,,,].fill(0),phase:Array.from({length:4},(a,b)=>2.1*b),spin:0,rings:[]}),Q=(0,c.useRef)({mode:g,start:0}),$=(0,c.useRef)(performance.now()),ah=(0,c.useRef)(90*Math.random()).current,ai=(0,c.useRef)({scale:.3,lift:0,gather:0,comet:0,speech:0,err:0,word:0}),aj=(0,c.useRef)(null),ak=(0,c.useRef)({cw:1,ch:1}),al=(0,c.useRef)({script:null,from:0,until:0}),am=(0,c.useRef)(null),an=(0,c.useRef)(p);return(0,c.useEffect)(()=>{let a=r.current;if(!a)return;let b=.95*V/W,c=1.25*V/W,d=680/h,e=b*d,g=c*d,i=Math.max(1,Math.floor(625.6/(_[0].length*e)));K.current=h,ak.current={cw:e,ch:g};let j=[],k=Math.ceil(h/b),l=Math.ceil(h/c),m=new Int32Array(k*l).fill(-1);for(let a=0;a<l;a++)for(let l=0;l<k;l++){let n=l*b,o=a*c,p=(n-h/2)*d,q=(o-h/2)*d,r=Math.hypot(p,q),s=ab(_,p,q,e,g,i);s<0&&r>328||(m[a*k+l]=j.length,j.push({x:n+b/2,y:o+c/2,dx:p,dy:q,dist:r,angle:Math.atan2(q,p),cos:r>0?p/r:1,sin:r>0?q/r:0,seed:(0,f.hash)(l,a),grain:(0,f.hash)(5.7*l+19,2.3*a+53),gap:.05+.3*(0,f.hash)(7.3*l+11,3.1*a+5),speck:(0,f.hash)(4.1*l+23,6.3*a+41),letter:s,word:-1}))}G.current=j,am.current={cells:j,cols:k,rows:l,cw:e,ch:g,half:340,at:m,field:328},aj.current&&ag(j,e,g,aj.current.text),H.current={byLevel:Array.from({length:f.LEVELS},()=>new Int32Array(j.length)),inLevel:new Int32Array(f.LEVELS),glyph:Array(j.length),fast:new Float32Array(j.length),slow:new Float32Array(j.length),wasLevel:new Int8Array(j.length).fill(-9),turn:new Int32Array(j.length).fill(-9),pick:new Int32Array(j.length),pool:new Int8Array(j.length),poolFor:new Float32Array(j.length)};let n=Math.min(2,window.devicePixelRatio||1);a.width=h*n,a.height=h*n,a.style.width=`${h}px`,a.style.height=`${h}px`;let o=a.getContext("2d");return o&&(o.setTransform(n,0,0,n,0,0),o.textAlign="center",o.textBaseline="middle","emoji"===(0,E.faceGlyphs)()&&function(a,b,c){if(0===c.length)return;let d=new Set(f.EMOJI_POOL);for(let a of ac)for(let b of a.emoji??[])d.add(b);let e=f.LEVELS-1,g=[];for(let a=1;a<=e;a++)g.push(Y(b,a,e));for(let b of g){a.font=b;let e=0;for(let b of d){let d=c[97*e++%c.length];a.fillText(b,d.x,d.y)}}a.clearRect(0,0,a.canvas.width,a.canvas.height)}(o,V,j),F.current=o),()=>{o?.clearRect(0,0,h,h),G.current=[],am.current=null,H.current=null}},[h]),(0,c.useEffect)(()=>{J.current.target=k},[k]),(0,c.useEffect)(()=>{Q.current.mode!==g&&(Q.current={mode:g,start:.001*performance.now()})},[g]),(0,c.useEffect)(()=>{if(!n||Date.now()-n.at>(n.hold??3.4)*1e3)return;let{cw:a,ch:b}=ak.current,c=performance.now();if(aj.current={text:n.text,start:.001*c,letters:ag(G.current,a,b,n.text),hold:n.hold??3.4},c-$.current<600){let a=ai.current;a.word=1,a.scale=0}},[n]),(0,c.useEffect)(()=>{let a,b=0,c=(0,e.createVoiceFollower)(),g="letters"===(0,E.faceGlyphs)(),h=g?.4:.264,k=I(),m=(a=new Float32Array(0),{deck:[],lastWake:null,head:{...o},smoke:{...o},want:{hush:0,crust:0},doing:{hush:0,crust:0},yawSlow:0,yawV:0,moved:!1,turned:!1,hx:a,hy:a,hz:a,px:a,py:a,pd:a,sx:a,sy:a,crust:0,crustSeed:40*Math.random(),crustWas:new Uint8Array(0),crusted:0,crustedNow:0,parts:[],live:!1,calm:1,thick:a,top:a,kind:new Int8Array(0),keep:a}),n={dx:0,dy:0,dist:0,px:0,py:0,sx:0,sy:0},p=Array(e.SPECTRUM_BANDS).fill(0),r=.001*performance.now(),W=0,Z=0,$=an.current?{slot:S(4e3*Math.random()|0)}:null;if($){let a=C(1e6*Math.random()|0,!0);al.current={script:a,from:.15,until:1.4+a.total+1.5}}let _=-1/0,ab=a=>{var e,E;if(a-_<1e3/d.ASCII_FACE.fps-U){b=requestAnimationFrame(ab);return}_=a;let I=.001*a,S=Math.min(.05,Math.max(0,I-r));r=I;let ag=F.current,ak=H.current,an=am.current;if(!ag||!ak||!an){b=requestAnimationFrame(ab);return}let ao=K.current;ak.inLevel.fill(0);let ap=M.current?.();if(!ap||ap.length<2){for(let a=0;a<p.length;a++){let b=.5*Math.sin(1.7*I+1.7*a)+.3*Math.sin(.8*I+.6*a)+.2*Math.sin(3*I+2.9*a);p[a]=.5*b+.5}ap=p}let aq=P.current,ar=Math.max(1,Math.round(60*S)),as=c.read(ap,S);aq.phrase=as.phrase,as.onset>0&&(aq.bobVel+=.06*as.onset,aq.rings.push({born:I,power:as.onset}),aq.rings.length>5&&aq.rings.shift());for(let a=0;a<ar;a++)aq.bobVel+=-(.012*aq.bob)-.09*aq.bobVel,aq.bob+=aq.bobVel;W+=S;for(let a=0;a<4;a++){let b=Math.floor(a*as.bands.length/4),c=Math.max(b+1,Math.floor((a+1)*as.bands.length/4)),d=0;for(let a=b;a<c;a++)d+=as.bands[a];d/=c-b;let e=.7+.6*(0,f.hash)((.9*I|0)+31*a,a);aq.amp[a]+=(d*e-aq.amp[a])*(1-(1-(.05+.02*a))**ar),aq.phase[a]+=S*(.9+.5*a)*(a%2?-1:1)}for(aq.spin+=S*(1.1+.9*aq.phrase);aq.rings.length>0&&I-aq.rings[0].born>.7;)aq.rings.shift();let at=Q.current,au=aj.current,av=au?I-au.start:0,aw=null!==au&&"error"!==at.mode&&av<au.hold+.08*au.letters+.45+.35+.9,ax=function(a,b){let c={scale:1,lift:0,gather:0,comet:0,speech:0,err:0,word:0};switch(a){case"idle":return c;case"connecting":{let a=1-Math.exp(-b/1.3);return{...c,scale:.45+.55*a,lift:.06*a,gather:1}}case"speaking":return{...c,speech:1};case"working":return{...c,scale:0,comet:1};case"ending":return{...c,scale:0};case"error":return{...c,scale:0,err:1}}}(at.mode,I-at.start);aw&&(ax.word=1,null!==au&&av<au.hold&&(ax.scale=0,ax.lift=0,ax.gather=0,ax.comet=0,ax.speech=0));let ay=ai.current;ay.scale=aa(ay.scale,ax.scale,.45,"ending"===at.mode?.4:.7,S),ay.lift=aa(ay.lift,ax.lift,.22,.4,S),ay.gather=aa(ay.gather,ax.gather,.3,.95,S),ay.comet=aa(ay.comet,ax.comet,.45,.9,S),ay.speech=aa(ay.speech,ax.speech,.5,.75,S),"error"===at.mode&&(ay.err<=.01&&(Z=0),Z+=S),ay.err=aa(ay.err,ax.err,.5,.6,S),ay.word=aa(ay.word,ax.word,.35,.5,S);let az=ay.err>.5,aA=ay.word>.5,aB=l(W,ah),aC=Math.exp(-S/.085),aD=Math.exp(-S/.8),aE=ay.scale*(1-ay.speech)*(1-ay.comet)*(1-ay.gather),aF=null,aG=0,aH=0,aI=0,aJ=-1,aK=null,aL=-1,aM=al.current,aN=aE>.4&&!az&&!aA,aO=(0,f.smoothstep)(.4,.75,aE)*(1-(0,f.smoothstep)(0,.5,ay.word));if(!aN&&void 0===aM.cut&&aM.script&&W>aM.from&&W<aM.until&&(aM.cut=W),aN&&void 0===aM.cut&&W>aM.until){let a=0===aM.until,b=function(a){let[b,c]=function(a){let b=a.deck;if(!b.length){for(let a of s)for(let c of t)b.push([a,c]);for(let c=0;c<200;c++){for(let a=b.length-1;a>0;a--){let c=Math.random()*(a+1)|0;[b[a],b[c]]=[b[c],b[a]]}let c=b[b.length-1][0]!==a.lastWake;for(let a=1;c&&a<b.length;a++)c=b[a][0]!==b[a-1][0];if(c)break}}let c=b.pop()??[s[0],t[0]];return a.lastWake=c[0],c}(a),d=11*(.75+.5*Math.random()),e=Math.max(Math.max(q[b].len,1.5)+.8,d-q[c].len),f=(a,b)=>({key:a,at:b,m:.5>Math.random(),thrown:0,owed:0});return{items:[f(b,0),f(c,e)],open:e+q[c].len+.8*!q[c].hold}}(m);aM.plan=b,aM.script=C(1e3*W|0,!1,b.open),aM.from=W+(a?.15:17*(.55+.9*Math.random())),aM.until=aM.from+1.25+Math.max(aM.script.total,b.open)+1.5}if(aN||void 0!==aM.cut){let a=W-aM.from,b=aM.until-aM.from;if(aM.script&&a>0){let c=(0,f.smoothstep)(.4,.75,aE),d=b-1.5-.3,e=void 0===aM.cut?af((a-d)/1.35):Math.max(af((a-d)/1.35),af((W-aM.cut)/.4));aG=(0,f.smoothstep)(.75,1.05,a);let g=function(a,b){let c=0,d=[0,0],e=0;for(let f of a.beats){let a=b-c;if(a<f.ms){let b=B(0,f.snap??.12,a),c=1;for(let b of[f.blink,f.blink2])!b||a<=b[0]||a>=b[1]||(c*=Math.abs(Math.cos(Math.PI*((a-b[0])/(b[1]-b[0]))))**.7);return{gaze:[A(d[0],f.gaze[0],b),A(d[1],f.gaze[1],b)],tilt:A(e,f.tilt,b),lid:c}}c+=f.ms,d=f.gaze,e=f.tilt}return D}(aM.script,Math.max(0,a-.875)),h=g.lid*(0,f.smoothstep)(.75,1.13,a),i=(1-e)**2.2;aF={...g,gaze:[g.gaze[0],g.gaze[1]+.04*(0,f.smoothstep)(0,.65,e)],lid:h*i,fall:h*(1-i)*.3999999999999999},aH=aG*(1-e)*c,aI=(0,f.smoothstep)(.1,.9,e)*c,c>.5&&(aJ=a-.75),void 0===aM.cut?(aK=aM.plan??null,aL=a-.75):e>=1&&(aM.until=W,aM.cut=void 0,aF=null,aG=0)}}let aP=170*1.08*Math.max(.02,ay.scale);aF=function(a,b,c,d,e,g,h,k,l){var m;m=b.cells.length,a.hx.length!==m&&(a.hx=new Float32Array(m),a.hy=new Float32Array(m),a.hz=new Float32Array(m),a.px=new Float32Array(m),a.py=new Float32Array(m),a.pd=new Float32Array(m),a.sx=new Float32Array(m),a.sy=new Float32Array(m),a.crustWas=new Uint8Array(m),a.thick=new Float32Array(m),a.top=new Float32Array(m),a.kind=new Int8Array(m),a.keep=new Float32Array(m),a.parts.length=0,a.live=!1),a.calm=l,a.crusted=a.crustedNow,a.crustedNow=0;let n=o,p=a.want;if(p.hush=0,p.crust=0,e&&g>-1){let i={...o},l=!1;for(let c of e.items){let e=q[c.key],f=g-c.at;if(e.fx?.(f,c.m,p,a,b,c,d,k),f<(e.wake?-.8:0)||!e.hold&&f>e.len+.6)continue;let h=e.pose(f,c.m);h!==o&&(l=!0,i.x+=h.x,i.y+=h.y,i.rot+=h.rot,i.yaw+=h.yaw,i.pitch+=h.pitch,i.spin+=h.spin,h.spin&&(i.axis=h.axis),i.gx+=h.gx,i.gy+=h.gy,i.sx*=h.sx,i.sy*=h.sy,i.lidL*=h.lidL,i.lidR*=h.lidR,i.size*=h.size)}if(h&&g>=0){let a;i.yaw+=.08*(j(.13*c+3.1,1.7,.4,2)-.5)*2*(0,f.smoothstep)(0,1.2,g)*((a=h.lid)<0?0:a>1?1:a),l=!0}l&&(n=i)}let r=a.doing;r.hush=u(r.hush,p.hush,.15,d),r.crust=u(r.crust,p.crust,.1,d),a.crust=r.crust;let s=a.head,t=s.yaw,w=n!==o?.045:l<.99?.3:.6;s.spin=n.spin+Math.atan2(Math.sin(s.spin-n.spin),Math.cos(s.spin-n.spin)),n.spin&&(s.axis=n.axis),s.x=u(s.x,n.x,w,d),s.y=u(s.y,n.y,w,d),s.rot=u(s.rot,n.rot,w,d),s.yaw=u(s.yaw,n.yaw,w,d),s.pitch=u(s.pitch,n.pitch,w,d),s.spin=u(s.spin,n.spin,w,d),s.sx=u(s.sx,n.sx,w,d),s.sy=u(s.sy,n.sy,w,d),a.yawV=(s.yaw-t)/Math.max(d,.001);let x=a.smoke;a.yawSlow=u(a.yawSlow,s.yaw,.3,d);let z=1-Math.exp(-d/.12);return(x.x+=(s.x+.25*Math.sin(a.yawSlow)-x.x)*z,x.y+=(s.y-x.y)*z,x.rot+=(s.rot-x.rot)*z,x.sx+=(s.sx-x.sx)*z,x.sy+=(s.sy-x.sy)*z,a.moved=!(v(s)&&v(x)),a.turned=Math.abs(s.yaw)+Math.abs(s.pitch)+Math.abs(s.spin)>1e-4,a.moved&&function(a,b,c){let d=b.cells,e=a.head;{let b=Math.cos(e.rot),f=Math.sin(e.rot),g=e.x*c,h=e.y*c,i=a.turned?function(a){let b=Math.cos(a.yaw),c=Math.sin(a.yaw),d=Math.cos(a.pitch),e=Math.sin(a.pitch),f=[b,c*e,c*d,0,d,-e,-c,b*e,b*d];if(!a.spin)return f;let g=Math.sin(a.axis),h=Math.cos(a.axis),i=Math.cos(a.spin),j=Math.sin(a.spin),k=1-i,l=[i+g*g*k,g*h*k,h*j,g*h*k,i+h*h*k,-g*j,-h*j,g*j,i],m=Array(9);for(let a=0;a<3;a++)for(let b=0;b<3;b++)m[3*a+b]=l[3*a]*f[b]+l[3*a+1]*f[3+b]+l[3*a+2]*f[6+b];return m}(e):null,j=c*c;for(let c=0;c<d.length;c++){let k=d[c].dx-g,l=d[c].dy-h,m=(k*b+l*f)/e.sx,n=(-k*f+l*b)/e.sy;if(a.px[c]=m,a.py[c]=n,a.pd[c]=Math.hypot(m,n),i){let b=Math.sqrt(Math.max(0,j-m*m-n*n));a.hx[c]=i[0]*m+i[3]*n+i[6]*b,a.hy[c]=i[1]*m+i[4]*n+i[7]*b,a.hz[c]=i[2]*m+i[5]*n+i[8]*b}else a.hx[c]=m,a.hy[c]=n,a.hz[c]=1}}let f=a.smoke,g=Math.cos(f.rot),h=Math.sin(f.rot),i=f.x*c,j=f.y*c;for(let b=0;b<d.length;b++){let c=d[b].dx-i,e=d[b].dy-j;a.sx[b]=(c*g+e*h)/f.sx,a.sy[b]=(-c*h+e*g)/f.sy}}(a,b,k),function(a,b,c,d){let e=a.parts;if(!e.length&&!a.live)return;a.calm<.02&&(e.length=0),a.thick.fill(0),a.top.fill(0),a.keep.fill(0);let g=0;for(let h of e){if(h.age+=d,h.age>=h.life)continue;let j=h.x,k=h.y,l=h.keep**d;h.vx*=l,h.vy*=l,h.vy+=(h.fall-h.rise*Math.min(1,h.age/h.riseT))*d,h.splay&&(h.vx+=(0===h.vx?h.seed%2<1?-1:1:Math.sign(h.vx))*h.splay*Math.min(1,h.age/.8)*d),h.wall&&function(a,b){let c=Math.hypot(a.x,a.y);if(c>.94*a.wall){let d=a.x/c,e=a.y/c,f=-e,g=a.vx*d+a.vy*e;if(!a.side){let b=a.vx*f+a.vy*d;a.side=Math.abs(b)>1?Math.sign(b):a.seed%2<1?-1:1}c>a.wall&&g>0&&(a.vx+=-g*d+a.side*g*.85*f,a.vy+=-g*e+a.side*g*.85*d);let h=120*Math.max(0,1-a.age/3.2);a.vx+=a.side*f*h*b,a.vy+=a.side*d*h*b,c>a.wall&&(a.x-=d*(c-a.wall)*.5,a.y-=e*(c-a.wall)*.5),a.hitAt<0&&(a.hitAt=a.age)}if(a.hitAt>=0&&a.age-a.hitAt>a.peel&&c>1){a.peeled||(a.peeled=!0,a.rise=Math.min(a.rise,14));let d=1.2*(c-a.home)*Math.min(1,(a.age-a.hitAt-a.peel)/.6);a.vx-=a.x/c*d*b,a.vy-=a.y/c*d*b}}(h,d);let m=0,n=0;if(h.curl){let a=h.curl*Math.min(1,h.age/.4);!function(a,b,c){let d=.011*a,e=.011*b,f=.3*c;y.x=(i(d,e+.25,f)-i(d,e-.25,f))/.5,y.y=-(i(d+.25,e,f)-i(d-.25,e,f))/.5}(h.x+7*h.seed,h.y,c),m=y.x*a,n=y.y*a}h.x+=(h.vx+m)*d,h.y+=(h.vy+n)*d;let o=h.a*(1-(h.age/h.life)**h.fadeP)*(0,f.smoothstep)(0,.06,h.age)*a.calm,p=h.r0+(h.r1-h.r0)*(1-Math.exp(-h.age/h.grow)),q=Math.min(4,Math.max(1,Math.ceil(Math.hypot(h.x-j,h.y-k)/7)));for(let c=1;c<=q;c++)!function(a,b,c,d,e,f,g,h){let i=Math.min(70,e+9),j=(c+b.half)/b.cw,k=(d+b.half)/b.ch,l=i/b.cw,m=i/b.ch,n=Math.max(0,Math.floor(j-l)),o=Math.min(b.cols-1,Math.ceil(j+l)),p=Math.max(0,Math.floor(k-m)),q=Math.min(b.rows-1,Math.ceil(k+m)),r=1/(i*i),s=b.cells;for(let e=p;e<=q;e++)for(let i=n;i<=o;i++){let j=b.at[e*b.cols+i];if(j<0)continue;let k=s[j].dx-c,l=s[j].dy-d,m=1-(k*k+l*l)*r;if(m<=0)continue;let n=f*m*m;a.thick[j]+=n-a.thick[j]*n,n>a.top[j]&&(a.top[j]=n,a.kind[j]=g),h>a.keep[j]&&(a.keep[j]=h)}}(a,b,j+(h.x-j)*c/q,k+(h.y-k)*c/q,p,o/Math.sqrt(q),h.kind,h.hold);e[g++]=h}e.length=g,a.live=g>0}(a,b,c,d),h&&n!==o)?{...h,gaze:[h.gaze[0]+n.gx,h.gaze[1]+n.gy],lids:[n.lidL,n.lidR],size:n.size}:h}(m,an,I,S,aK,aL,aF,aP,aO),k.hush=m.doing.hush,L(k,I,S,aH,aI,aJ,null===aK||null!==(e=aK)&&!0===q[e.items[0].key].sighs);let aQ=m.moved,aR=m.live||m.crust>.004||m.crusted>0,aS=G.current;for(let a=0;a<aS.length;a++){let b=aS[a];aQ?(n.dx=m.hx[a],n.dy=m.hy[a],n.px=m.px[a],n.py=m.py[a],n.dist=m.pd[a],n.sx=m.sx[a],n.sy=m.sy[a]):(n.dx=n.px=n.sx=b.dx,n.dy=n.py=n.sy=b.dy,n.dist=b.dist);let c=function(a,b,c,d,e,g,h,i,j,k){let l,m,n,o,p=h.scale>.02?N(b,c,h.lift,170*1.08*h.scale,h.scale,j,k)*(1-.6*h.speech):0;return h.gather>.01&&(p+=function(a,b,c){let d=170*c;if(a.speck>=.55||a.dist<.8*d)return 0;let e=Math.min(55,Math.floor((a.angle+Math.PI)/(2*Math.PI)*56)),g=(.7*b+(0,f.hash)(e,5.3))%1,h=a.dist-(d+(320-d)*(1-g)**1.25)-(a.grain-.5)*16;return Math.exp(-(h*h)/260)*(0,f.smoothstep)(0,.2,g)*(1-g)*1.1}(a,c,h.scale)*h.gather),h.comet>.01&&(p+=(m=Math.exp(-((l=a.dist-210)*l)/1100),m*Math.exp(-((o=Math.atan2(Math.sin(n=a.angle-3*c),Math.cos(n)))*o)/(o<0?2.8:.16))*h.comet)),h.speech>.01&&(p+=function(a,b,c,d){var e;let f=170+40*c.phrase+85*c.bob;for(let b=0;b<4;b++)f+=28*c.amp[b]*Math.sin((b+2)*(a.angle+c.spin)+c.phase[b]);let g=170+(((e=f)<=205?Math.max(110,e):205+30*Math.tanh((e-205)/30))-170)*d,h=(a.grain-.5)*20+20*Math.sin(5*a.angle+.9*b+6.283*a.seed)*.3,i=a.dist-(g+h),j=Math.exp(-(i*i)/800)+.5*Math.exp(-(a.dist*a.dist)/6e3);if(a.dist<g&&(j+=.22*(1-a.dist/g)**.6*(.75+.25*Math.sin(.05*a.dist-1.2*b))),a.speck<.22){let d=90*(.6+.9*a.grain);for(let e=0;e<c.rings.length;e++){let f=c.rings[e],h=b-f.born,i=a.dist-(g+6+h*d);j+=Math.exp(-(i*i)/500)*f.power*Math.max(0,1-h/.7)}}return j}(a,c,i,h.speech)*h.speech),h.err>.01&&(p+=function(a,b,c){if(a.letter<0)return 0;let d=c%9.2,e=.12*a.seed;return Math.max(0,(0,f.smoothstep)(0,1,(d-.65*a.letter-e)/.8)-(0,f.smoothstep)(0,1,(d-5.6-.5*a.letter-e)/.7))*(.86+.14*Math.sin(3.5*b+6*a.seed))}(a,c,d)*h.err),h.word>.01&&(p+=function(a,b,c,d){if(a.word<0)return 0;let e=.45*a.seed,g=(0,f.smoothstep)(0,1,(c-.11*a.word-e)/.3),h=c-d-.08*a.word-e,i=(0,f.smoothstep)(0,1,h/.35),j=.2*(1-(0,f.smoothstep)(0,1,(h-.35)/.9));return Math.max(g-i,g>.5?j*i:0)*((g>0&&g<1||i>0&&j>0)&&.35>(0,f.hash)(Math.floor(14*b)+97*a.seed,31*a.grain)?.25:1)*(.86+.14*Math.sin(3.5*b+6*a.seed))}(a,c,e,g)*h.word),p}(b,n,I,Z,av,au?.hold??3.4,ay,aq,k,aB);if(k.sigh.live){let a=O(n,I,aP,k)*ay.scale;a>c&&(c=a)}let d=!(az&&b.letter>=0||aA&&b.word>=0),e=0,l=0,o=!1;if(aR&&d){let b=function(a,b,c,d,e,g,h){let k=b.cells[c];if(z.v=d,z.kind=0,z.hold=0,z.covers=!1,a.crust>.004||a.crusted>0){let b=a.moved?a.hx[c]:k.dx,d=a.moved?a.hy[c]:k.dy,e=a.moved?a.pd[c]:k.dist,i=1-(0,f.smoothstep)(.92*g,1.1*g,e),l=!1;if(i>.05){let c=.12+.76*j(.022*b+a.crustSeed,.022*d,2.7,2);(l=a.crust>c)&&(z.v=.42*(.5+.9*j(.09*b,.09*d,5.5,2))*i*h,z.kind=2,z.hold=.15,a.crustedNow++)}a.crustWas[c]&&!l&&.06>Math.random()&&function(a,b,c){let d=Math.sqrt(Math.max(0,c*c-b.dist*b.dist)),e=Math.max(-260,Math.min(260,a.yawV*d*.55)),f=90+80*Math.random();w(a,{...x,x:b.dx,y:b.dy,vx:e+b.cos*f,vy:b.sin*f-30,life:1+.7*Math.random(),a:.45+.25*Math.random(),r0:3,r1:18+12*Math.random(),grow:.6,keep:.3,fall:45,curl:35,kind:2,hold:0,fadeP:1.5}),.35>Math.random()&&w(a,{...x,x:b.dx,y:b.dy,vx:e+b.cos*(120+80*Math.random()),vy:b.sin*f-50,life:.6+.4*Math.random(),a:.9,r0:1.5,r1:2.5,grow:1,keep:.4,fall:300,curl:0,kind:2,hold:0,fadeP:1})}(a,k,g),a.crustWas[c]=+!!l}if(a.live){let b=a.thick[c];if(b>.02){let d=a.kind[c],f=b*h*(.6+.8*i(.04*k.dx+.3*e,.04*k.dy-.2*e,.5*e)),g=.1+.3*k.grain;f>g?(z.v=2===d?.5*(1-Math.exp(-1.5*f)):.3+.62*Math.min(1,f),z.kind=d,z.hold=.12,f>.45&&2===d&&(z.covers=!0)):a.keep[c]>0&&f>.5*g&&(z.kind=d,z.hold=a.keep[c]*(.5+k.grain))}}return z}(m,an,a,c,I,aP,ay.scale);c=b.v,e=b.kind,l=b.hold,o=b.covers}d&&(c*=(.66+.72*b.grain)*(.8+.4*(0,f.hash)(Math.floor(.05*b.dx+.5*I),Math.floor(.05*b.dy-.3*I))))>.3&&(0,f.hash)(31.7*Math.floor(1.6*I),613*b.seed)>.992&&(c=Math.max(c,.9));let p=!d||e?0:W<42?$?T(b.dx,b.dy,W,1,2.9,$.slot):0:R(b.dx,b.dy,W,42,3.2);if(e?(ak.pool[a]=ad+e,ak.poolFor[a]=l):p?(ak.pool[a]=p,ak.poolFor[a]=.3+.9*b.grain):ak.poolFor[a]>0?(ak.poolFor[a]-=S,ak.poolFor[a]<=0&&(ak.pool[a]=0)):ak.pool[a]=0,aG>.03&&null!==aF&&d&&!o&&(E=a,!m.turned||m.pd[E]<.985*aP&&m.hz[E]>0)&&function(a,b,c,d,e,f){if(d<=.03||e.lid<=.02)return!1;let g=c/112,h=g*f.size*(e.size??1);for(let i of[-1,1]){let k=e.lid*(e.lids?e.lids[i<0?0:1]:1);if(k<=.02)continue;let l=a-(44*i*g*f.gap+e.gaze[0]*c),m=b-(-20*g+e.gaze[1]*c+(e.fall??0)*51*h/2),n=Math.cos(e.tilt),o=Math.sin(e.tilt),p=l*n-m*o,q=51*h*k,r=(-(l*o+m*n)+q/2)/q;if(!(r<=0||r>=1||Math.abs(p- - -(2*(1-r)*r*1)*h)>38*h/2*Math.sin(Math.PI*r)**.35)&&!(d<.99&&d<.88*j(.026*l+3,.026*m,7.7,2)+.06))return!0}return!1}(aQ?m.hx[a]:b.dx,aQ?m.hy[a]:b.dy,aP,aG,aF,ae)){ak.fast[a]=0,ak.slow[a]=0,ak.pool[a]=0;continue}let q=ak.fast[a]=c>ak.fast[a]*aC?c:ak.fast[a]*aC,r=ak.slow[a]=c>ak.slow[a]*aD?c:ak.slow[a]*aD;c=q>.52*r?q:.52*r,d&&c<b.gap+.05*Math.sin(.28*I+6.283*b.seed)&&(c=0);let s=(c=c<0?0:c>1?1:c)*(f.LEVELS-1)|0;if(0===s)continue;let t=W*h+7*b.seed|0;(t!==ak.turn[a]||s-ak.wasLevel[a]>=2||ak.wasLevel[a]-s>=2)&&(ak.turn[a]=t,ak.wasLevel[a]=s,ak.pick[a]=(997*b.seed|0)+t+s);let u=ak.pick[a],v=ak.pool[a]?ac[ak.pool[a]-1]:null,y=g?v?.letters??f.RAMP[s]:v?.emoji??f.EMOJI_POOL;ak.glyph[a]=y[(u%y.length+y.length)%y.length],ak.byLevel[s][ak.inLevel[s]++]=a}ag.clearRect(0,0,ao,ao);let aT=G.current,aU=f.LEVELS-1,aV=J.current;for(let a=0;a<3;a++)aV.cur[a]+=(aV.target[a]-aV.cur[a])*(1-.95**ar);ag.fillStyle=`rgb(${0|aV.cur[0]},${0|aV.cur[1]},${0|aV.cur[2]})`,g&&(ag.font=X(V));for(let a=1;a<=aU;a++){let b=ak.inLevel[a];if(0===b)continue;g?ag.globalAlpha=f.ALPHA_TOP*(a/aU):(ag.globalAlpha=(0,f.emojiAlpha)(a,aU),ag.font=Y(V,a,aU));let c=ak.byLevel[a];for(let a=0;a<b;a++){let b=aT[c[a]];ag.fillText(ak.glyph[c[a]],b.x,b.y)}}ag.globalAlpha=1,b=requestAnimationFrame(ab)};return b=requestAnimationFrame(ab),()=>cancelAnimationFrame(b)},[]),(0,b.jsx)("canvas",{ref:r,className:a,"aria-hidden":!0,style:{display:"block",pointerEvents:"none"}})},"CHURN_EMOJI",0,.264,"CHURN_LETTERS",0,.4,"DESIGN",0,680,"GLYPH_FONT",0,X,"REST_R",0,170*1.08,"TRAIL_FAST",0,.085],590513)},445432,a=>{"use strict";var b=a.i(187924),c=a.i(572131),d=a.i(590513),e=a.i(730357),f=a.i(497895);let g={ending:"ending",idle:"idle",connecting:"connecting",listening:"idle",speaking:"speaking",working:"working",delegating:"working"},h=[247,247,247],i=[10,10,10];function j({status:a,failed:c,word:f,size:k,getSpectrum:l,waking:m,className:n}){let o=(0,e.useIsDark)();return(0,b.jsx)(d.AsciiOrb,{mode:c?"error":g[a],word:f,size:k,color:o?h:i,getSpectrum:l,waking:m,className:n})}let k=(0,c.memo)(function({status:a="idle",covered:d=!1,className:e,...g}){let h=(0,c.useRef)(null),[i,k]=(0,c.useState)(null),[l,m]=(0,c.useState)(!1);return(0,c.useEffect)(()=>{let a=h.current;if(!a)return;let b=new ResizeObserver(([a])=>{let b=Math.round(a.contentRect.width);b>0&&k(b)});return b.observe(a),()=>b.disconnect()},[]),(0,c.useEffect)(()=>{let a=requestAnimationFrame(()=>m(!0));return()=>cancelAnimationFrame(a)},[]),(0,b.jsx)("div",{ref:h,className:(0,f.cn)("aspect-square transition-opacity duration-700 ease-out",l&&null!==i?"opacity-100":"opacity-0",e),children:null!==i&&!d&&(0,b.jsx)(j,{...g,status:a,size:i})})});a.s(["Face",0,k])},461512,a=>{"use strict";var b=a.i(702080),c=a.i(61876),d=a.i(249890);let e=[{id:"chatgpt",...c.TEXT_MODEL_PROVIDERS.chatgpt},{id:"openai",...c.TEXT_MODEL_PROVIDERS.openai}];b.default.object({id:b.default.string().min(1),text:b.default.string(),said:b.default.boolean()});let f="note",g=a=>a.type===`data-${f}`?a.data:null,h={min:3,max:32},i=b.default.object({enabled:b.default.boolean(),phrase:b.default.string().trim().min(h.min).max(h.max)}),j=b.default.object({enabled:b.default.boolean(),combo:b.default.string().trim().min(1).max(64)}),k=["off","waiting","any"],l=b.default.enum(k),m=["center","sides"],n=b.default.enum(m);b.default.object({id:b.default.string().min(1),role:b.default.enum(["user","assistant","tool"]),tool:b.default.string().nullish(),text:b.default.string(),seq:b.default.number().int().min(0),fragments:b.default.array(d.LiveFragmentSchema).nullish()}),b.default.object({id:b.default.string().min(1),text:b.default.string(),seq:b.default.number().int().min(0)}),a.s(["CALL_BACK_DEFAULT",0,"waiting","CALL_BACK_LABEL",0,{off:"Never",waiting:"When a job needs me",any:"Whenever a job ends"},"CALL_BACK_MODES",0,k,"CAPTION_VIEWS",0,m,"CallBackSchema",0,l,"CaptionViewSchema",0,n,"HOTKEY_DEFAULT",0,{enabled:!1,combo:"alt+shift+KeyT"},"HotkeySchema",0,j,"TEXT_CALL_NOTE",0,f,"WAKE_DEFAULT",0,{enabled:!1,phrase:"hey thursday"},"WAKE_PHRASE",0,h,"WakeSchema",0,i,"isEnglishPhrase",0,a=>/^[a-z0-9\s'.,!?-]+$/i.test(a.trim())&&/[a-z]/i.test(a),"noteOf",0,g,"notesIn",0,a=>a.flatMap(a=>a.parts.flatMap(a=>{let b=g(a);return b?[b]:[]})),"textCallRunsOn",0,a=>e.find(b=>a(b.apiKeyName))?.id??null])},359006,a=>{"use strict";let b,c;var d=a.i(156757),e=a.i(920226);let f=a=>b=>{try{let c=a(b);if(c instanceof Promise)return c;return{then:a=>f(a)(c),catch(a){return this}}}catch(a){return{then(a){return this},catch:b=>f(b)(a)}}};var g=a.i(96340),h=a.i(61876),i=a.i(461512);let j=d.z.object({wake:i.WakeSchema.catch(i.WAKE_DEFAULT),hotkey:i.HotkeySchema.catch(i.HOTKEY_DEFAULT),callBack:i.CallBackSchema.catch(i.CALL_BACK_DEFAULT),captionView:i.CaptionViewSchema.catch("sides"),textModel:h.textModelRefSchema.nullable().catch(null)}),k={wake:i.WAKE_DEFAULT,hotkey:i.HOTKEY_DEFAULT,callBack:i.CALL_BACK_DEFAULT,captionView:"sides",textModel:null},l=(0,e.create)()((b=a=>({...k,carried:null,patch:b=>a(b),carriedDone:()=>a({carried:null})}),c={name:"thursday.settings",version:2,migrate:(a,b)=>b<1&&a&&"object"==typeof a?{...a,webSearch:!0}:a,partialize:a=>({wake:a.wake,hotkey:a.hotkey,callBack:a.callBack,captionView:a.captionView,textModel:a.textModel}),merge:(a,b)=>{let c=j.safeParse(a),d=c.success?c.data:k;return{...b,...d,carried:function(a){if(!a||"object"!=typeof a)return null;let b=[...Object.keys(g.LiveSettingsSchema.shape),"voicePrompt","systemPrompt","model"].filter(b=>b in a);return b.length?Object.fromEntries(b.map(b=>[b,a[b]])):null}(a)}}},(a,d,e)=>{let g,h={storage:function(a){let b;try{b=a()}catch(a){return}return{getItem:a=>{var c;let d=a=>null===a?null:JSON.parse(a,void 0),e=null!=(c=b.getItem(a))?c:null;return e instanceof Promise?e.then(d):d(e)},setItem:(a,c)=>b.setItem(a,JSON.stringify(c,void 0)),removeItem:a=>b.removeItem(a)}}(()=>window.localStorage),partialize:a=>a,version:0,merge:(a,b)=>({...b,...a}),...c},i=!1,j=0,k=new Set,l=new Set,m=h.storage;if(!m)return b((...b)=>{console.warn(`[zustand persist middleware] Unable to update item '${h.name}', the given storage is currently unavailable.`),a(...b)});let n=()=>{let a=h.partialize({...d()});return m.setItem(h.name,{state:a,version:h.version})},o=e.setState;e.setState=(a,b)=>(o(a,b),n());let p=b((...b)=>(a(...b),n()));e.getInitialState=()=>p;let q=()=>{var b,c;if(!m)return;let e=++j;i=!1,k.forEach(a=>{var b;return a(null!=(b=d())?b:p)});let o=(null==(c=h.onRehydrateStorage)?void 0:c.call(h,null!=(b=d())?b:p))||void 0;return f(m.getItem.bind(m))(h.name).then(a=>{if(a)if("number"!=typeof a.version||a.version===h.version)return[!1,a.state];else{if(h.migrate){let b=h.migrate(a.state,a.version);return b instanceof Promise?b.then(a=>[!0,a]):[!0,b]}console.error("State loaded from storage couldn't be migrated since no migrate function was provided")}return[!1,void 0]}).then(b=>{var c;if(e!==j)return;let[f,i]=b;if(a(g=h.merge(i,null!=(c=d())?c:p),!0),f)return n()}).then(()=>{e===j&&(null==o||o(d(),void 0),g=d(),i=!0,l.forEach(a=>a(g)))}).catch(a=>{e===j&&(null==o||o(void 0,a))})};return e.persist={setOptions:a=>{h={...h,...a},a.storage&&(m=a.storage)},clearStorage:()=>{++j,null==m||m.removeItem(h.name)},getOptions:()=>h,rehydrate:()=>q(),hasHydrated:()=>i,onHydrate:a=>(k.add(a),()=>{k.delete(a)}),onFinishHydration:a=>(l.add(a),()=>{l.delete(a)})},h.skipHydration||q(),g||p}));a.s(["useThursdayStore",0,l],359006)},27418,a=>{"use strict";var b=a.i(421042);let c={[b.TOOL_NAMES.memory_recall]:"Checking your notes",[b.TOOL_NAMES.memory_create]:"Starting a note",[b.TOOL_NAMES.memory_remember]:"Noting that down",[b.TOOL_NAMES.memory_describe]:"Renaming a note",[b.TOOL_NAMES.memory_forget]:"Forgetting that",[b.TOOL_NAMES.bash]:"Doing it on this computer",[b.TOOL_NAMES.web_search]:"Searching the web",[b.TOOL_NAMES.load_skill]:"Reading how to do this",[b.TOOL_NAMES.look_at]:"Looking at the picture",[b.TOOL_NAMES.make_deck]:"Making the deck",[b.TOOL_NAMES.end_call]:"Ending the call",[b.TOOL_NAMES.routine]:"Checking your routines"};function d(a,b=28){let c=a.trim().replace(/\s+/g," ");if(c.length<=b)return c;let e=c.slice(0,b),f=e.lastIndexOf(" ");return`${(f>b/2?e.slice(0,f):e).trimEnd()}…`}let e=(a,b)=>"string"==typeof a[b]?a[b].trim():"";function f(a){if(!a)return null;try{let b=JSON.parse(a);if(b&&"object"==typeof b&&!Array.isArray(b))return b}catch{}return null}let g=new Set([b.TOOL_NAMES.thread_tell,b.TOOL_NAMES.thread_answer,b.TOOL_NAMES.thread_status,b.TOOL_NAMES.thread_show,b.TOOL_NAMES.thread_cancel,b.TOOL_NAMES.thread_seen]);function h(a){return Array.isArray(a)?a.flatMap(a=>a&&"object"==typeof a&&"string"==typeof a.url?[a]:[]):[]}a.s(["reasoningTitle",0,function(a){return/^\s*\*\*(.+?)\*\*/.exec(a)?.[1]?.trim()||null},"searchOf",0,function(a,c){if(a!==b.TOOL_NAMES.web_search)return null;try{let a=JSON.parse(c);return{query:"string"==typeof a.query?a.query:null,sources:h(a.sources)}}catch{return null}},"searchQueryOf",0,function(a){let b=f(a)?.query;return"string"==typeof b&&b.trim()?b.trim():null},"searchSourcesOf",0,function(a){return h(f(a)?.sources)},"startedLabel",0,function(a,c){if(a!==b.TOOL_NAMES.thread_start)return null;try{let a=JSON.parse(c);return"string"==typeof a.label?a.label:null}catch{return null}},"toolBot",0,function(a,c,d,e){let h=f(c);if(!h)return null;if(a===b.TOOL_NAMES.thread_start)return"string"==typeof h.bot&&h.bot.trim()?h.bot.trim():null;if(!g.has(a))return null;let i="string"==typeof h.thread?h.thread.trim():"";if(!i||"all"===i.toLowerCase())return null;let j=i.toLowerCase(),k=d?.find(a=>a.id===i)??d?.find(a=>a.label.toLowerCase()===j);return k?a===b.TOOL_NAMES.thread_answer?k.room.questions[0]?.bot??k.bot:k.bot:function(a){let b=f(a);if(!b)return null;if("string"==typeof b.bot&&b.bot.trim())return b.bot.trim();let c=b.answered;return"string"==typeof c?.bot?c.bot:null}(e)},"toolLine",0,function(a,g,h=null){let i;if(a===b.TOOL_NAMES.tool_search||a===b.TOOL_NAMES.tool_call)return"Reaching a connected service";let j=f(g);return(j&&function(a,c,f){if(a===b.TOOL_NAMES.memory_remember||a===b.TOOL_NAMES.memory_create){let f=e(c,"path"),g=function(a){if(!Array.isArray(a.facts))return null;let b=a.facts.map(a=>a&&"object"==typeof a&&"string"==typeof a.text?a.text.trim():"").filter(Boolean);return b.length?{text:b[0],more:b.length-1}:null}(c),h=a===b.TOOL_NAMES.memory_create?"Starting":"Noting";if(!f)return null;if(!g)return`${h} ${f}`;let i=g.more>0?` (+${g.more})`:"";return`${h} ${f}: ${d(g.text)}${i}`}if(a===b.TOOL_NAMES.memory_recall){let a=e(c,"path");return a?`Checking \xb7 ${a}`:null}if(a===b.TOOL_NAMES.memory_describe){let a=e(c,"path");return a?`Renaming \xb7 ${a}`:null}if(a===b.TOOL_NAMES.bash){let a=e(c,"description")||e(c,"command");return a?`On this computer \xb7 ${d(a,44)}`:null}if(a===b.TOOL_NAMES.load_skill){let a=e(c,"name");return a?`Reading the ${a} skill`:null}if(a===b.TOOL_NAMES.look_at){let a=e(c,"path");return a?`Looking at ${a.split("/").filter(Boolean).at(-1)??""}`:null}if(a===b.TOOL_NAMES.make_deck){let a=e(c,"title");return a?`Making the deck \xb7 ${d(a,44)}`:null}if(a===b.TOOL_NAMES.thread_start){let a=e(c,"bot");return a?`Handing this to ${a}`:"Handing this over"}if(a===b.TOOL_NAMES.web_search){let a=e(c,"query");return a?`Searching \xb7 ${a}`:null}if(a===b.TOOL_NAMES.routine){if("create"===c.action){let a=[e(c,"bot"),function(a){if("string"==typeof a.at&&a.at.length>=16){let[b,c]=a.at.split(" "),[d,e,f]=b.split("-").map(Number),g=new Date(d,e-1,f);if(g.toDateString()===new Date().toDateString())return`once at ${c}`;let h=g.toLocaleDateString("en-US",{month:"short",day:"numeric"});return`once, ${h} ${c}`}return"string"==typeof a.time&&a.time?`daily at ${a.time}`:"number"==typeof a.everyHours?`every ${a.everyHours} hours`:null}(c)].filter(Boolean).join(", ");return a?`Setting a routine \xb7 ${a}`:"Setting a routine"}return"change"===c.action?"Changing a routine":"delete"===c.action?"Deleting a routine":null}let g=e(c,"thread");return a===b.TOOL_NAMES.thread_tell?f?`Telling ${f}`:"Passing that on":a===b.TOOL_NAMES.thread_answer?f?`Answering ${f}`:"Answering that":a===b.TOOL_NAMES.thread_cancel?g?`Stopping ${g}`:"Stopping that":a===b.TOOL_NAMES.thread_seen?g?`Marking ${g} as read`:"Marking that as read":a===b.TOOL_NAMES.thread_show?g?`Opening ${g}`:"Opening that":a===b.TOOL_NAMES.thread_status?g&&"all"!==g.toLowerCase()?`Checking on ${g}`:"Checking on the work":null}(a,j,h))??c[a]??((i=a.indexOf("__"))<=0?null:`Reaching ${a.slice(0,i).replace(/[-_]/g," ")}`)}])},926919,a=>{"use strict";var b=a.i(572131),c=a.i(767561),d=a.i(313237),e=a.i(759497),f=a.i(405050);let g=(0,f.createServerReference)("7fc4b7fc44653b25eef30f5c59d9590228dc3a2057",f.callServer,void 0,f.findSourceMapURL,"seedLiveSettingsAction"),h=(0,f.createServerReference)("7f2719065090e87b08c2c87a90e9b8abf6d9d029cd",f.callServer,void 0,f.findSourceMapURL,"setLiveSettingsAction");var i=a.i(359006);a.s(["useLiveSettings",0,function(){let{data:a}=(0,e.useServerRoute)(c.queryKey.thursdaySettings),[f]=(0,d.useServerAction)(h,{onOk:()=>(0,e.revalidate)(c.queryKey.thursdaySettings)}),j=(0,b.useCallback)(a=>void f(a),[f]);return function(){let a=(0,i.useThursdayStore)(a=>a.carried),f=(0,i.useThursdayStore)(a=>a.carriedDone),[h]=(0,d.useServerAction)(g,{onOk:a=>{a&&(0,e.revalidate)(c.queryKey.thursdaySettings)},errorMessage:!1});(0,b.useEffect)(()=>{a&&(f(),h(a))},[a,f,h])}(),{settings:a,patch:j}}],926919)}];
2
2
 
3
3
  //# sourceMappingURL=features_0796o8r._.js.map
@@ -0,0 +1,3 @@
1
+ module.exports=[82951,a=>a.a(async(b,c)=>{try{var d=a.i(187924),e=a.i(141146),f=a.i(875160),g=a.i(272944),h=a.i(19895),i=a.i(951675),j=a.i(474215),k=a.i(572131),l=a.i(767561),m=a.i(340695),n=a.i(965733),o=a.i(676504),p=a.i(446181),q=a.i(545097),r=a.i(950463),s=a.i(287702),t=a.i(3376),u=a.i(500747),v=a.i(120749),w=a.i(411509),x=a.i(913834),y=a.i(42380),z=a.i(8468),A=a.i(181809),B=a.i(135432),C=a.i(156819),D=a.i(619477),E=a.i(199169),F=a.i(313237),G=a.i(862966),H=a.i(759497),I=a.i(497895),J=a.i(988422),K=b([z,A,J]);[z,A,J]=K.then?(await K)():K;let R="w-36";function L({thread:a,bots:b,open:c,onOpen:g,onStop:h,onDelete:i}){let j="running"===a.status,l=(0,k.useMemo)(()=>(0,B.threadFromRow)(a,b),[a,b]),m=function(a){let b=a.room.questions[0];if(b)return{text:(0,I.plainText)(b.text),tone:I.WAITING_INK};if("waiting"===a.status&&a.ask)return{text:(0,w.isAppStop)(a.ask)?(0,I.plainText)(a.outcome??a.ask.question):a.ask.question,tone:I.WAITING_INK};let c=a.seen;if("cancelled"===a.status)return{text:"Stopped",tone:"text-muted-foreground"};if("done"===a.status)return{text:(0,I.plainText)(a.outcome??"Done"),tone:c?"text-muted-foreground":"text-foreground/80"};for(let b=a.lines.length-1;b>=0;b--){let c=a.lines[b];if("tool"===c.kind)return{text:c.note??c.input,tone:"text-muted-foreground",tool:c.name,shine:!0};if("text"===c.kind)return{text:c.text,tone:"text-muted-foreground",shine:!0};if("user"===c.kind)break}return{text:`${a.bot} is taking it on…`,tone:"text-muted-foreground italic",shine:!0}}(a),n=a.tokens.input+a.tokens.output;return(0,d.jsxs)("div",{className:(0,I.cn)("group/row relative transition-colors",c?"bg-muted/80":"hover:bg-muted/50"),children:[(0,d.jsxs)("div",{className:"flex items-center gap-3 p-4",children:[(0,d.jsxs)("button",{type:"button",onClick:g,className:"flex min-w-0 flex-1 items-center gap-3 rounded-md text-left outline-none focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:ring-inset",children:[(0,d.jsx)(x.BotMark,{size:40,seed:a.bot,...(0,x.markOf)(a.bot,b),state:j?"thinking":"idle",notify:(0,w.needsThreadReply)(a)||(0,w.isUnread)(a),crossed:"cancelled"===a.status,className:"shrink-0"}),(0,d.jsxs)("span",{className:"min-w-0 flex-1 space-y-0.5",children:[(0,d.jsxs)("span",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{className:"truncate text-sm font-medium",children:a.label}),a.routineId&&(0,d.jsx)("span",{title:"Started by a routine",className:"shrink-0",children:(0,d.jsx)(C.RoutineMark,{className:"size-3 text-muted-foreground/80"})}),(0,d.jsx)(y.BotRoster,{bots:l.roster}),j&&(0,d.jsx)(f.Loader2,{className:"size-3 shrink-0 animate-spin text-muted-foreground"})]}),m&&(0,d.jsxs)("span",{className:"flex min-w-0 items-center gap-1.5 text-[13px] leading-snug",children:[m.tool&&(0,d.jsx)("span",{className:"shrink-0 font-mono text-[11px] text-muted-foreground",children:m.tool}),m.shine?(0,d.jsx)(q.ShinyText,{text:m.text,speed:2.2,className:"min-w-0 truncate"}):(0,d.jsx)("span",{className:(0,I.cn)("min-w-0 truncate",m.tone),children:m.text})]})]}),(0,d.jsxs)("span",{className:(0,I.cn)("flex shrink-0 flex-col items-end gap-0.5 font-mono text-[11px] leading-4 text-muted-foreground tabular-nums",R),children:[(0,d.jsx)("span",{children:(0,E.whenOf)(a.updatedAt)}),(0,d.jsxs)("span",{className:"max-w-full truncate text-muted-foreground/70",title:n>0?`${a.id} \xb7 in ${(0,I.formatCount)(a.tokens.input)} \xb7 out ${(0,I.formatCount)(a.tokens.output)}`:a.id,children:[a.bot,n>0&&` \xb7 ${(0,I.formatCount)(n)}`]})]}),(0,d.jsx)(e.ChevronRight,{className:"size-4 shrink-0 text-muted-foreground"})]}),(0,d.jsx)(M,{thread:a,onStop:h,onDelete:i})]}),j&&(0,d.jsx)(O,{thread:a})]})}function M({thread:a,onStop:b,onDelete:c,className:e}){let f="running"===a.status||"waiting"===a.status;return(0,d.jsxs)(o.DropdownMenu,{children:[(0,d.jsx)(o.DropdownMenuTrigger,{render:(0,d.jsx)(m.Button,{size:"icon-sm",variant:"ghost","aria-label":"More",className:e}),children:(0,d.jsx)(g.MoreHorizontal,{})}),(0,d.jsxs)(o.DropdownMenuContent,{align:"end",children:[f&&(0,d.jsxs)(o.DropdownMenuItem,{onClick:b,children:[(0,d.jsx)(h.Square,{}),"Stop"]}),(0,d.jsxs)(o.DropdownMenuItem,{variant:"destructive",onClick:c,children:[(0,d.jsx)(i.Trash2,{}),"Delete"]})]})]})}function N({thread:a,whole:b,bots:c,onClose:e,onStop:f,onDelete:g}){let[h,i]=(0,k.useState)(null),l=(0,k.useCallback)(a=>{i(a?.closest("[data-slot=dialog-content]")??null)},[]),[o,p]=(0,k.useState)({}),q=(0,k.useMemo)(()=>a?(0,B.threadFromRow)(a,c):null,[a,c]),s=(0,k.useMemo)(()=>b?(0,B.threadFromRow)(b,c):q?.lines.length?q:null,[b,q,c]),t=a?o[a.id]??null:null;return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("span",{ref:l,hidden:!0}),(0,d.jsx)(n.Dialog,{open:!!(a&&h),onOpenChange:a=>!a&&e(),modal:!1,disablePointerDismissal:!0,children:(0,d.jsx)(n.DialogPortal,{container:h,children:(0,d.jsx)(n.DialogPopup,{className:"absolute inset-y-0 right-0 z-10 flex w-[min(35rem,calc(100%-13rem))] flex-col border-l border-border/60 bg-popover text-popover-foreground shadow-2xl shadow-black/10 duration-150 data-open:animate-in data-open:fade-in-0 data-open:slide-in-from-right-4 data-closed:animate-out data-closed:fade-out-0 data-closed:slide-out-to-right-4",children:a&&q&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"flex shrink-0 items-center gap-2.5 pt-3.5 pr-3 pb-1.5 pl-5",children:[(0,d.jsx)(x.BotMark,{size:28,seed:a.bot,...(0,x.markOf)(a.bot,c),state:"running"===a.status?"thinking":"idle",notify:(0,w.needsThreadReply)(a),crossed:"cancelled"===a.status,className:"shrink-0"}),(0,d.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,d.jsx)(n.DialogTitle,{className:"sr-only",children:a.label}),(0,d.jsx)("p",{className:"truncate text-[15px] leading-5 font-semibold",children:a.label}),(0,d.jsxs)("div",{className:"mt-0.5 flex min-w-0 items-center gap-2 font-mono text-[11px] text-muted-foreground",children:[(0,d.jsxs)("span",{title:a.id,className:"min-w-0 truncate",children:[a.bot," · ",(0,E.whenOf)(a.updatedAt)]}),(0,d.jsx)(A.ThreadFacts,{thread:q})]})]}),(0,d.jsx)(M,{thread:a,onStop:()=>f(a),onDelete:()=>g(a),className:"text-muted-foreground"}),(0,d.jsx)(n.DialogClose,{render:(0,d.jsx)(m.Button,{size:"icon-sm",variant:"ghost","aria-label":"Close the thread"}),children:(0,d.jsx)(j.X,{})})]}),s?(0,d.jsx)(A.Conversation,{thread:s,tab:t,onTab:b=>p(c=>({...c,[a.id]:b})),className:"max-h-none min-h-0 flex-1 px-5",tabsClassName:"px-5"}):(0,d.jsxs)("div",{className:"flex min-h-0 flex-1 flex-col gap-2 px-5 py-4",children:[(0,d.jsx)(r.Skeleton,{className:"h-3 w-4/5"}),(0,d.jsx)(r.Skeleton,{className:"h-3 w-3/5"}),(0,d.jsx)(r.Skeleton,{className:"h-3 w-2/3"})]}),(0,d.jsx)("div",{className:"shrink-0 px-5 pt-2 pb-4",children:(0,d.jsx)(J.ThreadReply,{thread:{id:a.id,label:a.label,bot:a.bot,ask:a.ask,room:a.room},status:a.status,faces:q.roster,to:t??a.bot})})]})})})})]})}function O({thread:a}){let b=[];if(a.lines.forEach((c,d)=>{if("tool"!==c.kind)return;let e=a.lines[d+1];b.push({step:c,took:e?(0,E.toDate)(e.at).getTime()-(0,E.toDate)(c.at).getTime():null})}),0===b.length)return null;let c=(0,E.toDate)(a.updatedAt).getTime()-(0,E.toDate)(a.createdAt).getTime();return(0,d.jsxs)("div",{className:"pointer-events-none absolute top-[calc(100%-0.75rem)] left-17 z-20 hidden w-96 max-w-[calc(100%-5rem)] rounded-xl bg-background p-3 pb-2 shadow-xl shadow-black/10 ring-1 ring-border/60 group-hover/row:block",children:[(0,d.jsxs)("div",{className:"mb-1.5 flex items-center gap-2 font-mono text-[10px] text-muted-foreground",children:[(0,d.jsx)("span",{children:a.bot}),(0,d.jsx)("span",{className:"opacity-50",children:"·"}),(0,d.jsxs)("span",{children:[b.length," ",1===b.length?"step":"steps"]}),(0,d.jsx)("span",{className:"opacity-50",children:"·"}),(0,d.jsx)("span",{children:P(c)})]}),b.slice(-6).map(({step:a,took:b})=>{let c=(0,z.toolIcon)(a.name);return(0,d.jsxs)("div",{className:"flex h-5.5 items-center gap-2 font-mono text-[11px]",children:[null===b?(0,d.jsx)(f.Loader2,{className:"size-3 shrink-0 animate-spin text-muted-foreground"}):(0,d.jsx)(c,{className:"size-3 shrink-0 text-muted-foreground"}),(0,d.jsx)("span",{className:"w-24 shrink-0 truncate text-muted-foreground",children:a.name}),null===b?(0,d.jsx)(q.ShinyText,{text:a.note??a.input,speed:2.2,className:"min-w-0 flex-1 truncate"}):(0,d.jsx)("span",{className:"min-w-0 flex-1 truncate text-foreground",children:a.note??a.input}),(0,d.jsx)("span",{className:"w-10 shrink-0 text-right text-muted-foreground/70 tabular-nums",children:null===b?"":P(b)})]},a.id)})]})}function P(a){let b=Math.max(0,a)/1e3;if(b<10)return`${b.toFixed(1)}s`;if(b<60)return`${Math.round(b)}s`;let c=Math.floor(b/60);return`${c}m ${Math.round(b-60*c)}s`}function Q(){return(0,d.jsxs)("div",{className:"flex items-center gap-3 p-4",children:[(0,d.jsx)(r.Skeleton,{className:"size-10 shrink-0 rounded-full"}),(0,d.jsxs)("span",{className:"min-w-0 flex-1 space-y-2",children:[(0,d.jsx)(r.Skeleton,{className:"h-3 w-40 max-w-full"}),(0,d.jsx)(r.Skeleton,{className:"h-2.5 w-80 max-w-full"})]}),(0,d.jsxs)("span",{className:(0,I.cn)("flex shrink-0 flex-col items-end gap-1.5",R),children:[(0,d.jsx)(r.Skeleton,{className:"h-2.5 w-12"}),(0,d.jsx)(r.Skeleton,{className:"h-2.5 w-24"})]}),(0,d.jsx)("span",{className:"size-4 shrink-0"}),(0,d.jsx)("span",{className:"size-7 shrink-0"})]})}a.s(["ThreadSetting",0,function(){let[a,b]=(0,k.useState)(null),[c,e]=(0,k.useState)(""),{data:f}=(0,H.useServerRoute)(l.queryKey.bot),{items:g,isLoading:h,isLoadingMore:i,error:j,hasMore:n,sentinelRef:o}=(0,G.useServerPages)({key:(a,b)=>{if(0===a)return l.queryKey.threadHistory(null);let c=b?.at(-1);return c?l.queryKey.threadHistory((0,E.toDate)(c.updatedAt).toISOString()):null},size:s.PAGE_SIZE}),q=g.find(b=>b.id===a),{data:r}=(0,H.useServerRoute)(a?l.queryKey.thread(a):null),x=r?.id===a?r:void 0;(0,B.useSeenOnDetail)(q);let[y]=(0,F.useServerAction)(t.cancelThreadAction,{onOk:a=>{(0,H.revalidate)(l.queryKey.threads),B.screenActs.announce({kind:"stopped",id:a.id,label:a.label})}}),[z]=(0,F.useServerAction)(v.deleteThreadAction,{onOk:()=>(0,H.revalidate)(l.queryKey.threads)}),[A]=(0,F.useServerAction)(u.clearFinishedThreadsAction,{onOk:()=>(0,H.revalidate)(l.queryKey.threads)}),C=c.trim().toLowerCase(),I=C?g.filter(a=>[a.label,a.outcome,a.bot].join(" ").toLowerCase().includes(C)):g,J=async()=>{await p.notify.confirm({title:"Clear finished jobs?",description:"Everything done or stopped goes, messages included. Running and waiting jobs stay.",okText:"Clear",destructive:!0})&&A()},K=async c=>{if(!await p.notify.confirm({title:`Delete "${c.label}"?`,description:"Its messages go with it — nothing can be picked back up.",okText:"Delete",destructive:!0}))return;let d=I.findIndex(a=>a.id===c.id),e=I[d+1]??I[d-1];try{await z(c.id)}catch{return}c.id===a&&b(e?.id??null)};if(h)return(0,d.jsx)(D.SettingSkeleton,{rows:3});if(j)return(0,d.jsx)(D.SettingError,{message:j.message});let M=g.filter(a=>"waiting"===a.status).length,O=g.filter(w.isUnread).length;return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(D.SettingScreen,{footer:(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)(D.SettingRailNote,{children:[g.length," shown",M>0&&` \xb7 ${M} waiting on you`,O>0&&` \xb7 ${O} new result${1===O?"":"s"}`]}),(n||g.some(a=>"done"===a.status||"cancelled"===a.status))&&(0,d.jsx)(m.Button,{variant:"outline",size:"sm",onClick:J,children:"Clear finished"})]}),children:(0,d.jsx)(D.SettingGroup,{filter:(0,d.jsx)(D.SettingFilter,{value:c,onChange:e,placeholder:"Filter by label, bot or word"}),right:C?`${I.length} of ${g.length}`:void 0,children:(0,d.jsxs)(D.SettingItems,{children:[0===I.length?(0,d.jsx)("p",{className:"p-4 text-sm leading-relaxed text-muted-foreground",children:C?"Nothing here matches. Keep scrolling to search further back.":"Nothing yet. When Thursday hands a job to a bot mid-call, it shows up here — while it runs, and after."}):I.map(a=>(0,d.jsx)(L,{thread:a,bots:f,open:a.id===q?.id,onOpen:()=>b(a.id),onStop:()=>y(a.id),onDelete:()=>K(a)},a.id)),(0,d.jsx)(D.SettingMore,{hasMore:n,loading:i,sentinelRef:o,ghost:(0,d.jsx)(Q,{}),className:"divide-y divide-border/60"})]})})}),(0,d.jsx)(N,{thread:q,whole:x,bots:f,onClose:()=>b(null),onStop:a=>y(a.id),onDelete:K})]})}]),c()}catch(a){c(a)}},!1),500747,a=>{"use strict";var b=a.i(405050);let c=(0,b.createServerReference)("7f038abb37957ba7cb2c522ee43c2d00b63bfd9f8c",b.callServer,void 0,b.findSourceMapURL,"clearFinishedThreadsAction");a.s(["clearFinishedThreadsAction",0,c])},120749,a=>{"use strict";var b=a.i(405050);let c=(0,b.createServerReference)("7f2f806ae17425ff9116581e0777a310cb1cfeeb6a",b.callServer,void 0,b.findSourceMapURL,"deleteThreadAction");a.s(["deleteThreadAction",0,c])}];
2
+
3
+ //# sourceMappingURL=features_bot_0ouemw8._.js.map
@@ -1,6 +1,6 @@
1
- module.exports=[762008,a=>{"use strict";a.s(["STUDIO_TOOLS",0,{generate_image:"generate_image",generate_speech:"generate_speech",transcribe:"transcribe",generate_video:"generate_video"},"TOOL_NAMES",0,{memory_recall:"memory_recall",memory_create:"memory_create",memory_remember:"memory_remember",memory_describe:"memory_describe",memory_forget:"memory_forget",bash:"bash",write_file:"write_file",tool_search:"tool_search",tool_call:"tool_call",load_skill:"load_skill",web_search:"web_search",thread_start:"thread_start",thread_tell:"thread_tell",thread_answer:"thread_answer",thread_status:"thread_status",thread_cancel:"thread_cancel",thread_show:"thread_show",thread_seen:"thread_seen",routine:"routine",send_message:"send_message",thread_recall:"thread_recall",sign_in_use:"sign_in_use",sign_in_keep:"sign_in_keep",look_at:"look_at",make_deck:"make_deck",describe_self:"describe_self",end_call:"end_call",emote:"emote"}])},839430,a=>a.a(async(b,c)=>{try{var d=a.i(666680),e=a.i(93321),f=a.i(258261),g=a.i(351674),h=a.i(203469),i=a.i(569572),j=a.i(184838),k=a.i(714428),l=a.i(762008),m=a.i(293480),n=a.i(446957),o=a.i(109955),p=b([j]);[j]=p.then?(await p)():p;let O=()=>h.appEvents.emit({type:"threads"}),P=a=>"done"===a||"cancelled"===a,Q=(a,b,c)=>`message:${(0,d.createHash)("sha256").update(JSON.stringify([a,b,c])).digest("hex")}`;async function q(a,b,c){let[d]=await a.select({id:k.threadWorkTable.id}).from(k.threadWorkTable).where((0,e.and)((0,e.eq)(k.threadWorkTable.threadId,b),(0,e.eq)(k.threadWorkTable.state,"external"),(0,e.eq)(k.threadWorkTable.caller,c))).limit(1);return!!d}async function r(a,b,c){let d=c.flatMap(a=>"assistant"===a.role&&Array.isArray(a.content)?a.content.flatMap(a=>"tool-call"===a.type&&a.toolName===l.TOOL_NAMES.send_message?[a.toolCallId]:[]):[]),f=d.map(c=>Q(a,b,c)),g=new Map;if(!f.length)return g;let[h,i]=await Promise.all([j.database.select({key:k.threadWorkTable.id,to:k.threadWorkTable.bot}).from(k.threadWorkTable).where((0,e.and)((0,e.eq)(k.threadWorkTable.threadId,a),(0,e.inArray)(k.threadWorkTable.id,f))),j.database.select({key:k.threadDeliveryTable.key,to:k.threadWorkTable.bot}).from(k.threadDeliveryTable).innerJoin(k.threadWorkTable,(0,e.eq)(k.threadWorkTable.id,k.threadDeliveryTable.workId)).where((0,e.and)((0,e.eq)(k.threadDeliveryTable.threadId,a),(0,e.inArray)(k.threadDeliveryTable.key,f)))]),m=new Map([...h,...i].map(a=>[a.key,a.to]));for(let[a,b]of d.entries()){let c=m.get(f[a]);c&&g.set(b,{messageId:f[a],to:c})}return g}async function s(a,b,c){let[d]=await a.select({seq:(0,f.max)(k.threadMessageTable.seq)}).from(k.threadMessageTable).where((0,e.eq)(k.threadMessageTable.threadId,b)),g=(d?.seq??-1)+1;return await a.insert(k.threadMessageTable).values({threadId:b,seq:g,...c}),g}let R=(a,b)=>({bot:a.bot,parent:a.id,role:"user",content:`${b} ${o.RESUME_CHECK}`,note:!0});async function t(a,b){await u(a.threadId,R(a,b))}async function u(a,b){let c=await j.database.transaction(c=>s(c,a,b));return O(),c}async function v(a){return j.database.select().from(k.threadWorkTable).where((0,e.eq)(k.threadWorkTable.threadId,a)).orderBy(k.threadWorkTable.createdAt,k.threadWorkTable.id)}async function w(a,b){let[c]=await j.database.select({budget:g.sql`min(nullif(${k.threadWorkTable.contextBudget}, 0))`}).from(k.threadWorkTable).where((0,e.and)((0,e.eq)(k.threadWorkTable.threadId,a),(0,e.eq)(k.threadWorkTable.bot,b)));return c?.budget??void 0}async function x(a,b){await j.database.transaction(async c=>{await y(c,a),await c.update(k.threadWorkTable).set({contextBudget:b}).where((0,e.eq)(k.threadWorkTable.id,a.id))}),O()}async function y(a,b){let[c]=await a.select().from(k.threadWorkTable).where((0,e.and)((0,e.eq)(k.threadWorkTable.id,b.id),(0,e.eq)(k.threadWorkTable.generation,b.generation),(0,e.eq)(k.threadWorkTable.state,"running")));return c||(0,m.publicError)("This turn is no longer running."),c}async function z(a,b){await a.insert(k.threadDeliveryTable).values(b).onConflictDoNothing();let[c]=await a.select({bot:k.threadWorkTable.bot}).from(k.threadWorkTable).where((0,e.eq)(k.threadWorkTable.id,b.workId));c&&await q(a,b.threadId,c.bot)||await a.update(k.threadWorkTable).set({state:"queued"}).where((0,e.and)((0,e.eq)(k.threadWorkTable.id,b.workId),(0,e.inArray)(k.threadWorkTable.state,["waiting","done"])))}async function A(a,b){let c={...o.RoomMessageSchema.parse(b),id:b.id};"question"===c.kind&&c.to!==o.ROOM_THURSDAY&&(0,m.publicError)("Address user questions to Thursday; use a message to contact another bot."),c.options?.length&&"question"!==c.kind&&(0,m.publicError)("Offer answer choices only with a user question.");let d=await j.database.transaction(async b=>{await y(b,a);let d=Q(a.threadId,a.bot,c.id),[f]=await b.select().from(k.threadWorkTable).where((0,e.eq)(k.threadWorkTable.id,d));if(f)return{messageId:d,to:f.bot};let[g]=await b.select({to:k.threadWorkTable.bot}).from(k.threadDeliveryTable).innerJoin(k.threadWorkTable,(0,e.eq)(k.threadWorkTable.id,k.threadDeliveryTable.workId)).where((0,e.eq)(k.threadDeliveryTable.key,d));if(g)return{messageId:d,to:g.to};c.to===a.bot&&(0,m.publicError)("Continue your own work directly; choose another recipient."),c.to!==o.ROOM_THURSDAY&&c.to===a.caller&&(0,m.publicError)(`${c.to} is who you are answering. End your turn and your final text goes to ${c.to}: the answer, or the question you need settled first.`);let h=await b.select().from(k.threadWorkTable).where((0,e.eq)(k.threadWorkTable.threadId,a.threadId)),j=h.filter(b=>b.bot===c.to&&b.caller===a.bot&&c.to!==o.ROOM_THURSDAY&&!P(b.state)),l=j.find(a=>"running"===a.state)??j[0];if(l){let f=await q(b,a.threadId,c.to);return await z(b,{key:d,threadId:a.threadId,workId:l.id,speaker:a.bot,text:c.text}),await b.update(k.threadTable).set({wrapped:!1,updatedAt:new Date}).where((0,e.eq)(k.threadTable.id,a.threadId)),{messageId:d,to:c.to,note:f?`${c.to} is waiting for the user's answer and reads this after it.`:`${c.to} is already working for you and reads this before its next step. Its one answer covers both.`}}let n=new Set(h.map(a=>a.bot).filter(a=>a!==o.ROOM_THURSDAY));c.to!==o.ROOM_THURSDAY&&!n.has(c.to)&&n.size>=i.BOT_RUN.participants&&(0,m.publicError)("This thread has reached its participant limit."),h.filter(a=>!P(a.state)).length>=i.BOT_RUN.queuedMessages&&(0,m.publicError)("This thread has reached its pending message limit.");let p=c.to!==o.ROOM_THURSDAY&&await q(b,a.threadId,c.to);return await b.insert(k.threadWorkTable).values({id:d,threadId:a.threadId,bot:c.to,caller:a.bot,parentId:a.id,state:c.to===o.ROOM_THURSDAY?"question"===c.kind?"external":"done":p?"waiting":"queued",result:c.to===o.ROOM_THURSDAY?c.text:null,options:[...new Set(c.options??[])]}),c.to===o.ROOM_THURSDAY?await b.insert(k.threadRelayTable).values({key:d,threadId:a.threadId,bot:a.bot,text:c.text,kind:c.kind,messageId:"question"===c.kind?d:null}):await z(b,{key:d,threadId:a.threadId,workId:d,speaker:a.bot,text:c.text}),await b.update(k.threadTable).set({wrapped:!1,updatedAt:new Date}).where((0,e.eq)(k.threadTable.id,a.threadId)),{messageId:d,to:c.to,...p?{note:`${c.to} is waiting for the user's answer and reads this after it.`}:{}}});return O(),d}async function B(a){let b=!1,c=await j.database.transaction(async c=>{let[d]=await c.select().from(k.threadTable).where((0,e.eq)(k.threadTable.id,a));if(!d||"running"!==d.status)return null;let f=await c.select().from(k.threadWorkTable).where((0,e.eq)(k.threadWorkTable.threadId,a)).orderBy(g.sql`${k.threadWorkTable}.rowid`),h=new Set(f.filter(a=>"external"===a.state).map(a=>a.caller));for(let a of f)"queued"===a.state&&h.has(a.bot)&&(await c.update(k.threadWorkTable).set({state:"waiting"}).where((0,e.eq)(k.threadWorkTable.id,a.id)),a.state="waiting",b=!0);let j=f.filter(a=>"running"===a.state);if(j.length>=i.BOT_RUN.concurrent)return null;let l=f.find(a=>"queued"===a.state&&!j.some(b=>b.bot===a.bot));if(!l)return null;if(d.turns>=i.BOT_RUN.turns)return await c.update(k.threadWorkTable).set({state:"paused"}).where((0,e.and)((0,e.eq)(k.threadWorkTable.threadId,a),(0,e.eq)(k.threadWorkTable.state,"queued"))),null;let[m]=await c.update(k.threadWorkTable).set({state:"running",generation:l.generation+1}).where((0,e.eq)(k.threadWorkTable.id,l.id)).returning();return await c.update(k.threadTable).set({turns:d.turns+1}).where((0,e.eq)(k.threadTable.id,a)),m});return(c||b)&&O(),c}async function C(a,b){let c=await j.database.transaction(async c=>{let[d]=await c.select({id:k.threadDeliveryTable.id}).from(k.threadDeliveryTable).innerJoin(k.threadWorkTable,(0,e.eq)(k.threadWorkTable.id,k.threadDeliveryTable.workId)).where((0,e.and)((0,e.eq)(k.threadDeliveryTable.key,b),(0,e.eq)(k.threadDeliveryTable.threadId,a),(0,e.eq)(k.threadDeliveryTable.visible,!0),(0,e.eq)(k.threadDeliveryTable.consumed,!1),(0,e.eq)(k.threadWorkTable.state,"running")));return!!d&&(await c.delete(k.threadDeliveryTable).where((0,e.eq)(k.threadDeliveryTable.id,d.id)),!0)});return c&&O(),c}async function D(a){let b=await j.database.transaction(async b=>{await y(b,a);let c=await b.select().from(k.threadDeliveryTable).where((0,e.and)((0,e.eq)(k.threadDeliveryTable.workId,a.id),(0,e.eq)(k.threadDeliveryTable.consumed,!1))).orderBy(k.threadDeliveryTable.id);for(let d of c){let c=E(d);await s(b,a.threadId,{bot:a.bot,parent:a.id,role:"user",content:c,hidden:!d.visible}),await b.update(k.threadDeliveryTable).set({consumed:!0}).where((0,e.eq)(k.threadDeliveryTable.id,d.id))}return c.map(E)});return b.length&&O(),b}function E(a){return a.visible?(0,n.tagSpeaker)(a.speaker===o.ROOM_USER?"user":"thursday",a.text):`${a.speaker}:
1
+ module.exports=[839430,a=>a.a(async(b,c)=>{try{var d=a.i(666680),e=a.i(93321),f=a.i(258261),g=a.i(351674),h=a.i(203469),i=a.i(569572),j=a.i(184838),k=a.i(714428),l=a.i(762008),m=a.i(293480),n=a.i(446957),o=a.i(109955),p=b([j]);[j]=p.then?(await p)():p;let O=()=>h.appEvents.emit({type:"threads"}),P=a=>"done"===a||"cancelled"===a,Q=(a,b,c)=>`message:${(0,d.createHash)("sha256").update(JSON.stringify([a,b,c])).digest("hex")}`;async function q(a,b,c){let[d]=await a.select({id:k.threadWorkTable.id}).from(k.threadWorkTable).where((0,e.and)((0,e.eq)(k.threadWorkTable.threadId,b),(0,e.eq)(k.threadWorkTable.state,"external"),(0,e.eq)(k.threadWorkTable.caller,c))).limit(1);return!!d}async function r(a,b,c){let d=c.flatMap(a=>"assistant"===a.role&&Array.isArray(a.content)?a.content.flatMap(a=>"tool-call"===a.type&&a.toolName===l.TOOL_NAMES.send_message?[a.toolCallId]:[]):[]),f=d.map(c=>Q(a,b,c)),g=new Map;if(!f.length)return g;let[h,i]=await Promise.all([j.database.select({key:k.threadWorkTable.id,to:k.threadWorkTable.bot}).from(k.threadWorkTable).where((0,e.and)((0,e.eq)(k.threadWorkTable.threadId,a),(0,e.inArray)(k.threadWorkTable.id,f))),j.database.select({key:k.threadDeliveryTable.key,to:k.threadWorkTable.bot}).from(k.threadDeliveryTable).innerJoin(k.threadWorkTable,(0,e.eq)(k.threadWorkTable.id,k.threadDeliveryTable.workId)).where((0,e.and)((0,e.eq)(k.threadDeliveryTable.threadId,a),(0,e.inArray)(k.threadDeliveryTable.key,f)))]),m=new Map([...h,...i].map(a=>[a.key,a.to]));for(let[a,b]of d.entries()){let c=m.get(f[a]);c&&g.set(b,{messageId:f[a],to:c})}return g}async function s(a,b,c){let[d]=await a.select({seq:(0,f.max)(k.threadMessageTable.seq)}).from(k.threadMessageTable).where((0,e.eq)(k.threadMessageTable.threadId,b)),g=(d?.seq??-1)+1;return await a.insert(k.threadMessageTable).values({threadId:b,seq:g,...c}),g}let R=(a,b)=>({bot:a.bot,parent:a.id,role:"user",content:`${b} ${o.RESUME_CHECK}`,note:!0});async function t(a,b){await u(a.threadId,R(a,b))}async function u(a,b){let c=await j.database.transaction(c=>s(c,a,b));return O(),c}async function v(a){return j.database.select().from(k.threadWorkTable).where((0,e.eq)(k.threadWorkTable.threadId,a)).orderBy(k.threadWorkTable.createdAt,k.threadWorkTable.id)}async function w(a,b){let[c]=await j.database.select({budget:g.sql`min(nullif(${k.threadWorkTable.contextBudget}, 0))`}).from(k.threadWorkTable).where((0,e.and)((0,e.eq)(k.threadWorkTable.threadId,a),(0,e.eq)(k.threadWorkTable.bot,b)));return c?.budget??void 0}async function x(a,b){await j.database.transaction(async c=>{await y(c,a),await c.update(k.threadWorkTable).set({contextBudget:b}).where((0,e.eq)(k.threadWorkTable.id,a.id))}),O()}async function y(a,b){let[c]=await a.select().from(k.threadWorkTable).where((0,e.and)((0,e.eq)(k.threadWorkTable.id,b.id),(0,e.eq)(k.threadWorkTable.generation,b.generation),(0,e.eq)(k.threadWorkTable.state,"running")));return c||(0,m.publicError)("This turn is no longer running."),c}async function z(a,b){await a.insert(k.threadDeliveryTable).values(b).onConflictDoNothing();let[c]=await a.select({bot:k.threadWorkTable.bot}).from(k.threadWorkTable).where((0,e.eq)(k.threadWorkTable.id,b.workId));c&&await q(a,b.threadId,c.bot)||await a.update(k.threadWorkTable).set({state:"queued"}).where((0,e.and)((0,e.eq)(k.threadWorkTable.id,b.workId),(0,e.inArray)(k.threadWorkTable.state,["waiting","done"])))}async function A(a,b){let c={...o.RoomMessageSchema.parse(b),id:b.id};"question"===c.kind&&c.to!==o.ROOM_THURSDAY&&(0,m.publicError)("Address user questions to Thursday; use a message to contact another bot."),c.options?.length&&"question"!==c.kind&&(0,m.publicError)("Offer answer choices only with a user question.");let d=await j.database.transaction(async b=>{await y(b,a);let d=Q(a.threadId,a.bot,c.id),[f]=await b.select().from(k.threadWorkTable).where((0,e.eq)(k.threadWorkTable.id,d));if(f)return{messageId:d,to:f.bot};let[g]=await b.select({to:k.threadWorkTable.bot}).from(k.threadDeliveryTable).innerJoin(k.threadWorkTable,(0,e.eq)(k.threadWorkTable.id,k.threadDeliveryTable.workId)).where((0,e.eq)(k.threadDeliveryTable.key,d));if(g)return{messageId:d,to:g.to};c.to===a.bot&&(0,m.publicError)("Continue your own work directly; choose another recipient."),c.to!==o.ROOM_THURSDAY&&c.to===a.caller&&(0,m.publicError)(`${c.to} is who you are answering. End your turn and your final text goes to ${c.to}: the answer, or the question you need settled first.`);let h=await b.select().from(k.threadWorkTable).where((0,e.eq)(k.threadWorkTable.threadId,a.threadId)),j=h.filter(b=>b.bot===c.to&&b.caller===a.bot&&c.to!==o.ROOM_THURSDAY&&!P(b.state)),l=j.find(a=>"running"===a.state)??j[0];if(l){let f=await q(b,a.threadId,c.to);return await z(b,{key:d,threadId:a.threadId,workId:l.id,speaker:a.bot,text:c.text}),await b.update(k.threadTable).set({wrapped:!1,updatedAt:new Date}).where((0,e.eq)(k.threadTable.id,a.threadId)),{messageId:d,to:c.to,note:f?`${c.to} is waiting for the user's answer and reads this after it.`:`${c.to} is already working for you and reads this before its next step. Its one answer covers both.`}}let n=new Set(h.map(a=>a.bot).filter(a=>a!==o.ROOM_THURSDAY));c.to!==o.ROOM_THURSDAY&&!n.has(c.to)&&n.size>=i.BOT_RUN.participants&&(0,m.publicError)("This thread has reached its participant limit."),h.filter(a=>!P(a.state)).length>=i.BOT_RUN.queuedMessages&&(0,m.publicError)("This thread has reached its pending message limit.");let p=c.to!==o.ROOM_THURSDAY&&await q(b,a.threadId,c.to);return await b.insert(k.threadWorkTable).values({id:d,threadId:a.threadId,bot:c.to,caller:a.bot,parentId:a.id,state:c.to===o.ROOM_THURSDAY?"question"===c.kind?"external":"done":p?"waiting":"queued",result:c.to===o.ROOM_THURSDAY?c.text:null,options:[...new Set(c.options??[])]}),c.to===o.ROOM_THURSDAY?await b.insert(k.threadRelayTable).values({key:d,threadId:a.threadId,bot:a.bot,text:c.text,kind:c.kind,messageId:"question"===c.kind?d:null}):await z(b,{key:d,threadId:a.threadId,workId:d,speaker:a.bot,text:c.text}),await b.update(k.threadTable).set({wrapped:!1,updatedAt:new Date}).where((0,e.eq)(k.threadTable.id,a.threadId)),{messageId:d,to:c.to,...p?{note:`${c.to} is waiting for the user's answer and reads this after it.`}:{}}});return O(),d}async function B(a){let b=!1,c=await j.database.transaction(async c=>{let[d]=await c.select().from(k.threadTable).where((0,e.eq)(k.threadTable.id,a));if(!d||"running"!==d.status)return null;let f=await c.select().from(k.threadWorkTable).where((0,e.eq)(k.threadWorkTable.threadId,a)).orderBy(g.sql`${k.threadWorkTable}.rowid`),h=new Set(f.filter(a=>"external"===a.state).map(a=>a.caller));for(let a of f)"queued"===a.state&&h.has(a.bot)&&(await c.update(k.threadWorkTable).set({state:"waiting"}).where((0,e.eq)(k.threadWorkTable.id,a.id)),a.state="waiting",b=!0);let j=f.filter(a=>"running"===a.state);if(j.length>=i.BOT_RUN.concurrent)return null;let l=f.find(a=>"queued"===a.state&&!j.some(b=>b.bot===a.bot));if(!l)return null;if(d.turns>=i.BOT_RUN.turns)return await c.update(k.threadWorkTable).set({state:"paused"}).where((0,e.and)((0,e.eq)(k.threadWorkTable.threadId,a),(0,e.eq)(k.threadWorkTable.state,"queued"))),null;let[m]=await c.update(k.threadWorkTable).set({state:"running",generation:l.generation+1}).where((0,e.eq)(k.threadWorkTable.id,l.id)).returning();return await c.update(k.threadTable).set({turns:d.turns+1}).where((0,e.eq)(k.threadTable.id,a)),m});return(c||b)&&O(),c}async function C(a,b){let c=await j.database.transaction(async c=>{let[d]=await c.select({id:k.threadDeliveryTable.id}).from(k.threadDeliveryTable).innerJoin(k.threadWorkTable,(0,e.eq)(k.threadWorkTable.id,k.threadDeliveryTable.workId)).where((0,e.and)((0,e.eq)(k.threadDeliveryTable.key,b),(0,e.eq)(k.threadDeliveryTable.threadId,a),(0,e.eq)(k.threadDeliveryTable.visible,!0),(0,e.eq)(k.threadDeliveryTable.consumed,!1),(0,e.eq)(k.threadWorkTable.state,"running")));return!!d&&(await c.delete(k.threadDeliveryTable).where((0,e.eq)(k.threadDeliveryTable.id,d.id)),!0)});return c&&O(),c}async function D(a){let b=await j.database.transaction(async b=>{await y(b,a);let c=await b.select().from(k.threadDeliveryTable).where((0,e.and)((0,e.eq)(k.threadDeliveryTable.workId,a.id),(0,e.eq)(k.threadDeliveryTable.consumed,!1))).orderBy(k.threadDeliveryTable.id);for(let d of c){let c=E(d);await s(b,a.threadId,{bot:a.bot,parent:a.id,role:"user",content:c,hidden:!d.visible}),await b.update(k.threadDeliveryTable).set({consumed:!0}).where((0,e.eq)(k.threadDeliveryTable.id,d.id))}return c.map(E)});return b.length&&O(),b}function E(a){return a.visible?(0,n.tagSpeaker)(a.speaker===o.ROOM_USER?"user":"thursday",a.text):`${a.speaker}:
2
2
 
3
3
  ${a.text}`}async function F(a,b){await j.database.transaction(async c=>{await y(c,a);let d=await c.select().from(k.threadWorkTable).where((0,e.eq)(k.threadWorkTable.parentId,a.id)),f=await c.select({id:k.threadDeliveryTable.id}).from(k.threadDeliveryTable).where((0,e.and)((0,e.eq)(k.threadDeliveryTable.workId,a.id),(0,e.eq)(k.threadDeliveryTable.consumed,!1))).limit(1),g=await q(c,a.threadId,a.bot),h=f.length&&!g?"queued":f.length||d.some(a=>!P(a.state))?"waiting":"done";if(await c.update(k.threadWorkTable).set({state:h,result:b}).where((0,e.eq)(k.threadWorkTable.id,a.id)),"done"!==h)return;if(a.parentId){let[d]=await c.select().from(k.threadWorkTable).where((0,e.eq)(k.threadWorkTable.id,a.parentId)),[f]=b?[]:await c.select({id:k.threadDeliveryTable.id}).from(k.threadDeliveryTable).where((0,e.and)((0,e.eq)(k.threadDeliveryTable.workId,a.parentId),(0,e.eq)(k.threadDeliveryTable.speaker,a.bot),(0,e.eq)(k.threadDeliveryTable.consumed,!1))).limit(1);d&&"cancelled"!==d.state&&!f&&await z(c,{key:`return:${a.id}:${a.generation}`,threadId:a.threadId,workId:d.id,speaker:a.bot,text:b||"This turn ended without a message."})}let[i]=await c.select().from(k.threadTable).where((0,e.eq)(k.threadTable.id,a.threadId)),j=await c.select().from(k.threadWorkTable).where((0,e.eq)(k.threadWorkTable.threadId,a.threadId));i&&a.bot===i.bot&&!a.parentId&&j.every(a=>P(a.state))&&(await c.update(k.threadTable).set({status:b?"done":"waiting",outcome:b||"The room is idle. Send a message to continue.",pending:b?null:{options:[n.THREAD_CONTINUE]},wrapped:!0,endedAt:b?new Date:null,seen:!1,updatedAt:new Date}).where((0,e.eq)(k.threadTable.id,a.threadId)),b&&await c.insert(k.threadRelayTable).values({key:`report:${a.threadId}:${i.generation}`,threadId:a.threadId,bot:a.bot,text:b,kind:"report"}).onConflictDoNothing())}),O()}async function G(a){await j.database.transaction(async b=>{let[c]=await b.select().from(k.threadTable).where((0,e.eq)(k.threadTable.id,a));if(!c||"running"!==c.status)return;let d=await b.select().from(k.threadWorkTable).where((0,e.eq)(k.threadWorkTable.threadId,a));if(d.some(a=>"queued"===a.state||"running"===a.state))return;let f=d.find(a=>"external"===a.state);if(f)return void await b.update(k.threadTable).set({status:"waiting",outcome:f.result,pending:{options:f.options,messageId:f.id,bot:f.caller},updatedAt:new Date}).where((0,e.eq)(k.threadTable.id,a));if(d.some(a=>!P(a.state))||c.wrapped)return void await b.update(k.threadTable).set({status:"waiting",outcome:c.turns>=i.BOT_RUN.turns?"The room reached its automatic turn limit. Continue from the saved conversation.":"Work is paused. Continue from the saved conversation.",pending:{options:[n.THREAD_CONTINUE]},updatedAt:new Date}).where((0,e.eq)(k.threadTable.id,a));let g=crypto.randomUUID();await b.insert(k.threadWorkTable).values({id:g,threadId:a,bot:c.bot,caller:o.ROOM_THURSDAY,state:"queued"}),await z(b,{key:g,threadId:a,workId:g,speaker:"Thread activity",text:"The participants have finished their current turns. Bring together the results you received for Thursday, including anything still unresolved."}),await b.update(k.threadTable).set({wrapped:!0}).where((0,e.eq)(k.threadTable.id,a))}),O()}async function H(a,b){await j.database.transaction(async c=>{let d=await c.select().from(k.threadWorkTable).where((0,e.eq)(k.threadWorkTable.threadId,a));for(let f of d.filter(a=>"running"===a.state||"queued"===a.state))await c.update(k.threadWorkTable).set({state:"paused",generation:f.generation+1}).where((0,e.eq)(k.threadWorkTable.id,f.id)),await s(c,a,R(f,b));await c.update(k.threadTable).set({status:"waiting",outcome:b,pending:{options:[n.THREAD_CONTINUE]},seen:!1,endedAt:null,updatedAt:new Date}).where((0,e.eq)(k.threadTable.id,a)),await c.insert(k.threadRelayTable).values({key:crypto.randomUUID(),threadId:a,bot:d.find(a=>!a.parentId)?.bot??"Bot",text:b,kind:"interrupted"})}),O()}async function I(a){await j.database.transaction(async b=>{await b.update(k.threadWorkTable).set({state:"queued"}).where((0,e.and)((0,e.eq)(k.threadWorkTable.threadId,a),(0,e.eq)(k.threadWorkTable.state,"paused"))),await b.update(k.threadTable).set({status:"running",generation:g.sql`${k.threadTable.generation} + 1`,turns:0,pending:null,outcome:null,endedAt:null,updatedAt:new Date}).where((0,e.eq)(k.threadTable.id,a)),await b.update(k.threadRelayTable).set({accepted:!0}).where((0,e.and)((0,e.eq)(k.threadRelayTable.threadId,a),(0,e.eq)(k.threadRelayTable.kind,"interrupted")))}),O()}async function J(a,b,c){let d=a.select({workId:k.threadDeliveryTable.workId}).from(k.threadDeliveryTable).where((0,e.and)((0,e.eq)(k.threadDeliveryTable.threadId,b),(0,e.eq)(k.threadDeliveryTable.consumed,!1)));await a.update(k.threadWorkTable).set({state:"queued"}).where((0,e.and)((0,e.eq)(k.threadWorkTable.threadId,b),(0,e.eq)(k.threadWorkTable.bot,c),(0,e.inArray)(k.threadWorkTable.state,["waiting","done"]),(0,e.inArray)(k.threadWorkTable.id,d)))}async function K(a,b,c,d,f,h=!0){let i=await j.database.transaction(async i=>{let[j]=await i.select().from(k.threadTable).where((0,e.eq)(k.threadTable.id,a));j||(0,m.publicError)("No such thread.");let l=await i.select().from(k.threadWorkTable).where((0,e.eq)(k.threadWorkTable.threadId,a)).orderBy(k.threadWorkTable.createdAt),n=l.filter(a=>"external"===a.state),p=f?n.find(a=>a.id===f)??(0,m.publicError)("That question is no longer waiting for an answer."):h?function(a,b){let c=b?a.filter(a=>a.caller===b):a;if(c.length<=1)return c[0];(0,m.publicError)(`Several questions are waiting for an answer: ${c.map(a=>`${a.caller} (replyTo ${a.id}): “${(a.result??"").slice(0,160)}”`).join("; ")}. Answer one of them by its replyTo.`)}(n,d):void 0,r=p?.caller??d??j.bot,s=p?l.find(a=>a.id===p.parentId):l.find(a=>a.bot===r&&"running"===a.state)??l.find(a=>a.bot===r&&!P(a.state)&&"external"!==a.state);if(p&&(await i.update(k.threadWorkTable).set({state:"done",result:b}).where((0,e.eq)(k.threadWorkTable.id,p.id)),await i.update(k.threadRelayTable).set({accepted:!0}).where((0,e.eq)(k.threadRelayTable.messageId,p.id))),!s){let b=null;if(r!==j.bot){let c=l.findLast(a=>a.bot===j.bot&&!a.parentId&&"cancelled"!==a.state);c?"done"===c.state&&await i.update(k.threadWorkTable).set({state:"waiting"}).where((0,e.eq)(k.threadWorkTable.id,c.id)):c=(await i.insert(k.threadWorkTable).values({id:crypto.randomUUID(),threadId:a,bot:j.bot,caller:o.ROOM_THURSDAY,state:"waiting"}).returning())[0],b=c.id}s=(await i.insert(k.threadWorkTable).values({id:crypto.randomUUID(),threadId:a,bot:r,caller:b?j.bot:o.ROOM_THURSDAY,parentId:b,state:"queued"}).returning())[0]}p&&await z(i,{key:`answer:${p.id}`,threadId:a,workId:s.id,speaker:"Thread activity",text:`The next message answers your question to the user: “${p.result??""}”`});let t=crypto.randomUUID();return await z(i,{key:t,threadId:a,workId:s.id,speaker:c,text:b,visible:!0}),p&&!await q(i,a,r)&&await J(i,a,r),await i.update(k.threadWorkTable).set({state:"queued"}).where((0,e.and)((0,e.eq)(k.threadWorkTable.threadId,a),(0,e.eq)(k.threadWorkTable.state,"paused"))),await i.update(k.threadTable).set({status:"running",generation:g.sql`${k.threadTable.generation} + 1`,turns:0,wrapped:!1,pending:null,outcome:null,endedAt:null,seen:!1,updatedAt:new Date}).where((0,e.eq)(k.threadTable.id,a)),await i.update(k.threadRelayTable).set({accepted:!0}).where((0,e.and)((0,e.eq)(k.threadRelayTable.threadId,a),(0,e.inArray)(k.threadRelayTable.kind,["interrupted","report"]))),{key:t,to:r,answered:p?{bot:p.caller,question:p.result??""}:null}});return O(),i}async function L(a){await j.database.transaction(async b=>{await b.update(k.threadWorkTable).set({state:"cancelled",generation:g.sql`${k.threadWorkTable.generation} + 1`}).where((0,e.and)((0,e.eq)(k.threadWorkTable.threadId,a),(0,e.inArray)(k.threadWorkTable.state,["queued","running","waiting","external","paused"]))),await b.update(k.threadRelayTable).set({accepted:!0}).where((0,e.eq)(k.threadRelayTable.threadId,a))}),O()}async function M(a,b){let[c]=await j.database.select({bot:k.threadTable.bot}).from(k.threadTable).where((0,e.eq)(k.threadTable.id,a)),d=await j.database.select().from(k.threadMessageTable).where((0,e.and)((0,e.eq)(k.threadMessageTable.threadId,a),(0,e.or)((0,e.eq)(k.threadMessageTable.bot,b),c?.bot===b?g.sql`${k.threadMessageTable.bot} is null AND ${k.threadMessageTable.parent} is null`:void 0))).orderBy(k.threadMessageTable.seq),f=d.findLastIndex(a=>a.compact);return(f>0?[d[0],...d.slice(f)]:d).map(a=>({role:a.role,content:a.content}))}async function N(a){a.length&&(await j.database.update(k.threadRelayTable).set({accepted:!0}).where((0,e.inArray)(k.threadRelayTable.id,a)),O())}a.s(["acceptRoomRelays",0,N,"appendRoomMessage",0,u,"cancelRoom",0,L,"claimRoomWork",0,B,"consumeRoomInbox",0,D,"finishRoomWork",0,F,"listParticipantTranscript",0,M,"listRoomReceipts",0,r,"listRoomWork",0,v,"lowerRoomContextBudget",0,x,"messageKey",0,Q,"noteRoomBreak",0,t,"pauseRoom",0,H,"resumeRoom",0,I,"roomContextBudget",0,w,"sendRoomMessage",0,A,"settleRoom",0,G,"tellRoom",0,K,"withdrawDelivery",0,C]),c()}catch(a){c(a)}},!1),344853,a=>a.a(async(b,c)=>{try{var d=a.i(93321),e=a.i(530385),f=a.i(351674),g=a.i(203469),h=a.i(148016),i=a.i(569572),j=a.i(184838),k=a.i(714428),l=a.i(762008),m=a.i(182248),n=a.i(446957),o=a.i(839430),p=a.i(109955),q=b([j,o]);[j,o]=q.then?(await q)():q;let R=()=>g.appEvents.emit({type:"threads"}),S={id:k.threadTable.id,bot:k.threadTable.bot,label:k.threadTable.label,request:k.threadTable.request,status:k.threadTable.status,outcome:k.threadTable.outcome,pending:k.threadTable.pending,seen:k.threadTable.seen,routineId:k.threadTable.routineId,inputTokens:k.threadTable.inputTokens,outputTokens:k.threadTable.outputTokens,contextTokens:k.threadTable.contextTokens,contextBudget:k.threadTable.contextBudget,createdAt:k.threadTable.createdAt,updatedAt:k.threadTable.updatedAt};async function r(a){let{opening:b,...c}=a,d=await j.database.transaction(async a=>{let[d]=await a.insert(k.threadTable).values({id:crypto.randomUUID(),status:"running",...c}).returning();return await a.insert(k.threadMessageTable).values({threadId:d.id,seq:0,bot:null,parent:null,role:"user",content:b,compact:!1,note:!1}),await a.insert(k.threadWorkTable).values({id:crypto.randomUUID(),threadId:d.id,bot:d.bot,caller:p.ROOM_THURSDAY,state:"queued"}),d});return R(),d}async function s(a,b){await j.database.update(k.threadTable).set({...b,updatedAt:new Date}).where((0,d.eq)(k.threadTable.id,a)),R()}async function t(a){0!==a.length&&(await j.database.transaction(async b=>{await b.update(k.threadTable).set({seen:!0}).where((0,d.inArray)(k.threadTable.id,a)),await b.update(k.threadRelayTable).set({accepted:!0}).where((0,d.inArray)(k.threadRelayTable.threadId,a))}),R())}async function u(a,b,c=null){(b.input||b.output||null!==c)&&(await j.database.update(k.threadTable).set({inputTokens:f.sql`${k.threadTable.inputTokens} + ${b.input}`,outputTokens:f.sql`${k.threadTable.outputTokens} + ${b.output}`,...null===c?{}:{contextTokens:c.tokens,contextBudget:c.budget}}).where((0,d.eq)(k.threadTable.id,a)),R())}async function v(a){let[b]=await j.database.select(S).from(k.threadTable).where((0,d.eq)(k.threadTable.id,a));if(!b)return null;let[c]=await L([b]);return c??null}async function w(a){let[b]=await j.database.select().from(k.threadTable).where((0,d.eq)(k.threadTable.id,a));return b??null}async function x(){let[a,b,c,f]=await Promise.all([j.database.select(S).from(k.threadTable).where((0,d.inArray)(k.threadTable.status,["running","waiting"])).orderBy((0,e.desc)(k.threadTable.updatedAt)),j.database.select(S).from(k.threadTable).where((0,d.inArray)(k.threadTable.status,["done","cancelled"])).orderBy((0,e.desc)(k.threadTable.updatedAt)).limit(i.INBOX_FINISHED),j.database.select(S).from(k.threadTable).where((0,d.and)((0,d.inArray)(k.threadTable.status,["done","cancelled"]),(0,d.eq)(k.threadTable.seen,!1))),j.database.select(S).from(k.threadTable).where((0,d.inArray)(k.threadTable.id,j.database.select({id:k.threadRelayTable.threadId}).from(k.threadRelayTable).where((0,d.eq)(k.threadRelayTable.accepted,!1))))]),g=[...new Map([...a,...b,...c,...f].map(a=>[a.id,a])).values()].sort((a,b)=>b.updatedAt.getTime()-a.updatedAt.getTime());return L(g,a=>{let b;return b=a.status,"running"===b||"waiting"===b})}async function y(){let a=await j.database.select(S).from(k.threadTable).orderBy(f.sql`case when ${k.threadTable.status} in ('running', 'waiting') then 0 else 1 end`,(0,e.desc)(k.threadTable.updatedAt),(0,e.desc)(k.threadTable.id)).limit(i.THREAD_STATUS_LIMIT);return L(a)}async function z(a){return a.length?await j.database.select({id:k.threadTable.id,callId:k.threadTable.callId,label:k.threadTable.label,status:k.threadTable.status,outcome:k.threadTable.outcome}).from(k.threadTable).where((0,d.inArray)(k.threadTable.callId,a)).orderBy(k.threadTable.createdAt):[]}async function A(a,b){let c=(c,f)=>j.database.select({id:k.threadTable.id,owner:k.threadTable.bot,label:k.threadTable.label,status:k.threadTable.status,pending:k.threadTable.pending,updatedAt:k.threadTable.updatedAt}).from(k.threadTable).where((0,d.and)((0,d.inArray)(k.threadTable.status,c),b?(0,d.ne)(k.threadTable.id,b):void 0,(0,d.inArray)(k.threadTable.id,j.database.select({id:k.threadWorkTable.threadId}).from(k.threadWorkTable).where((0,d.eq)(k.threadWorkTable.bot,a))))).orderBy((0,e.desc)(k.threadTable.updatedAt)).limit(f),[f,g]=await Promise.all([c(["running","waiting"],i.BOT_WORK.open),c(["done","cancelled"],i.BOT_WORK.recent)]),h=[...f,...g].map(a=>a.id);if(!h.length)return{open:[],recent:[]};let l=await j.database.select({id:k.threadWorkTable.id,threadId:k.threadWorkTable.threadId,result:k.threadWorkTable.result}).from(k.threadWorkTable).where((0,d.and)((0,d.eq)(k.threadWorkTable.bot,a),(0,d.inArray)(k.threadWorkTable.threadId,h),(0,d.isNotNull)(k.threadWorkTable.result))).orderBy((0,e.desc)(k.threadWorkTable.createdAt)),m=new Map;for(let{id:a,threadId:b,result:c}of l)c?.trim()&&!m.has(b)&&m.set(b,{workId:a,words:c});let n=({pending:a,...b})=>{let c=m.get(b.id);return{...b,workId:c?.workId??null,asking:"waiting"===b.status&&!!a?.messageId,said:c?.words??null,cut:!!c&&c.words.replace(/\s+/g," ").trim().length>i.BOT_WORK.said}};return{open:f.map(n),recent:g.map(n)}}async function B(a,b){if(b.owner===a){let[a]=await j.database.select({request:k.threadTable.request}).from(k.threadTable).where((0,d.eq)(k.threadTable.id,b.id));return a?.request??""}return b.workId?(await j.database.select({text:k.threadDeliveryTable.text}).from(k.threadDeliveryTable).where((0,d.eq)(k.threadDeliveryTable.workId,b.workId)).orderBy(k.threadDeliveryTable.id)).map(a=>a.text).join("\n\n"):""}async function C(a){let b=await j.database.delete(k.threadTable).where((0,d.eq)(k.threadTable.id,a)).returning({id:k.threadTable.id});return b.length&&R(),b.length>0}async function D(){return(await j.database.select({id:k.threadTable.id}).from(k.threadTable).orderBy((0,e.desc)(k.threadTable.createdAt))).map(a=>a.id)}async function E(){return(await j.database.select({id:k.threadTable.id}).from(k.threadTable).where((0,d.eq)(k.threadTable.status,"running"))).map(a=>a.id)}async function F(){return await j.database.select({id:k.threadTable.id,label:k.threadTable.label,status:k.threadTable.status,endedAt:k.threadTable.endedAt,updatedAt:k.threadTable.updatedAt}).from(k.threadTable)}function G(a){let b=new Set;for(let c of a)if(Array.isArray(c))for(let a of c){if("tool-call"!==a.type||a.toolName!==l.TOOL_NAMES.write_file)continue;let c=a.input?.path;"string"==typeof c&&c.trim()&&(b.delete(c.trim()),b.add(c.trim()))}return[...b]}async function H(a){let b=await j.database.select({content:k.threadMessageTable.content}).from(k.threadMessageTable).where((0,d.and)((0,d.eq)(k.threadMessageTable.threadId,a),(0,d.eq)(k.threadMessageTable.role,"assistant"))).orderBy(k.threadMessageTable.seq);return G(b.map(a=>a.content))}async function I(a){let b=a.trim();if(!b)return null;let c=await w(b);if(c)return c;let d=b.toLowerCase();return(await j.database.select().from(k.threadTable).orderBy((0,e.desc)(k.threadTable.updatedAt)).limit(i.THREAD_LABEL_REACH)).find(a=>a.label.toLowerCase()===d)??null}async function J(a,b,c){await j.database.insert(k.threadMessageTable).values({threadId:a,seq:b,...c,compact:c.compact??!1,note:c.note??!1}).onConflictDoUpdate({target:[k.threadMessageTable.threadId,k.threadMessageTable.seq],set:{role:c.role,content:c.content,compact:c.compact??!1,note:c.note??!1}}),R()}async function K(a,b){b.length&&(await j.database.delete(k.threadMessageTable).where((0,d.and)((0,d.eq)(k.threadMessageTable.threadId,a),(0,d.inArray)(k.threadMessageTable.seq,b))),R())}async function L(a,b=()=>!0){if(0===a.length)return[];let c=a.filter(b).map(a=>a.id),e=c.length?await j.database.select().from(k.threadMessageTable).where((0,d.inArray)(k.threadMessageTable.threadId,c)).orderBy(k.threadMessageTable.seq):[],f=a.map(a=>a.id),[g,h,i]=await Promise.all([j.database.select().from(k.threadWorkTable).where((0,d.inArray)(k.threadWorkTable.threadId,f)),j.database.select().from(k.threadDeliveryTable).where((0,d.and)((0,d.inArray)(k.threadDeliveryTable.threadId,f),(0,d.eq)(k.threadDeliveryTable.visible,!0))),j.database.select().from(k.threadRelayTable).where((0,d.and)((0,d.inArray)(k.threadRelayTable.threadId,f),(0,d.eq)(k.threadRelayTable.accepted,!1)))]),q=new Map(a.map(a=>[a.id,a.bot])),r=new Map(g.map(a=>[a.id,a.caller])),s=new Map;for(let a of e){let b=s.get(a.threadId)??[];b.push(...function(a,b){if(a.hidden)return[];let c={seq:a.seq,bot:a.bot,parent:a.parent,to:"user"===a.role?a.bot:b,at:a.createdAt},d=b=>`${a.id}-${b}`,e=a.content;if("user"===a.role){if(0===a.seq)return[];let b="string"==typeof e?e:e.flatMap(a=>"text"===a.type&&a.text?[a.text]:[]).join("\n").trim();if(!b)return[];if(a.compact)return[{...c,id:d(0),kind:"note",text:b}];if(a.note){let a=b.endsWith(p.RESUME_CHECK)?b.slice(0,-p.RESUME_CHECK.length).trimEnd():b;return[{...c,id:d(0),kind:"stop",text:a}]}return[{...c,id:d(0),kind:"user",text:(0,n.untagSpeaker)(b)}]}if("assistant"===a.role){let b=a.content;if("string"==typeof b)return b.trim()?[{...c,id:d(0),kind:"text",text:b.trim()}]:[];let e=[];return b.forEach((b,f)=>{if("text"===b.type){let a=b.text.trim();a&&e.push({...c,id:d(f),kind:"text",text:a});return}if("tool-result"===b.type)return void e.push(P(c,d(f),b));if("tool-call"!==b.type)return;let g=b.input??{};if(b.toolName===l.TOOL_NAMES.send_message){let h;e.push({...c,id:d(f),kind:"ask",callId:b.toolCallId,to:(h=String(g.to??"").trim()).toLowerCase()===p.ROOM_THURSDAY.toLowerCase()?p.ROOM_THURSDAY:h,text:String(g.text??""),question:"question"===g.kind,..."question"===g.kind&&a.bot?{questionId:(0,o.messageKey)(a.threadId,a.bot,b.toolCallId)}:{}})}else b.toolName===l.TOOL_NAMES.bash?e.push({...c,id:d(f),kind:"tool",callId:b.toolCallId,name:b.toolName,input:(0,m.clip)(String(g.command??""),120),note:M(g)}):e.push({...c,id:d(f),kind:"tool",callId:b.toolCallId,name:b.toolName,input:N(b.toolName,g),note:M(g),path:b.toolName===l.TOOL_NAMES.write_file?U(g,"path")??null:null})}),e}if("tool"===a.role){let b=[];return a.content.forEach((a,e)=>{"tool-result"!==a.type||(a.toolName!==l.TOOL_NAMES.send_message||"error-text"===a.output.type)&&b.push(P(c,d(e),a))}),b}return[]}(a,(a.parent?r.get(a.parent):null)??q.get(a.threadId)??"")),s.set(a.threadId,b)}return a.map(a=>{let b=g.filter(b=>b.threadId===a.id),c=["running","queued","paused","waiting","done","cancelled"],d=[...new Set(b.map(a=>a.bot))].filter(a=>a!==p.ROOM_THURSDAY).map(a=>({bot:a,state:b.filter(b=>b.bot===a).sort((a,b)=>c.indexOf(a.state)-c.indexOf(b.state))[0].state}));return{...function(a,b){let{pending:c,inputTokens:d,outputTokens:e,...f}=a;return{...f,ask:"waiting"===a.status?{question:a.outcome??"",options:c?.options??[],messageId:c?.messageId,bot:c?.bot}:null,tokens:{input:d,output:e},lines:b}}(a,s.get(a.id)??[]),room:{participants:d,questions:b.filter(a=>"external"===a.state).map(a=>({id:a.id,bot:a.caller,text:a.result??"",options:a.options})),deliveries:h.filter(b=>b.threadId===a.id).map(c=>({id:c.key,bot:b.find(a=>a.id===c.workId)?.bot??a.bot,text:c.text,delivered:c.consumed})),relays:i.filter(b=>b.threadId===a.id)}}})}let T=["query","command","prompt","url","path","pattern","request","question","title","name","thread","text"],U=(a,b)=>{let c=a[b];return"string"==typeof c&&c.trim()?c:null};function M(a){let b=U(a,"description");return b?(0,m.clip)(b,120):null}function N(a,b){let c=b??{};if("object"!=typeof c||Array.isArray(c))return(0,m.clip)(String(b??""),120);if(a===l.TOOL_NAMES.bash)return M(c)??(0,m.clip)(String(c.command??""),120);if(a===l.TOOL_NAMES.tool_call||a===l.TOOL_NAMES.tool_search){let a=Array.isArray(c.tools)?c.tools.map(String).join(", "):String(c.tool??""),b=c.args??null,d=b&&"object"==typeof b?String(c.server??"")===i.STUDIO_SERVER?O(b):JSON.stringify(b):"";return(0,m.clip)([String(c.server??""),a,d].filter(Boolean).join(" "),120)}let d=O(c);return d?(0,m.clip)(d,120):Object.keys(c).length?(0,m.clip)(JSON.stringify(c),120):""}function O(a){for(let b of T){let c=U(a,b);if(c)return c}for(let b of Object.keys(a)){let c=U(a,b);if(c)return c}return""}let V=/https?:\/\/\S+(?: · \d{4}-\d{2}-\d{2})?\s*$/,W=" — ";function P(a,b,c){let d=c.toolName===l.TOOL_NAMES.web_search,e=function a(b,c,d=!1){var e;if(null==b)return[];if("string"==typeof b)return Q(b,c,d);if("object"!=typeof b)return Q(String(b),c,d);switch(b.type){case"text":case"error-text":return Q(String(b.value??""),c,d);case"json":case"error-json":return a(b.value,c,d);case"execution-denied":return Q("Denied.",c,d);case"content":{if(!Array.isArray(b.value))return[];let a=[];for(let e of b.value){if("text"===e.type&&"string"==typeof e.text){a.push(...Q(e.text,c,d));continue}let b=function(a){let b=String(a.mediaType??"");if(!b.startsWith("image/"))return null;let c=a.data;return"string"==typeof c?`data:${b};base64,${c}`:c?.type==="url"&&c.url?c.url:c?.type==="data"&&"string"==typeof c.data?`data:${b};base64,${c.data}`:null}(e);b&&a.push({type:"image",src:b})}return a}}return"string"==typeof b.path&&String(b.mediaType??"").startsWith("image/")?[{type:"text",text:b.path},{type:"image",src:h.queryKey.file(b.path)}]:Array.isArray(b.sources)?b.sources.map(a=>String(a?.title??"")).filter(Boolean).slice(0,c).map(a=>({type:"text",text:a})):"string"==typeof b.stdout?Q(b.stdout||String(b.stderr??""),c,d):"string"==typeof b.answer?Q(b.answer,c,d):Q(d?(e=b,Array.isArray(e)?JSON.stringify(e,null,2):Object.entries(e).map(([a,b])=>"string"==typeof b&&b.includes("\n")?`${a}:
4
4
  ${b}`:`${a}: ${JSON.stringify(b,null,2)}`).join("\n")):JSON.stringify(b),c,d)}(c.output,d?i.FULL_RESULT_LINES:5),f=e.flatMap(a=>"text"===a.type?[a.text]:[]),g=d?f.filter(a=>V.test(a)):[],j=(g.length?g:f).slice(0,4);return{...a,id:b,kind:"tool-result",callId:c.toolCallId,name:c.toolName,results:j.map(a=>({type:"text",text:g.length?function(a){let b=a.replace(/\s+/g," ").trim(),c=V.exec(b);if(!c||b.length<=200)return(0,m.clip)(b,200);let d=c[0].trim(),e=b.slice(0,c.index).replace(/[\s—-]+$/,""),f=200-d.length-W.length;return e&&f>1?`${(0,m.clip)(e,f)}${W}${d}`:d}(a):(0,m.clip)(a,200)})),more:f.length>j.length||e.length>f.length||j.some(a=>a.length>200)}}function Q(a,b,c=!1){if(c){let c=a.split("\n"),d=c.slice(0,b);c.length>b&&d.push(`… ${c.length-b} more lines`);let e=d.join("\n").trimEnd();return e?[{type:"text",text:e}]:[]}return a.split("\n").map(a=>a.trim()).filter(Boolean).slice(0,b).map(a=>({type:"text",text:a}))}a.s(["addThreadUsage",0,u,"argumentLine",0,N,"deleteMessages",0,K,"deleteThread",0,C,"findThread",0,w,"findThreadView",0,v,"insertThread",0,r,"listAllThreadIds",0,D,"listBotWork",0,A,"listCallJobs",0,z,"listInboxThreads",0,x,"listRunningThreadIds",0,E,"listThreadFolders",0,F,"listThreadOverview",0,y,"listWrittenPaths",0,H,"markSeen",0,t,"readBotAsk",0,B,"resolveThread",0,I,"updateThread",0,s,"upsertMessage",0,J,"writtenPathsIn",0,G]),c()}catch(a){c(a)}},!1)];
5
5
 
6
- //# sourceMappingURL=features_133mpna._.js.map
6
+ //# sourceMappingURL=features_bot_0tb4ui-._.js.map
@@ -0,0 +1,20 @@
1
+ module.exports=[405593,a=>{"use strict";var b,c=a.i(187924),d=a.i(987234),e=a.i(823319),f=a.i(692867),g=a.i(626335),h=a.i(752562),i=a.i(141146),j=a.i(164831);let k={name:"clapperboard",size:24,node:[["path",{d:"m12.296 3.464 3.02 3.956",key:"qash78"}],["path",{d:"M20.2 6 3 11l-.9-2.4c-.3-1.1.3-2.2 1.3-2.5l13.5-4c1.1-.3 2.2.3 2.5 1.3z",key:"1h7j8b"}],["path",{d:"M3 11h18v8a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z",key:"4lm6w1"}],["path",{d:"m6.18 5.276 3.1 3.899",key:"zjj9t3"}]]};k.node;let l=(0,j.default)(k);var m=a.i(607396),m=m,n=a.i(71215),o=a.i(126766),p=a.i(233540),q=a.i(26268),r=a.i(572131),s=a.i(767561),t=a.i(340695),u=a.i(205522),v=a.i(446181),w=a.i(630342),x=a.i(341889),y=a.i(950463),z=a.i(287702),A=a.i(852307),B=a.i(908531),C=a.i(608902),D=a.i(379630),E=a.i(61876),F=a.i(913834),G=a.i(639210),H=a.i(906548),I=a.i(478978),J=a.i(585650),K=a.i(168370),L=((b=L||{})[b.Border=-1]="Border",b[b.Data=0]="Data",b[b.Function=1]="Function",b[b.Position=2]="Position",b[b.Timing=3]="Timing",b[b.Alignment=4]="Alignment",b);let M=[1,0],N=[2,3],O=[3,2],P={L:[0,1],M:M,Q:N,H:O},Q=/^\d*$/,R=/^[A-Z0-9 $%*+./:-]*$/,S="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:",T=[[-1,7,10,15,20,26,18,20,24,30,18,20,24,26,30,22,24,28,30,28,28,28,28,30,30,26,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,10,16,26,18,24,16,18,22,22,26,30,22,22,24,24,28,28,26,26,26,26,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28],[-1,13,22,18,26,18,24,18,22,20,24,28,26,24,20,30,24,28,28,26,30,28,30,30,30,30,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,17,28,22,16,22,28,26,26,24,28,24,28,22,24,24,30,28,28,26,28,30,24,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30]],U=[[-1,1,1,1,1,1,2,2,2,2,4,4,4,4,4,6,6,6,6,7,8,8,9,9,10,12,12,12,13,14,15,16,17,18,19,19,20,21,22,24,25],[-1,1,1,1,2,2,4,4,4,5,5,5,8,9,9,10,10,11,13,14,16,17,17,18,20,21,23,25,26,28,29,31,33,35,37,38,40,43,45,47,49],[-1,1,1,2,2,4,4,6,6,8,8,8,10,12,16,12,17,16,18,21,20,23,23,25,27,29,34,34,35,38,40,43,45,48,51,53,56,59,62,65,68],[-1,1,1,2,4,4,4,5,6,8,8,11,11,16,16,18,16,19,21,25,25,25,34,30,32,35,37,40,42,45,48,51,54,57,60,63,66,70,74,77,81]];class V{constructor(a,b,c,d){if(this.version=a,this.ecc=b,a<1||a>40)throw RangeError("Version value out of range");if(d<-1||d>7)throw RangeError("Mask value out of range");this.size=4*a+17;const e=Array.from({length:this.size}).fill(!1);for(let a=0;a<this.size;a++)this.modules.push(e.slice()),this.types.push(e.map(()=>0));this.drawFunctionPatterns();const f=this.addEccAndInterleave(c);if(this.drawCodewords(f),-1===d){let a=1e9;for(let b=0;b<8;b++){this.applyMask(b),this.drawFormatBits(b);const c=this.getPenaltyScore();c<a&&(d=b,a=c),this.applyMask(b)}}this.mask=d,this.applyMask(d),this.drawFormatBits(d)}size;mask;modules=[];types=[];getModule(a,b){return a>=0&&a<this.size&&b>=0&&b<this.size&&this.modules[b][a]}drawFunctionPatterns(){for(let a=0;a<this.size;a++)this.setFunctionModule(6,a,a%2==0,L.Timing),this.setFunctionModule(a,6,a%2==0,L.Timing);this.drawFinderPattern(3,3),this.drawFinderPattern(this.size-4,3),this.drawFinderPattern(3,this.size-4);let a=this.getAlignmentPatternPositions(),b=a.length;for(let c=0;c<b;c++)for(let d=0;d<b;d++)(0!==c||0!==d)&&(0!==c||d!==b-1)&&(c!==b-1||0!==d)&&this.drawAlignmentPattern(a[c],a[d]);this.drawFormatBits(0),this.drawVersion()}drawFormatBits(a){let b=this.ecc[1]<<3|a,c=b;for(let a=0;a<10;a++)c=c<<1^(c>>>9)*1335;let d=(b<<10|c)^21522;for(let a=0;a<=5;a++)this.setFunctionModule(8,a,X(d,a));this.setFunctionModule(8,7,X(d,6)),this.setFunctionModule(8,8,X(d,7)),this.setFunctionModule(7,8,X(d,8));for(let a=9;a<15;a++)this.setFunctionModule(14-a,8,X(d,a));for(let a=0;a<8;a++)this.setFunctionModule(this.size-1-a,8,X(d,a));for(let a=8;a<15;a++)this.setFunctionModule(8,this.size-15+a,X(d,a));this.setFunctionModule(8,this.size-8,!0)}drawVersion(){if(this.version<7)return;let a=this.version;for(let b=0;b<12;b++)a=a<<1^(a>>>11)*7973;let b=this.version<<12|a;for(let a=0;a<18;a++){let c=X(b,a),d=this.size-11+a%3,e=Math.floor(a/3);this.setFunctionModule(d,e,c),this.setFunctionModule(e,d,c)}}drawFinderPattern(a,b){for(let c=-4;c<=4;c++)for(let d=-4;d<=4;d++){let e=Math.max(Math.abs(d),Math.abs(c)),f=a+d,g=b+c;f>=0&&f<this.size&&g>=0&&g<this.size&&this.setFunctionModule(f,g,2!==e&&4!==e,L.Position)}}drawAlignmentPattern(a,b){for(let c=-2;c<=2;c++)for(let d=-2;d<=2;d++)this.setFunctionModule(a+d,b+c,1!==Math.max(Math.abs(d),Math.abs(c)),L.Alignment)}setFunctionModule(a,b,c,d=L.Function){this.modules[b][a]=c,this.types[b][a]=d}addEccAndInterleave(a){let b=this.version,c=this.ecc;if(a.length!==ad(b,c))throw RangeError("Invalid argument");let d=U[c[0]][b],e=T[c[0]][b],f=Math.floor(ac(b)/8),g=d-f%d,h=Math.floor(f/d),i=[],j=function(a){if(a<1||a>255)throw RangeError("Degree out of range");let b=[];for(let c=0;c<a-1;c++)b.push(0);b.push(1);let c=1;for(let d=0;d<a;d++){for(let a=0;a<b.length;a++)b[a]=ae(b[a],c),a+1<b.length&&(b[a]^=b[a+1]);c=ae(c,2)}return b}(e);for(let b=0,c=0;b<d;b++){let d=a.slice(c,c+h-e+(b<g?0:1));c+=d.length;let f=function(a,b){let c=b.map(a=>0);for(let d of a){let a=d^c.shift();c.push(0),b.forEach((b,d)=>c[d]^=ae(b,a))}return c}(d,j);b<g&&d.push(0),i.push(d.concat(f))}let k=[];for(let a=0;a<i[0].length;a++)i.forEach((b,c)=>{(a!==h-e||c>=g)&&k.push(b[a])});return k}drawCodewords(a){if(a.length!==Math.floor(ac(this.version)/8))throw RangeError("Invalid argument");let b=0;for(let c=this.size-1;c>=1;c-=2){6===c&&(c=5);for(let d=0;d<this.size;d++)for(let e=0;e<2;e++){let f=c-e,g=(c+1&2)==0?this.size-1-d:d;!this.types[g][f]&&b<8*a.length&&(this.modules[g][f]=X(a[b>>>3],7-(7&b)),b++)}}}applyMask(a){if(a<0||a>7)throw RangeError("Mask value out of range");for(let b=0;b<this.size;b++)for(let c=0;c<this.size;c++){let d;switch(a){case 0:d=(c+b)%2==0;break;case 1:d=b%2==0;break;case 2:d=c%3==0;break;case 3:d=(c+b)%3==0;break;case 4:d=(Math.floor(c/3)+Math.floor(b/2))%2==0;break;case 5:d=c*b%2+c*b%3==0;break;case 6:d=(c*b%2+c*b%3)%2==0;break;case 7:d=((c+b)%2+c*b%3)%2==0;break;default:throw Error("Unreachable")}!this.types[b][c]&&d&&(this.modules[b][c]=!this.modules[b][c])}}getPenaltyScore(){let a=0;for(let b=0;b<this.size;b++){let c=!1,d=0,e=[0,0,0,0,0,0,0];for(let f=0;f<this.size;f++)this.modules[b][f]===c?5==++d?a+=3:d>5&&a++:(this.finderPenaltyAddHistory(d,e),c||(a+=40*this.finderPenaltyCountPatterns(e)),c=this.modules[b][f],d=1);a+=40*this.finderPenaltyTerminateAndCount(c,d,e)}for(let b=0;b<this.size;b++){let c=!1,d=0,e=[0,0,0,0,0,0,0];for(let f=0;f<this.size;f++)this.modules[f][b]===c?5==++d?a+=3:d>5&&a++:(this.finderPenaltyAddHistory(d,e),c||(a+=40*this.finderPenaltyCountPatterns(e)),c=this.modules[f][b],d=1);a+=40*this.finderPenaltyTerminateAndCount(c,d,e)}for(let b=0;b<this.size-1;b++)for(let c=0;c<this.size-1;c++){let d=this.modules[b][c];d===this.modules[b][c+1]&&d===this.modules[b+1][c]&&d===this.modules[b+1][c+1]&&(a+=3)}let b=0;for(let a of this.modules)b=a.reduce((a,b)=>a+ +!!b,b);let c=this.size*this.size;return a+(Math.ceil(Math.abs(20*b-10*c)/c)-1)*10}getAlignmentPatternPositions(){if(1===this.version)return[];{let a=Math.floor(this.version/7)+2,b=32===this.version?26:2*Math.ceil((4*this.version+4)/(2*a-2)),c=[6];for(let d=this.size-7;c.length<a;d-=b)c.splice(1,0,d);return c}}finderPenaltyCountPatterns(a){let b=a[1],c=b>0&&a[2]===b&&a[3]===3*b&&a[4]===b&&a[5]===b;return(c&&a[0]>=4*b&&a[6]>=b?1:0)+(c&&a[6]>=4*b&&a[0]>=b?1:0)}finderPenaltyTerminateAndCount(a,b,c){return a&&(this.finderPenaltyAddHistory(b,c),b=0),b+=this.size,this.finderPenaltyAddHistory(b,c),this.finderPenaltyCountPatterns(c)}finderPenaltyAddHistory(a,b){0===b[0]&&(a+=this.size),b.pop(),b.unshift(a)}}function W(a,b,c){if(b<0||b>31||a>>>b!=0)throw RangeError("Value out of range");for(let d=b-1;d>=0;d--)c.push(a>>>d&1)}function X(a,b){return(a>>>b&1)!=0}class Y{constructor(a,b,c){if(this.mode=a,this.numChars=b,this.bitData=c,b<0)throw RangeError("Invalid argument");this.bitData=c.slice()}getData(){return this.bitData.slice()}}let Z=[1,10,12,14],$=[2,9,11,13],_=[4,8,16,16];function aa(a,b){return a[Math.floor((b+7)/17)+1]}function ab(a){let b=[];for(let c of a)W(c,8,b);return new Y(_,a.length,b)}function ac(a){if(a<1||a>40)throw RangeError("Version number out of range");let b=(16*a+128)*a+64;if(a>=2){let c=Math.floor(a/7)+2;b-=(25*c-10)*c-55,a>=7&&(b-=36)}return b}function ad(a,b){return Math.floor(ac(a)/8)-T[b[0]][a]*U[b[0]][a]}function ae(a,b){if(a>>>8!=0||b>>>8!=0)throw RangeError("Byte out of range");let c=0;for(let d=7;d>=0;d--)c=c<<1^(c>>>7)*285^(b>>>d&1)*a;return c}var af=a.i(986368),ag=a.i(545097),ah=a.i(619477),ai=a.i(313237),aj=a.i(759497),ak=a.i(497895),al=a.i(405050);let am=(0,al.createServerReference)("7f5aa08b7d2d5a47e5b26a41022a15d3ec116a260d",al.callServer,void 0,al.findSourceMapURL,"forgetReachAction");var an=a.i(907602);let ao={telegram:"telegram.org",discord:"discord.com",slack:"slack.com"},ap=`display_information:
2
+ name: Thursday
3
+ features:
4
+ app_home:
5
+ messages_tab_enabled: true
6
+ messages_tab_read_only_enabled: false
7
+ bot_user:
8
+ display_name: Thursday
9
+ oauth_config:
10
+ scopes:
11
+ bot: [chat:write, im:history, im:read, users:read, files:read, files:write]
12
+ settings:
13
+ event_subscriptions:
14
+ bot_events: [message.im]
15
+ interactivity:
16
+ is_enabled: true
17
+ socket_mode_enabled: true
18
+ `,aq=({children:a})=>(0,c.jsx)("span",{className:"font-medium text-foreground",children:a}),ar={telegram:[{body:(0,c.jsxs)(c.Fragment,{children:["In Telegram, write to ",(0,c.jsx)(aq,{children:"@BotFather"}),", send ",(0,c.jsx)(aq,{children:"/newbot"})," and pick a name. It answers with a ",(0,c.jsx)(aq,{children:"token"}),"."]}),slot:{open:"https://t.me/BotFather",label:"Open @BotFather"}},{body:(0,c.jsx)(c.Fragment,{children:"Paste the token here."}),slot:{key:an.TELEGRAM_TOKEN_KEY,looks:"123456789:AAE…"}},{body:(0,c.jsx)(c.Fragment,{children:"From your phone, write anything to your bot."}),slot:{says:"Point your phone's camera at it to open the chat."}},{body:(0,c.jsxs)(c.Fragment,{children:["A question with a code appears on this computer. Press ",(0,c.jsx)(aq,{children:"Allow"})," if your phone shows the same code."]})}],discord:[{body:(0,c.jsxs)(c.Fragment,{children:["At ",(0,c.jsx)(aq,{children:"discord.com/developers"}),", make a ",(0,c.jsx)(aq,{children:"New Application"}),". So nobody else can add it to a server, set ",(0,c.jsx)(aq,{children:"Install Link"})," to"," ",(0,c.jsx)(aq,{children:"None"})," on its ",(0,c.jsx)(aq,{children:"Installation"})," page and turn off"," ",(0,c.jsx)(aq,{children:"Public Bot"})," on its ",(0,c.jsx)(aq,{children:"Bot"})," page. There, press"," ",(0,c.jsx)(aq,{children:"Reset Token"})," and copy it."]}),slot:{open:"https://discord.com/developers/applications",label:"Open discord.com/developers"}},{body:(0,c.jsx)(c.Fragment,{children:"Paste the token here."}),slot:{key:an.DISCORD_TOKEN_KEY,looks:"MTE…"}},{body:(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(aq,{children:"Add the bot to a server of your own"})," — Discord only delivers a message to a bot you share a server with. A private server made for this is fine."]}),slot:{says:"Point your phone's camera at it, or open it here. It asks which server, and adds the bot with no permissions in it.",does:"Add the bot to a server"}},{body:(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(aq,{children:"Send the bot a direct message"}),", not in the server: on a phone, tap the bot in the server's member list, then ",(0,c.jsx)(aq,{children:"Message"}),". A question with a code appears here: press ",(0,c.jsx)(aq,{children:"Allow"})," if your phone shows the same code."]})}],slack:[{body:(0,c.jsxs)(c.Fragment,{children:["At ",(0,c.jsx)(({href:a,children:b})=>(0,c.jsx)("a",{href:a,target:"_blank",rel:"noreferrer",className:"font-medium text-foreground underline underline-offset-4 outline-none focus-visible:ring-3 focus-visible:ring-ring/50",children:b}),{href:"https://api.slack.com/apps",children:"api.slack.com/apps"}),","," ",(0,c.jsx)(aq,{children:"Create New App › From a manifest"}),", and paste the manifest."]}),slot:{manifest:!0}},{body:(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(aq,{children:"Basic Information › App-Level Tokens"}),": generate one with"," ",(0,c.jsx)(aq,{children:"connections:write"}),". It starts with xapp-."]}),slot:{key:an.SLACK_APP_TOKEN_KEY,looks:"xapp-…"}},{body:(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(aq,{children:"Install App"})," to your workspace. The Bot User OAuth Token starts with xoxb-."]}),slot:{key:an.SLACK_BOT_TOKEN_KEY,looks:"xoxb-…"}},{body:(0,c.jsxs)(c.Fragment,{children:["In Slack, open the app under ",(0,c.jsx)(aq,{children:"Apps"})," and write in its"," ",(0,c.jsx)(aq,{children:"Messages"})," tab. A question with a code appears here: press"," ",(0,c.jsx)(aq,{children:"Allow"})," if Slack shows the same code."]})}]};function as(){let a=(0,aj.useServerRoute)(s.queryKey.config),b=(0,aj.useServerRoute)(s.queryKey.reach);(0,af.useAppEvent)({reach:()=>void(0,aj.revalidate)(s.queryKey.reach)});let d=b=>(0,I.isConfigSet)(a.data,b),e=a=>b.data?.channels.find(b=>b.name===a)??null,f=a=>!!e(a)?.allowed,g=an.REACH_CHANNELS.find(a=>e(a)?.refused),h=an.REACH_CHANNELS.find(a=>an.REACH_KEYS[a].every(d)&&!f(a)),i=!an.REACH_CHANNELS.some(f),[j,k]=(0,r.useState)(g??h??(i?an.REACH_CHANNELS[0]:null));return(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsx)(ah.SettingItems,{children:an.REACH_CHANNELS.map(a=>(0,c.jsx)(at,{name:a,status:e(a),tokensIn:an.REACH_KEYS[a].filter(d).length,isSet:d,open:j===a,onOpen:()=>k(j===a?null:a)},a))}),(0,c.jsx)(ah.SettingNote,{children:"Only the one person you allow can write, and only direct messages are read. Work started here runs whether or not a tab is open, while Thursday is running on this computer."})]})}function at({name:a,status:b,tokensIn:d,isSet:e,open:f,onOpen:g}){var h;let j,k,l,m,n=ar[a],p=b?.refused??null,q=(h={connected:!!b?.bot,allowed:!!b?.allowed,refused:p},j=n.map(a=>a.slot&&"key"in a.slot?a.slot.key:null),k=a=>!e(a)||a===h.refused,l=j.findIndex(a=>a&&k(a)),m=j.reduce((a,b,c)=>b?c:a,-1),n.map((a,b)=>{let c=j[b];return c?k(c)?b===l?"now":"later":"done":l>=0?b<l?h.refused?"done":"flat":"later":h.allowed||b<m?"done":h.connected?"now":"flat"})),r=!!b?.bot&&!b?.allowed&&!p;return(0,c.jsxs)("div",{children:[(0,c.jsxs)("button",{type:"button",onClick:g,"aria-expanded":f,className:"flex w-full items-center gap-3 px-4 py-3 text-left outline-none focus-visible:ring-3 focus-visible:ring-ring/50",children:[(0,c.jsx)(x.SiteIcon,{host:ao[a],className:"size-4 rounded-[4px]",fallback:(0,c.jsx)(o.KeyRound,{className:"size-4 text-muted-foreground"})}),(0,c.jsx)("span",{className:"text-sm font-medium",children:an.REACH_LABEL[a]}),(0,c.jsx)("span",{className:"min-w-0 flex-1 truncate",children:(0,c.jsx)(au,{status:b,tokensIn:d,tokens:an.REACH_KEYS[a].length})}),(0,c.jsx)(i.ChevronRight,{className:(0,ak.cn)("size-4 shrink-0 text-muted-foreground transition-transform",f&&"rotate-90")})]}),f&&(0,c.jsxs)("div",{className:"px-4 pt-1 pb-4",children:[(0,c.jsx)("ol",{className:"space-y-3",children:n.map((a,d)=>(0,c.jsx)(av,{n:d+1,step:a,state:q[d],set:!!a.slot&&"key"in a.slot&&e(a.slot.key),refused:a.slot&&"key"in a.slot&&a.slot.key===p?b?.problem??"":null,link:b?.link??null,waiting:r&&d===n.length-1},d))}),b?.allowed&&(0,c.jsx)(aD,{name:a,who:b.allowed.name,stopped:!!p})]})]})}function au({status:a,tokensIn:b,tokens:d}){let e="text-xs";return b<d?(0,c.jsx)("span",{className:(0,ak.cn)(e,"text-muted-foreground"),children:b?`${b} of ${d} tokens in`:"Not set"}):a?.refused?(0,c.jsxs)("span",{className:(0,ak.cn)(e,"text-destructive"),children:["Stopped — ",an.REACH_LABEL[a.name]," turned the token away"]}):a?.problem?(0,c.jsx)(ag.ShinyText,{text:`${a.bot?"Reconnecting":"Connecting"}… ${a.problem}`,className:(0,ak.cn)(e,"align-middle")}):a?.allowed?(0,c.jsxs)("span",{className:(0,ak.cn)(e,"text-muted-foreground"),children:["Listening as ",a.bot,". ",a.allowed.name," is let in."]}):a?.bot?(0,c.jsx)(ag.ShinyText,{text:`Listening as ${a.bot} — waiting for your first message`,tone:"waiting",className:(0,ak.cn)(e,"align-middle")}):(0,c.jsx)(ag.ShinyText,{text:"Connecting…",className:(0,ak.cn)(e,"align-middle")})}function av({n:a,step:b,state:d,set:e,refused:f,link:g,waiting:h}){return(0,c.jsxs)("li",{className:"flex gap-3 text-[13px] leading-relaxed",children:[(0,c.jsx)(aw,{n:a,state:d}),(0,c.jsxs)("div",{className:"min-w-0 flex-1 space-y-2.5",children:[(0,c.jsx)("p",{className:(0,ak.cn)("done"===d||"later"===d?"text-muted-foreground/60 **:text-inherit":"text-muted-foreground"),children:b.body}),(0,c.jsx)(ax,{slot:b.slot,state:d,set:e,refused:f,link:g,waiting:h})]})]})}function aw({n:a,state:b}){return"done"===b?(0,c.jsx)("span",{className:"mt-0.5 grid size-5 shrink-0 place-items-center rounded-full bg-foreground text-background",children:(0,c.jsx)(h.Check,{className:"size-3"})}):(0,c.jsx)("span",{className:(0,ak.cn)("mt-0.5 grid size-5 shrink-0 place-items-center rounded-full bg-background font-mono text-[10.5px] ring-1","now"===b?(0,ak.cn)(ak.WAITING_INK,"ring-waiting/40"):"text-muted-foreground ring-border/60","later"===b&&"opacity-60"),children:a})}function ax({slot:a,state:b,set:d,refused:e,link:f,waiting:g}){let h=g&&(0,c.jsx)(ag.ShinyText,{text:"Waiting for your first message…",tone:"waiting"});return"later"===b?null:a&&"key"in a?(0,c.jsx)(aB,{configKey:a.key,looks:a.looks,set:d,refused:e}):"done"===b?a&&"says"in a&&f?(0,c.jsx)(aA,{href:f,children:a.does??az(f)}):null:a?"open"in a?(0,c.jsx)(aA,{href:a.open,children:a.label}):"manifest"in a?(0,c.jsx)(aC,{}):f?(0,c.jsxs)("div",{className:"space-y-2.5",children:[(0,c.jsx)(ay,{link:f,says:a.says,does:a.does}),h]}):h||null:h||null}function ay({link:a,says:b,does:d}){let{size:e,data:f}=function(a){let{ecc:b="L",boostEcc:c=!1,minVersion:d=1,maxVersion:e=40,maskPattern:f=-1,border:g=1}={},h="string"==typeof a?function(a){var b,c;if(""===a)return[];if(b=a,Q.test(b))return[function(a){var b;if(b=a,!Q.test(b))throw RangeError("String contains non-numeric characters");let c=[];for(let b=0;b<a.length;){let d=Math.min(a.length-b,3);W(Number.parseInt(a.substring(b,b+d),10),3*d+1,c),b+=d}return new Y(Z,a.length,c)}(a)];return(c=a,R.test(c))?[function(a){var b;let c;if(b=a,!R.test(b))throw RangeError("String contains unencodable characters in alphanumeric mode");let d=[];for(c=0;c+2<=a.length;c+=2){let b=45*S.indexOf(a.charAt(c));W(b+=S.indexOf(a.charAt(c+1)),11,d)}return c<a.length&&W(S.indexOf(a.charAt(c)),6,d),new Y($,a.length,d)}(a)]:[ab(function(a){a=encodeURI(a);let b=[];for(let c=0;c<a.length;c++)"%"!==a.charAt(c)?b.push(a.charCodeAt(c)):(b.push(Number.parseInt(a.substring(c+1,c+3),16)),c+=2);return b}(a))]}(a):Array.isArray(a)?[ab(a)]:void 0;if(!h)throw Error(`uqr only supports encoding string and binary data, but got: ${typeof a}`);let i=function(a,b,c=1,d=40,e=-1,f=!0){let g,h;if(!(1<=c&&c<=d&&d<=40)||e<-1||e>7)throw RangeError("Invalid value");for(g=c;;g++){let c=8*ad(g,b),e=function(a,b){let c=0;for(let d of a){let a=aa(d.mode,b);if(d.numChars>=1<<a)return 1/0;c+=4+a+d.bitData.length}return c}(a,g);if(e<=c){h=e;break}if(g>=d)throw RangeError("Data too long")}for(let a of[M,N,O])f&&h<=8*ad(g,a)&&(b=a);let i=[];for(let b of a)for(let a of(W(b.mode[0],4,i),W(b.numChars,aa(b.mode,g),i),b.getData()))i.push(a);let j=8*ad(g,b);W(0,Math.min(4,j-i.length),i),W(0,(8-i.length%8)%8,i);for(let a=236;i.length<j;a^=253)W(a,8,i);let k=Array.from({length:Math.ceil(i.length/8)},()=>0);return i.forEach((a,b)=>k[b>>>3]|=a<<7-(7&b)),new V(g,b,k,e)}(h,P[b],d,e,f,c);return function(a,b=1){if(!b)return a;let{size:c}=a,d=c+2*b;a.size=d,a.data.forEach(a=>{for(let c=0;c<b;c++)a.unshift(!1),a.push(!1)});for(let c=0;c<b;c++)a.data.unshift(Array.from({length:d},a=>!1)),a.data.push(Array.from({length:d},a=>!1));let e=L.Border;a.types.forEach(a=>{for(let c=0;c<b;c++)a.unshift(e),a.push(e)});for(let c=0;c<b;c++)a.types.unshift(Array.from({length:d},a=>e)),a.types.push(Array.from({length:d},a=>e));return a}({version:i.version,maskPattern:i.mask,size:i.size,data:i.modules,types:i.types},g)}(a),g=az(a);return(0,c.jsxs)("div",{className:"flex flex-wrap items-center gap-4",children:[(0,c.jsx)("div",{className:"rounded-lg bg-white p-2.5",children:(0,c.jsx)("svg",{viewBox:`0 0 ${e} ${e}`,className:"block size-31 text-black",role:"img","aria-label":`A picture of ${g} for a phone camera`,children:f.flatMap((a,b)=>a.map((a,d)=>a?(0,c.jsx)("rect",{x:d,y:b,width:1,height:1,fill:"currentColor"},`${d}-${b}`):null))})}),(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsx)("p",{className:"text-muted-foreground",children:b}),(0,c.jsx)(aA,{href:a,children:d??g})]})]})}let az=a=>a.replace(/^https:\/\//,"");function aA({href:a,children:b}){return(0,c.jsxs)("a",{href:a,target:"_blank",rel:"noreferrer",className:(0,ak.cn)((0,t.buttonVariants)({variant:"outline",size:"sm"})),children:[(0,c.jsx)(K.ExternalLink,{}),b]})}function aB({configKey:a,looks:b,set:d,refused:e}){let[f,g]=(0,r.useState)(""),[h,i]=(0,r.useState)(!1),j=()=>{g(""),i(!1),(0,aj.revalidate)(s.queryKey.config),(0,aj.revalidate)(s.queryKey.reach)},[k,l]=(0,ai.useServerAction)(H.setConfigAction,{onOk:j}),[m,n]=(0,ai.useServerAction)(G.removeConfigAction,{onOk:j}),o=async()=>{await v.notify.confirm({title:"Remove this token?",description:"That service stops, and whoever is let in is let go.",okText:"Remove",destructive:!0})&&m(a)};return d&&!h&&null===e?(0,c.jsx)(t.Button,{size:"xs",variant:"ghost",onClick:()=>i(!0),className:"-ml-2 text-muted-foreground",children:"Change the token"}):(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)("form",{className:"flex flex-wrap items-center gap-2",onSubmit:b=>{b.preventDefault(),k(a,f)},children:[(0,c.jsx)(u.Input,{value:f,onChange:a=>g(a.target.value),placeholder:b,"aria-label":"Token",type:"password",autoComplete:"off",spellCheck:!1,className:"w-72 font-mono"}),(0,c.jsx)(t.Button,{type:"submit",size:"sm",loading:l,disabled:f.trim().length<z.KEY_MIN,children:d?"Replace":"Save"}),d&&(0,c.jsxs)(c.Fragment,{children:[null===e&&(0,c.jsx)(t.Button,{size:"sm",variant:"ghost",onClick:()=>i(!1),children:"Cancel"}),(0,c.jsx)(t.Button,{size:"sm",variant:"ghost",loading:n,onClick:()=>void o(),className:"ml-auto text-destructive hover:text-destructive",children:"Remove"})]})]}),e&&(0,c.jsx)("p",{className:"max-w-xl text-destructive",children:e})]})}function aC(){let[a,b]=(0,r.useState)(!1);return(0,c.jsxs)(t.Button,{size:"sm",variant:"outline",onClick:()=>void navigator.clipboard.writeText(ap).then(()=>{b(!0),setTimeout(()=>b(!1),2e3)}),children:[a?(0,c.jsx)(h.Check,{}):(0,c.jsx)(J.Copy,{}),a?"Copied":"Copy the manifest"]})}function aD({name:a,who:b,stopped:d}){let[e,f]=(0,ai.useServerAction)(am,{onOk:()=>(0,aj.revalidate)(s.queryKey.reach)});return(0,c.jsxs)("div",{className:"flex flex-wrap items-center gap-2 pt-3 pl-8 text-[13px] text-muted-foreground",children:[(0,c.jsx)("span",{children:d?`${b} is let in.`:`${b} can write from a phone.`}),(0,c.jsx)(t.Button,{size:"sm",variant:"outline",loading:f,onClick:async()=>{await v.notify.confirm({title:`Let ${b} go?`,description:"Nobody can write to Thursday through this service until someone is let in again.",okText:"Let them go",destructive:!0})&&e(a)},children:"Let them go"})]})}let aE={[I.EXA_API_KEY]:p.Search},aF={image:n.Image,video:l,speech:f.AudioLines,transcription:g.Captions},aG={keys:["voice","easy","text","search"],models:["bots","studio"]};function aH({screen:a}){let{data:b,isLoading:d,error:e}=(0,aj.useServerRoute)(s.queryKey.config);if(d)return(0,c.jsx)(ah.SettingSkeleton,{rows:4});if(e)return(0,c.jsx)(ah.SettingError,{message:e.message});let f=a=>(0,I.isConfigSet)(b,a),g=a=>b?.find(b=>b.key===a)?.value,h=aG[a].flatMap(a=>I.CONFIG_GROUPS.find(b=>b.id===a)??[]),i=h.filter(a=>"keys"===a.section).flatMap(a=>a.entries);return(0,c.jsx)(ah.SettingScreen,{footer:(0,c.jsx)(ah.SettingRailNote,{children:"models"===a?"Her own voice and backend models are in Thursday. A bot can pick its own on its page.":`${i.filter(a=>f(a.key)).length} of ${i.length} set${h.some(a=>!(0,I.groupSatisfied)(a,f))?" · a call needs one voice key":" · your keys stay on this machine"}`}),children:h.map(a=>(0,c.jsx)(ah.SettingGroup,{label:a.title,hint:a.hint,right:(0,c.jsx)(aJ,{group:a,isSet:f}),children:"easy"===a.id?(0,c.jsx)("div",{className:"grid gap-3 sm:grid-cols-2",children:a.entries.map(a=>(0,c.jsx)(aK,{card:!0,entry:a,set:f(a.key),needed:!1},a.key))}):"text"===a.id?(0,c.jsx)("div",{className:"flex flex-wrap gap-x-1.5 gap-y-3.5",children:a.entries.map(a=>(0,c.jsx)(aI,{entry:a,set:f(a.key)},a.key))}):(0,c.jsx)(ah.SettingItems,{children:a.entries.map(b=>b.effortOf?null:b.choices?(0,c.jsx)(aT,{entry:b,choices:b.choices,value:g(b.key),effort:aU(a,b.key),effortValue:g(I.DEFAULT_EFFORT_KEY)},b.key):(0,c.jsx)(aK,{entry:b,set:f(b.key),needed:!(0,I.groupSatisfied)(a,f)},b.key))})},a.id))})}function aI({entry:a,set:b}){return(0,c.jsxs)("button",{type:"button",onClick:()=>aW(a,b),"aria-label":`${a.label}: ${b?"set":"not set"}`,className:"group flex w-17 flex-col items-center gap-1.5 rounded-xl py-1 outline-none focus-visible:ring-3 focus-visible:ring-ring/50",children:[(0,c.jsxs)("span",{className:"relative grid size-10.5 place-items-center rounded-[13px] bg-muted/60 transition-colors group-hover:bg-muted",children:[(0,c.jsx)(aS,{entry:a}),b&&(0,c.jsx)("span",{className:"absolute -top-1 -right-1 grid size-4 place-items-center rounded-full bg-primary text-primary-foreground ring-2 ring-background",children:(0,c.jsx)(h.Check,{className:"size-2.5"})})]}),(0,c.jsx)("span",{className:(0,ak.cn)("max-w-full truncate text-[11px]",b?"text-foreground":"text-muted-foreground"),children:a.label})]})}function aJ({group:a,isSet:b}){return"none"===a.require?null:(0,I.groupSatisfied)(a,b)?(0,c.jsxs)("span",{className:"flex items-center gap-1 font-mono text-[11px] text-muted-foreground",children:[(0,c.jsx)(h.Check,{className:"size-3"}),"ready"]}):(0,c.jsxs)("span",{className:(0,ak.cn)("flex items-center gap-1 font-mono text-[11px]",ak.WAITING_INK),children:[(0,c.jsx)(q.TriangleAlert,{className:"size-3"}),a.note??"Required"]})}function aK({entry:a,set:b,needed:d,card:e=!1,narrow:f=!1}){let g=aN(a,b),j=aP(a,b),k=aO(a,b),l=j.data?aQ(j.data):aM(b,d,g.data,a.signIn),m=g.isLoading||j.isLoading,n=(0,c.jsxs)("span",{className:(0,ak.cn)("flex shrink-0 items-center gap-1.5 font-mono text-xs",l.ink),children:[l.warn?(0,c.jsx)(q.TriangleAlert,{className:"size-3"}):b&&(0,c.jsx)(h.Check,{className:"size-3"}),l.text]});return(0,c.jsxs)("button",{type:"button",onClick:()=>{var d;return a.signIn?(d=a,v.notify.component({className:"sm:max-w-md",renderer:({close:a})=>(0,c.jsx)(aV,{entry:d,onDone:a})})):aW(a,b)},className:(0,ak.cn)("group flex w-full items-center gap-3 p-4 text-left outline-none transition-colors hover:bg-muted/50 focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:ring-inset",e&&"rounded-xl border border-border/60"),children:[(0,c.jsx)("span",{className:"grid size-8 shrink-0 place-items-center rounded-lg bg-muted/60",children:(0,c.jsx)(aS,{entry:a})}),(0,c.jsxs)("span",{className:"min-w-0 flex-1 space-y-0.5",children:[(0,c.jsxs)("span",{className:"flex items-center gap-2 truncate text-sm font-medium",children:[a.label,a.recommended&&(0,c.jsx)("span",{className:"rounded-full px-1.5 font-mono text-[9.5px] leading-4 font-normal text-muted-foreground ring-1 ring-border ring-inset",children:"recommended"})]}),f?m?(0,c.jsx)(y.Skeleton,{className:"h-3 w-20"}):n:(0,c.jsx)("span",{className:"block truncate font-mono text-xs text-muted-foreground",children:a.signIn?b?aR(j.data,k):"sign in with your account":a.key})]}),f?null:m?(0,c.jsx)(y.Skeleton,{className:"h-3 w-20 shrink-0"}):n,(0,c.jsx)(i.ChevronRight,{className:"size-4 shrink-0 text-muted-foreground/60 transition-colors group-hover:text-foreground"})]})}let aL=new Intl.NumberFormat("en-US",{style:"currency",currency:"USD"});function aM(a,b,c,d){return a?c?"refused"in c?{text:"Key refused",ink:"text-destructive",warn:!0}:{text:`${aL.format(c.balance)} left`,ink:c.low?ak.WAITING_INK:"text-muted-foreground",warn:c.low}:{text:d?"Signed in":"Set",ink:"text-muted-foreground",warn:!1}:b?{text:"Needed",ink:ak.WAITING_INK,warn:!0}:{text:d?"Signed out":"Not set",ink:"text-muted-foreground/60",warn:!1}}function aN(a,b){return(0,aj.useServerRoute)(b&&"vercel-ai-gateway"===a.provider?s.queryKey.gatewayCredits:null)}function aO(a,b){let{data:c}=(0,aj.useServerRoute)(b&&a.signIn?s.queryKey.llmModel:null);return c?.find(b=>b.id===a.provider)?.plan??null}function aP(a,b){return(0,aj.useServerRoute)(b&&a.signIn?s.queryKey.subscriptionUsage:null)}function aQ(a){return"refused"in a?{text:"Sign-in refused",ink:"text-destructive",warn:!0}:{text:a.spent?"Limit reached":`${a.usedPercent}% used`,ink:a.high?ak.WAITING_INK:"text-muted-foreground",warn:a.high}}function aR(a,b){let c=!a||"refused"in a?null:a,e=`${c?.plan??b??"unknown"} plan`;return c?.resetsAt?`${e} \xb7 resets in ${(0,d.formatDistanceToNowStrict)(new Date(c.resetsAt))}`:e}function aS({entry:a}){if(a.provider)return(0,c.jsx)(D.ProviderIcon,{provider:a.provider,className:"size-4"});let b=aE[a.key]??o.KeyRound,d=(0,c.jsx)(b,{className:"size-4 text-muted-foreground"});return a.site?(0,c.jsx)(x.SiteIcon,{host:a.site,className:"size-4 rounded-[4px]",fallback:d}):d}function aT({entry:a,choices:b,value:d,effort:e,effortValue:f}){let g=a.text?(0,E.parseTextModel)(d):(0,E.parseMediaModel)(d),{data:h}=(0,aj.useServerRoute)(a.text&&!d&&s.queryKey.automaticModel),i=a.kind?aF[a.kind]:F.BotsMark,[j]=(0,ai.useServerAction)(H.setConfigAction,{onOk:()=>{(0,aj.revalidate)(s.queryKey.config),(0,aj.revalidate)(s.queryKey.automaticModel)}}),[k]=(0,ai.useServerAction)(G.removeConfigAction,{onOk:()=>{(0,aj.revalidate)(s.queryKey.config),(0,aj.revalidate)(s.queryKey.automaticModel)}});return(0,c.jsxs)("div",{className:"flex w-full items-start gap-3 p-4",children:[(0,c.jsx)("span",{className:"grid size-8 shrink-0 place-items-center rounded-lg bg-muted/60",children:(0,c.jsx)(i,{className:"size-4 text-muted-foreground"})}),(0,c.jsxs)("div",{className:"min-w-0 flex-1 space-y-2",children:[(0,c.jsxs)("span",{className:"flex min-w-0 items-center gap-1.5 pt-1.5",children:[(0,c.jsx)("span",{className:"truncate text-sm font-medium",children:a.label}),!d&&(0,c.jsx)("span",{className:(0,ak.cn)("shrink-0 rounded-[5px] border border-border/60 px-1 font-mono text-[10px]",a.kind?ak.WAITING_INK:"text-muted-foreground"),children:a.kind?"off":"auto"})]}),(0,c.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,c.jsx)("div",{className:"min-w-0",children:(0,c.jsx)(C.ModelPicker,{kind:a.kind,provider:g?.provider??null,model:g?.model??"",unset:a.kind?"Not offered to bots until you pick one":function(a,b){if(!a)return"Automatic";if(!a.ref)return a.problem;let{provider:c,model:d}=a.ref,e=b.find(a=>a.value===`${c}/${d}`);return`Automatic \xb7 ${e?.label??d}`}(h,b),onChange:b=>j(a.key,`${b.provider}/${b.model.trim()}`),onUnset:d?()=>{k(a.key),e&&f&&k(e.key)}:void 0})}),e&&g&&(0,c.jsxs)("div",{className:"flex items-start gap-3 pt-0.5",children:[(0,c.jsx)("span",{className:"w-12 shrink-0 pt-1.5 font-mono text-[11px] text-muted-foreground",children:"effort"}),(0,c.jsx)(B.EffortSwitch,{provider:g.provider,model:g.model,value:E.effortSchema.safeParse(f).data??null,onChange:a=>a?j(e.key,a):k(e.key)})]})]})]})]})}let aU=(a,b)=>a.entries.find(a=>a.effortOf===b);function aV({entry:a,onDone:b}){let{data:d}=(0,aj.useServerRoute)(s.queryKey.config),e=(0,I.isConfigSet)(d,a.key),f=aO(a,e),g=aP(a,e),h=g.data?aQ(g.data):null,[i,j]=(0,ai.useServerAction)(G.removeConfigAction,{okMessage:`Signed out of ${a.label}`,onOk:()=>{(0,aj.revalidate)(s.queryKey.config),(0,aj.revalidate)(s.queryKey.llmModel),b()}});return(0,c.jsx)(ah.SettingDialogContent,{title:a.label,description:e?(0,c.jsxs)(c.Fragment,{children:["Signed in ·"," ",(0,c.jsx)("span",{className:"font-mono",children:aR(g.data,f)}),h&&(0,c.jsxs)(c.Fragment,{children:[" · ",(0,c.jsx)("span",{className:(0,ak.cn)("font-mono",h.ink),children:h.text})]})]}):"Sign in with your ChatGPT account instead of a key",footer:(0,c.jsxs)(c.Fragment,{children:[e&&(0,c.jsx)(t.Button,{variant:"ghost",loading:j,onClick:async()=>{await v.notify.confirm({title:`Sign out of ${a.label}?`,description:"Nothing runs on your plan until you sign in again.",okText:"Sign out",destructive:!0})&&i(a.key)},children:"Sign out"}),(0,c.jsx)(t.Button,{variant:"ghost",onClick:b,children:e?"Close":"Cancel"}),!e&&(0,c.jsx)(A.ChatGptSignIn,{})]}),children:(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsx)(ah.SettingNote,{children:e?"Bots on this subscription spend your plan's usage, not a key. When it runs out, the job stops and says when it resets.":"The sign-in opens in its own window. Approve it there, and this turns to signed in by itself."}),g.data&&"refused"in g.data&&(0,c.jsx)(ah.SettingNote,{className:"wrap-break-word text-destructive",children:g.data.refused})]})})}function aW(a,b){return v.notify.component({className:"sm:max-w-md",renderer:({close:d})=>(0,c.jsx)(aX,{entry:a,set:b,onDone:d})})}function aX({entry:a,set:b,onDone:d}){let[f,g]=(0,r.useState)(""),{data:h}=aN(a,b),i=h?aM(b,!1,h):null,j=()=>{(0,aj.revalidate)(s.queryKey.config),(0,aj.revalidate)(s.queryKey.llmModel)},[k,l]=(0,ai.useServerAction)(H.setConfigAction,{okMessage:`${a.label} key saved`,onOk:()=>{j(),d()}}),[m,n]=(0,ai.useServerAction)(G.removeConfigAction,{okMessage:`${a.label} key removed`,onOk:()=>{j(),d()}}),o=async()=>{await v.notify.confirm({title:`Remove the ${a.label} key?`,description:"It is deleted from this computer, and nothing runs on it until a key is pasted again.",okText:"Remove",destructive:!0})&&m(a.key)};return(0,c.jsx)(ah.SettingDialogContent,{title:a.label,description:(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)("span",{className:"font-mono",children:a.key}),a.hint&&(0,c.jsxs)(c.Fragment,{children:[" · ",a.hint]}),i&&(0,c.jsxs)(c.Fragment,{children:[" · ",(0,c.jsx)("span",{className:(0,ak.cn)("font-mono",i.ink),children:i.text})]})]}),footer:(0,c.jsxs)(c.Fragment,{children:[b&&(0,c.jsx)(t.Button,{variant:"ghost",loading:n,onClick:()=>void o(),className:"mr-auto text-destructive hover:text-destructive",children:"Remove"}),(0,c.jsx)(t.Button,{variant:"ghost",onClick:d,children:"Cancel"}),(0,c.jsx)(t.Button,{loading:l,disabled:f.trim().length<z.KEY_MIN,onClick:()=>k(a.key,f),children:b?"Replace":"Save"})]}),children:(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsx)(u.Input,{value:f,onChange:a=>g(a.target.value),onKeyDown:b=>{"Enter"===b.key&&f.trim().length>=z.KEY_MIN&&k(a.key,f)},placeholder:b?"New value — replaces the current key":a.keyLooks??"Paste the key",spellCheck:!1,type:"password",autoFocus:!0}),!b&&a.keysAt&&(0,c.jsxs)("a",{href:a.keysAt,target:"_blank",rel:"noreferrer",className:"flex w-fit items-center gap-1 px-0.5 text-[13px] text-foreground underline underline-offset-3 hover:text-foreground/80",children:["Get a key at ",new URL(a.keysAt).host,(0,c.jsx)(e.ArrowUpRight,{className:"size-3.5"})]}),h&&"refused"in h&&(0,c.jsx)(ah.SettingNote,{className:"wrap-break-word text-destructive",children:h.refused})]})})}a.s(["AccountsSetup",0,function({withoutVoice:a=!1}){let{data:b}=(0,aj.useServerRoute)(s.queryKey.config),d=a=>(0,I.isConfigSet)(b,a),e=a=>I.CONFIG_GROUPS.find(b=>b.id===a)?.entries??[],[f,g]=(0,r.useState)(!1),h=e("voice"),i=[...h,...e("text")],j=i.filter((b,c)=>(c<4||d(b.key))&&!(a&&h.includes(b))),k=i.filter(b=>!j.includes(b)&&!(a&&h.includes(b)));return(0,c.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,c.jsx)("div",{className:"flex flex-col gap-2",children:e("easy").map(a=>(0,c.jsx)(aK,{card:!0,narrow:!0,entry:a,set:d(a.key),needed:!1},a.key))}),(0,c.jsxs)("div",{className:"flex flex-wrap gap-y-2.5",children:[j.map(a=>(0,c.jsx)(aI,{entry:a,set:d(a.key)},a.key)),k.length>0&&(0,c.jsxs)(w.Popover,{open:f,onOpenChange:g,children:[(0,c.jsxs)(w.PopoverTrigger,{"aria-label":`${k.length} more providers`,className:"group flex w-17 flex-col items-center gap-1.5 rounded-xl py-1 outline-none focus-visible:ring-3 focus-visible:ring-ring/50",children:[(0,c.jsx)("span",{className:"grid size-10.5 place-items-center rounded-[13px] bg-muted/60 text-muted-foreground transition-colors group-hover:bg-muted",children:(0,c.jsx)(m.default,{className:"size-4"})}),(0,c.jsx)("span",{className:"text-[11px] text-muted-foreground",children:"More"})]}),(0,c.jsx)(w.PopoverContent,{align:"end",className:"w-78 flex-row flex-wrap gap-0 gap-y-2.5 rounded-2xl p-2.5",onClick:()=>g(!1),children:k.map(a=>(0,c.jsx)(aI,{entry:a,set:d(a.key)},a.key))})]})]}),e("search").map(a=>(0,c.jsx)(aK,{card:!0,narrow:!0,entry:a,set:d(a.key),needed:!1},a.key))]})},"KeysSetting",0,()=>(0,c.jsx)(aH,{screen:"keys"}),"ModelsSetting",0,()=>(0,c.jsx)(aH,{screen:"models"}),"PhoneSetting",0,()=>(0,c.jsx)(ah.SettingScreen,{footer:(0,c.jsx)(ah.SettingRailNote,{children:"Nothing on this computer is opened to the internet: the app asks the chat service what was written."}),children:(0,c.jsx)(as,{})})],405593)},639210,a=>{"use strict";var b=a.i(405050);let c=(0,b.createServerReference)("7f3f3b22bfb9a472c1fae485a22c29fc1facae95d4",b.callServer,void 0,b.findSourceMapURL,"removeConfigAction");a.s(["removeConfigAction",0,c])}];
19
+
20
+ //# sourceMappingURL=features_config_09n-q9q._.js.map