thursday-agent 0.17.0 → 0.17.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (361) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +2 -0
  3. package/.next/build-manifest.json +3 -3
  4. package/.next/prerender-manifest.json +3 -3
  5. package/.next/routes-manifest.json +12 -0
  6. package/.next/server/app/_global-error/page.js.nft.json +1 -1
  7. package/.next/server/app/_global-error.html +1 -1
  8. package/.next/server/app/_global-error.rsc +1 -1
  9. package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  10. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  11. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  12. package/.next/server/app/_not-found/page.js.nft.json +1 -1
  13. package/.next/server/app/_not-found.html +1 -1
  14. package/.next/server/app/_not-found.rsc +1 -1
  15. package/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
  16. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  17. package/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  18. package/.next/server/app/api/artifact/route.js +9 -8
  19. package/.next/server/app/api/artifact/route.js.nft.json +1 -1
  20. package/.next/server/app/api/bot/memory/files/route.js.nft.json +1 -1
  21. package/.next/server/app/api/bot/memory/route.js +8 -7
  22. package/.next/server/app/api/bot/memory/route.js.nft.json +1 -1
  23. package/.next/server/app/api/bot/route.js +8 -7
  24. package/.next/server/app/api/bot/route.js.nft.json +1 -1
  25. package/.next/server/app/api/bot/thread/[id]/route.js +4 -4
  26. package/.next/server/app/api/bot/thread/[id]/route.js.nft.json +1 -1
  27. package/.next/server/app/api/bot/thread/route.js +3 -3
  28. package/.next/server/app/api/bot/thread/route.js.nft.json +1 -1
  29. package/.next/server/app/api/config/route.js.nft.json +1 -1
  30. package/.next/server/app/api/events/route.js.nft.json +1 -1
  31. package/.next/server/app/api/favicon/[host]/route.js +4 -3
  32. package/.next/server/app/api/favicon/[host]/route.js.nft.json +1 -1
  33. package/.next/server/app/api/file/[...path]/route.js.nft.json +1 -1
  34. package/.next/server/app/api/llm-model/automatic/route/app-paths-manifest.json +3 -0
  35. package/.next/server/app/api/llm-model/automatic/route/build-manifest.json +12 -0
  36. package/.next/server/app/api/llm-model/automatic/route/server-reference-manifest.json +4 -0
  37. package/.next/server/app/api/llm-model/automatic/route.js +17 -0
  38. package/.next/server/app/api/llm-model/automatic/route.js.map +5 -0
  39. package/.next/server/app/api/llm-model/automatic/route.js.nft.json +1 -0
  40. package/.next/server/app/api/llm-model/automatic/route_client-reference-manifest.js +3 -0
  41. package/.next/server/app/api/llm-model/catalog/route.js.nft.json +1 -1
  42. package/.next/server/app/api/llm-model/credits/route.js.nft.json +1 -1
  43. package/.next/server/app/api/llm-model/route.js.nft.json +1 -1
  44. package/.next/server/app/api/llm-model/subscription/route.js.nft.json +1 -1
  45. package/.next/server/app/api/mcp/[name]/route.js.nft.json +1 -1
  46. package/.next/server/app/api/mcp/oauth/callback/route.js.nft.json +1 -1
  47. package/.next/server/app/api/mcp/route.js.nft.json +1 -1
  48. package/.next/server/app/api/mcp/tools/route.js.nft.json +1 -1
  49. package/.next/server/app/api/memory/edit/route.js +14 -13
  50. package/.next/server/app/api/memory/edit/route.js.nft.json +1 -1
  51. package/.next/server/app/api/memory/route.js.nft.json +1 -1
  52. package/.next/server/app/api/reach/route.js +17 -16
  53. package/.next/server/app/api/reach/route.js.nft.json +1 -1
  54. package/.next/server/app/api/routine/route.js +10 -10
  55. package/.next/server/app/api/routine/route.js.nft.json +1 -1
  56. package/.next/server/app/api/signins/route.js.nft.json +1 -1
  57. package/.next/server/app/api/skills/[source]/[name]/route.js +9 -8
  58. package/.next/server/app/api/skills/[source]/[name]/route.js.nft.json +1 -1
  59. package/.next/server/app/api/skills/route.js +9 -8
  60. package/.next/server/app/api/skills/route.js.nft.json +1 -1
  61. package/.next/server/app/api/thursday/call/end/route/app-paths-manifest.json +3 -0
  62. package/.next/server/app/api/thursday/call/end/route/build-manifest.json +12 -0
  63. package/.next/server/app/api/thursday/call/end/route/server-reference-manifest.json +4 -0
  64. package/.next/server/app/api/thursday/call/end/route.js +17 -0
  65. package/.next/server/app/api/thursday/call/end/route.js.map +5 -0
  66. package/.next/server/app/api/thursday/call/end/route.js.nft.json +1 -0
  67. package/.next/server/app/api/thursday/call/end/route_client-reference-manifest.js +3 -0
  68. package/.next/server/app/api/thursday/call/route.js +6 -6
  69. package/.next/server/app/api/thursday/call/route.js.nft.json +1 -1
  70. package/.next/server/app/api/thursday/settings/route.js +5 -5
  71. package/.next/server/app/api/thursday/settings/route.js.nft.json +1 -1
  72. package/.next/server/app/api/thursday/text/route.js +16 -15
  73. package/.next/server/app/api/thursday/text/route.js.nft.json +1 -1
  74. package/.next/server/app/api/thursday/tool-call/route.js +13 -12
  75. package/.next/server/app/api/thursday/tool-call/route.js.nft.json +1 -1
  76. package/.next/server/app/api/workspace/files/route.js +5 -5
  77. package/.next/server/app/api/workspace/files/route.js.nft.json +1 -1
  78. package/.next/server/app/api/workspace/route.js +5 -5
  79. package/.next/server/app/api/workspace/route.js.nft.json +1 -1
  80. package/.next/server/app/artifact/[...path]/page/server-reference-manifest.json +3 -3
  81. package/.next/server/app/artifact/[...path]/page.js +2 -2
  82. package/.next/server/app/artifact/[...path]/page.js.nft.json +1 -1
  83. package/.next/server/app/artifact/[...path]/page_client-reference-manifest.js +1 -1
  84. package/.next/server/app/favicon.ico/route.js.nft.json +1 -1
  85. package/.next/server/app/manifest.webmanifest/route.js.nft.json +1 -1
  86. package/.next/server/app/page/server-reference-manifest.json +60 -60
  87. package/.next/server/app/page.js +8 -8
  88. package/.next/server/app/page.js.nft.json +1 -1
  89. package/.next/server/app/page_client-reference-manifest.js +1 -1
  90. package/.next/server/app-paths-manifest.json +2 -0
  91. package/.next/server/chunks/{[externals]__178rv3v._.js → [externals]__12stas-._.js} +1 -1
  92. package/.next/server/chunks/[root-of-the-server]__00qyw01._.js +1 -1
  93. package/.next/server/chunks/{[root-of-the-server]__1ignh6-._.js → [root-of-the-server]__01k3vi3._.js} +1 -1
  94. package/.next/server/chunks/[root-of-the-server]__01ypm_z._.js +1 -1
  95. package/.next/server/chunks/[root-of-the-server]__021dkui._.js +1 -1
  96. package/.next/server/chunks/[root-of-the-server]__03vunn6._.js +1 -1
  97. package/.next/server/chunks/[root-of-the-server]__03xamry._.js +1 -1
  98. package/.next/server/chunks/[root-of-the-server]__05dp5tr._.js +1 -1
  99. package/.next/server/chunks/{[root-of-the-server]__208vmyf._.js → [root-of-the-server]__061o2_x._.js} +1 -1
  100. package/.next/server/chunks/[root-of-the-server]__09gdscj._.js +3 -3
  101. package/.next/server/chunks/[root-of-the-server]__0bqveex._.js +5 -0
  102. package/.next/server/chunks/[root-of-the-server]__0eivkvk._.js +5 -0
  103. package/.next/server/chunks/[root-of-the-server]__0f7m79q._.js +3 -0
  104. package/.next/server/chunks/[root-of-the-server]__0g38-aj._.js +2 -2
  105. package/.next/server/chunks/[root-of-the-server]__0h656y-._.js +2 -2
  106. package/.next/server/chunks/[root-of-the-server]__0hkxwim._.js +3 -0
  107. package/.next/server/chunks/[root-of-the-server]__0hm3tiq._.js +5 -0
  108. package/.next/server/chunks/[root-of-the-server]__0hzdqnv._.js +5 -0
  109. package/.next/server/chunks/[root-of-the-server]__0liwkmx._.js +4 -4
  110. package/.next/server/chunks/[root-of-the-server]__0ljizgj._.js +2 -2
  111. package/.next/server/chunks/[root-of-the-server]__0mgyt8p._.js +5 -0
  112. package/.next/server/chunks/[root-of-the-server]__0mrk2it._.js +1 -1
  113. package/.next/server/chunks/[root-of-the-server]__0nmust6._.js +2 -2
  114. package/.next/server/chunks/[root-of-the-server]__0p80i1n._.js +3 -0
  115. package/.next/server/chunks/[root-of-the-server]__0qzho69._.js +3 -0
  116. package/.next/server/chunks/[root-of-the-server]__0sm5xvm._.js +1 -1
  117. package/.next/server/chunks/[root-of-the-server]__0svzjwa._.js +3 -3
  118. package/.next/server/chunks/{[root-of-the-server]__0b36yfw._.js → [root-of-the-server]__0ts7ai0._.js} +1 -1
  119. package/.next/server/chunks/[root-of-the-server]__1-18_pz._.js +3 -0
  120. package/.next/server/chunks/[root-of-the-server]__1-rmal0._.js +5 -0
  121. package/.next/server/chunks/[root-of-the-server]__13hng6h._.js +1 -1
  122. package/.next/server/chunks/[root-of-the-server]__1_04mcf._.js +2 -2
  123. package/.next/server/chunks/[root-of-the-server]__1_h4hf9._.js +3 -3
  124. package/.next/server/chunks/[root-of-the-server]__1ceammd._.js +1 -1
  125. package/.next/server/chunks/[root-of-the-server]__1ckt1yj._.js +3 -0
  126. package/.next/server/chunks/[root-of-the-server]__1cu5f3z._.js +5 -0
  127. package/.next/server/chunks/[root-of-the-server]__1hviq62._.js +5 -0
  128. package/.next/server/chunks/{[root-of-the-server]__12m24xl._.js → [root-of-the-server]__1k2qs1m._.js} +1 -1
  129. package/.next/server/chunks/[root-of-the-server]__1kmnkbk._.js +3 -0
  130. package/.next/server/chunks/[root-of-the-server]__1ndi14y._.js +1 -1
  131. package/.next/server/chunks/[root-of-the-server]__1p47fbb._.js +2 -2
  132. package/.next/server/chunks/[root-of-the-server]__1pugoq0._.js +3 -0
  133. package/.next/server/chunks/[root-of-the-server]__1t02-1p._.js +1 -1
  134. package/.next/server/chunks/[root-of-the-server]__1t0jj1j._.js +1 -1
  135. package/.next/server/chunks/[root-of-the-server]__1vlxv19._.js +2 -2
  136. package/.next/server/chunks/[root-of-the-server]__1ygplx1._.js +1 -1
  137. package/.next/server/chunks/[root-of-the-server]__1zn039k._.js +1 -1
  138. package/.next/server/chunks/_05gl-xy._.js +5 -5
  139. package/.next/server/chunks/_06hnfi8._.js +8 -0
  140. package/.next/server/chunks/_06u9yo-._.js +1 -1
  141. package/.next/server/chunks/_07nxi75._.js +25 -21
  142. package/.next/server/chunks/_08354bn._.js +25 -21
  143. package/.next/server/chunks/_08btiir._.js +3 -3
  144. package/.next/server/chunks/_0c49lmw._.js +5 -0
  145. package/.next/server/chunks/_0ey0s6v._.js +3 -0
  146. package/.next/server/chunks/_0hgvg55._.js +5 -0
  147. package/.next/server/chunks/_0j0-gq6._.js +2 -2
  148. package/.next/server/chunks/_0nn99o2._.js +1 -1
  149. package/.next/server/chunks/_0p6v1fr._.js +2 -2
  150. package/.next/server/chunks/_0s8ao8z._.js +3 -0
  151. package/.next/server/chunks/_0srlnvd._.js +1 -1
  152. package/.next/server/chunks/_0t_7gji._.js +1 -1
  153. package/.next/server/chunks/_0ucx1jv._.js +3 -0
  154. package/.next/server/chunks/_0uzj57i._.js +1 -1
  155. package/.next/server/chunks/_0xygcxs._.js +25 -21
  156. package/.next/server/chunks/_1-sk_q4._.js +1 -1
  157. package/.next/server/chunks/{_1xcnogc._.js → _108gsm8._.js} +4 -4
  158. package/.next/server/chunks/{_20oecmn._.js → _15negpy._.js} +4 -4
  159. package/.next/server/chunks/_19fh9t2._.js +3 -0
  160. package/.next/server/chunks/_19kea1l._.js +18 -18
  161. package/.next/server/chunks/_1dtm9bs._.js +1 -1
  162. package/.next/server/chunks/_1dxq827._.js +2 -2
  163. package/.next/server/chunks/_1e54wxa._.js +1 -1
  164. package/.next/server/chunks/_1frcwj1._.js +3 -0
  165. package/.next/server/chunks/_1gn2r2q._.js +5 -5
  166. package/.next/server/chunks/_1gxankq._.js +2 -2
  167. package/.next/server/chunks/_1i3uucm._.js +5 -0
  168. package/.next/server/chunks/_1m88lkh._.js +9 -9
  169. package/.next/server/chunks/_1mx9sfo._.js +1 -1
  170. package/.next/server/chunks/_1q6e56i._.js +5 -5
  171. package/.next/server/chunks/_1qxheoa._.js +1 -1
  172. package/.next/server/chunks/_1t5ijzv._.js +3 -0
  173. package/.next/server/chunks/_1wwl_7o._.js +1 -1
  174. package/.next/server/chunks/_1zfxb7j._.js +1 -1
  175. package/.next/server/chunks/_211dn2c._.js +1 -1
  176. package/.next/server/chunks/_next-internal_server_app_api_llm-model_automatic_route_actions_1-eyan7.js +3 -0
  177. package/.next/server/chunks/_next-internal_server_app_api_thursday_call_end_route_actions_0u5xjft.js +3 -0
  178. package/.next/server/chunks/config_ts_1g4sz5o._.js +1 -1
  179. package/.next/server/chunks/{features_0wm-ujw._.js → features_bot_08z387_._.js} +4 -4
  180. package/.next/server/chunks/{ssr/[root-of-the-server]__07660xu._.js → features_bot_0zy_q8y._.js} +8 -9
  181. package/.next/server/chunks/features_bot_1dfrdsb._.js +37 -0
  182. package/.next/server/chunks/features_workspace_workspace_ts_13h82gv._.js +3 -3
  183. package/.next/server/chunks/features_workspace_workspace_ts_1iyjroj._.js +3 -3
  184. package/.next/server/chunks/node_modules_103lpef._.js +3 -0
  185. package/.next/server/chunks/{node_modules_consola_dist_chunks_prompt_mjs_0_nz09c._.js → node_modules_consola_dist_chunks_prompt_mjs_0-t5tbs._.js} +1 -1
  186. package/.next/server/chunks/{node_modules_consola_dist_chunks_prompt_mjs_1341cnf._.js → node_modules_consola_dist_chunks_prompt_mjs_039fwo9._.js} +1 -1
  187. package/.next/server/chunks/{node_modules_consola_dist_chunks_prompt_mjs_1x3bsmx._.js → node_modules_consola_dist_chunks_prompt_mjs_0pce1b3._.js} +1 -1
  188. package/.next/server/chunks/node_modules_consola_dist_chunks_prompt_mjs_0tvy5lq._.js +3 -0
  189. package/.next/server/chunks/node_modules_consola_dist_chunks_prompt_mjs_0wxw35t._.js +3 -0
  190. package/.next/server/chunks/node_modules_consola_dist_chunks_prompt_mjs_1dlthym._.js +3 -0
  191. package/.next/server/chunks/node_modules_consola_dist_chunks_prompt_mjs_1smfi4-._.js +3 -0
  192. package/.next/server/chunks/node_modules_consola_dist_chunks_prompt_mjs_1x1omfi._.js +3 -0
  193. package/.next/server/chunks/node_modules_consola_dist_chunks_prompt_mjs_20is7e3._.js +3 -0
  194. package/.next/server/chunks/ssr/{[root-of-the-server]__149x25m._.js → [root-of-the-server]__0-af_o7._.js} +2 -2
  195. package/.next/server/chunks/ssr/[root-of-the-server]__09f39cp._.js +4 -0
  196. package/.next/server/chunks/ssr/[root-of-the-server]__0ouu4qp._.js +3 -0
  197. package/.next/server/chunks/ssr/[root-of-the-server]__0q9g9ea._.js +5 -0
  198. package/.next/server/chunks/ssr/[root-of-the-server]__17h1ggo._.js +11 -9
  199. package/.next/server/chunks/ssr/[root-of-the-server]__1jyeu61._.js +1 -1
  200. package/.next/server/chunks/ssr/{_0aeknva._.js → _01al00i._.js} +2 -2
  201. package/.next/server/chunks/ssr/_088vzgn._.js +1 -1
  202. package/.next/server/chunks/ssr/_0afrpci._.js +1 -1
  203. package/.next/server/chunks/ssr/_0bgse1c._.js +162 -0
  204. package/.next/server/chunks/ssr/_0cd6g3l._.js +15 -15
  205. package/.next/server/chunks/ssr/_0cv9tmv._.js +1 -1
  206. package/.next/server/chunks/ssr/{_0_vnw9v._.js → _0e2fnvg._.js} +2 -2
  207. package/.next/server/chunks/ssr/_0fo4552._.js +25 -21
  208. package/.next/server/chunks/ssr/_0jstvlg._.js +39 -0
  209. package/.next/server/chunks/ssr/{_0r0g9ki._.js → _0l7rjg5._.js} +2 -2
  210. package/.next/server/chunks/ssr/_0qsmpcu._.js +1 -1
  211. package/.next/server/chunks/ssr/_0v9r8g2._.js +1 -1
  212. package/.next/server/chunks/ssr/{_18-e7zi._.js → _0vo_oym._.js} +4 -4
  213. package/.next/server/chunks/ssr/_0x8ophf._.js +1 -1
  214. package/.next/server/chunks/ssr/{_0ztbn5q._.js → _0xfafez._.js} +2 -2
  215. package/.next/server/chunks/ssr/_0z38nha._.js +1 -1
  216. package/.next/server/chunks/ssr/_10-_awu._.js +1 -1
  217. package/.next/server/chunks/ssr/{_1z6pirx._.js → _10_ph1t._.js} +2 -2
  218. package/.next/server/chunks/ssr/_116lfdc._.js +3 -0
  219. package/.next/server/chunks/ssr/_14dfh7a._.js +1 -1
  220. package/.next/server/chunks/ssr/_14oirtb._.js +3 -0
  221. package/.next/server/chunks/ssr/{_1umbr78._.js → _163dr78._.js} +2 -2
  222. package/.next/server/chunks/ssr/{_1c5iqz1._.js → _17a4qyk._.js} +3 -3
  223. package/.next/server/chunks/ssr/{_1sttj8x._.js → _1_5xof_._.js} +2 -2
  224. package/.next/server/chunks/ssr/{_1hbjh6n._.js → _1aqjk-1._.js} +2 -2
  225. package/.next/server/chunks/ssr/{_0n2scfq._.js → _1dfv66y._.js} +2 -2
  226. package/.next/server/chunks/ssr/_1neoj22._.js +1 -1
  227. package/.next/server/chunks/ssr/_1ou5sj0._.js +1 -1
  228. package/.next/server/chunks/ssr/{_15m5ctz._.js → _1tmw842._.js} +2 -2
  229. package/.next/server/chunks/ssr/_1uij_rj._.js +1 -1
  230. package/.next/server/chunks/ssr/_1w9w1ok._.js +1 -1
  231. package/.next/server/chunks/ssr/features_0796o8r._.js +1 -1
  232. package/.next/server/chunks/ssr/features_bot_0ouemw8._.js +3 -0
  233. package/.next/server/chunks/ssr/{features_133mpna._.js → features_bot_0tb4ui-._.js} +2 -2
  234. package/.next/server/chunks/ssr/{features_config_0n0zu89._.js → features_config_09n-q9q._.js} +3 -3
  235. package/.next/server/chunks/ssr/features_connectors_components_mcp-setting_tsx_0jmbgvp._.js +1 -1
  236. package/.next/server/chunks/ssr/features_memory_components_memory-setting_tsx_0oa43sw._.js +1 -1
  237. package/.next/server/chunks/ssr/features_routine_components_routine-setting_tsx_055fknz._.js +1 -1
  238. package/.next/server/chunks/ssr/features_workspace_workspace_ts_1wc7_u_._.js +4 -4
  239. package/.next/server/chunks/ssr/{node_modules_1hefp6h._.js → node_modules_021lid9._.js} +1 -1
  240. package/.next/server/chunks/ssr/{node_modules_0kwie-o._.js → node_modules_04x5wyv._.js} +1 -1
  241. package/.next/server/chunks/ssr/{node_modules_180l3i0._.js → node_modules_096up6a._.js} +1 -1
  242. package/.next/server/chunks/ssr/{node_modules_00h1t1j._.js → node_modules_0__0tvm._.js} +1 -1
  243. package/.next/server/chunks/ssr/{node_modules_03uejh6._.js → node_modules_0cjnmzp._.js} +1 -1
  244. package/.next/server/chunks/ssr/{node_modules_1ubln7w._.js → node_modules_0d6j33x._.js} +1 -1
  245. package/.next/server/chunks/ssr/{node_modules_1_n9o9s._.js → node_modules_0gd9hbz._.js} +1 -1
  246. package/.next/server/chunks/ssr/{node_modules_0zf3wuu._.js → node_modules_0k8-y89._.js} +1 -1
  247. package/.next/server/chunks/ssr/{node_modules_0u_8z64._.js → node_modules_0m73b88._.js} +1 -1
  248. package/.next/server/chunks/ssr/{node_modules_09ikzel._.js → node_modules_0msrhxf._.js} +1 -1
  249. package/.next/server/chunks/ssr/{node_modules_0f5bmkb._.js → node_modules_0nmkv-v._.js} +1 -1
  250. package/.next/server/chunks/ssr/{node_modules_07mo9rn._.js → node_modules_0nw5jz7._.js} +1 -1
  251. package/.next/server/chunks/ssr/{node_modules_09e8kz_._.js → node_modules_0q-klni._.js} +1 -1
  252. package/.next/server/chunks/ssr/{node_modules_02ficyi._.js → node_modules_10_fv2a._.js} +1 -1
  253. package/.next/server/chunks/ssr/{node_modules_142z3o5._.js → node_modules_113l3e5._.js} +1 -1
  254. package/.next/server/chunks/ssr/{node_modules_1wyhtw9._.js → node_modules_13bqv6i._.js} +1 -1
  255. package/.next/server/chunks/ssr/{node_modules_0_d_7gq._.js → node_modules_13g-d25._.js} +1 -1
  256. package/.next/server/chunks/ssr/{node_modules_0r-9e4n._.js → node_modules_156kv_t._.js} +1 -1
  257. package/.next/server/chunks/ssr/{node_modules_06grs09._.js → node_modules_1_8-jcj._.js} +1 -1
  258. package/.next/server/chunks/ssr/{node_modules_1fw32pg._.js → node_modules_1gq3ght._.js} +1 -1
  259. package/.next/server/chunks/ssr/{node_modules_0_p8w7p._.js → node_modules_1k5i-_9._.js} +1 -1
  260. package/.next/server/chunks/ssr/{node_modules_03q71_j._.js → node_modules_1lmyts8._.js} +1 -1
  261. package/.next/server/chunks/ssr/{node_modules_1irot3r._.js → node_modules_1p_6sq7._.js} +1 -1
  262. package/.next/server/chunks/ssr/{node_modules_1om2itc._.js → node_modules_1qstb1x._.js} +1 -1
  263. package/.next/server/chunks/ssr/{node_modules_197vh1s._.js → node_modules_1ri_eip._.js} +1 -1
  264. package/.next/server/chunks/ssr/{node_modules_1-7fc7h._.js → node_modules_1xb-ndg._.js} +1 -1
  265. package/.next/server/chunks/ssr/{node_modules_@mermaid-js_parser_dist_chunks_mermaid-parser_core_0aczkbn._.js → node_modules_@mermaid-js_parser_dist_chunks_mermaid-parser_core_0amkw0b._.js} +1 -1
  266. package/.next/server/chunks/ssr/{node_modules_@mermaid-js_parser_dist_chunks_mermaid-parser_core_0ah684s._.js → node_modules_@mermaid-js_parser_dist_chunks_mermaid-parser_core_0zq3l45._.js} +1 -1
  267. package/.next/server/middleware-build-manifest.js +3 -3
  268. package/.next/server/middleware.js +1 -1
  269. package/.next/server/pages/404.html +1 -1
  270. package/.next/server/pages/500.html +1 -1
  271. package/.next/server/server-reference-manifest.js +1 -1
  272. package/.next/server/server-reference-manifest.json +61 -61
  273. package/.next/static/chunks/{38edd4rpcbvzp.js → 01l7kw74vfp32.js} +1 -1
  274. package/.next/static/chunks/0a5_-jqhaktjj.js +1 -0
  275. package/.next/static/chunks/{0_b_bi2pobasx.js → 0obogzscwwekj.js} +2 -2
  276. package/.next/static/chunks/{1-63yde5eaz7i.js → 0p2f6uv4xytfm.js} +1 -1
  277. package/.next/static/chunks/{2v6e_9p95o2e3.js → 0uxq_vs6uxi-b.js} +1 -1
  278. package/.next/static/chunks/{024plctckvq-1.js → 166smhw8v-s3j.js} +1 -1
  279. package/.next/static/chunks/{1wbqaidq7vc3_.js → 1bnhw-5fj7aiz.js} +1 -1
  280. package/.next/static/chunks/1cglo3a2mbeou.js +1 -0
  281. package/.next/static/chunks/{0sv142q1yrva2.js → 1in6nxpu33iab.js} +1 -1
  282. package/.next/static/chunks/1u7kg91f9qy3g.js +1 -0
  283. package/.next/static/chunks/{0sowxe4nnl5qu.js → 1xv4g10m-cl1s.js} +1 -1
  284. package/.next/static/chunks/{0dfvwgnyrp8qt.js → 2ajs12-fcdwzm.js} +1 -1
  285. package/.next/static/chunks/2i7qtmxc1kuqg.js +1 -0
  286. package/.next/static/chunks/{3-qp777vtfglj.js → 2kz1f6r59nky0.js} +1 -1
  287. package/.next/static/chunks/2qgkbdshzpq1c.js +1 -0
  288. package/.next/static/chunks/{1bgvxd3xny53w.js → 2zbl41hed17g3.js} +2 -2
  289. package/.next/static/chunks/35jj-5u4te56r.js +1 -0
  290. package/.next/static/chunks/37ixzapa06xlo.js +1 -0
  291. package/.next/static/chunks/3b96xy59nl_gd.js +1 -0
  292. package/.next/static/chunks/{0f47nnshdlucs.js → 3gsxnqqqphh-1.js} +1 -1
  293. package/.next/static/chunks/{44vre0f7xqsh-.js → 3jtcieuk1l6tw.js} +1 -1
  294. package/.next/static/chunks/{05scfrgo_a_5_.js → 3k1d8y03t5nax.js} +1 -1
  295. package/.next/static/chunks/3sla-dm1puqd1.js +35 -0
  296. package/.next/static/chunks/3t2c76awm9k_p.js +1 -0
  297. package/.next/static/chunks/3vrmcm31ih7gb.js +1 -0
  298. package/.next/static/chunks/3yiqr95d7ybeq.js +15 -0
  299. package/bin/autostart.mjs +4 -1
  300. package/bin/database.mjs +26 -4
  301. package/bin/lock.mjs +59 -0
  302. package/bin/node-check.mjs +21 -0
  303. package/bin/thursday.mjs +8 -1
  304. package/guide/bots.md +4 -2
  305. package/guide/calls.md +11 -9
  306. package/guide/memory.md +3 -2
  307. package/guide/phone.md +7 -4
  308. package/guide/setup.md +26 -9
  309. package/guide/trouble.md +11 -4
  310. package/package.json +1 -1
  311. package/public/voices/intro/asleepBare-15199d56.ogg +0 -0
  312. package/public/voices/intro/style-88adf274.ogg +0 -0
  313. package/seed-skills/concierge/travel/scripts/itinerary.mjs +6 -4
  314. package/skills/artifact/references/book.md +2 -1
  315. package/skills/artifact/references/sheet.md +12 -7
  316. package/skills/artifact/runtime/sheet/format.mjs +16 -9
  317. package/skills/artifact/scripts/book.mjs +19 -6
  318. package/skills/artifact/scripts/spreadsheet.mjs +194 -97
  319. package/skills/browser/SKILL.md +9 -6
  320. package/.next/server/chunks/[root-of-the-server]__03b09q0._.js +0 -5
  321. package/.next/server/chunks/[root-of-the-server]__05n-hql._.js +0 -5
  322. package/.next/server/chunks/[root-of-the-server]__0j_nz36._.js +0 -3
  323. package/.next/server/chunks/[root-of-the-server]__0jzwdg-._.js +0 -3
  324. package/.next/server/chunks/[root-of-the-server]__0tsded0._.js +0 -5
  325. package/.next/server/chunks/[root-of-the-server]__12tahb4._.js +0 -3
  326. package/.next/server/chunks/[root-of-the-server]__1de1o6m._.js +0 -3
  327. package/.next/server/chunks/[root-of-the-server]__1yl5l25._.js +0 -3
  328. package/.next/server/chunks/_02lipqs._.js +0 -5
  329. package/.next/server/chunks/_05sa7xl._.js +0 -3
  330. package/.next/server/chunks/_074f2ts._.js +0 -3
  331. package/.next/server/chunks/_0caua_s._.js +0 -3
  332. package/.next/server/chunks/_0p-h6xe._.js +0 -5
  333. package/.next/server/chunks/_0up2a9o._.js +0 -3
  334. package/.next/server/chunks/_17i1lt2._.js +0 -3
  335. package/.next/server/chunks/_1hy9x9_._.js +0 -3
  336. package/.next/server/chunks/_1hyvcgk._.js +0 -5
  337. package/.next/server/chunks/_1wl2g8_._.js +0 -6
  338. package/.next/server/chunks/_1y3mnz4._.js +0 -3
  339. package/.next/server/chunks/ssr/[root-of-the-server]__10eb-1x._.js +0 -3
  340. package/.next/server/chunks/ssr/[root-of-the-server]__19s8qyj._.js +0 -3
  341. package/.next/server/chunks/ssr/_0o_o9ji._.js +0 -3
  342. package/.next/server/chunks/ssr/_0qne8xs._.js +0 -3
  343. package/.next/server/chunks/ssr/_0rvbegp._.js +0 -7
  344. package/.next/server/chunks/ssr/_1vtgiou._.js +0 -162
  345. package/.next/server/chunks/ssr/features_bot_1kr0_m-._.js +0 -3
  346. package/.next/static/chunks/04toe_3nqfjqt.js +0 -1
  347. package/.next/static/chunks/0mtfu8adz57qz.js +0 -1
  348. package/.next/static/chunks/0tp868040z9nn.js +0 -35
  349. package/.next/static/chunks/14qitm0kwsb6g.js +0 -15
  350. package/.next/static/chunks/1cyrrz4q871aj.js +0 -1
  351. package/.next/static/chunks/1st3b0c9vhxg3.js +0 -1
  352. package/.next/static/chunks/28sxb_k460e9h.js +0 -1
  353. package/.next/static/chunks/33ekkscpcq-z1.js +0 -1
  354. package/.next/static/chunks/388l-zszwa_jf.js +0 -1
  355. package/.next/static/chunks/3bwrvpjk95_x4.js +0 -1
  356. package/.next/static/chunks/3itdg6t243u6f.js +0 -1
  357. package/.next/static/chunks/3kj0pri2oc1g1.js +0 -1
  358. package/public/voices/intro/style-cb6fa4f7.ogg +0 -0
  359. /package/.next/static/{VtbCMn-0G969p8QJsWdGv → 8I2hKtciyA9LXvd8txuOz}/_buildManifest.js +0 -0
  360. /package/.next/static/{VtbCMn-0G969p8QJsWdGv → 8I2hKtciyA9LXvd8txuOz}/_clientMiddlewareManifest.js +0 -0
  361. /package/.next/static/{VtbCMn-0G969p8QJsWdGv → 8I2hKtciyA9LXvd8txuOz}/_ssgManifest.js +0 -0
@@ -1,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(798139),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)("7f85ab4b0acb99e2bd03426653ae6d50cb059ddbaf",f.callServer,void 0,f.findSourceMapURL,"seedLiveSettingsAction"),h=(0,f.createServerReference)("7ff9b3e77fd3b3216f53e8e9fda08755753cbe13e2",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