thursday-agent 0.11.0 → 0.13.0

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 (492) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +3 -3
  3. package/.next/prerender-manifest.json +4 -4
  4. package/.next/server/app/_global-error/page.js.nft.json +1 -1
  5. package/.next/server/app/_global-error.html +1 -1
  6. package/.next/server/app/_global-error.rsc +1 -1
  7. package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  8. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  9. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  10. package/.next/server/app/_not-found/page.js +1 -1
  11. package/.next/server/app/_not-found/page.js.nft.json +1 -1
  12. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  13. package/.next/server/app/_not-found.html +1 -1
  14. package/.next/server/app/_not-found.rsc +18 -19
  15. package/.next/server/app/_not-found.segments/_full.segment.rsc +18 -19
  16. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +14 -15
  17. package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  18. package/.next/server/app/api/artifact/route.js +8 -8
  19. package/.next/server/app/api/artifact/route.js.nft.json +1 -1
  20. package/.next/server/app/api/bot/keep-working/route.js +7 -7
  21. package/.next/server/app/api/bot/keep-working/route.js.nft.json +1 -1
  22. package/.next/server/app/api/bot/memory/files/route.js.nft.json +1 -1
  23. package/.next/server/app/api/bot/memory/route.js +7 -7
  24. package/.next/server/app/api/bot/memory/route.js.nft.json +1 -1
  25. package/.next/server/app/api/bot/route.js +7 -7
  26. package/.next/server/app/api/bot/route.js.nft.json +1 -1
  27. package/.next/server/app/api/bot/thread/[id]/route.js +5 -5
  28. package/.next/server/app/api/bot/thread/[id]/route.js.nft.json +1 -1
  29. package/.next/server/app/api/bot/thread/route.js +3 -3
  30. package/.next/server/app/api/bot/thread/route.js.nft.json +1 -1
  31. package/.next/server/app/api/config/route.js +3 -3
  32. package/.next/server/app/api/config/route.js.nft.json +1 -1
  33. package/.next/server/app/api/events/route.js.nft.json +1 -1
  34. package/.next/server/app/api/favicon/[host]/route.js.nft.json +1 -1
  35. package/.next/server/app/api/file/[...path]/route.js +2 -2
  36. package/.next/server/app/api/file/[...path]/route.js.nft.json +1 -1
  37. package/.next/server/app/api/llm-model/catalog/route.js +4 -4
  38. package/.next/server/app/api/llm-model/catalog/route.js.nft.json +1 -1
  39. package/.next/server/app/api/llm-model/credits/route.js +4 -4
  40. package/.next/server/app/api/llm-model/credits/route.js.nft.json +1 -1
  41. package/.next/server/app/api/llm-model/route.js +6 -6
  42. package/.next/server/app/api/llm-model/route.js.nft.json +1 -1
  43. package/.next/server/app/api/llm-model/subscription/route.js +6 -6
  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 +5 -5
  46. package/.next/server/app/api/mcp/[name]/route.js.nft.json +1 -1
  47. package/.next/server/app/api/mcp/oauth/callback/route.js +5 -5
  48. package/.next/server/app/api/mcp/oauth/callback/route.js.nft.json +1 -1
  49. package/.next/server/app/api/mcp/route.js +5 -5
  50. package/.next/server/app/api/mcp/route.js.nft.json +1 -1
  51. package/.next/server/app/api/mcp/tools/route.js +5 -5
  52. package/.next/server/app/api/mcp/tools/route.js.nft.json +1 -1
  53. package/.next/server/app/api/memory/edit/route.js +15 -14
  54. package/.next/server/app/api/memory/edit/route.js.nft.json +1 -1
  55. package/.next/server/app/api/memory/route.js +4 -4
  56. package/.next/server/app/api/memory/route.js.nft.json +1 -1
  57. package/.next/server/app/api/reach/route.js +13 -12
  58. package/.next/server/app/api/reach/route.js.nft.json +1 -1
  59. package/.next/server/app/api/routine/route.js +8 -9
  60. package/.next/server/app/api/routine/route.js.nft.json +1 -1
  61. package/.next/server/app/api/signins/route.js.nft.json +1 -1
  62. package/.next/server/app/api/skills/[source]/[name]/route.js +2 -2
  63. package/.next/server/app/api/skills/[source]/[name]/route.js.nft.json +1 -1
  64. package/.next/server/app/api/skills/route.js +2 -2
  65. package/.next/server/app/api/skills/route.js.nft.json +1 -1
  66. package/.next/server/app/api/thursday/call/route.js +6 -6
  67. package/.next/server/app/api/thursday/call/route.js.nft.json +1 -1
  68. package/.next/server/app/api/thursday/skills/route.js +6 -6
  69. package/.next/server/app/api/thursday/skills/route.js.nft.json +1 -1
  70. package/.next/server/app/api/thursday/text/route.js +14 -13
  71. package/.next/server/app/api/thursday/text/route.js.nft.json +1 -1
  72. package/.next/server/app/api/thursday/tool-call/route.js +15 -14
  73. package/.next/server/app/api/thursday/tool-call/route.js.nft.json +1 -1
  74. package/.next/server/app/api/workspace/files/route.js +10 -6
  75. package/.next/server/app/api/workspace/files/route.js.nft.json +1 -1
  76. package/.next/server/app/api/workspace/route.js +9 -4
  77. package/.next/server/app/api/workspace/route.js.nft.json +1 -1
  78. package/.next/server/app/artifact/[...path]/page/server-reference-manifest.json +2 -2
  79. package/.next/server/app/artifact/[...path]/page.js +5 -4
  80. package/.next/server/app/artifact/[...path]/page.js.nft.json +1 -1
  81. package/.next/server/app/artifact/[...path]/page_client-reference-manifest.js +1 -1
  82. package/.next/server/app/favicon.ico/route.js.nft.json +1 -1
  83. package/.next/server/app/manifest.webmanifest/route.js.nft.json +1 -1
  84. package/.next/server/app/page/server-reference-manifest.json +67 -56
  85. package/.next/server/app/page.js +10 -11
  86. package/.next/server/app/page.js.nft.json +1 -1
  87. package/.next/server/app/page_client-reference-manifest.js +1 -1
  88. package/.next/server/chunks/{[root-of-the-server]__0o49ztf._.js → [root-of-the-server]__0-k4_ie._.js} +2 -2
  89. package/.next/server/chunks/[root-of-the-server]__0209ah4._.js +6 -6
  90. package/.next/server/chunks/[root-of-the-server]__04wldw9._.js +1 -1
  91. package/.next/server/chunks/[root-of-the-server]__0h_x6q6._.js +2 -2
  92. package/.next/server/chunks/[root-of-the-server]__0i23tc1._.js +3 -0
  93. package/.next/server/chunks/[root-of-the-server]__0mrk2it._.js +1 -1
  94. package/.next/server/chunks/[root-of-the-server]__0nr-v8s._.js +1 -1
  95. package/.next/server/chunks/[root-of-the-server]__0paqm5y._.js +3 -0
  96. package/.next/server/chunks/[root-of-the-server]__0qog7sm._.js +8 -0
  97. package/.next/server/chunks/[root-of-the-server]__0sm5xvm._.js +1 -1
  98. package/.next/server/chunks/[root-of-the-server]__0yisc5v._.js +5 -0
  99. package/.next/server/chunks/[root-of-the-server]__1-swlkw._.js +3 -3
  100. package/.next/server/chunks/[root-of-the-server]__12iddfq._.js +2 -2
  101. package/.next/server/chunks/[root-of-the-server]__15p29m3._.js +3 -0
  102. package/.next/server/chunks/[root-of-the-server]__17ses32._.js +3 -0
  103. package/.next/server/chunks/[root-of-the-server]__18-2tsq._.js +2 -2
  104. package/.next/server/chunks/[root-of-the-server]__1cjxw0-._.js +1 -1
  105. package/.next/server/chunks/[root-of-the-server]__1gi2nns._.js +5 -0
  106. package/.next/server/chunks/[root-of-the-server]__1iauz8a._.js +3 -0
  107. package/.next/server/chunks/[root-of-the-server]__1k3j52n._.js +1 -1
  108. package/.next/server/chunks/{[root-of-the-server]__209k6pk._.js → [root-of-the-server]__1lb_pxg._.js} +2 -2
  109. package/.next/server/chunks/[root-of-the-server]__1ndi14y._.js +1 -1
  110. package/.next/server/chunks/[root-of-the-server]__1orn-5b._.js +1 -1
  111. package/.next/server/chunks/[root-of-the-server]__1xqsrqq._.js +5 -0
  112. package/.next/server/chunks/[root-of-the-server]__1ygplx1._.js +1 -1
  113. package/.next/server/chunks/[root-of-the-server]__2163i40._.js +5 -0
  114. package/.next/server/chunks/_0ci0abh._.js +3 -0
  115. package/.next/server/chunks/_0eauz4t._.js +1 -1
  116. package/.next/server/chunks/_0f6ts7z._.js +1 -1
  117. package/.next/server/chunks/_0fg-1oj._.js +5 -0
  118. package/.next/server/chunks/_0khihjk._.js +2 -2
  119. package/.next/server/chunks/_0n74zsf._.js +1 -1
  120. package/.next/server/chunks/_0na2fj1._.js +2 -2
  121. package/.next/server/chunks/_0oh_99-._.js +3 -0
  122. package/.next/server/chunks/_0x-ej3f._.js +24 -24
  123. package/.next/server/chunks/_0z3nz21._.js +3 -0
  124. package/.next/server/chunks/_10tkr26._.js +1 -1
  125. package/.next/server/chunks/_12-amdu._.js +2 -2
  126. package/.next/server/chunks/_136j09a._.js +1 -1
  127. package/.next/server/chunks/_15740dw._.js +1 -1
  128. package/.next/server/chunks/_18izeh1._.js +5 -0
  129. package/.next/server/chunks/_1_5mnq4._.js +1 -1
  130. package/.next/server/chunks/_1ajbhv6._.js +2 -2
  131. package/.next/server/chunks/_1dc_d1q._.js +2 -2
  132. package/.next/server/chunks/_1drgfx4._.js +1 -1
  133. package/.next/server/chunks/_1e48czp._.js +2 -2
  134. package/.next/server/chunks/_1f06zo4._.js +3 -0
  135. package/.next/server/chunks/_1ic3bew._.js +2 -2
  136. package/.next/server/chunks/_1jn-aep._.js +2 -2
  137. package/.next/server/chunks/_1jn5btd._.js +6 -0
  138. package/.next/server/chunks/_1kg70wc._.js +2 -2
  139. package/.next/server/chunks/_1m2i5pt._.js +5 -0
  140. package/.next/server/chunks/_1ogqovh._.js +4 -4
  141. package/.next/server/chunks/_1qxheoa._.js +1 -1
  142. package/.next/server/chunks/_1ry6afh._.js +18 -0
  143. package/.next/server/chunks/_1taa4bs._.js +1 -1
  144. package/.next/server/chunks/_1tpr507._.js +1 -1
  145. package/.next/server/chunks/_1y8w80a._.js +1 -1
  146. package/.next/server/chunks/_1zxp-p6._.js +1 -1
  147. package/.next/server/chunks/_204744f._.js +5 -0
  148. package/.next/server/chunks/_20fsr_z._.js +1 -1
  149. package/.next/server/chunks/config_ts_1g4sz5o._.js +1 -1
  150. package/.next/server/chunks/features_0-cnt0l._.js +1 -1
  151. package/.next/server/chunks/features_0hdaci0._.js +1 -1
  152. package/.next/server/chunks/features_0p85gv6._.js +3 -0
  153. package/.next/server/chunks/{node_modules_zod_v4_0_v5xf5._.js → node_modules_zod_v4_01bha1c._.js} +2 -2
  154. package/.next/server/chunks/{node_modules_zod_v4_0q9hvql._.js → node_modules_zod_v4_0b99z6a._.js} +2 -2
  155. package/.next/server/chunks/{node_modules_zod_v4_1jg8iwg._.js → node_modules_zod_v4_1zz6lo1._.js} +2 -2
  156. package/.next/server/chunks/ssr/[root-of-the-server]__04upd5v._.js +3 -0
  157. package/.next/server/chunks/ssr/[root-of-the-server]__0dxszdt._.js +3 -0
  158. package/.next/server/chunks/ssr/[root-of-the-server]__0eezycw._.js +3 -0
  159. package/.next/server/chunks/ssr/[root-of-the-server]__0hpp3nw._.js +1 -1
  160. package/.next/server/chunks/ssr/[root-of-the-server]__0yngu44._.js +3 -0
  161. package/.next/server/chunks/ssr/[root-of-the-server]__16z72ny._.js +6 -0
  162. package/.next/server/chunks/ssr/[root-of-the-server]__1u_ry86._.js +3 -0
  163. package/.next/server/chunks/ssr/{[root-of-the-server]__1iwyp1e._.js → [root-of-the-server]__1unh_ew._.js} +1 -1
  164. package/.next/server/chunks/ssr/[root-of-the-server]__20re7ya._.js +3 -0
  165. package/.next/server/chunks/ssr/_00pgq9d._.js +5 -0
  166. package/.next/server/chunks/ssr/_07ke63g._.js +3 -0
  167. package/.next/server/chunks/ssr/_0agcbk7._.js +3 -0
  168. package/.next/server/chunks/ssr/_0e-gw2_._.js +3 -0
  169. package/.next/server/chunks/ssr/{_1ybo1hd._.js → _0f_om6y._.js} +3 -3
  170. package/.next/server/chunks/ssr/_0fqhhwi._.js +1 -1
  171. package/.next/server/chunks/ssr/{_026qnc9._.js → _0gpn71k._.js} +3 -3
  172. package/.next/server/chunks/ssr/_0iizjr9._.js +3 -0
  173. package/.next/server/chunks/ssr/_0ixvzo6._.js +75 -0
  174. package/.next/server/chunks/ssr/_0kkdx7t._.js +3 -0
  175. package/.next/server/chunks/ssr/_0lufvw7._.js +118 -0
  176. package/.next/server/chunks/ssr/_0vi6ky6._.js +115 -0
  177. package/.next/server/chunks/ssr/{_0ouzu9f._.js → _0yhji3e._.js} +2 -2
  178. package/.next/server/chunks/ssr/_0z38nha._.js +3 -0
  179. package/.next/server/chunks/ssr/{_1w2oba6._.js → _11nx2d4._.js} +2 -2
  180. package/.next/server/chunks/ssr/_12mijol._.js +2 -2
  181. package/.next/server/chunks/ssr/{_19ps4p3._.js → _150463c._.js} +8 -8
  182. package/.next/server/chunks/ssr/{_1bhy4yg._.js → _17d2ikl._.js} +2 -2
  183. package/.next/server/chunks/ssr/_19jez1a._.js +3 -0
  184. package/.next/server/chunks/ssr/_1blui1m._.js +3 -0
  185. package/.next/server/chunks/ssr/_1d423aj._.js +4 -4
  186. package/.next/server/chunks/ssr/{_1kd843u._.js → _1kbk28w._.js} +2 -2
  187. package/.next/server/chunks/ssr/_1kj_r9v._.js +3 -0
  188. package/.next/server/chunks/ssr/_1mqn9mc._.js +1 -1
  189. package/.next/server/chunks/ssr/_1myh7ss._.js +3 -0
  190. package/.next/server/chunks/ssr/_1neoj22._.js +1 -1
  191. package/.next/server/chunks/ssr/_1ou5sj0._.js +3 -0
  192. package/.next/server/chunks/ssr/_1p8xorg._.js +1 -1
  193. package/.next/server/chunks/ssr/_1tzacpl._.js +3 -0
  194. package/.next/server/chunks/ssr/_1xoch6f._.js +1 -1
  195. package/.next/server/chunks/ssr/_1yh5bj5._.js +1 -1
  196. package/.next/server/chunks/ssr/{_0btzccu._.js → _2021n9-._.js} +2 -2
  197. package/.next/server/chunks/ssr/{_1kq2ye_._.js → _20argo3._.js} +2 -2
  198. package/.next/server/chunks/ssr/features_bot_1ll3wp7._.js +3 -0
  199. package/.next/server/chunks/ssr/features_bot_1s_-2vj._.js +1 -1
  200. package/.next/server/chunks/ssr/features_bot_thread_query_ts_023eklt._.js +1 -1
  201. package/.next/server/chunks/ssr/features_config_1qxe5ur._.js +20 -0
  202. package/.next/server/chunks/ssr/features_connectors_components_mcp-setting_tsx_0jmbgvp._.js +3 -3
  203. package/.next/server/chunks/ssr/features_memory_components_memory-setting_tsx_0oa43sw._.js +1 -1
  204. package/.next/server/chunks/ssr/features_routine_components_routine-setting_tsx_055fknz._.js +1 -1
  205. package/.next/server/chunks/ssr/features_workspace_00jz2hu._.js +1 -1
  206. package/.next/server/chunks/ssr/{node_modules_18jn2qo._.js → node_modules_06e0wlv._.js} +1 -1
  207. package/.next/server/chunks/ssr/{node_modules_1rjt833._.js → node_modules_0cj26-9._.js} +1 -1
  208. package/.next/server/chunks/ssr/{node_modules_0yqy-0b._.js → node_modules_0d1rf5e._.js} +1 -1
  209. package/.next/server/chunks/ssr/{node_modules_1zqddke._.js → node_modules_0e86703._.js} +1 -1
  210. package/.next/server/chunks/ssr/{node_modules_09dj429._.js → node_modules_0es09am._.js} +1 -1
  211. package/.next/server/chunks/ssr/{node_modules_1c0pg3k._.js → node_modules_0gr_dzf._.js} +1 -1
  212. package/.next/server/chunks/ssr/{node_modules_1en2jx5._.js → node_modules_0gtcwz9._.js} +1 -1
  213. package/.next/server/chunks/ssr/{node_modules_0gmdur8._.js → node_modules_0hi9h8f._.js} +1 -1
  214. package/.next/server/chunks/ssr/{node_modules_1qe-oxg._.js → node_modules_0lkop0t._.js} +1 -1
  215. package/.next/server/chunks/ssr/{node_modules_1-53ebx._.js → node_modules_0nghisk._.js} +1 -1
  216. package/.next/server/chunks/ssr/{node_modules_02zt4az._.js → node_modules_0stovz0._.js} +1 -1
  217. package/.next/server/chunks/ssr/{node_modules_11bltzp._.js → node_modules_0we85kr._.js} +1 -1
  218. package/.next/server/chunks/ssr/{node_modules_00pocul._.js → node_modules_0ya7y1s._.js} +1 -1
  219. package/.next/server/chunks/ssr/{node_modules_1p-c8cr._.js → node_modules_0yrbwkj._.js} +1 -1
  220. package/.next/server/chunks/ssr/{node_modules_06i6bli._.js → node_modules_1-x70ie._.js} +1 -1
  221. package/.next/server/chunks/ssr/{node_modules_1-y9aho._.js → node_modules_12fd9g0._.js} +1 -1
  222. package/.next/server/chunks/ssr/{node_modules_1x6uwvn._.js → node_modules_12wxrgr._.js} +1 -1
  223. package/.next/server/chunks/ssr/{node_modules_1tzw5sn._.js → node_modules_139uu4q._.js} +1 -1
  224. package/.next/server/chunks/ssr/{node_modules_0rbaymq._.js → node_modules_14gpoe1._.js} +1 -1
  225. package/.next/server/chunks/ssr/{node_modules_05ojmcl._.js → node_modules_18fmji6._.js} +1 -1
  226. package/.next/server/chunks/ssr/{node_modules_0tf8_1e._.js → node_modules_19kkel8._.js} +1 -1
  227. package/.next/server/chunks/ssr/{node_modules_1_te3bu._.js → node_modules_1gcine1._.js} +1 -1
  228. package/.next/server/chunks/ssr/{node_modules_211zgim._.js → node_modules_1h4trkm._.js} +1 -1
  229. package/.next/server/chunks/ssr/{node_modules_0evjwh1._.js → node_modules_1mub_qu._.js} +1 -1
  230. package/.next/server/chunks/ssr/{node_modules_0auzgvx._.js → node_modules_1p78svs._.js} +1 -1
  231. package/.next/server/chunks/ssr/{node_modules_0j3te-1._.js → node_modules_1xp-7ep._.js} +1 -1
  232. package/.next/server/chunks/ssr/{node_modules_@mermaid-js_parser_dist_chunks_mermaid-parser_core_0y51bqj._.js → node_modules_@mermaid-js_parser_dist_chunks_mermaid-parser_core_0ay7_oi._.js} +1 -1
  233. package/.next/server/chunks/ssr/{node_modules_@mermaid-js_parser_dist_chunks_mermaid-parser_core_1sc114e._.js → node_modules_@mermaid-js_parser_dist_chunks_mermaid-parser_core_182ydq_._.js} +1 -1
  234. package/.next/server/middleware-build-manifest.js +3 -3
  235. package/.next/server/pages/404.html +1 -1
  236. package/.next/server/pages/500.html +1 -1
  237. package/.next/server/server-reference-manifest.js +1 -1
  238. package/.next/server/server-reference-manifest.json +69 -58
  239. package/.next/static/chunks/{39gj5vxz1zpm_.js → 01xjer0i_e5z5.js} +1 -1
  240. package/.next/static/chunks/{4440mws9jz3mt.js → 025bmrgeukcb2.js} +1 -1
  241. package/.next/static/chunks/03df16hs01-xi.js +1 -0
  242. package/.next/static/chunks/{1r4zajz14jp9-.js → 04e-e--5lk26x.js} +1 -1
  243. package/.next/static/chunks/0crocb7272z8k.js +1 -0
  244. package/.next/static/chunks/{03bhu4mk8en2q.js → 0dqsenl3uk_8z.js} +1 -1
  245. package/.next/static/chunks/0hhn8mf953761.js +1 -0
  246. package/.next/static/chunks/0n1o3k0z4m7c_.js +1 -0
  247. package/.next/static/chunks/0oe2zavre2a7d.css +1 -0
  248. package/.next/static/chunks/{1qzfgplyo18tc.js → 0oyz95sujd2c7.js} +1 -1
  249. package/.next/static/chunks/0srg9tv4105-i.js +1 -0
  250. package/.next/static/chunks/0t599wrclly7i.js +18 -0
  251. package/.next/static/chunks/{2-jn4xscbm-i2.js → 0u3ktztrzu1fa.js} +1 -1
  252. package/.next/static/chunks/{0r6nwxg4dv83t.js → 0u9ae9k_2g7k3.js} +1 -1
  253. package/.next/static/chunks/0x34bhth_sn35.js +1 -0
  254. package/.next/static/chunks/{0x_w4shtvrrfg.js → 0x_6z8vt8hyf4.js} +3 -3
  255. package/.next/static/chunks/{04imzjhvzw65d.js → 1_wstwzu1md-6.js} +2 -2
  256. package/.next/static/chunks/1aughn81slf90.js +1 -0
  257. package/.next/static/chunks/1g1j03h_l-e67.js +1 -0
  258. package/.next/static/chunks/1lp02y2nmddxg.js +1 -0
  259. package/.next/static/chunks/{35wdx3wt7cg4a.js → 1u5i-jti87jbo.js} +1 -1
  260. package/.next/static/chunks/211s4xjtecj2l.js +1 -0
  261. package/.next/static/chunks/2244-cat2jlvd.js +1 -0
  262. package/.next/static/chunks/{12scesro428m7.js → 2eev_i93slion.js} +1 -1
  263. package/.next/static/chunks/{3x6pggb-2kyrk.js → 2gocl3dq0_h1s.js} +1 -1
  264. package/.next/static/chunks/{3tz4dr0_8pq1-.js → 2m267diam_vib.js} +1 -1
  265. package/.next/static/chunks/{0hzbj7f48cmx0.js → 2o4dndk0d68do.js} +1 -1
  266. package/.next/static/chunks/{0ympuji_ufypd.js → 2sdwbfs1x5skp.js} +1 -1
  267. package/.next/static/chunks/2sjq4gsimlfqr.js +113 -0
  268. package/.next/static/chunks/{39vrqy1r_00jc.js → 2uleilh8ph06-.js} +1 -1
  269. package/.next/static/chunks/{0gljzv9fz1g7d.js → 2zchsg03a1pdp.js} +1 -1
  270. package/.next/static/chunks/32tmfirfjpulv.js +1 -0
  271. package/.next/static/chunks/{26-eblxwnykck.js → 337g9g_ux2gj-.js} +1 -1
  272. package/.next/static/chunks/376-s_i83irs-.js +1 -0
  273. package/.next/static/chunks/3blk-kpn39xr-.js +1 -0
  274. package/.next/static/chunks/3eieehp7wquyu.js +1 -0
  275. package/.next/static/chunks/3kc-e7pcj50ae.js +1 -0
  276. package/.next/static/chunks/3rwpyuo9nrrop.js +17 -0
  277. package/.next/static/chunks/3sf4l25l353ja.js +1 -0
  278. package/.next/static/chunks/{0zmrz4zfzm4dt.js → 3t9huugh-5_ps.js} +1 -1
  279. package/.next/static/chunks/3vz7m1w688juj.js +3 -0
  280. package/.next/static/chunks/{2kzwhbuobpkw3.js → 43q9cgbuw8krx.js} +2 -2
  281. package/.next/static/chunks/43skgt0h9woyu.js +1 -0
  282. package/app/api/events/app-event.client.ts +8 -2
  283. package/app/api/events/app-event.server.ts +7 -5
  284. package/app/api/events/app-event.ts +19 -8
  285. package/app/api/query-key.ts +13 -5
  286. package/bin/database.mjs +21 -11
  287. package/bin/thursday.mjs +5 -2
  288. package/components/ui/shiny-text.tsx +2 -2
  289. package/database/migrations/20260920024909_messy_baron_strucker/migration.sql +1 -0
  290. package/database/migrations/20260920024909_messy_baron_strucker/snapshot.json +1937 -0
  291. package/features/ai/components/model-picker.tsx +8 -2
  292. package/features/ai/model.schema.ts +26 -0
  293. package/features/artifact/components/artifact-setting.tsx +18 -24
  294. package/features/bot/bot.action.ts +3 -0
  295. package/features/bot/bot.runner.ts +25 -3
  296. package/features/bot/bot.seed.ts +98 -22
  297. package/features/bot/components/bot-badge.tsx +2 -2
  298. package/features/bot/components/bot-mark.tsx +12 -3
  299. package/features/bot/components/bot-room.tsx +36 -16
  300. package/features/bot/components/bot-setting.tsx +88 -34
  301. package/features/bot/components/crew-motion.ts +161 -0
  302. package/features/bot/components/mark-palette.tsx +3 -3
  303. package/features/bot/components/room-conversation.tsx +13 -8
  304. package/features/bot/components/room-list.tsx +9 -5
  305. package/features/bot/components/room-pill.tsx +171 -94
  306. package/features/bot/components/thread-badge.tsx +4 -4
  307. package/features/bot/components/thread-setting.tsx +58 -19
  308. package/features/bot/mark.const.ts +24 -0
  309. package/features/bot/thread.query.ts +32 -14
  310. package/features/bot/thread.store.ts +19 -16
  311. package/features/config/components/config-badge.tsx +7 -1
  312. package/features/config/components/config-setting.tsx +83 -214
  313. package/features/config/components/models-badge.tsx +5 -7
  314. package/features/config/components/voice-key.tsx +24 -1
  315. package/features/config/config.const.ts +9 -1
  316. package/features/connectors/components/mcp-setting.tsx +60 -29
  317. package/features/intro/components/intro.tsx +4 -18
  318. package/features/memory/components/memory-setting.tsx +11 -7
  319. package/features/reach/channel.ts +9 -1
  320. package/features/reach/components/reach-guide.tsx +606 -105
  321. package/features/reach/discord.ts +18 -3
  322. package/features/reach/reach.schema.ts +6 -0
  323. package/features/reach/reach.ts +55 -2
  324. package/features/reach/slack.ts +2 -1
  325. package/features/reach/telegram.ts +5 -1
  326. package/features/routine/components/routine-setting.tsx +46 -18
  327. package/features/settings/components/setting-ui.tsx +16 -58
  328. package/features/settings/components/settings.tsx +7 -4
  329. package/features/settings/settings.alert.ts +10 -9
  330. package/features/skills/components/skills-setting.tsx +78 -12
  331. package/features/skills/skills.action.ts +12 -0
  332. package/features/skills/skills.query.ts +24 -0
  333. package/features/thursday/components/call-log.tsx +19 -14
  334. package/features/thursday/components/side-captions.tsx +3 -2
  335. package/features/thursday/components/tab-state.tsx +5 -2
  336. package/features/thursday/components/thursday-setting.tsx +5 -6
  337. package/features/thursday/components/thursday.tsx +60 -29
  338. package/features/thursday/components/write-line.tsx +19 -5
  339. package/features/thursday/thursday.action.ts +4 -0
  340. package/features/thursday/thursday.query.ts +3 -2
  341. package/features/thursday/thursday.schema.ts +5 -0
  342. package/features/thursday/use-call-ring.ts +6 -1
  343. package/features/thursday/use-text-call.ts +25 -10
  344. package/features/thursday/use-thursday.ts +10 -1
  345. package/features/workspace/components/artifact-view.tsx +42 -33
  346. package/features/workspace/components/file-thumb.tsx +8 -4
  347. package/features/workspace/components/file-view.tsx +25 -2
  348. package/features/workspace/components/workspace-setting.tsx +27 -23
  349. package/features/workspace/workspace.query.ts +20 -1
  350. package/features/workspace/workspace.ts +14 -0
  351. package/guide/bots.md +27 -4
  352. package/guide/calls.md +7 -4
  353. package/guide/phone.md +23 -12
  354. package/guide/setup.md +24 -6
  355. package/guide/trouble.md +1 -1
  356. package/hooks/use-theme.ts +14 -0
  357. package/lib/protocol/events.client.ts +56 -14
  358. package/lib/protocol/events.server.ts +41 -12
  359. package/lib/utils.ts +1 -1
  360. package/package.json +1 -1
  361. package/scripts/reach-channels.test.mts +15 -2
  362. package/seed-skills/brief/daily-brief/SKILL.md +39 -0
  363. package/seed-skills/brief/daily-brief/page/brief.css +406 -0
  364. package/seed-skills/brief/daily-brief/references/brief.md +106 -0
  365. package/seed-skills/brief/daily-brief/references/preferences.md +67 -0
  366. package/seed-skills/brief/daily-brief/scripts/glance.mjs +128 -0
  367. package/seed-skills/brief/daily-brief/scripts/lib.mjs +182 -0
  368. package/seed-skills/brief/daily-brief/scripts/news.mjs +320 -0
  369. package/seed-skills/brief/daily-brief/scripts/page.mjs +322 -0
  370. package/seed-skills/brief/daily-brief/scripts/story.mjs +265 -0
  371. package/seed-skills/digest/README.md +20 -0
  372. package/seed-skills/digest/media-digest/SKILL.md +32 -0
  373. package/seed-skills/digest/media-digest/references/no-captions.md +20 -0
  374. package/seed-skills/digest/media-digest/references/page.md +56 -0
  375. package/seed-skills/digest/media-digest/references/reading.md +56 -0
  376. package/seed-skills/digest/media-digest/scripts/audio.mjs +232 -0
  377. package/seed-skills/digest/media-digest/scripts/digest.mjs +379 -0
  378. package/seed-skills/digest/media-digest/scripts/lib.mjs +284 -0
  379. package/seed-skills/digest/media-digest/scripts/part.mjs +16 -0
  380. package/seed-skills/digest/media-digest/scripts/text.mjs +287 -0
  381. package/seed-skills/digest/media-digest/scripts/yt.mjs +487 -0
  382. package/seed-skills/docs/README.md +32 -0
  383. package/seed-skills/docs/documents/SKILL.md +34 -0
  384. package/seed-skills/docs/documents/kit/package-lock.json +1596 -0
  385. package/seed-skills/docs/documents/kit/package.json +17 -0
  386. package/seed-skills/docs/documents/references/deck.md +63 -0
  387. package/seed-skills/docs/documents/references/invoice.md +64 -0
  388. package/seed-skills/docs/documents/references/pdf.md +59 -0
  389. package/seed-skills/docs/documents/references/print.md +43 -0
  390. package/seed-skills/docs/documents/references/sheets.md +49 -0
  391. package/seed-skills/docs/documents/references/translate.md +37 -0
  392. package/seed-skills/docs/documents/references/word.md +45 -0
  393. package/seed-skills/docs/documents/scripts/doc.mjs +123 -0
  394. package/seed-skills/docs/documents/scripts/lib/browser.mjs +259 -0
  395. package/seed-skills/docs/documents/scripts/lib/deck-chart.mjs +150 -0
  396. package/seed-skills/docs/documents/scripts/lib/deck.mjs +1132 -0
  397. package/seed-skills/docs/documents/scripts/lib/invoice.mjs +505 -0
  398. package/seed-skills/docs/documents/scripts/lib/kit.mjs +244 -0
  399. package/seed-skills/docs/documents/scripts/lib/pdf.mjs +645 -0
  400. package/seed-skills/docs/documents/scripts/lib/report.mjs +38 -0
  401. package/seed-skills/docs/documents/scripts/lib/sheet.mjs +523 -0
  402. package/seed-skills/docs/documents/scripts/lib/templates.mjs +34 -0
  403. package/seed-skills/docs/documents/scripts/lib/translate.mjs +691 -0
  404. package/seed-skills/docs/documents/scripts/lib/word.mjs +678 -0
  405. package/seed-skills/docs/documents/templates/letter.html +56 -0
  406. package/seed-skills/docs/documents/templates/print.css +219 -0
  407. package/seed-skills/docs/documents/templates/report.html +47 -0
  408. package/seed-skills/docs/documents/templates/resume.html +61 -0
  409. package/seed-skills/insta/instagram/references/post.md +31 -7
  410. package/seed-skills/trip/README.md +11 -0
  411. package/seed-skills/trip/travel/SKILL.md +40 -0
  412. package/seed-skills/trip/travel/page/itinerary.css +488 -0
  413. package/seed-skills/trip/travel/references/itinerary.md +70 -0
  414. package/seed-skills/trip/travel/references/plan.md +75 -0
  415. package/seed-skills/trip/travel/references/watch-and-book.md +39 -0
  416. package/seed-skills/trip/travel/scripts/flights.mjs +374 -0
  417. package/seed-skills/trip/travel/scripts/fx.mjs +57 -0
  418. package/seed-skills/trip/travel/scripts/hotels.mjs +356 -0
  419. package/seed-skills/trip/travel/scripts/itinerary.mjs +482 -0
  420. package/seed-skills/trip/travel/scripts/lib.mjs +120 -0
  421. package/seed-skills/trip/travel/scripts/selectors.mjs +78 -0
  422. package/seed-skills/trip/travel/scripts/watch.mjs +147 -0
  423. package/seed-skills/trip/travel/scripts/weather.mjs +150 -0
  424. package/seed-skills/tutor/picture-book/SKILL.md +6 -0
  425. package/seed-skills/tutor/picture-book/references/picture-book.md +22 -2
  426. package/.next/server/chunks/[root-of-the-server]__014ydvq._.js +0 -8
  427. package/.next/server/chunks/[root-of-the-server]__01d285y._.js +0 -5
  428. package/.next/server/chunks/[root-of-the-server]__04r4h-2._.js +0 -7
  429. package/.next/server/chunks/[root-of-the-server]__0ayldfn._.js +0 -5
  430. package/.next/server/chunks/[root-of-the-server]__0cfszwn._.js +0 -3
  431. package/.next/server/chunks/[root-of-the-server]__0npn_pn._.js +0 -3
  432. package/.next/server/chunks/[root-of-the-server]__0rqgb17._.js +0 -3
  433. package/.next/server/chunks/[root-of-the-server]__17weeeg._.js +0 -5
  434. package/.next/server/chunks/[root-of-the-server]__1ai5lme._.js +0 -8
  435. package/.next/server/chunks/[root-of-the-server]__1tg5got._.js +0 -3
  436. package/.next/server/chunks/_05v8k21._.js +0 -7
  437. package/.next/server/chunks/_0k6qjcf._.js +0 -5
  438. package/.next/server/chunks/_1d_enhu._.js +0 -3
  439. package/.next/server/chunks/_1jc5g4p._.js +0 -6
  440. package/.next/server/chunks/_1nfr-75._.js +0 -3
  441. package/.next/server/chunks/node_modules_consola_dist_chunks_prompt_mjs_0md6j0x._.js +0 -3
  442. package/.next/server/chunks/node_modules_consola_dist_chunks_prompt_mjs_14ih1vy._.js +0 -3
  443. package/.next/server/chunks/node_modules_consola_dist_chunks_prompt_mjs_1d6ez5-._.js +0 -3
  444. package/.next/server/chunks/ssr/[root-of-the-server]__0m7u9j-._.js +0 -3
  445. package/.next/server/chunks/ssr/[root-of-the-server]__0tzekbl._.js +0 -68
  446. package/.next/server/chunks/ssr/[root-of-the-server]__1756892._.js +0 -3
  447. package/.next/server/chunks/ssr/[root-of-the-server]__1cz2rz5._.js +0 -3
  448. package/.next/server/chunks/ssr/[root-of-the-server]__1mzi-ju._.js +0 -3
  449. package/.next/server/chunks/ssr/[root-of-the-server]__1nqw56a._.js +0 -3
  450. package/.next/server/chunks/ssr/[root-of-the-server]__1w9hqq8._.js +0 -8
  451. package/.next/server/chunks/ssr/_05pl_u8._.js +0 -3
  452. package/.next/server/chunks/ssr/_097-ljd._.js +0 -4
  453. package/.next/server/chunks/ssr/_0evkpto._.js +0 -3
  454. package/.next/server/chunks/ssr/_0hjzb5o._.js +0 -3
  455. package/.next/server/chunks/ssr/_0lu1n_x._.js +0 -3
  456. package/.next/server/chunks/ssr/_0u7ko71._.js +0 -3
  457. package/.next/server/chunks/ssr/_0wd_o8-._.js +0 -3
  458. package/.next/server/chunks/ssr/_0ya0cb0._.js +0 -3
  459. package/.next/server/chunks/ssr/_10yyqtk._.js +0 -67
  460. package/.next/server/chunks/ssr/_12eyown._.js +0 -5
  461. package/.next/server/chunks/ssr/_132qkfz._.js +0 -5
  462. package/.next/server/chunks/ssr/_15zqt-t._.js +0 -3
  463. package/.next/server/chunks/ssr/_184327j._.js +0 -3
  464. package/.next/server/chunks/ssr/_1q683w8._.js +0 -20
  465. package/.next/server/chunks/ssr/_1tawxu2._.js +0 -3
  466. package/.next/server/chunks/ssr/_1xx4zlb._.js +0 -3
  467. package/.next/server/chunks/ssr/features_bot_0s11m4r._.js +0 -3
  468. package/.next/static/chunks/03-724sj0nk_z.js +0 -3
  469. package/.next/static/chunks/0c_g4-11sha-1.js +0 -1
  470. package/.next/static/chunks/0h0lythv1ql93.js +0 -1
  471. package/.next/static/chunks/0lwunwbl7u7pt.js +0 -1
  472. package/.next/static/chunks/0rn9nbg6aif9f.js +0 -17
  473. package/.next/static/chunks/0vlgzqo9ka90v.js +0 -1
  474. package/.next/static/chunks/11tlxkr7a_rpc.js +0 -1
  475. package/.next/static/chunks/16s2fx3890_jd.js +0 -65
  476. package/.next/static/chunks/1g9yyvculuxj2.js +0 -1
  477. package/.next/static/chunks/1s6m4cmbn7htf.js +0 -1
  478. package/.next/static/chunks/1wl9t1-3i-q8p.css +0 -1
  479. package/.next/static/chunks/2-asot3p1j3yg.js +0 -1
  480. package/.next/static/chunks/22h9gvclqtx_2.js +0 -1
  481. package/.next/static/chunks/23nfu5g4vl_m7.js +0 -1
  482. package/.next/static/chunks/2m6jd3586ijb-.js +0 -1
  483. package/.next/static/chunks/2ndw4w4u2x51r.js +0 -1
  484. package/.next/static/chunks/304q9p54tcgm1.js +0 -1
  485. package/.next/static/chunks/37unh9460im7v.js +0 -18
  486. package/.next/static/chunks/3dipmu0mptqum.js +0 -1
  487. package/.next/static/chunks/3gki-squw28yu.js +0 -1
  488. package/.next/static/chunks/3nnzdl_te20hv.js +0 -1
  489. package/features/reach/components/reach-state.tsx +0 -71
  490. /package/.next/static/{En1vUPazxcYjPjnnahcN5 → fiNGsQfna8qldl8wU8wqr}/_buildManifest.js +0 -0
  491. /package/.next/static/{En1vUPazxcYjPjnnahcN5 → fiNGsQfna8qldl8wU8wqr}/_clientMiddlewareManifest.js +0 -0
  492. /package/.next/static/{En1vUPazxcYjPjnnahcN5 → fiNGsQfna8qldl8wU8wqr}/_ssgManifest.js +0 -0
