thursday-agent 0.10.0 → 0.12.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 (308) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +0 -1
  3. package/.next/build-manifest.json +3 -3
  4. package/.next/prerender-manifest.json +3 -3
  5. package/.next/routes-manifest.json +0 -6
  6. package/.next/server/app/_global-error/page.js.nft.json +1 -1
  7. package/.next/server/app/_global-error.html +1 -1
  8. package/.next/server/app/_global-error.rsc +1 -1
  9. package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  10. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  11. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  12. package/.next/server/app/_not-found/page.js.nft.json +1 -1
  13. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  14. package/.next/server/app/_not-found.html +1 -1
  15. package/.next/server/app/_not-found.rsc +2 -2
  16. package/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  17. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  18. package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  19. package/.next/server/app/api/artifact/route.js.nft.json +1 -1
  20. package/.next/server/app/api/bot/keep-working/route.js.nft.json +1 -1
  21. package/.next/server/app/api/bot/memory/files/route.js.nft.json +1 -1
  22. package/.next/server/app/api/bot/memory/route.js.nft.json +1 -1
  23. package/.next/server/app/api/bot/route.js.nft.json +1 -1
  24. package/.next/server/app/api/bot/thread/[id]/route.js.nft.json +1 -1
  25. package/.next/server/app/api/bot/thread/route.js.nft.json +1 -1
  26. package/.next/server/app/api/config/route.js.nft.json +1 -1
  27. package/.next/server/app/api/events/route.js.nft.json +1 -1
  28. package/.next/server/app/api/favicon/[host]/route.js.nft.json +1 -1
  29. package/.next/server/app/api/file/[...path]/route.js.nft.json +1 -1
  30. package/.next/server/app/api/llm-model/catalog/route.js.nft.json +1 -1
  31. package/.next/server/app/api/llm-model/credits/route.js.nft.json +1 -1
  32. package/.next/server/app/api/llm-model/route.js.nft.json +1 -1
  33. package/.next/server/app/api/llm-model/subscription/route.js.nft.json +1 -1
  34. package/.next/server/app/api/mcp/[name]/route.js.nft.json +1 -1
  35. package/.next/server/app/api/mcp/oauth/callback/route.js.nft.json +1 -1
  36. package/.next/server/app/api/mcp/route.js.nft.json +1 -1
  37. package/.next/server/app/api/mcp/tools/route.js.nft.json +1 -1
  38. package/.next/server/app/api/memory/edit/route.js.nft.json +1 -1
  39. package/.next/server/app/api/memory/route.js.nft.json +1 -1
  40. package/.next/server/app/api/reach/route.js +13 -13
  41. package/.next/server/app/api/reach/route.js.nft.json +1 -1
  42. package/.next/server/app/api/routine/route.js.nft.json +1 -1
  43. package/.next/server/app/api/signins/route.js +1 -1
  44. package/.next/server/app/api/signins/route.js.nft.json +1 -1
  45. package/.next/server/app/api/skills/[source]/[name]/route.js.nft.json +1 -1
  46. package/.next/server/app/api/skills/route.js.nft.json +1 -1
  47. package/.next/server/app/api/thursday/call/route.js.nft.json +1 -1
  48. package/.next/server/app/api/thursday/skills/route.js.nft.json +1 -1
  49. package/.next/server/app/api/thursday/text/route.js.nft.json +1 -1
  50. package/.next/server/app/api/thursday/tool-call/route.js +14 -15
  51. package/.next/server/app/api/thursday/tool-call/route.js.nft.json +1 -1
  52. package/.next/server/app/api/workspace/files/route.js.nft.json +1 -1
  53. package/.next/server/app/api/workspace/route.js.nft.json +1 -1
  54. package/.next/server/app/artifact/[...path]/page/server-reference-manifest.json +1 -1
  55. package/.next/server/app/artifact/[...path]/page.js.nft.json +1 -1
  56. package/.next/server/app/artifact/[...path]/page_client-reference-manifest.js +1 -1
  57. package/.next/server/app/favicon.ico/route.js.nft.json +1 -1
  58. package/.next/server/app/manifest.webmanifest/route.js.nft.json +1 -1
  59. package/.next/server/app/page/server-reference-manifest.json +56 -56
  60. package/.next/server/app/page.js +4 -4
  61. package/.next/server/app/page.js.nft.json +1 -1
  62. package/.next/server/app/page_client-reference-manifest.js +1 -1
  63. package/.next/server/app-paths-manifest.json +0 -1
  64. package/.next/server/chunks/[root-of-the-server]__014ydvq._.js +2 -2
  65. package/.next/server/chunks/[root-of-the-server]__0209ah4._.js +7 -5
  66. package/.next/server/chunks/[root-of-the-server]__04r4h-2._.js +4 -2
  67. package/.next/server/chunks/[root-of-the-server]__04wldw9._.js +1 -1
  68. package/.next/server/chunks/[root-of-the-server]__0542v_d._.js +3 -0
  69. package/.next/server/chunks/[root-of-the-server]__0cfszwn._.js +1 -1
  70. package/.next/server/chunks/[root-of-the-server]__0gewdg9._.js +2 -2
  71. package/.next/server/chunks/[root-of-the-server]__0mrk2it._.js +1 -1
  72. package/.next/server/chunks/[root-of-the-server]__0npn_pn._.js +1 -1
  73. package/.next/server/chunks/[root-of-the-server]__0nr-v8s._.js +1 -1
  74. package/.next/server/chunks/[root-of-the-server]__0rqgb17._.js +1 -1
  75. package/.next/server/chunks/[root-of-the-server]__1-swlkw._.js +2 -2
  76. package/.next/server/chunks/[root-of-the-server]__12iddfq._.js +1 -1
  77. package/.next/server/chunks/[root-of-the-server]__1ai5lme._.js +3 -3
  78. package/.next/server/chunks/[root-of-the-server]__1cjxw0-._.js +2 -2
  79. package/.next/server/chunks/{[root-of-the-server]__1fy2g82._.js → [root-of-the-server]__1k3j52n._.js} +1 -1
  80. package/.next/server/chunks/[root-of-the-server]__1kyjt5m._.js +3 -3
  81. package/.next/server/chunks/[root-of-the-server]__1tg5got._.js +1 -1
  82. package/.next/server/chunks/[root-of-the-server]__1ygplx1._.js +1 -1
  83. package/.next/server/chunks/_05v8k21._.js +3 -1
  84. package/.next/server/chunks/_0awtznl._.js +1 -1
  85. package/.next/server/chunks/_0f6ts7z._.js +1 -1
  86. package/.next/server/chunks/_0na2fj1._.js +1 -1
  87. package/.next/server/chunks/_0x-ej3f._.js +17 -17
  88. package/.next/server/chunks/_10tkr26._.js +1 -1
  89. package/.next/server/chunks/_12-amdu._.js +2 -2
  90. package/.next/server/chunks/_15740dw._.js +60 -0
  91. package/.next/server/chunks/_1dc_d1q._.js +3 -3
  92. package/.next/server/chunks/_1i350l5._.js +3 -1
  93. package/.next/server/chunks/_1jc5g4p._.js +2 -2
  94. package/.next/server/chunks/_1jn-aep._.js +4 -4
  95. package/.next/server/chunks/_1m88lkh._.js +11 -11
  96. package/.next/server/chunks/_1ogqovh._.js +4 -4
  97. package/.next/server/chunks/_1taa4bs._.js +1 -1
  98. package/.next/server/chunks/_1tpr507._.js +1 -1
  99. package/.next/server/chunks/_1uuucy-._.js +1 -1
  100. package/.next/server/chunks/_1zxp-p6._.js +1 -1
  101. package/.next/server/chunks/features_0rfvely._.js +5 -3
  102. package/.next/server/chunks/ssr/[root-of-the-server]__0a967km._.js +3 -0
  103. package/.next/server/chunks/ssr/{[root-of-the-server]__1se25x0._.js → [root-of-the-server]__0hpp3nw._.js} +29 -13
  104. package/.next/server/chunks/ssr/[root-of-the-server]__0tzekbl._.js +24 -60
  105. package/.next/server/chunks/ssr/{[root-of-the-server]__0tvavy9._.js → [root-of-the-server]__1iwyp1e._.js} +1 -1
  106. package/.next/server/chunks/ssr/[root-of-the-server]__1r77-88._.js +3 -0
  107. package/.next/server/chunks/ssr/[root-of-the-server]__1w9hqq8._.js +1 -1
  108. package/.next/server/chunks/ssr/_026qnc9._.js +1 -1
  109. package/.next/server/chunks/ssr/{_173siic._.js → _02c7o30._.js} +2 -2
  110. package/.next/server/chunks/ssr/_097-ljd._.js +1 -1
  111. package/.next/server/chunks/ssr/_0euzzf8._.js +3 -0
  112. package/.next/server/chunks/ssr/{_1u2jw0i._.js → _0fbi6om._.js} +3 -3
  113. package/.next/server/chunks/ssr/_0fqhhwi._.js +1 -1
  114. package/.next/server/chunks/ssr/_0igfcax._.js +20 -0
  115. package/.next/server/chunks/ssr/_0ld9_qq._.js +1 -1
  116. package/.next/server/chunks/ssr/_0nvh1h9._.js +3 -0
  117. package/.next/server/chunks/ssr/_0qmpw35._.js +3 -0
  118. package/.next/server/chunks/ssr/{_1yk6yak._.js → _0rmaf32._.js} +2 -2
  119. package/.next/server/chunks/ssr/_0uv-qs4._.js +3 -0
  120. package/.next/server/chunks/ssr/{_1doidrw._.js → _10f-jib._.js} +2 -2
  121. package/.next/server/chunks/ssr/{_05rxyf9._.js → _10mo72m._.js} +2 -2
  122. package/.next/server/chunks/ssr/_12mijol._.js +11 -11
  123. package/.next/server/chunks/ssr/_132qkfz._.js +1 -1
  124. package/.next/server/chunks/ssr/_15zqt-t._.js +1 -1
  125. package/.next/server/chunks/ssr/_16gfxpn._.js +3 -0
  126. package/.next/server/chunks/ssr/_184327j._.js +1 -1
  127. package/.next/server/chunks/ssr/{_1ng831c._.js → _18ujhhq._.js} +2 -2
  128. package/.next/server/chunks/ssr/_1d423aj._.js +7 -5
  129. package/.next/server/chunks/ssr/_1lx6w_o._.js +67 -0
  130. package/.next/server/chunks/ssr/_1mqn9mc._.js +1 -1
  131. package/.next/server/chunks/ssr/_1neoj22._.js +1 -1
  132. package/.next/server/chunks/ssr/{_19n08g5._.js → _1ntpny5._.js} +2 -2
  133. package/.next/server/chunks/ssr/{_0bp-_fi._.js → _1o1g4uk._.js} +3 -3
  134. package/.next/server/chunks/ssr/_1xoch6f._.js +1 -1
  135. package/.next/server/chunks/ssr/_1yh5bj5._.js +1 -1
  136. package/.next/server/chunks/ssr/{_0tg0vf8._.js → _2008vmi._.js} +8 -8
  137. package/.next/server/chunks/ssr/{features_bot_1yr-_pm._.js → features_bot_1n1s7bh._.js} +2 -2
  138. package/.next/server/chunks/ssr/features_connectors_components_mcp-setting_tsx_0jmbgvp._.js +1 -1
  139. package/.next/server/chunks/ssr/features_memory_components_memory-setting_tsx_0oa43sw._.js +1 -1
  140. package/.next/server/chunks/ssr/features_routine_components_routine-setting_tsx_055fknz._.js +1 -1
  141. package/.next/server/chunks/ssr/features_workspace_00jz2hu._.js +1 -1
  142. package/.next/server/chunks/ssr/{node_modules_1n0h9sf._.js → node_modules_0-x0zxm._.js} +1 -1
  143. package/.next/server/chunks/ssr/{node_modules_1xzo2wn._.js → node_modules_00nrzz_._.js} +1 -1
  144. package/.next/server/chunks/ssr/{node_modules_0511ha-._.js → node_modules_01ed0yi._.js} +1 -1
  145. package/.next/server/chunks/ssr/{node_modules_18woe20._.js → node_modules_01u4ea3._.js} +1 -1
  146. package/.next/server/chunks/ssr/{node_modules_1expacw._.js → node_modules_05b6e99._.js} +1 -1
  147. package/.next/server/chunks/ssr/{node_modules_0eb4rx7._.js → node_modules_07jp6tj._.js} +1 -1
  148. package/.next/server/chunks/ssr/{node_modules_0piws2a._.js → node_modules_0azd56x._.js} +1 -1
  149. package/.next/server/chunks/ssr/{node_modules_0f2k5l0._.js → node_modules_0b0iy01._.js} +1 -1
  150. package/.next/server/chunks/ssr/{node_modules_0wq4-ts._.js → node_modules_0fpnetd._.js} +1 -1
  151. package/.next/server/chunks/ssr/{node_modules_11hbkuj._.js → node_modules_0ky76fz._.js} +1 -1
  152. package/.next/server/chunks/ssr/{node_modules_048wmmj._.js → node_modules_0lautv3._.js} +1 -1
  153. package/.next/server/chunks/ssr/{node_modules_1dcbvfw._.js → node_modules_0m3_5ge._.js} +1 -1
  154. package/.next/server/chunks/ssr/{node_modules_0pk6i-e._.js → node_modules_0operbz._.js} +1 -1
  155. package/.next/server/chunks/ssr/{node_modules_1zkpek5._.js → node_modules_0ou0all._.js} +1 -1
  156. package/.next/server/chunks/ssr/{node_modules_04t200t._.js → node_modules_0ucridu._.js} +1 -1
  157. package/.next/server/chunks/ssr/{node_modules_08g12f-._.js → node_modules_0v_-uht._.js} +1 -1
  158. package/.next/server/chunks/ssr/{node_modules_1m2ho33._.js → node_modules_0yzmxfq._.js} +1 -1
  159. package/.next/server/chunks/ssr/{node_modules_1ksh9gy._.js → node_modules_19b0bir._.js} +1 -1
  160. package/.next/server/chunks/ssr/{node_modules_1qehmwm._.js → node_modules_1c2ikr9._.js} +1 -1
  161. package/.next/server/chunks/ssr/{node_modules_1_afpz7._.js → node_modules_1hv-j1l._.js} +1 -1
  162. package/.next/server/chunks/ssr/{node_modules_0cdu6jq._.js → node_modules_1iau_ea._.js} +1 -1
  163. package/.next/server/chunks/ssr/{node_modules_1zf46lp._.js → node_modules_1ma_y68._.js} +1 -1
  164. package/.next/server/chunks/ssr/{node_modules_0s1lwc9._.js → node_modules_1omg9xr._.js} +1 -1
  165. package/.next/server/chunks/ssr/{node_modules_1cxc8kn._.js → node_modules_1wgnj8q._.js} +1 -1
  166. package/.next/server/chunks/ssr/{node_modules_0zjqwz7._.js → node_modules_1wvf3oo._.js} +1 -1
  167. package/.next/server/chunks/ssr/{node_modules_1_ban4u._.js → node_modules_1z3sh11._.js} +1 -1
  168. package/.next/server/chunks/ssr/{node_modules_@mermaid-js_parser_dist_chunks_mermaid-parser_core_0avl8-1._.js → node_modules_@mermaid-js_parser_dist_chunks_mermaid-parser_core_0tmjn9w._.js} +1 -1
  169. package/.next/server/chunks/ssr/{node_modules_@mermaid-js_parser_dist_chunks_mermaid-parser_core_14oslro._.js → node_modules_@mermaid-js_parser_dist_chunks_mermaid-parser_core_1_e8c3o._.js} +1 -1
  170. package/.next/server/middleware-build-manifest.js +3 -3
  171. package/.next/server/pages/404.html +1 -1
  172. package/.next/server/pages/500.html +1 -1
  173. package/.next/server/server-reference-manifest.js +1 -1
  174. package/.next/server/server-reference-manifest.json +57 -57
  175. package/.next/static/chunks/09pkygbht7ki8.js +18 -0
  176. package/.next/static/chunks/0bm-nhblcmmj4.js +17 -0
  177. package/.next/static/chunks/{22shnca_6zfzs.js → 0hhza87hkbqaz.js} +1 -1
  178. package/.next/static/chunks/{19ojn4lomsk0r.js → 0mscosx0eh3ee.js} +1 -1
  179. package/.next/static/chunks/{3vynnr71ghvom.js → 0p50d-au6-3hx.js} +2 -2
  180. package/.next/static/chunks/{42890jqk049q1.js → 0p9jcyqkpq71f.js} +1 -1
  181. package/.next/static/chunks/{35kwn237o4wdn.js → 0qgn3u86jkbm7.js} +1 -1
  182. package/.next/static/chunks/{2d4z3er53ng8r.js → 0samf80yu2b17.js} +1 -1
  183. package/.next/static/chunks/{1pjygp7hqib6j.js → 1czfknd4luo6t.js} +1 -1
  184. package/.next/static/chunks/{09120tms63y21.js → 1jz8n0mhtdzr8.js} +1 -1
  185. package/.next/static/chunks/206laxm6maiz2.js +1 -0
  186. package/.next/static/chunks/{24dst4mgurbsh.js → 2_c7mu6x1lu49.js} +1 -1
  187. package/.next/static/chunks/{2ky81z-jgvasc.js → 2h-tlhb2ffhkk.js} +1 -1
  188. package/.next/static/chunks/{0oz3rs47yy3p8.js → 2i5_w8olnrvo0.js} +2 -2
  189. package/.next/static/chunks/{1mwee7xvitlp9.js → 2m8iqwc6sykln.js} +1 -1
  190. package/.next/static/chunks/{0o980477kfqez.js → 2r6xnyg7ezyxr.js} +1 -1
  191. package/.next/static/chunks/33fyp-byw48ju.js +65 -0
  192. package/.next/static/chunks/{2ndw4w4u2x51r.js → 35yd_27d9ylra.js} +1 -1
  193. package/.next/static/chunks/{3exjsi8pfdvzj.js → 3ag1i3__yl94f.js} +1 -1
  194. package/.next/static/chunks/{3obf9n3cxj99k.js → 3jvldk2wvwbge.js} +1 -1
  195. package/.next/static/chunks/3m_ejzg-xn21r.css +1 -0
  196. package/.next/static/chunks/{0w20wnnfrscq7.js → 3s-jpd3ky49-n.js} +1 -1
  197. package/.next/static/chunks/40ij3wsn3vt7h.js +1 -0
  198. package/README.md +1 -1
  199. package/app/api/thursday/tool-call/route.ts +1 -15
  200. package/docs/images/demo-still.jpg +0 -0
  201. package/docs/live-calls.md +19 -11
  202. package/features/ai/components/model-picker.tsx +8 -2
  203. package/features/ai/model.schema.ts +26 -0
  204. package/features/ai/prompts/live.prompt.ts +51 -26
  205. package/features/ai/prompts/prompt-helper.ts +1 -9
  206. package/features/ai/prompts/thursday.prompt.ts +8 -2
  207. package/features/bot/bot.run.ts +9 -3
  208. package/features/bot/bot.seed.ts +35 -91
  209. package/features/bot/components/bot-room.tsx +3 -12
  210. package/features/bot/components/room-list.tsx +1 -1
  211. package/features/bot/components/room-pill.tsx +44 -55
  212. package/features/bot/seed-bots.ts +2 -2
  213. package/features/config/components/config-badge.tsx +6 -0
  214. package/features/config/components/config-setting.tsx +20 -1
  215. package/features/config/components/models-badge.tsx +5 -7
  216. package/features/config/components/voice-key.tsx +24 -1
  217. package/features/config/config.const.ts +7 -0
  218. package/features/intro/components/intro.tsx +4 -19
  219. package/features/reach/reach.ts +2 -2
  220. package/features/settings/components/setting-ui.tsx +14 -5
  221. package/features/settings/components/settings.tsx +3 -1
  222. package/features/settings/settings.alert.ts +12 -11
  223. package/features/signins/signins.query.ts +66 -1
  224. package/features/thursday/components/side-captions.tsx +31 -8
  225. package/features/thursday/components/tab-state.tsx +5 -2
  226. package/features/thursday/components/thursday.tsx +158 -68
  227. package/features/thursday/components/write-line.tsx +37 -17
  228. package/features/thursday/thursday.action.ts +4 -20
  229. package/features/thursday/thursday.schema.ts +0 -9
  230. package/features/thursday/thursday.store.ts +11 -15
  231. package/features/thursday/thursday.text.ts +10 -8
  232. package/features/thursday/tool-line.ts +17 -6
  233. package/features/thursday/use-call-ring.ts +1 -5
  234. package/features/thursday/use-text-call.ts +37 -21
  235. package/features/thursday/use-thursday.ts +14 -44
  236. package/features/workspace/workspace.ts +4 -2
  237. package/guide/bots.md +12 -2
  238. package/guide/calls.md +9 -6
  239. package/guide/setup.md +4 -1
  240. package/lib/live/live.session.ts +0 -39
  241. package/package.json +1 -1
  242. package/scripts/live-session.test.mts +19 -26
  243. package/seed-skills/analyst/README.md +3 -4
  244. package/seed-skills/analyst/data-report/SKILL.md +5 -4
  245. package/seed-skills/insta/instagram/SKILL.md +5 -2
  246. package/seed-skills/insta/instagram/references/post.md +2 -2
  247. package/seed-skills/insta/instagram/scripts/compose.mjs +5 -1
  248. package/seed-skills/insta/instagram/scripts/inbox.mjs +5 -1
  249. package/seed-skills/insta/instagram/scripts/lib.mjs +12 -70
  250. package/seed-skills/insta/instagram/scripts/media.mjs +1 -1
  251. package/seed-skills/insta/instagram/scripts/profile.mjs +6 -2
  252. package/seed-skills/insta/instagram/scripts/read.mjs +5 -1
  253. package/seed-skills/insta/instagram/scripts/search.mjs +6 -2
  254. package/seed-skills/insta/instagram/scripts/sheet.mjs +31 -88
  255. package/seed-skills/insta/instagram/templates/carousel.html +1 -1
  256. package/seed-skills/tutor/picture-book/SKILL.md +16 -0
  257. package/seed-skills/tutor/picture-book/book/book.css +181 -0
  258. package/seed-skills/tutor/picture-book/book/book.html +33 -0
  259. package/seed-skills/tutor/picture-book/book/book.js +60 -0
  260. package/seed-skills/tutor/picture-book/references/picture-book.md +104 -0
  261. package/seed-skills/tutor/picture-book/scripts/book-video.mjs +177 -0
  262. package/seed-skills/tutor/picture-book/scripts/book.mjs +98 -0
  263. package/skills/browser/SKILL.md +13 -4
  264. package/skills/browser/references/scripts.md +55 -0
  265. package/{seed-skills/insta/instagram → skills/browser}/scripts/render.mjs +1 -1
  266. package/skills/browser/scripts/session.mjs +105 -0
  267. package/skills/browser/scripts/sheet.mjs +97 -0
  268. package/{seed-skills/insta/instagram → skills/browser}/scripts/webimage.mjs +1 -1
  269. package/skills/interactive-page/SKILL.md +4 -3
  270. package/{seed-skills/analyst/data-report → skills/interactive-page}/scripts/chart.mjs +3 -3
  271. package/skills/interactive-page/scripts/page.mjs +1 -0
  272. package/.next/server/app/api/probe/route/app-paths-manifest.json +0 -3
  273. package/.next/server/app/api/probe/route/build-manifest.json +0 -12
  274. package/.next/server/app/api/probe/route/server-reference-manifest.json +0 -4
  275. package/.next/server/app/api/probe/route.js +0 -10
  276. package/.next/server/app/api/probe/route.js.map +0 -5
  277. package/.next/server/app/api/probe/route.js.nft.json +0 -1
  278. package/.next/server/app/api/probe/route_client-reference-manifest.js +0 -3
  279. package/.next/server/chunks/[root-of-the-server]__012s2o8._.js +0 -3
  280. package/.next/server/chunks/[root-of-the-server]__0z0hc1f._.js +0 -4
  281. package/.next/server/chunks/[root-of-the-server]__1v7-zke._.js +0 -5
  282. package/.next/server/chunks/_0whlpyi._.js +0 -4
  283. package/.next/server/chunks/_next-internal_server_app_api_probe_route_actions_0cqd30j.js +0 -3
  284. package/.next/server/chunks/ssr/[root-of-the-server]__0cxqzfc._.js +0 -103
  285. package/.next/server/chunks/ssr/[root-of-the-server]__1-d2tgh._.js +0 -3
  286. package/.next/server/chunks/ssr/_070nv1_._.js +0 -3
  287. package/.next/server/chunks/ssr/_0hlxij-._.js +0 -3
  288. package/.next/server/chunks/ssr/_0p9pmxe._.js +0 -3
  289. package/.next/server/chunks/ssr/_0s41irp._.js +0 -3
  290. package/.next/server/chunks/ssr/_157yfrk._.js +0 -3
  291. package/.next/server/chunks/ssr/_17v-33v._.js +0 -20
  292. package/.next/server/chunks/ssr/_1flsjeo._.js +0 -3
  293. package/.next/static/chunks/03kgfyrli_0gz.js +0 -1
  294. package/.next/static/chunks/1p764d75_0lhv.js +0 -18
  295. package/.next/static/chunks/25zq8gzhbdsr7.js +0 -1
  296. package/.next/static/chunks/2qod5tqlpz8b7.js +0 -17
  297. package/.next/static/chunks/30skcjexa57zn.js +0 -101
  298. package/.next/static/chunks/3qq4o8w2rv_e9.css +0 -1
  299. package/lib/probe.server.ts +0 -17
  300. package/lib/probe.ts +0 -55
  301. package/seed-skills/mail/mail/SKILL.md +0 -37
  302. package/seed-skills/mail/mail/recipes/gmail.mjs +0 -448
  303. package/seed-skills/mail/mail/references/recipes.md +0 -55
  304. package/seed-skills/mail/mail/scripts/mail.mjs +0 -202
  305. /package/.next/static/{Ar5V4kMdL4CE1trx8anrH → QSe0rTdXU5kh5BBzr2XBB}/_buildManifest.js +0 -0
  306. /package/.next/static/{Ar5V4kMdL4CE1trx8anrH → QSe0rTdXU5kh5BBzr2XBB}/_clientMiddlewareManifest.js +0 -0
  307. /package/.next/static/{Ar5V4kMdL4CE1trx8anrH → QSe0rTdXU5kh5BBzr2XBB}/_ssgManifest.js +0 -0
  308. /package/{seed-skills/insta/instagram → skills/browser}/scripts/image-size.mjs +0 -0
