thursday-agent 0.26.0 → 0.27.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/build-manifest.json +5 -5
- package/.next/prerender-manifest.json +3 -3
- package/.next/required-server-files.json +5 -5
- package/.next/server/app/_global-error/page/build-manifest.json +2 -2
- 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/build-manifest.json +2 -2
- 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 +10 -10
- package/.next/server/app/api/artifact/route.js.nft.json +1 -1
- package/.next/server/app/api/bot/memory/files/route.js +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 +8 -8
- package/.next/server/app/api/bot/memory/route.js.nft.json +1 -1
- package/.next/server/app/api/bot/route.js +8 -8
- package/.next/server/app/api/bot/route.js.nft.json +1 -1
- package/.next/server/app/api/bot/thread/file/route.js +15 -15
- package/.next/server/app/api/bot/thread/file/route.js.nft.json +1 -1
- package/.next/server/app/api/bot/thread/route.js +5 -5
- package/.next/server/app/api/bot/thread/route.js.nft.json +1 -1
- package/.next/server/app/api/bot/tool-result/[id]/route.js +6 -6
- package/.next/server/app/api/bot/tool-result/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/config/route.js +3 -3
- package/.next/server/app/api/config/route.js.nft.json +1 -1
- package/.next/server/app/api/events/route.js +1 -1
- package/.next/server/app/api/events/route.js.nft.json +1 -1
- package/.next/server/app/api/favicon/[host]/route.js +4 -4
- package/.next/server/app/api/favicon/[host]/route.js.nft.json +1 -1
- package/.next/server/app/api/file/[...path]/route.js +4 -4
- package/.next/server/app/api/file/[...path]/route.js.nft.json +1 -1
- package/.next/server/app/api/llm-model/automatic/route.js +5 -5
- package/.next/server/app/api/llm-model/automatic/route.js.nft.json +1 -1
- package/.next/server/app/api/llm-model/catalog/[provider]/route.js +5 -5
- package/.next/server/app/api/llm-model/catalog/[provider]/route.js.nft.json +1 -1
- package/.next/server/app/api/llm-model/credits/[provider]/route.js +5 -5
- package/.next/server/app/api/llm-model/credits/[provider]/route.js.nft.json +1 -1
- package/.next/server/app/api/llm-model/route.js +6 -6
- package/.next/server/app/api/llm-model/route.js.nft.json +1 -1
- package/.next/server/app/api/llm-model/subscription/route.js +6 -6
- package/.next/server/app/api/llm-model/subscription/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/[name]/route.js +5 -5
- package/.next/server/app/api/mcp/[name]/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/oauth/callback/route.js +6 -6
- package/.next/server/app/api/mcp/oauth/callback/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/route.js +5 -5
- package/.next/server/app/api/mcp/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/tools/route.js +5 -5
- package/.next/server/app/api/mcp/tools/route.js.nft.json +1 -1
- package/.next/server/app/api/memory/edit/route.js +15 -15
- package/.next/server/app/api/memory/edit/route.js.nft.json +1 -1
- package/.next/server/app/api/memory/route.js +4 -4
- package/.next/server/app/api/memory/route.js.nft.json +1 -1
- package/.next/server/app/api/reach/route.js +18 -18
- package/.next/server/app/api/reach/route.js.nft.json +1 -1
- package/.next/server/app/api/routine/route.js +8 -8
- package/.next/server/app/api/routine/route.js.nft.json +1 -1
- package/.next/server/app/api/running/route.js +2 -2
- package/.next/server/app/api/running/route.js.nft.json +1 -1
- package/.next/server/app/api/signins/route.js +3 -3
- package/.next/server/app/api/signins/route.js.nft.json +1 -1
- package/.next/server/app/api/skills/[source]/[name]/route.js +6 -6
- package/.next/server/app/api/skills/[source]/[name]/route.js.nft.json +1 -1
- package/.next/server/app/api/skills/route.js +6 -6
- package/.next/server/app/api/skills/route.js.nft.json +1 -1
- package/.next/server/app/api/thursday/call/end/route.js +5 -5
- package/.next/server/app/api/thursday/call/end/route.js.nft.json +1 -1
- package/.next/server/app/api/thursday/call/plan/route.js +14 -14
- package/.next/server/app/api/thursday/call/plan/route.js.nft.json +1 -1
- package/.next/server/app/api/thursday/call/route.js +6 -6
- package/.next/server/app/api/thursday/call/route.js.nft.json +1 -1
- package/.next/server/app/api/thursday/settings/route.js +5 -5
- package/.next/server/app/api/thursday/settings/route.js.nft.json +1 -1
- package/.next/server/app/api/thursday/text/route.js +14 -14
- package/.next/server/app/api/thursday/text/route.js.nft.json +1 -1
- package/.next/server/app/api/thursday/tool-call/route.js +15 -15
- package/.next/server/app/api/thursday/tool-call/route.js.nft.json +1 -1
- package/.next/server/app/api/update/route.js +7 -7
- package/.next/server/app/api/update/route.js.nft.json +1 -1
- package/.next/server/app/api/workspace/files/route.js +6 -6
- package/.next/server/app/api/workspace/files/route.js.nft.json +1 -1
- package/.next/server/app/api/workspace/route.js +6 -6
- package/.next/server/app/api/workspace/route.js.nft.json +1 -1
- package/.next/server/app/artifact/[...path]/page/build-manifest.json +2 -2
- package/.next/server/app/artifact/[...path]/page/server-reference-manifest.json +11 -11
- 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 +2 -2
- package/.next/server/app/favicon.ico/route.js.nft.json +1 -1
- package/.next/server/app/manifest.webmanifest/route.js +2 -2
- package/.next/server/app/manifest.webmanifest/route.js.nft.json +1 -1
- package/.next/server/app/page/build-manifest.json +2 -2
- package/.next/server/app/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/page/server-reference-manifest.json +184 -184
- package/.next/server/app/page.js +10 -10
- package/.next/server/app/page.js.nft.json +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__01jpmcj._.js +2 -2
- package/.next/server/chunks/[root-of-the-server]__03bjojd._.js +3 -3
- package/.next/server/chunks/{[root-of-the-server]__0wosonh._.js → [root-of-the-server]__05u-9a3._.js} +1 -1
- package/.next/server/chunks/{[root-of-the-server]__1dyse-1._.js → [root-of-the-server]__0_qe8iq._.js} +1 -1
- package/.next/server/chunks/[root-of-the-server]__0d-dfqm._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__0jqidnu._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__0mmynvy._.js +2 -2
- package/.next/server/chunks/[root-of-the-server]__0ncs9uu._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__0qhf60h._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0sea36s._.js +4 -4
- package/.next/server/chunks/[root-of-the-server]__0zezbds._.js +2 -2
- package/.next/server/chunks/[root-of-the-server]__12hkdpz._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__13hng6h._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__14inehv._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__17kdjf6._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__17yv6lg._.js +2 -2
- package/.next/server/chunks/[root-of-the-server]__1_04mcf._.js +2 -2
- package/.next/server/chunks/{[root-of-the-server]__0b3_rzi._.js → [root-of-the-server]__1hjb8wf._.js} +1 -1
- package/.next/server/chunks/[root-of-the-server]__1jcu_e9._.js +2 -2
- package/.next/server/chunks/[root-of-the-server]__1jmr2ed._.js +3 -3
- package/.next/server/chunks/[root-of-the-server]__1ndi14y._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__1o7z93z._.js +2 -2
- package/.next/server/chunks/[root-of-the-server]__1onvx8x._.js +2 -2
- package/.next/server/chunks/_0-mqt2w._.js +1 -1
- package/.next/server/chunks/_04s1gb9._.js +30 -27
- package/.next/server/chunks/_06u9yo-._.js +1 -1
- package/.next/server/chunks/_08354bn._.js +33 -30
- package/.next/server/chunks/_083t_nr._.js +1 -1
- package/.next/server/chunks/_0c-s0ei._.js +1 -1
- package/.next/server/chunks/_0gifi_2._.js +2 -2
- package/.next/server/chunks/_0m3sdq8._.js +1 -1
- package/.next/server/chunks/_0pljp-1._.js +1 -1
- package/.next/server/chunks/_0wjia9n._.js +1 -1
- package/.next/server/chunks/_0wyh244._.js +33 -30
- package/.next/server/chunks/_0x2mdif._.js +1 -1
- package/.next/server/chunks/_1-sk_q4._.js +1 -1
- package/.next/server/chunks/_12a_gfz._.js +1 -1
- package/.next/server/chunks/_14-kmob._.js +1 -1
- package/.next/server/chunks/_16zct7w._.js +30 -27
- package/.next/server/chunks/_1823_7a._.js +4 -4
- package/.next/server/chunks/_1f_x75d._.js +1 -1
- package/.next/server/chunks/_1o2r4ja._.js +1 -1
- package/.next/server/chunks/_1q42187._.js +3 -3
- package/.next/server/chunks/_1ufbxe1._.js +1 -1
- package/.next/server/chunks/config_ts_1g4sz5o._.js +1 -1
- package/.next/server/chunks/features_14kex_m._.js +11 -11
- package/.next/server/chunks/features_bot_08z387_._.js +4 -4
- package/.next/server/chunks/features_memory_0__61kl._.js +1 -1
- package/.next/server/chunks/features_memory_1uqvksn._.js +1 -1
- package/.next/server/chunks/features_workspace_workspace_ts_13h82gv._.js +1 -1
- package/.next/server/chunks/features_workspace_workspace_ts_1iyjroj._.js +3 -3
- package/.next/server/chunks/ssr/{[root-of-the-server]__0x297x3._.js → [root-of-the-server]__03_9u5q._.js} +2 -2
- package/.next/server/chunks/ssr/{[root-of-the-server]__0653diy._.js → [root-of-the-server]__04ky8w1._.js} +2 -2
- package/.next/server/chunks/ssr/{[root-of-the-server]__1zlzs9j._.js → [root-of-the-server]__0crm8gr._.js} +2 -2
- package/.next/server/chunks/ssr/{[root-of-the-server]__02936mh._.js → [root-of-the-server]__0d3n8i_._.js} +2 -2
- package/.next/server/chunks/ssr/{[root-of-the-server]__0s8q44q._.js → [root-of-the-server]__0d4o9hs._.js} +2 -2
- package/.next/server/chunks/ssr/[root-of-the-server]__0id2dqb._.js +1 -1
- package/.next/server/chunks/ssr/{[root-of-the-server]__1s0etwd._.js → [root-of-the-server]__0q2c15o._.js} +2 -2
- package/.next/server/chunks/ssr/[root-of-the-server]__0t_oz3-._.js +6 -0
- package/.next/server/chunks/ssr/{[root-of-the-server]__16x99f1._.js → [root-of-the-server]__12r70jm._.js} +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__1867koj._.js +1 -1
- package/.next/server/chunks/ssr/{[root-of-the-server]__0glkz9k._.js → [root-of-the-server]__1fvh0zn._.js} +2 -2
- package/.next/server/chunks/ssr/[root-of-the-server]__1t38-p_._.js +1 -1
- package/.next/server/chunks/ssr/{[root-of-the-server]__1c1xyyb._.js → [root-of-the-server]__1uy0zqr._.js} +2 -2
- package/.next/server/chunks/ssr/_02uubus._.js +3 -0
- package/.next/server/chunks/ssr/_0692i-a._.js +3 -0
- package/.next/server/chunks/ssr/_079xt7h._.js +32 -29
- package/.next/server/chunks/ssr/_07g7ojr._.js +3 -0
- package/.next/server/chunks/ssr/_0ewhz_x._.js +3 -0
- package/.next/server/chunks/ssr/_0f3t9pm._.js +2 -2
- package/.next/server/chunks/ssr/_0gx6qzr._.js +57 -0
- package/.next/server/chunks/ssr/_0pjwmak._.js +6 -0
- package/.next/server/chunks/ssr/_0pnzfq1._.js +1 -1
- package/.next/server/chunks/ssr/_0px9eat._.js +3 -0
- package/.next/server/chunks/ssr/_0r2_l__._.js +3 -0
- package/.next/server/chunks/ssr/{_20_wc-g._.js → _0rcuovx._.js} +2 -2
- package/.next/server/chunks/ssr/_0uwhhcs._.js +3 -0
- package/.next/server/chunks/ssr/{_1wct0tm._.js → _128r03g._.js} +1 -1
- package/.next/server/chunks/ssr/_12c2n7f._.js +3 -0
- package/.next/server/chunks/ssr/{_12_ail7._.js → _14f64h2._.js} +1 -1
- package/.next/server/chunks/ssr/_17fa2ns._.js +162 -0
- package/.next/server/chunks/ssr/_1_px1o-._.js +3 -0
- package/.next/server/chunks/ssr/_1a_w_du._.js +1 -1
- package/.next/server/chunks/ssr/_1e_9qjr._.js +1 -1
- package/.next/server/chunks/ssr/_1f59vze._.js +57 -0
- package/.next/server/chunks/ssr/_1j5ohq5._.js +3 -0
- package/.next/server/chunks/ssr/{_0ingto_._.js → _1kj3d2q._.js} +2 -2
- package/.next/server/chunks/ssr/_1neoj22._.js +1 -1
- package/.next/server/chunks/ssr/_1ocl7u0._.js +3 -0
- package/.next/server/chunks/ssr/_1q9r6u6._.js +3 -0
- package/.next/server/chunks/ssr/{_0fvctar._.js → _1qqusa-._.js} +2 -2
- package/.next/server/chunks/ssr/_1soynbw._.js +2 -2
- package/.next/server/chunks/ssr/_1uok0wt._.js +3 -0
- package/.next/server/chunks/ssr/_1v1pcoh._.js +1 -1
- package/.next/server/chunks/ssr/_1xw9imq._.js +3 -0
- package/.next/server/chunks/ssr/{components_ui_markdown-body_tsx_0h7bkrz._.js → components_ui_markdown-body_tsx_08i96c6._.js} +2 -2
- package/.next/server/chunks/ssr/features_0rrgq_t._.js +1 -1
- package/.next/server/chunks/ssr/features_ai_components_model-picker_tsx_0ucb1y9._.js +1 -1
- package/.next/server/chunks/ssr/features_bot_0tb4ui-._.js +2 -2
- package/.next/server/chunks/ssr/features_bot_components_01ye2wp._.js +1 -1
- package/.next/server/chunks/ssr/features_bot_components_bot-setting_tsx_01ajft6._.js +2 -2
- package/.next/server/chunks/ssr/features_bot_components_thread-setting_tsx_0yae7zy._.js +1 -1
- package/.next/server/chunks/ssr/features_config_components_config-setting_tsx_0xfwqdg._.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 +2 -2
- package/.next/server/chunks/ssr/features_routine_components_routine-setting_tsx_055fknz._.js +1 -1
- package/.next/server/chunks/ssr/features_skills_components_skills-setting_tsx_1wtuuip._.js +1 -1
- package/.next/server/chunks/ssr/features_thursday_components_thursday-setting_tsx_1_6ydrc._.js +1 -1
- package/.next/server/chunks/ssr/{node_modules_193w7l8._.js → node_modules_02djdfa._.js} +2 -2
- package/.next/server/chunks/ssr/{node_modules_1bwlhwa._.js → node_modules_03ybg-h._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_01xoz64._.js → node_modules_066eqdg._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_20ifwl6._.js → node_modules_09605b3._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_1yilsx4._.js → node_modules_0_c17cv._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_080f5gu._.js → node_modules_0a1-9-h._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_17c047f._.js → node_modules_0bfpl_c._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_1pav8g4._.js → node_modules_0brchjo._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_0gwiuga._.js → node_modules_0c0pgdi._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_02-zrtu._.js → node_modules_0ep265x._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_0kqej10._.js → node_modules_0gzvt6a._.js} +2 -2
- package/.next/server/chunks/ssr/{node_modules_0i18max._.js → node_modules_0h4gjw5._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_1m2_gxv._.js → node_modules_0iso-he._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_0cda8i6._.js → node_modules_0jvqmb4._.js} +1 -1
- package/.next/server/chunks/ssr/node_modules_0kzgugm._.js +3 -0
- package/.next/server/chunks/ssr/{node_modules_0uvoegq._.js → node_modules_0l8gpkg._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_12ajdg8._.js → node_modules_0mlrvds._.js} +2 -2
- package/.next/server/chunks/ssr/node_modules_0nvqvnw._.js +7 -7
- package/.next/server/chunks/ssr/{node_modules_1s3j8gb._.js → node_modules_0ogtyfm._.js} +2 -2
- package/.next/server/chunks/ssr/{node_modules_1_xiwxs._.js → node_modules_0os_-0h._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_1abjhxx._.js → node_modules_0p05zru._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_1o-m6_3._.js → node_modules_0pf8124._.js} +2 -2
- package/.next/server/chunks/ssr/{node_modules_0eqvt2l._.js → node_modules_0pp3v4f._.js} +2 -2
- package/.next/server/chunks/ssr/{node_modules_0rzz90e._.js → node_modules_0r1vv13._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_1kum1yu._.js → node_modules_0r9yw6x._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_1yw5fq4._.js → node_modules_0rk1a3e._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_1es3wjv._.js → node_modules_0sq1pa3._.js} +2 -2
- package/.next/server/chunks/ssr/{node_modules_1-cv1_p._.js → node_modules_0w-pjyz._.js} +2 -2
- package/.next/server/chunks/ssr/{node_modules_0g_yuwn._.js → node_modules_0yoh66_._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_1s9agqr._.js → node_modules_10kn3ni._.js} +2 -2
- package/.next/server/chunks/ssr/{node_modules_1yajzrd._.js → node_modules_124ipg-._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_0svoyrb._.js → node_modules_12_p7d0._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_203yqqb._.js → node_modules_12w12wr._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_17ks351._.js → node_modules_16kmp_v._.js} +2 -2
- package/.next/server/chunks/ssr/{node_modules_05qs8r_._.js → node_modules_16m_yhd._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_07dc1cr._.js → node_modules_171uvar._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_0qsi9t2._.js → node_modules_19pn2ti._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_0k9_jdk._.js → node_modules_1_ly5yy._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_0o_gq58._.js → node_modules_1_wsn9q._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_1u7wlaq._.js → node_modules_1djak6n._.js} +2 -2
- package/.next/server/chunks/ssr/{node_modules_08cq8i-._.js → node_modules_1e-oxmh._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_15x7int._.js → node_modules_1ed4zep._.js} +2 -2
- package/.next/server/chunks/ssr/{node_modules_1pkpq6d._.js → node_modules_1f2qlxm._.js} +2 -2
- package/.next/server/chunks/ssr/{node_modules_1aw7c9f._.js → node_modules_1fn72fs._.js} +2 -2
- package/.next/server/chunks/ssr/node_modules_1h9p77x._.js +7 -7
- package/.next/server/chunks/ssr/{node_modules_1ucf2fi._.js → node_modules_1hj0rvo._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_12pvysk._.js → node_modules_1jvkoqj._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_0tq4-57._.js → node_modules_1jzofr8._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_08hfp3a._.js → node_modules_1maqy-g._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_071fb26._.js → node_modules_1oox5h1._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_0_jxnnn._.js → node_modules_1p56fwh._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_01yukzc._.js → node_modules_1prbr1-._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_1hrbceb._.js → node_modules_1qfou69._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_11f1w-3._.js → node_modules_1qnosqe._.js} +2 -2
- package/.next/server/chunks/ssr/{node_modules_1kd_hpx._.js → node_modules_1rdpn6v._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_079iwnx._.js → node_modules_1v6m9sp._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_1iapzqf._.js → node_modules_1z8ywx9._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_1dim95c._.js → node_modules_1zzudo-._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_1_71wv3._.js → node_modules_2157u1j._.js} +2 -2
- package/.next/server/chunks/ssr/{node_modules_katex_dist_katex_mjs_1c5gb92._.js → node_modules_katex_dist_katex_mjs_12lynt6._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_katex_dist_katex_mjs_1ocxq2z._.js → node_modules_katex_dist_katex_mjs_1vjoadq._.js} +1 -1
- package/.next/server/chunks/ssr/node_modules_lucide-react_dist_esm_icons_1v93o68._.js +1 -1
- package/.next/server/middleware-build-manifest.js +5 -5
- 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 +185 -185
- package/.next/static/chunks/051z85h3ofmif.js +1 -0
- package/.next/static/chunks/05722zc-sohb_.js +4 -0
- package/.next/static/chunks/07jo959manleh.js +1 -0
- package/.next/static/chunks/0_5a18_y41-_4.js +1 -0
- package/.next/static/chunks/0be7dgti95u_2.js +1 -0
- package/.next/static/chunks/0c28x0q2aqsbj.js +1 -0
- package/.next/static/chunks/0o_rabv5are-o.js +2 -0
- package/.next/static/chunks/{0776-hu4_eek7.js → 0wwq57j09skhy.js} +2 -2
- package/.next/static/chunks/0zm3urd75-zw5.js +1 -0
- package/.next/static/chunks/16hfi69t-6a4t.js +2 -0
- package/.next/static/chunks/1g58g8-daiwu5.js +3 -0
- package/.next/static/chunks/1i1u85j-_yb1n.js +15 -0
- package/.next/static/chunks/1kd2sxkkrae8e.js +1 -0
- package/.next/static/chunks/{3xloayc4c096r.js → 1n3a07w81jbc-.js} +1 -1
- package/.next/static/chunks/1nncyxatu7une.js +1 -0
- package/.next/static/chunks/1s5t41jiomssd.css +1 -0
- package/.next/static/chunks/1yl4mlpsw8e7h.js +1 -0
- package/.next/static/chunks/{33qtnlc00c9gq.js → 2gl-fo_rmmmq0.js} +1 -1
- package/.next/static/chunks/2h_sak2oi70qs.js +1 -0
- package/.next/static/chunks/2isg5redeg2bc.js +1 -0
- package/.next/static/chunks/{2fxn-xltgy2un.js → 2of2-kggzp-fk.js} +1 -1
- package/.next/static/chunks/2vmran3sacktz.js +1 -0
- package/.next/static/chunks/2w02v9g8o9-rz.js +1 -0
- package/.next/static/chunks/2wi2pcbjrqm86.js +1 -0
- package/.next/static/chunks/2xk8otp3gnzml.js +1 -0
- package/.next/static/chunks/2ym1hrikoit8p.js +1 -0
- package/.next/static/chunks/34d1f980dv5c6.js +18 -0
- package/.next/static/chunks/34zhr71217o1-.js +2 -0
- package/.next/static/chunks/{0o1r15rfncytn.js → 37r4l2878vybp.js} +1 -1
- package/.next/static/chunks/{2cz5734j90h5b.js → 3a-2z23puvz2z.js} +1 -1
- package/.next/static/chunks/3d55-y263hup9.js +1 -0
- package/.next/static/chunks/3dzrveotr82eu.js +39 -0
- package/.next/static/chunks/3fensfht8pxhl.js +55 -0
- package/.next/static/chunks/3k7fum0yljmyr.js +1 -0
- package/.next/static/chunks/3sawwm4vucnzn.js +1 -0
- package/.next/static/chunks/{0z0-g4k1hnpw2.js → 3u208m--8u1iq.js} +1 -1
- package/.next/static/chunks/{turbopack-1kym6rf88i5i0.js → turbopack-0ekrsq98buh0j.js} +1 -1
- package/README.md +18 -18
- package/bin/background.mjs +60 -32
- package/bin/print.mjs +82 -0
- package/bin/thursday.mjs +44 -13
- package/guide/bots.md +19 -3
- package/guide/calls.md +5 -2
- package/guide/memory.md +2 -1
- package/guide/setup.md +8 -6
- package/guide/trouble.md +4 -0
- package/package.json +11 -5
- package/public/voices/intro/awake-f4e02fad.ogg +0 -0
- package/seed-skills/concierge/travel/scripts/itinerary.mjs +2 -1
- package/server.js +1 -1
- package/skills/artifact/references/document.md +5 -2
- package/skills/artifact/runtime/document/markdown.mjs +14 -1
- package/skills/artifact/runtime/shell/head.html +1 -1
- package/skills/artifact/scripts/document.mjs +9 -3
- package/skills/browser/SKILL.md +17 -13
- package/.next/server/chunks/[root-of-the-server]__0ald4vb._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0srfj96._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__1kos36s._.js +0 -6
- package/.next/server/chunks/ssr/_024j8bs._.js +0 -3
- package/.next/server/chunks/ssr/_04jb10a._.js +0 -3
- package/.next/server/chunks/ssr/_059oyhd._.js +0 -3
- package/.next/server/chunks/ssr/_0d0uyl3._.js +0 -3
- package/.next/server/chunks/ssr/_0fk7dbp._.js +0 -88
- package/.next/server/chunks/ssr/_0gfa_rb._.js +0 -3
- package/.next/server/chunks/ssr/_0i7zd74._.js +0 -3
- package/.next/server/chunks/ssr/_0sp2z94._.js +0 -3
- package/.next/server/chunks/ssr/_1avnw03._.js +0 -57
- package/.next/server/chunks/ssr/_1bfrntd._.js +0 -6
- package/.next/server/chunks/ssr/_1cpvfkg._.js +0 -3
- package/.next/server/chunks/ssr/_1cqjpyq._.js +0 -3
- package/.next/server/chunks/ssr/_1khngyc._.js +0 -72
- package/.next/server/chunks/ssr/_1kyjimg._.js +0 -162
- package/.next/server/chunks/ssr/_1sw4r4m._.js +0 -6
- package/.next/server/chunks/ssr/_20004tu._.js +0 -57
- package/.next/server/chunks/ssr/node_modules_01alue6._.js +0 -3
- package/.next/server/chunks/ssr/node_modules_02n9-pb._.js +0 -3
- package/.next/server/chunks/ssr/node_modules_lucide-react_dist_esm_icons_0zxr5sz._.js +0 -3
- package/.next/server/chunks/ssr/node_modules_lucide-react_dist_esm_icons_trash_mjs_0px2gzr._.js +0 -3
- package/.next/static/chunks/02d9vhnz5mwvu.js +0 -1
- package/.next/static/chunks/06ff4fq0z4das.js +0 -1
- package/.next/static/chunks/09q9n7jrkm4c9.js +0 -39
- package/.next/static/chunks/0b3wt5kqs-mk2.js +0 -2
- package/.next/static/chunks/0blrj_tg1yur0.js +0 -1
- package/.next/static/chunks/0dn1ptom1ahgg.js +0 -18
- package/.next/static/chunks/0dq7uppta9s--.js +0 -1
- package/.next/static/chunks/0hoz2b--nhn4y.js +0 -1
- package/.next/static/chunks/0kfjtkez2xze2.js +0 -1
- package/.next/static/chunks/0mv2zywfzt83k.js +0 -4
- package/.next/static/chunks/0txtrhykehsd_.js +0 -55
- package/.next/static/chunks/17vs1vz7_4l4p.css +0 -1
- package/.next/static/chunks/1dnvf_117h4k3.js +0 -2
- package/.next/static/chunks/1irynso77np9t.js +0 -1
- package/.next/static/chunks/1sh_-w_keseat.js +0 -1
- package/.next/static/chunks/1z2_9pl3nezly.js +0 -3
- package/.next/static/chunks/23ty4edkuxirx.js +0 -1
- package/.next/static/chunks/2f1cnfz4h1e2x.js +0 -1
- package/.next/static/chunks/2jepcbdewlwlg.js +0 -1
- package/.next/static/chunks/2r_zq_knm0hph.js +0 -15
- package/.next/static/chunks/2yfmmo4qr_f-m.js +0 -1
- package/.next/static/chunks/3-xnkknav7azp.js +0 -1
- package/.next/static/chunks/38q31td1ecuay.js +0 -1
- package/.next/static/chunks/3n75-7grldc6f.js +0 -1
- package/.next/static/chunks/3ofr4htw4wpj3.js +0 -1
- package/.next/static/chunks/40bkw3zfenss4.js +0 -2
- package/public/voices/intro/awake-17dbafbf.ogg +0 -0
- package/public/voices/intro/models-d09ddc74.ogg +0 -0
- /package/.next/static/{YIQV0_9FZPTFUe9TCiVSF → 3_9hbwcAuWTSWCJSufp3d}/_buildManifest.js +0 -0
- /package/.next/static/{YIQV0_9FZPTFUe9TCiVSF → 3_9hbwcAuWTSWCJSufp3d}/_clientMiddlewareManifest.js +0 -0
- /package/.next/static/{YIQV0_9FZPTFUe9TCiVSF → 3_9hbwcAuWTSWCJSufp3d}/_ssgManifest.js +0 -0
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[274157,e=>e.a(async(t,a)=>{try{var r=e.i(378884),i=e.i(91264),o=e.i(53748),l=t([r]);[r]=l.then?(await l)():l;let n=(0,i.serverRoute)(async(e,{params:t})=>{let{id:a}=await t,i=new URL(e.url).searchParams.get("call");if(i){let e=await (0,r.readToolResult)(a,i);return e||(0,o.publicError)("No such tool result"),e}(0,o.publicError)("Which part — `call`?")});e.s(["GET",0,n]),a()}catch(e){a(e)}},!1),429202,e=>{"use strict";var t=e.i(747909),a=e.i(174017),r=e.i(996250),i=e.i(759756),o=e.i(561916),l=e.i(174677),n=e.i(869741),s=e.i(316795),u=e.i(487718),p=e.i(995169),d=e.i(47587),c=e.i(666012),h=e.i(570101),m=e.i(626937),f=e.i(10372),R=e.i(193695);e.i(52474);var y=e.i(600220);let v=new t.AppRouteRouteModule({definition:{kind:a.RouteKind.APP_ROUTE,page:"/api/bot/tool-result/[id]/route",pathname:"/api/bot/tool-result/[id]",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/app/api/bot/tool-result/[id]/route.ts",nextConfigOutput:"standalone",userland:()=>e.r(274157),...{}}),{workAsyncStorage:g,workUnitAsyncStorage:w,serverHooks:b}=v;async function C(e,t,r){r.requestMeta&&(0,i.setRequestMeta)(e,r.requestMeta),v.isDev&&(0,i.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let g="/api/bot/tool-result/[id]/route";g=g.replace(/\/index$/,"")||"/";let w=await v.prepare(e,t,{srcPage:g,multiZoneDraftMode:!1});if(!w)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:b,deploymentId:C,params:E,nextConfig:x,parsedUrl:q,isDraftMode:T,prerenderManifest:A,routerServerContext:S,isOnDemandRevalidate:N,revalidateOnlyGenerated:P,resolvedPathname:k,clientReferenceManifest:O,serverActionsManifest:_}=w,H=(0,n.normalizeAppPath)(g),I=!!(A.dynamicRoutes[H]||A.routes[k]),M=async()=>((null==S?void 0:S.render404)?await S.render404(e,t,q,!1):t.end("This page could not be found"),null);if(I&&!T){let e=!!A.routes[k],t=A.dynamicRoutes[H];if(t&&!1===t.fallback&&!e){if(x.adapterPath)return await M();throw new R.NoFallbackError}}let U=null;!I||v.isDev||T||(U="/index"===(U=k)?"/":U);let $=!0===v.isDev||!I,D=I&&!$;_&&O&&(0,l.setManifestsSingleton)({page:g,clientReferenceManifest:O,serverActionsManifest:_});let F=e.method||"GET",j=(0,o.getTracer)(),K=j.getActiveScopeSpan(),L=!!(null==S?void 0:S.isWrappedByNextServer),V=!!(0,i.getRequestMeta)(e,"minimalMode"),B=(0,i.getRequestMeta)(e,"incrementalCache")||await v.getIncrementalCache(e,x,A,V);null==B||B.resetRequestCache(),globalThis.__incrementalCache=B;let G={params:E,previewProps:A.preview,renderOpts:{experimental:{authInterrupts:!!x.experimental.authInterrupts,useCacheTimeout:x.experimental.useCacheTimeout},cacheComponents:!!x.cacheComponents,validationLevel:x.experimental.instantInsights.validationLevel,supportsDynamicResponse:$,incrementalCache:B,hmrRefreshHash:(0,i.getRequestMeta)(e,"hmrRefreshHash"),cacheLifeProfiles:x.cacheLife,staticPageGenerationTimeout:x.staticPageGenerationTimeout,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,r,i)=>v.onRequestError(e,t,r,i,S)},sharedContext:{buildId:b,deploymentId:C}},W=new s.NodeNextRequest(e),X=new s.NodeNextResponse(t),z=u.NextRequestAdapter.fromNodeNextRequest(W,(0,u.signalFromNodeResponse)(t)),J=async({previousCacheEntry:a})=>{try{if(!V&&N&&P&&!a)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let i=await v.handle(z,G);e.fetchMetrics=G.renderOpts.fetchMetrics;let o=G.renderOpts.pendingWaitUntil;o&&r.waitUntil&&(r.waitUntil(o),o=void 0);let l=G.renderOpts.collectedTags;if(!I)return await (0,c.sendResponse)(W,X,i,o),null;{let e=await i.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(i.headers);l&&(t[f.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==G.renderOpts.collectedRevalidate&&!(G.renderOpts.collectedRevalidate>=f.INFINITE_CACHE)&&G.renderOpts.collectedRevalidate,r=void 0===G.renderOpts.collectedExpire||G.renderOpts.collectedExpire>=f.INFINITE_CACHE?!1!==a&&a>0?x.expireTime:void 0:G.renderOpts.collectedExpire;return{value:{kind:y.CachedRouteKind.APP_ROUTE,status:i.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:r}}}}catch(t){throw(null==a?void 0:a.isStale)&&await v.onRequestError(e,t,{routerKind:"App Router",routePath:g,routeType:"route",revalidateReason:(0,d.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:N})},!1,S),t}},Z=async(i,l)=>{try{var n,s;let i=await v.handleResponse({req:e,nextConfig:x,cacheKey:U,routeKind:a.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:A,isRoutePPREnabled:!1,isOnDemandRevalidate:N,revalidateOnlyGenerated:P,responseGenerator:J,waitUntil:r.waitUntil,isMinimalMode:V});if(!I)return;if((null==i||null==(n=i.value)?void 0:n.kind)!==y.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==i||null==(s=i.value)?void 0:s.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});V||t.setHeader("x-nextjs-cache",N?"REVALIDATED":i.isMiss?"MISS":i.isStale?"STALE":"HIT"),T&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let o=(0,h.fromNodeOutgoingHttpHeaders)(i.value.headers);V&&I||o.delete(f.NEXT_CACHE_TAGS_HEADER),!i.cacheControl||t.getHeader("Cache-Control")||o.get("Cache-Control")||o.set("Cache-Control",(0,m.getCacheControlHeader)(i.cacheControl)),await (0,c.sendResponse)(W,X,new Response(i.value.body,{headers:o,status:i.value.status||200}));return}catch(t){if(t instanceof R.NoFallbackError||await v.onRequestError(e,t,{routerKind:"App Router",routePath:H,routeType:"route",revalidateReason:(0,d.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:N})},!1,S),I)throw t;await (0,c.sendResponse)(W,X,new Response(null,{status:500}));return}finally{(()=>{if(!i)return;let e=t.statusCode;i.setAttributes({"http.status_code":e,"next.rsc":!1}),e&&e>=500&&(i.setStatus({code:o.SpanStatusCode.ERROR}),i.setAttribute("error.type",e.toString()));let a=j.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==p.BaseServerSpan.handleRequest)return console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let r=a.get("next.route")||H,n=`${F} ${r}`;i.setAttributes({"next.route":r,"http.route":r,"next.span_name":n}),i.updateName(n),l&&l!==i&&(l.setAttribute("http.route",r),l.updateName(n))})()}};if(L&&K)await Z(K,void 0);else{let t=j.getActiveScopeSpan();await j.withPropagatedContext(e.headers,()=>j.trace(p.BaseServerSpan.handleRequest,{spanName:`${F} ${g}`,kind:o.SpanKind.SERVER,attributes:{"http.method":F,"http.target":e.url}},e=>Z(e,t)),void 0,!L)}}e.s(["handler",0,C,"patchFetch",0,function(){return(0,r.patchFetch)({workAsyncStorage:g,workUnitAsyncStorage:w})},"routeModule",0,v,"serverHooks",0,b,"workAsyncStorage",0,g,"workUnitAsyncStorage",0,w])},175936,e=>{"use strict";let t=e=>e.split("/").map(encodeURIComponent).join("/");e.s(["decodePath",0,e=>e.join("/"),"queryKey",0,{memory:"/api/memory",memoryPage:e=>({url:"/api/memory",query:{offset:e||null}}),mcp:"/api/mcp",mcpServer:e=>({url:"/api/mcp",pathVariable:[e]}),mcpTools:"/api/mcp/tools",skills:"/api/skills",skillNode:(e,t,a)=>({url:"/api/skills",pathVariable:[e,t],query:{path:a}}),bot:"/api/bot",botMemory:"/api/bot/memory",botMemoryFiles:e=>({url:"/api/bot/memory/files",query:{bot:e}}),routines:"/api/routine",threads:"/api/bot/thread",threadHistory:e=>({url:"/api/bot/thread",query:{history:1,before:e}}),thread:e=>({url:"/api/bot/thread",query:{id:e}}),fileNotes:"/api/bot/thread/file",fileNote:(e,t)=>({url:"/api/bot/thread/file",query:{path:e,from:t}}),toolResult:(e,t)=>({url:"/api/bot/tool-result",pathVariable:[e],query:{call:t}}),workspace:"/api/workspace",workspaceFolder:(e,t)=>({url:"/api/workspace",query:{path:e||null,rows:t}}),workspaceFiles:e=>({url:"/api/workspace/files",query:{paths:JSON.stringify(e)}}),artifacts:"/api/artifact",artifactShelf:e=>({url:"/api/artifact",query:{rows:e}}),artifactSet:(e,t)=>({url:"/api/artifact",query:{set:e,rows:t}}),file:e=>`/api/file/${t(e)}`,fileFace:e=>`/api/file/${t(e)}?face`,favicon:e=>`/api/favicon/${encodeURIComponent(e)}`,fileView:e=>`/artifact/${t(e)}`,events:"/api/events",config:"/api/config",callHistory:e=>({url:"/api/thursday/call",query:{before:e}}),thursdaySettings:"/api/thursday/settings",toolCall:"/api/thursday/tool-call",callEnd:"/api/thursday/call/end",signIns:"/api/signins",reach:"/api/reach",textCall:"/api/thursday/text",memoryEdit:"/api/memory/edit",llmModel:"/api/llm-model",automaticModel:"/api/llm-model/automatic",modelCatalog:e=>`/api/llm-model/catalog/${e}`,keyCredits:e=>`/api/llm-model/credits/${e}`,subscriptionUsage:"/api/llm-model/subscription",running:"/api/running",update:"/api/update"}])},260338,e=>{"use strict";var t=e.i(518899),a=e.i(844988),r=e.i(156325);e.s(["count",0,function(e){return t.sql`count(${e||t.sql.raw("*")})`.mapWith(Number)},"max",0,function(e){return t.sql`max(${e})`.mapWith((0,a.is)(e,r.Column)?e:String)}])}];
|
|
1
|
+
module.exports=[274157,e=>e.a(async(t,a)=>{try{var r=e.i(378884),i=e.i(91264),o=e.i(53748),l=t([r]);[r]=l.then?(await l)():l;let n=(0,i.serverRoute)(async(e,{params:t})=>{let{id:a}=await t,i=new URL(e.url).searchParams.get("call");if(i){let e=await (0,r.readToolResult)(a,i);return e||(0,o.publicError)("No such tool result"),e}(0,o.publicError)("Which part — `call`?")});e.s(["GET",0,n]),a()}catch(e){a(e)}},!1),429202,e=>{"use strict";var t=e.i(747909),a=e.i(174017),r=e.i(996250),i=e.i(759756),o=e.i(561916),l=e.i(174677),n=e.i(869741),s=e.i(316795),u=e.i(487718),p=e.i(995169),d=e.i(47587),c=e.i(666012),h=e.i(570101),m=e.i(626937),f=e.i(10372),R=e.i(193695);e.i(52474);var y=e.i(600220);let v=new t.AppRouteRouteModule({definition:{kind:a.RouteKind.APP_ROUTE,page:"/api/bot/tool-result/[id]/route",pathname:"/api/bot/tool-result/[id]",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/app/api/bot/tool-result/[id]/route.ts",nextConfigOutput:"standalone",userland:()=>e.r(274157),...{}}),{workAsyncStorage:g,workUnitAsyncStorage:w,serverHooks:b}=v;async function C(e,t,r){r.requestMeta&&(0,i.setRequestMeta)(e,r.requestMeta),v.isDev&&(0,i.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let g="/api/bot/tool-result/[id]/route";g=g.replace(/\/index$/,"")||"/";let w=await v.prepare(e,t,{srcPage:g,multiZoneDraftMode:!1});if(!w)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:b,deploymentId:C,params:E,nextConfig:x,parsedUrl:q,isDraftMode:T,prerenderManifest:A,routerServerContext:S,isOnDemandRevalidate:N,revalidateOnlyGenerated:P,resolvedPathname:k,clientReferenceManifest:O,serverActionsManifest:_}=w,H=(0,n.normalizeAppPath)(g),I=!!(A.dynamicRoutes[H]||A.routes[k]),M=async()=>((null==S?void 0:S.render404)?await S.render404(e,t,q,!1):t.end("This page could not be found"),null);if(I&&!T){let e=!!A.routes[k],t=A.dynamicRoutes[H];if(t&&!1===t.fallback&&!e){if(x.adapterPath)return await M();throw new R.NoFallbackError}}let U=null;!I||v.isDev||T||(U="/index"===(U=k)?"/":U);let $=!0===v.isDev||!I,D=I&&!$;_&&O&&(0,l.setManifestsSingleton)({page:g,clientReferenceManifest:O,serverActionsManifest:_});let F=e.method||"GET",j=(0,o.getTracer)(),K=j.getActiveScopeSpan(),L=!!(null==S?void 0:S.isWrappedByNextServer),V=!!(0,i.getRequestMeta)(e,"minimalMode"),B=(0,i.getRequestMeta)(e,"incrementalCache")||await v.getIncrementalCache(e,x,A,V);null==B||B.resetRequestCache(),globalThis.__incrementalCache=B;let G={params:E,previewProps:A.preview,renderOpts:{experimental:{authInterrupts:!!x.experimental.authInterrupts,useCacheTimeout:x.experimental.useCacheTimeout},cacheComponents:!!x.cacheComponents,validationLevel:x.experimental.instantInsights.validationLevel,supportsDynamicResponse:$,incrementalCache:B,hmrRefreshHash:(0,i.getRequestMeta)(e,"hmrRefreshHash"),cacheLifeProfiles:x.cacheLife,staticPageGenerationTimeout:x.staticPageGenerationTimeout,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,r,i)=>v.onRequestError(e,t,r,i,S)},sharedContext:{buildId:b,deploymentId:C}},W=new s.NodeNextRequest(e),X=new s.NodeNextResponse(t),z=u.NextRequestAdapter.fromNodeNextRequest(W,(0,u.signalFromNodeResponse)(t)),J=async({previousCacheEntry:a})=>{try{if(!V&&N&&P&&!a)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let i=await v.handle(z,G);e.fetchMetrics=G.renderOpts.fetchMetrics;let o=G.renderOpts.pendingWaitUntil;o&&r.waitUntil&&(r.waitUntil(o),o=void 0);let l=G.renderOpts.collectedTags;if(!I)return await (0,c.sendResponse)(W,X,i,o),null;{let e=await i.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(i.headers);l&&(t[f.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==G.renderOpts.collectedRevalidate&&!(G.renderOpts.collectedRevalidate>=f.INFINITE_CACHE)&&G.renderOpts.collectedRevalidate,r=void 0===G.renderOpts.collectedExpire||G.renderOpts.collectedExpire>=f.INFINITE_CACHE?!1!==a&&a>0?x.expireTime:void 0:G.renderOpts.collectedExpire;return{value:{kind:y.CachedRouteKind.APP_ROUTE,status:i.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:r}}}}catch(t){throw(null==a?void 0:a.isStale)&&await v.onRequestError(e,t,{routerKind:"App Router",routePath:g,routeType:"route",revalidateReason:(0,d.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:N})},!1,S),t}},Z=async(i,l)=>{try{var n,s;let i=await v.handleResponse({req:e,nextConfig:x,cacheKey:U,routeKind:a.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:A,isRoutePPREnabled:!1,isOnDemandRevalidate:N,revalidateOnlyGenerated:P,responseGenerator:J,waitUntil:r.waitUntil,isMinimalMode:V});if(!I)return;if((null==i||null==(n=i.value)?void 0:n.kind)!==y.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==i||null==(s=i.value)?void 0:s.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});V||t.setHeader("x-nextjs-cache",N?"REVALIDATED":i.isMiss?"MISS":i.isStale?"STALE":"HIT"),T&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let o=(0,h.fromNodeOutgoingHttpHeaders)(i.value.headers);V&&I||o.delete(f.NEXT_CACHE_TAGS_HEADER),!i.cacheControl||t.getHeader("Cache-Control")||o.get("Cache-Control")||o.set("Cache-Control",(0,m.getCacheControlHeader)(i.cacheControl)),await (0,c.sendResponse)(W,X,new Response(i.value.body,{headers:o,status:i.value.status||200}));return}catch(t){if(t instanceof R.NoFallbackError||await v.onRequestError(e,t,{routerKind:"App Router",routePath:H,routeType:"route",revalidateReason:(0,d.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:N})},!1,S),I)throw t;await (0,c.sendResponse)(W,X,new Response(null,{status:500}));return}finally{(()=>{if(!i)return;let e=t.statusCode;i.setAttributes({"http.status_code":e,"next.rsc":!1}),e&&e>=500&&(i.setStatus({code:o.SpanStatusCode.ERROR}),i.setAttribute("error.type",e.toString()));let a=j.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==p.BaseServerSpan.handleRequest)return console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let r=a.get("next.route")||H,n=`${F} ${r}`;i.setAttributes({"next.route":r,"http.route":r,"next.span_name":n}),i.updateName(n),l&&l!==i&&(l.setAttribute("http.route",r),l.updateName(n))})()}};if(L&&K)await Z(K,void 0);else{let t=j.getActiveScopeSpan();await j.withPropagatedContext(e.headers,()=>j.trace(p.BaseServerSpan.handleRequest,{spanName:`${F} ${g}`,kind:o.SpanKind.SERVER,attributes:{"http.method":F,"http.target":e.url}},e=>Z(e,t)),void 0,!L)}}e.s(["handler",0,C,"patchFetch",0,function(){return(0,r.patchFetch)({workAsyncStorage:g,workUnitAsyncStorage:w})},"routeModule",0,v,"serverHooks",0,b,"workAsyncStorage",0,g,"workUnitAsyncStorage",0,w])},175936,e=>{"use strict";let t=e=>e.split("/").map(encodeURIComponent).join("/");e.s(["decodePath",0,e=>e.join("/"),"queryKey",0,{memory:"/api/memory",memoryPage:e=>({url:"/api/memory",query:{offset:e||null}}),mcp:"/api/mcp",mcpServer:e=>({url:"/api/mcp",pathVariable:[e]}),mcpTools:"/api/mcp/tools",skills:"/api/skills",skillNode:(e,t,a)=>({url:"/api/skills",pathVariable:[e,t],query:{path:a}}),bot:"/api/bot",botMemory:"/api/bot/memory",botMemoryFiles:e=>({url:"/api/bot/memory/files",query:{bot:e}}),routines:"/api/routine",threads:"/api/bot/thread",threadHistory:(e,t)=>({url:"/api/bot/thread",query:{history:1,before:e,q:t||void 0}}),thread:e=>({url:"/api/bot/thread",query:{id:e}}),fileNotes:"/api/bot/thread/file",fileNote:(e,t)=>({url:"/api/bot/thread/file",query:{path:e,from:t}}),toolResult:(e,t)=>({url:"/api/bot/tool-result",pathVariable:[e],query:{call:t}}),workspace:"/api/workspace",workspaceFolder:(e,t)=>({url:"/api/workspace",query:{path:e||null,rows:t}}),workspaceFiles:e=>({url:"/api/workspace/files",query:{paths:JSON.stringify(e)}}),artifacts:"/api/artifact",artifactShelf:e=>({url:"/api/artifact",query:{rows:e}}),artifactSet:(e,t)=>({url:"/api/artifact",query:{set:e,rows:t}}),file:e=>`/api/file/${t(e)}`,fileFace:e=>`/api/file/${t(e)}?face`,favicon:e=>`/api/favicon/${encodeURIComponent(e)}`,fileView:e=>`/artifact/${t(e)}`,events:"/api/events",config:"/api/config",callHistory:e=>({url:"/api/thursday/call",query:{before:e}}),thursdaySettings:"/api/thursday/settings",toolCall:"/api/thursday/tool-call",callEnd:"/api/thursday/call/end",signIns:"/api/signins",reach:"/api/reach",textCall:"/api/thursday/text",memoryEdit:"/api/memory/edit",llmModel:"/api/llm-model",automaticModel:"/api/llm-model/automatic",modelCatalog:e=>`/api/llm-model/catalog/${e}`,keyCredits:e=>`/api/llm-model/credits/${e}`,subscriptionUsage:"/api/llm-model/subscription",running:"/api/running",update:"/api/update"}])},260338,e=>{"use strict";var t=e.i(518899),a=e.i(844988),r=e.i(156325);e.s(["count",0,function(e){return t.sql`count(${e||t.sql.raw("*")})`.mapWith(Number)},"max",0,function(e){return t.sql`max(${e})`.mapWith((0,a.is)(e,r.Column)?e:String)}])}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=_0pljp-1._.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
module.exports=[380690,e=>{"use strict";let t,n,a,r,i,s;var o,u=e.i(687388),l=e.i(850063);let c={threads:!0,bots:!0,routines:!0,memory:!0,mcp:!0,config:!0,reach:!0,signins:!0,files:!0},d=globalThis,m=d.__appEvents??=(t=new Set,{emit(e){for(let n of[...t])try{n(e)}catch(e){console.error("event listener failed",e)}},subscribe:e=>(t.add(e),()=>{t.delete(e)})}),h=d.__presence??=(o=u.BROWSER_GONE_MS,n=!1,a=null,r=new Set,i=new Set,s=e=>{for(let t of[...e])try{t()}catch(e){console.error("presence listener failed",e)}},{get watching(){return n},track(e){if(e>0){a&&clearTimeout(a),a=null,n||(n=!0,s(i));return}!a&&n&&(a=setTimeout(()=>{a=null,n=!1,s(r)},o))},onGone:e=>(r.add(e),()=>r.delete(e)),onBack:e=>(i.add(e),()=>i.delete(e))}),f=d.__appEventStream??=(0,l.createEventStream)(m,{coalesce:{ms:u.SIGNAL_PACE_MS,keyOf:e=>e.type in c?e.type:null},onWatchers:h.track});e.s(["appEventStream",0,f,"appEvents",0,m,"presence",0,h],380690)},687388,e=>{"use strict";let t=process.env.THURSDAY_APP_DIR?.trim()||process.cwd(),n=process.env.THURSDAY_HOME?.trim()||process.cwd(),a=process.env.THURSDAY_URL?.trim()||`http://localhost:${process.env.PORT?.trim()||3e3}`,r=`${n}/local.db`,i=`file:${r}`,s=`${n}/.env`,o=".ai-workspace",u={workspace:o,artifacts:"artifacts",projects:"projects",scratch:"scratch",bots:"bots",output:".output",signIns:".sign-ins",skills:{default:"skills",custom:`${o}/.agents/skills`,own:".agents/skills",runtime:"runtime",seeds:"seed-skills"}},l="artifact";e.s(["APP_DIR",0,t,"APP_NAME",0,"Thursday","APP_URL",0,a,"ARTIFACT_SKILL",0,l,"ARTIFACT_VIEW",0,{rows:200,setFiles:120},"BOT_MEMORY_LIMITS",0,{files:
|
|
1
|
+
module.exports=[380690,e=>{"use strict";let t,n,a,r,i,s;var o,u=e.i(687388),l=e.i(850063);let c={threads:!0,bots:!0,routines:!0,memory:!0,mcp:!0,config:!0,reach:!0,signins:!0,files:!0},d=globalThis,m=d.__appEvents??=(t=new Set,{emit(e){for(let n of[...t])try{n(e)}catch(e){console.error("event listener failed",e)}},subscribe:e=>(t.add(e),()=>{t.delete(e)})}),h=d.__presence??=(o=u.BROWSER_GONE_MS,n=!1,a=null,r=new Set,i=new Set,s=e=>{for(let t of[...e])try{t()}catch(e){console.error("presence listener failed",e)}},{get watching(){return n},track(e){if(e>0){a&&clearTimeout(a),a=null,n||(n=!0,s(i));return}!a&&n&&(a=setTimeout(()=>{a=null,n=!1,s(r)},o))},onGone:e=>(r.add(e),()=>r.delete(e)),onBack:e=>(i.add(e),()=>i.delete(e))}),f=d.__appEventStream??=(0,l.createEventStream)(m,{coalesce:{ms:u.SIGNAL_PACE_MS,keyOf:e=>e.type in c?e.type:null},onWatchers:h.track});e.s(["appEventStream",0,f,"appEvents",0,m,"presence",0,h],380690)},687388,e=>{"use strict";let t=process.env.THURSDAY_APP_DIR?.trim()||process.cwd(),n=process.env.THURSDAY_HOME?.trim()||process.cwd(),a=process.env.THURSDAY_URL?.trim()||`http://localhost:${process.env.PORT?.trim()||3e3}`,r=`${n}/local.db`,i=`file:${r}`,s=`${n}/.env`,o=".ai-workspace",u={workspace:o,artifacts:"artifacts",projects:"projects",scratch:"scratch",bots:"bots",output:".output",signIns:".sign-ins",skills:{default:"skills",custom:`${o}/.agents/skills`,own:".agents/skills",runtime:"runtime",seeds:"seed-skills"}},l="artifact";e.s(["APP_DIR",0,t,"APP_NAME",0,"Thursday","APP_URL",0,a,"ARTIFACT_SKILL",0,l,"ARTIFACT_VIEW",0,{rows:200,setFiles:120},"BOT_MEMORY_LIMITS",0,{files:60,chars:3e3},"BOT_REFLECT",0,{minTools:5,steps:8},"BOT_RUN",0,{steps:100,compactAt:5e5,compactHeadroom:.8,summaryWords:{min:600,max:3e3,perTokens:200},participants:8,concurrent:8,turns:120,queuedMessages:200,silenceMs:3e5,overflowShrink:.6,retryMs:1e4,compactFiles:40},"BOT_WORK",0,{open:5,recent:5,said:80,files:2,reads:2,asked:400,readChars:4e3},"BROWSER_CLI",0,{readMs:15e3,loadMs:3e4},"BROWSER_GONE_MS",0,1e4,"BROWSER_IDLE",0,{closeAfterMs:36e5,checkEveryMs:3e5},"BROWSER_VIEWPORT",0,"700x700","CALL_EXEC_TIMEOUT_MS",0,15e3,"CALL_HISTORY_PAGE",0,10,"CALL_RELAY",0,{quietMs:2e3,perTurn:3,readMs:15e3,chars:600},"CATALOG_MS",0,6e5,"CHATGPT_SIGN_IN",0,{waitMs:6e5,renewBeforeMs:3e5},"CHATGPT_USAGE_HIGH",0,80,"COMMON_VALIDATE",0,{name:{max:16},shortDescription:{max:60},description:{max:100},prompt:{max:4e3}},"CONNECTED_TOOL_TIMEOUT_MS",0,6e5,"DATA_DIR",0,n,"DB_FILE_NAME",0,i,"DB_PATH",0,r,"DECK",0,{slides:30,shotsMs:9e4},"ENV_PATH",0,s,"EXEC_KILL_GRACE_MS",0,5e3,"EXEC_TIMEOUT_MS",0,18e4,"FAVICON",0,{timeoutMs:4e3,maxBytes:3e5,kept:500,againMs:6e4,pageBytes:65536},"FINISHED_NOTICE",0,{rows:5,shown:1,words:240},"FULL_RESULT_LINES",0,400,"INBOX_FINISHED",0,5,"INBOX_UNREAD",0,20,"IS_DEV",0,!1,"JOB_FOLDER_WALK",0,500,"KEY_LOW_CREDIT",0,1,"LIVE_CALL",0,{startupMs:3e4,closeMs:15e3,transcriptGapMs:1500,transcriptSaveMs:500,appendMs:15e3,backendOutputTokens:4096,reasoningCheckMs:5e3,keyCheckMs:5e3,openingHoldMs:3e3,instructionsTokens:16384},"LOOK",0,{maxBytes:4194304,perRequest:0xc00000},"MAIL_CHECK",0,{backMs:18e5,waitMs:12e4,waitMaxMs:3e5,chars:6e3},"MARKETING_SKILL",0,"marketing","MAX_PINNED_TOOLS",0,10,"MCP_IDLE_MS",0,18e5,"MEMORY_EDIT",0,{maxSteps:20},"MEMORY_LIMITS",0,{facts:400,factsPerNote:50,descriptionChars:100},"PAGE_SIZE",0,50,"PATHS",0,u,"PLAN_CALL",0,{delegationBytes:4096,pictureBytes:262144},"PROMPT_BUDGET",0,6e3,"PROMPT_LINE",0,{skill:90,toolArgs:30,jobOutcome:160,botMemory:100,threadStatus:200,routineRequest:300,routineOutcome:200,boardAsk:100},"REACH",0,{pollSeconds:50,retryMs:5e3,idleMs:6e5,messages:40,trimTo:30,oldChars:1e3,files:3,fileBytes:0x2d00000,rateRetries:3,rateWaitMs:3e4,codeDigits:4,held:5,pictures:9,drawMs:6e4,lookMs:2e3,mailFreshMs:1728e5,mailCheckAgainMs:3e4,mailHoldMs:36e5,mailPushAfterMs:1e3,mailIdleMs:24e4,mailDnsMs:5e3,mailIdsKept:200,mailLookMs:3e5},"RECENT_CALL",0,{rows:20,tokens:600},"ROUTINE",0,{tickMs:3e4,max:12,minHours:1,runsShown:5},"SEARCH",0,{sources:3,excerptChars:1200,timeoutMs:3e4},"SEED_KITS_RENAMED",0,{marketer:"writer"},"SIGNAL_PACE_MS",0,150,"SKILLS_FOLDED",0,{design:l,"picture-book":l,"interactive-page":l},"SKILL_FILES",0,{uploadBytes:0x1400000,inlineBytes:524288,unpackedBytes:0x6400000,archiveEntries:1e3},"SKILL_FILES_LISTED",0,50,"STUDIO_SERVER",0,"studio","TEXT_CALL",0,{maxSteps:12,model:"text",autoTurns:10,chunkMs:12e4},"THREAD_LABEL_REACH",0,20,"THREAD_STATUS_LIMIT",0,10,"TOOL_OUTPUT",0,{max:8e3,head:5500,tail:1500},"TOOL_SEARCH_SCHEMAS",0,8,"TRAVEL_SKILL",0,"travel","UPDATE",0,{checkMs:864e5,againMs:6e5,timeoutMs:5e3,quietMs:864e5,waitMs:3e5,pollMs:2e3},"WORKSPACE_KEEP",0,{forMs:2592e5,sweepEveryMs:36e5},"WORKSPACE_VIEW",0,{rows:200,textMax:524288,autoCloseMs:5e3,elementMax:0x3200000}])},850063,e=>{"use strict";var t=e.i(640911);e.s(["createEventStream",0,function(e,n={}){let a=new TextEncoder,r=n.heartbeatMs??2e4,i=0;return{respond:(s,o)=>{let u=()=>{};return new Response(new ReadableStream({async start(l){let c=!1,d=new Map,m=[],h=e=>{if(!c)try{l.enqueue(a.encode(e))}catch{u()}},f=e=>h(`data: ${JSON.stringify(e)}
|
|
2
2
|
|
|
3
3
|
`),p=e=>{let t={last:null},a=setTimeout(()=>{d.delete(e),!c&&t.last&&(f(t.last),p(e))},n.coalesce?.ms);d.set(e,{timer:a,wait:t})},g=e=>{if(c)return;let t=n.coalesce?.keyOf(e)??null;if(null===t)return f(e);let a=d.get(t);if(a){a.wait.last=e;return}f(e),p(t)},M=e.subscribe(e=>m?m.push(e):g(e)),y=setInterval(()=>h(": ping\n\n"),r);i+=1,n.onWatchers?.(i),u=()=>{if(!c){for(let e of(c=!0,i-=1,n.onWatchers?.(i),M(),clearInterval(y),d.values()))clearTimeout(e.timer);try{l.close()}catch{}}},s.addEventListener("abort",u);try{for(let e of await o?.()??[])f(e)}catch(e){t.logger.error("event stream opening failed",e),u();return}let S=m;for(let e of(m=null,S))g(e)},cancel(){u()}}),{headers:{"Content-Type":"text/event-stream; charset=utf-8","Cache-Control":"no-store","X-Accel-Buffering":"no"}})},get watchers(){return i}}}])},41444,e=>{"use strict";function t(e,t){let n=e.replace(/\s+/g," ").trim();return n.length>t?`${n.slice(0,t-1).trimEnd()}…`:n}let n=["\\*","_"].flatMap(e=>{let t="_"===e?"\\w_":e;return[3,2,1].map(n=>{let a=e.repeat(n);return RegExp(`(?<![${t}])${a}(?![\\s${e}])(.+?)(?<![\\s${e}])${a}(?![${t}])`,"g")})}),a=e=>n.reduce((e,t)=>e.replace(t,"$1"),e),r=/\[([^\]\n]+)\]\(([^)\s]+)\)/g;e.s(["MARKDOWN_LINK",0,r,"PromiseChain",0,()=>{let e=Promise.resolve();return t=>{let n=e.then(()=>t());return e=n.catch(()=>{}),n}},"captionText",0,function(e){let t=[],n=e.replace(/```[\s\S]*?```/g," ").replace(/!\[([^\]]*)\]\([^)]*\)/g,"$1").replace(r,(e,n,r)=>(t.push(`[${a(n.replace(/`/g,""))}](${r})`),`\uE000${t.length-1}\uE000`)),i=[];for(let e of n.split("\n")){let t=e.trim();t&&(/^\|?[\s:|-]+\|[\s:|-]*$|^[-*_]{3,}$/.test(t)||(/\|.*\|/.test(t)&&(t=t.replace(/^\||\|$/g,"").split("|").map(e=>e.trim()).filter(Boolean).join(" · ")),t=a(t.replace(/^#{1,6}\s+/,"").replace(/^>\s?/,"").replace(/^[-*+]\s+/,"• ").replace(/`([^`]*)`/g,"$1")).replace(/\s+/g," "),i.push(t)))}return i.join("\n").replace(/\uE000(\d+)\uE000/g,(e,n)=>t[Number(n)]??"")},"clip",0,t,"errorToString",0,function(e){if(e instanceof Error)return e.message;if("object"!=typeof e||null===e)return String(e);let{message:n,error:a}=e;if("string"==typeof n&&n)return n;if("string"==typeof a&&a)return a;let r=a?.message;if("string"==typeof r&&r)return r;try{return t(JSON.stringify(e),300)}catch{return`${e.constructor?.name??"Object"} thrown without a message`}},"formatBytes",0,function(e){if(e<1024)return`${e} B`;let t=["KB","MB","GB","TB"],n=e/1024,a=0;for(;n>=1024&&a<t.length-1;)n/=1024,a+=1;return`${n.toFixed(+(n<10))} ${t[a]}`},"hostOf",0,function(e){try{return new URL(e).hostname.replace(/^www\./,"")}catch{return null}},"plainText",0,function(e){return e.replace(/```[\s\S]*?```/g," ").replace(/`([^`]*)`/g,"$1").replace(/!?\[([^\]]*)\]\([^)]*\)/g,"$1").replace(/^\s{0,3}(#{1,6}\s+|[-*+]\s+|\d+\.\s+|>\s?)/gm,"").replace(/[^\n]+/g,a).replace(/^\s*\|?[\s:|-]+\|\s*$/gm," ").replace(/\|/g," ").replace(/\s+/g," ").trim()},"slug",0,function(e){return e.toLowerCase().replace(/[^\p{L}\p{N}]+/gu,"-").replace(/^-+|-+$/g,"").slice(0,40)}])},89929,609730,277988,e=>{"use strict";var t=e.i(874321);function n(e,n){return(0,t.constructFrom)(n||e,e)}e.s(["toDate",0,n],609730),e.s(["getTimezoneOffsetInMilliseconds",0,function(e){let t=n(e),a=new Date(Date.UTC(t.getFullYear(),t.getMonth(),t.getDate(),t.getHours(),t.getMinutes(),t.getSeconds(),t.getMilliseconds()));return a.setUTCFullYear(t.getFullYear()),e-a}],89929),e.s(["normalizeDates",0,function(e,...n){let a=t.constructFrom.bind(null,e||n.find(e=>"object"==typeof e));return n.map(a)}],277988)},874321,438220,e=>{"use strict";let t=Symbol.for("constructDateFrom");e.s(["constructFromSymbol",0,t,"millisecondsInDay",0,864e5,"millisecondsInMinute",0,6e4,"millisecondsInWeek",0,6048e5,"minutesInDay",0,1440,"minutesInMonth",0,43200,"minutesInYear",0,525600],438220),e.s(["constructFrom",0,function(e,n){return"function"==typeof e?e(n):e&&"object"==typeof e&&t in e?e[t](n):e instanceof Date?new e.constructor(n):new Date(n)}],874321)},599447,e=>{"use strict";var t=e.i(874321);e.s(["constructNow",0,function(e){return(0,t.constructFrom)(e,Date.now())}])},881237,662001,e=>{"use strict";var t;let n={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXWeeks:{one:"about 1 week",other:"about {{count}} weeks"},xWeeks:{one:"1 week",other:"{{count}} weeks"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}};function a(e){return (t={})=>{let n=t.width?String(t.width):e.defaultWidth;return e.formats[n]||e.formats[e.defaultWidth]}}let r={date:a({formats:{full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},defaultWidth:"full"}),time:a({formats:{full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},defaultWidth:"full"}),dateTime:a({formats:{full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},defaultWidth:"full"})},i={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"};function s(e){return(t,n)=>{let a;if("formatting"===(n?.context?String(n.context):"standalone")&&e.formattingValues){let t=e.defaultFormattingWidth||e.defaultWidth,r=n?.width?String(n.width):t;a=e.formattingValues[r]||e.formattingValues[t]}else{let t=e.defaultWidth,r=n?.width?String(n.width):e.defaultWidth;a=e.values[r]||e.values[t]}return a[e.argumentCallback?e.argumentCallback(t):t]}}let o={ordinalNumber:(e,t)=>{let n=Number(e),a=n%100;if(a>20||a<10)switch(a%10){case 1:return n+"st";case 2:return n+"nd";case 3:return n+"rd"}return n+"th"},era:s({values:{narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},defaultWidth:"wide"}),quarter:s({values:{narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},defaultWidth:"wide",argumentCallback:e=>e-1}),month:s({values:{narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},defaultWidth:"wide"}),day:s({values:{narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},defaultWidth:"wide"}),dayPeriod:s({values:{narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},defaultWidth:"wide",formattingValues:{narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},defaultFormattingWidth:"wide"})};function u(e){return(t,n={})=>{let a,r=n.width,i=r&&e.matchPatterns[r]||e.matchPatterns[e.defaultMatchWidth],s=t.match(i);if(!s)return null;let o=s[0],u=r&&e.parsePatterns[r]||e.parsePatterns[e.defaultParseWidth],l=Array.isArray(u)?function(e,t){for(let n=0;n<e.length;n++)if(t(e[n]))return n}(u,e=>e.test(o)):function(e,t){for(let n in e)if(Object.prototype.hasOwnProperty.call(e,n)&&t(e[n]))return n}(u,e=>e.test(o));return a=e.valueCallback?e.valueCallback(l):l,{value:a=n.valueCallback?n.valueCallback(a):a,rest:t.slice(o.length)}}}let l={ordinalNumber:(t={matchPattern:/^(\d+)(th|st|nd|rd)?/i,parsePattern:/\d+/i,valueCallback:e=>parseInt(e,10)},(e,n={})=>{let a=e.match(t.matchPattern);if(!a)return null;let r=a[0],i=e.match(t.parsePattern);if(!i)return null;let s=t.valueCallback?t.valueCallback(i[0]):i[0];return{value:s=n.valueCallback?n.valueCallback(s):s,rest:e.slice(r.length)}}),era:u({matchPatterns:{narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^b/i,/^(a|c)/i]},defaultParseWidth:"any"}),quarter:u({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},defaultMatchWidth:"wide",parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:"any",valueCallback:e=>e+1}),month:u({matchPatterns:{narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},defaultParseWidth:"any"}),day:u({matchPatterns:{narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},defaultParseWidth:"any"}),dayPeriod:u({matchPatterns:{narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},defaultMatchWidth:"any",parsePatterns:{any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},defaultParseWidth:"any"})};e.s(["defaultLocale",0,{code:"en-US",formatDistance:(e,t,a)=>{let r,i=n[e];if(r="string"==typeof i?i:1===t?i.one:i.other.replace("{{count}}",t.toString()),a?.addSuffix)if(a.comparison&&a.comparison>0)return"in "+r;else return r+" ago";return r},formatLong:r,formatRelative:(e,t,n,a)=>i[e],localize:o,match:l,options:{weekStartsOn:0,firstWeekContainsDate:1}}],881237);let c={};e.s(["getDefaultOptions",0,function(){return c}],662001)},551047,e=>{"use strict";var t=e.i(862061),n=e.i(907855);function a(e){return t._isoDateTime(n.ZodISODateTime,e)}function r(e){return t._isoDate(n.ZodISODate,e)}function i(e){return t._isoTime(n.ZodISOTime,e)}function s(e){return t._isoDuration(n.ZodISODuration,e)}e.s(["date",0,r,"datetime",0,a,"duration",0,s,"time",0,i],691681),e.i(691681),e.s(["ZodISODate",()=>n.ZodISODate,"ZodISODateTime",()=>n.ZodISODateTime,"ZodISODuration",()=>n.ZodISODuration,"ZodISOTime",()=>n.ZodISOTime,"date",0,r,"datetime",0,a,"duration",0,s,"time",0,i],551047)}];
|
|
4
4
|
|
|
@@ -1,47 +1,50 @@
|
|
|
1
|
-
module.exports=[851372,e=>e.a(async(t,o)=>{try{var a=e.i(343747),r=e.i(687388),n=e.i(186304),s=e.i(353885),i=e.i(393189),l=e.i(265143),d=e.i(944971),h=e.i(438188),u=e.i(732395),c=e.i(889034),w=e.i(378884),p=e.i(148831),f=e.i(619898),
|
|
1
|
+
module.exports=[851372,e=>e.a(async(t,o)=>{try{var a=e.i(343747),r=e.i(687388),n=e.i(186304),s=e.i(353885),i=e.i(393189),l=e.i(265143),d=e.i(944971),h=e.i(438188),u=e.i(732395),c=e.i(889034),w=e.i(378884),p=e.i(148831),f=e.i(619898),y=e.i(453569),m=e.i(636882),g=e.i(629668),b=e.i(786025),T=e.i(704161),$=e.i(41444),k=e.i(660948),v=e.i(54282),I=t([l,w,p,f,m,k]);async function x(e,t,o,n){var h,u,c,I,x,R,N,C,M,A,B;let j,_,W,P,L,U,Y,F,D,H,J,q=await (0,b.openWorkspace)(),K=e.trim(),[G,z,Q,V,X,Z,ee,et,eo,{notes:[ea]}]=await Promise.all([(0,m.loadSkills)(q,K),(0,f.listNoteIndex)(),(0,k.listConnectedToolNames)(),(0,p.findPinnedTools)(K),(0,l.listJobBots)(),(0,i.listBotMemory)(K),(0,l.readBotMemoryOn)(),(0,b.readMachineTools)(q),(0,w.listBotWork)(K,o?.thread??null),(0,f.readNotes)([y.PREFERENCES_NOTE],{touch:!1})]),er=X.filter(e=>e.name!==K),en=X.find(e=>e.name===K)??await (0,l.findJobBot)(K),es=[(h=K,u=en,c=o,_=(j=c?.owner??h)===h?"**You** coordinate this thread: its result goes from you to Thursday.":`**${j}** coordinates this thread and brings its result to Thursday.`,W=c?`
|
|
2
2
|
|
|
3
|
-
Current conversation: ${c.caller} → ${h}. Your final text goes back to ${c.caller}.`:"",
|
|
4
|
-
Others know you as: ${(0,d.rosterLine)(u)}`:"",
|
|
3
|
+
Current conversation: ${c.caller} → ${h}. Your final text goes back to ${c.caller}.`:"",P=u?`
|
|
4
|
+
Others know you as: ${(0,d.rosterLine)(u)}`:"",L=O(h,c)?"your tools, the other bots, this machine":`your tools, this machine, and the other bots through ${j}`,`You are ${h}, one of the bots in this thread. ${(0,v.todayLine)()}${P}
|
|
5
5
|
|
|
6
6
|
- **The user** — the one person all of this is for. They talk with Thursday by voice and follow this thread on their screen.
|
|
7
7
|
- **Thursday** — their personal assistant. She talks with them, hands bots the work that takes time, and tells them what comes back.
|
|
8
|
-
- ${
|
|
9
|
-
- **Everyone on it** keeps their own work and conversation; the others see only the messages sent to them.${
|
|
8
|
+
- ${_}
|
|
9
|
+
- **Everyone on it** keeps their own work and conversation; the others see only the messages sent to them.${W}
|
|
10
10
|
|
|
11
|
-
**The job is done, not described.** You are on the user's own computer, with a shell, files and the web, and how you get there is yours: when one way fails, try another; where no tool exists, write one — \`node\` is always here. Before deciding something cannot be done, look at what you have — ${
|
|
11
|
+
**The job is done, not described.** You are on the user's own computer, with a shell, files and the web, and how you get there is yours: when one way fails, try another; where no tool exists, write one — \`node\` is always here. Before deciding something cannot be done, look at what you have — ${L}. Bring back the thing itself — their account, their file, the real result — not a smaller, safer stand-in, and not a note on why not.
|
|
12
12
|
|
|
13
|
-
**Never present a guess as a result.** Thursday says what you return out loud, as fact: say which part is unverified and why.`),(
|
|
13
|
+
**Never present a guess as a result.** Thursday says what you return out loud, as fact: say which part is unverified and why.`),(I=z,x=ea??null,U=[...I].sort((e,t)=>Number((0,y.isAlwaysListed)(t.path))-Number((0,y.isAlwaysListed)(e.path))||(e.path<t.path?-1:+(e.path>t.path))),Y=x?.facts.map(e=>`- ${e.text}`)??[],`## Thursday's memory of the user
|
|
14
14
|
|
|
15
|
-
What Thursday keeps from talking with them.
|
|
15
|
+
What Thursday keeps from talking with them. How they want things done is below: follow what bears on the work; how she talks to them is hers. For anything else about them the job needs, open its note with \`${s.TOOL_NAMES.memory_recall}\`; a fact marked \`said\` came from a call. What you learn about them goes in your answer — Thursday decides what to keep.
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
${y.PREFERENCES_NOTE}:
|
|
18
|
+
${Y.length?Y.join("\n"):"- (nothing yet)"}
|
|
18
19
|
|
|
19
|
-
|
|
20
|
+
Every other note — path — what it is about (facts)
|
|
20
21
|
|
|
21
|
-
${(0,
|
|
22
|
+
${(0,v.noteLines)(U.filter(e=>e.path!==y.PREFERENCES_NOTE))}`),function(e,t){let o=new Set(t.map(e=>`${e.server}/${e.name}`)),a=e.filter(e=>!o.has(`${e.server}/${e.name}`));if(0===a.length)return"";let r=o.size?" The ones you already hold are in your tools instead.":"";return`## Connected tools
|
|
22
23
|
|
|
23
|
-
|
|
24
|
+
${(0,v.mcpToolLines)(a)}
|
|
25
|
+
|
|
26
|
+
Names only: \`${s.TOOL_NAMES.tool_search}\` returns what each one takes, \`${s.TOOL_NAMES.tool_call}\` runs one.${r}`}(Q,V),(R=G,0===R.length?"":`## Skills
|
|
24
27
|
|
|
25
28
|
Written-down ways of doing things. Open one with \`${s.TOOL_NAMES.load_skill}\` before a job it covers, unless its instructions are already in your conversation.
|
|
26
29
|
|
|
27
|
-
${(0,
|
|
30
|
+
${(0,v.skillLines)(R)}`),S(q.cwd,et,n),ee?(N=(0,i.botMemoryFolder)(K),F=(C=Z).entries.length?[...C.entries].sort((e,t)=>e.file<t.file?-1:+(e.file>t.file)).map(({file:e,line:t,at:o})=>{let n=t?` — ${(0,$.clip)(t,r.PROMPT_LINE.botMemory)}`:"";return`- ${e}${n} \xb7 ${(0,a.format)((0,T.toDate)(o),"yyyy-MM-dd")}`}).join("\n"):"Empty.",D=C.total>C.entries.length?`
|
|
28
31
|
|
|
29
|
-
The newest ${C.entries.length} of ${C.total}; \`ls ${
|
|
32
|
+
The newest ${C.entries.length} of ${C.total}; \`ls ${N}\` for the rest.`:"",`## Your memory
|
|
30
33
|
|
|
31
|
-
What you learned on your own earlier jobs, in \`${
|
|
34
|
+
What you learned on your own earlier jobs, in \`${N}/\`: one thing learned to a file, its first line saying what it holds, so a job opens only the one it needs; read by no other bot, up to ${r.BOT_MEMORY_LIMITS.files} files of ${r.BOT_MEMORY_LIMITS.chars.toLocaleString("en-US")} characters each. It is how you get better at this work. When a job teaches you something a later one would otherwise find out again — how a site signs in, the way through its screens, a command that turned out right — or the user asks you to remember how to work, keep it with the date it was true, and fix or delete what proved wrong. It holds how to work, not what a job was about: that is in your answer. No passwords, keys or codes.
|
|
32
35
|
|
|
33
|
-
${
|
|
36
|
+
${F}${D}`):"",(M=`${(0,b.botFolder)(K)}/${r.PATHS.skills.own}`,`## Your own skills
|
|
34
37
|
|
|
35
|
-
A skill in \`${M}/\` is listed to you alone, and read on every step you take, so keep few. Write one only when the job is a kind that comes again — a routine runs it, or your other threads show the same kind of job — and doing it well took a way of working, not a fact your memory can hold. Before writing one, improve the one of yours that covers the job instead. Write it as the skill-creator skill says; the job you just did is its test, so validate it and run no test prompts. Say in one line of your answer which skill you wrote or changed. Any skill outside that folder changes only when the user asks.`),function(e,t){if(!t.open.length&&!t.recent.length)return"";let o=t=>{let o=t.said?` — ${(0,$.clip)(t.said,r.BOT_WORK.said)}`:"",a=t.said?(0,g.pathsIn)(t.said).slice(0,r.BOT_WORK.files):[],n=a.length?` \xb7 ${a.map(e=>`\`${e}\``).join(", ")}`:"";return`- ${t.cut?`[${(0,d.workHandle)(t.id)}] `:""}${(0,
|
|
38
|
+
A skill in \`${M}/\` is listed to you alone, and read on every step you take, so keep few. Write one only when the job is a kind that comes again — a routine runs it, or your other threads show the same kind of job — and doing it well took a way of working, not a fact your memory can hold. Before writing one, improve the one of yours that covers the job instead. Write it as the skill-creator skill says; the job you just did is its test, so validate it and run no test prompts. Say in one line of your answer which skill you wrote or changed. Any skill outside that folder changes only when the user asks.`),function(e,t){if(!t.open.length&&!t.recent.length)return"";let o=t=>{let o=t.said?` — ${(0,$.clip)(t.said,r.BOT_WORK.said)}`:"",a=t.said?(0,g.pathsIn)(t.said).slice(0,r.BOT_WORK.files):[],n=a.length?` \xb7 ${a.map(e=>`\`${e}\``).join(", ")}`:"";return`- ${t.cut?`[${(0,d.workHandle)(t.id)}] `:""}${(0,v.botWorkHead)(t,e)}${o}${n}`},a=(e,t)=>t.length?`${e}
|
|
36
39
|
${t.map(o).join("\n")}`:"",n=[...t.open,...t.recent].some(e=>e.cut)?` A line with an id in brackets was cut short: \`${s.TOOL_NAMES.thread_recall}\` opens that one whole, for when this job builds on it.`:"";return`## Your other threads
|
|
37
40
|
|
|
38
41
|
Your threads besides this one. You remember none of them here: each line is where it stands, your own last words there, and the files those words name.${n}
|
|
39
42
|
|
|
40
|
-
${[a("Open",t.open),a("Ended",t.recent)].filter(Boolean).join("\n")}`}(
|
|
43
|
+
${[a("Open",t.open),a("Ended",t.recent)].filter(Boolean).join("\n")}`}(K,eo),function(e,t,o){if(0===e.length)return"";let a=O(t,o)?`When part of the job is another bot's strength, bring it in with \`${s.TOOL_NAMES.send_message}\` rather than rebuilding it yourself.`:`When part of the job is another bot's strength, say so in your answer: ${o?.owner??"the coordinator"} brings them in.`;return`## Bots
|
|
41
44
|
|
|
42
45
|
${e.map(e=>`- **${e.name}** — ${(0,d.rosterLine)(e)}`).join("\n")}
|
|
43
46
|
|
|
44
|
-
These lines were written for the user: where one says "you", it means them. ${a}`}(
|
|
47
|
+
These lines were written for the user: where one says "you", it means them. ${a}`}(er,K,o),(A=K,B=o,H=B?.caller??"whoever asked",J=`Write in the user's language, and name the paths of finished work. In Markdown, reference images by absolute route (\`/api/file/${r.PATHS.artifacts}/…\`).`,O(A,B)?`## Working together
|
|
45
48
|
|
|
46
49
|
Nobody sees your work but you, and you see only what others send you, so whatever crosses between you has to stand on its own. A request says what is wanted, what is already known or done, and where the files are; an answer gives exact values, file paths and what is still unverified. Tell a bot you handed work to when what it depends on changes: it reads that before its next step. End your turn when you have nothing more to do now: answers arrive as new messages and wake you. The bots you bring in answer only to you: when one needs another bot's work or something from the user, it says so in its answer, and you decide.
|
|
47
50
|
|
|
@@ -49,13 +52,13 @@ Before you hand anything out, check what each part needs that only the user know
|
|
|
49
52
|
|
|
50
53
|
While work you handed out is still out, your result waits for it: end your turn and each answer wakes you, with a line on what is still out; write the result once everything you asked for is in. Bring what you received together into one result for Thursday: what was done, where it is, what you decided that the request did not say, and what is still open, at the detail the user asked for. Every file you name in it is drawn under your words in the thread and waits in the screen's corner for the user to open, so name each one you want them to see — the page to read first, then the rest.
|
|
51
54
|
|
|
52
|
-
${
|
|
55
|
+
${J}`:`## Working together
|
|
53
56
|
|
|
54
|
-
Nobody sees your work but you: ${
|
|
57
|
+
Nobody sees your work but you: ${H} sees only your final text, so it has to stand on its own — exact values, file paths and what is still unverified. ${B?.owner??"The coordinator"} brings the other bots in, not you.
|
|
55
58
|
|
|
56
|
-
Your final text is your answer to ${
|
|
59
|
+
Your final text is your answer to ${H}, and all they see of your work: give them everything they need to carry on. When you cannot go on without something — from them, from another bot, or a fact only the user has, such as a date, a name, a place or an amount — end with that question instead of guessing it or leaving a blank; ${H} gets it for you, and their reply brings you back with all you have done still in front of you.
|
|
57
60
|
|
|
58
|
-
${
|
|
61
|
+
${J}`),E(K,t)].filter(Boolean).join("\n\n");return(0,v.logPromptSize)("bot",es),{text:es}}[l,w,p,f,m,k]=I.then?(await I)():I;let E=(e,t)=>{let o=t?.trim();return o?(0,h.findBotSeed)(e)?.systemPrompt.trim()===o||(0,u.wasSeedRole)(e,o)?`## Your role
|
|
59
62
|
|
|
60
63
|
What this bot is for, as the app sets it up. Where it and anything above disagree, it wins. The form it names is where to start: a job that asks for another — one page, slides, a sheet, a few lines — gets that one.
|
|
61
64
|
|
|
@@ -63,7 +66,7 @@ ${o}`:`## Owner's instructions
|
|
|
63
66
|
|
|
64
67
|
Written by the person this bot works for. Where these and anything above disagree, these win.
|
|
65
68
|
|
|
66
|
-
${o}`:""},
|
|
69
|
+
${o}`:""},S=(e,t,o)=>{var a;let i,l;return`## Environment
|
|
67
70
|
|
|
68
71
|
Current Cwd: ${e}
|
|
69
72
|
Platform: ${process.platform}
|
|
@@ -80,7 +83,7 @@ Your workspace, where \`${s.TOOL_NAMES.bash}\` runs. Everything you write goes i
|
|
|
80
83
|
|
|
81
84
|
Inside the workspace, set up whatever the job needs yourself; installing anything machine-wide waits for the user's yes. Never the directory above the workspace — it is the app's, not the user's; outside the workspace, only where the user pointed you.
|
|
82
85
|
|
|
83
|
-
${(0,n.botGuideLine)()}`};function O(e,t){return!t||(0,c.isCoordinatorSeat)(e,t.owner,t.caller)}e.s(["buildJoinOpening",0,function(e){if(!e.job)return[{type:"text",text:`You are ${e.bot}. The user writes to you in this thread, which ${e.coordinator} coordinates.`},{type:"text",text:`## The thread's first request
|
|
86
|
+
${(0,n.botGuideLine)()}`};function O(e,t){return!t||(0,c.isCoordinatorSeat)(e,t.owner,t.caller)}e.s(["REFLECT_NOTE",0,'The job is done and your answer has gone back. Look back over it once before you go. If it taught you how to work — the way through a site, a command that turned out right, a wrong turn and what got past it — that a later job would otherwise find out again, keep it as Your memory says: change the file that already covers it rather than add one, and fix or delete what this job proved wrong. If this kind of job comes again and a way of working carried it, improve or write a skill of your own as Your own skills says. Do no more of the job and send nothing: what you write now reaches nobody. With nothing worth keeping, answer "Nothing to keep." and stop.',"buildJoinOpening",0,function(e){if(!e.job)return[{type:"text",text:`You are ${e.bot}. The user writes to you in this thread, which ${e.coordinator} coordinates.`},{type:"text",text:`## The thread's first request
|
|
84
87
|
|
|
85
88
|
${e.request.trim()}`}];let{from:t}=e.job;return[{type:"text",text:`You are ${e.bot}. ${t} brings you into this thread, ${t===e.coordinator?"which they coordinate":`which ${e.coordinator} coordinates`}.`},{type:"text",text:`## ${t} → ${e.bot}: the job
|
|
86
89
|
|
|
@@ -89,10 +92,10 @@ ${e.job.text.trim()}`}]},"buildThreadOpening",0,function(e){if(e.routine){let{wh
|
|
|
89
92
|
${e.request.trim()}`}]}let t="user"===e.from?"The user":"Thursday";return[{type:"text",text:`You are ${e.bot}. ${t} hands you this thread${"user"===e.from?" on screen":" during a call"}.`},{type:"text",text:`## ${t} → ${e.bot}: the job
|
|
90
93
|
|
|
91
94
|
${e.request.trim()}`}]},"loadBotPrompt",0,x]),o()}catch(e){o(e)}},!1),235190,e=>{"use strict";e.s(["asWords",0,function(e,t,o=e=>e){let a=[];for(let r of e){if("tool"===r.role)continue;if("system"===r.role){a.push(r);continue}if("user"===r.role){a.push("string"==typeof r.content?{role:"user",content:o(r.content)}:{...r,content:r.content.map(e=>"text"===e.type?{...e,text:o(e.text)}:e)});continue}let e="string"==typeof r.content?[{type:"text",text:r.content}]:r.content,n=e.flatMap(e=>"text"===e.type?[e.text]:[]).join("\n").trim()||e.flatMap(e=>"tool-call"===e.type?[t(e.toolName,e.input)]:[]).join("\n");if(!n)continue;let s=a.at(-1);s?.role==="assistant"&&"string"==typeof s.content?a[a.length-1]={role:"assistant",content:`${s.content}
|
|
92
|
-
${o(n)}`}:a.push({role:"assistant",content:o(n)})}return a}])},585099,e=>e.a(async(t,o)=>{try{var a=e.i(666680),r=e.i(68356),n=e.i(847841),s=e.i(687388),i=e.i(159479),l=e.i(386075),d=e.i(851372),h=e.i(316172),u=e.i(353885),c=e.i(235190),w=e.i(944971),p=e.i(527608),f=e.i(786025),
|
|
95
|
+
${o(n)}`}:a.push({role:"assistant",content:o(n)})}return a}])},585099,e=>e.a(async(t,o)=>{try{var a=e.i(666680),r=e.i(68356),n=e.i(847841),s=e.i(687388),i=e.i(159479),l=e.i(386075),d=e.i(851372),h=e.i(316172),u=e.i(353885),c=e.i(235190),w=e.i(944971),p=e.i(527608),f=e.i(786025),y=e.i(640911),m=e.i(388439),g=e.i(265143),b=e.i(889034),T=e.i(378884),$=t([i,l,d,h,g,T]);[i,l,d,h,g,T]=$.then?(await $)():$;let E=s.BOT_RUN.steps;async function k(e,t){var o;let a,c,$,k,x,N,C,M,A,B=t.parent??null,j=await (0,g.findJobBot)(e.bot.trim()),_=j?.name??e.bot.trim(),W=e=>t.emit({...e,bot:_,parent:B});if(!j)return void await W({type:"error",message:`No bot named "${e.bot}". Use a name from the list.`,retry:!1});let P=e.messages,L=await O(j),U=t.threadId?await (0,T.findThread)(t.threadId):null,[Y,{own:F,artifacts:D}]=await Promise.all([t.threadId?(0,f.openJobScratch)(t.threadId,U?.label??"job"):null,(0,f.openBotFolders)(_)]),H=t.session??(t.threadId?(0,f.botBrowserSession)(t.threadId,_):null),[J,q]=await Promise.all([(0,d.loadBotPrompt)(_,j.systemPrompt,{thread:t.threadId??null,owner:t.owner,caller:t.caller},{scratch:Y,own:F,artifacts:D}),(0,i.loadTools)({target:"bot",bot:_,thread:t.threadId??null,session:H,model:L})]),K=Math.min(await (0,l.compactBudget)(L.ref,j.compactAt),t.contextBudget||1/0),G=await (0,l.runEffort)(L.ref,j.effort),z=(0,l.promptCacheOptions)(L.ref,t.threadId?R(t.threadId,_):null),Q=!1,V=(0,b.isCoordinatorSeat)(_,t.owner,t.caller)?{...q,[u.TOOL_NAMES.send_message]:(0,n.tool)({description:h.sendMessageSpec.description,inputSchema:h.sendMessageSpec.parameters,execute:async(e,o)=>{let a=await t.send({...e,id:o.toolCallId});return"question"===e.kind&&(Q=!0),a}})}:q,X=new Set,Z=(o=s.BOT_RUN.silenceMs,c=new AbortController,$=0,k=!1,x=()=>{clearTimeout(a),a=void 0,k||$>0||(a=setTimeout(()=>{c.abort(new DOMException(`The model sent nothing for ${Math.round(o/6e4)} minutes.`,"TimeoutError"))},o))},{signal:c.signal,touch:x,hold:()=>{$+=1,x()},release:()=>{$=Math.max(0,$-1),x()},end:()=>{k=!0,x()}});for(let[e,o]of Object.entries(V)){let a=o.execute;a&&(o.execute=(o,r)=>{let n=(async()=>{t.signal?.throwIfAborted(),await W({type:"tool",id:r.toolCallId,name:e,input:o}),Z.hold();try{t.signal?.throwIfAborted();let n=await a(o,r);if(n&&"object"==typeof n&&Symbol.asyncIterator in n){let e;for await(let t of n)e=t;n=e}return await W({type:"tool-result",id:r.toolCallId,name:e,output:n}),n}catch(t){throw await W({type:"tool-result",id:r.toolCallId,name:e,output:(0,l.modelErrorToString)(t),error:!0}),t}finally{Z.release()}})();return X.add(n),n.finally(()=>X.delete(n)).catch(()=>{}),n})}let ee=Promise.resolve(),et=()=>{},eo=0,ea=new r.ToolLoopAgent({model:L.model,instructions:J.text,tools:V,reasoning:G,providerOptions:z,stopWhen:[(0,r.stepCountIs)(t.steps??E),()=>Q],prepareStep:async({stepNumber:e,steps:o,messages:a})=>{await ee,t.signal?.throwIfAborted();let r={},n=(o.at(-1)?.usage.inputTokens??0)||a.reduce((e,t)=>e+(0,m.estimateTokens)("string"==typeof t.content?t.content:JSON.stringify(t.content))+4,0);eo=n;let s=a,i=t.compactNow?.()??!1;if((n>K||i)&&a.length>2){Z.hold();let e=await I(L.model,V,a,{signal:t.signal,budget:K,instructions:J.text,providerOptions:z}).finally(Z.release);y.logger.debug(`compacted ${a.length} messages at ${n} tokens (budget ${K})`);let o=`${e.text}${await v(U?.id??null,a,Y)}`;await W({type:"compact",text:o,usage:e.usage,messages:a.length,tokens:n}),s=[a[0],{role:"user",content:o}]}let l=e>0?await t.notes?.()??[]:[];return(l.length&&(s=[...s,...l.map(e=>({role:"user",content:e}))]),s===a)?r:{...r,messages:s}}}),er=(N=[],C=[],M=!1,{push(e){let t=C.shift();t?t(e):N.push(e)},take(){let e=N.shift();return e?Promise.resolve(e):M?Promise.resolve(null):new Promise(e=>C.push(e))},end(){for(let e of(M=!0,C.splice(0)))e(null)}}),en=t.signal?AbortSignal.any([t.signal,Z.signal]):Z.signal;Z.touch();let es=new AbortController,ei=AbortSignal.any([en,es.signal]);try{A=await ea.stream({messages:P,abortSignal:ei,onStepEnd:e=>{ee=new Promise(e=>{et=e}),er.push({messages:function(e){if(!e.toolResults.length)return e.response.messages;let t=new Map(e.toolResults.map(e=>[e.toolCallId,e.output]));return e.response.messages.map(e=>"tool"!==e.role?e:{...e,content:e.content.map(e=>{if("tool-result"!==e.type||!t.has(e.toolCallId))return e;let o=t.get(e.toolCallId);return{...e,output:"string"==typeof o?{type:"text",value:o}:{type:"json",value:o}}})})}(e),usage:S(e.usage)})}})}catch(e){throw Z.end(),es.abort(),await Promise.allSettled([...X]),e}let el="",ed="",eh=null,eu=e=>{y.logger.error(`${_}: the model run broke`,e);let t=(0,l.modelErrorToString)(e),o=!(0,l.isProviderRefusal)(e),a=(0,l.isKeyRefused)(e)?{refused:L.ref.provider}:{};if(!(0,l.isContextOverflow)(e))return{type:"error",message:t,retry:o,...a};let r=Math.floor(Math.min(K,eo||K)*s.BOT_RUN.overflowShrink);return{type:"error",message:t,budget:Math.max(w.COMPACT_AT_MIN,r),retry:o,...a}};en.addEventListener("abort",()=>{er.end(),et()},{once:!0});try{for await(let e of A.stream)switch(Z.touch(),e.type){case"start-step":ed="",el="";break;case"text-delta":el+=e.text;break;case"text-end":{let e=el.trim();if(el="",!e)break;ed=[ed,e].filter(Boolean).join("\n\n"),await W({type:"text",text:e});break}case"tool-call":await W({type:"tool",id:e.toolCallId,name:e.toolName,input:e.input,providerExecuted:e.providerExecuted,providerOptions:e.providerMetadata});break;case"tool-result":await W({type:"tool-result",id:e.toolCallId,name:e.toolName,output:e.output});break;case"tool-error":await W({type:"tool-result",id:e.toolCallId,name:e.toolName,output:(0,l.modelErrorToString)(e.error),error:!0});break;case"finish-step":{eh=e.finishReason;let t=await er.take();t&&await W({type:"step",...t,budget:K}),et();break}case"abort":if(t.signal?.aborted)return;await W(eu(e.reason??"The model stopped sending."));return;case"error":await W(eu(e.error));return}}finally{es.abort(),er.end(),Z.end(),et(),await Promise.allSettled([...X]),H&&(0,p.renewSignIns)(H).catch(e=>y.logger.warn(`${_}: kept sign-ins were not renewed`,e))}try{await A.finalStep}catch(e){if(t.signal?.aborted)return;await W(eu(e));return}"content-filter"===eh?await W({type:"error",message:"The provider's content filter stopped the response.",retry:!1}):await W({type:"turn-end",text:ed,stopped:!Q&&("length"===eh||"error"===eh||"tool-calls"===eh)})}async function v(e,t,o){try{let a=e?await (0,T.listWrittenPaths)(e):(0,T.writtenPathsIn)(t.map(e=>e.content)),r=await (0,f.filesOnDisk)(a,o);if(!r.length)return"";let n=r.slice(-s.BOT_RUN.compactFiles),i=r.length-n.length,l=n.map(e=>`- ${e}`);return i&&l.unshift(`- …and ${i} older ones`),`
|
|
93
96
|
|
|
94
97
|
Files this job has on disk now — open one rather than fetching again what is in it:
|
|
95
|
-
${l.join("\n")}`}catch(e){return
|
|
98
|
+
${l.join("\n")}`}catch(e){return y.logger.warn("files under the summary could not be listed",e),""}}async function I(e,t,o,a){let r;try{return await x(e,t,o,a)}catch(e){if(a.signal?.aborted)throw e;r=e}if((0,l.isContextOverflow)(r)){let n=(0,c.asWords)(o,(e,t)=>`${e}: ${(0,T.argumentLine)(e,t)}`);try{return await x(e,t,n,a)}catch(e){if(a.signal?.aborted)throw e;r=e}}throw Error(`Could not compact the context (${(0,l.modelErrorToString)(r)}).`,{cause:r})}async function x(e,t,o,a){let n,{text:i,usage:l}=await (0,r.generateText)({model:e,instructions:a.instructions,tools:t,toolChoice:"none",messages:[...o,{role:"user",content:(n=(e=>{let{min:t,max:o,perTokens:a}=s.BOT_RUN.summaryWords;return Math.min(o,Math.max(t,Math.round(e/a)))})(a.budget),`Compact your context. The first message above — who handed you the job, and the job — stays exactly as it is. Everything after it is replaced by what you write now, and you carry on from that first message and this alone; nothing else above can be read again. Write it for a fresh copy of you that has your tools, your instructions and that first message, but has seen none of the rest.
|
|
96
99
|
|
|
97
100
|
Cover all of it, and prefer a fact over a description of a fact:
|
|
98
101
|
|
|
@@ -105,9 +108,9 @@ Cover all of it, and prefer a fact over a description of a fact:
|
|
|
105
108
|
|
|
106
109
|
Plain text, under ${n} words. No preamble, no headings about the summary itself, no account of how you have been going.`)}],abortSignal:a.signal,timeout:s.BOT_RUN.silenceMs,providerOptions:a.providerOptions}),d=i.trim();if(!d)throw Error("The summary of the context came back empty, so there is nothing to carry on from.");return{text:`Everything between the first message and here was compacted. Below is your own summary of it; carry on from the first message and this.
|
|
107
110
|
|
|
108
|
-
${d}`,usage:
|
|
109
|
-
${t}`).digest("hex").slice(0,32);function O(e,t={}){return e.provider&&e.model?(0,l.getTextModel)({provider:e.provider,model:e.model}):(0,l.resolveDefaultModel)(void 0,t).then(l.getTextModel)}e.s(["resolveModel",0,O,"resumeTranscript",0,function(e,t=new Map){let o=new Map,a=new Set;for(let t of e)if(("tool"===t.role||"assistant"===t.role)&&Array.isArray(t.content))for(let e of t.content)"tool-result"===e.type&&(o.has(e.toolCallId)||o.set(e.toolCallId,e),"assistant"===t.role&&a.add(e.toolCallId));let r=[],n=new Set;for(let s of e){if("tool"===s.role){let e=s.content.filter(e=>"tool-result"!==e.type);e.length&&r.push({...s,content:e});continue}if("assistant"!==s.role||"string"==typeof s.content){r.push(s);continue}let e=[],i=[];for(let r of s.content){if("tool-call"!==r.type){i.push(r);continue}if(n.has(r.toolCallId))continue;let s=r.input;if("string"==typeof s)try{s=JSON.parse(s)}catch{s=void 0}if(!r.toolCallId||void 0===s){i.push({type:"text",text:"A tool argument stream was interrupted before a complete call was recorded. Inspect the saved work before continuing."});continue}let l=r.toolName===u.TOOL_NAMES.send_message?t.get(r.toolCallId):void 0,d=o.get(r.toolCallId)??(l?{type:"tool-result",toolCallId:r.toolCallId,toolName:r.toolName,output:{type:"json",value:l}}:void 0);if(r.providerExecuted&&(!d||!a.has(r.toolCallId))){i.push({type:"text",text:d?`The provider operation ${r.toolName} returned this data before its native continuation was interrupted: ${JSON.stringify(d.output)}`:`The provider operation ${r.toolName} was interrupted without a recorded result. Its remote execution state is unknown.`});continue}n.add(r.toolCallId),i.push({...r,input:s}),a.has(r.toolCallId)||e.push(d??{type:"tool-result",toolCallId:r.toolCallId,toolName:r.toolName,output:{type:"text",value:"No result: execution was interrupted before a result was recorded. The outcome is unknown. Inspect the current state before repeating the action."}})}i.length&&r.push({...s,content:i}),e.length&&r.push({role:"tool",content:e})}return r},"runBot",0,
|
|
110
|
-
${t}`;async function k(e){let t=await (0,m.findJobBot)(e.bot);(!t||t.disabled)&&(0,w.publicError)("Choose an enabled bot.");let{from:o,routine:a,...r}={...e,bot:t.name},n=(0,i.buildThreadOpening)({bot:r.bot,request:r.request,from:o,routine:a}),s=await (0,$.insertThread)({...r,routineId:a?.id??null,startedBy:a?null:o,opening:n});return await x(s.id),s.id}async function I(e,t,o="user",a,r){let n=null;return await _(e,async()=>{let s=await (0,$.findThread)(e);if(s||(0,w.publicError)("No such thread."),a){let t=(await (0,b.listRoomWork)(e)).find(e=>e.bot.toLowerCase()===a.trim().toLowerCase());t&&t.bot!==T.ROOM_THURSDAY||(0,w.publicError)("Choose a participant in this thread."),a=t.bot}t.trim()===g.THREAD_CONTINUE&&(0,g.isAppStop)(s.pending)?(await (0,b.resumeRoom)(e),(await (0,b.listRoomWork)(e)).some(e=>"queued"===e.state)||(n=await (0,b.tellRoom)(e,"Continue from the saved conversation.","user"===o?T.ROOM_USER:T.ROOM_THURSDAY,a,void 0,!1))):n=await (0,b.tellRoom)(e,t,"user"===o?T.ROOM_USER:T.ROOM_THURSDAY,a,r)}),await x(e),n}async function x(e){await _(e,async()=>{for(let t=0;t<2;t++){let t;for(;t=await (0,b.claimRoomWork)(e);)!function(e){let t,o=new AbortController,a=new Promise(e=>{t=e});W.set(e.id,{threadId:e.threadId,stop:o,done:a}),O(e,o.signal).catch(t=>c.logger.error(`thread ${e.threadId}: participant`,t)).finally(()=>{W.delete(e.id),t(),x(e.threadId).catch(t=>c.logger.error(`thread ${e.threadId}: scheduling`,t))})}(t);await (0,b.settleRoom)(e)}})}async function O(e,t){let o=await S(e,t);if(o?.failure?.retry&&!t.aborted&&(await (0,b.noteRoomBreak)(e,o.failure.message),await (0,a.setTimeout)(n.BOT_RUN.retryMs,void 0,{signal:t}).catch(()=>{}),t.aborted||(o=await S(e,t,!1))),!o||t.aborted)return;let s=o.failure?.message,i=o.ending;if(s||!i||i.stopped){let t=s??"The turn was interrupted. Continue from the saved conversation.";_(e.threadId,async()=>{let a=(await (0,b.listRoomWork)(e.threadId)).find(t=>t.id===e.id);if(a?.state!=="running"||a.generation!==e.generation)return;let r=N(e.threadId);await (0,b.pauseRoom)(e.threadId,t,o.failure?.refused),await r}).catch(t=>c.logger.error(`thread ${e.threadId}: pausing`,t));return}await (0,b.finishRoomWork)(e,i.text);let w=await (0,$.findThread)(e.threadId);if(w?.status==="done"){let e=(0,f.plainText)(w.outcome??"").slice(0,n.FINISHED_NOTICE.words);r.presence.watching||await (0,l.isAnyCallLive)()||(0,u.desktopNotify)(w.label,e);let t=await (0,h.filesOnDisk)((0,d.pathsIn)(w.outcome??""),null);r.appEvents.emit({type:"finished",threadId:w.id,label:w.label,bot:w.bot,words:e,paths:(0,d.leadFirst)(t)})}}async function S(e,t,o=!0){let a=new U(e,t),r=null,n=null;try{let s=await (0,$.findThread)(e.threadId);if(!s)return null;if((await (0,b.listParticipantTranscript)(e.threadId,e.bot)).length||await (0,b.joinRoom)(e,t=>(0,i.buildJoinOpening)({bot:e.bot,coordinator:s.bot,job:t,request:s.request})),await (0,b.consumeRoomInbox)(e),o&&(0,T.isCoordinatorSeat)(e.bot,s.bot,e.caller)){let t=await (0,b.roomBoard)(e);t&&await (0,b.appendRoomMessage)(e.threadId,{bot:e.bot,parent:e.id,role:"user",content:t,hidden:!0})}let l=await (0,b.listParticipantTranscript)(e.threadId,e.bot);await (0,y.runBot)({bot:e.bot,messages:(0,y.resumeTranscript)(l,await (0,b.listRoomReceipts)(e.threadId,e.bot,l))},{signal:t,threadId:e.threadId,parent:e.id,caller:e.caller,owner:s.bot,contextBudget:await (0,b.roomContextBudget)(e.threadId,e.bot),compactNow:()=>P.delete(L(e.threadId,e.bot)),session:(0,h.botBrowserSession)(e.threadId,e.bot),notes:()=>(0,b.consumeRoomInbox)(e),send:async o=>{t.throwIfAborted();let a=o.to.trim();if(a.toLowerCase()===T.ROOM_THURSDAY.toLowerCase())a=T.ROOM_THURSDAY;else{let e=await (0,m.findJobBot)(a);(!e||e.disabled)&&(0,w.publicError)(`No enabled bot named "${a}".`),a=e.name}let r=await (0,b.sendRoomMessage)(e,{...o,to:a});return x(e.threadId).catch(e=>c.logger.error("room message scheduling",e)),r},emit:async o=>{(!t.aborted||"tool-result"===o.type)&&(await a.on(o),"step"===o.type&&await (0,$.addThreadUsage)(e.threadId,o.usage,e.bot===s.bot?{tokens:o.usage.input,budget:o.budget}:null),"compact"===o.type&&await (0,$.addThreadUsage)(e.threadId,o.usage),"turn-end"===o.type&&(r=o),"error"===o.type&&(n={message:o.message,retry:o.retry,refused:o.refused},o.budget&&await (0,b.lowerRoomContextBudget)(e,o.budget)))}})}catch(o){t.aborted||(c.logger.error(`thread ${e.threadId}: ${e.bot} broke`,o),n={message:(0,s.modelErrorToString)(o),retry:!(0,w.isPublicError)(o)&&!(0,s.isProviderRefusal)(o)})}return{ending:r,failure:n}}class U{work;signal;lane;assistant;tool;parts;calls;results;constructor(e,t){this.work=e,this.signal=t,this.lane=(0,f.PromiseChain)(),this.assistant=null,this.tool=null,this.parts={assistant:[],tool:[]},this.calls=new Set,this.results=new Set}async write(e,t,o=!1){let a={bot:this.work.bot,parent:this.work.id,role:t.role,content:t.content,compact:o,note:o};return null===e?(0,b.appendRoomMessage)(this.work.threadId,a):(await (0,$.upsertMessage)(this.work.threadId,e,a),e)}on(e){return this.lane(async()=>{if(!this.signal.aborted||"tool-result"===e.type)if("text"===e.type)this.parts.assistant.push({type:"text",text:e.text}),this.assistant=await this.write(this.assistant,{role:"assistant",content:this.parts.assistant});else if("tool"===e.type){if(this.calls.has(e.id)){let t=this.parts.assistant.find(t=>"tool-call"===t.type&&t.toolCallId===e.id);t&&"tool-call"===t.type&&e.providerOptions&&(t.providerOptions=e.providerOptions,this.assistant=await this.write(this.assistant,{role:"assistant",content:this.parts.assistant}));return}this.calls.add(e.id),this.parts.assistant.push({type:"tool-call",toolCallId:e.id,toolName:e.name,input:e.input,...e.providerExecuted?{providerExecuted:!0}:{},...e.providerOptions?{providerOptions:e.providerOptions}:{}}),this.assistant=await this.write(this.assistant,{role:"assistant",content:this.parts.assistant})}else if("tool-result"===e.type){if(this.results.has(e.id))return;this.results.add(e.id),this.parts.tool.push({type:"tool-result",toolCallId:e.id,toolName:e.name,output:e.error?{type:"error-text",value:String(e.output)}:"string"==typeof e.output?{type:"text",value:e.output}:{type:"json",value:e.output}}),this.tool=await this.write(this.tool,{role:"tool",content:this.parts.tool})}else if("step"===e.type){let t=[this.assistant,this.tool];for(let[o,a]of e.messages.entries())await this.write(t[o]??null,a);let o=t.slice(e.messages.length).filter(e=>null!==e);o.length&&await (0,$.deleteMessages)(this.work.threadId,o),this.assistant=this.tool=null,this.parts={assistant:[],tool:[]}}else"compact"===e.type&&await this.write(null,{role:"user",content:e.text},!0)})}}async function N(e){let t=[...W.values()].filter(t=>t.threadId===e);for(let e of t)e.stop.abort();await Promise.all(t.map(e=>e.done))}async function C(e){await _(e,async()=>{let t=await (0,$.findThread)(e);t||(0,w.publicError)("No such thread."),t.endedAt&&(0,w.publicError)("That thread has already ended."),await (0,b.cancelRoom)(e),await (0,$.updateThread)(e,{status:"cancelled",outcome:null,pending:null,seen:!0,endedAt:new Date}),await N(e),await (0,h.closeJobShell)(e)})}async function M(e){return _(e,()=>E(e))}async function E(e,t){let o=await (0,$.findThread)(e);await (0,b.cancelRoom)(e),await N(e),await (0,h.removeJobBrowsers)(e,t);let a=await (0,$.deleteThread)(e);return a&&o&&await (0,h.removeJobScratch)(e,o.label),a}async function R(e){let t,o=e?.getTime(),a=e=>void 0===o||(e.endedAt??e.updatedAt).getTime()<o,r=0,n=!1;for(let e of(await (0,$.listThreadFolders)()))("done"===e.status||"cancelled"===e.status)&&a(e)&&await _(e.id,async()=>{let o=await (0,$.findThread)(e.id);o?.status!=="done"&&o?.status!=="cancelled"||a(o)&&(n||(n=!0,t=await (0,h.listJobBrowsers)()??void 0),await E(e.id,t)&&(r+=1))});return t&&await (0,h.pruneJobFiles)(),r}async function A(){let e=Date.now()-n.WORKSPACE_KEEP.forMs,t=t=>("done"===t.status||"cancelled"===t.status)&&(t.endedAt??t.updatedAt).getTime()<e,o=new Set(await (0,h.listScratchFolders)()),a=[];for(let e of(await (0,$.listThreadFolders)())){let r=(0,h.jobScratch)(e.id,e.label);o.delete(r)&&t(e)&&await _(e.id,async()=>{let o=await (0,$.findThread)(e.id);o&&t(o)&&(await (0,h.closeHiddenBrowser)(e.id),await (0,h.removeJobScratch)(e.id,e.label),a.push(r))})}return a.push(...await (0,h.removeUnchangedFolders)([...o])),await (0,h.pruneJobFiles)(),a.length&&c.logger.info(`cleared ${a.length} old job folder(s): ${a.join(", ")}`),a}async function j(){for(let e of(await (0,$.listRunningThreadIds)()))await _(e,async()=>{[...W.values()].some(t=>t.threadId===e)||(await (0,$.findThread)(e))?.status==="running"&&await (0,b.pauseRoom)(e,"The server restarted. Resume from the saved conversation.")})}async function B(e){let t=await (0,$.listRunningThreadIds)();await Promise.all(t.map(t=>_(t,async()=>{(await (0,$.findThread)(t))?.status==="running"&&(await N(t),await (0,b.pauseRoom)(t,e))})))}e.s(["answerThread",0,I,"askCompact",0,function(e,t){P.add(L(e,t))},"cancelThread",0,C,"pauseThreads",0,B,"removeFinishedThreads",0,R,"removeThread",0,M,"startThread",0,k,"sweepJobFiles",0,A,"sweepThreads",0,j]),o()}catch(e){o(e)}},!1),167004,e=>{"use strict";var t=e.i(874533),o=e.i(687388);let a=`on run argv
|
|
111
|
+
${d}`,usage:S(l)}}let S=e=>({input:e.inputTokens??0,output:e.outputTokens??0,cacheRead:e.inputTokenDetails?.cacheReadTokens??0,cacheWrite:e.inputTokenDetails?.cacheWriteTokens??0}),R=(e,t)=>(0,a.createHash)("sha256").update(`${e}
|
|
112
|
+
${t}`).digest("hex").slice(0,32);function O(e,t={}){return e.provider&&e.model?(0,l.getTextModel)({provider:e.provider,model:e.model}):(0,l.resolveDefaultModel)(void 0,t).then(l.getTextModel)}e.s(["resolveModel",0,O,"resumeTranscript",0,function(e,t=new Map){let o=new Map,a=new Set;for(let t of e)if(("tool"===t.role||"assistant"===t.role)&&Array.isArray(t.content))for(let e of t.content)"tool-result"===e.type&&(o.has(e.toolCallId)||o.set(e.toolCallId,e),"assistant"===t.role&&a.add(e.toolCallId));let r=[],n=new Set;for(let s of e){if("tool"===s.role){let e=s.content.filter(e=>"tool-result"!==e.type);e.length&&r.push({...s,content:e});continue}if("assistant"!==s.role||"string"==typeof s.content){r.push(s);continue}let e=[],i=[];for(let r of s.content){if("tool-call"!==r.type){i.push(r);continue}if(n.has(r.toolCallId))continue;let s=r.input;if("string"==typeof s)try{s=JSON.parse(s)}catch{s=void 0}if(!r.toolCallId||void 0===s){i.push({type:"text",text:"A tool argument stream was interrupted before a complete call was recorded. Inspect the saved work before continuing."});continue}let l=r.toolName===u.TOOL_NAMES.send_message?t.get(r.toolCallId):void 0,d=o.get(r.toolCallId)??(l?{type:"tool-result",toolCallId:r.toolCallId,toolName:r.toolName,output:{type:"json",value:l}}:void 0);if(r.providerExecuted&&(!d||!a.has(r.toolCallId))){i.push({type:"text",text:d?`The provider operation ${r.toolName} returned this data before its native continuation was interrupted: ${JSON.stringify(d.output)}`:`The provider operation ${r.toolName} was interrupted without a recorded result. Its remote execution state is unknown.`});continue}n.add(r.toolCallId),i.push({...r,input:s}),a.has(r.toolCallId)||e.push(d??{type:"tool-result",toolCallId:r.toolCallId,toolName:r.toolName,output:{type:"text",value:"No result: execution was interrupted before a result was recorded. The outcome is unknown. Inspect the current state before repeating the action."}})}i.length&&r.push({...s,content:i}),e.length&&r.push({role:"tool",content:e})}return r},"runBot",0,k]),o()}catch(e){o(e)}},!1),39803,e=>e.a(async(t,o)=>{try{var a=e.i(136340),r=e.i(380690),n=e.i(687388),s=e.i(386075),i=e.i(851372),l=e.i(22676),d=e.i(629668),h=e.i(786025),u=e.i(167004),c=e.i(640911),w=e.i(53748),p=e.i(268486),f=e.i(41444),y=e.i(265143),m=e.i(585099),g=e.i(944971),b=e.i(742712),T=e.i(889034),$=e.i(378884),k=t([s,i,l,y,m,b,$]);[s,i,l,y,m,b,$]=k.then?(await k)():k;let P=globalThis.__roomRuns??=new Map,L=globalThis.__roomReflecting??=new Map,U=globalThis.__roomThreadLock??=(0,p.createKeyedLock)(),Y=globalThis.__roomCompactAsked??=new Set,F=(e,t)=>`${e}
|
|
113
|
+
${t}`;async function v(e){let t=await (0,y.findJobBot)(e.bot);(!t||t.disabled)&&(0,w.publicError)("Choose an enabled bot.");let{from:o,routine:a,...r}={...e,bot:t.name},n=(0,i.buildThreadOpening)({bot:r.bot,request:r.request,from:o,routine:a}),s=await (0,$.insertThread)({...r,routineId:a?.id??null,startedBy:a?null:o,opening:n});return await x(s.id),s.id}async function I(e,t,o="user",a,r){let n=null;return await U(e,async()=>{let s=await (0,$.findThread)(e);if(s||(0,w.publicError)("No such thread."),a){let t=(await (0,b.listRoomWork)(e)).find(e=>e.bot.toLowerCase()===a.trim().toLowerCase());t&&t.bot!==T.ROOM_THURSDAY||(0,w.publicError)("Choose a participant in this thread."),a=t.bot}t.trim()===g.THREAD_CONTINUE&&(0,g.isAppStop)(s.pending)?(await (0,b.resumeRoom)(e),(await (0,b.listRoomWork)(e)).some(e=>"queued"===e.state)||(n=await (0,b.tellRoom)(e,"Continue from the saved conversation.","user"===o?T.ROOM_USER:T.ROOM_THURSDAY,a,void 0,!1))):n=await (0,b.tellRoom)(e,t,"user"===o?T.ROOM_USER:T.ROOM_THURSDAY,a,r)}),await x(e),n}async function x(e){await U(e,async()=>{for(let t=0;t<2;t++){let t;for(;t=await (0,b.claimRoomWork)(e);)!function(e){let t;L.get(e.threadId)?.abort();let o=new AbortController,a=new Promise(e=>{t=e});P.set(e.id,{threadId:e.threadId,stop:o,done:a}),O(e,o.signal).catch(t=>c.logger.error(`thread ${e.threadId}: participant`,t)).finally(()=>{P.delete(e.id),t(),x(e.threadId).catch(t=>c.logger.error(`thread ${e.threadId}: scheduling`,t))})}(t);await (0,b.settleRoom)(e)}})}async function O(e,t){let o=await S(e,t);if(o?.failure?.retry&&!t.aborted&&(await (0,b.noteRoomBreak)(e,o.failure.message),await (0,a.setTimeout)(n.BOT_RUN.retryMs,void 0,{signal:t}).catch(()=>{}),t.aborted||(o=await S(e,t,!1))),!o||t.aborted)return;let s=o.failure?.message,i=o.ending;if(s||!i||i.stopped){let t=s??"The turn was interrupted. Continue from the saved conversation.";U(e.threadId,async()=>{let a=(await (0,b.listRoomWork)(e.threadId)).find(t=>t.id===e.id);if(a?.state!=="running"||a.generation!==e.generation)return;let r=R(e.threadId);await (0,b.pauseRoom)(e.threadId,t,o.failure?.refused),await r}).catch(t=>c.logger.error(`thread ${e.threadId}: pausing`,t));return}await (0,b.finishRoomWork)(e,i.text);let w=await (0,$.findThread)(e.threadId);if(w?.status==="done"){let e=(0,f.plainText)(w.outcome??"").slice(0,n.FINISHED_NOTICE.words);r.presence.watching||await (0,l.isAnyCallLive)()||(0,u.desktopNotify)(w.label,e);let t=await (0,h.filesOnDisk)((0,d.pathsIn)(w.outcome??""),null);r.appEvents.emit({type:"finished",threadId:w.id,label:w.label,bot:w.bot,words:e,paths:(0,d.leadFirst)(t)}),U(w.id,async()=>{(await (0,$.findThread)(w.id))?.status==="done"&&await (0,h.closeIdleBrowser)(w.id)}).catch(e=>c.logger.warn(`thread ${w.id}: closing its browsers`,e)),E(w.id,w.bot).catch(e=>c.logger.warn(`thread ${w.id}: looking back`,e))}}async function E(e,t){if(!await (0,y.readBotMemoryOn)())return;L.get(e)?.abort();let o=new AbortController;L.set(e,o);try{let a=new Map;for(let t of(await (0,b.listRoomWork)(e)))t.bot!==T.ROOM_THURSDAY&&a.set(t.bot,t);for(let r of a.values()){if(o.signal.aborted||(await (0,$.findThread)(e))?.status!=="done")return;let a=await (0,b.listParticipantTranscript)(e,r.bot);D(a)<n.BOT_REFLECT.minTools||await (0,m.runBot)({bot:r.bot,messages:[...(0,m.resumeTranscript)(a,await (0,b.listRoomReceipts)(e,r.bot,a)),{role:"user",content:i.REFLECT_NOTE}]},{signal:o.signal,threadId:e,parent:r.id,caller:r.bot===t?T.ROOM_THURSDAY:r.caller,owner:t,contextBudget:await (0,b.roomContextBudget)(e,r.bot),session:(0,h.botBrowserSession)(e,r.bot),steps:n.BOT_REFLECT.steps,send:async()=>(0,w.publicError)("The job is done: nothing is sent from here."),emit:async t=>{"step"===t.type&&await (0,$.addThreadUsage)(e,t.usage),"turn-end"===t.type&&c.logger.info(`${r.bot} looked back on ${e}: ${(0,f.plainText)(t.text).slice(0,300)}`),"error"===t.type&&c.logger.warn(`${r.bot} looking back: ${t.message}`)}})}}finally{L.get(e)===o&&L.delete(e)}}let D=e=>e.reduce((e,t)=>e+("assistant"===t.role&&Array.isArray(t.content)?t.content.filter(e=>"tool-call"===e.type).length:0),0);async function S(e,t,o=!0){let a=new H(e,t),r=null,n=null;try{let s=await (0,$.findThread)(e.threadId);if(!s)return null;if((await (0,b.listParticipantTranscript)(e.threadId,e.bot)).length||await (0,b.joinRoom)(e,t=>(0,i.buildJoinOpening)({bot:e.bot,coordinator:s.bot,job:t,request:s.request})),await (0,b.consumeRoomInbox)(e),o&&(0,T.isCoordinatorSeat)(e.bot,s.bot,e.caller)){let t=await (0,b.roomBoard)(e);t&&await (0,b.appendRoomMessage)(e.threadId,{bot:e.bot,parent:e.id,role:"user",content:t,hidden:!0})}let l=await (0,b.listParticipantTranscript)(e.threadId,e.bot);await (0,m.runBot)({bot:e.bot,messages:(0,m.resumeTranscript)(l,await (0,b.listRoomReceipts)(e.threadId,e.bot,l))},{signal:t,threadId:e.threadId,parent:e.id,caller:e.caller,owner:s.bot,contextBudget:await (0,b.roomContextBudget)(e.threadId,e.bot),compactNow:()=>Y.delete(F(e.threadId,e.bot)),session:(0,h.botBrowserSession)(e.threadId,e.bot),notes:()=>(0,b.consumeRoomInbox)(e),send:async o=>{t.throwIfAborted();let a=o.to.trim();if(a.toLowerCase()===T.ROOM_THURSDAY.toLowerCase())a=T.ROOM_THURSDAY;else{let e=await (0,y.findJobBot)(a);(!e||e.disabled)&&(0,w.publicError)(`No enabled bot named "${a}".`),a=e.name}let r=await (0,b.sendRoomMessage)(e,{...o,to:a});return x(e.threadId).catch(e=>c.logger.error("room message scheduling",e)),r},emit:async o=>{(!t.aborted||"tool-result"===o.type)&&(await a.on(o),"step"===o.type&&await (0,$.addThreadUsage)(e.threadId,o.usage,e.bot===s.bot?{tokens:o.usage.input,budget:o.budget}:null),"compact"===o.type&&await (0,$.addThreadUsage)(e.threadId,o.usage),"turn-end"===o.type&&(r=o),"error"===o.type&&(n={message:o.message,retry:o.retry,refused:o.refused},o.budget&&await (0,b.lowerRoomContextBudget)(e,o.budget)))}})}catch(o){t.aborted||(c.logger.error(`thread ${e.threadId}: ${e.bot} broke`,o),n={message:(0,s.modelErrorToString)(o),retry:!(0,w.isPublicError)(o)&&!(0,s.isProviderRefusal)(o)})}return{ending:r,failure:n}}class H{work;signal;lane;assistant;tool;parts;calls;results;constructor(e,t){this.work=e,this.signal=t,this.lane=(0,f.PromiseChain)(),this.assistant=null,this.tool=null,this.parts={assistant:[],tool:[]},this.calls=new Set,this.results=new Set}async write(e,t,o=!1){let a={bot:this.work.bot,parent:this.work.id,role:t.role,content:t.content,compact:o,note:o};return null===e?(0,b.appendRoomMessage)(this.work.threadId,a):(await (0,$.upsertMessage)(this.work.threadId,e,a),e)}on(e){return this.lane(async()=>{if(!this.signal.aborted||"tool-result"===e.type)if("text"===e.type)this.parts.assistant.push({type:"text",text:e.text}),this.assistant=await this.write(this.assistant,{role:"assistant",content:this.parts.assistant});else if("tool"===e.type){if(this.calls.has(e.id)){let t=this.parts.assistant.find(t=>"tool-call"===t.type&&t.toolCallId===e.id);t&&"tool-call"===t.type&&e.providerOptions&&(t.providerOptions=e.providerOptions,this.assistant=await this.write(this.assistant,{role:"assistant",content:this.parts.assistant}));return}this.calls.add(e.id),this.parts.assistant.push({type:"tool-call",toolCallId:e.id,toolName:e.name,input:e.input,...e.providerExecuted?{providerExecuted:!0}:{},...e.providerOptions?{providerOptions:e.providerOptions}:{}}),this.assistant=await this.write(this.assistant,{role:"assistant",content:this.parts.assistant})}else if("tool-result"===e.type){if(this.results.has(e.id))return;this.results.add(e.id),this.parts.tool.push({type:"tool-result",toolCallId:e.id,toolName:e.name,output:e.error?{type:"error-text",value:String(e.output)}:"string"==typeof e.output?{type:"text",value:e.output}:{type:"json",value:e.output}}),this.tool=await this.write(this.tool,{role:"tool",content:this.parts.tool})}else if("step"===e.type){let t=[this.assistant,this.tool];for(let[o,a]of e.messages.entries())await this.write(t[o]??null,a);let o=t.slice(e.messages.length).filter(e=>null!==e);o.length&&await (0,$.deleteMessages)(this.work.threadId,o),this.assistant=this.tool=null,this.parts={assistant:[],tool:[]}}else"compact"===e.type&&await this.write(null,{role:"user",content:e.text},!0)})}}async function R(e){L.get(e)?.abort();let t=[...P.values()].filter(t=>t.threadId===e);for(let e of t)e.stop.abort();await Promise.all(t.map(e=>e.done))}async function N(e){await U(e,async()=>{let t=await (0,$.findThread)(e);t||(0,w.publicError)("No such thread."),t.endedAt&&(0,w.publicError)("That thread has already ended."),await (0,b.cancelRoom)(e),await (0,$.updateThread)(e,{status:"cancelled",outcome:null,pending:null,seen:!0,endedAt:new Date}),await R(e),await (0,h.closeJobShell)(e)})}async function C(e){return U(e,()=>M(e))}async function M(e,t){let o=await (0,$.findThread)(e);await (0,b.cancelRoom)(e),await R(e),await (0,h.removeJobBrowsers)(e,t);let a=await (0,$.deleteThread)(e);return a&&o&&await (0,h.removeJobScratch)(e,o.label),a}async function A(e){let t,o=e?.getTime(),a=e=>void 0===o||(e.endedAt??e.updatedAt).getTime()<o,r=0,n=!1;for(let e of(await (0,$.listThreadFolders)()))("done"===e.status||"cancelled"===e.status)&&a(e)&&await U(e.id,async()=>{let o=await (0,$.findThread)(e.id);o?.status!=="done"&&o?.status!=="cancelled"||a(o)&&(n||(n=!0,t=await (0,h.listJobBrowsers)()??void 0),await M(e.id,t)&&(r+=1))});return t&&await (0,h.pruneJobFiles)(),r}async function B(){let e=await (0,$.listThreadFolders)(),t=await (0,h.listJobBrowsers)();if(!t?.length)return;let o=Date.now()-n.BROWSER_IDLE.closeAfterMs,a=e=>"running"!==e.status&&e.updatedAt.getTime()<o,r=new Set(t.map(e=>(0,h.threadOfBrowser)(e.name)));for(let o of e)r.has(o.id)&&a(o)&&await U(o.id,async()=>{let e=await (0,$.findThread)(o.id);e&&a(e)&&await (0,h.closeIdleBrowser)(o.id,t)})}async function j(){let e=Date.now()-n.WORKSPACE_KEEP.forMs,t=t=>("done"===t.status||"cancelled"===t.status)&&(t.endedAt??t.updatedAt).getTime()<e,o=new Set(await (0,h.listScratchFolders)()),a=[];for(let e of(await (0,$.listThreadFolders)())){let r=(0,h.jobScratch)(e.id,e.label);o.delete(r)&&t(e)&&await U(e.id,async()=>{let o=await (0,$.findThread)(e.id);o&&t(o)&&(await (0,h.closeHiddenBrowser)(e.id),await (0,h.removeJobScratch)(e.id,e.label),a.push(r))})}return a.push(...await (0,h.removeUnchangedFolders)([...o])),await (0,h.pruneJobFiles)(),a.length&&c.logger.info(`cleared ${a.length} old job folder(s): ${a.join(", ")}`),a}async function _(){for(let e of(await (0,$.listRunningThreadIds)()))await U(e,async()=>{[...P.values()].some(t=>t.threadId===e)||(await (0,$.findThread)(e))?.status==="running"&&await (0,b.pauseRoom)(e,"The server restarted. Resume from the saved conversation.")})}async function W(e){let t=await (0,$.listRunningThreadIds)();await Promise.all(t.map(t=>U(t,async()=>{(await (0,$.findThread)(t))?.status==="running"&&(await R(t),await (0,b.pauseRoom)(t,e))})))}e.s(["answerThread",0,I,"askCompact",0,function(e,t){Y.add(F(e,t))},"cancelThread",0,N,"closeIdleBrowsers",0,B,"pauseThreads",0,W,"removeFinishedThreads",0,A,"removeThread",0,C,"startThread",0,v,"sweepJobFiles",0,j,"sweepThreads",0,_]),o()}catch(e){o(e)}},!1),167004,e=>{"use strict";var t=e.i(874533),o=e.i(687388);let a=`on run argv
|
|
111
114
|
display notification (item 2 of argv) with title (item 1 of argv)
|
|
112
115
|
end run`,r=`
|
|
113
116
|
$ErrorActionPreference = 'Stop'
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
module.exports=[380690,e=>{"use strict";let t,n,a,r,i,s;var o,u=e.i(687388),l=e.i(850063);let c={threads:!0,bots:!0,routines:!0,memory:!0,mcp:!0,config:!0,reach:!0,signins:!0,files:!0},d=globalThis,m=d.__appEvents??=(t=new Set,{emit(e){for(let n of[...t])try{n(e)}catch(e){console.error("event listener failed",e)}},subscribe:e=>(t.add(e),()=>{t.delete(e)})}),h=d.__presence??=(o=u.BROWSER_GONE_MS,n=!1,a=null,r=new Set,i=new Set,s=e=>{for(let t of[...e])try{t()}catch(e){console.error("presence listener failed",e)}},{get watching(){return n},track(e){if(e>0){a&&clearTimeout(a),a=null,n||(n=!0,s(i));return}!a&&n&&(a=setTimeout(()=>{a=null,n=!1,s(r)},o))},onGone:e=>(r.add(e),()=>r.delete(e)),onBack:e=>(i.add(e),()=>i.delete(e))}),f=d.__appEventStream??=(0,l.createEventStream)(m,{coalesce:{ms:u.SIGNAL_PACE_MS,keyOf:e=>e.type in c?e.type:null},onWatchers:h.track});e.s(["appEventStream",0,f,"appEvents",0,m,"presence",0,h],380690)},687388,e=>{"use strict";let t=process.env.THURSDAY_APP_DIR?.trim()||process.cwd(),n=process.env.THURSDAY_HOME?.trim()||process.cwd(),a=process.env.THURSDAY_URL?.trim()||`http://localhost:${process.env.PORT?.trim()||3e3}`,r=`${n}/local.db`,i=`file:${r}`,s=`${n}/.env`,o=".ai-workspace",u={workspace:o,artifacts:"artifacts",projects:"projects",scratch:"scratch",bots:"bots",output:".output",signIns:".sign-ins",skills:{default:"skills",custom:`${o}/.agents/skills`,own:".agents/skills",runtime:"runtime",seeds:"seed-skills"}},l="artifact";e.s(["APP_DIR",0,t,"APP_NAME",0,"Thursday","APP_URL",0,a,"ARTIFACT_SKILL",0,l,"ARTIFACT_VIEW",0,{rows:200,setFiles:120},"BOT_MEMORY_LIMITS",0,{files:
|
|
1
|
+
module.exports=[380690,e=>{"use strict";let t,n,a,r,i,s;var o,u=e.i(687388),l=e.i(850063);let c={threads:!0,bots:!0,routines:!0,memory:!0,mcp:!0,config:!0,reach:!0,signins:!0,files:!0},d=globalThis,m=d.__appEvents??=(t=new Set,{emit(e){for(let n of[...t])try{n(e)}catch(e){console.error("event listener failed",e)}},subscribe:e=>(t.add(e),()=>{t.delete(e)})}),h=d.__presence??=(o=u.BROWSER_GONE_MS,n=!1,a=null,r=new Set,i=new Set,s=e=>{for(let t of[...e])try{t()}catch(e){console.error("presence listener failed",e)}},{get watching(){return n},track(e){if(e>0){a&&clearTimeout(a),a=null,n||(n=!0,s(i));return}!a&&n&&(a=setTimeout(()=>{a=null,n=!1,s(r)},o))},onGone:e=>(r.add(e),()=>r.delete(e)),onBack:e=>(i.add(e),()=>i.delete(e))}),f=d.__appEventStream??=(0,l.createEventStream)(m,{coalesce:{ms:u.SIGNAL_PACE_MS,keyOf:e=>e.type in c?e.type:null},onWatchers:h.track});e.s(["appEventStream",0,f,"appEvents",0,m,"presence",0,h],380690)},687388,e=>{"use strict";let t=process.env.THURSDAY_APP_DIR?.trim()||process.cwd(),n=process.env.THURSDAY_HOME?.trim()||process.cwd(),a=process.env.THURSDAY_URL?.trim()||`http://localhost:${process.env.PORT?.trim()||3e3}`,r=`${n}/local.db`,i=`file:${r}`,s=`${n}/.env`,o=".ai-workspace",u={workspace:o,artifacts:"artifacts",projects:"projects",scratch:"scratch",bots:"bots",output:".output",signIns:".sign-ins",skills:{default:"skills",custom:`${o}/.agents/skills`,own:".agents/skills",runtime:"runtime",seeds:"seed-skills"}},l="artifact";e.s(["APP_DIR",0,t,"APP_NAME",0,"Thursday","APP_URL",0,a,"ARTIFACT_SKILL",0,l,"ARTIFACT_VIEW",0,{rows:200,setFiles:120},"BOT_MEMORY_LIMITS",0,{files:60,chars:3e3},"BOT_REFLECT",0,{minTools:5,steps:8},"BOT_RUN",0,{steps:100,compactAt:5e5,compactHeadroom:.8,summaryWords:{min:600,max:3e3,perTokens:200},participants:8,concurrent:8,turns:120,queuedMessages:200,silenceMs:3e5,overflowShrink:.6,retryMs:1e4,compactFiles:40},"BOT_WORK",0,{open:5,recent:5,said:80,files:2,reads:2,asked:400,readChars:4e3},"BROWSER_CLI",0,{readMs:15e3,loadMs:3e4},"BROWSER_GONE_MS",0,1e4,"BROWSER_IDLE",0,{closeAfterMs:36e5,checkEveryMs:3e5},"BROWSER_VIEWPORT",0,"700x700","CALL_EXEC_TIMEOUT_MS",0,15e3,"CALL_HISTORY_PAGE",0,10,"CALL_RELAY",0,{quietMs:2e3,perTurn:3,readMs:15e3,chars:600},"CATALOG_MS",0,6e5,"CHATGPT_SIGN_IN",0,{waitMs:6e5,renewBeforeMs:3e5},"CHATGPT_USAGE_HIGH",0,80,"COMMON_VALIDATE",0,{name:{max:16},shortDescription:{max:60},description:{max:100},prompt:{max:4e3}},"CONNECTED_TOOL_TIMEOUT_MS",0,6e5,"DATA_DIR",0,n,"DB_FILE_NAME",0,i,"DB_PATH",0,r,"DECK",0,{slides:30,shotsMs:9e4},"ENV_PATH",0,s,"EXEC_KILL_GRACE_MS",0,5e3,"EXEC_TIMEOUT_MS",0,18e4,"FAVICON",0,{timeoutMs:4e3,maxBytes:3e5,kept:500,againMs:6e4,pageBytes:65536},"FINISHED_NOTICE",0,{rows:5,shown:1,words:240},"FULL_RESULT_LINES",0,400,"INBOX_FINISHED",0,5,"INBOX_UNREAD",0,20,"IS_DEV",0,!1,"JOB_FOLDER_WALK",0,500,"KEY_LOW_CREDIT",0,1,"LIVE_CALL",0,{startupMs:3e4,closeMs:15e3,transcriptGapMs:1500,transcriptSaveMs:500,appendMs:15e3,backendOutputTokens:4096,reasoningCheckMs:5e3,keyCheckMs:5e3,openingHoldMs:3e3,instructionsTokens:16384},"LOOK",0,{maxBytes:4194304,perRequest:0xc00000},"MAIL_CHECK",0,{backMs:18e5,waitMs:12e4,waitMaxMs:3e5,chars:6e3},"MARKETING_SKILL",0,"marketing","MAX_PINNED_TOOLS",0,10,"MCP_IDLE_MS",0,18e5,"MEMORY_EDIT",0,{maxSteps:20},"MEMORY_LIMITS",0,{facts:400,factsPerNote:50,descriptionChars:100},"PAGE_SIZE",0,50,"PATHS",0,u,"PLAN_CALL",0,{delegationBytes:4096,pictureBytes:262144},"PROMPT_BUDGET",0,6e3,"PROMPT_LINE",0,{skill:90,toolArgs:30,jobOutcome:160,botMemory:100,threadStatus:200,routineRequest:300,routineOutcome:200,boardAsk:100},"REACH",0,{pollSeconds:50,retryMs:5e3,idleMs:6e5,messages:40,trimTo:30,oldChars:1e3,files:3,fileBytes:0x2d00000,rateRetries:3,rateWaitMs:3e4,codeDigits:4,held:5,pictures:9,drawMs:6e4,lookMs:2e3,mailFreshMs:1728e5,mailCheckAgainMs:3e4,mailHoldMs:36e5,mailPushAfterMs:1e3,mailIdleMs:24e4,mailDnsMs:5e3,mailIdsKept:200,mailLookMs:3e5},"RECENT_CALL",0,{rows:20,tokens:600},"ROUTINE",0,{tickMs:3e4,max:12,minHours:1,runsShown:5},"SEARCH",0,{sources:3,excerptChars:1200,timeoutMs:3e4},"SEED_KITS_RENAMED",0,{marketer:"writer"},"SIGNAL_PACE_MS",0,150,"SKILLS_FOLDED",0,{design:l,"picture-book":l,"interactive-page":l},"SKILL_FILES",0,{uploadBytes:0x1400000,inlineBytes:524288,unpackedBytes:0x6400000,archiveEntries:1e3},"SKILL_FILES_LISTED",0,50,"STUDIO_SERVER",0,"studio","TEXT_CALL",0,{maxSteps:12,model:"text",autoTurns:10,chunkMs:12e4},"THREAD_LABEL_REACH",0,20,"THREAD_STATUS_LIMIT",0,10,"TOOL_OUTPUT",0,{max:8e3,head:5500,tail:1500},"TOOL_SEARCH_SCHEMAS",0,8,"TRAVEL_SKILL",0,"travel","UPDATE",0,{checkMs:864e5,againMs:6e5,timeoutMs:5e3,quietMs:864e5,waitMs:3e5,pollMs:2e3},"WORKSPACE_KEEP",0,{forMs:2592e5,sweepEveryMs:36e5},"WORKSPACE_VIEW",0,{rows:200,textMax:524288,autoCloseMs:5e3,elementMax:0x3200000}])},850063,e=>{"use strict";var t=e.i(640911);e.s(["createEventStream",0,function(e,n={}){let a=new TextEncoder,r=n.heartbeatMs??2e4,i=0;return{respond:(s,o)=>{let u=()=>{};return new Response(new ReadableStream({async start(l){let c=!1,d=new Map,m=[],h=e=>{if(!c)try{l.enqueue(a.encode(e))}catch{u()}},f=e=>h(`data: ${JSON.stringify(e)}
|
|
2
2
|
|
|
3
3
|
`),p=e=>{let t={last:null},a=setTimeout(()=>{d.delete(e),!c&&t.last&&(f(t.last),p(e))},n.coalesce?.ms);d.set(e,{timer:a,wait:t})},g=e=>{if(c)return;let t=n.coalesce?.keyOf(e)??null;if(null===t)return f(e);let a=d.get(t);if(a){a.wait.last=e;return}f(e),p(t)},M=e.subscribe(e=>m?m.push(e):g(e)),y=setInterval(()=>h(": ping\n\n"),r);i+=1,n.onWatchers?.(i),u=()=>{if(!c){for(let e of(c=!0,i-=1,n.onWatchers?.(i),M(),clearInterval(y),d.values()))clearTimeout(e.timer);try{l.close()}catch{}}},s.addEventListener("abort",u);try{for(let e of await o?.()??[])f(e)}catch(e){t.logger.error("event stream opening failed",e),u();return}let S=m;for(let e of(m=null,S))g(e)},cancel(){u()}}),{headers:{"Content-Type":"text/event-stream; charset=utf-8","Cache-Control":"no-store","X-Accel-Buffering":"no"}})},get watchers(){return i}}}])},41444,e=>{"use strict";function t(e,t){let n=e.replace(/\s+/g," ").trim();return n.length>t?`${n.slice(0,t-1).trimEnd()}…`:n}let n=["\\*","_"].flatMap(e=>{let t="_"===e?"\\w_":e;return[3,2,1].map(n=>{let a=e.repeat(n);return RegExp(`(?<![${t}])${a}(?![\\s${e}])(.+?)(?<![\\s${e}])${a}(?![${t}])`,"g")})}),a=e=>n.reduce((e,t)=>e.replace(t,"$1"),e),r=/\[([^\]\n]+)\]\(([^)\s]+)\)/g;e.s(["MARKDOWN_LINK",0,r,"PromiseChain",0,()=>{let e=Promise.resolve();return t=>{let n=e.then(()=>t());return e=n.catch(()=>{}),n}},"captionText",0,function(e){let t=[],n=e.replace(/```[\s\S]*?```/g," ").replace(/!\[([^\]]*)\]\([^)]*\)/g,"$1").replace(r,(e,n,r)=>(t.push(`[${a(n.replace(/`/g,""))}](${r})`),`\uE000${t.length-1}\uE000`)),i=[];for(let e of n.split("\n")){let t=e.trim();t&&(/^\|?[\s:|-]+\|[\s:|-]*$|^[-*_]{3,}$/.test(t)||(/\|.*\|/.test(t)&&(t=t.replace(/^\||\|$/g,"").split("|").map(e=>e.trim()).filter(Boolean).join(" · ")),t=a(t.replace(/^#{1,6}\s+/,"").replace(/^>\s?/,"").replace(/^[-*+]\s+/,"• ").replace(/`([^`]*)`/g,"$1")).replace(/\s+/g," "),i.push(t)))}return i.join("\n").replace(/\uE000(\d+)\uE000/g,(e,n)=>t[Number(n)]??"")},"clip",0,t,"errorToString",0,function(e){if(e instanceof Error)return e.message;if("object"!=typeof e||null===e)return String(e);let{message:n,error:a}=e;if("string"==typeof n&&n)return n;if("string"==typeof a&&a)return a;let r=a?.message;if("string"==typeof r&&r)return r;try{return t(JSON.stringify(e),300)}catch{return`${e.constructor?.name??"Object"} thrown without a message`}},"formatBytes",0,function(e){if(e<1024)return`${e} B`;let t=["KB","MB","GB","TB"],n=e/1024,a=0;for(;n>=1024&&a<t.length-1;)n/=1024,a+=1;return`${n.toFixed(+(n<10))} ${t[a]}`},"hostOf",0,function(e){try{return new URL(e).hostname.replace(/^www\./,"")}catch{return null}},"plainText",0,function(e){return e.replace(/```[\s\S]*?```/g," ").replace(/`([^`]*)`/g,"$1").replace(/!?\[([^\]]*)\]\([^)]*\)/g,"$1").replace(/^\s{0,3}(#{1,6}\s+|[-*+]\s+|\d+\.\s+|>\s?)/gm,"").replace(/[^\n]+/g,a).replace(/^\s*\|?[\s:|-]+\|\s*$/gm," ").replace(/\|/g," ").replace(/\s+/g," ").trim()},"slug",0,function(e){return e.toLowerCase().replace(/[^\p{L}\p{N}]+/gu,"-").replace(/^-+|-+$/g,"").slice(0,40)}])},89929,609730,277988,e=>{"use strict";var t=e.i(874321);function n(e,n){return(0,t.constructFrom)(n||e,e)}e.s(["toDate",0,n],609730),e.s(["getTimezoneOffsetInMilliseconds",0,function(e){let t=n(e),a=new Date(Date.UTC(t.getFullYear(),t.getMonth(),t.getDate(),t.getHours(),t.getMinutes(),t.getSeconds(),t.getMilliseconds()));return a.setUTCFullYear(t.getFullYear()),e-a}],89929),e.s(["normalizeDates",0,function(e,...n){let a=t.constructFrom.bind(null,e||n.find(e=>"object"==typeof e));return n.map(a)}],277988)},874321,438220,e=>{"use strict";let t=Symbol.for("constructDateFrom");e.s(["constructFromSymbol",0,t,"millisecondsInDay",0,864e5,"millisecondsInMinute",0,6e4,"millisecondsInWeek",0,6048e5,"minutesInDay",0,1440,"minutesInMonth",0,43200,"minutesInYear",0,525600],438220),e.s(["constructFrom",0,function(e,n){return"function"==typeof e?e(n):e&&"object"==typeof e&&t in e?e[t](n):e instanceof Date?new e.constructor(n):new Date(n)}],874321)},599447,e=>{"use strict";var t=e.i(874321);e.s(["constructNow",0,function(e){return(0,t.constructFrom)(e,Date.now())}])},881237,662001,e=>{"use strict";var t;let n={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXWeeks:{one:"about 1 week",other:"about {{count}} weeks"},xWeeks:{one:"1 week",other:"{{count}} weeks"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}};function a(e){return (t={})=>{let n=t.width?String(t.width):e.defaultWidth;return e.formats[n]||e.formats[e.defaultWidth]}}let r={date:a({formats:{full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},defaultWidth:"full"}),time:a({formats:{full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},defaultWidth:"full"}),dateTime:a({formats:{full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},defaultWidth:"full"})},i={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"};function s(e){return(t,n)=>{let a;if("formatting"===(n?.context?String(n.context):"standalone")&&e.formattingValues){let t=e.defaultFormattingWidth||e.defaultWidth,r=n?.width?String(n.width):t;a=e.formattingValues[r]||e.formattingValues[t]}else{let t=e.defaultWidth,r=n?.width?String(n.width):e.defaultWidth;a=e.values[r]||e.values[t]}return a[e.argumentCallback?e.argumentCallback(t):t]}}let o={ordinalNumber:(e,t)=>{let n=Number(e),a=n%100;if(a>20||a<10)switch(a%10){case 1:return n+"st";case 2:return n+"nd";case 3:return n+"rd"}return n+"th"},era:s({values:{narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},defaultWidth:"wide"}),quarter:s({values:{narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},defaultWidth:"wide",argumentCallback:e=>e-1}),month:s({values:{narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},defaultWidth:"wide"}),day:s({values:{narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},defaultWidth:"wide"}),dayPeriod:s({values:{narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},defaultWidth:"wide",formattingValues:{narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},defaultFormattingWidth:"wide"})};function u(e){return(t,n={})=>{let a,r=n.width,i=r&&e.matchPatterns[r]||e.matchPatterns[e.defaultMatchWidth],s=t.match(i);if(!s)return null;let o=s[0],u=r&&e.parsePatterns[r]||e.parsePatterns[e.defaultParseWidth],l=Array.isArray(u)?function(e,t){for(let n=0;n<e.length;n++)if(t(e[n]))return n}(u,e=>e.test(o)):function(e,t){for(let n in e)if(Object.prototype.hasOwnProperty.call(e,n)&&t(e[n]))return n}(u,e=>e.test(o));return a=e.valueCallback?e.valueCallback(l):l,{value:a=n.valueCallback?n.valueCallback(a):a,rest:t.slice(o.length)}}}let l={ordinalNumber:(t={matchPattern:/^(\d+)(th|st|nd|rd)?/i,parsePattern:/\d+/i,valueCallback:e=>parseInt(e,10)},(e,n={})=>{let a=e.match(t.matchPattern);if(!a)return null;let r=a[0],i=e.match(t.parsePattern);if(!i)return null;let s=t.valueCallback?t.valueCallback(i[0]):i[0];return{value:s=n.valueCallback?n.valueCallback(s):s,rest:e.slice(r.length)}}),era:u({matchPatterns:{narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^b/i,/^(a|c)/i]},defaultParseWidth:"any"}),quarter:u({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},defaultMatchWidth:"wide",parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:"any",valueCallback:e=>e+1}),month:u({matchPatterns:{narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},defaultParseWidth:"any"}),day:u({matchPatterns:{narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},defaultParseWidth:"any"}),dayPeriod:u({matchPatterns:{narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},defaultMatchWidth:"any",parsePatterns:{any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},defaultParseWidth:"any"})};e.s(["defaultLocale",0,{code:"en-US",formatDistance:(e,t,a)=>{let r,i=n[e];if(r="string"==typeof i?i:1===t?i.one:i.other.replace("{{count}}",t.toString()),a?.addSuffix)if(a.comparison&&a.comparison>0)return"in "+r;else return r+" ago";return r},formatLong:r,formatRelative:(e,t,n,a)=>i[e],localize:o,match:l,options:{weekStartsOn:0,firstWeekContainsDate:1}}],881237);let c={};e.s(["getDefaultOptions",0,function(){return c}],662001)},551047,e=>{"use strict";var t=e.i(862061),n=e.i(907855);function a(e){return t._isoDateTime(n.ZodISODateTime,e)}function r(e){return t._isoDate(n.ZodISODate,e)}function i(e){return t._isoTime(n.ZodISOTime,e)}function s(e){return t._isoDuration(n.ZodISODuration,e)}e.s(["date",0,r,"datetime",0,a,"duration",0,s,"time",0,i],691681),e.i(691681),e.s(["ZodISODate",()=>n.ZodISODate,"ZodISODateTime",()=>n.ZodISODateTime,"ZodISODuration",()=>n.ZodISODuration,"ZodISOTime",()=>n.ZodISOTime,"date",0,r,"datetime",0,a,"duration",0,s,"time",0,i],551047)}];
|
|
4
4
|
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[469315,e=>e.a(async(t,a)=>{try{var r=e.i(687388),i=e.i(378884),o=e.i(91264),n=t([i]);[i]=n.then?(await n)():n;let l=(0,o.serverRoute)(e=>{let t=new URL(e.url).searchParams,a=t.get("id");if(a)return(0,i.findThreadView)(a);if(!t.get("history"))return(0,i.listInboxThreads)();let o=t.get("before"),n=o?new Date(o):null;return(0,i.listThreadHistory)({before:n&&!Number.isNaN(n.getTime())?n:null,limit:r.PAGE_SIZE})});e.s(["GET",0,l]),a()}catch(e){a(e)}},!1),178614,e=>{"use strict";var t=e.i(747909),a=e.i(174017),r=e.i(996250),i=e.i(759756),o=e.i(561916),n=e.i(174677),l=e.i(869741),s=e.i(316795),u=e.i(487718),
|
|
1
|
+
module.exports=[469315,e=>e.a(async(t,a)=>{try{var r=e.i(687388),i=e.i(378884),o=e.i(91264),n=t([i]);[i]=n.then?(await n)():n;let l=(0,o.serverRoute)(e=>{let t=new URL(e.url).searchParams,a=t.get("id");if(a)return(0,i.findThreadView)(a);if(!t.get("history"))return(0,i.listInboxThreads)();let o=t.get("before"),n=o?new Date(o):null;return(0,i.listThreadHistory)({before:n&&!Number.isNaN(n.getTime())?n:null,limit:r.PAGE_SIZE,search:t.get("q")?.slice(0,200)})});e.s(["GET",0,l]),a()}catch(e){a(e)}},!1),178614,e=>{"use strict";var t=e.i(747909),a=e.i(174017),r=e.i(996250),i=e.i(759756),o=e.i(561916),n=e.i(174677),l=e.i(869741),s=e.i(316795),u=e.i(487718),d=e.i(995169),p=e.i(47587),c=e.i(666012),h=e.i(570101),m=e.i(626937),f=e.i(10372),R=e.i(193695);e.i(52474);var y=e.i(600220);let g=new t.AppRouteRouteModule({definition:{kind:a.RouteKind.APP_ROUTE,page:"/api/bot/thread/route",pathname:"/api/bot/thread",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/app/api/bot/thread/route.ts",nextConfigOutput:"standalone",userland:()=>e.r(469315),...{}}),{workAsyncStorage:v,workUnitAsyncStorage:w,serverHooks:b}=g;async function C(e,t,r){r.requestMeta&&(0,i.setRequestMeta)(e,r.requestMeta),g.isDev&&(0,i.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let v="/api/bot/thread/route";v=v.replace(/\/index$/,"")||"/";let w=await g.prepare(e,t,{srcPage:v,multiZoneDraftMode:!1});if(!w)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:b,deploymentId:C,params:E,nextConfig:x,parsedUrl:q,isDraftMode:T,prerenderManifest:A,routerServerContext:S,isOnDemandRevalidate:N,revalidateOnlyGenerated:P,resolvedPathname:k,clientReferenceManifest:_,serverActionsManifest:H}=w,I=(0,l.normalizeAppPath)(v),O=!!(A.dynamicRoutes[I]||A.routes[k]),M=async()=>((null==S?void 0:S.render404)?await S.render404(e,t,q,!1):t.end("This page could not be found"),null);if(O&&!T){let e=!!A.routes[k],t=A.dynamicRoutes[I];if(t&&!1===t.fallback&&!e){if(x.adapterPath)return await M();throw new R.NoFallbackError}}let U=null;!O||g.isDev||T||(U="/index"===(U=k)?"/":U);let $=!0===g.isDev||!O,D=O&&!$;H&&_&&(0,n.setManifestsSingleton)({page:v,clientReferenceManifest:_,serverActionsManifest:H});let F=e.method||"GET",j=(0,o.getTracer)(),K=j.getActiveScopeSpan(),L=!!(null==S?void 0:S.isWrappedByNextServer),V=!!(0,i.getRequestMeta)(e,"minimalMode"),G=(0,i.getRequestMeta)(e,"incrementalCache")||await g.getIncrementalCache(e,x,A,V);null==G||G.resetRequestCache(),globalThis.__incrementalCache=G;let B={params:E,previewProps:A.preview,renderOpts:{experimental:{authInterrupts:!!x.experimental.authInterrupts,useCacheTimeout:x.experimental.useCacheTimeout},cacheComponents:!!x.cacheComponents,validationLevel:x.experimental.instantInsights.validationLevel,supportsDynamicResponse:$,incrementalCache:G,hmrRefreshHash:(0,i.getRequestMeta)(e,"hmrRefreshHash"),cacheLifeProfiles:x.cacheLife,staticPageGenerationTimeout:x.staticPageGenerationTimeout,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,r,i)=>g.onRequestError(e,t,r,i,S)},sharedContext:{buildId:b,deploymentId:C}},W=new s.NodeNextRequest(e),X=new s.NodeNextResponse(t),Z=u.NextRequestAdapter.fromNodeNextRequest(W,(0,u.signalFromNodeResponse)(t)),z=async({previousCacheEntry:a})=>{try{if(!V&&N&&P&&!a)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let i=await g.handle(Z,B);e.fetchMetrics=B.renderOpts.fetchMetrics;let o=B.renderOpts.pendingWaitUntil;o&&r.waitUntil&&(r.waitUntil(o),o=void 0);let n=B.renderOpts.collectedTags;if(!O)return await (0,c.sendResponse)(W,X,i,o),null;{let e=await i.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(i.headers);n&&(t[f.NEXT_CACHE_TAGS_HEADER]=n),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==B.renderOpts.collectedRevalidate&&!(B.renderOpts.collectedRevalidate>=f.INFINITE_CACHE)&&B.renderOpts.collectedRevalidate,r=void 0===B.renderOpts.collectedExpire||B.renderOpts.collectedExpire>=f.INFINITE_CACHE?!1!==a&&a>0?x.expireTime:void 0:B.renderOpts.collectedExpire;return{value:{kind:y.CachedRouteKind.APP_ROUTE,status:i.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:r}}}}catch(t){throw(null==a?void 0:a.isStale)&&await g.onRequestError(e,t,{routerKind:"App Router",routePath:v,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:N})},!1,S),t}},J=async(i,n)=>{try{var l,s;let i=await g.handleResponse({req:e,nextConfig:x,cacheKey:U,routeKind:a.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:A,isRoutePPREnabled:!1,isOnDemandRevalidate:N,revalidateOnlyGenerated:P,responseGenerator:z,waitUntil:r.waitUntil,isMinimalMode:V});if(!O)return;if((null==i||null==(l=i.value)?void 0:l.kind)!==y.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==i||null==(s=i.value)?void 0:s.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});V||t.setHeader("x-nextjs-cache",N?"REVALIDATED":i.isMiss?"MISS":i.isStale?"STALE":"HIT"),T&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let o=(0,h.fromNodeOutgoingHttpHeaders)(i.value.headers);V&&O||o.delete(f.NEXT_CACHE_TAGS_HEADER),!i.cacheControl||t.getHeader("Cache-Control")||o.get("Cache-Control")||o.set("Cache-Control",(0,m.getCacheControlHeader)(i.cacheControl)),await (0,c.sendResponse)(W,X,new Response(i.value.body,{headers:o,status:i.value.status||200}));return}catch(t){if(t instanceof R.NoFallbackError||await g.onRequestError(e,t,{routerKind:"App Router",routePath:I,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:N})},!1,S),O)throw t;await (0,c.sendResponse)(W,X,new Response(null,{status:500}));return}finally{(()=>{if(!i)return;let e=t.statusCode;i.setAttributes({"http.status_code":e,"next.rsc":!1}),e&&e>=500&&(i.setStatus({code:o.SpanStatusCode.ERROR}),i.setAttribute("error.type",e.toString()));let a=j.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==d.BaseServerSpan.handleRequest)return console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let r=a.get("next.route")||I,l=`${F} ${r}`;i.setAttributes({"next.route":r,"http.route":r,"next.span_name":l}),i.updateName(l),n&&n!==i&&(n.setAttribute("http.route",r),n.updateName(l))})()}};if(L&&K)await J(K,void 0);else{let t=j.getActiveScopeSpan();await j.withPropagatedContext(e.headers,()=>j.trace(d.BaseServerSpan.handleRequest,{spanName:`${F} ${v}`,kind:o.SpanKind.SERVER,attributes:{"http.method":F,"http.target":e.url}},e=>J(e,t)),void 0,!L)}}e.s(["handler",0,C,"patchFetch",0,function(){return(0,r.patchFetch)({workAsyncStorage:v,workUnitAsyncStorage:w})},"routeModule",0,g,"serverHooks",0,b,"workAsyncStorage",0,v,"workUnitAsyncStorage",0,w])},175936,e=>{"use strict";let t=e=>e.split("/").map(encodeURIComponent).join("/");e.s(["decodePath",0,e=>e.join("/"),"queryKey",0,{memory:"/api/memory",memoryPage:e=>({url:"/api/memory",query:{offset:e||null}}),mcp:"/api/mcp",mcpServer:e=>({url:"/api/mcp",pathVariable:[e]}),mcpTools:"/api/mcp/tools",skills:"/api/skills",skillNode:(e,t,a)=>({url:"/api/skills",pathVariable:[e,t],query:{path:a}}),bot:"/api/bot",botMemory:"/api/bot/memory",botMemoryFiles:e=>({url:"/api/bot/memory/files",query:{bot:e}}),routines:"/api/routine",threads:"/api/bot/thread",threadHistory:(e,t)=>({url:"/api/bot/thread",query:{history:1,before:e,q:t||void 0}}),thread:e=>({url:"/api/bot/thread",query:{id:e}}),fileNotes:"/api/bot/thread/file",fileNote:(e,t)=>({url:"/api/bot/thread/file",query:{path:e,from:t}}),toolResult:(e,t)=>({url:"/api/bot/tool-result",pathVariable:[e],query:{call:t}}),workspace:"/api/workspace",workspaceFolder:(e,t)=>({url:"/api/workspace",query:{path:e||null,rows:t}}),workspaceFiles:e=>({url:"/api/workspace/files",query:{paths:JSON.stringify(e)}}),artifacts:"/api/artifact",artifactShelf:e=>({url:"/api/artifact",query:{rows:e}}),artifactSet:(e,t)=>({url:"/api/artifact",query:{set:e,rows:t}}),file:e=>`/api/file/${t(e)}`,fileFace:e=>`/api/file/${t(e)}?face`,favicon:e=>`/api/favicon/${encodeURIComponent(e)}`,fileView:e=>`/artifact/${t(e)}`,events:"/api/events",config:"/api/config",callHistory:e=>({url:"/api/thursday/call",query:{before:e}}),thursdaySettings:"/api/thursday/settings",toolCall:"/api/thursday/tool-call",callEnd:"/api/thursday/call/end",signIns:"/api/signins",reach:"/api/reach",textCall:"/api/thursday/text",memoryEdit:"/api/memory/edit",llmModel:"/api/llm-model",automaticModel:"/api/llm-model/automatic",modelCatalog:e=>`/api/llm-model/catalog/${e}`,keyCredits:e=>`/api/llm-model/credits/${e}`,subscriptionUsage:"/api/llm-model/subscription",running:"/api/running",update:"/api/update"}])},260338,e=>{"use strict";var t=e.i(518899),a=e.i(844988),r=e.i(156325);e.s(["count",0,function(e){return t.sql`count(${e||t.sql.raw("*")})`.mapWith(Number)},"max",0,function(e){return t.sql`max(${e})`.mapWith((0,a.is)(e,r.Column)?e:String)}])}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=_1-sk_q4._.js.map
|
|
@@ -5,7 +5,7 @@ Their own words, on top of the character above: how you talk to them, how much t
|
|
|
5
5
|
${e.trim()}`:"","thursdayIdentity",0,(e=new Date,t)=>`You are Thursday, this user's own: their friend first, and their assistant second — someone they call because they want to talk to you, who can also get whatever they need done in the background: your bots work on this computer, with a shell, a browser and their files, while you two keep talking, and what they make stays here as a page or a file. Named after Friday, the AI in *Iron Man*: a name, not a day of the week. ${d(e)}${A(t)?`
|
|
6
6
|
${A(t)}`:""}
|
|
7
7
|
|
|
8
|
-
What they tell you is kept, so you know them better over time.`,"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)}),"todayLine",0,(e=new Date)=>`**Today**: ${p(e)}, ${Intl.DateTimeFormat().resolvedOptions().timeZone} — \`date\` has the exact time`],54282)},316172,e=>e.a(async(t,a)=>{try{var i=e.i(847841),r=e.i(907855),n=e.i(687388),s=e.i(54282),o=e.i(353885),l=e.i(944971),c=e.i(889034),u=e.i(378884),p=e.i(41444),d=t([u]);[u]=d.then?(await d)():d;let A=r.string().describe("Its label or id."),g={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:r.object({bot:r.string().describe("A name from the bot list."),request:r.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:r.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. Its bot reads it with everything the thread already holds.",parameters:r.object({thread:A,words:r.string().describe("What to tell its bot, in the user's language and words.")})},m={description:`Answer a question a bot asked the user. Only for a question that is waiting; anything else said to a thread is \`${o.TOOL_NAMES.thread_tell}\`.`,parameters:r.object({thread:A,bot:r.string().describe("The bot that asked."),answer:r.string().describe("The user's answer, in their words.")})},x={description:`Read threads as they are now. "all" lists up to ${n.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:r.object({thread:r.string().describe('"all", or one thread by its label or its id.')})},b={description:"Stop a thread now: its bot stops where it is. The thread is kept, and saying more to it later carries it on.",parameters:r.object({thread:A})},y={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:r.object({thread:A})},E={description:"Mark a thread's result as seen by the user. It leaves the work waiting on them.",parameters:r.object({thread:A})},v={description:"Hand part of the job to another bot, or put a question to the user through Thursday; the receipt comes back at once. A bot answers with the last words of its turn, which reach you later as a new message and start your next turn. Your own result reaches the user as the last words of your turn, so Thursday takes only
|
|
8
|
+
What they tell you is kept, so you know them better over time.`,"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)}),"todayLine",0,(e=new Date)=>`**Today**: ${p(e)}, ${Intl.DateTimeFormat().resolvedOptions().timeZone} — \`date\` has the exact time`],54282)},316172,e=>e.a(async(t,a)=>{try{var i=e.i(847841),r=e.i(907855),n=e.i(687388),s=e.i(54282),o=e.i(353885),l=e.i(944971),c=e.i(889034),u=e.i(378884),p=e.i(41444),d=t([u]);[u]=d.then?(await d)():d;let A=r.string().describe("Its label or id."),g={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:r.object({bot:r.string().describe("A name from the bot list."),request:r.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:r.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. Its bot reads it with everything the thread already holds.",parameters:r.object({thread:A,words:r.string().describe("What to tell its bot, in the user's language and words.")})},m={description:`Answer a question a bot asked the user. Only for a question that is waiting; anything else said to a thread is \`${o.TOOL_NAMES.thread_tell}\`.`,parameters:r.object({thread:A,bot:r.string().describe("The bot that asked."),answer:r.string().describe("The user's answer, in their words.")})},x={description:`Read threads as they are now. "all" lists up to ${n.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:r.object({thread:r.string().describe('"all", or one thread by its label or its id.')})},b={description:"Stop a thread now: its bot stops where it is. The thread is kept, and saying more to it later carries it on.",parameters:r.object({thread:A})},y={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:r.object({thread:A})},E={description:"Mark a thread's result as seen by the user. It leaves the work waiting on them.",parameters:r.object({thread:A})},v={description:"Hand part of the job to another bot, or put a question to the user through Thursday; the receipt comes back at once. A bot answers with the last words of its turn, which reach you later as a new message and start your next turn. Your own result reaches the user as the last words of your turn, so Thursday takes only a question that needs their answer.",parameters:c.RoomMessageSchema.extend({kind:c.RoomMessageSchema.shape.kind.describe("question to Thursday when only the user can answer: it ends your turn, and you continue when the answer arrives. message to a bot."),options:c.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:r.string().trim().min(1).describe("A bot from the roster, or Thursday for a question to the user."),text:r.string().trim().min(1).describe("Write the message and include the context the recipient needs. **What the user asked, 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. A question to Thursday is put to the user word for word, on screen, on their phone and read aloud: write it to them."),why:r.string().trim().min(1).describe("What you need from them, in a few words, written for the user to read: they see who was brought in and what for."),after:c.RoomMessageSchema.shape.after.describe("Bots already working for you whose answers this work needs. It goes out with their answers attached once they are all back and you end the turn in which you read them, so hand it out now rather than holding it yourself. If an answer shows the work cannot go yet, send that bot more or ask the user in that turn, and it keeps waiting.")})},w={description:"Open one of your other threads whole: what you were asked there and your last words in full.",parameters:r.object({id:r.string().describe("The id in brackets on its line under Your other threads.")})};async function h(e,t){let a=await (0,u.listBotWork)(e,t),r=[...a.open,...a.recent];if(!r.some(e=>e.cut))return{};let c=new Set;return{[o.TOOL_NAMES.thread_recall]:(0,i.tool)({description:w.description,inputSchema:w.parameters,execute:async({id:t})=>{let a=t.trim().replace(/^\[|\]$/g,"").toLowerCase(),i=r.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: ${r.filter(e=>e.cut).map(e=>(0,l.workHandle)(e.id)).join(", ")}.`;if(!i.cut)return"Its line already shows all of it.";if(c.has(i.id))return"Already opened above, this turn.";if(c.size>=n.BOT_WORK.reads)return`${n.BOT_WORK.reads} threads are open already this turn. Carry on with what you have.`;c.add(i.id);let o=await (0,u.readBotAsk)(e,i),d=i.said??"";return[(0,s.botWorkHead)(i,e),o?`You were asked: ${(0,p.clip)(o,n.BOT_WORK.asked)}`:"",`Your last words there:
|
|
9
9
|
${d.length>n.BOT_WORK.readChars?`${d.slice(0,n.BOT_WORK.readChars)}
|
|
10
10
|
[Cut here; the files it names hold the rest.]`:d}`].filter(Boolean).join("\n\n")}})}}e.s(["createThreadRecallTool",0,h,"sendMessageSpec",0,v,"threadAnswerSpec",0,m,"threadCancelSpec",0,b,"threadSeenSpec",0,E,"threadShowSpec",0,y,"threadStartSpec",0,g,"threadStatusSpec",0,x,"threadTellSpec",0,f]),a()}catch(e){a(e)}},!1),349047,e=>{"use strict";var t=e.i(847841),a=e.i(907855),i=e.i(353885);let r=Object.keys({A:[".##.","#..#","####","#..#","#..#"],B:["###.","#..#","###.","#..#","###."],C:[".###","#...","#...","#...",".###"],D:["###.","#..#","#..#","#..#","###."],E:["####","#...","###.","#...","####"],F:["####","#...","###.","#...","#..."],G:[".###","#...","#.##","#..#",".###"],H:["#..#","#..#","####","#..#","#..#"],I:["###",".#.",".#.",".#.","###"],J:["..##","...#","...#","#..#",".##."],K:["#..#","#.#.","##..","#.#.","#..#"],L:["#...","#...","#...","#...","####"],M:["#...#","##.##","#.#.#","#...#","#...#"],N:["#..#","##.#","#.##","#..#","#..#"],O:[".##.","#..#","#..#","#..#",".##."],P:["###.","#..#","###.","#...","#..."],Q:[".##.","#..#","#..#","#.#.",".#.#"],R:["###.","#..#","###.","#.#.","#..#"],S:[".###","#...",".##.","...#","###."],T:["###",".#.",".#.",".#.",".#."],U:["#..#","#..#","#..#","#..#",".##."],V:["#...#","#...#",".#.#.",".#.#.","..#.."],W:["#...#","#...#","#.#.#","##.##","#...#"],X:["#..#","#..#",".##.","#..#","#..#"],Y:["#.#","#.#",".#.",".#.",".#."],Z:["####","...#",".##.","#...","####"],0:[".##.","#.##","#..#","##.#",".##."],1:[".#.","##.",".#.",".#.","###"],2:["###.","...#",".##.","#...","####"],3:["###.","...#",".##.","...#","###."],4:["#..#","#..#","####","...#","...#"],5:["####","#...","###.","...#","###."],6:[".##.","#...","###.","#..#",".##."],7:["####","...#","..#.",".#..",".#.."],8:[".##.","#..#",".##.","#..#",".##."],9:[".##.","#..#",".###","...#",".##."],"!":["#","#","#",".","#"],"?":["###.","...#",".##.","....",".#.."],".":[".",".",".",".","#"],",":["..","..","..",".#","#."],"'":["#","#",".",".","."],"-":["...","...","###","...","..."],"+":["...",".#.","###",".#.","..."],":":[".","#",".","#","."],"(":[".#","#.","#.","#.",".#"],")":["#.",".#",".#",".#","#."],"<":["..#",".#.","#..",".#.","..#"],">":["#..",".#.","..#",".#.","#.."],"^":[".#.","#.#","...","...","..."],"~":["....",".#.#","#.#.","....","...."],"♥":[".#.#.","#####","#####",".###.","..#.."]," ":["..","..","..","..",".."]}).filter(e=>!/^[A-Z0-9 ]$/.test(e)),n={description:`End the call.
|
|
11
11
|
|