@@ -114,15 +114,15 @@ Cover all of it, and prefer a fact over a description of a fact:
114
114
  Plain text, under ${g} words. No preamble, no headings about the summary itself, no account of how you have been going.`)}],abortSignal:e.signal,timeout:f.BOT_RUN.silenceMs}),j=h.trim();if(!j)throw Object.assign(Error("The summary of the context came back empty, so there is nothing to carry on from."),{isRetryable:!0});return{text:`Everything between the first message and here was compacted. Below is your own summary of it; carry on from the first message and this.
115
115
 
116
116
  ${j}`,usage:y(i)}}let y=a=>({input:a.inputTokens??0,output:a.outputTokens??0});a.s(["resumeTranscript",0,function(a,b=new Map){let c=new Map,d=new Set;for(let b of a)if(("tool"===b.role||"assistant"===b.role)&&Array.isArray(b.content))for(let a of b.content)"tool-result"===a.type&&(c.has(a.toolCallId)||c.set(a.toolCallId,a),"assistant"===b.role&&d.add(a.toolCallId));let e=[],f=new Set;for(let g of a){if("tool"===g.role){let a=g.content.filter(a=>"tool-result"!==a.type);a.length&&e.push({...g,content:a});continue}if("assistant"!==g.role||"string"==typeof g.content){e.push(g);continue}let a=[],h=[];for(let e of g.content){if("tool-call"!==e.type){h.push(e);continue}if(f.has(e.toolCallId))continue;let g=e.input;if("string"==typeof g)try{g=JSON.parse(g)}catch{g=void 0}if(!e.toolCallId||void 0===g){h.push({type:"text",text:"A tool argument stream was interrupted before a complete call was recorded. Inspect the saved work before continuing."});continue}let i=e.toolName===k.TOOL_NAMES.send_message?b.get(e.toolCallId):void 0,j=c.get(e.toolCallId)??(i?{type:"tool-result",toolCallId:e.toolCallId,toolName:e.toolName,output:{type:"json",value:i}}:void 0);if(e.providerExecuted&&(!j||!d.has(e.toolCallId))){h.push({type:"text",text:j?`The provider operation ${e.toolName} returned this data before its native continuation was interrupted: ${JSON.stringify(j.output)}`:`The provider operation ${e.toolName} was interrupted without a recorded result. Its remote execution state is unknown.`});continue}f.add(e.toolCallId),h.push({...e,input:g}),d.has(e.toolCallId)||a.push(j??{type:"tool-result",toolCallId:e.toolCallId,toolName:e.toolName,output:{type:"text",value:"No result: execution was interrupted before a result was recorded. The outcome is unknown. Inspect the current state before repeating the action."}})}h.length&&e.push({...g,content:h}),a.length&&e.push({role:"tool",content:a})}return e},"runBot",0,t]),c()}catch(a){c(a)}},!1),674986,a=>a.a(async(b,c)=>{try{var d=a.i(136340),e=a.i(203469),f=a.i(569572),g=a.i(875931),h=a.i(735502),i=a.i(569549),j=a.i(684321),k=a.i(821415),l=a.i(956802),m=a.i(176668),n=a.i(293480),o=a.i(8412),p=a.i(182248),q=a.i(221214),r=a.i(654034),s=a.i(446957),t=a.i(839430),u=a.i(109955),v=a.i(344853),w=b([g,h,i,q,r,t,v]);[g,h,i,q,r,t,v]=w.then?(await w)():w;let L=globalThis.__roomRuns??=new Map,M=globalThis.__roomThreadLock??=(0,o.createKeyedLock)(),N=globalThis.__roomPausing??={current:Promise.resolve()},O=globalThis.__roomCompactAsked??=new Set,P=(a,b)=>`${a}