@@ -1,3 +1,3 @@
1
- module.exports=[676504,a=>{"use strict";var b=a.i(187924);a.s([],20929),a.i(20929);var c=a.i(572131),d=a.i(854662);let e=c.createContext(void 0);function f(a){let b=c.useContext(e);if(void 0===b&&!a)throw Error((0,d.default)(33));return b}let g=c.createContext(void 0);function h(a){let b=c.useContext(g);if(void 0===b&&!a)throw Error((0,d.default)(36));return b}var i=a.i(926184),j=a.i(304478);let k=c.forwardRef(function(a,b){let{render:c,className:d,style:e,...g}=a,{store:k}=h(),{arrowRef:l,side:m,align:n,arrowUncentered:o,arrowStyles:p}=f(),q=k.useState("open");return(0,i.useRenderElement)("div",a,{ref:[l,b],stateAttributesMapping:j.popupStateMapping,state:{open:q,side:m,align:n,uncentered:o},props:{style:p,"aria-hidden":!0,...g}})}),l=c.createContext(void 0);function m(a=!0){let b=c.useContext(l);if(void 0===b&&!a)throw Error((0,d.default)(25));return b}var n=a.i(307436);let o=c.forwardRef(function(a,b){let{render:c,className:d,style:e,...f}=a,{store:g}=h(),k=g.useState("open"),l=g.useState("mounted"),o=g.useState("transitionStatus"),p=g.useState("lastOpenChangeReason"),q=m();return(0,i.useRenderElement)("div",a,{ref:q?.backdropRef?[b,q.backdropRef]:b,state:{open:k,transitionStatus:o},stateAttributesMapping:j.popupTransitionStateMapping,props:[{role:"presentation",hidden:!l,style:{pointerEvents:p===n.REASONS.triggerHover?"none":void 0,userSelect:"none",WebkitUserSelect:"none"}},f]})});var p=a.i(950381),q=a.i(524715);let r=c.createContext(void 0);var s=a.i(801811),t=a.i(221436),u=a.i(676459),v=a.i(151086),w=a.i(85933);function x(a){let{closeOnClick:b,highlighted:d,id:e,nodeId:f,store:g,typingRef:h,itemRef:i,itemMetadata:j}=a,{events:k}=g.useState("floatingTreeRoot"),l=g.useState("open"),o=m(!0),p=void 0!==o;return c.useMemo(()=>({id:e,role:"menuitem",tabIndex:l&&d?0:-1,onKeyDown(a){" "===a.key&&h?.current&&a.preventDefault()},onMouseMove(a){f&&k.emit("itemhover",{nodeId:f,target:a.currentTarget})},onClick(a){b&&k.emit("close",{domEvent:a,reason:n.REASONS.itemPress})},onMouseUp(a){if(o){let b=o.initialCursorPointRef.current;if(o.initialCursorPointRef.current=null,p&&b&&1>=Math.abs(a.clientX-b.x)&&1>=Math.abs(a.clientY-b.y)||p&&!v.platform.os.mac&&2===a.button)return}i.current&&g.context.allowMouseUpTriggerRef.current&&(!p||2===a.button)&&"regular-item"===j.type&&(0,w.dispatchClickWithModifiers)(i.current,a,{detail:1})}}),[b,d,e,k,f,l,g,h,i,o,p,j])}let y={type:"regular-item"};function z(a){let{closeOnClick:b,disabled:d,highlighted:e,id:f,store:g,typingRef:h=g.context.typingRef,nativeButton:i,itemMetadata:j,nodeId:k}=a,l=c.useRef(null),{getButtonProps:m,buttonRef:n}=(0,t.useButton)({disabled:d,focusableWhenDisabled:!0,native:i,composite:!0}),o=x({closeOnClick:b,highlighted:e,id:f,nodeId:k,store:g,typingRef:h,itemRef:l,itemMetadata:j}),p=c.useCallback(a=>(0,u.mergeProps)(o,{onMouseEnter(){"submenu-trigger"===j.type&&j.setActive()}},a,m),[o,m,j]),q=(0,s.useMergedRefs)(l,n);return c.useMemo(()=>({getItemProps:p,itemRef:q}),[p,q])}var A=a.i(492403),B=a.i(300557);let C={checked:a=>a?{"data-checked":""}:{"data-unchecked":""},...a.i(407393).transitionStatusMapping};var D=a.i(394552);let E=c.forwardRef(function(a,d){let{render:e,className:g,id:j,label:k,nativeButton:l=!1,disabled:m=!1,closeOnClick:o=!1,checked:s,defaultChecked:t,onCheckedChange:u,style:v,...w}=a,x=(0,A.useCompositeListItem)({guess:!0,label:k}),E=f(!0),F=(0,B.useBaseUiId)(j),{store:G}=h(),H=G.useState("disabled"),I=m||H,J=G.useState("isActive",x.index),K=G.useState("itemProps"),[L,M]=(0,p.useControlled)({controlled:s,default:t??!1,name:"MenuCheckboxItem",state:"checked"}),{getItemProps:N,itemRef:O}=z({closeOnClick:o,disabled:I,highlighted:J,id:F,store:G,nativeButton:l,nodeId:E?.context.nodeId,itemMetadata:y}),P=c.useMemo(()=>({disabled:I,highlighted:J,checked:L}),[I,J,L]),Q=(0,i.useRenderElement)("div",a,{state:P,stateAttributesMapping:C,props:[K,{role:"menuitemcheckbox","aria-checked":L,onClick:function(a){let b=(0,D.createChangeEventDetails)(n.REASONS.itemPress,a.nativeEvent,void 0,{preventUnmountOnClose:q.NOOP});u?.(!L,b),b.isCanceled||M(a=>!a)}},w,N],ref:[O,d,x.ref]});return(0,b.jsx)(r.Provider,{value:P,children:Q})});var F=a.i(348250),G=a.i(305687);let H=c.forwardRef(function(a,b){let{render:e,className:f,style:g,keepMounted:h=!1,...j}=a,k=function(){let a=c.useContext(r);if(void 0===a)throw Error((0,d.default)(30));return a}(),l=c.useRef(null),{transitionStatus:m,mounted:n,setMounted:o}=(0,F.useTransitionStatus)(k.checked);(0,G.useOpenChangeComplete)({batch:!0,enabled:!k.checked,open:k.checked,ref:l,onComplete(){k.checked||o(!1)}});let p={checked:k.checked,disabled:k.disabled,highlighted:k.highlighted,transitionStatus:m};return(0,i.useRenderElement)("span",a,{state:p,ref:[b,l],stateAttributesMapping:C,props:{"aria-hidden":!0,...j},enabled:h||n})}),I=c.createContext(void 0),J=c.forwardRef(function(a,d){let{render:e,className:f,style:g,...h}=a,[j,k]=c.useState(void 0),l=(0,i.useRenderElement)("div",a,{ref:d,props:{role:"group","aria-labelledby":j,...h}});return(0,b.jsx)(I.Provider,{value:k,children:l})});var K=a.i(357738);let L=c.forwardRef(function(a,b){let{render:e,className:f,style:g,id:h,...j}=a,k=(0,B.useBaseUiId)(h),l=function(){let a=c.useContext(I);if(void 0===a)throw Error((0,d.default)(31));return a}();return(0,K.useIsoLayoutEffect)(()=>(l(k),()=>{l(a=>a===k?void 0:a)}),[l,k]),(0,i.useRenderElement)("div",a,{ref:b,props:{id:k,"aria-hidden":!0,...j}})}),M=c.forwardRef(function(a,b){let{render:c,className:d,id:e,label:g,nativeButton:j=!1,disabled:k=!1,closeOnClick:l=!0,style:m,...n}=a,o=(0,A.useCompositeListItem)({guess:!0,label:g}),p=f(!0),q=(0,B.useBaseUiId)(e),{store:r}=h(),s=r.useState("disabled"),t=k||s,u=r.useState("isActive",o.index),v=r.useState("itemProps"),{getItemProps:w,itemRef:x}=z({closeOnClick:l,disabled:t,highlighted:u,id:q,store:r,nativeButton:j,nodeId:p?.context.nodeId,itemMetadata:y});return(0,i.useRenderElement)("div",a,{state:{disabled:t,highlighted:u},props:[v,n,w],ref:[x,b,o.ref]})}),N=c.forwardRef(function(a,b){let{render:d,className:e,id:g,label:j,closeOnClick:k=!1,style:l,...m}=a,n=c.useRef(null),o=(0,A.useCompositeListItem)({guess:!0,label:j}),p=f(!0),q=p?.context.nodeId,r=(0,B.useBaseUiId)(g),{store:s}=h(),v=s.useState("isActive",o.index),w=s.useState("itemProps"),z=s.context.typingRef,{getButtonProps:C,buttonRef:D}=(0,t.useButton)({native:!1,composite:!0}),E=x({closeOnClick:k,highlighted:v,id:r,nodeId:q,store:s,typingRef:z,itemRef:n,itemMetadata:y});return(0,i.useRenderElement)("a",a,{state:{highlighted:v},props:[w,m,function(a){return(0,u.mergeProps)(E,a,C)}],ref:[n,D,b,o.ref]})});var O=a.i(150687),P=a.i(181673),Q=a.i(19416),R=a.i(669649),S=a.i(3861);let T=c.forwardRef(function(a,d){let{render:e,className:g,style:k,finalFocus:l,...m}=a,{store:o}=h(),{side:p,align:q}=f(),r=null!=(0,Q.useToolbarRootContext)(!0),s=o.useState("open"),t=o.useState("transitionStatus"),u=o.useState("popupProps"),v=o.useState("mounted"),w=o.useState("instantType"),x=o.useState("activeTriggerElement"),y=o.useState("parent"),z=o.useState("lastOpenChangeReason"),A=o.useState("rootId"),B=o.useState("floatingRootContext"),C=o.useState("floatingTreeRoot"),E=o.useState("closeDelay"),F=o.useState("hoverEnabled"),H=o.useState("disabled"),I=o.useState("openMethod"),J="context-menu"===y.type;(0,G.useOpenChangeComplete)({open:s,ref:o.context.popupRef,onComplete(){s&&o.context.onOpenChangeComplete?.(!0)}}),c.useEffect(()=>{function a(a){o.setOpen(!1,(0,D.createChangeEventDetails)(a.reason,a.domEvent))}return C.events.on("close",a),()=>{C.events.off("close",a)}},[C.events,o]),(0,P.useHoverFloatingInteraction)(B,{enabled:F&&!H&&!J&&"menubar"!==y.type,closeDelay:E});let K=o.useStateSetter("popupElement"),L={transitionStatus:t,side:p,align:q,open:s,nested:"menu"===y.type,instant:w},M=(0,i.useRenderElement)("div",a,{state:L,ref:[d,o.context.popupRef,K],stateAttributesMapping:j.popupTransitionStateMapping,props:[u,{onKeyDown(a){r&&R.COMPOSITE_KEYS.has(a.key)&&a.stopPropagation()}},(0,S.getDisabledMountTransitionStyles)(t),m,{"data-rootownerid":A}]}),N=void 0===y.type||J;return(x||"menubar"===y.type&&z!==n.REASONS.outsidePress)&&(N=!0),(0,b.jsx)(O.FloatingFocusManager,{context:B,openInteractionType:I,modal:J,disabled:!v,returnFocus:void 0===l?N:l,initialFocus:"menu"!==y.type,restoreFocus:!0,externalTree:"menubar"!==y.type?C:void 0,previousFocusableElement:x,nextFocusableElement:void 0===y.type?o.context.triggerFocusTargetRef:void 0,beforeContentFocusGuardRef:void 0===y.type?o.context.beforeContentFocusGuardRef:void 0,children:M})});var U=a.i(354098);let V=c.createContext(void 0),W=c.forwardRef(function(a,c){let{keepMounted:d=!1,...e}=a,{store:f,parent:g}=h();if(!(f.useState("mounted")||d))return null;let i="menu"===g.type||"menubar"===g.type?"group":void 0;return(0,b.jsx)(V.Provider,{value:d,children:(0,b.jsx)(U.FloatingPortal,{ref:c,...e,portalOwnerRole:i})})});var X=a.i(454125),Y=a.i(736069),Z=a.i(925123),$=a.i(844871),_=a.i(579923),aa=a.i(330076),ab=a.i(82204),ac=a.i(443125),ad=a.i(456011),ae=a.i(402968);let af=c.forwardRef(function(a,f){let{anchor:g,positionMethod:i="absolute",className:j,render:k,side:l,align:o,sideOffset:p=0,alignOffset:q=0,collisionBoundary:r="clipping-ancestors",collisionPadding:s=5,arrowPadding:t=5,sticky:u=!1,disableAnchorTracking:v=!1,collisionAvoidance:w=ab.DROPDOWN_COLLISION_AVOIDANCE,style:x,...y}=a,{store:z}=h(),A=function(){let a=c.useContext(V);if(void 0===a)throw Error((0,d.default)(32));return a}(),B=m(!0),C=z.useState("parent"),E=z.useState("floatingRootContext"),F=z.useState("floatingTreeRoot"),G=z.useState("mounted"),H=z.useState("open"),I=z.useState("modal"),J=z.useState("openMethod"),L=z.useState("activeTriggerElement"),M=z.useState("transitionStatus"),N=z.useState("positionerElement"),O=z.useState("instantType"),P=z.useState("adaptiveOrigin"),Q=z.useState("lastOpenChangeReason"),R=z.useState("floatingNodeId"),S=z.useState("floatingParentNodeId"),T=E.useState("domReferenceElement"),U=c.useRef(null),W=(0,ac.useAnimationsFinished)(N),af=g,ag=p,ah=q,ai=o,aj=w;"context-menu"===C.type&&(af=g??C.context?.anchor,ai=ai??"start",l||"center"===ai||(ah=a.alignOffset??2,ag=a.sideOffset??-5));let ak=l,al=ai;"menu"===C.type?(ak=ak??"inline-end",al=al??"start",aj=a.collisionAvoidance??ab.POPUP_COLLISION_AVOIDANCE):"menubar"===C.type&&(ak=ak??("vertical"===C.context.orientation?"inline-end":"bottom"),al=al??"start");let am="context-menu"===C.type,an=(0,$.useAnchorPositioning)({anchor:af,floatingRootContext:E,positionMethod:B?"fixed":i,mounted:G,side:ak,sideOffset:ag,align:al,alignOffset:ah,arrowPadding:am?0:t,collisionBoundary:r,collisionPadding:s,sticky:u,nodeId:R,keepMounted:A,disableAnchorTracking:v,collisionAvoidance:aj,shift:am?{crossAxis:!("side"in aj&&"flip"===aj.side),rootBoundary:"layoutViewport"}:void 0,externalTree:F,adaptiveOrigin:P});c.useEffect(()=>{function a(a){a.open&&(a.parentNodeId===R&&z.set("hoverEnabled",!1),a.nodeId!==R&&a.parentNodeId===z.select("floatingParentNodeId")&&z.setOpen(!1,(0,D.createChangeEventDetails)(n.REASONS.siblingOpen)))}return F.events.on("menuopenchange",a),()=>{F.events.off("menuopenchange",a)}},[z,F.events,R]),c.useEffect(()=>{if(null!=z.select("floatingParentNodeId"))return F.events.on("menuopenchange",a),()=>{F.events.off("menuopenchange",a)};function a(a){if(a.open||a.nodeId!==z.select("floatingParentNodeId"))return;let b=a.reason??n.REASONS.siblingOpen;z.setOpen(!1,(0,D.createChangeEventDetails)(b))}},[F.events,z]);let ao=(0,Y.useTimeout)();c.useEffect(()=>{H||ao.clear()},[H,ao]),c.useEffect(()=>{function a(a){if(H&&a.nodeId===z.select("floatingParentNodeId"))if(a.target&&L&&L!==a.target){let a=z.select("closeDelay");a>0?ao.isStarted()||ao.start(a,()=>{z.setOpen(!1,(0,D.createChangeEventDetails)(n.REASONS.siblingOpen))}):z.setOpen(!1,(0,D.createChangeEventDetails)(n.REASONS.siblingOpen))}else ao.clear()}return F.events.on("itemhover",a),()=>{F.events.off("itemhover",a)}},[F.events,H,L,z,ao]),c.useEffect(()=>{let a={open:H,nodeId:R,parentNodeId:S,reason:z.select("lastOpenChangeReason")};F.events.emit("menuopenchange",a)},[F.events,H,z,R,S]),(0,K.useIsoLayoutEffect)(()=>{let a=U.current;if(T&&(U.current=T),a&&T&&T!==a){z.set("instantType",void 0);let a=new AbortController;return W(()=>{z.set("instantType","trigger-change")},a.signal),()=>{a.abort()}}},[T,W,z]);let ap={open:H,side:an.side,align:an.align,anchorHidden:an.anchorHidden,nested:"menu"===C.type,instant:O},aq="menubar"===C.type&&C.context.modal,ar=I&&Q!==n.REASONS.triggerHover;(0,ae.useAnchoredPopupScrollLock)(H&&(aq||ar),"touch"===J,N,L);let as=(0,ad.usePositioner)(a,ap,{styles:an.positionerStyles,transitionStatus:M,props:y,refs:[f,z.useStateSetter("positionerElement")],hidden:!G,inert:!H}),at=G&&"menu"!==C.type&&("menubar"!==C.type&&I&&Q!==n.REASONS.triggerHover||"menubar"===C.type&&C.context.modal),au=null;return"menubar"===C.type?au=C.context.contentElement:void 0===C.type&&(au=L),(0,b.jsxs)(e.Provider,{value:an,children:[at&&(0,b.jsx)(aa.InternalBackdrop,{ref:"context-menu"===C.type||"nested-context-menu"===C.type?C.context.internalBackdropRef:null,inert:(0,X.inertValue)(!H),cutout:au}),(0,b.jsx)(Z.FloatingNode,{id:R,children:(0,b.jsx)(_.CompositeList,{elementsRef:z.context.itemDomElements,labelsRef:z.context.itemLabels,children:as})})]})});var ag=a.i(854401);let ah=c.createContext(void 0),ai=c.memo(c.forwardRef(function(a,d){let{render:e,className:f,value:g,defaultValue:h,onValueChange:j,disabled:k=!1,style:l,"aria-labelledby":m,...n}=a,[o,q]=c.useState(void 0),[r,s]=(0,p.useControlled)({controlled:g,default:h,name:"MenuRadioGroup"}),t=(0,ag.useStableCallback)((a,b)=>{j?.(a,b),b.isCanceled||s(a)}),u=(0,i.useRenderElement)("div",a,{state:{disabled:k},ref:d,props:{role:"group","aria-labelledby":m??o,"aria-disabled":k||void 0,...n}}),v=c.useMemo(()=>({value:r,setValue:t,disabled:k}),[r,t,k]);return(0,b.jsx)(I.Provider,{value:q,children:(0,b.jsx)(ah.Provider,{value:v,children:u})})})),aj=c.createContext(void 0),ak=c.forwardRef(function(a,e){let{render:g,className:j,id:k,label:l,nativeButton:m=!1,disabled:o=!1,closeOnClick:p=!1,value:r,style:s,...t}=a,u=(0,A.useCompositeListItem)({guess:!0,label:l}),v=f(!0),w=(0,B.useBaseUiId)(k),{store:x}=h(),E=x.useState("isActive",u.index),F=x.useState("itemProps"),{value:G,setValue:H,disabled:I}=function(){let a=c.useContext(ah);if(void 0===a)throw Error((0,d.default)(34));return a}(),J=x.useState("disabled"),K=o||I||J,L=G===r,{getItemProps:M,itemRef:N}=z({closeOnClick:p,disabled:K,highlighted:E,id:w,store:x,nativeButton:m,nodeId:v?.context.nodeId,itemMetadata:y}),O=c.useMemo(()=>({disabled:K,highlighted:E,checked:L}),[K,E,L]),P=(0,i.useRenderElement)("div",a,{state:O,stateAttributesMapping:C,props:[F,{role:"menuitemradio","aria-checked":L,onClick:function(a){H(r,(0,D.createChangeEventDetails)(n.REASONS.itemPress,a.nativeEvent,void 0,{preventUnmountOnClose:q.NOOP}))}},t,M],ref:[N,e,u.ref]});return(0,b.jsx)(aj.Provider,{value:O,children:P})}),al=c.forwardRef(function(a,b){let{render:e,className:f,style:g,keepMounted:h=!1,...j}=a,k=function(){let a=c.useContext(aj);if(void 0===a)throw Error((0,d.default)(35));return a}(),l=c.useRef(null),{transitionStatus:m,mounted:n,setMounted:o}=(0,F.useTransitionStatus)(k.checked);(0,G.useOpenChangeComplete)({batch:!0,enabled:!k.checked,open:k.checked,ref:l,onComplete(){k.checked||o(!1)}});let p={checked:k.checked,disabled:k.disabled,highlighted:k.highlighted,transitionStatus:m};return(0,i.useRenderElement)("span",a,{state:p,stateAttributesMapping:C,ref:[b,l],props:{"aria-hidden":!0,...j},enabled:h||n})});var am=a.i(329275),an=a.i(779549),ao=a.i(722050),ap=a.i(138939),aq=a.i(509301),ar=a.i(446355),as=a.i(625903);let at=c.createContext(null);function au(a){let b=c.useContext(at);if(null===b&&!a)throw Error((0,d.default)(5));return b}var av=a.i(162903),aw=a.i(629752),ax=a.i(417498),ay=a.i(418383),az=a.i(14239),aA=a.i(717017),aB=a.i(151943);let aC={...aA.popupStoreSelectors,disabled:a=>"menubar"===a.parent.type&&a.parent.context.disabled||a.disabled,modal:a=>(void 0===a.parent.type||"context-menu"===a.parent.type)&&(a.modal??!0),openMethod:a=>a.openMethod,allowMouseEnter:a=>a.allowMouseEnter,highlightItemOnHover:a=>a.highlightItemOnHover,parent:a=>a.parent,rootId:a=>"menu"===a.parent.type?a.parent.store.select("rootId"):void 0!==a.parent.type?a.parent.context.rootId:a.rootId,activeIndex:a=>a.activeIndex,isActive:(a,b)=>a.activeIndex===b,hoverEnabled:a=>a.hoverEnabled,instantType:a=>a.instantType,lastOpenChangeReason:a=>a.openChangeReason,floatingTreeRoot:a=>"menu"===a.parent.type?a.parent.store.select("floatingTreeRoot"):a.floatingTreeRoot,floatingNodeId:a=>a.floatingNodeId,floatingParentNodeId:a=>a.floatingParentNodeId,itemProps:a=>a.itemProps,closeDelay:a=>a.closeDelay,adaptiveOrigin:a=>a.adaptiveOrigin,keyboardEventRelay:a=>a.keyboardEventRelay?a.keyboardEventRelay:"menu"===a.parent.type?a.parent.store.select("keyboardEventRelay"):void 0};class aD extends ax.ReactStore{constructor(a,b,c=!1){const d=new aB.PopupTriggerMap;super(aF(d,b,c,a),aE(d),aC),this.unsubscribeParentListener=this.observe("parent",a=>{if(this.unsubscribeParentListener?.(),"menu"===a.type){let b=a.store.select("rootId"),c=a.store.select("floatingTreeRoot"),d=a.store.select("keyboardEventRelay");this.unsubscribeParentListener=a.store.subscribe(()=>{let e=a.store.select("rootId"),f=a.store.select("floatingTreeRoot"),g=a.store.select("keyboardEventRelay");(b!==e||c!==f||d!==g)&&(b=e,c=f,d=g,this.notifyAll())}),this.context.allowMouseUpTriggerRef=a.store.context.allowMouseUpTriggerRef;return}void 0!==a.type&&(this.context.allowMouseUpTriggerRef=a.context.allowMouseUpTriggerRef),this.unsubscribeParentListener=null})}setOpen(a,b){this.state.floatingRootContext.context.events.emit("setOpen",{open:a,eventDetails:b})}unsubscribeParentListener=null}function aE(a){return{positionerRef:c.createRef(),popupRef:c.createRef(),typingRef:{current:!1},itemDomElements:{current:[]},itemLabels:{current:[]},allowMouseUpTriggerRef:{current:!1},triggerFocusTargetRef:c.createRef(),beforeContentFocusGuardRef:c.createRef(),onOpenChangeComplete:void 0,triggerElements:a}}function aF(a,b,c=!1,d){return{...(0,aA.createInitialPopupStoreState)(a,b,c),disabled:!1,modal:!0,openMethod:null,allowMouseEnter:!1,highlightItemOnHover:!0,parent:{type:void 0},rootId:void 0,activeIndex:null,hoverEnabled:!0,instantType:void 0,openChangeReason:null,floatingTreeRoot:new ay.FloatingTreeStore,floatingNodeId:void 0,floatingParentNodeId:null,itemProps:q.EMPTY_OBJECT,keyboardEventRelay:void 0,closeDelay:0,adaptiveOrigin:void 0,...d}}var aG=a.i(284204);let aH=c.createContext(void 0);function aI(){return c.useContext(aH)}let aJ=(0,ao.fastComponent)(function(a){var d,e,f;let i,{children:j,open:k,onOpenChange:l,onOpenChangeComplete:o,defaultOpen:p=!1,disabled:r=!1,modal:s,loopFocus:t=!0,orientation:v="vertical",actionsRef:w,closeParentOnEsc:x=!1,handle:y,triggerId:z,defaultTriggerId:A=null,highlightItemOnHover:B=!0}=a,C=m(!0),E=h(!0),F=au(!0),G=aI(),H=c.useMemo(()=>G&&E?{type:"menu",store:E.store}:F?{type:"menubar",context:F}:C&&!E?{type:"context-menu",context:C}:{type:void 0},[C,E,F,G]),I=(0,am.useId)(),J=(0,am.useId)(),L=(0,Z.useFloatingParentNodeId)(),M="menu"===H.type?H.store:void 0,N=(k??p)&&M?.state.transitionStatus==="starting",O=(0,an.useRefWithInit)(()=>N?M?.state.instantType:void 0).current,P=(d={open:p,openProp:k,activeTriggerId:A,triggerIdProp:z,parent:H,disabled:r,highlightItemOnHover:B,modal:void 0===H.type?s:void 0,rootId:I,instantType:O},e=J,f=null!=L,(0,an.useRefWithInit)(()=>new aD(d,e,f)).current);P.useControlledProp("openProp",k),P.useControlledProp("triggerIdProp",z),P.useContextCallback("onOpenChangeComplete",o);let Q=P.useState("floatingTreeRoot"),R=(0,Z.useFloatingNodeId)(Q),S=P.useState("open"),T=P.useState("activeTriggerElement"),U=P.useState("positionerElement"),V=P.useState("hoverEnabled"),W=P.useState("disabled"),X=P.useState("lastOpenChangeReason"),$=P.useState("parent"),_=P.useState("activeIndex"),aa=P.useState("payload"),ad=P.useState("floatingParentNodeId"),ae=c.useRef(null),af=c.useRef("context-menu"!==$.type),ah=(0,Y.useTimeout)(),ai=c.useRef(!0),aj=(0,Y.useTimeout)(),ak=null!=ad,{openMethod:al,triggerProps:ao}=(0,aw.useOpenInteractionType)(S);P.useSyncedValues({disabled:r,highlightItemOnHover:B,modal:void 0===$.type?s:void 0,openMethod:al,rootId:I}),(0,aG.useImplicitActiveTrigger)(P);let{forceUnmount:at,transitionStatus:ax}=(0,aG.useOpenStateTransitions)(S,P,()=>{P.set("allowMouseEnter",!1)},N),ay=(0,ac.useAnimationsFinished)(P.context.popupRef);c.useEffect(()=>{if(void 0===O)return;let a=()=>{P.state.instantType===O&&P.set("instantType",void 0)};if(!S)return void a();if(void 0!==ax)return;if(null==P.context.popupRef.current)return void a();let b=new AbortController;return ay(a,b.signal),()=>{b.abort()}},[O,S,ax,ay,P]),(0,K.useIsoLayoutEffect)(()=>{C&&!E?P.update({parent:{type:"context-menu",context:C},floatingNodeId:R,floatingParentNodeId:L}):E&&P.update({floatingNodeId:R,floatingParentNodeId:L})},[C,E,R,L,P]),c.useEffect(()=>{if(S||(ae.current=null),"context-menu"===$.type){if(!S){ah.clear(),af.current=!1;return}ah.start(500,()=>{af.current=!0})}},[ah,S,$.type]),(0,K.useIsoLayoutEffect)(()=>{S||V||P.set("hoverEnabled",!0)},[S,V,P]);let az=(0,ag.useStableCallback)((a,b)=>{let c=b.reason;if(!a&&!P.select("open")||S===a&&b.trigger===T&&X===c)return;let d=(0,aG.attachPreventUnmountOnClose)(b);if(a||null!=b.trigger||(b.trigger=T??void 0),l?.(a,b),b.isCanceled)return;P.state.floatingRootContext.dispatchOpenChange(a,b);let e=b.event;if(!1===a&&e?.type==="click"&&"touch"===e.pointerType&&!ai.current)return;a&&c===n.REASONS.triggerFocus?(ai.current=!1,aj.start(300,()=>{ai.current=!0})):(ai.current=!0,aj.clear());let f=(c===n.REASONS.triggerPress||c===n.REASONS.itemPress)&&0===e.detail,g=!a&&(c===n.REASONS.escapeKey||null==c);ae.current=b.event;let h=(0,aG.createPopupOpenState)(P.state,a,b.trigger,d());h.openChangeReason=c,"menubar"===$.type&&(c===n.REASONS.triggerFocus||c===n.REASONS.focusOut||c===n.REASONS.triggerHover||c===n.REASONS.listNavigation||c===n.REASONS.siblingOpen)?h.instantType="group":f||g?h.instantType=f?"click":"dismiss":h.instantType=void 0,P.update(h)}),aA=(0,as.useSyncedFloatingRootContext)({popupStore:P,floatingRootContext:P.state.floatingRootContext,floatingId:J,nested:null!=L,onOpenChange:az}),aB=aA.context.events;(0,K.useIsoLayoutEffect)(()=>{let a=({open:a,eventDetails:b})=>az(a,b);return aB.on("setOpen",a),()=>{aB?.off("setOpen",a)}},[aB,az]);let aC=c.useCallback(()=>{P.setOpen(!1,(0,D.createChangeEventDetails)(n.REASONS.imperativeAction))},[P]);c.useImperativeHandle(w,()=>({unmount:at,close:aC}),[at,aC]),"context-menu"===$.type&&(i=$.context),c.useImperativeHandle(i?.positionerRef,()=>U,[U]),c.useImperativeHandle(i?.actionsRef,()=>({setOpen:az}),[az]);let aE=(0,ap.useDismiss)(aA,{enabled:!W,bubbles:{escapeKey:x&&"menu"===$.type},outsidePress:()=>"context-menu"!==$.type||ae.current?.type==="contextmenu"||af.current,externalTree:ak?Q:void 0}),aF=(0,av.useDirection)(),aH=c.useCallback(a=>{P.select("activeIndex")!==a&&P.set("activeIndex",a)},[P]),aJ=(0,aq.useListNavigation)(aA,{enabled:!W,listRef:P.context.itemDomElements,activeIndex:_,nested:void 0!==$.type,loopFocus:t,orientation:v,parentOrientation:"menubar"===$.type?$.context.orientation:void 0,rtl:"rtl"===aF,disabledIndices:q.EMPTY_ARRAY,onNavigate:aH,openOnArrowKeyDown:"context-menu"!==$.type,externalTree:ak?Q:void 0,focusItemOnHover:B}),aK=c.useCallback(a=>{P.context.typingRef.current=a},[P]),aL=(0,ar.useTypeahead)(aA,{enabled:!W,listRef:P.context.itemLabels,elementsRef:P.context.itemDomElements,activeIndex:_,resetMs:ab.TYPEAHEAD_RESET_MS,onMatch:a=>{S&&a!==_&&P.set("activeIndex",a)},onTyping:aK}),aM=c.useMemo(()=>{let a=(0,u.mergeProps)(aL.reference,aJ.reference,aE.reference,{onMouseMove(){P.set("allowMouseEnter",!0)}},ao);return a["aria-haspopup"]="menu",a["aria-expanded"]=S,a},[P,aL.reference,aJ.reference,aE.reference,ao,S]),aN=c.useMemo(()=>{let a=(0,u.mergeProps)(aJ.trigger,aE.trigger,ao);return a["aria-haspopup"]="menu",a["aria-expanded"]=!1,a},[aJ.trigger,aE.trigger,ao]);(0,an.useRefWithInit)(()=>(P.update({inactiveTriggerProps:aN}),null));let aO=c.useMemo(()=>(0,u.mergeProps)(aG.FOCUSABLE_POPUP_PROPS,{id:J,role:"menu","aria-orientation":"horizontal"===v?"horizontal":void 0,"aria-labelledby":T?.id,onMouseMove(){P.set("allowMouseEnter",!0),"menu"===$.type&&P.set("hoverEnabled",!1)},onClick(){P.select("hoverEnabled")&&P.set("hoverEnabled",!1)},onKeyDown(a){let b=P.select("keyboardEventRelay");b&&!a.isPropagationStopped()&&b(a)}},aL.floating,aJ.floating,aE.floating),[T,J,v,$.type,P,aL.floating,aJ.floating,aE.floating]),aP=aJ.item??q.EMPTY_OBJECT;(0,aG.usePopupInteractionProps)(P,{floatingRootContext:aA,activeTriggerProps:aM,inactiveTriggerProps:aN,popupProps:aO,itemProps:aP});let aQ=c.useMemo(()=>({store:P,parent:H}),[P,H]),aR=(0,b.jsxs)(g.Provider,{value:aQ,children:[y&&(0,b.jsx)(aG.PopupHandleAttachment,{handle:y,store:P}),"function"==typeof j?j({payload:aa}):j]});return void 0===$.type||"context-menu"===$.type?(0,b.jsx)(Z.FloatingTree,{externalTree:Q,children:aR}):aR});var aK=a.i(187828),aL=a.i(25003),aM=a.i(331973),aN=a.i(184842),aO=a.i(705735),aP=a.i(30116),aQ=a.i(961892),aR=a.i(796511),aS=a.i(559539),aT=a.i(426476),aU=a.i(497151),aV=a.i(793332),aW=a.i(261394);let aX=(0,ao.fastComponentRef)(function(a,e){let f,{render:g,className:k,style:l,disabled:m=!1,nativeButton:o=!0,id:p,openOnHover:r,delay:s=100,closeDelay:v=0,handle:w,payload:x,...y}=a,z=h(!0),A=(0,aU.usePopupHandleStore)(w)??z?.store;if(!A)throw Error((0,d.default)(85));let C=(0,B.useBaseUiId)(p),D=A.useState("isTriggerActive",C),E=A.useState("floatingRootContext"),F=A.useState("isOpenedByTrigger",C),G=A.useState("triggerPopupId",C),H=c.useRef(null),I=(f=au(!0),c.useMemo(()=>f?{type:"menubar",context:f}:{type:void 0},[f])),J=(0,aS.useCompositeRootContext)(!0),L=(0,Z.useFloatingTree)(),M=c.useMemo(()=>L??new ay.FloatingTreeStore,[L]),N=(0,Z.useFloatingNodeId)(M),O=(0,Z.useFloatingParentNodeId)(),{registerTrigger:P,isMountedByThisTrigger:Q}=(0,aG.useTriggerDataForwarding)(C,H,A,{payload:x,closeDelay:v,parent:I,floatingTreeRoot:M,floatingNodeId:N,floatingParentNodeId:O,keyboardEventRelay:J?.relayKeyboardEvent}),R="menubar"===I.type,S=A.useState("disabled"),T=m||S||R&&I.context.disabled,{getButtonProps:U,buttonRef:V}=(0,t.useButton)({disabled:T,native:o});c.useEffect(()=>{F||void 0!==I.type||(A.context.allowMouseUpTriggerRef.current=!1)},[A,F,I.type]);let W=c.useRef(null),X=(0,Y.useTimeout)(),$=(0,ag.useStableCallback)(a=>{if(!W.current)return;X.clear(),A.context.allowMouseUpTriggerRef.current=!1;let b=a.target;(0,aP.contains)(W.current,b)||(0,aP.contains)(A.select("positionerElement"),b)||b===W.current||null!=b&&function a(b){return(0,aT.isHTMLElement)(b)&&b.hasAttribute("data-rootownerid")?b.getAttribute("data-rootownerid"):(0,aT.isLastTraversableNode)(b)?void 0:a((0,aT.getParentNode)(b))}(b)===A.select("rootId")||(0,aQ.isMouseWithinBounds)(a,W.current)||M.events.emit("close",{domEvent:a,reason:n.REASONS.cancelOpen})});c.useEffect(()=>{F&&A.select("lastOpenChangeReason")===n.REASONS.triggerHover&&(0,aK.ownerDocument)(W.current).addEventListener("mouseup",$,{once:!0})},[F,$,A]);let _=R&&I.context.hasSubmenuOpen,aa=r??_,ac=(0,aO.useHoverReferenceInteraction)(E,{enabled:aa&&!T&&(!R||_&&!Q),handleClose:(0,aL.safePolygon)({blockPointerEvents:!R}),mouseOnly:!0,move:!1,restMs:void 0===I.type?s:void 0,delay:{close:v},triggerElementRef:H,externalTree:M,isActiveTrigger:D,isClosing:()=>"ending"===A.select("transitionStatus")}),ad=function(a,b){let d=(0,Y.useTimeout)(),[e,f]=c.useState(!1);return(0,K.useIsoLayoutEffect)(()=>{a&&b===n.REASONS.triggerHover?(f(!0),d.start(ab.PATIENT_CLICK_THRESHOLD,()=>{f(!1)})):a||(d.clear(),f(!1))},[a,b,d]),e}(F,A.select("lastOpenChangeReason")),ae=(0,aM.useClick)(E,{enabled:!T,event:F&&R?"click":"mousedown",toggle:!0,ignoreMouse:!1,stickIfOpen:void 0===I.type&&ad}),af=(0,aN.useFocus)(E,{enabled:!T&&_}),ah=function(a){let{enabled:b=!0,mouseDownAction:d,open:e}=a,f=c.useRef(!1);return c.useMemo(()=>b?{onMouseDown:a=>{("open"===d&&!e||"close"===d&&e)&&(f.current=!0,(0,aK.ownerDocument)(a.currentTarget).addEventListener("click",()=>{f.current=!1},{once:!0}))},onClick:a=>{f.current&&(f.current=!1,a.preventBaseUIHandler())}}:q.EMPTY_OBJECT,[b,d,e])}({open:F,enabled:R,mouseDownAction:"open"}),ai=c.useMemo(()=>(0,u.mergeProps)(af.reference,ae.reference),[af.reference,ae.reference]),aj=A.useState("triggerProps",Q),{preFocusGuardRef:ak,handlePreFocusGuardFocus:al,handleFocusTargetFocus:am}=(0,aV.useTriggerFocusGuards)(A,H),an={disabled:T,open:F},ao=[W,e,V,P,H],ap=[ai,ac??q.EMPTY_OBJECT,aj,{"aria-haspopup":"menu","aria-controls":G,id:C,onMouseDown:a=>{A.select("open")||(X.start(200,()=>{A.context.allowMouseUpTriggerRef.current=!0}),(0,aK.ownerDocument)(a.currentTarget).addEventListener("mouseup",$,{once:!0}))}},R?{role:"menuitem"}:{},ah,y,U],aq=(0,i.useRenderElement)("button",a,{enabled:!R,stateAttributesMapping:j.pressableTriggerOpenStateMapping,state:an,ref:ao,props:ap});return R?(0,b.jsx)(aR.CompositeItem,{tag:"button",render:g,className:k,style:l,state:an,refs:ao,props:ap,stateAttributesMapping:j.pressableTriggerOpenStateMapping}):F?(0,b.jsxs)(c.Fragment,{children:[(0,b.jsx)(aW.FocusGuard,{ref:ak,onFocus:al},`${C}-pre-focus-guard`),(0,b.jsx)(c.Fragment,{children:aq},C),(0,b.jsx)(aW.FocusGuard,{ref:A.context.triggerFocusTargetRef,onFocus:am},`${C}-post-focus-guard`)]}):(0,b.jsx)(c.Fragment,{children:aq},C)});var aY=a.i(362092);let aZ=c.forwardRef(function(a,b){let{render:c,className:d,style:e,children:g,...j}=a,{store:k}=h(),{side:l}=f(),m=k.useState("instantType"),{children:n,state:o}=(0,aY.usePopupViewport)({store:k,side:l,children:g}),p={activationDirection:o.activationDirection,transitioning:o.transitioning,instant:m};return(0,i.useRenderElement)("div",a,{state:p,ref:b,props:[j,{children:n}],stateAttributesMapping:aY.popupViewportStateMapping})});var a$=a.i(118816);let a_={"aria-expanded":void 0},a0=c.forwardRef(function(a,b){let{render:e,className:g,style:k,label:l,id:m,nativeButton:o=!1,openOnHover:p=!0,delay:r=100,closeDelay:s=0,disabled:t=!1,...u}=a,w=aI();if(!w?.parentMenu)throw Error((0,d.default)(37));let x=(0,A.useCompositeListItem)({guess:!0,label:l}),y=f(),{store:C}=h(),D=(0,B.useBaseUiId)(m),E=C.useState("open"),F=C.useState("floatingRootContext"),G=C.useState("floatingTreeRoot"),H=C.useState("triggerPopupId",D),I=(0,aG.useTriggerRegistration)(D,C),J=(0,ag.useStableCallback)(a=>{I(a),null!==a&&C.select("open")&&null==C.select("activeTriggerId")&&C.update({activeTriggerId:D??null,activeTriggerElement:a,closeDelay:s})}),L=c.useRef(null),M=c.useCallback(a=>{L.current=a,C.set("activeTriggerElement",a)},[C]);(0,K.useIsoLayoutEffect)(()=>(J(L.current),()=>J(null)),[J,D,C]),C.useSyncedValue("closeDelay",s);let N=w.parentMenu,O=C.useState("disabled"),P=N.useState("disabled"),Q=t||O||P,R=N.useState("itemProps"),S=N.useState("isActive",x.index),T=c.useMemo(()=>({type:"submenu-trigger",setActive(){N.select("highlightItemOnHover")&&N.set("activeIndex",x.index)}}),[N,x.index]),{getItemProps:U,itemRef:V}=z({closeOnClick:!1,disabled:Q,highlighted:S,id:D,store:C,typingRef:N.context.typingRef,nativeButton:o,itemMetadata:T,nodeId:y?.context.nodeId}),W=C.useState("hoverEnabled"),X=(0,aO.useHoverReferenceInteraction)(F,{enabled:W&&p&&!Q,handleClose:(0,aL.safePolygon)({blockPointerEvents:!0}),mouseOnly:!0,move:!0,restMs:r,delay:{open:r,close:s},shouldOpen:r>0?()=>N.select("allowMouseEnter"):void 0,triggerElementRef:L,externalTree:G,isClosing:()=>"ending"===C.select("transitionStatus"),guardStaleOpen:!0}),Y=(0,aM.useClick)(F,{enabled:!Q,event:"mousedown",toggle:!p,ignoreMouse:p,stickIfOpen:!1}).reference??q.EMPTY_OBJECT,Z=C.useState("triggerProps",!0);delete Z.id;let $=C.useState("openMethod"),_=C.useState("lastOpenChangeReason")===n.REASONS.listNavigation||"keyboard"===$,aa=E&&_&&v.platform.screenReader.voiceOver;return(0,i.useRenderElement)("div",a,{state:{disabled:Q,highlighted:S,open:E},stateAttributesMapping:j.triggerOpenStateMapping,props:[Y,X,Z,R,aa?a_:void 0,{"aria-controls":H,tabIndex:E||S?0:-1,onBlur(){S&&N.set("activeIndex",null)}},u,U],ref:[b,x.ref,V,J,M]})});var a1=a.i(4675);class a2 extends a1.BasePopupHandle{constructor(){super(function(){let a=new aB.PopupTriggerMap;return Object.assign(new az.NullStore(Object.freeze(aF(a)),Object.freeze(aE(a)),aC),{setOpen:q.NOOP})}(),"Menu")}open(a){this.openByTrigger(a)}close(){this.closePopup()}get isOpen(){return this.attachedStore?.select("open")??!1}}a.s(["Arrow",0,k,"Backdrop",0,o,"CheckboxItem",0,E,"CheckboxItemIndicator",0,H,"Group",0,J,"GroupLabel",0,L,"Handle",0,a2,"Item",0,M,"LinkItem",0,N,"Popup",0,T,"Portal",0,W,"Positioner",0,af,"RadioGroup",0,ai,"RadioItem",0,ak,"RadioItemIndicator",0,al,"Root",0,aJ,"Separator",()=>a$.Separator,"SubmenuRoot",0,function(a){let d=h().store,e=c.useMemo(()=>({parentMenu:d}),[d]);return(0,b.jsx)(aH.Provider,{value:e,children:(0,b.jsx)(aJ,{...a})})},"SubmenuTrigger",0,a0,"Trigger",0,aX,"Viewport",0,aZ,"createHandle",0,function(){return new a2}],50012);var a3=a.i(50012),a3=a3;a.i(763802),a.i(199968);var a4=a.i(497895);a.s(["DropdownMenu",0,function({...a}){return(0,b.jsx)(a3.Root,{"data-slot":"dropdown-menu",...a})},"DropdownMenuContent",0,function({align:a="start",alignOffset:c=0,side:d="bottom",sideOffset:e=4,className:f,...g}){return(0,b.jsx)(a3.Portal,{children:(0,b.jsx)(a3.Positioner,{className:"isolate z-50 outline-none",align:a,alignOffset:c,side:d,sideOffset:e,children:(0,b.jsx)(a3.Popup,{"data-slot":"dropdown-menu-content",className:(0,a4.cn)("z-50 max-h-(--available-height) w-(--anchor-width) min-w-32 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 outline-none data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:overflow-hidden data-closed:fade-out-0 data-closed:zoom-out-95",f),...g})})})},"DropdownMenuGroup",0,function({...a}){return(0,b.jsx)(a3.Group,{"data-slot":"dropdown-menu-group",...a})},"DropdownMenuItem",0,function({className:a,inset:c,variant:d="default",...e}){return(0,b.jsx)(a3.Item,{"data-slot":"dropdown-menu-item","data-inset":c,"data-variant":d,className:(0,a4.cn)("group/dropdown-menu-item relative flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 data-[variant=destructive]:*:[svg]:text-destructive",a),...e})},"DropdownMenuTrigger",0,function({...a}){return(0,b.jsx)(a3.Trigger,{"data-slot":"dropdown-menu-trigger",...a})}],676504)},519191,a=>{"use strict";var b=a.i(405050);let c=(0,b.createServerReference)("7f63c516dac148fae3cd6f6d2952862f19c6ca4f6c",b.callServer,void 0,b.findSourceMapURL,"markSeenAction");a.s(["markSeenAction",0,c])},135432,a=>{"use strict";var b=a.i(572131),c=a.i(767561),d=a.i(864037),e=a.i(519191),f=a.i(199169),g=a.i(576271),h=a.i(759497),i=a.i(497895),j=a.i(983874);let k=[],l=!1,m=new Set;function n(a,b){let c=a=>({name:a,icon:b?.find(b=>b.name===a)?.icon??null}),d=c(a.bot),e=[],f=new Map,g=new Map,h=new Map;for(let b of a.lines){let a=b.bot?c(b.bot):d,i=b.to?c(b.to):b.parent?g.get(b.parent)??null:null;switch(b.kind){case"user":e.push({id:b.id,bot:b.to?c(b.to):d,to:b.to?c(b.to):null,text:b.text,kind:"user"});break;case"text":e.push({id:b.id,bot:a,to:i,text:b.text,kind:"say"});break;case"note":e.push({id:b.id,bot:a,to:i,text:b.text,kind:"note"});break;case"stop":e.push({id:b.id,bot:a,to:i,text:b.text,kind:"stop",at:b.at});break;case"tool":f.set(b.callId,e.length),e.push({id:b.id,bot:a,to:i,text:b.note??b.input,kind:"tool",at:b.at,tool:{name:b.name,input:b.input,note:b.note,path:b.path,callId:b.callId}});break;case"tool-result":{let a=f.get(b.callId)??h.get(b.callId),c=void 0===a?void 0:e[a];c?.tool&&void 0!==a?e[a]={...c,tool:{...c.tool,results:b.results,more:b.more}}:c?.kind==="ask"&&void 0!==a&&(e[a]={id:c.id,bot:c.bot,to:null,text:c.text,kind:"tool",tool:{name:b.name,input:c.text,callId:b.callId,results:b.results,more:b.more}});break}case"ask":{h.set(b.callId,e.length);let d=c(b.to);g.set(b.callId,a),e.push({id:b.id,bot:a,to:d,text:b.text,kind:"ask",question:b.question})}}}if(e.forEach((a,b)=>{if("user"!==a.kind)return;let c=e.slice(0,b).findLast(b=>"user"!==b.kind&&b.bot.name===a.bot.name);c?.kind==="tool"&&(e[b]={...a,steppedIn:!0})}),"done"===a.status){let b=e.at(-1);b&&"say"===b.kind&&b.text===a.outcome&&(e[e.length-1]={...b,kind:"result"})}return{id:a.id,room:a.room,request:a.request,label:a.label,bot:d,lines:e,status:"running"===a.status?"working":a.status,outcome:a.outcome,ask:a.ask,seen:a.seen,routineId:a.routineId,tokens:a.tokens,contextTokens:a.contextTokens,contextBudget:a.contextBudget,updatedAt:a.updatedAt}}let o=new Map,p=new Map,q=[],r=new Set,s=[],t=!1,u=new Set,v=new Set,w=!1,x=new Set,y=new Set,z=new Set,A=[],B=a=>a.id.slice(0,a.id.lastIndexOf("-")),C=a=>"user"===a.kind?{name:j.ROOM_THURSDAY}:a.bot,D=a=>"user"===a.kind?a.bot:a.to,E=(a,b)=>({kind:"entry",speaker:a.bot,entry:{kind:"work",key:`${a.lines[0].id}-work`,lines:a.lines,open:b}});a.s(["botThreads",0,{sync(a,b){for(let c of(l=!0,k=[...a].reverse().map(a=>n(a,b)),m))c()},primed:()=>l},"heardBy",0,D,"lastSaid",0,function(a){for(let b=a.lines.length-1;b>=0;b--){let c=a.lines[b];if("user"!==c.kind&&"note"!==c.kind&&"stop"!==c.kind)return c}return null},"latestPerBot",0,function(a){let b=new Map;for(let c of a)for(let a of(b.has(c.bot.name)||b.set(c.bot.name,{bot:c.bot,thread:c,line:null}),c.lines))"user"!==a.kind&&"note"!==a.kind&&"stop"!==a.kind&&b.set(a.bot.name,{bot:a.bot,thread:c,line:a});return[...b.values()]},"ringingThreads",0,{set(a){if(!(a.length===q.length&&a.every((a,b)=>q[b]===a)))for(let b of(q=a,r))b()}},"roomOpen",0,{set(a){if(a!==t)for(let b of(t=a,u))b()}},"roomOpens",0,{open(a){for(let b of y)b(a)},subscribe:a=>(y.add(a),()=>{y.delete(a)})},"rosterOf",0,function(a){let b=[a.bot];for(let c of a.lines)for(let a of[c.bot,c.to])a&&a.name!==j.ROOM_THURSDAY&&!b.some(b=>b.name===a.name)&&b.push(a);return b},"screenActs",0,{announce(a){for(let b of z)b(a)},subscribe:a=>(z.add(a),()=>{z.delete(a)})},"threadDrafts",0,{recipient:a=>p.get(a),select:(a,b)=>{p.set(a,b)},get:(a,b,c)=>o.get(a)?.get(JSON.stringify([b,c??null]))??"",set(a,b,c,d){let e=o.get(a)??new Map,f=JSON.stringify([b,d??null]);c?e.set(f,c):e.delete(f),e.size?o.set(a,e):o.delete(a)}},"threadFromRow",0,n,"threadItems",0,function(a,b,c=[]){let d,e=(d=new Set(a.lines.filter(a=>"tool"===a.kind||"ask"===a.kind).map(B)),a=>"user"===a.kind||"ask"===a.kind||"result"===a.kind||"say"===a.kind&&!d.has(B(a))),f=b===a.bot.name?a.lines:a.lines.filter(a=>C(a).name===b||e(a)&&D(a)?.name===b),g=new Set([a.bot.name,j.ROOM_THURSDAY]),h=new Map;for(let b of a.lines){let a=D(b);a&&!g.has(a.name)&&(g.add(a.name),h.set(b.id,{from:C(b),to:a})),g.add(b.bot.name)}let i=[],k=new Map,l=a=>{let b=a?k.get(a.name):void 0;b&&(k.delete(b.bot.name),i.push(E(b,!1)))};for(let a of f){if(!e(a)){let b=k.get(a.bot.name)??{bot:a.bot,lines:[],at:0};b.lines.push(a),b.at=i.length,k.set(a.bot.name,b);continue}let b=C(a);l(D(a));let c=h.get(a.id);c&&i.push({kind:"invite",key:`${a.id}-joins`,...c}),l(b),i.push({kind:"entry",speaker:b,entry:{kind:"message",key:a.id,line:a}})}for(let a of[...k.values()].sort((a,b)=>a.at-b.at).reverse())i.splice(a.at,0,E(a,!0));for(let a of c)k.has(a.name)||i.push({kind:"entry",speaker:a,entry:{kind:"work",key:`${a.name}-now`,lines:[],open:!0}});let m=[];for(let a of i){let b=m.at(-1);"invite"===a.kind?m.push(a):b?.kind==="turn"&&b.speaker.name===a.speaker.name?b.entries.push(a.entry):m.push({kind:"turn",key:a.entry.key,speaker:a.speaker,entries:[a.entry]})}return m},"useBotThreads",0,function(){return(0,b.useSyncExternalStore)(a=>(m.add(a),()=>m.delete(a)),()=>k,()=>A)},"useRingingThreads",0,function(){return(0,b.useSyncExternalStore)(a=>(r.add(a),()=>r.delete(a)),()=>q,()=>s)},"useRoomOpen",0,function(){return(0,b.useSyncExternalStore)(a=>(u.add(a),()=>u.delete(a)),()=>t,()=>!1)},"useSeenOnDetail",0,function(a){let j=(0,b.useRef)(new Set),k=a?.id??null,l=a?`${a.id}@${(0,f.toDate)(a.updatedAt).getTime()}`:null,m=!!a&&"done"===a.status&&!a.seen;(0,b.useEffect)(()=>{!k||!l||!m||j.current.has(l)||(j.current.add(l),(0,e.markSeenAction)([k]).then(g.unwrapResult).then(()=>(0,h.revalidate)(c.queryKey.threads)).catch(a=>{j.current.delete(l),d.toast.add({type:"error",title:"Could not mark the thread as read",description:(0,i.errorToString)(a)})}))},[k,l,m])},"useWriteLineUp",0,function(){return(0,b.useSyncExternalStore)(a=>(x.add(a),()=>x.delete(a)),()=>w,()=>!1)},"writeLine",0,{open(){for(let a of v)a()},subscribe:a=>(v.add(a),()=>{v.delete(a)}),shown(a){if(a!==w)for(let b of(w=a,x))b()}}])},184842,a=>{"use strict";var b=a.i(572131),c=a.i(168536),d=a.i(151086),e=a.i(43074),f=a.i(187828),g=a.i(736069),h=a.i(426476),i=a.i(380362),j=a.i(30116),k=a.i(361813),l=a.i(394552),m=a.i(307436);let n=d.platform.os.mac&&d.platform.engine.webkit;a.s(["useFocus",0,function(a,d={}){let{enabled:o=!0,delay:p}=d,q="rootStore"in a?a.rootStore:a,{events:r,dataRef:s}=q.context,t=b.useRef(!1),u=b.useRef(null),v=b.useRef(!0),w=(0,g.useTimeout)();b.useEffect(()=>{let a=q.select("domReferenceElement");if(!o)return;let b=(0,h.getWindow)(a);return(0,e.mergeCleanups)((0,c.addEventListener)(b,"blur",function(){let a=q.select("domReferenceElement");!q.select("open")&&(0,h.isHTMLElement)(a)&&a===(0,j.activeElement)((0,f.ownerDocument)(a))&&(t.current=!0,u.current=a)}),n&&(0,c.addEventListener)(b,"keydown",function(){v.current=!0},!0),n&&(0,c.addEventListener)(b,"pointerdown",function(){v.current=!1},!0))},[q,o]),b.useEffect(()=>{if(o)return r.on("openchange",a),()=>{r.off("openchange",a)};function a(a){if(a.reason===m.REASONS.triggerPress||a.reason===m.REASONS.escapeKey){let a=q.select("domReferenceElement");(0,h.isElement)(a)&&(u.current=a,t.current=!0)}}},[r,o,q]);let x=b.useMemo(()=>{function a(){t.current=!1,u.current=null}return{onMouseLeave(){a()},onFocus(b){let c=b.currentTarget;if(t.current){if(u.current===c)return;a()}let d=(0,j.getTarget)(b.nativeEvent);if((0,h.isElement)(d)){if(n&&!b.relatedTarget){if(!v.current&&!(0,k.isTypeableElement)(d))return}else if(!(0,k.matchesFocusVisible)(d))return}let e=(0,k.isTargetInsideEnabledTrigger)(b.relatedTarget,q.context.triggerElements),{nativeEvent:f,currentTarget:g}=b,i="function"==typeof p?p():p;q.select("open")&&e||0===i||void 0===i?q.setOpen(!0,(0,l.createChangeEventDetails)(m.REASONS.triggerFocus,f,g)):w.start(i,()=>{t.current||q.setOpen(!0,(0,l.createChangeEventDetails)(m.REASONS.triggerFocus,f,g))})},onBlur(b){a();let c=b.relatedTarget,d=b.nativeEvent,e=(0,h.isElement)(c)&&c.hasAttribute((0,i.createAttribute)("focus-guard"))&&"outside"===c.getAttribute("data-type");w.start(0,()=>{let a=q.select("domReferenceElement"),b=(0,j.activeElement)((0,f.ownerDocument)(a));if(!c&&b===a||(0,j.contains)(s.current.floatingContext?.refs.floating.current,b)||(0,j.contains)(a,b)||e)return;let g=c??b;(0,k.isTargetInsideEnabledTrigger)(g,q.context.triggerElements)||q.setOpen(!1,(0,l.createChangeEventDetails)(m.REASONS.triggerFocus,d))})}}},[s,p,q,w]);return b.useMemo(()=>o?{reference:x,trigger:x}:{},[o,x])}])}];
1
+ module.exports=[676504,a=>{"use strict";var b=a.i(187924);a.s([],20929),a.i(20929);var c=a.i(572131),d=a.i(854662);let e=c.createContext(void 0);function f(a){let b=c.useContext(e);if(void 0===b&&!a)throw Error((0,d.default)(33));return b}let g=c.createContext(void 0);function h(a){let b=c.useContext(g);if(void 0===b&&!a)throw Error((0,d.default)(36));return b}var i=a.i(926184),j=a.i(304478);let k=c.forwardRef(function(a,b){let{render:c,className:d,style:e,...g}=a,{store:k}=h(),{arrowRef:l,side:m,align:n,arrowUncentered:o,arrowStyles:p}=f(),q=k.useState("open");return(0,i.useRenderElement)("div",a,{ref:[l,b],stateAttributesMapping:j.popupStateMapping,state:{open:q,side:m,align:n,uncentered:o},props:{style:p,"aria-hidden":!0,...g}})}),l=c.createContext(void 0);function m(a=!0){let b=c.useContext(l);if(void 0===b&&!a)throw Error((0,d.default)(25));return b}var n=a.i(307436);let o=c.forwardRef(function(a,b){let{render:c,className:d,style:e,...f}=a,{store:g}=h(),k=g.useState("open"),l=g.useState("mounted"),o=g.useState("transitionStatus"),p=g.useState("lastOpenChangeReason"),q=m();return(0,i.useRenderElement)("div",a,{ref:q?.backdropRef?[b,q.backdropRef]:b,state:{open:k,transitionStatus:o},stateAttributesMapping:j.popupTransitionStateMapping,props:[{role:"presentation",hidden:!l,style:{pointerEvents:p===n.REASONS.triggerHover?"none":void 0,userSelect:"none",WebkitUserSelect:"none"}},f]})});var p=a.i(950381),q=a.i(524715);let r=c.createContext(void 0);var s=a.i(801811),t=a.i(221436),u=a.i(676459),v=a.i(151086),w=a.i(85933);function x(a){let{closeOnClick:b,highlighted:d,id:e,nodeId:f,store:g,typingRef:h,itemRef:i,itemMetadata:j}=a,{events:k}=g.useState("floatingTreeRoot"),l=g.useState("open"),o=m(!0),p=void 0!==o;return c.useMemo(()=>({id:e,role:"menuitem",tabIndex:l&&d?0:-1,onKeyDown(a){" "===a.key&&h?.current&&a.preventDefault()},onMouseMove(a){f&&k.emit("itemhover",{nodeId:f,target:a.currentTarget})},onClick(a){b&&k.emit("close",{domEvent:a,reason:n.REASONS.itemPress})},onMouseUp(a){if(o){let b=o.initialCursorPointRef.current;if(o.initialCursorPointRef.current=null,p&&b&&1>=Math.abs(a.clientX-b.x)&&1>=Math.abs(a.clientY-b.y)||p&&!v.platform.os.mac&&2===a.button)return}i.current&&g.context.allowMouseUpTriggerRef.current&&(!p||2===a.button)&&"regular-item"===j.type&&(0,w.dispatchClickWithModifiers)(i.current,a,{detail:1})}}),[b,d,e,k,f,l,g,h,i,o,p,j])}let y={type:"regular-item"};function z(a){let{closeOnClick:b,disabled:d,highlighted:e,id:f,store:g,typingRef:h=g.context.typingRef,nativeButton:i,itemMetadata:j,nodeId:k}=a,l=c.useRef(null),{getButtonProps:m,buttonRef:n}=(0,t.useButton)({disabled:d,focusableWhenDisabled:!0,native:i,composite:!0}),o=x({closeOnClick:b,highlighted:e,id:f,nodeId:k,store:g,typingRef:h,itemRef:l,itemMetadata:j}),p=c.useCallback(a=>(0,u.mergeProps)(o,{onMouseEnter(){"submenu-trigger"===j.type&&j.setActive()}},a,m),[o,m,j]),q=(0,s.useMergedRefs)(l,n);return c.useMemo(()=>({getItemProps:p,itemRef:q}),[p,q])}var A=a.i(492403),B=a.i(300557);let C={checked:a=>a?{"data-checked":""}:{"data-unchecked":""},...a.i(407393).transitionStatusMapping};var D=a.i(394552);let E=c.forwardRef(function(a,d){let{render:e,className:g,id:j,label:k,nativeButton:l=!1,disabled:m=!1,closeOnClick:o=!1,checked:s,defaultChecked:t,onCheckedChange:u,style:v,...w}=a,x=(0,A.useCompositeListItem)({guess:!0,label:k}),E=f(!0),F=(0,B.useBaseUiId)(j),{store:G}=h(),H=G.useState("disabled"),I=m||H,J=G.useState("isActive",x.index),K=G.useState("itemProps"),[L,M]=(0,p.useControlled)({controlled:s,default:t??!1,name:"MenuCheckboxItem",state:"checked"}),{getItemProps:N,itemRef:O}=z({closeOnClick:o,disabled:I,highlighted:J,id:F,store:G,nativeButton:l,nodeId:E?.context.nodeId,itemMetadata:y}),P=c.useMemo(()=>({disabled:I,highlighted:J,checked:L}),[I,J,L]),Q=(0,i.useRenderElement)("div",a,{state:P,stateAttributesMapping:C,props:[K,{role:"menuitemcheckbox","aria-checked":L,onClick:function(a){let b=(0,D.createChangeEventDetails)(n.REASONS.itemPress,a.nativeEvent,void 0,{preventUnmountOnClose:q.NOOP});u?.(!L,b),b.isCanceled||M(a=>!a)}},w,N],ref:[O,d,x.ref]});return(0,b.jsx)(r.Provider,{value:P,children:Q})});var F=a.i(348250),G=a.i(305687);let H=c.forwardRef(function(a,b){let{render:e,className:f,style:g,keepMounted:h=!1,...j}=a,k=function(){let a=c.useContext(r);if(void 0===a)throw Error((0,d.default)(30));return a}(),l=c.useRef(null),{transitionStatus:m,mounted:n,setMounted:o}=(0,F.useTransitionStatus)(k.checked);(0,G.useOpenChangeComplete)({batch:!0,enabled:!k.checked,open:k.checked,ref:l,onComplete(){k.checked||o(!1)}});let p={checked:k.checked,disabled:k.disabled,highlighted:k.highlighted,transitionStatus:m};return(0,i.useRenderElement)("span",a,{state:p,ref:[b,l],stateAttributesMapping:C,props:{"aria-hidden":!0,...j},enabled:h||n})}),I=c.createContext(void 0),J=c.forwardRef(function(a,d){let{render:e,className:f,style:g,...h}=a,[j,k]=c.useState(void 0),l=(0,i.useRenderElement)("div",a,{ref:d,props:{role:"group","aria-labelledby":j,...h}});return(0,b.jsx)(I.Provider,{value:k,children:l})});var K=a.i(357738);let L=c.forwardRef(function(a,b){let{render:e,className:f,style:g,id:h,...j}=a,k=(0,B.useBaseUiId)(h),l=function(){let a=c.useContext(I);if(void 0===a)throw Error((0,d.default)(31));return a}();return(0,K.useIsoLayoutEffect)(()=>(l(k),()=>{l(a=>a===k?void 0:a)}),[l,k]),(0,i.useRenderElement)("div",a,{ref:b,props:{id:k,"aria-hidden":!0,...j}})}),M=c.forwardRef(function(a,b){let{render:c,className:d,id:e,label:g,nativeButton:j=!1,disabled:k=!1,closeOnClick:l=!0,style:m,...n}=a,o=(0,A.useCompositeListItem)({guess:!0,label:g}),p=f(!0),q=(0,B.useBaseUiId)(e),{store:r}=h(),s=r.useState("disabled"),t=k||s,u=r.useState("isActive",o.index),v=r.useState("itemProps"),{getItemProps:w,itemRef:x}=z({closeOnClick:l,disabled:t,highlighted:u,id:q,store:r,nativeButton:j,nodeId:p?.context.nodeId,itemMetadata:y});return(0,i.useRenderElement)("div",a,{state:{disabled:t,highlighted:u},props:[v,n,w],ref:[x,b,o.ref]})}),N=c.forwardRef(function(a,b){let{render:d,className:e,id:g,label:j,closeOnClick:k=!1,style:l,...m}=a,n=c.useRef(null),o=(0,A.useCompositeListItem)({guess:!0,label:j}),p=f(!0),q=p?.context.nodeId,r=(0,B.useBaseUiId)(g),{store:s}=h(),v=s.useState("isActive",o.index),w=s.useState("itemProps"),z=s.context.typingRef,{getButtonProps:C,buttonRef:D}=(0,t.useButton)({native:!1,composite:!0}),E=x({closeOnClick:k,highlighted:v,id:r,nodeId:q,store:s,typingRef:z,itemRef:n,itemMetadata:y});return(0,i.useRenderElement)("a",a,{state:{highlighted:v},props:[w,m,function(a){return(0,u.mergeProps)(E,a,C)}],ref:[n,D,b,o.ref]})});var O=a.i(150687),P=a.i(181673),Q=a.i(19416),R=a.i(669649),S=a.i(3861);let T=c.forwardRef(function(a,d){let{render:e,className:g,style:k,finalFocus:l,...m}=a,{store:o}=h(),{side:p,align:q}=f(),r=null!=(0,Q.useToolbarRootContext)(!0),s=o.useState("open"),t=o.useState("transitionStatus"),u=o.useState("popupProps"),v=o.useState("mounted"),w=o.useState("instantType"),x=o.useState("activeTriggerElement"),y=o.useState("parent"),z=o.useState("lastOpenChangeReason"),A=o.useState("rootId"),B=o.useState("floatingRootContext"),C=o.useState("floatingTreeRoot"),E=o.useState("closeDelay"),F=o.useState("hoverEnabled"),H=o.useState("disabled"),I=o.useState("openMethod"),J="context-menu"===y.type;(0,G.useOpenChangeComplete)({open:s,ref:o.context.popupRef,onComplete(){s&&o.context.onOpenChangeComplete?.(!0)}}),c.useEffect(()=>{function a(a){o.setOpen(!1,(0,D.createChangeEventDetails)(a.reason,a.domEvent))}return C.events.on("close",a),()=>{C.events.off("close",a)}},[C.events,o]),(0,P.useHoverFloatingInteraction)(B,{enabled:F&&!H&&!J&&"menubar"!==y.type,closeDelay:E});let K=o.useStateSetter("popupElement"),L={transitionStatus:t,side:p,align:q,open:s,nested:"menu"===y.type,instant:w},M=(0,i.useRenderElement)("div",a,{state:L,ref:[d,o.context.popupRef,K],stateAttributesMapping:j.popupTransitionStateMapping,props:[u,{onKeyDown(a){r&&R.COMPOSITE_KEYS.has(a.key)&&a.stopPropagation()}},(0,S.getDisabledMountTransitionStyles)(t),m,{"data-rootownerid":A}]}),N=void 0===y.type||J;return(x||"menubar"===y.type&&z!==n.REASONS.outsidePress)&&(N=!0),(0,b.jsx)(O.FloatingFocusManager,{context:B,openInteractionType:I,modal:J,disabled:!v,returnFocus:void 0===l?N:l,initialFocus:"menu"!==y.type,restoreFocus:!0,externalTree:"menubar"!==y.type?C:void 0,previousFocusableElement:x,nextFocusableElement:void 0===y.type?o.context.triggerFocusTargetRef:void 0,beforeContentFocusGuardRef:void 0===y.type?o.context.beforeContentFocusGuardRef:void 0,children:M})});var U=a.i(354098);let V=c.createContext(void 0),W=c.forwardRef(function(a,c){let{keepMounted:d=!1,...e}=a,{store:f,parent:g}=h();if(!(f.useState("mounted")||d))return null;let i="menu"===g.type||"menubar"===g.type?"group":void 0;return(0,b.jsx)(V.Provider,{value:d,children:(0,b.jsx)(U.FloatingPortal,{ref:c,...e,portalOwnerRole:i})})});var X=a.i(454125),Y=a.i(736069),Z=a.i(925123),$=a.i(844871),_=a.i(579923),aa=a.i(330076),ab=a.i(82204),ac=a.i(443125),ad=a.i(456011),ae=a.i(402968);let af=c.forwardRef(function(a,f){let{anchor:g,positionMethod:i="absolute",className:j,render:k,side:l,align:o,sideOffset:p=0,alignOffset:q=0,collisionBoundary:r="clipping-ancestors",collisionPadding:s=5,arrowPadding:t=5,sticky:u=!1,disableAnchorTracking:v=!1,collisionAvoidance:w=ab.DROPDOWN_COLLISION_AVOIDANCE,style:x,...y}=a,{store:z}=h(),A=function(){let a=c.useContext(V);if(void 0===a)throw Error((0,d.default)(32));return a}(),B=m(!0),C=z.useState("parent"),E=z.useState("floatingRootContext"),F=z.useState("floatingTreeRoot"),G=z.useState("mounted"),H=z.useState("open"),I=z.useState("modal"),J=z.useState("openMethod"),L=z.useState("activeTriggerElement"),M=z.useState("transitionStatus"),N=z.useState("positionerElement"),O=z.useState("instantType"),P=z.useState("adaptiveOrigin"),Q=z.useState("lastOpenChangeReason"),R=z.useState("floatingNodeId"),S=z.useState("floatingParentNodeId"),T=E.useState("domReferenceElement"),U=c.useRef(null),W=(0,ac.useAnimationsFinished)(N),af=g,ag=p,ah=q,ai=o,aj=w;"context-menu"===C.type&&(af=g??C.context?.anchor,ai=ai??"start",l||"center"===ai||(ah=a.alignOffset??2,ag=a.sideOffset??-5));let ak=l,al=ai;"menu"===C.type?(ak=ak??"inline-end",al=al??"start",aj=a.collisionAvoidance??ab.POPUP_COLLISION_AVOIDANCE):"menubar"===C.type&&(ak=ak??("vertical"===C.context.orientation?"inline-end":"bottom"),al=al??"start");let am="context-menu"===C.type,an=(0,$.useAnchorPositioning)({anchor:af,floatingRootContext:E,positionMethod:B?"fixed":i,mounted:G,side:ak,sideOffset:ag,align:al,alignOffset:ah,arrowPadding:am?0:t,collisionBoundary:r,collisionPadding:s,sticky:u,nodeId:R,keepMounted:A,disableAnchorTracking:v,collisionAvoidance:aj,shift:am?{crossAxis:!("side"in aj&&"flip"===aj.side),rootBoundary:"layoutViewport"}:void 0,externalTree:F,adaptiveOrigin:P});c.useEffect(()=>{function a(a){a.open&&(a.parentNodeId===R&&z.set("hoverEnabled",!1),a.nodeId!==R&&a.parentNodeId===z.select("floatingParentNodeId")&&z.setOpen(!1,(0,D.createChangeEventDetails)(n.REASONS.siblingOpen)))}return F.events.on("menuopenchange",a),()=>{F.events.off("menuopenchange",a)}},[z,F.events,R]),c.useEffect(()=>{if(null!=z.select("floatingParentNodeId"))return F.events.on("menuopenchange",a),()=>{F.events.off("menuopenchange",a)};function a(a){if(a.open||a.nodeId!==z.select("floatingParentNodeId"))return;let b=a.reason??n.REASONS.siblingOpen;z.setOpen(!1,(0,D.createChangeEventDetails)(b))}},[F.events,z]);let ao=(0,Y.useTimeout)();c.useEffect(()=>{H||ao.clear()},[H,ao]),c.useEffect(()=>{function a(a){if(H&&a.nodeId===z.select("floatingParentNodeId"))if(a.target&&L&&L!==a.target){let a=z.select("closeDelay");a>0?ao.isStarted()||ao.start(a,()=>{z.setOpen(!1,(0,D.createChangeEventDetails)(n.REASONS.siblingOpen))}):z.setOpen(!1,(0,D.createChangeEventDetails)(n.REASONS.siblingOpen))}else ao.clear()}return F.events.on("itemhover",a),()=>{F.events.off("itemhover",a)}},[F.events,H,L,z,ao]),c.useEffect(()=>{let a={open:H,nodeId:R,parentNodeId:S,reason:z.select("lastOpenChangeReason")};F.events.emit("menuopenchange",a)},[F.events,H,z,R,S]),(0,K.useIsoLayoutEffect)(()=>{let a=U.current;if(T&&(U.current=T),a&&T&&T!==a){z.set("instantType",void 0);let a=new AbortController;return W(()=>{z.set("instantType","trigger-change")},a.signal),()=>{a.abort()}}},[T,W,z]);let ap={open:H,side:an.side,align:an.align,anchorHidden:an.anchorHidden,nested:"menu"===C.type,instant:O},aq="menubar"===C.type&&C.context.modal,ar=I&&Q!==n.REASONS.triggerHover;(0,ae.useAnchoredPopupScrollLock)(H&&(aq||ar),"touch"===J,N,L);let as=(0,ad.usePositioner)(a,ap,{styles:an.positionerStyles,transitionStatus:M,props:y,refs:[f,z.useStateSetter("positionerElement")],hidden:!G,inert:!H}),at=G&&"menu"!==C.type&&("menubar"!==C.type&&I&&Q!==n.REASONS.triggerHover||"menubar"===C.type&&C.context.modal),au=null;return"menubar"===C.type?au=C.context.contentElement:void 0===C.type&&(au=L),(0,b.jsxs)(e.Provider,{value:an,children:[at&&(0,b.jsx)(aa.InternalBackdrop,{ref:"context-menu"===C.type||"nested-context-menu"===C.type?C.context.internalBackdropRef:null,inert:(0,X.inertValue)(!H),cutout:au}),(0,b.jsx)(Z.FloatingNode,{id:R,children:(0,b.jsx)(_.CompositeList,{elementsRef:z.context.itemDomElements,labelsRef:z.context.itemLabels,children:as})})]})});var ag=a.i(854401);let ah=c.createContext(void 0),ai=c.memo(c.forwardRef(function(a,d){let{render:e,className:f,value:g,defaultValue:h,onValueChange:j,disabled:k=!1,style:l,"aria-labelledby":m,...n}=a,[o,q]=c.useState(void 0),[r,s]=(0,p.useControlled)({controlled:g,default:h,name:"MenuRadioGroup"}),t=(0,ag.useStableCallback)((a,b)=>{j?.(a,b),b.isCanceled||s(a)}),u=(0,i.useRenderElement)("div",a,{state:{disabled:k},ref:d,props:{role:"group","aria-labelledby":m??o,"aria-disabled":k||void 0,...n}}),v=c.useMemo(()=>({value:r,setValue:t,disabled:k}),[r,t,k]);return(0,b.jsx)(I.Provider,{value:q,children:(0,b.jsx)(ah.Provider,{value:v,children:u})})})),aj=c.createContext(void 0),ak=c.forwardRef(function(a,e){let{render:g,className:j,id:k,label:l,nativeButton:m=!1,disabled:o=!1,closeOnClick:p=!1,value:r,style:s,...t}=a,u=(0,A.useCompositeListItem)({guess:!0,label:l}),v=f(!0),w=(0,B.useBaseUiId)(k),{store:x}=h(),E=x.useState("isActive",u.index),F=x.useState("itemProps"),{value:G,setValue:H,disabled:I}=function(){let a=c.useContext(ah);if(void 0===a)throw Error((0,d.default)(34));return a}(),J=x.useState("disabled"),K=o||I||J,L=G===r,{getItemProps:M,itemRef:N}=z({closeOnClick:p,disabled:K,highlighted:E,id:w,store:x,nativeButton:m,nodeId:v?.context.nodeId,itemMetadata:y}),O=c.useMemo(()=>({disabled:K,highlighted:E,checked:L}),[K,E,L]),P=(0,i.useRenderElement)("div",a,{state:O,stateAttributesMapping:C,props:[F,{role:"menuitemradio","aria-checked":L,onClick:function(a){H(r,(0,D.createChangeEventDetails)(n.REASONS.itemPress,a.nativeEvent,void 0,{preventUnmountOnClose:q.NOOP}))}},t,M],ref:[N,e,u.ref]});return(0,b.jsx)(aj.Provider,{value:O,children:P})}),al=c.forwardRef(function(a,b){let{render:e,className:f,style:g,keepMounted:h=!1,...j}=a,k=function(){let a=c.useContext(aj);if(void 0===a)throw Error((0,d.default)(35));return a}(),l=c.useRef(null),{transitionStatus:m,mounted:n,setMounted:o}=(0,F.useTransitionStatus)(k.checked);(0,G.useOpenChangeComplete)({batch:!0,enabled:!k.checked,open:k.checked,ref:l,onComplete(){k.checked||o(!1)}});let p={checked:k.checked,disabled:k.disabled,highlighted:k.highlighted,transitionStatus:m};return(0,i.useRenderElement)("span",a,{state:p,stateAttributesMapping:C,ref:[b,l],props:{"aria-hidden":!0,...j},enabled:h||n})});var am=a.i(329275),an=a.i(779549),ao=a.i(722050),ap=a.i(138939),aq=a.i(509301),ar=a.i(446355),as=a.i(625903);let at=c.createContext(null);function au(a){let b=c.useContext(at);if(null===b&&!a)throw Error((0,d.default)(5));return b}var av=a.i(162903),aw=a.i(629752),ax=a.i(417498),ay=a.i(418383),az=a.i(14239),aA=a.i(717017),aB=a.i(151943);let aC={...aA.popupStoreSelectors,disabled:a=>"menubar"===a.parent.type&&a.parent.context.disabled||a.disabled,modal:a=>(void 0===a.parent.type||"context-menu"===a.parent.type)&&(a.modal??!0),openMethod:a=>a.openMethod,allowMouseEnter:a=>a.allowMouseEnter,highlightItemOnHover:a=>a.highlightItemOnHover,parent:a=>a.parent,rootId:a=>"menu"===a.parent.type?a.parent.store.select("rootId"):void 0!==a.parent.type?a.parent.context.rootId:a.rootId,activeIndex:a=>a.activeIndex,isActive:(a,b)=>a.activeIndex===b,hoverEnabled:a=>a.hoverEnabled,instantType:a=>a.instantType,lastOpenChangeReason:a=>a.openChangeReason,floatingTreeRoot:a=>"menu"===a.parent.type?a.parent.store.select("floatingTreeRoot"):a.floatingTreeRoot,floatingNodeId:a=>a.floatingNodeId,floatingParentNodeId:a=>a.floatingParentNodeId,itemProps:a=>a.itemProps,closeDelay:a=>a.closeDelay,adaptiveOrigin:a=>a.adaptiveOrigin,keyboardEventRelay:a=>a.keyboardEventRelay?a.keyboardEventRelay:"menu"===a.parent.type?a.parent.store.select("keyboardEventRelay"):void 0};class aD extends ax.ReactStore{constructor(a,b,c=!1){const d=new aB.PopupTriggerMap;super(aF(d,b,c,a),aE(d),aC),this.unsubscribeParentListener=this.observe("parent",a=>{if(this.unsubscribeParentListener?.(),"menu"===a.type){let b=a.store.select("rootId"),c=a.store.select("floatingTreeRoot"),d=a.store.select("keyboardEventRelay");this.unsubscribeParentListener=a.store.subscribe(()=>{let e=a.store.select("rootId"),f=a.store.select("floatingTreeRoot"),g=a.store.select("keyboardEventRelay");(b!==e||c!==f||d!==g)&&(b=e,c=f,d=g,this.notifyAll())}),this.context.allowMouseUpTriggerRef=a.store.context.allowMouseUpTriggerRef;return}void 0!==a.type&&(this.context.allowMouseUpTriggerRef=a.context.allowMouseUpTriggerRef),this.unsubscribeParentListener=null})}setOpen(a,b){this.state.floatingRootContext.context.events.emit("setOpen",{open:a,eventDetails:b})}unsubscribeParentListener=null}function aE(a){return{positionerRef:c.createRef(),popupRef:c.createRef(),typingRef:{current:!1},itemDomElements:{current:[]},itemLabels:{current:[]},allowMouseUpTriggerRef:{current:!1},triggerFocusTargetRef:c.createRef(),beforeContentFocusGuardRef:c.createRef(),onOpenChangeComplete:void 0,triggerElements:a}}function aF(a,b,c=!1,d){return{...(0,aA.createInitialPopupStoreState)(a,b,c),disabled:!1,modal:!0,openMethod:null,allowMouseEnter:!1,highlightItemOnHover:!0,parent:{type:void 0},rootId:void 0,activeIndex:null,hoverEnabled:!0,instantType:void 0,openChangeReason:null,floatingTreeRoot:new ay.FloatingTreeStore,floatingNodeId:void 0,floatingParentNodeId:null,itemProps:q.EMPTY_OBJECT,keyboardEventRelay:void 0,closeDelay:0,adaptiveOrigin:void 0,...d}}var aG=a.i(284204);let aH=c.createContext(void 0);function aI(){return c.useContext(aH)}let aJ=(0,ao.fastComponent)(function(a){var d,e,f;let i,{children:j,open:k,onOpenChange:l,onOpenChangeComplete:o,defaultOpen:p=!1,disabled:r=!1,modal:s,loopFocus:t=!0,orientation:v="vertical",actionsRef:w,closeParentOnEsc:x=!1,handle:y,triggerId:z,defaultTriggerId:A=null,highlightItemOnHover:B=!0}=a,C=m(!0),E=h(!0),F=au(!0),G=aI(),H=c.useMemo(()=>G&&E?{type:"menu",store:E.store}:F?{type:"menubar",context:F}:C&&!E?{type:"context-menu",context:C}:{type:void 0},[C,E,F,G]),I=(0,am.useId)(),J=(0,am.useId)(),L=(0,Z.useFloatingParentNodeId)(),M="menu"===H.type?H.store:void 0,N=(k??p)&&M?.state.transitionStatus==="starting",O=(0,an.useRefWithInit)(()=>N?M?.state.instantType:void 0).current,P=(d={open:p,openProp:k,activeTriggerId:A,triggerIdProp:z,parent:H,disabled:r,highlightItemOnHover:B,modal:void 0===H.type?s:void 0,rootId:I,instantType:O},e=J,f=null!=L,(0,an.useRefWithInit)(()=>new aD(d,e,f)).current);P.useControlledProp("openProp",k),P.useControlledProp("triggerIdProp",z),P.useContextCallback("onOpenChangeComplete",o);let Q=P.useState("floatingTreeRoot"),R=(0,Z.useFloatingNodeId)(Q),S=P.useState("open"),T=P.useState("activeTriggerElement"),U=P.useState("positionerElement"),V=P.useState("hoverEnabled"),W=P.useState("disabled"),X=P.useState("lastOpenChangeReason"),$=P.useState("parent"),_=P.useState("activeIndex"),aa=P.useState("payload"),ad=P.useState("floatingParentNodeId"),ae=c.useRef(null),af=c.useRef("context-menu"!==$.type),ah=(0,Y.useTimeout)(),ai=c.useRef(!0),aj=(0,Y.useTimeout)(),ak=null!=ad,{openMethod:al,triggerProps:ao}=(0,aw.useOpenInteractionType)(S);P.useSyncedValues({disabled:r,highlightItemOnHover:B,modal:void 0===$.type?s:void 0,openMethod:al,rootId:I}),(0,aG.useImplicitActiveTrigger)(P);let{forceUnmount:at,transitionStatus:ax}=(0,aG.useOpenStateTransitions)(S,P,()=>{P.set("allowMouseEnter",!1)},N),ay=(0,ac.useAnimationsFinished)(P.context.popupRef);c.useEffect(()=>{if(void 0===O)return;let a=()=>{P.state.instantType===O&&P.set("instantType",void 0)};if(!S)return void a();if(void 0!==ax)return;if(null==P.context.popupRef.current)return void a();let b=new AbortController;return ay(a,b.signal),()=>{b.abort()}},[O,S,ax,ay,P]),(0,K.useIsoLayoutEffect)(()=>{C&&!E?P.update({parent:{type:"context-menu",context:C},floatingNodeId:R,floatingParentNodeId:L}):E&&P.update({floatingNodeId:R,floatingParentNodeId:L})},[C,E,R,L,P]),c.useEffect(()=>{if(S||(ae.current=null),"context-menu"===$.type){if(!S){ah.clear(),af.current=!1;return}ah.start(500,()=>{af.current=!0})}},[ah,S,$.type]),(0,K.useIsoLayoutEffect)(()=>{S||V||P.set("hoverEnabled",!0)},[S,V,P]);let az=(0,ag.useStableCallback)((a,b)=>{let c=b.reason;if(!a&&!P.select("open")||S===a&&b.trigger===T&&X===c)return;let d=(0,aG.attachPreventUnmountOnClose)(b);if(a||null!=b.trigger||(b.trigger=T??void 0),l?.(a,b),b.isCanceled)return;P.state.floatingRootContext.dispatchOpenChange(a,b);let e=b.event;if(!1===a&&e?.type==="click"&&"touch"===e.pointerType&&!ai.current)return;a&&c===n.REASONS.triggerFocus?(ai.current=!1,aj.start(300,()=>{ai.current=!0})):(ai.current=!0,aj.clear());let f=(c===n.REASONS.triggerPress||c===n.REASONS.itemPress)&&0===e.detail,g=!a&&(c===n.REASONS.escapeKey||null==c);ae.current=b.event;let h=(0,aG.createPopupOpenState)(P.state,a,b.trigger,d());h.openChangeReason=c,"menubar"===$.type&&(c===n.REASONS.triggerFocus||c===n.REASONS.focusOut||c===n.REASONS.triggerHover||c===n.REASONS.listNavigation||c===n.REASONS.siblingOpen)?h.instantType="group":f||g?h.instantType=f?"click":"dismiss":h.instantType=void 0,P.update(h)}),aA=(0,as.useSyncedFloatingRootContext)({popupStore:P,floatingRootContext:P.state.floatingRootContext,floatingId:J,nested:null!=L,onOpenChange:az}),aB=aA.context.events;(0,K.useIsoLayoutEffect)(()=>{let a=({open:a,eventDetails:b})=>az(a,b);return aB.on("setOpen",a),()=>{aB?.off("setOpen",a)}},[aB,az]);let aC=c.useCallback(()=>{P.setOpen(!1,(0,D.createChangeEventDetails)(n.REASONS.imperativeAction))},[P]);c.useImperativeHandle(w,()=>({unmount:at,close:aC}),[at,aC]),"context-menu"===$.type&&(i=$.context),c.useImperativeHandle(i?.positionerRef,()=>U,[U]),c.useImperativeHandle(i?.actionsRef,()=>({setOpen:az}),[az]);let aE=(0,ap.useDismiss)(aA,{enabled:!W,bubbles:{escapeKey:x&&"menu"===$.type},outsidePress:()=>"context-menu"!==$.type||ae.current?.type==="contextmenu"||af.current,externalTree:ak?Q:void 0}),aF=(0,av.useDirection)(),aH=c.useCallback(a=>{P.select("activeIndex")!==a&&P.set("activeIndex",a)},[P]),aJ=(0,aq.useListNavigation)(aA,{enabled:!W,listRef:P.context.itemDomElements,activeIndex:_,nested:void 0!==$.type,loopFocus:t,orientation:v,parentOrientation:"menubar"===$.type?$.context.orientation:void 0,rtl:"rtl"===aF,disabledIndices:q.EMPTY_ARRAY,onNavigate:aH,openOnArrowKeyDown:"context-menu"!==$.type,externalTree:ak?Q:void 0,focusItemOnHover:B}),aK=c.useCallback(a=>{P.context.typingRef.current=a},[P]),aL=(0,ar.useTypeahead)(aA,{enabled:!W,listRef:P.context.itemLabels,elementsRef:P.context.itemDomElements,activeIndex:_,resetMs:ab.TYPEAHEAD_RESET_MS,onMatch:a=>{S&&a!==_&&P.set("activeIndex",a)},onTyping:aK}),aM=c.useMemo(()=>{let a=(0,u.mergeProps)(aL.reference,aJ.reference,aE.reference,{onMouseMove(){P.set("allowMouseEnter",!0)}},ao);return a["aria-haspopup"]="menu",a["aria-expanded"]=S,a},[P,aL.reference,aJ.reference,aE.reference,ao,S]),aN=c.useMemo(()=>{let a=(0,u.mergeProps)(aJ.trigger,aE.trigger,ao);return a["aria-haspopup"]="menu",a["aria-expanded"]=!1,a},[aJ.trigger,aE.trigger,ao]);(0,an.useRefWithInit)(()=>(P.update({inactiveTriggerProps:aN}),null));let aO=c.useMemo(()=>(0,u.mergeProps)(aG.FOCUSABLE_POPUP_PROPS,{id:J,role:"menu","aria-orientation":"horizontal"===v?"horizontal":void 0,"aria-labelledby":T?.id,onMouseMove(){P.set("allowMouseEnter",!0),"menu"===$.type&&P.set("hoverEnabled",!1)},onClick(){P.select("hoverEnabled")&&P.set("hoverEnabled",!1)},onKeyDown(a){let b=P.select("keyboardEventRelay");b&&!a.isPropagationStopped()&&b(a)}},aL.floating,aJ.floating,aE.floating),[T,J,v,$.type,P,aL.floating,aJ.floating,aE.floating]),aP=aJ.item??q.EMPTY_OBJECT;(0,aG.usePopupInteractionProps)(P,{floatingRootContext:aA,activeTriggerProps:aM,inactiveTriggerProps:aN,popupProps:aO,itemProps:aP});let aQ=c.useMemo(()=>({store:P,parent:H}),[P,H]),aR=(0,b.jsxs)(g.Provider,{value:aQ,children:[y&&(0,b.jsx)(aG.PopupHandleAttachment,{handle:y,store:P}),"function"==typeof j?j({payload:aa}):j]});return void 0===$.type||"context-menu"===$.type?(0,b.jsx)(Z.FloatingTree,{externalTree:Q,children:aR}):aR});var aK=a.i(187828),aL=a.i(25003),aM=a.i(331973),aN=a.i(184842),aO=a.i(705735),aP=a.i(30116),aQ=a.i(961892),aR=a.i(796511),aS=a.i(559539),aT=a.i(426476),aU=a.i(497151),aV=a.i(793332),aW=a.i(261394);let aX=(0,ao.fastComponentRef)(function(a,e){let f,{render:g,className:k,style:l,disabled:m=!1,nativeButton:o=!0,id:p,openOnHover:r,delay:s=100,closeDelay:v=0,handle:w,payload:x,...y}=a,z=h(!0),A=(0,aU.usePopupHandleStore)(w)??z?.store;if(!A)throw Error((0,d.default)(85));let C=(0,B.useBaseUiId)(p),D=A.useState("isTriggerActive",C),E=A.useState("floatingRootContext"),F=A.useState("isOpenedByTrigger",C),G=A.useState("triggerPopupId",C),H=c.useRef(null),I=(f=au(!0),c.useMemo(()=>f?{type:"menubar",context:f}:{type:void 0},[f])),J=(0,aS.useCompositeRootContext)(!0),L=(0,Z.useFloatingTree)(),M=c.useMemo(()=>L??new ay.FloatingTreeStore,[L]),N=(0,Z.useFloatingNodeId)(M),O=(0,Z.useFloatingParentNodeId)(),{registerTrigger:P,isMountedByThisTrigger:Q}=(0,aG.useTriggerDataForwarding)(C,H,A,{payload:x,closeDelay:v,parent:I,floatingTreeRoot:M,floatingNodeId:N,floatingParentNodeId:O,keyboardEventRelay:J?.relayKeyboardEvent}),R="menubar"===I.type,S=A.useState("disabled"),T=m||S||R&&I.context.disabled,{getButtonProps:U,buttonRef:V}=(0,t.useButton)({disabled:T,native:o});c.useEffect(()=>{F||void 0!==I.type||(A.context.allowMouseUpTriggerRef.current=!1)},[A,F,I.type]);let W=c.useRef(null),X=(0,Y.useTimeout)(),$=(0,ag.useStableCallback)(a=>{if(!W.current)return;X.clear(),A.context.allowMouseUpTriggerRef.current=!1;let b=a.target;(0,aP.contains)(W.current,b)||(0,aP.contains)(A.select("positionerElement"),b)||b===W.current||null!=b&&function a(b){return(0,aT.isHTMLElement)(b)&&b.hasAttribute("data-rootownerid")?b.getAttribute("data-rootownerid"):(0,aT.isLastTraversableNode)(b)?void 0:a((0,aT.getParentNode)(b))}(b)===A.select("rootId")||(0,aQ.isMouseWithinBounds)(a,W.current)||M.events.emit("close",{domEvent:a,reason:n.REASONS.cancelOpen})});c.useEffect(()=>{F&&A.select("lastOpenChangeReason")===n.REASONS.triggerHover&&(0,aK.ownerDocument)(W.current).addEventListener("mouseup",$,{once:!0})},[F,$,A]);let _=R&&I.context.hasSubmenuOpen,aa=r??_,ac=(0,aO.useHoverReferenceInteraction)(E,{enabled:aa&&!T&&(!R||_&&!Q),handleClose:(0,aL.safePolygon)({blockPointerEvents:!R}),mouseOnly:!0,move:!1,restMs:void 0===I.type?s:void 0,delay:{close:v},triggerElementRef:H,externalTree:M,isActiveTrigger:D,isClosing:()=>"ending"===A.select("transitionStatus")}),ad=function(a,b){let d=(0,Y.useTimeout)(),[e,f]=c.useState(!1);return(0,K.useIsoLayoutEffect)(()=>{a&&b===n.REASONS.triggerHover?(f(!0),d.start(ab.PATIENT_CLICK_THRESHOLD,()=>{f(!1)})):a||(d.clear(),f(!1))},[a,b,d]),e}(F,A.select("lastOpenChangeReason")),ae=(0,aM.useClick)(E,{enabled:!T,event:F&&R?"click":"mousedown",toggle:!0,ignoreMouse:!1,stickIfOpen:void 0===I.type&&ad}),af=(0,aN.useFocus)(E,{enabled:!T&&_}),ah=function(a){let{enabled:b=!0,mouseDownAction:d,open:e}=a,f=c.useRef(!1);return c.useMemo(()=>b?{onMouseDown:a=>{("open"===d&&!e||"close"===d&&e)&&(f.current=!0,(0,aK.ownerDocument)(a.currentTarget).addEventListener("click",()=>{f.current=!1},{once:!0}))},onClick:a=>{f.current&&(f.current=!1,a.preventBaseUIHandler())}}:q.EMPTY_OBJECT,[b,d,e])}({open:F,enabled:R,mouseDownAction:"open"}),ai=c.useMemo(()=>(0,u.mergeProps)(af.reference,ae.reference),[af.reference,ae.reference]),aj=A.useState("triggerProps",Q),{preFocusGuardRef:ak,handlePreFocusGuardFocus:al,handleFocusTargetFocus:am}=(0,aV.useTriggerFocusGuards)(A,H),an={disabled:T,open:F},ao=[W,e,V,P,H],ap=[ai,ac??q.EMPTY_OBJECT,aj,{"aria-haspopup":"menu","aria-controls":G,id:C,onMouseDown:a=>{A.select("open")||(X.start(200,()=>{A.context.allowMouseUpTriggerRef.current=!0}),(0,aK.ownerDocument)(a.currentTarget).addEventListener("mouseup",$,{once:!0}))}},R?{role:"menuitem"}:{},ah,y,U],aq=(0,i.useRenderElement)("button",a,{enabled:!R,stateAttributesMapping:j.pressableTriggerOpenStateMapping,state:an,ref:ao,props:ap});return R?(0,b.jsx)(aR.CompositeItem,{tag:"button",render:g,className:k,style:l,state:an,refs:ao,props:ap,stateAttributesMapping:j.pressableTriggerOpenStateMapping}):F?(0,b.jsxs)(c.Fragment,{children:[(0,b.jsx)(aW.FocusGuard,{ref:ak,onFocus:al},`${C}-pre-focus-guard`),(0,b.jsx)(c.Fragment,{children:aq},C),(0,b.jsx)(aW.FocusGuard,{ref:A.context.triggerFocusTargetRef,onFocus:am},`${C}-post-focus-guard`)]}):(0,b.jsx)(c.Fragment,{children:aq},C)});var aY=a.i(362092);let aZ=c.forwardRef(function(a,b){let{render:c,className:d,style:e,children:g,...j}=a,{store:k}=h(),{side:l}=f(),m=k.useState("instantType"),{children:n,state:o}=(0,aY.usePopupViewport)({store:k,side:l,children:g}),p={activationDirection:o.activationDirection,transitioning:o.transitioning,instant:m};return(0,i.useRenderElement)("div",a,{state:p,ref:b,props:[j,{children:n}],stateAttributesMapping:aY.popupViewportStateMapping})});var a$=a.i(118816);let a_={"aria-expanded":void 0},a0=c.forwardRef(function(a,b){let{render:e,className:g,style:k,label:l,id:m,nativeButton:o=!1,openOnHover:p=!0,delay:r=100,closeDelay:s=0,disabled:t=!1,...u}=a,w=aI();if(!w?.parentMenu)throw Error((0,d.default)(37));let x=(0,A.useCompositeListItem)({guess:!0,label:l}),y=f(),{store:C}=h(),D=(0,B.useBaseUiId)(m),E=C.useState("open"),F=C.useState("floatingRootContext"),G=C.useState("floatingTreeRoot"),H=C.useState("triggerPopupId",D),I=(0,aG.useTriggerRegistration)(D,C),J=(0,ag.useStableCallback)(a=>{I(a),null!==a&&C.select("open")&&null==C.select("activeTriggerId")&&C.update({activeTriggerId:D??null,activeTriggerElement:a,closeDelay:s})}),L=c.useRef(null),M=c.useCallback(a=>{L.current=a,C.set("activeTriggerElement",a)},[C]);(0,K.useIsoLayoutEffect)(()=>(J(L.current),()=>J(null)),[J,D,C]),C.useSyncedValue("closeDelay",s);let N=w.parentMenu,O=C.useState("disabled"),P=N.useState("disabled"),Q=t||O||P,R=N.useState("itemProps"),S=N.useState("isActive",x.index),T=c.useMemo(()=>({type:"submenu-trigger",setActive(){N.select("highlightItemOnHover")&&N.set("activeIndex",x.index)}}),[N,x.index]),{getItemProps:U,itemRef:V}=z({closeOnClick:!1,disabled:Q,highlighted:S,id:D,store:C,typingRef:N.context.typingRef,nativeButton:o,itemMetadata:T,nodeId:y?.context.nodeId}),W=C.useState("hoverEnabled"),X=(0,aO.useHoverReferenceInteraction)(F,{enabled:W&&p&&!Q,handleClose:(0,aL.safePolygon)({blockPointerEvents:!0}),mouseOnly:!0,move:!0,restMs:r,delay:{open:r,close:s},shouldOpen:r>0?()=>N.select("allowMouseEnter"):void 0,triggerElementRef:L,externalTree:G,isClosing:()=>"ending"===C.select("transitionStatus"),guardStaleOpen:!0}),Y=(0,aM.useClick)(F,{enabled:!Q,event:"mousedown",toggle:!p,ignoreMouse:p,stickIfOpen:!1}).reference??q.EMPTY_OBJECT,Z=C.useState("triggerProps",!0);delete Z.id;let $=C.useState("openMethod"),_=C.useState("lastOpenChangeReason")===n.REASONS.listNavigation||"keyboard"===$,aa=E&&_&&v.platform.screenReader.voiceOver;return(0,i.useRenderElement)("div",a,{state:{disabled:Q,highlighted:S,open:E},stateAttributesMapping:j.triggerOpenStateMapping,props:[Y,X,Z,R,aa?a_:void 0,{"aria-controls":H,tabIndex:E||S?0:-1,onBlur(){S&&N.set("activeIndex",null)}},u,U],ref:[b,x.ref,V,J,M]})});var a1=a.i(4675);class a2 extends a1.BasePopupHandle{constructor(){super(function(){let a=new aB.PopupTriggerMap;return Object.assign(new az.NullStore(Object.freeze(aF(a)),Object.freeze(aE(a)),aC),{setOpen:q.NOOP})}(),"Menu")}open(a){this.openByTrigger(a)}close(){this.closePopup()}get isOpen(){return this.attachedStore?.select("open")??!1}}a.s(["Arrow",0,k,"Backdrop",0,o,"CheckboxItem",0,E,"CheckboxItemIndicator",0,H,"Group",0,J,"GroupLabel",0,L,"Handle",0,a2,"Item",0,M,"LinkItem",0,N,"Popup",0,T,"Portal",0,W,"Positioner",0,af,"RadioGroup",0,ai,"RadioItem",0,ak,"RadioItemIndicator",0,al,"Root",0,aJ,"Separator",()=>a$.Separator,"SubmenuRoot",0,function(a){let d=h().store,e=c.useMemo(()=>({parentMenu:d}),[d]);return(0,b.jsx)(aH.Provider,{value:e,children:(0,b.jsx)(aJ,{...a})})},"SubmenuTrigger",0,a0,"Trigger",0,aX,"Viewport",0,aZ,"createHandle",0,function(){return new a2}],50012);var a3=a.i(50012),a3=a3;a.i(763802),a.i(199968);var a4=a.i(497895);a.s(["DropdownMenu",0,function({...a}){return(0,b.jsx)(a3.Root,{"data-slot":"dropdown-menu",...a})},"DropdownMenuContent",0,function({align:a="start",alignOffset:c=0,side:d="bottom",sideOffset:e=4,className:f,...g}){return(0,b.jsx)(a3.Portal,{children:(0,b.jsx)(a3.Positioner,{className:"isolate z-50 outline-none",align:a,alignOffset:c,side:d,sideOffset:e,children:(0,b.jsx)(a3.Popup,{"data-slot":"dropdown-menu-content",className:(0,a4.cn)("z-50 max-h-(--available-height) w-(--anchor-width) min-w-32 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 outline-none data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:overflow-hidden data-closed:fade-out-0 data-closed:zoom-out-95",f),...g})})})},"DropdownMenuGroup",0,function({...a}){return(0,b.jsx)(a3.Group,{"data-slot":"dropdown-menu-group",...a})},"DropdownMenuItem",0,function({className:a,inset:c,variant:d="default",...e}){return(0,b.jsx)(a3.Item,{"data-slot":"dropdown-menu-item","data-inset":c,"data-variant":d,className:(0,a4.cn)("group/dropdown-menu-item relative flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 data-[variant=destructive]:*:[svg]:text-destructive",a),...e})},"DropdownMenuTrigger",0,function({...a}){return(0,b.jsx)(a3.Trigger,{"data-slot":"dropdown-menu-trigger",...a})}],676504)},363288,a=>{"use strict";var b=a.i(405050);let c=(0,b.createServerReference)("7f97f1dd862dcfb0c626dc15b752e78bb5bf9093a0",b.callServer,void 0,b.findSourceMapURL,"markSeenAction");a.s(["markSeenAction",0,c])},135432,a=>{"use strict";var b=a.i(572131),c=a.i(767561),d=a.i(864037),e=a.i(363288),f=a.i(199169),g=a.i(576271),h=a.i(759497),i=a.i(497895),j=a.i(983874);let k=[],l=!1,m=new Set;function n(a,b){let c=a=>({name:a,icon:b?.find(b=>b.name===a)?.icon??null}),d=c(a.bot),e=[],f=new Map,g=new Map,h=new Map;for(let b of a.lines){let a=b.bot?c(b.bot):d,i=b.to?c(b.to):b.parent?g.get(b.parent)??null:null;switch(b.kind){case"user":e.push({id:b.id,bot:b.to?c(b.to):d,to:b.to?c(b.to):null,text:b.text,kind:"user"});break;case"text":e.push({id:b.id,bot:a,to:i,text:b.text,kind:"say"});break;case"note":e.push({id:b.id,bot:a,to:i,text:b.text,kind:"note"});break;case"stop":e.push({id:b.id,bot:a,to:i,text:b.text,kind:"stop",at:b.at});break;case"tool":f.set(b.callId,e.length),e.push({id:b.id,bot:a,to:i,text:b.note??b.input,kind:"tool",at:b.at,tool:{name:b.name,input:b.input,note:b.note,path:b.path,callId:b.callId}});break;case"tool-result":{let a=f.get(b.callId)??h.get(b.callId),c=void 0===a?void 0:e[a];c?.tool&&void 0!==a?e[a]={...c,tool:{...c.tool,results:b.results,more:b.more}}:c?.kind==="ask"&&void 0!==a&&(e[a]={id:c.id,bot:c.bot,to:null,text:c.text,kind:"tool",tool:{name:b.name,input:c.text,callId:b.callId,results:b.results,more:b.more}});break}case"ask":{h.set(b.callId,e.length);let d=c(b.to);g.set(b.callId,a),e.push({id:b.id,bot:a,to:d,text:b.text,kind:"ask",question:b.question})}}}if(e.forEach((a,b)=>{if("user"!==a.kind)return;let c=e.slice(0,b).findLast(b=>"user"!==b.kind&&b.bot.name===a.bot.name);c?.kind==="tool"&&(e[b]={...a,steppedIn:!0})}),"done"===a.status){let b=e.at(-1);b&&"say"===b.kind&&b.text===a.outcome&&(e[e.length-1]={...b,kind:"result"})}return{id:a.id,room:a.room,request:a.request,label:a.label,bot:d,lines:e,status:"running"===a.status?"working":a.status,outcome:a.outcome,ask:a.ask,seen:a.seen,routineId:a.routineId,tokens:a.tokens,contextTokens:a.contextTokens,contextBudget:a.contextBudget,updatedAt:a.updatedAt}}let o=new Map,p=new Map,q=[],r=new Set,s=[],t=!1,u=new Set,v=new Set,w=!1,x=new Set,y=new Set,z=new Set,A=[],B=a=>a.id.slice(0,a.id.lastIndexOf("-")),C=a=>"user"===a.kind?{name:j.ROOM_THURSDAY}:a.bot,D=a=>"user"===a.kind?a.bot:a.to,E=(a,b)=>({kind:"entry",speaker:a.bot,entry:{kind:"work",key:`${a.lines[0].id}-work`,lines:a.lines,open:b}});a.s(["botThreads",0,{sync(a,b){for(let c of(l=!0,k=[...a].reverse().map(a=>n(a,b)),m))c()},primed:()=>l},"heardBy",0,D,"lastSaid",0,function(a){for(let b=a.lines.length-1;b>=0;b--){let c=a.lines[b];if("user"!==c.kind&&"note"!==c.kind&&"stop"!==c.kind)return c}return null},"latestPerBot",0,function(a){let b=new Map;for(let c of a)for(let a of(b.has(c.bot.name)||b.set(c.bot.name,{bot:c.bot,thread:c,line:null}),c.lines))"user"!==a.kind&&"note"!==a.kind&&"stop"!==a.kind&&b.set(a.bot.name,{bot:a.bot,thread:c,line:a});return[...b.values()]},"ringingThreads",0,{set(a){if(!(a.length===q.length&&a.every((a,b)=>q[b]===a)))for(let b of(q=a,r))b()}},"roomOpen",0,{set(a){if(a!==t)for(let b of(t=a,u))b()}},"roomOpens",0,{open(a){for(let b of y)b(a)},subscribe:a=>(y.add(a),()=>{y.delete(a)})},"rosterOf",0,function(a){let b=[a.bot];for(let c of a.lines)for(let a of[c.bot,c.to])a&&a.name!==j.ROOM_THURSDAY&&!b.some(b=>b.name===a.name)&&b.push(a);return b},"screenActs",0,{announce(a){for(let b of z)b(a)},subscribe:a=>(z.add(a),()=>{z.delete(a)})},"threadDrafts",0,{recipient:a=>p.get(a),select:(a,b)=>{p.set(a,b)},get:(a,b,c)=>o.get(a)?.get(JSON.stringify([b,c??null]))??"",set(a,b,c,d){let e=o.get(a)??new Map,f=JSON.stringify([b,d??null]);c?e.set(f,c):e.delete(f),e.size?o.set(a,e):o.delete(a)}},"threadFromRow",0,n,"threadItems",0,function(a,b,c=[]){let d,e=(d=new Set(a.lines.filter(a=>"tool"===a.kind||"ask"===a.kind).map(B)),a=>"user"===a.kind||"ask"===a.kind||"result"===a.kind||"say"===a.kind&&!d.has(B(a))),f=b===a.bot.name?a.lines:a.lines.filter(a=>C(a).name===b||e(a)&&D(a)?.name===b),g=new Set([a.bot.name,j.ROOM_THURSDAY]),h=new Map;for(let b of a.lines){let a=D(b);a&&!g.has(a.name)&&(g.add(a.name),h.set(b.id,{from:C(b),to:a})),g.add(b.bot.name)}let i=[],k=new Map,l=a=>{let b=a?k.get(a.name):void 0;b&&(k.delete(b.bot.name),i.push(E(b,!1)))};for(let a of f){if(!e(a)){let b=k.get(a.bot.name)??{bot:a.bot,lines:[],at:0};b.lines.push(a),b.at=i.length,k.set(a.bot.name,b);continue}let b=C(a);l(D(a));let c=h.get(a.id);c&&i.push({kind:"invite",key:`${a.id}-joins`,...c}),l(b),i.push({kind:"entry",speaker:b,entry:{kind:"message",key:a.id,line:a}})}for(let a of[...k.values()].sort((a,b)=>a.at-b.at).reverse())i.splice(a.at,0,E(a,!0));for(let a of c)k.has(a.name)||i.push({kind:"entry",speaker:a,entry:{kind:"work",key:`${a.name}-now`,lines:[],open:!0}});let m=[];for(let a of i){let b=m.at(-1);"invite"===a.kind?m.push(a):b?.kind==="turn"&&b.speaker.name===a.speaker.name?b.entries.push(a.entry):m.push({kind:"turn",key:a.entry.key,speaker:a.speaker,entries:[a.entry]})}return m},"useBotThreads",0,function(){return(0,b.useSyncExternalStore)(a=>(m.add(a),()=>m.delete(a)),()=>k,()=>A)},"useRingingThreads",0,function(){return(0,b.useSyncExternalStore)(a=>(r.add(a),()=>r.delete(a)),()=>q,()=>s)},"useRoomOpen",0,function(){return(0,b.useSyncExternalStore)(a=>(u.add(a),()=>u.delete(a)),()=>t,()=>!1)},"useSeenOnDetail",0,function(a){let j=(0,b.useRef)(new Set),k=a?.id??null,l=a?`${a.id}@${(0,f.toDate)(a.updatedAt).getTime()}`:null,m=!!a&&"done"===a.status&&!a.seen;(0,b.useEffect)(()=>{!k||!l||!m||j.current.has(l)||(j.current.add(l),(0,e.markSeenAction)([k]).then(g.unwrapResult).then(()=>(0,h.revalidate)(c.queryKey.threads)).catch(a=>{j.current.delete(l),d.toast.add({type:"error",title:"Could not mark the thread as read",description:(0,i.errorToString)(a)})}))},[k,l,m])},"useWriteLineUp",0,function(){return(0,b.useSyncExternalStore)(a=>(x.add(a),()=>x.delete(a)),()=>w,()=>!1)},"writeLine",0,{open(){for(let a of v)a()},subscribe:a=>(v.add(a),()=>{v.delete(a)}),shown(a){if(a!==w)for(let b of(w=a,x))b()}}])},184842,a=>{"use strict";var b=a.i(572131),c=a.i(168536),d=a.i(151086),e=a.i(43074),f=a.i(187828),g=a.i(736069),h=a.i(426476),i=a.i(380362),j=a.i(30116),k=a.i(361813),l=a.i(394552),m=a.i(307436);let n=d.platform.os.mac&&d.platform.engine.webkit;a.s(["useFocus",0,function(a,d={}){let{enabled:o=!0,delay:p}=d,q="rootStore"in a?a.rootStore:a,{events:r,dataRef:s}=q.context,t=b.useRef(!1),u=b.useRef(null),v=b.useRef(!0),w=(0,g.useTimeout)();b.useEffect(()=>{let a=q.select("domReferenceElement");if(!o)return;let b=(0,h.getWindow)(a);return(0,e.mergeCleanups)((0,c.addEventListener)(b,"blur",function(){let a=q.select("domReferenceElement");!q.select("open")&&(0,h.isHTMLElement)(a)&&a===(0,j.activeElement)((0,f.ownerDocument)(a))&&(t.current=!0,u.current=a)}),n&&(0,c.addEventListener)(b,"keydown",function(){v.current=!0},!0),n&&(0,c.addEventListener)(b,"pointerdown",function(){v.current=!1},!0))},[q,o]),b.useEffect(()=>{if(o)return r.on("openchange",a),()=>{r.off("openchange",a)};function a(a){if(a.reason===m.REASONS.triggerPress||a.reason===m.REASONS.escapeKey){let a=q.select("domReferenceElement");(0,h.isElement)(a)&&(u.current=a,t.current=!0)}}},[r,o,q]);let x=b.useMemo(()=>{function a(){t.current=!1,u.current=null}return{onMouseLeave(){a()},onFocus(b){let c=b.currentTarget;if(t.current){if(u.current===c)return;a()}let d=(0,j.getTarget)(b.nativeEvent);if((0,h.isElement)(d)){if(n&&!b.relatedTarget){if(!v.current&&!(0,k.isTypeableElement)(d))return}else if(!(0,k.matchesFocusVisible)(d))return}let e=(0,k.isTargetInsideEnabledTrigger)(b.relatedTarget,q.context.triggerElements),{nativeEvent:f,currentTarget:g}=b,i="function"==typeof p?p():p;q.select("open")&&e||0===i||void 0===i?q.setOpen(!0,(0,l.createChangeEventDetails)(m.REASONS.triggerFocus,f,g)):w.start(i,()=>{t.current||q.setOpen(!0,(0,l.createChangeEventDetails)(m.REASONS.triggerFocus,f,g))})},onBlur(b){a();let c=b.relatedTarget,d=b.nativeEvent,e=(0,h.isElement)(c)&&c.hasAttribute((0,i.createAttribute)("focus-guard"))&&"outside"===c.getAttribute("data-type");w.start(0,()=>{let a=q.select("domReferenceElement"),b=(0,j.activeElement)((0,f.ownerDocument)(a));if(!c&&b===a||(0,j.contains)(s.current.floatingContext?.refs.floating.current,b)||(0,j.contains)(a,b)||e)return;let g=c??b;(0,k.isTargetInsideEnabledTrigger)(g,q.context.triggerElements)||q.setOpen(!1,(0,l.createChangeEventDetails)(m.REASONS.triggerFocus,d))})}}},[s,p,q,w]);return b.useMemo(()=>o?{reference:x,trigger:x}:{},[o,x])}])}];
2
2
 
