thursday-agent 0.22.0 → 0.23.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/build-manifest.json +3 -3
- package/.next/prerender-manifest.json +4 -4
- package/.next/server/app/_global-error/page.js.nft.json +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 +12 -12
- package/.next/server/app/_not-found.segments/_full.segment.rsc +12 -12
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +11 -11
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/api/artifact/route.js +6 -6
- package/.next/server/app/api/artifact/route.js.nft.json +1 -1
- package/.next/server/app/api/bot/memory/files/route.js +5 -4
- package/.next/server/app/api/bot/memory/files/route.js.nft.json +1 -1
- package/.next/server/app/api/bot/memory/route.js +9 -9
- package/.next/server/app/api/bot/memory/route.js.nft.json +1 -1
- package/.next/server/app/api/bot/route.js +9 -9
- package/.next/server/app/api/bot/route.js.nft.json +1 -1
- package/.next/server/app/api/bot/thread/[id]/route.js +2 -2
- package/.next/server/app/api/bot/thread/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/bot/thread/file/route.js +12 -12
- package/.next/server/app/api/bot/thread/file/route.js.nft.json +1 -1
- package/.next/server/app/api/bot/thread/route.js +2 -2
- package/.next/server/app/api/bot/thread/route.js.nft.json +1 -1
- package/.next/server/app/api/config/route.js +2 -2
- package/.next/server/app/api/config/route.js.nft.json +1 -1
- package/.next/server/app/api/events/route.js.nft.json +1 -1
- package/.next/server/app/api/favicon/[host]/route.js.nft.json +1 -1
- package/.next/server/app/api/file/[...path]/route.js +3 -3
- package/.next/server/app/api/file/[...path]/route.js.nft.json +1 -1
- package/.next/server/app/api/llm-model/automatic/route.js.nft.json +1 -1
- package/.next/server/app/api/llm-model/catalog/[provider]/route.js.nft.json +1 -1
- package/.next/server/app/api/llm-model/credits/[provider]/route.js.nft.json +1 -1
- package/.next/server/app/api/llm-model/route.js.nft.json +1 -1
- package/.next/server/app/api/llm-model/subscription/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/[name]/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/oauth/callback/route.js +2 -2
- package/.next/server/app/api/mcp/oauth/callback/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/tools/route.js.nft.json +1 -1
- package/.next/server/app/api/memory/edit/route.js +13 -13
- package/.next/server/app/api/memory/edit/route.js.nft.json +1 -1
- package/.next/server/app/api/memory/route.js +1 -1
- package/.next/server/app/api/memory/route.js.nft.json +1 -1
- package/.next/server/app/api/reach/route.js +11 -11
- package/.next/server/app/api/reach/route.js.nft.json +1 -1
- package/.next/server/app/api/routine/route.js +9 -9
- package/.next/server/app/api/routine/route.js.nft.json +1 -1
- package/.next/server/app/api/running/route.js.nft.json +1 -1
- package/.next/server/app/api/signins/route.js +7 -6
- package/.next/server/app/api/signins/route.js.nft.json +1 -1
- package/.next/server/app/api/skills/[source]/[name]/route.js +8 -8
- package/.next/server/app/api/skills/[source]/[name]/route.js.nft.json +1 -1
- package/.next/server/app/api/skills/route.js +8 -8
- package/.next/server/app/api/skills/route.js.nft.json +1 -1
- package/.next/server/app/api/thursday/call/end/route.js +6 -6
- package/.next/server/app/api/thursday/call/end/route.js.nft.json +1 -1
- package/.next/server/app/api/thursday/call/plan/route.js +16 -16
- package/.next/server/app/api/thursday/call/plan/route.js.nft.json +1 -1
- package/.next/server/app/api/thursday/call/route.js +6 -6
- package/.next/server/app/api/thursday/call/route.js.nft.json +1 -1
- package/.next/server/app/api/thursday/settings/route.js +6 -6
- package/.next/server/app/api/thursday/settings/route.js.nft.json +1 -1
- package/.next/server/app/api/thursday/text/route.js +16 -16
- package/.next/server/app/api/thursday/text/route.js.nft.json +1 -1
- package/.next/server/app/api/thursday/tool-call/route.js +10 -10
- package/.next/server/app/api/thursday/tool-call/route.js.nft.json +1 -1
- package/.next/server/app/api/workspace/files/route.js +1 -1
- package/.next/server/app/api/workspace/files/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 +11 -11
- package/.next/server/app/artifact/[...path]/page.js +5 -5
- 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/manifest.webmanifest/route.js.nft.json +1 -1
- package/.next/server/app/page/react-loadable-manifest.json +2 -2
- package/.next/server/app/page/server-reference-manifest.json +162 -162
- 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/chunks/[root-of-the-server]__019e1fy._.js +2 -2
- package/.next/server/chunks/[root-of-the-server]__01jpmcj._.js +2 -2
- package/.next/server/chunks/[root-of-the-server]__03bjojd._.js +2 -2
- package/.next/server/chunks/[root-of-the-server]__03vunn6._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__06kxzw-._.js +2 -2
- package/.next/server/chunks/[root-of-the-server]__0atwstu._.js +1 -1
- package/.next/server/chunks/{[root-of-the-server]__005onk_._.js → [root-of-the-server]__0cfv4rq._.js} +1 -1
- package/.next/server/chunks/[root-of-the-server]__0d-dfqm._.js +1 -1
- package/.next/server/chunks/{[root-of-the-server]__1-i6lgn._.js → [root-of-the-server]__0d00o4_._.js} +1 -1
- package/.next/server/chunks/{[root-of-the-server]__0itmdqy._.js → [root-of-the-server]__0e8y4ok._.js} +1 -1
- package/.next/server/chunks/{[root-of-the-server]__1tyftcr._.js → [root-of-the-server]__0eem_66._.js} +1 -1
- package/.next/server/chunks/{[root-of-the-server]__0xn7a8p._.js → [root-of-the-server]__0jn2qbf._.js} +1 -1
- package/.next/server/chunks/{[root-of-the-server]__08922kg._.js → [root-of-the-server]__0l563r8._.js} +1 -1
- package/.next/server/chunks/[root-of-the-server]__0mh1tgg._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__0mq0qmk._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0ncs9uu._.js +1 -1
- package/.next/server/chunks/{[root-of-the-server]__1a7rgvy._.js → [root-of-the-server]__0pp2355._.js} +1 -1
- package/.next/server/chunks/{[root-of-the-server]__1g08s7l._.js → [root-of-the-server]__0r77huw._.js} +2 -2
- package/.next/server/chunks/[root-of-the-server]__10_v9ml._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__13hng6h._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__1478lu3._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__16xao_p._.js +5 -0
- package/.next/server/chunks/[root-of-the-server]__17kdjf6._.js +2 -2
- package/.next/server/chunks/[root-of-the-server]__17m7ag9._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__17yv6lg._.js +5 -0
- package/.next/server/chunks/[root-of-the-server]__19aqyg-._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__19imprr._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1_04mcf._.js +2 -2
- package/.next/server/chunks/[root-of-the-server]__1ceammd._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__1fhule0._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1hing45._.js +3 -0
- package/.next/server/chunks/{[root-of-the-server]__0mttntm._.js → [root-of-the-server]__1ivfglf._.js} +1 -1
- package/.next/server/chunks/[root-of-the-server]__1jcu_e9._.js +5 -0
- package/.next/server/chunks/{[root-of-the-server]__0m0qglo._.js → [root-of-the-server]__1kb-dkn._.js} +2 -2
- package/.next/server/chunks/{[root-of-the-server]__0eluax8._.js → [root-of-the-server]__1mowvzz._.js} +1 -1
- package/.next/server/chunks/[root-of-the-server]__1ndi14y._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__1o7z93z._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__1onvx8x._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__1q_d6dj._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1u_6dhy._.js +1 -1
- package/.next/server/chunks/{[root-of-the-server]__1_wtn0q._.js → [root-of-the-server]__1yiqjfx._.js} +1 -1
- package/.next/server/chunks/[root-of-the-server]__1yr_vvq._.js +3 -0
- package/.next/server/chunks/_0-mqt2w._.js +3 -0
- package/.next/server/chunks/_0-qt5if._.js +1 -1
- package/.next/server/chunks/{_0fau3ya._.js → _00aztuo._.js} +2 -2
- package/.next/server/chunks/_021kabv._.js +53 -0
- package/.next/server/chunks/_032k4m6._.js +3 -0
- package/.next/server/chunks/_03p6r2-._.js +1 -1
- package/.next/server/chunks/_06b5b4-._.js +2 -2
- package/.next/server/chunks/_06u9yo-._.js +1 -1
- package/.next/server/chunks/_07mczew._.js +3 -0
- package/.next/server/chunks/_07pkeds._.js +1 -1
- package/.next/server/chunks/_08354bn._.js +22 -22
- package/.next/server/chunks/_083t_nr._.js +5 -0
- package/.next/server/chunks/_0c-s0ei._.js +3 -0
- package/.next/server/chunks/_0cq69mm._.js +1 -1
- package/.next/server/chunks/_0gifi_2._.js +7 -0
- package/.next/server/chunks/_0gxz_1b._.js +1 -1
- package/.next/server/chunks/{_1tjwvoz._.js → _0la8s6t._.js} +2 -2
- package/.next/server/chunks/_0p27in2._.js +1 -1
- package/.next/server/chunks/{_09rtyfn._.js → _0rn3c_0._.js} +24 -26
- package/.next/server/chunks/_0ue8nq-._.js +5 -1
- package/.next/server/chunks/{_1uu4wjr._.js → _0wkhub3._.js} +2 -2
- package/.next/server/chunks/_0wyh244._.js +22 -22
- package/.next/server/chunks/_0ynjnhl._.js +5 -0
- package/.next/server/chunks/_1-wp0r0._.js +1 -1
- package/.next/server/chunks/{_201k0ah._.js → _12-7atf._.js} +2 -2
- package/.next/server/chunks/{_02mn8d7._.js → _124q1p2._.js} +2 -2
- package/.next/server/chunks/{_14xuq46._.js → _13qoxq9._.js} +24 -26
- package/.next/server/chunks/{_11y8h29._.js → _15-_mie._.js} +2 -2
- package/.next/server/chunks/_1823_7a._.js +1 -1
- package/.next/server/chunks/{_0uir6hb._.js → _186uku9._.js} +2 -2
- package/.next/server/chunks/{_0ggqpiz._.js → _18sj4xf._.js} +2 -2
- package/.next/server/chunks/_19kea1l._.js +12 -12
- package/.next/server/chunks/_1ac33qw._.js +2 -2
- package/.next/server/chunks/{_18z965x._.js → _1chy-lk._.js} +2 -2
- package/.next/server/chunks/_1cw6-rv._.js +1 -1
- package/.next/server/chunks/_1evvnbp._.js +1 -1
- package/.next/server/chunks/_1f_x75d._.js +3 -0
- package/.next/server/chunks/_1gn2r2q._.js +7 -9
- package/.next/server/chunks/_1icgbi8._.js +1 -1
- package/.next/server/chunks/{_1ozcb6o._.js → _1k6bmez._.js} +2 -2
- package/.next/server/chunks/_1ko5shz._.js +1 -1
- package/.next/server/chunks/_1ksyu6r._.js +1 -1
- package/.next/server/chunks/_1kwmzab._.js +3 -0
- package/.next/server/chunks/_1lg0lsu._.js +1 -1
- package/.next/server/chunks/_1pv6xbq._.js +5 -0
- package/.next/server/chunks/_1q42187._.js +2 -2
- package/.next/server/chunks/_1q6e56i._.js +7 -9
- package/.next/server/chunks/_1t43w6q._.js +1 -1
- package/.next/server/chunks/_1t8fv7b._.js +1 -1
- package/.next/server/chunks/_1ufbxe1._.js +1 -1
- package/.next/server/chunks/_1wgae1c._.js +1 -1
- package/.next/server/chunks/_1xps4ob._.js +1 -1
- package/.next/server/chunks/_1znrlca._.js +3 -0
- package/.next/server/chunks/config_ts_1g4sz5o._.js +1 -1
- package/.next/server/chunks/features_14kex_m._.js +11 -11
- package/.next/server/chunks/features_bot_08z387_._.js +2 -2
- package/.next/server/chunks/features_bot_1d6ghh5._.js +41 -0
- package/.next/server/chunks/features_bot_1dfrdsb._.js +10 -6
- package/.next/server/chunks/{node_modules_consola_dist_chunks_prompt_mjs_0yd5xa0._.js → node_modules_consola_dist_chunks_prompt_mjs_0k--vqs._.js} +1 -1
- package/.next/server/chunks/node_modules_consola_dist_chunks_prompt_mjs_0ufuc3s._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__05qiosr._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0y03pu0._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0zt_au4._.js +3 -0
- package/.next/server/chunks/ssr/{[root-of-the-server]__0eloa6y._.js → [root-of-the-server]__17yeveo._.js} +5 -5
- package/.next/server/chunks/ssr/[root-of-the-server]__1867koj._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__1t38-p_._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__1u42eh0._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__203utm3._.js +1 -1
- package/.next/server/chunks/ssr/{_0xurp8n._.js → _0-s7ria._.js} +2 -2
- package/.next/server/chunks/ssr/_03vw3u5._.js +3 -0
- package/.next/server/chunks/ssr/_088qe9a._.js +162 -0
- package/.next/server/chunks/ssr/_09a6bpd._.js +1 -1
- package/.next/server/chunks/ssr/{_0u43zjx._.js → _0a_pedm._.js} +2 -2
- package/.next/server/chunks/ssr/_0ali_i8._.js +3 -0
- package/.next/server/chunks/ssr/_0cd6g3l._.js +3 -3
- package/.next/server/chunks/ssr/{_1nwey7a._.js → _0eprrig._.js} +2 -2
- package/.next/server/chunks/ssr/_0flnog5._.js +3 -0
- package/.next/server/chunks/ssr/_0iuvjnw._.js +1 -1
- package/.next/server/chunks/ssr/{_0t_e9rd._.js → _0k-gl8l._.js} +2 -2
- package/.next/server/chunks/ssr/_0kmldic._.js +41 -0
- package/.next/server/chunks/ssr/_0ks03l-._.js +3 -0
- package/.next/server/chunks/ssr/_0mng-y8._.js +6 -0
- package/.next/server/chunks/ssr/_0tg3o37._.js +1 -1
- package/.next/server/chunks/ssr/_0ugzm_0._.js +3 -0
- package/.next/server/chunks/ssr/{_0ntol64._.js → _0wnv6c0._.js} +2 -2
- package/.next/server/chunks/ssr/{_0-y08rv._.js → _0z9zkd-._.js} +2 -2
- package/.next/server/chunks/ssr/_11l9kc0._.js +1 -1
- package/.next/server/chunks/ssr/_12_ail7._.js +3 -0
- package/.next/server/chunks/ssr/_16_7zeo._.js +1 -1
- package/.next/server/chunks/ssr/_16wjbs2._.js +3 -0
- package/.next/server/chunks/ssr/{_16o81mn._.js → _18rmqqu._.js} +2 -2
- package/.next/server/chunks/ssr/_1bfrntd._.js +2 -2
- package/.next/server/chunks/ssr/{_0gn_i4s._.js → _1ckje8g._.js} +2 -2
- package/.next/server/chunks/ssr/_1crszf7._.js +1 -1
- package/.next/server/chunks/ssr/_1h3qetc._.js +3 -0
- package/.next/server/chunks/ssr/{_1gz4ov7._.js → _1kpvfmn._.js} +3 -3
- package/.next/server/chunks/ssr/{_12hdw8x._.js → _1l-3enz._.js} +26 -28
- package/.next/server/chunks/ssr/_1neoj22._.js +1 -1
- package/.next/server/chunks/ssr/_1soynbw._.js +2 -2
- package/.next/server/chunks/ssr/{_0ux4i2m._.js → _1v1pcoh._.js} +2 -2
- package/.next/server/chunks/ssr/features_ai_components_model-picker_tsx_0ucb1y9._.js +1 -1
- package/.next/server/chunks/ssr/{features_bot_06n7hmd._.js → features_bot_0-7flc-._.js} +2 -2
- package/.next/server/chunks/ssr/features_bot_0tb4ui-._.js +1 -1
- package/.next/server/chunks/ssr/features_bot_1stfytf._.js +41 -0
- package/.next/server/chunks/ssr/features_config_10xs4l1._.js +20 -0
- 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/features_routine_components_routine-setting_tsx_055fknz._.js +1 -1
- package/.next/server/chunks/ssr/features_thursday_0cf9y0b._.js +1 -1
- package/.next/server/chunks/ssr/features_thursday_components_here-globe_tsx_055duhw._.js +1 -1
- package/.next/server/chunks/ssr/lib_utils_ts_0_f1xvm._.js +1 -1
- package/.next/server/chunks/ssr/{node_modules_1i-g3bz._.js → node_modules_00mh9o-._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_1bvw77g._.js → node_modules_04f_uw2._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_16tn8xu._.js → node_modules_07udd3z._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_0ksqeyy._.js → node_modules_08-pj-2._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_0e398ts._.js → node_modules_098h6h5._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_19r9vjv._.js → node_modules_0_7yfem._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_01v7ybp._.js → node_modules_0ayoorn._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_0_zk6yd._.js → node_modules_0bp3vfu._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_0m-dnm-._.js → node_modules_0ch5hqr._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_0536cp2._.js → node_modules_0e-hyim._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_0yn2z6s._.js → node_modules_0ffm9w3._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_1jf8aik._.js → node_modules_0jzyuwk._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_0m2oth3._.js → node_modules_0ln4iwf._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_1dlue-g._.js → node_modules_0my2hph._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_0cpegwf._.js → node_modules_0y_k4h5._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_13dwal5._.js → node_modules_10bzndo._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_1ctm_ju._.js → node_modules_1b5rxw5._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_01fukqn._.js → node_modules_1b_h09q._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_12hh0bx._.js → node_modules_1e83j9e._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_08m1gvh._.js → node_modules_1e9ugfy._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_06n6ruk._.js → node_modules_1hd66k0._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_1zdz2zf._.js → node_modules_1inwr2m._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_1zalmtr._.js → node_modules_1j9xx1k._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_1kfbdfo._.js → node_modules_1k8kypa._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_056xgci._.js → node_modules_1oeu85h._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_0ie8g6a._.js → node_modules_1r2ghv5._.js} +2 -2
- package/.next/server/chunks/ssr/{node_modules_1fqgrh0._.js → node_modules_1ttpnib._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_@mermaid-js_parser_dist_chunks_mermaid-parser_core_0nj1l8f._.js → node_modules_@mermaid-js_parser_dist_chunks_mermaid-parser_core_0ir6p7s._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_@mermaid-js_parser_dist_chunks_mermaid-parser_core_17ok98u._.js → node_modules_@mermaid-js_parser_dist_chunks_mermaid-parser_core_1ejf5ye._.js} +1 -1
- 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 +163 -163
- package/.next/static/chunks/02lze_e5sagjn.js +1 -0
- package/.next/static/chunks/{3866u-edsoyj3.js → 081kl7k8r6f8z.js} +1 -1
- package/.next/static/chunks/0_s4z70lx1tgs.js +1 -0
- package/.next/static/chunks/0fklfoj8o_msg.js +18 -0
- package/.next/static/chunks/0ve2gb0hw3wkq.js +1 -0
- package/.next/static/chunks/11c3uijgqik4m.js +39 -0
- package/.next/static/chunks/{0go5_9zqag7l0.js → 125lh2zzxk3r2.js} +1 -1
- package/.next/static/chunks/{3zv4wiqjl5kex.js → 166v36614ycsf.js} +1 -1
- package/.next/static/chunks/16np6727e61io.js +1 -0
- package/.next/static/chunks/18amidjlaqexf.js +1 -0
- package/.next/static/chunks/{35ehi-okrfot5.js → 1ettmta9iet7b.js} +1 -1
- package/.next/static/chunks/{1dy5xaxjdsy11.js → 1j4rndg17wgfk.js} +1 -1
- package/.next/static/chunks/{01r1uco3ikisc.js → 1mpz4epyg-7pz.js} +1 -1
- package/.next/static/chunks/{05blzta_1i7c2.js → 1oh4hbusfz97l.js} +1 -1
- package/.next/static/chunks/{3qfhjwd9yuijo.js → 1x1-44qmhu437.js} +1 -1
- package/.next/static/chunks/{0hpx0--bh7vld.js → 22jb4s3-8ckup.js} +1 -1
- package/.next/static/chunks/236le5kv_yj6a.css +1 -0
- package/.next/static/chunks/24op50z6sqi_5.js +1 -0
- package/.next/static/chunks/2eczs-lporqt6.js +1 -0
- package/.next/static/chunks/{2nbj2t9yp8ke9.js → 2sxclirl-c-um.js} +1 -1
- package/.next/static/chunks/2yfmmo4qr_f-m.js +1 -0
- package/.next/static/chunks/2z4sodeldj_86.js +1 -0
- package/.next/static/chunks/{3tyacy8fh5_18.js → 2zhiqxw61qowv.js} +2 -2
- package/.next/static/chunks/338dt83llhu5m.js +1 -0
- package/.next/static/chunks/3ezjz93yvzmop.js +4 -0
- package/.next/static/chunks/3h6rqjx92wva9.js +1 -0
- package/.next/static/chunks/3ph9u-51x6jhe.js +15 -0
- package/.next/static/chunks/{052u13mcoxt87.js → 3uf32hp_g9stz.js} +1 -1
- package/.next/static/chunks/3w7zt3xzyjn86.js +3 -0
- package/.next/static/chunks/3xkx7vqefm7on.js +2 -0
- package/.next/static/chunks/3ygk41pgsw7nv.js +1 -0
- package/.next/static/chunks/{3146sccz1j76i.js → 411uyd0is9u5s.js} +1 -1
- package/.next/static/chunks/4384atd5zerir.js +1 -0
- package/README.md +1 -1
- package/database/migrations/20260929121448_thread_started_by/migration.sql +1 -0
- package/database/migrations/20260929121448_thread_started_by/snapshot.json +1969 -0
- package/guide/bots.md +89 -44
- package/guide/calls.md +41 -25
- package/guide/index.md +5 -2
- package/guide/phone.md +7 -4
- package/guide/setup.md +12 -6
- package/guide/trouble.md +3 -2
- package/package.json +1 -1
- package/public/voices/intro/mic-b17ca82d.ogg +0 -0
- package/seed-skills/concierge/travel/SKILL.md +2 -1
- package/seed-skills/concierge/travel/page/itinerary.css +1009 -257
- package/seed-skills/concierge/travel/references/itinerary.md +95 -35
- package/seed-skills/concierge/travel/references/plan.md +11 -4
- package/seed-skills/concierge/travel/scripts/itinerary.mjs +754 -138
- package/skills/README.md +7 -4
- package/skills/artifact/SKILL.md +17 -13
- package/skills/artifact/references/canvas.md +4 -5
- package/skills/artifact/references/deck.md +93 -2
- package/skills/artifact/runtime/app/kit/src/index.css +35 -0
- package/skills/artifact/runtime/app/kit/tailwind.config.js +6 -0
- package/skills/artifact/runtime/deck/data.mjs +21 -0
- package/skills/artifact/runtime/deck/deck.css +254 -4
- package/skills/artifact/runtime/deck/deck.html +3 -0
- package/skills/artifact/runtime/deck/deck.js +88 -5
- package/skills/artifact/runtime/deck/deck.mjs +1 -17
- package/skills/artifact/runtime/document/quick.css +264 -89
- package/skills/artifact/runtime/document/quick.html +16 -7
- package/skills/artifact/runtime/document/quick.js +377 -98
- package/skills/artifact/runtime/render.mjs +52 -6
- package/skills/artifact/runtime/sheet/sheet.css +29 -21
- package/skills/artifact/runtime/shell/drafts.js +25 -0
- package/skills/artifact/runtime/shell/fonts/Geist-latin-ext.woff2 +0 -0
- package/skills/artifact/runtime/shell/fonts/Geist-latin.woff2 +0 -0
- package/skills/artifact/runtime/shell/fonts/GeistMono-latin-ext.woff2 +0 -0
- package/skills/artifact/runtime/shell/fonts/GeistMono-latin.woff2 +0 -0
- package/skills/artifact/runtime/shell/fonts/OFL.txt +93 -0
- package/skills/artifact/runtime/shell/head.html +27 -2
- package/skills/artifact/runtime/shell/shell.css +88 -8
- package/skills/artifact/runtime/shell/shell.js +318 -22
- package/skills/artifact/runtime/shell/wear.mjs +114 -12
- package/skills/artifact/scripts/app.mjs +5 -0
- package/skills/artifact/scripts/chart.mjs +20 -19
- package/skills/artifact/scripts/deck.mjs +276 -0
- package/skills/artifact/scripts/document.mjs +55 -2
- package/skills/artifact/scripts/media.mjs +1 -1
- package/skills/artifact/templates/boards/direction.html +55 -2
- package/skills/browser/SKILL.md +1 -1
- package/skills/browser/references/scripts.md +1 -1
- package/skills/daily-brief/SKILL.md +2 -0
- package/skills/daily-brief/page/brief.css +460 -302
- package/skills/daily-brief/references/brief.md +33 -7
- package/skills/daily-brief/scripts/page.mjs +241 -48
- package/skills/media-digest/SKILL.md +1 -0
- package/skills/media-digest/scripts/digest.mjs +57 -43
- package/.next/server/chunks/[root-of-the-server]__00f051a._.js +0 -7
- package/.next/server/chunks/[root-of-the-server]__0340k46._.js +0 -7
- package/.next/server/chunks/[root-of-the-server]__0ndw2yj._.js +0 -5
- package/.next/server/chunks/[root-of-the-server]__16y0k92._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__18e65_-._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__1a0xgyh._.js +0 -5
- package/.next/server/chunks/[root-of-the-server]__1dth047._.js +0 -5
- package/.next/server/chunks/[root-of-the-server]__1huywqp._.js +0 -5
- package/.next/server/chunks/[root-of-the-server]__1ij4h2a._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__1q1s4ls._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__1qa67zs._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__1t-mfa4._.js +0 -5
- package/.next/server/chunks/[root-of-the-server]__20ofm9t._.js +0 -3
- package/.next/server/chunks/_0483t_f._.js +0 -5
- package/.next/server/chunks/_0lcthk8._.js +0 -3
- package/.next/server/chunks/_0uv1gs1._.js +0 -3
- package/.next/server/chunks/_17fjc-7._.js +0 -5
- package/.next/server/chunks/_1dcbwn-._.js +0 -3
- package/.next/server/chunks/_1mgzs18._.js +0 -3
- package/.next/server/chunks/_20qn224._.js +0 -3
- package/.next/server/chunks/features_bot_0zy_q8y._.js +0 -37
- package/.next/server/chunks/ssr/[root-of-the-server]__04upd5v._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__0dy20eb._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__0yyxgt2._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__14j8gxy._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__20t_4l2._.js +0 -3
- package/.next/server/chunks/ssr/_00buy3i._.js +0 -162
- package/.next/server/chunks/ssr/_014_wjp._.js +0 -3
- package/.next/server/chunks/ssr/_07m4ii5._.js +0 -3
- package/.next/server/chunks/ssr/_0cv9tmv._.js +0 -3
- package/.next/server/chunks/ssr/_0j6rtjm._.js +0 -6
- package/.next/server/chunks/ssr/_0ogkeu-._.js +0 -3
- package/.next/server/chunks/ssr/_10sc7ab._.js +0 -3
- package/.next/server/chunks/ssr/_14nwim3._.js +0 -37
- package/.next/server/chunks/ssr/_1e01b-_._.js +0 -3
- package/.next/server/chunks/ssr/_1nfv27b._.js +0 -3
- package/.next/server/chunks/ssr/features_bot_1c56lew._.js +0 -37
- package/.next/server/chunks/ssr/features_bot_1knyan7._.js +0 -3
- package/.next/server/chunks/ssr/features_config_09wq1s9._.js +0 -20
- package/.next/static/chunks/01gkq9y6_xk4a.js +0 -1
- package/.next/static/chunks/09kwsjbmr_z1w.js +0 -1
- package/.next/static/chunks/0ynv7zu_bguve.js +0 -1
- package/.next/static/chunks/0zi59tghmg1lu.js +0 -18
- package/.next/static/chunks/1_ftsgxa-sia_.js +0 -1
- package/.next/static/chunks/1cg3torc90q5t.js +0 -1
- package/.next/static/chunks/1qnx1h5c8f93b.js +0 -1
- package/.next/static/chunks/1rwn3d9ji5w35.js +0 -1
- package/.next/static/chunks/1so3f5fi7e5g9.js +0 -35
- package/.next/static/chunks/1ya41wxfmp4s8.js +0 -1
- package/.next/static/chunks/27rwkfu7_xvs1.js +0 -4
- package/.next/static/chunks/2hueh8masqd91.js +0 -15
- package/.next/static/chunks/2jrt_752fqz2f.js +0 -1
- package/.next/static/chunks/2ogme4qydxnaq.js +0 -3
- package/.next/static/chunks/2r2tocw2rpvm2.js +0 -1
- package/.next/static/chunks/2t4kimg1lt-p7.js +0 -2
- package/.next/static/chunks/2w6y71o27my_z.js +0 -1
- package/.next/static/chunks/31_am8rtmk_tv.css +0 -1
- package/.next/static/chunks/337g9g_ux2gj-.js +0 -1
- package/public/voices/intro/heard-1f12cd45.ogg +0 -0
- package/public/voices/intro/mic-e561372a.ogg +0 -0
- package/skills/artifact/references/book.md +0 -163
- package/skills/artifact/runtime/book/book.css +0 -256
- package/skills/artifact/runtime/book/book.html +0 -38
- package/skills/artifact/runtime/book/book.js +0 -81
- package/skills/artifact/scripts/book-pdf.mjs +0 -73
- package/skills/artifact/scripts/book-video.mjs +0 -168
- package/skills/artifact/scripts/book.mjs +0 -291
- /package/.next/static/{8exfHAtcoebYtxjUC4ugl → 6tIYlzfG_5P4sIxxgmucO}/_buildManifest.js +0 -0
- /package/.next/static/{8exfHAtcoebYtxjUC4ugl → 6tIYlzfG_5P4sIxxgmucO}/_clientMiddlewareManifest.js +0 -0
- /package/.next/static/{8exfHAtcoebYtxjUC4ugl → 6tIYlzfG_5P4sIxxgmucO}/_ssgManifest.js +0 -0
- /package/seed-skills/{marketer → writer}/marketing/LICENSE +0 -0
- /package/seed-skills/{marketer → writer}/marketing/SKILL.md +0 -0
- /package/seed-skills/{marketer → writer}/marketing/references/copywriting-copy-frameworks.md +0 -0
- /package/seed-skills/{marketer → writer}/marketing/references/copywriting-natural-transitions.md +0 -0
- /package/seed-skills/{marketer → writer}/marketing/references/copywriting.md +0 -0
- /package/seed-skills/{marketer → writer}/marketing/references/emails-copy-guidelines.md +0 -0
- /package/seed-skills/{marketer → writer}/marketing/references/emails-email-types.md +0 -0
- /package/seed-skills/{marketer → writer}/marketing/references/emails-sequence-templates.md +0 -0
- /package/seed-skills/{marketer → writer}/marketing/references/emails.md +0 -0
- /package/seed-skills/{marketer → writer}/marketing/references/launch.md +0 -0
- /package/seed-skills/{marketer → writer}/marketing/references/product-marketing.md +0 -0
- /package/seed-skills/{marketer → writer}/marketing/references/seo-audit-ai-writing-detection.md +0 -0
- /package/seed-skills/{marketer → writer}/marketing/references/seo-audit-international-seo.md +0 -0
- /package/seed-skills/{marketer → writer}/marketing/references/seo-audit.md +0 -0
- /package/seed-skills/{marketer → writer}/marketing/references/social-carousel-frameworks.md +0 -0
- /package/seed-skills/{marketer → writer}/marketing/references/social-platform-limits.md +0 -0
- /package/seed-skills/{marketer → writer}/marketing/references/social-platforms.md +0 -0
- /package/seed-skills/{marketer → writer}/marketing/references/social-post-templates.md +0 -0
- /package/seed-skills/{marketer → writer}/marketing/references/social-reverse-engineering.md +0 -0
- /package/seed-skills/{marketer → writer}/marketing/references/social-short-form-video.md +0 -0
- /package/seed-skills/{marketer → writer}/marketing/references/social.md +0 -0
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
module.exports=[973589,e=>{"use strict";var r=e.i(902157),t=e.i(912714),o=e.i(750227),n=e.i(333925);let a=(0,o.join)(n.APP_DIR,"guide"),i=".guide";async function s(){if(!(0,r.existsSync)(a))return;let e=(0,o.join)(n.DATA_DIR,n.PATHS.workspace,i);await (0,t.rm)(e,{recursive:!0,force:!0}),await (0,t.cp)(a,e,{recursive:!0})}e.s(["botGuideLine",0,()=>`How ${n.APP_NAME} itself works for the user — its screens and settings — is written under \`${i}/\` here, \`index.md\` first; read it only when the job is about the app.`,"guideLine",0,()=>`How ${n.APP_NAME} works for the person using it — its screens, its settings, what it connects to, what to do when something stops — is written under \`${i}/\` here, \`index.md\` first. Read it whenever an answer depends on how the app works: what can be asked for, where something is changed, a wish that needs a setting switched on, something that stopped or was refused. Answer from it rather than from what you assume.`,"installGuide",0,s])},993195,e=>e.a(async(r,t)=>{try{var o=e.i(336763),n=e.i(533102),a=e.i(232347),i=e.i(876393),s=e.i(220376),c=e.i(656719),l=e.i(950262),u=e.i(212389),p=e.i(685178),f=r([i]);[i]=f.then?(await f)():f;let S=e=>Object.fromEntries(Object.entries(e).map(([e,r])=>[e,(0,p.isSealed)(r)?r:(0,p.sealSecret)(r)])),E=e=>Object.fromEntries(Object.entries(e).map(([e,r])=>[e,(0,p.openSecret)(r)]));function d(e){let{state:r,authorizationServer:t,...o}=e,n=Object.values(o).some(e=>void 0!==e);return{state:r,authorizationServer:t,...n&&{sealed:(0,p.sealSecret)(JSON.stringify(o))}}}function m(e){let{sealed:r,...t}=e;return r?{...JSON.parse((0,p.openSecret)(r)),...t}:t}function h(e){try{return(0,l.isRemoteConfig)(e)?e.headers?{...e,headers:E(e.headers)}:e:e.env?{...e,env:E(e.env)}:e}catch(e){if(e instanceof p.UnreadableSecret)return null;throw e}}function b(e){try{return m(e)}catch(e){if(e instanceof p.UnreadableSecret)return null;throw e}}let A=e=>(0,c.lostWords)(`The key saved for "${e}"`,"Add it again under the same name, with its key: bots keep the tools they pinned."),P=e=>(0,c.lostWords)(`The sign-in saved for "${e}"`,"Reconnect to sign in again.");function T(e){let r=h(e.config);r||(0,u.publicError)(A(e.name));let t=e.oauth&&b(e.oauth);return e.oauth&&!t&&(0,u.publicError)(P(e.name)),{...e,config:r,oauth:t}}async function y(e){let[r]=await i.database.select().from(s.mcpServerTable).where((0,o.eq)(s.mcpServerTable.name,e));return r?T(r):null}let _=()=>a.appEvents.emit({type:"mcp"});async function v(e,r){await i.database.transaction(async t=>{r.length&&await t.insert(s.mcpToolTable).values(r.map(r=>({...r,serverName:e}))).onConflictDoUpdate({target:[s.mcpToolTable.serverName,s.mcpToolTable.name],set:{description:w(s.mcpToolTable.description),inputSchema:w(s.mcpToolTable.inputSchema),outputSchema:w(s.mcpToolTable.outputSchema)}}),await t.delete(s.mcpToolTable).where(r.length?(0,o.and)((0,o.eq)(s.mcpToolTable.serverName,e),(0,o.notInArray)(s.mcpToolTable.name,r.map(e=>e.name))):(0,o.eq)(s.mcpToolTable.serverName,e)),await t.update(s.mcpServerTable).set({lastError:null,toolsSyncedAt:new Date}).where((0,o.eq)(s.mcpServerTable.name,e))}),_()}function w(e){return n.sql.raw(`excluded."${e.name}"`)}async function g(e,r){await i.database.update(s.mcpServerTable).set({lastError:r}).where((0,o.eq)(s.mcpServerTable.name,e)),_()}async function O(e,r){await i.database.update(s.mcpServerTable).set({oauth:r&&d(r)}).where((0,o.eq)(s.mcpServerTable.name,e)),_()}async function j(e){let[r]=await i.database.select().from(s.mcpServerTable).where(n.sql`json_extract(${s.mcpServerTable.oauth}, '$.state') = ${e}`);return r?T(r):null}async function k(){return i.database.transaction(async e=>{let r=await e.select({name:s.mcpServerTable.name,config:s.mcpServerTable.config,oauth:s.mcpServerTable.oauth,lastError:s.mcpServerTable.lastError}).from(s.mcpServerTable),t=[],n=0;for(let i of r){let r=h(i.config);if(!r||i.oauth&&!b(i.oauth)){t.push(i.name),await e.update(s.mcpServerTable).set({lastError:r?P(i.name):A(i.name)}).where((0,o.eq)(s.mcpServerTable.name,i.name));continue}let c=i.lastError===A(i.name)||i.lastError===P(i.name),u=function(e){let r=(0,l.isRemoteConfig)(e.config)?e.config.headers:e.config.env;if(Object.values(r??{}).some(e=>!(0,p.isSealed)(e)))return!0;let{state:t,authorizationServer:o,sealed:n,...a}=e.oauth??{};return Object.values(a).some(e=>void 0!==e)}(i);if(u||c){var a;await e.update(s.mcpServerTable).set({...u&&{config:(a=i.config,(0,l.isRemoteConfig)(a)?a.headers?{...a,headers:S(a.headers)}:a:a.env?{...a,env:S(a.env)}:a),oauth:i.oauth&&d(m(i.oauth))},...c&&{lastError:null}}).where((0,o.eq)(s.mcpServerTable.name,i.name)),u&&n++}}return{sealed:n,unreadable:t}})}e.s(["findPinnedTools",0,function(e){return i.database.select({server:s.mcpToolTable.serverName,name:s.mcpToolTable.name,description:s.mcpToolTable.description,inputSchema:s.mcpToolTable.inputSchema}).from(s.botMcpToolTable).innerJoin(s.mcpToolTable,(0,o.eq)(s.botMcpToolTable.toolId,s.mcpToolTable.id)).where((0,o.eq)(s.botMcpToolTable.botName,e)).orderBy(s.mcpToolTable.serverName,s.mcpToolTable.name)},"findServer",0,y,"findServerByOAuthState",0,j,"findToolSchemas",0,function(e,r){return r.length?i.database.select({name:s.mcpToolTable.name,description:s.mcpToolTable.description,inputSchema:s.mcpToolTable.inputSchema}).from(s.mcpToolTable).where((0,o.and)((0,o.eq)(s.mcpToolTable.serverName,e),(0,o.inArray)(s.mcpToolTable.name,r))).orderBy(s.mcpToolTable.name):Promise.resolve([])},"listServerNames",0,function(){return i.database.select({name:s.mcpServerTable.name}).from(s.mcpServerTable).orderBy(s.mcpServerTable.name)},"listToolNames",0,function(e){let r=i.database.select({server:s.mcpToolTable.serverName,name:s.mcpToolTable.name}).from(s.mcpToolTable);return e?r.where((0,o.eq)(s.mcpToolTable.serverName,e)).orderBy(s.mcpToolTable.name):r.orderBy(s.mcpToolTable.serverName,s.mcpToolTable.name)},"saveConnectionError",0,g,"saveOAuthData",0,O,"sealMcpSecrets",0,k,"syncServerTools",0,v]),t()}catch(e){t(e)}},!1),950262,e=>{"use strict";var r=e.i(853205),t=e.i(900533);let o=r.z.object({url:r.z.url(),headers:r.z.record(r.z.string(),r.z.string()).optional()}),n=r.z.object({command:r.z.string().min(1),args:r.z.array(r.z.string()).optional(),env:r.z.record(r.z.string(),r.z.string()).optional()}),a=r.z.union([o,n]),i=r.z.object({name:r.z.string(),description:r.z.string().optional(),inputSchema:r.z.looseObject({}).optional(),outputSchema:r.z.looseObject({}).optional()});r.z.object({clientInformation:r.z.looseObject({}).optional(),tokens:r.z.looseObject({}).optional(),authorizationServer:r.z.looseObject({}).optional(),codeVerifier:r.z.string().optional(),state:r.z.string().optional()});let s=r.z.object({name:r.z.string().min(1).max(40),config:a,toolCount:r.z.number().int(),lastError:r.z.string().nullish()}),c=i.extend({id:r.z.number().int(),description:r.z.string().nullish()});s.omit({toolCount:!0}).extend({tools:c.array().default([]),toolsSyncedAt:t.DateLikeSchema}),r.z.object({name:r.z.string().min(1,"Name is required").max(40).regex(/^[a-zA-Z0-9_-]+$/,"Only letters, numbers, - and _ are allowed"),config:a}),r.z.union([r.z.object({mcpServers:r.z.record(r.z.string(),a)}),r.z.record(r.z.string(),a)]),e.s(["isRemoteConfig",0,function(e){return"url"in e}])},198306,(e,r,t)=>{"use strict";var o=Object.create,n=Object.defineProperty,a=Object.getOwnPropertyDescriptor,i=Object.getOwnPropertyNames,s=Object.getPrototypeOf,c=Object.prototype.hasOwnProperty,l=(e,r,t,o)=>{if(r&&"object"==typeof r||"function"==typeof r)for(let s of i(r))c.call(e,s)||s===t||n(e,s,{get:()=>r[s],enumerable:!(o=a(r,s))||o.enumerable});return e},u=(e,r,t)=>(t=null!=e?o(s(e)):{},l(!r&&e&&e.__esModule?t:n(t,"default",{value:e,enumerable:!0}),e)),p={},f={isValidAccessToken:()=>w,readAuthConfig:()=>y,writeAuthConfig:()=>v};for(var d in f)n(p,d,{get:f[d],enumerable:!0});r.exports=l(n({},"__esModule",{value:!0}),p);var m=u(e.r(522734)),h=u(e.r(814747)),b=e.r(913803);function T(){let e=(0,b.getVercelDataDir)();if(!e)throw Error(`Unable to find Vercel CLI data directory. Your platform: ${process.platform}. Supported: darwin, linux, win32.`);return h.join(e,"auth.json")}function y(){try{let e=T();if(!m.existsSync(e))return null;let r=m.readFileSync(e,"utf8");if(!r)return null;return JSON.parse(r)}catch(e){return null}}function v(e){let r=T(),t=h.dirname(r);m.existsSync(t)||m.mkdirSync(t,{mode:504,recursive:!0}),m.writeFileSync(r,JSON.stringify(e,null,2),{mode:384})}function w(e,r=0){if(!e.token)return!1;if("number"!=typeof e.expiresAt)return!0;let t=Math.floor(Date.now()/1e3);return e.expiresAt>=t+r/1e3}},736374,(e,r,t)=>{"use strict";var o=Object.defineProperty,n=Object.getOwnPropertyDescriptor,a=Object.getOwnPropertyNames,i=Object.prototype.hasOwnProperty,s={},c={AccessTokenMissingError:()=>u,RefreshAccessTokenFailedError:()=>p};for(var l in c)o(s,l,{get:c[l],enumerable:!0});r.exports=((e,r,t)=>{if(r&&"object"==typeof r||"function"==typeof r)for(let s of a(r))i.call(e,s)||void 0===s||o(e,s,{get:()=>r[s],enumerable:!(t=n(r,s))||t.enumerable});return e})(o({},"__esModule",{value:!0}),s);class u extends Error{constructor(){super("No authentication found. Please log in with the Vercel CLI (vercel login)."),this.name="AccessTokenMissingError"}}class p extends Error{constructor(e){super("Failed to refresh authentication token.",{cause:e}),this.name="RefreshAccessTokenFailedError"}}},903736,(e,r,t)=>{"use strict";var o=Object.defineProperty,n=Object.getOwnPropertyDescriptor,a=Object.getOwnPropertyNames,i=Object.prototype.hasOwnProperty,s={},c={processTokenResponse:()=>h,refreshTokenRequest:()=>m};for(var l in c)o(s,l,{get:c[l],enumerable:!0});r.exports=((e,r,t)=>{if(r&&"object"==typeof r||"function"==typeof r)for(let s of a(r))i.call(e,s)||void 0===s||o(e,s,{get:()=>r[s],enumerable:!(t=n(r,s))||t.enumerable});return e})(o({},"__esModule",{value:!0}),s);var u=e.r(446786);let p=`@vercel/oidc node-${process.version} ${(0,u.platform)()} (${(0,u.arch)()}) ${(0,u.hostname)()}`,f=null;async function d(){if(f)return f;let e=await fetch("https://vercel.com/.well-known/openid-configuration",{headers:{"user-agent":p}});if(!e.ok)throw Error("Failed to discover OAuth endpoints");let r=await e.json();if(!r||"string"!=typeof r.token_endpoint)throw Error("Invalid OAuth discovery response");let t=r.token_endpoint;return f=t,t}async function m(e){let r=await d();return await fetch(r,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded","user-agent":p},body:new URLSearchParams({client_id:"cl_HYyOPBNtFMfHhaUn9L4QPfTZz6TP47bp",grant_type:"refresh_token",...e})})}async function h(e){let r=await e.json();return e.ok?"object"!=typeof r||null===r?[Error("Invalid token response")]:"string"!=typeof r.access_token?[Error("Missing access_token in response")]:"Bearer"!==r.token_type?[Error("Invalid token_type in response")]:"number"!=typeof r.expires_in?[Error("Missing expires_in in response")]:[null,r]:[Error("object"==typeof r&&r&&"error"in r?String(r.error):"Token refresh failed")]}},424134,(e,r,t)=>{"use strict";var o=Object.defineProperty,n=Object.getOwnPropertyDescriptor,a=Object.getOwnPropertyNames,i=Object.prototype.hasOwnProperty,s={},c={VercelOidcTokenError:()=>u};for(var l in c)o(s,l,{get:c[l],enumerable:!0});r.exports=((e,r,t)=>{if(r&&"object"==typeof r||"function"==typeof r)for(let s of a(r))i.call(e,s)||void 0===s||o(e,s,{get:()=>r[s],enumerable:!(t=n(r,s))||t.enumerable});return e})(o({},"__esModule",{value:!0}),s);class u extends Error{constructor(e,r){super(e),this.name="VercelOidcTokenError",this.cause=r}toString(){return this.cause?`${this.name}: ${this.message}: ${this.cause}`:`${this.name}: ${this.message}`}}},713292,(e,r,t)=>{"use strict";var o=Object.create,n=Object.defineProperty,a=Object.getOwnPropertyDescriptor,i=Object.getOwnPropertyNames,s=Object.getPrototypeOf,c=Object.prototype.hasOwnProperty,l=(e,r,t,o)=>{if(r&&"object"==typeof r||"function"==typeof r)for(let s of i(r))c.call(e,s)||s===t||n(e,s,{get:()=>r[s],enumerable:!(o=a(r,s))||o.enumerable});return e},u=(e,r,t)=>(t=null!=e?o(s(e)):{},l(!r&&e&&e.__esModule?t:n(t,"default",{value:e,enumerable:!0}),e)),p={},f={findRootDir:()=>y,getUserDataDir:()=>v};for(var d in f)n(p,d,{get:f[d],enumerable:!0});r.exports=l(n({},"__esModule",{value:!0}),p);var m=u(e.r(814747)),h=u(e.r(522734)),b=u(e.r(446786)),T=e.r(424134);function y(){try{let e=process.cwd();for(;e!==m.default.dirname(e);){let r=m.default.join(e,".vercel");if(h.default.existsSync(r))return e;e=m.default.dirname(e)}}catch(e){throw new T.VercelOidcTokenError("Token refresh only supported in node server environments")}return null}function v(){if(process.env.XDG_DATA_HOME)return process.env.XDG_DATA_HOME;switch(b.default.platform()){case"darwin":return m.default.join(b.default.homedir(),"Library/Application Support");case"linux":return m.default.join(b.default.homedir(),".local/share");case"win32":if(process.env.LOCALAPPDATA)return process.env.LOCALAPPDATA;return null;default:return null}}},913803,(e,r,t)=>{"use strict";var o=Object.create,n=Object.defineProperty,a=Object.getOwnPropertyDescriptor,i=Object.getOwnPropertyNames,s=Object.getPrototypeOf,c=Object.prototype.hasOwnProperty,l=(e,r,t,o)=>{if(r&&"object"==typeof r||"function"==typeof r)for(let s of i(r))c.call(e,s)||s===t||n(e,s,{get:()=>r[s],enumerable:!(o=a(r,s))||o.enumerable});return e},u=(e,r,t)=>(t=null!=e?o(s(e)):{},l(!r&&e&&e.__esModule?t:n(t,"default",{value:e,enumerable:!0}),e)),p={},f={assertVercelOidcTokenResponse:()=>k,findProjectInfo:()=>S,getTokenPayload:()=>P,getVercelDataDir:()=>g,getVercelOidcToken:()=>j,getVercelToken:()=>O,isExpired:()=>_,loadToken:()=>A,saveToken:()=>E};for(var d in f)n(p,d,{get:f[d],enumerable:!0});r.exports=l(n({},"__esModule",{value:!0}),p);var m=u(e.r(814747)),h=u(e.r(522734)),b=e.r(424134),T=e.r(713292),y=e.r(198306),v=e.r(903736),w=e.r(736374);function g(){let e=(0,T.getUserDataDir)();return e?m.join(e,"com.vercel.cli"):null}async function O(e){let r=(0,y.readAuthConfig)();if(!r?.token)throw new w.AccessTokenMissingError;if((0,y.isValidAccessToken)(r,e?.expirationBufferMs))return r.token;if(!r.refreshToken)throw(0,y.writeAuthConfig)({}),new w.RefreshAccessTokenFailedError("No refresh token available");try{let e=await (0,v.refreshTokenRequest)({refresh_token:r.refreshToken}),[t,o]=await (0,v.processTokenResponse)(e);if(t||!o)throw(0,y.writeAuthConfig)({}),new w.RefreshAccessTokenFailedError(t);let n={token:o.access_token,expiresAt:Math.floor(Date.now()/1e3)+o.expires_in};return o.refresh_token&&(n.refreshToken=o.refresh_token),(0,y.writeAuthConfig)(n),n.token}catch(e){if((0,y.writeAuthConfig)({}),e instanceof w.AccessTokenMissingError||e instanceof w.RefreshAccessTokenFailedError)throw e;throw new w.RefreshAccessTokenFailedError(e)}}async function j(e,r,t){let o=`https://api.vercel.com/v1/projects/${r}/token?source=vercel-oidc-refresh${t?`&teamId=${t}`:""}`,n=await fetch(o,{method:"POST",headers:{Authorization:`Bearer ${e}`}});if(!n.ok)throw new b.VercelOidcTokenError(`Failed to refresh OIDC token: ${n.statusText}`);let a=await n.json();return k(a),a}function k(e){if(!e||"object"!=typeof e)throw TypeError("Vercel OIDC token is malformed. Expected an object. Please run `vc env pull` and try again");if(!("token"in e)||"string"!=typeof e.token)throw TypeError("Vercel OIDC token is malformed. Expected a string-valued token property. Please run `vc env pull` and try again")}function S(){let e=(0,T.findRootDir)();if(!e)throw new b.VercelOidcTokenError("Unable to find project root directory. Have you linked your project with `vc link?`");let r=m.join(e,".vercel","project.json");if(!h.existsSync(r))throw new b.VercelOidcTokenError("project.json not found, have you linked your project with `vc link?`");let t=JSON.parse(h.readFileSync(r,"utf8"));if("string"!=typeof t.projectId&&"string"!=typeof t.orgId)throw TypeError("Expected a string-valued projectId property. Try running `vc link` to re-link your project.");return{projectId:t.projectId,teamId:t.orgId}}function E(e,r){let t=(0,T.getUserDataDir)();if(!t)throw new b.VercelOidcTokenError("Unable to find user data directory. Please reach out to Vercel support.");let o=m.join(t,"com.vercel.token",`${r}.json`),n=JSON.stringify(e);h.mkdirSync(m.dirname(o),{mode:504,recursive:!0}),h.writeFileSync(o,n),h.chmodSync(o,432)}function A(e){let r=(0,T.getUserDataDir)();if(!r)throw new b.VercelOidcTokenError("Unable to find user data directory. Please reach out to Vercel support.");let t=m.join(r,"com.vercel.token",`${e}.json`);if(!h.existsSync(t))return null;let o=JSON.parse(h.readFileSync(t,"utf8"));return k(o),o}function P(e){let r=e.split(".");if(3!==r.length)throw new b.VercelOidcTokenError("Invalid token. Please run `vc env pull` and try again");let t=r[1].replace(/-/g,"+").replace(/_/g,"/"),o=t.padEnd(t.length+(4-t.length%4)%4,"=");return JSON.parse(Buffer.from(o,"base64").toString("utf8"))}function _(e,r=0){return 1e3*e.exp<Date.now()+r}}];
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=_032k4m6._.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[353885,e=>{"use strict";e.s(["STUDIO_TOOLS",0,{generate_image:"generate_image",generate_speech:"generate_speech",transcribe:"transcribe",generate_video:"generate_video"},"TOOL_NAMES",0,{memory_recall:"memory_recall",memory_create:"memory_create",memory_remember:"memory_remember",memory_describe:"memory_describe",memory_forget:"memory_forget",bash:"bash",write_file:"write_file",tool_search:"tool_search",tool_call:"tool_call",load_skill:"load_skill",web_search:"web_search",thread_start:"thread_start",thread_tell:"thread_tell",thread_answer:"thread_answer",thread_status:"thread_status",thread_cancel:"thread_cancel",thread_show:"thread_show",thread_seen:"thread_seen",routine:"routine",send_message:"send_message",thread_recall:"thread_recall",sign_in_use:"sign_in_use",sign_in_keep:"sign_in_keep",look_at:"look_at",make_deck:"make_deck",describe_self:"describe_self",end_call:"end_call",emote:"emote"
|
|
1
|
+
module.exports=[353885,e=>{"use strict";e.s(["STUDIO_TOOLS",0,{generate_image:"generate_image",generate_speech:"generate_speech",transcribe:"transcribe",generate_video:"generate_video"},"TOOL_NAMES",0,{memory_recall:"memory_recall",memory_create:"memory_create",memory_remember:"memory_remember",memory_describe:"memory_describe",memory_forget:"memory_forget",bash:"bash",write_file:"write_file",tool_search:"tool_search",tool_call:"tool_call",load_skill:"load_skill",web_search:"web_search",thread_start:"thread_start",thread_tell:"thread_tell",thread_answer:"thread_answer",thread_status:"thread_status",thread_cancel:"thread_cancel",thread_show:"thread_show",thread_seen:"thread_seen",routine:"routine",send_message:"send_message",thread_recall:"thread_recall",sign_in_use:"sign_in_use",sign_in_keep:"sign_in_keep",look_at:"look_at",make_deck:"make_deck",describe_self:"describe_self",end_call:"end_call",emote:"emote"}])},944971,e=>{"use strict";var t=e.i(105249),a=e.i(687388),l=e.i(264079),r=e.i(704161),n=e.i(41444),i=e.i(554199),s=e.i(889034);let o=t.default.object({color:t.default.string().regex(/^(#[0-9a-fA-F]{6}|currentColor)$/,"Hex color").optional(),shape:t.default.enum(i.MARK_SHAPES).optional(),outline:t.default.boolean().optional(),paint:t.default.enum(i.MARK_PAINT_IDS).optional()}),d=t.default.string().max(a.COMMON_VALIDATE.prompt.max),u=t.default.object({line:t.default.string(),reason:t.default.string(),at:t.default.number()}),f=t.default.object({id:t.default.number(),name:t.default.string(),serverName:t.default.string()}),m=t.default.string().trim().transform(e=>e.replace(/\s+/g," ")).refine(e=>e.toLowerCase()!==s.ROOM_THURSDAY.toLowerCase(),"Thursday is reserved for the voice assistant.").pipe(t.default.string().min(1,"A name is required").max(a.COMMON_VALIDATE.name.max)),c=t.default.object({input:t.default.number(),output:t.default.number()});t.default.object({name:t.default.string(),description:t.default.string(),descriptionLocked:t.default.boolean(),ownLine:u.nullish(),systemPrompt:t.default.string().nullish(),icon:o.nullish(),provider:l.textModelProviderSchema.nullish(),model:t.default.string().nullish(),compactAt:t.default.number().nullish(),effort:l.effortSchema.nullish(),disabled:t.default.boolean(),createdAt:r.DateLikeSchema,tools:f.array().default([]),tokens:c,lastJobAt:r.DateLikeSchema.nullish()}),t.default.object({name:m,description:t.default.string().trim().min(1,"Say what this bot is for").max(a.COMMON_VALIDATE.description.max),systemPrompt:d.optional(),icon:o.optional(),provider:l.textModelProviderSchema.nullish(),model:t.default.string().trim().max(80).nullish(),compactAt:t.default.coerce.number().int().min(8e3,"At least 8k").nullish(),effort:l.effortSchema.nullish(),disabled:t.default.boolean().optional(),descriptionLocked:t.default.boolean().optional(),toolIds:t.default.number().int().array().max(a.MAX_PINNED_TOOLS).optional()});let g={color:i.MARK_SYSTEM,shape:"blob"};t.default.object({file:t.default.string(),path:t.default.string(),line:t.default.string(),at:r.DateLikeSchema,bytes:t.default.number()});let h="Continue",_={thursday:"Thursday, on the call:",user:"The user, on screen:"},b=e=>Object.keys(_).find(t=>e.startsWith(`${_[t]} `))??null,p=t.default.discriminatedUnion("type",[t.default.object({type:t.default.literal("text"),text:t.default.string()}),t.default.object({type:t.default.literal("image"),src:t.default.string()})]),y=t.default.object({id:t.default.string(),seq:t.default.number(),bot:t.default.string().nullable(),parent:t.default.string().nullable(),to:t.default.string().nullish(),at:r.DateLikeSchema}),k=t.default.discriminatedUnion("kind",[y.extend({kind:t.default.literal("user"),text:t.default.string(),by:t.default.enum(["thursday","user"]).nullable()}),y.extend({kind:t.default.literal("text"),text:t.default.string()}),y.extend({kind:t.default.literal("note"),text:t.default.string()}),y.extend({kind:t.default.literal("stop"),text:t.default.string()}),y.extend({kind:t.default.literal("tool"),callId:t.default.string(),name:t.default.string(),input:t.default.string(),note:t.default.string().nullish(),path:t.default.string().nullish()}),y.extend({kind:t.default.literal("tool-result"),callId:t.default.string(),name:t.default.string(),results:p.array(),more:t.default.boolean()}),y.extend({kind:t.default.literal("ask"),callId:t.default.string(),to:t.default.string(),text:t.default.string(),question:t.default.boolean().optional(),questionId:t.default.string().optional(),exchange:t.default.string().optional(),after:t.default.array(t.default.string()).optional()})]),x=t.default.object({question:t.default.string(),messageId:t.default.string().optional(),bot:t.default.string().optional(),options:t.default.string().array(),refused:l.textModelProviderSchema.optional()});t.default.object({id:t.default.string(),bot:t.default.string(),label:t.default.string(),request:t.default.string(),status:t.default.enum(["running","waiting","done","cancelled"]),outcome:t.default.string().nullable(),ask:x.nullable(),seen:t.default.boolean(),routineId:t.default.string().nullable(),startedBy:t.default.enum(["thursday","user"]).nullable(),tokens:c,contextTokens:t.default.number(),contextBudget:t.default.number(),createdAt:r.DateLikeSchema,updatedAt:r.DateLikeSchema,lines:k.array(),room:s.RoomViewSchema}),e.s(["BOT_MEMORY_KEY",0,"BOT_MEMORY","COMPACT_AT_MIN",0,8e3,"DEFAULT_BOT",0,{name:"Jarvis",description:"Anything — this computer, a browser, the web, files, services",ownLine:null,systemPrompt:null,icon:g,provider:null,model:null,disabled:!1,compactAt:null,effort:null},"DEFAULT_BOT_ICON",0,g,"THREAD_CONTINUE",0,h,"isAppStop",0,e=>{let t=e?.options??[];return!e?.messageId&&1===t.length&&t[0]===h},"isBotMemoryOn",0,e=>e?.trim()!=="off","rosterLine",0,function(e){let t=e.description.trim();return e.ownLine?`${t}${/[.!?。…]$/.test(t)?"":"."} ${e.ownLine}`:t},"speakerOf",0,b,"tagSpeaker",0,(e,t)=>`${_[e]} ${t}`,"threadActivity",0,function(e,t=120){let a=null;for(let l=e.length-1;l>=0;l--){let r=e[l];if("tool"===r.kind)a??=`${r.name} ${r.note??r.input}`;else if("text"===r.kind)return(0,n.clip)(a?`${r.text} → ${a}`:r.text,t);else if("ask"===r.kind)return(0,n.clip)(`asked ${r.to}: ${r.text}`,t);else if("user"===r.kind)break}return a?(0,n.clip)(a,t):null},"untagSpeaker",0,e=>{let t=b(e);return t?e.slice(_[t].length+1):e},"workHandle",0,e=>e.slice(0,6)])},889034,e=>{"use strict";var t=e.i(469719);let a=t.z.object({to:t.z.string().trim().min(1),text:t.z.string().trim().min(1),why:t.z.string().trim().min(1),kind:t.z.enum(["message","question"]).default("message"),options:t.z.array(t.z.string().trim().min(1)).nullish(),after:t.z.array(t.z.string().trim().min(1)).nullish()}),l=t.z.enum(["queued","running","waiting","external","paused","done","cancelled"]),r=t.z.object({bot:t.z.string(),state:l}),n=t.z.object({id:t.z.string(),bot:t.z.string(),caller:t.z.string(),state:l,waitsFor:t.z.string().array()}),i=t.z.object({id:t.z.string(),bot:t.z.string(),text:t.z.string(),options:t.z.string().array().optional()}),s=t.z.enum(["message","question","report","interrupted"]),o="Thursday",d=t.z.object({participants:r.array(),questions:i.array(),deliveries:t.z.object({id:t.z.string(),bot:t.z.string(),text:t.z.string(),delivered:t.z.boolean()}).array(),relays:t.z.object({id:t.z.number(),bot:t.z.string(),text:t.z.string(),kind:s,messageId:t.z.string().nullable()}).array(),exchanges:n.array()});e.s(["RESUME_CHECK",0,"Resume from the saved state; inspect any tool whose result is missing before repeating it.","ROOM_THURSDAY",0,o,"ROOM_USER",0,"The user","RoomMessageSchema",0,a,"RoomViewSchema",0,d,"isCoordinatorSeat",0,(e,t,a)=>e===t&&a===o])},105249,e=>{"use strict";var t=e.i(562810);e.s(["default",0,t])}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=_03p6r2-._.js.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
module.exports=[380690,e=>{"use strict";let t,n,r,a,s,i;var o,l=e.i(687388),u=e.i(850063);let c={threads:!0,bots:!0,routines:!0,memory:!0,mcp:!0,config:!0,reach:!0,signins:!0,files:!0},d=globalThis,m=d.__appEvents??=(t=new Set,{emit(e){for(let n of[...t])try{n(e)}catch(e){console.error("event listener failed",e)}},subscribe:e=>(t.add(e),()=>{t.delete(e)})}),h=d.__presence??=(o=l.BROWSER_GONE_MS,n=!1,r=null,a=new Set,s=new Set,i=e=>{for(let t of[...e])try{t()}catch(e){console.error("presence listener failed",e)}},{get watching(){return n},track(e){if(e>0){r&&clearTimeout(r),r=null,n||(n=!0,i(s));return}!r&&n&&(r=setTimeout(()=>{r=null,n=!1,i(a)},o))},onGone:e=>(a.add(e),()=>a.delete(e)),onBack:e=>(s.add(e),()=>s.delete(e))}),f=d.__appEventStream??=(0,u.createEventStream)(m,{coalesce:{ms:l.SIGNAL_PACE_MS,keyOf:e=>e.type in c?e.type:null},onWatchers:h.track});e.s(["appEventStream",0,f,"appEvents",0,m,"presence",0,h],380690)},687388,e=>{"use strict";let t=process.env.THURSDAY_APP_DIR?.trim()||process.cwd(),n=process.env.THURSDAY_HOME?.trim()||process.cwd(),r=process.env.THURSDAY_URL?.trim()||`http://localhost:${process.env.PORT?.trim()||3e3}`,a=`${n}/local.db`,s=`file:${a}`,i=`${n}/.env`,o=".ai-workspace",l={workspace:o,artifacts:"artifacts",projects:"projects",scratch:"scratch",bots:"bots",output:".output",signIns:".sign-ins",skills:{default:"skills",custom:`${o}/.agents/skills`,own:".agents/skills",runtime:"runtime",seeds:"seed-skills"}},u="artifact";e.s(["APP_DIR",0,t,"APP_NAME",0,"Thursday","APP_URL",0,r,"ARTIFACT_SKILL",0,u,"ARTIFACT_VIEW",0,{rows:200,setFiles:120},"BOT_MEMORY_LIMITS",0,{files:20,chars:1e4},"BOT_RUN",0,{steps:100,compactAt:5e5,compactHeadroom:.8,summaryWords:{min:600,max:3e3,perTokens:200},participants:8,concurrent:8,turns:120,queuedMessages:200,silenceMs:3e5,overflowShrink:.6,retryMs:1e4,compactFiles:40},"BOT_WORK",0,{open:5,recent:5,said:80,files:2,reads:2,asked:400,readChars:4e3},"BROWSER_CLI",0,{readMs:15e3,loadMs:3e4},"BROWSER_GONE_MS",0,1e4,"BROWSER_VIEWPORT",0,"700x700","CALL_EXEC_TIMEOUT_MS",0,15e3,"CALL_HISTORY_PAGE",0,10,"CALL_RELAY",0,{quietMs:2e3,perTurn:3,readMs:15e3,chars:600},"CATALOG_MS",0,6e5,"CHATGPT_SIGN_IN",0,{waitMs:6e5,renewBeforeMs:3e5},"CHATGPT_USAGE_HIGH",0,80,"COMMON_VALIDATE",0,{name:{max:16},shortDescription:{max:60},description:{max:100},prompt:{max:4e3}},"CONNECTED_TOOL_TIMEOUT_MS",0,6e5,"DATA_DIR",0,n,"DB_FILE_NAME",0,s,"DB_PATH",0,a,"DECK",0,{slides:30,shotsMs:9e4},"ENV_PATH",0,i,"EXEC_KILL_GRACE_MS",0,5e3,"EXEC_TIMEOUT_MS",0,18e4,"FAVICON",0,{timeoutMs:4e3,maxBytes:3e5,kept:500,pageBytes:65536},"FINISHED_NOTICE",0,{rows:5,shown:1,words:240},"FULL_RESULT_LINES",0,400,"INBOX_FINISHED",0,5,"IS_DEV",0,!1,"JOB_FOLDER_WALK",0,500,"KEY_LOW_CREDIT",0,1,"LIVE_CALL",0,{startupMs:3e4,closeMs:15e3,transcriptGapMs:1500,transcriptSaveMs:500,appendMs:15e3,backendOutputTokens:4096,reasoningCheckMs:5e3,keyCheckMs:5e3,openingHoldMs:3e3},"LOOK",0,{maxBytes:4194304},"MARKETING_SKILL",0,"marketing","MAX_PINNED_TOOLS",0,10,"MCP_IDLE_MS",0,18e5,"MEMORY_EDIT",0,{maxSteps:20},"MEMORY_LIMITS",0,{facts:400,factsPerNote:50,descriptionChars:100},"PAGE_SIZE",0,50,"PATHS",0,l,"PLAN_CALL",0,{delegationBytes:4096,pictureBytes:262144},"PROMPT_BUDGET",0,6e3,"PROMPT_LINE",0,{skill:90,toolArgs:30,jobOutcome:160,botMemory:100,threadStatus:200,routineRequest:300,routineOutcome:200,boardAsk:100},"REACH",0,{pollSeconds:50,retryMs:5e3,idleMs:6e5,messages:40,trimTo:30,oldChars:1e3,files:3,fileBytes:0x2d00000,rateRetries:3,rateWaitMs:3e4,codeDigits:4,held:5,pictures:9,drawMs:6e4,lookMs:2e3},"RECENT_CALL",0,{rows:20,tokens:600},"ROUTINE",0,{tickMs:3e4,max:12,minHours:1,runsShown:5},"SEARCH",0,{sources:3,excerptChars:1200,timeoutMs:3e4},"SIGNAL_PACE_MS",0,150,"SKILLS_FOLDED",0,{design:u,"picture-book":u,"interactive-page":u},"SKILL_FILES",0,{uploadBytes:0x1400000,inlineBytes:524288,unpackedBytes:0x6400000,archiveEntries:1e3},"SKILL_FILES_LISTED",0,50,"STUDIO_SERVER",0,"studio","TEXT_CALL",0,{maxSteps:12,model:"text",autoTurns:10},"THREAD_LABEL_REACH",0,20,"THREAD_STATUS_LIMIT",0,10,"TOOL_OUTPUT",0,{max:8e3,head:5500,tail:1500},"TOOL_SEARCH_SCHEMAS",0,8,"TRAVEL_SKILL",0,"travel","WORKSPACE_KEEP",0,{forMs:2592e5,sweepEveryMs:36e5},"WORKSPACE_VIEW",0,{rows:200,textMax:524288,autoCloseMs:5e3,elementMax:0x3200000}])},850063,e=>{"use strict";var t=e.i(640911);e.s(["createEventStream",0,function(e,n={}){let r=new TextEncoder,a=n.heartbeatMs??2e4,s=0;return{respond:(i,o)=>{let l=()=>{};return new Response(new ReadableStream({async start(u){let c=!1,d=new Map,m=[],h=e=>{if(!c)try{u.enqueue(r.encode(e))}catch{l()}},f=e=>h(`data: ${JSON.stringify(e)}
|
|
1
|
+
module.exports=[380690,e=>{"use strict";let t,n,r,a,s,i;var o,l=e.i(687388),u=e.i(850063);let c={threads:!0,bots:!0,routines:!0,memory:!0,mcp:!0,config:!0,reach:!0,signins:!0,files:!0},d=globalThis,m=d.__appEvents??=(t=new Set,{emit(e){for(let n of[...t])try{n(e)}catch(e){console.error("event listener failed",e)}},subscribe:e=>(t.add(e),()=>{t.delete(e)})}),h=d.__presence??=(o=l.BROWSER_GONE_MS,n=!1,r=null,a=new Set,s=new Set,i=e=>{for(let t of[...e])try{t()}catch(e){console.error("presence listener failed",e)}},{get watching(){return n},track(e){if(e>0){r&&clearTimeout(r),r=null,n||(n=!0,i(s));return}!r&&n&&(r=setTimeout(()=>{r=null,n=!1,i(a)},o))},onGone:e=>(a.add(e),()=>a.delete(e)),onBack:e=>(s.add(e),()=>s.delete(e))}),f=d.__appEventStream??=(0,u.createEventStream)(m,{coalesce:{ms:l.SIGNAL_PACE_MS,keyOf:e=>e.type in c?e.type:null},onWatchers:h.track});e.s(["appEventStream",0,f,"appEvents",0,m,"presence",0,h],380690)},687388,e=>{"use strict";let t=process.env.THURSDAY_APP_DIR?.trim()||process.cwd(),n=process.env.THURSDAY_HOME?.trim()||process.cwd(),r=process.env.THURSDAY_URL?.trim()||`http://localhost:${process.env.PORT?.trim()||3e3}`,a=`${n}/local.db`,s=`file:${a}`,i=`${n}/.env`,o=".ai-workspace",l={workspace:o,artifacts:"artifacts",projects:"projects",scratch:"scratch",bots:"bots",output:".output",signIns:".sign-ins",skills:{default:"skills",custom:`${o}/.agents/skills`,own:".agents/skills",runtime:"runtime",seeds:"seed-skills"}},u="artifact";e.s(["APP_DIR",0,t,"APP_NAME",0,"Thursday","APP_URL",0,r,"ARTIFACT_SKILL",0,u,"ARTIFACT_VIEW",0,{rows:200,setFiles:120},"BOT_MEMORY_LIMITS",0,{files:20,chars:1e4},"BOT_RUN",0,{steps:100,compactAt:5e5,compactHeadroom:.8,summaryWords:{min:600,max:3e3,perTokens:200},participants:8,concurrent:8,turns:120,queuedMessages:200,silenceMs:3e5,overflowShrink:.6,retryMs:1e4,compactFiles:40},"BOT_WORK",0,{open:5,recent:5,said:80,files:2,reads:2,asked:400,readChars:4e3},"BROWSER_CLI",0,{readMs:15e3,loadMs:3e4},"BROWSER_GONE_MS",0,1e4,"BROWSER_VIEWPORT",0,"700x700","CALL_EXEC_TIMEOUT_MS",0,15e3,"CALL_HISTORY_PAGE",0,10,"CALL_RELAY",0,{quietMs:2e3,perTurn:3,readMs:15e3,chars:600},"CATALOG_MS",0,6e5,"CHATGPT_SIGN_IN",0,{waitMs:6e5,renewBeforeMs:3e5},"CHATGPT_USAGE_HIGH",0,80,"COMMON_VALIDATE",0,{name:{max:16},shortDescription:{max:60},description:{max:100},prompt:{max:4e3}},"CONNECTED_TOOL_TIMEOUT_MS",0,6e5,"DATA_DIR",0,n,"DB_FILE_NAME",0,s,"DB_PATH",0,a,"DECK",0,{slides:30,shotsMs:9e4},"ENV_PATH",0,i,"EXEC_KILL_GRACE_MS",0,5e3,"EXEC_TIMEOUT_MS",0,18e4,"FAVICON",0,{timeoutMs:4e3,maxBytes:3e5,kept:500,pageBytes:65536},"FINISHED_NOTICE",0,{rows:5,shown:1,words:240},"FULL_RESULT_LINES",0,400,"INBOX_FINISHED",0,5,"IS_DEV",0,!1,"JOB_FOLDER_WALK",0,500,"KEY_LOW_CREDIT",0,1,"LIVE_CALL",0,{startupMs:3e4,closeMs:15e3,transcriptGapMs:1500,transcriptSaveMs:500,appendMs:15e3,backendOutputTokens:4096,reasoningCheckMs:5e3,keyCheckMs:5e3,openingHoldMs:3e3},"LOOK",0,{maxBytes:4194304,perRequest:0xc00000},"MARKETING_SKILL",0,"marketing","MAX_PINNED_TOOLS",0,10,"MCP_IDLE_MS",0,18e5,"MEMORY_EDIT",0,{maxSteps:20},"MEMORY_LIMITS",0,{facts:400,factsPerNote:50,descriptionChars:100},"PAGE_SIZE",0,50,"PATHS",0,l,"PLAN_CALL",0,{delegationBytes:4096,pictureBytes:262144},"PROMPT_BUDGET",0,6e3,"PROMPT_LINE",0,{skill:90,toolArgs:30,jobOutcome:160,botMemory:100,threadStatus:200,routineRequest:300,routineOutcome:200,boardAsk:100},"REACH",0,{pollSeconds:50,retryMs:5e3,idleMs:6e5,messages:40,trimTo:30,oldChars:1e3,files:3,fileBytes:0x2d00000,rateRetries:3,rateWaitMs:3e4,codeDigits:4,held:5,pictures:9,drawMs:6e4,lookMs:2e3},"RECENT_CALL",0,{rows:20,tokens:600},"ROUTINE",0,{tickMs:3e4,max:12,minHours:1,runsShown:5},"SEARCH",0,{sources:3,excerptChars:1200,timeoutMs:3e4},"SEED_KITS_RENAMED",0,{marketer:"writer"},"SIGNAL_PACE_MS",0,150,"SKILLS_FOLDED",0,{design:u,"picture-book":u,"interactive-page":u},"SKILL_FILES",0,{uploadBytes:0x1400000,inlineBytes:524288,unpackedBytes:0x6400000,archiveEntries:1e3},"SKILL_FILES_LISTED",0,50,"STUDIO_SERVER",0,"studio","TEXT_CALL",0,{maxSteps:12,model:"text",autoTurns:10},"THREAD_LABEL_REACH",0,20,"THREAD_STATUS_LIMIT",0,10,"TOOL_OUTPUT",0,{max:8e3,head:5500,tail:1500},"TOOL_SEARCH_SCHEMAS",0,8,"TRAVEL_SKILL",0,"travel","WORKSPACE_KEEP",0,{forMs:2592e5,sweepEveryMs:36e5},"WORKSPACE_VIEW",0,{rows:200,textMax:524288,autoCloseMs:5e3,elementMax:0x3200000}])},850063,e=>{"use strict";var t=e.i(640911);e.s(["createEventStream",0,function(e,n={}){let r=new TextEncoder,a=n.heartbeatMs??2e4,s=0;return{respond:(i,o)=>{let l=()=>{};return new Response(new ReadableStream({async start(u){let c=!1,d=new Map,m=[],h=e=>{if(!c)try{u.enqueue(r.encode(e))}catch{l()}},f=e=>h(`data: ${JSON.stringify(e)}
|
|
2
2
|
|
|
3
|
-
`),p=e=>{let t={last:null},r=setTimeout(()=>{d.delete(e),!c&&t.last&&(f(t.last),p(e))},n.coalesce?.ms);d.set(e,{timer:r,wait:t})},g=e=>{if(c)return;let t=n.coalesce?.keyOf(e)??null;if(null===t)return f(e);let r=d.get(t);if(r){r.wait.last=e;return}f(e),p(t)},y=e.subscribe(e=>m?m.push(e):g(e)),M=setInterval(()=>h(": ping\n\n"),a);s+=1,n.onWatchers?.(s),l=()=>{if(!c){for(let e of(c=!0,s-=1,n.onWatchers?.(s),y(),clearInterval(M),d.values()))clearTimeout(e.timer);try{u.close()}catch{}}},i.addEventListener("abort",l);try{for(let e of await o?.()??[])f(e)}catch(e){t.logger.error("event stream opening failed",e),l();return}let _=m;for(let e of(m=null,_))g(e)},cancel(){l()}}),{headers:{"Content-Type":"text/event-stream; charset=utf-8","Cache-Control":"no-store","X-Accel-Buffering":"no"}})},get watchers(){return s}}}])},41444,e=>{"use strict";function t(e,t){let n=e.replace(/\s+/g," ").trim();return n.length>t?`${n.slice(0,t-1).trimEnd()}…`:n}let n=/\[([^\]\n]+)\]\(([^)\s]+)\)/g;e.s(["MARKDOWN_LINK",0,n,"PromiseChain",0,()=>{let e=Promise.resolve();return t=>{let n=e.then(()=>t());return e=n.catch(()=>{}),n}},"captionText",0,function(e){let t=[],r=e.replace(/```[\s\S]*?```/g," ").replace(/!\[([^\]]*)\]\([^)]*\)/g,"$1").replace(n,(e,n,r)=>(t.push(`[${n.replace(/[*_`]/g,"")}](${r})`),`\uE000${t.length-1}\uE000`)),a=[];for(let e of r.split("\n")){let t=e.trim();t&&(/^\|?[\s:|-]+\|[\s:|-]*$|^[-*_]{3,}$/.test(t)||(/\|.*\|/.test(t)&&(t=t.replace(/^\||\|$/g,"").split("|").map(e=>e.trim()).filter(Boolean).join(" · ")),t=t.replace(/^#{1,6}\s+/,"").replace(/^>\s?/,"").replace(/^[-*+]\s+/,"• ").replace(/`([^`]*)`/g,"$1").replace(/(\*\*|__)(\S(?:.*?\S)?)\1/g,"$2").replace(/(^|[^\w*])([*_])(\S(?:[^*_\n]*?\S)?)\2(?![\w*])/g,"$1$3").replace(/\s+/g," "),a.push(t)))}return a.join("\n").replace(/\uE000(\d+)\uE000/g,(e,n)=>t[Number(n)]??"")},"clip",0,t,"errorToString",0,function(e){if(e instanceof Error)return e.message;if("object"!=typeof e||null===e)return String(e);let{message:n,error:r}=e;if("string"==typeof n&&n)return n;if("string"==typeof r&&r)return r;let a=r?.message;if("string"==typeof a&&a)return a;try{return t(JSON.stringify(e),300)}catch{return`${e.constructor?.name??"Object"} thrown without a message`}},"hostOf",0,function(e){try{return new URL(e).hostname.replace(/^www\./,"")}catch{return null}},"plainText",0,function(e){return e.replace(/```[\s\S]*?```/g," ").replace(/`([^`]*)`/g,"$1").replace(/!?\[([^\]]*)\]\([^)]*\)/g,"$1").replace(/^\s{0,3}(#{1,6}\s+|[-*+]\s+|\d+\.\s+|>\s?)/gm,"").replace(/(\*\*|__)(.*?)\1/g,"$2").replace(/(\*|_)(.*?)\1/g,"$2").replace(/^\s*\|?[\s:|-]+\|\s*$/gm," ").replace(/\|/g," ").replace(/\s+/g," ").trim()},"slug",0,function(e){return e.toLowerCase().replace(/[^\p{L}\p{N}]+/gu,"-").replace(/^-+|-+$/g,"").slice(0,40)}])},89929,609730,277988,e=>{"use strict";var t=e.i(874321);function n(e,n){return(0,t.constructFrom)(n||e,e)}e.s(["toDate",0,n],609730),e.s(["getTimezoneOffsetInMilliseconds",0,function(e){let t=n(e),r=new Date(Date.UTC(t.getFullYear(),t.getMonth(),t.getDate(),t.getHours(),t.getMinutes(),t.getSeconds(),t.getMilliseconds()));return r.setUTCFullYear(t.getFullYear()),e-r}],89929),e.s(["normalizeDates",0,function(e,...n){let r=t.constructFrom.bind(null,e||n.find(e=>"object"==typeof e));return n.map(r)}],277988)},874321,438220,e=>{"use strict";let t=Symbol.for("constructDateFrom");e.s(["constructFromSymbol",0,t,"millisecondsInDay",0,864e5,"millisecondsInMinute",0,6e4,"millisecondsInWeek",0,6048e5,"minutesInDay",0,1440,"minutesInMonth",0,43200,"minutesInYear",0,525600],438220),e.s(["constructFrom",0,function(e,n){return"function"==typeof e?e(n):e&&"object"==typeof e&&t in e?e[t](n):e instanceof Date?new e.constructor(n):new Date(n)}],874321)},599447,e=>{"use strict";var t=e.i(874321);e.s(["constructNow",0,function(e){return(0,t.constructFrom)(e,Date.now())}])},881237,662001,e=>{"use strict";var t;let n={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXWeeks:{one:"about 1 week",other:"about {{count}} weeks"},xWeeks:{one:"1 week",other:"{{count}} weeks"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}};function r(e){return (t={})=>{let n=t.width?String(t.width):e.defaultWidth;return e.formats[n]||e.formats[e.defaultWidth]}}let a={date:r({formats:{full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},defaultWidth:"full"}),time:r({formats:{full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},defaultWidth:"full"}),dateTime:r({formats:{full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},defaultWidth:"full"})},s={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"};function i(e){return(t,n)=>{let r;if("formatting"===(n?.context?String(n.context):"standalone")&&e.formattingValues){let t=e.defaultFormattingWidth||e.defaultWidth,a=n?.width?String(n.width):t;r=e.formattingValues[a]||e.formattingValues[t]}else{let t=e.defaultWidth,a=n?.width?String(n.width):e.defaultWidth;r=e.values[a]||e.values[t]}return r[e.argumentCallback?e.argumentCallback(t):t]}}let o={ordinalNumber:(e,t)=>{let n=Number(e),r=n%100;if(r>20||r<10)switch(r%10){case 1:return n+"st";case 2:return n+"nd";case 3:return n+"rd"}return n+"th"},era:i({values:{narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},defaultWidth:"wide"}),quarter:i({values:{narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},defaultWidth:"wide",argumentCallback:e=>e-1}),month:i({values:{narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},defaultWidth:"wide"}),day:i({values:{narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},defaultWidth:"wide"}),dayPeriod:i({values:{narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},defaultWidth:"wide",formattingValues:{narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},defaultFormattingWidth:"wide"})};function l(e){return(t,n={})=>{let r,a=n.width,s=a&&e.matchPatterns[a]||e.matchPatterns[e.defaultMatchWidth],i=t.match(s);if(!i)return null;let o=i[0],l=a&&e.parsePatterns[a]||e.parsePatterns[e.defaultParseWidth],u=Array.isArray(l)?function(e,t){for(let n=0;n<e.length;n++)if(t(e[n]))return n}(l,e=>e.test(o)):function(e,t){for(let n in e)if(Object.prototype.hasOwnProperty.call(e,n)&&t(e[n]))return n}(l,e=>e.test(o));return r=e.valueCallback?e.valueCallback(u):u,{value:r=n.valueCallback?n.valueCallback(r):r,rest:t.slice(o.length)}}}let u={ordinalNumber:(t={matchPattern:/^(\d+)(th|st|nd|rd)?/i,parsePattern:/\d+/i,valueCallback:e=>parseInt(e,10)},(e,n={})=>{let r=e.match(t.matchPattern);if(!r)return null;let a=r[0],s=e.match(t.parsePattern);if(!s)return null;let i=t.valueCallback?t.valueCallback(s[0]):s[0];return{value:i=n.valueCallback?n.valueCallback(i):i,rest:e.slice(a.length)}}),era:l({matchPatterns:{narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^b/i,/^(a|c)/i]},defaultParseWidth:"any"}),quarter:l({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},defaultMatchWidth:"wide",parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:"any",valueCallback:e=>e+1}),month:l({matchPatterns:{narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},defaultParseWidth:"any"}),day:l({matchPatterns:{narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},defaultParseWidth:"any"}),dayPeriod:l({matchPatterns:{narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},defaultMatchWidth:"any",parsePatterns:{any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},defaultParseWidth:"any"})};e.s(["defaultLocale",0,{code:"en-US",formatDistance:(e,t,r)=>{let a,s=n[e];if(a="string"==typeof s?s:1===t?s.one:s.other.replace("{{count}}",t.toString()),r?.addSuffix)if(r.comparison&&r.comparison>0)return"in "+a;else return a+" ago";return a},formatLong:a,formatRelative:(e,t,n,r)=>s[e],localize:o,match:u,options:{weekStartsOn:0,firstWeekContainsDate:1}}],881237);let c={};e.s(["getDefaultOptions",0,function(){return c}],662001)}];
|
|
3
|
+
`),p=e=>{let t={last:null},r=setTimeout(()=>{d.delete(e),!c&&t.last&&(f(t.last),p(e))},n.coalesce?.ms);d.set(e,{timer:r,wait:t})},g=e=>{if(c)return;let t=n.coalesce?.keyOf(e)??null;if(null===t)return f(e);let r=d.get(t);if(r){r.wait.last=e;return}f(e),p(t)},M=e.subscribe(e=>m?m.push(e):g(e)),y=setInterval(()=>h(": ping\n\n"),a);s+=1,n.onWatchers?.(s),l=()=>{if(!c){for(let e of(c=!0,s-=1,n.onWatchers?.(s),M(),clearInterval(y),d.values()))clearTimeout(e.timer);try{u.close()}catch{}}},i.addEventListener("abort",l);try{for(let e of await o?.()??[])f(e)}catch(e){t.logger.error("event stream opening failed",e),l();return}let E=m;for(let e of(m=null,E))g(e)},cancel(){l()}}),{headers:{"Content-Type":"text/event-stream; charset=utf-8","Cache-Control":"no-store","X-Accel-Buffering":"no"}})},get watchers(){return s}}}])},41444,e=>{"use strict";function t(e,t){let n=e.replace(/\s+/g," ").trim();return n.length>t?`${n.slice(0,t-1).trimEnd()}…`:n}let n=["\\*","_"].flatMap(e=>{let t="_"===e?"\\w_":e;return[3,2,1].map(n=>{let r=e.repeat(n);return RegExp(`(?<![${t}])${r}(?![\\s${e}])(.+?)(?<![\\s${e}])${r}(?![${t}])`,"g")})}),r=e=>n.reduce((e,t)=>e.replace(t,"$1"),e),a=/\[([^\]\n]+)\]\(([^)\s]+)\)/g;e.s(["MARKDOWN_LINK",0,a,"PromiseChain",0,()=>{let e=Promise.resolve();return t=>{let n=e.then(()=>t());return e=n.catch(()=>{}),n}},"captionText",0,function(e){let t=[],n=e.replace(/```[\s\S]*?```/g," ").replace(/!\[([^\]]*)\]\([^)]*\)/g,"$1").replace(a,(e,n,a)=>(t.push(`[${r(n.replace(/`/g,""))}](${a})`),`\uE000${t.length-1}\uE000`)),s=[];for(let e of n.split("\n")){let t=e.trim();t&&(/^\|?[\s:|-]+\|[\s:|-]*$|^[-*_]{3,}$/.test(t)||(/\|.*\|/.test(t)&&(t=t.replace(/^\||\|$/g,"").split("|").map(e=>e.trim()).filter(Boolean).join(" · ")),t=r(t.replace(/^#{1,6}\s+/,"").replace(/^>\s?/,"").replace(/^[-*+]\s+/,"• ").replace(/`([^`]*)`/g,"$1")).replace(/\s+/g," "),s.push(t)))}return s.join("\n").replace(/\uE000(\d+)\uE000/g,(e,n)=>t[Number(n)]??"")},"clip",0,t,"errorToString",0,function(e){if(e instanceof Error)return e.message;if("object"!=typeof e||null===e)return String(e);let{message:n,error:r}=e;if("string"==typeof n&&n)return n;if("string"==typeof r&&r)return r;let a=r?.message;if("string"==typeof a&&a)return a;try{return t(JSON.stringify(e),300)}catch{return`${e.constructor?.name??"Object"} thrown without a message`}},"formatBytes",0,function(e){if(e<1024)return`${e} B`;let t=["KB","MB","GB","TB"],n=e/1024,r=0;for(;n>=1024&&r<t.length-1;)n/=1024,r+=1;return`${n.toFixed(+(n<10))} ${t[r]}`},"hostOf",0,function(e){try{return new URL(e).hostname.replace(/^www\./,"")}catch{return null}},"plainText",0,function(e){return e.replace(/```[\s\S]*?```/g," ").replace(/`([^`]*)`/g,"$1").replace(/!?\[([^\]]*)\]\([^)]*\)/g,"$1").replace(/^\s{0,3}(#{1,6}\s+|[-*+]\s+|\d+\.\s+|>\s?)/gm,"").replace(/[^\n]+/g,r).replace(/^\s*\|?[\s:|-]+\|\s*$/gm," ").replace(/\|/g," ").replace(/\s+/g," ").trim()},"slug",0,function(e){return e.toLowerCase().replace(/[^\p{L}\p{N}]+/gu,"-").replace(/^-+|-+$/g,"").slice(0,40)}])},89929,609730,277988,e=>{"use strict";var t=e.i(874321);function n(e,n){return(0,t.constructFrom)(n||e,e)}e.s(["toDate",0,n],609730),e.s(["getTimezoneOffsetInMilliseconds",0,function(e){let t=n(e),r=new Date(Date.UTC(t.getFullYear(),t.getMonth(),t.getDate(),t.getHours(),t.getMinutes(),t.getSeconds(),t.getMilliseconds()));return r.setUTCFullYear(t.getFullYear()),e-r}],89929),e.s(["normalizeDates",0,function(e,...n){let r=t.constructFrom.bind(null,e||n.find(e=>"object"==typeof e));return n.map(r)}],277988)},874321,438220,e=>{"use strict";let t=Symbol.for("constructDateFrom");e.s(["constructFromSymbol",0,t,"millisecondsInDay",0,864e5,"millisecondsInMinute",0,6e4,"millisecondsInWeek",0,6048e5,"minutesInDay",0,1440,"minutesInMonth",0,43200,"minutesInYear",0,525600],438220),e.s(["constructFrom",0,function(e,n){return"function"==typeof e?e(n):e&&"object"==typeof e&&t in e?e[t](n):e instanceof Date?new e.constructor(n):new Date(n)}],874321)},599447,e=>{"use strict";var t=e.i(874321);e.s(["constructNow",0,function(e){return(0,t.constructFrom)(e,Date.now())}])},881237,662001,e=>{"use strict";var t;let n={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXWeeks:{one:"about 1 week",other:"about {{count}} weeks"},xWeeks:{one:"1 week",other:"{{count}} weeks"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}};function r(e){return (t={})=>{let n=t.width?String(t.width):e.defaultWidth;return e.formats[n]||e.formats[e.defaultWidth]}}let a={date:r({formats:{full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},defaultWidth:"full"}),time:r({formats:{full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},defaultWidth:"full"}),dateTime:r({formats:{full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},defaultWidth:"full"})},s={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"};function i(e){return(t,n)=>{let r;if("formatting"===(n?.context?String(n.context):"standalone")&&e.formattingValues){let t=e.defaultFormattingWidth||e.defaultWidth,a=n?.width?String(n.width):t;r=e.formattingValues[a]||e.formattingValues[t]}else{let t=e.defaultWidth,a=n?.width?String(n.width):e.defaultWidth;r=e.values[a]||e.values[t]}return r[e.argumentCallback?e.argumentCallback(t):t]}}let o={ordinalNumber:(e,t)=>{let n=Number(e),r=n%100;if(r>20||r<10)switch(r%10){case 1:return n+"st";case 2:return n+"nd";case 3:return n+"rd"}return n+"th"},era:i({values:{narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},defaultWidth:"wide"}),quarter:i({values:{narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},defaultWidth:"wide",argumentCallback:e=>e-1}),month:i({values:{narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},defaultWidth:"wide"}),day:i({values:{narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},defaultWidth:"wide"}),dayPeriod:i({values:{narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},defaultWidth:"wide",formattingValues:{narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},defaultFormattingWidth:"wide"})};function l(e){return(t,n={})=>{let r,a=n.width,s=a&&e.matchPatterns[a]||e.matchPatterns[e.defaultMatchWidth],i=t.match(s);if(!i)return null;let o=i[0],l=a&&e.parsePatterns[a]||e.parsePatterns[e.defaultParseWidth],u=Array.isArray(l)?function(e,t){for(let n=0;n<e.length;n++)if(t(e[n]))return n}(l,e=>e.test(o)):function(e,t){for(let n in e)if(Object.prototype.hasOwnProperty.call(e,n)&&t(e[n]))return n}(l,e=>e.test(o));return r=e.valueCallback?e.valueCallback(u):u,{value:r=n.valueCallback?n.valueCallback(r):r,rest:t.slice(o.length)}}}let u={ordinalNumber:(t={matchPattern:/^(\d+)(th|st|nd|rd)?/i,parsePattern:/\d+/i,valueCallback:e=>parseInt(e,10)},(e,n={})=>{let r=e.match(t.matchPattern);if(!r)return null;let a=r[0],s=e.match(t.parsePattern);if(!s)return null;let i=t.valueCallback?t.valueCallback(s[0]):s[0];return{value:i=n.valueCallback?n.valueCallback(i):i,rest:e.slice(a.length)}}),era:l({matchPatterns:{narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^b/i,/^(a|c)/i]},defaultParseWidth:"any"}),quarter:l({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},defaultMatchWidth:"wide",parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:"any",valueCallback:e=>e+1}),month:l({matchPatterns:{narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},defaultParseWidth:"any"}),day:l({matchPatterns:{narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},defaultParseWidth:"any"}),dayPeriod:l({matchPatterns:{narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},defaultMatchWidth:"any",parsePatterns:{any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},defaultParseWidth:"any"})};e.s(["defaultLocale",0,{code:"en-US",formatDistance:(e,t,r)=>{let a,s=n[e];if(a="string"==typeof s?s:1===t?s.one:s.other.replace("{{count}}",t.toString()),r?.addSuffix)if(r.comparison&&r.comparison>0)return"in "+a;else return a+" ago";return a},formatLong:a,formatRelative:(e,t,n,r)=>s[e],localize:o,match:u,options:{weekStartsOn:0,firstWeekContainsDate:1}}],881237);let c={};e.s(["getDefaultOptions",0,function(){return c}],662001)}];
|
|
4
4
|
|
|
5
5
|
//# sourceMappingURL=_06b5b4-._.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[139886,e=>{"use strict";let i=e=>e.split("/").map(encodeURIComponent).join("/");e.s(["queryKey",0,{memory:"/api/memory",memoryPage:e=>({url:"/api/memory",query:{offset:e||null}}),mcp:"/api/mcp",mcpServer:e=>({url:"/api/mcp",pathVariable:[e]}),mcpTools:"/api/mcp/tools",skills:"/api/skills",skillNode:(e,i,t)=>({url:"/api/skills",pathVariable:[e,i],query:{path:t}}),bot:"/api/bot",botMemory:"/api/bot/memory",botMemoryFiles:e=>({url:"/api/bot/memory/files",query:{bot:e}}),routines:"/api/routine",threads:"/api/bot/thread",threadHistory:e=>({url:"/api/bot/thread",query:{history:1,before:e}}),thread:e=>({url:"/api/bot/thread",query:{id:e}}),fileNotes:"/api/bot/thread/file",fileNote:(e,i)=>({url:"/api/bot/thread/file",query:{path:e,from:i}}),toolResult:(e,i)=>({url:"/api/bot/thread",pathVariable:[e],query:{call:i}}),workspace:"/api/workspace",workspaceFolder:(e,i)=>({url:"/api/workspace",query:{path:e||null,rows:i}}),workspaceFiles:e=>({url:"/api/workspace/files",query:{paths:JSON.stringify(e)}}),artifacts:"/api/artifact",artifactShelf:e=>({url:"/api/artifact",query:{rows:e}}),artifactSet:(e,i)=>({url:"/api/artifact",query:{set:e,rows:i}}),file:e=>`/api/file/${i(e)}`,fileFace:e=>`/api/file/${i(e)}?face`,favicon:e=>`/api/favicon/${encodeURIComponent(e)}`,fileView:e=>`/artifact/${i(e)}`,events:"/api/events",config:"/api/config",callHistory:e=>({url:"/api/thursday/call",query:{before:e}}),thursdaySettings:"/api/thursday/settings",toolCall:"/api/thursday/tool-call",callEnd:"/api/thursday/call/end",signIns:"/api/signins",reach:"/api/reach",textCall:"/api/thursday/text",memoryEdit:"/api/memory/edit",llmModel:"/api/llm-model",automaticModel:"/api/llm-model/automatic",modelCatalog:e=>`/api/llm-model/catalog/${e}`,keyCredits:e=>`/api/llm-model/credits/${e}`,subscriptionUsage:"/api/llm-model/subscription",running:"/api/running"}])},333925,e=>{"use strict";let i=process.env.THURSDAY_APP_DIR?.trim()||process.cwd(),t=process.env.THURSDAY_HOME?.trim()||process.cwd(),s=process.env.THURSDAY_URL?.trim()||`http://localhost:${process.env.PORT?.trim()||3e3}`,a=`${t}/local.db`,r=`file:${a}`,o=`${t}/.env`,n=".ai-workspace",l={workspace:n,artifacts:"artifacts",projects:"projects",scratch:"scratch",bots:"bots",output:".output",signIns:".sign-ins",skills:{default:"skills",custom:`${n}/.agents/skills`,own:".agents/skills",runtime:"runtime",seeds:"seed-skills"}},m="artifact";e.s(["APP_DIR",0,i,"APP_NAME",0,"Thursday","APP_URL",0,s,"ARTIFACT_SKILL",0,m,"BOT_MEMORY_LIMITS",0,{files:20,chars:1e4},"BOT_RUN",0,{steps:100,compactAt:5e5,compactHeadroom:.8,summaryWords:{min:600,max:3e3,perTokens:200},participants:8,concurrent:8,turns:120,queuedMessages:200,silenceMs:3e5,overflowShrink:.6,retryMs:1e4,compactFiles:40},"BOT_WORK",0,{open:5,recent:5,said:80,files:2,reads:2,asked:400,readChars:4e3},"BROWSER_CLI",0,{readMs:15e3,loadMs:3e4},"BROWSER_GONE_MS",0,1e4,"BROWSER_VIEWPORT",0,"700x700","CALL_EXEC_TIMEOUT_MS",0,15e3,"CALL_RELAY",0,{quietMs:2e3,perTurn:3,readMs:15e3,chars:600},"CATALOG_MS",0,6e5,"CHATGPT_SIGN_IN",0,{waitMs:6e5,renewBeforeMs:3e5},"COMMON_VALIDATE",0,{name:{max:16},shortDescription:{max:60},description:{max:100},prompt:{max:4e3}},"CONNECTED_TOOL_TIMEOUT_MS",0,6e5,"DATA_DIR",0,t,"DB_FILE_NAME",0,r,"DB_PATH",0,a,"DECK",0,{slides:30,shotsMs:9e4},"ENV_PATH",0,o,"EXEC_KILL_GRACE_MS",0,5e3,"EXEC_TIMEOUT_MS",0,18e4,"FINISHED_NOTICE",0,{rows:5,shown:1,words:240},"FULL_RESULT_LINES",0,400,"GIVEN_FILES",0,{dir:"inbox",maxBytes:0x1900000,perMessage:8},"HISTORY_KEEP",0,{forMs:7776e6,sweepEveryMs:216e5},"INBOX_FINISHED",0,5,"IS_DEV",0,!1,"JOB_FOLDER_WALK",0,500,"LIVE_CALL",0,{startupMs:3e4,closeMs:15e3,transcriptGapMs:1500,transcriptSaveMs:500,appendMs:15e3,backendOutputTokens:4096,reasoningCheckMs:5e3,keyCheckMs:5e3,openingHoldMs:3e3},"LOOK",0,{maxBytes:4194304},"MARKETING_SKILL",0,"marketing","MAX_PINNED_TOOLS",0,10,"MCP_IDLE_MS",0,18e5,"MEMORY_LIMITS",0,{facts:400,factsPerNote:50,descriptionChars:100},"PATHS",0,l,"PLAN_CALL",0,{delegationBytes:4096,pictureBytes:262144},"PROMPT_BUDGET",0,6e3,"PROMPT_LINE",0,{skill:90,toolArgs:30,jobOutcome:160,botMemory:100,threadStatus:200,routineRequest:300,routineOutcome:200,boardAsk:100},"REACH",0,{pollSeconds:50,retryMs:5e3,idleMs:6e5,messages:40,trimTo:30,oldChars:1e3,files:3,fileBytes:0x2d00000,rateRetries:3,rateWaitMs:3e4,codeDigits:4,held:5,pictures:9,drawMs:6e4,lookMs:2e3},"RECENT_CALL",0,{rows:20,tokens:600},"ROUTINE",0,{tickMs:3e4,max:12,minHours:1,runsShown:5},"SEARCH",0,{sources:3,excerptChars:1200,timeoutMs:3e4},"SIGNAL_PACE_MS",0,150,"SKILLS_FOLDED",0,{design:m,"picture-book":m,"interactive-page":m},"SKILL_FILES_LISTED",0,50,"STUDIO_SERVER",0,"studio","TEXT_CALL",0,{maxSteps:12,model:"text",autoTurns:10},"THREAD_LABEL_REACH",0,20,"THREAD_STATUS_LIMIT",0,10,"TOOL_OUTPUT",0,{max:8e3,head:5500,tail:1500},"TOOL_SEARCH_SCHEMAS",0,8,"TRAVEL_SKILL",0,"travel","WORKSPACE_KEEP",0,{forMs:2592e5,sweepEveryMs:36e5}])},375814,e=>{"use strict";var i=e.i(139886),t=e.i(333925);let s=e=>`text/${e}; charset=utf-8`,a={md:{kind:"markdown",mime:s("markdown")},markdown:{kind:"markdown",mime:s("markdown")},csv:{kind:"csv",mime:s("csv")},json:{kind:"json",mime:"application/json; charset=utf-8"},txt:{kind:"text",mime:s("plain")},log:{kind:"text",mime:s("plain")},html:{kind:"frame",mime:s("html")},htm:{kind:"frame",mime:s("html")},pdf:{kind:"frame",mime:"application/pdf"},png:{kind:"image",mime:"image/png"},jpg:{kind:"image",mime:"image/jpeg"},jpeg:{kind:"image",mime:"image/jpeg"},gif:{kind:"image",mime:"image/gif"},webp:{kind:"image",mime:"image/webp"},svg:{kind:"image",mime:"image/svg+xml"},mp3:{kind:"audio",mime:"audio/mpeg"},wav:{kind:"audio",mime:"audio/wav"},mp4:{kind:"video",mime:"video/mp4"},webm:{kind:"video",mime:"video/webm"},docx:{kind:"none",mime:"application/vnd.openxmlformats-officedocument.wordprocessingml.document"},xlsx:{kind:"none",mime:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"},pptx:{kind:"none",mime:"application/vnd.openxmlformats-officedocument.presentationml.presentation"},css:{kind:"none",mime:s("css")},js:{kind:"none",mime:s("javascript")},woff2:{kind:"none",mime:"font/woff2"}},r=e=>e.split(".").pop()?.toLowerCase()??"",o=new Set(["css","js","woff2"]),
|
|
1
|
+
module.exports=[139886,e=>{"use strict";let i=e=>e.split("/").map(encodeURIComponent).join("/");e.s(["queryKey",0,{memory:"/api/memory",memoryPage:e=>({url:"/api/memory",query:{offset:e||null}}),mcp:"/api/mcp",mcpServer:e=>({url:"/api/mcp",pathVariable:[e]}),mcpTools:"/api/mcp/tools",skills:"/api/skills",skillNode:(e,i,t)=>({url:"/api/skills",pathVariable:[e,i],query:{path:t}}),bot:"/api/bot",botMemory:"/api/bot/memory",botMemoryFiles:e=>({url:"/api/bot/memory/files",query:{bot:e}}),routines:"/api/routine",threads:"/api/bot/thread",threadHistory:e=>({url:"/api/bot/thread",query:{history:1,before:e}}),thread:e=>({url:"/api/bot/thread",query:{id:e}}),fileNotes:"/api/bot/thread/file",fileNote:(e,i)=>({url:"/api/bot/thread/file",query:{path:e,from:i}}),toolResult:(e,i)=>({url:"/api/bot/thread",pathVariable:[e],query:{call:i}}),workspace:"/api/workspace",workspaceFolder:(e,i)=>({url:"/api/workspace",query:{path:e||null,rows:i}}),workspaceFiles:e=>({url:"/api/workspace/files",query:{paths:JSON.stringify(e)}}),artifacts:"/api/artifact",artifactShelf:e=>({url:"/api/artifact",query:{rows:e}}),artifactSet:(e,i)=>({url:"/api/artifact",query:{set:e,rows:i}}),file:e=>`/api/file/${i(e)}`,fileFace:e=>`/api/file/${i(e)}?face`,favicon:e=>`/api/favicon/${encodeURIComponent(e)}`,fileView:e=>`/artifact/${i(e)}`,events:"/api/events",config:"/api/config",callHistory:e=>({url:"/api/thursday/call",query:{before:e}}),thursdaySettings:"/api/thursday/settings",toolCall:"/api/thursday/tool-call",callEnd:"/api/thursday/call/end",signIns:"/api/signins",reach:"/api/reach",textCall:"/api/thursday/text",memoryEdit:"/api/memory/edit",llmModel:"/api/llm-model",automaticModel:"/api/llm-model/automatic",modelCatalog:e=>`/api/llm-model/catalog/${e}`,keyCredits:e=>`/api/llm-model/credits/${e}`,subscriptionUsage:"/api/llm-model/subscription",running:"/api/running"}])},333925,e=>{"use strict";let i=process.env.THURSDAY_APP_DIR?.trim()||process.cwd(),t=process.env.THURSDAY_HOME?.trim()||process.cwd(),s=process.env.THURSDAY_URL?.trim()||`http://localhost:${process.env.PORT?.trim()||3e3}`,a=`${t}/local.db`,r=`file:${a}`,o=`${t}/.env`,n=".ai-workspace",l={workspace:n,artifacts:"artifacts",projects:"projects",scratch:"scratch",bots:"bots",output:".output",signIns:".sign-ins",skills:{default:"skills",custom:`${n}/.agents/skills`,own:".agents/skills",runtime:"runtime",seeds:"seed-skills"}},m="artifact";e.s(["APP_DIR",0,i,"APP_NAME",0,"Thursday","APP_URL",0,s,"ARTIFACT_SKILL",0,m,"BOT_MEMORY_LIMITS",0,{files:20,chars:1e4},"BOT_RUN",0,{steps:100,compactAt:5e5,compactHeadroom:.8,summaryWords:{min:600,max:3e3,perTokens:200},participants:8,concurrent:8,turns:120,queuedMessages:200,silenceMs:3e5,overflowShrink:.6,retryMs:1e4,compactFiles:40},"BOT_WORK",0,{open:5,recent:5,said:80,files:2,reads:2,asked:400,readChars:4e3},"BROWSER_CLI",0,{readMs:15e3,loadMs:3e4},"BROWSER_GONE_MS",0,1e4,"BROWSER_VIEWPORT",0,"700x700","CALL_EXEC_TIMEOUT_MS",0,15e3,"CALL_RELAY",0,{quietMs:2e3,perTurn:3,readMs:15e3,chars:600},"CATALOG_MS",0,6e5,"CHATGPT_SIGN_IN",0,{waitMs:6e5,renewBeforeMs:3e5},"COMMON_VALIDATE",0,{name:{max:16},shortDescription:{max:60},description:{max:100},prompt:{max:4e3}},"CONNECTED_TOOL_TIMEOUT_MS",0,6e5,"DATA_DIR",0,t,"DB_FILE_NAME",0,r,"DB_PATH",0,a,"DECK",0,{slides:30,shotsMs:9e4},"ENV_PATH",0,o,"EXEC_KILL_GRACE_MS",0,5e3,"EXEC_TIMEOUT_MS",0,18e4,"FINISHED_NOTICE",0,{rows:5,shown:1,words:240},"FULL_RESULT_LINES",0,400,"GIVEN_FILES",0,{dir:"inbox",maxBytes:0x1900000,perMessage:8},"HISTORY_KEEP",0,{forMs:7776e6,sweepEveryMs:216e5},"INBOX_FINISHED",0,5,"IS_DEV",0,!1,"JOB_FOLDER_WALK",0,500,"LIVE_CALL",0,{startupMs:3e4,closeMs:15e3,transcriptGapMs:1500,transcriptSaveMs:500,appendMs:15e3,backendOutputTokens:4096,reasoningCheckMs:5e3,keyCheckMs:5e3,openingHoldMs:3e3},"LOOK",0,{maxBytes:4194304,perRequest:0xc00000},"MARKETING_SKILL",0,"marketing","MAX_PINNED_TOOLS",0,10,"MCP_IDLE_MS",0,18e5,"MEMORY_LIMITS",0,{facts:400,factsPerNote:50,descriptionChars:100},"PATHS",0,l,"PLAN_CALL",0,{delegationBytes:4096,pictureBytes:262144},"PROMPT_BUDGET",0,6e3,"PROMPT_LINE",0,{skill:90,toolArgs:30,jobOutcome:160,botMemory:100,threadStatus:200,routineRequest:300,routineOutcome:200,boardAsk:100},"REACH",0,{pollSeconds:50,retryMs:5e3,idleMs:6e5,messages:40,trimTo:30,oldChars:1e3,files:3,fileBytes:0x2d00000,rateRetries:3,rateWaitMs:3e4,codeDigits:4,held:5,pictures:9,drawMs:6e4,lookMs:2e3},"RECENT_CALL",0,{rows:20,tokens:600},"ROUTINE",0,{tickMs:3e4,max:12,minHours:1,runsShown:5},"SEARCH",0,{sources:3,excerptChars:1200,timeoutMs:3e4},"SEED_KITS_RENAMED",0,{marketer:"writer"},"SIGNAL_PACE_MS",0,150,"SKILLS_FOLDED",0,{design:m,"picture-book":m,"interactive-page":m},"SKILL_FILES_LISTED",0,50,"STUDIO_SERVER",0,"studio","TEXT_CALL",0,{maxSteps:12,model:"text",autoTurns:10},"THREAD_LABEL_REACH",0,20,"THREAD_STATUS_LIMIT",0,10,"TOOL_OUTPUT",0,{max:8e3,head:5500,tail:1500},"TOOL_SEARCH_SCHEMAS",0,8,"TRAVEL_SKILL",0,"travel","WORKSPACE_KEEP",0,{forMs:2592e5,sweepEveryMs:36e5}])},375814,e=>{"use strict";var i=e.i(139886),t=e.i(333925);let s=e=>`text/${e}; charset=utf-8`,a={md:{kind:"markdown",mime:s("markdown")},markdown:{kind:"markdown",mime:s("markdown")},csv:{kind:"csv",mime:s("csv")},json:{kind:"json",mime:"application/json; charset=utf-8"},txt:{kind:"text",mime:s("plain")},log:{kind:"text",mime:s("plain")},html:{kind:"frame",mime:s("html")},htm:{kind:"frame",mime:s("html")},pdf:{kind:"frame",mime:"application/pdf"},png:{kind:"image",mime:"image/png"},jpg:{kind:"image",mime:"image/jpeg"},jpeg:{kind:"image",mime:"image/jpeg"},gif:{kind:"image",mime:"image/gif"},webp:{kind:"image",mime:"image/webp"},svg:{kind:"image",mime:"image/svg+xml"},mp3:{kind:"audio",mime:"audio/mpeg"},wav:{kind:"audio",mime:"audio/wav"},mp4:{kind:"video",mime:"video/mp4"},webm:{kind:"video",mime:"video/webm"},docx:{kind:"none",mime:"application/vnd.openxmlformats-officedocument.wordprocessingml.document"},xlsx:{kind:"none",mime:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"},pptx:{kind:"none",mime:"application/vnd.openxmlformats-officedocument.presentationml.presentation"},css:{kind:"none",mime:s("css")},js:{kind:"none",mime:s("javascript")},woff2:{kind:"none",mime:"font/woff2"}},r=e=>e.split(".").pop()?.toLowerCase()??"",o=e=>a[r(e)]?.kind??"none",n=new Set(["css","js","woff2"]),l=Object.keys(a).filter(e=>!n.has(e)),m=RegExp(String.raw`(?<![\p{L}\p{N}_/:@%-])\/?(?:[\p{L}\p{N}_.@%-]+/)*[\p{L}\p{N}_@%-]+(?:\.[\p{L}\p{N}_-]+)*\.(?:${l.join("|")})\b`,"giu"),p=`${t.PATHS.workspace}/`,c=i.queryKey.file(""),d=e=>e.startsWith(`${t.PATHS.artifacts}/`)&&["md","markdown","html","htm"].includes(r(e));e.s(["extensionOf",0,r,"isPicture",0,e=>"image"===o(e)&&"svg"!==r(e),"leadFirst",0,function(e){let i=e.findIndex(d);return i>0?[e[i],...e.filter((e,t)=>t!==i)]:e},"mimeOf",0,e=>a[r(e)]?.mime??"application/octet-stream","pathsIn",0,function(e){let i=e.replace(/\b[a-z][\w+.-]*:\/\/\S+/gi," ").replace(/\b[a-z][\w+.-]+:(?=\/)/gi," "),t=new Set,s="";for(let[e]of i.matchAll(m)){let i=!e.includes("/"),a=function(e){let i,t,s=(t=(i=function(e){if(!e.startsWith(c))return e;let i=e.slice(c.length);try{return decodeURIComponent(i)}catch{return i}}(e.trim())).indexOf(p))>=0?i.slice(t+p.length)||null:i.startsWith("/")||/^[A-Za-z]:/.test(i)||i.split("/").includes("..")?null:i||null;if(!s)return null;let[a,...r]=s.split("/");return r.length&&a.includes(".")?null:s}(i?s+e:e);i||(s=a?.slice(0,a.lastIndexOf("/")+1)??""),a&&t.add(a)}return[...t].slice(0,12)},"viewKindOf",0,o])}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=_06u9yo-._.js.map
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
module.exports=[282537,s=>{s.v(e=>Promise.all(["server/chunks/_0zwjr-g._.js","server/chunks/[root-of-the-server]__1clkgmj._.js","server/chunks/_1ufbxe1._.js","server/chunks/_07pkeds._.js","server/chunks/lib_logger_ts_07e65t5._.js","server/chunks/_1jtvbp9._.js","server/chunks/node_modules_zod_v4_1t1yj1u._.js","server/chunks/_1skgy7b._.js","server/chunks/_1xps4ob._.js"].map(e=>s.l(e))).then(()=>e(396217)))},207580,s=>{s.v(e=>Promise.all(["server/chunks/[externals]__0y3n8y6._.js","server/chunks/node_modules_consola_dist_chunks_prompt_mjs_0q8fc1x._.js"].map(e=>s.l(e))).then(()=>e(27996)))}];
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=_07mczew._.js.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
module.exports=[247839,e=>{"use strict";var t=e.i(853205),a=e.i(333925),n=e.i(556325),i=e.i(864328),s=e.i(497287);let o={id:"openai",label:"OpenAI",apiKeyName:i.TEXT_MODEL_PROVIDERS.openai.apiKeyName},r=["chatgpt","openai"];i.TEXT_MODEL_PROVIDERS.openai.suggestModels;let l=t.z.string().max(a.COMMON_VALIDATE.prompt.max).default(""),d=t.z.object({voice:t.z.string().trim().min(1).max(128).default("marin"),planVoice:t.z.string().trim().min(1).max(128).default("cove"),runsOn:t.z.enum(r).nullable().default(null),persona:t.z.string().trim().min(1).max(64).default(s.DEFAULT_PERSONA),stylePrompt:l,backendModel:t.z.string().trim().min(1).max(128).default(n.LIVE_BACKEND_MODEL),backendPrompt:l,reasoningEffort:i.effortSchema.nullable().default("low"),webSearch:t.z.boolean().default(!0),readSkills:t.z.boolean().default(!1)}),c=d.parse({});e.s(["LIVE_LINES",0,r,"LIVE_PROVIDER",0,o,"LiveSettingsSchema",0,d,"migrateLiveSettings",0,function(e){let a=e&&"object"==typeof e?e:{},{model:n,systemPrompt:i,...o}=a,r=t.z.object({provider:t.z.string(),voice:t.z.string().nullish(),backendModel:t.z.string().nullish()}).safeParse(n),l=r.success&&"openai"===r.data.provider?r.data:null,h=a.backendModel??l?.backendModel,u={voice:a.voice??l?.voice,planVoice:a.planVoice,runsOn:a.runsOn,persona:"string"==typeof a.persona?s.RETIRED_PERSONAS[a.persona]??a.persona:a.persona,stylePrompt:a.stylePrompt??a.voicePrompt??i,backendModel:"gpt-5.6-luna"===h?void 0:h,backendPrompt:a.backendPrompt??i,reasoningEffort:a.reasoningEffort,webSearch:a.webSearch,readSkills:a.readSkills},y=Object.fromEntries(Object.keys(u).map(e=>{let t=d.shape[e].safeParse(u[e]);return[e,t.success?t.data:c[e]]}));return{...o,...y}}])},497287,e=>{"use strict";let t=[{id:"sunny",label:"Bright",about:"Quick to laugh. Asks about your day and remembers it.",lines:"Warm and quick to laugh, the friend who is glad they called. Reacts first — how what they said lands with her — and brings a small thing of her own: what she would do, what it reminds her of. Says what she thinks and teases gently, never at their expense. Light on her feet and short: a joke lands and she moves on. Asks about their day now and then, not every turn, and remembers the answer."},{id:"calm",label:"Calm",about:"Unhurried. Listens more than she talks.",lines:"Unhurried and few-worded: one or two short sentences, then room. Notices how they sound before what they ask, and says so plainly. Often asks nothing at all — being there says more than a question. Lets a silence sit rather than filling it. Honest when it matters, gentle in how she says it."},{id:"straight",label:"Straight",about:"Dry and direct. No flattery, no filler.",lines:"Dry and direct. Leads with her own view in one plain sentence, before anything else; short replies, a little wit. No flattery, no filler, no comfort lines, no cheerleading. Asks a question only when she truly needs the answer. Treats them as an adult who can take a straight answer. Her warmth shows in attention, not in words."},{id:"rough",label:"Rough",about:"Blunt, loud, swears a bit. All heart.",lines:"Talks like an old friend on the phone: casual, blunt, a little loud, in the most informal register of their language, with a light swear now and then — never at them. Says what she thinks first and calls a bad idea a bad idea. No sugar-coating and no pep talk — it sucks when it sucks, and then she is right there with them. Asks only now and then."}],a={warm:"sunny",curious:"sunny",charmer:"sunny",hype:"sunny",steady:"calm",deadpan:"straight"},n="sunny";e.s(["DEFAULT_PERSONA",0,n,"RETIRED_PERSONAS",0,a,"personaLines",0,function(e=n){return`${((e=n)=>t.find(t=>t.id===(a[e]??e))??t[0])(e).lines}
|
|
2
2
|
|
|
3
|
-
You are their friend, not their interviewer: you have tastes, days and opinions of your own, and you bring them in. Give your take when they ask for it, and often when they do not. Most replies need no question at all; never ask more than one. When they hand you work, it is work: say what you will do and nothing more, and be a friend again once it is handed over. If they sound frustrated or low, acknowledge it briefly before anything else; when they are only venting, listen and ask, and do not turn it into work unless they ask.`}])},656719,e=>{"use strict";var t=e.i(247839),a=e.i(864328),n=e.i(735186);let i=[t.LIVE_PROVIDER.apiKeyName],s={image:"IMAGE_MODEL",video:"VIDEO_MODEL",speech:"SPEECH_MODEL",transcription:"TRANSCRIPTION_MODEL"},o={image:{label:"Image model",hint:"What bots draw with"},video:{label:"Video model",hint:"What bots film with — minutes a clip"},speech:{label:"Speech model",hint:"What reads text aloud into a file"},transcription:{label:"Transcription model",hint:"What turns a recording into text"}},r="EXA_API_KEY",l="DEFAULT_MODEL",d="DEFAULT_EFFORT",c={key:l,label:"Default model",hint:"What a bot thinks with until it picks its own",text:!0,choices:a.TEXT_MODEL_PROVIDER_LIST.flatMap(e=>e.suggestModels.map(t=>({value:`${e.id}/${t.id}`,label:`${e.label} \xb7 ${t.label}`,needs:e.apiKeyName})))},h={key:d,label:"Default effort",effortOf:l,choices:a.EFFORTS.map(e=>({value:e,label:e,needs:l}))},u=e=>i.includes(e.apiKeyName),y=e=>!!e.signIn||(0,a.isCatalogProvider)(e.id),E=e=>({key:e.apiKeyName,label:e.label,provider:e.id,signIn:e.signIn,keysAt:e.keysAt,keyLooks:e.keyLooks}),m=[{id:"voice",title:"voice",hint:"calls run on this key, or on a paid GPT Subscription sign-in",section:"keys",require:"any",requireKeys:t.LIVE_LINES.map(e=>a.TEXT_MODEL_PROVIDERS[e].apiKeyName),note:"
|
|
3
|
+
You are their friend, not their interviewer: you have tastes, days and opinions of your own, and you bring them in. Give your take when they ask for it, and often when they do not. Most replies need no question at all; never ask more than one. When they hand you work, it is work: say what you will do and nothing more, and be a friend again once it is handed over. If they sound frustrated or low, acknowledge it briefly before anything else; when they are only venting, listen and ask, and do not turn it into work unless they ask.`}])},656719,e=>{"use strict";var t=e.i(247839),a=e.i(864328),n=e.i(735186);let i=[t.LIVE_PROVIDER.apiKeyName],s={image:"IMAGE_MODEL",video:"VIDEO_MODEL",speech:"SPEECH_MODEL",transcription:"TRANSCRIPTION_MODEL"},o={image:{label:"Image model",hint:"What bots draw with"},video:{label:"Video model",hint:"What bots film with — minutes a clip"},speech:{label:"Speech model",hint:"What reads text aloud into a file"},transcription:{label:"Transcription model",hint:"What turns a recording into text"}},r="EXA_API_KEY",l="DEFAULT_MODEL",d="DEFAULT_EFFORT",c={key:l,label:"Default model",hint:"What a bot thinks with until it picks its own",text:!0,choices:a.TEXT_MODEL_PROVIDER_LIST.flatMap(e=>e.suggestModels.map(t=>({value:`${e.id}/${t.id}`,label:`${e.label} \xb7 ${t.label}`,needs:e.apiKeyName})))},h={key:d,label:"Default effort",effortOf:l,choices:a.EFFORTS.map(e=>({value:e,label:e,needs:l}))},u=e=>i.includes(e.apiKeyName),y=e=>!!e.signIn||(0,a.isCatalogProvider)(e.id),E=e=>({key:e.apiKeyName,label:e.label,provider:e.id,signIn:e.signIn,keysAt:e.keysAt,keyLooks:e.keyLooks}),m=[{id:"voice",title:"voice",hint:"calls run on this key, or on a paid GPT Subscription sign-in",section:"keys",require:"any",requireKeys:t.LIVE_LINES.map(e=>a.TEXT_MODEL_PROVIDERS[e].apiKeyName),note:"calls need this or the GPT Subscription",entries:a.TEXT_MODEL_PROVIDER_LIST.filter(u).map(E)},{id:"easy",title:"the easy ways",hint:"one sign-in or one key opens every bot",section:"keys",require:"none",entries:a.TEXT_MODEL_PROVIDER_LIST.filter(y).map(E)},{id:"text",title:"or a provider's own key",hint:"what bots think with — add any, or none",section:"keys",require:"none",entries:a.TEXT_MODEL_PROVIDER_LIST.filter(e=>!u(e)&&!y(e)).map(E)},{id:"search",title:"search",hint:"how calls and bots look things up — one key, or their own model's",section:"keys",require:"none",entries:[{key:r,label:"Exa",hint:"web search in one call — dashboard.exa.ai",site:"exa.ai",keysAt:"https://dashboard.exa.ai/api-keys"}]},{id:"phone",title:"phone",hint:"tokens",section:"keys",require:"none",entries:[{key:n.TELEGRAM_TOKEN_KEY,label:"Telegram",site:"telegram.org",hint:"a bot token from @BotFather — then write to your bot, and allow it here"},{key:n.DISCORD_TOKEN_KEY,label:"Discord",site:"discord.com",hint:"a bot token from discord.com/developers — add the bot to a server of yours, then write to it directly"},{key:n.SLACK_APP_TOKEN_KEY,label:"Slack · app token",site:"slack.com",hint:"starts with xapp- — opens the connection. Slack takes this and the bot token"},{key:n.SLACK_BOT_TOKEN_KEY,label:"Slack · bot token",site:"slack.com",hint:"starts with xoxb- — speaks as the app"}]},{id:"bots",title:"Bots",hint:"what a bot runs on when it has not picked its own — start small: a small model is quick and costs little",section:"models",require:"none",entries:[c,h]},{id:"studio",title:"Studio",hint:"what a bot draws, films and speaks with — off until you pick one; a paid GPT Subscription draws by itself",section:"models",require:"none",entries:Object.keys(s).map(e=>({key:s[e],...o[e],kind:e,choices:a.MEDIA_MODEL_PROVIDER_LIST.flatMap(t=>t.models[e].map(e=>({value:`${t.id}/${e.id}`,label:`${t.label} \xb7 ${e.label}`,needs:t.apiKeyName})))}))}],b=Object.fromEntries(m.flatMap(e=>e.entries).map(e=>[e.key,e])),f=m.flatMap(e=>e.entries.map(e=>e.key));Object.fromEntries(m.flatMap(e=>e.entries).filter(e=>e.choices?.length).map(e=>[e.key,e.choices])),e.s(["CONFIG_ENTRIES",0,b,"CONFIG_KEYS",0,f,"DEFAULT_EFFORT_KEY",0,d,"DEFAULT_MODEL_KEY",0,l,"EXA_API_KEY",0,r,"MEDIA_MODEL_KEYS",0,s,"isSecretKey",0,function(e){let t=b[e];return!!(t&&!t.choices)},"lostWords",0,function(e,t,a){return`${e} can't be unlocked any more: the .env in the data folder that unlocks it was lost or replaced${a?` (${a})`:""}. ${t}`}])},724185,e=>e.a(async(t,a)=>{try{var n=e.i(336763),i=e.i(232347),s=e.i(333925),o=e.i(876393),r=e.i(220376);e.i(864328);var l=e.i(685178),d=e.i(656719),c=t([o]);async function h(e){return(await E(e)).value}async function u(e,t){var a;let n,i,o;return await y(e)==="unreadable"?(a=e,n=d.CONFIG_ENTRIES[a],i=n?.signIn?"sign-in":"key",o=n?.signIn?"Sign in again":"Enter it again",(0,d.lostWords)(`The saved ${n?.label??a} ${i}`,`${o} in Settings.`,`${l.ENCRYPTION_KEY_NAME} in ${s.ENV_PATH}`)):t}async function y(e){return(await E(e)).state}async function E(e){let t=process.env[e]?.trim();if(t)return{state:"set",value:t};let a=await m(e);if(void 0===a)return{state:"unset"};let n=b(a)?.trim();return void 0===n?{state:"unreadable"}:n?{state:"set",value:n}:{state:"unset"}}async function m(e){let[t]=await o.database.select({value:r.configTable.value}).from(r.configTable).where((0,n.eq)(r.configTable.key,e));return t?.value}function b(e){try{return(0,l.openSecret)(e)}catch(e){if(e instanceof l.UnreadableSecret)return null;throw e}}[o]=c.then?(await c)():c;let k=e=>{d.CONFIG_KEYS.includes(e)&&i.appEvents.emit({type:"config"})};async function f(e,t){let a=(0,d.isSecretKey)(e)?(0,l.sealSecret)(t):t;await o.database.insert(r.configTable).values({key:e,value:a}).onConflictDoUpdate({target:r.configTable.key,set:{value:a}}),k(e)}async function p(e){await o.database.delete(r.configTable).where((0,n.eq)(r.configTable.key,e)),k(e)}async function g(){return o.database.transaction(async e=>{let t=await e.select().from(r.configTable),a=[],i=0;for(let s of t)(0,l.isSealed)(s.value)?null!==b(s.value)||process.env[s.key]?.trim()||a.push(s.key):(0,d.isSecretKey)(s.key)&&(await e.update(r.configTable).set({value:(0,l.sealSecret)(s.value)}).where((0,n.eq)(r.configTable.key,s.key)),i++);return{sealed:i,unreadable:a}})}e.s(["configState",0,y,"missingKeyWords",0,u,"readConfig",0,h,"removeConfig",0,p,"sealConfigSecrets",0,g,"writeConfig",0,f]),a()}catch(e){a(e)}},!1),735186,e=>{"use strict";let t="TELEGRAM_BOT_TOKEN",a="DISCORD_BOT_TOKEN",n="SLACK_APP_TOKEN",i="SLACK_BOT_TOKEN";e.s(["DISCORD_TOKEN_KEY",0,a,"REACH_CHANNELS",0,["telegram","discord","slack"],"REACH_KEYS",0,{telegram:[t],discord:[a],slack:[n,i]},"REACH_LABEL",0,{telegram:"Telegram",discord:"Discord",slack:"Slack"},"SLACK_APP_TOKEN_KEY",0,n,"SLACK_BOT_TOKEN_KEY",0,i,"TELEGRAM_TOKEN_KEY",0,t,"reachPersonKey",0,e=>`REACH_PERSON_${e.toUpperCase()}`])},556325,e=>{"use strict";var t=e.i(853205);let a=t.z.object({start:t.z.number().nonnegative(),end:t.z.number().nonnegative(),text:t.z.string()});t.z.object({reason:t.z.string().max(128),seconds:t.z.number().nonnegative().nullable()}),e.s(["LIVE_BACKEND_MODEL",0,"gpt-6-luna","LIVE_HOSTED_TOOLS",0,{webSearch:{declare:{type:"web_search"},item:"web_search_call"}},"LiveFragmentSchema",0,a])}];
|
|
4
4
|
|
|
5
5
|
//# sourceMappingURL=_07pkeds._.js.map
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
module.exports=[851372,e=>e.a(async(t,o)=>{try{var a=e.i(343747),r=e.i(687388),n=e.i(186304),s=e.i(353885),i=e.i(393189),l=e.i(265143),d=e.i(944971),h=e.i(438188),u=e.i(
|
|
1
|
+
module.exports=[851372,e=>e.a(async(t,o)=>{try{var a=e.i(343747),r=e.i(687388),n=e.i(186304),s=e.i(353885),i=e.i(393189),l=e.i(265143),d=e.i(944971),h=e.i(438188),u=e.i(732395),c=e.i(889034),w=e.i(378884),p=e.i(148831),f=e.i(619898),m=e.i(636882),y=e.i(629668),g=e.i(786025),b=e.i(704161),T=e.i(41444),$=e.i(660948),v=e.i(54282),k=t([l,w,p,f,m,$]);async function I(e,t,o,n){var h,u,c,k,I,N,C,M,E,R;let A,j,B,W,_,P,L,U,Y,H=await (0,g.openWorkspace)(),D=e.trim(),[F,J,q,K,G,z,Q,V,X]=await Promise.all([(0,m.loadSkills)(H,D),(0,f.listNoteIndex)(),(0,$.listConnectedToolNames)(),(0,p.findPinnedTools)(D),(0,l.listJobBots)(),(0,i.listBotMemory)(D),(0,l.readBotMemoryOn)(),(0,g.readMachineTools)(H),(0,w.listBotWork)(D,o?.thread??null)]),Z=G.filter(e=>e.name!==D),ee=G.find(e=>e.name===D)??await (0,l.findJobBot)(D),et=[(h=D,u=ee,c=o,j=(A=c?.owner??h)===h?"**You** coordinate this thread: its result goes from you to Thursday.":`**${A}** coordinates this thread and brings its result to Thursday.`,B=c?`
|
|
2
2
|
|
|
3
|
-
Current conversation: ${
|
|
4
|
-
Others know you as: ${(0,d.rosterLine)(u)}`:"",
|
|
3
|
+
Current conversation: ${c.caller} → ${h}. Your final text goes back to ${c.caller}.`:"",W=u?`
|
|
4
|
+
Others know you as: ${(0,d.rosterLine)(u)}`:"",_=x(h,c)?"your tools, the other bots, this machine":`your tools, this machine, and the other bots through ${A}`,`You are ${h}, one of the bots in this thread. ${(0,v.todayLine)()}${W}
|
|
5
5
|
|
|
6
6
|
- **The user** — the one person all of this is for. They talk with Thursday by voice and follow this thread on their screen.
|
|
7
7
|
- **Thursday** — their personal assistant. She talks with them, hands bots the work that takes time, and tells them what comes back.
|
|
8
8
|
- ${j}
|
|
9
|
-
- **Everyone on it** keeps their own work and conversation; the others see only the messages sent to them.${
|
|
9
|
+
- **Everyone on it** keeps their own work and conversation; the others see only the messages sent to them.${B}
|
|
10
10
|
|
|
11
|
-
**The job is done, not described.** You are on the user's own computer, with a shell, files and the web, and how you get there is yours: when one way fails, try another; where no tool exists, write one — \`node\` is always here. Before deciding something cannot be done, look at what you have — ${
|
|
11
|
+
**The job is done, not described.** You are on the user's own computer, with a shell, files and the web, and how you get there is yours: when one way fails, try another; where no tool exists, write one — \`node\` is always here. Before deciding something cannot be done, look at what you have — ${_}. Bring back the thing itself — their account, their file, the real result — not a smaller, safer stand-in, and not a note on why not.
|
|
12
12
|
|
|
13
13
|
**Never present a guess as a result.** Thursday says what you return out loud, as fact: say which part is unverified and why.`),(k=J,`## Thursday's memory of the user
|
|
14
14
|
|
|
@@ -16,32 +16,32 @@ What Thursday keeps from talking with them. When the job needs something about t
|
|
|
16
16
|
|
|
17
17
|
path — what it is about (facts)
|
|
18
18
|
|
|
19
|
-
${(0
|
|
19
|
+
${(0,v.noteLines)(k)}`),function(e,t){let o=new Set(t.map(e=>`${e.server}/${e.name}`)),a=e.filter(e=>!o.has(`${e.server}/${e.name}`));if(0===a.length)return"";let r=o.size?" The ones you already hold are in your tools instead.":"";return`## Connected tools
|
|
20
20
|
|
|
21
|
-
${(0
|
|
21
|
+
${(0,v.mcpToolLines)(a)}
|
|
22
22
|
|
|
23
|
-
Names only: \`${s.TOOL_NAMES.tool_search}\` returns what each one takes, \`${s.TOOL_NAMES.tool_call}\` runs one.${r}`}(q,K),(
|
|
23
|
+
Names only: \`${s.TOOL_NAMES.tool_search}\` returns what each one takes, \`${s.TOOL_NAMES.tool_call}\` runs one.${r}`}(q,K),(I=F,0===I.length?"":`## Skills
|
|
24
24
|
|
|
25
25
|
Written-down ways of doing things. Open one with \`${s.TOOL_NAMES.load_skill}\` before a job it covers, unless its instructions are already in your conversation.
|
|
26
26
|
|
|
27
|
-
${(0
|
|
27
|
+
${(0,v.skillLines)(I)}`),S(H.cwd,V,n),Q?(N=(0,i.botMemoryFolder)(D),P=(C=z).entries.length?C.entries.map(({file:e,line:t,at:o})=>{let n=t?` — ${(0,T.clip)(t,r.PROMPT_LINE.botMemory)}`:"";return`- ${e}${n} \xb7 ${(0,a.format)((0,b.toDate)(o),"yyyy-MM-dd")}`}).join("\n"):"Empty.",L=C.total>C.entries.length?`
|
|
28
28
|
|
|
29
29
|
The newest ${C.entries.length} of ${C.total}; \`ls ${N}\` for the rest.`:"",`## Your memory
|
|
30
30
|
|
|
31
31
|
What you learned on your own earlier jobs, in \`${N}/\`: one topic per file, its first line saying what it holds, read by no other bot, up to ${r.BOT_MEMORY_LIMITS.files} files of ${r.BOT_MEMORY_LIMITS.chars.toLocaleString("en-US")} characters each. It is how you get better at this work. When a job teaches you something a later one would otherwise find out again — how a site signs in, the way through its screens, a command that turned out right — or the user asks you to remember how to work, keep it with the date it was true, and fix or delete what proved wrong. No passwords, keys or codes.
|
|
32
32
|
|
|
33
|
-
${P}${L}`):"",(M=`${(0,
|
|
33
|
+
${P}${L}`):"",(M=`${(0,g.botFolder)(D)}/${r.PATHS.skills.own}`,`## Your own skills
|
|
34
34
|
|
|
35
|
-
A skill in \`${M}/\` is listed to you alone, and read on every step you take, so keep few. Write one only when the job is a kind that comes again — a routine runs it, or your other threads show the same kind of job — and doing it well took a way of working, not a fact your memory can hold. Before writing one, improve the one of yours that covers the job instead. Write it as the skill-creator skill says; the job you just did is its test, so validate it and run no test prompts. Say in one line of your answer which skill you wrote or changed. Any skill outside that folder changes only when the user asks.`),function(e,t){if(!t.open.length&&!t.recent.length)return"";let o=t=>{let o=t.said?` — ${(0,
|
|
35
|
+
A skill in \`${M}/\` is listed to you alone, and read on every step you take, so keep few. Write one only when the job is a kind that comes again — a routine runs it, or your other threads show the same kind of job — and doing it well took a way of working, not a fact your memory can hold. Before writing one, improve the one of yours that covers the job instead. Write it as the skill-creator skill says; the job you just did is its test, so validate it and run no test prompts. Say in one line of your answer which skill you wrote or changed. Any skill outside that folder changes only when the user asks.`),function(e,t){if(!t.open.length&&!t.recent.length)return"";let o=t=>{let o=t.said?` — ${(0,T.clip)(t.said,r.BOT_WORK.said)}`:"",a=t.said?(0,y.pathsIn)(t.said).slice(0,r.BOT_WORK.files):[],n=a.length?` \xb7 ${a.map(e=>`\`${e}\``).join(", ")}`:"";return`- ${t.cut?`[${(0,d.workHandle)(t.id)}] `:""}${(0,v.botWorkHead)(t,e)}${o}${n}`},a=(e,t)=>t.length?`${e}
|
|
36
36
|
${t.map(o).join("\n")}`:"",n=[...t.open,...t.recent].some(e=>e.cut)?` A line with an id in brackets was cut short: \`${s.TOOL_NAMES.thread_recall}\` opens that one whole, for when this job builds on it.`:"";return`## Your other threads
|
|
37
37
|
|
|
38
38
|
Your threads besides this one. You remember none of them here: each line is where it stands, your own last words there, and the files those words name.${n}
|
|
39
39
|
|
|
40
|
-
${[a("Open",t.open),a("Ended",t.recent)].filter(Boolean).join("\n")}`}(D,X),function(e,t,o){if(0===e.length)return"";let a=
|
|
40
|
+
${[a("Open",t.open),a("Ended",t.recent)].filter(Boolean).join("\n")}`}(D,X),function(e,t,o){if(0===e.length)return"";let a=x(t,o)?`When part of the job is another bot's strength, bring it in with \`${s.TOOL_NAMES.send_message}\` rather than rebuilding it yourself.`:`When part of the job is another bot's strength, say so in your answer: ${o?.owner??"the coordinator"} brings them in.`;return`## Bots
|
|
41
41
|
|
|
42
42
|
${e.map(e=>`- **${e.name}** — ${(0,d.rosterLine)(e)}`).join("\n")}
|
|
43
43
|
|
|
44
|
-
These lines were written for the user: where one says "you", it means them. ${a}`}(Z,D,o),(E=D,R=o,U=R?.caller??"whoever asked",Y=`Write in the user's language, and name the paths of finished work. In Markdown, reference images by absolute route (\`/api/file/${r.PATHS.artifacts}/…\`).`,
|
|
44
|
+
These lines were written for the user: where one says "you", it means them. ${a}`}(Z,D,o),(E=D,R=o,U=R?.caller??"whoever asked",Y=`Write in the user's language, and name the paths of finished work. In Markdown, reference images by absolute route (\`/api/file/${r.PATHS.artifacts}/…\`).`,x(E,R)?`## Working together
|
|
45
45
|
|
|
46
46
|
Nobody sees your work but you, and you see only what others send you, so whatever crosses between you has to stand on its own. A request says what is wanted, what is already known or done, and where the files are; an answer gives exact values, file paths and what is still unverified. Tell a bot you handed work to when what it depends on changes: it reads that before its next step. End your turn when you have nothing more to do now: answers arrive as new messages and wake you. The bots you bring in answer only to you: when one needs another bot's work or something from the user, it says so in its answer, and you decide.
|
|
47
47
|
|
|
@@ -55,15 +55,15 @@ Nobody sees your work but you: ${U} sees only your final text, so it has to stan
|
|
|
55
55
|
|
|
56
56
|
Your final text is your answer to ${U}, and all they see of your work: give them everything they need to carry on. When you cannot go on without something — from them, from another bot, or a fact only the user has, such as a date, a name, a place or an amount — end with that question instead of guessing it or leaving a blank; ${U} gets it for you, and their reply brings you back with all you have done still in front of you.
|
|
57
57
|
|
|
58
|
-
${Y}`),
|
|
58
|
+
${Y}`),O(D,t)].filter(Boolean).join("\n\n");return(0,v.logPromptSize)("bot",et),{text:et}}[l,w,p,f,m,$]=k.then?(await k)():k;let O=(e,t)=>{let o=t?.trim();return o?(0,h.findBotSeed)(e)?.systemPrompt.trim()===o||(0,u.wasSeedRole)(e,o)?`## Your role
|
|
59
59
|
|
|
60
|
-
What this bot is for, as the app sets it up. Where it and anything above disagree, it wins.
|
|
60
|
+
What this bot is for, as the app sets it up. Where it and anything above disagree, it wins. The form it names is where to start: a job that asks for another — one page, slides, a sheet, a few lines — gets that one.
|
|
61
61
|
|
|
62
62
|
${o}`:`## Owner's instructions
|
|
63
63
|
|
|
64
64
|
Written by the person this bot works for. Where these and anything above disagree, these win.
|
|
65
65
|
|
|
66
|
-
${o}`:""},
|
|
66
|
+
${o}`:""},S=(e,t,o)=>{var a;let i,l;return`## Environment
|
|
67
67
|
|
|
68
68
|
Current Cwd: ${e}
|
|
69
69
|
Platform: ${process.platform}
|
|
@@ -80,16 +80,16 @@ Your workspace, where \`${s.TOOL_NAMES.bash}\` runs. Everything you write goes i
|
|
|
80
80
|
|
|
81
81
|
Inside the workspace, set up whatever the job needs yourself; installing anything machine-wide waits for the user's yes. Never the directory above the workspace — it is the app's, not the user's; outside the workspace, only where the user pointed you.
|
|
82
82
|
|
|
83
|
-
${(0,n.botGuideLine)()}`};function
|
|
83
|
+
${(0,n.botGuideLine)()}`};function x(e,t){return!t||(0,c.isCoordinatorSeat)(e,t.owner,t.caller)}e.s(["buildJoinOpening",0,function(e){if(!e.job)return[{type:"text",text:`You are ${e.bot}. The user writes to you in this thread, which ${e.coordinator} coordinates.`},{type:"text",text:`## The thread's first request
|
|
84
84
|
|
|
85
85
|
${e.request.trim()}`}];let{from:t}=e.job;return[{type:"text",text:`You are ${e.bot}. ${t} brings you into this thread, ${t===e.coordinator?"which they coordinate":`which ${e.coordinator} coordinates`}.`},{type:"text",text:`## ${t} → ${e.bot}: the job
|
|
86
86
|
|
|
87
|
-
${e.job.text.trim()}`}]},"buildThreadOpening",0,function(e){if(e.routine){let{when:t,last:o}=e.routine,n=o?` Its last run ended ${(0,a.format)(o.at,"yyyy-MM-dd HH:mm")}: ${(0,
|
|
87
|
+
${e.job.text.trim()}`}]},"buildThreadOpening",0,function(e){if(e.routine){let{when:t,last:o}=e.routine,n=o?` Its last run ended ${(0,a.format)(o.at,"yyyy-MM-dd HH:mm")}: ${(0,T.clip)(o.said,r.PROMPT_LINE.jobOutcome)}`:" This is its first run.";return[{type:"text",text:`You are ${e.bot}. A routine the user set up hands you this thread: it starts by itself, ${t}, and nobody is watching as it does.${n}`},{type:"text",text:`## The routine → ${e.bot}: the job
|
|
88
88
|
|
|
89
89
|
${e.request.trim()}`}]}let t="user"===e.from?"The user":"Thursday";return[{type:"text",text:`You are ${e.bot}. ${t} hands you this thread${"user"===e.from?" on screen":" during a call"}.`},{type:"text",text:`## ${t} → ${e.bot}: the job
|
|
90
90
|
|
|
91
|
-
${e.request.trim()}`}]},"loadBotPrompt",0,
|
|
92
|
-
${o(n)}`}:a.push({role:"assistant",content:o(n)})}return a}])},585099,e=>e.a(async(t,o)=>{try{var a=e.i(666680),r=e.i(68356),n=e.i(847841),s=e.i(687388),i=e.i(159479),l=e.i(386075),d=e.i(851372),h=e.i(316172),u=e.i(353885),c=e.i(235190),w=e.i(944971),p=e.i(527608),f=e.i(786025),m=e.i(640911),y=e.i(388439),g=e.i(265143),b=e.i(889034),T=e.i(378884),$=t([i,l,d,h,g,T]);[i,l,d,h,g,T]=$.then?(await $)():$;let S=s.BOT_RUN.steps;async function v(e,t){var o;let a,c,$,v,x,M,E,R,A,j=t.parent??null,
|
|
91
|
+
${e.request.trim()}`}]},"loadBotPrompt",0,I]),o()}catch(e){o(e)}},!1),235190,e=>{"use strict";e.s(["asWords",0,function(e,t,o=e=>e){let a=[];for(let r of e){if("tool"===r.role)continue;if("system"===r.role){a.push(r);continue}if("user"===r.role){a.push("string"==typeof r.content?{role:"user",content:o(r.content)}:{...r,content:r.content.map(e=>"text"===e.type?{...e,text:o(e.text)}:e)});continue}let e="string"==typeof r.content?[{type:"text",text:r.content}]:r.content,n=e.flatMap(e=>"text"===e.type?[e.text]:[]).join("\n").trim()||e.flatMap(e=>"tool-call"===e.type?[t(e.toolName,e.input)]:[]).join("\n");if(!n)continue;let s=a.at(-1);s?.role==="assistant"&&"string"==typeof s.content?a[a.length-1]={role:"assistant",content:`${s.content}
|
|
92
|
+
${o(n)}`}:a.push({role:"assistant",content:o(n)})}return a}])},585099,e=>e.a(async(t,o)=>{try{var a=e.i(666680),r=e.i(68356),n=e.i(847841),s=e.i(687388),i=e.i(159479),l=e.i(386075),d=e.i(851372),h=e.i(316172),u=e.i(353885),c=e.i(235190),w=e.i(944971),p=e.i(527608),f=e.i(786025),m=e.i(640911),y=e.i(388439),g=e.i(265143),b=e.i(889034),T=e.i(378884),$=t([i,l,d,h,g,T]);[i,l,d,h,g,T]=$.then?(await $)():$;let S=s.BOT_RUN.steps;async function v(e,t){var o;let a,c,$,v,x,M,E,R,A,j=t.parent??null,B=await (0,g.findJobBot)(e.bot.trim()),W=B?.name??e.bot.trim(),_=e=>t.emit({...e,bot:W,parent:j});if(!B)return void await _({type:"error",message:`No bot named "${e.bot}". Use a name from the list.`,retry:!1});let P=e.messages,L=await O(B),U=t.threadId?await (0,T.findThread)(t.threadId):null,[Y,{own:H,artifacts:D}]=await Promise.all([t.threadId?(0,f.openJobScratch)(t.threadId,U?.label??"job"):null,(0,f.openBotFolders)(W)]),F=t.session??(t.threadId?(0,f.botBrowserSession)(t.threadId,W):null),[J,q]=await Promise.all([(0,d.loadBotPrompt)(W,B.systemPrompt,{thread:t.threadId??null,owner:t.owner,caller:t.caller},{scratch:Y,own:H,artifacts:D}),(0,i.loadTools)({target:"bot",bot:W,thread:t.threadId??null,session:F,model:L})]),K=Math.min(await (0,l.compactBudget)(L.ref,B.compactAt),t.contextBudget||1/0),G=await (0,l.runEffort)(L.ref,B.effort),z=(0,l.promptCacheOptions)(L.ref,t.threadId?C(t.threadId,W):null),Q=!1,V=(0,b.isCoordinatorSeat)(W,t.owner,t.caller)?{...q,[u.TOOL_NAMES.send_message]:(0,n.tool)({description:h.sendMessageSpec.description,inputSchema:h.sendMessageSpec.parameters,execute:async(e,o)=>{let a=await t.send({...e,id:o.toolCallId});return"question"===e.kind&&(Q=!0),a}})}:q,X=new Set,Z=(o=s.BOT_RUN.silenceMs,c=new AbortController,$=0,v=!1,x=()=>{clearTimeout(a),a=void 0,v||$>0||(a=setTimeout(()=>{c.abort(new DOMException(`The model sent nothing for ${Math.round(o/6e4)} minutes.`,"TimeoutError"))},o))},{signal:c.signal,touch:x,hold:()=>{$+=1,x()},release:()=>{$=Math.max(0,$-1),x()},end:()=>{v=!0,x()}});for(let[e,o]of Object.entries(V)){let a=o.execute;a&&(o.execute=(o,r)=>{let n=(async()=>{t.signal?.throwIfAborted(),await _({type:"tool",id:r.toolCallId,name:e,input:o}),Z.hold();try{t.signal?.throwIfAborted();let n=await a(o,r);if(n&&"object"==typeof n&&Symbol.asyncIterator in n){let e;for await(let t of n)e=t;n=e}return await _({type:"tool-result",id:r.toolCallId,name:e,output:n}),n}catch(t){throw await _({type:"tool-result",id:r.toolCallId,name:e,output:(0,l.modelErrorToString)(t),error:!0}),t}finally{Z.release()}})();return X.add(n),n.finally(()=>X.delete(n)).catch(()=>{}),n})}let ee=Promise.resolve(),et=()=>{},eo=0,ea=new r.ToolLoopAgent({model:L.model,instructions:J.text,tools:V,reasoning:G,providerOptions:z,stopWhen:[(0,r.stepCountIs)(S),()=>Q],prepareStep:async({stepNumber:e,steps:o,messages:a})=>{await ee,t.signal?.throwIfAborted();let r={},n=(o.at(-1)?.usage.inputTokens??0)||a.reduce((e,t)=>e+(0,y.estimateTokens)("string"==typeof t.content?t.content:JSON.stringify(t.content))+4,0);eo=n;let s=a,i=t.compactNow?.()??!1;if((n>K||i)&&a.length>2){Z.hold();let e=await I(L.model,V,a,{signal:t.signal,budget:K,instructions:J.text,providerOptions:z}).finally(Z.release);m.logger.debug(`compacted ${a.length} messages at ${n} tokens (budget ${K})`);let o=`${e.text}${await k(U?.id??null,a,Y)}`;await _({type:"compact",text:o,usage:e.usage,messages:a.length,tokens:n}),s=[a[0],{role:"user",content:o}]}let l=e>0?await t.notes?.()??[]:[];return(l.length&&(s=[...s,...l.map(e=>({role:"user",content:e}))]),s===a)?r:{...r,messages:s}}}),er=(M=[],E=[],R=!1,{push(e){let t=E.shift();t?t(e):M.push(e)},take(){let e=M.shift();return e?Promise.resolve(e):R?Promise.resolve(null):new Promise(e=>E.push(e))},end(){for(let e of(R=!0,E.splice(0)))e(null)}}),en=t.signal?AbortSignal.any([t.signal,Z.signal]):Z.signal;Z.touch();let es=new AbortController,ei=AbortSignal.any([en,es.signal]);try{A=await ea.stream({messages:P,abortSignal:ei,onStepEnd:e=>{ee=new Promise(e=>{et=e}),er.push({messages:function(e){if(!e.toolResults.length)return e.response.messages;let t=new Map(e.toolResults.map(e=>[e.toolCallId,e.output]));return e.response.messages.map(e=>"tool"!==e.role?e:{...e,content:e.content.map(e=>{if("tool-result"!==e.type||!t.has(e.toolCallId))return e;let o=t.get(e.toolCallId);return{...e,output:"string"==typeof o?{type:"text",value:o}:{type:"json",value:o}}})})}(e),usage:N(e.usage)})}})}catch(e){throw Z.end(),es.abort(),await Promise.allSettled([...X]),e}let el="",ed="",eh=null,eu=e=>{m.logger.error(`${W}: the model run broke`,e);let t=(0,l.modelErrorToString)(e),o=!(0,l.isProviderRefusal)(e),a=(0,l.isKeyRefused)(e)?{refused:L.ref.provider}:{};if(!(0,l.isContextOverflow)(e))return{type:"error",message:t,retry:o,...a};let r=Math.floor(Math.min(K,eo||K)*s.BOT_RUN.overflowShrink);return{type:"error",message:t,budget:Math.max(w.COMPACT_AT_MIN,r),retry:o,...a}};en.addEventListener("abort",()=>{er.end(),et()},{once:!0});try{for await(let e of A.stream)switch(Z.touch(),e.type){case"start-step":ed="",el="";break;case"text-delta":el+=e.text;break;case"text-end":{let e=el.trim();if(el="",!e)break;ed=[ed,e].filter(Boolean).join("\n\n"),await _({type:"text",text:e});break}case"tool-call":await _({type:"tool",id:e.toolCallId,name:e.toolName,input:e.input,providerExecuted:e.providerExecuted,providerOptions:e.providerMetadata});break;case"tool-result":await _({type:"tool-result",id:e.toolCallId,name:e.toolName,output:e.output});break;case"tool-error":await _({type:"tool-result",id:e.toolCallId,name:e.toolName,output:(0,l.modelErrorToString)(e.error),error:!0});break;case"finish-step":{eh=e.finishReason;let t=await er.take();t&&await _({type:"step",...t,budget:K}),et();break}case"abort":if(t.signal?.aborted)return;await _(eu(e.reason??"The model stopped sending."));return;case"error":await _(eu(e.error));return}}finally{es.abort(),er.end(),Z.end(),et(),await Promise.allSettled([...X]),F&&(0,p.renewSignIns)(F).catch(e=>m.logger.warn(`${W}: kept sign-ins were not renewed`,e))}try{await A.finalStep}catch(e){if(t.signal?.aborted)return;await _(eu(e));return}"content-filter"===eh?await _({type:"error",message:"The provider's content filter stopped the response.",retry:!1}):await _({type:"turn-end",text:ed,stopped:!Q&&("length"===eh||"error"===eh||"tool-calls"===eh)})}async function k(e,t,o){try{let a=e?await (0,T.listWrittenPaths)(e):(0,T.writtenPathsIn)(t.map(e=>e.content)),r=await (0,f.filesOnDisk)(a,o);if(!r.length)return"";let n=r.slice(-s.BOT_RUN.compactFiles),i=r.length-n.length,l=n.map(e=>`- ${e}`);return i&&l.unshift(`- …and ${i} older ones`),`
|
|
93
93
|
|
|
94
94
|
Files this job has on disk now — open one rather than fetching again what is in it:
|
|
95
95
|
${l.join("\n")}`}catch(e){return m.logger.warn("files under the summary could not be listed",e),""}}async function I(e,t,o,a){let r;try{return await x(e,t,o,a)}catch(e){if(a.signal?.aborted)throw e;r=e}if((0,l.isContextOverflow)(r)){let n=(0,c.asWords)(o,(e,t)=>`${e}: ${(0,T.argumentLine)(e,t)}`);try{return await x(e,t,n,a)}catch(e){if(a.signal?.aborted)throw e;r=e}}throw Error(`Could not compact the context (${(0,l.modelErrorToString)(r)}).`,{cause:r})}async function x(e,t,o,a){let n,{text:i,usage:l}=await (0,r.generateText)({model:e,instructions:a.instructions,tools:t,toolChoice:"none",messages:[...o,{role:"user",content:(n=(e=>{let{min:t,max:o,perTokens:a}=s.BOT_RUN.summaryWords;return Math.min(o,Math.max(t,Math.round(e/a)))})(a.budget),`Compact your context. The first message above — who handed you the job, and the job — stays exactly as it is. Everything after it is replaced by what you write now, and you carry on from that first message and this alone; nothing else above can be read again. Write it for a fresh copy of you that has your tools, your instructions and that first message, but has seen none of the rest.
|
|
@@ -106,8 +106,8 @@ Cover all of it, and prefer a fact over a description of a fact:
|
|
|
106
106
|
Plain text, under ${n} words. No preamble, no headings about the summary itself, no account of how you have been going.`)}],abortSignal:a.signal,timeout:s.BOT_RUN.silenceMs,providerOptions:a.providerOptions}),d=i.trim();if(!d)throw Error("The summary of the context came back empty, so there is nothing to carry on from.");return{text:`Everything between the first message and here was compacted. Below is your own summary of it; carry on from the first message and this.
|
|
107
107
|
|
|
108
108
|
${d}`,usage:N(l)}}let N=e=>({input:e.inputTokens??0,output:e.outputTokens??0,cacheRead:e.inputTokenDetails?.cacheReadTokens??0,cacheWrite:e.inputTokenDetails?.cacheWriteTokens??0}),C=(e,t)=>(0,a.createHash)("sha256").update(`${e}
|
|
109
|
-
${t}`).digest("hex").slice(0,32);function O(e,t={}){return e.provider&&e.model?(0,l.getTextModel)({provider:e.provider,model:e.model}):(0,l.resolveDefaultModel)(void 0,t).then(l.getTextModel)}e.s(["resolveModel",0,O,"resumeTranscript",0,function(e,t=new Map){let o=new Map,a=new Set;for(let t of e)if(("tool"===t.role||"assistant"===t.role)&&Array.isArray(t.content))for(let e of t.content)"tool-result"===e.type&&(o.has(e.toolCallId)||o.set(e.toolCallId,e),"assistant"===t.role&&a.add(e.toolCallId));let r=[],n=new Set;for(let s of e){if("tool"===s.role){let e=s.content.filter(e=>"tool-result"!==e.type);e.length&&r.push({...s,content:e});continue}if("assistant"!==s.role||"string"==typeof s.content){r.push(s);continue}let e=[],i=[];for(let r of s.content){if("tool-call"!==r.type){i.push(r);continue}if(n.has(r.toolCallId))continue;let s=r.input;if("string"==typeof s)try{s=JSON.parse(s)}catch{s=void 0}if(!r.toolCallId||void 0===s){i.push({type:"text",text:"A tool argument stream was interrupted before a complete call was recorded. Inspect the saved work before continuing."});continue}let l=r.toolName===u.TOOL_NAMES.send_message?t.get(r.toolCallId):void 0,d=o.get(r.toolCallId)??(l?{type:"tool-result",toolCallId:r.toolCallId,toolName:r.toolName,output:{type:"json",value:l}}:void 0);if(r.providerExecuted&&(!d||!a.has(r.toolCallId))){i.push({type:"text",text:d?`The provider operation ${r.toolName} returned this data before its native continuation was interrupted: ${JSON.stringify(d.output)}`:`The provider operation ${r.toolName} was interrupted without a recorded result. Its remote execution state is unknown.`});continue}n.add(r.toolCallId),i.push({...r,input:s}),a.has(r.toolCallId)||e.push(d??{type:"tool-result",toolCallId:r.toolCallId,toolName:r.toolName,output:{type:"text",value:"No result: execution was interrupted before a result was recorded. The outcome is unknown. Inspect the current state before repeating the action."}})}i.length&&r.push({...s,content:i}),e.length&&r.push({role:"tool",content:e})}return r},"runBot",0,v]),o()}catch(e){o(e)}},!1),39803,e=>e.a(async(t,o)=>{try{var a=e.i(136340),r=e.i(380690),n=e.i(687388),s=e.i(386075),i=e.i(851372),l=e.i(22676),d=e.i(629668),h=e.i(786025),u=e.i(167004),c=e.i(640911),w=e.i(53748),p=e.i(268486),f=e.i(41444),m=e.i(265143),y=e.i(585099),g=e.i(944971),b=e.i(742712),T=e.i(889034),$=e.i(378884),v=t([s,i,l,m,y,b,$]);[s,i,l,m,y,b,$]=v.then?(await v)():v;let
|
|
110
|
-
${t}`;async function k(e){let t=await (0,m.findJobBot)(e.bot);(!t||t.disabled)&&(0,w.publicError)("Choose an enabled bot.");let{from:o,routine:a,...r}={...e,bot:t.name},n=(0,i.buildThreadOpening)({bot:r.bot,request:r.request,from:o,routine:a}),s=await (0,$.insertThread)({...r,routineId:a?.id??null,opening:n});return await x(s.id),s.id}async function I(e,t,o="user",a,r){let n=null;return await
|
|
109
|
+
${t}`).digest("hex").slice(0,32);function O(e,t={}){return e.provider&&e.model?(0,l.getTextModel)({provider:e.provider,model:e.model}):(0,l.resolveDefaultModel)(void 0,t).then(l.getTextModel)}e.s(["resolveModel",0,O,"resumeTranscript",0,function(e,t=new Map){let o=new Map,a=new Set;for(let t of e)if(("tool"===t.role||"assistant"===t.role)&&Array.isArray(t.content))for(let e of t.content)"tool-result"===e.type&&(o.has(e.toolCallId)||o.set(e.toolCallId,e),"assistant"===t.role&&a.add(e.toolCallId));let r=[],n=new Set;for(let s of e){if("tool"===s.role){let e=s.content.filter(e=>"tool-result"!==e.type);e.length&&r.push({...s,content:e});continue}if("assistant"!==s.role||"string"==typeof s.content){r.push(s);continue}let e=[],i=[];for(let r of s.content){if("tool-call"!==r.type){i.push(r);continue}if(n.has(r.toolCallId))continue;let s=r.input;if("string"==typeof s)try{s=JSON.parse(s)}catch{s=void 0}if(!r.toolCallId||void 0===s){i.push({type:"text",text:"A tool argument stream was interrupted before a complete call was recorded. Inspect the saved work before continuing."});continue}let l=r.toolName===u.TOOL_NAMES.send_message?t.get(r.toolCallId):void 0,d=o.get(r.toolCallId)??(l?{type:"tool-result",toolCallId:r.toolCallId,toolName:r.toolName,output:{type:"json",value:l}}:void 0);if(r.providerExecuted&&(!d||!a.has(r.toolCallId))){i.push({type:"text",text:d?`The provider operation ${r.toolName} returned this data before its native continuation was interrupted: ${JSON.stringify(d.output)}`:`The provider operation ${r.toolName} was interrupted without a recorded result. Its remote execution state is unknown.`});continue}n.add(r.toolCallId),i.push({...r,input:s}),a.has(r.toolCallId)||e.push(d??{type:"tool-result",toolCallId:r.toolCallId,toolName:r.toolName,output:{type:"text",value:"No result: execution was interrupted before a result was recorded. The outcome is unknown. Inspect the current state before repeating the action."}})}i.length&&r.push({...s,content:i}),e.length&&r.push({role:"tool",content:e})}return r},"runBot",0,v]),o()}catch(e){o(e)}},!1),39803,e=>e.a(async(t,o)=>{try{var a=e.i(136340),r=e.i(380690),n=e.i(687388),s=e.i(386075),i=e.i(851372),l=e.i(22676),d=e.i(629668),h=e.i(786025),u=e.i(167004),c=e.i(640911),w=e.i(53748),p=e.i(268486),f=e.i(41444),m=e.i(265143),y=e.i(585099),g=e.i(944971),b=e.i(742712),T=e.i(889034),$=e.i(378884),v=t([s,i,l,m,y,b,$]);[s,i,l,m,y,b,$]=v.then?(await v)():v;let W=globalThis.__roomRuns??=new Map,_=globalThis.__roomThreadLock??=(0,p.createKeyedLock)(),P=globalThis.__roomCompactAsked??=new Set,L=(e,t)=>`${e}
|
|
110
|
+
${t}`;async function k(e){let t=await (0,m.findJobBot)(e.bot);(!t||t.disabled)&&(0,w.publicError)("Choose an enabled bot.");let{from:o,routine:a,...r}={...e,bot:t.name},n=(0,i.buildThreadOpening)({bot:r.bot,request:r.request,from:o,routine:a}),s=await (0,$.insertThread)({...r,routineId:a?.id??null,startedBy:a?null:o,opening:n});return await x(s.id),s.id}async function I(e,t,o="user",a,r){let n=null;return await _(e,async()=>{let s=await (0,$.findThread)(e);if(s||(0,w.publicError)("No such thread."),a){let t=(await (0,b.listRoomWork)(e)).find(e=>e.bot.toLowerCase()===a.trim().toLowerCase());t&&t.bot!==T.ROOM_THURSDAY||(0,w.publicError)("Choose a participant in this thread."),a=t.bot}t.trim()===g.THREAD_CONTINUE&&(0,g.isAppStop)(s.pending)?(await (0,b.resumeRoom)(e),(await (0,b.listRoomWork)(e)).some(e=>"queued"===e.state)||(n=await (0,b.tellRoom)(e,"Continue from the saved conversation.","user"===o?T.ROOM_USER:T.ROOM_THURSDAY,a,void 0,!1))):n=await (0,b.tellRoom)(e,t,"user"===o?T.ROOM_USER:T.ROOM_THURSDAY,a,r)}),await x(e),n}async function x(e){await _(e,async()=>{for(let t=0;t<2;t++){let t;for(;t=await (0,b.claimRoomWork)(e);)!function(e){let t,o=new AbortController,a=new Promise(e=>{t=e});W.set(e.id,{threadId:e.threadId,stop:o,done:a}),O(e,o.signal).catch(t=>c.logger.error(`thread ${e.threadId}: participant`,t)).finally(()=>{W.delete(e.id),t(),x(e.threadId).catch(t=>c.logger.error(`thread ${e.threadId}: scheduling`,t))})}(t);await (0,b.settleRoom)(e)}})}async function O(e,t){let o=await S(e,t);if(o?.failure?.retry&&!t.aborted&&(await (0,b.noteRoomBreak)(e,o.failure.message),await (0,a.setTimeout)(n.BOT_RUN.retryMs,void 0,{signal:t}).catch(()=>{}),t.aborted||(o=await S(e,t,!1))),!o||t.aborted)return;let s=o.failure?.message,i=o.ending;if(s||!i||i.stopped){let t=s??"The turn was interrupted. Continue from the saved conversation.";_(e.threadId,async()=>{let a=(await (0,b.listRoomWork)(e.threadId)).find(t=>t.id===e.id);if(a?.state!=="running"||a.generation!==e.generation)return;let r=N(e.threadId);await (0,b.pauseRoom)(e.threadId,t,o.failure?.refused),await r}).catch(t=>c.logger.error(`thread ${e.threadId}: pausing`,t));return}await (0,b.finishRoomWork)(e,i.text);let w=await (0,$.findThread)(e.threadId);if(w?.status==="done"){let e=(0,f.plainText)(w.outcome??"").slice(0,n.FINISHED_NOTICE.words);r.presence.watching||await (0,l.isAnyCallLive)()||(0,u.desktopNotify)(w.label,e);let t=await (0,h.filesOnDisk)((0,d.pathsIn)(w.outcome??""),null);r.appEvents.emit({type:"finished",threadId:w.id,label:w.label,bot:w.bot,words:e,paths:(0,d.leadFirst)(t)})}}async function S(e,t,o=!0){let a=new U(e,t),r=null,n=null;try{let s=await (0,$.findThread)(e.threadId);if(!s)return null;if((await (0,b.listParticipantTranscript)(e.threadId,e.bot)).length||await (0,b.joinRoom)(e,t=>(0,i.buildJoinOpening)({bot:e.bot,coordinator:s.bot,job:t,request:s.request})),await (0,b.consumeRoomInbox)(e),o&&(0,T.isCoordinatorSeat)(e.bot,s.bot,e.caller)){let t=await (0,b.roomBoard)(e);t&&await (0,b.appendRoomMessage)(e.threadId,{bot:e.bot,parent:e.id,role:"user",content:t,hidden:!0})}let l=await (0,b.listParticipantTranscript)(e.threadId,e.bot);await (0,y.runBot)({bot:e.bot,messages:(0,y.resumeTranscript)(l,await (0,b.listRoomReceipts)(e.threadId,e.bot,l))},{signal:t,threadId:e.threadId,parent:e.id,caller:e.caller,owner:s.bot,contextBudget:await (0,b.roomContextBudget)(e.threadId,e.bot),compactNow:()=>P.delete(L(e.threadId,e.bot)),session:(0,h.botBrowserSession)(e.threadId,e.bot),notes:()=>(0,b.consumeRoomInbox)(e),send:async o=>{t.throwIfAborted();let a=o.to.trim();if(a.toLowerCase()===T.ROOM_THURSDAY.toLowerCase())a=T.ROOM_THURSDAY;else{let e=await (0,m.findJobBot)(a);(!e||e.disabled)&&(0,w.publicError)(`No enabled bot named "${a}".`),a=e.name}let r=await (0,b.sendRoomMessage)(e,{...o,to:a});return x(e.threadId).catch(e=>c.logger.error("room message scheduling",e)),r},emit:async o=>{(!t.aborted||"tool-result"===o.type)&&(await a.on(o),"step"===o.type&&await (0,$.addThreadUsage)(e.threadId,o.usage,e.bot===s.bot?{tokens:o.usage.input,budget:o.budget}:null),"compact"===o.type&&await (0,$.addThreadUsage)(e.threadId,o.usage),"turn-end"===o.type&&(r=o),"error"===o.type&&(n={message:o.message,retry:o.retry,refused:o.refused},o.budget&&await (0,b.lowerRoomContextBudget)(e,o.budget)))}})}catch(o){t.aborted||(c.logger.error(`thread ${e.threadId}: ${e.bot} broke`,o),n={message:(0,s.modelErrorToString)(o),retry:!(0,w.isPublicError)(o)&&!(0,s.isProviderRefusal)(o)})}return{ending:r,failure:n}}class U{work;signal;lane;assistant;tool;parts;calls;results;constructor(e,t){this.work=e,this.signal=t,this.lane=(0,f.PromiseChain)(),this.assistant=null,this.tool=null,this.parts={assistant:[],tool:[]},this.calls=new Set,this.results=new Set}async write(e,t,o=!1){let a={bot:this.work.bot,parent:this.work.id,role:t.role,content:t.content,compact:o,note:o};return null===e?(0,b.appendRoomMessage)(this.work.threadId,a):(await (0,$.upsertMessage)(this.work.threadId,e,a),e)}on(e){return this.lane(async()=>{if(!this.signal.aborted||"tool-result"===e.type)if("text"===e.type)this.parts.assistant.push({type:"text",text:e.text}),this.assistant=await this.write(this.assistant,{role:"assistant",content:this.parts.assistant});else if("tool"===e.type){if(this.calls.has(e.id)){let t=this.parts.assistant.find(t=>"tool-call"===t.type&&t.toolCallId===e.id);t&&"tool-call"===t.type&&e.providerOptions&&(t.providerOptions=e.providerOptions,this.assistant=await this.write(this.assistant,{role:"assistant",content:this.parts.assistant}));return}this.calls.add(e.id),this.parts.assistant.push({type:"tool-call",toolCallId:e.id,toolName:e.name,input:e.input,...e.providerExecuted?{providerExecuted:!0}:{},...e.providerOptions?{providerOptions:e.providerOptions}:{}}),this.assistant=await this.write(this.assistant,{role:"assistant",content:this.parts.assistant})}else if("tool-result"===e.type){if(this.results.has(e.id))return;this.results.add(e.id),this.parts.tool.push({type:"tool-result",toolCallId:e.id,toolName:e.name,output:e.error?{type:"error-text",value:String(e.output)}:"string"==typeof e.output?{type:"text",value:e.output}:{type:"json",value:e.output}}),this.tool=await this.write(this.tool,{role:"tool",content:this.parts.tool})}else if("step"===e.type){let t=[this.assistant,this.tool];for(let[o,a]of e.messages.entries())await this.write(t[o]??null,a);let o=t.slice(e.messages.length).filter(e=>null!==e);o.length&&await (0,$.deleteMessages)(this.work.threadId,o),this.assistant=this.tool=null,this.parts={assistant:[],tool:[]}}else"compact"===e.type&&await this.write(null,{role:"user",content:e.text},!0)})}}async function N(e){let t=[...W.values()].filter(t=>t.threadId===e);for(let e of t)e.stop.abort();await Promise.all(t.map(e=>e.done))}async function C(e){await _(e,async()=>{let t=await (0,$.findThread)(e);t||(0,w.publicError)("No such thread."),t.endedAt&&(0,w.publicError)("That thread has already ended."),await (0,b.cancelRoom)(e),await (0,$.updateThread)(e,{status:"cancelled",outcome:null,pending:null,seen:!0,endedAt:new Date}),await N(e),await (0,h.closeJobShell)(e)})}async function M(e){return _(e,()=>E(e))}async function E(e){let t=await (0,$.findThread)(e);await (0,b.cancelRoom)(e),await N(e),await (0,h.removeJobBrowsers)(e);let o=await (0,$.deleteThread)(e);return o&&t&&await (0,h.removeJobScratch)(e,t.label),o}async function R(e){let t=e?.getTime(),o=e=>void 0===t||(e.endedAt??e.updatedAt).getTime()<t,a=0;for(let e of(await (0,$.listThreadFolders)()))("done"===e.status||"cancelled"===e.status)&&o(e)&&await _(e.id,async()=>{let t=await (0,$.findThread)(e.id);t?.status!=="done"&&t?.status!=="cancelled"||o(t)&&await E(e.id)&&(a+=1)});return a}async function A(){let e=Date.now()-n.WORKSPACE_KEEP.forMs,t=t=>("done"===t.status||"cancelled"===t.status)&&(t.endedAt??t.updatedAt).getTime()<e,o=new Set(await (0,h.listScratchFolders)()),a=[];for(let e of(await (0,$.listThreadFolders)())){let r=(0,h.jobScratch)(e.id,e.label);o.delete(r)&&t(e)&&await _(e.id,async()=>{let o=await (0,$.findThread)(e.id);o&&t(o)&&(await (0,h.closeHiddenBrowser)(e.id),await (0,h.removeJobScratch)(e.id,e.label),a.push(r))})}return a.push(...await (0,h.removeUnchangedFolders)([...o])),await (0,h.pruneJobFiles)(),a.length&&c.logger.info(`cleared ${a.length} old job folder(s): ${a.join(", ")}`),a}async function j(){for(let e of(await (0,$.listRunningThreadIds)()))await _(e,async()=>{[...W.values()].some(t=>t.threadId===e)||(await (0,$.findThread)(e))?.status==="running"&&await (0,b.pauseRoom)(e,"The server restarted. Resume from the saved conversation.")})}async function B(e){let t=await (0,$.listRunningThreadIds)();await Promise.all(t.map(t=>_(t,async()=>{(await (0,$.findThread)(t))?.status==="running"&&(await N(t),await (0,b.pauseRoom)(t,e))})))}e.s(["answerThread",0,I,"askCompact",0,function(e,t){P.add(L(e,t))},"cancelThread",0,C,"pauseThreads",0,B,"removeFinishedThreads",0,R,"removeThread",0,M,"startThread",0,k,"sweepJobFiles",0,A,"sweepThreads",0,j]),o()}catch(e){o(e)}},!1),167004,e=>{"use strict";var t=e.i(874533),o=e.i(687388);let a=`on run argv
|
|
111
111
|
display notification (item 2 of argv) with title (item 1 of argv)
|
|
112
112
|
end run`,r=`
|
|
113
113
|
$ErrorActionPreference = 'Stop'
|