thursday-agent 0.8.0 → 0.9.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 (264) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +3 -3
  3. package/.next/prerender-manifest.json +3 -3
  4. package/.next/server/app/_global-error/page.js.nft.json +1 -1
  5. package/.next/server/app/_global-error.html +1 -1
  6. package/.next/server/app/_global-error.rsc +1 -1
  7. package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  8. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  9. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  10. package/.next/server/app/_not-found/page.js.nft.json +1 -1
  11. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  12. package/.next/server/app/_not-found.html +1 -1
  13. package/.next/server/app/_not-found.rsc +2 -2
  14. package/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  15. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  16. package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  17. package/.next/server/app/api/artifact/route.js.nft.json +1 -1
  18. package/.next/server/app/api/bot/keep-working/route.js.nft.json +1 -1
  19. package/.next/server/app/api/bot/memory/files/route.js.nft.json +1 -1
  20. package/.next/server/app/api/bot/memory/route.js.nft.json +1 -1
  21. package/.next/server/app/api/bot/route.js.nft.json +1 -1
  22. package/.next/server/app/api/bot/thread/[id]/route.js.nft.json +1 -1
  23. package/.next/server/app/api/bot/thread/route.js.nft.json +1 -1
  24. package/.next/server/app/api/config/route.js.nft.json +1 -1
  25. package/.next/server/app/api/events/route.js.nft.json +1 -1
  26. package/.next/server/app/api/favicon/[host]/route.js.nft.json +1 -1
  27. package/.next/server/app/api/file/[...path]/route.js.nft.json +1 -1
  28. package/.next/server/app/api/llm-model/catalog/route.js.nft.json +1 -1
  29. package/.next/server/app/api/llm-model/credits/route.js.nft.json +1 -1
  30. package/.next/server/app/api/llm-model/route.js.nft.json +1 -1
  31. package/.next/server/app/api/llm-model/subscription/route.js.nft.json +1 -1
  32. package/.next/server/app/api/mcp/[name]/route.js.nft.json +1 -1
  33. package/.next/server/app/api/mcp/oauth/callback/route.js.nft.json +1 -1
  34. package/.next/server/app/api/mcp/route.js.nft.json +1 -1
  35. package/.next/server/app/api/mcp/tools/route.js.nft.json +1 -1
  36. package/.next/server/app/api/memory/edit/route.js +1 -1
  37. package/.next/server/app/api/memory/edit/route.js.nft.json +1 -1
  38. package/.next/server/app/api/memory/route.js.nft.json +1 -1
  39. package/.next/server/app/api/probe/route.js.nft.json +1 -1
  40. package/.next/server/app/api/reach/route.js +11 -11
  41. package/.next/server/app/api/reach/route.js.nft.json +1 -1
  42. package/.next/server/app/api/routine/route.js +6 -6
  43. package/.next/server/app/api/routine/route.js.nft.json +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 +11 -11
  50. package/.next/server/app/api/thursday/text/route.js.nft.json +1 -1
  51. package/.next/server/app/api/thursday/tool-call/route.js +6 -6
  52. package/.next/server/app/api/thursday/tool-call/route.js.nft.json +1 -1
  53. package/.next/server/app/api/workspace/files/route.js.nft.json +1 -1
  54. package/.next/server/app/api/workspace/route.js.nft.json +1 -1
  55. package/.next/server/app/artifact/[...path]/page/server-reference-manifest.json +1 -1
  56. package/.next/server/app/artifact/[...path]/page.js.nft.json +1 -1
  57. package/.next/server/app/artifact/[...path]/page_client-reference-manifest.js +1 -1
  58. package/.next/server/app/favicon.ico/route.js.nft.json +1 -1
  59. package/.next/server/app/manifest.webmanifest/route.js.nft.json +1 -1
  60. package/.next/server/app/page/server-reference-manifest.json +56 -56
  61. package/.next/server/app/page.js +3 -3
  62. package/.next/server/app/page.js.nft.json +1 -1
  63. package/.next/server/app/page_client-reference-manifest.js +1 -1
  64. package/.next/server/chunks/[root-of-the-server]__012s2o8._.js +1 -1
  65. package/.next/server/chunks/[root-of-the-server]__04r4h-2._.js +1 -1
  66. package/.next/server/chunks/[root-of-the-server]__0mrk2it._.js +1 -1
  67. package/.next/server/chunks/[root-of-the-server]__0nmhgeo._.js +3 -0
  68. package/.next/server/chunks/[root-of-the-server]__1fy2g82._.js +3 -0
  69. package/.next/server/chunks/[root-of-the-server]__1ndi14y._.js +1 -1
  70. package/.next/server/chunks/[root-of-the-server]__1nmflqk._.js +3 -0
  71. package/.next/server/chunks/[root-of-the-server]__1v7-zke._.js +1 -1
  72. package/.next/server/chunks/[root-of-the-server]__1wnzmx9._.js +3 -0
  73. package/.next/server/chunks/[root-of-the-server]__1xv-5cq._.js +1 -1
  74. package/.next/server/chunks/[root-of-the-server]__1ygplx1._.js +1 -1
  75. package/.next/server/chunks/_05v8k21._.js +1 -1
  76. package/.next/server/chunks/_0awtznl._.js +4 -4
  77. package/.next/server/chunks/_0k6qjcf._.js +1 -1
  78. package/.next/server/chunks/_0na2fj1._.js +5 -5
  79. package/.next/server/chunks/_0x-ej3f._.js +21 -21
  80. package/.next/server/chunks/_1dc_d1q._.js +22 -20
  81. package/.next/server/chunks/_1jc5g4p._.js +2 -2
  82. package/.next/server/chunks/_1jn-aep._.js +50 -48
  83. package/.next/server/chunks/{_1u8ygbz._.js → _1m88lkh._.js} +7 -7
  84. package/.next/server/chunks/_1uuucy-._.js +4 -4
  85. package/.next/server/chunks/_1v9r2ke._.js +1 -1
  86. package/.next/server/chunks/ssr/{[root-of-the-server]__1h4bnrf._.js → [root-of-the-server]__0oo-wlv._.js} +2 -2
  87. package/.next/server/chunks/ssr/{[root-of-the-server]__1kyi568._.js → [root-of-the-server]__0tvavy9._.js} +1 -1
  88. package/.next/server/chunks/ssr/[root-of-the-server]__0tzekbl._.js +1 -1
  89. package/.next/server/chunks/ssr/[root-of-the-server]__0zuns7e._.js +3 -0
  90. package/.next/server/chunks/ssr/[root-of-the-server]__1se25x0._.js +1 -1
  91. package/.next/server/chunks/ssr/{_1i3ddn7._.js → _05pl_u8._.js} +1 -1
  92. package/.next/server/chunks/ssr/_070nv1_._.js +3 -0
  93. package/.next/server/chunks/ssr/_097-ljd._.js +1 -1
  94. package/.next/server/chunks/ssr/_0dshsh4._.js +3 -0
  95. package/.next/server/chunks/ssr/_0fqhhwi._.js +1 -1
  96. package/.next/server/chunks/ssr/{_0z8jpch._.js → _0ital-2._.js} +2 -2
  97. package/.next/server/chunks/ssr/{_19g570d._.js → _0kjj5ts._.js} +3 -3
  98. package/.next/server/chunks/ssr/{_1nod5hh._.js → _0l_mcfz._.js} +2 -2
  99. package/.next/server/chunks/ssr/_0ld9_qq._.js +1 -1
  100. package/.next/server/chunks/ssr/_0ltz2q5._.js +3 -0
  101. package/.next/server/chunks/ssr/_0scf7xy._.js +3 -0
  102. package/.next/server/chunks/ssr/_0u5xv6g._.js +3 -0
  103. package/.next/server/chunks/ssr/{_0ewory0._.js → _0urj3mc._.js} +2 -2
  104. package/.next/server/chunks/ssr/{_0pm-2p-._.js → _1-zyvdb._.js} +2 -2
  105. package/.next/server/chunks/ssr/{_1_rqu8x._.js → _12mijol._.js} +7 -7
  106. package/.next/server/chunks/ssr/_15zqt-t._.js +1 -1
  107. package/.next/server/chunks/ssr/_184327j._.js +1 -1
  108. package/.next/server/chunks/ssr/{_1y-ea28._.js → _1a-nuxx._.js} +2 -2
  109. package/.next/server/chunks/ssr/_1alxym6._.js +3 -0
  110. package/.next/server/chunks/ssr/{_0hzz82u._.js → _1d423aj._.js} +25 -23
  111. package/.next/server/chunks/ssr/{_1u1mxu9._.js → _1flbs77._.js} +2 -2
  112. package/.next/server/chunks/ssr/_1mqn9mc._.js +1 -1
  113. package/.next/server/chunks/ssr/_1neoj22._.js +1 -1
  114. package/.next/server/chunks/ssr/{_1oijqjw._.js → _1tmu8z-._.js} +2 -2
  115. package/.next/server/chunks/ssr/{_10y6r1n._.js → _1uy0xom._.js} +3 -3
  116. package/.next/server/chunks/ssr/_1x-kojb._.js +20 -0
  117. package/.next/server/chunks/ssr/_1xoch6f._.js +1 -1
  118. package/.next/server/chunks/ssr/_1z74dmq._.js +164 -0
  119. package/.next/server/chunks/ssr/features_bot_1nr94ks._.js +3 -0
  120. package/.next/server/chunks/ssr/features_bot_1s_-2vj._.js +1 -1
  121. package/.next/server/chunks/ssr/features_connectors_components_mcp-setting_tsx_0jmbgvp._.js +1 -1
  122. package/.next/server/chunks/ssr/features_memory_components_memory-setting_tsx_0oa43sw._.js +1 -1
  123. package/.next/server/chunks/ssr/features_routine_components_routine-setting_tsx_055fknz._.js +1 -1
  124. package/.next/server/chunks/ssr/{node_modules_111sh9o._.js → node_modules_03d0rfz._.js} +1 -1
  125. package/.next/server/chunks/ssr/{node_modules_0lg75qx._.js → node_modules_04_sbbc._.js} +1 -1
  126. package/.next/server/chunks/ssr/{node_modules_10gbm2y._.js → node_modules_05ybmta._.js} +1 -1
  127. package/.next/server/chunks/ssr/{node_modules_1v9tc1c._.js → node_modules_068ws5v._.js} +1 -1
  128. package/.next/server/chunks/ssr/{node_modules_1_8mv4v._.js → node_modules_06bb4q8._.js} +1 -1
  129. package/.next/server/chunks/ssr/{node_modules_01f8_se._.js → node_modules_07rs_p2._.js} +1 -1
  130. package/.next/server/chunks/ssr/{node_modules_0ii1l89._.js → node_modules_0dzm4um._.js} +1 -1
  131. package/.next/server/chunks/ssr/{node_modules_20xmwtu._.js → node_modules_0jljel9._.js} +1 -1
  132. package/.next/server/chunks/ssr/{node_modules_1ix-g49._.js → node_modules_0sgy-dc._.js} +1 -1
  133. package/.next/server/chunks/ssr/{node_modules_0woscox._.js → node_modules_0t_ez6-._.js} +1 -1
  134. package/.next/server/chunks/ssr/{node_modules_059vtf2._.js → node_modules_0th357h._.js} +1 -1
  135. package/.next/server/chunks/ssr/{node_modules_06w645b._.js → node_modules_0ubdtk-._.js} +1 -1
  136. package/.next/server/chunks/ssr/{node_modules_0b8df3s._.js → node_modules_0uyh_vb._.js} +1 -1
  137. package/.next/server/chunks/ssr/{node_modules_07ih6wb._.js → node_modules_0wnlddw._.js} +1 -1
  138. package/.next/server/chunks/ssr/{node_modules_0gt-uw9._.js → node_modules_0x630an._.js} +1 -1
  139. package/.next/server/chunks/ssr/{node_modules_1x825hz._.js → node_modules_0yvz9e0._.js} +1 -1
  140. package/.next/server/chunks/ssr/{node_modules_0t-44lj._.js → node_modules_12et8d5._.js} +1 -1
  141. package/.next/server/chunks/ssr/{node_modules_1m3gb16._.js → node_modules_13kwejm._.js} +1 -1
  142. package/.next/server/chunks/ssr/{node_modules_1p9rdsy._.js → node_modules_1af3w91._.js} +1 -1
  143. package/.next/server/chunks/ssr/{node_modules_0sz5yg1._.js → node_modules_1bucjlk._.js} +1 -1
  144. package/.next/server/chunks/ssr/{node_modules_1teyzfa._.js → node_modules_1lkix61._.js} +1 -1
  145. package/.next/server/chunks/ssr/{node_modules_1lsyy7k._.js → node_modules_1ogczzz._.js} +1 -1
  146. package/.next/server/chunks/ssr/{node_modules_1-7qawg._.js → node_modules_1s-gb-1._.js} +1 -1
  147. package/.next/server/chunks/ssr/{node_modules_0yv-re6._.js → node_modules_1uwg-gz._.js} +1 -1
  148. package/.next/server/chunks/ssr/{node_modules_03ptrl9._.js → node_modules_1wbkzl9._.js} +1 -1
  149. package/.next/server/chunks/ssr/{node_modules_00jv9_3._.js → node_modules_1z1lrbk._.js} +1 -1
  150. package/.next/server/chunks/ssr/{node_modules_@base-ui_react_0jne69c._.js → node_modules_@base-ui_react_0buz1-j._.js} +1 -1
  151. package/.next/server/chunks/ssr/{node_modules_@mermaid-js_parser_dist_chunks_mermaid-parser_core_00q1oa3._.js → node_modules_@mermaid-js_parser_dist_chunks_mermaid-parser_core_0r443fh._.js} +1 -1
  152. package/.next/server/chunks/ssr/{node_modules_@mermaid-js_parser_dist_chunks_mermaid-parser_core_1-2_5z7._.js → node_modules_@mermaid-js_parser_dist_chunks_mermaid-parser_core_10wnlbk._.js} +1 -1
  153. package/.next/server/middleware-build-manifest.js +3 -3
  154. package/.next/server/pages/404.html +1 -1
  155. package/.next/server/pages/500.html +1 -1
  156. package/.next/server/server-reference-manifest.js +1 -1
  157. package/.next/server/server-reference-manifest.json +57 -57
  158. package/.next/static/chunks/06nt9tatr-dug.js +1 -0
  159. package/.next/static/chunks/0_awn8tucznxc.js +1 -0
  160. package/.next/static/chunks/{34s52v8f841zo.js → 0ge-hx0ed83a1.js} +1 -1
  161. package/.next/static/chunks/0pda_vf-abwvx.js +1 -0
  162. package/.next/static/chunks/{2u9yjkpkoij75.js → 0qmd8n52hp-6v.js} +1 -1
  163. package/.next/static/chunks/0rowp9rx3qbxu.js +18 -0
  164. package/.next/static/chunks/{1ocy4w0v20a3v.js → 13ixzheqw7o-w.js} +2 -2
  165. package/.next/static/chunks/1grkt5gr8pbg1.js +17 -0
  166. package/.next/static/chunks/{21gf2t_whhurc.js → 1yugpvvi8qrbu.js} +2 -2
  167. package/.next/static/chunks/{1e4yrzs5evq_r.js → 245hb85nsy6j4.js} +1 -1
  168. package/.next/static/chunks/27lkanxvtdn09.js +1 -0
  169. package/.next/static/chunks/{0oz7a68qanm99.js → 27tvv1i-smrck.js} +1 -1
  170. package/.next/static/chunks/{2zhfdbq50ee5i.js → 2c64drdevdla3.js} +1 -1
  171. package/.next/static/chunks/{0k5tkt_qi52kb.js → 2ndw4w4u2x51r.js} +1 -1
  172. package/.next/static/chunks/37j27b3e1gt7r.js +1 -0
  173. package/.next/static/chunks/{2om4lkg86feb4.js → 38301ji-85i30.js} +1 -1
  174. package/.next/static/chunks/{09c13vnqy7al3.js → 3bbzsitgiltnt.js} +2 -2
  175. package/.next/static/chunks/3fec-aeteddr-.js +1 -0
  176. package/.next/static/chunks/3go3hwp1z2_h2.css +1 -0
  177. package/.next/static/chunks/3h2bun3hcggg8.js +1 -0
  178. package/.next/static/chunks/{0g1p98s2pfx2w.js → 3h2e-xv1zxh_f.js} +2 -2
  179. package/.next/static/chunks/3j1y335o95mj7.js +1 -0
  180. package/.next/static/chunks/3obf9n3cxj99k.js +1 -0
  181. package/.next/static/chunks/{2upc9mkcc3nlq.js → 427qsc6kahxyo.js} +1 -1
  182. package/README.md +31 -14
  183. package/bin/port.mjs +11 -7
  184. package/bin/thursday.mjs +1 -1
  185. package/components/ui/radio-group.tsx +2 -2
  186. package/components/ui/shiny-text.tsx +3 -22
  187. package/docs/how-it-works.md +11 -3
  188. package/docs/images/first-run.png +0 -0
  189. package/docs/images/keeps-going.png +0 -0
  190. package/docs/images/two-minds.png +0 -0
  191. package/features/ai/components/model-browser.tsx +1 -1
  192. package/features/ai/components/model-picker.tsx +1 -1
  193. package/features/ai/guide.ts +9 -4
  194. package/features/ai/prompts/bot.prompt.ts +4 -1
  195. package/features/ai/tools/routine.tool.ts +28 -16
  196. package/features/bot/bot.runner.ts +3 -1
  197. package/features/bot/components/bot-mark.tsx +6 -1
  198. package/features/bot/components/bot-setting.tsx +2 -4
  199. package/features/bot/components/bot-tool.tsx +2 -0
  200. package/features/bot/components/room-list.tsx +12 -3
  201. package/features/bot/components/room-pill.tsx +26 -19
  202. package/features/config/components/config-setting.tsx +17 -5
  203. package/features/config/components/voice-key.tsx +38 -18
  204. package/features/connectors/mcp.const.ts +90 -59
  205. package/features/intro/components/intro.tsx +50 -27
  206. package/features/routine/components/routine-mark.tsx +4 -6
  207. package/features/routine/components/routine-setting.tsx +332 -143
  208. package/features/routine/routine.query.ts +24 -3
  209. package/features/routine/routine.schema.ts +55 -4
  210. package/features/settings/components/install-app.tsx +1 -4
  211. package/features/settings/components/setting-ui.tsx +1 -1
  212. package/features/skills/skills.discover.ts +2 -1
  213. package/features/skills/skills.query.ts +5 -1
  214. package/features/skills/skills.schema.ts +2 -0
  215. package/features/thursday/components/ascii-orb.tsx +39 -10
  216. package/features/thursday/components/connect-wave.tsx +284 -0
  217. package/features/thursday/components/side-captions.tsx +29 -17
  218. package/features/thursday/components/thursday-setting.tsx +2 -2
  219. package/features/thursday/components/thursday.tsx +130 -58
  220. package/features/thursday/components/voice-picker.tsx +1 -1
  221. package/features/thursday/components/write-line.tsx +2 -2
  222. package/features/thursday/open-work.ts +11 -3
  223. package/features/thursday/tool-line.ts +94 -12
  224. package/features/thursday/use-text-call.ts +3 -2
  225. package/features/thursday/use-thursday.ts +5 -2
  226. package/features/workspace/components/artifact-view.tsx +129 -7
  227. package/guide/bots.md +17 -5
  228. package/guide/calls.md +15 -7
  229. package/guide/setup.md +10 -2
  230. package/lib/desktop-notify.ts +3 -2
  231. package/package.json +1 -1
  232. package/scripts/bot-context.test.mts +1 -1
  233. package/skills/computer/SKILL.md +1 -0
  234. package/skills/interactive-page/SKILL.md +4 -0
  235. package/.next/server/chunks/[root-of-the-server]__0n-l_n_._.js +0 -3
  236. package/.next/server/chunks/[root-of-the-server]__0wvo2of._.js +0 -3
  237. package/.next/server/chunks/[root-of-the-server]__1e6aut3._.js +0 -3
  238. package/.next/server/chunks/[root-of-the-server]__1ziojdq._.js +0 -3
  239. package/.next/server/chunks/ssr/[root-of-the-server]__1srp8l5._.js +0 -3
  240. package/.next/server/chunks/ssr/_0mes4s0._.js +0 -3
  241. package/.next/server/chunks/ssr/_0ya0cb0._.js +0 -3
  242. package/.next/server/chunks/ssr/_0yto5s7._.js +0 -20
  243. package/.next/server/chunks/ssr/_10dw2nv._.js +0 -3
  244. package/.next/server/chunks/ssr/_1p0gxeo._.js +0 -164
  245. package/.next/server/chunks/ssr/_1r41yvh._.js +0 -3
  246. package/.next/server/chunks/ssr/_1r79ksv._.js +0 -3
  247. package/.next/server/chunks/ssr/features_bot_1ogjt52._.js +0 -3
  248. package/.next/server/chunks/ssr/node_modules_@base-ui_react_0b3d4m9._.js +0 -3
  249. package/.next/static/chunks/03omwz_vi2ndg.js +0 -1
  250. package/.next/static/chunks/0_1bqgd6wt_og.js +0 -1
  251. package/.next/static/chunks/0abgkzikaznxc.js +0 -1
  252. package/.next/static/chunks/0bddkpash59-o.js +0 -17
  253. package/.next/static/chunks/0c2-bzhy3a0ib.js +0 -1
  254. package/.next/static/chunks/0iilfb1ocevnx.js +0 -1
  255. package/.next/static/chunks/0imbhx-j830a_.css +0 -1
  256. package/.next/static/chunks/24h1y9dhy3m_2.js +0 -1
  257. package/.next/static/chunks/2be08eqxsfc1y.js +0 -1
  258. package/.next/static/chunks/2d3yhjtafgmtw.js +0 -1
  259. package/.next/static/chunks/2f_5saocsko_b.js +0 -1
  260. package/.next/static/chunks/2lwbr5vx0ixaj.js +0 -18
  261. package/.next/static/chunks/44kjmi5h_p8px.js +0 -1
  262. /package/.next/static/{UiOMPYpQ4fqGyu5PzS-7j → u8kJqShUAa49vY7BxAWsw}/_buildManifest.js +0 -0
  263. /package/.next/static/{UiOMPYpQ4fqGyu5PzS-7j → u8kJqShUAa49vY7BxAWsw}/_clientMiddlewareManifest.js +0 -0
  264. /package/.next/static/{UiOMPYpQ4fqGyu5PzS-7j → u8kJqShUAa49vY7BxAWsw}/_ssgManifest.js +0 -0