3
- //# sourceMappingURL=_1doidrw._.js.map
3
+ //# sourceMappingURL=_10f-jib._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[869480,a=>{"use strict";var b=a.i(187924),c=a.i(767561),d=a.i(280281),e=a.i(313237),f=a.i(759497),g=a.i(405050);let h=(0,g.createServerReference)("7f6153547e2d9efcc9931df21e4985a569be7fbcf6",g.callServer,void 0,g.findSourceMapURL,"setKeepWorkingOnAction"),i="Work while the app is closed";a.s(["KeepWorkingSwitch",0,function(){let{data:a,mutate:g}=(0,f.useServerRoute)(c.queryKey.botKeepWorking),[j]=(0,e.useServerAction)(h,{onOk:()=>(0,f.revalidate)(c.queryKey.botKeepWorking)});return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("span",{className:"shrink-0 text-xs text-muted-foreground",title:"Off, closing the last tab stops running jobs and holds routines until one is open again. On, they run until the server stops.",children:i}),(0,b.jsx)(d.Switch,{checked:a??!1,disabled:void 0===a,onCheckedChange:a=>{g(a,!1),j(a)},"aria-label":i})]})}],869480)},703347,a=>{"use strict";var b=a.i(405050);let c=(0,b.createServerReference)("7f1f247b8563afa66ec2d6f726f46f905b44817052",b.callServer,void 0,b.findSourceMapURL,"deleteWorkspaceFileAction");a.s(["deleteWorkspaceFileAction",0,c])},30681,a=>{"use strict";var b=a.i(572131),c=a.i(497895);a.s(["useObjectState",0,a=>{let[d,e]=(0,b.useState)(a);return[d,(0,b.useMemo)(()=>{let a=a=>{e(b=>{let d=(0,c.isFunction)(a)?a(b):a;return Object.keys(d).some(a=>!Object.is(b[a],d[a]))?{...b,...d}:b})},b=new Map;return new Proxy(a,{get(d,e,f){if("symbol"==typeof e)return Reflect.get(d,e,f);let g=b.get(e);return g||(g=b=>{a(a=>({[e]:(0,c.isFunction)(b)?b(a[e]):b}))},b.set(e,g)),g}})},[])]}])},951675,a=>{"use strict";var b=a.i(164831);let c={name:"trash",size:24,node:[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]],aliases:["trash-2"]};c.node;let d=(0,b.default)(c);a.s(["Trash2",0,d],951675)}];
1
+ module.exports=[869480,a=>{"use strict";var b=a.i(187924),c=a.i(767561),d=a.i(280281),e=a.i(313237),f=a.i(759497),g=a.i(405050);let h=(0,g.createServerReference)("7f3dc1c7787c59bd2c3c24559f88e7e41638c1b78d",g.callServer,void 0,g.findSourceMapURL,"setKeepWorkingOnAction"),i="Work while the app is closed";a.s(["KeepWorkingSwitch",0,function(){let{data:a,mutate:g}=(0,f.useServerRoute)(c.queryKey.botKeepWorking),[j]=(0,e.useServerAction)(h,{onOk:()=>(0,f.revalidate)(c.queryKey.botKeepWorking)});return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("span",{className:"shrink-0 text-xs text-muted-foreground",title:"Off, closing the last tab stops running jobs and holds routines until one is open again. On, they run until the server stops.",children:i}),(0,b.jsx)(d.Switch,{checked:a??!1,disabled:void 0===a,onCheckedChange:a=>{g(a,!1),j(a)},"aria-label":i})]})}],869480)},119486,a=>{"use strict";var b=a.i(405050);let c=(0,b.createServerReference)("7fecf7a8f59fb3b540c294fcbc5574664cfd32cc22",b.callServer,void 0,b.findSourceMapURL,"deleteWorkspaceFileAction");a.s(["deleteWorkspaceFileAction",0,c])},30681,a=>{"use strict";var b=a.i(572131),c=a.i(497895);a.s(["useObjectState",0,a=>{let[d,e]=(0,b.useState)(a);return[d,(0,b.useMemo)(()=>{let a=a=>{e(b=>{let d=(0,c.isFunction)(a)?a(b):a;return Object.keys(d).some(a=>!Object.is(b[a],d[a]))?{...b,...d}:b})},b=new Map;return new Proxy(a,{get(d,e,f){if("symbol"==typeof e)return Reflect.get(d,e,f);let g=b.get(e);return g||(g=b=>{a(a=>({[e]:(0,c.isFunction)(b)?b(a[e]):b}))},b.set(e,g)),g}})},[])]}])},951675,a=>{"use strict";var b=a.i(164831);let c={name:"trash",size:24,node:[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]],aliases:["trash-2"]};c.node;let d=(0,b.default)(c);a.s(["Trash2",0,d],951675)}];
2
2
 
