thursday-agent 0.1.2 → 0.2.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.
- package/.next/BUILD_ID +1 -1
- package/.next/app-path-routes-manifest.json +1 -0
- package/.next/build-manifest.json +3 -3
- package/.next/prerender-manifest.json +3 -3
- package/.next/routes-manifest.json +6 -0
- package/.next/server/app/_global-error/page.js.nft.json +1 -1
- package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.rsc +1 -1
- package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +13 -13
- package/.next/server/app/_not-found.segments/_full.segment.rsc +13 -13
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +12 -12
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/api/artifact/route.js +1 -1
- package/.next/server/app/api/artifact/route.js.nft.json +1 -1
- package/.next/server/app/api/bot/notes/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/bot/notes/route/build-manifest.json +12 -0
- package/.next/server/app/api/bot/notes/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/bot/notes/route.js +14 -0
- package/.next/server/app/api/bot/notes/route.js.map +5 -0
- package/.next/server/app/api/bot/notes/route.js.nft.json +1 -0
- package/.next/server/app/api/bot/notes/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/bot/route.js +4 -4
- package/.next/server/app/api/bot/route.js.nft.json +1 -1
- package/.next/server/app/api/bot/task/[id]/route.js +6 -6
- package/.next/server/app/api/bot/task/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/bot/task/route.js +6 -6
- package/.next/server/app/api/bot/task/route.js.nft.json +1 -1
- package/.next/server/app/api/config/route.js +3 -3
- package/.next/server/app/api/config/route.js.nft.json +1 -1
- package/.next/server/app/api/events/route.js +1 -1
- package/.next/server/app/api/events/route.js.nft.json +1 -1
- package/.next/server/app/api/file/[...path]/route.js +1 -1
- package/.next/server/app/api/file/[...path]/route.js.nft.json +1 -1
- package/.next/server/app/api/llm-model/catalog/route.js +6 -6
- package/.next/server/app/api/llm-model/catalog/route.js.nft.json +1 -1
- package/.next/server/app/api/llm-model/route.js +3 -3
- package/.next/server/app/api/llm-model/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/[name]/route.js +3 -3
- package/.next/server/app/api/mcp/[name]/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/oauth/callback/route.js +5 -5
- package/.next/server/app/api/mcp/oauth/callback/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/route.js +3 -3
- package/.next/server/app/api/mcp/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/tools/route.js +3 -3
- package/.next/server/app/api/mcp/tools/route.js.nft.json +1 -1
- package/.next/server/app/api/memory/route.js +7 -7
- package/.next/server/app/api/memory/route.js.nft.json +1 -1
- package/.next/server/app/api/memory/tidy/route.js +10 -11
- package/.next/server/app/api/memory/tidy/route.js.nft.json +1 -1
- package/.next/server/app/api/skills/[source]/[name]/route.js +1 -1
- package/.next/server/app/api/skills/[source]/[name]/route.js.nft.json +1 -1
- package/.next/server/app/api/skills/route.js +1 -1
- package/.next/server/app/api/skills/route.js.nft.json +1 -1
- package/.next/server/app/api/thursday/call/route.js +8 -8
- package/.next/server/app/api/thursday/call/route.js.nft.json +1 -1
- package/.next/server/app/api/thursday/skills/route.js +8 -8
- package/.next/server/app/api/thursday/skills/route.js.nft.json +1 -1
- package/.next/server/app/api/thursday/tool-call/route.js +11 -12
- package/.next/server/app/api/thursday/tool-call/route.js.nft.json +1 -1
- package/.next/server/app/api/workspace/route.js +1 -1
- package/.next/server/app/api/workspace/route.js.nft.json +1 -1
- package/.next/server/app/artifact/[...path]/page/server-reference-manifest.json +1 -1
- package/.next/server/app/artifact/[...path]/page.js +3 -3
- package/.next/server/app/artifact/[...path]/page.js.nft.json +1 -1
- package/.next/server/app/artifact/[...path]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/favicon.ico/route.js.nft.json +1 -1
- package/.next/server/app/page/server-reference-manifest.json +63 -41
- package/.next/server/app/page.js +7 -7
- package/.next/server/app/page.js.nft.json +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app-paths-manifest.json +1 -0
- package/.next/server/chunks/0d-b_next_dist_server_app-render_after-task-async-storage_external_0-exn7p.js +3 -0
- package/.next/server/chunks/{[root-of-the-server]__0t_dqaj._.js → [root-of-the-server]__0-npkh_._.js} +1 -1
- package/.next/server/chunks/[root-of-the-server]__005var5._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__019dx9f._.js +2 -2
- package/.next/server/chunks/[root-of-the-server]__02va5wz._.js +3 -0
- package/.next/server/chunks/{[root-of-the-server]__1mzp_el._.js → [root-of-the-server]__04_8spk._.js} +2 -2
- package/.next/server/chunks/[root-of-the-server]__06t77t4._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__0bed6hu._.js +4 -4
- package/.next/server/chunks/[root-of-the-server]__0cro2dz._.js +5 -0
- package/.next/server/chunks/[root-of-the-server]__0emr6go._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0le4d-p._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__0m8ywyo._.js +5 -5
- package/.next/server/chunks/{[root-of-the-server]__113fqg5._.js → [root-of-the-server]__0p32jfz._.js} +3 -3
- package/.next/server/chunks/[root-of-the-server]__0phdgco._.js +4 -4
- package/.next/server/chunks/[root-of-the-server]__0wvgrsl._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__11j52t0._.js +5 -0
- package/.next/server/chunks/{[root-of-the-server]__0j_n5l3._.js → [root-of-the-server]__1692zrv._.js} +2 -2
- package/.next/server/chunks/[root-of-the-server]__16thabu._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__173nhwf._.js +3 -3
- package/.next/server/chunks/[root-of-the-server]__1bn73ih._.js +10 -0
- package/.next/server/chunks/[root-of-the-server]__1bqhuh9._.js +4 -4
- package/.next/server/chunks/[root-of-the-server]__1ccon1w._.js +10 -0
- package/.next/server/chunks/[root-of-the-server]__1cqizfq._.js +1 -1
- package/.next/server/chunks/{[root-of-the-server]__1u_qvc7._.js → [root-of-the-server]__1fboj2j._.js} +2 -2
- package/.next/server/chunks/{[root-of-the-server]__1dow0bz._.js → [root-of-the-server]__1oli73c._.js} +2 -2
- package/.next/server/chunks/[root-of-the-server]__1txedx6._.js +4 -4
- package/.next/server/chunks/[root-of-the-server]__1untqv8._.js +5 -0
- package/.next/server/chunks/_0-73of8._.js +55 -0
- package/.next/server/chunks/{_2050gwn._.js → _00_584r._.js} +66 -28
- package/.next/server/chunks/{_0y8is-s._.js → _03a0897._.js} +1 -1
- package/.next/server/chunks/_05h2cii._.js +1 -1
- package/.next/server/chunks/_06mxlgn._.js +1 -1
- package/.next/server/chunks/_0a351g7._.js +1 -1
- package/.next/server/chunks/{_0hin38_._.js → _0khihjk._.js} +5 -5
- package/.next/server/chunks/_0kjjmag._.js +1 -1
- package/.next/server/chunks/{_1t8fv7b._.js → _0n74zsf._.js} +5 -5
- package/.next/server/chunks/_0nn99o2._.js +3 -0
- package/.next/server/chunks/_0pppbb5._.js +10 -6
- package/.next/server/chunks/{_1icgbi8._.js → _0rnf-6n._.js} +5 -5
- package/.next/server/chunks/_0u10wmw._.js +55 -0
- package/.next/server/chunks/{_0kl37zl._.js → _0vnutv9._.js} +1 -1
- package/.next/server/chunks/_0wp4le3._.js +1 -1
- package/.next/server/chunks/_0y5fg-x._.js +1 -1
- package/.next/server/chunks/_106co2o._.js +3 -0
- package/.next/server/chunks/_12bbv5i._.js +10 -6
- package/.next/server/chunks/_15hq89o._.js +1 -1
- package/.next/server/chunks/_15q1pig._.js +1 -1
- package/.next/server/chunks/_18-1wcc._.js +55 -0
- package/.next/server/chunks/_19wg5yn._.js +138 -0
- package/.next/server/chunks/_1_5mnq4._.js +18 -0
- package/.next/server/chunks/_1bt95p9._.js +55 -0
- package/.next/server/chunks/_1cbk7ms._.js +9 -9
- package/.next/server/chunks/_1drgfx4._.js +18 -0
- package/.next/server/chunks/_1drv2et._.js +10 -6
- package/.next/server/chunks/{_10qam6o._.js → _1e48czp._.js} +5 -5
- package/.next/server/chunks/{_1skgy7b._.js → _1kg70wc._.js} +5 -5
- package/.next/server/chunks/_1php4eq._.js +1 -1
- package/.next/server/chunks/_1rysr-r._.js +10 -0
- package/.next/server/chunks/_1u3rwbr._.js +3 -0
- package/.next/server/chunks/_1x7p319._.js +1 -1
- package/.next/server/chunks/_1yuv4vp._.js +1 -1
- package/.next/server/chunks/_next-internal_server_app_api_bot_notes_route_actions_0qcsyu7.js +3 -0
- package/.next/server/chunks/config_ts_1g4sz5o._.js +1 -1
- package/.next/server/chunks/features_bot_task_query_ts_11xuzl3._.js +1 -1
- package/.next/server/chunks/{node_modules_consola_dist_chunks_prompt_mjs_0228f43._.js → node_modules_consola_dist_chunks_prompt_mjs_02s3hjt._.js} +1 -1
- package/.next/server/chunks/{node_modules_consola_dist_chunks_prompt_mjs_0ir-vo2._.js → node_modules_consola_dist_chunks_prompt_mjs_06067w6._.js} +1 -1
- package/.next/server/chunks/{node_modules_consola_dist_chunks_prompt_mjs_0otw8ef._.js → node_modules_consola_dist_chunks_prompt_mjs_096ais_._.js} +1 -1
- package/.next/server/chunks/{node_modules_consola_dist_chunks_prompt_mjs_0tf290y._.js → node_modules_consola_dist_chunks_prompt_mjs_0a1rd09._.js} +1 -1
- package/.next/server/chunks/node_modules_consola_dist_chunks_prompt_mjs_0gzvgfv._.js +3 -0
- package/.next/server/chunks/node_modules_consola_dist_chunks_prompt_mjs_0j61-ma._.js +3 -0
- package/.next/server/chunks/node_modules_consola_dist_chunks_prompt_mjs_0tvkfgh._.js +3 -0
- package/.next/server/chunks/node_modules_consola_dist_chunks_prompt_mjs_11zjo-1._.js +3 -0
- package/.next/server/chunks/node_modules_consola_dist_chunks_prompt_mjs_1pycqsq._.js +3 -0
- package/.next/server/chunks/node_modules_consola_dist_chunks_prompt_mjs_1tpvamf._.js +3 -0
- package/.next/server/chunks/node_modules_consola_dist_chunks_prompt_mjs_1y9-wcr._.js +3 -0
- package/.next/server/chunks/ssr/[externals]__0dizgek._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0f6s48x._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0m1b5ky._.js +3 -0
- package/.next/server/chunks/ssr/{[root-of-the-server]__0dfwvr4._.js → [root-of-the-server]__0un-erv._.js} +2 -2
- package/.next/server/chunks/ssr/[root-of-the-server]__1-mnhyd._.js +5 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__1bww500._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__1mzi-ju._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__1qfqvmg._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__1vcdast._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__1xwnu-h._.js +3 -0
- package/.next/server/chunks/ssr/_03webdr._.js +3 -0
- package/.next/server/chunks/ssr/{_0gd4vaa._.js → _040sk32._.js} +71 -29
- package/.next/server/chunks/ssr/_077-g6s._.js +1 -1
- package/.next/server/chunks/ssr/{_0lc_7c8._.js → _09ja_w1._.js} +2 -2
- package/.next/server/chunks/ssr/{_1dcxzqe._.js → _0f_b_9s._.js} +2 -2
- package/.next/server/chunks/ssr/_0h7zdni._.js +1 -1
- package/.next/server/chunks/ssr/_0lu1n_x._.js +3 -0
- package/.next/server/chunks/ssr/_0sf1isi._.js +1 -1
- package/.next/server/chunks/ssr/_0su6_08._.js +3 -0
- package/.next/server/chunks/ssr/{_0nso8tp._.js → _0w5bgak._.js} +2 -2
- package/.next/server/chunks/ssr/{_19_o9d-._.js → _0x_nu5e._.js} +2 -2
- package/.next/server/chunks/ssr/_1-teee5._.js +3 -3
- package/.next/server/chunks/ssr/_13punpm._.js +1 -1
- package/.next/server/chunks/ssr/{_0ay6b01._.js → _1ciyoo3._.js} +2 -2
- package/.next/server/chunks/ssr/_1e-dgz0._.js +1 -1
- package/.next/server/chunks/ssr/_1fq7zgb._.js +1 -1
- package/.next/server/chunks/ssr/{_0cvjbuz._.js → _1g6l4uj._.js} +2 -2
- package/.next/server/chunks/ssr/{_0q_2f2x._.js → _1lip4th._.js} +2 -2
- package/.next/server/chunks/ssr/_1m3bsfr._.js +3 -0
- package/.next/server/chunks/ssr/_1mznrxk._.js +1 -1
- package/.next/server/chunks/ssr/_1ruzehw._.js +3 -0
- package/.next/server/chunks/ssr/_1vyd1ji._.js +3 -0
- package/.next/server/chunks/ssr/features_bot_components_bot-setting_tsx_01ajft6._.js +2 -2
- package/.next/server/chunks/ssr/features_config_components_14jqgy4._.js +1 -1
- package/.next/server/chunks/ssr/features_config_components_config-setting_tsx_0xfwqdg._.js +1 -1
- package/.next/server/chunks/ssr/features_connectors_components_mcp-setting_tsx_0jmbgvp._.js +1 -1
- package/.next/server/chunks/ssr/features_memory_components_memory-setting_tsx_0oa43sw._.js +1 -1
- package/.next/server/chunks/ssr/lib_realtime_12wg_dd._.js +27 -0
- package/.next/server/chunks/ssr/lib_realtime_15h_v1v._.js +27 -0
- package/.next/server/chunks/ssr/{node_modules_108wd2o._.js → node_modules_004qlr4._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_1ub40gk._.js → node_modules_01qnv-a._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_1y8_3vg._.js → node_modules_04n7mjs._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_0_j7-g4._.js → node_modules_08d8bke._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_0y2-av4._.js → node_modules_09xhur7._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_043-236._.js → node_modules_0_n241r._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_0ls96je._.js → node_modules_0iz1rzd._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_0xwx4u-._.js → node_modules_0kl7-tn._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_1jatz7w._.js → node_modules_0kxz4gt._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_1t0y5jt._.js → node_modules_0lrjk5t._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_13f2md6._.js → node_modules_0m93zeg._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_1nhw9qg._.js → node_modules_0n1kj4p._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_1k29j1j._.js → node_modules_0ndvxub._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_16i4o_3._.js → node_modules_13r44jq._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_0fbw5-u._.js → node_modules_17lrt3y._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_1d-is1o._.js → node_modules_18_dk7_._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_1hn_sd5._.js → node_modules_19dp7ko._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_20ynonm._.js → node_modules_1dwguw_._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_00d6675._.js → node_modules_1hd-5tv._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_1ee8gav._.js → node_modules_1hn8z1f._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_0bue6gy._.js → node_modules_1n5ygqe._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_1_588_4._.js → node_modules_1q0p85z._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_0ipn1ho._.js → node_modules_1toafc-._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_0_fvxnt._.js → node_modules_1xyd7ov._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_1v0077l._.js → node_modules_1zu988w._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_06kvvuo._.js → node_modules_20yebtj._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_@mermaid-js_parser_dist_chunks_mermaid-parser_core_092s8nx._.js → node_modules_@mermaid-js_parser_dist_chunks_mermaid-parser_core_0m9a4y0._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_@mermaid-js_parser_dist_chunks_mermaid-parser_core_1nvexgu._.js → node_modules_@mermaid-js_parser_dist_chunks_mermaid-parser_core_13w_wy9._.js} +1 -1
- package/.next/server/chunks/ssr/node_modules_consola_dist_chunks_prompt_mjs_05cwqv2._.js +47 -0
- package/.next/server/middleware-build-manifest.js +3 -3
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.js +1 -1
- package/.next/server/server-reference-manifest.json +64 -42
- package/.next/static/chunks/05b6nx_o3_f_n.js +1 -0
- package/.next/static/chunks/{3aquirz5h71da.js → 07kl352c-lvcz.js} +1 -1
- package/.next/static/chunks/0dmns-gi0raa4.js +1 -0
- package/.next/static/chunks/0oc4_xoia77dg.css +1 -0
- package/.next/static/chunks/0pheo8m3a-rzi.js +1 -0
- package/.next/static/chunks/{2ihkf6l2jowo9.js → 18vhba44l1fc9.js} +3 -3
- package/.next/static/chunks/19i8h2t-5evjx.js +1 -0
- package/.next/static/chunks/{1gy3bbv7usnjo.js → 1c5fcj473025q.js} +1 -1
- package/.next/static/chunks/1pi_hbmjw-f-z.js +1 -0
- package/.next/static/chunks/{0tydnn2kybibk.js → 1twt6k09vg4np.js} +1 -1
- package/.next/static/chunks/{21rk8w7bda-su.js → 28gotuisldmom.js} +1 -1
- package/.next/static/chunks/{3xxa2j56-f3nm.js → 2998p0y7k1c8z.js} +1 -1
- package/.next/static/chunks/2l233xfycjpd8.js +1 -0
- package/.next/static/chunks/2p5n7pa3c40t-.js +2 -0
- package/.next/static/chunks/2ru1q132af7h7.js +1 -0
- package/.next/static/chunks/{2fq_86jvq9ymq.js → 2t8wqycwg3y04.js} +2 -2
- package/.next/static/chunks/32z_ypgtchw48.js +1 -0
- package/.next/static/chunks/{247d-r95j8xs0.js → 33pyjb3xd1iez.js} +1 -1
- package/.next/static/chunks/3786h5vayt80-.js +28 -0
- package/.next/static/chunks/3_h9txt3tq8t8.js +28 -0
- package/.next/static/chunks/{1khakdu_iuedc.js → 3ard_noqapnw1.js} +1 -1
- package/.next/static/chunks/{1fr5m75pwtyic.js → 3omud5xunrk1f.js} +1 -1
- package/.next/static/chunks/42dnrkbph9e-1.js +1 -0
- package/app/api/events/app-event.client.ts +24 -0
- package/app/api/events/app-event.server.ts +45 -0
- package/app/api/events/app-event.ts +44 -0
- package/app/api/llm-model/catalog/route.ts +12 -0
- package/app/api/llm-model/route.ts +21 -0
- package/app/api/query-key.ts +144 -0
- package/app/api/thursday/tool-call/route.ts +67 -0
- package/components/ui/button-group.tsx +45 -0
- package/components/ui/custom-icon.tsx +259 -0
- package/components/ui/dropdown-menu.tsx +271 -0
- package/components/ui/folded-text.tsx +68 -0
- package/components/ui/input-group.tsx +157 -0
- package/components/ui/json-view.tsx +240 -0
- package/components/ui/shiny-text.tsx +141 -0
- package/components/ui/text-type.tsx +213 -0
- package/components/ui/theme-sync.tsx +9 -0
- package/database/migrations/{20260908030742_rainy_marvel_zombies → 20260909060813_optimal_sabretooth}/migration.sql +7 -0
- package/database/migrations/{20260908030742_rainy_marvel_zombies → 20260909060813_optimal_sabretooth}/snapshot.json +54 -1
- package/database/migrations/20260909063821_bitter_tenebrous/migration.sql +1 -0
- package/database/migrations/20260909063821_bitter_tenebrous/snapshot.json +1285 -0
- package/docs/how-it-works.md +59 -0
- package/docs/images/keeps-going.png +0 -0
- package/docs/images/task-thread.png +0 -0
- package/docs/images/two-minds.png +0 -0
- package/features/ai/load-tools.ts +55 -5
- package/features/ai/prompts/bot.prompt.ts +121 -26
- package/features/ai/prompts/memory-tidy.prompt.ts +7 -1
- package/features/ai/prompts/prompt-helper.ts +31 -5
- package/features/ai/prompts/thursday.prompt.ts +2 -0
- package/features/ai/tools/bot.tool.ts +37 -18
- package/features/ai/tools/mcp.tool.ts +5 -5
- package/features/ai/tools/memory.tool.ts +17 -10
- package/features/ai/tools/studio.tool.ts +5 -5
- package/features/ai/tools/tool-name.ts +2 -0
- package/features/ai/tools/workspace.tool.ts +33 -5
- package/features/bot/bot.action.ts +31 -4
- package/features/bot/bot.notes.ts +120 -0
- package/features/bot/bot.query.ts +56 -1
- package/features/bot/bot.run.ts +43 -3
- package/features/bot/bot.runner.ts +94 -20
- package/features/bot/bot.schema.ts +17 -0
- package/features/bot/components/bot-room.tsx +405 -306
- package/features/bot/components/bot-setting.tsx +123 -20
- package/features/bot/task.query.ts +18 -5
- package/features/memory/components/memory-setting.tsx +11 -2
- package/features/memory/memory.query.ts +9 -2
- package/features/memory/memory.schema.ts +30 -0
- package/features/skills/components/skills-setting.tsx +9 -1
- package/features/workspace/workspace.ts +136 -3
- package/hooks/use-draft.ts +37 -0
- package/hooks/use-hotkey.ts +105 -0
- package/hooks/use-object-state.ts +51 -0
- package/hooks/use-on-visible.ts +72 -0
- package/hooks/use-theme.ts +106 -0
- package/hooks/use-wake-word.ts +262 -0
- package/lib/realtime/realtime.driver.ts +34 -1
- package/lib/realtime/realtime.protocol.ts +6 -0
- package/lib/sandbox.ts +9 -1
- package/lib/tokens.ts +19 -0
- package/package.json +1 -1
- package/.next/server/chunks/[root-of-the-server]__02kt8yn._.js +0 -10
- package/.next/server/chunks/[root-of-the-server]__0h59di-._.js +0 -5
- package/.next/server/chunks/[root-of-the-server]__0qjqtwo._.js +0 -5
- package/.next/server/chunks/[root-of-the-server]__0yk6s3w._.js +0 -5
- package/.next/server/chunks/[root-of-the-server]__0z3gelv._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__11w_7_3._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__1_0q_9w._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__1gmn1cs._.js +0 -10
- package/.next/server/chunks/_0fzqt2y._.js +0 -100
- package/.next/server/chunks/_0jgm3b8._.js +0 -55
- package/.next/server/chunks/_0ks6_sg._.js +0 -55
- package/.next/server/chunks/_0tzfesa._.js +0 -3
- package/.next/server/chunks/_0zmestz._.js +0 -55
- package/.next/server/chunks/_12nr4xc._.js +0 -3
- package/.next/server/chunks/_1hzrsvg._.js +0 -55
- package/.next/server/chunks/_1uj4_io._.js +0 -10
- package/.next/server/chunks/_1yldgo4._.js +0 -55
- package/.next/server/chunks/features_0scmr4i._.js +0 -3
- package/.next/server/chunks/features_bot_bot_query_ts_12mgkl2._.js +0 -3
- package/.next/server/chunks/node_modules_consola_dist_chunks_prompt_mjs_0ykklj0._.js +0 -3
- package/.next/server/chunks/node_modules_consola_dist_chunks_prompt_mjs_1ryg3wh._.js +0 -3
- package/.next/server/chunks/node_modules_consola_dist_chunks_prompt_mjs_1vwbnq_._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__01id-v3._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__0b-0i32._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__185grso._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__1minz8_._.js +0 -3
- package/.next/server/chunks/ssr/_0j4v8of._.js +0 -3
- package/.next/server/chunks/ssr/_0l81bzy._.js +0 -3
- package/.next/server/chunks/ssr/_10uvw3l._.js +0 -3
- package/.next/server/chunks/ssr/_1jbv7m1._.js +0 -3
- package/.next/server/chunks/ssr/lib_realtime_0aetuyp._.js +0 -24
- package/.next/server/chunks/ssr/lib_realtime_18k_aj-._.js +0 -24
- package/.next/server/chunks/ssr/node_modules_zod_v4_classic_errors_05xv7vp.js +0 -3
- package/.next/static/chunks/0yysv1gzin17t.js +0 -1
- package/.next/static/chunks/1keib_gt066gc.js +0 -1
- package/.next/static/chunks/28g42tw8tsvhd.js +0 -1
- package/.next/static/chunks/2cwjgkt_hoyhj.js +0 -22
- package/.next/static/chunks/2rbf1fpd8n80-.js +0 -22
- package/.next/static/chunks/2ukj8k69y89um.js +0 -1
- package/.next/static/chunks/2wngeetfnzxkp.js +0 -2
- package/.next/static/chunks/388-t2v72jh39.css +0 -1
- package/.next/static/chunks/3fqvc0cg-atq_.js +0 -1
- package/.next/static/chunks/3p4egvfjxpatb.js +0 -1
- package/.next/static/chunks/3qe1w1ei-huhl.js +0 -1
- package/.next/static/chunks/3y40riycdip-i.js +0 -1
- package/.next/static/chunks/45a6zbtkelph9.js +0 -1
- /package/.next/static/{X34BUd9bfdH27ripuwwBm → YR4NWcDDuzwLbTTU7U7Vr}/_buildManifest.js +0 -0
- /package/.next/static/{X34BUd9bfdH27ripuwwBm → YR4NWcDDuzwLbTTU7U7Vr}/_clientMiddlewareManifest.js +0 -0
- /package/.next/static/{X34BUd9bfdH27ripuwwBm → YR4NWcDDuzwLbTTU7U7Vr}/_ssgManifest.js +0 -0
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
module.exports=[707196,a=>{"use strict";var b=a.i(730983),c=a.i(100031);let d=(0,b.realtimeSession)({transport:({credential:a,audio:b,on:d})=>(0,c.createWebRtcTransport)({url:"https://api.openai.com/v1/realtime/calls",secret:a.value,label:"OpenAI",audio:b,on:d}),sessionUpdate:a=>({type:"session.update",session:{type:"realtime",model:a.model,instructions:a.instructions,audio:{input:{transcription:{model:"gpt-4o-mini-transcribe"}},output:{voice:a.voice}},tools:(0,b.toFunctionTools)(a.tools)}})});a.s(["createOpenAiSession",0,d])},228722,a=>{"use strict";let b={echoCancellation:!0,noiseSuppression:!0,autoGainControl:!0};async function c(a){let c=await navigator.mediaDevices.getUserMedia({audio:b}),g=new AudioContext({sampleRate:24e3});try{var h,i,j;await g.audioWorklet.addModule(f??=URL.createObjectURL(new Blob([e],{type:"application/javascript"})));let b=g.createMediaStreamSource(c),k=new AudioWorkletNode(g,d);k.port.onmessage=b=>{let c=b.data,d=new Int16Array(c.length);for(let a=0;a<c.length;a++){let b=Math.max(-1,Math.min(1,c[a]));d[a]=b<0?32768*b:32767*b}a(d)},b.connect(k);let l=g.createGain();return l.gain.value=0,k.connect(l).connect(g.destination),await g.resume(),h=c,i=g,j=k,{stream:h,setMuted(a){for(let b of h.getAudioTracks())b.enabled=!a},close(){for(let a of(j.port.onmessage=null,h.getTracks()))a.stop();i.close()}}}catch(a){for(let a of c.getTracks())a.stop();throw g.close(),a}}let d="voice-capture",e=`
|
|
2
|
-
class VoiceCapture extends AudioWorkletProcessor {
|
|
3
|
-
constructor() {
|
|
4
|
-
super();
|
|
5
|
-
this.frame = new Float32Array(1024);
|
|
6
|
-
this.filled = 0;
|
|
7
|
-
}
|
|
8
|
-
process(inputs) {
|
|
9
|
-
const input = inputs[0] && inputs[0][0];
|
|
10
|
-
if (!input) return true;
|
|
11
|
-
for (let i = 0; i < input.length; i++) {
|
|
12
|
-
this.frame[this.filled++] = input[i];
|
|
13
|
-
if (this.filled === this.frame.length) {
|
|
14
|
-
this.port.postMessage(this.frame.slice());
|
|
15
|
-
this.filled = 0;
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
return true;
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
registerProcessor("${d}", VoiceCapture);
|
|
22
|
-
`,f=null;a.s(["MICROPHONE_CONSTRAINTS",0,b,"PCM_SAMPLE_RATE",0,24e3,"createPcmPlayer",0,function(a,b){let{context:c,analyser:d}=a.speaker(),e=0,f=new Set;return{push(a){if(0===a.length)return;let g=c.createBuffer(1,a.length,24e3),h=g.getChannelData(0);for(let b=0;b<a.length;b++)h[b]=a[b]/32768;let i=c.createBufferSource();i.buffer=g,i.connect(d),i.onended=()=>{f.delete(i),0===f.size&&b()},e=Math.max(e,c.currentTime+.06),i.start(e),e+=g.duration,f.add(i)},stop(){for(let a of f){a.onended=null;try{a.stop()}catch{}}f.clear(),e=0},get speaking(){return f.size>0}}},"decodePcm",0,function(a){let b=atob(a),c=new Uint8Array(b.length);for(let a=0;a<b.length;a++)c[a]=b.charCodeAt(a);return new Int16Array(c.buffer,0,c.length>>1)},"encodePcm",0,function(a){let b=new Uint8Array(a.buffer,a.byteOffset,a.byteLength),c="";for(let a=0;a<b.length;a+=32768)c+=String.fromCharCode(...b.subarray(a,a+32768));return btoa(c)},"openMicrophone",0,c])},730983,a=>{"use strict";var b=a.i(497895);a.s(["realtimeSession",0,function(a){return({credential:c,setup:d,audio:e,on:f})=>{let g=!1,h=null,i=null,j=[],k=new Map,l=new Set,m=(a,b)=>{k.has(a)||(k.set(a,j.length),j.push({id:a,role:b,text:""}))},n=(a,b)=>{let c=j[a];c.text.trim()&&f.turn({...c,seq:a,done:b})},o=(a,b,c,d)=>{m(a,b);let e=k.get(a),f=j[e].text,g="append"===d?f+c:c;g!==f&&(j[e]={...j[e],text:g},l.has(a)||n(e,!1))},p=a=>{let b=k.get(a);void 0===b||l.has(a)||j[b].text.trim()&&(l.add(a),n(b,!0))},q=!1,r=!1,s=!1,t=!1,u=null,v=null,w=new Map,x=0,y=!1,z=[],A=[],B="",C=()=>{u&&clearTimeout(u),u=null},D=()=>{v&&clearTimeout(v),v=null},E=()=>{if(g)return;let a=w.size>0||y||x>0,b={speaking:q,hearing:r,tools:a?z:[]},c=JSON.stringify(b);if(c!==B&&(B=c,f.activity(b)),r||s||u||q||w.size>0)return;let d=x>0;if(d||0!==A.length){for(let a of A.splice(0))F.send({type:"conversation.item.create",item:{type:"message",role:"system",content:[{type:"input_text",text:a}]}});x=0,y=d,s=!0,t=!0,D(),v=setTimeout(()=>{v=null,t&&(t=!1,s=!1,f.warn("The voice API never answered a response we asked for."),E())},5e3),F.send({type:"response.create"})}},F=a.transport({credential:c,setup:d,audio:e,on:{event:a=>{switch(a.type){case"session.updated":h?.resolve();break;case"error":{let b=a.error?.message??"The voice API reported an error";t&&(t=!1,s=!1,D()),h?h.reject(Error(b)):f.warn(b);break}case"input_audio_buffer.speech_started":r=!0,C();break;case"input_audio_buffer.speech_stopped":r=!1,C(),u=setTimeout(()=>{u=null,E()},1500);break;case"input_audio_buffer.committed":m(a.item_id,"user");break;case"conversation.item.added":case"conversation.item.created":"message"===a.item.type&&"system"!==a.item.role&&m(a.item.id,a.item.role);break;case"response.output_item.added":"message"===a.item.type?m(a.item.id,"assistant"):"function_call"===a.item.type&&m(a.item.id,"tool");break;case"conversation.item.input_audio_transcription.delta":o(a.item_id,"user",a.delta??"","append");break;case"conversation.item.input_audio_transcription.updated":o(a.item_id,"user",a.transcript,"replace");break;case"conversation.item.input_audio_transcription.completed":o(a.item_id,"user",a.transcript??"","replace"),p(a.item_id);break;case"response.output_audio_transcript.delta":o(a.item_id,"assistant",a.delta,"append");break;case"response.output_audio_transcript.done":a.transcript&&o(a.item_id,"assistant",a.transcript,"replace"),p(a.item_id);break;case"response.created":s=!0,t=!1,D(),C();break;case"response.done":var c;for(let b of(s=!1,y=!1,"failed"===a.response.status&&f.warn((c=a.response,c.status_details?.error?.message??"The model could not finish answering")),a.response.output??[]))"message"===b.type&&p(b.id);for(let[a,b]of j.entries())"user"!==b.role||l.has(b.id)||n(a,!0);break;case"response.function_call_arguments.done":m(a.item_id,"tool");{let b=k.get(a.item_id);j[b]={...j[b],tool:a.name,text:a.arguments||"{}"}}p(a.item_id),0!==w.size||y||(z=[]),z=[...z,a.name],w.set(a.call_id,a.name),f.runTool({id:a.call_id,name:a.name,arguments:a.arguments}).catch(a=>`Error: ${(0,b.errorToString)(a)}`).then(b=>{g||(F.send({type:"conversation.item.create",item:{type:"function_call_output",call_id:a.call_id,output:b}}),w.delete(a.call_id),x+=1,E())})}E()},playing:a=>{q=a,a&&(y=!1),E()},dropped:a=>{h?h.reject(Error(a)):f.failed(a)}}});return{async connect(){if(await F.connect(),g)throw Error("Hung up before the session opened.");F.send(a.sessionUpdate(d)),await new Promise((a,b)=>{h={resolve:a,reject:b},i=setTimeout(a,5e3)}).finally(()=>{h=null,i&&clearTimeout(i),i=null})},close(){for(let a of j)p(a.id);g=!0,C(),D(),h?.reject(Error("Hung up before the session opened.")),F.close()},mute:a=>F.mute(a),say(a){g||(A.push(a),E())}}}},"toFunctionTools",0,a=>a.map(({name:a,description:b,parameters:c})=>({type:"function",name:a,description:b,parameters:c}))])},100031,a=>{"use strict";var b=a.i(228722);async function c(a,b){let c=await a.text().catch(()=>"");try{let a=JSON.parse(c)?.error?.message;if("string"==typeof a&&a)return a}catch{}return`${b} refused the call (${a.status})`}a.s(["createSocketTransport",0,function({url:a,protocols:c,label:d,audio:e,on:f}){let g=null,h=null,i=null,j=!1,k=!1,l=!1,m=!1,n=null,o=a=>{m!==a&&(m=a,f.playing(a))},p=a=>{g?.readyState===WebSocket.OPEN&&g.send(JSON.stringify(a))};return{async connect(){i=(0,b.createPcmPlayer)(e,()=>{n=null,o(!1)});let m=new Promise((b,e)=>{let h=new WebSocket(a,c);g=h,h.onopen=()=>{l=!0,b(h)};let i=a=>l?void(!j&&!k&&(k=!0,f.dropped(a))):e(Error(a));h.onerror=()=>i(`Could not reach ${d}`),h.onclose=a=>i(a.reason||`The connection to ${d} closed (${a.code})`)}),q=(0,b.openMicrophone)(a=>p({type:"input_audio_buffer.append",audio:(0,b.encodePcm)(a)})).then(a=>{j?a.close():(h=a,e.hear?.(a.stream))},a=>{throw Error(a instanceof Error?`Microphone unavailable — ${a.message}`:"Microphone unavailable")}),[r]=await Promise.all([m,q]);if(j)throw Error("Hung up before the call opened.");r.onmessage=a=>{let c;if("string"==typeof a.data){try{c=JSON.parse(a.data)}catch{return}var d=c;switch(d.type){case"response.output_audio.delta":{if(!i||!d.delta)break;let a=(0,b.decodePcm)(d.delta);n?.itemId!==d.item_id&&(n={itemId:d.item_id,contentIndex:d.content_index??0,startedAt:performance.now(),receivedMs:0}),n.receivedMs+=a.length/b.PCM_SAMPLE_RATE*1e3,i.push(a),o(!0);break}case"input_audio_buffer.speech_started":(()=>{if(!i?.speaking||!n)return;let a=Math.min(n.receivedMs,performance.now()-n.startedAt);p({type:"conversation.item.truncate",item_id:n.itemId,content_index:n.contentIndex,audio_end_ms:Math.max(0,Math.floor(a))}),i.stop(),n=null,o(!1)})()}f.event(d)}}},send:p,close:()=>{j=!0,i?.stop(),i=null,h?.close(),h=null;let a=g;g=null,a?.close()},mute(a){h?.setMuted(a)}}},"createWebRtcTransport",0,function({url:a,secret:d,label:e,audio:f,on:g}){let h=null,i=null,j=null,k=!1,l=!1,m=!1,n=!1,o=a=>{n!==a&&(n=a,g.playing(a))},p=a=>{for(let b of a?.getTracks()??[])b.stop()};return{async connect(){let n=new RTCPeerConnection;h=n;let q=n.createDataChannel("oai-events");i=q;let r=new Promise((a,b)=>{let c=a=>l?void(!k&&!m&&(m=!0,g.dropped(a))):b(Error(a));q.onopen=()=>{l=!0,a()},q.onclose=()=>c(`The connection to ${e} closed`),q.onerror=()=>c(`The connection to ${e} dropped`),n.onconnectionstatechange=()=>{let a=n.connectionState;("failed"===a||"closed"===a)&&c(`Could not reach ${e}`)}});q.onmessage=a=>{let b;if("string"==typeof a.data){try{b=JSON.parse(a.data)}catch{return}switch(b.type){case"output_audio_buffer.started":o(!0);break;case"output_audio_buffer.stopped":case"output_audio_buffer.cleared":o(!1)}g.event(b)}},n.ontrack=a=>{let[b]=a.streams;f.element.srcObject=b,f.listen(b)};let s=await navigator.mediaDevices.getUserMedia({audio:b.MICROPHONE_CONSTRAINTS});if(k)throw p(s),Error("Hung up before the call opened.");j=s,f.hear?.(s),n.addTrack(s.getAudioTracks()[0],s);let t=await n.createOffer();await n.setLocalDescription(t);let u=await fetch(a,{method:"POST",body:t.sdp,headers:{"Content-Type":"application/sdp",Authorization:`Bearer ${d}`}});if(!u.ok)throw Error(await c(u,e));await n.setRemoteDescription({type:"answer",sdp:await u.text()}),await r},send(a){i?.readyState==="open"&&i.send(JSON.stringify(a))},close:()=>{k=!0,p(j),j=null,i?.close(),i=null,h?.close(),h=null,f.element.srcObject=null},mute(a){for(let b of j?.getAudioTracks()??[])b.enabled=!a}}}])}];
|
|
23
|
-
|
|
24
|
-
//# sourceMappingURL=lib_realtime_18k_aj-._.js.map
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[975160,849660,185679,313399,a=>{"use strict";var b;let c;function d(a){return a}function e(a){return a}function f(){return a=>a}function g(a){}function h(a){throw Error("Unexpected value in exhaustive check")}function i(a){}function j(a){let b=Object.values(a).filter(a=>"number"==typeof a);return Object.entries(a).filter(([a,c])=>-1===b.indexOf(+a)).map(([a,b])=>b)}function k(a,b="|"){return a.map(a=>O(a)).join(b)}function l(a,b){return"bigint"==typeof b?b.toString():b}function m(a){return{get value(){{let b=a();return Object.defineProperty(this,"value",{value:b}),b}}}}function n(a){return null==a}function o(a){let b=+!!a.startsWith("^"),c=a.endsWith("$")?a.length-1:a.length;return a.slice(b,c)}function p(a,b){let c=a/b,d=Math.round(c),e=4*Number.EPSILON*Math.max(Math.abs(c),1);return Math.abs(c-d)<e?0:c-d}a.s(["$ZodAsyncError",()=>aF,"$ZodEncodeError",()=>aG,"$brand",()=>aE,"$constructor",()=>aD,"NEVER",()=>aA,"config",()=>aI,"globalConfig",()=>aH],185679),a.s(["BIGINT_FORMAT_RANGES",()=>R,"CONSTANT_CATCH",()=>ay,"Class",()=>aq,"NUMBER_FORMAT_RANGES",()=>Q,"aborted",()=>Z,"allowsEval",()=>D,"assert",()=>i,"assertEqual",()=>d,"assertIs",()=>g,"assertNever",()=>h,"assertNotEqual",()=>e,"assignProp",()=>t,"attachSchema",()=>ab,"base64ToUint8Array",()=>ak,"base64urlToUint8Array",()=>am,"cached",()=>m,"captureStackTrace",()=>B,"cleanEnum",()=>aj,"cleanRegex",()=>o,"clone",()=>L,"cloneDef",()=>v,"codePointLength",()=>af,"constantCatch",()=>az,"createTransparentProxy",()=>N,"defineLazy",()=>r,"defineLazyInternal",()=>aw,"esc",()=>z,"escapeRegex",()=>K,"explicitlyAborted",()=>$,"extend",()=>U,"finalizeIssue",()=>ac,"floatSafeRemainder",()=>p,"getElementAtPath",()=>w,"getEnumValues",()=>j,"getLengthableOrigin",()=>ag,"getParsedType",()=>H,"getSizableOrigin",()=>ad,"hexToUint8Array",()=>ao,"hide",()=>at,"installLazyProp",()=>ax,"isObject",()=>C,"isPlainObject",()=>E,"issue",()=>ai,"joinValues",()=>k,"jsonStringifyReplacer",()=>l,"members",()=>ar,"merge",()=>W,"mergeDefs",()=>u,"normalizeParams",()=>M,"nullish",()=>n,"numKeys",()=>G,"objectClone",()=>s,"omit",()=>T,"optionalKeys",()=>P,"own",()=>as,"parsedType",()=>ah,"partial",()=>X,"pick",()=>S,"prefixIssues",()=>_,"primitiveTypes",()=>J,"promiseAllObject",()=>x,"propertyKeyTypes",()=>I,"randomString",()=>y,"required",()=>Y,"safeExtend",()=>V,"shallowClone",()=>F,"slugify",()=>A,"stringifyPrimitive",()=>O,"toZod",()=>f,"uint8ArrayToBase64",()=>al,"uint8ArrayToBase64url",()=>an,"uint8ArrayToHex",()=>ap,"unwrapMessage",()=>aa],849660);let q=Symbol("evaluating");function r(a,b,c){let d;Object.defineProperty(a,b,{get(){if(d!==q)return void 0===d&&(d=q,d=c()),d},set(c){Object.defineProperty(a,b,{value:c})},configurable:!0})}function s(a){return Object.create(Object.getPrototypeOf(a),Object.getOwnPropertyDescriptors(a))}function t(a,b,c){Object.defineProperty(a,b,{value:c,writable:!0,enumerable:!0,configurable:!0})}function u(...a){let b={};for(let c of a)Object.assign(b,Object.getOwnPropertyDescriptors(c));return Object.defineProperties({},b)}function v(a){return u(a._zod.def)}function w(a,b){return b?b.reduce((a,b)=>a?.[b],a):a}function x(a){let b=Object.keys(a);return Promise.all(b.map(b=>a[b])).then(a=>{let c={};for(let d=0;d<b.length;d++)c[b[d]]=a[d];return c})}function y(a=10){let b="abcdefghijklmnopqrstuvwxyz",c="";for(let d=0;d<a;d++)c+=b[Math.floor(Math.random()*b.length)];return c}function z(a){return JSON.stringify(a)}function A(a){return a.toLowerCase().trim().replace(/[^\w\s-]/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}let B="captureStackTrace"in Error?Error.captureStackTrace:(...a)=>{};function C(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}let D=m(()=>{if(aH.jitless||"u">typeof navigator&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{return Function(""),!0}catch(a){return!1}});function E(a){if(!1===C(a))return!1;let b=a.constructor;if(void 0===b||"function"!=typeof b)return!0;let c=b.prototype;return!1!==C(c)&&!1!==Object.prototype.hasOwnProperty.call(c,"isPrototypeOf")}function F(a){return E(a)?{...a}:Array.isArray(a)?[...a]:a instanceof Map?new Map(a):a instanceof Set?new Set(a):a}function G(a){let b=0;for(let c in a)Object.prototype.hasOwnProperty.call(a,c)&&b++;return b}let H=a=>{let b=typeof a;switch(b){case"undefined":return"undefined";case"string":return"string";case"number":return Number.isNaN(a)?"nan":"number";case"boolean":return"boolean";case"function":return"function";case"bigint":return"bigint";case"symbol":return"symbol";case"object":if(Array.isArray(a))return"array";if(null===a)return"null";if(a.then&&"function"==typeof a.then&&a.catch&&"function"==typeof a.catch)return"promise";if("u">typeof Map&&a instanceof Map)return"map";if("u">typeof Set&&a instanceof Set)return"set";if("u">typeof Date&&a instanceof Date)return"date";if("u">typeof File&&a instanceof File)return"file";return"object";default:throw Error(`Unknown data type: ${b}`)}},I=new Set(["string","number","symbol"]),J=new Set(["string","number","bigint","boolean","symbol","undefined"]);function K(a){return a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function L(a,b,c){let d=new a._zod.constr(b??a._zod.def);return(!b||c?.parent)&&(d._zod.parent=a),d}function M(a){if(!a)return{};if("string"==typeof a)return{error:()=>a};if(a?.message!==void 0){if(a?.error!==void 0)throw Error("Cannot specify both `message` and `error` params");a.error=a.message}return(delete a.message,"string"==typeof a.error)?{...a,error:()=>a.error}:a}function N(a){let b;return new Proxy({},{get:(c,d,e)=>(b??(b=a()),Reflect.get(b,d,e)),set:(c,d,e,f)=>(b??(b=a()),Reflect.set(b,d,e,f)),has:(c,d)=>(b??(b=a()),Reflect.has(b,d)),deleteProperty:(c,d)=>(b??(b=a()),Reflect.deleteProperty(b,d)),ownKeys:c=>(b??(b=a()),Reflect.ownKeys(b)),getOwnPropertyDescriptor:(c,d)=>(b??(b=a()),Reflect.getOwnPropertyDescriptor(b,d)),defineProperty:(c,d,e)=>(b??(b=a()),Reflect.defineProperty(b,d,e))})}function O(a){return"bigint"==typeof a?a.toString()+"n":"string"==typeof a?`"${a}"`:`${a}`}function P(a){return Object.keys(a).filter(b=>void 0!==a[b]._zod.optin&&"optional"===a[b]._zod.optout)}let Q={safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-0x80000000,0x7fffffff],uint32:[0,0xffffffff],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]},R={int64:[BigInt("-9223372036854775808"),BigInt("9223372036854775807")],uint64:[BigInt(0),BigInt("18446744073709551615")]};function S(a,b){let c=a._zod.def,d=c.checks;if(d&&d.length>0)throw Error(".pick() cannot be used on object schemas containing refinements");let e=u(a._zod.def,{get shape(){let a={};for(let d of Reflect.ownKeys(b)){if(!Object.prototype.hasOwnProperty.call(c.shape,d))throw Error(`Unrecognized key: "${String(d)}"`);b[d]&&t(a,d,c.shape[d])}return t(this,"shape",a),a},checks:[]});return L(a,e)}function T(a,b){let c=a._zod.def,d=c.checks;if(d&&d.length>0)throw Error(".omit() cannot be used on object schemas containing refinements");let e=u(a._zod.def,{get shape(){let d={...a._zod.def.shape};for(let a of Reflect.ownKeys(b)){if(!Object.prototype.hasOwnProperty.call(c.shape,a))throw Error(`Unrecognized key: "${String(a)}"`);b[a]&&delete d[a]}return t(this,"shape",d),d},checks:[]});return L(a,e)}function U(a,b){if(!E(b))throw Error("Invalid input to extend: expected a plain object");let c=a._zod.def.checks;if(c&&c.length>0){let c=a._zod.def.shape;for(let a of Reflect.ownKeys(b))if(void 0!==Object.getOwnPropertyDescriptor(c,a))throw Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}let d=u(a._zod.def,{get shape(){let c={...a._zod.def.shape,...b};return t(this,"shape",c),c}});return L(a,d)}function V(a,b){if(!E(b))throw Error("Invalid input to safeExtend: expected a plain object");let c=u(a._zod.def,{get shape(){let c={...a._zod.def.shape,...b};return t(this,"shape",c),c}});return L(a,c)}function W(a,b){if(!b?._zod?.def)throw Error("Invalid input to merge: expected an object schema. To merge a plain shape, use `.extend()`.");if(a._zod.def.checks?.length)throw Error(".merge() cannot be used on object schemas containing refinements. Use .safeExtend() instead.");let c=u(a._zod.def,{get shape(){let c={...a._zod.def.shape,...b._zod.def.shape};return t(this,"shape",c),c},get catchall(){return b._zod.def.catchall},checks:b._zod.def.checks??[]});return L(a,c)}function X(a,b,c,d="partial"){let e=b._zod.def.checks;if(e&&e.length>0)throw Error(`.${d}() cannot be used on object schemas containing refinements`);let f=u(b._zod.def,{get shape(){let d=b._zod.def.shape,e={...d};if(c)for(let b of Reflect.ownKeys(c)){if(!Object.prototype.hasOwnProperty.call(d,b))throw Error(`Unrecognized key: "${String(b)}"`);c[b]&&(e[b]=a?new a({type:"optional",innerType:d[b]}):d[b])}else for(let b of Reflect.ownKeys(d))e[b]=a?new a({type:"optional",innerType:d[b]}):d[b];return t(this,"shape",e),e},checks:[]});return L(b,f)}function Y(a,b,c){let d=u(b._zod.def,{get shape(){let d=b._zod.def.shape,e={...d};if(c)for(let b of Reflect.ownKeys(c)){if(!Object.prototype.hasOwnProperty.call(e,b))throw Error(`Unrecognized key: "${String(b)}"`);c[b]&&(e[b]=new a({type:"nonoptional",innerType:d[b]}))}else for(let b of Reflect.ownKeys(d))e[b]=new a({type:"nonoptional",innerType:d[b]});return t(this,"shape",e),e}});return L(b,d)}function Z(a,b=0){if(!0===a.aborted)return!0;for(let c=b;c<a.issues.length;c++)if(a.issues[c]?.continue!==!0)return!0;return!1}function $(a,b=0){if(!0===a.aborted)return!0;for(let c=b;c<a.issues.length;c++)if(a.issues[c]?.continue===!1)return!0;return!1}function _(a,b){return b.map(b=>(b.path??(b.path=[]),b.path.unshift(a),b))}function aa(a){return"string"==typeof a?a:a?.message}function ab(a,b,c){var d;for(let e=b;e<a.length;e++)(d=a[e]).schema??(d.schema=c)}function ac(a,b,c){let d=a.inst?._zod?.traits;d?.has("$ZodType")&&(d.has("$ZodCheck")?a.schema??(a.schema=a.inst):a.schema=a.inst);let e=a.schema!==a.inst?a.schema?._zod.def?.error:void 0,f=a.message?a.message:aa(a.inst?._zod.def?.error?.(a))??aa(e?.(a))??aa(b?.error?.(a))??aa(c.customError?.(a))??aa(c.localeError?.(a))??"Invalid input",{inst:g,schema:h,continue:i,input:j,...k}=a;return k.path??(k.path=[]),k.message=f,b?.reportInput&&(k.input=j),k}function ad(a){return a instanceof Set?"set":a instanceof Map?"map":a instanceof File?"file":"unknown"}let ae=/[\uD800-\uDBFF]/;function af(a){let b=a.length;if(!ae.test(a))return b;let c=b;for(let d=0;d<b-1;d++)(64512&a.charCodeAt(d))==55296&&(64512&a.charCodeAt(d+1))==56320&&(c--,d++);return c}function ag(a){return Array.isArray(a)?"array":"string"==typeof a?"string":"unknown"}function ah(a){let b=typeof a;switch(b){case"number":return Number.isNaN(a)?"nan":"number";case"object":if(null===a)return"null";if(Array.isArray(a))return"array";if(a&&Object.getPrototypeOf(a)!==Object.prototype&&"constructor"in a&&a.constructor)return a.constructor.name}return b}function ai(...a){let[b,c,d]=a;return"string"==typeof b?{message:b,code:"custom",input:c,inst:d}:{...b}}function aj(a){return Object.entries(a).filter(([a,b])=>Number.isNaN(Number.parseInt(a,10))).map(a=>a[1])}function ak(a){let b=atob(a),c=new Uint8Array(b.length);for(let a=0;a<b.length;a++)c[a]=b.charCodeAt(a);return c}function al(a){let b="";for(let c=0;c<a.length;c++)b+=String.fromCharCode(a[c]);return btoa(b)}function am(a){let b=a.replace(/-/g,"+").replace(/_/g,"/"),c="=".repeat((4-b.length%4)%4);return ak(b+c)}function an(a){return al(a).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function ao(a){let b=a.replace(/^0x/,"");if(b.length%2!=0)throw Error("Invalid hex string length");let c=new Uint8Array(b.length/2);for(let a=0;a<b.length;a+=2)c[a/2]=Number.parseInt(b.slice(a,a+2),16);return c}function ap(a){return Array.from(a).map(a=>a.toString(16).padStart(2,"0")).join("")}class aq{constructor(...a){}}function ar(a,b){for(let c in b){let d=Object.getOwnPropertyDescriptor(b,c);d.get?Object.defineProperty(a,c,{...d,enumerable:!1}):function(a,b,c){Object.defineProperty(a,b,{configurable:!0,get(){return this==null?c:as(this,b,c.bind(this))},set(a){as(this,b,a)}})}(a,c,d.value)}}function as(a,b,c,d=!0){return Object.defineProperty(a,b,{configurable:!0,writable:!0,enumerable:d,value:c}),c}function at(a,b,c){return as(a,b,c,!1)}let au=!1,av={configurable:!0,get(){au=!0}};function aw(a,b,d){let e=Object.getPrototypeOf(a._zod);if(b in e&&c!==a._zod){c=void 0;return}c=a._zod,Object.defineProperty(e,b,{configurable:!0,get(){Object.defineProperty(this,b,av);let a=au;au=!1;try{let c=d(this);return au?delete this[b]:Object.defineProperty(this,b,{configurable:!0,writable:!0,value:c}),au=au||a,c}catch(c){throw delete this[b],au=au||a,c}},set(a){Object.defineProperty(this,b,{configurable:!0,writable:!0,value:a})}})}function ax(a,b,c,d){let e,f=b in(e=Object.getPrototypeOf(a))?void 0:e;f&&Object.defineProperty(f,b,{configurable:!0,get(){let a={configurable:!0,writable:!0,enumerable:d,value:void 0};return Object.defineProperty(this,b,a),a.value=c(this),Object.defineProperty(this,b,a),a.value},set(a){Object.defineProperty(this,b,{configurable:!0,writable:!0,enumerable:d,value:a})}})}let ay="~constantCatch";function az(a){let b=()=>a;return b[ay]=!0,b}let aA=Object.freeze({status:"aborted"}),aB={value:void 0,enumerable:!1},aC="captureStackTrace"in Error?Error:null;function aD(a,b,c,d){function e(a){this.def=a,this.constr=j,this.traits=new Set}e.prototype={};let f=c&&new WeakSet;function g(d,g){if(!d._zod){aB.value=new e(g);try{Object.defineProperty(d,"_zod",aB)}finally{aB.value=void 0}}if(d._zod.traits.has(a))return;if(d._zod.traits.add(a),b(d,g),f){let a=Object.getPrototypeOf(d),b=d._zod.constr.prototype,e=a;for(;e&&e!==b;)e=Object.getPrototypeOf(e);let g=e??a;f.has(g)||(f.add(g),ar(g,c))}let h=j.prototype;for(let a in h)Object.prototype.hasOwnProperty.call(h,a)&&(a in d||(d[a]=h[a].bind(d)))}let h=d?.Parent??Object;class i extends h{}function j(a){let b=d?.Parent?function(a){let b=aC;if(b){let c=b.stackTraceLimit;if("number"==typeof c){try{b.stackTraceLimit=0}catch{return aC=null,new a}try{return new a}finally{b.stackTraceLimit=c}}}return new a}(i):this;g(b,a);let c=b._zod.deferred;if(c){for(let a of c)a();b._zod.deferred=void 0}let e=globalThis.__zod_globalConfig?.postProcessor;return e&&e(b),b}return Object.defineProperty(i,"name",{value:a}),Object.defineProperty(j,"init",{value:g}),Object.defineProperty(j,Symbol.hasInstance,{value:b=>!!d?.Parent&&b instanceof d.Parent||b?._zod?.traits?.has(a)}),Object.defineProperty(j,"name",{value:a}),j}let aE=Symbol("zod_brand");class aF extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}}class aG extends Error{constructor(a){super(`Encountered unidirectional transform during encode: ${a}`),this.name="ZodEncodeError"}}(b=globalThis).__zod_globalConfig??(b.__zod_globalConfig={});let aH=globalThis.__zod_globalConfig;function aI(a){return a&&Object.assign(aH,a),aH}let aJ={get:function(){let a=this._zod;return a.message??(a.message=JSON.stringify(a.def,l,2)),a.message},set:function(a){this._zod.message=a},enumerable:!0,configurable:!0},aK={value:void 0,enumerable:!1},aL={value:void 0,enumerable:!1},aM=new WeakSet([Object.prototype,Error.prototype]),aN=(a,b)=>{a.name="$ZodError",aK.value=a._zod,Object.defineProperty(a,"_zod",aK),aL.value=b,Object.defineProperty(a,"issues",aL),aK.value=void 0,aL.value=void 0,Object.defineProperty(a,"message",aJ);let c=Object.getPrototypeOf(a);aM.has(c)||(aM.add(c),Object.defineProperty(c,"toString",{configurable:!0,enumerable:!1,get(){let a=()=>this.message;return Object.defineProperty(this,"toString",{value:a,configurable:!0,writable:!0}),a},set(a){Object.defineProperty(this,"toString",{value:a,configurable:!0,writable:!0})}}))},aO=aD("$ZodError",aN),aP=aD("$ZodError",aN,void 0,{Parent:Error});function aQ(a,b=a=>a.message){let c={},d=[];for(let g of a.issues)if(g.path.length>0){var e,f;(e=g.path[0],f=()=>[],!Object.prototype.hasOwnProperty.call(c,e)&&("__proto__"===e?Object.defineProperty(c,e,{value:f(),writable:!0,enumerable:!0,configurable:!0}):c[e]=f()),c[e]).push(b(g))}else d.push(b(g));return{formErrors:d,fieldErrors:c}}function aR(a,b=a=>a.message){let c={_errors:[]},d=(a,e=[])=>{for(let f of a.issues)if("invalid_union"===f.code&&f.errors.length)f.errors.map(a=>d({issues:a},[...e,...f.path]));else if("invalid_key"===f.code)d({issues:f.issues},[...e,...f.path]);else if("invalid_element"===f.code)d({issues:f.issues},[...e,...f.path]);else{let a=[...e,...f.path];if(0===a.length)c._errors.push(b(f));else{let d=c,e=0;for(;e<a.length;){let c=a[e],g=e===a.length-1;if("_errors"===c){g&&d._errors.push(b(f)),e++;continue}Object.prototype.hasOwnProperty.call(d,c)||Object.defineProperty(d,c,{value:{_errors:[]},enumerable:!0,writable:!0,configurable:!0});let h=d[c];g&&h._errors.push(b(f)),d=h,e++}}}};return d(a),c}function aS(a){let b=[];for(let c of a.map(a=>"object"==typeof a?a.key:a))"number"==typeof c?b.push(`[${c}]`):"symbol"==typeof c?b.push(`[${JSON.stringify(String(c))}]`):/[^\w$]/.test(c)?b.push(`[${JSON.stringify(c)}]`):(b.length&&b.push("."),b.push(c));return b.join("")}a.s(["$ZodError",0,aO,"$ZodRealError",0,aP,"flattenError",0,aQ,"formatError",0,aR,"prettifyError",0,function(a){let b=[];for(let c of[...a.issues].sort((a,b)=>(a.path??[]).length-(b.path??[]).length))b.push(`✖ ${c.message}`),c.path?.length&&b.push(` → at ${aS(c.path)}`);return b.join("\n")},"toDotPath",0,aS,"treeifyError",0,function(a,b=a=>a.message){let c={errors:[]},d=(a,e=[])=>{var f;for(let g of a.issues)if("invalid_union"===g.code&&g.errors.length)g.errors.map(a=>d({issues:a},[...e,...g.path]));else if("invalid_key"===g.code)d({issues:g.issues},[...e,...g.path]);else if("invalid_element"===g.code)d({issues:g.issues},[...e,...g.path]);else{let a=[...e,...g.path];if(0===a.length){c.errors.push(b(g));continue}let d=c,h=0;for(;h<a.length;){let c=a[h],e=h===a.length-1;"string"==typeof c?(d.properties??(d.properties={}),Object.prototype.hasOwnProperty.call(d.properties,c)||Object.defineProperty(d.properties,c,{value:{errors:[]},enumerable:!0,writable:!0,configurable:!0}),d=d.properties[c]):(d.items??(d.items=[]),(f=d.items)[c]??(f[c]={errors:[]}),d=d.items[c]),e&&d.errors.push(b(g)),h++}}};return d(a),c}],313399);let aT=new WeakSet([Object.prototype,Error.prototype]);function aU(a,b,c){Object.defineProperty(a,b,{configurable:!0,enumerable:!1,get(){let a=c(this);return Object.defineProperty(this,b,{value:a,configurable:!0,writable:!0}),a},set(a){Object.defineProperty(this,b,{value:a,configurable:!0,writable:!0})}})}let aV=(a,b)=>{aO.init(a,b),a.name="ZodError";let c=Object.getPrototypeOf(a);aT.has(c)||(aT.add(c),aU(c,"format",a=>b=>aR(a,b)),aU(c,"flatten",a=>b=>aQ(a,b)),aU(c,"addIssue",a=>b=>{a.issues.push(b),a.message=JSON.stringify(a.issues,l,2)}),aU(c,"addIssues",a=>b=>{a.issues.push(...b),a.message=JSON.stringify(a.issues,l,2)}),Object.defineProperty(c,"isEmpty",{configurable:!0,enumerable:!1,get(){return 0===this.issues.length}}))},aW=aD("ZodError",aV),aX=aD("ZodError",aV,void 0,{Parent:Error});a.s(["ZodError",0,aW,"ZodRealError",0,aX],975160)}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=node_modules_zod_v4_classic_errors_05xv7vp.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,805995,e=>{"use strict";var t=e.i(843476),n=e.i(456420);let i={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"}]]};i.node;let s=(0,n.default)(i),o={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"]};o.node;let r=(0,n.default)(o);var a=e.i(689664),l=e.i(867927);let d={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"}]]};d.node;let c=(0,n.default)(d);var u=e.i(815170),g=e.i(466787),m=e.i(271645),h=e.i(798120),f=e.i(167881),x=e.i(23750),k=e.i(917162),p=e.i(146538),y=e.i(968978),v=e.i(265402),j=e.i(635963),b=e.i(95187);let N=(0,b.createServerReference)("7f25c6b89ec9d7c8f1bbbd8a43e823b5f135abdb02",b.callServer,void 0,b.findSourceMapURL,"removeConfigAction");var S=e.i(131531),C=e.i(992112),M=e.i(895836),A=e.i(609856),w=e.i(283653),z=e.i(647163);let R={image:u.Image,video:c,speech:s,transcription:r};function I({section:e}){let{data:n,isLoading:i,error:s}=(0,w.useServerRoute)(h.queryKey.config);if(i)return(0,t.jsx)(M.SettingSkeleton,{rows:4});if(s)return(0,t.jsx)(M.SettingError,{message:s.message});let o=e=>(0,C.isConfigSet)(n,e),r=e=>n?.find(t=>t.key===e)?.value,a=C.CONFIG_GROUPS.filter(t=>t.section===e),l=a.flatMap(e=>e.entries);return(0,t.jsx)(M.SettingScreen,{footer:(0,t.jsx)(M.SettingRailNote,{children:"keys"===e?(0,t.jsxs)(t.Fragment,{children:[l.filter(e=>o(e.key)).length," of"," ",l.length," set",a.some(e=>!(0,C.groupSatisfied)(e,o))?" · a call needs one voice key":" · your keys stay on this machine"]}):(0,t.jsxs)(t.Fragment,{children:[l.length," of ",l.length," resolved ·"," ",l.filter(e=>r(e.key)).length," pinned"]})}),children:a.map(e=>(0,t.jsx)(M.SettingGroup,{label:e.title,hint:e.hint,right:(0,t.jsx)(K,{group:e,isSet:o}),children:(0,t.jsx)(M.SettingItems,{children:e.entries.map(n=>n.choices?(0,t.jsx)($,{entry:n,choices:n.choices,value:r(n.key),isSet:o},n.key):(0,t.jsx)(T,{entry:n,set:o(n.key),needed:!(0,C.groupSatisfied)(e,o)},n.key))})},e.id))})}function K({group:e,isSet:n}){return"none"===e.require?null:(0,C.groupSatisfied)(e,n)?(0,t.jsxs)("span",{className:"flex items-center gap-1 font-mono text-[11px] text-muted-foreground",children:[(0,t.jsx)(a.Check,{className:"size-3"}),"ready"]}):(0,t.jsxs)("span",{className:(0,z.cn)("flex items-center gap-1 font-mono text-[11px]",z.WAITING_INK),children:[(0,t.jsx)(g.TriangleAlert,{className:"size-3"}),e.note??"Required"]})}function T({entry:e,set:n,needed:i}){return(0,t.jsxs)("button",{type:"button",onClick:()=>{var i,s;return i=e,s=n,k.notify.component({className:"sm:max-w-md",renderer:({close:e})=>(0,t.jsx)(O,{entry:i,set:s,onDone:e})})},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:[e.provider&&(0,t.jsx)("span",{className:"grid size-8 shrink-0 place-items-center rounded-lg bg-muted/60",children:(0,t.jsx)(y.ProviderIcon,{provider:e.provider,className:"size-4"})}),(0,t.jsxs)("span",{className:"min-w-0 flex-1 space-y-0.5",children:[(0,t.jsx)("span",{className:"block truncate text-sm font-medium",children:e.label}),(0,t.jsx)("span",{className:"block truncate font-mono text-xs text-muted-foreground",children:e.key})]}),(0,t.jsxs)("span",{className:(0,z.cn)("flex shrink-0 items-center gap-1.5 font-mono text-xs",n?"text-muted-foreground":i?z.WAITING_INK:"text-muted-foreground/60"),children:[n&&(0,t.jsx)(a.Check,{className:"size-3"}),!n&&i&&(0,t.jsx)(g.TriangleAlert,{className:"size-3"}),n?"Set":i?"Needed":"Not set"]}),(0,t.jsx)(l.ChevronRight,{className:"size-4 shrink-0 text-muted-foreground/60 transition-colors group-hover:text-foreground"})]})}function $({entry:e,choices:n,value:i,isSet:s}){let o=n.find(e=>e.value===i),r=n.filter(e=>s(e.needs)),a=i&&!o?i:null,d=e.kind?R[e.kind]:j.BotsMark;return(0,t.jsxs)("button",{type:"button",onClick:()=>{var i,s,o;return e.kind||e.text?(i=e,k.notify.component({className:"sm:max-w-lg",renderer:({close:e})=>(0,t.jsx)(q,{entry:i,onDone:e})})):(s=e,o=n,k.notify.component({className:"sm:max-w-md",renderer:({close:e})=>(0,t.jsx)(B,{entry:s,choices:o,onDone:e})}))},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,t.jsx)("span",{className:"grid size-8 shrink-0 place-items-center rounded-lg bg-muted/60",children:(0,t.jsx)(d,{className:"size-4 text-muted-foreground"})}),(0,t.jsxs)("span",{className:"min-w-0 flex-1 space-y-1",children:[(0,t.jsx)("span",{className:"block truncate text-sm font-medium",children:e.label}),(0,t.jsxs)("span",{className:"flex min-w-0 items-center gap-1.5",children:[!o&&!a&&(0,t.jsx)("span",{className:(0,z.cn)("shrink-0 rounded-[5px] border border-border/60 px-1 font-mono text-[10px]",e.kind?z.WAITING_INK:"text-muted-foreground"),children:e.kind?"off":"auto"}),(0,t.jsx)("span",{className:"truncate font-mono text-xs text-muted-foreground",children:o?.label??a??(e.kind?"Not offered to bots until you pick one":r[0]?.label??"No key for any of these yet")})]})]}),(0,t.jsx)(l.ChevronRight,{className:"size-4 shrink-0 text-muted-foreground/60 transition-colors group-hover:text-foreground"})]})}function q({entry:e,onDone:n}){let{data:i}=(0,w.useServerRoute)(h.queryKey.config),s=i?.find(t=>t.key===e.key)?.value,[o,r]=(0,m.useState)(()=>{let t=e.text?(0,v.parseTextModel)(s):(0,v.parseMediaModel)(s);return{provider:t?.provider??null,model:t?.model??""}}),a=()=>{(0,w.revalidate)(h.queryKey.config),n()},[l]=(0,A.useServerAction)(S.setConfigAction,{okMessage:`${e.label} saved`,onOk:a}),[d,c]=(0,A.useServerAction)(N,{okMessage:e.kind?`${e.label} switched off`:`${e.label} back to automatic`,onOk:a});return(0,t.jsx)(M.SettingDialogContent,{title:e.label,description:e.hint,footer:(0,t.jsxs)(t.Fragment,{children:[s&&(0,t.jsx)(f.Button,{variant:"ghost",loading:c,onClick:()=>d(e.key),children:e.kind?"Turn off":"Automatic"}),(0,t.jsx)(f.Button,{variant:"ghost",onClick:n,children:"Close"})]}),children:(0,t.jsx)(p.ModelPicker,{kind:e.kind,provider:o.provider,model:o.model,onChange:t=>{r(t),t.model.trim()&&l(e.key,`${t.provider}/${t.model.trim()}`)}})})}function B({entry:e,choices:n,onDone:i}){let{data:s}=(0,w.useServerRoute)(h.queryKey.config),o=s?.find(t=>t.key===e.key)?.value,r=()=>{(0,w.revalidate)(h.queryKey.config),i()},[a,l]=(0,A.useServerAction)(S.setConfigAction,{okMessage:`${e.label} saved`,onOk:r}),[d,c]=(0,A.useServerAction)(N,{okMessage:e.kind?`${e.label} switched off`:`${e.label} back to automatic`,onOk:r});return(0,t.jsx)(M.SettingDialogContent,{title:e.label,description:e.hint,footer:(0,t.jsxs)(t.Fragment,{children:[o&&(0,t.jsx)(f.Button,{variant:"ghost",loading:c,onClick:()=>d(e.key),children:e.kind?"Turn off":"Automatic"}),(0,t.jsx)(f.Button,{variant:"ghost",onClick:i,children:"Close"})]}),children:(0,t.jsx)(M.SettingChoiceRows,{options:n.map(e=>({value:e.value,label:e.label,disabled:!(0,C.isConfigSet)(s,e.needs)&&`needs ${e.needs}`})),value:o,onChange:t=>a(e.key,t),disabled:l})})}function O({entry:e,set:n,onDone:i}){let[s,o]=(0,m.useState)(""),r=()=>{(0,w.revalidate)(h.queryKey.config),(0,w.revalidate)(h.queryKey.llmModel)},[a,l]=(0,A.useServerAction)(S.setConfigAction,{okMessage:`${e.label} key saved`,onOk:()=>{r(),i()}}),[d,c]=(0,A.useServerAction)(N,{okMessage:`${e.label} key removed`,onOk:()=>{r(),i()}});return(0,t.jsx)(M.SettingDialogContent,{title:e.label,description:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("span",{className:"font-mono",children:e.key}),e.hint&&(0,t.jsxs)(t.Fragment,{children:[" · ",e.hint]})]}),footer:(0,t.jsxs)(t.Fragment,{children:[n&&(0,t.jsx)(f.Button,{variant:"ghost",loading:c,onClick:()=>d(e.key),children:"Remove"}),(0,t.jsx)(f.Button,{variant:"ghost",onClick:i,children:"Cancel"}),(0,t.jsx)(f.Button,{loading:l,disabled:s.trim().length<8,onClick:()=>a(e.key,s),children:n?"Replace":"Save"})]}),children:(0,t.jsx)(x.Input,{value:s,onChange:e=>o(e.target.value),onKeyDown:t=>{"Enter"===t.key&&s.trim().length>=8&&a(e.key,s)},placeholder:n?"New value — replaces the current key":e.key,spellCheck:!1,type:"password",autoFocus:!0})})}e.s(["ConfigGroups",0,I,"ConfigSetting",0,function(){return(0,t.jsx)(I,{section:"keys"})}],805995)},855783,e=>{"use strict";var t=e.i(843476),n=e.i(805995);e.s(["ModelsSetting",0,function(){return(0,t.jsx)(n.ConfigGroups,{section:"models"})}])}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,213377,e=>{"use strict";e.s(["TOOL_NAMES",0,{memory_recall:"memory_recall",memory_remember:"memory_remember",memory_forget:"memory_forget",memory_show:"memory_show",bash:"bash",write_file:"write_file",tool_search:"tool_search",tool_call:"tool_call",load_skill:"load_skill",web_search:"web_search",delegate:"delegate",task:"task",ask_bot:"ask_bot",ask_thursday:"ask_thursday",ask_back:"ask_back",report:"report",end_call:"end_call",tidy_done:"tidy_done"}])},692329,933916,671228,e=>{"use strict";var t=e.i(843476),r=e.i(493801),n=e.i(456420);let a={name:"arrow-right",size:24,node:[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]]};a.node;let s=(0,n.default)(a);var i=e.i(867927),l=e.i(632781);let o={name:"minus",size:24,node:[["path",{d:"M5 12h14",key:"1ays0h"}]]};o.node;let c=(0,n.default)(o);var d=e.i(751898);let u={name:"pin-off",size:24,node:[["path",{d:"M12 17v5",key:"bb1du9"}],["path",{d:"M15 9.34V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H7.89",key:"znwnzq"}],["path",{d:"m2 2 20 20",key:"1ooewy"}],["path",{d:"M9 9v1.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h11",key:"c9qhm2"}]]};u.node;let h=(0,n.default)(u);var m=e.i(77071),f=e.i(466787),g=e.i(271645),p=e.i(511769),y=e.i(798120),x=e.i(167881),b=e.i(917162),M=e.i(671428),v=e.i(6799),A=e.i(146538),S=e.i(852116),k=e.i(95187);let w=(0,k.createServerReference)("7fdda987c5c6887d333c51ad9d859efeed3392ddd7",k.callServer,void 0,k.findSourceMapURL,"cancelMemoryTidyAction"),_=(0,k.createServerReference)("7f84194f8e656799a38ecdfbe0e6e7197314915282",k.callServer,void 0,k.findSourceMapURL,"runMemoryTidyAction"),N=(0,k.createServerReference)("7f89da96e453adc9271fa1c02af987e8afce58036e",k.callServer,void 0,k.findSourceMapURL,"setMemoryTidyModelAction"),j=(0,k.createServerReference)("7ff7165bd1c214fcdae348973ca11be2ca989d01bd",k.callServer,void 0,k.findSourceMapURL,"setMemoryTidyOnAction");var E=e.i(536015),O=e.i(895836),T=e.i(989409),R=e.i(245629),L=e.i(609856),C=e.i(283653),I=e.i(647163);function P({status:e}){let r=e.current,n=e.last;return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{className:"border-t border-border/60",children:[(0,t.jsx)(F,{value:e.model}),(0,t.jsxs)("div",{className:"flex items-center gap-3 border-t border-border/60 py-2",children:[(0,t.jsx)("span",{className:"w-20 shrink-0 text-[13px] text-muted-foreground",children:r?"Reading":"Last read"}),r?(0,t.jsxs)("span",{className:"flex min-w-0 flex-1 items-center gap-2 font-mono text-[11px] text-muted-foreground",children:[(0,t.jsx)(l.Loader2,{className:"size-3.5 shrink-0 animate-spin"}),(0,t.jsxs)("span",{className:"truncate",children:["the last ",r.messages," ",1===r.messages?"message":"messages"]})]}):(0,t.jsx)(z,{run:n}),(0,t.jsx)(D,{run:r??n})]})]}),(0,t.jsx)(O.SettingNote,{className:(0,I.cn)(!e.model&&I.WAITING_INK),children:e.model?`Reads back after every ${e.every} messages of talk. ${e.pending} since the last one.`:"Nothing is read back until a model is picked — this never runs on the app default."})]})}function F({value:e}){return(0,t.jsxs)("button",{type:"button",onClick:()=>{var r;return r=e,b.notify.component({className:"sm:max-w-lg",renderer:({close:e})=>(0,t.jsx)($,{current:r,onDone:e})})},className:"flex w-full items-center gap-3 py-2 text-left outline-none focus-visible:ring-3 focus-visible:ring-ring/50",children:[(0,t.jsx)("span",{className:"w-20 shrink-0 text-[13px] text-muted-foreground",children:"Model"}),(0,t.jsx)("span",{className:(0,I.cn)("min-w-0 flex-1 truncate font-mono text-[11px]",e?"text-muted-foreground":I.WAITING_INK),children:e??"Not picked"}),(0,t.jsx)(i.ChevronRight,{className:"size-4 shrink-0 text-muted-foreground/60"})]})}function z({run:e}){if(!e)return(0,t.jsx)("span",{className:"min-w-0 flex-1 truncate font-mono text-[11px] text-muted-foreground",children:"Nothing read back yet"});let n=(0,r.formatDistanceToNowStrict)((0,R.toDate)(e.endedAt??e.startedAt),{addSuffix:!0});return"done"!==e.status?(0,t.jsxs)("span",{className:"flex min-w-0 flex-1 items-center gap-1.5 text-destructive",children:[(0,t.jsx)(f.TriangleAlert,{className:"size-3.5 shrink-0"}),(0,t.jsxs)("span",{className:"truncate font-mono text-[11px]",children:["failed"===e.status?"Failed":"Stopped"," ",n,e.error?` — ${e.error}`:""]})]}):(0,t.jsxs)("span",{className:"min-w-0 flex-1 truncate font-mono text-[11px] text-muted-foreground",children:[n," · ",(0,E.tidyTally)(e.changes)]})}function D({run:e}){return e?(0,t.jsx)("button",{type:"button","aria-label":"What the last read changed",onClick:()=>K(),className:"shrink-0 outline-none focus-visible:ring-3 focus-visible:ring-ring/50",children:(0,t.jsx)(i.ChevronRight,{className:"size-4 text-muted-foreground/60"})}):(0,t.jsx)("span",{className:"size-4 shrink-0"})}function $({current:e,onDone:r}){let[n,a]=(0,L.useServerAction)(N,{onOk:()=>{(0,C.revalidate)(y.queryKey.memoryTidy),r()}}),s=e?.split("/")??null,[i,l]=(0,g.useState)({provider:s?.[0]??null,model:s?.slice(1).join("/")??""});return(0,t.jsx)(O.SettingDialogContent,{title:"Model",description:"What re-reads a call. There is no default: without a pick nothing is read back, so a model nobody chose never spends.",footer:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(x.Button,{variant:"ghost",onClick:()=>n(""),children:"Clear"}),(0,t.jsx)(x.Button,{loading:a,disabled:!i.provider||!i.model.trim(),onClick:()=>n(`${i.provider}/${i.model.trim()}`),children:"Save"})]}),children:(0,t.jsx)(A.ModelPicker,{provider:i.provider,model:i.model,onChange:l})})}function K(){return b.notify.component({className:"sm:max-w-2xl",renderer:()=>(0,t.jsx)(H,{})})}function H(){let{data:e}=(0,C.useServerRoute)(y.queryKey.memoryTidy),n={onOk:()=>(0,C.revalidate)(y.queryKey.memoryTidy)},[a,s]=(0,L.useServerAction)(_,n),[i,l]=(0,L.useServerAction)(w,n);if(!e)return(0,t.jsx)(O.SettingDialogContent,{title:"What the last read changed",children:(0,t.jsxs)("div",{className:"space-y-3",children:[(0,t.jsx)(M.Skeleton,{className:"h-4 w-2/3"}),(0,t.jsx)(M.Skeleton,{className:"h-4 w-full"}),(0,t.jsx)(M.Skeleton,{className:"h-4 w-4/5"})]})});let o=e.current??e.last,c=o?(0,r.formatDistanceToNowStrict)((0,R.toDate)(o.endedAt??o.startedAt),{addSuffix:!0}):"";return(0,t.jsx)(O.SettingDialogContent,{title:"What the last read changed",description:"Memory as it stands after the model read those messages back. Every line here is one it wrote, revised or dropped.",footer:e.current?(0,t.jsx)(x.Button,{variant:"outline",loading:l,onClick:()=>i(),children:"Stop"}):(0,t.jsxs)(x.Button,{variant:"outline",loading:s,disabled:0===e.pending||!e.model,onClick:()=>a(),children:[!s&&(0,t.jsx)(S.MemoryMark,{className:"size-3.5"}),"Read now"]}),children:o?(0,t.jsxs)("div",{className:"space-y-3",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("span",{className:"min-w-0 flex-1 text-sm",children:e.current?`Reading the last ${o.messages} messages`:`${o.messages} messages, ${c}`}),(0,t.jsxs)("span",{className:"shrink-0 font-mono text-[11px] text-muted-foreground",children:["-"!==o.provider&&o.model,o.inputTokens>0&&` \xb7 ${o.inputTokens.toLocaleString()} in / ${o.outputTokens.toLocaleString()} out`]})]}),o.error&&(0,t.jsx)("p",{className:"font-mono text-xs text-destructive",children:o.error}),o.changes.length>0?(0,t.jsx)("ul",{className:"border-b border-border/60",children:o.changes.map((e,r)=>(0,t.jsx)(B,{change:e},`${r}-${e.op}-${e.text}`))}):!e.current&&(0,t.jsx)("p",{className:"text-xs text-muted-foreground/70",children:"Nothing needed changing."})]}):(0,t.jsx)("p",{className:"text-xs text-muted-foreground/70",children:"Nothing has been read back yet."})})}let U={add:{icon:m.Plus,label:"added"},replace:{icon:s,label:"revised"},forget:{icon:c,label:"dropped"},carry:{icon:d.Pin,label:"carried into every call"},uncarry:{icon:h,label:"no longer carried"}};function B({change:e}){let{icon:r,label:n}=U[e.op];return(0,t.jsxs)("li",{className:"flex gap-3 border-t border-border/60 py-3",children:[(0,t.jsxs)("span",{className:"flex w-3.5 shrink-0 justify-center pt-1 text-muted-foreground",children:[(0,t.jsx)(r,{className:"size-3.5"}),(0,t.jsx)("span",{className:"sr-only",children:n})]}),(0,t.jsx)("span",{className:"min-w-0 flex-1 text-sm leading-relaxed text-foreground/90",children:e.text}),(0,t.jsx)("span",{className:"shrink-0 pt-0.5 font-mono text-[11px] text-muted-foreground/50",children:e.path})]})}e.s(["MemoryTidyNotice",0,function(){return(0,p.useAppEvent)({"memory-tidied":e=>{v.toast.add({type:e.failed?"error":"success",title:e.failed?"Could not read the call back":"Memory tidied",description:e.tally,actionProps:{children:"Show",onClick:()=>{(0,T.openSettings)("thursday"),K()}}})}}),null},"TidySetting",0,function(){let{data:e}=(0,C.useServerRoute)(y.queryKey.memoryTidy),[r]=(0,L.useServerAction)(j,{onOk:()=>(0,C.revalidate)(y.queryKey.memoryTidy)});return(0,t.jsx)(O.SettingGroup,{label:"After a call",children:(0,t.jsx)(O.SettingToggle,{label:"Read the call back",description:"During a call she saves what she catches between sentences. Afterwards a model reads the whole thing back and fixes what she missed.",checked:e?.on??!1,disabled:!e,onChange:e=>r(e),children:e&&(0,t.jsx)(P,{status:e})})})}],692329);var q=e.i(504565),J=e.i(265402),V=e.i(451888);let W=["mark","ascii"],Y=["ascii","emoji","emojiOnly"];e.s(["ASCII_CHARSETS",0,Y,"FACE_KINDS",0,W],933916);var G=e.i(981203);let Z=q.default.object({systemPrompt:q.default.string().max(G.COMMON_VALIDATE.prompt.max).nullish(),model:J.speachModelRefSchema.nullish(),locale:q.default.string().max(35).nullish()}),Q=V.botIconSchema.extend({kind:q.default.enum(W).default("ascii"),charset:q.default.enum(Y).default("ascii"),fontSize:q.default.number().min(4).max(16).default(8),density:q.default.number().min(.6).max(2).default(1.4)}),X=Q.parse({}),ee={min:3,max:32},et=q.default.object({enabled:q.default.boolean(),phrase:q.default.string().trim().min(ee.min).max(ee.max)}),er=q.default.object({enabled:q.default.boolean(),combo:q.default.string().trim().min(1).max(64)}),en=["off","waiting","any"],ea=q.default.enum(en),es=["center","sides"],ei=q.default.enum(es);q.default.object({id:q.default.string().min(1),role:q.default.enum(["user","assistant","tool"]),tool:q.default.string().nullish(),text:q.default.string(),seq:q.default.number().int().min(0)}),e.s(["CALL_BACK_DEFAULT",0,"off","CALL_BACK_LABEL",0,{off:"Never",waiting:"When a job needs me",any:"Whenever a job ends"},"CALL_BACK_MODES",0,en,"CALL_HISTORY_PAGE",0,10,"CAPTION_VIEWS",0,es,"CallBackSchema",0,ea,"CaptionViewSchema",0,ei,"FACE_DEFAULT",0,X,"HOTKEY_DEFAULT",0,{enabled:!0,combo:"alt+shift+KeyT"},"HotkeySchema",0,er,"ThursdayFaceSchema",0,Q,"ThursdaySettingsSchema",0,Z,"WAKE_DEFAULT",0,{enabled:!0,phrase:"hey thursday"},"WAKE_PHRASE",0,ee,"WakeSchema",0,et],671228)},567334,e=>{"use strict";e.s(["ALPHA_TOP",0,.82,"CHAR_RATE",0,2.2,"EMOJI_CHAR_RATE",0,.6,"EMOJI_MIN_LEVEL",0,6,"EMOJI_POOL",0,["🍎","🌹","🍓","❤️","🎈","🧨","🔴","🍊","🔥","🦊","🏀","🧡","🍑","⭐","🍋","🌻","💛","🐥","🌟","🍌","🍀","🌿","🐸","🥝","💚","🌵","🥑","💧","🌊","🫐","🐳","💙","🔵","🧊","🍇","💜","🔮","🟣","🪻","🍆","🌸","🌷","💗","🦩","🩷","🍫","🐻","🌰","🥐","🤍","☁️","🖤","⚪","⚫","🦢","🌈","🦜","🎨","🪩","🦄","✨","🍬","🎡"],"EMOJI_RATIO",0,.11,"RAMP",0,[[" "],[" ",".","`"],[".",",","·","'"],[":",";","-","^"],["=","+","~",'"'],["*","?","◦","j"],["c","v","○","7"],["o","x","◇","い"],["s","y","t","あ"],["e","a","u","な"],["k","w","z","や"],["q","h","n","米"]],"hash",0,function(e,t){let r=43758.5453*Math.sin(127.1*e+311.7*t);return r-Math.floor(r)},"smoothstep",0,function(e,t,r){let n=Math.min(1,Math.max(0,(r-e)/(t-e)));return n*n*(3-2*n)}])},333495,e=>{"use strict";var t=e.i(843476),r=e.i(271645),n=e.i(635963),a=e.i(567334);let s=[235,235,235],i=["████ ███ ███ ██ ███ ","█ █ █ █ █ █ █ █ █","███ ███ ███ █ █ ███ ","█ █ █ █ █ █ █ █ █ ","████ █ █ █ █ ██ █ █"],l={happy:[".....................",".....................","....███.......███....","...█████.....█████...","...█████.....█████...","....███.......███....",".....................",".....................","█...................█",".██...............██.","...███.........███...","......█████████......","....................."],sad:[".....................",".....................","....███.......███....","...█████.....█████...","...█████.....█████...","....███.......███....",".....................",".....................","......█████████......","...███.........███...",".██...............██.","█...................█","....................."],love:[".....................","...██.██.....██.██...","..███████...███████..","..███████...███████..","...█████.....█████...","....███.......███....",".....█.........█.....",".....................","█...................█",".██...............██.","...███.........███...","......█████████......","....................."]};function o(e,t){let r=1-(0,a.smoothstep)(104.50000000000001,190,e.dist);return(.58+.2*Math.sin(.05*e.dist-.4*t)+.07*Math.sin(.35*t))*r}function c(e,t,r,n,s){switch(e){case"idle":return o(t,r)*(0,a.smoothstep)(0,1,Math.min(1,n/1.5));case"connecting":{let e=(0,a.smoothstep)(0,1,Math.min(1,n/1.8)),s=t.dist-235*e;return Math.exp(-(s*s)/6e3)*(.2+.85*(0,a.hash)(Math.floor(t.dist/9),Math.floor(11*t.angle))+.5*(0,a.hash)(137*t.seed,7))*e+o(t,r)*(1-e)}case"speaking":{let e=(0,a.smoothstep)(0,1,Math.min(1,n/.8)),i=190+(58*s.slow+58*s.bob)*e;for(let r=0;r<4;r++)i+=40*s.amp[r]*Math.sin((r+2)*t.angle+s.phase[r])*e;let l=Math.max(130,Math.min(278,i)),o=t.dist-l,c=Math.exp(-(o*o)/900),d=.55*Math.exp(-(t.dist*t.dist)/6e3),u=t.dist<l?.3*(1-t.dist/l)**.6:0,h=0;for(let e=0;e<s.rings.length;e++){let n=s.rings[e],a=r-n.born,i=t.dist-(l+100*a);h+=Math.exp(-(i*i)/2200)*n.power*Math.max(0,1-a/.55)}return c+d+u+.8*h}case"working":{let e=(0,a.smoothstep)(0,1,Math.min(1,n/.7)),s=t.dist-238,i=Math.exp(-(s*s)/1100),l=t.angle-3*r,c=Math.atan2(Math.sin(l),Math.cos(l));return i*Math.exp(-(c*c)/(c<0?2.8:.16))*e+o(t,r)*(1-e)}case"error":{if(t.letter<0)return 0;let e=n%9.2,s=t.letter,i=.12*t.seed;return Math.max(0,(0,a.smoothstep)(0,1,(e-.65*s-i)/.8)-(0,a.smoothstep)(0,1,(e-5.6-.5*s-i)/.7))*(.86+.14*Math.sin(3.5*r+6*t.seed))}}}function d({className:e,mode:n="idle",charset:o="ascii",emotion:u=null,fontSize:h=8,density:m=1.4,size:f=680,color:g=s,getSpectrum:p}){let y=(0,r.useRef)(null),x=(0,r.useRef)(null),b=(0,r.useRef)([]),M=(0,r.useRef)(null),v=(0,r.useRef)(o),A=(0,r.useRef)({cur:[...g],target:g}),S=(0,r.useRef)({cw:1,ch:1,errScale:3,faceScale:3,size:0}),k=(0,r.useRef)({cur:u,prev:null,start:-1/0}),w=(0,r.useRef)(p);w.current=p;let _=(0,r.useRef)({fast:0,mid:0,slow:0,bob:0,bobVel:0,lastOnset:-1/0,amp:[,,,,].fill(0),phase:Array.from({length:4},(e,t)=>2.1*t),rings:[]}),N=(0,r.useRef)({mode:n,start:0}),j=(0,r.useRef)(null),E=(0,r.useRef)(-1/0);return(0,r.useEffect)(()=>{let e=y.current;if(!e)return;let t=.95*h/m,r=1.25*h/m,n=680/f,s=t*n,l=r*n,o=Math.max(1,Math.floor(625.6/(i[0].length*s))),c=Math.max(1,Math.floor(557.6/(21*s)));S.current={cw:s,ch:l,errScale:o,faceScale:c,size:f};let d=[],u=Math.ceil(f/t),g=Math.ceil(f/r);for(let e=0;e<g;e++)for(let c=0;c<u;c++){let u=c*t,h=e*r,m=(u-f/2)*n,g=(h-f/2)*n,p=Math.hypot(m,g),y=function(e,t,r,n,a){let s=i.length,l=Math.floor(e/(r*a)+i[0].length/2),o=Math.floor(t/(n*a)+s/2);if(o<0||o>=s)return -1;let c=i[o];return l<0||l>=c.length||"█"!==c[l]?-1:Math.floor(l/5)}(m,g,s,l,o);y<0&&p>328||d.push({x:u+t/2,y:h+r/2,dx:m,dy:g,dist:p,angle:Math.atan2(g,m),seed:(0,a.hash)(c,e),grain:(0,a.hash)(5.7*c+19,2.3*e+53),gap:.05+.3*(0,a.hash)(7.3*c+11,3.1*e+5),birth:(0,a.hash)(3.1*c+7,5.7*e+2),death:(0,a.hash)(9.4*c+3,2.6*e+8),emoji:(0,a.hash)(2.7*c+31,5.9*e+17)<a.EMOJI_RATIO,letter:y})}b.current=d,M.current={ascii:Array.from({length:a.RAMP.length},()=>new Int32Array(d.length)),emoji:Array.from({length:a.RAMP.length},()=>new Int32Array(d.length)),asciiN:new Int32Array(a.RAMP.length),emojiN:new Int32Array(a.RAMP.length),glyph:Array(d.length)};let p=Math.min(2,window.devicePixelRatio||1);e.width=f*p,e.height=f*p,e.style.width=`${f}px`,e.style.height=`${f}px`;let v=e.getContext("2d");return v&&(v.setTransform(p,0,0,p,0,0),v.font=`700 ${h}px ui-monospace,SFMono-Regular,Menlo,monospace`,v.textAlign="center",v.textBaseline="middle",x.current=v),()=>{v?.clearRect(0,0,f,f),b.current=[],M.current=null}},[h,m,f]),(0,r.useEffect)(()=>{let e=k.current;e.cur!==u&&(k.current={cur:u,prev:e.cur,start:.001*performance.now()})},[u]),(0,r.useEffect)(()=>{v.current=o},[o]),(0,r.useEffect)(()=>{A.current.target=g},[g]),(0,r.useEffect)(()=>{let e=.001*performance.now();N.current.mode!==n?(j.current={...N.current},N.current={mode:n,start:e},E.current=e):N.current={mode:n,start:e}},[n]),(0,r.useEffect)(()=>{let e=0,t=Array(28),r=.001*performance.now(),n=s=>{let i=.001*s,o=Math.min(.05,Math.max(0,i-r));r=i;let d=x.current,u=M.current;if(!d||!u){e=requestAnimationFrame(n);return}let h=v.current,{cw:m,ch:f,faceScale:g,size:p}=S.current;u.asciiN.fill(0),u.emojiN.fill(0);let y=w.current?.();if(y&&y.length>1){let e=y.length-1;for(let r=0;r<28;r++){let n=Math.abs((r/28*2+1)%2-1)*e,a=Math.floor(n),s=Math.min(e,a+1);t[r]=y[a]+(y[s]-y[a])*(n-a)}}else for(let e=0;e<28;e++){let r=.5*Math.sin(1.7*i+1.7*e)+.3*Math.sin(.8*i+.6*e)+.2*Math.sin(3*i+2.9*e);t[e]=.5*r+.5}let O=_.current,T=0;for(let e=0;e<28;e++)T+=t[e];if(T=Math.min(1,T/28*2.6),O.fast+=(T-O.fast)*.3,O.mid+=(T-O.mid)*.06,O.slow+=(T-O.slow)*.02,O.fast>1.25*O.mid+.02&&O.fast>.07&&i-O.lastOnset>.14){O.lastOnset=i;let e=Math.min(1,1.7*O.fast);O.bobVel+=.05*e,O.rings.push({born:i,power:e}),O.rings.length>5&&O.rings.shift()}O.bobVel+=-(.012*O.bob)-.09*O.bobVel,O.bob+=O.bobVel;for(let e=0;e<4;e++){let r=e/4*28|0,n=(e+1)/4*28|0,s=0;for(let e=r;e<n;e++)s+=t[e];s=Math.min(1,s/Math.max(1,n-r)*2.6);let l=.7+.6*(0,a.hash)((.9*i|0)+31*e,e);O.amp[e]+=(s*l-O.amp[e])*(.02+.012*e),O.phase[e]+=o*(.5+.37*e)*(e%2?-1:1)}for(;O.rings.length>0&&i-O.rings[0].born>.55;)O.rings.shift();let R=N.current,L=j.current,C=(0,a.smoothstep)(0,1,Math.min(1,(i-E.current)/1.5)),I=null!==L&&C<1,P="error"===R.mode||I&&L?.mode==="error",F=k.current,z=i-F.start,D=Math.min(1,Math.max(0,z/.36)),$=Math.min(1,Math.max(0,(z-.36-.14)/.95)),K=null!==F.cur||z<1.45,H=(e,t)=>{var r,n;let a,s;return r=t.dx,n=t.dy,a=Math.floor(r/(m*g)+10.5),(s=Math.floor(n/(f*g)+6.5))<0||s>=13||a<0||a>=21||"█"!==l[e][s][a]?0:s<7?1:2},U=(e,t)=>0===e?0:(1===e?1:.88)*(.74+.26*(1-Math.min(1,t.dist/270)))*(.42+.85*(0,a.hash)(Math.floor(.09*t.dx+.25*i),Math.floor(.09*t.dy-.18*i))),B=e=>{if(e.seed<.976)return 0;let t=195+160*(0,a.hash)(311*e.seed,9);return Math.exp(-((e.dist-t)**2)/7e3)*(.5+.5*Math.sin(i*(.5+1.5*(0,a.hash)(47*e.seed,21))+300*e.seed))*.36},q=b.current;for(let e=0;e<q.length;e++){let t=q[e],r=c(R.mode,t,i,i-R.start,O);if(I&&L){let e=c(L.mode,t,i,i-L.start,O);r=e+(r-e)*C}!(P&&t.letter>=0)&&((r*=(.66+.72*t.grain)*(.8+.4*(0,a.hash)(Math.floor(.05*t.dx+.5*i),Math.floor(.05*t.dy-.3*i))))>.3&&(0,a.hash)(31.7*Math.floor(1.6*i),613*t.seed)>.992&&(r=Math.max(r,.9)),r<t.gap+.05*Math.sin(.28*i+6.283*t.seed)&&(r=0));let n=!1;if(K){let e=(0,a.smoothstep)(0,1,(1.1*D-t.death)/.08),s=(0,a.smoothstep)(0,1,(1.1*$-t.birth)/.08),i=F.cur?H(F.cur,t):0,l=F.prev?H(F.prev,t):0,o=B(t);r=(F.prev?U(l,t)+o:r)*(1-e)+(F.cur?U(i,t)+o:r)*s,n=i>0&&s>.05||l>0&&e<.95}let s=(r=r<0?0:r>1?1:r)*(a.RAMP.length-1)|0;if(0===s)continue;let l=i*(n?.75:"emojiOnly"===h?a.EMOJI_CHAR_RATE:a.CHAR_RATE)+7*t.seed|0;if("emojiOnly"===h||"emoji"===h&&t.emoji&&s>=a.EMOJI_MIN_LEVEL){let r=((t.seed*a.EMOJI_POOL.length|0)+l)%a.EMOJI_POOL.length;u.glyph[e]=a.EMOJI_POOL[r],u.emoji[s][u.emojiN[s]++]=e}else{let r=a.RAMP[s],n=((t.seed*r.length|0)+l)%r.length;u.glyph[e]=r[n],u.ascii[s][u.asciiN[s]++]=e}}d.clearRect(0,0,p,p);let J=b.current,V=a.RAMP.length-1,W=A.current;for(let e=0;e<3;e++)W.cur[e]+=(W.target[e]-W.cur[e])*.05;d.fillStyle=`rgb(${0|W.cur[0]},${0|W.cur[1]},${0|W.cur[2]})`;for(let e=1;e<=V;e++){let t=u.asciiN[e];if(0===t)continue;d.globalAlpha=a.ALPHA_TOP*(e/V);let r=u.ascii[e];for(let e=0;e<t;e++){let t=J[r[e]];d.fillText(u.glyph[r[e]],t.x,t.y)}}for(let e=1;e<=V;e++){let t=u.emojiN[e];if(0===t)continue;d.globalAlpha=.35+e/V*.65;let r=u.emoji[e];for(let e=0;e<t;e++){let t=J[r[e]];d.fillText(u.glyph[r[e]],t.x,t.y)}}d.globalAlpha=1,!I&&L&&(j.current=null),e=requestAnimationFrame(n)};return e=requestAnimationFrame(n),()=>cancelAnimationFrame(e)},[]),(0,t.jsx)("canvas",{ref:y,className:e,"aria-hidden":!0,style:{display:"block",pointerEvents:"none"}})}var u=e.i(922521),h=e.i(647163);let m={idle:"idle",connecting:"connecting",listening:"listening",speaking:"speaking",working:"thinking",delegating:"delegating"},f={ripple:14,pulse:0,punch:0,stretch:0},g={idle:"idle",connecting:"connecting",listening:"connecting",speaking:"speaking",working:"working",delegating:"working"},p=[247,247,247],y=[10,10,10],x={mark:{label:"Mark",hint:"A silhouette with eyes. Blinks, glances, leans into a voice.",render:function({status:e,size:r,getSpectrum:a,look:s,className:i}){return(0,t.jsx)(n.BotMark,{size:r,seed:"thursday",color:s.color,shape:s.shape,outline:s.outline,state:m[e],getSpectrum:a,options:f,notify:!1,className:i})}},ascii:{label:"Ascii",hint:"A field of characters. No eyes — the whole orb is the expression.",render:function({status:e,size:r,getSpectrum:n,look:a,className:s}){let i="dark"===(0,u.useResolvedTheme)();return(0,t.jsx)(d,{mode:g[e],size:r,color:i?p:y,getSpectrum:n,charset:a.charset,fontSize:a.fontSize,density:a.density,className:s})}}},b=(0,r.memo)(function({look:e,status:n="idle",size:a=448,className:s,...i}){let l=(0,r.useRef)(null),[o,c]=(0,r.useState)(a),[d,u]=(0,r.useState)(!1);(0,r.useEffect)(()=>{let e=l.current;if(!e)return;let t=new ResizeObserver(([e])=>{let t=Math.round(e.contentRect.width);t>0&&c(t)});return t.observe(e),()=>t.disconnect()},[]),(0,r.useEffect)(()=>{let e=requestAnimationFrame(()=>u(!0));return()=>cancelAnimationFrame(e)},[]);let m=x[e.kind].render;return(0,t.jsx)("div",{ref:l,className:(0,h.cn)("aspect-square transition-opacity duration-700 ease-out",d?"opacity-100":"opacity-0",s),children:(0,t.jsx)(m,{...i,look:e,status:n,size:o})})});e.s(["FACES",0,x,"Face",0,b],333495)},762074,e=>{"use strict";var t=e.i(271645),r=e.i(671228);let n="thursday.icon";function a(){try{let e=window.localStorage.getItem(n);return r.ThursdayFaceSchema.parse(e?JSON.parse(e):{})}catch{return r.FACE_DEFAULT}}let s=a(),i=new Set;function l(){for(let e of i)e()}e.s(["setThursdayFace",0,function(e){s=e;try{window.localStorage.setItem(n,JSON.stringify(e))}catch{}l()},"useThursdayFace",0,function(){return(0,t.useSyncExternalStore)(e=>{i.add(e);let t=e=>{e.key===n&&(s=a(),l())};return window.addEventListener("storage",t),()=>{i.delete(e),window.removeEventListener("storage",t)}},()=>s,()=>r.FACE_DEFAULT)}])},67045,e=>{"use strict";let t,r;var n=e.i(768834);let a=e=>t=>{try{let r=e(t);if(r instanceof Promise)return r;return{then:e=>a(e)(r),catch(e){return this}}}catch(e){return{then(e){return this},catch:t=>a(t)(e)}}};var s=e.i(671228);let i=s.ThursdaySettingsSchema.extend({wake:s.WakeSchema.catch(s.WAKE_DEFAULT),hotkey:s.HotkeySchema.catch(s.HOTKEY_DEFAULT),callBack:s.CallBackSchema.catch(s.CALL_BACK_DEFAULT),captionView:s.CaptionViewSchema.catch("center")}),l={systemPrompt:null,model:null,wake:s.WAKE_DEFAULT,hotkey:s.HOTKEY_DEFAULT,callBack:s.CALL_BACK_DEFAULT,captionView:"center"},o=(0,n.create)()((t=e=>({...l,patch:t=>e(t)}),r={name:"thursday.settings",merge:(e,t)=>{let r=i.safeParse(e);return{...t,...r.success?r.data:l}}},(e,n,s)=>{let i,l={storage:function(e){let t;try{t=e()}catch(e){return}return{getItem:e=>{var r;let n=e=>null===e?null:JSON.parse(e,void 0),a=null!=(r=t.getItem(e))?r:null;return a instanceof Promise?a.then(n):n(a)},setItem:(e,r)=>t.setItem(e,JSON.stringify(r,void 0)),removeItem:e=>t.removeItem(e)}}(()=>window.localStorage),partialize:e=>e,version:0,merge:(e,t)=>({...t,...e}),...r},o=!1,c=0,d=new Set,u=new Set,h=l.storage;if(!h)return t((...t)=>{console.warn(`[zustand persist middleware] Unable to update item '${l.name}', the given storage is currently unavailable.`),e(...t)});let m=()=>{let e=l.partialize({...n()});return h.setItem(l.name,{state:e,version:l.version})},f=s.setState;s.setState=(e,t)=>(f(e,t),m());let g=t((...t)=>(e(...t),m()));s.getInitialState=()=>g;let p=()=>{var t,r;if(!h)return;let s=++c;o=!1,d.forEach(e=>{var t;return e(null!=(t=n())?t:g)});let f=(null==(r=l.onRehydrateStorage)?void 0:r.call(l,null!=(t=n())?t:g))||void 0;return a(h.getItem.bind(h))(l.name).then(e=>{if(e)if("number"!=typeof e.version||e.version===l.version)return[!1,e.state];else{if(l.migrate){let t=l.migrate(e.state,e.version);return t instanceof Promise?t.then(e=>[!0,e]):[!0,t]}console.error("State loaded from storage couldn't be migrated since no migrate function was provided")}return[!1,void 0]}).then(t=>{var r;if(s!==c)return;let[a,o]=t;if(e(i=l.merge(o,null!=(r=n())?r:g),!0),a)return m()}).then(()=>{s===c&&(null==f||f(n(),void 0),i=n(),o=!0,u.forEach(e=>e(i)))}).catch(e=>{s===c&&(null==f||f(void 0,e))})};return s.persist={setOptions:e=>{l={...l,...e},e.storage&&(h=e.storage)},clearStorage:()=>{++c,null==h||h.removeItem(l.name)},getOptions:()=>l,rehydrate:()=>p(),hasHydrated:()=>o,onHydrate:e=>(d.add(e),()=>{d.delete(e)}),onFinishHydration:e=>(u.add(e),()=>{u.delete(e)})},l.skipHydration||p(),i||g}));e.s(["thursdaySettings",0,()=>{let{systemPrompt:e,model:t}=o.getState();return{systemPrompt:e,model:t,locale:"u"<typeof navigator?null:navigator.language??null}},"useThursdayStore",0,o],67045)},561540,e=>{"use strict";var t=e.i(213377);let r={[t.TOOL_NAMES.memory_recall]:"Checking your notes",[t.TOOL_NAMES.memory_remember]:"Noting that down",[t.TOOL_NAMES.memory_forget]:"Forgetting that",[t.TOOL_NAMES.memory_show]:"Putting your notes on screen",[t.TOOL_NAMES.bash]:"Doing it on this computer",[t.TOOL_NAMES.web_search]:"Searching the web",[t.TOOL_NAMES.load_skill]:"Reading how to do this",[t.TOOL_NAMES.end_call]:"Ending the call"};e.s(["toolLine",0,function(e,n){let a;if(e===t.TOOL_NAMES.tool_search||e===t.TOOL_NAMES.tool_call)return"Reaching a connected service";let s=null;if(n)try{let e=JSON.parse(n);e&&"object"==typeof e&&!Array.isArray(e)&&(s=e)}catch{}return(s&&function(e,r){if(e===t.TOOL_NAMES.delegate){let e="string"==typeof r.bot?r.bot.trim():"";return e?`Handing this to ${e}`:"Handing this over"}if(e===t.TOOL_NAMES.task){let e="string"==typeof r.task?r.task.trim():"";return"answer"===r.action?"Passing that back":"cancel"===r.action?"Stopping that":e?`Checking on ${e}`:"Checking the jobs"}return null}(e,s))??r[e]??((a=e.indexOf("__"))<=0?null:`Reaching ${e.slice(0,a).replace(/[-_]/g," ")}`)}])},319841,e=>{"use strict";var t=e.i(271645);let r=["ctrl","alt","meta"],n=/^(Control|Alt|Shift|Meta|OS)/,a=/^(input|textarea|select)$/i;function s(e){let{code:t,ctrlKey:r,altKey:a,shiftKey:s,metaKey:i}=e;if(!t||n.test(t)||!r&&!a&&!i)return null;let l=[];return r&&l.push("ctrl"),a&&l.push("alt"),s&&l.push("shift"),i&&l.push("meta"),[...l,t].join("+")}let i={ctrl:["Ctrl","⌃"],alt:["Alt","⌥"],shift:["Shift","⇧"],meta:["Meta","⌘"]};e.s(["HOTKEY_CAPTURE",0,{"data-hotkey-capture":""},"comboOf",0,s,"isCombo",0,e=>{let t=e.split("+"),a=t.at(-1);return!!(a&&!n.test(a)&&t.slice(0,-1).some(e=>r.includes(e)))},"useHotkey",0,function({enabled:e,combo:r,onPress:n}){let i=(0,t.useRef)(n);i.current=n,(0,t.useEffect)(()=>{if(!e||!r)return;let t=e=>{var t;e.repeat||(t=e.target)&&(a.test(t.tagName)||t.isContentEditable||t.closest?.("[data-hotkey-capture]"))||s(e)===r&&(e.preventDefault(),i.current())};return window.addEventListener("keydown",t),()=>window.removeEventListener("keydown",t)},[e,r])},"useHotkeyLabel",0,function(e){let[r,n]=(0,t.useState)(!1);return(0,t.useEffect)(()=>n(/mac/i.test(navigator.userAgent)),[]),e?function(e,t=!1){let r=e.split("+"),n=r.at(-1)??"",a=r.slice(0,-1).map(e=>i[e]?.[+!!t]??e),s=n.replace(/^(Key|Digit|Numpad)/,"").replace(/([a-z])([A-Z])/g,"$1 $2")||n;return t?[...a,s].join(""):[...a,s].join(" + ")}(e,r):null}])}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,161483,e=>{"use strict";var t=e.i(843476),n=e.i(647163);e.s(["Swatch",0,function({color:e,picked:s,onPick:r}){return(0,t.jsx)("button",{type:"button",onClick:r,"aria-label":e??"Follow the theme",style:e?{backgroundColor:e}:void 0,className:(0,n.cn)("size-5 rounded-full outline-none transition-transform hover:scale-110 focus-visible:ring-3 focus-visible:ring-ring/50",!e&&"bg-foreground",s&&"ring-2 ring-foreground/40 ring-offset-2 ring-offset-background")})}])},59158,e=>{"use strict";var t=e.i(843476),n=e.i(689664),s=e.i(466787),r=e.i(271645),l=e.i(798120),a=e.i(167881),i=e.i(736185),o=e.i(23750),c=e.i(917162),u=e.i(421429),d=e.i(161483),h=e.i(184762),m=e.i(968978),x=e.i(265402),p=e.i(864723),f=e.i(692329),g=e.i(895836),v=e.i(867927),b=e.i(456420);let y={name:"phone",size:24,node:[["path",{d:"M13.832 16.568a1 1 0 0 0 1.213-.303l.355-.465A2 2 0 0 1 17 15h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2A18 18 0 0 1 2 4a2 2 0 0 1 2-2h3a2 2 0 0 1 2 2v3a2 2 0 0 1-.8 1.6l-.468.351a1 1 0 0 0-.292 1.233 14 14 0 0 0 6.392 6.384",key:"9njp5v"}]]};y.node;let j=(0,b.default)(y);var k=e.i(759659),S=e.i(671428),N=e.i(222055),w=e.i(245629),C=e.i(609856),A=e.i(661504),E=e.i(647163),R=e.i(95187);let T=(0,R.createServerReference)("7f29328bcf3078dae4a7f684b4ba777765998c955c",R.callServer,void 0,R.findSourceMapURL,"deleteCallAction");var _=e.i(671228),K=e.i(561540),M=e.i(635963),O=e.i(762074);function z({size:e=16,className:n}){let s=(0,O.useThursdayFace)();return(0,t.jsx)(M.BotMark,{size:e,seed:"thursday",color:s.color,shape:s.shape,outline:s.outline,notify:!1,className:n})}function I(){return(0,t.jsx)(g.SettingGroup,{label:"Transcripts",children:(0,t.jsx)(g.SettingItems,{children:(0,t.jsxs)("button",{type:"button",onClick:()=>c.notify.component({className:"sm:max-w-3xl",renderer:()=>(0,t.jsx)(g.SettingDialogContent,{title:"Call history",description:"Everything said on the line, oldest at the top. Scroll up for older calls.",children:(0,t.jsx)(L,{})})}),className:"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,t.jsx)("span",{className:"grid size-10 shrink-0 place-items-center rounded-lg bg-muted text-muted-foreground",children:(0,t.jsx)(j,{className:"size-4"})}),(0,t.jsxs)("span",{className:"min-w-0 flex-1 space-y-0.5",children:[(0,t.jsx)("span",{className:"block text-sm font-medium",children:"Call history"}),(0,t.jsx)("span",{className:"block text-xs text-muted-foreground",children:"Every call, word for word — hers and yours"})]}),(0,t.jsx)(v.ChevronRight,{className:"size-4 shrink-0 text-muted-foreground"})]})})})}let P="h-[min(34rem,58vh)] min-h-64 px-1";function L(){let{items:e,isLoading:n,isLoadingMore:s,error:a,hasMore:i,sentinelRef:o,refresh:c}=(0,A.useServerPages)({key:(e,t)=>{if(0===e)return l.queryKey.callHistory(null);let n=t?.at(-1);return n?l.queryKey.callHistory((0,w.toDate)(n.startedAt).toISOString()):null},size:_.CALL_HISTORY_PAGE,swr:{revalidateOnFocus:!1}}),u=(0,r.useMemo)(()=>[...e].reverse(),[e]),d=(0,r.useRef)(null),h=(0,r.useRef)(!1),m=(0,r.useRef)(0);return((0,r.useLayoutEffect)(()=>{let e=d.current;e&&0!==u.length&&(h.current?e.scrollTop=e.scrollHeight-m.current:(h.current=!0,e.scrollTop=e.scrollHeight),m.current=e.scrollHeight-e.scrollTop)},[u]),n)?(0,t.jsx)("div",{className:(0,E.cn)(P,"overflow-hidden"),children:(0,t.jsx)(H,{})}):a?(0,t.jsx)(g.SettingError,{message:a.message}):(0,t.jsx)(t.Fragment,{children:0===u.length?(0,t.jsx)("p",{className:"px-1 text-sm leading-relaxed text-muted-foreground",children:"No calls yet. Everything said on the line is kept here — hers and yours, in the order it was said."}):(0,t.jsxs)("div",{ref:d,onScroll:e=>{let t=e.currentTarget;m.current=t.scrollHeight-t.scrollTop},className:(0,E.cn)(P,"overflow-y-auto overscroll-contain pb-6"),children:[(0,t.jsx)(g.SettingMore,{hasMore:i,loading:s,sentinelRef:o,count:1,ghost:(0,t.jsx)(H,{})}),u.map(e=>(0,t.jsx)(D,{call:e,onDropped:c},e.id))]})})}function H(){return(0,t.jsxs)("div",{className:"space-y-3 pb-3",children:[(0,t.jsxs)("div",{className:"flex items-center gap-3 py-5",children:[(0,t.jsx)("span",{className:"h-px flex-1 bg-border/60"}),(0,t.jsx)(S.Skeleton,{className:"h-6 w-36 rounded-full"}),(0,t.jsx)("span",{className:"h-px flex-1 bg-border/60"}),(0,t.jsx)("span",{className:"size-7 shrink-0"})]}),(0,t.jsx)("div",{className:"flex justify-end",children:(0,t.jsx)(S.Skeleton,{className:"h-9 w-3/5 rounded-2xl rounded-br-md"})}),(0,t.jsx)(S.Skeleton,{className:"h-5 w-2/3"})]})}function D({call:e,onDropped:n}){let[s,r]=(0,C.useServerAction)(T,{okMessage:"Call deleted",onOk:n}),l=(0,w.toDate)(e.startedAt),i=e.turns.at(-1),o=e.endedAt&&i?function(e,t){let n=Math.max(0,Math.round((t.getTime()-e.getTime())/1e3));if(n<60)return`${n}s`;let s=Math.floor(n/60);return s<60?`${s}m ${String(n%60).padStart(2,"0")}s`:`${Math.floor(s/60)}h ${String(s%60).padStart(2,"0")}m`}(l,(0,w.toDate)(i.at)):"on the line",u=async()=>{await c.notify.confirm({title:`Delete the call from ${(0,w.whenOf)(l)}?`,description:"Every turn of it goes — and she stops reading it back into the next call.",okText:"Delete",destructive:!0})&&s(e.id)};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{className:"group flex items-center gap-3 py-5",children:[(0,t.jsx)("span",{className:"h-px flex-1 bg-border/60"}),(0,t.jsxs)("span",{title:`${e.provider} \xb7 ${e.model}`,className:"flex shrink-0 items-center gap-2 rounded-full bg-muted/60 py-1 pr-3 pl-2.5 ring-1 ring-border/50",children:[(0,t.jsx)(j,{className:"size-3 text-muted-foreground"}),(0,t.jsx)("span",{className:"font-mono text-[11px]",children:(0,w.whenOf)(l)}),(0,t.jsx)("span",{className:"font-mono text-[10px] text-muted-foreground",children:o})]}),(0,t.jsx)("span",{className:"h-px flex-1 bg-border/60"}),(0,t.jsx)("span",{className:"flex size-7 shrink-0 items-center justify-center",children:e.endedAt&&(0,t.jsx)(a.Button,{size:"icon-sm",variant:"ghost",loading:r,"aria-label":"Delete this call",onClick:u,className:"text-muted-foreground/60 opacity-0 transition-opacity group-hover:opacity-100 hover:text-destructive focus-visible:opacity-100",children:(0,t.jsx)(k.Trash2,{})})})]}),(function(e){let t=[];for(let n of e){let e=t.at(-1);if(e&&"tool"===n.role&&"tool"===e.turn.role&&e.turn.tool===n.tool&&e.turn.text===n.text){e.repeats+=1;continue}t.push({turn:n,repeats:1})}return t})(e.turns).map(({turn:e,repeats:n},s,r)=>{let l=r[s-1]?.turn,a=r[s+1]?.turn;return(0,t.jsx)(F,{turn:e,repeats:n,opensRun:l?.role!==e.role,closesRun:a?.role!==e.role},e.id)})]})}function F({turn:e,opensRun:n,closesRun:s,repeats:r=1}){if("tool"===e.role)return(0,t.jsx)($,{turn:e,repeats:r});let l="user"===e.role;return(0,t.jsxs)("div",{className:(0,E.cn)("flex items-end gap-2",n?"mt-3":"mt-1",l?"justify-end":"justify-start"),children:[!l&&(0,t.jsx)("span",{className:"mb-0.5 grid size-[18px] shrink-0 place-items-center",children:s&&(0,t.jsx)(z,{size:18})}),(0,t.jsx)("p",{className:(0,E.cn)("max-w-[min(34rem,78%)] px-3.5 py-2 text-[13.5px] leading-relaxed break-keep whitespace-pre-wrap",l?"rounded-2xl bg-muted":"rounded-2xl bg-card ring-1 ring-border/70",s&&(l?"rounded-br-sm":"rounded-bl-sm")),children:e.text})]})}function $({turn:e,repeats:n}){let s=e.tool??"",r=(0,N.toolIcon)(s),l=(0,K.toolLine)(s,e.text);return(0,t.jsx)("div",{className:"mt-3 mb-1 flex justify-center",children:(0,t.jsxs)("span",{className:"flex max-w-full items-center gap-2 rounded-full bg-muted/40 px-2.5 py-1 text-muted-foreground",children:[(0,t.jsx)(r,{className:"size-3 shrink-0"}),l&&(0,t.jsx)("span",{className:"truncate text-[11px] break-keep",children:l}),(0,t.jsx)("span",{className:"shrink-0 font-mono text-[10px] text-muted-foreground/60",children:s}),n>1&&(0,t.jsxs)("span",{className:"shrink-0 font-mono text-[10px] text-muted-foreground/70",children:["×",n]})]})})}var G=e.i(333495),B=e.i(933916);let V=(0,R.createServerReference)("7fe5c884f4fb671d28ff1bab55b744857f55c93328",R.callServer,void 0,R.findSourceMapURL,"resetHistoryAction"),W=(0,R.createServerReference)("7fb6b4fcdb83b1715c04c2cdf86e243fddb9fdecd9",R.callServer,void 0,R.findSourceMapURL,"setCallSkillsAction");var q=e.i(67045),U=e.i(698570),Y=e.i(319841),X=e.i(981203),Z=e.i(283653);function J(){let{data:e}=(0,Z.useServerRoute)(l.queryKey.callSkills),[n]=(0,C.useServerAction)(W,{onOk:()=>(0,Z.revalidate)(l.queryKey.callSkills)});return(0,t.jsx)(g.SettingGroup,{label:"Skills",children:(0,t.jsx)(g.SettingToggle,{label:"Read a skill herself",description:"A skill is how a thing is done here, written down. On, she opens one mid-call and follows it; off, only bots read them.",checked:e??!1,disabled:void 0===e,onChange:e=>n(e),children:(0,t.jsx)(Q,{})})})}function Q(){let{data:e}=(0,Z.useServerRoute)(l.queryKey.skills);return e?(0,t.jsx)(g.SettingNote,{className:(0,E.cn)(!e.length&&E.WAITING_INK),children:e.length?`The same ${e.length} a bot reads. Each one she opens spends a page of the call on it.`:"Nothing installed yet — there is nothing for her to read."}):null}function ee(){let[e,n]=(0,C.useServerAction)(V,{okMessage:({calls:e,tasks:t,notes:n})=>`Wiped ${e} calls, ${t} jobs, ${n} notes`,onOk:()=>{(0,Z.revalidate)(l.queryKey.memory),(0,Z.revalidate)(l.queryKey.tasks),(0,Z.revalidate)(l.queryKey.callHistory(null))}}),r=async()=>{await c.notify.confirm({title:"Reset history?",description:"Every call, every job and everything she remembers is deleted for good. Keys, bots and connectors stay.",okText:"Reset",destructive:!0})&&e()};return(0,t.jsx)(g.SettingGroup,{label:"Danger zone",note:"Keys, bots and connectors stay.",children:(0,t.jsx)(g.SettingItems,{children:(0,t.jsxs)("div",{className:"flex items-center gap-3 p-4",children:[(0,t.jsx)("span",{className:"grid size-10 shrink-0 place-items-center rounded-lg bg-muted text-muted-foreground",children:(0,t.jsx)(s.TriangleAlert,{className:"size-4"})}),(0,t.jsxs)("span",{className:"min-w-0 flex-1 space-y-0.5",children:[(0,t.jsx)("span",{className:"block text-sm font-medium",children:"Reset history"}),(0,t.jsx)("span",{className:"block text-xs text-muted-foreground",children:"Every call, every job and everything she remembers"})]}),(0,t.jsx)(a.Button,{variant:"outline",size:"sm",loading:n,onClick:r,className:"shrink-0 text-destructive hover:text-destructive",children:"Reset"})]})})})}function et({value:e,onChange:n}){let s=t=>n({...e,...t});return(0,t.jsx)(g.SettingGroup,{label:"Face",children:(0,t.jsxs)("div",{className:"space-y-5 py-2",children:[(0,t.jsxs)("div",{className:"flex flex-col items-center gap-4 pt-2",children:[(0,t.jsx)(G.Face,{look:e,size:176,className:"w-44"}),(0,t.jsx)(u.Segmented,{"aria-label":"Face",options:B.FACE_KINDS.map(e=>({value:e,label:G.FACES[e].label})),value:e.kind,onChange:e=>s({kind:e})}),(0,t.jsx)("p",{className:"max-w-sm text-center text-xs text-muted-foreground",children:G.FACES[e.kind].hint})]}),"mark"===e.kind&&(0,t.jsx)("div",{className:"flex justify-center px-2",children:(0,t.jsxs)("div",{className:"flex flex-col gap-2.5",children:[(0,t.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,t.jsx)(d.Swatch,{color:null,picked:!e.color,onPick:()=>s({color:void 0})}),(0,t.jsx)("span",{className:"w-2"}),p.MARK_PALETTE_ROWS[0].map(n=>(0,t.jsx)(d.Swatch,{color:n,picked:e.color===n,onPick:()=>s({color:n})},n))]}),(0,t.jsx)("div",{className:"flex flex-wrap items-center gap-2 pl-9",children:p.MARK_PALETTE_ROWS[1].map(n=>(0,t.jsx)(d.Swatch,{color:n,picked:e.color===n,onPick:()=>s({color:n})},n))})]})}),"mark"===e.kind&&(0,t.jsx)(es,{label:"Shape",children:(0,t.jsx)(u.Segmented,{"aria-label":"Shape",options:p.MARK_SHAPES.map(e=>({value:e,label:(0,t.jsx)("span",{className:"capitalize",children:e})})),value:e.shape??"blob",onChange:e=>s({shape:e})})}),"mark"===e.kind&&(0,t.jsx)(es,{label:"Style",children:(0,t.jsx)(u.Segmented,{"aria-label":"Style",options:[{value:"solid",label:"Solid"},{value:"outline",label:"Outline"}],value:e.outline?"outline":"solid",onChange:e=>s({outline:"outline"===e||void 0})})}),"ascii"===e.kind&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(es,{label:"Glyphs",children:(0,t.jsx)(u.Segmented,{"aria-label":"Glyphs",options:B.ASCII_CHARSETS.map(e=>({value:e,label:en[e]})),value:e.charset,onChange:e=>s({charset:e})})}),(0,t.jsx)(es,{label:"Size",children:(0,t.jsx)(er,{min:4,max:16,step:1,value:e.fontSize,format:e=>`${e}px`,onChange:e=>s({fontSize:e})})}),(0,t.jsx)(es,{label:"Density",children:(0,t.jsx)(er,{min:.6,max:2,step:.1,value:e.density,format:e=>`${e.toFixed(1)}x`,onChange:e=>s({density:e})})})]})]})})}let en={ascii:"Characters",emoji:"Sprinkled",emojiOnly:"All emoji"};function es({label:e,children:n}){return(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[(0,t.jsx)("span",{className:"w-16 shrink-0 font-mono text-[11px] text-muted-foreground",children:e}),n]})}function er({value:e,onChange:n,format:s,...r}){return(0,t.jsxs)("span",{className:"flex min-w-0 flex-1 items-center gap-3",children:[(0,t.jsx)("input",{type:"range",...r,value:e,onChange:e=>n(Number(e.target.value)),className:"min-w-0 flex-1 accent-foreground"}),(0,t.jsx)("span",{className:"w-10 shrink-0 text-right font-mono text-[11px] text-muted-foreground tabular-nums",children:s(e)})]})}function el({provider:e,value:r,hasKey:l,onPick:a}){let o=!!r,c=r?.voice??e.defaultVoice,u=r?.model??"";return(0,t.jsxs)("div",{className:(0,E.cn)("p-4",o&&"bg-muted/40"),children:[(0,t.jsxs)("button",{type:"button",disabled:o,onClick:()=>a({voice:null,model:null}),className:"flex w-full items-center gap-3 text-left outline-none focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-default",children:[(0,t.jsx)(m.ProviderIcon,{provider:e.id,className:"size-4 shrink-0"}),(0,t.jsxs)("span",{className:"min-w-0 flex-1 space-y-0.5",children:[(0,t.jsx)("span",{className:"block truncate text-sm font-medium",children:e.label}),(0,t.jsx)("span",{className:"block truncate font-mono text-xs text-muted-foreground",children:u||e.models[0].id})]}),l?o&&(0,t.jsx)(n.Check,{className:"size-4 shrink-0"}):(0,t.jsxs)("span",{className:"flex shrink-0 items-center gap-1 font-mono text-[11px] text-muted-foreground",children:[(0,t.jsx)(s.TriangleAlert,{className:"size-3"}),"No key"]})]}),o&&(0,t.jsxs)("div",{className:"space-y-3 pt-3",children:[(0,t.jsx)(i.Combobox,{value:u,onChange:e=>a({voice:r?.voice??null,model:e||null}),options:e.models.map(e=>({value:e.id,label:e.label,hint:e.id})),"aria-label":`${e.label} realtime model`,placeholder:e.models[0].id,empty:"Not on the list — it still runs"}),(0,t.jsx)("div",{className:"flex flex-wrap gap-1.5",children:e.voices.map(e=>(0,t.jsx)("button",{type:"button",onClick:()=>a({voice:e,model:r?.model??null}),className:(0,E.cn)("rounded-full border px-2.5 py-1 font-mono text-[11px] transition-colors outline-none focus-visible:ring-3 focus-visible:ring-ring/50",e===c?"border-foreground/40 text-foreground":"border-border/60 text-muted-foreground hover:text-foreground"),children:e},e))})]})]})}let ea={center:{label:"Her last line",hint:"One caption under the mark — only what she said."},sides:{label:"Last three turns",hint:"Hers on the left, yours on the right, beside the mark."}};function ei({value:e,onChange:n}){return(0,t.jsx)(g.SettingGroup,{label:"Calls you",note:"off"!==e&&"Needs this tab open. A tab that has been silent since it loaded may not be allowed to make a sound — the desktop notification covers that.",children:(0,t.jsx)(g.SettingChoiceRows,{options:_.CALL_BACK_MODES.map(e=>({value:e,label:_.CALL_BACK_LABEL[e],hint:eo[e]})),value:e,onChange:n})})}let eo={off:"Nothing opens a call but you.",waiting:"A job that stopped to ask gets her to ring you.",any:"Anything a bot finishes, she opens a line to tell you."};function ec({value:e,onChange:n}){return(0,t.jsx)(g.SettingGroup,{label:"Captions",children:(0,t.jsx)(g.SettingChoiceRows,{options:_.CAPTION_VIEWS.map(e=>({value:e,label:ea[e].label,hint:ea[e].hint})),value:e,onChange:n})})}function eu({value:e,onChange:n}){let s=(0,U.useDraft)(e.phrase,t=>n({...e,phrase:t}),{min:_.WAKE_PHRASE.min}),r=s.value.trim().split(/\s+/).length<2;return(0,t.jsx)(g.SettingGroup,{label:"Wake",children:(0,t.jsx)(g.SettingToggle,{label:"Answer to her name",description:"Between calls, the browser listens for the phrase below and picks up when it hears it.",checked:e.enabled,onChange:t=>n({...e,enabled:t}),children:(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)(o.Input,{value:s.value,maxLength:_.WAKE_PHRASE.max,spellCheck:!1,onChange:e=>s.set(e.target.value),onBlur:s.commit,onKeyDown:s.onKeyDown,"aria-label":"Wake phrase",className:"font-mono text-sm"}),(0,t.jsx)(g.SettingNote,{children:r?"One word will wake her by accident — say hello first.":"Heard loosely, in English. Near misses count."})]})})})}function ed({value:e,onChange:n}){let[s,l]=(0,r.useState)(!1),[a,i]=(0,r.useState)(!1),o=(0,Y.useHotkeyLabel)((0,Y.isCombo)(e.combo)?e.combo:null);return(0,t.jsx)(g.SettingGroup,{label:"Shortcut",children:(0,t.jsx)(g.SettingToggle,{label:"Answer to a key",description:"With this tab in front, the key below starts a call — and ends the one that is running.",checked:e.enabled,onChange:t=>n({...e,enabled:t}),children:(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)("button",{type:"button",...Y.HOTKEY_CAPTURE,onClick:()=>{i(!1),l(!0)},onBlur:()=>l(!1),onKeyDown:s?t=>{if("Tab"===t.key)return;if(t.preventDefault(),t.stopPropagation(),"Escape"===t.key)return l(!1);let s=(0,Y.comboOf)(t.nativeEvent);if(!s)return i(!0);i(!1),l(!1),n({...e,combo:s})}:void 0,className:(0,E.cn)("w-full rounded-lg border px-3 py-2 font-mono text-sm outline-none transition-colors focus-visible:ring-3 focus-visible:ring-ring/50",s?"border-foreground/40 text-muted-foreground":"border-border/60 hover:bg-muted/50"),children:s?"Press the keys…":o??"Set a shortcut"}),(0,t.jsx)(g.SettingNote,{children:a?"Hold Ctrl, Alt or Cmd — a plain key is typing.":s?"Esc to keep the one you have.":"Only while this tab has focus. Not while you are typing."})]})})})}function eh({value:e,onSave:n}){let[s,l]=(0,r.useState)(e);return(0,t.jsx)(g.SettingGroup,{label:"Instructions",right:`${s.length}/${X.COMMON_VALIDATE.prompt.max}`,children:(0,t.jsxs)("div",{className:"space-y-3",children:[(0,t.jsx)(h.Textarea,{value:s,maxLength:X.COMMON_VALIDATE.prompt.max,onChange:e=>l(e.target.value),placeholder:"Anything else she should know before the first word — how to address you, what to skip.",className:"min-h-28"}),(0,t.jsx)("div",{className:"flex justify-end",children:(0,t.jsx)(a.Button,{size:"sm",disabled:s===e,onClick:()=>n(s),children:"Save"})})]})})}e.s(["ThursdaySetting",0,function(){let e=(0,q.useThursdayStore)(),n=(0,q.useThursdayStore)(e=>e.patch),{data:s=[],isLoading:r,error:a}=(0,Z.useServerRoute)(l.queryKey.llmModel),i=(0,O.useThursdayFace)();if(r)return(0,t.jsx)(g.SettingSkeleton,{rows:4});if(a)return(0,t.jsx)(g.SettingError,{message:a.message});let o=e.model?.provider??null;return(0,t.jsxs)(g.SettingScreen,{footer:(0,t.jsx)(g.SettingRailNote,{children:"Her prompt is assembled fresh on every call — memory, the roster and your skills go in."}),children:[(0,t.jsx)(et,{value:i,onChange:O.setThursdayFace}),(0,t.jsx)(I,{}),(0,t.jsx)(g.SettingGroup,{label:"Voice",note:!o&&"Nothing picked — calls run on whichever key is set.",children:(0,t.jsx)(g.SettingItems,{children:x.SPEACH_MODEL_PROVIDER_LIST.map(r=>{let l;return(0,t.jsx)(el,{provider:r,value:o===r.id?e.model:null,hasKey:(l=r.apiKeyName,s.some(e=>e.apiKeyName===l&&e.hasKey)),onPick:e=>n({model:{provider:r.id,...e}})},r.id)})})}),(0,t.jsx)(ec,{value:e.captionView,onChange:e=>n({captionView:e})}),(0,t.jsx)(eu,{value:e.wake,onChange:e=>n({wake:e})}),(0,t.jsx)(ei,{value:e.callBack,onChange:e=>n({callBack:e})}),(0,t.jsx)(ed,{value:e.hotkey,onChange:e=>n({hotkey:e})}),(0,t.jsx)(J,{}),(0,t.jsx)(f.TidySetting,{}),(0,t.jsx)(eh,{value:e.systemPrompt??"",onSave:e=>n({systemPrompt:e})}),(0,t.jsx)(ee,{})]})}],59158)},698570,e=>{"use strict";var t=e.i(271645);e.s(["useDraft",0,function(e,n,{min:s=1}={}){let[r,l]=(0,t.useState)(e),[a,i]=(0,t.useState)(e);return e!==a&&(i(e),l(e)),{value:r,set:l,commit:()=>{let t=r.trim();if(t.length<s)return l(e);l(t),t!==e&&n(t)},onKeyDown:e=>{"Enter"!==e.key||e.nativeEvent.isComposing||e.currentTarget.blur()}}}])},661504,e=>{"use strict";var t=e.i(271645),n=e.i(699018),s=e.i(677309),r=e.i(271235),l=e.i(802239),a=e.i(646192);let i=Promise.resolve(),o=(0,r.withMiddleware)(n.u,e=>(n,r,o)=>{let c,u=(0,t.useRef)(!1),{cache:d,initialSize:h=1,revalidateAll:m=!1,persistSize:x=!1,revalidateFirstPage:p=!0,revalidateOnMount:f=!1,parallel:g=!1}=o,[,,,v]=s.a.get(s.o);try{(c=(0,s.s)(n?n(0,null):null)[0])&&(c=a.INFINITE_PREFIX+c)}catch(e){}let[b,y,j]=(0,s.c)(d,c),k=(0,t.useCallback)(()=>(0,s.i)(b()._l)?h:b()._l,[d,c,h]);(0,l.useSyncExternalStore)((0,t.useCallback)(e=>c?j(c,()=>{e()}):()=>{},[d,c]),k,k);let S=(0,t.useCallback)(()=>{let e=b()._l;return(0,s.i)(e)?h:e},[c,h]),N=(0,t.useRef)(S());(0,s.u)(()=>{if(!u.current){u.current=!0;return}c&&y({_l:x?N.current:S()})},[c,d]);let w=f&&!u.current,C=e(c,async e=>{let t=b()._i,l=b()._r,a=s.a.get(d),i=a[8],c=()=>a[8]!==i;y({_r:s.U});let u=[],h=S(),[x]=(0,s.c)(d,e),f=x().data,j=[],k=null;for(let e=0;e<h;++e){let[a,i]=(0,s.s)(n(e,g?null:k));if(!a)break;let[h,x]=(0,s.c)(d,a),b=h().data,y=m||t||(0,s.i)(b)||p&&!e&&!(0,s.i)(f)||w||f&&!(0,s.i)(f[e])&&!o.compare(f[e],b);if(r&&("function"==typeof l?l(b,i):y)){let t=async()=>{if(a in v){let e=v[a];delete v[a],b=await e}else b=await r(i);c()||x({data:b,_k:i}),u[e]=b};g?j.push(t):await t()}else u[e]=b;g||(k=b)}return g&&await Promise.all(j.map(e=>e())),c()||y({_i:s.U}),u},o),A=(0,t.useCallback)(function(e,t){let n="boolean"==typeof t?{revalidate:t}:t||{},r=!1!==n.revalidate;return c?(r&&((0,s.i)(e)?y({_i:!0,_r:n.revalidate}):y({_i:!1,_r:n.revalidate})),arguments.length?C.mutate(e,{...n,revalidate:r}):C.mutate()):i},[c,d]),E=(0,t.useCallback)(e=>{let t;if(!c)return i;let[,r]=(0,s.c)(d,c);if((0,s.e)(e)?t=e(S()):"number"==typeof e&&(t=e),"number"!=typeof t)return i;r({_l:t}),N.current=t;let l=[],[a]=(0,s.c)(d,c),o=null;for(let e=0;e<t;++e){let[t]=(0,s.s)(n(e,o)),[r]=(0,s.c)(d,t),i=t?r().data:s.U;if((0,s.i)(i))return A(a().data);l.push(i),o=i}return A(l)},[c,d,A,S]);return{size:S(),setSize:E,mutate:A,get data(){return C.data},get error(){return C.error},get isValidating(){return C.isValidating},get isLoading(){return C.isLoading}}});var c=e.i(41533),u=e.i(283653);e.s(["useServerPages",0,function(e){let n=e.size??c.PAGE_SIZE,{key:s}=e,{data:r,error:l,isLoading:a,isValidating:i,setSize:d,mutate:h}=o((e,t)=>(0,u.resolveKey)(s(e,t)),u.fetchRoute,{dedupingInterval:500,revalidateOnMount:!0,revalidateOnFocus:!0,revalidateOnReconnect:!0,focusThrottleInterval:1e3,revalidateFirstPage:!1,...e.swr}),m=r??[],x=m.flat(),p=m.at(-1),f=void 0!==p&&p.length>=n,g=(0,t.useRef)(0),v=i&&m.length>0&&g.current>m.length,b=(0,t.useRef)({isValidating:i,setSize:d,pages:m.length});b.current={isValidating:i,setSize:d,pages:m.length};let y=(0,u.resolveKey)(s(0,null)),j="string"==typeof y?y:y?.url;(0,t.useEffect)(()=>{if(j)return(0,u.registerPagedReader)({url:j,refresh:()=>h()})},[j,h]);let k=function(e,n={}){let{enabled:s=!0,margin:r="600px",revision:l}=n,a=(0,t.useRef)(e);a.current=e;let i=(0,t.useRef)(null),o=(0,t.useRef)(null),c=(0,t.useCallback)(e=>{i.current=e},[]);return(0,t.useEffect)(()=>{o.current?.disconnect();let e=i.current;if(e&&s)return o.current=new IntersectionObserver(([e])=>{e.isIntersecting&&a.current()},{root:function(e){let t=e.parentElement;for(;t;){let{overflowY:e}=getComputedStyle(t);if(("auto"===e||"scroll"===e)&&t.scrollHeight>t.clientHeight)return t;t=t.parentElement}return null}(e),rootMargin:r}),o.current.observe(e),()=>o.current?.disconnect()},[s,r,l]),c}(()=>{let e=b.current;e.isValidating||(g.current=e.pages+1,e.setSize(e.pages+1))},{enabled:f,revision:`${m.length}:${i}`});return{items:x,isLoading:a,isLoadingMore:v,error:l,hasMore:f,sentinelRef:k,refresh:()=>h()}}],661504)},759659,e=>{"use strict";var t=e.i(456420);let n={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"]};n.node;let s=(0,t.default)(n);e.s(["Trash2",0,s],759659)}]);
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,379072,e=>{"use strict";let t={echoCancellation:!0,noiseSuppression:!0,autoGainControl:!0};async function r(e){let r=await navigator.mediaDevices.getUserMedia({audio:t}),i=new AudioContext({sampleRate:24e3});try{var s,l,c;await i.audioWorklet.addModule(a??=URL.createObjectURL(new Blob([o],{type:"application/javascript"})));let t=i.createMediaStreamSource(r),u=new AudioWorkletNode(i,n);u.port.onmessage=t=>{let r=t.data,n=new Int16Array(r.length);for(let e=0;e<r.length;e++){let t=Math.max(-1,Math.min(1,r[e]));n[e]=t<0?32768*t:32767*t}e(n)},t.connect(u);let d=i.createGain();return d.gain.value=0,u.connect(d).connect(i.destination),await i.resume(),s=r,l=i,c=u,{stream:s,setMuted(e){for(let t of s.getAudioTracks())t.enabled=!e},close(){for(let e of(c.port.onmessage=null,s.getTracks()))e.stop();l.close()}}}catch(e){for(let e of r.getTracks())e.stop();throw i.close(),e}}let n="voice-capture",o=`
|
|
2
|
-
class VoiceCapture extends AudioWorkletProcessor {
|
|
3
|
-
constructor() {
|
|
4
|
-
super();
|
|
5
|
-
this.frame = new Float32Array(1024);
|
|
6
|
-
this.filled = 0;
|
|
7
|
-
}
|
|
8
|
-
process(inputs) {
|
|
9
|
-
const input = inputs[0] && inputs[0][0];
|
|
10
|
-
if (!input) return true;
|
|
11
|
-
for (let i = 0; i < input.length; i++) {
|
|
12
|
-
this.frame[this.filled++] = input[i];
|
|
13
|
-
if (this.filled === this.frame.length) {
|
|
14
|
-
this.port.postMessage(this.frame.slice());
|
|
15
|
-
this.filled = 0;
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
return true;
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
registerProcessor("${n}", VoiceCapture);
|
|
22
|
-
`,a=null;e.s(["MICROPHONE_CONSTRAINTS",0,t,"PCM_SAMPLE_RATE",0,24e3,"createPcmPlayer",0,function(e,t){let{context:r,analyser:n}=e.speaker(),o=0,a=new Set;return{push(e){if(0===e.length)return;let i=r.createBuffer(1,e.length,24e3),s=i.getChannelData(0);for(let t=0;t<e.length;t++)s[t]=e[t]/32768;let l=r.createBufferSource();l.buffer=i,l.connect(n),l.onended=()=>{a.delete(l),0===a.size&&t()},o=Math.max(o,r.currentTime+.06),l.start(o),o+=i.duration,a.add(l)},stop(){for(let e of a){e.onended=null;try{e.stop()}catch{}}a.clear(),o=0},get speaking(){return a.size>0}}},"decodePcm",0,function(e){let t=atob(e),r=new Uint8Array(t.length);for(let e=0;e<t.length;e++)r[e]=t.charCodeAt(e);return new Int16Array(r.buffer,0,r.length>>1)},"encodePcm",0,function(e){let t=new Uint8Array(e.buffer,e.byteOffset,e.byteLength),r="";for(let e=0;e<t.length;e+=32768)r+=String.fromCharCode(...t.subarray(e,e+32768));return btoa(r)},"openMicrophone",0,r])},460548,e=>{"use strict";var t=e.i(647163);e.s(["realtimeSession",0,function(e){return({credential:r,setup:n,audio:o,on:a})=>{let i=!1,s=null,l=null,c=[],u=new Map,d=new Set,p=(e,t)=>{u.has(e)||(u.set(e,c.length),c.push({id:e,role:t,text:""}))},m=(e,t)=>{let r=c[e];r.text.trim()&&a.turn({...r,seq:e,done:t})},f=(e,t,r,n)=>{p(e,t);let o=u.get(e),a=c[o].text,i="append"===n?a+r:r;i!==a&&(c[o]={...c[o],text:i},d.has(e)||m(o,!1))},h=e=>{let t=u.get(e);void 0===t||d.has(e)||c[t].text.trim()&&(d.add(e),m(t,!0))},g=!1,_=!1,y=!1,b=!1,w=null,v=null,T=new Map,k=0,S=!1,M=[],P=[],A="",C=()=>{w&&clearTimeout(w),w=null},E=()=>{v&&clearTimeout(v),v=null},O=()=>{if(i)return;let e=T.size>0||S||k>0,t={speaking:g,hearing:_,tools:e?M:[]},r=JSON.stringify(t);if(r!==A&&(A=r,a.activity(t)),_||y||w||g||T.size>0)return;let n=k>0;if(n||0!==P.length){for(let e of P.splice(0))x.send({type:"conversation.item.create",item:{type:"message",role:"system",content:[{type:"input_text",text:e}]}});k=0,S=n,y=!0,b=!0,E(),v=setTimeout(()=>{v=null,b&&(b=!1,y=!1,a.warn("The voice API never answered a response we asked for."),O())},5e3),x.send({type:"response.create"})}},x=e.transport({credential:r,setup:n,audio:o,on:{event:e=>{switch(e.type){case"session.updated":s?.resolve();break;case"error":{let t=e.error?.message??"The voice API reported an error";b&&(b=!1,y=!1,E()),s?s.reject(Error(t)):a.warn(t);break}case"input_audio_buffer.speech_started":_=!0,C();break;case"input_audio_buffer.speech_stopped":_=!1,C(),w=setTimeout(()=>{w=null,O()},1500);break;case"input_audio_buffer.committed":p(e.item_id,"user");break;case"conversation.item.added":case"conversation.item.created":"message"===e.item.type&&"system"!==e.item.role&&p(e.item.id,e.item.role);break;case"response.output_item.added":"message"===e.item.type?p(e.item.id,"assistant"):"function_call"===e.item.type&&p(e.item.id,"tool");break;case"conversation.item.input_audio_transcription.delta":f(e.item_id,"user",e.delta??"","append");break;case"conversation.item.input_audio_transcription.updated":f(e.item_id,"user",e.transcript,"replace");break;case"conversation.item.input_audio_transcription.completed":f(e.item_id,"user",e.transcript??"","replace"),h(e.item_id);break;case"response.output_audio_transcript.delta":f(e.item_id,"assistant",e.delta,"append");break;case"response.output_audio_transcript.done":e.transcript&&f(e.item_id,"assistant",e.transcript,"replace"),h(e.item_id);break;case"response.created":y=!0,b=!1,E(),C();break;case"response.done":var r;for(let t of(y=!1,S=!1,"failed"===e.response.status&&a.warn((r=e.response,r.status_details?.error?.message??"The model could not finish answering")),e.response.output??[]))"message"===t.type&&h(t.id);for(let[e,t]of c.entries())"user"!==t.role||d.has(t.id)||m(e,!0);break;case"response.function_call_arguments.done":p(e.item_id,"tool");{let t=u.get(e.item_id);c[t]={...c[t],tool:e.name,text:e.arguments||"{}"}}h(e.item_id),0!==T.size||S||(M=[]),M=[...M,e.name],T.set(e.call_id,e.name),a.runTool({id:e.call_id,name:e.name,arguments:e.arguments}).catch(e=>`Error: ${(0,t.errorToString)(e)}`).then(t=>{i||(x.send({type:"conversation.item.create",item:{type:"function_call_output",call_id:e.call_id,output:t}}),T.delete(e.call_id),k+=1,O())})}O()},playing:e=>{g=e,e&&(S=!1),O()},dropped:e=>{s?s.reject(Error(e)):a.failed(e)}}});return{async connect(){if(await x.connect(),i)throw Error("Hung up before the session opened.");x.send(e.sessionUpdate(n)),await new Promise((e,t)=>{s={resolve:e,reject:t},l=setTimeout(e,5e3)}).finally(()=>{s=null,l&&clearTimeout(l),l=null})},close(){for(let e of c)h(e.id);i=!0,C(),E(),s?.reject(Error("Hung up before the session opened.")),x.close()},mute:e=>x.mute(e),say(e){i||(P.push(e),O())}}}},"toFunctionTools",0,e=>e.map(({name:e,description:t,parameters:r})=>({type:"function",name:e,description:t,parameters:r}))])},70350,e=>{"use strict";var t=e.i(379072);async function r(e,t){let r=await e.text().catch(()=>"");try{let e=JSON.parse(r)?.error?.message;if("string"==typeof e&&e)return e}catch{}return`${t} refused the call (${e.status})`}e.s(["createSocketTransport",0,function({url:e,protocols:r,label:n,audio:o,on:a}){let i=null,s=null,l=null,c=!1,u=!1,d=!1,p=!1,m=null,f=e=>{p!==e&&(p=e,a.playing(e))},h=e=>{i?.readyState===WebSocket.OPEN&&i.send(JSON.stringify(e))};return{async connect(){l=(0,t.createPcmPlayer)(o,()=>{m=null,f(!1)});let p=new Promise((t,o)=>{let s=new WebSocket(e,r);i=s,s.onopen=()=>{d=!0,t(s)};let l=e=>d?void(!c&&!u&&(u=!0,a.dropped(e))):o(Error(e));s.onerror=()=>l(`Could not reach ${n}`),s.onclose=e=>l(e.reason||`The connection to ${n} closed (${e.code})`)}),g=(0,t.openMicrophone)(e=>h({type:"input_audio_buffer.append",audio:(0,t.encodePcm)(e)})).then(e=>{c?e.close():(s=e,o.hear?.(e.stream))},e=>{throw Error(e instanceof Error?`Microphone unavailable — ${e.message}`:"Microphone unavailable")}),[_]=await Promise.all([p,g]);if(c)throw Error("Hung up before the call opened.");_.onmessage=e=>{let r;if("string"==typeof e.data){try{r=JSON.parse(e.data)}catch{return}var n=r;switch(n.type){case"response.output_audio.delta":{if(!l||!n.delta)break;let e=(0,t.decodePcm)(n.delta);m?.itemId!==n.item_id&&(m={itemId:n.item_id,contentIndex:n.content_index??0,startedAt:performance.now(),receivedMs:0}),m.receivedMs+=e.length/t.PCM_SAMPLE_RATE*1e3,l.push(e),f(!0);break}case"input_audio_buffer.speech_started":(()=>{if(!l?.speaking||!m)return;let e=Math.min(m.receivedMs,performance.now()-m.startedAt);h({type:"conversation.item.truncate",item_id:m.itemId,content_index:m.contentIndex,audio_end_ms:Math.max(0,Math.floor(e))}),l.stop(),m=null,f(!1)})()}a.event(n)}}},send:h,close:()=>{c=!0,l?.stop(),l=null,s?.close(),s=null;let e=i;i=null,e?.close()},mute(e){s?.setMuted(e)}}},"createWebRtcTransport",0,function({url:e,secret:n,label:o,audio:a,on:i}){let s=null,l=null,c=null,u=!1,d=!1,p=!1,m=!1,f=e=>{m!==e&&(m=e,i.playing(e))},h=e=>{for(let t of e?.getTracks()??[])t.stop()};return{async connect(){let m=new RTCPeerConnection;s=m;let g=m.createDataChannel("oai-events");l=g;let _=new Promise((e,t)=>{let r=e=>d?void(!u&&!p&&(p=!0,i.dropped(e))):t(Error(e));g.onopen=()=>{d=!0,e()},g.onclose=()=>r(`The connection to ${o} closed`),g.onerror=()=>r(`The connection to ${o} dropped`),m.onconnectionstatechange=()=>{let e=m.connectionState;("failed"===e||"closed"===e)&&r(`Could not reach ${o}`)}});g.onmessage=e=>{let t;if("string"==typeof e.data){try{t=JSON.parse(e.data)}catch{return}switch(t.type){case"output_audio_buffer.started":f(!0);break;case"output_audio_buffer.stopped":case"output_audio_buffer.cleared":f(!1)}i.event(t)}},m.ontrack=e=>{let[t]=e.streams;a.element.srcObject=t,a.listen(t)};let y=await navigator.mediaDevices.getUserMedia({audio:t.MICROPHONE_CONSTRAINTS});if(u)throw h(y),Error("Hung up before the call opened.");c=y,a.hear?.(y),m.addTrack(y.getAudioTracks()[0],y);let b=await m.createOffer();await m.setLocalDescription(b);let w=await fetch(e,{method:"POST",body:b.sdp,headers:{"Content-Type":"application/sdp",Authorization:`Bearer ${n}`}});if(!w.ok)throw Error(await r(w,o));await m.setRemoteDescription({type:"answer",sdp:await w.text()}),await _},send(e){l?.readyState==="open"&&l.send(JSON.stringify(e))},close:()=>{u=!0,h(c),c=null,l?.close(),l=null,s?.close(),s=null,a.element.srcObject=null},mute(e){for(let t of c?.getAudioTracks()??[])t.enabled=!e}}}])},929969,e=>{"use strict";var t=e.i(379072),r=e.i(460548),n=e.i(70350);let o=(0,r.realtimeSession)({transport:({credential:e,setup:t,audio:r,on:o})=>(0,n.createSocketTransport)({url:`wss://api.x.ai/v1/realtime?model=${encodeURIComponent(t.model)}`,protocols:[`xai-client-secret.${e.value}`],label:"Grok",audio:r,on:o}),sessionUpdate:e=>({type:"session.update",session:{model:e.model,instructions:e.instructions,voice:e.voice,turn_detection:{type:"server_vad"},audio:{input:{format:{type:"audio/pcm",rate:t.PCM_SAMPLE_RATE},transcription:{model:"grok-transcribe"}},output:{format:{type:"audio/pcm",rate:t.PCM_SAMPLE_RATE}}},tools:(0,r.toFunctionTools)(e.tools)}})});e.s(["createXaiSession",0,o])}]);
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,905755,e=>{"use strict";var t=e.i(460548),r=e.i(70350);let n=(0,t.realtimeSession)({transport:({credential:e,audio:t,on:n})=>(0,r.createWebRtcTransport)({url:"https://api.openai.com/v1/realtime/calls",secret:e.value,label:"OpenAI",audio:t,on:n}),sessionUpdate:e=>({type:"session.update",session:{type:"realtime",model:e.model,instructions:e.instructions,audio:{input:{transcription:{model:"gpt-4o-mini-transcribe"}},output:{voice:e.voice}},tools:(0,t.toFunctionTools)(e.tools)}})});e.s(["createOpenAiSession",0,n])},379072,e=>{"use strict";let t={echoCancellation:!0,noiseSuppression:!0,autoGainControl:!0};async function r(e){let r=await navigator.mediaDevices.getUserMedia({audio:t}),s=new AudioContext({sampleRate:24e3});try{var i,l,c;await s.audioWorklet.addModule(a??=URL.createObjectURL(new Blob([o],{type:"application/javascript"})));let t=s.createMediaStreamSource(r),u=new AudioWorkletNode(s,n);u.port.onmessage=t=>{let r=t.data,n=new Int16Array(r.length);for(let e=0;e<r.length;e++){let t=Math.max(-1,Math.min(1,r[e]));n[e]=t<0?32768*t:32767*t}e(n)},t.connect(u);let d=s.createGain();return d.gain.value=0,u.connect(d).connect(s.destination),await s.resume(),i=r,l=s,c=u,{stream:i,setMuted(e){for(let t of i.getAudioTracks())t.enabled=!e},close(){for(let e of(c.port.onmessage=null,i.getTracks()))e.stop();l.close()}}}catch(e){for(let e of r.getTracks())e.stop();throw s.close(),e}}let n="voice-capture",o=`
|
|
2
|
-
class VoiceCapture extends AudioWorkletProcessor {
|
|
3
|
-
constructor() {
|
|
4
|
-
super();
|
|
5
|
-
this.frame = new Float32Array(1024);
|
|
6
|
-
this.filled = 0;
|
|
7
|
-
}
|
|
8
|
-
process(inputs) {
|
|
9
|
-
const input = inputs[0] && inputs[0][0];
|
|
10
|
-
if (!input) return true;
|
|
11
|
-
for (let i = 0; i < input.length; i++) {
|
|
12
|
-
this.frame[this.filled++] = input[i];
|
|
13
|
-
if (this.filled === this.frame.length) {
|
|
14
|
-
this.port.postMessage(this.frame.slice());
|
|
15
|
-
this.filled = 0;
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
return true;
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
registerProcessor("${n}", VoiceCapture);
|
|
22
|
-
`,a=null;e.s(["MICROPHONE_CONSTRAINTS",0,t,"PCM_SAMPLE_RATE",0,24e3,"createPcmPlayer",0,function(e,t){let{context:r,analyser:n}=e.speaker(),o=0,a=new Set;return{push(e){if(0===e.length)return;let s=r.createBuffer(1,e.length,24e3),i=s.getChannelData(0);for(let t=0;t<e.length;t++)i[t]=e[t]/32768;let l=r.createBufferSource();l.buffer=s,l.connect(n),l.onended=()=>{a.delete(l),0===a.size&&t()},o=Math.max(o,r.currentTime+.06),l.start(o),o+=s.duration,a.add(l)},stop(){for(let e of a){e.onended=null;try{e.stop()}catch{}}a.clear(),o=0},get speaking(){return a.size>0}}},"decodePcm",0,function(e){let t=atob(e),r=new Uint8Array(t.length);for(let e=0;e<t.length;e++)r[e]=t.charCodeAt(e);return new Int16Array(r.buffer,0,r.length>>1)},"encodePcm",0,function(e){let t=new Uint8Array(e.buffer,e.byteOffset,e.byteLength),r="";for(let e=0;e<t.length;e+=32768)r+=String.fromCharCode(...t.subarray(e,e+32768));return btoa(r)},"openMicrophone",0,r])},460548,e=>{"use strict";var t=e.i(647163);e.s(["realtimeSession",0,function(e){return({credential:r,setup:n,audio:o,on:a})=>{let s=!1,i=null,l=null,c=[],u=new Map,d=new Set,p=(e,t)=>{u.has(e)||(u.set(e,c.length),c.push({id:e,role:t,text:""}))},m=(e,t)=>{let r=c[e];r.text.trim()&&a.turn({...r,seq:e,done:t})},f=(e,t,r,n)=>{p(e,t);let o=u.get(e),a=c[o].text,s="append"===n?a+r:r;s!==a&&(c[o]={...c[o],text:s},d.has(e)||m(o,!1))},h=e=>{let t=u.get(e);void 0===t||d.has(e)||c[t].text.trim()&&(d.add(e),m(t,!0))},g=!1,_=!1,y=!1,b=!1,w=null,v=null,T=new Map,k=0,S=!1,M=[],A=[],P="",C=()=>{w&&clearTimeout(w),w=null},O=()=>{v&&clearTimeout(v),v=null},E=()=>{if(s)return;let e=T.size>0||S||k>0,t={speaking:g,hearing:_,tools:e?M:[]},r=JSON.stringify(t);if(r!==P&&(P=r,a.activity(t)),_||y||w||g||T.size>0)return;let n=k>0;if(n||0!==A.length){for(let e of A.splice(0))x.send({type:"conversation.item.create",item:{type:"message",role:"system",content:[{type:"input_text",text:e}]}});k=0,S=n,y=!0,b=!0,O(),v=setTimeout(()=>{v=null,b&&(b=!1,y=!1,a.warn("The voice API never answered a response we asked for."),E())},5e3),x.send({type:"response.create"})}},x=e.transport({credential:r,setup:n,audio:o,on:{event:e=>{switch(e.type){case"session.updated":i?.resolve();break;case"error":{let t=e.error?.message??"The voice API reported an error";b&&(b=!1,y=!1,O()),i?i.reject(Error(t)):a.warn(t);break}case"input_audio_buffer.speech_started":_=!0,C();break;case"input_audio_buffer.speech_stopped":_=!1,C(),w=setTimeout(()=>{w=null,E()},1500);break;case"input_audio_buffer.committed":p(e.item_id,"user");break;case"conversation.item.added":case"conversation.item.created":"message"===e.item.type&&"system"!==e.item.role&&p(e.item.id,e.item.role);break;case"response.output_item.added":"message"===e.item.type?p(e.item.id,"assistant"):"function_call"===e.item.type&&p(e.item.id,"tool");break;case"conversation.item.input_audio_transcription.delta":f(e.item_id,"user",e.delta??"","append");break;case"conversation.item.input_audio_transcription.updated":f(e.item_id,"user",e.transcript,"replace");break;case"conversation.item.input_audio_transcription.completed":f(e.item_id,"user",e.transcript??"","replace"),h(e.item_id);break;case"response.output_audio_transcript.delta":f(e.item_id,"assistant",e.delta,"append");break;case"response.output_audio_transcript.done":e.transcript&&f(e.item_id,"assistant",e.transcript,"replace"),h(e.item_id);break;case"response.created":y=!0,b=!1,O(),C();break;case"response.done":var r;for(let t of(y=!1,S=!1,"failed"===e.response.status&&a.warn((r=e.response,r.status_details?.error?.message??"The model could not finish answering")),e.response.output??[]))"message"===t.type&&h(t.id);for(let[e,t]of c.entries())"user"!==t.role||d.has(t.id)||m(e,!0);break;case"response.function_call_arguments.done":p(e.item_id,"tool");{let t=u.get(e.item_id);c[t]={...c[t],tool:e.name,text:e.arguments||"{}"}}h(e.item_id),0!==T.size||S||(M=[]),M=[...M,e.name],T.set(e.call_id,e.name),a.runTool({id:e.call_id,name:e.name,arguments:e.arguments}).catch(e=>`Error: ${(0,t.errorToString)(e)}`).then(t=>{s||(x.send({type:"conversation.item.create",item:{type:"function_call_output",call_id:e.call_id,output:t}}),T.delete(e.call_id),k+=1,E())})}E()},playing:e=>{g=e,e&&(S=!1),E()},dropped:e=>{i?i.reject(Error(e)):a.failed(e)}}});return{async connect(){if(await x.connect(),s)throw Error("Hung up before the session opened.");x.send(e.sessionUpdate(n)),await new Promise((e,t)=>{i={resolve:e,reject:t},l=setTimeout(e,5e3)}).finally(()=>{i=null,l&&clearTimeout(l),l=null})},close(){for(let e of c)h(e.id);s=!0,C(),O(),i?.reject(Error("Hung up before the session opened.")),x.close()},mute:e=>x.mute(e),say(e){s||(A.push(e),E())}}}},"toFunctionTools",0,e=>e.map(({name:e,description:t,parameters:r})=>({type:"function",name:e,description:t,parameters:r}))])},70350,e=>{"use strict";var t=e.i(379072);async function r(e,t){let r=await e.text().catch(()=>"");try{let e=JSON.parse(r)?.error?.message;if("string"==typeof e&&e)return e}catch{}return`${t} refused the call (${e.status})`}e.s(["createSocketTransport",0,function({url:e,protocols:r,label:n,audio:o,on:a}){let s=null,i=null,l=null,c=!1,u=!1,d=!1,p=!1,m=null,f=e=>{p!==e&&(p=e,a.playing(e))},h=e=>{s?.readyState===WebSocket.OPEN&&s.send(JSON.stringify(e))};return{async connect(){l=(0,t.createPcmPlayer)(o,()=>{m=null,f(!1)});let p=new Promise((t,o)=>{let i=new WebSocket(e,r);s=i,i.onopen=()=>{d=!0,t(i)};let l=e=>d?void(!c&&!u&&(u=!0,a.dropped(e))):o(Error(e));i.onerror=()=>l(`Could not reach ${n}`),i.onclose=e=>l(e.reason||`The connection to ${n} closed (${e.code})`)}),g=(0,t.openMicrophone)(e=>h({type:"input_audio_buffer.append",audio:(0,t.encodePcm)(e)})).then(e=>{c?e.close():(i=e,o.hear?.(e.stream))},e=>{throw Error(e instanceof Error?`Microphone unavailable — ${e.message}`:"Microphone unavailable")}),[_]=await Promise.all([p,g]);if(c)throw Error("Hung up before the call opened.");_.onmessage=e=>{let r;if("string"==typeof e.data){try{r=JSON.parse(e.data)}catch{return}var n=r;switch(n.type){case"response.output_audio.delta":{if(!l||!n.delta)break;let e=(0,t.decodePcm)(n.delta);m?.itemId!==n.item_id&&(m={itemId:n.item_id,contentIndex:n.content_index??0,startedAt:performance.now(),receivedMs:0}),m.receivedMs+=e.length/t.PCM_SAMPLE_RATE*1e3,l.push(e),f(!0);break}case"input_audio_buffer.speech_started":(()=>{if(!l?.speaking||!m)return;let e=Math.min(m.receivedMs,performance.now()-m.startedAt);h({type:"conversation.item.truncate",item_id:m.itemId,content_index:m.contentIndex,audio_end_ms:Math.max(0,Math.floor(e))}),l.stop(),m=null,f(!1)})()}a.event(n)}}},send:h,close:()=>{c=!0,l?.stop(),l=null,i?.close(),i=null;let e=s;s=null,e?.close()},mute(e){i?.setMuted(e)}}},"createWebRtcTransport",0,function({url:e,secret:n,label:o,audio:a,on:s}){let i=null,l=null,c=null,u=!1,d=!1,p=!1,m=!1,f=e=>{m!==e&&(m=e,s.playing(e))},h=e=>{for(let t of e?.getTracks()??[])t.stop()};return{async connect(){let m=new RTCPeerConnection;i=m;let g=m.createDataChannel("oai-events");l=g;let _=new Promise((e,t)=>{let r=e=>d?void(!u&&!p&&(p=!0,s.dropped(e))):t(Error(e));g.onopen=()=>{d=!0,e()},g.onclose=()=>r(`The connection to ${o} closed`),g.onerror=()=>r(`The connection to ${o} dropped`),m.onconnectionstatechange=()=>{let e=m.connectionState;("failed"===e||"closed"===e)&&r(`Could not reach ${o}`)}});g.onmessage=e=>{let t;if("string"==typeof e.data){try{t=JSON.parse(e.data)}catch{return}switch(t.type){case"output_audio_buffer.started":f(!0);break;case"output_audio_buffer.stopped":case"output_audio_buffer.cleared":f(!1)}s.event(t)}},m.ontrack=e=>{let[t]=e.streams;a.element.srcObject=t,a.listen(t)};let y=await navigator.mediaDevices.getUserMedia({audio:t.MICROPHONE_CONSTRAINTS});if(u)throw h(y),Error("Hung up before the call opened.");c=y,a.hear?.(y),m.addTrack(y.getAudioTracks()[0],y);let b=await m.createOffer();await m.setLocalDescription(b);let w=await fetch(e,{method:"POST",body:b.sdp,headers:{"Content-Type":"application/sdp",Authorization:`Bearer ${n}`}});if(!w.ok)throw Error(await r(w,o));await m.setRemoteDescription({type:"answer",sdp:await w.text()}),await _},send(e){l?.readyState==="open"&&l.send(JSON.stringify(e))},close:()=>{u=!0,h(c),c=null,l?.close(),l=null,i?.close(),i=null,a.element.srcObject=null},mute(e){for(let t of c?.getAudioTracks()??[])t.enabled=!e}}}])}]);
|