117
- ${b}`;async function x(a){let b=await (0,q.findJobBot)(a.bot);(!b||b.disabled)&&(0,n.publicError)("Choose an enabled bot.");let{from:c,routine:d,...e}={...a,bot:b.name},f=(0,h.buildThreadOpening)({bot:e.bot,request:e.request,from:c,routine:d}),g=await (0,v.insertThread)({...e,routineId:d?.id??null,opening:f});return await z(g.id),g.id}async function y(a,b,c="user",d,e){let f=null;return await M(a,async()=>{let g=await (0,v.findThread)(a);if(g||(0,n.publicError)("No such thread."),d){let b=(await (0,t.listRoomWork)(a)).find(a=>a.bot.toLowerCase()===d.trim().toLowerCase());b&&b.bot!==u.ROOM_THURSDAY||(0,n.publicError)("Choose a participant in this thread."),d=b.bot}b.trim()===s.THREAD_CONTINUE&&(0,s.isAppStop)(g.pending)?(await (0,t.resumeRoom)(a),(await (0,t.listRoomWork)(a)).some(a=>"queued"===a.state)||(f=await (0,t.tellRoom)(a,"Continue from the saved conversation.","user"===c?"The user":u.ROOM_THURSDAY,d,void 0,!1))):f=await (0,t.tellRoom)(a,b,"user"===c?"The user":u.ROOM_THURSDAY,d,e)}),await z(a),f}async function z(a){await M(a,async()=>{if(!e.presence.watching&&!await (0,q.readKeepWorkingOn)()){let b=await (0,v.findThread)(a);b?.status!=="running"||[...L.values()].some(b=>b.threadId===a)||await (0,t.pauseRoom)(a,"The app is not open. Work resumes when it returns.",!0);return}for(let b=0;b<2;b++){let b;for(;b=await (0,t.claimRoomWork)(a);)!function(a){let b,c=new AbortController,d=new Promise(a=>{b=a});L.set(a.id,{threadId:a.threadId,stop:c,done:d}),A(a,c.signal).catch(b=>m.logger.error(`thread ${a.threadId}: participant`,b)).finally(()=>{L.delete(a.id),b(),z(a.threadId).catch(b=>m.logger.error(`thread ${a.threadId}: scheduling`,b))})}(b);await (0,t.settleRoom)(a)}})}async function A(a,b){let c=await B(a,b);if(c?.failure?.retry&&!b.aborted&&(await (0,t.noteRoomBreak)(a,c.failure.message),await (0,d.setTimeout)(f.BOT_RUN.retryMs,void 0,{signal:b}).catch(()=>{}),b.aborted||(c=await B(a,b))),!c||b.aborted)return;let g=c.failure?.message,h=c.ending;if(g||!h||h.stopped){let b=g??"The turn was interrupted. Continue from the saved conversation.";M(a.threadId,async()=>{let c=(await (0,t.listRoomWork)(a.threadId)).find(b=>b.id===a.id);if(c?.state!=="running"||c.generation!==a.generation)return;let d=C(a.threadId);await (0,t.pauseRoom)(a.threadId,b),await d}).catch(b=>m.logger.error(`thread ${a.threadId}: pausing`,b));return}await (0,t.finishRoomWork)(a,h.text);let n=await (0,v.findThread)(a.threadId);if(n?.status==="done"){e.presence.watching||await (0,i.isAnyCallLive)()||(0,l.desktopNotify)(n.label,n.outcome??"");let a=await (0,k.filesOnDisk)((0,j.pathsIn)(n.outcome??""),null),b=a.findIndex(j.opensOnFinish);e.appEvents.emit({type:"finished",threadId:n.id,label:n.label,bot:n.bot,words:(0,p.plainText)(n.outcome??"").slice(0,f.FINISHED_NOTICE.words),paths:b>0?[a[b],...a.filter((a,c)=>c!==b)]:a})}}async function B(a,b){let c=new Q(a,b),d=null,e=null;try{let f=await (0,v.findThread)(a.threadId);if(!f)return null;(await (0,t.listParticipantTranscript)(a.threadId,a.bot)).length||await (0,t.appendRoomMessage)(a.threadId,{bot:a.bot,parent:a.id,role:"user",content:`Request: ${f.request}
118
- Coordinator: ${f.bot}. Continue as ${a.bot} in this thread.`,hidden:!0}),await (0,t.consumeRoomInbox)(a);let g=await (0,t.listParticipantTranscript)(a.threadId,a.bot);await (0,r.runBot)({bot:a.bot,messages:(0,r.resumeTranscript)(g,await (0,t.listRoomReceipts)(a.threadId,a.bot,g))},{signal:b,threadId:a.threadId,parent:a.id,caller:a.caller,owner:f.bot,contextBudget:await (0,t.roomContextBudget)(a.threadId,a.bot),compactNow:()=>O.delete(P(a.threadId,a.bot)),session:(0,k.botBrowserSession)(a.threadId,a.bot),notes:()=>(0,t.consumeRoomInbox)(a),send:async c=>{b.throwIfAborted();let d=c.to.trim();if(d.toLowerCase()===u.ROOM_THURSDAY.toLowerCase())d=u.ROOM_THURSDAY;else{let a=await (0,q.findJobBot)(d);(!a||a.disabled)&&(0,n.publicError)(`No enabled bot named "${d}".`),d=a.name}let e=await (0,t.sendRoomMessage)(a,{...c,to:d});return z(a.threadId).catch(a=>m.logger.error("room message scheduling",a)),e},emit:async g=>{(!b.aborted||"tool-result"===g.type)&&(await c.on(g),"step"===g.type&&await (0,v.addThreadUsage)(a.threadId,g.usage,a.bot===f.bot?{tokens:g.usage.input,budget:g.budget}:null),"compact"===g.type&&await (0,v.addThreadUsage)(a.threadId,g.usage),"turn-end"===g.type&&(d=g),"error"===g.type&&(e={message:g.message,retry:g.retry},g.budget&&await (0,t.lowerRoomContextBudget)(a,g.budget)))}})}catch(c){b.aborted||(m.logger.error(`thread ${a.threadId}: ${a.bot} broke`,c),e={message:(0,g.modelErrorToString)(c),retry:!(0,n.isPublicError)(c)&&!(0,g.isProviderRefusal)(c)})}return{ending:d,failure:e}}class Q{work;signal;lane;assistant;tool;parts;calls;results;constructor(a,b){this.work=a,this.signal=b,this.lane=(0,p.PromiseChain)(),this.assistant=null,this.tool=null,this.parts={assistant:[],tool:[]},this.calls=new Set,this.results=new Set}async write(a,b,c=!1){let d={bot:this.work.bot,parent:this.work.id,role:b.role,content:b.content,compact:c,note:c};return null===a?(0,t.appendRoomMessage)(this.work.threadId,d):(await (0,v.upsertMessage)(this.work.threadId,a,d),a)}on(a){return this.lane(async()=>{if(!this.signal.aborted||"tool-result"===a.type)if("text"===a.type)this.parts.assistant.push({type:"text",text:a.text}),this.assistant=await this.write(this.assistant,{role:"assistant",content:this.parts.assistant});else if("tool"===a.type){if(this.calls.has(a.id)){let b=this.parts.assistant.find(b=>"tool-call"===b.type&&b.toolCallId===a.id);b&&"tool-call"===b.type&&a.providerOptions&&(b.providerOptions=a.providerOptions,this.assistant=await this.write(this.assistant,{role:"assistant",content:this.parts.assistant}));return}this.calls.add(a.id),this.parts.assistant.push({type:"tool-call",toolCallId:a.id,toolName:a.name,input:a.input,...a.providerExecuted?{providerExecuted:!0}:{},...a.providerOptions?{providerOptions:a.providerOptions}:{}}),this.assistant=await this.write(this.assistant,{role:"assistant",content:this.parts.assistant})}else if("tool-result"===a.type){if(this.results.has(a.id))return;this.results.add(a.id),this.parts.tool.push({type:"tool-result",toolCallId:a.id,toolName:a.name,output:a.error?{type:"error-text",value:String(a.output)}:"string"==typeof a.output?{type:"text",value:a.output}:{type:"json",value:a.output}}),this.tool=await this.write(this.tool,{role:"tool",content:this.parts.tool})}else if("step"===a.type){let b=[this.assistant,this.tool];for(let[c,d]of a.messages.entries())await this.write(b[c]??null,d);let c=b.slice(a.messages.length).filter(a=>null!==a);c.length&&await (0,v.deleteMessages)(this.work.threadId,c),this.assistant=this.tool=null,this.parts={assistant:[],tool:[]}}else"compact"===a.type&&await this.write(null,{role:"user",content:a.text},!0)})}}async function C(a){let b=[...L.values()].filter(b=>b.threadId===a);for(let a of b)a.stop.abort();await Promise.all(b.map(a=>a.done))}async function D(a){await M(a,async()=>{let b=await (0,v.findThread)(a);b||(0,n.publicError)("No such thread."),b.endedAt&&(0,n.publicError)("That thread has already ended."),await (0,t.cancelRoom)(a),await (0,v.updateThread)(a,{status:"cancelled",outcome:null,pending:null,seen:!0,endedAt:new Date}),await C(a),await (0,k.closeJobShell)(a)})}async function E(a){return M(a,()=>F(a))}async function F(a){let b=await (0,v.findThread)(a);await (0,t.cancelRoom)(a),await C(a),await (0,k.removeJobBrowsers)(a);let c=await (0,v.deleteThread)(a);return c&&b&&await (0,k.removeJobScratch)(a,b.label),c}async function G(){let a=0;for(let b of(await (0,v.listThreadFolders)()))("done"===b.status||"cancelled"===b.status)&&await M(b.id,async()=>{let c=await (0,v.findThread)(b.id);(c?.status==="done"||c?.status==="cancelled")&&await F(b.id)&&(a+=1)});return a}async function H(){let a=Date.now()-f.WORKSPACE_KEEP.forMs,b=b=>("done"===b.status||"cancelled"===b.status)&&(b.endedAt??b.updatedAt).getTime()<a,c=new Set(await (0,k.listScratchFolders)()),d=[];for(let a of(await (0,v.listThreadFolders)())){let e=(0,k.jobScratch)(a.id,a.label);c.delete(e)&&b(a)&&await M(a.id,async()=>{let c=await (0,v.findThread)(a.id);c&&b(c)&&(await (0,k.closeHiddenBrowser)(a.id),await (0,k.removeJobScratch)(a.id,a.label),d.push(e))})}return d.push(...await (0,k.removeUnchangedFolders)([...c])),await (0,k.pruneJobFiles)(),d.length&&m.logger.info(`cleared ${d.length} old job folder(s): ${d.join(", ")}`),d}async function I(){for(let a of(await (0,v.listRunningThreadIds)()))await M(a,async()=>{[...L.values()].some(b=>b.threadId===a)||(await (0,v.findThread)(a))?.status==="running"&&await (0,t.pauseRoom)(a,"The server restarted. Resume from the saved conversation.")})}async function J(a,b=!1){let c=(async()=>{let c=await (0,v.listRunningThreadIds)();await Promise.all(c.map(c=>M(c,async()=>{(await (0,v.findThread)(c))?.status==="running"&&(await C(c),await (0,t.pauseRoom)(c,a,b))})))})();N.current=c,await c}async function K(){if(await N.current,e.presence.watching)for(let a of(await (0,v.listAutoStoppedThreads)()))await M(a,async()=>{let b=await (0,v.findThread)(a);b?.status==="waiting"&&b.pending?.auto&&await (0,t.resumeRoom)(a,!1)}),await z(a)}a.s(["answerThread",0,y,"askCompact",0,function(a,b){O.add(P(a,b))},"cancelThread",0,D,"pauseThreads",0,J,"removeFinishedThreads",0,G,"removeThread",0,E,"resumeStoppedThreads",0,K,"startThread",0,x,"sweepJobFiles",0,H,"sweepThreads",0,I]),c()}catch(a){c(a)}},!1),317844,a=>a.a(async(b,c)=>{try{var d,e=a.i(106450),f=a.i(64203),g=a.i(569572),h=a.i(176668),i=a.i(182248),j=a.i(947950),k=a.i(899284),l=b([j]);[j]=l.then?(await l)():l;class m extends Error{serverName;authorizationUrl;constructor(a,b){super(`MCP server "${a}" requires authorization`),this.serverName=a,this.authorizationUrl=b,this.name="McpAuthRequiredError"}}class n{store;serverName;oauth;callbackUrl;clientName;staticClient;lastAuthorizationUrl;constructor(a,b,c,d,e,f){this.store=a,this.serverName=b,this.oauth=c,this.callbackUrl=d,this.clientName=e,this.staticClient=f}get redirectUrl(){return this.callbackUrl}get clientMetadata(){return{client_name:this.clientName,redirect_uris:[this.callbackUrl],grant_types:["authorization_code","refresh_token"],response_types:["code"],token_endpoint_auth_method:"client_secret_post"}}async persist(a){this.oauth={...this.oauth,...a},await this.store.saveOAuth(this.serverName,this.oauth)}clientInformation(){return this.staticClient??this.oauth.clientInformation}async saveClientInformation(a){await this.persist({clientInformation:a})}tokens(){return this.oauth.tokens}async saveTokens(a){await this.persist({tokens:a})}authorizationServerInformation(){return this.oauth.authorizationServer}async saveAuthorizationServerInformation(a){await this.persist({authorizationServer:a})}codeVerifier(){if(!this.oauth.codeVerifier)throw Error("No code verifier saved");return this.oauth.codeVerifier}async saveCodeVerifier(a){await this.persist({codeVerifier:a})}state(){return crypto.randomUUID()}async saveState(a){await this.persist({state:a})}storedState(){return this.oauth.state}redirectToAuthorization(a){this.lastAuthorizationUrl=a}async invalidateCredentials(a){let b={...this.oauth};("all"===a||"client"===a)&&(b.clientInformation=void 0),("all"===a||"tokens"===a)&&(b.tokens=void 0),("all"===a||"verifier"===a)&&(b.codeVerifier=void 0),this.oauth=b,await this.store.saveOAuth(this.serverName,b)}}let o=globalThis;o.__thursdayMcpManager&&o.__thursdayMcpManager.dispose(),d={callbackUrl:new URL("/api/mcp/oauth/callback",g.APP_URL).href,clientName:g.APP_NAME},o.__thursdayMcpManager=new class a{store;sessions;connecting;idleTtlMs;callbackUrl;clientName;constructor(a,b){this.store=a,this.sessions=new Map,this.connecting=new Map,this.callbackUrl=b.callbackUrl,this.idleTtlMs=b.idleTtlMs??18e5,this.clientName=b.clientName??g.APP_NAME}async connect(a){let b=this.connecting.get(a);if(b)return b;let c=this.doConnect(a).finally(()=>this.connecting.delete(a));return this.connecting.set(a,c),c}async callTool(a,b,c,d){let f=await this.ensureClient(a);try{let e=await f.callTool({name:b,arguments:c,options:d?{signal:d}:void 0});return this.touch(a),e}catch(b){if(b instanceof e.UnauthorizedError)throw await this.closeSession(a),new m(a);throw b}}async finishAuthorization(a){let b=a.get("state"),c=a.get("code");if(!b||!c)throw Error("OAuth callback is missing code or state");let d=await this.store.findByOAuthState(b);if(!d||!(0,k.isRemoteConfig)(d.config))throw Error("No server is waiting for this authorization");let f=this.providerFor(d),g=await (0,e.auth)(f,{serverUrl:d.config.url,authorizationCode:c,callbackState:b});if("AUTHORIZED"!==g)throw Error(`Token exchange ended in "${g}"`);return await f.invalidateCredentials("verifier"),await this.connect(d.name),d.name}async disconnect(a){await this.closeSession(a)}async dispose(){await Promise.all([...this.sessions.keys()].map(a=>this.closeSession(a)))}async doConnect(a){await this.closeSession(a);let b=await this.store.load(a);if(!b)throw Error(`Unknown MCP server "${a}"`);let c={};try{let d=await this.openClient(b,c),e=(await d.listTools()).tools.map(a=>({name:a.name,description:a.description,inputSchema:a.inputSchema,outputSchema:a.outputSchema}));return this.adopt(a,d),await this.store.saveConnectionResult(a,{toolInfo:e,lastError:null}),h.logger.info(`mcp "${a}" connected — ${e.length} tools`),{status:"connected",tools:e}}catch(l){var d,f;let g;if(l instanceof e.UnauthorizedError||l?.cause instanceof e.UnauthorizedError){let b=c.href;if(b)return await this.store.saveConnectionResult(a,{toolInfo:[],lastError:"Authorization required — finish sign-in in the opened tab"}),{status:"auth_required",authorizationUrl:b}}let j=(d=l,f=b,g=(0,i.errorToString)(d),/\b40[13]\b/.test(g)&&/OAuth|register/i.test(g)&&(0,k.isRemoteConfig)(f.config)&&!f.config.oauthClient?"This server does not allow automatic client registration. Register an OAuth app with the provider and add its client ID and secret.":g);throw await this.store.saveConnectionResult(a,{toolInfo:[],lastError:j}),h.logger.warn(`mcp "${a}" failed — ${j}`),Error(j,{cause:l})}}async openClient(a,b={}){if((0,k.isRemoteConfig)(a.config)){let c=this.providerFor(a);try{return await (0,e.createMCPClient)({name:this.clientName,transport:{type:"http",url:a.config.url,headers:a.config.headers,authProvider:c,redirect:"follow"}})}finally{b.href=c.lastAuthorizationUrl?.href}}return(0,e.createMCPClient)({name:this.clientName,transport:new f.Experimental_StdioMCPTransport({command:a.config.command,args:a.config.args,env:a.config.env})})}providerFor(a){let b=(0,k.isRemoteConfig)(a.config)?a.config.oauthClient:void 0;return new n(this.store,a.name,a.oauth??{},this.callbackUrl,this.clientName,b&&{client_id:b.clientId,client_secret:b.clientSecret})}async ensureClient(a){let b=this.sessions.get(a);if(b)return b.client;let c=await this.connect(a);if("auth_required"===c.status)throw new m(a,c.authorizationUrl);let d=this.sessions.get(a);if(!d)throw Error(`Session for "${a}" vanished mid-connect`);return d.client}adopt(a,b){this.sessions.set(a,{client:b,idleTimer:this.armIdleTimer(a)})}touch(a){let b=this.sessions.get(a);b&&(clearTimeout(b.idleTimer),b.idleTimer=this.armIdleTimer(a))}armIdleTimer(a){let b=setTimeout(()=>{this.closeSession(a)},this.idleTtlMs);return b.unref?.(),b}async closeSession(a){let b=this.sessions.get(a);b&&(this.sessions.delete(a),clearTimeout(b.idleTimer),await b.client.close().catch(()=>{}))}}({load:a=>(0,j.findServer)(a),saveOAuth:(a,b)=>(0,j.saveOAuthData)(a,b),saveConnectionResult:(a,b)=>null===b.lastError?(0,j.syncServerTools)(a,b.toolInfo):(0,j.saveConnectionError)(a,b.lastError),findByOAuthState:a=>(0,j.findServerByOAuthState)(a)},d);let p=o.__thursdayMcpManager;a.s(["McpAuthRequiredError",0,m,"mcpManager",0,p]),c()}catch(a){c(a)}},!1),947950,a=>a.a(async(b,c)=>{try{var d=a.i(93321),e=a.i(351674),f=a.i(203469),g=a.i(184838),h=a.i(714428),i=a.i(899284),j=b([g]);async function k(a){var b;let[c]=await g.database.select({name:h.mcpServerTable.name,config:h.mcpServerTable.config,lastError:h.mcpServerTable.lastError,toolsSyncedAt:h.mcpServerTable.toolsSyncedAt}).from(h.mcpServerTable).where((0,d.eq)(h.mcpServerTable.name,a));return c?{...c,config:(b=c.config,(0,i.isRemoteConfig)(b)?{url:b.url}:{command:b.command,args:b.args}),tools:await l(a)}:null}async function l(a){return g.database.select({id:h.mcpToolTable.id,name:h.mcpToolTable.name,description:h.mcpToolTable.description,inputSchema:h.mcpToolTable.inputSchema,outputSchema:h.mcpToolTable.outputSchema}).from(h.mcpToolTable).where((0,d.eq)(h.mcpToolTable.serverName,a)).orderBy(h.mcpToolTable.name)}async function m(a){let[b]=await g.database.select().from(h.mcpServerTable).where((0,d.eq)(h.mcpServerTable.name,a));return b??null}[g]=j.then?(await j)():j;let u=()=>f.appEvents.emit({type:"mcp"});async function n(a){let[b]=await g.database.insert(h.mcpServerTable).values({...a,lastError:null}).onConflictDoUpdate({target:h.mcpServerTable.name,set:{config:a.config,lastError:null}}).returning();return u(),b}async function o(a,b){await g.database.transaction(async c=>{b.length&&await c.insert(h.mcpToolTable).values(b.map(b=>({...b,serverName:a}))).onConflictDoUpdate({target:[h.mcpToolTable.serverName,h.mcpToolTable.name],set:{description:p(h.mcpToolTable.description),inputSchema:p(h.mcpToolTable.inputSchema),outputSchema:p(h.mcpToolTable.outputSchema)}}),await c.delete(h.mcpToolTable).where(b.length?(0,d.and)((0,d.eq)(h.mcpToolTable.serverName,a),(0,d.notInArray)(h.mcpToolTable.name,b.map(a=>a.name))):(0,d.eq)(h.mcpToolTable.serverName,a)),await c.update(h.mcpServerTable).set({lastError:null,toolsSyncedAt:new Date}).where((0,d.eq)(h.mcpServerTable.name,a))}),u()}function p(a){return e.sql.raw(`excluded."${a.name}"`)}async function q(a,b){await g.database.update(h.mcpServerTable).set({lastError:b}).where((0,d.eq)(h.mcpServerTable.name,a)),u()}async function r(a,b){await g.database.update(h.mcpServerTable).set({oauth:b}).where((0,d.eq)(h.mcpServerTable.name,a)),u()}async function s(a){let[b]=await g.database.select().from(h.mcpServerTable).where(e.sql`json_extract(${h.mcpServerTable.oauth}, '$.state') = ${a}`);return b??null}async function t(a){let b=await g.database.delete(h.mcpServerTable).where((0,d.eq)(h.mcpServerTable.name,a)).returning();return b.length>0&&u(),b.length>0}a.s(["deleteServer",0,t,"findPinnedTools",0,function(a){return g.database.select({server:h.mcpToolTable.serverName,name:h.mcpToolTable.name,description:h.mcpToolTable.description,inputSchema:h.mcpToolTable.inputSchema}).from(h.botMcpToolTable).innerJoin(h.mcpToolTable,(0,d.eq)(h.botMcpToolTable.toolId,h.mcpToolTable.id)).where((0,d.eq)(h.botMcpToolTable.botName,a)).orderBy(h.mcpToolTable.serverName,h.mcpToolTable.name)},"findServer",0,m,"findServerByOAuthState",0,s,"findServerDetail",0,k,"findToolSchemas",0,function(a,b){return b.length?g.database.select({name:h.mcpToolTable.name,description:h.mcpToolTable.description,inputSchema:h.mcpToolTable.inputSchema}).from(h.mcpToolTable).where((0,d.and)((0,d.eq)(h.mcpToolTable.serverName,a),(0,d.inArray)(h.mcpToolTable.name,b))).orderBy(h.mcpToolTable.name):Promise.resolve([])},"listServerNames",0,function(){return g.database.select({name:h.mcpServerTable.name}).from(h.mcpServerTable).orderBy(h.mcpServerTable.name)},"listToolNames",0,function(a){let b=g.database.select({server:h.mcpToolTable.serverName,name:h.mcpToolTable.name}).from(h.mcpToolTable);return a?b.where((0,d.eq)(h.mcpToolTable.serverName,a)).orderBy(h.mcpToolTable.name):b.orderBy(h.mcpToolTable.serverName,h.mcpToolTable.name)},"saveConnectionError",0,q,"saveOAuthData",0,r,"syncServerTools",0,o,"upsertServer",0,n]),c()}catch(a){c(a)}},!1),899284,a=>{"use strict";var b=a.i(53112),c=a.i(706210);let d=b.z.object({url:b.z.url(),headers:b.z.record(b.z.string(),b.z.string()).optional(),oauthClient:b.z.object({clientId:b.z.string().min(1),clientSecret:b.z.string().optional()}).optional()}),e=b.z.object({command:b.z.string().min(1),args:b.z.array(b.z.string()).optional(),env:b.z.record(b.z.string(),b.z.string()).optional()}),f=b.z.union([d,e]),g=b.z.object({name:b.z.string(),description:b.z.string().optional(),inputSchema:b.z.looseObject({}).optional(),outputSchema:b.z.looseObject({}).optional()});b.z.object({clientInformation:b.z.looseObject({}).optional(),tokens:b.z.looseObject({}).optional(),authorizationServer:b.z.looseObject({}).optional(),codeVerifier:b.z.string().optional(),state:b.z.string().optional()});let h=b.z.object({name:b.z.string().min(1).max(40),config:f,toolCount:b.z.number().int(),lastError:b.z.string().nullish()}),i=g.extend({id:b.z.number().int(),description:b.z.string().nullish()});h.omit({toolCount:!0}).extend({tools:i.array().default([]),toolsSyncedAt:c.DateLikeSchema});let j=b.z.object({name:b.z.string().min(1,"Name is required").max(40).regex(/^[a-zA-Z0-9_-]+$/,"Only letters, numbers, - and _ are allowed"),config:f});b.z.union([b.z.object({mcpServers:b.z.record(b.z.string(),f)}),b.z.record(b.z.string(),f)]),a.s(["MCPServerFormSchema",0,j,"isRemoteConfig",0,function(a){return"url"in a}])},986743,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(569572),i=a.i(184838),j=a.i(714428),k=a.i(8412),l=a.i(661210),m=b([i]);[i]=m.then?(await m)():m;let E=(0,k.createKeyedLock)(),F=()=>g.appEvents.emit({type:"memory"});async function n(a,b,c={}){let[d]=await i.database.insert(j.memoryNoteTable).values({path:a,description:b,ownedByUser:c.ownedByUser??!1}).onConflictDoNothing({target:j.memoryNoteTable.path}).returning();return d&&F(),d??null}async function o(a,b){let[c]=await i.database.update(j.memoryNoteTable).set({...b,updatedAt:new Date}).where((0,d.eq)(j.memoryNoteTable.id,a)).returning();return c&&F(),c??null}async function p(a){let b=await i.database.delete(j.memoryNoteTable).where((0,d.eq)(j.memoryNoteTable.id,a)).returning({id:j.memoryNoteTable.id});return b.length>0&&F(),b.length>0}async function q(a,b){let[c]=await i.database.insert(j.memoryFactTable).values({noteId:a,text:b,source:"user"}).returning();return await t(a),F(),c}async function r(a,b,c){let e,f=await (e=()=>i.database.transaction(async e=>{let f=await e.update(j.memoryFactTable).set({isLatest:!1}).where((0,d.and)((0,d.eq)(j.memoryFactTable.id,b),(0,d.eq)(j.memoryFactTable.noteId,a),(0,d.eq)(j.memoryFactTable.isLatest,!0))).returning({id:j.memoryFactTable.id});if(0===f.length)return null;let[g]=await e.insert(j.memoryFactTable).values({noteId:a,text:c,source:"user"}).returning();return await e.update(j.memoryNoteTable).set({updatedAt:new Date}).where((0,d.eq)(j.memoryNoteTable.id,a)),g}),E("memory",e));return f&&F(),f}async function s(a,b){let c=await i.database.delete(j.memoryFactTable).where((0,d.and)((0,d.eq)(j.memoryFactTable.id,b),(0,d.eq)(j.memoryFactTable.noteId,a))).returning({id:j.memoryFactTable.id});return c.length>0&&(await t(a),F()),c.length>0}function t(a){return i.database.update(j.memoryNoteTable).set({updatedAt:new Date}).where((0,d.eq)(j.memoryNoteTable.id,a))}async function u(){for(let a of l.MEMORY_ALWAYS_LISTED){let b=l.MEMORY_PATHS.find(b=>b.path===a)?.of??a;await i.database.insert(j.memoryNoteTable).values({path:a,description:b}).onConflictDoUpdate({target:j.memoryNoteTable.path,set:{description:b}})}}async function v(a){let b=a.map(a=>a.trim()).filter(Boolean),c=[],e=[];if(!b.length)return{found:c,missing:e};let f={id:j.memoryNoteTable.id,path:j.memoryNoteTable.path,description:j.memoryNoteTable.description},g=await i.database.select(f).from(j.memoryNoteTable).where((0,d.inArray)(j.memoryNoteTable.path,b)),h=new Map(g.map(a=>[a.path.toLowerCase(),a]));if(b.some(a=>!h.has(a.toLowerCase()))){let a=await i.database.select({...f,aliases:j.memoryNoteTable.aliases}).from(j.memoryNoteTable),b=(a,b)=>{let c=a.trim().toLowerCase();c&&!h.has(c)&&h.set(c,b)};for(let c of a)b(c.path,c);for(let c of a)for(let a of(b(c.path.slice(c.path.indexOf("/")+1),c),c.aliases??[]))b(a,c)}let k=new Set;for(let a of b){let b=h.get(a.toLowerCase());if(!b){e.push(a);continue}k.has(b.id)||(k.add(b.id),c.push(b))}return{found:c,missing:e}}async function w(a){let{found:b}=await v([a]);return b[0]?.path??null}async function x(a,b={}){let{found:c,missing:g}=await v(a);if(!c.length)return{notes:[],missing:g};let h=c.map(a=>a.id),k=await i.database.select({id:j.memoryFactTable.id,noteId:j.memoryFactTable.noteId,text:j.memoryFactTable.text,alwaysLoad:j.memoryFactTable.alwaysLoad,source:j.memoryFactTable.source,createdAt:j.memoryFactTable.createdAt,saidAt:j.callTable.startedAt}).from(j.memoryFactTable).leftJoin(j.callTable,(0,d.eq)(j.memoryFactTable.callId,j.callTable.id)).where((0,d.and)((0,d.eq)(j.memoryFactTable.isLatest,!0),(0,d.inArray)(j.memoryFactTable.noteId,h))).orderBy((0,e.asc)(j.memoryFactTable.id));return!1!==b.touch&&await i.database.update(j.memoryNoteTable).set({hits:f.sql`${j.memoryNoteTable.hits} + 1`,lastReadAt:new Date}).where((0,d.inArray)(j.memoryNoteTable.id,h)),{notes:c.map(a=>({path:a.path,description:a.description,facts:k.filter(b=>b.noteId===a.id).map(a=>({id:a.id,text:a.text,...a.saidAt?{saidAt:a.saidAt}:{}}))})),missing:g}}(0,d.inArray)(j.memoryNoteTable.path,l.MEMORY_ALWAYS_LISTED);let G=a=>a.toLowerCase().replace(/[\s.,!?…·'"`]/g,"");async function y(a,b,c=null){let e,g=[],k=[],l=[];await (e=()=>i.database.transaction(async e=>{let[i]=await e.select({count:f.sql`count(*)`}).from(j.memoryFactTable).where((0,d.and)((0,d.eq)(j.memoryFactTable.alwaysLoad,!0),(0,d.eq)(j.memoryFactTable.isLatest,!0))),m=h.MEMORY_LIMITS.carried-Number(i?.count??0),n=(a,b)=>!!a&&(m>0?(m-=1,!0):(l.push(b),!1));for(let f of a){let a,h=f.path.trim();if(!h)continue;k.push(h);let i=f.description?.trim(),l=f.aliases?.map(a=>a.trim()).filter(Boolean),o=(f.facts??[]).map(a=>({...a,text:a.text.trim()})).filter(a=>a.text),[p]=await e.select({id:j.memoryNoteTable.id}).from(j.memoryNoteTable).where((0,d.eq)(j.memoryNoteTable.path,h));if(p)a=p.id,(i||l)&&await e.update(j.memoryNoteTable).set({...i?{description:i}:{},...l?{aliases:l}:{},updatedAt:new Date}).where((0,d.eq)(j.memoryNoteTable.id,a));else{let[b]=await e.insert(j.memoryNoteTable).values({path:h,description:i??o[0]?.text.slice(0,80)??h,...l?{aliases:l}:{}}).returning({id:j.memoryNoteTable.id});a=b.id,i||g.push(h)}if(!o.length)continue;let q=await e.select({id:j.memoryFactTable.id,text:j.memoryFactTable.text,alwaysLoad:j.memoryFactTable.alwaysLoad}).from(j.memoryFactTable).where((0,d.and)((0,d.eq)(j.memoryFactTable.noteId,a),(0,d.eq)(j.memoryFactTable.isLatest,!0))),r=new Map(q.map(a=>[G(a.text),a])),s=async(a,b,c)=>{if(b===a.alwaysLoad)return;let f=b?n(!0,c):(m+=1,!1);f!==a.alwaysLoad&&(await e.update(j.memoryFactTable).set({alwaysLoad:f}).where((0,d.eq)(j.memoryFactTable.id,a.id)),a.alwaysLoad=f)};for(let f of o){if(null!=f.replaces){let[g]=await e.select({id:j.memoryFactTable.id,text:j.memoryFactTable.text,alwaysLoad:j.memoryFactTable.alwaysLoad}).from(j.memoryFactTable).where((0,d.and)((0,d.eq)(j.memoryFactTable.id,f.replaces),(0,d.eq)(j.memoryFactTable.noteId,a),(0,d.eq)(j.memoryFactTable.isLatest,!0)));if(g){if(G(g.text)===G(f.text)){await s(g,f.alwaysLoad??g.alwaysLoad,f.text),r.set(G(g.text),g);continue}await e.update(j.memoryFactTable).set({isLatest:!1}).where((0,d.eq)(j.memoryFactTable.id,g.id)),r.delete(G(g.text)),g.alwaysLoad&&(m+=1);let[h]=await e.insert(j.memoryFactTable).values({noteId:a,text:f.text,source:b,callId:c,alwaysLoad:n(f.alwaysLoad??g.alwaysLoad,f.text)}).returning({id:j.memoryFactTable.id,alwaysLoad:j.memoryFactTable.alwaysLoad});r.set(G(f.text),{...h,text:f.text});continue}}let g=r.get(G(f.text));if(g){null!=f.alwaysLoad&&await s(g,f.alwaysLoad,f.text);continue}let[h]=await e.insert(j.memoryFactTable).values({noteId:a,text:f.text,source:b,callId:c,alwaysLoad:n(!0===f.alwaysLoad,f.text)}).returning({id:j.memoryFactTable.id,alwaysLoad:j.memoryFactTable.alwaysLoad});r.set(G(f.text),{...h,text:f.text})}await e.update(j.memoryNoteTable).set({updatedAt:new Date}).where((0,d.eq)(j.memoryNoteTable.id,a))}}),E("memory",e));let{notes:m}=await x(k,{touch:!1});return F(),{notes:m,unnamed:g,notLoaded:l}}async function z(a,b,c){let e,g=await (e=()=>i.database.transaction(async e=>{if(c){let[a]=await e.select({count:f.sql`count(*)`}).from(j.memoryFactTable).where((0,d.and)((0,d.eq)(j.memoryFactTable.alwaysLoad,!0),(0,d.eq)(j.memoryFactTable.isLatest,!0)));if(Number(a?.count??0)>=h.MEMORY_LIMITS.carried)return"full"}let[g]=await e.update(j.memoryFactTable).set({alwaysLoad:c}).where((0,d.and)((0,d.eq)(j.memoryFactTable.id,b),(0,d.eq)(j.memoryFactTable.noteId,a),(0,d.eq)(j.memoryFactTable.isLatest,!0))).returning({id:j.memoryFactTable.id});return g?"ok":"missing"}),E("memory",e));return"ok"===g&&F(),g}async function A(){let[a,b]=await Promise.all([i.database.select({id:j.memoryNoteTable.id,path:j.memoryNoteTable.path,description:j.memoryNoteTable.description,aliases:j.memoryNoteTable.aliases,hits:j.memoryNoteTable.hits,lastReadAt:j.memoryNoteTable.lastReadAt,createdAt:j.memoryNoteTable.createdAt}).from(j.memoryNoteTable),i.database.select({noteId:j.memoryFactTable.noteId,count:f.sql`count(*)`}).from(j.memoryFactTable).where((0,d.eq)(j.memoryFactTable.isLatest,!0)).groupBy(j.memoryFactTable.noteId)]),c=new Map(b.map(a=>[a.noteId,a.count]));return a.filter(a=>(0,l.isAlwaysListed)(a.path)||(c.get(a.id)??0)>0).sort((a,b)=>Number((0,l.isAlwaysListed)(b.path))-Number((0,l.isAlwaysListed)(a.path))||(0,l.recallScore)(b)-(0,l.recallScore)(a)).map(a=>({path:a.path,description:a.description,aliases:a.aliases,factCount:c.get(a.id)??0,lastSeenAt:a.lastReadAt??a.createdAt}))}async function B(a){let b,c=await (b=()=>i.database.transaction(async b=>{let c=await b.delete(j.memoryFactTable).where((0,d.eq)(j.memoryFactTable.id,a)).returning({noteId:j.memoryFactTable.noteId});if(0===c.length)return null;let e=c[0].noteId,[g]=await b.select({path:j.memoryNoteTable.path,ownedByUser:j.memoryNoteTable.ownedByUser}).from(j.memoryNoteTable).where((0,d.eq)(j.memoryNoteTable.id,e)),[h]=await b.select({count:f.sql`count(*)`}).from(j.memoryFactTable).where((0,d.and)((0,d.eq)(j.memoryFactTable.noteId,e),(0,d.eq)(j.memoryFactTable.isLatest,!0)));return h?.count!==0||!g||g.ownedByUser||(0,l.isAlwaysListed)(g.path)?(await b.update(j.memoryNoteTable).set({updatedAt:new Date}).where((0,d.eq)(j.memoryNoteTable.id,e)),{path:g?.path??"",noteGone:!1}):(await b.delete(j.memoryNoteTable).where((0,d.eq)(j.memoryNoteTable.id,e)),{path:g.path,noteGone:!0})}),E("memory",b));return c&&F(),c}async function C(a){let[b]=await i.database.select({source:j.memoryFactTable.source,callId:j.memoryFactTable.callId}).from(j.memoryFactTable).where((0,d.eq)(j.memoryFactTable.id,a));return b??null}async function D(){let a=await i.database.delete(j.memoryNoteTable).returning({id:j.memoryNoteTable.id});return await u(),a.length>0&&F(),a.length}a.s(["addFact",0,q,"createNote",0,n,"deleteAllNotes",0,D,"deleteNote",0,p,"findFactCall",0,C,"forgetFact",0,s,"forgetFactById",0,B,"listAlwaysLoaded",0,function(){return i.database.select({id:j.memoryFactTable.id,path:j.memoryNoteTable.path,text:j.memoryFactTable.text}).from(j.memoryFactTable).innerJoin(j.memoryNoteTable,(0,d.eq)(j.memoryFactTable.noteId,j.memoryNoteTable.id)).where((0,d.and)((0,d.eq)(j.memoryFactTable.alwaysLoad,!0),(0,d.eq)(j.memoryFactTable.isLatest,!0))).orderBy((0,e.asc)(j.memoryNoteTable.path),(0,e.asc)(j.memoryFactTable.id)).limit(h.MEMORY_LIMITS.carried)},"listNoteIndex",0,A,"readNotes",0,x,"resolveNotePath",0,w,"reviseFact",0,r,"setFactAlwaysLoad",0,z,"updateNote",0,o,"writeNotes",0,y]),c()}catch(a){c(a)}},!1),661210,a=>{"use strict";var b=a.i(53112),c=a.i(706210);let d=b.z.enum(["user","call","bot"]),e=b.z.object({id:b.z.number(),text:b.z.string(),alwaysLoad:b.z.boolean(),source:d.nullish(),createdAt:c.DateLikeSchema});b.z.object({id:b.z.number(),path:b.z.string(),description:b.z.string(),aliases:b.z.string().array().nullish(),ownedByUser:b.z.boolean(),hits:b.z.number(),lastReadAt:c.DateLikeSchema.nullable(),createdAt:c.DateLikeSchema,updatedAt:c.DateLikeSchema,factCount:b.z.number(),facts:e.array()});let f=[{path:"profile",of:"The user themselves — their name, age, what they do, where they live, and whatever else says who they are"},{path:"preferences",of:"How they want things done, and said"},{path:"people/",of:"Someone in their life, and what matters about them"},{path:"projects/",of:"Something with an end — a trip, a purchase, a deadline, a thing being built"},{path:"topics/",of:"Something ongoing that keeps coming back"}],g=f.filter(a=>!a.path.endsWith("/")).map(a=>a.path),h=f.filter(a=>a.path.endsWith("/")).map(a=>a.path.slice(0,-1)),i=RegExp(`^(?:${g.join("|")}|(?:${h.join("|")})/.+)$`),j=["profile","preferences"];a.s(["MEMORY_ALWAYS_LISTED",0,j,"MEMORY_PATHS",0,f,"appNoteLine",0,a=>f.find(b=>b.path===a)?.of??null,"isAlwaysListed",0,a=>j.includes(a),"isMemoryPath",0,a=>i.test(a),"recallScore",0,function(a){let b=(0,c.toDate)(a.lastReadAt??a.createdAt),d=Math.max(0,(Date.now()-b.getTime())/864e5);return(a.hits+1)/(1+d)}])},780946,a=>a.a(async(b,c)=>{try{var d=a.i(93321),e=a.i(258261),f=a.i(530385),g=a.i(203469),h=a.i(569572),i=a.i(184838),j=a.i(714428),k=a.i(221214),l=a.i(293480),m=a.i(643020),n=b([i,k]);[i,k]=n.then?(await n)():n;let z=()=>g.appEvents.emit({type:"routines"});async function o(a,b){return i.database.select({id:j.threadTable.id,status:j.threadTable.status,outcome:j.threadTable.outcome,updatedAt:j.threadTable.updatedAt}).from(j.threadTable).where((0,d.eq)(j.threadTable.routineId,a)).orderBy((0,f.desc)(j.threadTable.createdAt)).limit(b)}let A=async a=>{let{createdAt:b,...c}=a;return{...c,runs:await o(a.id,h.ROUTINE.runsShown)}};async function p(){let a=await i.database.select().from(j.routineTable).orderBy(j.routineTable.createdAt);return Promise.all(a.map(A))}async function q(a){let[b]=await i.database.select().from(j.routineTable).where((0,d.eq)(j.routineTable.id,a));return b?A(b):null}async function r(a){let b=await q(a.trim());if(b)return b;let c=a.trim().toLowerCase(),d=(await p()).filter(a=>a.label.toLowerCase()===c);return 1===d.length?d[0]:null}async function s(a){let b=await (0,k.findJobBot)(a);return(!b||b.disabled)&&(0,l.publicError)("Choose an enabled bot."),b.name}function t(a,b){b&&"once"===a.kind&&(0,m.momentOf)(a.at)<=new Date&&(0,l.publicError)("That time has passed. Pick a later one.")}async function u(a){let[{total:b}]=await i.database.select({total:(0,e.count)()}).from(j.routineTable);b>=h.ROUTINE.max&&(0,l.publicError)(`There are already ${h.ROUTINE.max} routines. Delete one to make another.`),t(a.schedule,!0);let[c]=await i.database.insert(j.routineTable).values({id:crypto.randomUUID(),...a,bot:await s(a.bot),nextRunAt:(0,m.nextRun)(a.schedule,new Date)}).returning();return z(),A(c)}async function v(a,b){let[c]=await i.database.select().from(j.routineTable).where((0,d.eq)(j.routineTable.id,a));if(!c)return null;let e=b.schedule??c.schedule,f=!!b.schedule||b.enabled&&!c.enabled;f&&t(e,b.enabled??c.enabled);let[g]=await i.database.update(j.routineTable).set({...b,...b.bot?{bot:await s(b.bot)}:{},...f?{nextRunAt:(0,m.nextRun)(e,new Date)}:{}}).where((0,d.eq)(j.routineTable.id,a)).returning();return z(),A(g)}async function w(a){let b=await i.database.delete(j.routineTable).where((0,d.eq)(j.routineTable.id,a)).returning({id:j.routineTable.id});return b.length&&z(),b.length>0}async function x(a){return(await o(a,1))[0]??null}async function y(a){return(await i.database.select({id:j.threadTable.id}).from(j.threadTable).where((0,d.and)((0,d.eq)(j.threadTable.routineId,a),(0,d.eq)(j.threadTable.seen,!1),(0,d.inArray)(j.threadTable.status,["done","cancelled"])))).map(a=>a.id)}a.s(["createRoutine",0,u,"deleteRoutine",0,w,"findRoutine",0,q,"latestRun",0,x,"listRoutines",0,p,"listUnseenRunIds",0,y,"resolveRoutine",0,r,"updateRoutine",0,v]),c()}catch(a){c(a)}},!1),643020,a=>{"use strict";var b=a.i(723885),c=a.i(569572),d=a.i(706210);let e=b.default.string().regex(/^([01]\d|2[0-3]):[0-5]\d$/,"A time is HH:MM, 00:00 to 23:59");function f(a){let[b,c]=a.split(" "),[d,e,f]=b.split("-").map(Number),[g,h]=c.split(":").map(Number);return new Date(d,e-1,f,g,h)}let g=/^\d{4}-\d\d-\d\d ([01]\d|2[0-3]):[0-5]\d$/,h=b.default.string().regex(g,'A moment is "YYYY-MM-DD HH:MM"').refine(a=>{if(!g.test(a))return!0;let b=f(a);return b.getMonth()===Number(a.slice(5,7))-1&&b.getDate()===Number(a.slice(8,10))},"There is no such day"),i=b.default.discriminatedUnion("kind",[b.default.object({kind:b.default.literal("once"),at:h}),b.default.object({kind:b.default.literal("daily"),time:e,days:b.default.array(b.default.number().int().min(1).max(7)).min(1,"Pick at least one day").transform(a=>[...new Set(a)].sort((a,b)=>a-b))}),b.default.object({kind:b.default.literal("every"),hours:b.default.number().int().min(c.ROUTINE.minHours,`No more often than every ${c.ROUTINE.minHours}h`).max(168)})]),j=b.default.object({bot:b.default.string().trim().min(1,"Pick a bot"),label:b.default.string().trim().min(1,"Give it a name").max(80),request:b.default.string().trim().min(1,"Say what it should do"),schedule:i}),k=b.default.object({id:b.default.string(),status:b.default.enum(["running","waiting","done","cancelled"]),outcome:b.default.string().nullable(),updatedAt:d.DateLikeSchema});j.extend({id:b.default.string(),enabled:b.default.boolean(),nextRunAt:d.DateLikeSchema,runs:b.default.array(k)});let l=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],m=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];a.s(["RoutineInputSchema",0,j,"RoutineScheduleSchema",0,i,"momentOf",0,f,"nextRun",0,function(a,b){if("once"===a.kind)return f(a.at);if("every"===a.kind)return new Date(b.getTime()+36e5*a.hours);let[c,d]=a.time.split(":").map(Number);for(let e=0;e<=7;e++){let f=new Date(b);f.setDate(f.getDate()+e),f.setHours(c,d,0,0);let g=0===f.getDay()?7:f.getDay();if(f>b&&a.days.includes(g))return f}return new Date(b.getTime()+864e5)},"scheduleText",0,function(a){if("once"===a.kind){let[b,c]=a.at.split(" "),[,d,e]=b.split("-").map(Number);return`Once \xb7 ${m[d-1]} ${e} ${c}`}if("every"===a.kind)return 1===a.hours?"Every hour":`Every ${a.hours} hours`;let{days:b,time:c}=a;if(7===b.length)return`Daily ${c}`;if(1===b.length)return`${l[b[0]-1]} ${c}`;let d=b.every((a,c)=>0===c||a===b[c-1]+1)?`${l[b[0]-1]}–${l[b.at(-1)-1]}`:b.map(a=>l[a-1]).join(" ");return`Daily ${c} \xb7 ${d}`}])},487591,422807,a=>{"use strict";var b=a.i(912714),c=a.i(750227),d=a.i(203469),e=a.i(569572),f=a.i(821415);a.i(176668);let g=a=>a.trim().toLowerCase().replace(/^[a-z]+:\/\//,"").replace(/^www\./,"").replace(/[/?#].*$/,"");a.s(["siteOf",0,g],422807);let h=(0,c.join)(e.DATA_DIR,e.PATHS.signIns),i=a=>(0,c.join)(h,`${encodeURIComponent(g(a))}.json`),j=()=>d.appEvents.emit({type:"signins"});async function k(a){try{return JSON.parse(await (0,b.readFile)(i(a),"utf8"))}catch{return null}}async function l(a){await (0,b.mkdir)(h,{recursive:!0}),await (0,b.writeFile)(i(a.site),JSON.stringify(a),{mode:384}),j()}async function m(){let a=await (0,b.readdir)(h).catch(()=>[]);return(await Promise.all(a.filter(a=>a.endsWith(".json")).map(a=>k(decodeURIComponent(a.slice(0,-5)))))).flatMap(a=>a?[(({state:a,...b})=>b)(a)]:[]).sort((a,b)=>a.site.localeCompare(b.site))}async function n(a){let b=g(a.site),c=await k(b),d={site:b,account:a.account.trim()||b,bots:[...new Set([...c?.bots??[],a.bot])],asking:(c?.asking??[]).filter(b=>b!==a.bot),keptAt:new Date().toISOString(),usedAt:c?.usedAt??null,state:a.state};return await l(d),(({state:a,...b})=>b)(d)}async function o(a,b){let c=await k(a);if(!c)return{kind:"none",kept:(await m()).map(a=>a.site)};if(!c.bots.includes(b))return c.asking.includes(b)||await l({...c,asking:[...c.asking,b]}),{kind:"ask",signIn:(({state:a,...b})=>b)(c)};let d={...c,usedAt:new Date().toISOString()};return await l(d),{kind:"state",signIn:(({state:a,...b})=>b)(d),state:c.state}}let p=a=>`${a.name}
117
+ ${b}`;async function x(a){let b=await (0,q.findJobBot)(a.bot);(!b||b.disabled)&&(0,n.publicError)("Choose an enabled bot.");let{from:c,routine:d,...e}={...a,bot:b.name},f=(0,h.buildThreadOpening)({bot:e.bot,request:e.request,from:c,routine:d}),g=await (0,v.insertThread)({...e,routineId:d?.id??null,opening:f});return await z(g.id),g.id}async function y(a,b,c="user",d,e){let f=null;return await M(a,async()=>{let g=await (0,v.findThread)(a);if(g||(0,n.publicError)("No such thread."),d){let b=(await (0,t.listRoomWork)(a)).find(a=>a.bot.toLowerCase()===d.trim().toLowerCase());b&&b.bot!==u.ROOM_THURSDAY||(0,n.publicError)("Choose a participant in this thread."),d=b.bot}b.trim()===s.THREAD_CONTINUE&&(0,s.isAppStop)(g.pending)?(await (0,t.resumeRoom)(a),(await (0,t.listRoomWork)(a)).some(a=>"queued"===a.state)||(f=await (0,t.tellRoom)(a,"Continue from the saved conversation.","user"===c?"The user":u.ROOM_THURSDAY,d,void 0,!1))):f=await (0,t.tellRoom)(a,b,"user"===c?"The user":u.ROOM_THURSDAY,d,e)}),await z(a),f}async function z(a){await M(a,async()=>{if(!e.presence.watching&&!await (0,q.readKeepWorkingOn)()){let b=await (0,v.findThread)(a);b?.status!=="running"||[...L.values()].some(b=>b.threadId===a)||await (0,t.pauseRoom)(a,"The app is not open. Work resumes when it returns.",!0);return}for(let b=0;b<2;b++){let b;for(;b=await (0,t.claimRoomWork)(a);)!function(a){let b,c=new AbortController,d=new Promise(a=>{b=a});L.set(a.id,{threadId:a.threadId,stop:c,done:d}),A(a,c.signal).catch(b=>m.logger.error(`thread ${a.threadId}: participant`,b)).finally(()=>{L.delete(a.id),b(),z(a.threadId).catch(b=>m.logger.error(`thread ${a.threadId}: scheduling`,b))})}(b);await (0,t.settleRoom)(a)}})}async function A(a,b){let c=await B(a,b);if(c?.failure?.retry&&!b.aborted&&(await (0,t.noteRoomBreak)(a,c.failure.message),await (0,d.setTimeout)(f.BOT_RUN.retryMs,void 0,{signal:b}).catch(()=>{}),b.aborted||(c=await B(a,b))),!c||b.aborted)return;let g=c.failure?.message,h=c.ending;if(g||!h||h.stopped){let b=g??"The turn was interrupted. Continue from the saved conversation.";M(a.threadId,async()=>{let c=(await (0,t.listRoomWork)(a.threadId)).find(b=>b.id===a.id);if(c?.state!=="running"||c.generation!==a.generation)return;let d=C(a.threadId);await (0,t.pauseRoom)(a.threadId,b),await d}).catch(b=>m.logger.error(`thread ${a.threadId}: pausing`,b));return}await (0,t.finishRoomWork)(a,h.text);let n=await (0,v.findThread)(a.threadId);if(n?.status==="done"){let a=(0,p.plainText)(n.outcome??"").slice(0,f.FINISHED_NOTICE.words);e.presence.watching||await (0,i.isAnyCallLive)()||(0,l.desktopNotify)(n.label,a);let b=await (0,k.filesOnDisk)((0,j.pathsIn)(n.outcome??""),null),c=b.findIndex(j.opensOnFinish);e.appEvents.emit({type:"finished",threadId:n.id,label:n.label,bot:n.bot,words:a,paths:c>0?[b[c],...b.filter((a,b)=>b!==c)]:b})}}async function B(a,b){let c=new Q(a,b),d=null,e=null;try{let f=await (0,v.findThread)(a.threadId);if(!f)return null;(await (0,t.listParticipantTranscript)(a.threadId,a.bot)).length||await (0,t.appendRoomMessage)(a.threadId,{bot:a.bot,parent:a.id,role:"user",content:`Request: ${f.request}
118
+ Coordinator: ${f.bot}. Continue as ${a.bot} in this thread.`,hidden:!0}),await (0,t.consumeRoomInbox)(a);let g=await (0,t.listParticipantTranscript)(a.threadId,a.bot);await (0,r.runBot)({bot:a.bot,messages:(0,r.resumeTranscript)(g,await (0,t.listRoomReceipts)(a.threadId,a.bot,g))},{signal:b,threadId:a.threadId,parent:a.id,caller:a.caller,owner:f.bot,contextBudget:await (0,t.roomContextBudget)(a.threadId,a.bot),compactNow:()=>O.delete(P(a.threadId,a.bot)),session:(0,k.botBrowserSession)(a.threadId,a.bot),notes:()=>(0,t.consumeRoomInbox)(a),send:async c=>{b.throwIfAborted();let d=c.to.trim();if(d.toLowerCase()===u.ROOM_THURSDAY.toLowerCase())d=u.ROOM_THURSDAY;else{let a=await (0,q.findJobBot)(d);(!a||a.disabled)&&(0,n.publicError)(`No enabled bot named "${d}".`),d=a.name}let e=await (0,t.sendRoomMessage)(a,{...c,to:d});return z(a.threadId).catch(a=>m.logger.error("room message scheduling",a)),e},emit:async g=>{(!b.aborted||"tool-result"===g.type)&&(await c.on(g),"step"===g.type&&await (0,v.addThreadUsage)(a.threadId,g.usage,a.bot===f.bot?{tokens:g.usage.input,budget:g.budget}:null),"compact"===g.type&&await (0,v.addThreadUsage)(a.threadId,g.usage),"turn-end"===g.type&&(d=g),"error"===g.type&&(e={message:g.message,retry:g.retry},g.budget&&await (0,t.lowerRoomContextBudget)(a,g.budget)))}})}catch(c){b.aborted||(m.logger.error(`thread ${a.threadId}: ${a.bot} broke`,c),e={message:(0,g.modelErrorToString)(c),retry:!(0,n.isPublicError)(c)&&!(0,g.isProviderRefusal)(c)})}return{ending:d,failure:e}}class Q{work;signal;lane;assistant;tool;parts;calls;results;constructor(a,b){this.work=a,this.signal=b,this.lane=(0,p.PromiseChain)(),this.assistant=null,this.tool=null,this.parts={assistant:[],tool:[]},this.calls=new Set,this.results=new Set}async write(a,b,c=!1){let d={bot:this.work.bot,parent:this.work.id,role:b.role,content:b.content,compact:c,note:c};return null===a?(0,t.appendRoomMessage)(this.work.threadId,d):(await (0,v.upsertMessage)(this.work.threadId,a,d),a)}on(a){return this.lane(async()=>{if(!this.signal.aborted||"tool-result"===a.type)if("text"===a.type)this.parts.assistant.push({type:"text",text:a.text}),this.assistant=await this.write(this.assistant,{role:"assistant",content:this.parts.assistant});else if("tool"===a.type){if(this.calls.has(a.id)){let b=this.parts.assistant.find(b=>"tool-call"===b.type&&b.toolCallId===a.id);b&&"tool-call"===b.type&&a.providerOptions&&(b.providerOptions=a.providerOptions,this.assistant=await this.write(this.assistant,{role:"assistant",content:this.parts.assistant}));return}this.calls.add(a.id),this.parts.assistant.push({type:"tool-call",toolCallId:a.id,toolName:a.name,input:a.input,...a.providerExecuted?{providerExecuted:!0}:{},...a.providerOptions?{providerOptions:a.providerOptions}:{}}),this.assistant=await this.write(this.assistant,{role:"assistant",content:this.parts.assistant})}else if("tool-result"===a.type){if(this.results.has(a.id))return;this.results.add(a.id),this.parts.tool.push({type:"tool-result",toolCallId:a.id,toolName:a.name,output:a.error?{type:"error-text",value:String(a.output)}:"string"==typeof a.output?{type:"text",value:a.output}:{type:"json",value:a.output}}),this.tool=await this.write(this.tool,{role:"tool",content:this.parts.tool})}else if("step"===a.type){let b=[this.assistant,this.tool];for(let[c,d]of a.messages.entries())await this.write(b[c]??null,d);let c=b.slice(a.messages.length).filter(a=>null!==a);c.length&&await (0,v.deleteMessages)(this.work.threadId,c),this.assistant=this.tool=null,this.parts={assistant:[],tool:[]}}else"compact"===a.type&&await this.write(null,{role:"user",content:a.text},!0)})}}async function C(a){let b=[...L.values()].filter(b=>b.threadId===a);for(let a of b)a.stop.abort();await Promise.all(b.map(a=>a.done))}async function D(a){await M(a,async()=>{let b=await (0,v.findThread)(a);b||(0,n.publicError)("No such thread."),b.endedAt&&(0,n.publicError)("That thread has already ended."),await (0,t.cancelRoom)(a),await (0,v.updateThread)(a,{status:"cancelled",outcome:null,pending:null,seen:!0,endedAt:new Date}),await C(a),await (0,k.closeJobShell)(a)})}async function E(a){return M(a,()=>F(a))}async function F(a){let b=await (0,v.findThread)(a);await (0,t.cancelRoom)(a),await C(a),await (0,k.removeJobBrowsers)(a);let c=await (0,v.deleteThread)(a);return c&&b&&await (0,k.removeJobScratch)(a,b.label),c}async function G(a){let b=a?.getTime(),c=a=>void 0===b||(a.endedAt??a.updatedAt).getTime()<b,d=0;for(let a of(await (0,v.listThreadFolders)()))("done"===a.status||"cancelled"===a.status)&&c(a)&&await M(a.id,async()=>{let b=await (0,v.findThread)(a.id);b?.status!=="done"&&b?.status!=="cancelled"||c(b)&&await F(a.id)&&(d+=1)});return d}async function H(){let a=Date.now()-f.WORKSPACE_KEEP.forMs,b=b=>("done"===b.status||"cancelled"===b.status)&&(b.endedAt??b.updatedAt).getTime()<a,c=new Set(await (0,k.listScratchFolders)()),d=[];for(let a of(await (0,v.listThreadFolders)())){let e=(0,k.jobScratch)(a.id,a.label);c.delete(e)&&b(a)&&await M(a.id,async()=>{let c=await (0,v.findThread)(a.id);c&&b(c)&&(await (0,k.closeHiddenBrowser)(a.id),await (0,k.removeJobScratch)(a.id,a.label),d.push(e))})}return d.push(...await (0,k.removeUnchangedFolders)([...c])),await (0,k.pruneJobFiles)(),d.length&&m.logger.info(`cleared ${d.length} old job folder(s): ${d.join(", ")}`),d}async function I(){for(let a of(await (0,v.listRunningThreadIds)()))await M(a,async()=>{[...L.values()].some(b=>b.threadId===a)||(await (0,v.findThread)(a))?.status==="running"&&await (0,t.pauseRoom)(a,"The server restarted. Resume from the saved conversation.")})}async function J(a,b=!1){let c=(async()=>{let c=await (0,v.listRunningThreadIds)();await Promise.all(c.map(c=>M(c,async()=>{(await (0,v.findThread)(c))?.status==="running"&&(await C(c),await (0,t.pauseRoom)(c,a,b))})))})();N.current=c,await c}async function K(){if(await N.current,e.presence.watching)for(let a of(await (0,v.listAutoStoppedThreads)()))await M(a,async()=>{let b=await (0,v.findThread)(a);b?.status==="waiting"&&b.pending?.auto&&await (0,t.resumeRoom)(a,!1)}),await z(a)}a.s(["answerThread",0,y,"askCompact",0,function(a,b){O.add(P(a,b))},"cancelThread",0,D,"pauseThreads",0,J,"removeFinishedThreads",0,G,"removeThread",0,E,"resumeStoppedThreads",0,K,"startThread",0,x,"sweepJobFiles",0,H,"sweepThreads",0,I]),c()}catch(a){c(a)}},!1),317844,a=>a.a(async(b,c)=>{try{var d,e=a.i(106450),f=a.i(64203),g=a.i(569572),h=a.i(176668),i=a.i(182248),j=a.i(947950),k=a.i(899284),l=b([j]);[j]=l.then?(await l)():l;class m extends Error{serverName;authorizationUrl;constructor(a,b){super(`MCP server "${a}" requires authorization`),this.serverName=a,this.authorizationUrl=b,this.name="McpAuthRequiredError"}}class n{store;serverName;oauth;callbackUrl;clientName;staticClient;lastAuthorizationUrl;constructor(a,b,c,d,e,f){this.store=a,this.serverName=b,this.oauth=c,this.callbackUrl=d,this.clientName=e,this.staticClient=f}get redirectUrl(){return this.callbackUrl}get clientMetadata(){return{client_name:this.clientName,redirect_uris:[this.callbackUrl],grant_types:["authorization_code","refresh_token"],response_types:["code"],token_endpoint_auth_method:"client_secret_post"}}async persist(a){this.oauth={...this.oauth,...a},await this.store.saveOAuth(this.serverName,this.oauth)}clientInformation(){return this.staticClient??this.oauth.clientInformation}async saveClientInformation(a){await this.persist({clientInformation:a})}tokens(){return this.oauth.tokens}async saveTokens(a){await this.persist({tokens:a})}authorizationServerInformation(){return this.oauth.authorizationServer}async saveAuthorizationServerInformation(a){await this.persist({authorizationServer:a})}codeVerifier(){if(!this.oauth.codeVerifier)throw Error("No code verifier saved");return this.oauth.codeVerifier}async saveCodeVerifier(a){await this.persist({codeVerifier:a})}state(){return crypto.randomUUID()}async saveState(a){await this.persist({state:a})}storedState(){return this.oauth.state}redirectToAuthorization(a){this.lastAuthorizationUrl=a}async invalidateCredentials(a){let b={...this.oauth};("all"===a||"client"===a)&&(b.clientInformation=void 0),("all"===a||"tokens"===a)&&(b.tokens=void 0),("all"===a||"verifier"===a)&&(b.codeVerifier=void 0),this.oauth=b,await this.store.saveOAuth(this.serverName,b)}}let o=globalThis;o.__thursdayMcpManager&&o.__thursdayMcpManager.dispose(),d={callbackUrl:new URL("/api/mcp/oauth/callback",g.APP_URL).href,clientName:g.APP_NAME},o.__thursdayMcpManager=new class a{store;sessions;connecting;idleTtlMs;callbackUrl;clientName;constructor(a,b){this.store=a,this.sessions=new Map,this.connecting=new Map,this.callbackUrl=b.callbackUrl,this.idleTtlMs=b.idleTtlMs??18e5,this.clientName=b.clientName??g.APP_NAME}async connect(a){let b=this.connecting.get(a);if(b)return b;let c=this.doConnect(a).finally(()=>this.connecting.delete(a));return this.connecting.set(a,c),c}async callTool(a,b,c,d){let f=await this.ensureClient(a);try{let e=await f.callTool({name:b,arguments:c,options:d?{signal:d}:void 0});return this.touch(a),e}catch(b){if(b instanceof e.UnauthorizedError)throw await this.closeSession(a),new m(a);throw b}}async finishAuthorization(a){let b=a.get("state"),c=a.get("code");if(!b||!c)throw Error("OAuth callback is missing code or state");let d=await this.store.findByOAuthState(b);if(!d||!(0,k.isRemoteConfig)(d.config))throw Error("No server is waiting for this authorization");let f=this.providerFor(d),g=await (0,e.auth)(f,{serverUrl:d.config.url,authorizationCode:c,callbackState:b});if("AUTHORIZED"!==g)throw Error(`Token exchange ended in "${g}"`);return await f.invalidateCredentials("verifier"),await this.connect(d.name),d.name}async disconnect(a){await this.closeSession(a)}async dispose(){await Promise.all([...this.sessions.keys()].map(a=>this.closeSession(a)))}async doConnect(a){await this.closeSession(a);let b=await this.store.load(a);if(!b)throw Error(`Unknown MCP server "${a}"`);let c={};try{let d=await this.openClient(b,c),e=(await d.listTools()).tools.map(a=>({name:a.name,description:a.description,inputSchema:a.inputSchema,outputSchema:a.outputSchema}));return this.adopt(a,d),await this.store.saveConnectionResult(a,{toolInfo:e,lastError:null}),h.logger.info(`mcp "${a}" connected — ${e.length} tools`),{status:"connected",tools:e}}catch(l){var d,f;let g;if(l instanceof e.UnauthorizedError||l?.cause instanceof e.UnauthorizedError){let b=c.href;if(b)return await this.store.saveConnectionResult(a,{toolInfo:[],lastError:"Authorization required — finish sign-in in the opened tab"}),{status:"auth_required",authorizationUrl:b}}let j=(d=l,f=b,g=(0,i.errorToString)(d),/\b40[13]\b/.test(g)&&/OAuth|register/i.test(g)&&(0,k.isRemoteConfig)(f.config)&&!f.config.oauthClient?"This server does not allow automatic client registration. Register an OAuth app with the provider and add its client ID and secret.":g);throw await this.store.saveConnectionResult(a,{toolInfo:[],lastError:j}),h.logger.warn(`mcp "${a}" failed — ${j}`),Error(j,{cause:l})}}async openClient(a,b={}){if((0,k.isRemoteConfig)(a.config)){let c=this.providerFor(a);try{return await (0,e.createMCPClient)({name:this.clientName,transport:{type:"http",url:a.config.url,headers:a.config.headers,authProvider:c,redirect:"follow"}})}finally{b.href=c.lastAuthorizationUrl?.href}}return(0,e.createMCPClient)({name:this.clientName,transport:new f.Experimental_StdioMCPTransport({command:a.config.command,args:a.config.args,env:a.config.env})})}providerFor(a){let b=(0,k.isRemoteConfig)(a.config)?a.config.oauthClient:void 0;return new n(this.store,a.name,a.oauth??{},this.callbackUrl,this.clientName,b&&{client_id:b.clientId,client_secret:b.clientSecret})}async ensureClient(a){let b=this.sessions.get(a);if(b)return b.client;let c=await this.connect(a);if("auth_required"===c.status)throw new m(a,c.authorizationUrl);let d=this.sessions.get(a);if(!d)throw Error(`Session for "${a}" vanished mid-connect`);return d.client}adopt(a,b){this.sessions.set(a,{client:b,idleTimer:this.armIdleTimer(a)})}touch(a){let b=this.sessions.get(a);b&&(clearTimeout(b.idleTimer),b.idleTimer=this.armIdleTimer(a))}armIdleTimer(a){let b=setTimeout(()=>{this.closeSession(a)},this.idleTtlMs);return b.unref?.(),b}async closeSession(a){let b=this.sessions.get(a);b&&(this.sessions.delete(a),clearTimeout(b.idleTimer),await b.client.close().catch(()=>{}))}}({load:a=>(0,j.findServer)(a),saveOAuth:(a,b)=>(0,j.saveOAuthData)(a,b),saveConnectionResult:(a,b)=>null===b.lastError?(0,j.syncServerTools)(a,b.toolInfo):(0,j.saveConnectionError)(a,b.lastError),findByOAuthState:a=>(0,j.findServerByOAuthState)(a)},d);let p=o.__thursdayMcpManager;a.s(["McpAuthRequiredError",0,m,"mcpManager",0,p]),c()}catch(a){c(a)}},!1),947950,a=>a.a(async(b,c)=>{try{var d=a.i(93321),e=a.i(351674),f=a.i(203469),g=a.i(184838),h=a.i(714428),i=a.i(899284),j=b([g]);async function k(a){var b;let[c]=await g.database.select({name:h.mcpServerTable.name,config:h.mcpServerTable.config,lastError:h.mcpServerTable.lastError,toolsSyncedAt:h.mcpServerTable.toolsSyncedAt}).from(h.mcpServerTable).where((0,d.eq)(h.mcpServerTable.name,a));return c?{...c,config:(b=c.config,(0,i.isRemoteConfig)(b)?{url:b.url}:{command:b.command,args:b.args}),tools:await l(a)}:null}async function l(a){return g.database.select({id:h.mcpToolTable.id,name:h.mcpToolTable.name,description:h.mcpToolTable.description,inputSchema:h.mcpToolTable.inputSchema,outputSchema:h.mcpToolTable.outputSchema}).from(h.mcpToolTable).where((0,d.eq)(h.mcpToolTable.serverName,a)).orderBy(h.mcpToolTable.name)}async function m(a){let[b]=await g.database.select().from(h.mcpServerTable).where((0,d.eq)(h.mcpServerTable.name,a));return b??null}[g]=j.then?(await j)():j;let u=()=>f.appEvents.emit({type:"mcp"});async function n(a){let[b]=await g.database.insert(h.mcpServerTable).values({...a,lastError:null}).onConflictDoUpdate({target:h.mcpServerTable.name,set:{config:a.config,lastError:null}}).returning();return u(),b}async function o(a,b){await g.database.transaction(async c=>{b.length&&await c.insert(h.mcpToolTable).values(b.map(b=>({...b,serverName:a}))).onConflictDoUpdate({target:[h.mcpToolTable.serverName,h.mcpToolTable.name],set:{description:p(h.mcpToolTable.description),inputSchema:p(h.mcpToolTable.inputSchema),outputSchema:p(h.mcpToolTable.outputSchema)}}),await c.delete(h.mcpToolTable).where(b.length?(0,d.and)((0,d.eq)(h.mcpToolTable.serverName,a),(0,d.notInArray)(h.mcpToolTable.name,b.map(a=>a.name))):(0,d.eq)(h.mcpToolTable.serverName,a)),await c.update(h.mcpServerTable).set({lastError:null,toolsSyncedAt:new Date}).where((0,d.eq)(h.mcpServerTable.name,a))}),u()}function p(a){return e.sql.raw(`excluded."${a.name}"`)}async function q(a,b){await g.database.update(h.mcpServerTable).set({lastError:b}).where((0,d.eq)(h.mcpServerTable.name,a)),u()}async function r(a,b){await g.database.update(h.mcpServerTable).set({oauth:b}).where((0,d.eq)(h.mcpServerTable.name,a)),u()}async function s(a){let[b]=await g.database.select().from(h.mcpServerTable).where(e.sql`json_extract(${h.mcpServerTable.oauth}, '$.state') = ${a}`);return b??null}async function t(a){let b=await g.database.delete(h.mcpServerTable).where((0,d.eq)(h.mcpServerTable.name,a)).returning();return b.length>0&&u(),b.length>0}a.s(["deleteServer",0,t,"findPinnedTools",0,function(a){return g.database.select({server:h.mcpToolTable.serverName,name:h.mcpToolTable.name,description:h.mcpToolTable.description,inputSchema:h.mcpToolTable.inputSchema}).from(h.botMcpToolTable).innerJoin(h.mcpToolTable,(0,d.eq)(h.botMcpToolTable.toolId,h.mcpToolTable.id)).where((0,d.eq)(h.botMcpToolTable.botName,a)).orderBy(h.mcpToolTable.serverName,h.mcpToolTable.name)},"findServer",0,m,"findServerByOAuthState",0,s,"findServerDetail",0,k,"findToolSchemas",0,function(a,b){return b.length?g.database.select({name:h.mcpToolTable.name,description:h.mcpToolTable.description,inputSchema:h.mcpToolTable.inputSchema}).from(h.mcpToolTable).where((0,d.and)((0,d.eq)(h.mcpToolTable.serverName,a),(0,d.inArray)(h.mcpToolTable.name,b))).orderBy(h.mcpToolTable.name):Promise.resolve([])},"listServerNames",0,function(){return g.database.select({name:h.mcpServerTable.name}).from(h.mcpServerTable).orderBy(h.mcpServerTable.name)},"listToolNames",0,function(a){let b=g.database.select({server:h.mcpToolTable.serverName,name:h.mcpToolTable.name}).from(h.mcpToolTable);return a?b.where((0,d.eq)(h.mcpToolTable.serverName,a)).orderBy(h.mcpToolTable.name):b.orderBy(h.mcpToolTable.serverName,h.mcpToolTable.name)},"saveConnectionError",0,q,"saveOAuthData",0,r,"syncServerTools",0,o,"upsertServer",0,n]),c()}catch(a){c(a)}},!1),899284,a=>{"use strict";var b=a.i(53112),c=a.i(706210);let d=b.z.object({url:b.z.url(),headers:b.z.record(b.z.string(),b.z.string()).optional(),oauthClient:b.z.object({clientId:b.z.string().min(1),clientSecret:b.z.string().optional()}).optional()}),e=b.z.object({command:b.z.string().min(1),args:b.z.array(b.z.string()).optional(),env:b.z.record(b.z.string(),b.z.string()).optional()}),f=b.z.union([d,e]),g=b.z.object({name:b.z.string(),description:b.z.string().optional(),inputSchema:b.z.looseObject({}).optional(),outputSchema:b.z.looseObject({}).optional()});b.z.object({clientInformation:b.z.looseObject({}).optional(),tokens:b.z.looseObject({}).optional(),authorizationServer:b.z.looseObject({}).optional(),codeVerifier:b.z.string().optional(),state:b.z.string().optional()});let h=b.z.object({name:b.z.string().min(1).max(40),config:f,toolCount:b.z.number().int(),lastError:b.z.string().nullish()}),i=g.extend({id:b.z.number().int(),description:b.z.string().nullish()});h.omit({toolCount:!0}).extend({tools:i.array().default([]),toolsSyncedAt:c.DateLikeSchema});let j=b.z.object({name:b.z.string().min(1,"Name is required").max(40).regex(/^[a-zA-Z0-9_-]+$/,"Only letters, numbers, - and _ are allowed"),config:f});b.z.union([b.z.object({mcpServers:b.z.record(b.z.string(),f)}),b.z.record(b.z.string(),f)]),a.s(["MCPServerFormSchema",0,j,"isRemoteConfig",0,function(a){return"url"in a}])},986743,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(569572),i=a.i(184838),j=a.i(714428),k=a.i(8412),l=a.i(661210),m=b([i]);[i]=m.then?(await m)():m;let E=(0,k.createKeyedLock)(),F=()=>g.appEvents.emit({type:"memory"});async function n(a,b,c={}){let[d]=await i.database.insert(j.memoryNoteTable).values({path:a,description:b,ownedByUser:c.ownedByUser??!1}).onConflictDoNothing({target:j.memoryNoteTable.path}).returning();return d&&F(),d??null}async function o(a,b){let[c]=await i.database.update(j.memoryNoteTable).set({...b,updatedAt:new Date}).where((0,d.eq)(j.memoryNoteTable.id,a)).returning();return c&&F(),c??null}async function p(a){let b=await i.database.delete(j.memoryNoteTable).where((0,d.eq)(j.memoryNoteTable.id,a)).returning({id:j.memoryNoteTable.id});return b.length>0&&F(),b.length>0}async function q(a,b){let[c]=await i.database.insert(j.memoryFactTable).values({noteId:a,text:b,source:"user"}).returning();return await t(a),F(),c}async function r(a,b,c){let e,f=await (e=()=>i.database.transaction(async e=>{let f=await e.update(j.memoryFactTable).set({isLatest:!1}).where((0,d.and)((0,d.eq)(j.memoryFactTable.id,b),(0,d.eq)(j.memoryFactTable.noteId,a),(0,d.eq)(j.memoryFactTable.isLatest,!0))).returning({id:j.memoryFactTable.id});if(0===f.length)return null;let[g]=await e.insert(j.memoryFactTable).values({noteId:a,text:c,source:"user"}).returning();return await e.update(j.memoryNoteTable).set({updatedAt:new Date}).where((0,d.eq)(j.memoryNoteTable.id,a)),g}),E("memory",e));return f&&F(),f}async function s(a,b){let c=await i.database.delete(j.memoryFactTable).where((0,d.and)((0,d.eq)(j.memoryFactTable.id,b),(0,d.eq)(j.memoryFactTable.noteId,a))).returning({id:j.memoryFactTable.id});return c.length>0&&(await t(a),F()),c.length>0}function t(a){return i.database.update(j.memoryNoteTable).set({updatedAt:new Date}).where((0,d.eq)(j.memoryNoteTable.id,a))}async function u(){for(let a of l.MEMORY_ALWAYS_LISTED){let b=l.MEMORY_PATHS.find(b=>b.path===a)?.of??a;await i.database.insert(j.memoryNoteTable).values({path:a,description:b}).onConflictDoUpdate({target:j.memoryNoteTable.path,set:{description:b}})}}async function v(a){let b=a.map(a=>a.trim()).filter(Boolean),c=[],e=[];if(!b.length)return{found:c,missing:e};let f={id:j.memoryNoteTable.id,path:j.memoryNoteTable.path,description:j.memoryNoteTable.description},g=await i.database.select(f).from(j.memoryNoteTable).where((0,d.inArray)(j.memoryNoteTable.path,b)),h=new Map(g.map(a=>[a.path.toLowerCase(),a]));if(b.some(a=>!h.has(a.toLowerCase()))){let a=await i.database.select({...f,aliases:j.memoryNoteTable.aliases}).from(j.memoryNoteTable),b=(a,b)=>{let c=a.trim().toLowerCase();c&&!h.has(c)&&h.set(c,b)};for(let c of a)b(c.path,c);for(let c of a)for(let a of(b(c.path.slice(c.path.indexOf("/")+1),c),c.aliases??[]))b(a,c)}let k=new Set;for(let a of b){let b=h.get(a.toLowerCase());if(!b){e.push(a);continue}k.has(b.id)||(k.add(b.id),c.push(b))}return{found:c,missing:e}}async function w(a){let{found:b}=await v([a]);return b[0]?.path??null}async function x(a,b={}){let{found:c,missing:g}=await v(a);if(!c.length)return{notes:[],missing:g};let h=c.map(a=>a.id),k=await i.database.select({id:j.memoryFactTable.id,noteId:j.memoryFactTable.noteId,text:j.memoryFactTable.text,alwaysLoad:j.memoryFactTable.alwaysLoad,source:j.memoryFactTable.source,createdAt:j.memoryFactTable.createdAt,saidAt:j.callTable.startedAt}).from(j.memoryFactTable).leftJoin(j.callTable,(0,d.eq)(j.memoryFactTable.callId,j.callTable.id)).where((0,d.and)((0,d.eq)(j.memoryFactTable.isLatest,!0),(0,d.inArray)(j.memoryFactTable.noteId,h))).orderBy((0,e.asc)(j.memoryFactTable.id));return!1!==b.touch&&await i.database.update(j.memoryNoteTable).set({hits:f.sql`${j.memoryNoteTable.hits} + 1`,lastReadAt:new Date}).where((0,d.inArray)(j.memoryNoteTable.id,h)),{notes:c.map(a=>({path:a.path,description:a.description,facts:k.filter(b=>b.noteId===a.id).map(a=>({id:a.id,text:a.text,...a.saidAt?{saidAt:a.saidAt}:{}}))})),missing:g}}(0,d.inArray)(j.memoryNoteTable.path,l.MEMORY_ALWAYS_LISTED);let G=a=>a.toLowerCase().replace(/[\s.,!?…·'"`]/g,"");async function y(a,b,c=null){let e,g=[],k=[],l=[];await (e=()=>i.database.transaction(async e=>{let[i]=await e.select({count:f.sql`count(*)`}).from(j.memoryFactTable).where((0,d.and)((0,d.eq)(j.memoryFactTable.alwaysLoad,!0),(0,d.eq)(j.memoryFactTable.isLatest,!0))),m=h.MEMORY_LIMITS.carried-Number(i?.count??0),n=(a,b)=>!!a&&(m>0?(m-=1,!0):(l.push(b),!1));for(let f of a){let a,h=f.path.trim();if(!h)continue;k.push(h);let i=f.description?.trim(),l=f.aliases?.map(a=>a.trim()).filter(Boolean),o=(f.facts??[]).map(a=>({...a,text:a.text.trim()})).filter(a=>a.text),[p]=await e.select({id:j.memoryNoteTable.id}).from(j.memoryNoteTable).where((0,d.eq)(j.memoryNoteTable.path,h));if(p)a=p.id,(i||l)&&await e.update(j.memoryNoteTable).set({...i?{description:i}:{},...l?{aliases:l}:{},updatedAt:new Date}).where((0,d.eq)(j.memoryNoteTable.id,a));else{let[b]=await e.insert(j.memoryNoteTable).values({path:h,description:i??o[0]?.text.slice(0,80)??h,...l?{aliases:l}:{}}).returning({id:j.memoryNoteTable.id});a=b.id,i||g.push(h)}if(!o.length)continue;let q=await e.select({id:j.memoryFactTable.id,text:j.memoryFactTable.text,alwaysLoad:j.memoryFactTable.alwaysLoad}).from(j.memoryFactTable).where((0,d.and)((0,d.eq)(j.memoryFactTable.noteId,a),(0,d.eq)(j.memoryFactTable.isLatest,!0))),r=new Map(q.map(a=>[G(a.text),a])),s=async(a,b,c)=>{if(b===a.alwaysLoad)return;let f=b?n(!0,c):(m+=1,!1);f!==a.alwaysLoad&&(await e.update(j.memoryFactTable).set({alwaysLoad:f}).where((0,d.eq)(j.memoryFactTable.id,a.id)),a.alwaysLoad=f)};for(let f of o){if(null!=f.replaces){let[g]=await e.select({id:j.memoryFactTable.id,text:j.memoryFactTable.text,alwaysLoad:j.memoryFactTable.alwaysLoad}).from(j.memoryFactTable).where((0,d.and)((0,d.eq)(j.memoryFactTable.id,f.replaces),(0,d.eq)(j.memoryFactTable.noteId,a),(0,d.eq)(j.memoryFactTable.isLatest,!0)));if(g){if(G(g.text)===G(f.text)){await s(g,f.alwaysLoad??g.alwaysLoad,f.text),r.set(G(g.text),g);continue}await e.update(j.memoryFactTable).set({isLatest:!1}).where((0,d.eq)(j.memoryFactTable.id,g.id)),r.delete(G(g.text)),g.alwaysLoad&&(m+=1);let[h]=await e.insert(j.memoryFactTable).values({noteId:a,text:f.text,source:b,callId:c,alwaysLoad:n(f.alwaysLoad??g.alwaysLoad,f.text)}).returning({id:j.memoryFactTable.id,alwaysLoad:j.memoryFactTable.alwaysLoad});r.set(G(f.text),{...h,text:f.text});continue}}let g=r.get(G(f.text));if(g){null!=f.alwaysLoad&&await s(g,f.alwaysLoad,f.text);continue}let[h]=await e.insert(j.memoryFactTable).values({noteId:a,text:f.text,source:b,callId:c,alwaysLoad:n(!0===f.alwaysLoad,f.text)}).returning({id:j.memoryFactTable.id,alwaysLoad:j.memoryFactTable.alwaysLoad});r.set(G(f.text),{...h,text:f.text})}await e.update(j.memoryNoteTable).set({updatedAt:new Date}).where((0,d.eq)(j.memoryNoteTable.id,a))}}),E("memory",e));let{notes:m}=await x(k,{touch:!1});return F(),{notes:m,unnamed:g,notLoaded:l}}async function z(a,b,c){let e,g=await (e=()=>i.database.transaction(async e=>{if(c){let[a]=await e.select({count:f.sql`count(*)`}).from(j.memoryFactTable).where((0,d.and)((0,d.eq)(j.memoryFactTable.alwaysLoad,!0),(0,d.eq)(j.memoryFactTable.isLatest,!0)));if(Number(a?.count??0)>=h.MEMORY_LIMITS.carried)return"full"}let[g]=await e.update(j.memoryFactTable).set({alwaysLoad:c}).where((0,d.and)((0,d.eq)(j.memoryFactTable.id,b),(0,d.eq)(j.memoryFactTable.noteId,a),(0,d.eq)(j.memoryFactTable.isLatest,!0))).returning({id:j.memoryFactTable.id});return g?"ok":"missing"}),E("memory",e));return"ok"===g&&F(),g}async function A(){let[a,b]=await Promise.all([i.database.select({id:j.memoryNoteTable.id,path:j.memoryNoteTable.path,description:j.memoryNoteTable.description,aliases:j.memoryNoteTable.aliases,hits:j.memoryNoteTable.hits,lastReadAt:j.memoryNoteTable.lastReadAt,createdAt:j.memoryNoteTable.createdAt}).from(j.memoryNoteTable),i.database.select({noteId:j.memoryFactTable.noteId,count:f.sql`count(*)`}).from(j.memoryFactTable).where((0,d.eq)(j.memoryFactTable.isLatest,!0)).groupBy(j.memoryFactTable.noteId)]),c=new Map(b.map(a=>[a.noteId,a.count]));return a.filter(a=>(0,l.isAlwaysListed)(a.path)||(c.get(a.id)??0)>0).sort((a,b)=>Number((0,l.isAlwaysListed)(b.path))-Number((0,l.isAlwaysListed)(a.path))||(0,l.recallScore)(b)-(0,l.recallScore)(a)).map(a=>({path:a.path,description:a.description,aliases:a.aliases,factCount:c.get(a.id)??0,lastSeenAt:a.lastReadAt??a.createdAt}))}async function B(a){let b,c=await (b=()=>i.database.transaction(async b=>{let c=await b.delete(j.memoryFactTable).where((0,d.eq)(j.memoryFactTable.id,a)).returning({noteId:j.memoryFactTable.noteId});if(0===c.length)return null;let e=c[0].noteId,[g]=await b.select({path:j.memoryNoteTable.path,ownedByUser:j.memoryNoteTable.ownedByUser}).from(j.memoryNoteTable).where((0,d.eq)(j.memoryNoteTable.id,e)),[h]=await b.select({count:f.sql`count(*)`}).from(j.memoryFactTable).where((0,d.and)((0,d.eq)(j.memoryFactTable.noteId,e),(0,d.eq)(j.memoryFactTable.isLatest,!0)));return h?.count!==0||!g||g.ownedByUser||(0,l.isAlwaysListed)(g.path)?(await b.update(j.memoryNoteTable).set({updatedAt:new Date}).where((0,d.eq)(j.memoryNoteTable.id,e)),{path:g?.path??"",noteGone:!1}):(await b.delete(j.memoryNoteTable).where((0,d.eq)(j.memoryNoteTable.id,e)),{path:g.path,noteGone:!0})}),E("memory",b));return c&&F(),c}async function C(a){let[b]=await i.database.select({source:j.memoryFactTable.source,callId:j.memoryFactTable.callId}).from(j.memoryFactTable).where((0,d.eq)(j.memoryFactTable.id,a));return b??null}async function D(){let a=await i.database.delete(j.memoryNoteTable).returning({id:j.memoryNoteTable.id});return await u(),a.length>0&&F(),a.length}a.s(["addFact",0,q,"createNote",0,n,"deleteAllNotes",0,D,"deleteNote",0,p,"findFactCall",0,C,"forgetFact",0,s,"forgetFactById",0,B,"listAlwaysLoaded",0,function(){return i.database.select({id:j.memoryFactTable.id,path:j.memoryNoteTable.path,text:j.memoryFactTable.text}).from(j.memoryFactTable).innerJoin(j.memoryNoteTable,(0,d.eq)(j.memoryFactTable.noteId,j.memoryNoteTable.id)).where((0,d.and)((0,d.eq)(j.memoryFactTable.alwaysLoad,!0),(0,d.eq)(j.memoryFactTable.isLatest,!0))).orderBy((0,e.asc)(j.memoryNoteTable.path),(0,e.asc)(j.memoryFactTable.id)).limit(h.MEMORY_LIMITS.carried)},"listNoteIndex",0,A,"readNotes",0,x,"resolveNotePath",0,w,"reviseFact",0,r,"setFactAlwaysLoad",0,z,"updateNote",0,o,"writeNotes",0,y]),c()}catch(a){c(a)}},!1),661210,a=>{"use strict";var b=a.i(53112),c=a.i(706210);let d=b.z.enum(["user","call","bot"]),e=b.z.object({id:b.z.number(),text:b.z.string(),alwaysLoad:b.z.boolean(),source:d.nullish(),createdAt:c.DateLikeSchema});b.z.object({id:b.z.number(),path:b.z.string(),description:b.z.string(),aliases:b.z.string().array().nullish(),ownedByUser:b.z.boolean(),hits:b.z.number(),lastReadAt:c.DateLikeSchema.nullable(),createdAt:c.DateLikeSchema,updatedAt:c.DateLikeSchema,factCount:b.z.number(),facts:e.array()});let f=[{path:"profile",of:"The user themselves — their name, age, what they do, where they live, and whatever else says who they are"},{path:"preferences",of:"How they want things done, and said"},{path:"people/",of:"Someone in their life, and what matters about them"},{path:"projects/",of:"Something with an end — a trip, a purchase, a deadline, a thing being built"},{path:"topics/",of:"Something ongoing that keeps coming back"}],g=f.filter(a=>!a.path.endsWith("/")).map(a=>a.path),h=f.filter(a=>a.path.endsWith("/")).map(a=>a.path.slice(0,-1)),i=RegExp(`^(?:${g.join("|")}|(?:${h.join("|")})/.+)$`),j=["profile","preferences"];a.s(["MEMORY_ALWAYS_LISTED",0,j,"MEMORY_PATHS",0,f,"appNoteLine",0,a=>f.find(b=>b.path===a)?.of??null,"isAlwaysListed",0,a=>j.includes(a),"isMemoryPath",0,a=>i.test(a),"recallScore",0,function(a){let b=(0,c.toDate)(a.lastReadAt??a.createdAt),d=Math.max(0,(Date.now()-b.getTime())/864e5);return(a.hits+1)/(1+d)}])},780946,a=>a.a(async(b,c)=>{try{var d=a.i(93321),e=a.i(258261),f=a.i(530385),g=a.i(203469),h=a.i(569572),i=a.i(184838),j=a.i(714428),k=a.i(221214),l=a.i(293480),m=a.i(643020),n=b([i,k]);[i,k]=n.then?(await n)():n;let z=()=>g.appEvents.emit({type:"routines"});async function o(a,b){return i.database.select({id:j.threadTable.id,status:j.threadTable.status,outcome:j.threadTable.outcome,updatedAt:j.threadTable.updatedAt}).from(j.threadTable).where((0,d.eq)(j.threadTable.routineId,a)).orderBy((0,f.desc)(j.threadTable.createdAt)).limit(b)}let A=async a=>{let{createdAt:b,...c}=a;return{...c,runs:await o(a.id,h.ROUTINE.runsShown)}};async function p(){let a=await i.database.select().from(j.routineTable).orderBy(j.routineTable.createdAt);return Promise.all(a.map(A))}async function q(a){let[b]=await i.database.select().from(j.routineTable).where((0,d.eq)(j.routineTable.id,a));return b?A(b):null}async function r(a){let b=await q(a.trim());if(b)return b;let c=a.trim().toLowerCase(),d=(await p()).filter(a=>a.label.toLowerCase()===c);return 1===d.length?d[0]:null}async function s(a){let b=await (0,k.findJobBot)(a);return(!b||b.disabled)&&(0,l.publicError)("Choose an enabled bot."),b.name}function t(a,b){b&&"once"===a.kind&&(0,m.momentOf)(a.at)<=new Date&&(0,l.publicError)("That time has passed. Pick a later one.")}async function u(a){let[{total:b}]=await i.database.select({total:(0,e.count)()}).from(j.routineTable);b>=h.ROUTINE.max&&(0,l.publicError)(`There are already ${h.ROUTINE.max} routines. Delete one to make another.`),t(a.schedule,!0);let[c]=await i.database.insert(j.routineTable).values({id:crypto.randomUUID(),...a,bot:await s(a.bot),nextRunAt:(0,m.nextRun)(a.schedule,new Date)}).returning();return z(),A(c)}async function v(a,b){let[c]=await i.database.select().from(j.routineTable).where((0,d.eq)(j.routineTable.id,a));if(!c)return null;let e=b.schedule??c.schedule,f=!!b.schedule||b.enabled&&!c.enabled;f&&t(e,b.enabled??c.enabled);let[g]=await i.database.update(j.routineTable).set({...b,...b.bot?{bot:await s(b.bot)}:{},...f?{nextRunAt:(0,m.nextRun)(e,new Date)}:{}}).where((0,d.eq)(j.routineTable.id,a)).returning();return z(),A(g)}async function w(a){let b=await i.database.delete(j.routineTable).where((0,d.eq)(j.routineTable.id,a)).returning({id:j.routineTable.id});return b.length&&z(),b.length>0}async function x(a){return(await o(a,1))[0]??null}async function y(a){return(await i.database.select({id:j.threadTable.id}).from(j.threadTable).where((0,d.and)((0,d.eq)(j.threadTable.routineId,a),(0,d.eq)(j.threadTable.seen,!1),(0,d.inArray)(j.threadTable.status,["done","cancelled"])))).map(a=>a.id)}a.s(["createRoutine",0,u,"deleteRoutine",0,w,"findRoutine",0,q,"latestRun",0,x,"listRoutines",0,p,"listUnseenRunIds",0,y,"resolveRoutine",0,r,"updateRoutine",0,v]),c()}catch(a){c(a)}},!1),643020,a=>{"use strict";var b=a.i(723885),c=a.i(569572),d=a.i(706210);let e=b.default.string().regex(/^([01]\d|2[0-3]):[0-5]\d$/,"A time is HH:MM, 00:00 to 23:59");function f(a){let[b,c]=a.split(" "),[d,e,f]=b.split("-").map(Number),[g,h]=c.split(":").map(Number);return new Date(d,e-1,f,g,h)}let g=/^\d{4}-\d\d-\d\d ([01]\d|2[0-3]):[0-5]\d$/,h=b.default.string().regex(g,'A moment is "YYYY-MM-DD HH:MM"').refine(a=>{if(!g.test(a))return!0;let b=f(a);return b.getMonth()===Number(a.slice(5,7))-1&&b.getDate()===Number(a.slice(8,10))},"There is no such day"),i=b.default.discriminatedUnion("kind",[b.default.object({kind:b.default.literal("once"),at:h}),b.default.object({kind:b.default.literal("daily"),time:e,days:b.default.array(b.default.number().int().min(1).max(7)).min(1,"Pick at least one day").transform(a=>[...new Set(a)].sort((a,b)=>a-b))}),b.default.object({kind:b.default.literal("every"),hours:b.default.number().int().min(c.ROUTINE.minHours,`No more often than every ${c.ROUTINE.minHours}h`).max(168)})]),j=b.default.object({bot:b.default.string().trim().min(1,"Pick a bot"),label:b.default.string().trim().min(1,"Give it a name").max(80),request:b.default.string().trim().min(1,"Say what it should do"),schedule:i}),k=b.default.object({id:b.default.string(),status:b.default.enum(["running","waiting","done","cancelled"]),outcome:b.default.string().nullable(),updatedAt:d.DateLikeSchema});j.extend({id:b.default.string(),enabled:b.default.boolean(),nextRunAt:d.DateLikeSchema,runs:b.default.array(k)});let l=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],m=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];a.s(["RoutineInputSchema",0,j,"RoutineScheduleSchema",0,i,"momentOf",0,f,"nextRun",0,function(a,b){if("once"===a.kind)return f(a.at);if("every"===a.kind)return new Date(b.getTime()+36e5*a.hours);let[c,d]=a.time.split(":").map(Number);for(let e=0;e<=7;e++){let f=new Date(b);f.setDate(f.getDate()+e),f.setHours(c,d,0,0);let g=0===f.getDay()?7:f.getDay();if(f>b&&a.days.includes(g))return f}return new Date(b.getTime()+864e5)},"scheduleText",0,function(a){if("once"===a.kind){let[b,c]=a.at.split(" "),[,d,e]=b.split("-").map(Number);return`Once \xb7 ${m[d-1]} ${e} ${c}`}if("every"===a.kind)return 1===a.hours?"Every hour":`Every ${a.hours} hours`;let{days:b,time:c}=a;if(7===b.length)return`Daily ${c}`;if(1===b.length)return`${l[b[0]-1]} ${c}`;let d=b.every((a,c)=>0===c||a===b[c-1]+1)?`${l[b[0]-1]}–${l[b.at(-1)-1]}`:b.map(a=>l[a-1]).join(" ");return`Daily ${c} \xb7 ${d}`}])},487591,422807,a=>{"use strict";var b=a.i(912714),c=a.i(750227),d=a.i(203469),e=a.i(569572),f=a.i(821415);a.i(176668);let g=a=>a.trim().toLowerCase().replace(/^[a-z]+:\/\//,"").replace(/^www\./,"").replace(/[/?#].*$/,"");a.s(["siteOf",0,g],422807);let h=(0,c.join)(e.DATA_DIR,e.PATHS.signIns),i=a=>(0,c.join)(h,`${encodeURIComponent(g(a))}.json`),j=()=>d.appEvents.emit({type:"signins"});async function k(a){try{return JSON.parse(await (0,b.readFile)(i(a),"utf8"))}catch{return null}}async function l(a){await (0,b.mkdir)(h,{recursive:!0}),await (0,b.writeFile)(i(a.site),JSON.stringify(a),{mode:384}),j()}async function m(){let a=await (0,b.readdir)(h).catch(()=>[]);return(await Promise.all(a.filter(a=>a.endsWith(".json")).map(a=>k(decodeURIComponent(a.slice(0,-5)))))).flatMap(a=>a?[(({state:a,...b})=>b)(a)]:[]).sort((a,b)=>a.site.localeCompare(b.site))}async function n(a){let b=g(a.site),c=await k(b),d={site:b,account:a.account.trim()||b,bots:[...new Set([...c?.bots??[],a.bot])],asking:(c?.asking??[]).filter(b=>b!==a.bot),keptAt:new Date().toISOString(),usedAt:c?.usedAt??null,state:a.state};return await l(d),(({state:a,...b})=>b)(d)}async function o(a,b){let c=await k(a);if(!c)return{kind:"none",kept:(await m()).map(a=>a.site)};if(!c.bots.includes(b))return c.asking.includes(b)||await l({...c,asking:[...c.asking,b]}),{kind:"ask",signIn:(({state:a,...b})=>b)(c)};let d={...c,usedAt:new Date().toISOString()};return await l(d),{kind:"state",signIn:(({state:a,...b})=>b)(d),state:c.state}}let p=a=>`${a.name}
119
119
  ${a.domain}
120
- ${a.path}`;async function q(a){let c,d=await (0,b.readdir)(h).catch(()=>[]);if(!d.some(a=>a.endsWith(".json")))return;let e=await (0,f.openWorkspace)(),g=(0,f.jobShellEnv)(a),{browsers:i}=JSON.parse((await e.exec("playwright-cli list --json",{env:g,timeoutMs:15e3})).stdout||"{}"),j=i?.find(a=>a.name===g.PLAYWRIGHT_CLI_SESSION);if(!j||j.attached)return;let m=`.playwright-cli/state-${crypto.randomUUID()}.json`;try{let a=await e.exec(`mkdir -p .playwright-cli && playwright-cli state-save ${m}`,{env:g,timeoutMs:3e4});if(0!==a.exitCode)return;let b=JSON.parse(await e.readFile(m,"utf-8"));c=new Map((b.cookies??[]).map(a=>[p(a),a]))}finally{await e.exec(`rm -f ${m}`)}for(let a of d){if(!a.endsWith(".json"))continue;let b=await k(decodeURIComponent(a.slice(0,-5))),d=b?.state;if(!b||!d?.cookies)continue;let e=!1,f=d.cookies.map(a=>{let b=c.get(p(a));return b&&JSON.stringify(b)!==JSON.stringify(a)?(e=!0,b):a});e&&await l({...b,state:{...d,cookies:f}})}}async function r(a,b,c){let d=await k(a);d&&await l({...d,bots:c?[...new Set([...d.bots,b])]:d.bots.filter(a=>a!==b),asking:d.asking.filter(a=>a!==b)})}async function s(a){await (0,b.rm)(i(a),{force:!0}),j()}a.s(["borrowSignIn",0,o,"keepSignIn",0,n,"removeSignIn",0,s,"renewSignIns",0,q,"setSignInBot",0,r],487591)},138100,a=>{"use strict";var b=a.i(912714),c=a.i(750227),d=a.i(569572),e=a.i(821415),f=a.i(176668),g=a.i(182248),h=a.i(762805);let i=(0,c.join)(d.APP_DIR,d.PATHS.skills.default),j=(0,c.join)(d.DATA_DIR,d.PATHS.skills.custom),k=a=>(0,c.join)(e.WORKSPACE,(0,e.botFolder)(a),d.PATHS.skills.own);async function l(a,e){let f=(0,c.join)(d.APP_DIR,d.PATHS.skills.seeds,a.toLowerCase());await (0,b.cp)(f,k(e),{recursive:!0,force:!1}).catch(a=>{if("ENOENT"!==a.code)throw a})}async function m(a,b){let c=[],d=new Set;for(let e of b){let b;try{b=await a.readdir(e,{withFileTypes:!0})}catch{continue}for(let i of b){let b,j;if(!i.isDirectory())continue;let k=`${e}/${i.name}`,l=`${k}/SKILL.md`;try{b=await a.readFile(l,"utf-8")}catch{continue}try{j=(0,h.parseFrontmatter)(b)}catch(a){f.logger.warn(`skill ${k}: SKILL.md front matter did not load — ${(0,g.errorToString)(a)}`);continue}!(!(0,h.runsHere)(j)||d.has(j.name))&&(d.add(j.name),j.disabled||c.push({name:j.name,description:j.description,path:k}))}}return c}a.s(["giveSeedSkills",0,l,"loadSkills",0,(a,b)=>m(a,b?[i,k(b),j]:[i,j])])},762805,951941,a=>{"use strict";var b=a.i(912714),c=a.i(750227),d=a.i(622650),e=a.i(569572),f=a.i(53112);let g=f.z.enum(["custom","default"]),h=f.z.string().trim().min(1,"Skill name is required").max(64,"Skill name is too long").regex(/^[a-z0-9][a-z0-9_-]*$/i,"Use letters, numbers, dashes and underscores only"),i=f.z.object({name:h,description:f.z.string().trim().min(1,"Description is required"),disabled:f.z.boolean().optional(),platforms:f.z.array(f.z.string()).optional()}),j=i.extend({content:f.z.string().trim().min(1,"Content is required")}),k=f.z.object({fileName:f.z.string().trim().min(1),base64:f.z.string().min(1)});a.s(["SkillDraftSchema",0,j,"SkillFrontmatterSchema",0,i,"SkillNameSchema",0,h,"SkillSourceSchema",0,g,"SkillUploadSchema",0,k],951941);var l=a.i(293480);let m={default:(0,c.resolve)(e.APP_DIR,e.PATHS.skills.default),custom:(0,c.resolve)(e.DATA_DIR,e.PATHS.skills.custom)};function n(a,b){let d=m[a],e=(0,c.resolve)(d,b),f=(0,c.relative)(d,e);return(!f||f.startsWith("..")||f.includes(c.sep)||"."===f)&&(0,l.publicError)("Skill not found"),e}function o(a){let b=a.match(/^---\r?\n([\s\S]*?)\r?\n---\r?\n?/);if(!b)return{head:null,body:a.trim(),rest:a,fence:""};let c=a.slice(b[0].length);return{head:b[1]??null,body:c.trim(),rest:c,fence:b[0]}}function p(a){let b,{head:c}=o(a);c||(0,l.publicError)("SKILL.md needs a YAML block with name and description");try{b=(0,d.parse)(c)}catch{(0,l.publicError)("SKILL.md frontmatter is not valid YAML")}let e=i.safeParse(b);return e.success||(0,l.publicError)(`SKILL.md frontmatter: ${e.error.issues[0]?.message??"invalid"}`),e.data}let q=/^disabled[ \t]*:[^\n]*(\r?\n|$)/m;async function r(a,e,f){let g,h,i=(0,c.join)(n(a,e),"SKILL.md");try{g=await (0,b.readFile)(i,"utf-8")}catch{(0,l.publicError)("Skill not found")}let{head:j,rest:k,fence:m}=o(g);j||(0,l.publicError)("This SKILL.md has no frontmatter to write to");try{h=(0,d.parse)(j)}catch{(0,l.publicError)("SKILL.md frontmatter is not valid YAML")}(!h||"object"!=typeof h||Array.isArray(h))&&(0,l.publicError)("SKILL.md frontmatter is not a YAML mapping");let p=m.includes("\r\n")?"\r\n":"\n",r=f?q.test(j)?j.replace(q,"disabled: true$1"):`${j.replace(/\s+$/,"")}${p}disabled: true`:j.replace(q,"").replace(/\s+$/,"");await (0,b.writeFile)(i,`---${p}${r}${p}---${p}${k}`)}async function s(a,d){try{let e=await (0,b.readFile)((0,c.join)(m[a],d,"SKILL.md"),"utf-8");return{...p(e),source:a,dir:d}}catch{return null}}async function t(a,d){let e=n("custom",a),f=async a=>(0,b.stat)(a).then(()=>!0,()=>!1);await f(e)&&(0,l.publicError)(`A skill named "${a}" already exists`),await f(n("default",a))&&(0,l.publicError)(`"${a}" is a built-in skill — pick another name`),await (0,b.mkdir)(e,{recursive:!0});try{for(let[a,f]of d){let d=function(a,b){let d=(0,c.resolve)(a,b);return((0,c.relative)(a,d).startsWith("..")||(0,c.resolve)(d)!==d)&&(0,l.publicError)("File not found"),d}(e,a);await (0,b.mkdir)((0,c.resolve)(d,".."),{recursive:!0}),await (0,b.writeFile)(d,f)}}catch(a){throw await (0,b.rm)(e,{recursive:!0,force:!0}),a}let g=await s("custom",a);return g||(await (0,b.rm)(e,{recursive:!0,force:!0}),(0,l.publicError)("SKILL.md could not be read back")),g}async function u(a){let c=n("custom",a);await (0,b.stat)(c).then(()=>!0,()=>!1)||(0,l.publicError)("Skill not found"),await (0,b.rm)(c,{recursive:!0,force:!0})}a.s(["deleteCustomSkill",0,u,"parseFrontmatter",0,p,"renderSkillMarkdown",0,function(a,b){return`---
120
+ ${a.path}`;async function q(a){let c,d=await (0,b.readdir)(h).catch(()=>[]);if(!d.some(a=>a.endsWith(".json")))return;let e=await (0,f.openWorkspace)(),g=(0,f.jobShellEnv)(a),{browsers:i}=JSON.parse((await e.exec("playwright-cli list --json",{env:g,timeoutMs:15e3})).stdout||"{}"),j=i?.find(a=>a.name===g.PLAYWRIGHT_CLI_SESSION);if(!j||j.attached)return;let m=`.playwright-cli/state-${crypto.randomUUID()}.json`;try{let a=await e.exec(`mkdir -p .playwright-cli && playwright-cli state-save ${m}`,{env:g,timeoutMs:3e4});if(0!==a.exitCode)return;let b=JSON.parse(await e.readFile(m,"utf-8"));c=new Map((b.cookies??[]).map(a=>[p(a),a]))}finally{await e.exec(`rm -f ${m}`)}for(let a of d){if(!a.endsWith(".json"))continue;let b=await k(decodeURIComponent(a.slice(0,-5))),d=b?.state;if(!b||!d?.cookies)continue;let e=!1,f=d.cookies.map(a=>{let b=c.get(p(a));return b&&JSON.stringify(b)!==JSON.stringify(a)?(e=!0,b):a});e&&await l({...b,state:{...d,cookies:f}})}}async function r(a,b,c){let d=await k(a);d&&await l({...d,bots:c?[...new Set([...d.bots,b])]:d.bots.filter(a=>a!==b),asking:d.asking.filter(a=>a!==b)})}async function s(a){await (0,b.rm)(i(a),{force:!0}),j()}a.s(["borrowSignIn",0,o,"keepSignIn",0,n,"removeSignIn",0,s,"renewSignIns",0,q,"setSignInBot",0,r],487591)},138100,a=>{"use strict";var b=a.i(912714),c=a.i(750227),d=a.i(569572),e=a.i(821415),f=a.i(176668),g=a.i(182248),h=a.i(762805);let i=(0,c.join)(d.APP_DIR,d.PATHS.skills.default),j=(0,c.join)(d.DATA_DIR,d.PATHS.skills.custom),k=a=>(0,c.join)(e.WORKSPACE,(0,e.botFolder)(a),d.PATHS.skills.own);async function l(a,e){let f=(0,c.join)(d.APP_DIR,d.PATHS.skills.seeds,a.toLowerCase());await (0,b.cp)(f,k(e),{recursive:!0,force:!1}).catch(a=>{if("ENOENT"!==a.code)throw a})}async function m(a,b){let c=[],d=new Set;for(let e of b){let b;try{b=await a.readdir(e,{withFileTypes:!0})}catch{continue}for(let i of b){let b,j;if(!i.isDirectory())continue;let k=`${e}/${i.name}`,l=`${k}/SKILL.md`;try{b=await a.readFile(l,"utf-8")}catch{continue}try{j=(0,h.parseFrontmatter)(b)}catch(a){f.logger.warn(`skill ${k}: SKILL.md front matter did not load — ${(0,g.errorToString)(a)}`);continue}!(!(0,h.runsHere)(j)||d.has(j.name))&&(d.add(j.name),j.disabled||c.push({name:j.name,description:j.description,path:k}))}}return c}a.s(["giveSeedSkills",0,l,"loadSkills",0,(a,b)=>m(a,b?[i,k(b),j]:[i,j])])},762805,951941,a=>{"use strict";var b=a.i(912714),c=a.i(750227),d=a.i(622650),e=a.i(569572),f=a.i(53112);let g=f.z.enum(["custom","default"]),h=f.z.string().trim().min(1,"Skill name is required").max(64,"Skill name is too long").regex(/^[a-z0-9][a-z0-9_-]*$/i,"Use letters, numbers, dashes and underscores only"),i=f.z.object({name:h,description:f.z.string().trim().min(1,"Description is required"),disabled:f.z.boolean().optional(),platforms:f.z.array(f.z.string()).optional()}),j=i.extend({content:f.z.string().trim().min(1,"Content is required")}),k=f.z.object({fileName:f.z.string().trim().min(1),base64:f.z.string().min(1)});a.s(["SkillDraftSchema",0,j,"SkillFrontmatterSchema",0,i,"SkillNameSchema",0,h,"SkillSourceSchema",0,g,"SkillUploadSchema",0,k],951941);var l=a.i(293480);let m={default:(0,c.resolve)(e.APP_DIR,e.PATHS.skills.default),custom:(0,c.resolve)(e.DATA_DIR,e.PATHS.skills.custom)};function n(a,b){let d=m[a],e=(0,c.resolve)(d,b),f=(0,c.relative)(d,e);return(!f||f.startsWith("..")||f.includes(c.sep)||"."===f)&&(0,l.publicError)("Skill not found"),e}function o(a,b){let d=(0,c.resolve)(a,b);return((0,c.relative)(a,d).startsWith("..")||(0,c.resolve)(d)!==d)&&(0,l.publicError)("File not found"),d}function p(a){let b=a.match(/^---\r?\n([\s\S]*?)\r?\n---\r?\n?/);if(!b)return{head:null,body:a.trim(),rest:a,fence:""};let c=a.slice(b[0].length);return{head:b[1]??null,body:c.trim(),rest:c,fence:b[0]}}function q(a){let b,{head:c}=p(a);c||(0,l.publicError)("SKILL.md needs a YAML block with name and description");try{b=(0,d.parse)(c)}catch{(0,l.publicError)("SKILL.md frontmatter is not valid YAML")}let e=i.safeParse(b);return e.success||(0,l.publicError)(`SKILL.md frontmatter: ${e.error.issues[0]?.message??"invalid"}`),e.data}let r=/^disabled[ \t]*:[^\n]*(\r?\n|$)/m;async function s(a,e,f){let g,h,i=(0,c.join)(n(a,e),"SKILL.md");try{g=await (0,b.readFile)(i,"utf-8")}catch{(0,l.publicError)("Skill not found")}let{head:j,rest:k,fence:m}=p(g);j||(0,l.publicError)("This SKILL.md has no frontmatter to write to");try{h=(0,d.parse)(j)}catch{(0,l.publicError)("SKILL.md frontmatter is not valid YAML")}(!h||"object"!=typeof h||Array.isArray(h))&&(0,l.publicError)("SKILL.md frontmatter is not a YAML mapping");let o=m.includes("\r\n")?"\r\n":"\n",q=f?r.test(j)?j.replace(r,"disabled: true$1"):`${j.replace(/\s+$/,"")}${o}disabled: true`:j.replace(r,"").replace(/\s+$/,"");await (0,b.writeFile)(i,`---${o}${q}${o}---${o}${k}`)}async function t(a,d){try{let e=await (0,b.readFile)((0,c.join)(m[a],d,"SKILL.md"),"utf-8");return{...q(e),source:a,dir:d}}catch{return null}}async function u(a,d){let e=n("custom",a),f=async a=>(0,b.stat)(a).then(()=>!0,()=>!1);await f(e)&&(0,l.publicError)(`A skill named "${a}" already exists`),await f(n("default",a))&&(0,l.publicError)(`"${a}" is a built-in skill — pick another name`),await (0,b.mkdir)(e,{recursive:!0});try{for(let[a,f]of d){let d=o(e,a);await (0,b.mkdir)((0,c.resolve)(d,".."),{recursive:!0}),await (0,b.writeFile)(d,f)}}catch(a){throw await (0,b.rm)(e,{recursive:!0,force:!0}),a}let g=await t("custom",a);return g||(await (0,b.rm)(e,{recursive:!0,force:!0}),(0,l.publicError)("SKILL.md could not be read back")),g}async function v(a,c,d){let e=o(n("custom",a),c),f=await (0,b.stat)(e).catch(()=>null);f?.isFile()||(0,l.publicError)("File not found"),Buffer.byteLength(d)>524288&&(0,l.publicError)("That is larger than this screen can write back"),"SKILL.md"===c&&q(d),await (0,b.writeFile)(e,d,"utf-8")}async function w(a){let c=n("custom",a);await (0,b.stat)(c).then(()=>!0,()=>!1)||(0,l.publicError)("Skill not found"),await (0,b.rm)(c,{recursive:!0,force:!0})}a.s(["deleteCustomSkill",0,w,"parseFrontmatter",0,q,"renderSkillMarkdown",0,function(a,b){return`---
121
121
  ${(0,d.stringify)(a).trim()}
122
122
  ---
123
123
 
124
124
  ${b.trim()}
125
- `},"runsHere",0,({platforms:a})=>!a||a.includes(process.platform),"setSkillDisabled",0,r,"splitFrontmatter",0,o,"writeCustomSkill",0,t],762805)},626550,a=>{"use strict";var b=a.i(762008);let c={[b.TOOL_NAMES.memory_recall]:"Checking your notes",[b.TOOL_NAMES.memory_remember]:"Noting that down",[b.TOOL_NAMES.memory_forget]:"Forgetting that",[b.TOOL_NAMES.memory_conversation]:"Reading back an earlier call",[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.end_call]:"Ending the call",[b.TOOL_NAMES.routine]:"Checking your routines"};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,a.s(["searchOf",0,function(a,c){if(a!==b.TOOL_NAMES.web_search)return null;try{let a=JSON.parse(c),b=Array.isArray(a.sources)?a.sources.flatMap(a=>a&&"object"==typeof a&&"string"==typeof a.url?[a]:[]):[];return{query:"string"==typeof a.query?a.query:null,sources:b}}catch{return null}},"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}},"toolLine",0,function(a,d,e=null){let f;if(a===b.TOOL_NAMES.tool_search||a===b.TOOL_NAMES.tool_call)return"Reaching a connected service";let g=function(a){if(!a)return null;try{let b=JSON.parse(a);if(b&&"object"==typeof b&&!Array.isArray(b))return b}catch{}return null}(d);return(g&&function(a,c,d){if(a===b.TOOL_NAMES.memory_remember){let a="string"==typeof c.path?c.path.trim():"",b=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);if(!a)return null;if(!b)return`Noting that under ${a}`;let d=b.more>0?` (+${b.more})`:"";return`Noting under ${a}: ${function(a){let b=a.trim().replace(/\s+/g," ");if(b.length<=28)return b;let c=b.slice(0,28),d=c.lastIndexOf(" ");return`${(d>14?c.slice(0,d):c).trimEnd()}…`}(b.text)}${d}`}if(a===b.TOOL_NAMES.thread_start){let a="string"==typeof c.bot?c.bot.trim():"";return a?`Handing this to ${a}`:"Handing this over"}if(a===b.TOOL_NAMES.web_search){let a="string"==typeof c.query?c.query.trim():"";return a?`Searching \xb7 ${a}`:null}if(a===b.TOOL_NAMES.routine){if("create"===c.action){let a=["string"==typeof c.bot?c.bot.trim():"",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 e="string"==typeof c.thread?c.thread.trim():"";return a===b.TOOL_NAMES.thread_tell?d?`Telling ${d}`:"Passing that on":a===b.TOOL_NAMES.thread_answer?d?`Answering ${d}`:"Answering that":a===b.TOOL_NAMES.thread_cancel?e?`Stopping ${e}`:"Stopping that":a===b.TOOL_NAMES.thread_seen?e?`Marking ${e} as read`:"Marking that as read":a===b.TOOL_NAMES.thread_show?e?`Opening ${e}`:"Opening that":a===b.TOOL_NAMES.thread_status?e&&"all"!==e.toLowerCase()?`Checking on ${e}`:"Checking on the work":null}(a,g,e))??c[a]??((f=a.indexOf("__"))<=0?null:`Reaching ${a.slice(0,f).replace(/[-_]/g," ")}`)}])},956802,a=>{"use strict";var b=a.i(874533),c=a.i(569572);let d=`on run argv
125
+ `},"runsHere",0,({platforms:a})=>!a||a.includes(process.platform),"setSkillDisabled",0,s,"splitFrontmatter",0,p,"writeCustomSkill",0,u,"writeSkillFile",0,v],762805)},626550,a=>{"use strict";var b=a.i(762008);let c={[b.TOOL_NAMES.memory_recall]:"Checking your notes",[b.TOOL_NAMES.memory_remember]:"Noting that down",[b.TOOL_NAMES.memory_forget]:"Forgetting that",[b.TOOL_NAMES.memory_conversation]:"Reading back an earlier call",[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.end_call]:"Ending the call",[b.TOOL_NAMES.routine]:"Checking your routines"};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,a.s(["searchOf",0,function(a,c){if(a!==b.TOOL_NAMES.web_search)return null;try{let a=JSON.parse(c),b=Array.isArray(a.sources)?a.sources.flatMap(a=>a&&"object"==typeof a&&"string"==typeof a.url?[a]:[]):[];return{query:"string"==typeof a.query?a.query:null,sources:b}}catch{return null}},"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}},"toolLine",0,function(a,d,e=null){let f;if(a===b.TOOL_NAMES.tool_search||a===b.TOOL_NAMES.tool_call)return"Reaching a connected service";let g=function(a){if(!a)return null;try{let b=JSON.parse(a);if(b&&"object"==typeof b&&!Array.isArray(b))return b}catch{}return null}(d);return(g&&function(a,c,d){if(a===b.TOOL_NAMES.memory_remember){let a="string"==typeof c.path?c.path.trim():"",b=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);if(!a)return null;if(!b)return`Noting that under ${a}`;let d=b.more>0?` (+${b.more})`:"";return`Noting under ${a}: ${function(a){let b=a.trim().replace(/\s+/g," ");if(b.length<=28)return b;let c=b.slice(0,28),d=c.lastIndexOf(" ");return`${(d>14?c.slice(0,d):c).trimEnd()}…`}(b.text)}${d}`}if(a===b.TOOL_NAMES.thread_start){let a="string"==typeof c.bot?c.bot.trim():"";return a?`Handing this to ${a}`:"Handing this over"}if(a===b.TOOL_NAMES.web_search){let a="string"==typeof c.query?c.query.trim():"";return a?`Searching \xb7 ${a}`:null}if(a===b.TOOL_NAMES.routine){if("create"===c.action){let a=["string"==typeof c.bot?c.bot.trim():"",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 e="string"==typeof c.thread?c.thread.trim():"";return a===b.TOOL_NAMES.thread_tell?d?`Telling ${d}`:"Passing that on":a===b.TOOL_NAMES.thread_answer?d?`Answering ${d}`:"Answering that":a===b.TOOL_NAMES.thread_cancel?e?`Stopping ${e}`:"Stopping that":a===b.TOOL_NAMES.thread_seen?e?`Marking ${e} as read`:"Marking that as read":a===b.TOOL_NAMES.thread_show?e?`Opening ${e}`:"Opening that":a===b.TOOL_NAMES.thread_status?e&&"all"!==e.toLowerCase()?`Checking on ${e}`:"Checking on the work":null}(a,g,e))??c[a]??((f=a.indexOf("__"))<=0?null:`Reaching ${a.slice(0,f).replace(/[-_]/g," ")}`)}])},956802,a=>{"use strict";var b=a.i(874533),c=a.i(569572);let d=`on run argv
126
126
  display notification (item 2 of argv) with title (item 1 of argv)
127
127
  end run`,e=`
128
128
  $ErrorActionPreference = 'Stop'
@@ -1,3 +1,3 @@
1
- module.exports=[588237,a=>{"use strict";var b=a.i(187924),c=a.i(497895);a.s(["Table",0,function({className:a,...d}){return(0,b.jsx)("div",{"data-slot":"table-container",className:"relative w-full overflow-x-auto",children:(0,b.jsx)("table",{"data-slot":"table",className:(0,c.cn)("w-full caption-bottom text-sm",a),...d})})},"TableBody",0,function({className:a,...d}){return(0,b.jsx)("tbody",{"data-slot":"table-body",className:(0,c.cn)("[&_tr:last-child]:border-0",a),...d})},"TableCell",0,function({className:a,...d}){return(0,b.jsx)("td",{"data-slot":"table-cell",className:(0,c.cn)("p-2 align-middle [&:has([role=checkbox])]:pr-0",a),...d})},"TableHead",0,function({className:a,...d}){return(0,b.jsx)("th",{"data-slot":"table-head",className:(0,c.cn)("h-9 px-2 text-left align-middle font-mono text-[11px] font-normal tracking-[0.1em] whitespace-nowrap text-muted-foreground uppercase [&:has([role=checkbox])]:pr-0",a),...d})},"TableHeader",0,function({className:a,...d}){return(0,b.jsx)("thead",{"data-slot":"table-header",className:(0,c.cn)("[&_tr]:border-b",a),...d})},"TableRow",0,function({className:a,...d}){return(0,b.jsx)("tr",{"data-slot":"table-row",className:(0,c.cn)("border-b border-border/60 transition-colors data-[state=selected]:bg-muted hover:bg-muted/40",a),...d})}])},369768,a=>a.a(async(b,c)=>{try{var d=a.i(187924),e=a.i(707963),f=a.i(141146),g=a.i(168370),h=a.i(572131),i=a.i(767561),j=a.i(340695),k=a.i(965733),l=a.i(846991),m=a.i(950463),n=a.i(588237),o=a.i(287702),p=a.i(559553),q=a.i(267514),r=a.i(313237),s=a.i(497895),t=b([l]);[l]=t.then?(await t)():t;let D=new Set(["frame","image","audio","video"]),E=new Set(["image"]);function u(a){let b=(0,p.workspaceRelative)(a);if(!b)return{how:"os"};let c=(0,p.viewKindOf)(b);return E.has(c)?{how:"dialog",path:b}:D.has(c)?{how:"tab",path:b,href:i.queryKey.fileView(b)}:"none"===c?{how:"os"}:{how:"dialog",path:b}}let F=(0,h.createContext)(null),G={dialog:{prose:"px-5 py-4",block:"px-4 py-3"},page:{prose:"px-5 py-6 sm:px-8",block:"px-5 py-5"},inline:{prose:"pb-3",block:"pb-3"}};function v({kind:a,content:b,truncated:c,where:e="dialog"}){return(0,d.jsxs)(d.Fragment,{children:[null!=c&&(0,d.jsx)(w,{of:c}),(0,d.jsx)(x,{kind:a,content:b,where:e})]})}function w({of:a}){return(0,d.jsxs)("p",{className:"border-b border-border/60 px-5 py-2.5 font-mono text-[11px] text-muted-foreground",children:[`Showing the first ${(0,s.formatBytes)(o.WORKSPACE_VIEW.textMax)} of ${(0,s.formatBytes)(a)}. `,"Open the file itself for the rest."]})}function x({kind:a,content:b,where:c}){let e=G[c];switch(a){case"markdown":return(0,d.jsx)("div",{className:(0,s.cn)("min-w-0 text-sm leading-relaxed",e.prose),children:(0,d.jsx)(l.Markdown,{children:b})});case"csv":return(0,d.jsx)(C,{content:b,className:e.block});case"json":return(0,d.jsx)(B,{text:function(a){try{return JSON.stringify(JSON.parse(a),null,2)}catch{return a}}(b),className:e.block});default:return(0,d.jsx)(B,{text:b,className:e.block})}}function y(a){let[b,c]=(0,h.useState)(null),[d,e]=(0,h.useState)(null),[f,g]=(0,h.useState)(null);return(0,h.useEffect)(()=>{if(!a)return;c(null),e(null),g(null);let b=!1;return fetch(i.queryKey.file(a),{headers:{range:`bytes=0-${o.WORKSPACE_VIEW.textMax-1}`}}).then(async a=>{if(!a.ok)throw Error(await a.text());return{text:await a.text(),of:function(a){let b=a.headers.get("content-range")?.match(/^bytes \d+-(\d+)\/(\d+)$/);if(!b)return null;let[,c,d]=b.map(Number);return c+1<d?d:null}(a)}}).then(({text:a,of:d})=>{if(b)return;let e=null===d?a:a.slice(0,a.lastIndexOf("\n")+1||void 0);c(e),g(d)}).catch(a=>!b&&e((0,s.errorToString)(a))),()=>{b=!0}},[a]),{content:b,failure:d,truncated:f}}function z({path:a,bytes:b}){let[c,e]=(0,r.useServerAction)(q.openFileAction);return(0,d.jsxs)("div",{className:"space-y-4 p-8",children:[(0,d.jsxs)("p",{className:"max-w-lg text-sm leading-relaxed text-muted-foreground",children:[`This file is ${(0,s.formatBytes)(b)} — too big to draw here without `,"taking the window with it. Open it where it is instead."]}),(0,d.jsx)(j.Button,{variant:"outline",loading:e,onClick:()=>c(a),children:"Reveal in the file manager"})]})}function A({path:a,group:b=[],kind:c,onPath:h,onClose:l}){let n="image"===c,{content:o,failure:p,truncated:q}=y(n?null:a),r=a?.split("/").pop()??"",t=a?b.indexOf(a):-1,u=a=>{!(t<0)&&h&&h(b[(t+a+b.length)%b.length])};return(0,d.jsx)(k.Dialog,{open:null!==a,onOpenChange:a=>!a&&l(),children:(0,d.jsxs)(k.DialogContent,{onKeyDown:a=>{"ArrowLeft"===a.key&&u(-1),"ArrowRight"===a.key&&u(1)},className:"flex max-h-[calc(100vh-3rem)] flex-col gap-0 overflow-hidden p-0 sm:max-w-4xl",children:[(0,d.jsx)(k.DialogTitle,{className:"sr-only",children:r}),(0,d.jsxs)("div",{className:"flex shrink-0 items-center gap-1 border-b border-border/60 py-2 pr-12 pl-4",children:[(0,d.jsx)("span",{className:"min-w-0 flex-1 truncate font-mono text-[12px]",children:a}),t>=0&&b.length>1&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("span",{className:"shrink-0 font-mono text-[11px] text-muted-foreground tabular-nums",children:[t+1," / ",b.length]}),(0,d.jsx)(j.Button,{variant:"ghost",size:"icon-sm","aria-label":"Previous image",onClick:()=>u(-1),children:(0,d.jsx)(e.ChevronLeft,{})}),(0,d.jsx)(j.Button,{variant:"ghost",size:"icon-sm","aria-label":"Next image",onClick:()=>u(1),children:(0,d.jsx)(f.ChevronRight,{})})]}),n&&a&&(0,d.jsx)(j.Button,{variant:"ghost",size:"icon-sm","aria-label":"Open in a new tab",render:(0,d.jsx)("a",{href:i.queryKey.fileView(a),target:"_blank",rel:"noreferrer"}),children:(0,d.jsx)(g.ExternalLink,{})})]}),(0,d.jsx)("div",{className:"min-h-0 flex-1 overflow-auto",children:n&&a?(0,d.jsx)("img",{src:i.queryKey.file(a),alt:r,className:"mx-auto max-h-[calc(100vh-11rem)] object-contain p-4"}):p?(0,d.jsx)("p",{className:"p-5 font-mono text-xs text-destructive",children:p}):null===o?(0,d.jsxs)("div",{className:"space-y-3 p-5",children:[(0,d.jsx)(m.Skeleton,{className:"h-5 w-2/3"}),(0,d.jsx)(m.Skeleton,{className:"h-4 w-full"}),(0,d.jsx)(m.Skeleton,{className:"h-4 w-5/6"})]}):(0,d.jsx)(v,{kind:c,content:o,truncated:q})}),n&&b.length>1&&(0,d.jsx)("div",{className:"flex shrink-0 justify-center gap-1.5 border-t border-border/60 p-2.5",children:b.map(b=>(0,d.jsx)("button",{type:"button","aria-label":b.split("/").pop(),onClick:()=>h?.(b),className:(0,s.cn)("size-11 shrink-0 overflow-hidden rounded-md outline-none focus-visible:ring-3 focus-visible:ring-ring/50",b===a?"ring-2 ring-foreground":"opacity-55"),children:(0,d.jsx)("img",{src:i.queryKey.file(b),alt:"",loading:"lazy",className:"size-full bg-muted object-cover"})},b))})]})})}function B({text:a,className:b}){return(0,d.jsx)("pre",{className:(0,s.cn)("overflow-x-auto font-mono text-[12px] leading-relaxed whitespace-pre-wrap text-foreground/90",b),children:a})}function C({content:a,className:b}){let[c,...e]=(0,h.useMemo)(()=>(function(a){let b=[],c=[],d="",e=!1;for(let f=0;f<a.length;f++){let g=a[f];e?'"'===g&&'"'===a[f+1]?(d+='"',f++):'"'===g?e=!1:d+=g:'"'===g?e=!0:","===g?(c.push(d),d=""):"\n"===g||"\r"===g?("\r"===g&&"\n"===a[f+1]&&f++,c.push(d),b.push(c),c=[],d=""):d+=g}return(d.length||c.length)&&(c.push(d),b.push(c)),b.filter(a=>a.some(a=>a.trim()))})(a),[a]);return c?(0,d.jsx)("div",{className:(0,s.cn)("overflow-x-auto",b),children:(0,d.jsxs)(n.Table,{children:[(0,d.jsx)(n.TableHeader,{children:(0,d.jsx)(n.TableRow,{children:c.map((a,b)=>(0,d.jsx)(n.TableHead,{className:"whitespace-nowrap",children:a},`${b}-${a}`))})}),(0,d.jsx)(n.TableBody,{children:e.map((a,b)=>(0,d.jsx)(n.TableRow,{children:c.map((c,e)=>(0,d.jsx)(n.TableCell,{className:"whitespace-nowrap",children:a[e]??""},`${b}-${e}`))},`${b}-${a[0]??""}`))})]})}):(0,d.jsx)(B,{text:a,className:b})}a.s(["FileBody",0,v,"FileLink",0,function({path:a,group:b,className:c,title:e,label:f,children:g}){let j=u(a),k=(0,h.useContext)(F),[l,m]=(0,r.useServerAction)(q.openFileAction);return"tab"===j.how?(0,d.jsx)("a",{href:j.href,target:"_blank",rel:"noreferrer",title:e??a,"aria-label":f,className:c,children:g}):(0,d.jsx)("button",{type:"button",disabled:m,title:e??a,"aria-label":f,className:c,onClick:()=>{"dialog"===j.how?k?k(j.path,b):window.open(i.queryKey.fileView(j.path),"_blank"):l(a)},children:g})},"FilePreview",0,function({path:a,bytes:b}){let c=(0,p.viewKindOf)(a),{content:e,failure:f,truncated:g}=y(D.has(c)?null:a);return("frame"===c||"image"===c)&&b>o.WORKSPACE_VIEW.elementMax?(0,d.jsx)(z,{path:a,bytes:b}):"frame"===c?(0,d.jsx)("iframe",{title:a,src:i.queryKey.file(a),allow:"clipboard-read; clipboard-write; fullscreen; autoplay",className:"h-full w-full bg-white"}):"image"===c?(0,d.jsx)("img",{src:i.queryKey.file(a),alt:a,className:"mx-auto max-w-full p-6"}):"audio"===c||"video"===c?"audio"===c?(0,d.jsx)("audio",{controls:!0,src:i.queryKey.file(a),className:"w-full p-6",children:(0,d.jsx)("track",{kind:"captions"})}):(0,d.jsx)("video",{controls:!0,src:i.queryKey.file(a),className:"max-w-full p-6",children:(0,d.jsx)("track",{kind:"captions"})}):f?(0,d.jsx)("p",{className:"p-5 font-mono text-xs text-destructive",children:f}):null===e?(0,d.jsxs)("div",{className:"space-y-3 p-5",children:[(0,d.jsx)(m.Skeleton,{className:"h-5 w-2/3"}),(0,d.jsx)(m.Skeleton,{className:"h-4 w-full"}),(0,d.jsx)(m.Skeleton,{className:"h-4 w-5/6"})]}):(0,d.jsx)(v,{kind:c,content:e,truncated:g})},"FileViewer",0,function({children:a}){let[b,c]=(0,h.useState)(null),e=(0,h.useCallback)((a,b=[])=>c({path:a,group:b}),[]);return(0,d.jsxs)(F,{value:e,children:[a,(0,d.jsx)(A,{path:b?.path??null,group:b?.group??[],kind:b?(0,p.viewKindOf)(b.path):"text",onPath:a=>c(b=>b&&{...b,path:a}),onClose:()=>c(null)})]})},"fileTarget",0,u,"useFileText",0,y,"useOpenFile",0,function(){let a=(0,h.useContext)(F);return(0,h.useCallback)((b,c=[])=>{let d=u(b);if("os"===d.how)return!1;if("dialog"===d.how&&a)return a(d.path,c),!0;let e="tab"===d.how?d.href:i.queryKey.fileView(d.path);return null!==window.open(e,"_blank")},[a])}]),c()}catch(a){c(a)}},!1),267514,a=>{"use strict";var b=a.i(405050);let c=(0,b.createServerReference)("7f8d58bd1288271da847b9deff4bb67295444fd389",b.callServer,void 0,b.findSourceMapURL,"openFileAction");a.s(["openFileAction",0,c])},559553,a=>{"use strict";var b=a.i(767561),c=a.i(287702);let d=a=>`text/${a}; charset=utf-8`,e={md:{kind:"markdown",mime:d("markdown")},markdown:{kind:"markdown",mime:d("markdown")},csv:{kind:"csv",mime:d("csv")},json:{kind:"json",mime:"application/json; charset=utf-8"},txt:{kind:"text",mime:d("plain")},log:{kind:"text",mime:d("plain")},html:{kind:"frame",mime:d("html")},htm:{kind:"frame",mime:d("html")},pdf:{kind:"frame",mime:"application/pdf"},png:{kind:"image",mime:"image/png"},jpg:{kind:"image",mime:"image/jpeg"},jpeg:{kind:"image",mime:"image/jpeg"},gif:{kind:"image",mime:"image/gif"},webp:{kind:"image",mime:"image/webp"},svg:{kind:"image",mime:"image/svg+xml"},mp3:{kind:"audio",mime:"audio/mpeg"},wav:{kind:"audio",mime:"audio/wav"},mp4:{kind:"video",mime:"video/mp4"},webm:{kind:"video",mime:"video/webm"},css:{kind:"none",mime:d("css")},js:{kind:"none",mime:d("javascript")},woff2:{kind:"none",mime:"font/woff2"}},f=a=>a.split(".").pop()?.toLowerCase()??"",g=Object.entries(e).filter(([,a])=>"none"!==a.kind).map(([a])=>a),h=RegExp(String.raw`(?<![\p{L}\p{N}_/:@%-])\/?(?:[\p{L}\p{N}_.@%-]+/)*[\p{L}\p{N}_@%-]+(?:\.[\p{L}\p{N}_-]+)*\.(?:${g.join("|")})\b`,"giu"),i=`${c.PATHS.workspace}/`,j=b.queryKey.file("");function k(a){let b=function(a){if(!a.startsWith(j))return a;let b=a.slice(j.length);try{return decodeURIComponent(b)}catch{return b}}(a.trim()),c=b.indexOf(i);return c>=0?b.slice(c+i.length)||null:b.startsWith("/")||/^[A-Za-z]:/.test(b)||b.split("/").includes("..")?null:b||null}let l=/^[\s`'"*_)]*(?:~|–|—|-|\.{2,}|…|to|through)[\s`'"*_(]*$/i;a.s(["opensOnFinish",0,a=>a.startsWith(`${c.PATHS.artifacts}/`)&&["md","markdown","html","htm"].includes(f(a)),"pathsIn",0,function(a){let b=a.replace(/\b[a-z][\w+.-]*:\/\/\S+/gi," "),c=new Set,d="",e=null;for(let a of b.matchAll(h)){let f=a[0],g=!f.includes("/"),h=function(a){let b=k(a);if(!b)return null;let[c,...d]=b.split("/");return d.length&&c.includes(".")?null:b}(g?d+f:f);if(g||(d=h?.slice(0,h.lastIndexOf("/")+1)??""),h){if(e&&l.test(b.slice(e.end,a.index)))for(let a of function(a,b){let c=/^(.*?)(\d+)(\D*)$/.exec(a),d=/^(.*?)(\d+)(\D*)$/.exec(b);if(!c||!d||c[1]!==d[1]||c[3]!==d[3])return[];let e=Number(c[2]),f=Number(d[2]);if(!(f-e>1)||f-e>12)return[];let g=c[2].startsWith("0")?c[2].length:0;return Array.from({length:f-e-1},(a,b)=>`${c[1]}${String(e+b+1).padStart(g,"0")}${c[3]}`)}(e.rel,h))c.add(a);c.add(h),e={rel:h,end:a.index+f.length}}}return[...c].slice(0,12)},"viewKindOf",0,a=>e[f(a)]?.kind??"none","workspaceRelative",0,k])},168370,a=>{"use strict";var b=a.i(164831);let c={name:"external-link",size:24,node:[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]]};c.node;let d=(0,b.default)(c);a.s(["ExternalLink",0,d],168370)}];
1
+ module.exports=[588237,a=>{"use strict";var b=a.i(187924),c=a.i(497895);a.s(["Table",0,function({className:a,...d}){return(0,b.jsx)("div",{"data-slot":"table-container",className:"relative w-full overflow-x-auto",children:(0,b.jsx)("table",{"data-slot":"table",className:(0,c.cn)("w-full caption-bottom text-sm",a),...d})})},"TableBody",0,function({className:a,...d}){return(0,b.jsx)("tbody",{"data-slot":"table-body",className:(0,c.cn)("[&_tr:last-child]:border-0",a),...d})},"TableCell",0,function({className:a,...d}){return(0,b.jsx)("td",{"data-slot":"table-cell",className:(0,c.cn)("p-2 align-middle [&:has([role=checkbox])]:pr-0",a),...d})},"TableHead",0,function({className:a,...d}){return(0,b.jsx)("th",{"data-slot":"table-head",className:(0,c.cn)("h-9 px-2 text-left align-middle font-mono text-[11px] font-normal tracking-[0.1em] whitespace-nowrap text-muted-foreground uppercase [&:has([role=checkbox])]:pr-0",a),...d})},"TableHeader",0,function({className:a,...d}){return(0,b.jsx)("thead",{"data-slot":"table-header",className:(0,c.cn)("[&_tr]:border-b",a),...d})},"TableRow",0,function({className:a,...d}){return(0,b.jsx)("tr",{"data-slot":"table-row",className:(0,c.cn)("border-b border-border/60 transition-colors data-[state=selected]:bg-muted hover:bg-muted/40",a),...d})}])},369768,a=>a.a(async(b,c)=>{try{var d=a.i(187924),e=a.i(707963),f=a.i(141146),g=a.i(168370),h=a.i(572131),i=a.i(767561),j=a.i(340695),k=a.i(965733),l=a.i(846991),m=a.i(950463),n=a.i(588237),o=a.i(287702),p=a.i(559553),q=a.i(977088),r=a.i(313237),s=a.i(497895),t=b([l]);[l]=t.then?(await t)():t;let D=new Set(["frame","image","audio","video"]),E=new Set(["image"]);function u(a){let b=(0,p.workspaceRelative)(a);if(!b)return{how:"os"};let c=(0,p.viewKindOf)(b);return E.has(c)?{how:"dialog",path:b}:D.has(c)?{how:"tab",path:b,href:i.queryKey.fileView(b)}:"none"===c?{how:"os"}:{how:"dialog",path:b}}let F=(0,h.createContext)(null),G={dialog:{prose:"px-5 py-4",block:"px-4 py-3"},page:{prose:"px-5 py-6 sm:px-8",block:"px-5 py-5"},inline:{prose:"pb-3",block:"pb-3"}};function v({kind:a,content:b,truncated:c,where:e="dialog"}){return(0,d.jsxs)(d.Fragment,{children:[null!=c&&(0,d.jsx)(w,{of:c}),(0,d.jsx)(x,{kind:a,content:b,where:e})]})}function w({of:a}){return(0,d.jsxs)("p",{className:"border-b border-border/60 px-5 py-2.5 font-mono text-[11px] text-muted-foreground",children:[`Showing the first ${(0,s.formatBytes)(o.WORKSPACE_VIEW.textMax)} of ${(0,s.formatBytes)(a)}. `,"Open the file itself for the rest."]})}function x({kind:a,content:b,where:c}){let e=G[c];switch(a){case"markdown":return(0,d.jsx)("div",{className:(0,s.cn)("min-w-0 text-sm leading-relaxed",e.prose),children:(0,d.jsx)(l.Markdown,{children:b})});case"csv":return(0,d.jsx)(C,{content:b,className:e.block});case"json":return(0,d.jsx)(B,{text:function(a){try{return JSON.stringify(JSON.parse(a),null,2)}catch{return a}}(b),className:e.block});default:return(0,d.jsx)(B,{text:b,className:e.block})}}function y(a){let[b,c]=(0,h.useState)(null),[d,e]=(0,h.useState)(null),[f,g]=(0,h.useState)(null);return(0,h.useEffect)(()=>{if(!a)return;c(null),e(null),g(null);let b=!1;return fetch(i.queryKey.file(a),{headers:{range:`bytes=0-${o.WORKSPACE_VIEW.textMax-1}`}}).then(async a=>{if(!a.ok)throw Error(await a.text());return{text:await a.text(),of:function(a){let b=a.headers.get("content-range")?.match(/^bytes \d+-(\d+)\/(\d+)$/);if(!b)return null;let[,c,d]=b.map(Number);return c+1<d?d:null}(a)}}).then(({text:a,of:d})=>{if(b)return;let e=null===d?a:a.slice(0,a.lastIndexOf("\n")+1||void 0);c(e),g(d)}).catch(a=>!b&&e((0,s.errorToString)(a))),()=>{b=!0}},[a]),{content:b,failure:d,truncated:f}}function z({path:a,bytes:b}){let[c,e]=(0,r.useServerAction)(q.openFileAction);return(0,d.jsxs)("div",{className:"space-y-4 p-8",children:[(0,d.jsxs)("p",{className:"max-w-lg text-sm leading-relaxed text-muted-foreground",children:[`This file is ${(0,s.formatBytes)(b)} — too big to draw here without `,"taking the window with it. Open it where it is instead."]}),(0,d.jsx)(j.Button,{variant:"outline",loading:e,onClick:()=>c(a),children:"Reveal in the file manager"})]})}function A({path:a,group:b=[],kind:c,onPath:h,onClose:l}){let n="image"===c,{content:o,failure:p,truncated:q}=y(n?null:a),r=a?.split("/").pop()??"",t=a?b.indexOf(a):-1,u=a=>{!(t<0)&&h&&h(b[(t+a+b.length)%b.length])};return(0,d.jsx)(k.Dialog,{open:null!==a,onOpenChange:a=>!a&&l(),children:(0,d.jsxs)(k.DialogContent,{onKeyDown:a=>{"ArrowLeft"===a.key&&u(-1),"ArrowRight"===a.key&&u(1)},className:"flex max-h-[calc(100vh-3rem)] flex-col gap-0 overflow-hidden p-0 sm:max-w-4xl",children:[(0,d.jsx)(k.DialogTitle,{className:"sr-only",children:r}),(0,d.jsxs)("div",{className:"flex shrink-0 items-center gap-1 border-b border-border/60 py-2 pr-12 pl-4",children:[(0,d.jsx)("span",{className:"min-w-0 flex-1 truncate font-mono text-[12px]",children:a}),t>=0&&b.length>1&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("span",{className:"shrink-0 font-mono text-[11px] text-muted-foreground tabular-nums",children:[t+1," / ",b.length]}),(0,d.jsx)(j.Button,{variant:"ghost",size:"icon-sm","aria-label":"Previous image",onClick:()=>u(-1),children:(0,d.jsx)(e.ChevronLeft,{})}),(0,d.jsx)(j.Button,{variant:"ghost",size:"icon-sm","aria-label":"Next image",onClick:()=>u(1),children:(0,d.jsx)(f.ChevronRight,{})})]}),n&&a&&(0,d.jsx)(j.Button,{variant:"ghost",size:"icon-sm","aria-label":"Open in a new tab",render:(0,d.jsx)("a",{href:i.queryKey.fileView(a),target:"_blank",rel:"noreferrer"}),children:(0,d.jsx)(g.ExternalLink,{})})]}),(0,d.jsx)("div",{className:"min-h-0 flex-1 overflow-auto",children:n&&a?(0,d.jsx)("img",{src:i.queryKey.file(a),alt:r,className:"mx-auto max-h-[calc(100vh-11rem)] object-contain p-4"}):p?(0,d.jsx)("p",{className:"p-5 font-mono text-xs text-destructive",children:p}):null===o?(0,d.jsxs)("div",{className:"space-y-3 p-5",children:[(0,d.jsx)(m.Skeleton,{className:"h-5 w-2/3"}),(0,d.jsx)(m.Skeleton,{className:"h-4 w-full"}),(0,d.jsx)(m.Skeleton,{className:"h-4 w-5/6"})]}):(0,d.jsx)(v,{kind:c,content:o,truncated:q})}),n&&b.length>1&&(0,d.jsx)("div",{className:"flex shrink-0 justify-center gap-1.5 border-t border-border/60 p-2.5",children:b.map(b=>(0,d.jsx)("button",{type:"button","aria-label":b.split("/").pop(),onClick:()=>h?.(b),className:(0,s.cn)("size-11 shrink-0 overflow-hidden rounded-md outline-none focus-visible:ring-3 focus-visible:ring-ring/50",b===a?"ring-2 ring-foreground":"opacity-55"),children:(0,d.jsx)("img",{src:i.queryKey.file(b),alt:"",loading:"lazy",className:"size-full bg-muted object-cover"})},b))})]})})}function B({text:a,className:b}){return(0,d.jsx)("pre",{className:(0,s.cn)("overflow-x-auto font-mono text-[12px] leading-relaxed whitespace-pre-wrap text-foreground/90",b),children:a})}function C({content:a,className:b}){let[c,...e]=(0,h.useMemo)(()=>(function(a){let b=[],c=[],d="",e=!1;for(let f=0;f<a.length;f++){let g=a[f];e?'"'===g&&'"'===a[f+1]?(d+='"',f++):'"'===g?e=!1:d+=g:'"'===g?e=!0:","===g?(c.push(d),d=""):"\n"===g||"\r"===g?("\r"===g&&"\n"===a[f+1]&&f++,c.push(d),b.push(c),c=[],d=""):d+=g}return(d.length||c.length)&&(c.push(d),b.push(c)),b.filter(a=>a.some(a=>a.trim()))})(a),[a]),f=(0,h.useMemo)(()=>(c??[]).map((a,b)=>e.some(a=>""!==(a[b]??"").trim())&&e.every(a=>{let c=(a[b]??"").trim();return""===c||/^[+-]?[\d,]*\.?\d+%?$/.test(c)})),[c,e]);return c?(0,d.jsx)("div",{className:(0,s.cn)("overflow-x-auto",b),children:(0,d.jsxs)(n.Table,{children:[(0,d.jsx)(n.TableHeader,{children:(0,d.jsx)(n.TableRow,{children:c.map((a,b)=>(0,d.jsx)(n.TableHead,{className:(0,s.cn)("whitespace-nowrap",f[b]&&"text-right"),children:a},`${b}-${a}`))})}),(0,d.jsx)(n.TableBody,{children:e.map((a,b)=>(0,d.jsx)(n.TableRow,{children:c.map((c,e)=>(0,d.jsx)(n.TableCell,{className:(0,s.cn)("whitespace-nowrap",f[e]&&"text-right tabular-nums"),children:a[e]??""},`${b}-${e}`))},`${b}-${a[0]??""}`))})]})}):(0,d.jsx)(B,{text:a,className:b})}a.s(["FileBody",0,v,"FileLink",0,function({path:a,group:b,className:c,title:e,label:f,children:g}){let j=u(a),k=(0,h.useContext)(F),[l,m]=(0,r.useServerAction)(q.openFileAction);return"tab"===j.how?(0,d.jsx)("a",{href:j.href,target:"_blank",rel:"noreferrer",title:e??a,"aria-label":f,className:c,children:g}):(0,d.jsx)("button",{type:"button",disabled:m,title:e??a,"aria-label":f,className:c,onClick:()=>{"dialog"===j.how?k?k(j.path,b):window.open(i.queryKey.fileView(j.path),"_blank"):l(a)},children:g})},"FilePreview",0,function({path:a,bytes:b}){let c=(0,p.viewKindOf)(a),{content:e,failure:f,truncated:g}=y(D.has(c)?null:a);return("frame"===c||"image"===c)&&b>o.WORKSPACE_VIEW.elementMax?(0,d.jsx)(z,{path:a,bytes:b}):"frame"===c?(0,d.jsx)("iframe",{title:a,src:i.queryKey.file(a),allow:"clipboard-read; clipboard-write; fullscreen; autoplay",className:"h-full w-full bg-white"}):"image"===c?(0,d.jsx)("img",{src:i.queryKey.file(a),alt:a,className:"mx-auto max-w-full p-6"}):"audio"===c||"video"===c?"audio"===c?(0,d.jsx)("audio",{controls:!0,src:i.queryKey.file(a),className:"w-full p-6",children:(0,d.jsx)("track",{kind:"captions"})}):(0,d.jsx)("video",{controls:!0,src:i.queryKey.file(a),className:"max-w-full p-6",children:(0,d.jsx)("track",{kind:"captions"})}):f?(0,d.jsx)("p",{className:"p-5 font-mono text-xs text-destructive",children:f}):null===e?(0,d.jsxs)("div",{className:"space-y-3 p-5",children:[(0,d.jsx)(m.Skeleton,{className:"h-5 w-2/3"}),(0,d.jsx)(m.Skeleton,{className:"h-4 w-full"}),(0,d.jsx)(m.Skeleton,{className:"h-4 w-5/6"})]}):(0,d.jsx)(v,{kind:c,content:e,truncated:g})},"FileViewer",0,function({children:a}){let[b,c]=(0,h.useState)(null),e=(0,h.useCallback)((a,b=[])=>c({path:a,group:b}),[]);return(0,d.jsxs)(F,{value:e,children:[a,(0,d.jsx)(A,{path:b?.path??null,group:b?.group??[],kind:b?(0,p.viewKindOf)(b.path):"text",onPath:a=>c(b=>b&&{...b,path:a}),onClose:()=>c(null)})]})},"fileTarget",0,u,"useFileText",0,y,"useOpenFile",0,function(){let a=(0,h.useContext)(F);return(0,h.useCallback)((b,c=[])=>{let d=u(b);if("os"===d.how)return!1;if("dialog"===d.how&&a)return a(d.path,c),!0;let e="tab"===d.how?d.href:i.queryKey.fileView(d.path);return null!==window.open(e,"_blank")},[a])}]),c()}catch(a){c(a)}},!1),977088,a=>{"use strict";var b=a.i(405050);let c=(0,b.createServerReference)("7fd5c07484b3d148c141bc5aec2bb9ec06da1f10d5",b.callServer,void 0,b.findSourceMapURL,"openFileAction");a.s(["openFileAction",0,c])},559553,a=>{"use strict";var b=a.i(767561),c=a.i(287702);let d=a=>`text/${a}; charset=utf-8`,e={md:{kind:"markdown",mime:d("markdown")},markdown:{kind:"markdown",mime:d("markdown")},csv:{kind:"csv",mime:d("csv")},json:{kind:"json",mime:"application/json; charset=utf-8"},txt:{kind:"text",mime:d("plain")},log:{kind:"text",mime:d("plain")},html:{kind:"frame",mime:d("html")},htm:{kind:"frame",mime:d("html")},pdf:{kind:"frame",mime:"application/pdf"},png:{kind:"image",mime:"image/png"},jpg:{kind:"image",mime:"image/jpeg"},jpeg:{kind:"image",mime:"image/jpeg"},gif:{kind:"image",mime:"image/gif"},webp:{kind:"image",mime:"image/webp"},svg:{kind:"image",mime:"image/svg+xml"},mp3:{kind:"audio",mime:"audio/mpeg"},wav:{kind:"audio",mime:"audio/wav"},mp4:{kind:"video",mime:"video/mp4"},webm:{kind:"video",mime:"video/webm"},css:{kind:"none",mime:d("css")},js:{kind:"none",mime:d("javascript")},woff2:{kind:"none",mime:"font/woff2"}},f=a=>a.split(".").pop()?.toLowerCase()??"",g=Object.entries(e).filter(([,a])=>"none"!==a.kind).map(([a])=>a),h=RegExp(String.raw`(?<![\p{L}\p{N}_/:@%-])\/?(?:[\p{L}\p{N}_.@%-]+/)*[\p{L}\p{N}_@%-]+(?:\.[\p{L}\p{N}_-]+)*\.(?:${g.join("|")})\b`,"giu"),i=`${c.PATHS.workspace}/`,j=b.queryKey.file("");function k(a){let b=function(a){if(!a.startsWith(j))return a;let b=a.slice(j.length);try{return decodeURIComponent(b)}catch{return b}}(a.trim()),c=b.indexOf(i);return c>=0?b.slice(c+i.length)||null:b.startsWith("/")||/^[A-Za-z]:/.test(b)||b.split("/").includes("..")?null:b||null}let l=/^[\s`'"*_)]*(?:~|–|—|-|\.{2,}|…|to|through)[\s`'"*_(]*$/i;a.s(["opensOnFinish",0,a=>a.startsWith(`${c.PATHS.artifacts}/`)&&["md","markdown","html","htm"].includes(f(a)),"pathsIn",0,function(a){let b=a.replace(/\b[a-z][\w+.-]*:\/\/\S+/gi," "),c=new Set,d="",e=null;for(let a of b.matchAll(h)){let f=a[0],g=!f.includes("/"),h=function(a){let b=k(a);if(!b)return null;let[c,...d]=b.split("/");return d.length&&c.includes(".")?null:b}(g?d+f:f);if(g||(d=h?.slice(0,h.lastIndexOf("/")+1)??""),h){if(e&&l.test(b.slice(e.end,a.index)))for(let a of function(a,b){let c=/^(.*?)(\d+)(\D*)$/.exec(a),d=/^(.*?)(\d+)(\D*)$/.exec(b);if(!c||!d||c[1]!==d[1]||c[3]!==d[3])return[];let e=Number(c[2]),f=Number(d[2]);if(!(f-e>1)||f-e>12)return[];let g=c[2].startsWith("0")?c[2].length:0;return Array.from({length:f-e-1},(a,b)=>`${c[1]}${String(e+b+1).padStart(g,"0")}${c[3]}`)}(e.rel,h))c.add(a);c.add(h),e={rel:h,end:a.index+f.length}}}return[...c].slice(0,12)},"viewKindOf",0,a=>e[f(a)]?.kind??"none","workspaceRelative",0,k])}];
2
2
 
3
- //# sourceMappingURL=_1kd843u._.js.map
3
+ //# sourceMappingURL=_1kbk28w._.js.map
@@ -0,0 +1,3 @@
1
+ module.exports=[287702,a=>{"use strict";process.env.THURSDAY_APP_DIR?.trim()||process.cwd(),process.env.THURSDAY_HOME?.trim()||process.cwd(),process.env.THURSDAY_URL?.trim()||process.env.PORT?.trim();let b=".ai-workspace",c={workspace:b,artifacts:"artifacts",projects:"projects",scratch:"scratch",bots:"bots",output:".output",signIns:".sign-ins",skills:{default:"skills",custom:`${b}/.agents/skills`,own:".agents/skills",seeds:"seed-skills"}};a.s(["APP_NAME",0,"Thursday","ARTIFACT_VIEW",0,{rows:200,setFiles:120},"ASCII_FACE",0,{charset:"emojiOnly",fontSize:{default:8,min:4,max:16},density:{default:1.4,min:.6,max:2}},"BOT_RUN",0,{steps:100,compactAt:5e5,compactHeadroom:.8,summaryWords:{min:600,max:3e3,perTokens:200},participants:12,concurrent:4,turns:120,queuedMessages:200,silenceMs:3e5,overflowShrink:.6,retryMs:1e4,compactFiles:40},"BROWSER_SKILL",0,"browser","CALL_BACK",0,{ringMs:3e4},"CALL_END",0,{quietMs:600,unsaidMs:2e3,maxMs:8e3},"CALL_ENDED_MS",0,12e3,"CALL_HISTORY_PAGE",0,10,"CALL_IDLE",0,{hangUpMs:2e4,warnMs:1e4},"CALL_LINE",0,{dwellMs:2e3},"CALL_RELAY",0,{quietMs:7e3,perTurn:3,readMs:15e3,chars:600},"FILE_THUMB",0,{pageWidth:1024,textWidth:512,textBytes:4096,pages:2},"FINISHED_NOTICE",0,{rows:5,words:240},"GIVEN_FILES",0,{dir:"inbox",maxBytes:0x1900000,perMessage:8},"INBOX_FINISHED",0,5,"IS_DEV",0,!1,"LIVE_CALL",0,{startupMs:3e4,closeMs:15e3,transcriptGapMs:1500,transcriptSaveMs:500,appendMs:15e3,backendOutputTokens:4096,reasoningCheckMs:5e3,keyCheckMs:5e3},"MEMORY_LIMITS",0,{facts:400,factsPerNote:50,carried:20,expanded:10},"PAGE_SIZE",0,50,"PATHS",0,c,"PROMPT_CROWDED",0,{bots:10,skills:20},"ROUTINE",0,{tickMs:3e4,max:12,minHours:1,runsShown:5},"STUDIO_SERVER",0,"studio","TEXT_CALL",0,{maxSteps:12,model:"text"},"WORKSPACE_VIEW",0,{rows:200,textMax:524288,elementMax:0x3200000}])},38793,a=>a.a(async(b,c)=>{try{var d=a.i(187924),e=a.i(998697),f=a.i(840260),g=a.i(930345),h=a.i(707938),i=a.i(576509),j=a.i(483138),k=a.i(904340),l=a.i(652392),m=a.i(649268),n=a.i(572131),o=a.i(767561),p=a.i(846991),q=a.i(287702),r=a.i(559553),s=a.i(497895),t=b([p]);[p]=t.then?(await t)():t;let y={markdown:j.FileText,csv:i.FileSpreadsheet,json:h.FileJson,text:k.FileType,image:g.FileImage,audio:m.Music,video:l.FileVideo};function u(a){let b=(0,r.viewKindOf)(a);return"frame"===b?a.toLowerCase().endsWith(".pdf")?j.FileText:f.FileCode:y[b]??e.File}let z=new Set(["markdown","text","csv","json"]);function v(a,b){let c=(0,r.viewKindOf)(a);return void 0!==b&&b>q.WORKSPACE_VIEW.elementMax?"glyph":"image"===c?"image":"frame"===c&&/\.html?$/i.test(a)?"page":z.has(c)?"text":"glyph"}function w({width:a,className:b,children:c}){let e=(0,n.useRef)(null),[f,g]=(0,n.useState)(null);(0,n.useLayoutEffect)(()=>{let a=e.current;if(!a)return;let b=()=>g({w:a.clientWidth,h:a.clientHeight});b();let c=new ResizeObserver(b);return c.observe(a),()=>c.disconnect()},[]);let h=f?f.w/a:0;return(0,d.jsx)("span",{ref:e,"aria-hidden":!0,className:(0,s.cn)("relative block overflow-hidden",b),children:h>0&&f&&(0,d.jsx)("span",{className:"absolute top-0 left-0 block origin-top-left",style:{width:a,transform:`scale(${h})`},children:c(Math.ceil(f.h/h))})})}function x({path:a,onMissing:b}){let[c,e]=(0,n.useState)(null);return((0,n.useEffect)(()=>{let c=new AbortController;return fetch(o.queryKey.file(a),{headers:{range:`bytes=0-${q.FILE_THUMB.textBytes-1}`},signal:c.signal}).then(a=>a.ok?a.text():Promise.reject()).then(a=>e(a.replace(/\uFFFD+$/,""))).catch(()=>{c.signal.aborted||b()}),()=>c.abort()},[a,b]),null===c)?null:"markdown"===(0,r.viewKindOf)(a)?(0,d.jsx)("div",{className:"pointer-events-none px-9 py-8 text-[15px] text-foreground",children:(0,d.jsx)(p.Markdown,{controls:!1,components:{a:"span"},children:c})}):(0,d.jsx)("pre",{className:"pointer-events-none px-7 py-6 font-mono text-[13px] leading-relaxed whitespace-pre-wrap text-foreground",children:c})}a.s(["FileThumb",0,function({path:a,bytes:b,glyph:c="size-4",className:e}){let[f,g]=(0,n.useState)(!1),h=(0,n.useCallback)(()=>g(!0),[]),i=f?"glyph":v(a,b);if("image"===i)return(0,d.jsx)("img",{src:o.queryKey.file(a),alt:"",loading:"lazy",decoding:"async",onError:()=>g(!0),className:(0,s.cn)("block bg-muted object-cover dark:brightness-[0.82]",e)});if("page"===i)return(0,d.jsx)(w,{width:q.FILE_THUMB.pageWidth,className:(0,s.cn)("bg-white dark:brightness-[0.82]",e),children:b=>(0,d.jsx)("iframe",{title:"",src:o.queryKey.file(a),sandbox:"allow-scripts",loading:"lazy",tabIndex:-1,"aria-hidden":!0,scrolling:"no",style:{width:q.FILE_THUMB.pageWidth,height:b},className:"pointer-events-none block border-0 bg-white"})});if("text"===i)return(0,d.jsx)(w,{width:q.FILE_THUMB.textWidth,className:(0,s.cn)("bg-background dark:brightness-[0.82]",e),children:()=>(0,d.jsx)(x,{path:a,onMissing:h})});let j=u(a);return(0,d.jsx)("span",{className:(0,s.cn)("grid place-items-center bg-muted text-muted-foreground",e),children:(0,d.jsx)(j,{className:c})})},"faceOf",0,v,"fileIcon",0,u]),c()}catch(a){c(a)}},!1),199968,a=>{"use strict";var b=a.i(164831);let c={name:"chevron-right",size:24,node:[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]};c.node;let d=(0,b.default)(c);a.s(["default",0,d])},141146,a=>{"use strict";var b=a.i(199968);a.s(["ChevronRight",()=>b.default])},168370,a=>{"use strict";var b=a.i(164831);let c={name:"external-link",size:24,node:[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]]};c.node;let d=(0,b.default)(c);a.s(["ExternalLink",0,d],168370)},707938,a=>{"use strict";var b=a.i(164831);let c={name:"file-braces",size:24,node:[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 12a1 1 0 0 0-1 1v1a1 1 0 0 1-1 1 1 1 0 0 1 1 1v1a1 1 0 0 0 1 1",key:"1oajmo"}],["path",{d:"M14 18a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1 1 1 0 0 1-1-1v-1a1 1 0 0 0-1-1",key:"mpwhp6"}]],aliases:["file-json"]};c.node;let d=(0,b.default)(c);a.s(["FileJson",0,d],707938)},840260,a=>{"use strict";var b=a.i(164831);let c={name:"file-code",size:24,node:[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 12.5 8 15l2 2.5",key:"1tg20x"}],["path",{d:"m14 12.5 2 2.5-2 2.5",key:"yinavb"}]]};c.node;let d=(0,b.default)(c);a.s(["FileCode",0,d],840260)},930345,a=>{"use strict";var b=a.i(164831);let c={name:"file-image",size:24,node:[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["circle",{cx:"10",cy:"12",r:"2",key:"737tya"}],["path",{d:"m20 17-1.296-1.296a2.41 2.41 0 0 0-3.408 0L9 22",key:"wt3hpn"}]]};c.node;let d=(0,b.default)(c);a.s(["FileImage",0,d],930345)},576509,a=>{"use strict";var b=a.i(164831);let c={name:"file-spreadsheet",size:24,node:[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M8 13h2",key:"yr2amv"}],["path",{d:"M14 13h2",key:"un5t4a"}],["path",{d:"M8 17h2",key:"2yhykz"}],["path",{d:"M14 17h2",key:"10kma7"}]]};c.node;let d=(0,b.default)(c);a.s(["FileSpreadsheet",0,d],576509)},483138,a=>{"use strict";var b=a.i(164831);let c={name:"file-text",size:24,node:[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]]};c.node;let d=(0,b.default)(c);a.s(["FileText",0,d],483138)},904340,a=>{"use strict";var b=a.i(164831);let c={name:"file-type",size:24,node:[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M11 18h2",key:"12mj7e"}],["path",{d:"M12 12v6",key:"3ahymv"}],["path",{d:"M9 13v-.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 .5.5v.5",key:"qbrxap"}]]};c.node;let d=(0,b.default)(c);a.s(["FileType",0,d],904340)},652392,a=>{"use strict";var b=a.i(164831);let c={name:"file-play",size:24,node:[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M15.033 13.44a.647.647 0 0 1 0 1.12l-4.065 2.352a.645.645 0 0 1-.968-.56v-4.704a.645.645 0 0 1 .967-.56z",key:"1tzo1f"}]],aliases:["file-video"]};c.node;let d=(0,b.default)(c);a.s(["FileVideo",0,d],652392)},998697,a=>{"use strict";var b=a.i(164831);let c={name:"file",size:24,node:[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}]]};c.node;let d=(0,b.default)(c);a.s(["File",0,d],998697)},649268,a=>{"use strict";var b=a.i(164831);let c={name:"music",size:24,node:[["path",{d:"M9 18V5l12-2v13",key:"1jmyc2"}],["circle",{cx:"6",cy:"18",r:"3",key:"fqmcym"}],["circle",{cx:"18",cy:"16",r:"3",key:"1hluhg"}]]};c.node;let d=(0,b.default)(c);a.s(["Music",0,d],649268)},53467,a=>{"use strict";var b=a.i(261234),c=a.i(539110);a.i(975930);var d=a.i(671731),e=(0,c.__name)(a=>{let{securityLevel:c}=(0,b.getConfig2)(),e=(0,d.select)("body");if("sandbox"===c){let b=(0,d.select)(`#i${a}`),c=b.node()?.contentDocument??document;e=(0,d.select)(c.body)}return e.select(`#${a}`)},"selectSvgElement");a.s(["selectSvgElement",0,e])},882458,a=>{"use strict";var b=a.i(416635),c=a.i(43429),d=a.i(428212),e=a.i(916573),f=a.i(887370),g=a.i(261234),h=a.i(875117),i=a.i(539110),j={common:g.common_default,getConfig:g.getConfig,insertCluster:b.insertCluster,insertEdge:c.insertEdge,insertEdgeLabel:c.insertEdgeLabel,insertMarkers:c.markers_default,insertNode:d.insertNode,interpolateToCurve:f.interpolateToCurve,labelHelper:e.labelHelper,log:h.log,positionEdgeLabel:c.positionEdgeLabel},k={},l=(0,i.__name)(a=>{for(let b of a)k[b.name]=b},"registerLayoutLoaders");(0,i.__name)(()=>{l([{name:"dagre",loader:(0,i.__name)(async()=>await a.A(390118),"loader")},{name:"swimlane",loader:(0,i.__name)(async()=>await a.A(860094),"loader")},{name:"cose-bilkent",loader:(0,i.__name)(async()=>await a.A(989520),"loader")}])},"registerDefaultLayoutLoaders")();var m=(0,i.__name)(async(a,b)=>{if(!(a.layoutAlgorithm in k))throw Error(`Unknown layout algorithm: ${a.layoutAlgorithm}`);if(a.diagramId)for(let b of a.nodes){let c=b.domId||b.id;b.domId=`${a.diagramId}-${c}`}let c=k[a.layoutAlgorithm],d=await c.loader(),{theme:e,themeVariables:f}=a.config,{useGradient:g,gradientStart:h,gradientStop:i}=f,l=b.attr("id");if(b.append("defs").append("filter").attr("id",`${l}-drop-shadow`).attr("height","130%").attr("width","130%").append("feDropShadow").attr("dx","4").attr("dy","4").attr("stdDeviation",0).attr("flood-opacity","0.06").attr("flood-color",`${e?.includes("dark")?"#FFFFFF":"#000000"}`),b.append("defs").append("filter").attr("id",`${l}-drop-shadow-small`).attr("height","150%").attr("width","150%").append("feDropShadow").attr("dx","2").attr("dy","2").attr("stdDeviation",0).attr("flood-opacity","0.06").attr("flood-color",`${e?.includes("dark")?"#FFFFFF":"#000000"}`),g){let a=b.append("linearGradient").attr("id",b.attr("id")+"-gradient").attr("gradientUnits","objectBoundingBox").attr("x1","0%").attr("y1","0%").attr("x2","100%").attr("y2","0%");a.append("svg:stop").attr("offset","0%").attr("stop-color",h).attr("stop-opacity",1),a.append("svg:stop").attr("offset","100%").attr("stop-color",i).attr("stop-opacity",1)}return d.render(a,b,j,{algorithm:c.algorithm})},"render"),n=(0,i.__name)((a="",{fallback:b="dagre"}={})=>{if(a in k)return a;if(b in k)return h.log.warn(`Layout algorithm ${a} is not registered. Using ${b} as fallback.`),b;throw Error(`Both layout algorithms ${a} and ${b} are not registered.`)},"getRegisteredLayoutAlgorithm");a.s(["getRegisteredLayoutAlgorithm",0,n,"registerLayoutLoaders",0,l,"render",0,m])}];
2
+
3
+ //# sourceMappingURL=_1kj_r9v._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[249049,a=>{"use strict";var b=a.i(187924),c=a.i(752562),d=a.i(474215),e=a.i(572131),f=a.i(767561),g=a.i(340695),h=a.i(205522),i=a.i(379630),j=a.i(96340),k=a.i(313237),l=a.i(759497),m=a.i(497895),n=a.i(440419),o=a.i(478978);function p({provider:a,saved:c,autoFocus:d,dense:e,plain:f,value:g,ready:h,saving:j,onValue:k,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)(i.ProviderIcon,{provider:a.id,className:"size-4 shrink-0"}),(0,b.jsx)("span",{className:(0,m.cn)("font-mono",e?"text-[11px]":"text-[12.5px]"),children:a.label})]}),(0,b.jsx)(q,{provider:a,saved:c,autoFocus:d,dense:e,mark:f,value:g,ready:h,saving:j,onValue:k,onSubmit:l})]})}function q({provider:a,saved:d,autoFocus:e,dense:f,mark:j,value:k,ready:l,saving:n,onValue:o,onSubmit:p}){let r=k.trim().startsWith("xai-")||k.trim().startsWith("sk-ant-");return(0,b.jsxs)("form",{onSubmit:a=>{a.preventDefault(),p()},className:(0,m.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",d||l?"border-foreground bg-transparent":"border-border"),children:[j&&(0,b.jsx)(i.ProviderIcon,{provider:a.id,className:"size-4 shrink-0 text-muted-foreground"}),(0,b.jsx)(h.Input,{autoFocus:e,type:"password","aria-label":"OpenAI API key",autoComplete:"off",value:k,spellCheck:!1,placeholder:d?"Replace it":"sk-…",onChange:a=>o(a.target.value),className:(0,m.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]")}),k?(0,b.jsx)(g.Button,{type:"submit",size:"sm",variant:r?"outline":"default",loading:n,disabled:!l,className:(0,m.cn)("shrink-0",f?"h-7 px-3":"h-9 px-4"),children:r?`Not ${a.label}?`:"Save"}):d&&(0,b.jsx)("span",{className:(0,m.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)(c.Check,{className:f?"size-3":"size-4"})})]})}a.s(["KEY_MIN",0,8,"KeyInput",0,q,"VoiceKeys",0,function({ref:a,autoFocus:c,dense:h=!1,plain:i=!1,onCancel:q,onSaved:r,className:s}){let{data:t}=(0,l.useServerRoute)(f.queryKey.config),[u,v]=(0,e.useState)({}),[w,x]=(0,e.useState)(null),[y,z]=(0,e.useState)(null),[A]=(0,k.useServerAction)(n.setConfigAction,{errorMessage:!1,onError:a=>z(a??"That key was not saved."),onOk:()=>{(0,l.revalidate)(f.queryKey.config),(0,l.revalidate)(f.queryKey.llmModel)}}),B=a=>(u[a]?.trim().length??0)>=8,C=async a=>{let b=a.apiKeyName;if(!B(b)||w)return!1;z(null),x(b);try{return await A(b,u[b]),v(a=>({...a,[b]:""})),r?.(a.id),!0}catch{return!1}finally{x(null)}};return(0,e.useImperativeHandle)(a,()=>({pending:()=>B(j.LIVE_PROVIDER.apiKeyName),flush:async()=>!B(j.LIVE_PROVIDER.apiKeyName)||C(j.LIVE_PROVIDER)})),(0,b.jsxs)("div",{className:(0,m.cn)("w-full",h?"space-y-2":"space-y-4",s),children:[h&&!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"}),q&&(0,b.jsx)(g.Button,{type:"button",size:"icon",variant:"ghost","aria-label":"Not now",onClick:q,className:"-my-1 size-6",children:(0,b.jsx)(d.X,{className:"size-3.5"})})]}),(0,b.jsx)(p,{provider:j.LIVE_PROVIDER,saved:(0,o.isConfigSet)(t,j.LIVE_PROVIDER.apiKeyName),autoFocus:c,dense:h,plain:i,value:u[j.LIVE_PROVIDER.apiKeyName]??"",ready:B(j.LIVE_PROVIDER.apiKeyName),saving:w===j.LIVE_PROVIDER.apiKeyName,onValue:a=>{z(null),v(b=>({...b,[j.LIVE_PROVIDER.apiKeyName]:a}))},onSubmit:()=>void C(j.LIVE_PROVIDER)}),y&&(0,b.jsx)("p",{className:(0,m.cn)("px-0.5 leading-5 break-words",h?"text-xs":"text-center text-[13px]",m.WAITING_INK),children:y}),!i&&(0,b.jsx)("p",{className:(0,m.cn)("px-0.5 font-mono text-muted-foreground",h?"text-[11px]":"pt-1 text-center text-[12.5px]"),children:h?"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."})]})}])},445432,a=>{"use strict";var b=a.i(187924),c=a.i(572131),d=a.i(287702),e=a.i(483253),f=a.i(647509);let g=[235,235,235];function h(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 i=h("ERROR");function j(a,b,c,d,e){return a+(b-a)*Math.min(1,e/(b>a?c:d))}function k(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}function l(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=h(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=h(b.slice(0,e).join("")),g=h(b.slice(e+1).join(""));if(!f[0].length||!g[0].length)return null;let i=Math.max(-1,...f.flat())+1,j=Math.max(f[0].length,g[0].length),k=(a,b)=>{let c=Math.floor((j-a.length)/2);return[...Array(c).fill(-1),...a.map(a=>a<0?a:a+b),...Array(j-a.length-c).fill(-1)]},l=()=>Array(j).fill(-1);return[...f.map(a=>k(a,0)),l(),l(),...g.map(a=>k(a,i))]}(d):null,i=g&&e(g)>e(f)?g:f,j=e(i),l=0;for(let d of a)d.word=k(i,d.dx,d.dy,b,c,j),l=Math.max(l,d.word+1);return l}function m({className:a,mode:h="idle",charset:n=d.ASCII_FACE.charset,fontSize:o=d.ASCII_FACE.fontSize.default,density:p=d.ASCII_FACE.density.default,size:q=680,color:r=g,getSpectrum:s,word:t=null}){let u=(0,c.useRef)(null),v=(0,c.useRef)(null),w=(0,c.useRef)([]),x=(0,c.useRef)(null),y=(0,c.useRef)(n),z=(0,c.useRef)({cur:[...r],target:r}),A=(0,c.useRef)(0),B=(0,c.useRef)(s);B.current=s;let C=(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:[]}),D=(0,c.useRef)({mode:h,start:0}),E=(0,c.useRef)(performance.now()),F=(0,c.useRef)({scale:.3,lift:0,gather:0,comet:0,speech:0,err:0,word:0}),G=(0,c.useRef)(null),H=(0,c.useRef)({cw:1,ch:1});return(0,c.useEffect)(()=>{let a=u.current;if(!a)return;let b=.95*o/p,c=1.25*o/p,d=680/q,e=b*d,g=c*d,h=Math.max(1,Math.floor(625.6/(i[0].length*e)));A.current=q,H.current={cw:e,ch:g};let j=[],m=Math.ceil(q/b),n=Math.ceil(q/c);for(let a=0;a<n;a++)for(let l=0;l<m;l++){let m=l*b,n=a*c,o=(m-q/2)*d,p=(n-q/2)*d,r=Math.hypot(o,p),s=k(i,o,p,e,g,h);s<0&&r>328||j.push({x:m+b/2,y:n+c/2,dx:o,dy:p,dist:r,angle:Math.atan2(p,o),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),emoji:(0,f.hash)(2.7*l+31,5.9*a+17)<f.EMOJI_RATIO,speck:(0,f.hash)(4.1*l+23,6.3*a+41),letter:s,word:-1})}w.current=j,G.current&&l(j,e,g,G.current.text),x.current={ascii:Array.from({length:f.RAMP.length},()=>new Int32Array(j.length)),emoji:Array.from({length:f.RAMP.length},()=>new Int32Array(j.length)),asciiN:new Int32Array(f.RAMP.length),emojiN:new Int32Array(f.RAMP.length),glyph:Array(j.length)};let r=Math.min(2,window.devicePixelRatio||1);a.width=q*r,a.height=q*r,a.style.width=`${q}px`,a.style.height=`${q}px`;let s=a.getContext("2d");return s&&(s.setTransform(r,0,0,r,0,0),s.font=`700 ${o}px ui-monospace,SFMono-Regular,Menlo,monospace`,s.textAlign="center",s.textBaseline="middle",v.current=s),()=>{s?.clearRect(0,0,q,q),w.current=[],x.current=null}},[o,p,q]),(0,c.useEffect)(()=>{y.current=n},[n]),(0,c.useEffect)(()=>{z.current.target=r},[r]),(0,c.useEffect)(()=>{D.current.mode!==h&&(D.current={mode:h,start:.001*performance.now()})},[h]),(0,c.useEffect)(()=>{if(!t||Date.now()-t.at>(t.hold??3.4)*1e3)return;let{cw:a,ch:b}=H.current,c=performance.now(),d=c-E.current<600?.11*t.text.length+.3+.45:0;G.current={text:t.text,start:.001*c-d,letters:l(w.current,a,b,t.text),hold:t.hold??3.4}},[t]),(0,c.useEffect)(()=>{let a=0,b=(0,e.createVoiceFollower)(),c=Array(e.SPECTRUM_BANDS).fill(0),d=.001*performance.now(),g=0,h=0,i=e=>{let k=.001*e,l=Math.min(.05,Math.max(0,k-d));d=k;let m=v.current,n=x.current;if(!m||!n){a=requestAnimationFrame(i);return}let o=y.current,p=A.current;n.asciiN.fill(0),n.emojiN.fill(0);let q=B.current?.();if(!q||q.length<2){for(let a=0;a<c.length;a++){let b=.5*Math.sin(1.7*k+1.7*a)+.3*Math.sin(.8*k+.6*a)+.2*Math.sin(3*k+2.9*a);c[a]=.5*b+.5}q=c}let r=C.current,s=b.read(q,l);r.phrase=s.phrase,s.onset>0&&(r.bobVel+=.06*s.onset,r.rings.push({born:k,power:s.onset}),r.rings.length>5&&r.rings.shift()),r.bobVel+=-(.012*r.bob)-.09*r.bobVel,r.bob+=r.bobVel,g+=l;for(let a=0;a<4;a++){let b=Math.floor(a*s.bands.length/4),c=Math.max(b+1,Math.floor((a+1)*s.bands.length/4)),d=0;for(let a=b;a<c;a++)d+=s.bands[a];d/=c-b;let e=.7+.6*(0,f.hash)((.9*k|0)+31*a,a);r.amp[a]+=(d*e-r.amp[a])*(.05+.02*a),r.phase[a]+=l*(.9+.5*a)*(a%2?-1:1)}for(r.spin+=l*(1.1+.9*r.phrase);r.rings.length>0&&k-r.rings[0].born>.7;)r.rings.shift();let t=D.current,u=G.current,E=u?k-u.start:0,H=null!==u&&"error"!==t.mode&&E<u.hold+.08*u.letters+.45+.35+.9?{scale:0,lift:0,gather:0,comet:0,speech:0,err:0,word:1}: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}}}(t.mode,k-t.start),I=F.current;I.scale=j(I.scale,H.scale,.45,"ending"===t.mode?.4:.7,l),I.lift=j(I.lift,H.lift,.22,.4,l),I.gather=j(I.gather,H.gather,.3,.95,l),I.comet=j(I.comet,H.comet,.45,.9,l),I.speech=j(I.speech,H.speech,.5,.75,l),"error"===t.mode&&(I.err<=.01&&(h=0),h+=l),I.err=j(I.err,H.err,.5,.6,l),I.word=j(I.word,H.word,.35,.5,l);let J=I.err>.5,K=I.word>.5,L="emojiOnly"===o?f.EMOJI_CHAR_RATE:f.CHAR_RATE,M=w.current;for(let a=0;a<M.length;a++){let b=M[a],c=function(a,b,c,d,e,g,h){let i,j,k,l,m=g.scale>.02?function(a,b,c=0,d=1){let e=170*Math.max(.02,d),g=1-(0,f.smoothstep)(.55*e,e,a.dist);return(.58+c+.2*Math.sin(.05*a.dist-.4*b)+.07*Math.sin(.35*b))*g}(a,b,g.lift,g.scale)*(1-.6*g.speech):0;return g.gather>.01&&(m+=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,b,g.scale)*g.gather),g.comet>.01&&(m+=(j=Math.exp(-((i=a.dist-210)*i)/1100),j*Math.exp(-((l=Math.atan2(Math.sin(k=a.angle-3*b),Math.cos(k)))*l)/(l<0?2.8:.16))*g.comet)),g.speech>.01&&(m+=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,b,h,g.speech)*g.speech),g.err>.01&&(m+=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,b,c)*g.err),g.word>.01&&(m+=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,b,d,e)*g.word),m}(b,k,h,E,u?.hold??3.4,I,r);!(J&&b.letter>=0||K&&b.word>=0)&&((c*=(.66+.72*b.grain)*(.8+.4*(0,f.hash)(Math.floor(.05*b.dx+.5*k),Math.floor(.05*b.dy-.3*k))))>.3&&(0,f.hash)(31.7*Math.floor(1.6*k),613*b.seed)>.992&&(c=Math.max(c,.9)),c<b.gap+.05*Math.sin(.28*k+6.283*b.seed)&&(c=0));let d=(c=c<0?0:c>1?1:c)*(f.RAMP.length-1)|0;if(0===d)continue;let e=g*L+7*b.seed|0;if("emojiOnly"===o||"emoji"===o&&b.emoji&&d>=f.EMOJI_MIN_LEVEL){let c=((b.seed*f.EMOJI_POOL.length|0)+e)%f.EMOJI_POOL.length;n.glyph[a]=f.EMOJI_POOL[c],n.emoji[d][n.emojiN[d]++]=a}else{let c=f.RAMP[d],g=((b.seed*c.length|0)+e)%c.length;n.glyph[a]=c[g],n.ascii[d][n.asciiN[d]++]=a}}m.clearRect(0,0,p,p);let N=w.current,O=f.RAMP.length-1,P=z.current;for(let a=0;a<3;a++)P.cur[a]+=(P.target[a]-P.cur[a])*.05;m.fillStyle=`rgb(${0|P.cur[0]},${0|P.cur[1]},${0|P.cur[2]})`;for(let a=1;a<=O;a++){let b=n.asciiN[a];if(0===b)continue;m.globalAlpha=f.ALPHA_TOP*(a/O);let c=n.ascii[a];for(let a=0;a<b;a++){let b=N[c[a]];m.fillText(n.glyph[c[a]],b.x,b.y)}}for(let a=1;a<=O;a++){let b=n.emojiN[a];if(0===b)continue;m.globalAlpha=.35+a/O*.65;let c=n.emoji[a];for(let a=0;a<b;a++){let b=N[c[a]];m.fillText(n.glyph[c[a]],b.x,b.y)}}m.globalAlpha=1,a=requestAnimationFrame(i)};return a=requestAnimationFrame(i),()=>cancelAnimationFrame(a)},[]),(0,b.jsx)("canvas",{ref:u,className:a,"aria-hidden":!0,style:{display:"block",pointerEvents:"none"}})}var n=a.i(730357),o=a.i(497895);let p={ending:"ending",idle:"idle",connecting:"connecting",listening:"idle",speaking:"speaking",working:"working",delegating:"working"},q=[247,247,247],r=[10,10,10];function s({status:a,failed:c,word:d,size:e,getSpectrum:f,look:g,className:h}){let i="dark"===(0,n.useResolvedTheme)();return(0,b.jsx)(m,{mode:c?"error":p[a],word:d,size:e,color:i?q:r,getSpectrum:f,charset:g.charset,fontSize:g.fontSize,density:g.density,className:h})}let t=(0,c.memo)(function({look:a,status:d="idle",size:e=448,className:f,...g}){let h=(0,c.useRef)(null),[i,j]=(0,c.useState)(e),[k,l]=(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&&j(b)});return b.observe(a),()=>b.disconnect()},[]),(0,c.useEffect)(()=>{let a=requestAnimationFrame(()=>l(!0));return()=>cancelAnimationFrame(a)},[]),(0,b.jsx)("div",{ref:h,className:(0,o.cn)("aspect-square transition-opacity duration-700 ease-out",k?"opacity-100":"opacity-0",f),children:(0,b.jsx)(s,{...g,look:a,status:d,size:i})})});a.s(["Face",0,t],445432)},359006,a=>{"use strict";let b,c;var d=a.i(920226);let e=a=>b=>{try{let c=a(b);if(c instanceof Promise)return c;return{then:a=>e(a)(c),catch(a){return this}}}catch(a){return{then(a){return this},catch:b=>e(b)(a)}}};var f=a.i(96340),g=a.i(61876),h=a.i(461512);let i=f.LiveSettingsSchema.extend({wake:h.WakeSchema.catch(h.WAKE_DEFAULT),hotkey:h.HotkeySchema.catch(h.HOTKEY_DEFAULT),callBack:h.CallBackSchema.catch(h.CALL_BACK_DEFAULT),captionView:h.CaptionViewSchema.catch("sides"),textModel:g.textModelRefSchema.nullable().catch(null)}),j={...f.LIVE_DEFAULTS,wake:h.WAKE_DEFAULT,hotkey:h.HOTKEY_DEFAULT,callBack:h.CALL_BACK_DEFAULT,captionView:"sides",textModel:null},k=(0,d.create)()((b=a=>({...j,patch:b=>a(b)}),c={name:"thursday.settings",version:1,migrate:(a,b)=>b<1&&a&&"object"==typeof a?{...a,webSearch:!0}:a,merge:(a,b)=>{let c=i.safeParse((0,f.migrateLiveSettings)(a)),d=c.success?c.data:j;return{...b,...d}}},(a,d,f)=>{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=f.setState;f.setState=(a,b)=>(o(a,b),n());let p=b((...b)=>(a(...b),n()));f.getInitialState=()=>p;let q=()=>{var b,c;if(!m)return;let f=++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 e(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(f!==j)return;let[e,i]=b;if(a(g=h.merge(i,null!=(c=d())?c:p),!0),e)return n()}).then(()=>{f===j&&(null==o||o(d(),void 0),g=d(),i=!0,l.forEach(a=>a(g)))}).catch(a=>{f===j&&(null==o||o(void 0,a))})};return f.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(["thursdaySettings",0,()=>f.LiveSettingsSchema.parse(k.getState()),"useThursdayStore",0,k],359006)},27418,a=>{"use strict";var b=a.i(421042);let c={[b.TOOL_NAMES.memory_recall]:"Checking your notes",[b.TOOL_NAMES.memory_remember]:"Noting that down",[b.TOOL_NAMES.memory_forget]:"Forgetting that",[b.TOOL_NAMES.memory_conversation]:"Reading back an earlier call",[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.end_call]:"Ending the call",[b.TOOL_NAMES.routine]:"Checking your routines"};function d(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 e=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 f(a,c){if(a!==b.TOOL_NAMES.web_search)return null;try{let a=JSON.parse(c),b=Array.isArray(a.sources)?a.sources.flatMap(a=>a&&"object"==typeof a&&"string"==typeof a.url?[a]:[]):[];return{query:"string"==typeof a.query?a.query:null,sources:b}}catch{return null}}a.s(["searchOf",0,f,"searchQueryOf",0,function(a){let b=d(a)?.query;return"string"==typeof b&&b.trim()?b.trim():null},"searchSourcesOf",0,function(a){let c=d(a);return c?f(b.TOOL_NAMES.web_search,JSON.stringify(c))?.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,f,g){let h=d(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(!e.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=f?.find(a=>a.id===i)??f?.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=d(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}(g)},"toolLine",0,function(a,e,f=null){let g;if(a===b.TOOL_NAMES.tool_search||a===b.TOOL_NAMES.tool_call)return"Reaching a connected service";let h=d(e);return(h&&function(a,c,d){if(a===b.TOOL_NAMES.memory_remember){let a="string"==typeof c.path?c.path.trim():"",b=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);if(!a)return null;if(!b)return`Noting that under ${a}`;let d=b.more>0?` (+${b.more})`:"";return`Noting under ${a}: ${function(a){let b=a.trim().replace(/\s+/g," ");if(b.length<=28)return b;let c=b.slice(0,28),d=c.lastIndexOf(" ");return`${(d>14?c.slice(0,d):c).trimEnd()}…`}(b.text)}${d}`}if(a===b.TOOL_NAMES.thread_start){let a="string"==typeof c.bot?c.bot.trim():"";return a?`Handing this to ${a}`:"Handing this over"}if(a===b.TOOL_NAMES.web_search){let a="string"==typeof c.query?c.query.trim():"";return a?`Searching \xb7 ${a}`:null}if(a===b.TOOL_NAMES.routine){if("create"===c.action){let a=["string"==typeof c.bot?c.bot.trim():"",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 e="string"==typeof c.thread?c.thread.trim():"";return a===b.TOOL_NAMES.thread_tell?d?`Telling ${d}`:"Passing that on":a===b.TOOL_NAMES.thread_answer?d?`Answering ${d}`:"Answering that":a===b.TOOL_NAMES.thread_cancel?e?`Stopping ${e}`:"Stopping that":a===b.TOOL_NAMES.thread_seen?e?`Marking ${e} as read`:"Marking that as read":a===b.TOOL_NAMES.thread_show?e?`Opening ${e}`:"Opening that":a===b.TOOL_NAMES.thread_status?e&&"all"!==e.toLowerCase()?`Checking on ${e}`:"Checking on the work":null}(a,h,f))??c[a]??((g=a.indexOf("__"))<=0?null:`Reaching ${a.slice(0,g).replace(/[-_]/g," ")}`)}])},332033,a=>{"use strict";var b=a.i(572131);let c=["ctrl","alt","meta"],d=/^(Control|Alt|Shift|Meta|OS)/,e=/^(input|textarea|select)$/i,f=a=>!!a&&!!(e.test(a.tagName)||a.isContentEditable||a.closest?.("[data-hotkey-capture]"));function g(a){let{code:b,ctrlKey:c,altKey:e,shiftKey:f,metaKey:g}=a;if(!b||d.test(b)||!c&&!e&&!g)return null;let h=[];return c&&h.push("ctrl"),e&&h.push("alt"),f&&h.push("shift"),g&&h.push("meta"),[...h,b].join("+")}let h={ctrl:["Ctrl","⌃"],alt:["Alt","⌥"],shift:["Shift","⇧"],meta:["Meta","⌘"]};a.s(["HOTKEY_CAPTURE",0,{"data-hotkey-capture":""},"capturesKeys",0,f,"comboOf",0,g,"isCombo",0,a=>{let b=a.split("+"),e=b.at(-1);return!!(e&&!d.test(e)&&b.slice(0,-1).some(a=>c.includes(a)))},"useHotkey",0,function({enabled:a,combo:c,onPress:d}){let e=(0,b.useRef)(d);e.current=d,(0,b.useEffect)(()=>{if(!a||!c)return;let b=a=>{a.repeat||f(a.target)||g(a)===c&&(a.preventDefault(),e.current())};return window.addEventListener("keydown",b),()=>window.removeEventListener("keydown",b)},[a,c])},"useHotkeyLabel",0,function(a){let[c,d]=(0,b.useState)(!1);return(0,b.useEffect)(()=>d(/mac/i.test(navigator.userAgent)),[]),a?function(a,b=!1){let c=a.split("+"),d=c.at(-1)??"",e=c.slice(0,-1).map(a=>h[a]?.[+!!b]??a),f=d.replace(/^(Key|Digit|Numpad)/,"").replace(/([a-z])([A-Z])/g,"$1 $2")||d;return b?[...e,f].join(""):[...e,f].join(" + ")}(a,c):null}])}];
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(379630),k=a.i(96340),l=a.i(61876),m=a.i(313237),n=a.i(759497),o=a.i(497895),p=a.i(633389),q=a.i(478978);function r({provider:a,saved:c,autoFocus:d,dense:e,plain:f,value:g,ready:h,saving:i,onValue:k,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)(j.ProviderIcon,{provider:a.id,className:"size-4 shrink-0"}),(0,b.jsx)("span",{className:(0,o.cn)("font-mono",e?"text-[11px]":"text-[12.5px]"),children:a.label})]}),(0,b.jsx)(s,{provider:a,saved:c,autoFocus:d,dense:e,mark:f,value:g,ready:h,saving:i,onValue:k,onSubmit:l})]})}function s({provider:a,saved:c,autoFocus:e,dense:f,mark:g,value:k,ready:l,saving:m,onValue:n,onSubmit:p}){let q=k.trim().startsWith("xai-")||k.trim().startsWith("sk-ant-");return(0,b.jsxs)("form",{onSubmit:a=>{a.preventDefault(),p()},className:(0,o.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)(j.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:k,spellCheck:!1,placeholder:c?"Replace it":"sk-…",onChange:a=>n(a.target.value),className:(0,o.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]")}),k?(0,b.jsx)(h.Button,{type:"submit",size:"sm",variant:q?"outline":"default",loading:m,disabled:!l,className:(0,o.cn)("shrink-0",f?"h-7 px-3":"h-9 px-4"),children:q?`Not ${a.label}?`:"Save"}):c&&(0,b.jsx)("span",{className:(0,o.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=l.TEXT_MODEL_PROVIDERS[k.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},"KEY_MIN",0,8,"KeyInput",0,s,"VoiceKeys",0,function({ref:a,autoFocus:c,dense:d=!1,plain:i=!1,onCancel:j,onSaved:l,className:s}){let{data:t}=(0,n.useServerRoute)(g.queryKey.config),[u,v]=(0,f.useState)({}),[w,x]=(0,f.useState)(null),[y,z]=(0,f.useState)(null),[A]=(0,m.useServerAction)(p.setConfigAction,{errorMessage:!1,onError:a=>z(a??"That key was not saved."),onOk:()=>{(0,n.revalidate)(g.queryKey.config),(0,n.revalidate)(g.queryKey.llmModel)}}),B=a=>(u[a]?.trim().length??0)>=8,C=async a=>{let b=a.apiKeyName;if(!B(b)||w)return!1;z(null),x(b);try{return await A(b,u[b]),v(a=>({...a,[b]:""})),l?.(a.id),!0}catch{return!1}finally{x(null)}};return(0,f.useImperativeHandle)(a,()=>({pending:()=>B(k.LIVE_PROVIDER.apiKeyName),flush:async()=>!B(k.LIVE_PROVIDER.apiKeyName)||C(k.LIVE_PROVIDER)})),(0,b.jsxs)("div",{className:(0,o.cn)("w-full",d?"space-y-2":"space-y-4",s),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"}),j&&(0,b.jsx)(h.Button,{type:"button",size:"icon",variant:"ghost","aria-label":"Not now",onClick:j,className:"-my-1 size-6",children:(0,b.jsx)(e.X,{className:"size-3.5"})})]}),(0,b.jsx)(r,{provider:k.LIVE_PROVIDER,saved:(0,q.isConfigSet)(t,k.LIVE_PROVIDER.apiKeyName),autoFocus:c,dense:d,plain:i,value:u[k.LIVE_PROVIDER.apiKeyName]??"",ready:B(k.LIVE_PROVIDER.apiKeyName),saving:w===k.LIVE_PROVIDER.apiKeyName,onValue:a=>{z(null),v(b=>({...b,[k.LIVE_PROVIDER.apiKeyName]:a}))},onSubmit:()=>void C(k.LIVE_PROVIDER)}),y&&(0,b.jsx)("p",{className:(0,o.cn)("px-0.5 leading-5 break-words",d?"text-xs":"text-center text-[13px]",o.WAITING_INK),children:y}),!i&&(0,b.jsx)("p",{className:(0,o.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."})]})}])},445432,a=>{"use strict";var b=a.i(187924),c=a.i(572131),d=a.i(287702),e=a.i(483253),f=a.i(647509);let g=[235,235,235];function h(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 i=h("ERROR");function j(a,b,c,d,e){return a+(b-a)*Math.min(1,e/(b>a?c:d))}function k(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}function l(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=h(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=h(b.slice(0,e).join("")),g=h(b.slice(e+1).join(""));if(!f[0].length||!g[0].length)return null;let i=Math.max(-1,...f.flat())+1,j=Math.max(f[0].length,g[0].length),k=(a,b)=>{let c=Math.floor((j-a.length)/2);return[...Array(c).fill(-1),...a.map(a=>a<0?a:a+b),...Array(j-a.length-c).fill(-1)]},l=()=>Array(j).fill(-1);return[...f.map(a=>k(a,0)),l(),l(),...g.map(a=>k(a,i))]}(d):null,i=g&&e(g)>e(f)?g:f,j=e(i),l=0;for(let d of a)d.word=k(i,d.dx,d.dy,b,c,j),l=Math.max(l,d.word+1);return l}function m({className:a,mode:h="idle",charset:n=d.ASCII_FACE.charset,fontSize:o=d.ASCII_FACE.fontSize.default,density:p=d.ASCII_FACE.density.default,size:q=680,color:r=g,getSpectrum:s,word:t=null}){let u=(0,c.useRef)(null),v=(0,c.useRef)(null),w=(0,c.useRef)([]),x=(0,c.useRef)(null),y=(0,c.useRef)(n),z=(0,c.useRef)({cur:[...r],target:r}),A=(0,c.useRef)(0),B=(0,c.useRef)(s);B.current=s;let C=(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:[]}),D=(0,c.useRef)({mode:h,start:0}),E=(0,c.useRef)(performance.now()),F=(0,c.useRef)({scale:.3,lift:0,gather:0,comet:0,speech:0,err:0,word:0}),G=(0,c.useRef)(null),H=(0,c.useRef)({cw:1,ch:1});return(0,c.useEffect)(()=>{let a=u.current;if(!a)return;let b=.95*o/p,c=1.25*o/p,d=680/q,e=b*d,g=c*d,h=Math.max(1,Math.floor(625.6/(i[0].length*e)));A.current=q,H.current={cw:e,ch:g};let j=[],m=Math.ceil(q/b),n=Math.ceil(q/c);for(let a=0;a<n;a++)for(let l=0;l<m;l++){let m=l*b,n=a*c,o=(m-q/2)*d,p=(n-q/2)*d,r=Math.hypot(o,p),s=k(i,o,p,e,g,h);s<0&&r>328||j.push({x:m+b/2,y:n+c/2,dx:o,dy:p,dist:r,angle:Math.atan2(p,o),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),emoji:(0,f.hash)(2.7*l+31,5.9*a+17)<f.EMOJI_RATIO,speck:(0,f.hash)(4.1*l+23,6.3*a+41),letter:s,word:-1})}w.current=j,G.current&&l(j,e,g,G.current.text),x.current={ascii:Array.from({length:f.RAMP.length},()=>new Int32Array(j.length)),emoji:Array.from({length:f.RAMP.length},()=>new Int32Array(j.length)),asciiN:new Int32Array(f.RAMP.length),emojiN:new Int32Array(f.RAMP.length),glyph:Array(j.length)};let r=Math.min(2,window.devicePixelRatio||1);a.width=q*r,a.height=q*r,a.style.width=`${q}px`,a.style.height=`${q}px`;let s=a.getContext("2d");return s&&(s.setTransform(r,0,0,r,0,0),s.font=`700 ${o}px ui-monospace,SFMono-Regular,Menlo,monospace`,s.textAlign="center",s.textBaseline="middle",v.current=s),()=>{s?.clearRect(0,0,q,q),w.current=[],x.current=null}},[o,p,q]),(0,c.useEffect)(()=>{y.current=n},[n]),(0,c.useEffect)(()=>{z.current.target=r},[r]),(0,c.useEffect)(()=>{D.current.mode!==h&&(D.current={mode:h,start:.001*performance.now()})},[h]),(0,c.useEffect)(()=>{if(!t||Date.now()-t.at>(t.hold??3.4)*1e3)return;let{cw:a,ch:b}=H.current,c=performance.now(),d=c-E.current<600?.11*t.text.length+.3+.45:0;G.current={text:t.text,start:.001*c-d,letters:l(w.current,a,b,t.text),hold:t.hold??3.4}},[t]),(0,c.useEffect)(()=>{let a=0,b=(0,e.createVoiceFollower)(),c=Array(e.SPECTRUM_BANDS).fill(0),d=.001*performance.now(),g=0,h=0,i=e=>{let k=.001*e,l=Math.min(.05,Math.max(0,k-d));d=k;let m=v.current,n=x.current;if(!m||!n){a=requestAnimationFrame(i);return}let o=y.current,p=A.current;n.asciiN.fill(0),n.emojiN.fill(0);let q=B.current?.();if(!q||q.length<2){for(let a=0;a<c.length;a++){let b=.5*Math.sin(1.7*k+1.7*a)+.3*Math.sin(.8*k+.6*a)+.2*Math.sin(3*k+2.9*a);c[a]=.5*b+.5}q=c}let r=C.current,s=b.read(q,l);r.phrase=s.phrase,s.onset>0&&(r.bobVel+=.06*s.onset,r.rings.push({born:k,power:s.onset}),r.rings.length>5&&r.rings.shift()),r.bobVel+=-(.012*r.bob)-.09*r.bobVel,r.bob+=r.bobVel,g+=l;for(let a=0;a<4;a++){let b=Math.floor(a*s.bands.length/4),c=Math.max(b+1,Math.floor((a+1)*s.bands.length/4)),d=0;for(let a=b;a<c;a++)d+=s.bands[a];d/=c-b;let e=.7+.6*(0,f.hash)((.9*k|0)+31*a,a);r.amp[a]+=(d*e-r.amp[a])*(.05+.02*a),r.phase[a]+=l*(.9+.5*a)*(a%2?-1:1)}for(r.spin+=l*(1.1+.9*r.phrase);r.rings.length>0&&k-r.rings[0].born>.7;)r.rings.shift();let t=D.current,u=G.current,E=u?k-u.start:0,H=null!==u&&"error"!==t.mode&&E<u.hold+.08*u.letters+.45+.35+.9?{scale:0,lift:0,gather:0,comet:0,speech:0,err:0,word:1}: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}}}(t.mode,k-t.start),I=F.current;I.scale=j(I.scale,H.scale,.45,"ending"===t.mode?.4:.7,l),I.lift=j(I.lift,H.lift,.22,.4,l),I.gather=j(I.gather,H.gather,.3,.95,l),I.comet=j(I.comet,H.comet,.45,.9,l),I.speech=j(I.speech,H.speech,.5,.75,l),"error"===t.mode&&(I.err<=.01&&(h=0),h+=l),I.err=j(I.err,H.err,.5,.6,l),I.word=j(I.word,H.word,.35,.5,l);let J=I.err>.5,K=I.word>.5,L="emojiOnly"===o?f.EMOJI_CHAR_RATE:f.CHAR_RATE,M=w.current;for(let a=0;a<M.length;a++){let b=M[a],c=function(a,b,c,d,e,g,h){let i,j,k,l,m=g.scale>.02?function(a,b,c=0,d=1){let e=170*Math.max(.02,d),g=1-(0,f.smoothstep)(.55*e,e,a.dist);return(.58+c+.2*Math.sin(.05*a.dist-.4*b)+.07*Math.sin(.35*b))*g}(a,b,g.lift,g.scale)*(1-.6*g.speech):0;return g.gather>.01&&(m+=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,b,g.scale)*g.gather),g.comet>.01&&(m+=(j=Math.exp(-((i=a.dist-210)*i)/1100),j*Math.exp(-((l=Math.atan2(Math.sin(k=a.angle-3*b),Math.cos(k)))*l)/(l<0?2.8:.16))*g.comet)),g.speech>.01&&(m+=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,b,h,g.speech)*g.speech),g.err>.01&&(m+=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,b,c)*g.err),g.word>.01&&(m+=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,b,d,e)*g.word),m}(b,k,h,E,u?.hold??3.4,I,r);!(J&&b.letter>=0||K&&b.word>=0)&&((c*=(.66+.72*b.grain)*(.8+.4*(0,f.hash)(Math.floor(.05*b.dx+.5*k),Math.floor(.05*b.dy-.3*k))))>.3&&(0,f.hash)(31.7*Math.floor(1.6*k),613*b.seed)>.992&&(c=Math.max(c,.9)),c<b.gap+.05*Math.sin(.28*k+6.283*b.seed)&&(c=0));let d=(c=c<0?0:c>1?1:c)*(f.RAMP.length-1)|0;if(0===d)continue;let e=g*L+7*b.seed|0;if("emojiOnly"===o||"emoji"===o&&b.emoji&&d>=f.EMOJI_MIN_LEVEL){let c=((b.seed*f.EMOJI_POOL.length|0)+e)%f.EMOJI_POOL.length;n.glyph[a]=f.EMOJI_POOL[c],n.emoji[d][n.emojiN[d]++]=a}else{let c=f.RAMP[d],g=((b.seed*c.length|0)+e)%c.length;n.glyph[a]=c[g],n.ascii[d][n.asciiN[d]++]=a}}m.clearRect(0,0,p,p);let N=w.current,O=f.RAMP.length-1,P=z.current;for(let a=0;a<3;a++)P.cur[a]+=(P.target[a]-P.cur[a])*.05;m.fillStyle=`rgb(${0|P.cur[0]},${0|P.cur[1]},${0|P.cur[2]})`;for(let a=1;a<=O;a++){let b=n.asciiN[a];if(0===b)continue;m.globalAlpha=f.ALPHA_TOP*(a/O);let c=n.ascii[a];for(let a=0;a<b;a++){let b=N[c[a]];m.fillText(n.glyph[c[a]],b.x,b.y)}}for(let a=1;a<=O;a++){let b=n.emojiN[a];if(0===b)continue;m.globalAlpha=.35+a/O*.65;let c=n.emoji[a];for(let a=0;a<b;a++){let b=N[c[a]];m.fillText(n.glyph[c[a]],b.x,b.y)}}m.globalAlpha=1,a=requestAnimationFrame(i)};return a=requestAnimationFrame(i),()=>cancelAnimationFrame(a)},[]),(0,b.jsx)("canvas",{ref:u,className:a,"aria-hidden":!0,style:{display:"block",pointerEvents:"none"}})}var n=a.i(730357),o=a.i(497895);let p={ending:"ending",idle:"idle",connecting:"connecting",listening:"idle",speaking:"speaking",working:"working",delegating:"working"},q=[247,247,247],r=[10,10,10];function s({status:a,failed:c,word:d,size:e,getSpectrum:f,look:g,className:h}){let i="dark"===(0,n.useResolvedTheme)();return(0,b.jsx)(m,{mode:c?"error":p[a],word:d,size:e,color:i?q:r,getSpectrum:f,charset:g.charset,fontSize:g.fontSize,density:g.density,className:h})}let t=(0,c.memo)(function({look:a,status:d="idle",size:e=448,className:f,...g}){let h=(0,c.useRef)(null),[i,j]=(0,c.useState)(e),[k,l]=(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&&j(b)});return b.observe(a),()=>b.disconnect()},[]),(0,c.useEffect)(()=>{let a=requestAnimationFrame(()=>l(!0));return()=>cancelAnimationFrame(a)},[]),(0,b.jsx)("div",{ref:h,className:(0,o.cn)("aspect-square transition-opacity duration-700 ease-out",k?"opacity-100":"opacity-0",f),children:(0,b.jsx)(s,{...g,look:a,status:d,size:i})})});a.s(["Face",0,t],445432)},359006,a=>{"use strict";let b,c;var d=a.i(920226);let e=a=>b=>{try{let c=a(b);if(c instanceof Promise)return c;return{then:a=>e(a)(c),catch(a){return this}}}catch(a){return{then(a){return this},catch:b=>e(b)(a)}}};var f=a.i(96340),g=a.i(61876),h=a.i(461512);let i=f.LiveSettingsSchema.extend({wake:h.WakeSchema.catch(h.WAKE_DEFAULT),hotkey:h.HotkeySchema.catch(h.HOTKEY_DEFAULT),callBack:h.CallBackSchema.catch(h.CALL_BACK_DEFAULT),captionView:h.CaptionViewSchema.catch("sides"),textModel:g.textModelRefSchema.nullable().catch(null)}),j={...f.LIVE_DEFAULTS,wake:h.WAKE_DEFAULT,hotkey:h.HOTKEY_DEFAULT,callBack:h.CALL_BACK_DEFAULT,captionView:"sides",textModel:null},k=(0,d.create)()((b=a=>({...j,patch:b=>a(b)}),c={name:"thursday.settings",version:1,migrate:(a,b)=>b<1&&a&&"object"==typeof a?{...a,webSearch:!0}:a,merge:(a,b)=>{let c=i.safeParse((0,f.migrateLiveSettings)(a)),d=c.success?c.data:j;return{...b,...d}}},(a,d,f)=>{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=f.setState;f.setState=(a,b)=>(o(a,b),n());let p=b((...b)=>(a(...b),n()));f.getInitialState=()=>p;let q=()=>{var b,c;if(!m)return;let f=++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 e(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(f!==j)return;let[e,i]=b;if(a(g=h.merge(i,null!=(c=d())?c:p),!0),e)return n()}).then(()=>{f===j&&(null==o||o(d(),void 0),g=d(),i=!0,l.forEach(a=>a(g)))}).catch(a=>{f===j&&(null==o||o(void 0,a))})};return f.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(["thursdaySettings",0,()=>f.LiveSettingsSchema.parse(k.getState()),"useThursdayStore",0,k],359006)},27418,a=>{"use strict";var b=a.i(421042);let c={[b.TOOL_NAMES.memory_recall]:"Checking your notes",[b.TOOL_NAMES.memory_remember]:"Noting that down",[b.TOOL_NAMES.memory_forget]:"Forgetting that",[b.TOOL_NAMES.memory_conversation]:"Reading back an earlier call",[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.end_call]:"Ending the call",[b.TOOL_NAMES.routine]:"Checking your routines"};function d(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 e=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 f(a,c){if(a!==b.TOOL_NAMES.web_search)return null;try{let a=JSON.parse(c),b=Array.isArray(a.sources)?a.sources.flatMap(a=>a&&"object"==typeof a&&"string"==typeof a.url?[a]:[]):[];return{query:"string"==typeof a.query?a.query:null,sources:b}}catch{return null}}a.s(["searchOf",0,f,"searchQueryOf",0,function(a){let b=d(a)?.query;return"string"==typeof b&&b.trim()?b.trim():null},"searchSourcesOf",0,function(a){let c=d(a);return c?f(b.TOOL_NAMES.web_search,JSON.stringify(c))?.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,f,g){let h=d(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(!e.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=f?.find(a=>a.id===i)??f?.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=d(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}(g)},"toolLine",0,function(a,e,f=null){let g;if(a===b.TOOL_NAMES.tool_search||a===b.TOOL_NAMES.tool_call)return"Reaching a connected service";let h=d(e);return(h&&function(a,c,d){if(a===b.TOOL_NAMES.memory_remember){let a="string"==typeof c.path?c.path.trim():"",b=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);if(!a)return null;if(!b)return`Noting that under ${a}`;let d=b.more>0?` (+${b.more})`:"";return`Noting under ${a}: ${function(a){let b=a.trim().replace(/\s+/g," ");if(b.length<=28)return b;let c=b.slice(0,28),d=c.lastIndexOf(" ");return`${(d>14?c.slice(0,d):c).trimEnd()}…`}(b.text)}${d}`}if(a===b.TOOL_NAMES.thread_start){let a="string"==typeof c.bot?c.bot.trim():"";return a?`Handing this to ${a}`:"Handing this over"}if(a===b.TOOL_NAMES.web_search){let a="string"==typeof c.query?c.query.trim():"";return a?`Searching \xb7 ${a}`:null}if(a===b.TOOL_NAMES.routine){if("create"===c.action){let a=["string"==typeof c.bot?c.bot.trim():"",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 e="string"==typeof c.thread?c.thread.trim():"";return a===b.TOOL_NAMES.thread_tell?d?`Telling ${d}`:"Passing that on":a===b.TOOL_NAMES.thread_answer?d?`Answering ${d}`:"Answering that":a===b.TOOL_NAMES.thread_cancel?e?`Stopping ${e}`:"Stopping that":a===b.TOOL_NAMES.thread_seen?e?`Marking ${e} as read`:"Marking that as read":a===b.TOOL_NAMES.thread_show?e?`Opening ${e}`:"Opening that":a===b.TOOL_NAMES.thread_status?e&&"all"!==e.toLowerCase()?`Checking on ${e}`:"Checking on the work":null}(a,h,f))??c[a]??((g=a.indexOf("__"))<=0?null:`Reaching ${a.slice(0,g).replace(/[-_]/g," ")}`)}])},332033,a=>{"use strict";var b=a.i(572131);let c=["ctrl","alt","meta"],d=/^(Control|Alt|Shift|Meta|OS)/,e=/^(input|textarea|select)$/i,f=a=>!!a&&!!(e.test(a.tagName)||a.isContentEditable||a.closest?.("[data-hotkey-capture]"));function g(a){let{code:b,ctrlKey:c,altKey:e,shiftKey:f,metaKey:g}=a;if(!b||d.test(b)||!c&&!e&&!g)return null;let h=[];return c&&h.push("ctrl"),e&&h.push("alt"),f&&h.push("shift"),g&&h.push("meta"),[...h,b].join("+")}let h={ctrl:["Ctrl","⌃"],alt:["Alt","⌥"],shift:["Shift","⇧"],meta:["Meta","⌘"]};a.s(["HOTKEY_CAPTURE",0,{"data-hotkey-capture":""},"capturesKeys",0,f,"comboOf",0,g,"isCombo",0,a=>{let b=a.split("+"),e=b.at(-1);return!!(e&&!d.test(e)&&b.slice(0,-1).some(a=>c.includes(a)))},"useHotkey",0,function({enabled:a,combo:c,onPress:d}){let e=(0,b.useRef)(d);e.current=d,(0,b.useEffect)(()=>{if(!a||!c)return;let b=a=>{a.repeat||f(a.target)||g(a)===c&&(a.preventDefault(),e.current())};return window.addEventListener("keydown",b),()=>window.removeEventListener("keydown",b)},[a,c])},"useHotkeyLabel",0,function(a){let[c,d]=(0,b.useState)(!1);return(0,b.useEffect)(()=>d(/mac/i.test(navigator.userAgent)),[]),a?function(a,b=!1){let c=a.split("+"),d=c.at(-1)??"",e=c.slice(0,-1).map(a=>h[a]?.[+!!b]??a),f=d.replace(/^(Key|Digit|Numpad)/,"").replace(/([a-z])([A-Z])/g,"$1 $2")||d;return b?[...e,f].join(""):[...e,f].join(" + ")}(a,c):null}])}];
2
2
 
3
3
  //# sourceMappingURL=_1mqn9mc._.js.map
@@ -0,0 +1,3 @@
1
+ module.exports=[862966,a=>{"use strict";var b=a.i(572131),c=a.i(988712),d=a.i(426618),e=a.i(664565),f=a.i(487610),g=a.i(561311);let h=Promise.resolve(),i=(0,e.withMiddleware)(c.u,a=>(c,e,i)=>{let j,k=(0,b.useRef)(!1),{cache:l,initialSize:m=1,revalidateAll:n=!1,persistSize:o=!1,revalidateFirstPage:p=!0,revalidateOnMount:q=!1,parallel:r=!1}=i,[,,,s]=d.a.get(d.o);try{(j=(0,d.s)(c?c(0,null):null)[0])&&(j=g.INFINITE_PREFIX+j)}catch(a){}let[t,u,v]=(0,d.c)(l,j),w=(0,b.useCallback)(()=>(0,d.i)(t()._l)?m:t()._l,[l,j,m]);(0,f.useSyncExternalStore)((0,b.useCallback)(a=>j?v(j,()=>{a()}):()=>{},[l,j]),w,w);let x=(0,b.useCallback)(()=>{let a=t()._l;return(0,d.i)(a)?m:a},[j,m]),y=(0,b.useRef)(x());(0,d.u)(()=>{if(!k.current){k.current=!0;return}j&&u({_l:o?y.current:x()})},[j,l]);let z=q&&!k.current,A=a(j,async a=>{let b=t()._i,f=t()._r,g=d.a.get(l),h=g[8],j=()=>g[8]!==h;u({_r:d.U});let k=[],m=x(),[o]=(0,d.c)(l,a),q=o().data,v=[],w=null;for(let a=0;a<m;++a){let[g,h]=(0,d.s)(c(a,r?null:w));if(!g)break;let[m,o]=(0,d.c)(l,g),t=m().data,u=n||b||(0,d.i)(t)||p&&!a&&!(0,d.i)(q)||z||q&&!(0,d.i)(q[a])&&!i.compare(q[a],t);if(e&&("function"==typeof f?f(t,h):u)){let b=async()=>{if(g in s){let a=s[g];delete s[g],t=await a}else t=await e(h);j()||o({data:t,_k:h}),k[a]=t};r?v.push(b):await b()}else k[a]=t;r||(w=t)}return r&&await Promise.all(v.map(a=>a())),j()||u({_i:d.U}),k},i),B=(0,b.useCallback)(function(a,b){let c="boolean"==typeof b?{revalidate:b}:b||{},e=!1!==c.revalidate;return j?(e&&((0,d.i)(a)?u({_i:!0,_r:c.revalidate}):u({_i:!1,_r:c.revalidate})),arguments.length?A.mutate(a,{...c,revalidate:e}):A.mutate()):h},[j,l]),C=(0,b.useCallback)(a=>{let b;if(!j)return h;let[,e]=(0,d.c)(l,j);if((0,d.e)(a)?b=a(x()):"number"==typeof a&&(b=a),"number"!=typeof b)return h;e({_l:b}),y.current=b;let f=[],[g]=(0,d.c)(l,j),i=null;for(let a=0;a<b;++a){let[b]=(0,d.s)(c(a,i)),[e]=(0,d.c)(l,b),h=b?e().data:d.U;if((0,d.i)(h))return B(g().data);f.push(h),i=h}return B(f)},[j,l,B,x]);return{size:x(),setSize:C,mutate:B,get data(){return A.data},get error(){return A.error},get isValidating(){return A.isValidating},get isLoading(){return A.isLoading}}});var j=a.i(287702),k=a.i(759497);a.s(["useServerPages",0,function(a){let c=a.size??j.PAGE_SIZE,{key:d}=a,{data:e,error:f,isLoading:g,isValidating:h,setSize:l,mutate:m}=i((a,b)=>(0,k.resolveKey)(d(a,b)),k.fetchRoute,{dedupingInterval:500,revalidateOnMount:!0,revalidateOnFocus:!0,revalidateOnReconnect:!0,focusThrottleInterval:1e3,revalidateFirstPage:!1,...a.swr}),n=e??[],o=(0,b.useMemo)(()=>(e??[]).flat(),[e]),p=n.at(-1),q=void 0!==p&&p.length>=c,r=(0,b.useRef)(0),s=h&&n.length>0&&r.current>n.length,t=(0,b.useRef)({isValidating:h,setSize:l,pages:n.length});t.current={isValidating:h,setSize:l,pages:n.length};let u=(0,b.useCallback)(()=>m(),[m]),v=(0,k.resolveKey)(d(0,null)),w="string"==typeof v?v:v?.url;(0,b.useEffect)(()=>{if(w)return(0,k.registerPagedReader)({url:w,refresh:u})},[w,u]);let x=function(a,c={}){let{enabled:d=!0,margin:e="600px",revision:f}=c,g=(0,b.useRef)(a);g.current=a;let h=(0,b.useRef)(null),i=(0,b.useRef)(null),j=(0,b.useCallback)(a=>{h.current=a},[]);return(0,b.useEffect)(()=>{i.current?.disconnect();let a=h.current;if(a&&d)return i.current=new IntersectionObserver(([a])=>{a.isIntersecting&&g.current()},{root:function(a){let b=a.parentElement;for(;b;){let{overflowY:a}=getComputedStyle(b);if(("auto"===a||"scroll"===a)&&b.scrollHeight>b.clientHeight)return b;b=b.parentElement}return null}(a),rootMargin:e}),i.current.observe(a),()=>i.current?.disconnect()},[d,e,f]),j}(()=>{let a=t.current;a.isValidating||(r.current=a.pages+1,a.setSize(a.pages+1))},{enabled:q,revision:`${n.length}:${h}`});return{items:o,isLoading:g,isLoadingMore:s,error:f,hasMore:q,sentinelRef:x,refresh:u}}],862966)},16966,a=>{"use strict";var b=a.i(572131),c=a.i(801811),d=a.i(559539),e=a.i(492403);a.s(["useCompositeItem",0,function(a={}){let{highlightItemOnHover:f,highlightedIndex:g,onHighlightedIndexChange:h}=(0,d.useCompositeRootContext)(),{ref:i,index:j}=(0,e.useCompositeListItem)(a),k=g===j,l=b.useRef(null),m=(0,c.useMergedRefs)(i,l);return{compositeProps:{tabIndex:k?0:-1,onFocus(){h(j)},onMouseMove(){let a=l.current;if(!f||!a)return;let b=a.hasAttribute("disabled")||"true"===a.ariaDisabled;k||b||a.focus()}},compositeRef:m,index:j}}])},579923,a=>{"use strict";var b=a.i(572131),c=a.i(779549),d=a.i(854401),e=a.i(357738),f=a.i(909392),g=a.i(187924);function h(){return new Map}function i(){return new Set}function j(a,b){return a.compareDocumentPosition(b)&Node.DOCUMENT_POSITION_FOLLOWING?-1:1}a.s(["CompositeList",0,function(a){let{children:k,elementsRef:l,labelsRef:m,onMapChange:n}=a,o=(0,d.useStableCallback)(n),[,p]=b.useState(!1),q=(0,c.useRefWithInit)(i).current,r=(0,c.useRefWithInit)(h).current,s=b.useRef(0),t=b.useRef(!0),u=b.useRef(null),v=b.useRef(null),w=(0,d.useStableCallback)(()=>{t.current||(t.current=!0,p(a=>!a))}),x=(0,d.useStableCallback)((a,b)=>{r.set(a,b),w()}),y=(0,d.useStableCallback)(a=>{r.delete(a),w()}),z=(0,d.useStableCallback)(a=>{let b=new Map;return l.current.length=0,m&&(m.current.length=0),a.forEach(a=>{b.set(a.element,{...a.registration.metadata??{},index:a.index}),l.current[a.index]=a.element,m&&(m.current[a.index]=void 0!==a.registration.label?a.registration.label:a.registration.textRef?.current?.textContent??a.element.textContent)}),s.current=l.current.length,b}),A=(0,d.useStableCallback)(()=>{var a;let b,c,d,e,[f,g]=(a=r,b=new Set,c=[],d=[],a.forEach((a,e)=>{if(!e.isConnected)return;let f=a.index,g={index:f??-1,element:e,registration:a};null===f?d.push(g):f>=0&&(b.add(f),c.push(g))}),e=0,d.sort((a,b)=>j(a.element,b.element)),d.forEach(a=>{for(;b.has(e);)e+=1;a.index=e,c.push(a),e+=1}),b.size>0&&c.sort((a,b)=>a.index-b.index),[c,d.map(a=>a.element)]),h=z(f),i=u.current,k=!i||i.length!==f.length||f.some((a,b)=>{let c=i[b];return a.index!==c.index||a.element!==c.element||a.registration.index!==c.registration.index||a.registration.metadata!==c.registration.metadata});!function(a){if(v.current?.disconnect(),v.current=null,"function"!=typeof MutationObserver||a.length<2)return;let b=new MutationObserver(c=>{if(!function(a){for(let b of a)for(let a=0;a<b.removedNodes.length;a+=1)if(b.removedNodes[a].isConnected)return!0;return!1}(c))return;let d=null;for(let c of a)if(c.isConnected){if(d&&j(d,c)>0){b.disconnect(),w();return}d=c}});v.current=b;let c=new Set;for(let b=1;b<a.length;b+=1){let d=function(a,b){let c=a.parentElement;for(;c&&!c.contains(b);)c=c.parentElement;return c}(a[b-1],a[b]);d&&c.add(d)}c.forEach(a=>b.observe(a,{childList:!0}))}(g),u.current=f,t.current=!1,k&&(q.forEach(a=>a(h)),o(h))});(0,e.useIsoLayoutEffect)(()=>(!t.current&&u.current&&z(u.current),()=>{l.current=[],m&&(m.current=[])}),[l,m,z]),(0,e.useIsoLayoutEffect)(()=>{t.current&&A()}),(0,e.useIsoLayoutEffect)(()=>()=>{v.current?.disconnect(),t.current=!0},[]);let B=(0,d.useStableCallback)(a=>(q.add(a),()=>{q.delete(a)})),C=b.useMemo(()=>({register:x,unregister:y,subscribeMapChange:B,nextIndexRef:s}),[x,y,B,s]);return(0,g.jsx)(f.CompositeListContext.Provider,{value:C,children:k})}])},909392,a=>{"use strict";var b=a.i(572131);let c=b.createContext({register:()=>{},unregister:()=>{},subscribeMapChange:()=>()=>{},nextIndexRef:{current:0}});a.s(["CompositeListContext",0,c,"useCompositeListContext",0,function(){return b.useContext(c)}])},492403,a=>{"use strict";var b=a.i(572131),c=a.i(357738),d=a.i(909392);a.s(["useCompositeListItem",0,function(a={}){let{guess:e,label:f,metadata:g,textRef:h,index:i}=a,{register:j,unregister:k,subscribeMapChange:l,nextIndexRef:m}=(0,d.useCompositeListContext)(),n=b.useRef(-1),[o,p]=b.useState(null==i&&e?()=>{if(-1===n.current){let a=m.current;m.current+=1,n.current=a}return n.current}:-1),q=i??o,r=b.useRef(null),s=b.useCallback(a=>{let b=r.current;b&&k(b),r.current=a,a&&j(a,{metadata:g??null,index:i??null,label:f,textRef:h})},[i,j,k,g,f,h]);return(0,c.useIsoLayoutEffect)(()=>{if(null==i)return l(a=>{let b=r.current?a.get(r.current)?.index:null;null!=b&&p(b)})},[i,l]),{ref:s,index:q}}])},589027,a=>{"use strict";var b=a.i(164831);let c={name:"chevron-down",size:24,node:[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]};c.node;let d=(0,b.default)(c);a.s(["ChevronDown",0,d],589027)},875160,a=>{"use strict";var b=a.i(702918);a.s(["Loader2",()=>b.default])},474215,a=>{"use strict";var b=a.i(176965);a.s(["X",()=>b.default])}];
2
+
3
+ //# sourceMappingURL=_1myh7ss._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[109788,a=>{"use strict";var b=a.i(187924),c=a.i(263359),d=a.i(126766),e=a.i(474896),f=a.i(164831);let g={name:"log-out",size:24,node:[["path",{d:"m16 17 5-5-5-5",key:"1bji2h"}],["path",{d:"M21 12H9",key:"dn1m92"}],["path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4",key:"1uf3rs"}]]};g.node;let h=(0,f.default)(g),i={name:"shield-check",size:24,node:[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]};i.node;let j=(0,f.default)(i);var k=a.i(474215),l=a.i(986368),m=a.i(767561),n=a.i(340695),o=a.i(446181),p=a.i(341889),q=a.i(913834),r=a.i(619477),s=a.i(199169),t=a.i(313237),u=a.i(759497),v=a.i(497895),w=a.i(405050);let x=(0,w.createServerReference)("7f25f48f714d55b29b84556cb6a6edd9daedb55d52",w.callServer,void 0,w.findSourceMapURL,"removeSignInAction");var y=a.i(349009);let z=[[c.AppWindow,"A bot opens a window","When its work needs you signed in to a site, it opens that site on your screen and asks."],[e.LogIn,"You sign in there","The app keeps that sign-in here — the site's session, never your password."],[j,"Only that bot uses it","Later work is signed in without asking. Another bot has to ask you first."]];function A(){return(0,b.jsx)("ol",{className:"grid gap-3 pb-5 sm:grid-cols-3",children:z.map(([a,c,d],e)=>(0,b.jsxs)("li",{className:"flex gap-3 rounded-xl bg-muted/40 p-3.5",children:[(0,b.jsx)("span",{className:"grid size-8 shrink-0 place-items-center rounded-lg bg-background text-muted-foreground ring-1 ring-border/60",children:(0,b.jsx)(a,{className:"size-4"})}),(0,b.jsxs)("span",{className:"min-w-0 space-y-0.5",children:[(0,b.jsxs)("span",{className:"block text-[13px] font-medium",children:[e+1,". ",c]}),(0,b.jsx)("span",{className:"block text-xs leading-relaxed text-muted-foreground",children:d})]})]},c))})}function B({signIn:a,bots:c}){let e=()=>(0,u.revalidate)(m.queryKey.signIns),[f,g]=(0,t.useServerAction)(y.setSignInBotAction,{onOk:e}),[i,j]=(0,t.useServerAction)(x,{onOk:e}),l=async()=>{await o.notify.confirm({title:`Sign out of ${a.site}?`,description:"What is kept here is removed, and the bots that used it ask you to sign in again. The site itself may still list the session until it ends it.",okText:"Sign out",destructive:!0})&&i(a.site).catch(()=>{})};return(0,b.jsxs)("div",{className:"flex flex-col gap-2.5 p-4",children:[(0,b.jsxs)("div",{className:"flex items-center gap-3",children:[(0,b.jsx)("span",{className:"grid size-10 shrink-0 place-items-center rounded-xl bg-muted/60",children:(0,b.jsx)(p.SiteIcon,{host:a.site,className:"size-5 rounded-[5px]",fallback:(0,b.jsx)(d.KeyRound,{className:"size-4 text-muted-foreground"})})}),(0,b.jsxs)("span",{className:"min-w-0 flex-1 space-y-0.5",children:[(0,b.jsx)("span",{className:"block truncate text-sm font-medium",children:a.site}),(0,b.jsx)("span",{className:"block truncate text-[13px] text-muted-foreground",children:a.account})]}),(0,b.jsx)("span",{className:"shrink-0 font-mono text-[11px] text-muted-foreground tabular-nums",children:a.usedAt?`used ${(0,s.whenOf)(a.usedAt)}`:`kept ${(0,s.whenOf)(a.keptAt)}`}),(0,b.jsxs)(n.Button,{variant:"outline",size:"sm",loading:j,onClick:()=>void l(),children:[(0,b.jsx)(h,{}),"Sign out"]})]}),(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-1.5 pl-13",children:[a.bots.map(d=>(0,b.jsxs)("span",{className:"flex h-7 items-center gap-1.5 rounded-full bg-muted/60 pr-1 pl-1.5 text-[13px]",children:[(0,b.jsx)(q.BotMark,{size:18,seed:d,...C(d,c)}),d,(0,b.jsx)("button",{type:"button",disabled:g,"aria-label":`${d} may no longer use it`,onClick:()=>void f(a.site,d,!1).catch(()=>{}),className:"grid size-5 place-items-center rounded-full text-muted-foreground outline-none hover:bg-muted hover:text-foreground focus-visible:ring-3 focus-visible:ring-ring/50",children:(0,b.jsx)(k.X,{className:"size-3"})})]},d)),0===a.bots.length&&0===a.asking.length&&(0,b.jsx)("span",{className:"text-[13px] text-muted-foreground",children:"No bot may use it. One that needs it will ask."}),a.asking.map(d=>(0,b.jsxs)("span",{className:(0,v.cn)("flex h-7 items-center gap-1.5 rounded-full pr-1 pl-1.5 text-[13px] ring-1 ring-border ring-inset",v.WAITING_INK),children:[(0,b.jsx)(q.BotMark,{size:18,seed:d,...C(d,c)}),d," asks",(0,b.jsx)(n.Button,{size:"sm",variant:"secondary",className:"h-5 rounded-full px-2 text-[11px]",disabled:g,onClick:()=>void f(a.site,d,!0).catch(()=>{}),children:"Allow"})]},d))]})]})}let C=(a,b)=>{let c=b?.find(b=>b.name===a)?.icon;return{color:c?.color,shape:c?.shape,outline:c?.outline,paint:c?.paint,notify:!1}};a.s(["SignInsSetting",0,function(){let{data:a,isLoading:c,error:d}=(0,u.useServerRoute)(m.queryKey.signIns),{data:e}=(0,u.useServerRoute)(m.queryKey.bot);if((0,l.useAppEvent)({signins:()=>void(0,u.revalidate)(m.queryKey.signIns)}),c)return(0,b.jsx)(r.SettingSkeleton,{rows:3});if(d)return(0,b.jsx)(r.SettingError,{message:d.message});let f=a??[];return(0,b.jsxs)(r.SettingScreen,{footer:(0,b.jsx)(r.SettingRailNote,{children:"A site's session as the browser held it — never a password. Kept on this machine, outside the folder the bots work in."}),children:[(0,b.jsx)(A,{}),(0,b.jsx)(r.SettingItems,{children:0===f.length?(0,b.jsx)("p",{className:"p-4 text-sm leading-relaxed text-muted-foreground",children:"Nothing is kept yet. When a bot needs you signed in somewhere, it opens a window for you to sign in — and that sign-in is kept here for its later work."}):f.map(a=>(0,b.jsx)(B,{signIn:a,bots:e},a.site))})]})}],109788)},263359,a=>{"use strict";var b=a.i(164831);let c={name:"app-window",size:24,node:[["rect",{x:"2",y:"4",width:"20",height:"16",rx:"2",key:"izxlao"}],["path",{d:"M10 4v4",key:"pp8u80"}],["path",{d:"M2 8h20",key:"d11cs7"}],["path",{d:"M6 4v4",key:"1svtjw"}]]};c.node;let d=(0,b.default)(c);a.s(["AppWindow",0,d],263359)}];
1
+ module.exports=[109788,a=>{"use strict";var b=a.i(187924),c=a.i(263359),d=a.i(126766),e=a.i(474896),f=a.i(164831);let g={name:"log-out",size:24,node:[["path",{d:"m16 17 5-5-5-5",key:"1bji2h"}],["path",{d:"M21 12H9",key:"dn1m92"}],["path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4",key:"1uf3rs"}]]};g.node;let h=(0,f.default)(g),i={name:"shield-check",size:24,node:[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]};i.node;let j=(0,f.default)(i);var k=a.i(474215),l=a.i(986368),m=a.i(767561),n=a.i(340695),o=a.i(446181),p=a.i(341889),q=a.i(913834),r=a.i(619477),s=a.i(199169),t=a.i(313237),u=a.i(759497),v=a.i(497895),w=a.i(405050);let x=(0,w.createServerReference)("7f34484c3c93b93610241d1e337883d91b6c93c73b",w.callServer,void 0,w.findSourceMapURL,"removeSignInAction");var y=a.i(364054);let z=[[c.AppWindow,"A bot opens a window","When its work needs you signed in to a site, it opens that site on your screen and asks."],[e.LogIn,"You sign in there","The app keeps that sign-in here — the site's session, never your password."],[j,"Only that bot uses it","Later work is signed in without asking. Another bot has to ask you first."]];function A(){return(0,b.jsx)("ol",{className:"grid gap-3 pb-5 sm:grid-cols-3",children:z.map(([a,c,d],e)=>(0,b.jsxs)("li",{className:"flex gap-3 rounded-xl bg-muted/40 p-3.5",children:[(0,b.jsx)("span",{className:"grid size-8 shrink-0 place-items-center rounded-lg bg-background text-muted-foreground ring-1 ring-border/60",children:(0,b.jsx)(a,{className:"size-4"})}),(0,b.jsxs)("span",{className:"min-w-0 space-y-0.5",children:[(0,b.jsxs)("span",{className:"block text-[13px] font-medium",children:[e+1,". ",c]}),(0,b.jsx)("span",{className:"block text-xs leading-relaxed text-muted-foreground",children:d})]})]},c))})}function B({signIn:a,bots:c}){let e=()=>(0,u.revalidate)(m.queryKey.signIns),[f,g]=(0,t.useServerAction)(y.setSignInBotAction,{onOk:e}),[i,j]=(0,t.useServerAction)(x,{onOk:e}),l=async()=>{await o.notify.confirm({title:`Sign out of ${a.site}?`,description:"What is kept here is removed, and the bots that used it ask you to sign in again. The site itself may still list the session until it ends it.",okText:"Sign out",destructive:!0})&&i(a.site).catch(()=>{})};return(0,b.jsxs)("div",{className:"flex flex-col gap-2.5 p-4",children:[(0,b.jsxs)("div",{className:"flex items-center gap-3",children:[(0,b.jsx)("span",{className:"grid size-10 shrink-0 place-items-center rounded-xl bg-muted/60",children:(0,b.jsx)(p.SiteIcon,{host:a.site,className:"size-5 rounded-[5px]",fallback:(0,b.jsx)(d.KeyRound,{className:"size-4 text-muted-foreground"})})}),(0,b.jsxs)("span",{className:"min-w-0 flex-1 space-y-0.5",children:[(0,b.jsx)("span",{className:"block truncate text-sm font-medium",children:a.site}),(0,b.jsx)("span",{className:"block truncate text-[13px] text-muted-foreground",children:a.account})]}),(0,b.jsx)("span",{className:"shrink-0 font-mono text-[11px] text-muted-foreground tabular-nums",children:a.usedAt?`used ${(0,s.whenOf)(a.usedAt)}`:`kept ${(0,s.whenOf)(a.keptAt)}`}),(0,b.jsxs)(n.Button,{variant:"outline",size:"sm",loading:j,onClick:()=>void l(),children:[(0,b.jsx)(h,{}),"Sign out"]})]}),(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-1.5 pl-13",children:[a.bots.map(d=>(0,b.jsxs)("span",{className:"flex h-7 items-center gap-1.5 rounded-full bg-muted/60 pr-1 pl-1.5 text-[13px]",children:[(0,b.jsx)(q.BotMark,{size:18,seed:d,...C(d,c)}),d,(0,b.jsx)("button",{type:"button",disabled:g,"aria-label":`${d} may no longer use it`,onClick:()=>void f(a.site,d,!1).catch(()=>{}),className:"grid size-5 place-items-center rounded-full text-muted-foreground outline-none hover:bg-muted hover:text-foreground focus-visible:ring-3 focus-visible:ring-ring/50",children:(0,b.jsx)(k.X,{className:"size-3"})})]},d)),0===a.bots.length&&0===a.asking.length&&(0,b.jsx)("span",{className:"text-[13px] text-muted-foreground",children:"No bot may use it. One that needs it will ask."}),a.asking.map(d=>(0,b.jsxs)("span",{className:(0,v.cn)("flex h-7 items-center gap-1.5 rounded-full pr-1 pl-1.5 text-[13px] ring-1 ring-border ring-inset",v.WAITING_INK),children:[(0,b.jsx)(q.BotMark,{size:18,seed:d,...C(d,c)}),d," asks",(0,b.jsx)(n.Button,{size:"sm",variant:"secondary",className:"h-5 rounded-full px-2 text-[11px]",disabled:g,onClick:()=>void f(a.site,d,!0).catch(()=>{}),children:"Allow"})]},d))]})]})}let C=(a,b)=>{let c=b?.find(b=>b.name===a)?.icon;return{color:c?.color,shape:c?.shape,outline:c?.outline,paint:c?.paint,notify:!1}};a.s(["SignInsSetting",0,function(){let{data:a,isLoading:c,error:d}=(0,u.useServerRoute)(m.queryKey.signIns),{data:e}=(0,u.useServerRoute)(m.queryKey.bot);if((0,l.useAppEvent)({signins:()=>void(0,u.revalidate)(m.queryKey.signIns)}),c)return(0,b.jsx)(r.SettingSkeleton,{rows:3});if(d)return(0,b.jsx)(r.SettingError,{message:d.message});let f=a??[];return(0,b.jsxs)(r.SettingScreen,{footer:(0,b.jsx)(r.SettingRailNote,{children:"A site's session as the browser held it — never a password. Kept on this machine, outside the folder the bots work in."}),children:[(0,b.jsx)(A,{}),(0,b.jsx)(r.SettingItems,{children:0===f.length?(0,b.jsx)("p",{className:"p-4 text-sm leading-relaxed text-muted-foreground",children:"Nothing is kept yet. When a bot needs you signed in somewhere, it opens a window for you to sign in — and that sign-in is kept here for its later work."}):f.map(a=>(0,b.jsx)(B,{signIn:a,bots:e},a.site))})]})}],109788)},263359,a=>{"use strict";var b=a.i(164831);let c={name:"app-window",size:24,node:[["rect",{x:"2",y:"4",width:"20",height:"16",rx:"2",key:"izxlao"}],["path",{d:"M10 4v4",key:"pp8u80"}],["path",{d:"M2 8h20",key:"d11cs7"}],["path",{d:"M6 4v4",key:"1svtjw"}]]};c.node;let d=(0,b.default)(c);a.s(["AppWindow",0,d],263359)}];
2
2
 
3
3
  //# sourceMappingURL=_1neoj22._.js.map