thursday-agent 0.10.0 → 0.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/app-path-routes-manifest.json +0 -1
- package/.next/build-manifest.json +3 -3
- package/.next/prerender-manifest.json +3 -3
- package/.next/routes-manifest.json +0 -6
- 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 +2 -2
- package/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/api/artifact/route.js.nft.json +1 -1
- package/.next/server/app/api/bot/keep-working/route.js.nft.json +1 -1
- package/.next/server/app/api/bot/memory/files/route.js.nft.json +1 -1
- package/.next/server/app/api/bot/memory/route.js.nft.json +1 -1
- package/.next/server/app/api/bot/route.js.nft.json +1 -1
- package/.next/server/app/api/bot/thread/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/bot/thread/route.js.nft.json +1 -1
- 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.nft.json +1 -1
- package/.next/server/app/api/llm-model/catalog/route.js.nft.json +1 -1
- package/.next/server/app/api/llm-model/credits/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.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.nft.json +1 -1
- package/.next/server/app/api/memory/route.js.nft.json +1 -1
- package/.next/server/app/api/reach/route.js +13 -13
- package/.next/server/app/api/reach/route.js.nft.json +1 -1
- package/.next/server/app/api/routine/route.js.nft.json +1 -1
- package/.next/server/app/api/signins/route.js +1 -1
- package/.next/server/app/api/signins/route.js.nft.json +1 -1
- package/.next/server/app/api/skills/[source]/[name]/route.js.nft.json +1 -1
- package/.next/server/app/api/skills/route.js.nft.json +1 -1
- package/.next/server/app/api/thursday/call/route.js.nft.json +1 -1
- package/.next/server/app/api/thursday/skills/route.js.nft.json +1 -1
- package/.next/server/app/api/thursday/text/route.js.nft.json +1 -1
- package/.next/server/app/api/thursday/tool-call/route.js +14 -15
- package/.next/server/app/api/thursday/tool-call/route.js.nft.json +1 -1
- package/.next/server/app/api/workspace/files/route.js.nft.json +1 -1
- package/.next/server/app/api/workspace/route.js.nft.json +1 -1
- package/.next/server/app/artifact/[...path]/page/server-reference-manifest.json +1 -1
- package/.next/server/app/artifact/[...path]/page.js.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/server-reference-manifest.json +56 -56
- package/.next/server/app/page.js +4 -4
- package/.next/server/app/page.js.nft.json +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app-paths-manifest.json +0 -1
- package/.next/server/chunks/[root-of-the-server]__014ydvq._.js +2 -2
- package/.next/server/chunks/[root-of-the-server]__0209ah4._.js +7 -5
- package/.next/server/chunks/[root-of-the-server]__04r4h-2._.js +4 -2
- package/.next/server/chunks/[root-of-the-server]__04wldw9._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__0542v_d._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0cfszwn._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__0gewdg9._.js +2 -2
- package/.next/server/chunks/[root-of-the-server]__0mrk2it._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__0npn_pn._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__0nr-v8s._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__0rqgb17._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__1-swlkw._.js +2 -2
- package/.next/server/chunks/[root-of-the-server]__12iddfq._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__1ai5lme._.js +3 -3
- package/.next/server/chunks/[root-of-the-server]__1cjxw0-._.js +2 -2
- package/.next/server/chunks/{[root-of-the-server]__1fy2g82._.js → [root-of-the-server]__1k3j52n._.js} +1 -1
- package/.next/server/chunks/[root-of-the-server]__1kyjt5m._.js +3 -3
- package/.next/server/chunks/[root-of-the-server]__1tg5got._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__1ygplx1._.js +1 -1
- package/.next/server/chunks/_05v8k21._.js +3 -1
- package/.next/server/chunks/_0awtznl._.js +1 -1
- package/.next/server/chunks/_0f6ts7z._.js +1 -1
- package/.next/server/chunks/_0na2fj1._.js +1 -1
- package/.next/server/chunks/_0x-ej3f._.js +17 -17
- package/.next/server/chunks/_10tkr26._.js +1 -1
- package/.next/server/chunks/_12-amdu._.js +2 -2
- package/.next/server/chunks/_15740dw._.js +60 -0
- package/.next/server/chunks/_1dc_d1q._.js +3 -3
- package/.next/server/chunks/_1i350l5._.js +3 -1
- package/.next/server/chunks/_1jc5g4p._.js +2 -2
- package/.next/server/chunks/_1jn-aep._.js +4 -4
- package/.next/server/chunks/_1m88lkh._.js +11 -11
- package/.next/server/chunks/_1ogqovh._.js +4 -4
- package/.next/server/chunks/_1taa4bs._.js +1 -1
- package/.next/server/chunks/_1tpr507._.js +1 -1
- package/.next/server/chunks/_1uuucy-._.js +1 -1
- package/.next/server/chunks/_1zxp-p6._.js +1 -1
- package/.next/server/chunks/features_0rfvely._.js +5 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__0a967km._.js +3 -0
- package/.next/server/chunks/ssr/{[root-of-the-server]__1se25x0._.js → [root-of-the-server]__0hpp3nw._.js} +29 -13
- package/.next/server/chunks/ssr/[root-of-the-server]__0tzekbl._.js +24 -60
- package/.next/server/chunks/ssr/{[root-of-the-server]__0tvavy9._.js → [root-of-the-server]__1iwyp1e._.js} +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__1r77-88._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__1w9hqq8._.js +1 -1
- package/.next/server/chunks/ssr/_026qnc9._.js +1 -1
- package/.next/server/chunks/ssr/{_173siic._.js → _02c7o30._.js} +2 -2
- package/.next/server/chunks/ssr/_097-ljd._.js +1 -1
- package/.next/server/chunks/ssr/_0euzzf8._.js +3 -0
- package/.next/server/chunks/ssr/{_1u2jw0i._.js → _0fbi6om._.js} +3 -3
- package/.next/server/chunks/ssr/_0fqhhwi._.js +1 -1
- package/.next/server/chunks/ssr/_0igfcax._.js +20 -0
- package/.next/server/chunks/ssr/_0ld9_qq._.js +1 -1
- package/.next/server/chunks/ssr/_0nvh1h9._.js +3 -0
- package/.next/server/chunks/ssr/_0qmpw35._.js +3 -0
- package/.next/server/chunks/ssr/{_1yk6yak._.js → _0rmaf32._.js} +2 -2
- package/.next/server/chunks/ssr/_0uv-qs4._.js +3 -0
- package/.next/server/chunks/ssr/{_1doidrw._.js → _10f-jib._.js} +2 -2
- package/.next/server/chunks/ssr/{_05rxyf9._.js → _10mo72m._.js} +2 -2
- package/.next/server/chunks/ssr/_12mijol._.js +11 -11
- package/.next/server/chunks/ssr/_132qkfz._.js +1 -1
- package/.next/server/chunks/ssr/_15zqt-t._.js +1 -1
- package/.next/server/chunks/ssr/_16gfxpn._.js +3 -0
- package/.next/server/chunks/ssr/_184327j._.js +1 -1
- package/.next/server/chunks/ssr/{_1ng831c._.js → _18ujhhq._.js} +2 -2
- package/.next/server/chunks/ssr/_1d423aj._.js +7 -5
- package/.next/server/chunks/ssr/_1lx6w_o._.js +67 -0
- package/.next/server/chunks/ssr/_1mqn9mc._.js +1 -1
- package/.next/server/chunks/ssr/_1neoj22._.js +1 -1
- package/.next/server/chunks/ssr/{_19n08g5._.js → _1ntpny5._.js} +2 -2
- package/.next/server/chunks/ssr/{_0bp-_fi._.js → _1o1g4uk._.js} +3 -3
- package/.next/server/chunks/ssr/_1xoch6f._.js +1 -1
- package/.next/server/chunks/ssr/_1yh5bj5._.js +1 -1
- package/.next/server/chunks/ssr/{_0tg0vf8._.js → _2008vmi._.js} +8 -8
- package/.next/server/chunks/ssr/{features_bot_1yr-_pm._.js → features_bot_1n1s7bh._.js} +2 -2
- 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_workspace_00jz2hu._.js +1 -1
- package/.next/server/chunks/ssr/{node_modules_1n0h9sf._.js → node_modules_0-x0zxm._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_1xzo2wn._.js → node_modules_00nrzz_._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_0511ha-._.js → node_modules_01ed0yi._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_18woe20._.js → node_modules_01u4ea3._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_1expacw._.js → node_modules_05b6e99._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_0eb4rx7._.js → node_modules_07jp6tj._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_0piws2a._.js → node_modules_0azd56x._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_0f2k5l0._.js → node_modules_0b0iy01._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_0wq4-ts._.js → node_modules_0fpnetd._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_11hbkuj._.js → node_modules_0ky76fz._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_048wmmj._.js → node_modules_0lautv3._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_1dcbvfw._.js → node_modules_0m3_5ge._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_0pk6i-e._.js → node_modules_0operbz._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_1zkpek5._.js → node_modules_0ou0all._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_04t200t._.js → node_modules_0ucridu._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_08g12f-._.js → node_modules_0v_-uht._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_1m2ho33._.js → node_modules_0yzmxfq._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_1ksh9gy._.js → node_modules_19b0bir._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_1qehmwm._.js → node_modules_1c2ikr9._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_1_afpz7._.js → node_modules_1hv-j1l._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_0cdu6jq._.js → node_modules_1iau_ea._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_1zf46lp._.js → node_modules_1ma_y68._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_0s1lwc9._.js → node_modules_1omg9xr._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_1cxc8kn._.js → node_modules_1wgnj8q._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_0zjqwz7._.js → node_modules_1wvf3oo._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_1_ban4u._.js → node_modules_1z3sh11._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_@mermaid-js_parser_dist_chunks_mermaid-parser_core_0avl8-1._.js → node_modules_@mermaid-js_parser_dist_chunks_mermaid-parser_core_0tmjn9w._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_@mermaid-js_parser_dist_chunks_mermaid-parser_core_14oslro._.js → node_modules_@mermaid-js_parser_dist_chunks_mermaid-parser_core_1_e8c3o._.js} +1 -1
- 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 +57 -57
- package/.next/static/chunks/09pkygbht7ki8.js +18 -0
- package/.next/static/chunks/0bm-nhblcmmj4.js +17 -0
- package/.next/static/chunks/{22shnca_6zfzs.js → 0hhza87hkbqaz.js} +1 -1
- package/.next/static/chunks/{19ojn4lomsk0r.js → 0mscosx0eh3ee.js} +1 -1
- package/.next/static/chunks/{3vynnr71ghvom.js → 0p50d-au6-3hx.js} +2 -2
- package/.next/static/chunks/{42890jqk049q1.js → 0p9jcyqkpq71f.js} +1 -1
- package/.next/static/chunks/{35kwn237o4wdn.js → 0qgn3u86jkbm7.js} +1 -1
- package/.next/static/chunks/{2d4z3er53ng8r.js → 0samf80yu2b17.js} +1 -1
- package/.next/static/chunks/{1pjygp7hqib6j.js → 1czfknd4luo6t.js} +1 -1
- package/.next/static/chunks/{09120tms63y21.js → 1jz8n0mhtdzr8.js} +1 -1
- package/.next/static/chunks/206laxm6maiz2.js +1 -0
- package/.next/static/chunks/{24dst4mgurbsh.js → 2_c7mu6x1lu49.js} +1 -1
- package/.next/static/chunks/{2ky81z-jgvasc.js → 2h-tlhb2ffhkk.js} +1 -1
- package/.next/static/chunks/{0oz3rs47yy3p8.js → 2i5_w8olnrvo0.js} +2 -2
- package/.next/static/chunks/{1mwee7xvitlp9.js → 2m8iqwc6sykln.js} +1 -1
- package/.next/static/chunks/{0o980477kfqez.js → 2r6xnyg7ezyxr.js} +1 -1
- package/.next/static/chunks/33fyp-byw48ju.js +65 -0
- package/.next/static/chunks/{2ndw4w4u2x51r.js → 35yd_27d9ylra.js} +1 -1
- package/.next/static/chunks/{3exjsi8pfdvzj.js → 3ag1i3__yl94f.js} +1 -1
- package/.next/static/chunks/{3obf9n3cxj99k.js → 3jvldk2wvwbge.js} +1 -1
- package/.next/static/chunks/3m_ejzg-xn21r.css +1 -0
- package/.next/static/chunks/{0w20wnnfrscq7.js → 3s-jpd3ky49-n.js} +1 -1
- package/.next/static/chunks/40ij3wsn3vt7h.js +1 -0
- package/README.md +1 -1
- package/app/api/thursday/tool-call/route.ts +1 -15
- package/docs/images/demo-still.jpg +0 -0
- package/docs/live-calls.md +19 -11
- package/features/ai/components/model-picker.tsx +8 -2
- package/features/ai/model.schema.ts +26 -0
- package/features/ai/prompts/live.prompt.ts +51 -26
- package/features/ai/prompts/prompt-helper.ts +1 -9
- package/features/ai/prompts/thursday.prompt.ts +8 -2
- package/features/bot/bot.run.ts +9 -3
- package/features/bot/bot.seed.ts +35 -91
- package/features/bot/components/bot-room.tsx +3 -12
- package/features/bot/components/room-list.tsx +1 -1
- package/features/bot/components/room-pill.tsx +44 -55
- package/features/bot/seed-bots.ts +2 -2
- package/features/config/components/config-badge.tsx +6 -0
- package/features/config/components/config-setting.tsx +20 -1
- package/features/config/components/models-badge.tsx +5 -7
- package/features/config/components/voice-key.tsx +24 -1
- package/features/config/config.const.ts +7 -0
- package/features/intro/components/intro.tsx +4 -19
- package/features/reach/reach.ts +2 -2
- package/features/settings/components/setting-ui.tsx +14 -5
- package/features/settings/components/settings.tsx +3 -1
- package/features/settings/settings.alert.ts +12 -11
- package/features/signins/signins.query.ts +66 -1
- package/features/thursday/components/side-captions.tsx +31 -8
- package/features/thursday/components/tab-state.tsx +5 -2
- package/features/thursday/components/thursday.tsx +158 -68
- package/features/thursday/components/write-line.tsx +37 -17
- package/features/thursday/thursday.action.ts +4 -20
- package/features/thursday/thursday.schema.ts +0 -9
- package/features/thursday/thursday.store.ts +11 -15
- package/features/thursday/thursday.text.ts +10 -8
- package/features/thursday/tool-line.ts +17 -6
- package/features/thursday/use-call-ring.ts +1 -5
- package/features/thursday/use-text-call.ts +37 -21
- package/features/thursday/use-thursday.ts +14 -44
- package/features/workspace/workspace.ts +4 -2
- package/guide/bots.md +12 -2
- package/guide/calls.md +9 -6
- package/guide/setup.md +4 -1
- package/lib/live/live.session.ts +0 -39
- package/package.json +1 -1
- package/scripts/live-session.test.mts +19 -26
- package/seed-skills/analyst/README.md +3 -4
- package/seed-skills/analyst/data-report/SKILL.md +5 -4
- package/seed-skills/insta/instagram/SKILL.md +5 -2
- package/seed-skills/insta/instagram/references/post.md +2 -2
- package/seed-skills/insta/instagram/scripts/compose.mjs +5 -1
- package/seed-skills/insta/instagram/scripts/inbox.mjs +5 -1
- package/seed-skills/insta/instagram/scripts/lib.mjs +12 -70
- package/seed-skills/insta/instagram/scripts/media.mjs +1 -1
- package/seed-skills/insta/instagram/scripts/profile.mjs +6 -2
- package/seed-skills/insta/instagram/scripts/read.mjs +5 -1
- package/seed-skills/insta/instagram/scripts/search.mjs +6 -2
- package/seed-skills/insta/instagram/scripts/sheet.mjs +31 -88
- package/seed-skills/insta/instagram/templates/carousel.html +1 -1
- package/seed-skills/tutor/picture-book/SKILL.md +16 -0
- package/seed-skills/tutor/picture-book/book/book.css +181 -0
- package/seed-skills/tutor/picture-book/book/book.html +33 -0
- package/seed-skills/tutor/picture-book/book/book.js +60 -0
- package/seed-skills/tutor/picture-book/references/picture-book.md +104 -0
- package/seed-skills/tutor/picture-book/scripts/book-video.mjs +177 -0
- package/seed-skills/tutor/picture-book/scripts/book.mjs +98 -0
- package/skills/browser/SKILL.md +13 -4
- package/skills/browser/references/scripts.md +55 -0
- package/{seed-skills/insta/instagram → skills/browser}/scripts/render.mjs +1 -1
- package/skills/browser/scripts/session.mjs +105 -0
- package/skills/browser/scripts/sheet.mjs +97 -0
- package/{seed-skills/insta/instagram → skills/browser}/scripts/webimage.mjs +1 -1
- package/skills/interactive-page/SKILL.md +4 -3
- package/{seed-skills/analyst/data-report → skills/interactive-page}/scripts/chart.mjs +3 -3
- package/skills/interactive-page/scripts/page.mjs +1 -0
- package/.next/server/app/api/probe/route/app-paths-manifest.json +0 -3
- package/.next/server/app/api/probe/route/build-manifest.json +0 -12
- package/.next/server/app/api/probe/route/server-reference-manifest.json +0 -4
- package/.next/server/app/api/probe/route.js +0 -10
- package/.next/server/app/api/probe/route.js.map +0 -5
- package/.next/server/app/api/probe/route.js.nft.json +0 -1
- package/.next/server/app/api/probe/route_client-reference-manifest.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__012s2o8._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0z0hc1f._.js +0 -4
- package/.next/server/chunks/[root-of-the-server]__1v7-zke._.js +0 -5
- package/.next/server/chunks/_0whlpyi._.js +0 -4
- package/.next/server/chunks/_next-internal_server_app_api_probe_route_actions_0cqd30j.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__0cxqzfc._.js +0 -103
- package/.next/server/chunks/ssr/[root-of-the-server]__1-d2tgh._.js +0 -3
- package/.next/server/chunks/ssr/_070nv1_._.js +0 -3
- package/.next/server/chunks/ssr/_0hlxij-._.js +0 -3
- package/.next/server/chunks/ssr/_0p9pmxe._.js +0 -3
- package/.next/server/chunks/ssr/_0s41irp._.js +0 -3
- package/.next/server/chunks/ssr/_157yfrk._.js +0 -3
- package/.next/server/chunks/ssr/_17v-33v._.js +0 -20
- package/.next/server/chunks/ssr/_1flsjeo._.js +0 -3
- package/.next/static/chunks/03kgfyrli_0gz.js +0 -1
- package/.next/static/chunks/1p764d75_0lhv.js +0 -18
- package/.next/static/chunks/25zq8gzhbdsr7.js +0 -1
- package/.next/static/chunks/2qod5tqlpz8b7.js +0 -17
- package/.next/static/chunks/30skcjexa57zn.js +0 -101
- package/.next/static/chunks/3qq4o8w2rv_e9.css +0 -1
- package/lib/probe.server.ts +0 -17
- package/lib/probe.ts +0 -55
- package/seed-skills/mail/mail/SKILL.md +0 -37
- package/seed-skills/mail/mail/recipes/gmail.mjs +0 -448
- package/seed-skills/mail/mail/references/recipes.md +0 -55
- package/seed-skills/mail/mail/scripts/mail.mjs +0 -202
- /package/.next/static/{Ar5V4kMdL4CE1trx8anrH → QSe0rTdXU5kh5BBzr2XBB}/_buildManifest.js +0 -0
- /package/.next/static/{Ar5V4kMdL4CE1trx8anrH → QSe0rTdXU5kh5BBzr2XBB}/_clientMiddlewareManifest.js +0 -0
- /package/.next/static/{Ar5V4kMdL4CE1trx8anrH → QSe0rTdXU5kh5BBzr2XBB}/_ssgManifest.js +0 -0
- /package/{seed-skills/insta/instagram → skills/browser}/scripts/image-size.mjs +0 -0
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
module.exports=[333925,e=>{"use strict";let t=process.env.THURSDAY_APP_DIR?.trim()||process.cwd(),r=process.env.THURSDAY_HOME?.trim()||process.cwd(),
|
|
1
|
+
module.exports=[333925,e=>{"use strict";let t=process.env.THURSDAY_APP_DIR?.trim()||process.cwd(),r=process.env.THURSDAY_HOME?.trim()||process.cwd(),i=process.env.THURSDAY_URL?.trim()||`http://localhost:${process.env.PORT?.trim()||3e3}`,s=`file:${r}/local.db`,a=".ai-workspace",o={workspace:a,artifacts:"artifacts",projects:"projects",scratch:"scratch",bots:"bots",output:".output",signIns:".sign-ins",skills:{default:"skills",custom:`${a}/.agents/skills`,own:".agents/skills",seeds:"seed-skills"}};e.s(["APP_DIR",0,t,"APP_NAME",0,"Thursday","APP_URL",0,i,"ASCII_FACE",0,{charset:"emojiOnly",fontSize:{default:8,min:4,max:16},density:{default:1.4,min:.6,max:2}},"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:12,concurrent:4,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_GONE_MS",0,1e4,"BROWSER_VIEWPORT",0,"700x700","CALL_EXEC_TIMEOUT_MS",0,15e3,"CALL_RELAY",0,{quietMs:7e3,perTurn:3,readMs:15e3,chars:600},"CHATGPT_SIGN_IN",0,{waitMs:6e5,renewBeforeMs:3e5},"CONNECTED_TOOL_TIMEOUT_MS",0,6e5,"DATA_DIR",0,r,"DB_FILE_NAME",0,s,"EXEC_KILL_GRACE_MS",0,5e3,"EXEC_TIMEOUT_MS",0,18e4,"FINISHED_NOTICE",0,{rows:5,words:240},"GIVEN_FILES",0,{dir:"inbox",maxBytes:0x1900000,perMessage:8},"INBOX_FINISHED",0,5,"IS_DEV",0,!1,"LIVE_CALL",0,{startupMs:3e4,closeMs:15e3,transcriptGapMs:1500,transcriptSaveMs:500,appendMs:15e3,backendOutputTokens:4096,reasoningCheckMs:5e3,keyCheckMs:5e3},"LOOK",0,{maxBytes:4194304},"MEMORY_CONVERSATION_PAGE",0,100,"MEMORY_LIMITS",0,{facts:400,factsPerNote:50,carried:20,expanded:10},"PATHS",0,o,"PROMPT_BUDGET",0,6e3,"PROMPT_LINE",0,{skill:90,toolArgs:30,jobOutcome:160,botMemory:100},"REACH",0,{pollSeconds:50,retryMs:5e3,idleMs:6e5,notifyAfterMs:6e4,chars:3500,files:3,fileBytes:0x2d00000},"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},"STUDIO_SERVER",0,"studio","TEXT_CALL",0,{maxSteps:12,model:"text"},"THREAD_STATUS_LIMIT",0,10,"TOOL_OUTPUT",0,{max:8e3,head:5500,tail:1500},"WORKSPACE_KEEP",0,{forMs:2592e5,sweepEveryMs:36e5}])},871096,e=>{"use strict";var t=e.i(666680),r=e.i(902157),i=e.i(912714),s=e.i(660526),a=e.i(750227),o=e.i(333925),n=e.i(938281),c=e.i(874533),l=o;let u=new Set(["node_modules",".git",".next","dist","build",".venv","__pycache__",".turbo","coverage"]);async function*d(e){let t;try{t=await (0,i.readdir)(e,{withFileTypes:!0})}catch{return}for(let r of t){if(u.has(r.name)||r.name.startsWith("."))continue;let t=(0,a.join)(e,r.name);r.isDirectory()?yield*d(t):r.isFile()&&(yield t)}}async function p(e,t,r,s){if(e.length<=s.max)return e;let o=(0,a.join)(r,s.dir),n=(0,a.join)(o,`${new Date().toISOString().replace(/[:.]/g,"-")}-${t.replace(/[^a-zA-Z0-9_-]+/g,"_")}.txt`),c=n;try{await (0,i.mkdir)(o,{recursive:!0}),await (0,i.writeFile)(n,e),c=(0,a.relative)(r,n)||n}catch{c="(could not be written to a file)"}let l=(e.match(/\n/g)?.length??0)+1;return`${e.slice(0,s.head).trimEnd()}
|
|
2
2
|
|
|
3
|
-
[${t} cut at ${
|
|
3
|
+
[${t} cut at ${s.max.toLocaleString("en")} chars — the whole thing (${l} lines) is at ${c}. Read the part you need with \`sed -n\`.]
|
|
4
4
|
|
|
5
|
-
${e.slice(-
|
|
6
|
-
[${e}]`,_("SIGTERM"),h=setTimeout(()=>{T+="\n[Killed: it did not exit on SIGTERM]",_("SIGKILL"),w=setTimeout(()=>{
|
|
5
|
+
${e.slice(-s.tail).trimStart()}`}let h=o.APP_DIR,w=(0,a.join)(o.DATA_DIR,o.PATHS.workspace),m=(process.env.THURSDAY_TOOL_PATH?.split(":")??[(0,a.join)(h,"node_modules",".bin")]).filter(Boolean),S=(0,a.join)(w,o.PATHS.artifacts),f=[o.PATHS.artifacts,o.PATHS.projects,o.PATHS.scratch,o.PATHS.bots],T=new Set([...f,".agents"]),_=(e,t)=>t===e||t.startsWith(e+a.sep),E=e=>(0,i.realpath)(e).catch(()=>null);async function A(e){let t=await E(w)??w,r=(0,a.resolve)(w,e);if(!_(w,r))return null;let i=r,s=await E(i);for(;null===s&&(0,a.dirname)(i)!==i;)i=(0,a.dirname)(i),s=await E(i);if(null===s)return null;let o=(0,a.relative)(i,r),n=o?(0,a.join)(s,o):s;return _(t,n)?n:null}function P(e,t){let r=t.trim().toLowerCase().replace(/[^\p{L}\p{N}]+/gu,"-").replace(/^-+|-+$/g,"").slice(0,40)||"job";return`${o.PATHS.scratch}/${r}-${e.slice(0,6)}`}let R=e=>`${o.PATHS.bots}/${e.replace(/[^\p{L}\p{N}_-]+/gu,"-")}`,I=e=>`${o.PATHS.artifacts}/${e.replace(/[^\p{L}\p{N}_-]+/gu,"-")}`;async function y(e){let t=R(e),r=I(e);return await Promise.all([t,r].map(e=>(0,i.mkdir)((0,a.join)(w,e),{recursive:!0}))),{own:t,artifacts:r}}async function M(e,t){let r=P(e,t);return await (0,i.mkdir)((0,a.join)(w,r),{recursive:!0}),r}let O=e=>({PLAYWRIGHT_MCP_BROWSER:"chromium",...e?{PLAYWRIGHT_CLI_SESSION:`thread-${e}`,PLAYWRIGHT_MCP_VIEWPORT_SIZE:o.BROWSER_VIEWPORT}:{}}),g=null,L={runtimes:["node","python3","uv","bun","deno"],managers:["pnpm","npm","yarn"]};async function H(e){let t=Object.values(L).flat(),{stdout:r}=await e.exec(t.map(e=>`command -v ${e} >/dev/null 2>&1 && printf '%s ' ${e}`).join("; "),{timeoutMs:1e4}),i=new Set(r.trim().split(/\s+/).filter(Boolean)),s=e=>({found:e.filter(e=>i.has(e)),missing:e.filter(e=>!i.has(e))});return{runtimes:s(L.runtimes),managers:s(L.managers),browser:g}}async function C(){if(process.env.THURSDAY_SKIP_BROWSER)return;let e=await G(),t=await e.exec("playwright-cli install-browser chromium").catch(e=>({exitCode:1,stderr:String(e)}));(g=0===t.exitCode)||n.logger.warn(`no browser — bots cannot open a page until \`playwright-cli install-browser chromium\` succeeds: ${t.stderr.trim().split("\n").at(-1)??""}`)}async function $(){await D(),await W()}async function v(e){await j(e,await x(e,!1))}async function b(e){await x(e,!0)}async function k(e){await j(e,await x(e,!0))}async function j(e,r){let o=process.env.XDG_CACHE_HOME||(0,a.join)((0,s.homedir)(),".cache"),c=await (0,i.realpath)(w).catch(()=>w),l=(0,a.join)(o,"ms-playwright","daemon",(0,t.createHash)("sha1").update(c).digest("hex").slice(0,16)),u=O(e).PLAYWRIGHT_CLI_SESSION;for(let e of(await (0,i.readdir)(l).catch(()=>[]))){let t=e.startsWith("ud-")?e.slice(3):e;(t===u||t.startsWith(`${u}-`)||t.startsWith(`${u}.`))&&(r.some(e=>t===e||t.startsWith(`${e}-`)||t.startsWith(`${e}.`))||await (0,i.rm)((0,a.join)(l,e),{recursive:!0,force:!0}).catch(t=>n.logger.warn(`browser data ${e}: ${String(t)}`)))}}async function x(e,t){let r=await G(),i=O(e),s=await r.exec("playwright-cli list --json",{env:i,timeoutMs:15e3}).catch(()=>null),a=[];try{let{browsers:e}=JSON.parse(s?.stdout??"");a=e?.filter(e=>e.name===i.PLAYWRIGHT_CLI_SESSION||e.name.startsWith(`${i.PLAYWRIGHT_CLI_SESSION}-`))??[]}catch{}let o=[];for(let e of a){if(e.attached||!t&&!1!==e.headed){o.push(e.name);continue}await r.exec("playwright-cli close",{env:{...i,PLAYWRIGHT_CLI_SESSION:e.name},timeoutMs:15e3}).catch(()=>{})}return await $(),o}let W=()=>N(o.PATHS.output),D=()=>N(".playwright-cli");async function N(e){let t=(0,a.join)(w,e),r=await (0,i.readdir)(t,{withFileTypes:!0}).catch(()=>[]),s=Date.now()-o.WORKSPACE_KEEP.forMs;for(let e of r){if(!e.isFile())continue;let r=(0,a.join)(t,e.name),o=await (0,i.stat)(r).catch(()=>null);o&&o.mtimeMs<s&&await (0,i.unlink)(r).catch(()=>{})}}async function F(){return(await (0,i.readdir)((0,a.join)(w,o.PATHS.scratch),{withFileTypes:!0}).catch(()=>[])).filter(e=>e.isDirectory()).map(e=>`${o.PATHS.scratch}/${e.name}`)}async function U(e){let t=Date.now()-o.WORKSPACE_KEEP.forMs,r=[];for(let s of e){let e=(0,a.join)(w,s),o=await (0,i.stat)(e).catch(()=>null);o?.isDirectory()&&!(o.mtimeMs>=t)&&(await (0,i.rm)(e,{recursive:!0,force:!0}).catch(()=>{}),r.push(s))}return r}let B={"pnpm-workspace.yaml":"packages:\n - '**'\n",".npmrc":"recursive-install=false\n"};async function G(){for(let e of[...f,".playwright"])await (0,i.mkdir)((0,a.join)(w,e),{recursive:!0});for(let[e,t]of Object.entries(B))await (0,i.writeFile)((0,a.join)(w,e),t,{flag:"wx"}).catch(()=>{});return(({workingDirectory:e,spill:t,toolPath:r})=>{let s=(0,a.resolve)(e),o=(r??[]).filter(Boolean).join(":"),n=e=>e.startsWith("/")||/^[A-Za-z]:/.test(e)?e:(0,a.resolve)(s,e);return{cwd:s,resolve:n,readFile:(e,t)=>(0,i.readFile)(n(e),t),async writeFile(e,t){let r=n(e);await (0,i.mkdir)((0,a.join)(r,".."),{recursive:!0}),await (0,i.writeFile)(r,t)},readdir:(e,t)=>(0,i.readdir)(n(e),t),fold:(e,r="output")=>p(e,r,s,t),async glob(e,{path:t=".",limit:r=200}={}){let i=n(t),s=RegExp("^"+e.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*\*\//g,"(?:.*/)?").replace(/\*/g,"[^/]*").replace(/\?/g,"[^/]")+"$"),o=[];for await(let e of d(i)){let t=(0,a.relative)(i,e).split(a.sep).join("/");if((s.test(t)||s.test(e))&&o.push(e),o.length>=r)break}return o},exec:(e,{cwd:r,timeoutMs:i=l.EXEC_TIMEOUT_MS,signal:a,env:u}={})=>new Promise(d=>{let h,w,m=function(){let e={...process.env};for(let t of Object.keys(e))/KEY|TOKEN|SECRET|PASSWORD|CREDENTIAL|_AUTH/i.test(t)&&delete e[t];return e.TERM="dumb",e.PAGER="cat",e.GIT_PAGER="cat",e}();o&&(m.PATH=`${m.PATH??""}:${o}`);let S=(0,c.spawn)(e,{shell:!0,cwd:r?n(r):s,env:{...m,...u},detached:!0}),f="",T="";S.stdout?.on("data",e=>f+=e),S.stderr?.on("data",e=>T+=e);let _=e=>{try{S.pid&&process.kill(-S.pid,e)}catch{S.kill(e)}},E=!1,A=async e=>{E||(E=!0,clearTimeout(R),clearTimeout(h),clearTimeout(w),a?.removeEventListener("abort",I),d({...e,stdout:await p(e.stdout,"stdout",s,t),stderr:await p(e.stderr,"stderr",s,t)}))},P=e=>{h||E||(T+=`
|
|
6
|
+
[${e}]`,_("SIGTERM"),h=setTimeout(()=>{T+="\n[Killed: it did not exit on SIGTERM]",_("SIGKILL"),w=setTimeout(()=>{S.stdout?.destroy(),S.stderr?.destroy(),A({stdout:f,stderr:T,exitCode:-1})},1e3)},l.EXEC_KILL_GRACE_MS))},R=setTimeout(()=>P(`Timed out after ${i}ms`),i),I=()=>P("Aborted");a?.aborted?I():a?.addEventListener("abort",I,{once:!0}),S.on("close",e=>A({stdout:f,stderr:T,exitCode:e??-1})),S.on("error",e=>A({stdout:f,stderr:T+String(e),exitCode:-1}))})}})({workingDirectory:w,spill:{dir:o.PATHS.output,...o.TOOL_OUTPUT},toolPath:m})}async function Y(e,t){let r=e.map(e=>(0,a.resolve)(w,e));if(t){let e=0;for await(let i of d((0,a.join)(w,t)))if(r.push(i),(e+=1)>=500)break}let s=new Map;for(let e of r){let t=await (0,i.stat)(e).catch(()=>null);if(!t?.isFile())continue;let r=(0,a.relative)(w,e);s.set(r&&!r.startsWith("..")?r:e,t.mtimeMs)}return[...s].sort((e,t)=>e[1]-t[1]).map(([e])=>e)}async function K(e,t){await (0,i.rm)((0,a.join)(w,P(e,t)),{recursive:!0,force:!0}).catch(()=>{})}e.s(["WORKSPACE",0,w,"botArtifacts",0,I,"botBrowserSession",0,(e,r)=>`${e}-bot-${(0,t.createHash)("sha256").update(r.trim().toLowerCase()).digest("hex").slice(0,20)}`,"botFolder",0,R,"botShellEnv",0,e=>({THURSDAY_ARTIFACTS:I(e),THURSDAY_SKILLS:(0,a.join)(o.APP_DIR,o.PATHS.skills.default)}),"closeHiddenBrowser",0,v,"closeJobShell",0,b,"ensureBrowser",0,C,"filesOnDisk",0,Y,"insideWorkspace",0,A,"jobScratch",0,P,"jobShellEnv",0,O,"listScratchFolders",0,F,"openBotFolders",0,y,"openJobScratch",0,M,"openWorkspace",0,G,"pruneJobFiles",0,$,"readMachineTools",0,H,"removeJobBrowsers",0,k,"removeJobScratch",0,K,"removeUnchangedFolders",0,U,"writeRefusal",0,function(e,t){if(_(w,e)){let i=(0,a.relative)(w,e),[s,n]=i.split(a.sep);return s&&T.has(s)?t&&s===o.PATHS.artifacts&&n&&n.toLowerCase()!==t.replace(/[^\p{L}\p{N}_-]+/gu,"-").toLowerCase()&&!(0,r.existsSync)((0,a.join)(S,n))?`Not written: ${i} would sit loose at the top of ${o.PATHS.artifacts}/. Your finished work goes in ${I(t)}/.`:null:`Not written: ${i||"the workspace root"} is outside the workspace's folders. Finished work goes under ${t?I(t):o.PATHS.artifacts}/, code under ${o.PATHS.projects}/, your own kit under ${o.PATHS.bots}/, and this job's working material under ${o.PATHS.scratch}/.`}return _(h,e)?`Not written: ${e} is inside the app that is running you, not the user's files. Work in ${w}; outside it, write only where the user pointed you.`:null}],871096)}];
|
|
7
7
|
|
|
8
8
|
//# sourceMappingURL=_1ogqovh._.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[911757,e=>{"use strict";var t=e.i(469719),a=e.i(514499),i=e.i(904309),l=e.i(264079);let n={id:"openai",label:"OpenAI",apiKeyName:l.TEXT_MODEL_PROVIDERS.openai.apiKeyName};l.TEXT_MODEL_PROVIDERS.openai.suggestModels;let r=t.z.string().max(a.COMMON_VALIDATE.prompt.max).default(""),o=t.z.object({voice:t.z.string().trim().min(1).max(128).default("marin"),voicePrompt:r,backendModel:t.z.string().trim().min(1).max(128).default(i.LIVE_BACKEND_MODEL),backendPrompt:r,reasoningEffort:t.z.enum(["none","minimal","low","medium","high","xhigh"]).nullable().default("low"),webSearch:t.z.boolean().default(!0)});o.parse({}),e.s(["LIVE_PROVIDER",0,n,"LiveSettingsSchema",0,o])},944971,e=>{"use strict";var t=e.i(105249),a=e.i(264079),i=e.i(704161),l=e.i(514499),n=e.i(41444);let r="currentColor",o=[{id:"system",label:"System",value:r},{id:"slate",label:"Slate",value:"#64748B"},{id:"indigo",label:"Indigo",value:"#6366F1"},{id:"blue",label:"Blue",value:"#3B82F6"},{id:"cyan",label:"Cyan",value:"#06B6D4"},{id:"teal",label:"Teal",value:"#14B8A6"},{id:"green",label:"Green",value:"#22C55E"},{id:"lime",label:"Lime",value:"#84CC16"},{id:"amber",label:"Amber",value:"#F59E0B"},{id:"orange",label:"Orange",value:"#F97316"},{id:"red",label:"Red",value:"#EF4444"},{id:"pink",label:"Pink",value:"#EC4899"},{id:"violet",label:"Violet",value:"#8B5CF6"},{id:"fuchsia",label:"Fuchsia",value:"#D946EF"},{id:"rose",label:"Rose",value:"#F43F5E"},{id:"sky",label:"Sky",value:"#0EA5E9"},{id:"emerald",label:"Emerald",value:"#10B981"},{id:"yellow",label:"Yellow",value:"#EAB308"},{id:"stone",label:"Stone",value:"#78716C"}],s=Object.fromEntries(o.map(e=>[e.id,e.value]));o.filter(e=>e.value!==r).map(e=>e.value),s.amber,s.red;let d=Object.keys({rainbow:{label:"Rainbow",look:"flow",colors:[0,45,90,140,190,240,290,330,360].map(e=>`oklch(0.77 0.16 ${e})`)},duo:{label:"Duo",look:"duo",colors:["#818CF8","#F472B6"]},aurora:{label:"Aurora",look:"aurora",edge:"dark",colors:["#1a2f73","#2c56c9","#34d399","#22d3ee","#a7f3d0"]},"aurora-pink":{label:"Pink aurora",look:"aurora",edge:"dark",colors:["#3a1478","#7c3aed","#f472b6","#e879f9","#fbcfe8"]}});var u=e.i(889034);let c=t.default.object({color:t.default.string().regex(/^(#[0-9a-fA-F]{6}|currentColor)$/,"Hex color").optional(),shape:t.default.enum(["blob","poly","squircle","heart"]).optional(),outline:t.default.boolean().optional(),paint:t.default.enum(d).optional()}),m=t.default.string().max(l.COMMON_VALIDATE.prompt.max),f=t.default.object({id:t.default.number(),name:t.default.string(),serverName:t.default.string()}),b=t.default.string().trim().transform(e=>e.replace(/\s+/g," ")).refine(e=>e.toLowerCase()!==u.ROOM_THURSDAY.toLowerCase(),"Thursday is reserved for the voice assistant.").pipe(t.default.string().min(1,"A name is required").max(l.COMMON_VALIDATE.name.max)),p=t.default.object({input:t.default.number(),output:t.default.number()});t.default.object({name:t.default.string(),description:t.default.string(),systemPrompt:t.default.string().nullish(),icon:c.nullish(),provider:a.textModelProviderSchema.nullish(),model:t.default.string().nullish(),compactAt:t.default.number().nullish(),disabled:t.default.boolean(),createdAt:i.DateLikeSchema,tools:f.array().default([]),tokens:p,lastJobAt:i.DateLikeSchema.nullish()}),t.default.object({name:b,description:t.default.string().trim().min(1,"Say what this bot is for").max(l.COMMON_VALIDATE.description.max),systemPrompt:m.optional(),icon:c.optional(),provider:a.textModelProviderSchema.nullish(),model:t.default.string().trim().max(80).nullish(),compactAt:t.default.coerce.number().int().min(8e3,"At least 8k").nullish(),disabled:t.default.boolean().optional(),toolIds:t.default.number().int().array().max(10).default([])}),t.default.object({file:t.default.string(),path:t.default.string(),line:t.default.string(),at:i.DateLikeSchema,bytes:t.default.number()});let g="Continue",h={thursday:"Thursday, on the call:",user:"The user, on screen:"},E=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()})]),k=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:i.DateLikeSchema}),_=t.default.discriminatedUnion("kind",[k.extend({kind:t.default.literal("user"),text:t.default.string()}),k.extend({kind:t.default.literal("text"),text:t.default.string()}),k.extend({kind:t.default.literal("note"),text:t.default.string()}),k.extend({kind:t.default.literal("stop"),text:t.default.string()}),k.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()}),k.extend({kind:t.default.literal("tool-result"),callId:t.default.string(),name:t.default.string(),results:E.array(),more:t.default.boolean()}),k.extend({kind:t.default.literal("ask"),callId:t.default.string(),to:t.default.string(),text:t.default.string(),question:t.default.boolean().optional()})]),y=t.default.object({question:t.default.string(),messageId:t.default.string().optional(),bot:t.default.string().optional(),options:t.default.string().array(),auto:t.default.boolean()});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:y.nullable(),seen:t.default.boolean(),routineId:t.default.string().nullable(),tokens:p,contextTokens:t.default.number(),contextBudget:t.default.number(),createdAt:i.DateLikeSchema,updatedAt:i.DateLikeSchema,lines:_.array(),room:u.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",systemPrompt:null,icon:{color:"#14B8A6",shape:"squircle"},provider:null,model:null,disabled:!1,compactAt:null},"KEEP_WORKING_KEY",0,"KEEP_WORKING","THREAD_CONTINUE",0,g,"isAppStop",0,e=>{let t=e?.options??[];return!e?.messageId&&1===t.length&&t[0]===g},"isBotMemoryOn",0,e=>e?.trim()!=="off","isKeepWorkingOn",0,e=>e?.trim()==="on","tagSpeaker",0,(e,t)=>`${h[e]} ${t}`,"threadActivity",0,function(e,t=120){let a=null;for(let i=e.length-1;i>=0;i--){let l=e[i];if("tool"===l.kind)a??=`${l.name} ${l.note??l.input}`;else if("text"===l.kind)return(0,n.clip)(a?`${l.text} → ${a}`:l.text,t);else if("ask"===l.kind)return(0,n.clip)(`asked ${l.to}: ${l.text}`,t);else if("user"===l.kind)break}return a?(0,n.clip)(a,t):null},"untagSpeaker",0,e=>{for(let t of Object.values(h))if(e.startsWith(`${t} `))return e.slice(t.length+1);return e},"workHandle",0,e=>e.slice(0,6)],944971)},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),kind:t.z.enum(["message","question"]).default("message"),options:t.z.array(t.z.string().trim().min(1)).nullish(),replyTo:t.z.string().nullish()}),i=t.z.enum(["queued","running","waiting","external","paused","done","cancelled"]),l=t.z.object({bot:t.z.string(),state:i}),n=t.z.object({id:t.z.string(),bot:t.z.string(),text:t.z.string(),options:t.z.string().array().optional()}),r=t.z.object({participants:l.array(),questions:n.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:t.z.enum(["message","question","report","interrupted"]),messageId:t.z.string().nullable()}).array()});e.s(["RESUME_CHECK",0,"Resume from the saved state; inspect any tool whose result is missing before repeating it.","ROOM_THURSDAY",0,"Thursday","RoomMessageSchema",0,a,"RoomViewSchema",0,r])},279041,e=>{"use strict";var t=e.i(911757),a=e.i(264079),i=e.i(834332);let l=[t.LIVE_PROVIDER.apiKeyName],n={image:"IMAGE_MODEL",video:"VIDEO_MODEL",speech:"SPEECH_MODEL",transcription:"TRANSCRIPTION_MODEL"},r={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"}},o="EXA_API_KEY",s="DEFAULT_MODEL",d={key:s,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})))},u=e=>l.includes(e.apiKeyName),c=e=>!!e.signIn||"vercel-ai-gateway"===e.id,m=e=>({key:e.apiKeyName,label:e.label,provider:e.id,signIn:e.signIn}),f=[{id:"voice",title:"voice",hint:"calls run on this key",section:"keys",require:"any",note:"required for calls",entries:a.TEXT_MODEL_PROVIDER_LIST.filter(u).map(m)},{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(c).map(e=>({...m(e),..."vercel-ai-gateway"===e.id&&{recommended:!0}}))},{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)&&!c(e)).map(m)},{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:o,label:"Exa",hint:"web search in one call — dashboard.exa.ai",site:"exa.ai"}]},{id:"phone",title:"phone",hint:"write to Thursday from a chat app — nothing is opened to the outside",section:"keys",require:"none",entries:[{key:i.TELEGRAM_TOKEN_KEY,label:"Telegram",site:"telegram.org",hint:"a bot token from @BotFather — then write to your bot, and allow it here"},{key:i.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:i.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:i.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:[d]},{id:"studio",title:"Studio",hint:"what a bot draws, films and speaks with — off until you pick one",section:"models",require:"none",entries:Object.keys(n).map(e=>({key:n[e],...r[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})))}))}];Object.fromEntries(f.flatMap(e=>e.entries).map(e=>[e.key,e]));let b=f.flatMap(e=>e.entries.map(e=>e.key)),p=Object.fromEntries(f.flatMap(e=>e.entries).filter(e=>e.choices?.length).map(e=>[e.key,e.choices]));e.s(["CONFIG_CHOICES",0,p,"CONFIG_KEYS",0,b,"DEFAULT_MODEL_KEY",0,s,"EXA_API_KEY",0,o,"MEDIA_MODEL_KEYS",0,n])},340698,e=>e.a(async(t,a)=>{try{var i=e.i(875225),l=e.i(528790),n=e.i(613240);e.i(279041);var r=t([l]);async function o(e){let t=process.env[e]?.trim();if(t)return t;let[a]=await l.database.select({value:n.configTable.value}).from(n.configTable).where((0,i.eq)(n.configTable.key,e));return a?.value.trim()||void 0}async function s(e,t){await l.database.insert(n.configTable).values({key:e,value:t}).onConflictDoUpdate({target:n.configTable.key,set:{value:t}})}[l]=r.then?(await r)():r,e.s(["readConfig",0,o,"writeConfig",0,s]),a()}catch(e){a(e)}},!1),834332,e=>{"use strict";let t="TELEGRAM_BOT_TOKEN",a="DISCORD_BOT_TOKEN",i="SLACK_APP_TOKEN",l="SLACK_BOT_TOKEN";e.s(["DISCORD_TOKEN_KEY",0,a,"REACH_CHANNELS",0,["telegram","discord","slack"],"REACH_KEYS",0,{telegram:[t],discord:[a],slack:[i,l]},"SLACK_APP_TOKEN_KEY",0,i,"SLACK_BOT_TOKEN_KEY",0,l,"TELEGRAM_TOKEN_KEY",0,t,"reachPersonKey",0,e=>`REACH_PERSON_${e.toUpperCase()}`])},904309,e=>{"use strict";var t=e.i(469719);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-5.6-luna","LiveFragmentSchema",0,a])},105249,e=>{"use strict";var t=e.i(562810);e.s(["default",0,t])}];
|
|
1
|
+
module.exports=[911757,e=>{"use strict";var t=e.i(469719),a=e.i(514499),i=e.i(904309),l=e.i(264079);let n={id:"openai",label:"OpenAI",apiKeyName:l.TEXT_MODEL_PROVIDERS.openai.apiKeyName};l.TEXT_MODEL_PROVIDERS.openai.suggestModels;let o=t.z.string().max(a.COMMON_VALIDATE.prompt.max).default(""),r=t.z.object({voice:t.z.string().trim().min(1).max(128).default("marin"),voicePrompt:o,backendModel:t.z.string().trim().min(1).max(128).default(i.LIVE_BACKEND_MODEL),backendPrompt:o,reasoningEffort:t.z.enum(["none","minimal","low","medium","high","xhigh"]).nullable().default("low"),webSearch:t.z.boolean().default(!0)});r.parse({}),e.s(["LIVE_PROVIDER",0,n,"LiveSettingsSchema",0,r])},944971,e=>{"use strict";var t=e.i(105249),a=e.i(264079),i=e.i(704161),l=e.i(514499),n=e.i(41444);let o="currentColor",r=[{id:"system",label:"System",value:o},{id:"slate",label:"Slate",value:"#64748B"},{id:"indigo",label:"Indigo",value:"#6366F1"},{id:"blue",label:"Blue",value:"#3B82F6"},{id:"cyan",label:"Cyan",value:"#06B6D4"},{id:"teal",label:"Teal",value:"#14B8A6"},{id:"green",label:"Green",value:"#22C55E"},{id:"lime",label:"Lime",value:"#84CC16"},{id:"amber",label:"Amber",value:"#F59E0B"},{id:"orange",label:"Orange",value:"#F97316"},{id:"red",label:"Red",value:"#EF4444"},{id:"pink",label:"Pink",value:"#EC4899"},{id:"violet",label:"Violet",value:"#8B5CF6"},{id:"fuchsia",label:"Fuchsia",value:"#D946EF"},{id:"rose",label:"Rose",value:"#F43F5E"},{id:"sky",label:"Sky",value:"#0EA5E9"},{id:"emerald",label:"Emerald",value:"#10B981"},{id:"yellow",label:"Yellow",value:"#EAB308"},{id:"stone",label:"Stone",value:"#78716C"}],s=Object.fromEntries(r.map(e=>[e.id,e.value]));r.filter(e=>e.value!==o).map(e=>e.value),s.amber,s.red;let d=Object.keys({rainbow:{label:"Rainbow",look:"flow",colors:[0,45,90,140,190,240,290,330,360].map(e=>`oklch(0.77 0.16 ${e})`)},duo:{label:"Duo",look:"duo",colors:["#818CF8","#F472B6"]},aurora:{label:"Aurora",look:"aurora",edge:"dark",colors:["#1a2f73","#2c56c9","#34d399","#22d3ee","#a7f3d0"]},"aurora-pink":{label:"Pink aurora",look:"aurora",edge:"dark",colors:["#3a1478","#7c3aed","#f472b6","#e879f9","#fbcfe8"]}});var u=e.i(889034);let c=t.default.object({color:t.default.string().regex(/^(#[0-9a-fA-F]{6}|currentColor)$/,"Hex color").optional(),shape:t.default.enum(["blob","poly","squircle","heart"]).optional(),outline:t.default.boolean().optional(),paint:t.default.enum(d).optional()}),m=t.default.string().max(l.COMMON_VALIDATE.prompt.max),f=t.default.object({id:t.default.number(),name:t.default.string(),serverName:t.default.string()}),b=t.default.string().trim().transform(e=>e.replace(/\s+/g," ")).refine(e=>e.toLowerCase()!==u.ROOM_THURSDAY.toLowerCase(),"Thursday is reserved for the voice assistant.").pipe(t.default.string().min(1,"A name is required").max(l.COMMON_VALIDATE.name.max)),p=t.default.object({input:t.default.number(),output:t.default.number()});t.default.object({name:t.default.string(),description:t.default.string(),systemPrompt:t.default.string().nullish(),icon:c.nullish(),provider:a.textModelProviderSchema.nullish(),model:t.default.string().nullish(),compactAt:t.default.number().nullish(),disabled:t.default.boolean(),createdAt:i.DateLikeSchema,tools:f.array().default([]),tokens:p,lastJobAt:i.DateLikeSchema.nullish()}),t.default.object({name:b,description:t.default.string().trim().min(1,"Say what this bot is for").max(l.COMMON_VALIDATE.description.max),systemPrompt:m.optional(),icon:c.optional(),provider:a.textModelProviderSchema.nullish(),model:t.default.string().trim().max(80).nullish(),compactAt:t.default.coerce.number().int().min(8e3,"At least 8k").nullish(),disabled:t.default.boolean().optional(),toolIds:t.default.number().int().array().max(10).default([])}),t.default.object({file:t.default.string(),path:t.default.string(),line:t.default.string(),at:i.DateLikeSchema,bytes:t.default.number()});let g="Continue",h={thursday:"Thursday, on the call:",user:"The user, on screen:"},E=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()})]),k=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:i.DateLikeSchema}),y=t.default.discriminatedUnion("kind",[k.extend({kind:t.default.literal("user"),text:t.default.string()}),k.extend({kind:t.default.literal("text"),text:t.default.string()}),k.extend({kind:t.default.literal("note"),text:t.default.string()}),k.extend({kind:t.default.literal("stop"),text:t.default.string()}),k.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()}),k.extend({kind:t.default.literal("tool-result"),callId:t.default.string(),name:t.default.string(),results:E.array(),more:t.default.boolean()}),k.extend({kind:t.default.literal("ask"),callId:t.default.string(),to:t.default.string(),text:t.default.string(),question:t.default.boolean().optional()})]),_=t.default.object({question:t.default.string(),messageId:t.default.string().optional(),bot:t.default.string().optional(),options:t.default.string().array(),auto:t.default.boolean()});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:_.nullable(),seen:t.default.boolean(),routineId:t.default.string().nullable(),tokens:p,contextTokens:t.default.number(),contextBudget:t.default.number(),createdAt:i.DateLikeSchema,updatedAt:i.DateLikeSchema,lines:y.array(),room:u.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",systemPrompt:null,icon:{color:"#14B8A6",shape:"squircle"},provider:null,model:null,disabled:!1,compactAt:null},"KEEP_WORKING_KEY",0,"KEEP_WORKING","THREAD_CONTINUE",0,g,"isAppStop",0,e=>{let t=e?.options??[];return!e?.messageId&&1===t.length&&t[0]===g},"isBotMemoryOn",0,e=>e?.trim()!=="off","isKeepWorkingOn",0,e=>e?.trim()==="on","tagSpeaker",0,(e,t)=>`${h[e]} ${t}`,"threadActivity",0,function(e,t=120){let a=null;for(let i=e.length-1;i>=0;i--){let l=e[i];if("tool"===l.kind)a??=`${l.name} ${l.note??l.input}`;else if("text"===l.kind)return(0,n.clip)(a?`${l.text} → ${a}`:l.text,t);else if("ask"===l.kind)return(0,n.clip)(`asked ${l.to}: ${l.text}`,t);else if("user"===l.kind)break}return a?(0,n.clip)(a,t):null},"untagSpeaker",0,e=>{for(let t of Object.values(h))if(e.startsWith(`${t} `))return e.slice(t.length+1);return e},"workHandle",0,e=>e.slice(0,6)],944971)},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),kind:t.z.enum(["message","question"]).default("message"),options:t.z.array(t.z.string().trim().min(1)).nullish(),replyTo:t.z.string().nullish()}),i=t.z.enum(["queued","running","waiting","external","paused","done","cancelled"]),l=t.z.object({bot:t.z.string(),state:i}),n=t.z.object({id:t.z.string(),bot:t.z.string(),text:t.z.string(),options:t.z.string().array().optional()}),o=t.z.object({participants:l.array(),questions:n.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:t.z.enum(["message","question","report","interrupted"]),messageId:t.z.string().nullable()}).array()});e.s(["RESUME_CHECK",0,"Resume from the saved state; inspect any tool whose result is missing before repeating it.","ROOM_THURSDAY",0,"Thursday","RoomMessageSchema",0,a,"RoomViewSchema",0,o])},279041,e=>{"use strict";var t=e.i(911757),a=e.i(264079),i=e.i(834332);let l=[t.LIVE_PROVIDER.apiKeyName],n={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",s="DEFAULT_MODEL",d={key:s,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})))},u=e=>l.includes(e.apiKeyName),c=e=>!!e.signIn||"vercel-ai-gateway"===e.id,m=e=>({key:e.apiKeyName,label:e.label,provider:e.id,signIn:e.signIn,keysAt:e.keysAt,keyLooks:e.keyLooks}),f=[{id:"voice",title:"voice",hint:"calls run on this key",section:"keys",require:"any",note:"required for calls",entries:a.TEXT_MODEL_PROVIDER_LIST.filter(u).map(m)},{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(c).map(e=>({...m(e),..."vercel-ai-gateway"===e.id&&{recommended:!0}}))},{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)&&!c(e)).map(m)},{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:"write to Thursday from a chat app — nothing is opened to the outside",section:"keys",require:"none",entries:[{key:i.TELEGRAM_TOKEN_KEY,label:"Telegram",site:"telegram.org",hint:"a bot token from @BotFather — then write to your bot, and allow it here"},{key:i.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:i.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:i.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:[d]},{id:"studio",title:"Studio",hint:"what a bot draws, films and speaks with — off until you pick one",section:"models",require:"none",entries:Object.keys(n).map(e=>({key:n[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})))}))}];Object.fromEntries(f.flatMap(e=>e.entries).map(e=>[e.key,e]));let b=f.flatMap(e=>e.entries.map(e=>e.key)),p=Object.fromEntries(f.flatMap(e=>e.entries).filter(e=>e.choices?.length).map(e=>[e.key,e.choices]));e.s(["CONFIG_CHOICES",0,p,"CONFIG_KEYS",0,b,"DEFAULT_MODEL_KEY",0,s,"EXA_API_KEY",0,r,"MEDIA_MODEL_KEYS",0,n])},340698,e=>e.a(async(t,a)=>{try{var i=e.i(875225),l=e.i(528790),n=e.i(613240);e.i(279041);var o=t([l]);async function r(e){let t=process.env[e]?.trim();if(t)return t;let[a]=await l.database.select({value:n.configTable.value}).from(n.configTable).where((0,i.eq)(n.configTable.key,e));return a?.value.trim()||void 0}async function s(e,t){await l.database.insert(n.configTable).values({key:e,value:t}).onConflictDoUpdate({target:n.configTable.key,set:{value:t}})}[l]=o.then?(await o)():o,e.s(["readConfig",0,r,"writeConfig",0,s]),a()}catch(e){a(e)}},!1),834332,e=>{"use strict";let t="TELEGRAM_BOT_TOKEN",a="DISCORD_BOT_TOKEN",i="SLACK_APP_TOKEN",l="SLACK_BOT_TOKEN";e.s(["DISCORD_TOKEN_KEY",0,a,"REACH_CHANNELS",0,["telegram","discord","slack"],"REACH_KEYS",0,{telegram:[t],discord:[a],slack:[i,l]},"SLACK_APP_TOKEN_KEY",0,i,"SLACK_BOT_TOKEN_KEY",0,l,"TELEGRAM_TOKEN_KEY",0,t,"reachPersonKey",0,e=>`REACH_PERSON_${e.toUpperCase()}`])},904309,e=>{"use strict";var t=e.i(469719);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-5.6-luna","LiveFragmentSchema",0,a])},105249,e=>{"use strict";var t=e.i(562810);e.s(["default",0,t])}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=_1taa4bs._.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[247839,e=>{"use strict";var t=e.i(853205),a=e.i(986129),i=e.i(556325),n=e.i(864328);let o={id:"openai",label:"OpenAI",apiKeyName:n.TEXT_MODEL_PROVIDERS.openai.apiKeyName};n.TEXT_MODEL_PROVIDERS.openai.suggestModels;let s=t.z.string().max(a.COMMON_VALIDATE.prompt.max).default(""),r=t.z.object({voice:t.z.string().trim().min(1).max(128).default("marin"),voicePrompt:s,backendModel:t.z.string().trim().min(1).max(128).default(i.LIVE_BACKEND_MODEL),backendPrompt:s,reasoningEffort:t.z.enum(["none","minimal","low","medium","high","xhigh"]).nullable().default("low"),webSearch:t.z.boolean().default(!0)});r.parse({}),e.s(["LIVE_PROVIDER",0,o,"LiveSettingsSchema",0,r])},799791,e=>e.a(async(t,a)=>{try{var i=e.i(336763),n=e.i(533102),o=e.i(876393),s=e.i(220376),r=e.i(724185);e.i(871096);var l=e.i(951056),c=t([o,r]);[o,r]=c.then?(await c)():c;let
|
|
1
|
+
module.exports=[247839,e=>{"use strict";var t=e.i(853205),a=e.i(986129),i=e.i(556325),n=e.i(864328);let o={id:"openai",label:"OpenAI",apiKeyName:n.TEXT_MODEL_PROVIDERS.openai.apiKeyName};n.TEXT_MODEL_PROVIDERS.openai.suggestModels;let s=t.z.string().max(a.COMMON_VALIDATE.prompt.max).default(""),r=t.z.object({voice:t.z.string().trim().min(1).max(128).default("marin"),voicePrompt:s,backendModel:t.z.string().trim().min(1).max(128).default(i.LIVE_BACKEND_MODEL),backendPrompt:s,reasoningEffort:t.z.enum(["none","minimal","low","medium","high","xhigh"]).nullable().default("low"),webSearch:t.z.boolean().default(!0)});r.parse({}),e.s(["LIVE_PROVIDER",0,o,"LiveSettingsSchema",0,r])},799791,e=>e.a(async(t,a)=>{try{var i=e.i(336763),n=e.i(533102),o=e.i(876393),s=e.i(220376),r=e.i(724185);e.i(871096);var l=e.i(951056),c=t([o,r]);[o,r]=c.then?(await c)():c;let p=e=>({name:e.name,description:e.description,systemPrompt:e.systemPrompt,icon:e.icon,provider:e.provider,model:e.model,disabled:e.disabled,compactAt:e.compactAt});async function d(){let e=await o.database.select().from(s.botTable).orderBy(s.botTable.createdAt);return e.length?e.filter(e=>!e.disabled).map(p):[l.DEFAULT_BOT]}async function m(e){let t=await b(e);if(t)return p(t);let a=e.trim().toLowerCase(),[r]=await o.database.select().from(s.botTable).where((0,i.eq)(n.sql`lower(${s.botTable.name})`,a));return r?p(r):l.DEFAULT_BOT.name.toLowerCase()===a?l.DEFAULT_BOT:null}async function E(){return(0,l.isBotMemoryOn)(await (0,r.readConfig)(l.BOT_MEMORY_KEY))}async function h(){return(0,l.isKeepWorkingOn)(await (0,r.readConfig)(l.KEEP_WORKING_KEY))}async function b(e){let[t]=await o.database.select().from(s.botTable).where((0,i.eq)(s.botTable.name,e));return t??null}e.s(["findJobBot",0,m,"listJobBots",0,d,"readBotMemoryOn",0,E,"readKeepWorkingOn",0,h]),a()}catch(e){a(e)}},!1),656719,e=>{"use strict";var t=e.i(247839),a=e.i(864328),i=e.i(735186);let n=[t.LIVE_PROVIDER.apiKeyName],o={image:"IMAGE_MODEL",video:"VIDEO_MODEL",speech:"SPEECH_MODEL",transcription:"TRANSCRIPTION_MODEL"},s={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",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})))},d=e=>n.includes(e.apiKeyName),m=e=>!!e.signIn||"vercel-ai-gateway"===e.id,E=e=>({key:e.apiKeyName,label:e.label,provider:e.id,signIn:e.signIn,keysAt:e.keysAt,keyLooks:e.keyLooks}),h=[{id:"voice",title:"voice",hint:"calls run on this key",section:"keys",require:"any",note:"required for calls",entries:a.TEXT_MODEL_PROVIDER_LIST.filter(d).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(m).map(e=>({...E(e),..."vercel-ai-gateway"===e.id&&{recommended:!0}}))},{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=>!d(e)&&!m(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:"write to Thursday from a chat app — nothing is opened to the outside",section:"keys",require:"none",entries:[{key:i.TELEGRAM_TOKEN_KEY,label:"Telegram",site:"telegram.org",hint:"a bot token from @BotFather — then write to your bot, and allow it here"},{key:i.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:i.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:i.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]},{id:"studio",title:"Studio",hint:"what a bot draws, films and speaks with — off until you pick one",section:"models",require:"none",entries:Object.keys(o).map(e=>({key:o[e],...s[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})))}))}];Object.fromEntries(h.flatMap(e=>e.entries).map(e=>[e.key,e])),h.flatMap(e=>e.entries.map(e=>e.key)),Object.fromEntries(h.flatMap(e=>e.entries).filter(e=>e.choices?.length).map(e=>[e.key,e.choices])),e.s(["DEFAULT_MODEL_KEY",0,l,"EXA_API_KEY",0,r,"MEDIA_MODEL_KEYS",0,o])},724185,e=>e.a(async(t,a)=>{try{var i=e.i(336763),n=e.i(876393),o=e.i(220376);e.i(656719);var s=t([n]);async function r(e){let t=process.env[e]?.trim();if(t)return t;let[a]=await n.database.select({value:o.configTable.value}).from(o.configTable).where((0,i.eq)(o.configTable.key,e));return a?.value.trim()||void 0}async function l(e,t){await n.database.insert(o.configTable).values({key:e,value:t}).onConflictDoUpdate({target:o.configTable.key,set:{value:t}})}async function c(e){await n.database.delete(o.configTable).where((0,i.eq)(o.configTable.key,e))}[n]=s.then?(await s)():s,e.s(["readConfig",0,r,"removeConfig",0,c,"writeConfig",0,l]),a()}catch(e){a(e)}},!1),735186,e=>{"use strict";let t="TELEGRAM_BOT_TOKEN",a="DISCORD_BOT_TOKEN",i="SLACK_APP_TOKEN",n="SLACK_BOT_TOKEN";e.s(["DISCORD_TOKEN_KEY",0,a,"REACH_CHANNELS",0,["telegram","discord","slack"],"REACH_KEYS",0,{telegram:[t],discord:[a],slack:[i,n]},"SLACK_APP_TOKEN_KEY",0,i,"SLACK_BOT_TOKEN_KEY",0,n,"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-5.6-luna","LiveFragmentSchema",0,a])}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=_1tpr507._.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
module.exports=[159479,e=>e.a(async(t,a)=>{try{var i=e.i(847841),n=e.i(983477),r=e.i(687388),o=e.i(386075),s=e.i(54282),l=e.i(316172),h=e.i(349047),c=e.i(170801),d=e.i(926435),u=e.i(770639),m=e.i(418919),p=e.i(489956),w=e.i(205863),f=e.i(41181),g=e.i(353885),y=e.i(123203),b=e.i(944971),S=e.i(636882),T=e.i(22676),O=e.i(786025),$=e.i(704161),_=e.i(640911),k=e.i(53748),v=e.i(388439),M=e.i(41444),A=t([o,l,d,u,m,p,T]);async function E(t){let{listThreadOverview:a}=await e.A(866938),i=await a();if(!i.length)return"No thread has been started yet.";let n=i.map(e=>`"${e.label}" (${e.bot}, ${e.status})`).join(", ");return`There is no thread called "${t}". The latest are: ${n}. Call again with one of those labels.`}async function N(e,t){let a=[];for(let[e,n]of Object.entries(t)){let t=await (0,i.asSchema)(n.inputSchema).jsonSchema,r="string"==typeof n.description?n.description:"";a.push({name:e,tokens:(0,v.estimateTokens)(r)+(0,v.estimateTokens)(JSON.stringify(t))})}a.sort((e,t)=>t.tokens-e.tokens);let n=a.reduce((e,t)=>e+t.tokens,0);_.logger.debug(`${e} tools ${n} tokens over ${a.length} — ${a.map(e=>`${e.name} ${e.tokens}`).join(", ")}`)}async function L(e){let t=await x(e);return r.IS_DEV&&await N(e.target,t),t}async function x(t){if("memory-edit"===t.target){let e=(0,u.createMemoryTools)("user",null,{countReads:!1});return{[g.TOOL_NAMES.memory_recall]:e[g.TOOL_NAMES.memory_recall],[g.TOOL_NAMES.memory_remember]:e[g.TOOL_NAMES.memory_remember],[g.TOOL_NAMES.memory_forget]:e[g.TOOL_NAMES.memory_forget]}}let{[g.TOOL_NAMES.memory_conversation]:a,..._}=(0,u.createMemoryTools)("call","thursday"===t.target?t.callId??null:null),v={[g.TOOL_NAMES.memory_conversation]:a},A=await (0,O.openWorkspace)();if("thursday"===t.target){var N;let a,o,d=await (0,T.readCallSkillsOn)()?(0,f.createSkillTools)({sandbox:A,skills:await (0,S.loadSkills)(A)}):{};return{..._,...v,...d,...(0,y.createWorkspaceTools)(A,{write:!1,timeoutMs:r.CALL_EXEC_TIMEOUT_MS}),...!1===t.webSearch?{}:await (0,p.createCallSearchTool)(A),...(N=t.callId,a=async t=>{let{resolveThread:a}=await e.A(866938);return(t.trim()?await a(t.trim()):null)??await E(t)},o=async(t,a,i)=>{let n=await e.A(994193);try{return await n.answerThread(t,a,"thursday",i)}catch(e){if((0,k.isPublicError)(e))return e.message;throw e}},{[g.TOOL_NAMES.thread_start]:(0,i.tool)({description:l.threadStartSpec.description,inputSchema:l.threadStartSpec.parameters,execute:async({bot:t,request:a,label:i})=>{let{findJobBot:n,listJobBots:r}=await e.A(814317),o=await n(t);if(!o||o.disabled){let e=(await r()).map(e=>e.name);return`There is no bot called "${t}". The bots are: ${e.join(", ")}. Nothing was started — call again with one of those.`}let{startThread:s}=await e.A(994193);return{threadId:await s({bot:o.name,request:a,label:i,callId:N,from:"thursday"}),note:`${o.name} has "${i}". Its updates reach the conversation on their own. Anything further about this work — a correction, the next step once it finishes — is \`${g.TOOL_NAMES.thread_tell}\` with "${i}"; a question it asks is answered with \`${g.TOOL_NAMES.thread_answer}\`.`}}}),[g.TOOL_NAMES.thread_tell]:(0,i.tool)({description:l.threadTellSpec.description,inputSchema:l.threadTellSpec.parameters,execute:async({thread:e,words:t})=>{let i=await a(e);if("string"==typeof i)return i;if(!t.trim())return"Say what to pass on.";let n=await o(i.id,t.trim());return"string"==typeof n?n:n?.answered?{label:i.label,answered:n.answered,note:`${n.answered.bot} was waiting on a question, and took this as its answer.`}:{label:i.label,bot:n?.to??i.bot,status:"running",note:"running"===i.status?"The bot reads it before its next step.":"The bot picks the thread back up from there."}}}),[g.TOOL_NAMES.thread_answer]:(0,i.tool)({description:l.threadAnswerSpec.description,inputSchema:l.threadAnswerSpec.parameters,execute:async({thread:t,bot:i,answer:n})=>{let r=await a(t);if("string"==typeof r)return r;if(!n.trim())return"Say what the answer is.";let{findThreadView:s}=await e.A(866938),l=(await s(r.id))?.room.questions??[],h=l.find(e=>e.bot.toLowerCase()===i.trim().toLowerCase());if(!h)return l.length?`${i} is not asking anything in "${r.label}". Waiting there: ${l.map(e=>e.bot).join(", ")}. Call again with that bot.`:`No question is waiting in "${r.label}". To say something else to it, use \`${g.TOOL_NAMES.thread_tell}\`.`;let c=await o(r.id,n.trim(),h.bot);return"string"==typeof c?c:{label:r.label,answered:c?.answered??{bot:h.bot,question:h.text},note:`${h.bot} has the answer to its question and goes on from it.`}}}),[g.TOOL_NAMES.thread_status]:(0,i.tool)({description:l.threadStatusSpec.description,inputSchema:l.threadStatusSpec.parameters,execute:async({thread:t})=>{let{listThreadOverview:i,findThreadView:r}=await e.A(866938),o={now:(0,s.clockNow)()},l=e=>(0,n.formatDistanceToNowStrict)((0,$.toDate)(e),{addSuffix:!0});if(!(!t.trim()||"all"===t.trim().toLowerCase())){let e=await a(t);if("string"==typeof e)return e;let i=(await r(e.id))?.room;return{...o,label:e.label,id:e.id,bot:e.bot,participants:i?.participants??[],questions:i?.questions??[],status:e.status,since:l(e.updatedAt),outcome:e.outcome,..."waiting"===e.status&&e.pending?.options.length?{options:e.pending.options}:{}}}let h=await i();return h.length?{...o,threads:h.map(e=>({id:e.id,label:e.label,bot:e.bot,status:e.status,participants:e.room.participants,questions:e.room.questions.map(e=>({...e,text:(0,M.clip)(e.text,200)})),since:l(e.updatedAt),...e.ask?{asking:e.ask.question,options:e.ask.options}:{},..."running"===e.status?{now:(0,b.threadActivity)(e.lines)}:{},...e.outcome&&"waiting"!==e.status?{outcome:(0,M.clip)(e.outcome,200)}:{}}))}:"No thread has been started yet."}}),[g.TOOL_NAMES.thread_cancel]:(0,i.tool)({description:l.threadCancelSpec.description,inputSchema:l.threadCancelSpec.parameters,execute:async({thread:t})=>{let i=await a(t);if("string"==typeof i)return i;let{cancelThread:n}=await e.A(994193);return await n(i.id),{label:i.label,status:"cancelled"}}}),[g.TOOL_NAMES.thread_show]:(0,i.tool)({description:l.threadShowSpec.description,inputSchema:l.threadShowSpec.parameters,execute:async({thread:t})=>{let i=await a(t);if("string"==typeof i)return i;let{appEvents:n}=await e.A(522275),{filesOnDisk:r}=await e.A(149325),{opensOnFinish:o,pathsIn:s}=await e.A(628124),l=await r(s(i.outcome??""),null);if(!l.length)return n.emit({type:"showThread",threadId:i.id}),{label:i.label,showing:"the thread"};let h=Math.max(0,l.findIndex(o));n.emit({type:"showFile",paths:[l[h],...l.filter((e,t)=>t!==h)]});let{markSeen:c}=await e.A(866938);return await c([i.id]),{label:i.label,showing:l[h]}}}),[g.TOOL_NAMES.thread_seen]:(0,i.tool)({description:l.threadSeenSpec.description,inputSchema:l.threadSeenSpec.parameters,execute:async({thread:t})=>{let i=await a(t);if("string"==typeof i)return i;let{markSeen:n}=await e.A(866938);return await n([i.id]),{label:i.label,seen:!0}}})}),...(0,m.createRoutineTools)(),...t.written?(0,c.createLookTool)():(0,h.callTools)()}}let L=await (0,S.loadSkills)(A,t.bot);return{[g.TOOL_NAMES.memory_recall]:_[g.TOOL_NAMES.memory_recall],...v,...await (0,p.createSearchTool)(t.model,A),...(0,y.createWorkspaceTools)(A,{write:!0,env:{...(0,O.jobShellEnv)(t.session),...(0,O.botShellEnv)(t.bot)},guide:!0,bot:t.bot}),...await (0,d.createMcpTools)(t.bot,A),...(0,f.createSkillTools)({sandbox:A,skills:L,bot:t.bot}),...t.model&&(0,o.seesToolImages)(t.model.ref)?(0,c.createLookTool)():{},...(0,w.createSignInTools)(A,t.bot,(0,O.jobShellEnv)(t.session)),...await (0,l.createThreadRecallTool)(t.bot,t.thread??null)}}[o,l,d,u,m,p,T]=A.then?(await A)():A,e.s(["loadTools",0,L]),a()}catch(e){a(e)}},!1),54282,e=>{"use strict";var t=e.i(343747),a=e.i(983477),i=e.i(687388),n=e.i(353885);n.TOOL_NAMES.memory_recall,n.TOOL_NAMES.memory_remember,n.TOOL_NAMES.memory_forget,n.TOOL_NAMES.memory_conversation,n.TOOL_NAMES.bash,n.TOOL_NAMES.web_search,n.TOOL_NAMES.load_skill,n.TOOL_NAMES.look_at,n.TOOL_NAMES.end_call,n.TOOL_NAMES.routine,n.TOOL_NAMES.thread_tell,n.TOOL_NAMES.thread_answer,n.TOOL_NAMES.thread_status,n.TOOL_NAMES.thread_show,n.TOOL_NAMES.thread_cancel,n.TOOL_NAMES.thread_seen;var r=e.i(704161),o=e.i(640911),s=e.i(388439),l=e.i(41444);let h=(e=new Date)=>`${(0,t.format)(e,"yyyy-MM-dd (EEE) HH:mm")} ${Intl.DateTimeFormat().resolvedOptions().timeZone}`,c=(e=new Date)=>`**Now**: ${h(e)}`,d=e=>`${(0,t.format)(e,"yyyy-MM-dd (EEE) HH:mm")} (${(0,a.formatDistanceToNowStrict)(e,{addSuffix:!0})})`,u={[n.STUDIO_TOOLS.generate_image]:"images",[n.STUDIO_TOOLS.generate_speech]:"speech",[n.STUDIO_TOOLS.transcribe]:"transcription",[n.STUDIO_TOOLS.generate_video]:"video"};e.s(["botWorkHead",0,function(e,i){let n=(0,a.formatDistanceToNowStrict)(e.updatedAt,{addSuffix:!0}),r="running"===e.status?`running, last moved ${n}`:e.asking?`waiting on the user's answer since ${n}`:"waiting"===e.status?`stopped ${n}, not finished`:`${"done"===e.status?"ended":"stopped by the user"} ${(0,t.format)(e.updatedAt,"yyyy-MM-dd")}`;return`"${e.label}" — ${e.owner===i?"yours":`${e.owner}'s`} — ${r}`},"callEnding",0,()=>`IMPORTANT — always follow this: when the user wants the call to end, however they say it, forget every other task, answer yes in one word of their language, then immediately, without thinking, use the ${n.TOOL_NAMES.end_call} tool.`,"callStamp",0,d,"carriedLines",0,(e,t={})=>e.map(e=>`- ${e.text} \xb7 ${e.path}${!1===t.ids?"":` #${e.id}`}`).join("\n"),"clockNow",0,h,"conversationLines",0,e=>e.map(e=>"tool"===e.role?`you → ${e.tool??"tool"}`:`${"user"===e.role?"user":"you"}: ${e.text}`).join("\n"),"expandedFacts",0,function(e,t){let a=e.filter(e=>t.has(e.id)),n=e.filter(e=>!t.has(e.id)),r=Math.max(0,i.MEMORY_LIMITS.expanded-a.length),o=new Set([...a,...n.slice(Math.max(0,n.length-r))].map(e=>e.id)),s=e.filter(e=>o.has(e.id));return{shown:s,hidden:e.length-s.length}},"logPromptSize",0,function(e,t){let a=(0,s.sectionTokens)(t),n=a.reduce((e,t)=>e+t.tokens,0);o.logger.debug(`${e} prompt ${n} tokens — ${a.map(e=>`${e.name} ${e.tokens}`).join(", ")}`);let r=a[0];n>i.PROMPT_BUDGET&&r&&o.logger.warn(`${e} prompt is ${n} tokens, over ${i.PROMPT_BUDGET}: ${r.name} carries ${r.tokens} of it. Every call and every job pays this.`)},"mcpToolLines",0,function(e){let t=new Map;for(let a of e){let e=t.get(a.server);e?e.push(a.name):t.set(a.server,[a.name])}return[...t].map(([e,t])=>`- **${e}**: ${t.join(", ")}`).join("\n")},"noteLines",0,function(e,t=!1){return e.length?e.map(e=>{var a;let i,n=e.aliases?.length?` ${e.aliases.map(e=>`"${e}"`).join(" ")}`:"",o=t?` \xb7 ${a=e.lastSeenAt,(i=Math.floor((Date.now()-(0,r.toDate)(a).getTime())/864e5))>=365?`${Math.floor(i/365)}y`:i>=30?`${Math.floor(i/30)}mo`:`${Math.max(i,0)}d`}`:"";return`- ${e.path} — ${e.description?.trim()} (${e.factCount})${n}${o}`}).join("\n"):"(nothing saved yet)"},"nowLine",0,c,"reachNames",0,function(e,t){let a=t.map(e=>e.server===i.STUDIO_SERVER?u[e.name]??e.name:e.server);return[...new Set([...e.map(e=>e.name),...a])].join(", ")},"recentCallLines",0,function(e,t){let a=[],r=0;e:for(let o=e.length-1;o>=0;o--){let h=e[o];for(let e=h.turns.length-1;e>=0;e--){let o=function(e,t){if("tool"!==e.role)return`${"user"===e.role?"user":"you"}: ${e.text}`;let a=function(e,t){if(e!==n.TOOL_NAMES.web_search)return null;try{let e=JSON.parse(t),a=Array.isArray(e.sources)?e.sources.flatMap(e=>e&&"object"==typeof e&&"string"==typeof e.url?[e]:[]):[];return{query:"string"==typeof e.query?e.query:null,sources:a}}catch{return null}}(e.tool,e.text);if(a){let t=[...new Set(a.sources.flatMap(e=>{try{return[new URL(e.url).hostname.replace(/^www\./,"")]}catch{return[]}}))];return`you → ${e.tool} "${(0,l.clip)(a.query??"",i.PROMPT_LINE.toolArgs)}"${t.length?` — ${t.join(", ")}`:""}`}let r=`you → ${e.tool??"tool"} ${(0,l.clip)(e.text,i.PROMPT_LINE.toolArgs)}`;if(e.tool!==n.TOOL_NAMES.thread_start)return r;let o=function(e,t){if(e!==n.TOOL_NAMES.thread_start)return null;try{let e=JSON.parse(t);return"string"==typeof e.label?e.label:null}catch{return null}}(e.tool,e.text),s=o?t.jobs?.find(e=>e.label===o):void 0;if(!s)return r;let h=s.outcome?`: ${(0,l.clip)(s.outcome,i.PROMPT_LINE.jobOutcome)}`:"";return`you → ${e.tool} "${s.label}" (${s.id}) — ${s.status}${h}`}(h.turns[e],h),c=(0,s.estimateTokens)(o)+3;if(r+c>t&&a.length)break e;r+=c,a.push({call:h,line:o})}}a.reverse();let o=[],h=null;for(let{call:e,line:t}of a)e!==h&&(h=e,o.push(`### ${d(e.startedAt)}`)),o.push(t);return o.join("\n")},"saidStamp",0,e=>(0,t.format)(e,"yyyy-MM-dd (EEE) HH:mm"),"skillLines",0,(e,t={})=>e.map(e=>{var a;let n,r;return`- **${e.name}**: ${t.short?(a=e.description,n=i.PROMPT_LINE.skill,(r=a.trim().split(/(?<=[.。])\s|\n/)[0].trim()).length>n?`${r.slice(0,n).trim()}…`:r):e.description}`}).join("\n"),"thursdayIdentity",0,(e=new Date)=>`You are Thursday, this user's own personal assistant, on their side, modeled on Friday, the AI in *Iron Man*. ${c(e)}
|
|
1
|
+
module.exports=[159479,e=>e.a(async(t,a)=>{try{var i=e.i(847841),n=e.i(983477),r=e.i(687388),o=e.i(386075),s=e.i(54282),l=e.i(316172),h=e.i(349047),c=e.i(170801),d=e.i(926435),u=e.i(770639),m=e.i(418919),p=e.i(489956),w=e.i(205863),f=e.i(41181),g=e.i(353885),y=e.i(123203),b=e.i(944971),S=e.i(636882),T=e.i(22676),O=e.i(786025),$=e.i(704161),_=e.i(640911),k=e.i(53748),v=e.i(388439),M=e.i(41444),A=t([o,l,d,u,m,p,T]);async function E(t){let{listThreadOverview:a}=await e.A(866938),i=await a();if(!i.length)return"No thread has been started yet.";let n=i.map(e=>`"${e.label}" (${e.bot}, ${e.status})`).join(", ");return`There is no thread called "${t}". The latest are: ${n}. Call again with one of those labels.`}async function N(e,t){let a=[];for(let[e,n]of Object.entries(t)){let t=await (0,i.asSchema)(n.inputSchema).jsonSchema,r="string"==typeof n.description?n.description:"";a.push({name:e,tokens:(0,v.estimateTokens)(r)+(0,v.estimateTokens)(JSON.stringify(t))})}a.sort((e,t)=>t.tokens-e.tokens);let n=a.reduce((e,t)=>e+t.tokens,0);_.logger.debug(`${e} tools ${n} tokens over ${a.length} — ${a.map(e=>`${e.name} ${e.tokens}`).join(", ")}`)}async function x(e){let t=await L(e);return r.IS_DEV&&await N(e.target,t),t}async function L(t){if("memory-edit"===t.target){let e=(0,u.createMemoryTools)("user",null,{countReads:!1});return{[g.TOOL_NAMES.memory_recall]:e[g.TOOL_NAMES.memory_recall],[g.TOOL_NAMES.memory_remember]:e[g.TOOL_NAMES.memory_remember],[g.TOOL_NAMES.memory_forget]:e[g.TOOL_NAMES.memory_forget]}}let{[g.TOOL_NAMES.memory_conversation]:a,..._}=(0,u.createMemoryTools)("call","thursday"===t.target?t.callId??null:null),v={[g.TOOL_NAMES.memory_conversation]:a},A=await (0,O.openWorkspace)();if("thursday"===t.target){var N;let a,o,d=await (0,T.readCallSkillsOn)()?(0,f.createSkillTools)({sandbox:A,skills:await (0,S.loadSkills)(A)}):{};return{..._,...v,...d,...(0,y.createWorkspaceTools)(A,{write:!1,timeoutMs:r.CALL_EXEC_TIMEOUT_MS}),...!1===t.webSearch?{}:await (0,p.createCallSearchTool)(A),...(N=t.callId,a=async t=>{let{resolveThread:a}=await e.A(866938);return(t.trim()?await a(t.trim()):null)??await E(t)},o=async(t,a,i)=>{let n=await e.A(994193);try{return await n.answerThread(t,a,"thursday",i)}catch(e){if((0,k.isPublicError)(e))return e.message;throw e}},{[g.TOOL_NAMES.thread_start]:(0,i.tool)({description:l.threadStartSpec.description,inputSchema:l.threadStartSpec.parameters,execute:async({bot:t,request:a,label:i})=>{let{findJobBot:n,listJobBots:r}=await e.A(814317),o=await n(t);if(!o||o.disabled){let e=(await r()).map(e=>e.name);return`There is no bot called "${t}". The bots are: ${e.join(", ")}. Nothing was started — call again with one of those.`}let{startThread:s}=await e.A(994193);return{threadId:await s({bot:o.name,request:a,label:i,callId:N,from:"thursday"}),note:`${o.name} has "${i}". Its updates reach the conversation on their own. Anything further about this work — a correction, the next step once it finishes — is \`${g.TOOL_NAMES.thread_tell}\` with "${i}"; a question it asks is answered with \`${g.TOOL_NAMES.thread_answer}\`.`}}}),[g.TOOL_NAMES.thread_tell]:(0,i.tool)({description:l.threadTellSpec.description,inputSchema:l.threadTellSpec.parameters,execute:async({thread:e,words:t})=>{let i=await a(e);if("string"==typeof i)return i;if(!t.trim())return"Say what to pass on.";let n=await o(i.id,t.trim());return"string"==typeof n?n:n?.answered?{label:i.label,answered:n.answered,note:`${n.answered.bot} was waiting on a question, and took this as its answer.`}:{label:i.label,bot:n?.to??i.bot,status:"running",note:"running"===i.status?"The bot reads it before its next step.":"The bot picks the thread back up from there."}}}),[g.TOOL_NAMES.thread_answer]:(0,i.tool)({description:l.threadAnswerSpec.description,inputSchema:l.threadAnswerSpec.parameters,execute:async({thread:t,bot:i,answer:n})=>{let r=await a(t);if("string"==typeof r)return r;if(!n.trim())return"Say what the answer is.";let{findThreadView:s}=await e.A(866938),l=(await s(r.id))?.room.questions??[],h=l.find(e=>e.bot.toLowerCase()===i.trim().toLowerCase());if(!h)return l.length?`${i} is not asking anything in "${r.label}". Waiting there: ${l.map(e=>e.bot).join(", ")}. Call again with that bot.`:`No question is waiting in "${r.label}". To say something else to it, use \`${g.TOOL_NAMES.thread_tell}\`.`;let c=await o(r.id,n.trim(),h.bot);return"string"==typeof c?c:{label:r.label,answered:c?.answered??{bot:h.bot,question:h.text},note:`${h.bot} has the answer to its question and goes on from it.`}}}),[g.TOOL_NAMES.thread_status]:(0,i.tool)({description:l.threadStatusSpec.description,inputSchema:l.threadStatusSpec.parameters,execute:async({thread:t})=>{let{listThreadOverview:i,findThreadView:r}=await e.A(866938),o={now:(0,s.clockNow)()},l=e=>(0,n.formatDistanceToNowStrict)((0,$.toDate)(e),{addSuffix:!0});if(!(!t.trim()||"all"===t.trim().toLowerCase())){let e=await a(t);if("string"==typeof e)return e;let i=(await r(e.id))?.room;return{...o,label:e.label,id:e.id,bot:e.bot,participants:i?.participants??[],questions:i?.questions??[],status:e.status,since:l(e.updatedAt),outcome:e.outcome,..."waiting"===e.status&&e.pending?.options.length?{options:e.pending.options}:{}}}let h=await i();return h.length?{...o,threads:h.map(e=>({id:e.id,label:e.label,bot:e.bot,status:e.status,participants:e.room.participants,questions:e.room.questions.map(e=>({...e,text:(0,M.clip)(e.text,200)})),since:l(e.updatedAt),...e.ask?{asking:e.ask.question,options:e.ask.options}:{},..."running"===e.status?{now:(0,b.threadActivity)(e.lines)}:{},...e.outcome&&"waiting"!==e.status?{outcome:(0,M.clip)(e.outcome,200)}:{}}))}:"No thread has been started yet."}}),[g.TOOL_NAMES.thread_cancel]:(0,i.tool)({description:l.threadCancelSpec.description,inputSchema:l.threadCancelSpec.parameters,execute:async({thread:t})=>{let i=await a(t);if("string"==typeof i)return i;let{cancelThread:n}=await e.A(994193);return await n(i.id),{label:i.label,status:"cancelled"}}}),[g.TOOL_NAMES.thread_show]:(0,i.tool)({description:l.threadShowSpec.description,inputSchema:l.threadShowSpec.parameters,execute:async({thread:t})=>{let i=await a(t);if("string"==typeof i)return i;let{appEvents:n}=await e.A(522275),{filesOnDisk:r}=await e.A(149325),{opensOnFinish:o,pathsIn:s}=await e.A(628124),l=await r(s(i.outcome??""),null);if(!l.length)return n.emit({type:"showThread",threadId:i.id}),{label:i.label,showing:"the thread"};let h=Math.max(0,l.findIndex(o));n.emit({type:"showFile",paths:[l[h],...l.filter((e,t)=>t!==h)]});let{markSeen:c}=await e.A(866938);return await c([i.id]),{label:i.label,showing:l[h]}}}),[g.TOOL_NAMES.thread_seen]:(0,i.tool)({description:l.threadSeenSpec.description,inputSchema:l.threadSeenSpec.parameters,execute:async({thread:t})=>{let i=await a(t);if("string"==typeof i)return i;let{markSeen:n}=await e.A(866938);return await n([i.id]),{label:i.label,seen:!0}}})}),...(0,m.createRoutineTools)(),...t.written?(0,c.createLookTool)():(0,h.callTools)()}}let x=await (0,S.loadSkills)(A,t.bot);return{[g.TOOL_NAMES.memory_recall]:_[g.TOOL_NAMES.memory_recall],...v,...await (0,p.createSearchTool)(t.model,A),...(0,y.createWorkspaceTools)(A,{write:!0,env:{...(0,O.jobShellEnv)(t.session),...(0,O.botShellEnv)(t.bot)},guide:!0,bot:t.bot}),...await (0,d.createMcpTools)(t.bot,A),...(0,f.createSkillTools)({sandbox:A,skills:x,bot:t.bot}),...t.model&&(0,o.seesToolImages)(t.model.ref)?(0,c.createLookTool)():{},...(0,w.createSignInTools)(A,t.bot,(0,O.jobShellEnv)(t.session)),...await (0,l.createThreadRecallTool)(t.bot,t.thread??null)}}[o,l,d,u,m,p,T]=A.then?(await A)():A,e.s(["loadTools",0,x]),a()}catch(e){a(e)}},!1),54282,e=>{"use strict";var t=e.i(343747),a=e.i(983477),i=e.i(687388),n=e.i(353885);n.TOOL_NAMES.memory_recall,n.TOOL_NAMES.memory_remember,n.TOOL_NAMES.memory_forget,n.TOOL_NAMES.memory_conversation,n.TOOL_NAMES.bash,n.TOOL_NAMES.web_search,n.TOOL_NAMES.load_skill,n.TOOL_NAMES.look_at,n.TOOL_NAMES.end_call,n.TOOL_NAMES.routine,n.TOOL_NAMES.thread_tell,n.TOOL_NAMES.thread_answer,n.TOOL_NAMES.thread_status,n.TOOL_NAMES.thread_show,n.TOOL_NAMES.thread_cancel,n.TOOL_NAMES.thread_seen;var r=e.i(704161),o=e.i(640911),s=e.i(388439),l=e.i(41444);let h=(e=new Date)=>`${(0,t.format)(e,"yyyy-MM-dd (EEE) HH:mm")} ${Intl.DateTimeFormat().resolvedOptions().timeZone}`,c=(e=new Date)=>`**Now**: ${h(e)}`,d=e=>`${(0,t.format)(e,"yyyy-MM-dd (EEE) HH:mm")} (${(0,a.formatDistanceToNowStrict)(e,{addSuffix:!0})})`,u={[n.STUDIO_TOOLS.generate_image]:"images",[n.STUDIO_TOOLS.generate_speech]:"speech",[n.STUDIO_TOOLS.transcribe]:"transcription",[n.STUDIO_TOOLS.generate_video]:"video"};e.s(["botWorkHead",0,function(e,i){let n=(0,a.formatDistanceToNowStrict)(e.updatedAt,{addSuffix:!0}),r="running"===e.status?`running, last moved ${n}`:e.asking?`waiting on the user's answer since ${n}`:"waiting"===e.status?`stopped ${n}, not finished`:`${"done"===e.status?"ended":"stopped by the user"} ${(0,t.format)(e.updatedAt,"yyyy-MM-dd")}`;return`"${e.label}" — ${e.owner===i?"yours":`${e.owner}'s`} — ${r}`},"callStamp",0,d,"carriedLines",0,(e,t={})=>e.map(e=>`- ${e.text} \xb7 ${e.path}${!1===t.ids?"":` #${e.id}`}`).join("\n"),"clockNow",0,h,"conversationLines",0,e=>e.map(e=>"tool"===e.role?`you → ${e.tool??"tool"}`:`${"user"===e.role?"user":"you"}: ${e.text}`).join("\n"),"expandedFacts",0,function(e,t){let a=e.filter(e=>t.has(e.id)),n=e.filter(e=>!t.has(e.id)),r=Math.max(0,i.MEMORY_LIMITS.expanded-a.length),o=new Set([...a,...n.slice(Math.max(0,n.length-r))].map(e=>e.id)),s=e.filter(e=>o.has(e.id));return{shown:s,hidden:e.length-s.length}},"logPromptSize",0,function(e,t){let a=(0,s.sectionTokens)(t),n=a.reduce((e,t)=>e+t.tokens,0);o.logger.debug(`${e} prompt ${n} tokens — ${a.map(e=>`${e.name} ${e.tokens}`).join(", ")}`);let r=a[0];n>i.PROMPT_BUDGET&&r&&o.logger.warn(`${e} prompt is ${n} tokens, over ${i.PROMPT_BUDGET}: ${r.name} carries ${r.tokens} of it. Every call and every job pays this.`)},"mcpToolLines",0,function(e){let t=new Map;for(let a of e){let e=t.get(a.server);e?e.push(a.name):t.set(a.server,[a.name])}return[...t].map(([e,t])=>`- **${e}**: ${t.join(", ")}`).join("\n")},"noteLines",0,function(e,t=!1){return e.length?e.map(e=>{var a;let i,n=e.aliases?.length?` ${e.aliases.map(e=>`"${e}"`).join(" ")}`:"",o=t?` \xb7 ${a=e.lastSeenAt,(i=Math.floor((Date.now()-(0,r.toDate)(a).getTime())/864e5))>=365?`${Math.floor(i/365)}y`:i>=30?`${Math.floor(i/30)}mo`:`${Math.max(i,0)}d`}`:"";return`- ${e.path} — ${e.description?.trim()} (${e.factCount})${n}${o}`}).join("\n"):"(nothing saved yet)"},"nowLine",0,c,"reachNames",0,function(e,t){let a=t.map(e=>e.server===i.STUDIO_SERVER?u[e.name]??e.name:e.server);return[...new Set([...e.map(e=>e.name),...a])].join(", ")},"recentCallLines",0,function(e,t){let a=[],r=0;e:for(let o=e.length-1;o>=0;o--){let h=e[o];for(let e=h.turns.length-1;e>=0;e--){let o=function(e,t){if("tool"!==e.role)return`${"user"===e.role?"user":"you"}: ${e.text}`;let a=function(e,t){if(e!==n.TOOL_NAMES.web_search)return null;try{let e=JSON.parse(t),a=Array.isArray(e.sources)?e.sources.flatMap(e=>e&&"object"==typeof e&&"string"==typeof e.url?[e]:[]):[];return{query:"string"==typeof e.query?e.query:null,sources:a}}catch{return null}}(e.tool,e.text);if(a){let t=[...new Set(a.sources.flatMap(e=>{try{return[new URL(e.url).hostname.replace(/^www\./,"")]}catch{return[]}}))];return`you → ${e.tool} "${(0,l.clip)(a.query??"",i.PROMPT_LINE.toolArgs)}"${t.length?` — ${t.join(", ")}`:""}`}let r=`you → ${e.tool??"tool"} ${(0,l.clip)(e.text,i.PROMPT_LINE.toolArgs)}`;if(e.tool!==n.TOOL_NAMES.thread_start)return r;let o=function(e,t){if(e!==n.TOOL_NAMES.thread_start)return null;try{let e=JSON.parse(t);return"string"==typeof e.label?e.label:null}catch{return null}}(e.tool,e.text),s=o?t.jobs?.find(e=>e.label===o):void 0;if(!s)return r;let h=s.outcome?`: ${(0,l.clip)(s.outcome,i.PROMPT_LINE.jobOutcome)}`:"";return`you → ${e.tool} "${s.label}" (${s.id}) — ${s.status}${h}`}(h.turns[e],h),c=(0,s.estimateTokens)(o)+3;if(r+c>t&&a.length)break e;r+=c,a.push({call:h,line:o})}}a.reverse();let o=[],h=null;for(let{call:e,line:t}of a)e!==h&&(h=e,o.push(`### ${d(e.startedAt)}`)),o.push(t);return o.join("\n")},"saidStamp",0,e=>(0,t.format)(e,"yyyy-MM-dd (EEE) HH:mm"),"skillLines",0,(e,t={})=>e.map(e=>{var a;let n,r;return`- **${e.name}**: ${t.short?(a=e.description,n=i.PROMPT_LINE.skill,(r=a.trim().split(/(?<=[.。])\s|\n/)[0].trim()).length>n?`${r.slice(0,n).trim()}…`:r):e.description}`}).join("\n"),"thursdayIdentity",0,(e=new Date)=>`You are Thursday, this user's own personal assistant, on their side, modeled on Friday, the AI in *Iron Man*. ${c(e)}
|
|
2
2
|
|
|
3
3
|
What they tell you is kept, so you know them better over time, and whatever they want done can be done for them in the background.`,"tidying",0,e=>({crowded:e.reduce((e,t)=>e+t.factCount,0)>i.MEMORY_LIMITS.facts,heavy:e.filter(e=>e.factCount>i.MEMORY_LIMITS.factsPerNote)})],54282)},316172,e=>e.a(async(t,a)=>{try{var i=e.i(847841),n=e.i(907855),r=e.i(687388),o=e.i(54282),s=e.i(353885),l=e.i(944971),h=e.i(889034),c=e.i(378884),d=e.i(41444),u=t([c]);[c]=u.then?(await u)():u;let p=n.string().describe("The thread, by its label or its id."),w={description:"Start a new thread: hand work to a bot. Returns a receipt at once; the work runs in the background and its updates reach the conversation on their own.",parameters:n.object({bot:n.string().describe("A name from the bot list."),request:n.string().describe("The whole of the work. The bot cannot hear the call, so everything it needs goes here — names, paths, what the user actually asked for — in their own language and their own words: it is the only language the bot has, and whatever it writes comes back to them. **Their request, never your reading of it**: a condition, a caution or a smaller goal they did not say is how work comes back as the wrong thing. When their words leave a real choice open, ask them on the call and put the answer here."),label:n.string().describe("Two or three words naming the thread, in the user's language. Used on screen and said out loud.")})},f={description:"Say something to a thread that exists: a correction while it runs, the next step once it has finished, or to go on after it stopped. Its bot reads it with everything the thread already holds.",parameters:n.object({thread:p,words:n.string().describe("What to tell its bot, in the user's language and words.")})},g={description:`Answer a question a bot asked the user. Only for a question that is waiting; anything else said to a thread is \`${s.TOOL_NAMES.thread_tell}\`.`,parameters:n.object({thread:p,bot:n.string().describe("The bot that asked."),answer:n.string().describe("The user's answer, in their words.")})},y={description:`Read threads as they are now. "all" lists up to ${r.THREAD_STATUS_LIMIT}, running and waiting work before recent endings; a label or an id reads that one whole, with its result and any question waiting.`,parameters:n.object({thread:n.string().describe('"all", or one thread by its label or its id.')})},b={description:"Stop a thread for good. It cannot be taken back.",parameters:n.object({thread:p})},S={description:"Put a thread in front of the user on their screen: the file it made, or the thread itself when it made none. Showing it also counts as them having seen its result.",parameters:n.object({thread:p})},T={description:"Mark a thread's result as seen by the user, once they have heard it and have nothing more to ask about it. It leaves the work waiting on them.",parameters:n.object({thread:p})},O={description:"Send a message to a participant or Thursday and receive a delivery receipt immediately. Mark a question for Thursday to request user input; ordinary messages to Thursday are notifications and need no answer.",parameters:h.RoomMessageSchema.extend({kind:h.RoomMessageSchema.shape.kind.describe("Use question only when Thursday must obtain an answer from the user: it ends your turn, and you continue when the answer arrives. Use message for bot collaboration, progress updates and reports."),options:h.RoomMessageSchema.shape.options.describe("With a question, offer concise answer choices when useful. Omit for an open-ended question; the user can always type their own answer."),to:n.string().trim().min(1).describe("Choose a bot from the roster, or Thursday to reach the user."),text:n.string().trim().min(1).describe("Write the message and include the context the recipient needs."),replyTo:n.string().nullish().describe("Use an incoming message ID to send an explicit reply; omit to start a new exchange. Your ordinary final text already replies to your current correspondent.")})},$={description:"Open one of your other threads whole: what you were asked there and your last words in full.",parameters:n.object({id:n.string().describe("The id in brackets on its line under Your other threads.")})};async function m(e,t){let a=await (0,c.listBotWork)(e,t),n=[...a.open,...a.recent];if(!n.some(e=>e.cut))return{};let h=new Set;return{[s.TOOL_NAMES.thread_recall]:(0,i.tool)({description:$.description,inputSchema:$.parameters,execute:async({id:t})=>{let a=t.trim().replace(/^\[|\]$/g,"").toLowerCase(),i=n.find(e=>a.length>=4&&(e.id.startsWith(a)||e.label.toLowerCase()===a));if(!i)return`No thread "${t}" on your list. The ids there: ${n.filter(e=>e.cut).map(e=>(0,l.workHandle)(e.id)).join(", ")}.`;if(!i.cut)return"Its line already shows all of it.";if(h.has(i.id))return"Already opened above, this turn.";if(h.size>=r.BOT_WORK.reads)return`${r.BOT_WORK.reads} threads are open already this turn. Carry on with what you have.`;h.add(i.id);let s=await (0,c.readBotAsk)(e,i),u=i.said??"";return[(0,o.botWorkHead)(i,e),s?`You were asked: ${(0,d.clip)(s,r.BOT_WORK.asked)}`:"",`Your last words there:
|
|
4
4
|
${u.length>r.BOT_WORK.readChars?`${u.slice(0,r.BOT_WORK.readChars)}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
module.exports=[232347,e=>{"use strict";let a,t,l,s,n,r;var i,c=e.i(333925),o=e.i(938281);let d={threads:!0,routines:!0,memory:!0,mcp:!0,config:!0,reach:!0,signins:!0},u=globalThis,f=u.__appEvents??=(a=new Set,{emit(e){for(let t of[...a])try{t(e)}catch(e){console.error("event listener failed",e)}},subscribe:e=>(a.add(e),()=>{a.delete(e)})}),T=u.__presence??=(i=c.BROWSER_GONE_MS,t=!1,l=null,s=new Set,n=new Set,r=e=>{for(let a of[...e])try{a()}catch(e){console.error("presence listener failed",e)}},{get watching(){return t},track(e){if(e>0){l&&clearTimeout(l),l=null,t||(t=!0,r(n));return}!l&&t&&(l=setTimeout(()=>{l=null,t=!1,r(s)},i))},onGone:e=>(s.add(e),()=>s.delete(e)),onBack:e=>(n.add(e),()=>n.delete(e))});u.__appEventStream??=function(e,a={}){let t=new TextEncoder,l=a.heartbeatMs??2e4,s=0;return{respond:(n,r)=>{let i=()=>{};return new Response(new ReadableStream({async start(c){let d=!1,u=new Map,f=[],T=e=>{if(!d)try{c.enqueue(t.encode(e))}catch{i()}},m=e=>T(`data: ${JSON.stringify(e)}
|
|
2
2
|
|
|
3
|
-
`),b=e=>{let t=a.coalesce?.keyOf(e)??null;if(null===t)return m(e);let l=u.get(t);l&&clearTimeout(l),u.set(t,setTimeout(()=>{u.delete(t),m(e)},a.coalesce?.ms))},_=e.subscribe(e=>f?f.push(e):b(e)),
|
|
3
|
+
`),b=e=>{let t=a.coalesce?.keyOf(e)??null;if(null===t)return m(e);let l=u.get(t);l&&clearTimeout(l),u.set(t,setTimeout(()=>{u.delete(t),m(e)},a.coalesce?.ms))},_=e.subscribe(e=>f?f.push(e):b(e)),E=setInterval(()=>T(": ping\n\n"),l);s+=1,a.onWatchers?.(s),i=()=>{if(!d){for(let e of(d=!0,s-=1,a.onWatchers?.(s),_(),clearInterval(E),u.values()))clearTimeout(e);try{c.close()}catch{}}},n.addEventListener("abort",i);try{for(let e of await r?.()??[])m(e)}catch(e){o.logger.error("event stream opening failed",e),i();return}let M=f;for(let e of(f=null,M))b(e)},cancel(){i()}}),{headers:{"Content-Type":"text/event-stream; charset=utf-8","Cache-Control":"no-store","X-Accel-Buffering":"no"}})},get watchers(){return s}}}(f,{coalesce:{ms:150,keyOf:e=>e.type in d?e.type:null},onWatchers:T.track}),u.__bootId??=crypto.randomUUID(),e.s(["appEvents",0,f,"presence",0,T],232347)},333925,e=>{"use strict";let a=process.env.THURSDAY_APP_DIR?.trim()||process.cwd(),t=process.env.THURSDAY_HOME?.trim()||process.cwd(),l=process.env.THURSDAY_URL?.trim()||`http://localhost:${process.env.PORT?.trim()||3e3}`,s=`file:${t}/local.db`,n=".ai-workspace",r={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",seeds:"seed-skills"}};e.s(["APP_DIR",0,a,"APP_NAME",0,"Thursday","APP_URL",0,l,"ASCII_FACE",0,{charset:"emojiOnly",fontSize:{default:8,min:4,max:16},density:{default:1.4,min:.6,max:2}},"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:12,concurrent:4,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_GONE_MS",0,1e4,"BROWSER_VIEWPORT",0,"700x700","CALL_EXEC_TIMEOUT_MS",0,15e3,"CALL_RELAY",0,{quietMs:7e3,perTurn:3,readMs:15e3,chars:600},"CHATGPT_SIGN_IN",0,{waitMs:6e5,renewBeforeMs:3e5},"CONNECTED_TOOL_TIMEOUT_MS",0,6e5,"DATA_DIR",0,t,"DB_FILE_NAME",0,s,"EXEC_KILL_GRACE_MS",0,5e3,"EXEC_TIMEOUT_MS",0,18e4,"FINISHED_NOTICE",0,{rows:5,words:240},"GIVEN_FILES",0,{dir:"inbox",maxBytes:0x1900000,perMessage:8},"INBOX_FINISHED",0,5,"IS_DEV",0,!1,"LIVE_CALL",0,{startupMs:3e4,closeMs:15e3,transcriptGapMs:1500,transcriptSaveMs:500,appendMs:15e3,backendOutputTokens:4096,reasoningCheckMs:5e3,keyCheckMs:5e3},"LOOK",0,{maxBytes:4194304},"MEMORY_CONVERSATION_PAGE",0,100,"MEMORY_LIMITS",0,{facts:400,factsPerNote:50,carried:20,expanded:10},"PATHS",0,r,"PROMPT_BUDGET",0,6e3,"PROMPT_LINE",0,{skill:90,toolArgs:30,jobOutcome:160,botMemory:100},"REACH",0,{pollSeconds:50,retryMs:5e3,idleMs:6e5,notifyAfterMs:6e4,chars:3500,files:3,fileBytes:0x2d00000},"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},"STUDIO_SERVER",0,"studio","TEXT_CALL",0,{maxSteps:12,model:"text"},"THREAD_STATUS_LIMIT",0,10,"TOOL_OUTPUT",0,{max:8e3,head:5500,tail:1500},"WORKSPACE_KEEP",0,{forMs:2592e5,sweepEveryMs:36e5}])},520401,e=>e.a(async(a,t)=>{try{var l=e.i(336763),s=e.i(396918),n=e.i(533102);e.i(333925);var r=e.i(876393),i=e.i(220376),c=e.i(5509),o=e.i(724185),d=e.i(933395),u=a([r,c,o]);async function f(){return(0,d.isSkillsOn)(await (0,o.readConfig)(d.THURSDAY_KEYS.skills))}async function T(e){let[a]=await r.database.insert(i.callTable).values({id:crypto.randomUUID(),...e}).returning({id:i.callTable.id});return a.id}async function m(e,a){return(await r.database.update(i.callTable).set({endedAt:new Date,...a?{endedReason:a.reason,seconds:a.seconds??null}:{}}).where((0,l.and)((0,l.eq)(i.callTable.id,e),(0,l.isNull)(i.callTable.endedAt))).returning({id:i.callTable.id})).length>0}async function b(e,a){for(let t of a)await r.database.insert(i.callMessageTable).values({callId:e,...t,fragments:t.fragments??null}).onConflictDoUpdate({target:[i.callMessageTable.callId,i.callMessageTable.id],set:{text:t.text,role:t.role,tool:t.tool??null,fragments:t.fragments??null}})}async function _(e){let[a]=await r.database.select({seq:n.sql`max(${i.callMessageTable.seq})`}).from(i.callMessageTable).where((0,l.eq)(i.callMessageTable.callId,e));return a?.seq==null?0:Number(a.seq)+1}async function E(e,a){await r.database.insert(i.callThoughtTable).values({callId:e,...a}).onConflictDoNothing()}async function M(e){let a=await r.database.select({callId:i.callMessageTable.callId,startedAt:i.callTable.startedAt,role:i.callMessageTable.role,tool:i.callMessageTable.tool,text:i.callMessageTable.text,seq:i.callMessageTable.seq}).from(i.callMessageTable).innerJoin(i.callTable,(0,l.eq)(i.callMessageTable.callId,i.callTable.id)).orderBy((0,s.desc)(i.callTable.startedAt),(0,s.desc)(i.callMessageTable.seq)).limit(e),t=new Map;for(let e of a){let a=t.get(e.callId)??{callId:e.callId,startedAt:e.startedAt,turns:[]};a.turns.push({role:e.role,tool:e.tool,text:e.text,seq:e.seq}),t.set(e.callId,a)}return[...t.values()].reverse().map(e=>({...e,turns:e.turns.reverse()}))}async function p(e,a,t){let[c]=await r.database.select({startedAt:i.callTable.startedAt}).from(i.callTable).where((0,l.eq)(i.callTable.id,e));if(!c)return null;let[o]=await r.database.select({total:n.sql`count(*)`}).from(i.callMessageTable).where((0,l.eq)(i.callMessageTable.callId,e)),d=await r.database.select({role:i.callMessageTable.role,tool:i.callMessageTable.tool,text:i.callMessageTable.text}).from(i.callMessageTable).where((0,l.eq)(i.callMessageTable.callId,e)).orderBy((0,s.asc)(i.callMessageTable.seq)).limit(t).offset((a-1)*t);return{startedAt:c.startedAt,total:Number(o?.total??0),turns:d}}async function g(){return(await r.database.select({id:i.callTable.id}).from(i.callTable).where((0,l.isNull)(i.callTable.endedAt)).limit(1)).length>0}async function I(e){return(await r.database.select({id:i.callTable.id}).from(i.callTable).where((0,l.and)((0,l.eq)(i.callTable.id,e),(0,l.isNull)(i.callTable.endedAt))).limit(1)).length>0}async function A(){await r.database.update(i.callTable).set({endedAt:new Date}).where((0,l.isNull)(i.callTable.endedAt))}[r,c,o]=u.then?(await u)():u,e.s(["endCall",0,m,"insertCall",0,T,"isAnyCallLive",0,g,"isCallOpen",0,I,"listRecentTurns",0,M,"nextTurnSeq",0,_,"readCallConversation",0,p,"readCallSkillsOn",0,f,"saveThought",0,E,"saveTurns",0,b,"sweepCalls",0,A]),t()}catch(e){t(e)}},!1),933395,e=>{"use strict";var a=e.i(517435),t=e.i(333925),l=e.i(864328),s=e.i(556325);let n=[{id:"chatgpt",...l.TEXT_MODEL_PROVIDERS.chatgpt},{id:"openai",...l.TEXT_MODEL_PROVIDERS.openai}];a.default.object({charset:a.default.enum(["ascii","emoji","emojiOnly"]).default(t.ASCII_FACE.charset),fontSize:a.default.number().min(t.ASCII_FACE.fontSize.min).max(t.ASCII_FACE.fontSize.max).default(t.ASCII_FACE.fontSize.default),density:a.default.number().min(t.ASCII_FACE.density.min).max(t.ASCII_FACE.density.max).default(t.ASCII_FACE.density.default)}).parse({});a.default.object({enabled:a.default.boolean(),phrase:a.default.string().trim().min(3).max(32)}),a.default.object({enabled:a.default.boolean(),combo:a.default.string().trim().min(1).max(64)}),a.default.enum(["off","waiting","any"]),a.default.enum(["center","sides"]),a.default.object({id:a.default.string().min(1),role:a.default.enum(["user","assistant","tool"]),tool:a.default.string().nullish(),text:a.default.string(),seq:a.default.number().int().min(0),fragments:a.default.array(s.LiveFragmentSchema).nullish()}),a.default.object({id:a.default.string().min(1),text:a.default.string(),seq:a.default.number().int().min(0)}),e.s(["TEXT_CALL_PROVIDERS",0,n,"THURSDAY_KEYS",0,{skills:"THURSDAY_SKILLS"},"isSkillsOn",0,e=>e?.trim()==="on","textCallRunsOn",0,e=>n.find(a=>e(a.apiKeyName))?.id??null],933395)}];
|
|
4
4
|
|
|
5
5
|
//# sourceMappingURL=_1zxp-p6._.js.map
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
module.exports=[379651,377205,t=>{"use strict";var e=t.i(912714),i=t.i(750227),a=t.i(232347),r=t.i(333925),n=t.i(871096),s=t.i(938281);let o=t=>t.trim().toLowerCase().replace(/^[a-z]+:\/\//,"").replace(/^www\./,"").replace(/[/?#].*$/,"");t.s(["siteOf",0,o],377205);let l=(0,i.join)(r.DATA_DIR,r.PATHS.signIns),c=t=>(0,i.join)(l,`${encodeURIComponent(o(t))}.json`);async function u(t){try{return JSON.parse(await (0,e.readFile)(c(t),"utf8"))}catch{return null}}async function d(t){await (0,e.mkdir)(l,{recursive:!0}),await (0,e.writeFile)(c(t.site),JSON.stringify(t),{mode:384}),a.appEvents.emit({type:"signins"})}async function w(){let t=await (0,e.readdir)(l).catch(()=>[]);return(await Promise.all(t.filter(t=>t.endsWith(".json")).map(t=>u(decodeURIComponent(t.slice(0,-5)))))).flatMap(t=>t?[(({state:t,...e})=>e)(t)]:[]).sort((t,e)=>t.site.localeCompare(e.site))}async function
|
|
1
|
+
module.exports=[379651,377205,t=>{"use strict";var e=t.i(912714),i=t.i(750227),a=t.i(232347),r=t.i(333925),n=t.i(871096),s=t.i(938281);let o=t=>t.trim().toLowerCase().replace(/^[a-z]+:\/\//,"").replace(/^www\./,"").replace(/[/?#].*$/,"");t.s(["siteOf",0,o],377205);let l=(0,i.join)(r.DATA_DIR,r.PATHS.signIns),c=t=>(0,i.join)(l,`${encodeURIComponent(o(t))}.json`);async function u(t){try{return JSON.parse(await (0,e.readFile)(c(t),"utf8"))}catch{return null}}async function d(t){await (0,e.mkdir)(l,{recursive:!0}),await (0,e.writeFile)(c(t.site),JSON.stringify(t),{mode:384}),a.appEvents.emit({type:"signins"})}async function w(){let t=await (0,e.readdir)(l).catch(()=>[]);return(await Promise.all(t.filter(t=>t.endsWith(".json")).map(t=>u(decodeURIComponent(t.slice(0,-5)))))).flatMap(t=>t?[(({state:t,...e})=>e)(t)]:[]).sort((t,e)=>t.site.localeCompare(e.site))}async function p(t){let e=o(t.site),i=await u(e),a={site:e,account:t.account.trim()||e,bots:[...new Set([...i?.bots??[],t.bot])],asking:(i?.asking??[]).filter(e=>e!==t.bot),keptAt:new Date().toISOString(),usedAt:i?.usedAt??null,state:t.state};return await d(a),(({state:t,...e})=>e)(a)}async function f(t,e){let i=await u(t);if(!i)return{kind:"none",kept:(await w()).map(t=>t.site)};if(!i.bots.includes(e))return i.asking.includes(e)||await d({...i,asking:[...i.asking,e]}),{kind:"ask",signIn:(({state:t,...e})=>e)(i)};let a={...i,usedAt:new Date().toISOString()};return await d(a),{kind:"state",signIn:(({state:t,...e})=>e)(a),state:i.state}}let h=t=>`${t.name}
|
|
2
|
+
${t.domain}
|
|
3
|
+
${t.path}`;async function m(t){let i,a=await (0,e.readdir)(l).catch(()=>[]);if(!a.some(t=>t.endsWith(".json")))return;let r=await (0,n.openWorkspace)(),s=(0,n.jobShellEnv)(t),{browsers:o}=JSON.parse((await r.exec("playwright-cli list --json",{env:s,timeoutMs:15e3})).stdout||"{}"),c=o?.find(t=>t.name===s.PLAYWRIGHT_CLI_SESSION);if(!c||c.attached)return;let w=`.playwright-cli/state-${crypto.randomUUID()}.json`;try{let t=await r.exec(`mkdir -p .playwright-cli && playwright-cli state-save ${w}`,{env:s,timeoutMs:3e4});if(0!==t.exitCode)return;let e=JSON.parse(await r.readFile(w,"utf-8"));i=new Map((e.cookies??[]).map(t=>[h(t),t]))}finally{await r.exec(`rm -f ${w}`)}for(let t of a){if(!t.endsWith(".json"))continue;let e=await u(decodeURIComponent(t.slice(0,-5))),a=e?.state;if(!e||!a?.cookies)continue;let r=!1,n=a.cookies.map(t=>{let e=i.get(h(t));return e&&JSON.stringify(e)!==JSON.stringify(t)?(r=!0,e):t});r&&await d({...e,state:{...a,cookies:n}})}}async function S(){let t=(0,i.join)(n.WORKSPACE,r.PATHS.bots);for(let a of(await (0,e.readdir)(t).catch(()=>[]))){let r=(0,i.join)(t,a,".auth");for(let t of(await (0,e.readdir)(r).catch(()=>[]))){if(!t.endsWith(".json"))continue;let n=(0,i.join)(r,t);try{let o=JSON.parse(await (0,e.readFile)(n,"utf8")),l=t.slice(0,-5),c=(await (0,e.readFile)((0,i.join)(r,"account.txt"),"utf8").catch(()=>"")).trim();await p({site:l,account:c,bot:a,state:o}),await (0,e.rm)(n),s.logger.info(`sign-ins: took in ${a}'s ${l}`)}catch(t){s.logger.warn(`sign-ins: could not take in ${n}`,t)}}}}t.s(["adoptKeptSessions",0,S,"borrowSignIn",0,f,"keepSignIn",0,p,"renewSignIns",0,m],379651)},871096,t=>{"use strict";var e=t.i(666680),i=t.i(902157),a=t.i(912714),r=t.i(660526),n=t.i(750227),s=t.i(333925),o=t.i(938281),l=t.i(874533),c=s;let u=new Set(["node_modules",".git",".next","dist","build",".venv","__pycache__",".turbo","coverage"]);async function*d(t){let e;try{e=await (0,a.readdir)(t,{withFileTypes:!0})}catch{return}for(let i of e){if(u.has(i.name)||i.name.startsWith("."))continue;let e=(0,n.join)(t,i.name);i.isDirectory()?yield*d(e):i.isFile()&&(yield e)}}async function w(t,e,i,r){if(t.length<=r.max)return t;let s=(0,n.join)(i,r.dir),o=(0,n.join)(s,`${new Date().toISOString().replace(/[:.]/g,"-")}-${e.replace(/[^a-zA-Z0-9_-]+/g,"_")}.txt`),l=o;try{await (0,a.mkdir)(s,{recursive:!0}),await (0,a.writeFile)(o,t),l=(0,n.relative)(i,o)||o}catch{l="(could not be written to a file)"}let c=(t.match(/\n/g)?.length??0)+1;return`${t.slice(0,r.head).trimEnd()}
|
|
2
4
|
|
|
3
5
|
[${e} cut at ${r.max.toLocaleString("en")} chars — the whole thing (${c} lines) is at ${l}. Read the part you need with \`sed -n\`.]
|
|
4
6
|
|
|
5
|
-
${t.slice(-r.tail).trimStart()}`}let
|
|
6
|
-
[${t}]`,y("SIGTERM"),
|
|
7
|
+
${t.slice(-r.tail).trimStart()}`}let p=s.APP_DIR,f=(0,n.join)(s.DATA_DIR,s.PATHS.workspace),h=(process.env.THURSDAY_TOOL_PATH?.split(":")??[(0,n.join)(p,"node_modules",".bin")]).filter(Boolean),m=(0,n.join)(f,s.PATHS.artifacts),S=[s.PATHS.artifacts,s.PATHS.projects,s.PATHS.scratch,s.PATHS.bots],g=new Set([...S,".agents"]),y=(t,e)=>e===t||e.startsWith(t+n.sep),T=t=>(0,a.realpath)(t).catch(()=>null);async function A(t){let e=await T(f)??f,i=(0,n.resolve)(f,t);if(!y(f,i))return null;let a=i,r=await T(a);for(;null===r&&(0,n.dirname)(a)!==a;)a=(0,n.dirname)(a),r=await T(a);if(null===r)return null;let s=(0,n.relative)(a,i),o=s?(0,n.join)(r,s):r;return y(e,o)?o:null}function $(t,e){let i=e.trim().toLowerCase().replace(/[^\p{L}\p{N}]+/gu,"-").replace(/^-+|-+$/g,"").slice(0,40)||"job";return`${s.PATHS.scratch}/${i}-${t.slice(0,6)}`}let P=t=>`${s.PATHS.bots}/${t.replace(/[^\p{L}\p{N}_-]+/gu,"-")}`,I=t=>`${s.PATHS.artifacts}/${t.replace(/[^\p{L}\p{N}_-]+/gu,"-")}`;async function _(t){let e=P(t),i=I(t);return await Promise.all([e,i].map(t=>(0,a.mkdir)((0,n.join)(f,t),{recursive:!0}))),{own:e,artifacts:i}}async function j(t,e){let i=$(t,e);return await (0,a.mkdir)((0,n.join)(f,i),{recursive:!0}),i}let b=t=>({PLAYWRIGHT_MCP_BROWSER:"chromium",...t?{PLAYWRIGHT_CLI_SESSION:`thread-${t}`,PLAYWRIGHT_MCP_VIEWPORT_SIZE:s.BROWSER_VIEWPORT}:{}}),E=null,k={runtimes:["node","python3","uv","bun","deno"],managers:["pnpm","npm","yarn"]};async function v(t){let e=Object.values(k).flat(),{stdout:i}=await t.exec(e.map(t=>`command -v ${t} >/dev/null 2>&1 && printf '%s ' ${t}`).join("; "),{timeoutMs:1e4}),a=new Set(i.trim().split(/\s+/).filter(Boolean)),r=t=>({found:t.filter(t=>a.has(t)),missing:t.filter(t=>!a.has(t))});return{runtimes:r(k.runtimes),managers:r(k.managers),browser:E}}async function R(){if(process.env.THURSDAY_SKIP_BROWSER)return;let t=await U(),e=await t.exec("playwright-cli install-browser chromium").catch(t=>({exitCode:1,stderr:String(t)}));(E=0===e.exitCode)||o.logger.warn(`no browser — bots cannot open a page until \`playwright-cli install-browser chromium\` succeeds: ${e.stderr.trim().split("\n").at(-1)??""}`)}async function H(){await F(),await D()}async function O(t){await L(t,await x(t,!1))}async function W(t){await x(t,!0)}async function C(t){await L(t,await x(t,!0))}async function L(t,i){let s=process.env.XDG_CACHE_HOME||(0,n.join)((0,r.homedir)(),".cache"),l=await (0,a.realpath)(f).catch(()=>f),c=(0,n.join)(s,"ms-playwright","daemon",(0,e.createHash)("sha1").update(l).digest("hex").slice(0,16)),u=b(t).PLAYWRIGHT_CLI_SESSION;for(let t of(await (0,a.readdir)(c).catch(()=>[]))){let e=t.startsWith("ud-")?t.slice(3):t;(e===u||e.startsWith(`${u}-`)||e.startsWith(`${u}.`))&&(i.some(t=>e===t||e.startsWith(`${t}-`)||e.startsWith(`${t}.`))||await (0,a.rm)((0,n.join)(c,t),{recursive:!0,force:!0}).catch(e=>o.logger.warn(`browser data ${t}: ${String(e)}`)))}}async function x(t,e){let i=await U(),a=b(t),r=await i.exec("playwright-cli list --json",{env:a,timeoutMs:15e3}).catch(()=>null),n=[];try{let{browsers:t}=JSON.parse(r?.stdout??"");n=t?.filter(t=>t.name===a.PLAYWRIGHT_CLI_SESSION||t.name.startsWith(`${a.PLAYWRIGHT_CLI_SESSION}-`))??[]}catch{}let s=[];for(let t of n){if(t.attached||!e&&!1!==t.headed){s.push(t.name);continue}await i.exec("playwright-cli close",{env:{...a,PLAYWRIGHT_CLI_SESSION:t.name},timeoutMs:15e3}).catch(()=>{})}return await H(),s}let D=()=>M(s.PATHS.output),F=()=>M(".playwright-cli");async function M(t){let e=(0,n.join)(f,t),i=await (0,a.readdir)(e,{withFileTypes:!0}).catch(()=>[]),r=Date.now()-s.WORKSPACE_KEEP.forMs;for(let t of i){if(!t.isFile())continue;let i=(0,n.join)(e,t.name),s=await (0,a.stat)(i).catch(()=>null);s&&s.mtimeMs<r&&await (0,a.unlink)(i).catch(()=>{})}}async function N(){return(await (0,a.readdir)((0,n.join)(f,s.PATHS.scratch),{withFileTypes:!0}).catch(()=>[])).filter(t=>t.isDirectory()).map(t=>`${s.PATHS.scratch}/${t.name}`)}async function G(t){let e=Date.now()-s.WORKSPACE_KEEP.forMs,i=[];for(let r of t){let t=(0,n.join)(f,r),s=await (0,a.stat)(t).catch(()=>null);s?.isDirectory()&&!(s.mtimeMs>=e)&&(await (0,a.rm)(t,{recursive:!0,force:!0}).catch(()=>{}),i.push(r))}return i}let K={"pnpm-workspace.yaml":"packages:\n - '**'\n",".npmrc":"recursive-install=false\n"};async function U(){for(let t of[...S,".playwright"])await (0,a.mkdir)((0,n.join)(f,t),{recursive:!0});for(let[t,e]of Object.entries(K))await (0,a.writeFile)((0,n.join)(f,t),e,{flag:"wx"}).catch(()=>{});return(({workingDirectory:t,spill:e,toolPath:i})=>{let r=(0,n.resolve)(t),s=(i??[]).filter(Boolean).join(":"),o=t=>t.startsWith("/")||/^[A-Za-z]:/.test(t)?t:(0,n.resolve)(r,t);return{cwd:r,resolve:o,readFile:(t,e)=>(0,a.readFile)(o(t),e),async writeFile(t,e){let i=o(t);await (0,a.mkdir)((0,n.join)(i,".."),{recursive:!0}),await (0,a.writeFile)(i,e)},readdir:(t,e)=>(0,a.readdir)(o(t),e),fold:(t,i="output")=>w(t,i,r,e),async glob(t,{path:e=".",limit:i=200}={}){let a=o(e),r=RegExp("^"+t.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*\*\//g,"(?:.*/)?").replace(/\*/g,"[^/]*").replace(/\?/g,"[^/]")+"$"),s=[];for await(let t of d(a)){let e=(0,n.relative)(a,t).split(n.sep).join("/");if((r.test(e)||r.test(t))&&s.push(t),s.length>=i)break}return s},exec:(t,{cwd:i,timeoutMs:a=c.EXEC_TIMEOUT_MS,signal:n,env:u}={})=>new Promise(d=>{let p,f,h=function(){let t={...process.env};for(let e of Object.keys(t))/KEY|TOKEN|SECRET|PASSWORD|CREDENTIAL|_AUTH/i.test(e)&&delete t[e];return t.TERM="dumb",t.PAGER="cat",t.GIT_PAGER="cat",t}();s&&(h.PATH=`${h.PATH??""}:${s}`);let m=(0,l.spawn)(t,{shell:!0,cwd:i?o(i):r,env:{...h,...u},detached:!0}),S="",g="";m.stdout?.on("data",t=>S+=t),m.stderr?.on("data",t=>g+=t);let y=t=>{try{m.pid&&process.kill(-m.pid,t)}catch{m.kill(t)}},T=!1,A=async t=>{T||(T=!0,clearTimeout(P),clearTimeout(p),clearTimeout(f),n?.removeEventListener("abort",I),d({...t,stdout:await w(t.stdout,"stdout",r,e),stderr:await w(t.stderr,"stderr",r,e)}))},$=t=>{p||T||(g+=`
|
|
8
|
+
[${t}]`,y("SIGTERM"),p=setTimeout(()=>{g+="\n[Killed: it did not exit on SIGTERM]",y("SIGKILL"),f=setTimeout(()=>{m.stdout?.destroy(),m.stderr?.destroy(),A({stdout:S,stderr:g,exitCode:-1})},1e3)},c.EXEC_KILL_GRACE_MS))},P=setTimeout(()=>$(`Timed out after ${a}ms`),a),I=()=>$("Aborted");n?.aborted?I():n?.addEventListener("abort",I,{once:!0}),m.on("close",t=>A({stdout:S,stderr:g,exitCode:t??-1})),m.on("error",t=>A({stdout:S,stderr:g+String(t),exitCode:-1}))})}})({workingDirectory:f,spill:{dir:s.PATHS.output,...s.TOOL_OUTPUT},toolPath:h})}async function Y(t,e){let i=t.map(t=>(0,n.resolve)(f,t));if(e){let t=0;for await(let a of d((0,n.join)(f,e)))if(i.push(a),(t+=1)>=500)break}let r=new Map;for(let t of i){let e=await (0,a.stat)(t).catch(()=>null);if(!e?.isFile())continue;let i=(0,n.relative)(f,t);r.set(i&&!i.startsWith("..")?i:t,e.mtimeMs)}return[...r].sort((t,e)=>t[1]-e[1]).map(([t])=>t)}async function J(t,e){await (0,a.rm)((0,n.join)(f,$(t,e)),{recursive:!0,force:!0}).catch(()=>{})}t.s(["WORKSPACE",0,f,"botArtifacts",0,I,"botBrowserSession",0,(t,i)=>`${t}-bot-${(0,e.createHash)("sha256").update(i.trim().toLowerCase()).digest("hex").slice(0,20)}`,"botFolder",0,P,"botShellEnv",0,t=>({THURSDAY_ARTIFACTS:I(t),THURSDAY_SKILLS:(0,n.join)(s.APP_DIR,s.PATHS.skills.default)}),"closeHiddenBrowser",0,O,"closeJobShell",0,W,"ensureBrowser",0,R,"filesOnDisk",0,Y,"insideWorkspace",0,A,"jobScratch",0,$,"jobShellEnv",0,b,"listScratchFolders",0,N,"openBotFolders",0,_,"openJobScratch",0,j,"openWorkspace",0,U,"pruneJobFiles",0,H,"readMachineTools",0,v,"removeJobBrowsers",0,C,"removeJobScratch",0,J,"removeUnchangedFolders",0,G,"writeRefusal",0,function(t,e){if(y(f,t)){let a=(0,n.relative)(f,t),[r,o]=a.split(n.sep);return r&&g.has(r)?e&&r===s.PATHS.artifacts&&o&&o.toLowerCase()!==e.replace(/[^\p{L}\p{N}_-]+/gu,"-").toLowerCase()&&!(0,i.existsSync)((0,n.join)(m,o))?`Not written: ${a} would sit loose at the top of ${s.PATHS.artifacts}/. Your finished work goes in ${I(e)}/.`:null:`Not written: ${a||"the workspace root"} is outside the workspace's folders. Finished work goes under ${e?I(e):s.PATHS.artifacts}/, code under ${s.PATHS.projects}/, your own kit under ${s.PATHS.bots}/, and this job's working material under ${s.PATHS.scratch}/.`}return y(p,t)?`Not written: ${t} is inside the app that is running you, not the user's files. Work in ${f}; outside it, write only where the user pointed you.`:null}],871096)}];
|
|
7
9
|
|
|
8
10
|
//# sourceMappingURL=features_0rfvely._.js.map
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
module.exports=[522734,(a,b,c)=>{b.exports=a.x("fs",()=>require("fs"))},750227,(a,b,c)=>{b.exports=a.x("node:path",()=>require("node:path"))},59639,(a,b,c)=>{b.exports=a.x("node:process",()=>require("node:process"))},509656,(a,b,c)=>{b.exports=a.x("node:tty",()=>require("node:tty"))},812057,(a,b,c)=>{b.exports=a.x("node:util",()=>require("node:util"))},446786,(a,b,c)=>{b.exports=a.x("os",()=>require("os"))},814747,(a,b,c)=>{b.exports=a.x("path",()=>require("path"))},341889,a=>{"use strict";var b=a.i(187924),c=a.i(572131),d=a.i(767561),e=a.i(497895);a.s(["SiteIcon",0,function({host:a,className:f="size-3.5 rounded-full",fallback:g}){let[h,i]=(0,c.useState)(!1);return h?g??(0,b.jsx)("span",{"aria-hidden":!0,className:(0,e.cn)("grid shrink-0 place-items-center bg-foreground/10 text-[8.5px] font-medium text-foreground/70 uppercase",f),children:a[0]}):(0,b.jsx)("img",{src:d.queryKey.favicon(a),alt:"",onError:()=>i(!0),className:(0,e.cn)("shrink-0",f)})},"hostOf",0,function(a){try{return new URL(a).hostname.replace(/^www\./,"")}catch{return null}}])},438243,a=>{"use strict";var b=a.i(405050);let c=(0,b.createServerReference)("7f1f25bd84bfa9df4c5bd901ee0c1e7d11924c7940",b.callServer,void 0,b.findSourceMapURL,"setSignInBotAction");a.s(["setSignInBotAction",0,c])},579587,801548,a=>{"use strict";let b="data-composite-item-active";a.s(["ACTIVE_COMPOSITE_ITEM",0,b],579587);var c=a.i(572131),d=a.i(524715),e=a.i(579923),f=a.i(854401),g=a.i(801811),h=a.i(357738),i=a.i(669649),j=a.i(796e3),k=a.i(30116),l=a.i(559539),m=a.i(926184),n=a.i(162903),o=a.i(187924);a.s(["CompositeRoot",0,function(a){let{render:p,className:q,style:r,refs:s=d.EMPTY_ARRAY,props:t=d.EMPTY_ARRAY,state:u=d.EMPTY_OBJECT,stateAttributesMapping:v,highlightedIndex:w,onHighlightedIndexChange:x,orientation:y,grid:z,loopFocus:A,onLoop:B,enableHomeAndEndKeys:C,onMapChange:D,stopEventPropagation:E=!0,rootRef:F,disabledIndices:G,modifierKeys:H,highlightItemOnHover:I=!1,tag:J="div",...K}=a,{props:L,highlightedIndex:M,onHighlightedIndexChange:N,elementsRef:O,onMapChange:P,relayKeyboardEvent:Q}=function(a){let{loopFocus:e=!0,orientation:l="both",grid:m,onLoop:n,direction:o,highlightedIndex:p,onHighlightedIndexChange:q,rootRef:r,enableHomeAndEndKeys:s=!1,stopEventPropagation:t,disabledIndices:u,modifierKeys:v=d.EMPTY_ARRAY}=a,[w,x]=c.useState(0),y=null!=m,z=c.useRef(null),A=(0,g.useMergedRefs)(z,r),B=c.useRef([]),C=c.useRef(!1),D=c.useRef(null),E=p??w,F=(0,f.useStableCallback)((a,b=!1)=>{if(D.current=B.current[a]??null,(q??x)(a),b){let b=B.current[a];(0,i.scrollIntoViewIfNeeded)(z.current,b,o,l)}}),G=(0,f.useStableCallback)(a=>{if(0===a.size)return;if(C.current){let a=B.current,c=a.indexOf(D.current);if(-1===c){let c=a[E];!c||(0,j.isListIndexDisabled)(a,E,u)?F(function(a,c){let d=-1;for(let e=0;e<a.length;e+=1){let f=a[e];if(!(!f||(0,j.isListIndexDisabled)(a,e,c))){if(f.hasAttribute(b))return e;-1===d&&(d=e)}}return Math.max(d,0)}(a,u)):D.current=c}else c!==E&&F(c);return}C.current=!0;let c=Array.from(a.keys()),d=c.find(a=>a?.hasAttribute(b))??null,e=d?a.get(d)?.index??-1:-1;if(-1!==e)F(e);else if((0,j.isListIndexDisabled)(c,E,u)){let a=(0,j.findNonDisabledListIndex)(c,{disabledIndices:u});(0,j.isIndexOutOfListBounds)(c,a)||F(a)}(0,i.scrollIntoViewIfNeeded)(z.current,d,o,l)});(0,h.useIsoLayoutEffect)(()=>{if(null==u||null!=p||!C.current)return;let a=B.current;if((0,j.isListIndexDisabled)(a,E,u)){let b=(0,j.findNonDisabledListIndex)(a,{disabledIndices:u});(0,j.isIndexOutOfListBounds)(a,b)||F(b)}},[u,p,E,B,F]);let H=(0,f.useStableCallback)((a,b,c)=>n?n(a,b,c,B):c),I=(0,f.useStableCallback)(a=>{let b=a.key===i.HOME||a.key===i.END;if(!i.COMPOSITE_KEYS.has(a.key)||!s&&b||function(a,b){for(let c of i.MODIFIER_KEYS)if(!b.includes(c)&&a.getModifierState(c))return!0;return!1}(a,v)||!z.current)return;let c="rtl"===o,d=c?i.ARROW_LEFT:i.ARROW_RIGHT,f=c?i.ARROW_RIGHT:i.ARROW_LEFT,g="vertical"===l?i.ARROW_DOWN:d,h="vertical"===l?i.ARROW_UP:f,p=(0,k.getTarget)(a.nativeEvent);if(null!=p&&(0,i.isNativeInput)(p)&&!(null==p||p.hasAttribute("disabled")||"true"===p.getAttribute("aria-disabled"))){let b=p.selectionStart,c=p.selectionEnd,d=p.value;if(null==b||a.shiftKey||b!==c||a.key!==h&&b<d.length||a.key!==g&&b>0)return}let q=E,r=(0,j.getMinListIndex)(B,u),w=(0,j.getMaxListIndex)(B,u);null!=m&&(q=m({disabledIndices:u,elementsRef:B,event:a,highlightedIndex:E,loopFocus:e,maxIndex:w,minIndex:r,onLoop:H,orientation:l,rtl:c}));let x="vertical"!==l&&a.key===d||"horizontal"!==l&&a.key===i.ARROW_DOWN,A="vertical"!==l&&a.key===f||"horizontal"!==l&&a.key===i.ARROW_UP;s&&(a.key===i.HOME?q=r:a.key===i.END&&(q=w)),q===E&&(x||A)&&(e&&q===w&&x?(q=r,n&&(q=n(a,E,q,B))):e&&q===r&&A?(q=w,n&&(q=n(a,E,q,B))):q=(0,j.findNonDisabledListIndex)(B.current,{startingIndex:q,decrement:A,disabledIndices:u})),q===E||(0,j.isIndexOutOfListBounds)(B.current,q)||(t&&a.stopPropagation(),(y||b||x||A)&&a.preventDefault(),F(q,!0),queueMicrotask(()=>{B.current[q]?.focus()}))});return{props:{ref:A,onFocus(a){let b=z.current,c=(0,k.getTarget)(a.nativeEvent);b&&null!=c&&(0,i.isNativeInput)(c)&&c.setSelectionRange(0,c.value.length)},onKeyDown:I},highlightedIndex:E,onHighlightedIndexChange:F,elementsRef:B,onMapChange:G,relayKeyboardEvent:I}}({grid:z,loopFocus:A,onLoop:B,orientation:y,highlightedIndex:w,onHighlightedIndexChange:x,rootRef:F,stopEventPropagation:E,enableHomeAndEndKeys:C,direction:(0,n.useDirection)(),disabledIndices:G,modifierKeys:H}),R=(0,m.useRenderElement)(J,a,{state:u,ref:s,props:[L,...t,K],stateAttributesMapping:v}),S=c.useMemo(()=>({highlightedIndex:M,onHighlightedIndexChange:N,highlightItemOnHover:I,relayKeyboardEvent:Q}),[M,N,I,Q]);return(0,o.jsx)(l.CompositeRootContext.Provider,{value:S,children:(0,o.jsx)(e.CompositeList,{elementsRef:O,onMapChange:a=>{D?.(a),P(a)},children:R})})}],801548)},118816,a=>{"use strict";var b=a.i(572131),c=a.i(926184);let d=b.forwardRef(function(a,b){let{className:d,render:e,orientation:f="horizontal",style:g,...h}=a;return(0,c.useRenderElement)("div",a,{state:{orientation:f},ref:b,props:[{role:"separator","aria-orientation":f},h]})});a.s(["Separator",0,d])},144501,a=>{"use strict";var b=a.i(20265),c=a.i(426476);a.s(["getCssDimensions",0,function(a){let d=(0,c.getComputedStyle)(a),e=parseFloat(d.width)||0,f=parseFloat(d.height)||0,g=(0,c.isHTMLElement)(a),h=g?a.offsetWidth:e,i=g?a.offsetHeight:f;return((0,b.round)(e)!==h||(0,b.round)(f)!==i)&&(e=h,f=i),{width:e,height:f}}])},57753,(a,b,c)=>{"use strict";var d=Object.create,e=Object.defineProperty,f=Object.getOwnPropertyDescriptor,g=Object.getOwnPropertyNames,h=Object.getPrototypeOf,i=Object.prototype.hasOwnProperty,j=(a,b,c,d)=>{if(b&&"object"==typeof b||"function"==typeof b)for(let h of g(b))i.call(a,h)||h===c||e(a,h,{get:()=>b[h],enumerable:!(d=f(b,h))||d.enumerable});return a},k=(a,b,c)=>(c=null!=a?d(h(a)):{},j(!b&&a&&a.__esModule?c:e(c,"default",{value:a,enumerable:!0}),a)),l={},m={isValidAccessToken:()=>u,readAuthConfig:()=>s,writeAuthConfig:()=>t};for(var n in m)e(l,n,{get:m[n],enumerable:!0});b.exports=j(e({},"__esModule",{value:!0}),l);var o=k(a.r(522734)),p=k(a.r(814747)),q=a.r(809750);function r(){let a=(0,q.getVercelDataDir)();if(!a)throw Error(`Unable to find Vercel CLI data directory. Your platform: ${process.platform}. Supported: darwin, linux, win32.`);return p.join(a,"auth.json")}function s(){try{let a=r();if(!o.existsSync(a))return null;let b=o.readFileSync(a,"utf8");if(!b)return null;return JSON.parse(b)}catch(a){return null}}function t(a){let b=r(),c=p.dirname(b);o.existsSync(c)||o.mkdirSync(c,{mode:504,recursive:!0}),o.writeFileSync(b,JSON.stringify(a,null,2),{mode:384})}function u(a,b=0){if(!a.token)return!1;if("number"!=typeof a.expiresAt)return!0;let c=Math.floor(Date.now()/1e3);return a.expiresAt>=c+b/1e3}},69845,(a,b,c)=>{"use strict";var d=Object.defineProperty,e=Object.getOwnPropertyDescriptor,f=Object.getOwnPropertyNames,g=Object.prototype.hasOwnProperty,h={},i={AccessTokenMissingError:()=>k,RefreshAccessTokenFailedError:()=>l};for(var j in i)d(h,j,{get:i[j],enumerable:!0});b.exports=((a,b,c)=>{if(b&&"object"==typeof b||"function"==typeof b)for(let h of f(b))g.call(a,h)||void 0===h||d(a,h,{get:()=>b[h],enumerable:!(c=e(b,h))||c.enumerable});return a})(d({},"__esModule",{value:!0}),h);class k extends Error{constructor(){super("No authentication found. Please log in with the Vercel CLI (vercel login)."),this.name="AccessTokenMissingError"}}class l extends Error{constructor(a){super("Failed to refresh authentication token.",{cause:a}),this.name="RefreshAccessTokenFailedError"}}},301479,(a,b,c)=>{"use strict";var d=Object.defineProperty,e=Object.getOwnPropertyDescriptor,f=Object.getOwnPropertyNames,g=Object.prototype.hasOwnProperty,h={},i={processTokenResponse:()=>p,refreshTokenRequest:()=>o};for(var j in i)d(h,j,{get:i[j],enumerable:!0});b.exports=((a,b,c)=>{if(b&&"object"==typeof b||"function"==typeof b)for(let h of f(b))g.call(a,h)||void 0===h||d(a,h,{get:()=>b[h],enumerable:!(c=e(b,h))||c.enumerable});return a})(d({},"__esModule",{value:!0}),h);var k=a.r(446786);let l=`@vercel/oidc node-${process.version} ${(0,k.platform)()} (${(0,k.arch)()}) ${(0,k.hostname)()}`,m=null;async function n(){if(m)return m;let a=await fetch("https://vercel.com/.well-known/openid-configuration",{headers:{"user-agent":l}});if(!a.ok)throw Error("Failed to discover OAuth endpoints");let b=await a.json();if(!b||"string"!=typeof b.token_endpoint)throw Error("Invalid OAuth discovery response");let c=b.token_endpoint;return m=c,c}async function o(a){let b=await n();return await fetch(b,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded","user-agent":l},body:new URLSearchParams({client_id:"cl_HYyOPBNtFMfHhaUn9L4QPfTZz6TP47bp",grant_type:"refresh_token",...a})})}async function p(a){let b=await a.json();return a.ok?"object"!=typeof b||null===b?[Error("Invalid token response")]:"string"!=typeof b.access_token?[Error("Missing access_token in response")]:"Bearer"!==b.token_type?[Error("Invalid token_type in response")]:"number"!=typeof b.expires_in?[Error("Missing expires_in in response")]:[null,b]:[Error("object"==typeof b&&b&&"error"in b?String(b.error):"Token refresh failed")]}},325279,(a,b,c)=>{"use strict";var d=Object.defineProperty,e=Object.getOwnPropertyDescriptor,f=Object.getOwnPropertyNames,g=Object.prototype.hasOwnProperty,h={},i={VercelOidcTokenError:()=>k};for(var j in i)d(h,j,{get:i[j],enumerable:!0});b.exports=((a,b,c)=>{if(b&&"object"==typeof b||"function"==typeof b)for(let h of f(b))g.call(a,h)||void 0===h||d(a,h,{get:()=>b[h],enumerable:!(c=e(b,h))||c.enumerable});return a})(d({},"__esModule",{value:!0}),h);class k extends Error{constructor(a,b){super(a),this.name="VercelOidcTokenError",this.cause=b}toString(){return this.cause?`${this.name}: ${this.message}: ${this.cause}`:`${this.name}: ${this.message}`}}},314225,(a,b,c)=>{"use strict";var d=Object.create,e=Object.defineProperty,f=Object.getOwnPropertyDescriptor,g=Object.getOwnPropertyNames,h=Object.getPrototypeOf,i=Object.prototype.hasOwnProperty,j=(a,b,c,d)=>{if(b&&"object"==typeof b||"function"==typeof b)for(let h of g(b))i.call(a,h)||h===c||e(a,h,{get:()=>b[h],enumerable:!(d=f(b,h))||d.enumerable});return a},k=(a,b,c)=>(c=null!=a?d(h(a)):{},j(!b&&a&&a.__esModule?c:e(c,"default",{value:a,enumerable:!0}),a)),l={},m={findRootDir:()=>s,getUserDataDir:()=>t};for(var n in m)e(l,n,{get:m[n],enumerable:!0});b.exports=j(e({},"__esModule",{value:!0}),l);var o=k(a.r(814747)),p=k(a.r(522734)),q=k(a.r(446786)),r=a.r(325279);function s(){try{let a=process.cwd();for(;a!==o.default.dirname(a);){let b=o.default.join(a,".vercel");if(p.default.existsSync(b))return a;a=o.default.dirname(a)}}catch(a){throw new r.VercelOidcTokenError("Token refresh only supported in node server environments")}return null}function t(){if(process.env.XDG_DATA_HOME)return process.env.XDG_DATA_HOME;switch(q.default.platform()){case"darwin":return o.default.join(q.default.homedir(),"Library/Application Support");case"linux":return o.default.join(q.default.homedir(),".local/share");case"win32":if(process.env.LOCALAPPDATA)return process.env.LOCALAPPDATA;return null;default:return null}}},809750,(a,b,c)=>{"use strict";var d=Object.create,e=Object.defineProperty,f=Object.getOwnPropertyDescriptor,g=Object.getOwnPropertyNames,h=Object.getPrototypeOf,i=Object.prototype.hasOwnProperty,j=(a,b,c,d)=>{if(b&&"object"==typeof b||"function"==typeof b)for(let h of g(b))i.call(a,h)||h===c||e(a,h,{get:()=>b[h],enumerable:!(d=f(b,h))||d.enumerable});return a},k=(a,b,c)=>(c=null!=a?d(h(a)):{},j(!b&&a&&a.__esModule?c:e(c,"default",{value:a,enumerable:!0}),a)),l={},m={assertVercelOidcTokenResponse:()=>y,findProjectInfo:()=>z,getTokenPayload:()=>C,getVercelDataDir:()=>v,getVercelOidcToken:()=>x,getVercelToken:()=>w,isExpired:()=>D,loadToken:()=>B,saveToken:()=>A};for(var n in m)e(l,n,{get:m[n],enumerable:!0});b.exports=j(e({},"__esModule",{value:!0}),l);var o=k(a.r(814747)),p=k(a.r(522734)),q=a.r(325279),r=a.r(314225),s=a.r(57753),t=a.r(301479),u=a.r(69845);function v(){let a=(0,r.getUserDataDir)();return a?o.join(a,"com.vercel.cli"):null}async function w(a){let b=(0,s.readAuthConfig)();if(!b?.token)throw new u.AccessTokenMissingError;if((0,s.isValidAccessToken)(b,a?.expirationBufferMs))return b.token;if(!b.refreshToken)throw(0,s.writeAuthConfig)({}),new u.RefreshAccessTokenFailedError("No refresh token available");try{let a=await (0,t.refreshTokenRequest)({refresh_token:b.refreshToken}),[c,d]=await (0,t.processTokenResponse)(a);if(c||!d)throw(0,s.writeAuthConfig)({}),new u.RefreshAccessTokenFailedError(c);let e={token:d.access_token,expiresAt:Math.floor(Date.now()/1e3)+d.expires_in};return d.refresh_token&&(e.refreshToken=d.refresh_token),(0,s.writeAuthConfig)(e),e.token}catch(a){if((0,s.writeAuthConfig)({}),a instanceof u.AccessTokenMissingError||a instanceof u.RefreshAccessTokenFailedError)throw a;throw new u.RefreshAccessTokenFailedError(a)}}async function x(a,b,c){let d=`https://api.vercel.com/v1/projects/${b}/token?source=vercel-oidc-refresh${c?`&teamId=${c}`:""}`,e=await fetch(d,{method:"POST",headers:{Authorization:`Bearer ${a}`}});if(!e.ok)throw new q.VercelOidcTokenError(`Failed to refresh OIDC token: ${e.statusText}`);let f=await e.json();return y(f),f}function y(a){if(!a||"object"!=typeof a)throw TypeError("Vercel OIDC token is malformed. Expected an object. Please run `vc env pull` and try again");if(!("token"in a)||"string"!=typeof a.token)throw TypeError("Vercel OIDC token is malformed. Expected a string-valued token property. Please run `vc env pull` and try again")}function z(){let a=(0,r.findRootDir)();if(!a)throw new q.VercelOidcTokenError("Unable to find project root directory. Have you linked your project with `vc link?`");let b=o.join(a,".vercel","project.json");if(!p.existsSync(b))throw new q.VercelOidcTokenError("project.json not found, have you linked your project with `vc link?`");let c=JSON.parse(p.readFileSync(b,"utf8"));if("string"!=typeof c.projectId&&"string"!=typeof c.orgId)throw TypeError("Expected a string-valued projectId property. Try running `vc link` to re-link your project.");return{projectId:c.projectId,teamId:c.orgId}}function A(a,b){let c=(0,r.getUserDataDir)();if(!c)throw new q.VercelOidcTokenError("Unable to find user data directory. Please reach out to Vercel support.");let d=o.join(c,"com.vercel.token",`${b}.json`),e=JSON.stringify(a);p.mkdirSync(o.dirname(d),{mode:504,recursive:!0}),p.writeFileSync(d,e),p.chmodSync(d,432)}function B(a){let b=(0,r.getUserDataDir)();if(!b)throw new q.VercelOidcTokenError("Unable to find user data directory. Please reach out to Vercel support.");let c=o.join(b,"com.vercel.token",`${a}.json`);if(!p.existsSync(c))return null;let d=JSON.parse(p.readFileSync(c,"utf8"));return y(d),d}function C(a){let b=a.split(".");if(3!==b.length)throw new q.VercelOidcTokenError("Invalid token. Please run `vc env pull` and try again");let c=b[1].replace(/-/g,"+").replace(/_/g,"/"),d=c.padEnd(c.length+(4-c.length%4)%4,"=");return JSON.parse(Buffer.from(d,"base64").toString("utf8"))}function D(a,b=0){return 1e3*a.exp<Date.now()+b}},830988,a=>{"use strict";var b=a.i(244513),c=a.i(852587),d=a.i(23464),e=a.i(57270),f=a.i(774016),g=a.i(959296);a.s(["formatDistanceStrict",0,function(a,h,i){var j;let k,l,m=(0,c.getDefaultOptions)(),n=i?.locale??m.locale??b.defaultLocale,o=(l=(0,f.toDate)(a)-(0,f.toDate)(h))<0?-1:l>0?1:l;if(isNaN(o))throw RangeError("Invalid time value");let p=Object.assign({},i,{addSuffix:i?.addSuffix,comparison:o}),[q,r]=(0,e.normalizeDates)(i?.in,...o>0?[h,a]:[a,h]),s=(j=i?.roundingMethod??"round",a=>{let b=(j?Math[j]:Math.trunc)(a);return 0===b?0:b}),t=r.getTime()-q.getTime(),u=t/g.millisecondsInMinute,v=(t-((0,d.getTimezoneOffsetInMilliseconds)(r)-(0,d.getTimezoneOffsetInMilliseconds)(q)))/g.millisecondsInMinute,w=i?.unit;if("second"===(k=w||(u<1?"second":u<60?"minute":u<g.minutesInDay?"hour":v<g.minutesInMonth?"day":v<g.minutesInYear?"month":"year"))){let a=s(t/1e3);return n.formatDistance("xSeconds",a,p)}if("minute"===k){let a=s(u);return n.formatDistance("xMinutes",a,p)}if("hour"===k){let a=s(u/60);return n.formatDistance("xHours",a,p)}if("day"===k){let a=s(v/g.minutesInDay);return n.formatDistance("xDays",a,p)}if("month"===k){let a=s(v/g.minutesInMonth);return 12===a&&"month"!==w?n.formatDistance("xYears",1,p):n.formatDistance("xMonths",a,p)}else{let a=s(v/g.minutesInYear);return n.formatDistance("xYears",a,p)}}],830988)},987234,a=>{"use strict";var b=a.i(934754),c=a.i(830988);a.s(["formatDistanceToNowStrict",0,function(a,d){return(0,c.formatDistanceStrict)(a,(0,b.constructNow)(a),d)}])},823319,a=>{"use strict";var b=a.i(164831);let c={name:"arrow-up-right",size:24,node:[["path",{d:"M7 7h10v10",key:"1tivn9"}],["path",{d:"M7 17 17 7",key:"1vkiza"}]]};c.node;let d=(0,b.default)(c);a.s(["ArrowUpRight",0,d],823319)},327598,a=>{"use strict";var b=a.i(164831);let c={name:"arrow-up",size:24,node:[["path",{d:"m5 12 7-7 7 7",key:"hav0vg"}],["path",{d:"M12 19V5",key:"x0mq9r"}]]};c.node;let d=(0,b.default)(c);a.s(["ArrowUp",0,d],327598)},444080,a=>{"use strict";var b=a.i(164831);let c={name:"book-bookmark",size:24,node:[["path",{d:"M10 2v7.751a.25.25 0 00.407.195l2.28-1.834a.5.5 0 01.627 0l2.28 1.834A.25.25 0 0016 9.751V2",key:"x9x4jl"}],["path",{d:"M4 19.5v-15A2.5 2.5 0 016.5 2H19a1 1 0 011 1v18a1 1 0 01-1 1H6.5a1 1 0 010-5H20",key:"1889un"}]],aliases:["book-marked"]};c.node;let d=(0,b.default)(c);a.s(["BookMarked",0,d],444080)},585650,a=>{"use strict";var b=a.i(164831);let c={name:"copy",size:24,node:[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]};c.node;let d=(0,b.default)(c);a.s(["Copy",0,d],585650)},607396,a=>{"use strict";var b=a.i(164831);let c={name:"ellipsis",size:24,node:[["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}],["circle",{cx:"19",cy:"12",r:"1",key:"1wjl8i"}],["circle",{cx:"5",cy:"12",r:"1",key:"1pcz8c"}]],aliases:["more-horizontal"]};c.node;let d=(0,b.default)(c);a.s(["default",0,d])},696732,a=>{"use strict";var b=a.i(164831);let c={name:"globe",size:24,node:[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",key:"13o1zl"}],["path",{d:"M2 12h20",key:"9i4pu4"}]]};c.node;let d=(0,b.default)(c);a.s(["Globe",0,d],696732)},71215,a=>{"use strict";var b=a.i(164831);let c={name:"image",size:24,node:[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}],["circle",{cx:"9",cy:"9",r:"2",key:"af1f0g"}],["path",{d:"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21",key:"1xmnt7"}]]};c.node;let d=(0,b.default)(c);a.s(["Image",0,d],71215)},474896,a=>{"use strict";var b=a.i(164831);let c={name:"log-in",size:24,node:[["path",{d:"m10 17 5-5-5-5",key:"1bsop3"}],["path",{d:"M15 12H3",key:"6jk70r"}],["path",{d:"M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4",key:"u53s6r"}]]};c.node;let d=(0,b.default)(c);a.s(["LogIn",0,d],474896)},26268,a=>{"use strict";var b=a.i(623577);a.s(["TriangleAlert",()=>b.default])},869789,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={actionAsyncStorage:function(){return f.actionAsyncStorage},workAsyncStorage:function(){return g.workAsyncStorage},workUnitAsyncStorage:function(){return h.workUnitAsyncStorage}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f=a.r(120635),g=a.r(556704),h=a.r(832319);("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)}];
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=%5Broot-of-the-server%5D__0a967km._.js.map
|