3
- //# sourceMappingURL=_05rxyf9._.js.map
3
+ //# sourceMappingURL=_10mo72m._.js.map
@@ -1,5 +1,5 @@
1
1
  module.exports=[61514,a=>a.a(async(b,c)=>{try{var d=a.i(868468),e=a.i(569572),f=a.i(344853),g=a.i(706210),h=a.i(182248),i=b([f]);async function j(){let a=await (0,f.listThreadOverview)();if(!a.length)return null;let b=a.map(a=>{let b=(0,d.formatDistanceToNowStrict)((0,g.toDate)(a.updatedAt),{addSuffix:!0}),c=a.room.questions[0],f="waiting"===a.status&&c?`waiting on the user since ${b} — ${c.bot} asked: ${(0,h.clip)(c.text,e.PROMPT_LINE.jobOutcome)}`:"waiting"===a.status?`stopped ${b}, not finished`:"running"===a.status?`running, last moved ${b}`:`${a.status} ${b}`;return`- "${a.label}" (${a.id}) — ${a.bot} — ${f}`});return`[The threads as this call opened, open work first. They move while you talk.]
2
- ${b.join("\n")}`}[f]=i.then?(await i)():i,a.s(["loadCallStanding",0,j]),c()}catch(a){c(a)}},!1),614747,a=>a.a(async(b,c)=>{try{var d=a.i(569572),e=a.i(884780),f=a.i(762008),g=a.i(221214),h=a.i(344853),i=a.i(986743),j=a.i(661210),k=a.i(138100),l=a.i(569549),m=a.i(821415),n=a.i(644468),o=a.i(938934),p=b([g,h,i,l,n]);async function q(a,b=!1){var c,p,s,t,u,v,w;let x,y=await (0,m.openWorkspace)(),[z,A,B,C,D,E,F,G,H]=await Promise.all([(0,k.loadSkills)(y),(0,i.listNoteIndex)(),(0,i.listAlwaysLoaded)(),(0,i.readNotes)(j.MEMORY_ALWAYS_LISTED,{touch:!1}),(0,n.listConnectedToolNames)(),(0,g.listJobBots)(),(0,l.listRecentTurns)(d.RECENT_CALL.rows),(0,l.readCallSkillsOn)(),(0,g.readBotMemoryOn)()]),I=await (0,h.listCallJobs)(F.map(a=>a.callId)),J=[(0,o.thursdayIdentity)(),b?"":(0,o.callEnding)(),function(a,b,c){let{crowded:d,heavy:e}=(0,o.tidying)(a),g=[...e].sort((a,b)=>b.factCount-a.factCount).slice(0,3).map(a=>a.path),h=d||e.length?`
2
+ ${b.join("\n")}`}[f]=i.then?(await i)():i,a.s(["loadCallStanding",0,j]),c()}catch(a){c(a)}},!1),614747,a=>a.a(async(b,c)=>{try{var d=a.i(569572),e=a.i(884780),f=a.i(762008),g=a.i(221214),h=a.i(344853),i=a.i(986743),j=a.i(661210),k=a.i(138100),l=a.i(569549),m=a.i(821415),n=a.i(644468),o=a.i(938934),p=b([g,h,i,l,n]);async function q(a,b=!1){var c,p,t,u,v,w,x;let y,z=await (0,m.openWorkspace)(),[A,B,C,D,E,F,G,H,I]=await Promise.all([(0,k.loadSkills)(z),(0,i.listNoteIndex)(),(0,i.listAlwaysLoaded)(),(0,i.readNotes)(j.MEMORY_ALWAYS_LISTED,{touch:!1}),(0,n.listConnectedToolNames)(),(0,g.listJobBots)(),(0,l.listRecentTurns)(d.RECENT_CALL.rows),(0,l.readCallSkillsOn)(),(0,g.readBotMemoryOn)()]),J=await (0,h.listCallJobs)(G.map(a=>a.callId)),K=[(0,o.thursdayIdentity)(),b?"":r(),function(a,b,c){let{crowded:d,heavy:e}=(0,o.tidying)(a),g=[...e].sort((a,b)=>b.factCount-a.factCount).slice(0,3).map(a=>a.path),h=d||e.length?`
3
3
 
4
4
  Saved memory has grown past what it holds well${g.length?` (${g.join(", ")})`:""}: say so once in what you return, go through what looks out of date with the user, and forget only what they name.`:"",i=new Set(c.map(a=>a.path)),k=new Set(b.map(a=>a.id)),l=`## Memory
5
5
 
@@ -18,7 +18,7 @@ Keep what the user tells you as it comes up, with \`${f.TOOL_NAMES.memory_rememb
18
18
 
19
19
  **Keep memory clean as you write.** A fact that repeats, narrows or changes one already in the note replaces it, merged into one line, rather than sitting beside it. A later call finds a note only by its path, its line and the names in quotes: keep the line true, and give something new its own path below.
20
20
 
21
- ${j.MEMORY_PATHS.map(a=>`- ${a.path} — ${a.of}`).join("\n")}`;return[l,m,p,q].filter(Boolean).join("\n\n")}(A,B,C.notes),(c=E,p=(0,o.reachNames)(G?[]:z,D),s=H,0===c.length?"":`## Background work
21
+ ${j.MEMORY_PATHS.map(a=>`- ${a.path} — ${a.of}`).join("\n")}`;return[l,m,p,q].filter(Boolean).join("\n\n")}(B,C,D.notes),(c=F,p=(0,o.reachNames)(H?[]:A,E),t=I,0===c.length?"":`## Background work
22
22
 
23
23
  Who you hand work to — the names \`${f.TOOL_NAMES.thread_start}\` takes.
24
24
 
@@ -26,43 +26,43 @@ ${c.map(a=>`- **${a.name}** — ${a.description}`).join("\n")}${p?`
26
26
 
27
27
  What bots can reach for: ${p}.`:""}
28
28
 
29
- **A bot can take on almost anything, and anything that takes more than a few seconds is a bot's**; a note, a look at a file or one command is yours. A bot has this computer, a real browser, the web, a shell to build what is missing and far more time than a call; it signs in where it has to and carries work to the end, so something you do not know how to do is work for a bot, not a no. Bots bring each other in, so work that spans several things is still one thread.${s?" Each bot keeps its own memory from thread to thread: when the user says how a bot should work from now on, pass it to that bot to remember.":""}
29
+ **A bot can take on almost anything, and anything that takes more than a few seconds is a bot's**; a note, a look at a file or one command is yours. A bot has this computer, a real browser, the web, a shell to build what is missing and far more time than a call; it signs in where it has to and carries work to the end, so something you do not know how to do is work for a bot, not a no. Bots bring each other in, so work that spans several things is still one thread.${t?" Each bot keeps its own memory from thread to thread: when the user says how a bot should work from now on, pass it to that bot to remember.":""}
30
30
 
31
31
  **Work lives in threads.** A thread's bot remembers that thread and nothing else, so the same bot started on a new one begins from nothing. More about work already handed over — a correction, the next step once it finished, going on after it stopped — is said to that thread (\`${f.TOOL_NAMES.thread_tell}\`); only a request that stands on its own starts a new one (\`${f.TOOL_NAMES.thread_start}\`). The threads open as this call started come into the conversation at the start, and they move while you talk: \`${f.TOOL_NAMES.thread_status}\` reads them as they are now, before you answer about one or hand anything over. Ask the user which it is only when the request could be either. Write the request in the user's own words, with what it stands on — including how they told you they want work done — and nothing they did not say.
32
32
 
33
33
  **Work that should start by itself — every morning, every few hours — is a routine.** \`${f.TOOL_NAMES.routine}\` makes one from a bot, the work in the user's own words, and when; from then on it starts a thread for it each time without being asked, and the result reaches the user like any thread's. Ask once for whichever of those they left out, and read the ones that exist before making, changing or deleting one.
34
34
 
35
- Updates and questions from threads reach the conversation by themselves, naming their thread and the bot that asks; they come from bots, not the user, and a question is answered with \`${f.TOOL_NAMES.thread_answer}\`. When the user wants to see what a thread made, \`${f.TOOL_NAMES.thread_show}\` puts it on their screen. Once you have explained enough of how a thread ended, mark it with \`${f.TOOL_NAMES.thread_seen}\`, or leave it for the user to open; never mention seen to them.`),(t=y.cwd,u=G?z:[],x=`## This computer
35
+ Updates and questions from threads reach the conversation by themselves, naming their thread and the bot that asks; they come from bots, not the user, and a question is answered with \`${f.TOOL_NAMES.thread_answer}\`. When the user wants to see what a thread made, \`${f.TOOL_NAMES.thread_show}\` puts it on their screen. Once you have explained enough of how a thread ended, mark it with \`${f.TOOL_NAMES.thread_seen}\`, or leave it for the user to open; never mention seen to them.`),(u=z.cwd,v=H?A:[],y=`## This computer
36
36
 
37
- Current Cwd: ${t}
37
+ Current Cwd: ${u}
38
38
  Platform: ${process.platform}
39
39
 
40
40
  Where \`${f.TOOL_NAMES.bash}\` runs, and what the paths you get back are relative to. Each command is cut off after ${Math.round(d.CALL_EXEC_TIMEOUT_MS/1e3)} seconds; anything longer is a bot's.
41
41
 
42
- ${(0,e.guideLine)()}`,0===u.length?x:`${x}
42
+ ${(0,e.guideLine)()}`,0===v.length?y:`${y}
43
43
 
44
44
  Skills are written-down ways of doing things here. \`${f.TOOL_NAMES.load_skill}\` opens one, and what it says goes for you too: read one when it covers what was asked and the doing is a glance. Anything longer it describes is still work to hand over, with what the skill said.
45
45
 
46
- ${(0,o.skillLines)(u,{short:!0})}`),b?`## Answer in writing
46
+ ${(0,o.skillLines)(v,{short:!0})}`),b?`## Answer in writing
47
47
 
48
48
  This call is in writing: there is no voice, and what you write is what the user reads, so answer them directly, in their language. Say the relevant facts, whether the task is complete, and what comes next — for work you handed over, who has it and whether it carries an earlier thread on or starts a new one — or the one question they have to answer first. Use confirmed values from tool results and the notes above, and never invent a successful action. Keep it short and plain.`:`## Return the result
49
49
 
50
- Return the relevant facts, whether the task is complete, and what comes next — for work you handed over, who has it and whether it carries an earlier thread on or starts a new one — or the one question the user has to answer first. Use confirmed values from tool results and the notes above, and never invent a successful action. What you return is said aloud: keep it short and plain.`,(v=F,w=I,v.some(a=>a.turns.length>0)?`## Earlier calls
50
+ Return the relevant facts, whether the task is complete, and what comes next — for work you handed over, who has it and whether it carries an earlier thread on or starts a new one — or the one question the user has to answer first. Use confirmed values from tool results and the notes above, and never invent a successful action. What you return is said aloud: keep it short and plain.`,(w=G,x=J,w.some(a=>a.turns.length>0)?`## Earlier calls
51
51
 
52
52
  What was said on the last calls, verbatim, newest last. It is the past: pick it up when the user does, and never answer it as a new request.
53
53
 
54
54
  A \`${f.TOOL_NAMES.thread_start}\` line carries the thread's handle and how it ended; the handle is for the thread tools, never said aloud. What they ask for now is often one of these carried further.
55
55
 
56
- ${(0,o.recentCallLines)(v.map(a=>({...a,jobs:w.filter(b=>b.callId===a.callId)})),d.RECENT_CALL.tokens)}`:""),r(a)].filter(Boolean).join("\n\n");return(0,o.logPromptSize)("thursday",J),J}[g,h,i,l,n]=p.then?(await p)():p;let r=a=>a?.trim()?`## Additional instructions
56
+ ${(0,o.recentCallLines)(w.map(a=>({...a,jobs:x.filter(b=>b.callId===a.callId)})),d.RECENT_CALL.tokens)}`:""),s(a)].filter(Boolean).join("\n\n");return(0,o.logPromptSize)("thursday",K),K}[g,h,i,l,n]=p.then?(await p)():p;let r=()=>`IMPORTANT — always follow this: when the user wants the call to end, however they say it, forget every other task, answer yes in one word of their language, then immediately, without thinking, use the ${f.TOOL_NAMES.end_call} tool.`,s=a=>a?.trim()?`## Additional instructions
57
57
 
58
58
  Written by the user. Follow them together with everything above.
59
59
 
60
- ${a.trim()}`:"";a.s(["loadThursdayPrompt",0,q]),c()}catch(a){c(a)}},!1),936292,a=>{"use strict";a.s(["ChannelRefusal",0,class extends Error{}])},242104,a=>{"use strict";a.s(["inPieces",0,function(a,b){let c=[],d=a;for(;d.length>b;){let a=d.slice(0,b),e=Math.max(a.lastIndexOf("\n\n"),a.lastIndexOf("\n")),f=e>b/2?e:b;c.push(d.slice(0,f).trim()),d=d.slice(f).trim()}return d&&c.push(d),c},"runSocket",0,function(a,b,c){return new Promise((d,e)=>{let f=new WebSocket(a),g=a=>{f.readyState===WebSocket.OPEN&&f.send(JSON.stringify(a))},h=()=>f.close(1e3);c.addEventListener("abort",h,{once:!0}),f.addEventListener("message",a=>{try{b.message(JSON.parse(String(a.data)),g)}catch{}}),f.addEventListener("error",()=>{f.readyState!==WebSocket.OPEN&&e(Error(`Could not connect to ${new URL(a).host}`))}),f.addEventListener("close",a=>{c.removeEventListener("abort",h),d({code:a.code,reason:a.reason})})})}])},479286,a=>{"use strict";var b=a.i(936292),c=a.i(242104);let d={4004:"Discord did not take the bot token.",4013:"Discord refused the intents this bot asked for.",4014:"Discord refused an intent this bot is not allowed — check the bot's page."};a.s(["createDiscord",0,function(a){async function e(c,d,e){let f=e instanceof FormData,g=await fetch(`https://discord.com/api/v10${d}`,{method:c,headers:{authorization:`Bot ${a}`,...f||!e?{}:{"content-type":"application/json"}},body:f?e:e?JSON.stringify(e):void 0});if(g.ok)return 204===g.status?null:await g.json();let h=await g.json().catch(()=>null),i=h?.message??`Discord answered ${g.status}`;throw 401===g.status?new b.ChannelRefusal(i):Error(i)}let f=a=>{let b=a.length<=5?1:5,c=[];for(let d=0;d<a.length&&c.length<5;d+=b)c.push({type:1,components:a.slice(d,d+b).map(a=>({type:2,style:2,label:a.text.slice(0,80),custom_id:a.data}))});return c};return{async listen(f,g){let h,i=null;try{let j=await (0,c.runSocket)("wss://gateway.discord.gg/?v=10&encoding=json",{message(b,c){let{op:d,d:g,s:j,t:k}=b;if(null!==j&&(i=j),10===d){let b=g.heartbeat_interval;h=setInterval(()=>c({op:1,d:i}),b),c({op:2,d:{token:a,intents:4096,properties:{os:process.platform,browser:"thursday",device:"thursday"}}})}else if(1===d)c({op:1,d:i});else if(0===d&&"READY"===k)f.ready(g.user.username);else if(0===d&&k){var l,m;let a=(l=k,m=g,"MESSAGE_CREATE"===l?m.guild_id||m.author.bot?null:{kind:"message",chat:m.channel_id,name:m.author.global_name||m.author.username,words:m.content.trim(),files:(m.attachments??[]).map(a=>({name:a.filename,fetch:async()=>{let b=await fetch(a.url);if(!b.ok)throw Error(`Discord answered ${b.status} for the file`);return new File([await b.arrayBuffer()],a.filename,{type:a.content_type??""})}})),unreadable:!1}:"INTERACTION_CREATE"===l?3!==m.type||m.guild_id?null:(e("POST",`/interactions/${m.id}/${m.token}/callback`,{type:6}).catch(()=>{}),{kind:"press",chat:m.channel_id,data:m.data?.custom_id??"",under:m.message?{id:m.message.id,text:m.message.content}:null}):null);a&&f.incoming(a)}}},g),k=d[j.code];if(k)throw new b.ChannelRefusal(k);if(!g.aborted)throw Error(`Discord closed the connection (${j.code})`)}finally{clearInterval(h)}},async say(a,b,d){let g=(0,c.inPieces)(b,1900);for(let[b,c]of g.entries())await e("POST",`/channels/${a}/messages`,{content:c,...d?.length&&b===g.length-1?{components:f(d)}:{}})},async typing(a){await e("POST",`/channels/${a}/typing`).catch(()=>{})},async settle(a,b,c){await e("PATCH",`/channels/${a}/messages/${b}`,{content:c.slice(0,1900),components:[]}).catch(()=>{})},async sendFile(a,b,c){let d=new FormData;d.set("payload_json",JSON.stringify({attachments:[{id:0,filename:c}]})),d.set("files[0]",new Blob([b]),c),await e("POST",`/channels/${a}/messages`,d)}}}])},129167,a=>{"use strict";var b=a.i(936292),c=a.i(242104);let d="https://slack.com/api",e=new Set(["invalid_auth","not_authed","account_inactive","token_revoked","not_allowed_token_type","missing_scope"]);a.s(["createSlack",0,function(a,f){async function g(a,c,h=f){let i=await fetch(`${d}/${a}`,{method:"POST",headers:{authorization:`Bearer ${h}`,"content-type":"application/json; charset=utf-8"},body:JSON.stringify(c)}),j=await i.json().catch(()=>null);if(j?.ok)return j;let k=j?.error??`http_${i.status}`,l="missing_scope"===k?`Slack says the app lacks a permission (${j?.needed??"a scope"}) — make it from the manifest in the guide.`:`Slack answered ${k} to ${a}`;throw e.has(k)?new b.ChannelRefusal(l):Error(l)}let h=new Map;async function i(a){let b=h.get(a);if(b)return b;let c=await g("users.info",{user:a}).then(b=>b.user?.real_name||b.user?.name||a).catch(()=>a);return h.set(a,c),c}async function j(a,b){if("events_api"===a){let a=b.event??{},c=!a.subtype||"file_share"===a.subtype;return"message"===a.type&&"im"===a.channel_type&&c&&!a.bot_id&&a.user&&a.channel?{kind:"message",chat:a.channel,name:await i(a.user),words:(a.text??"").trim(),files:(a.files??[]).flatMap(a=>{let b=a.url_private_download;if(!b)return[];let c=a.name??"file";return[{name:c,fetch:async()=>{let d=await fetch(b,{headers:{authorization:`Bearer ${f}`}});if(!d.ok)throw Error(`Slack answered ${d.status} for the file`);return new File([await d.arrayBuffer()],c,{type:a.mimetype??""})}}]}),unreadable:!1}:null}return"interactive"===a&&"block_actions"===b.type?b.channel?.id?{kind:"press",chat:b.channel.id,data:b.actions?.[0]?.value??"",under:b.message?.ts&&b.message.text?{id:b.message.ts,text:b.message.text}:null}:null:null}return{async listen(b,d){let e=await g("auth.test",{}),{url:f}=await g("apps.connections.open",{},a);b.ready(e.user?`@${e.user}`:"the app");let h=await (0,c.runSocket)(f,{message(a,c){let{type:d,envelope_id:e,payload:f}=a;e&&c({envelope_id:e}),d&&f&&j(d,f).then(a=>{a&&b.incoming(a)})}},d);if(!d.aborted)throw Error(`Slack closed the connection (${h.code})`)},async say(a,b,d){let e=(0,c.inPieces)(b,2900);for(let[b,c]of e.entries()){let f=d?.length&&b===e.length-1;await g("chat.postMessage",{channel:a,text:c,unfurl_links:!1,...f?{blocks:[{type:"section",text:{type:"plain_text",text:c}},{type:"actions",elements:d.slice(0,25).map((a,b)=>({type:"button",action_id:`choice_${b}`,text:{type:"plain_text",text:a.text.slice(0,75)},value:a.data}))}]}:{}})}},async typing(){},async settle(a,b,c){await g("chat.update",{channel:a,ts:b,text:c.slice(0,2900),blocks:[]}).catch(()=>{})},async sendFile(a,b,c){let e=new URLSearchParams({filename:c,length:String(b.byteLength)}),h=await fetch(`${d}/files.getUploadURLExternal`,{method:"POST",headers:{authorization:`Bearer ${f}`},body:e}),i=await h.json();if(!i.ok||!i.upload_url||!i.file_id)throw Error(`Slack answered ${i.error??h.status} to the upload`);await fetch(i.upload_url,{method:"POST",body:new Blob([b])}),await g("files.completeUploadExternal",{files:[{id:i.file_id,title:c}],channel_id:a})}}}])},319261,a=>{"use strict";var b=a.i(569572),c=a.i(936292);let d="https://api.telegram.org";a.s(["createTelegram",0,function(a){async function e(b,e,f){let g=e instanceof FormData,h=await fetch(`${d}/bot${a}/${b}`,{method:"POST",signal:f,...g?{body:e}:{headers:{"content-type":"application/json"},body:JSON.stringify(e??{})}}),i=await h.json().catch(()=>null);if(i?.ok)return i.result;let j=i?.description??`Telegram answered ${h.status}`;throw 401===h.status?new c.ChannelRefusal(j):Error(j)}async function f(b,c,f){let{file_path:g}=await e("getFile",{file_id:b});if(!g)throw Error("Telegram did not say where the file is");let h=await fetch(`${d}/file/bot${a}/${g}`);if(!h.ok)throw Error(`Telegram answered ${h.status} for the file`);let i=g.includes(".")?g.slice(g.lastIndexOf(".")):"";return new File([await h.arrayBuffer()],c.includes(".")?c:`${c}${i}`,f?{type:f}:void 0)}return{async listen(a,c){let d=await e("getMe",void 0,c);a.ready(d.username?`@${d.username}`:d.first_name??"the bot");let g=0;for(;!c.aborted;)for(let d of(await e("getUpdates",{offset:g,timeout:b.REACH.pollSeconds,allowed_updates:["message","callback_query"]},AbortSignal.any([c,AbortSignal.timeout((b.REACH.pollSeconds+15)*1e3)])))){g=d.update_id+1;let b=function(a){let b,c=a.callback_query;if(c)return e("answerCallbackQuery",{callback_query_id:c.id}).catch(()=>{}),{kind:"press",chat:String(c.from.id),data:c.data??"",under:c.message?.text?{id:String(c.message.message_id),text:c.message.text}:null};let d=a.message;if(!d?.from||"private"!==d.chat.type)return null;let g=d.photo?.at(-1),h=d.document?{id:d.document.file_id,name:d.document.file_name??"file",type:d.document.mime_type}:g?{id:g.file_id,name:`photo-${d.message_id}`,type:""}:null;return{kind:"message",chat:String(d.chat.id),name:(b=d.from,[b?.first_name,b?.last_name].filter(Boolean).join(" ")||(b?.username?`@${b.username}`:"Someone")),words:(d.text??d.caption??"").trim(),files:h?[{name:h.name,fetch:()=>f(h.id,h.name,h.type)}]:[],unreadable:!!(d.voice||d.audio||d.video)}}(d);b&&a.incoming(b)}},async say(a,b,c){await e("sendMessage",{chat_id:a,text:b,link_preview_options:{is_disabled:!0},...c?.length?{reply_markup:{inline_keyboard:c.map(a=>[{text:a.text,callback_data:a.data}])}}:{}})},async typing(a){await e("sendChatAction",{chat_id:a,action:"typing"}).catch(()=>{})},async settle(a,b,c){await e("editMessageText",{chat_id:a,message_id:Number(b),text:c,link_preview_options:{is_disabled:!0}}).catch(()=>{})},async sendFile(a,b,c,d){let f=new FormData;f.set("chat_id",a),f.set(d?"photo":"document",new Blob([b]),c),await e(d?"sendPhoto":"sendDocument",f)}}}])},233398,a=>a.a(async(b,c)=>{try{var d=a.i(912714),e=a.i(203469),f=a.i(569572),g=a.i(875931),h=a.i(674986),i=a.i(839430),j=a.i(344853),k=a.i(725466),l=a.i(92706),m=a.i(569549),n=a.i(3894),o=a.i(143699),p=a.i(684321),q=a.i(821415),r=a.i(941981),s=a.i(176668),t=a.i(293480),u=a.i(182248),v=a.i(936292),w=a.i(479286),x=a.i(558067),y=a.i(129167),z=a.i(319261),A=b([g,h,i,j,k,m,o]);[g,h,i,j,k,m,o]=A.then?(await A)():A;let P={telegram:a=>(0,z.createTelegram)(a),discord:a=>(0,w.createDiscord)(a),slack:(a,b)=>(0,y.createSlack)(a,b)},Q=globalThis,R=Q.__reach??={live:new Map,last:null,told:new Set,due:new Map,choices:new Map,listening:null,looking:null},S=()=>e.appEvents.emit({type:"reach"});async function B(a){let b=await (0,k.readConfig)((0,x.reachPersonKey)(a));if(!b)return null;try{let a=JSON.parse(b);return"string"==typeof a.chat&&"string"==typeof a.name?{chat:a.chat,name:a.name}:null}catch{return null}}async function C(a){for(let b of a?[a]:x.REACH_CHANNELS){let c=R.live.get(b);c?.stop.abort(),R.live.delete(b),a&&(await (0,k.removeConfig)((0,x.reachPersonKey)(b)),c?.line&&await (0,m.endCall)(c.line.callId).catch(()=>{}));let d=await Promise.all(x.REACH_KEYS[b].map(k.readConfig));if(!d.every(a=>!!a))continue;let e={name:b,channel:P[b](...d),stop:new AbortController,bot:null,problem:null,asking:null,line:null,turn:Promise.resolve()};R.live.set(b,e),D(e)}R.live.size&&(R.listening??=e.appEvents.subscribe(a=>{"threads"!==a.type||R.looking||(R.looking=setTimeout(()=>{R.looking=null,M().catch(a=>s.logger.error("reach: open work",a))},2e3))})),S()}async function D(a){let{signal:b}=a.stop,c=b=>{a.problem!==b&&(a.problem=b,S())};for(;!b.aborted;){try{await a.channel.listen({ready:b=>{a.bot=b,a.problem=null,S()},incoming:b=>void E(a,b).catch(b=>s.logger.error(`reach ${a.name}: what arrived`,b))},b)}catch(e){if(b.aborted)return;let d=e instanceof Error?e.message:String(e);if(e instanceof v.ChannelRefusal)return s.logger.warn(`reach ${a.name}: ${d}`),c(d);c(d)}await new Promise(a=>setTimeout(a,f.REACH.retryMs))}}async function E(a,b){let{channel:c}=a,d=await B(a.name);if("press"===b.kind){if(d?.chat!==b.chat)return;return O(a,d,b.data,b.under)}if(d?.chat!==b.chat)return d?void await c.say(b.chat,"This Thursday already answers someone else."):(a.asking={chat:b.chat,name:b.name},S(),void await c.say(b.chat,"Almost there. Open Thursday on your computer and press Allow, then write again."));R.last=a.name;let e=b.files.length?await (0,r.keepGivenFiles)(await Promise.all(b.files.map(a=>a.fetch()))):[],f=[b.words,...e].filter(Boolean).join("\n");if(!f){b.unreadable&&await c.say(b.chat,"I can read words, pictures and files here — not voice or video yet. Write it instead.");return}I(a,d,f,f)}async function F(a,b){let c=R.live.get(a),d=c?.asking;c&&d&&d.chat===b&&(await (0,k.writeConfig)((0,x.reachPersonKey)(a),JSON.stringify(d)),c.asking=null,S(),await c.channel.say(b,"You are in. Write here and Thursday answers.").catch(b=>s.logger.warn(`reach ${a}: could not say so`,b)))}async function G(a){await (0,k.removeConfig)((0,x.reachPersonKey)(a));let b=R.live.get(a);b&&await H(b),S()}async function H(a){let b=a.line;a.line=null,b&&await (0,m.endCall)(b.callId).catch(()=>{})}function I(a,b,c,d,e){let f=a.turn.then(()=>J(a,b,c,d,e));return a.turn=f.then(()=>{},()=>{}),f}async function J(a,b,c,d,e){let{channel:h}=a;h.typing(b.chat).catch(()=>{});let i=setInterval(()=>void h.typing(b.chat).catch(()=>{}),4e3);try{let g=n.ThursdaySettingsSchema.parse({}),i=a.line;(!i||Date.now()-i.lastAt>f.REACH.idleMs||!await (0,m.isCallOpen)(i.callId))&&(await H(a),a.line={...await (0,o.openTextCall)(g),messages:[],lastAt:0});let j=a.line,k=await (0,o.answerInWriting)({callId:j.callId,settings:g,standing:j.standing,messages:[...j.messages,{role:"user",content:c}],said:d});j.messages=k.messages,j.lastAt=Date.now();let l=(0,u.plainText)(k.text)||k.did.join("\n"),p=function(a){let b=[],c=a;for(;c.length>f.REACH.chars;){let a=c.slice(0,f.REACH.chars),d=Math.max(a.lastIndexOf("\n\n"),a.lastIndexOf("\n")),e=d>f.REACH.chars/2?d:f.REACH.chars;b.push(c.slice(0,e).trim()),c=c.slice(e).trim()}return c&&b.push(c),b}(l||"…");for(let[a,c]of p.entries())await h.say(b.chat,c,a===p.length-1?e:void 0);return await K(a,b,k.text),!0}catch(d){let c=(0,t.isPublicError)(d)?d.message:(0,g.modelErrorToString)(d);return s.logger.warn(`reach ${a.name}: ${c}`),await h.say(b.chat,c).catch(()=>{}),!1}finally{clearInterval(i)}}async function K(a,b,c){for(let e of(await (0,q.filesOnDisk)((0,p.pathsIn)(c),null)).slice(-f.REACH.files)){let c=await (0,q.insideWorkspace)(e),g=c?await (0,d.stat)(c).catch(()=>null):null;c&&g&&!(g.size>f.REACH.fileBytes)&&await a.channel.sendFile(b.chat,await (0,d.readFile)(c),e.split("/").pop()??"file","image"===(0,p.viewKindOf)(e)).catch(b=>s.logger.warn(`reach ${a.name}: could not send ${e}`,b))}}async function L(){for(let a of[...R.last?[R.last]:[],...x.REACH_CHANNELS.filter(a=>a!==R.last)]){let b=R.live.get(a),c=b?await B(a):null;if(b&&c)return{live:b,person:c}}return null}async function M(){if(!await L())return;let a=T(await (0,j.listInboxThreads)()),b=new Set(a.map(a=>a.key));for(let[a,c]of R.due)b.has(a)||(clearTimeout(c),R.due.delete(a));for(let b of a)R.told.has(b.key)||R.due.has(b.key)||R.due.set(b.key,setTimeout(()=>void N(b.key),f.REACH.notifyAfterMs))}let T=a=>(0,l.openWork)(a).filter(a=>"progress"!==a.kind);async function N(a){R.due.delete(a);let b=await L();if(!b||R.told.has(a))return;let c=await (0,j.listInboxThreads)(),d=T(c).find(b=>b.key===a);if(!d)return;let e=c.find(b=>b.room.questions.some(b=>`question:${b.id}`===a)),f=e?.room.questions.find(b=>`question:${b.id}`===a),g=(f?.options??[]).map((a,b)=>{let c=`${f?.id.slice(0,40)}:${b}`;return R.choices.set(c,{threadId:e?.id??"",bot:f?.bot??"",question:f?.id??"",answer:a}),{text:a,data:c}});R.told.add(a),await I(b.live,b.person,d.line,null,g)?await (0,i.acceptRoomRelays)(d.relayIds):R.told.delete(a)}async function O(a,b,c,d){let e=R.choices.get(c);if(!e)return void await a.channel.say(b.chat,"That question is no longer open here. Write your answer instead.");for(let[a,b]of R.choices)b.question===e.question&&R.choices.delete(a);try{await (0,h.answerThread)(e.threadId,e.answer,"user",e.bot),d&&await a.channel.settle(b.chat,d.id,`${d.text}
60
+ ${a.trim()}`:"";a.s(["loadThursdayPrompt",0,q]),c()}catch(a){c(a)}},!1),936292,a=>{"use strict";a.s(["ChannelRefusal",0,class extends Error{}])},242104,a=>{"use strict";a.s(["inPieces",0,function(a,b){let c=[],d=a;for(;d.length>b;){let a=d.slice(0,b),e=Math.max(a.lastIndexOf("\n\n"),a.lastIndexOf("\n")),f=e>b/2?e:b;c.push(d.slice(0,f).trim()),d=d.slice(f).trim()}return d&&c.push(d),c},"runSocket",0,function(a,b,c){return new Promise((d,e)=>{let f=new WebSocket(a),g=a=>{f.readyState===WebSocket.OPEN&&f.send(JSON.stringify(a))},h=()=>f.close(1e3);c.addEventListener("abort",h,{once:!0}),f.addEventListener("message",a=>{try{b.message(JSON.parse(String(a.data)),g)}catch{}}),f.addEventListener("error",()=>{f.readyState!==WebSocket.OPEN&&e(Error(`Could not connect to ${new URL(a).host}`))}),f.addEventListener("close",a=>{c.removeEventListener("abort",h),d({code:a.code,reason:a.reason})})})}])},479286,a=>{"use strict";var b=a.i(936292),c=a.i(242104);let d={4004:"Discord did not take the bot token.",4013:"Discord refused the intents this bot asked for.",4014:"Discord refused an intent this bot is not allowed — check the bot's page."};a.s(["createDiscord",0,function(a){async function e(c,d,e){let f=e instanceof FormData,g=await fetch(`https://discord.com/api/v10${d}`,{method:c,headers:{authorization:`Bot ${a}`,...f||!e?{}:{"content-type":"application/json"}},body:f?e:e?JSON.stringify(e):void 0});if(g.ok)return 204===g.status?null:await g.json();let h=await g.json().catch(()=>null),i=h?.message??`Discord answered ${g.status}`;throw 401===g.status?new b.ChannelRefusal(i):Error(i)}let f=a=>{let b=a.length<=5?1:5,c=[];for(let d=0;d<a.length&&c.length<5;d+=b)c.push({type:1,components:a.slice(d,d+b).map(a=>({type:2,style:2,label:a.text.slice(0,80),custom_id:a.data}))});return c};return{async listen(f,g){let h,i=null;try{let j=await (0,c.runSocket)("wss://gateway.discord.gg/?v=10&encoding=json",{message(b,c){let{op:d,d:g,s:j,t:k}=b;if(null!==j&&(i=j),10===d){let b=g.heartbeat_interval;h=setInterval(()=>c({op:1,d:i}),b),c({op:2,d:{token:a,intents:4096,properties:{os:process.platform,browser:"thursday",device:"thursday"}}})}else if(1===d)c({op:1,d:i});else if(0===d&&"READY"===k)f.ready(g.user.username);else if(0===d&&k){var l,m;let a=(l=k,m=g,"MESSAGE_CREATE"===l?m.guild_id||m.author.bot?null:{kind:"message",chat:m.channel_id,name:m.author.global_name||m.author.username,words:m.content.trim(),files:(m.attachments??[]).map(a=>({name:a.filename,fetch:async()=>{let b=await fetch(a.url);if(!b.ok)throw Error(`Discord answered ${b.status} for the file`);return new File([await b.arrayBuffer()],a.filename,{type:a.content_type??""})}})),unreadable:!1}:"INTERACTION_CREATE"===l?3!==m.type||m.guild_id?null:(e("POST",`/interactions/${m.id}/${m.token}/callback`,{type:6}).catch(()=>{}),{kind:"press",chat:m.channel_id,data:m.data?.custom_id??"",under:m.message?{id:m.message.id,text:m.message.content}:null}):null);a&&f.incoming(a)}}},g),k=d[j.code];if(k)throw new b.ChannelRefusal(k);if(!g.aborted)throw Error(`Discord closed the connection (${j.code})`)}finally{clearInterval(h)}},async say(a,b,d){let g=(0,c.inPieces)(b,1900);for(let[b,c]of g.entries())await e("POST",`/channels/${a}/messages`,{content:c,...d?.length&&b===g.length-1?{components:f(d)}:{}})},async typing(a){await e("POST",`/channels/${a}/typing`).catch(()=>{})},async settle(a,b,c){await e("PATCH",`/channels/${a}/messages/${b}`,{content:c.slice(0,1900),components:[]}).catch(()=>{})},async sendFile(a,b,c){let d=new FormData;d.set("payload_json",JSON.stringify({attachments:[{id:0,filename:c}]})),d.set("files[0]",new Blob([b]),c),await e("POST",`/channels/${a}/messages`,d)}}}])},129167,a=>{"use strict";var b=a.i(936292),c=a.i(242104);let d="https://slack.com/api",e=new Set(["invalid_auth","not_authed","account_inactive","token_revoked","not_allowed_token_type","missing_scope"]);a.s(["createSlack",0,function(a,f){async function g(a,c,h=f){let i=await fetch(`${d}/${a}`,{method:"POST",headers:{authorization:`Bearer ${h}`,"content-type":"application/json; charset=utf-8"},body:JSON.stringify(c)}),j=await i.json().catch(()=>null);if(j?.ok)return j;let k=j?.error??`http_${i.status}`,l="missing_scope"===k?`Slack says the app lacks a permission (${j?.needed??"a scope"}) — make it from the manifest in the guide.`:`Slack answered ${k} to ${a}`;throw e.has(k)?new b.ChannelRefusal(l):Error(l)}let h=new Map;async function i(a){let b=h.get(a);if(b)return b;let c=await g("users.info",{user:a}).then(b=>b.user?.real_name||b.user?.name||a).catch(()=>a);return h.set(a,c),c}async function j(a,b){if("events_api"===a){let a=b.event??{},c=!a.subtype||"file_share"===a.subtype;return"message"===a.type&&"im"===a.channel_type&&c&&!a.bot_id&&a.user&&a.channel?{kind:"message",chat:a.channel,name:await i(a.user),words:(a.text??"").trim(),files:(a.files??[]).flatMap(a=>{let b=a.url_private_download;if(!b)return[];let c=a.name??"file";return[{name:c,fetch:async()=>{let d=await fetch(b,{headers:{authorization:`Bearer ${f}`}});if(!d.ok)throw Error(`Slack answered ${d.status} for the file`);return new File([await d.arrayBuffer()],c,{type:a.mimetype??""})}}]}),unreadable:!1}:null}return"interactive"===a&&"block_actions"===b.type?b.channel?.id?{kind:"press",chat:b.channel.id,data:b.actions?.[0]?.value??"",under:b.message?.ts&&b.message.text?{id:b.message.ts,text:b.message.text}:null}:null:null}return{async listen(b,d){let e=await g("auth.test",{}),{url:f}=await g("apps.connections.open",{},a);b.ready(e.user?`@${e.user}`:"the app");let h=await (0,c.runSocket)(f,{message(a,c){let{type:d,envelope_id:e,payload:f}=a;e&&c({envelope_id:e}),d&&f&&j(d,f).then(a=>{a&&b.incoming(a)})}},d);if(!d.aborted)throw Error(`Slack closed the connection (${h.code})`)},async say(a,b,d){let e=(0,c.inPieces)(b,2900);for(let[b,c]of e.entries()){let f=d?.length&&b===e.length-1;await g("chat.postMessage",{channel:a,text:c,unfurl_links:!1,...f?{blocks:[{type:"section",text:{type:"plain_text",text:c}},{type:"actions",elements:d.slice(0,25).map((a,b)=>({type:"button",action_id:`choice_${b}`,text:{type:"plain_text",text:a.text.slice(0,75)},value:a.data}))}]}:{}})}},async typing(){},async settle(a,b,c){await g("chat.update",{channel:a,ts:b,text:c.slice(0,2900),blocks:[]}).catch(()=>{})},async sendFile(a,b,c){let e=new URLSearchParams({filename:c,length:String(b.byteLength)}),h=await fetch(`${d}/files.getUploadURLExternal`,{method:"POST",headers:{authorization:`Bearer ${f}`},body:e}),i=await h.json();if(!i.ok||!i.upload_url||!i.file_id)throw Error(`Slack answered ${i.error??h.status} to the upload`);await fetch(i.upload_url,{method:"POST",body:new Blob([b])}),await g("files.completeUploadExternal",{files:[{id:i.file_id,title:c}],channel_id:a})}}}])},319261,a=>{"use strict";var b=a.i(569572),c=a.i(936292);let d="https://api.telegram.org";a.s(["createTelegram",0,function(a){async function e(b,e,f){let g=e instanceof FormData,h=await fetch(`${d}/bot${a}/${b}`,{method:"POST",signal:f,...g?{body:e}:{headers:{"content-type":"application/json"},body:JSON.stringify(e??{})}}),i=await h.json().catch(()=>null);if(i?.ok)return i.result;let j=i?.description??`Telegram answered ${h.status}`;throw 401===h.status?new c.ChannelRefusal(j):Error(j)}async function f(b,c,f){let{file_path:g}=await e("getFile",{file_id:b});if(!g)throw Error("Telegram did not say where the file is");let h=await fetch(`${d}/file/bot${a}/${g}`);if(!h.ok)throw Error(`Telegram answered ${h.status} for the file`);let i=g.includes(".")?g.slice(g.lastIndexOf(".")):"";return new File([await h.arrayBuffer()],c.includes(".")?c:`${c}${i}`,f?{type:f}:void 0)}return{async listen(a,c){let d=await e("getMe",void 0,c);a.ready(d.username?`@${d.username}`:d.first_name??"the bot");let g=0;for(;!c.aborted;)for(let d of(await e("getUpdates",{offset:g,timeout:b.REACH.pollSeconds,allowed_updates:["message","callback_query"]},AbortSignal.any([c,AbortSignal.timeout((b.REACH.pollSeconds+15)*1e3)])))){g=d.update_id+1;let b=function(a){let b,c=a.callback_query;if(c)return e("answerCallbackQuery",{callback_query_id:c.id}).catch(()=>{}),{kind:"press",chat:String(c.from.id),data:c.data??"",under:c.message?.text?{id:String(c.message.message_id),text:c.message.text}:null};let d=a.message;if(!d?.from||"private"!==d.chat.type)return null;let g=d.photo?.at(-1),h=d.document?{id:d.document.file_id,name:d.document.file_name??"file",type:d.document.mime_type}:g?{id:g.file_id,name:`photo-${d.message_id}`,type:""}:null;return{kind:"message",chat:String(d.chat.id),name:(b=d.from,[b?.first_name,b?.last_name].filter(Boolean).join(" ")||(b?.username?`@${b.username}`:"Someone")),words:(d.text??d.caption??"").trim(),files:h?[{name:h.name,fetch:()=>f(h.id,h.name,h.type)}]:[],unreadable:!!(d.voice||d.audio||d.video)}}(d);b&&a.incoming(b)}},async say(a,b,c){await e("sendMessage",{chat_id:a,text:b,link_preview_options:{is_disabled:!0},...c?.length?{reply_markup:{inline_keyboard:c.map(a=>[{text:a.text,callback_data:a.data}])}}:{}})},async typing(a){await e("sendChatAction",{chat_id:a,action:"typing"}).catch(()=>{})},async settle(a,b,c){await e("editMessageText",{chat_id:a,message_id:Number(b),text:c,link_preview_options:{is_disabled:!0}}).catch(()=>{})},async sendFile(a,b,c,d){let f=new FormData;f.set("chat_id",a),f.set(d?"photo":"document",new Blob([b]),c),await e(d?"sendPhoto":"sendDocument",f)}}}])},233398,a=>a.a(async(b,c)=>{try{var d=a.i(912714),e=a.i(203469),f=a.i(569572),g=a.i(552556),h=a.i(875931),i=a.i(674986),j=a.i(839430),k=a.i(344853),l=a.i(725466),m=a.i(92706),n=a.i(569549),o=a.i(143699),p=a.i(684321),q=a.i(821415),r=a.i(941981),s=a.i(176668),t=a.i(293480),u=a.i(182248),v=a.i(936292),w=a.i(479286),x=a.i(558067),y=a.i(129167),z=a.i(319261),A=b([h,i,j,k,l,n,o]);[h,i,j,k,l,n,o]=A.then?(await A)():A;let P={telegram:a=>(0,z.createTelegram)(a),discord:a=>(0,w.createDiscord)(a),slack:(a,b)=>(0,y.createSlack)(a,b)},Q=globalThis,R=Q.__reach??={live:new Map,last:null,told:new Set,due:new Map,choices:new Map,listening:null,looking:null},S=()=>e.appEvents.emit({type:"reach"});async function B(a){let b=await (0,l.readConfig)((0,x.reachPersonKey)(a));if(!b)return null;try{let a=JSON.parse(b);return"string"==typeof a.chat&&"string"==typeof a.name?{chat:a.chat,name:a.name}:null}catch{return null}}async function C(a){for(let b of a?[a]:x.REACH_CHANNELS){let c=R.live.get(b);c?.stop.abort(),R.live.delete(b),a&&(await (0,l.removeConfig)((0,x.reachPersonKey)(b)),c?.line&&await (0,n.endCall)(c.line.callId).catch(()=>{}));let d=await Promise.all(x.REACH_KEYS[b].map(l.readConfig));if(!d.every(a=>!!a))continue;let e={name:b,channel:P[b](...d),stop:new AbortController,bot:null,problem:null,asking:null,line:null,turn:Promise.resolve()};R.live.set(b,e),D(e)}R.live.size&&(R.listening??=e.appEvents.subscribe(a=>{"threads"!==a.type||R.looking||(R.looking=setTimeout(()=>{R.looking=null,M().catch(a=>s.logger.error("reach: open work",a))},2e3))})),S()}async function D(a){let{signal:b}=a.stop,c=b=>{a.problem!==b&&(a.problem=b,S())};for(;!b.aborted;){try{await a.channel.listen({ready:b=>{a.bot=b,a.problem=null,S()},incoming:b=>void E(a,b).catch(b=>s.logger.error(`reach ${a.name}: what arrived`,b))},b)}catch(e){if(b.aborted)return;let d=e instanceof Error?e.message:String(e);if(e instanceof v.ChannelRefusal)return s.logger.warn(`reach ${a.name}: ${d}`),c(d);c(d)}await new Promise(a=>setTimeout(a,f.REACH.retryMs))}}async function E(a,b){let{channel:c}=a,d=await B(a.name);if("press"===b.kind){if(d?.chat!==b.chat)return;return O(a,d,b.data,b.under)}if(d?.chat!==b.chat)return d?void await c.say(b.chat,"This Thursday already answers someone else."):(a.asking={chat:b.chat,name:b.name},S(),void await c.say(b.chat,"Almost there. Open Thursday on your computer and press Allow, then write again."));R.last=a.name;let e=b.files.length?await (0,r.keepGivenFiles)(await Promise.all(b.files.map(a=>a.fetch()))):[],f=[b.words,...e].filter(Boolean).join("\n");if(!f){b.unreadable&&await c.say(b.chat,"I can read words, pictures and files here — not voice or video yet. Write it instead.");return}I(a,d,f,f)}async function F(a,b){let c=R.live.get(a),d=c?.asking;c&&d&&d.chat===b&&(await (0,l.writeConfig)((0,x.reachPersonKey)(a),JSON.stringify(d)),c.asking=null,S(),await c.channel.say(b,"You are in. Write here and Thursday answers.").catch(b=>s.logger.warn(`reach ${a}: could not say so`,b)))}async function G(a){await (0,l.removeConfig)((0,x.reachPersonKey)(a));let b=R.live.get(a);b&&await H(b),S()}async function H(a){let b=a.line;a.line=null,b&&await (0,n.endCall)(b.callId).catch(()=>{})}function I(a,b,c,d,e){let f=a.turn.then(()=>J(a,b,c,d,e));return a.turn=f.then(()=>{},()=>{}),f}async function J(a,b,c,d,e){let{channel:i}=a;i.typing(b.chat).catch(()=>{});let j=setInterval(()=>void i.typing(b.chat).catch(()=>{}),4e3);try{let h=g.LiveSettingsSchema.parse({}),j=a.line;(!j||Date.now()-j.lastAt>f.REACH.idleMs||!await (0,n.isCallOpen)(j.callId))&&(await H(a),a.line={...await (0,o.openTextCall)(h),messages:[],lastAt:0});let k=a.line,l=await (0,o.answerInWriting)({callId:k.callId,settings:h,standing:k.standing,messages:[...k.messages,{role:"user",content:c}],said:d});k.messages=l.messages,k.lastAt=Date.now();let m=(0,u.plainText)(l.text)||l.did.join("\n"),p=function(a){let b=[],c=a;for(;c.length>f.REACH.chars;){let a=c.slice(0,f.REACH.chars),d=Math.max(a.lastIndexOf("\n\n"),a.lastIndexOf("\n")),e=d>f.REACH.chars/2?d:f.REACH.chars;b.push(c.slice(0,e).trim()),c=c.slice(e).trim()}return c&&b.push(c),b}(m||"…");for(let[a,c]of p.entries())await i.say(b.chat,c,a===p.length-1?e:void 0);return await K(a,b,l.text),!0}catch(d){let c=(0,t.isPublicError)(d)?d.message:(0,h.modelErrorToString)(d);return s.logger.warn(`reach ${a.name}: ${c}`),await i.say(b.chat,c).catch(()=>{}),!1}finally{clearInterval(j)}}async function K(a,b,c){for(let e of(await (0,q.filesOnDisk)((0,p.pathsIn)(c),null)).slice(-f.REACH.files)){let c=await (0,q.insideWorkspace)(e),g=c?await (0,d.stat)(c).catch(()=>null):null;c&&g&&!(g.size>f.REACH.fileBytes)&&await a.channel.sendFile(b.chat,await (0,d.readFile)(c),e.split("/").pop()??"file","image"===(0,p.viewKindOf)(e)).catch(b=>s.logger.warn(`reach ${a.name}: could not send ${e}`,b))}}async function L(){for(let a of[...R.last?[R.last]:[],...x.REACH_CHANNELS.filter(a=>a!==R.last)]){let b=R.live.get(a),c=b?await B(a):null;if(b&&c)return{live:b,person:c}}return null}async function M(){if(!await L())return;let a=T(await (0,k.listInboxThreads)()),b=new Set(a.map(a=>a.key));for(let[a,c]of R.due)b.has(a)||(clearTimeout(c),R.due.delete(a));for(let b of a)R.told.has(b.key)||R.due.has(b.key)||R.due.set(b.key,setTimeout(()=>void N(b.key),f.REACH.notifyAfterMs))}let T=a=>(0,m.openWork)(a).filter(a=>"progress"!==a.kind);async function N(a){R.due.delete(a);let b=await L();if(!b||R.told.has(a))return;let c=await (0,k.listInboxThreads)(),d=T(c).find(b=>b.key===a);if(!d)return;let e=c.find(b=>b.room.questions.some(b=>`question:${b.id}`===a)),f=e?.room.questions.find(b=>`question:${b.id}`===a),g=(f?.options??[]).map((a,b)=>{let c=`${f?.id.slice(0,40)}:${b}`;return R.choices.set(c,{threadId:e?.id??"",bot:f?.bot??"",question:f?.id??"",answer:a}),{text:a,data:c}});R.told.add(a),await I(b.live,b.person,d.line,null,g)?await (0,j.acceptRoomRelays)(d.relayIds):R.told.delete(a)}async function O(a,b,c,d){let e=R.choices.get(c);if(!e)return void await a.channel.say(b.chat,"That question is no longer open here. Write your answer instead.");for(let[a,b]of R.choices)b.question===e.question&&R.choices.delete(a);try{await (0,i.answerThread)(e.threadId,e.answer,"user",e.bot),d&&await a.channel.settle(b.chat,d.id,`${d.text}
61
61
 
62
62
  → ${e.answer}`),a.line?.messages.push({role:"user",content:`[The user answered ${e.bot}'s question from their phone: ${e.answer}. It has reached ${e.bot}.]`})}catch(c){await a.channel.say(b.chat,(0,t.isPublicError)(c)?c.message:"That answer did not get through.")}}a.s(["allowReach",0,F,"declineReach",0,function(a){let b=R.live.get(a);b&&(b.asking=null),S()},"forgetReach",0,G,"reachChannelOf",0,a=>x.REACH_CHANNELS.find(b=>x.REACH_KEYS[b].includes(a))??null,"startReach",0,C]),c()}catch(a){c(a)}},!1),92706,a=>{"use strict";var b=a.i(569572),c=a.i(446957),d=a.i(706210);let e={message:"says",question:"asks",report:"reports",interrupted:"was cut off"},f={question:0,stopped:1,done:2,progress:3};function g(a){let c=a.trim();if(c.length<=b.CALL_RELAY.chars)return c;let d=c.slice(0,b.CALL_RELAY.chars),e=Math.max(d.lastIndexOf("\n\n"),d.lastIndexOf(". "),d.lastIndexOf(".\n"),d.lastIndexOf("。")),f=(e>b.CALL_RELAY.chars/3?d.slice(0,e+1):d).trim();return`${f}
63
63
  [The message goes on; the rest is in its thread on screen.]`}a.s(["openWork",0,function(a){let b=[];for(let h of a){let{relays:a,questions:i}=h.room,j=(0,d.toDate)(h.updatedAt).getTime(),k=(a,b)=>`[${a} → Thursday, thread "${h.label}" (${h.id}), ${b}.]`,l=(a,b)=>({kind:"relay",name:h.label,line:b,done:!0,bot:a});for(let c of i){let d=c.options?.length?` Options: ${c.options.join(" / ")}.`:"";b.push({rank:f.question,key:`question:${c.id}`,kind:"question",line:`${k(c.bot,"question")}
64
64
  ${g(c.text)}${d}`,relayIds:a.filter(a=>a.messageId===c.id).map(a=>a.id),show:l(c.bot,`${c.bot} asks`)})}let m=a.filter(a=>!i.some(b=>b.id===a.messageId)),n="done"===h.status,o="waiting"===h.status&&(0,c.isAppStop)(h.ask)&&!h.ask?.auto;if(n||o){if(h.seen)continue;let a=o?"stopped":"done",c="stopped"===a?`It stopped before finishing. Where it got to: ${g(h.ask?.question??h.outcome??"")}`:`Done. Its answer: ${g(h.outcome??"")}`;b.push({rank:f[a],key:`${a}:${h.id}@${j}`,kind:"ending",line:`${k(h.bot,a)}
65
65
  ${c}`,relayIds:m.map(a=>a.id),show:l(h.bot,"stopped"===a?`${h.bot} stopped`:`${h.bot} finished`)});continue}for(let a of m)b.push({rank:f.progress,key:`progress:${a.id}`,kind:"progress",line:`${k(a.bot,a.kind)}
66
- ${g(a.text)}`,relayIds:[a.id],show:l(a.bot,`${a.bot} ${e[a.kind]}`)})}return b.sort((a,b)=>a.rank-b.rank)}])},143699,a=>a.a(async(b,c)=>{try{var d=a.i(47919),e=a.i(53112),f=a.i(569572),g=a.i(552556),h=a.i(738131),i=a.i(875931),j=a.i(689656),k=a.i(61514),l=a.i(614747),m=a.i(762008),n=a.i(688034),o=a.i(725466),p=a.i(69721);a.i(176668);var q=a.i(293480),r=a.i(569549),s=a.i(3894),t=a.i(626550),u=b([h,i,k,l,o,r]);async function v(){let a=await Promise.all(s.TEXT_CALL_PROVIDERS.map(async a=>await (0,o.readConfig)(a.apiKeyName)?a.apiKeyName:null));return(0,s.textCallRunsOn)(b=>a.includes(b))}async function w(a,b){if(b)return b;let c=await v();return c||(0,q.publicError)(B),{provider:c,model:a.backendModel}}async function x(a,b){let c=await w(a,b),[d,e]=await Promise.all([(0,r.insertCall)({provider:c.provider,model:f.TEXT_CALL.model,backendModel:c.model}),(0,k.loadCallStanding)()]);return{callId:d,standing:e}}async function y(a){var b;let c,{callId:e,settings:g,standing:h,messages:i,said:j,signal:k}=a,[l,n]=await Promise.all([z(e,g),(0,r.nextTurnSeq)(e)]);null!==j&&await (0,r.saveTurns)(e,[{id:crypto.randomUUID(),role:"user",text:j,seq:n}]);let o=await (0,d.generateText)({model:l.model,instructions:l.system,messages:[...A(h),...i],allowSystemInMessages:!0,tools:l.tools,providerOptions:l.providerOptions,stopWhen:(0,d.stepCountIs)(f.TEXT_CALL.maxSteps),abortSignal:k,onStepEnd:(b=e,c=null===j?n:n+1,async a=>{for(let d of a.content)if("tool-call"===d.type){let e=a.content.find(a=>"tool-result"===a.type&&a.toolCallId===d.toolCallId);await (0,r.saveTurns)(b,[{id:d.toolCallId,role:"tool",tool:d.toolName,text:d.toolName===m.TOOL_NAMES.web_search?function(a,b){let c=b??{},d=[(a??{}).query,c.action?.query].find(a=>"string"==typeof a&&!!a.trim()),e=Array.isArray(c.sources)?c.sources.flatMap(a=>a&&"object"==typeof a&&"url"in a&&"string"==typeof a.url?[{url:a.url,..."title"in a&&"string"==typeof a.title?{title:a.title}:{}}]:[]):[];return JSON.stringify({query:d??null,sources:e})}(d.input,e?.type==="tool-result"?e.output:null):JSON.stringify(d.input??{}),seq:c++}])}else"text"===d.type&&d.text.trim()?await (0,r.saveTurns)(b,[{id:crypto.randomUUID(),role:"assistant",text:d.text.trim(),seq:c++}]):"reasoning"===d.type&&d.text.trim()&&await (0,r.saveThought)(b,{id:crypto.randomUUID(),text:d.text.trim(),seq:c})})});return{text:o.text.trim(),did:o.steps.flatMap(a=>a.toolCalls.map(a=>(0,t.toolLine)(a.toolName,JSON.stringify(a.input??{}))??a.toolName)),messages:[...i,...o.response.messages]}}[h,i,k,l,o,r]=u.then?(await u)():u,e.z.object({callId:e.z.string().min(1),settings:s.ThursdaySettingsSchema,standing:e.z.string().nullish(),runsOn:j.textModelRefSchema.nullish(),messages:e.z.array(e.z.unknown()).min(1)});let A=a=>a?[{role:"system",content:a}]:[];async function z(a,b,c){let d=await w(b,c),e="openai"===d.provider||"chatgpt"===d.provider,[f,j,k,q,r]=await Promise.all([(0,i.getTextModel)(d),(0,l.loadThursdayPrompt)(b.backendPrompt,!0),(0,h.loadTools)({target:"thursday",callId:a,webSearch:b.webSearch,written:!0}),(0,o.readConfig)(n.EXA_API_KEY),(0,o.readConfig)(g.LIVE_PROVIDER.apiKeyName)]),s=f.searchTools&&Object.values(f.searchTools)[0],t={...k,...b.webSearch&&!q&&s?{[m.TOOL_NAMES.web_search]:s}:{}},u=e?r?await (0,p.acceptedReasoning)({apiKey:r,model:d.model,effort:b.reasoningEffort}):"none"===b.reasoningEffort?{effort:"none"}:{effort:b.reasoningEffort??void 0,summary:"auto"}:null;return{model:f.model,system:j,tools:t,providerOptions:{openai:{...u?.effort?{reasoningEffort:u.effort}:{},...u&&"summary"in u&&u.summary?{reasoningSummary:u.summary}:{}}}}}let B="Writing to Thursday needs a GPT subscription sign-in or an OpenAI key — Settings › API keys.";a.s(["answerInWriting",0,y,"openTextCall",0,x]),c()}catch(a){c(a)}},!1),69721,a=>{"use strict";var b=a.i(53112),c=a.i(569572),d=a.i(176668),e=a.i(293480),f=a.i(746609);let g=b.z.object({session:b.z.object({id:b.z.string().min(1)}),transport:b.z.object({type:b.z.literal("webrtc"),sdp:b.z.string().min(1)})}),h=new Map;async function i(a){let{apiKey:b,model:e,effort:f}=a,g=`${e} ${f??"auto"}`,i=h.get(g);if(void 0!==i)return i;let j="none"===f?{effort:f}:{...f?{effort:f}:{},summary:"auto"};for(;;){let a=await fetch("https://api.openai.com/v1/responses/input_tokens",{method:"POST",headers:{Authorization:`Bearer ${b}`,"Content-Type":"application/json"},signal:AbortSignal.timeout(c.LIVE_CALL.reasoningCheckMs),body:JSON.stringify({model:e,input:".",reasoning:j})}).catch(()=>null);if(!a)return j;let f=Object.keys(j).length?j:null;if(a.ok)return h.set(g,f),f;let i=await a.json().catch(()=>null),k=i?.error?.param?.replace(/^reasoning\./,"");if("effort"!==k&&"summary"!==k||!(k in j))return j;if(d.logger.warn(`${e} takes no reasoning ${k}; calls omit it`),delete j[k],!Object.keys(j).length)return h.set(g,null),null}}async function j(a){let b=await fetch("https://api.openai.com/v1/models",{headers:{Authorization:`Bearer ${a}`},signal:AbortSignal.timeout(c.LIVE_CALL.keyCheckMs)}).catch(()=>null);if(!b||401!==b.status&&403!==b.status)return null;let d=await b.json().catch(()=>null);return d?.error?.message?.trim()||`It answered ${b.status}.`}async function k(a){let b,h=await fetch("https://api.openai.com/v1/live/sessions",{method:"POST",headers:{Authorization:`Bearer ${a.apiKey}`,"Content-Type":"application/json"},signal:AbortSignal.timeout(c.LIVE_CALL.startupMs),body:JSON.stringify({session:{model:f.LIVE_MODEL,instructions:a.instructions,audio:{output:{voice:a.voice}},store:!1,delegation:{type:"responses",responses:{model:a.backend.model,instructions:a.backend.instructions,tools:[...a.backend.tools.map(a=>({type:"function",...a})),...a.backend.hosted.map(a=>f.LIVE_HOSTED_TOOLS[a].declare)],tool_choice:"auto",parallel_tool_calls:!0,max_output_tokens:c.LIVE_CALL.backendOutputTokens,...a.backend.reasoning?{reasoning:a.backend.reasoning}:{}}}},transport:{type:"webrtc",sdp:a.sdp}})}).catch(a=>{d.logger.warn("OpenAI Live unreachable",a),(0,e.publicError)("Could not reach OpenAI Live.")}),i=await h.text();try{b=JSON.parse(i)}catch{b=null}if(!h.ok){let a=b;(0,e.publicError)(a?.error?.message||i||`OpenAI Live refused the call (${h.status}).`)}let j=g.safeParse(b);return j.success||(0,e.publicError)("OpenAI Live returned an invalid session connection."),j.data}a.s(["acceptedReasoning",0,i,"createLiveCall",0,k,"keyRefusal",0,j])}];
66
+ ${g(a.text)}`,relayIds:[a.id],show:l(a.bot,`${a.bot} ${e[a.kind]}`)})}return b.sort((a,b)=>a.rank-b.rank)}])},143699,a=>a.a(async(b,c)=>{try{var d=a.i(47919),e=a.i(53112),f=a.i(569572),g=a.i(552556),h=a.i(738131),i=a.i(875931),j=a.i(689656),k=a.i(61514),l=a.i(614747),m=a.i(762008),n=a.i(688034),o=a.i(725466),p=a.i(69721);a.i(176668);var q=a.i(293480),r=a.i(569549),s=a.i(3894),t=a.i(626550),u=b([h,i,k,l,o,r]);async function v(){let a=await Promise.all(s.TEXT_CALL_PROVIDERS.map(async a=>await (0,o.readConfig)(a.apiKeyName)?a.apiKeyName:null));return(0,s.textCallRunsOn)(b=>a.includes(b))}async function w(a,b){if(b)return b;let c=await v();return c||(0,q.publicError)(B),{provider:c,model:a.backendModel}}async function x(a,b){let c=await w(a,b),[d,e]=await Promise.all([(0,r.insertCall)({provider:c.provider,model:f.TEXT_CALL.model,backendModel:c.model}),(0,k.loadCallStanding)()]);return{callId:d,standing:e}}async function y(a){var b;let c,{callId:e,settings:g,standing:h,messages:i,said:j,signal:k}=a,[l,n]=await Promise.all([z(e,g),(0,r.nextTurnSeq)(e)]);null!==j&&await (0,r.saveTurns)(e,[{id:crypto.randomUUID(),role:"user",text:j,seq:n}]);let o=await (0,d.generateText)({model:l.model,instructions:l.system,messages:[...A(h),...i],allowSystemInMessages:!0,tools:l.tools,providerOptions:l.providerOptions,stopWhen:(0,d.stepCountIs)(f.TEXT_CALL.maxSteps),abortSignal:k,onStepEnd:(b=e,c=null===j?n:n+1,async a=>{for(let d of a.content)if("tool-call"===d.type){let e=a.content.find(a=>"tool-result"===a.type&&a.toolCallId===d.toolCallId);await (0,r.saveTurns)(b,[{id:d.toolCallId,role:"tool",tool:d.toolName,text:d.toolName===m.TOOL_NAMES.web_search?function(a,b){let c=b??{},d=[(a??{}).query,c.action?.query].find(a=>"string"==typeof a&&!!a.trim()),e=Array.isArray(c.sources)?c.sources.flatMap(a=>a&&"object"==typeof a&&"url"in a&&"string"==typeof a.url?[{url:a.url,..."title"in a&&"string"==typeof a.title?{title:a.title}:{}}]:[]):[];return JSON.stringify({query:d??null,sources:e})}(d.input,e?.type==="tool-result"?e.output:null):JSON.stringify(d.input??{}),seq:c++}])}else"text"===d.type&&d.text.trim()?await (0,r.saveTurns)(b,[{id:crypto.randomUUID(),role:"assistant",text:d.text.trim(),seq:c++}]):"reasoning"===d.type&&d.text.trim()&&await (0,r.saveThought)(b,{id:crypto.randomUUID(),text:d.text.trim(),seq:c})})});return{text:o.text.trim(),did:o.steps.flatMap(a=>a.toolCalls.map(a=>(0,t.toolLine)(a.toolName,JSON.stringify(a.input??{}))??a.toolName)),messages:[...i,...o.response.messages]}}[h,i,k,l,o,r]=u.then?(await u)():u,e.z.object({callId:e.z.string().min(1),settings:g.LiveSettingsSchema,standing:e.z.string().nullish(),runsOn:j.textModelRefSchema.nullish(),messages:e.z.array(e.z.unknown()).min(1)});let A=a=>a?[{role:"system",content:a}]:[];async function z(a,b,c){let d=await w(b,c),e="openai"===d.provider||"chatgpt"===d.provider,[f,j,k,q,r]=await Promise.all([(0,i.getTextModel)(d),(0,l.loadThursdayPrompt)(b.backendPrompt,!0),(0,h.loadTools)({target:"thursday",callId:a,webSearch:b.webSearch,written:!0}),(0,o.readConfig)(n.EXA_API_KEY),(0,o.readConfig)(g.LIVE_PROVIDER.apiKeyName)]),s=f.searchTools&&Object.values(f.searchTools)[0],t={...k,...b.webSearch&&!q&&s?{[m.TOOL_NAMES.web_search]:s}:{}},u=e?r?await (0,p.acceptedReasoning)({apiKey:r,model:d.model,effort:b.reasoningEffort}):"none"===b.reasoningEffort?{effort:"none"}:{effort:b.reasoningEffort??void 0,summary:"auto"}:null;return{model:f.model,system:j,tools:t,providerOptions:{openai:{...u?.effort?{reasoningEffort:u.effort}:{},...u&&"summary"in u&&u.summary?{reasoningSummary:u.summary}:{}}}}}let B="Writing to Thursday needs a GPT subscription sign-in or an OpenAI key — Settings › API keys.";a.s(["answerInWriting",0,y,"openTextCall",0,x]),c()}catch(a){c(a)}},!1),69721,a=>{"use strict";var b=a.i(53112),c=a.i(569572),d=a.i(176668),e=a.i(293480),f=a.i(746609);let g=b.z.object({session:b.z.object({id:b.z.string().min(1)}),transport:b.z.object({type:b.z.literal("webrtc"),sdp:b.z.string().min(1)})}),h=new Map;async function i(a){let{apiKey:b,model:e,effort:f}=a,g=`${e} ${f??"auto"}`,i=h.get(g);if(void 0!==i)return i;let j="none"===f?{effort:f}:{...f?{effort:f}:{},summary:"auto"};for(;;){let a=await fetch("https://api.openai.com/v1/responses/input_tokens",{method:"POST",headers:{Authorization:`Bearer ${b}`,"Content-Type":"application/json"},signal:AbortSignal.timeout(c.LIVE_CALL.reasoningCheckMs),body:JSON.stringify({model:e,input:".",reasoning:j})}).catch(()=>null);if(!a)return j;let f=Object.keys(j).length?j:null;if(a.ok)return h.set(g,f),f;let i=await a.json().catch(()=>null),k=i?.error?.param?.replace(/^reasoning\./,"");if("effort"!==k&&"summary"!==k||!(k in j))return j;if(d.logger.warn(`${e} takes no reasoning ${k}; calls omit it`),delete j[k],!Object.keys(j).length)return h.set(g,null),null}}async function j(a){let b=await fetch("https://api.openai.com/v1/models",{headers:{Authorization:`Bearer ${a}`},signal:AbortSignal.timeout(c.LIVE_CALL.keyCheckMs)}).catch(()=>null);if(!b||401!==b.status&&403!==b.status)return null;let d=await b.json().catch(()=>null);return d?.error?.message?.trim()||`It answered ${b.status}.`}async function k(a){let b,h=await fetch("https://api.openai.com/v1/live/sessions",{method:"POST",headers:{Authorization:`Bearer ${a.apiKey}`,"Content-Type":"application/json"},signal:AbortSignal.timeout(c.LIVE_CALL.startupMs),body:JSON.stringify({session:{model:f.LIVE_MODEL,instructions:a.instructions,audio:{output:{voice:a.voice}},store:!1,delegation:{type:"responses",responses:{model:a.backend.model,instructions:a.backend.instructions,tools:[...a.backend.tools.map(a=>({type:"function",...a})),...a.backend.hosted.map(a=>f.LIVE_HOSTED_TOOLS[a].declare)],tool_choice:"auto",parallel_tool_calls:!0,max_output_tokens:c.LIVE_CALL.backendOutputTokens,...a.backend.reasoning?{reasoning:a.backend.reasoning}:{}}}},transport:{type:"webrtc",sdp:a.sdp}})}).catch(a=>{d.logger.warn("OpenAI Live unreachable",a),(0,e.publicError)("Could not reach OpenAI Live.")}),i=await h.text();try{b=JSON.parse(i)}catch{b=null}if(!h.ok){let a=b;(0,e.publicError)(a?.error?.message||i||`OpenAI Live refused the call (${h.status}).`)}let j=g.safeParse(b);return j.success||(0,e.publicError)("OpenAI Live returned an invalid session connection."),j.data}a.s(["acceptedReasoning",0,i,"createLiveCall",0,k,"keyRefusal",0,j])}];
67
67
 
68
68
  //# sourceMappingURL=_12mijol._.js.map
@@ -1,5 +1,5 @@
1
1
  module.exports=[203469,a=>{"use strict";let b,c,d,e,f,g;var h,i=a.i(569572),j=a.i(176668);let k={threads:!0,routines:!0,memory:!0,mcp:!0,config:!0,reach:!0,signins:!0},l=globalThis,m=l.__appEvents??=(b=new Set,{emit(a){for(let c of[...b])try{c(a)}catch(a){console.error("event listener failed",a)}},subscribe:a=>(b.add(a),()=>{b.delete(a)})}),n=l.__presence??=(h=i.BROWSER_GONE_MS,c=!1,d=null,e=new Set,f=new Set,g=a=>{for(let b of[...a])try{b()}catch(a){console.error("presence listener failed",a)}},{get watching(){return c},track(a){if(a>0){d&&clearTimeout(d),d=null,c||(c=!0,g(f));return}!d&&c&&(d=setTimeout(()=>{d=null,c=!1,g(e)},h))},onGone:a=>(e.add(a),()=>e.delete(a)),onBack:a=>(f.add(a),()=>f.delete(a))});l.__appEventStream??=function(a,b={}){let c=new TextEncoder,d=b.heartbeatMs??2e4,e=0;return{respond:(f,g)=>{let h=()=>{};return new Response(new ReadableStream({async start(i){let k=!1,l=new Map,m=[],n=a=>{if(!k)try{i.enqueue(c.encode(a))}catch{h()}},o=a=>n(`data: ${JSON.stringify(a)}
2
2
 
3
- `),p=a=>{let c=b.coalesce?.keyOf(a)??null;if(null===c)return o(a);let d=l.get(c);d&&clearTimeout(d),l.set(c,setTimeout(()=>{l.delete(c),o(a)},b.coalesce?.ms))},q=a.subscribe(a=>m?m.push(a):p(a)),r=setInterval(()=>n(": ping\n\n"),d);e+=1,b.onWatchers?.(e),h=()=>{if(!k){for(let a of(k=!0,e-=1,b.onWatchers?.(e),q(),clearInterval(r),l.values()))clearTimeout(a);try{i.close()}catch{}}},f.addEventListener("abort",h);try{for(let a of await g?.()??[])o(a)}catch(a){j.logger.error("event stream opening failed",a),h();return}let s=m;for(let a of(m=null,s))p(a)},cancel(){h()}}),{headers:{"Content-Type":"text/event-stream; charset=utf-8","Cache-Control":"no-store","X-Accel-Buffering":"no"}})},get watchers(){return e}}}(m,{coalesce:{ms:150,keyOf:a=>a.type in k?a.type:null},onWatchers:n.track}),l.__bootId??=crypto.randomUUID(),a.s(["appEvents",0,m,"presence",0,n],203469)},762008,a=>{"use strict";a.s(["STUDIO_TOOLS",0,{generate_image:"generate_image",generate_speech:"generate_speech",transcribe:"transcribe",generate_video:"generate_video"},"TOOL_NAMES",0,{memory_recall:"memory_recall",memory_remember:"memory_remember",memory_forget:"memory_forget",memory_conversation:"memory_conversation",bash:"bash",write_file:"write_file",tool_search:"tool_search",tool_call:"tool_call",load_skill:"load_skill",web_search:"web_search",thread_start:"thread_start",thread_tell:"thread_tell",thread_answer:"thread_answer",thread_status:"thread_status",thread_cancel:"thread_cancel",thread_show:"thread_show",thread_seen:"thread_seen",routine:"routine",send_message:"send_message",thread_recall:"thread_recall",sign_in_use:"sign_in_use",sign_in_keep:"sign_in_keep",look_at:"look_at",end_call:"end_call",emote:"emote"}])},569549,a=>a.a(async(b,c)=>{try{var d=a.i(93321),e=a.i(530385),f=a.i(351674);a.i(569572);var g=a.i(184838),h=a.i(714428),i=a.i(344853),j=a.i(725466),k=a.i(3894),l=b([g,i,j]);async function m(){return(0,k.isSkillsOn)(await (0,j.readConfig)(k.THURSDAY_KEYS.skills))}async function n(a){await (0,j.writeConfig)(k.THURSDAY_KEYS.skills,a?"on":"off")}async function o(a){let[b]=await g.database.insert(h.callTable).values({id:crypto.randomUUID(),...a}).returning({id:h.callTable.id});return b.id}async function p(a,b){return(await g.database.update(h.callTable).set({endedAt:new Date,...b?{endedReason:b.reason,seconds:b.seconds??null}:{}}).where((0,d.and)((0,d.eq)(h.callTable.id,a),(0,d.isNull)(h.callTable.endedAt))).returning({id:h.callTable.id})).length>0}async function q(a,b){for(let c of b)await g.database.insert(h.callMessageTable).values({callId:a,...c,fragments:c.fragments??null}).onConflictDoUpdate({target:[h.callMessageTable.callId,h.callMessageTable.id],set:{text:c.text,role:c.role,tool:c.tool??null,fragments:c.fragments??null}})}async function r(a){let[b]=await g.database.select({seq:f.sql`max(${h.callMessageTable.seq})`}).from(h.callMessageTable).where((0,d.eq)(h.callMessageTable.callId,a));return b?.seq==null?0:Number(b.seq)+1}async function s(a,b){await g.database.insert(h.callThoughtTable).values({callId:a,...b}).onConflictDoNothing()}async function t(a){let b=await g.database.select({callId:h.callMessageTable.callId,startedAt:h.callTable.startedAt,role:h.callMessageTable.role,tool:h.callMessageTable.tool,text:h.callMessageTable.text,seq:h.callMessageTable.seq}).from(h.callMessageTable).innerJoin(h.callTable,(0,d.eq)(h.callMessageTable.callId,h.callTable.id)).orderBy((0,e.desc)(h.callTable.startedAt),(0,e.desc)(h.callMessageTable.seq)).limit(a),c=new Map;for(let a of b){let b=c.get(a.callId)??{callId:a.callId,startedAt:a.startedAt,turns:[]};b.turns.push({role:a.role,tool:a.tool,text:a.text,seq:a.seq}),c.set(a.callId,b)}return[...c.values()].reverse().map(a=>({...a,turns:a.turns.reverse()}))}async function u(a,b,c){let[i]=await g.database.select({startedAt:h.callTable.startedAt}).from(h.callTable).where((0,d.eq)(h.callTable.id,a));if(!i)return null;let[j]=await g.database.select({total:f.sql`count(*)`}).from(h.callMessageTable).where((0,d.eq)(h.callMessageTable.callId,a)),k=await g.database.select({role:h.callMessageTable.role,tool:h.callMessageTable.tool,text:h.callMessageTable.text}).from(h.callMessageTable).where((0,d.eq)(h.callMessageTable.callId,a)).orderBy((0,e.asc)(h.callMessageTable.seq)).limit(c).offset((b-1)*c);return{startedAt:i.startedAt,total:Number(j?.total??0),turns:k}}async function v(){let a=(0,d.inArray)(h.callMessageTable.role,["user","assistant"]),[b]=await g.database.select({id:h.callTable.id,startedAt:h.callTable.startedAt,model:h.callTable.model}).from(h.callTable).innerJoin(h.callMessageTable,(0,d.eq)(h.callMessageTable.callId,h.callTable.id)).where((0,d.and)((0,d.isNotNull)(h.callTable.endedAt),a)).groupBy(h.callTable.id).orderBy((0,e.desc)(h.callTable.startedAt)).limit(1);if(!b)return null;let c=await g.database.select({role:h.callMessageTable.role,text:h.callMessageTable.text,at:h.callMessageTable.at}).from(h.callMessageTable).where((0,d.and)((0,d.eq)(h.callMessageTable.callId,b.id),a)).orderBy((0,e.desc)(h.callMessageTable.seq)).limit(4),f=c.reverse().flatMap(a=>"tool"!==a.role&&a.text.trim()?[{role:a.role,text:a.text}]:[]);return f.length?{startedAt:b.startedAt,until:c[0]?.at??b.startedAt,model:b.model,turns:f}:null}async function w(){return(await g.database.select({id:h.callTable.id}).from(h.callTable).limit(1)).length>0}async function x(){return(await g.database.select({id:h.callTable.id}).from(h.callTable).where((0,d.isNull)(h.callTable.endedAt)).limit(1)).length>0}async function y(a){return(await g.database.select({id:h.callTable.id}).from(h.callTable).where((0,d.and)((0,d.eq)(h.callTable.id,a),(0,d.isNull)(h.callTable.endedAt))).limit(1)).length>0}async function z(a){return(await g.database.delete(h.callTable).where((0,d.and)((0,d.eq)(h.callTable.id,a),(0,d.isNotNull)(h.callTable.endedAt))).returning({id:h.callTable.id})).length>0}async function A(){return(await g.database.delete(h.callTable).where((0,d.isNotNull)(h.callTable.endedAt)).returning({id:h.callTable.id})).length}[g,i,j]=l.then?(await l)():l,a.s(["deleteCall",0,z,"deleteEndedCalls",0,A,"endCall",0,p,"findLastCall",0,v,"hasAnyCall",0,w,"insertCall",0,o,"isAnyCallLive",0,x,"isCallOpen",0,y,"listRecentTurns",0,t,"nextTurnSeq",0,r,"readCallConversation",0,u,"readCallSkillsOn",0,m,"saveThought",0,s,"saveTurns",0,q,"writeCallSkillsOn",0,n]),c()}catch(a){c(a)}},!1),3894,a=>{"use strict";var b=a.i(723885),c=a.i(569572),d=a.i(552556),e=a.i(689656),f=a.i(746609);let g=d.LiveSettingsSchema.extend({locale:b.default.string().max(35).nullish()}),h=[{id:"chatgpt",...e.TEXT_MODEL_PROVIDERS.chatgpt},{id:"openai",...e.TEXT_MODEL_PROVIDERS.openai}];b.default.object({charset:b.default.enum(["ascii","emoji","emojiOnly"]).default(c.ASCII_FACE.charset),fontSize:b.default.number().min(c.ASCII_FACE.fontSize.min).max(c.ASCII_FACE.fontSize.max).default(c.ASCII_FACE.fontSize.default),density:b.default.number().min(c.ASCII_FACE.density.min).max(c.ASCII_FACE.density.max).default(c.ASCII_FACE.density.default)}).parse({});b.default.object({enabled:b.default.boolean(),phrase:b.default.string().trim().min(3).max(32)}),b.default.object({enabled:b.default.boolean(),combo:b.default.string().trim().min(1).max(64)}),b.default.enum(["off","waiting","any"]),b.default.enum(["center","sides"]);let i=b.default.object({id:b.default.string().min(1),role:b.default.enum(["user","assistant","tool"]),tool:b.default.string().nullish(),text:b.default.string(),seq:b.default.number().int().min(0),fragments:b.default.array(f.LiveFragmentSchema).nullish()}),j=b.default.object({id:b.default.string().min(1),text:b.default.string(),seq:b.default.number().int().min(0)});a.s(["CallThoughtSchema",0,j,"CallTurnSchema",0,i,"TEXT_CALL_PROVIDERS",0,h,"THURSDAY_KEYS",0,{skills:"THURSDAY_SKILLS"},"ThursdaySettingsSchema",0,g,"isSkillsOn",0,a=>a?.trim()==="on","textCallRunsOn",0,a=>h.find(b=>a(b.apiKeyName))?.id??null],3894)}];
3
+ `),p=a=>{let c=b.coalesce?.keyOf(a)??null;if(null===c)return o(a);let d=l.get(c);d&&clearTimeout(d),l.set(c,setTimeout(()=>{l.delete(c),o(a)},b.coalesce?.ms))},q=a.subscribe(a=>m?m.push(a):p(a)),r=setInterval(()=>n(": ping\n\n"),d);e+=1,b.onWatchers?.(e),h=()=>{if(!k){for(let a of(k=!0,e-=1,b.onWatchers?.(e),q(),clearInterval(r),l.values()))clearTimeout(a);try{i.close()}catch{}}},f.addEventListener("abort",h);try{for(let a of await g?.()??[])o(a)}catch(a){j.logger.error("event stream opening failed",a),h();return}let s=m;for(let a of(m=null,s))p(a)},cancel(){h()}}),{headers:{"Content-Type":"text/event-stream; charset=utf-8","Cache-Control":"no-store","X-Accel-Buffering":"no"}})},get watchers(){return e}}}(m,{coalesce:{ms:150,keyOf:a=>a.type in k?a.type:null},onWatchers:n.track}),l.__bootId??=crypto.randomUUID(),a.s(["appEvents",0,m,"presence",0,n],203469)},762008,a=>{"use strict";a.s(["STUDIO_TOOLS",0,{generate_image:"generate_image",generate_speech:"generate_speech",transcribe:"transcribe",generate_video:"generate_video"},"TOOL_NAMES",0,{memory_recall:"memory_recall",memory_remember:"memory_remember",memory_forget:"memory_forget",memory_conversation:"memory_conversation",bash:"bash",write_file:"write_file",tool_search:"tool_search",tool_call:"tool_call",load_skill:"load_skill",web_search:"web_search",thread_start:"thread_start",thread_tell:"thread_tell",thread_answer:"thread_answer",thread_status:"thread_status",thread_cancel:"thread_cancel",thread_show:"thread_show",thread_seen:"thread_seen",routine:"routine",send_message:"send_message",thread_recall:"thread_recall",sign_in_use:"sign_in_use",sign_in_keep:"sign_in_keep",look_at:"look_at",end_call:"end_call",emote:"emote"}])},569549,a=>a.a(async(b,c)=>{try{var d=a.i(93321),e=a.i(530385),f=a.i(351674);a.i(569572);var g=a.i(184838),h=a.i(714428),i=a.i(344853),j=a.i(725466),k=a.i(3894),l=b([g,i,j]);async function m(){return(0,k.isSkillsOn)(await (0,j.readConfig)(k.THURSDAY_KEYS.skills))}async function n(a){await (0,j.writeConfig)(k.THURSDAY_KEYS.skills,a?"on":"off")}async function o(a){let[b]=await g.database.insert(h.callTable).values({id:crypto.randomUUID(),...a}).returning({id:h.callTable.id});return b.id}async function p(a,b){return(await g.database.update(h.callTable).set({endedAt:new Date,...b?{endedReason:b.reason,seconds:b.seconds??null}:{}}).where((0,d.and)((0,d.eq)(h.callTable.id,a),(0,d.isNull)(h.callTable.endedAt))).returning({id:h.callTable.id})).length>0}async function q(a,b){for(let c of b)await g.database.insert(h.callMessageTable).values({callId:a,...c,fragments:c.fragments??null}).onConflictDoUpdate({target:[h.callMessageTable.callId,h.callMessageTable.id],set:{text:c.text,role:c.role,tool:c.tool??null,fragments:c.fragments??null}})}async function r(a){let[b]=await g.database.select({seq:f.sql`max(${h.callMessageTable.seq})`}).from(h.callMessageTable).where((0,d.eq)(h.callMessageTable.callId,a));return b?.seq==null?0:Number(b.seq)+1}async function s(a,b){await g.database.insert(h.callThoughtTable).values({callId:a,...b}).onConflictDoNothing()}async function t(a){let b=await g.database.select({callId:h.callMessageTable.callId,startedAt:h.callTable.startedAt,role:h.callMessageTable.role,tool:h.callMessageTable.tool,text:h.callMessageTable.text,seq:h.callMessageTable.seq}).from(h.callMessageTable).innerJoin(h.callTable,(0,d.eq)(h.callMessageTable.callId,h.callTable.id)).orderBy((0,e.desc)(h.callTable.startedAt),(0,e.desc)(h.callMessageTable.seq)).limit(a),c=new Map;for(let a of b){let b=c.get(a.callId)??{callId:a.callId,startedAt:a.startedAt,turns:[]};b.turns.push({role:a.role,tool:a.tool,text:a.text,seq:a.seq}),c.set(a.callId,b)}return[...c.values()].reverse().map(a=>({...a,turns:a.turns.reverse()}))}async function u(a,b,c){let[i]=await g.database.select({startedAt:h.callTable.startedAt}).from(h.callTable).where((0,d.eq)(h.callTable.id,a));if(!i)return null;let[j]=await g.database.select({total:f.sql`count(*)`}).from(h.callMessageTable).where((0,d.eq)(h.callMessageTable.callId,a)),k=await g.database.select({role:h.callMessageTable.role,tool:h.callMessageTable.tool,text:h.callMessageTable.text}).from(h.callMessageTable).where((0,d.eq)(h.callMessageTable.callId,a)).orderBy((0,e.asc)(h.callMessageTable.seq)).limit(c).offset((b-1)*c);return{startedAt:i.startedAt,total:Number(j?.total??0),turns:k}}async function v(){let a=(0,d.inArray)(h.callMessageTable.role,["user","assistant"]),[b]=await g.database.select({id:h.callTable.id,startedAt:h.callTable.startedAt,model:h.callTable.model}).from(h.callTable).innerJoin(h.callMessageTable,(0,d.eq)(h.callMessageTable.callId,h.callTable.id)).where((0,d.and)((0,d.isNotNull)(h.callTable.endedAt),a)).groupBy(h.callTable.id).orderBy((0,e.desc)(h.callTable.startedAt)).limit(1);if(!b)return null;let c=await g.database.select({role:h.callMessageTable.role,text:h.callMessageTable.text,at:h.callMessageTable.at}).from(h.callMessageTable).where((0,d.and)((0,d.eq)(h.callMessageTable.callId,b.id),a)).orderBy((0,e.desc)(h.callMessageTable.seq)).limit(4),f=c.reverse().flatMap(a=>"tool"!==a.role&&a.text.trim()?[{role:a.role,text:a.text}]:[]);return f.length?{startedAt:b.startedAt,until:c[0]?.at??b.startedAt,model:b.model,turns:f}:null}async function w(){return(await g.database.select({id:h.callTable.id}).from(h.callTable).limit(1)).length>0}async function x(){return(await g.database.select({id:h.callTable.id}).from(h.callTable).where((0,d.isNull)(h.callTable.endedAt)).limit(1)).length>0}async function y(a){return(await g.database.select({id:h.callTable.id}).from(h.callTable).where((0,d.and)((0,d.eq)(h.callTable.id,a),(0,d.isNull)(h.callTable.endedAt))).limit(1)).length>0}async function z(a){return(await g.database.delete(h.callTable).where((0,d.and)((0,d.eq)(h.callTable.id,a),(0,d.isNotNull)(h.callTable.endedAt))).returning({id:h.callTable.id})).length>0}async function A(){return(await g.database.delete(h.callTable).where((0,d.isNotNull)(h.callTable.endedAt)).returning({id:h.callTable.id})).length}[g,i,j]=l.then?(await l)():l,a.s(["deleteCall",0,z,"deleteEndedCalls",0,A,"endCall",0,p,"findLastCall",0,v,"hasAnyCall",0,w,"insertCall",0,o,"isAnyCallLive",0,x,"isCallOpen",0,y,"listRecentTurns",0,t,"nextTurnSeq",0,r,"readCallConversation",0,u,"readCallSkillsOn",0,m,"saveThought",0,s,"saveTurns",0,q,"writeCallSkillsOn",0,n]),c()}catch(a){c(a)}},!1),3894,a=>{"use strict";var b=a.i(723885),c=a.i(569572),d=a.i(689656),e=a.i(746609);let f=[{id:"chatgpt",...d.TEXT_MODEL_PROVIDERS.chatgpt},{id:"openai",...d.TEXT_MODEL_PROVIDERS.openai}];b.default.object({charset:b.default.enum(["ascii","emoji","emojiOnly"]).default(c.ASCII_FACE.charset),fontSize:b.default.number().min(c.ASCII_FACE.fontSize.min).max(c.ASCII_FACE.fontSize.max).default(c.ASCII_FACE.fontSize.default),density:b.default.number().min(c.ASCII_FACE.density.min).max(c.ASCII_FACE.density.max).default(c.ASCII_FACE.density.default)}).parse({});b.default.object({enabled:b.default.boolean(),phrase:b.default.string().trim().min(3).max(32)}),b.default.object({enabled:b.default.boolean(),combo:b.default.string().trim().min(1).max(64)}),b.default.enum(["off","waiting","any"]),b.default.enum(["center","sides"]);let g=b.default.object({id:b.default.string().min(1),role:b.default.enum(["user","assistant","tool"]),tool:b.default.string().nullish(),text:b.default.string(),seq:b.default.number().int().min(0),fragments:b.default.array(e.LiveFragmentSchema).nullish()}),h=b.default.object({id:b.default.string().min(1),text:b.default.string(),seq:b.default.number().int().min(0)});a.s(["CallThoughtSchema",0,h,"CallTurnSchema",0,g,"TEXT_CALL_PROVIDERS",0,f,"THURSDAY_KEYS",0,{skills:"THURSDAY_SKILLS"},"isSkillsOn",0,a=>a?.trim()==="on","textCallRunsOn",0,a=>f.find(b=>a(b.apiKeyName))?.id??null],3894)}];
4
4
 
5
5
  //# sourceMappingURL=_132qkfz._.js.map