@@ -1,20 +0,0 @@
1
- module.exports=[405593,a=>{"use strict";var b=a.i(187924),c=a.i(987234),d=a.i(164831);let e={name:"audio-lines",size:24,node:[["path",{d:"M2 10v3",key:"1fnikh"}],["path",{d:"M6 6v11",key:"11sgs0"}],["path",{d:"M10 3v18",key:"yhl04a"}],["path",{d:"M14 8v7",key:"3a1oy3"}],["path",{d:"M18 5v13",key:"123xd1"}],["path",{d:"M22 10v3",key:"154ddg"}]]};e.node;let f=(0,d.default)(e),g={name:"captions",size:24,node:[["rect",{width:"18",height:"14",x:"3",y:"5",rx:"2",ry:"2",key:"12ruh7"}],["path",{d:"M7 15h4M15 15h2M7 11h2M13 11h4",key:"1ueiar"}]],aliases:["subtitles"]};g.node;let h=(0,d.default)(g);var i=a.i(752562),j=a.i(141146);let k={name:"clapperboard",size:24,node:[["path",{d:"m12.296 3.464 3.02 3.956",key:"qash78"}],["path",{d:"M20.2 6 3 11l-.9-2.4c-.3-1.1.3-2.2 1.3-2.5l13.5-4c1.1-.3 2.2.3 2.5 1.3z",key:"1h7j8b"}],["path",{d:"M3 11h18v8a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z",key:"4lm6w1"}],["path",{d:"m6.18 5.276 3.1 3.899",key:"zjj9t3"}]]};k.node;let l=(0,d.default)(k);var m=a.i(607396),m=m,n=a.i(71215),o=a.i(126766),p=a.i(233540),q=a.i(180447),r=a.i(26268),s=a.i(572131),t=a.i(767561),u=a.i(340695),v=a.i(205522),w=a.i(446181),x=a.i(630342),y=a.i(341889),z=a.i(950463),A=a.i(852307),B=a.i(608902),C=a.i(379630),D=a.i(61876),E=a.i(913834),F=a.i(289058),G=a.i(812039),H=a.i(478978),I=a.i(585650),J=a.i(777794),K=a.i(907602);let L={telegram:"telegram.org",discord:"discord.com",slack:"slack.com"},M=`display_information:
2
- name: Thursday
3
- features:
4
- app_home:
5
- messages_tab_enabled: true
6
- messages_tab_read_only_enabled: false
7
- bot_user:
8
- display_name: Thursday
9
- oauth_config:
10
- scopes:
11
- bot: [chat:write, im:history, im:read, users:read, files:read, files:write]
12
- settings:
13
- event_subscriptions:
14
- bot_events: [message.im]
15
- interactivity:
16
- is_enabled: true
17
- socket_mode_enabled: true
18
- `,N=({href:a,children:c})=>(0,b.jsx)("a",{href:a,target:"_blank",rel:"noreferrer",className:"font-medium text-foreground underline underline-offset-4 outline-none focus-visible:ring-3 focus-visible:ring-ring/50",children:c}),O=({children:a})=>(0,b.jsx)("span",{className:"font-medium text-foreground",children:a}),P={telegram:[(0,b.jsxs)(b.Fragment,{children:["In Telegram, write to"," ",(0,b.jsx)(N,{href:"https://t.me/BotFather",children:"@BotFather"}),", send ",(0,b.jsx)(O,{children:"/newbot"})," ","and pick a name. It answers with a ",(0,b.jsx)(O,{children:"token"}),"."]}),(0,b.jsxs)(b.Fragment,{children:["Paste the token below, under ",(0,b.jsx)(O,{children:"Telegram"}),"."]}),(0,b.jsxs)(b.Fragment,{children:["From your phone, ",(0,b.jsx)(O,{children:"write anything to your new bot"}),"."]}),(0,b.jsxs)(b.Fragment,{children:["A question appears on this computer. Press ",(0,b.jsx)(O,{children:"Allow"}),". Done — write to the bot and Thursday answers."]})],discord:[(0,b.jsxs)(b.Fragment,{children:["At"," ",(0,b.jsx)(N,{href:"https://discord.com/developers/applications",children:"discord.com/developers"}),", make a ",(0,b.jsx)(O,{children:"New Application"}),". On its ",(0,b.jsx)(O,{children:"Bot"})," page press"," ",(0,b.jsx)(O,{children:"Reset Token"})," and copy it."]}),(0,b.jsxs)(b.Fragment,{children:["Paste the token below, under ",(0,b.jsx)(O,{children:"Discord"}),"."]}),(0,b.jsxs)(b.Fragment,{children:["On the application's ",(0,b.jsx)(O,{children:"OAuth2"})," page, make an invite link with the"," ",(0,b.jsx)(O,{children:"bot"})," scope and add the bot to a server of your own. Discord only lets you write to a bot you share a server with."]}),(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(O,{children:"Send the bot a direct message"})," (not in the server), then press"," ",(0,b.jsx)(O,{children:"Allow"})," on this computer."]})],slack:[(0,b.jsxs)(b.Fragment,{children:["At ",(0,b.jsx)(N,{href:"https://api.slack.com/apps",children:"api.slack.com/apps"}),","," ",(0,b.jsx)(O,{children:"Create New App › From a manifest"}),", and paste the manifest (the button under these steps copies it)."]}),(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(O,{children:"Basic Information › App-Level Tokens"}),": generate one with"," ",(0,b.jsx)(O,{children:"connections:write"}),". It starts with xapp- — paste it below as the"," ",(0,b.jsx)(O,{children:"app token"}),"."]}),(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(O,{children:"Install App"})," to your workspace. The Bot User OAuth Token starts with xoxb- — paste it below as the ",(0,b.jsx)(O,{children:"bot token"}),"."]}),(0,b.jsxs)(b.Fragment,{children:["In Slack, open the app under ",(0,b.jsx)(O,{children:"Apps"}),", write in its ",(0,b.jsx)(O,{children:"Messages"})," ","tab, then press ",(0,b.jsx)(O,{children:"Allow"})," on this computer."]})]};function Q(){let[a,c]=(0,s.useState)("telegram"),[d,e]=(0,s.useState)(!1);return(0,b.jsxs)("section",{className:"space-y-4 rounded-xl bg-muted/40 p-4",children:[(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-3",children:[(0,b.jsx)("p",{className:"min-w-0 flex-1 text-sm font-medium",children:"Connect a chat app in four steps"}),(0,b.jsx)(J.Segmented,{"aria-label":"Which chat app",value:a,onChange:c,options:K.REACH_CHANNELS.map(a=>({value:a,label:(0,b.jsxs)("span",{className:"flex items-center gap-1.5",children:[(0,b.jsx)(y.SiteIcon,{host:L[a],className:"size-3.5 rounded-[3px]"}),K.REACH_LABEL[a]]})}))})]}),(0,b.jsx)("ol",{className:"space-y-2.5",children:P[a].map((a,c)=>(0,b.jsxs)("li",{className:"flex gap-3 text-[13px] leading-relaxed",children:[(0,b.jsx)("span",{className:"grid size-5 shrink-0 place-items-center rounded-full bg-background font-mono text-[10.5px] text-muted-foreground ring-1 ring-border/60",children:c+1}),(0,b.jsx)("span",{className:"min-w-0 text-muted-foreground",children:a})]},c))}),"slack"===a&&(0,b.jsxs)(u.Button,{size:"sm",variant:"outline",onClick:()=>void navigator.clipboard.writeText(M).then(()=>{e(!0),setTimeout(()=>e(!1),2e3)}),children:[d?(0,b.jsx)(i.Check,{}):(0,b.jsx)(I.Copy,{}),d?"Copied":"Copy the manifest"]}),(0,b.jsxs)("p",{className:"text-xs leading-relaxed text-muted-foreground",children:["Only the one person you allow can write, and only direct messages are read. This computer has to be on with Thursday running; for bots to work while no tab is open, switch on ",(0,b.jsx)(O,{children:"Work while the app is closed"})," in Settings › Bots."]})]})}var R=a.i(986368),S=a.i(313237),T=a.i(759497),U=a.i(497895),V=a.i(405050);let W=(0,V.createServerReference)("7f1b40c9c47437cb87b8d000524dd23905c28bf464",V.callServer,void 0,V.findSourceMapURL,"forgetReachAction");function X(){let{data:a}=(0,T.useServerRoute)(t.queryKey.reach);return((0,R.useAppEvent)({reach:()=>void(0,T.revalidate)(t.queryKey.reach)}),a?.channels.length)?(0,b.jsx)("div",{className:"pt-2",children:a.channels.map(a=>(0,b.jsx)(Y,{channel:a},a.name))}):null}function Y({channel:a}){let[c,d]=(0,S.useServerAction)(W,{onOk:()=>(0,T.revalidate)(t.queryKey.reach)}),e="px-1 text-xs leading-6",f=K.REACH_LABEL[a.name];return a.problem&&!a.bot?(0,b.jsxs)("p",{className:(0,U.cn)(e,"text-destructive"),children:[f,": ",a.problem]}):a.bot?a.allowed?(0,b.jsxs)("p",{className:(0,U.cn)(e,"text-muted-foreground"),children:[f,": listening as ",a.bot,". ",a.allowed.name," is let in."," ",(0,b.jsx)("button",{type:"button",disabled:d,onClick:()=>void c(a.name).catch(()=>{}),className:"rounded-sm text-foreground underline underline-offset-4 outline-none focus-visible:ring-3 focus-visible:ring-ring/50 disabled:opacity-50",children:"Let them go"})]}):(0,b.jsxs)("p",{className:(0,U.cn)(e,U.WAITING_INK),children:[f,": listening as ",a.bot,". Write to it from your phone, then press Allow here."]}):(0,b.jsxs)("p",{className:(0,U.cn)(e,"text-muted-foreground"),children:[f,": connecting…"]})}var Z=a.i(619477);let $={[H.EXA_API_KEY]:p.Search,...Object.fromEntries(Object.values(K.REACH_KEYS).flat().map(a=>[a,q.Smartphone]))},_={image:n.Image,video:l,speech:f,transcription:h},aa={keys:["voice","easy","text","search"],models:["bots","studio"],phone:["phone"]};function ab({screen:a}){let{data:c,isLoading:d,error:e}=(0,T.useServerRoute)(t.queryKey.config);if(d)return(0,b.jsx)(Z.SettingSkeleton,{rows:4});if(e)return(0,b.jsx)(Z.SettingError,{message:e.message});let f=a=>(0,H.isConfigSet)(c,a),g=aa[a].flatMap(a=>H.CONFIG_GROUPS.find(b=>b.id===a)??[]),h=g.filter(a=>"keys"===a.section).flatMap(a=>a.entries);return(0,b.jsxs)(Z.SettingScreen,{footer:(0,b.jsx)(Z.SettingRailNote,{children:"models"===a?"Her own voice and backend models are in Thursday. A bot can pick its own on its page.":"phone"===a?"Nothing on this computer is opened to the internet: the app asks the chat service what was written.":`${h.filter(a=>f(a.key)).length} of ${h.length} set${g.some(a=>!(0,H.groupSatisfied)(a,f))?" · a call needs one voice key":" · your keys stay on this machine"}`}),children:["phone"===a&&(0,b.jsx)(Q,{}),g.map(a=>(0,b.jsxs)(Z.SettingGroup,{label:a.title,hint:a.hint,right:(0,b.jsx)(ad,{group:a,isSet:f}),children:["easy"===a.id?(0,b.jsx)("div",{className:"grid gap-3 sm:grid-cols-2",children:a.entries.map(a=>(0,b.jsx)(ae,{card:!0,entry:a,set:f(a.key),needed:!1},a.key))}):"text"===a.id?(0,b.jsx)("div",{className:"flex flex-wrap gap-x-1.5 gap-y-3.5",children:a.entries.map(a=>(0,b.jsx)(ac,{entry:a,set:f(a.key)},a.key))}):(0,b.jsx)(Z.SettingItems,{children:a.entries.map(d=>{let e;return d.choices?(0,b.jsx)(an,{entry:d,choices:d.choices,value:(e=d.key,c?.find(a=>a.key===e)?.value),isSet:f},d.key):(0,b.jsx)(ae,{entry:d,set:f(d.key),needed:!(0,H.groupSatisfied)(a,f)},d.key)})}),"phone"===a.id&&(0,b.jsx)(X,{})]},a.id))]})}function ac({entry:a,set:c}){return(0,b.jsxs)("button",{type:"button",onClick:()=>ar(a,c),"aria-label":`${a.label}: ${c?"set":"not set"}`,className:"group flex w-17 flex-col items-center gap-1.5 rounded-xl py-1 outline-none focus-visible:ring-3 focus-visible:ring-ring/50",children:[(0,b.jsxs)("span",{className:"relative grid size-10.5 place-items-center rounded-[13px] bg-muted/60 transition-colors group-hover:bg-muted",children:[(0,b.jsx)(am,{entry:a}),c&&(0,b.jsx)("span",{className:"absolute -top-1 -right-1 grid size-4 place-items-center rounded-full bg-primary text-primary-foreground ring-2 ring-background",children:(0,b.jsx)(i.Check,{className:"size-2.5"})})]}),(0,b.jsx)("span",{className:(0,U.cn)("max-w-full truncate text-[11px]",c?"text-foreground":"text-muted-foreground"),children:a.label})]})}function ad({group:a,isSet:c}){return"none"===a.require?null:(0,H.groupSatisfied)(a,c)?(0,b.jsxs)("span",{className:"flex items-center gap-1 font-mono text-[11px] text-muted-foreground",children:[(0,b.jsx)(i.Check,{className:"size-3"}),"ready"]}):(0,b.jsxs)("span",{className:(0,U.cn)("flex items-center gap-1 font-mono text-[11px]",U.WAITING_INK),children:[(0,b.jsx)(r.TriangleAlert,{className:"size-3"}),a.note??"Required"]})}function ae({entry:a,set:c,needed:d,card:e=!1,narrow:f=!1}){let g=ah(a,c),h=aj(a,c),k=ai(a,c),l=h.data?ak(h.data):ag(c,d,g.data,a.signIn),m=g.isLoading||h.isLoading,n=(0,b.jsxs)("span",{className:(0,U.cn)("flex shrink-0 items-center gap-1.5 font-mono text-xs",l.ink),children:[l.warn?(0,b.jsx)(r.TriangleAlert,{className:"size-3"}):c&&(0,b.jsx)(i.Check,{className:"size-3"}),l.text]});return(0,b.jsxs)("button",{type:"button",onClick:()=>{var d;return a.signIn?(d=a,w.notify.component({className:"sm:max-w-md",renderer:({close:a})=>(0,b.jsx)(aq,{entry:d,onDone:a})})):ar(a,c)},className:(0,U.cn)("group flex w-full items-center gap-3 p-4 text-left outline-none transition-colors hover:bg-muted/50 focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:ring-inset",e&&"rounded-xl border border-border/60"),children:[(0,b.jsx)("span",{className:"grid size-8 shrink-0 place-items-center rounded-lg bg-muted/60",children:(0,b.jsx)(am,{entry:a})}),(0,b.jsxs)("span",{className:"min-w-0 flex-1 space-y-0.5",children:[(0,b.jsxs)("span",{className:"flex items-center gap-2 truncate text-sm font-medium",children:[a.label,a.recommended&&(0,b.jsx)("span",{className:"rounded-full px-1.5 font-mono text-[9.5px] leading-4 font-normal text-brand ring-1 ring-brand",children:"recommended"})]}),f?m?(0,b.jsx)(z.Skeleton,{className:"h-3 w-20"}):n:(0,b.jsx)("span",{className:"block truncate font-mono text-xs text-muted-foreground",children:a.signIn?c?al(h.data,k):"sign in with your account":a.key})]}),f?null:m?(0,b.jsx)(z.Skeleton,{className:"h-3 w-20 shrink-0"}):n,(0,b.jsx)(j.ChevronRight,{className:"size-4 shrink-0 text-muted-foreground/60 transition-colors group-hover:text-foreground"})]})}let af=new Intl.NumberFormat("en-US",{style:"currency",currency:"USD"});function ag(a,b,c,d){return a?c?"refused"in c?{text:"Key refused",ink:"text-destructive",warn:!0}:{text:`${af.format(c.balance)} left`,ink:c.low?U.WAITING_INK:"text-muted-foreground",warn:c.low}:{text:d?"Signed in":"Set",ink:"text-muted-foreground",warn:!1}:b?{text:"Needed",ink:U.WAITING_INK,warn:!0}:{text:d?"Signed out":"Not set",ink:"text-muted-foreground/60",warn:!1}}function ah(a,b){return(0,T.useServerRoute)(b&&"vercel-ai-gateway"===a.provider?t.queryKey.gatewayCredits:null)}function ai(a,b){let{data:c}=(0,T.useServerRoute)(b&&a.signIn?t.queryKey.llmModel:null);return c?.find(b=>b.id===a.provider)?.plan??null}function aj(a,b){return(0,T.useServerRoute)(b&&a.signIn?t.queryKey.subscriptionUsage:null)}function ak(a){return"refused"in a?{text:"Sign-in refused",ink:"text-destructive",warn:!0}:{text:a.spent?"Limit reached":`${a.usedPercent}% used`,ink:a.high?U.WAITING_INK:"text-muted-foreground",warn:a.high}}function al(a,b){let d=!a||"refused"in a?null:a,e=`${d?.plan??b??"unknown"} plan`;return d?.resetsAt?`${e} \xb7 resets in ${(0,c.formatDistanceToNowStrict)(new Date(d.resetsAt))}`:e}function am({entry:a}){if(a.provider)return(0,b.jsx)(C.ProviderIcon,{provider:a.provider,className:"size-4"});let c=$[a.key]??o.KeyRound,d=(0,b.jsx)(c,{className:"size-4 text-muted-foreground"});return a.site?(0,b.jsx)(y.SiteIcon,{host:a.site,className:"size-4 rounded-[4px]",fallback:d}):d}function an({entry:a,choices:c,value:d,isSet:e}){let f=c.find(a=>a.value===d),g=c.filter(a=>e(a.needs)),h=d&&!f?d:null,i=a.kind?_[a.kind]:E.BotsMark;return(0,b.jsxs)("button",{type:"button",onClick:()=>{var d,e,f;return a.kind||a.text?(d=a,w.notify.component({className:"sm:max-w-lg",renderer:({close:a})=>(0,b.jsx)(ao,{entry:d,onDone:a})})):(e=a,f=c,w.notify.component({className:"sm:max-w-md",renderer:({close:a})=>(0,b.jsx)(ap,{entry:e,choices:f,onDone:a})}))},className:"group flex w-full items-center gap-3 p-4 text-left outline-none transition-colors hover:bg-muted/50 focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:ring-inset",children:[(0,b.jsx)("span",{className:"grid size-8 shrink-0 place-items-center rounded-lg bg-muted/60",children:(0,b.jsx)(i,{className:"size-4 text-muted-foreground"})}),(0,b.jsxs)("span",{className:"min-w-0 flex-1 space-y-1",children:[(0,b.jsx)("span",{className:"block truncate text-sm font-medium",children:a.label}),(0,b.jsxs)("span",{className:"flex min-w-0 items-center gap-1.5",children:[!f&&!h&&(0,b.jsx)("span",{className:(0,U.cn)("shrink-0 rounded-[5px] border border-border/60 px-1 font-mono text-[10px]",a.kind?U.WAITING_INK:"text-muted-foreground"),children:a.kind?"off":"auto"}),(0,b.jsx)("span",{className:"truncate font-mono text-xs text-muted-foreground",children:f?.label??h??(a.kind?"Not offered to bots until you pick one":g[0]?.label??"No key for any of these yet")})]})]}),(0,b.jsx)(j.ChevronRight,{className:"size-4 shrink-0 text-muted-foreground/60 transition-colors group-hover:text-foreground"})]})}function ao({entry:a,onDone:c}){let{data:d}=(0,T.useServerRoute)(t.queryKey.config),e=d?.find(b=>b.key===a.key)?.value,[f,g]=(0,s.useState)(()=>{let b=a.text?(0,D.parseTextModel)(e):(0,D.parseMediaModel)(e);return{provider:b?.provider??null,model:b?.model??""}}),h=()=>{(0,T.revalidate)(t.queryKey.config),c()},[i]=(0,S.useServerAction)(G.setConfigAction,{okMessage:`${a.label} saved`,onOk:h}),[j,k]=(0,S.useServerAction)(F.removeConfigAction,{okMessage:a.kind?`${a.label} switched off`:`${a.label} back to automatic`,onOk:h});return(0,b.jsx)(Z.SettingDialogContent,{title:a.label,description:a.hint,footer:(0,b.jsxs)(b.Fragment,{children:[e&&(0,b.jsx)(u.Button,{variant:"ghost",loading:k,onClick:()=>j(a.key),children:a.kind?"Turn off":"Automatic"}),(0,b.jsx)(u.Button,{variant:"ghost",onClick:c,children:"Close"})]}),children:(0,b.jsx)(B.ModelPicker,{kind:a.kind,provider:f.provider,model:f.model,onChange:b=>{g(b),b.model.trim()&&i(a.key,`${b.provider}/${b.model.trim()}`)}})})}function ap({entry:a,choices:c,onDone:d}){let{data:e}=(0,T.useServerRoute)(t.queryKey.config),f=e?.find(b=>b.key===a.key)?.value,g=()=>{(0,T.revalidate)(t.queryKey.config),d()},[h,i]=(0,S.useServerAction)(G.setConfigAction,{okMessage:`${a.label} saved`,onOk:g}),[j,k]=(0,S.useServerAction)(F.removeConfigAction,{okMessage:a.kind?`${a.label} switched off`:`${a.label} back to automatic`,onOk:g});return(0,b.jsx)(Z.SettingDialogContent,{title:a.label,description:a.hint,footer:(0,b.jsxs)(b.Fragment,{children:[f&&(0,b.jsx)(u.Button,{variant:"ghost",loading:k,onClick:()=>j(a.key),children:a.kind?"Turn off":"Automatic"}),(0,b.jsx)(u.Button,{variant:"ghost",onClick:d,children:"Close"})]}),children:(0,b.jsx)(Z.SettingChoiceRows,{options:c.map(a=>({value:a.value,label:a.label,disabled:!(0,H.isConfigSet)(e,a.needs)&&`needs ${a.needs}`})),value:f,onChange:b=>h(a.key,b),disabled:i})})}function aq({entry:a,onDone:c}){let{data:d}=(0,T.useServerRoute)(t.queryKey.config),e=(0,H.isConfigSet)(d,a.key),f=ai(a,e),g=aj(a,e),h=g.data?ak(g.data):null,[i,j]=(0,S.useServerAction)(F.removeConfigAction,{okMessage:`Signed out of ${a.label}`,onOk:()=>{(0,T.revalidate)(t.queryKey.config),(0,T.revalidate)(t.queryKey.llmModel),c()}});return(0,b.jsx)(Z.SettingDialogContent,{title:a.label,description:e?(0,b.jsxs)(b.Fragment,{children:["Signed in ·"," ",(0,b.jsx)("span",{className:"font-mono",children:al(g.data,f)}),h&&(0,b.jsxs)(b.Fragment,{children:[" · ",(0,b.jsx)("span",{className:(0,U.cn)("font-mono",h.ink),children:h.text})]})]}):"Sign in with your ChatGPT account instead of a key",footer:(0,b.jsxs)(b.Fragment,{children:[e&&(0,b.jsx)(u.Button,{variant:"ghost",loading:j,onClick:()=>i(a.key),children:"Sign out"}),(0,b.jsx)(u.Button,{variant:"ghost",onClick:c,children:e?"Close":"Cancel"}),!e&&(0,b.jsx)(A.ChatGptSignIn,{})]}),children:(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)(Z.SettingNote,{children:e?"Bots on this subscription spend your plan's usage, not a key. When it runs out, the job stops and says when it resets.":"The sign-in opens in its own window. Approve it there, and this turns to signed in by itself."}),g.data&&"refused"in g.data&&(0,b.jsx)(Z.SettingNote,{className:"wrap-break-word text-destructive",children:g.data.refused})]})})}function ar(a,c){return w.notify.component({className:"sm:max-w-md",renderer:({close:d})=>(0,b.jsx)(as,{entry:a,set:c,onDone:d})})}function as({entry:a,set:c,onDone:d}){let[e,f]=(0,s.useState)(""),{data:g}=ah(a,c),h=g?ag(c,!1,g):null,i=()=>{(0,T.revalidate)(t.queryKey.config),(0,T.revalidate)(t.queryKey.llmModel)},[j,k]=(0,S.useServerAction)(G.setConfigAction,{okMessage:`${a.label} key saved`,onOk:()=>{i(),d()}}),[l,m]=(0,S.useServerAction)(F.removeConfigAction,{okMessage:`${a.label} key removed`,onOk:()=>{i(),d()}});return(0,b.jsx)(Z.SettingDialogContent,{title:a.label,description:(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("span",{className:"font-mono",children:a.key}),a.hint&&(0,b.jsxs)(b.Fragment,{children:[" · ",a.hint]}),h&&(0,b.jsxs)(b.Fragment,{children:[" · ",(0,b.jsx)("span",{className:(0,U.cn)("font-mono",h.ink),children:h.text})]})]}),footer:(0,b.jsxs)(b.Fragment,{children:[c&&(0,b.jsx)(u.Button,{variant:"ghost",loading:m,onClick:()=>l(a.key),children:"Remove"}),(0,b.jsx)(u.Button,{variant:"ghost",onClick:d,children:"Cancel"}),(0,b.jsx)(u.Button,{loading:k,disabled:e.trim().length<8,onClick:()=>j(a.key,e),children:c?"Replace":"Save"})]}),children:(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)(v.Input,{value:e,onChange:a=>f(a.target.value),onKeyDown:b=>{"Enter"===b.key&&e.trim().length>=8&&j(a.key,e)},placeholder:c?"New value — replaces the current key":a.key,spellCheck:!1,type:"password",autoFocus:!0}),g&&"refused"in g&&(0,b.jsx)(Z.SettingNote,{className:"wrap-break-word text-destructive",children:g.refused})]})})}a.s(["AccountsSetup",0,function(){let{data:a}=(0,T.useServerRoute)(t.queryKey.config),c=b=>(0,H.isConfigSet)(a,b),d=a=>H.CONFIG_GROUPS.find(b=>b.id===a)?.entries??[],[e,f]=(0,s.useState)(!1),g=[...d("voice"),...d("text")],h=g.filter((a,b)=>b<4||c(a.key)),i=g.filter(a=>!h.includes(a));return(0,b.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,b.jsx)("div",{className:"flex flex-col gap-2",children:d("easy").map(a=>(0,b.jsx)(ae,{card:!0,narrow:!0,entry:a,set:c(a.key),needed:!1},a.key))}),(0,b.jsxs)("div",{className:"flex flex-wrap gap-y-2.5",children:[h.map(a=>(0,b.jsx)(ac,{entry:a,set:c(a.key)},a.key)),i.length>0&&(0,b.jsxs)(x.Popover,{open:e,onOpenChange:f,children:[(0,b.jsxs)(x.PopoverTrigger,{"aria-label":`${i.length} more providers`,className:"group flex w-17 flex-col items-center gap-1.5 rounded-xl py-1 outline-none focus-visible:ring-3 focus-visible:ring-ring/50",children:[(0,b.jsx)("span",{className:"grid size-10.5 place-items-center rounded-[13px] bg-muted/60 text-muted-foreground transition-colors group-hover:bg-muted",children:(0,b.jsx)(m.default,{className:"size-4"})}),(0,b.jsx)("span",{className:"text-[11px] text-muted-foreground",children:"More"})]}),(0,b.jsx)(x.PopoverContent,{align:"end",className:"w-78 flex-row flex-wrap gap-0 gap-y-2.5 rounded-2xl p-2.5",onClick:()=>f(!1),children:i.map(a=>(0,b.jsx)(ac,{entry:a,set:c(a.key)},a.key))})]})]}),d("search").map(a=>(0,b.jsx)(ae,{card:!0,narrow:!0,entry:a,set:c(a.key),needed:!1},a.key))]})},"KeysSetting",0,()=>(0,b.jsx)(ab,{screen:"keys"}),"ModelsSetting",0,()=>(0,b.jsx)(ab,{screen:"models"}),"PhoneSetting",0,()=>(0,b.jsx)(ab,{screen:"phone"})],405593)},289058,a=>{"use strict";var b=a.i(405050);let c=(0,b.createServerReference)("7fd531c41b57d8529fd25473d9d563750ba13f6d86",b.callServer,void 0,b.findSourceMapURL,"removeConfigAction");a.s(["removeConfigAction",0,c])},987234,a=>{"use strict";var b=a.i(934754),c=a.i(244513),d=a.i(852587),e=a.i(23464),f=a.i(57270),g=a.i(774016),h=a.i(959296);a.s(["formatDistanceToNowStrict",0,function(a,i){return function(a,b,i){var j;let k,l,m=(0,d.getDefaultOptions)(),n=i?.locale??m.locale??c.defaultLocale,o=(l=(0,g.toDate)(a)-(0,g.toDate)(b))<0?-1:l>0?1:l;if(isNaN(o))throw RangeError("Invalid time value");let p=Object.assign({},i,{addSuffix:i?.addSuffix,comparison:o}),[q,r]=(0,f.normalizeDates)(i?.in,...o>0?[b,a]:[a,b]),s=(j=i?.roundingMethod??"round",a=>{let b=(j?Math[j]:Math.trunc)(a);return 0===b?0:b}),t=r.getTime()-q.getTime(),u=t/h.millisecondsInMinute,v=(t-((0,e.getTimezoneOffsetInMilliseconds)(r)-(0,e.getTimezoneOffsetInMilliseconds)(q)))/h.millisecondsInMinute,w=i?.unit;if("second"===(k=w||(u<1?"second":u<60?"minute":u<h.minutesInDay?"hour":v<h.minutesInMonth?"day":v<h.minutesInYear?"month":"year"))){let a=s(t/1e3);return n.formatDistance("xSeconds",a,p)}if("minute"===k){let a=s(u);return n.formatDistance("xMinutes",a,p)}if("hour"===k){let a=s(u/60);return n.formatDistance("xHours",a,p)}if("day"===k){let a=s(v/h.minutesInDay);return n.formatDistance("xDays",a,p)}if("month"===k){let a=s(v/h.minutesInMonth);return 12===a&&"month"!==w?n.formatDistance("xYears",1,p):n.formatDistance("xMonths",a,p)}else{let a=s(v/h.minutesInYear);return n.formatDistance("xYears",a,p)}}(a,(0,b.constructNow)(a),i)}],987234)},180447,a=>{"use strict";var b=a.i(164831);let c={name:"smartphone",size:24,node:[["rect",{width:"14",height:"20",x:"5",y:"2",rx:"2",ry:"2",key:"1yt0o3"}],["path",{d:"M12 18h.01",key:"mhygvu"}]]};c.node;let d=(0,b.default)(c);a.s(["Smartphone",0,d],180447)}];
19
-
20
- //# sourceMappingURL=_0yto5s7._.js.map
@@ -1,3 +0,0 @@
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)("7f24ac631f68d73a9c5488441088ee871097f35a63",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)},36714,a=>{"use strict";var b=a.i(405050);let c=(0,b.createServerReference)("7f88aa9d4f071f0ca59f62a7efd73449ccb68a55fc",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
-
3
- //# sourceMappingURL=_10dw2nv._.js.map