thursday-agent 0.17.0 → 0.17.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/app-path-routes-manifest.json +2 -0
- package/.next/build-manifest.json +3 -3
- package/.next/prerender-manifest.json +3 -3
- package/.next/routes-manifest.json +12 -0
- package/.next/server/app/_global-error/page.js.nft.json +1 -1
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.rsc +1 -1
- package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +1 -1
- package/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/api/artifact/route.js +9 -8
- package/.next/server/app/api/artifact/route.js.nft.json +1 -1
- package/.next/server/app/api/bot/memory/files/route.js.nft.json +1 -1
- package/.next/server/app/api/bot/memory/route.js +8 -7
- package/.next/server/app/api/bot/memory/route.js.nft.json +1 -1
- package/.next/server/app/api/bot/route.js +8 -7
- package/.next/server/app/api/bot/route.js.nft.json +1 -1
- package/.next/server/app/api/bot/thread/[id]/route.js +4 -4
- package/.next/server/app/api/bot/thread/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/bot/thread/route.js +3 -3
- package/.next/server/app/api/bot/thread/route.js.nft.json +1 -1
- package/.next/server/app/api/config/route.js.nft.json +1 -1
- package/.next/server/app/api/events/route.js.nft.json +1 -1
- package/.next/server/app/api/favicon/[host]/route.js +4 -3
- package/.next/server/app/api/favicon/[host]/route.js.nft.json +1 -1
- package/.next/server/app/api/file/[...path]/route.js.nft.json +1 -1
- package/.next/server/app/api/llm-model/automatic/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/llm-model/automatic/route/build-manifest.json +12 -0
- package/.next/server/app/api/llm-model/automatic/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/llm-model/automatic/route.js +17 -0
- package/.next/server/app/api/llm-model/automatic/route.js.map +5 -0
- package/.next/server/app/api/llm-model/automatic/route.js.nft.json +1 -0
- package/.next/server/app/api/llm-model/automatic/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/llm-model/catalog/route.js.nft.json +1 -1
- package/.next/server/app/api/llm-model/credits/route.js.nft.json +1 -1
- package/.next/server/app/api/llm-model/route.js.nft.json +1 -1
- package/.next/server/app/api/llm-model/subscription/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/[name]/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/oauth/callback/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/tools/route.js.nft.json +1 -1
- package/.next/server/app/api/memory/edit/route.js +14 -13
- package/.next/server/app/api/memory/edit/route.js.nft.json +1 -1
- package/.next/server/app/api/memory/route.js.nft.json +1 -1
- package/.next/server/app/api/reach/route.js +17 -16
- package/.next/server/app/api/reach/route.js.nft.json +1 -1
- package/.next/server/app/api/routine/route.js +10 -10
- package/.next/server/app/api/routine/route.js.nft.json +1 -1
- package/.next/server/app/api/signins/route.js.nft.json +1 -1
- package/.next/server/app/api/skills/[source]/[name]/route.js +9 -8
- package/.next/server/app/api/skills/[source]/[name]/route.js.nft.json +1 -1
- package/.next/server/app/api/skills/route.js +9 -8
- package/.next/server/app/api/skills/route.js.nft.json +1 -1
- package/.next/server/app/api/thursday/call/end/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/thursday/call/end/route/build-manifest.json +12 -0
- package/.next/server/app/api/thursday/call/end/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/thursday/call/end/route.js +17 -0
- package/.next/server/app/api/thursday/call/end/route.js.map +5 -0
- package/.next/server/app/api/thursday/call/end/route.js.nft.json +1 -0
- package/.next/server/app/api/thursday/call/end/route_client-reference-manifest.js +3 -0
- 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 +16 -15
- package/.next/server/app/api/thursday/text/route.js.nft.json +1 -1
- package/.next/server/app/api/thursday/tool-call/route.js +13 -12
- package/.next/server/app/api/thursday/tool-call/route.js.nft.json +1 -1
- package/.next/server/app/api/workspace/files/route.js +5 -5
- package/.next/server/app/api/workspace/files/route.js.nft.json +1 -1
- package/.next/server/app/api/workspace/route.js +5 -5
- package/.next/server/app/api/workspace/route.js.nft.json +1 -1
- package/.next/server/app/artifact/[...path]/page/server-reference-manifest.json +3 -3
- package/.next/server/app/artifact/[...path]/page.js +2 -2
- package/.next/server/app/artifact/[...path]/page.js.nft.json +1 -1
- package/.next/server/app/artifact/[...path]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/favicon.ico/route.js.nft.json +1 -1
- package/.next/server/app/manifest.webmanifest/route.js.nft.json +1 -1
- package/.next/server/app/page/server-reference-manifest.json +60 -60
- package/.next/server/app/page.js +8 -8
- package/.next/server/app/page.js.nft.json +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app-paths-manifest.json +2 -0
- package/.next/server/chunks/{[externals]__178rv3v._.js → [externals]__12stas-._.js} +1 -1
- package/.next/server/chunks/[root-of-the-server]__00qyw01._.js +1 -1
- package/.next/server/chunks/{[root-of-the-server]__1ignh6-._.js → [root-of-the-server]__01k3vi3._.js} +1 -1
- package/.next/server/chunks/[root-of-the-server]__01ypm_z._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__021dkui._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__03vunn6._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__03xamry._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__05dp5tr._.js +1 -1
- package/.next/server/chunks/{[root-of-the-server]__208vmyf._.js → [root-of-the-server]__061o2_x._.js} +1 -1
- package/.next/server/chunks/[root-of-the-server]__09gdscj._.js +3 -3
- package/.next/server/chunks/[root-of-the-server]__0bqveex._.js +5 -0
- package/.next/server/chunks/[root-of-the-server]__0eivkvk._.js +5 -0
- package/.next/server/chunks/[root-of-the-server]__0f7m79q._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0g38-aj._.js +2 -2
- package/.next/server/chunks/[root-of-the-server]__0h656y-._.js +2 -2
- package/.next/server/chunks/[root-of-the-server]__0hkxwim._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0hm3tiq._.js +5 -0
- package/.next/server/chunks/[root-of-the-server]__0hzdqnv._.js +5 -0
- package/.next/server/chunks/[root-of-the-server]__0liwkmx._.js +4 -4
- package/.next/server/chunks/[root-of-the-server]__0ljizgj._.js +2 -2
- package/.next/server/chunks/[root-of-the-server]__0mgyt8p._.js +5 -0
- package/.next/server/chunks/[root-of-the-server]__0mrk2it._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__0nmust6._.js +2 -2
- package/.next/server/chunks/[root-of-the-server]__0p80i1n._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0qzho69._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0sm5xvm._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__0svzjwa._.js +3 -3
- package/.next/server/chunks/{[root-of-the-server]__0b36yfw._.js → [root-of-the-server]__0ts7ai0._.js} +1 -1
- package/.next/server/chunks/[root-of-the-server]__1-18_pz._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1-rmal0._.js +5 -0
- package/.next/server/chunks/[root-of-the-server]__13hng6h._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__1_04mcf._.js +2 -2
- package/.next/server/chunks/[root-of-the-server]__1_h4hf9._.js +3 -3
- package/.next/server/chunks/[root-of-the-server]__1ceammd._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__1ckt1yj._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1cu5f3z._.js +5 -0
- package/.next/server/chunks/[root-of-the-server]__1hviq62._.js +5 -0
- package/.next/server/chunks/{[root-of-the-server]__12m24xl._.js → [root-of-the-server]__1k2qs1m._.js} +1 -1
- package/.next/server/chunks/[root-of-the-server]__1kmnkbk._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1ndi14y._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__1p47fbb._.js +2 -2
- package/.next/server/chunks/[root-of-the-server]__1pugoq0._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1t02-1p._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__1t0jj1j._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__1vlxv19._.js +2 -2
- package/.next/server/chunks/[root-of-the-server]__1ygplx1._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__1zn039k._.js +1 -1
- package/.next/server/chunks/_05gl-xy._.js +5 -5
- package/.next/server/chunks/_06hnfi8._.js +8 -0
- package/.next/server/chunks/_06u9yo-._.js +1 -1
- package/.next/server/chunks/_07nxi75._.js +25 -21
- package/.next/server/chunks/_08354bn._.js +25 -21
- package/.next/server/chunks/_08btiir._.js +3 -3
- package/.next/server/chunks/_0c49lmw._.js +5 -0
- package/.next/server/chunks/_0ey0s6v._.js +3 -0
- package/.next/server/chunks/_0hgvg55._.js +5 -0
- package/.next/server/chunks/_0j0-gq6._.js +2 -2
- package/.next/server/chunks/_0nn99o2._.js +1 -1
- package/.next/server/chunks/_0p6v1fr._.js +2 -2
- package/.next/server/chunks/_0s8ao8z._.js +3 -0
- package/.next/server/chunks/_0srlnvd._.js +1 -1
- package/.next/server/chunks/_0t_7gji._.js +1 -1
- package/.next/server/chunks/_0ucx1jv._.js +3 -0
- package/.next/server/chunks/_0uzj57i._.js +1 -1
- package/.next/server/chunks/_0xygcxs._.js +25 -21
- package/.next/server/chunks/_1-sk_q4._.js +1 -1
- package/.next/server/chunks/{_1xcnogc._.js → _108gsm8._.js} +4 -4
- package/.next/server/chunks/{_20oecmn._.js → _15negpy._.js} +4 -4
- package/.next/server/chunks/_19fh9t2._.js +3 -0
- package/.next/server/chunks/_19kea1l._.js +18 -18
- package/.next/server/chunks/_1dtm9bs._.js +1 -1
- package/.next/server/chunks/_1dxq827._.js +2 -2
- package/.next/server/chunks/_1e54wxa._.js +1 -1
- package/.next/server/chunks/_1frcwj1._.js +3 -0
- package/.next/server/chunks/_1gn2r2q._.js +5 -5
- package/.next/server/chunks/_1gxankq._.js +2 -2
- package/.next/server/chunks/_1i3uucm._.js +5 -0
- package/.next/server/chunks/_1m88lkh._.js +9 -9
- package/.next/server/chunks/_1mx9sfo._.js +1 -1
- package/.next/server/chunks/_1q6e56i._.js +5 -5
- package/.next/server/chunks/_1qxheoa._.js +1 -1
- package/.next/server/chunks/_1t5ijzv._.js +3 -0
- package/.next/server/chunks/_1wwl_7o._.js +1 -1
- package/.next/server/chunks/_1zfxb7j._.js +1 -1
- package/.next/server/chunks/_211dn2c._.js +1 -1
- package/.next/server/chunks/_next-internal_server_app_api_llm-model_automatic_route_actions_1-eyan7.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_thursday_call_end_route_actions_0u5xjft.js +3 -0
- package/.next/server/chunks/config_ts_1g4sz5o._.js +1 -1
- package/.next/server/chunks/{features_0wm-ujw._.js → features_bot_08z387_._.js} +4 -4
- package/.next/server/chunks/{ssr/[root-of-the-server]__07660xu._.js → features_bot_0zy_q8y._.js} +8 -9
- package/.next/server/chunks/features_bot_1dfrdsb._.js +37 -0
- package/.next/server/chunks/features_workspace_workspace_ts_13h82gv._.js +3 -3
- package/.next/server/chunks/features_workspace_workspace_ts_1iyjroj._.js +3 -3
- package/.next/server/chunks/node_modules_103lpef._.js +3 -0
- package/.next/server/chunks/{node_modules_consola_dist_chunks_prompt_mjs_0_nz09c._.js → node_modules_consola_dist_chunks_prompt_mjs_0-t5tbs._.js} +1 -1
- package/.next/server/chunks/{node_modules_consola_dist_chunks_prompt_mjs_1341cnf._.js → node_modules_consola_dist_chunks_prompt_mjs_039fwo9._.js} +1 -1
- package/.next/server/chunks/{node_modules_consola_dist_chunks_prompt_mjs_1x3bsmx._.js → node_modules_consola_dist_chunks_prompt_mjs_0pce1b3._.js} +1 -1
- package/.next/server/chunks/node_modules_consola_dist_chunks_prompt_mjs_0tvy5lq._.js +3 -0
- package/.next/server/chunks/node_modules_consola_dist_chunks_prompt_mjs_0wxw35t._.js +3 -0
- package/.next/server/chunks/node_modules_consola_dist_chunks_prompt_mjs_1dlthym._.js +3 -0
- package/.next/server/chunks/node_modules_consola_dist_chunks_prompt_mjs_1smfi4-._.js +3 -0
- package/.next/server/chunks/node_modules_consola_dist_chunks_prompt_mjs_1x1omfi._.js +3 -0
- package/.next/server/chunks/node_modules_consola_dist_chunks_prompt_mjs_20is7e3._.js +3 -0
- package/.next/server/chunks/ssr/{[root-of-the-server]__149x25m._.js → [root-of-the-server]__0-af_o7._.js} +2 -2
- package/.next/server/chunks/ssr/[root-of-the-server]__09f39cp._.js +4 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0ouu4qp._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0q9g9ea._.js +5 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__17h1ggo._.js +11 -9
- package/.next/server/chunks/ssr/[root-of-the-server]__1jyeu61._.js +1 -1
- package/.next/server/chunks/ssr/{_0aeknva._.js → _01al00i._.js} +2 -2
- package/.next/server/chunks/ssr/_088vzgn._.js +1 -1
- package/.next/server/chunks/ssr/_0afrpci._.js +1 -1
- package/.next/server/chunks/ssr/_0bgse1c._.js +162 -0
- package/.next/server/chunks/ssr/_0cd6g3l._.js +15 -15
- package/.next/server/chunks/ssr/_0cv9tmv._.js +1 -1
- package/.next/server/chunks/ssr/{_0_vnw9v._.js → _0e2fnvg._.js} +2 -2
- package/.next/server/chunks/ssr/_0fo4552._.js +25 -21
- package/.next/server/chunks/ssr/_0jstvlg._.js +39 -0
- package/.next/server/chunks/ssr/{_0r0g9ki._.js → _0l7rjg5._.js} +2 -2
- package/.next/server/chunks/ssr/_0qsmpcu._.js +1 -1
- package/.next/server/chunks/ssr/_0v9r8g2._.js +1 -1
- package/.next/server/chunks/ssr/{_18-e7zi._.js → _0vo_oym._.js} +4 -4
- package/.next/server/chunks/ssr/_0x8ophf._.js +1 -1
- package/.next/server/chunks/ssr/{_0ztbn5q._.js → _0xfafez._.js} +2 -2
- package/.next/server/chunks/ssr/_0z38nha._.js +1 -1
- package/.next/server/chunks/ssr/_10-_awu._.js +1 -1
- package/.next/server/chunks/ssr/{_1z6pirx._.js → _10_ph1t._.js} +2 -2
- package/.next/server/chunks/ssr/_116lfdc._.js +3 -0
- package/.next/server/chunks/ssr/_14dfh7a._.js +1 -1
- package/.next/server/chunks/ssr/_14oirtb._.js +3 -0
- package/.next/server/chunks/ssr/{_1umbr78._.js → _163dr78._.js} +2 -2
- package/.next/server/chunks/ssr/{_1c5iqz1._.js → _17a4qyk._.js} +3 -3
- package/.next/server/chunks/ssr/{_1sttj8x._.js → _1_5xof_._.js} +2 -2
- package/.next/server/chunks/ssr/{_1hbjh6n._.js → _1aqjk-1._.js} +2 -2
- package/.next/server/chunks/ssr/{_0n2scfq._.js → _1dfv66y._.js} +2 -2
- package/.next/server/chunks/ssr/_1neoj22._.js +1 -1
- package/.next/server/chunks/ssr/_1ou5sj0._.js +1 -1
- package/.next/server/chunks/ssr/{_15m5ctz._.js → _1tmw842._.js} +2 -2
- package/.next/server/chunks/ssr/_1uij_rj._.js +1 -1
- package/.next/server/chunks/ssr/_1w9w1ok._.js +1 -1
- package/.next/server/chunks/ssr/features_0796o8r._.js +1 -1
- package/.next/server/chunks/ssr/features_bot_0ouemw8._.js +3 -0
- package/.next/server/chunks/ssr/{features_133mpna._.js → features_bot_0tb4ui-._.js} +2 -2
- package/.next/server/chunks/ssr/{features_config_0n0zu89._.js → features_config_09n-q9q._.js} +3 -3
- package/.next/server/chunks/ssr/features_connectors_components_mcp-setting_tsx_0jmbgvp._.js +1 -1
- package/.next/server/chunks/ssr/features_memory_components_memory-setting_tsx_0oa43sw._.js +1 -1
- package/.next/server/chunks/ssr/features_routine_components_routine-setting_tsx_055fknz._.js +1 -1
- package/.next/server/chunks/ssr/features_workspace_workspace_ts_1wc7_u_._.js +4 -4
- package/.next/server/chunks/ssr/{node_modules_1hefp6h._.js → node_modules_021lid9._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_0kwie-o._.js → node_modules_04x5wyv._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_180l3i0._.js → node_modules_096up6a._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_00h1t1j._.js → node_modules_0__0tvm._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_03uejh6._.js → node_modules_0cjnmzp._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_1ubln7w._.js → node_modules_0d6j33x._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_1_n9o9s._.js → node_modules_0gd9hbz._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_0zf3wuu._.js → node_modules_0k8-y89._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_0u_8z64._.js → node_modules_0m73b88._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_09ikzel._.js → node_modules_0msrhxf._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_0f5bmkb._.js → node_modules_0nmkv-v._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_07mo9rn._.js → node_modules_0nw5jz7._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_09e8kz_._.js → node_modules_0q-klni._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_02ficyi._.js → node_modules_10_fv2a._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_142z3o5._.js → node_modules_113l3e5._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_1wyhtw9._.js → node_modules_13bqv6i._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_0_d_7gq._.js → node_modules_13g-d25._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_0r-9e4n._.js → node_modules_156kv_t._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_06grs09._.js → node_modules_1_8-jcj._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_1fw32pg._.js → node_modules_1gq3ght._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_0_p8w7p._.js → node_modules_1k5i-_9._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_03q71_j._.js → node_modules_1lmyts8._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_1irot3r._.js → node_modules_1p_6sq7._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_1om2itc._.js → node_modules_1qstb1x._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_197vh1s._.js → node_modules_1ri_eip._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_1-7fc7h._.js → node_modules_1xb-ndg._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_@mermaid-js_parser_dist_chunks_mermaid-parser_core_0aczkbn._.js → node_modules_@mermaid-js_parser_dist_chunks_mermaid-parser_core_0amkw0b._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_@mermaid-js_parser_dist_chunks_mermaid-parser_core_0ah684s._.js → node_modules_@mermaid-js_parser_dist_chunks_mermaid-parser_core_0zq3l45._.js} +1 -1
- package/.next/server/middleware-build-manifest.js +3 -3
- package/.next/server/middleware.js +1 -1
- 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 +61 -61
- package/.next/static/chunks/{38edd4rpcbvzp.js → 01l7kw74vfp32.js} +1 -1
- package/.next/static/chunks/0a5_-jqhaktjj.js +1 -0
- package/.next/static/chunks/{0_b_bi2pobasx.js → 0obogzscwwekj.js} +2 -2
- package/.next/static/chunks/{1-63yde5eaz7i.js → 0p2f6uv4xytfm.js} +1 -1
- package/.next/static/chunks/{2v6e_9p95o2e3.js → 0uxq_vs6uxi-b.js} +1 -1
- package/.next/static/chunks/{024plctckvq-1.js → 166smhw8v-s3j.js} +1 -1
- package/.next/static/chunks/{1wbqaidq7vc3_.js → 1bnhw-5fj7aiz.js} +1 -1
- package/.next/static/chunks/1cglo3a2mbeou.js +1 -0
- package/.next/static/chunks/{0sv142q1yrva2.js → 1in6nxpu33iab.js} +1 -1
- package/.next/static/chunks/1u7kg91f9qy3g.js +1 -0
- package/.next/static/chunks/{0sowxe4nnl5qu.js → 1xv4g10m-cl1s.js} +1 -1
- package/.next/static/chunks/{0dfvwgnyrp8qt.js → 2ajs12-fcdwzm.js} +1 -1
- package/.next/static/chunks/2i7qtmxc1kuqg.js +1 -0
- package/.next/static/chunks/{3-qp777vtfglj.js → 2kz1f6r59nky0.js} +1 -1
- package/.next/static/chunks/2qgkbdshzpq1c.js +1 -0
- package/.next/static/chunks/{1bgvxd3xny53w.js → 2zbl41hed17g3.js} +2 -2
- package/.next/static/chunks/35jj-5u4te56r.js +1 -0
- package/.next/static/chunks/37ixzapa06xlo.js +1 -0
- package/.next/static/chunks/3b96xy59nl_gd.js +1 -0
- package/.next/static/chunks/{0f47nnshdlucs.js → 3gsxnqqqphh-1.js} +1 -1
- package/.next/static/chunks/{44vre0f7xqsh-.js → 3jtcieuk1l6tw.js} +1 -1
- package/.next/static/chunks/{05scfrgo_a_5_.js → 3k1d8y03t5nax.js} +1 -1
- package/.next/static/chunks/3sla-dm1puqd1.js +35 -0
- package/.next/static/chunks/3t2c76awm9k_p.js +1 -0
- package/.next/static/chunks/3vrmcm31ih7gb.js +1 -0
- package/.next/static/chunks/3yiqr95d7ybeq.js +15 -0
- package/bin/autostart.mjs +4 -1
- package/bin/database.mjs +26 -4
- package/bin/lock.mjs +59 -0
- package/bin/node-check.mjs +21 -0
- package/bin/thursday.mjs +8 -1
- package/guide/bots.md +4 -2
- package/guide/calls.md +11 -9
- package/guide/memory.md +3 -2
- package/guide/phone.md +7 -4
- package/guide/setup.md +26 -9
- package/guide/trouble.md +11 -4
- package/package.json +1 -1
- package/public/voices/intro/asleepBare-15199d56.ogg +0 -0
- package/public/voices/intro/style-88adf274.ogg +0 -0
- package/seed-skills/concierge/travel/scripts/itinerary.mjs +6 -4
- package/skills/artifact/references/book.md +2 -1
- package/skills/artifact/references/sheet.md +12 -7
- package/skills/artifact/runtime/sheet/format.mjs +16 -9
- package/skills/artifact/scripts/book.mjs +19 -6
- package/skills/artifact/scripts/spreadsheet.mjs +194 -97
- package/skills/browser/SKILL.md +9 -6
- package/.next/server/chunks/[root-of-the-server]__03b09q0._.js +0 -5
- package/.next/server/chunks/[root-of-the-server]__05n-hql._.js +0 -5
- package/.next/server/chunks/[root-of-the-server]__0j_nz36._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0jzwdg-._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0tsded0._.js +0 -5
- package/.next/server/chunks/[root-of-the-server]__12tahb4._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__1de1o6m._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__1yl5l25._.js +0 -3
- package/.next/server/chunks/_02lipqs._.js +0 -5
- package/.next/server/chunks/_05sa7xl._.js +0 -3
- package/.next/server/chunks/_074f2ts._.js +0 -3
- package/.next/server/chunks/_0caua_s._.js +0 -3
- package/.next/server/chunks/_0p-h6xe._.js +0 -5
- package/.next/server/chunks/_0up2a9o._.js +0 -3
- package/.next/server/chunks/_17i1lt2._.js +0 -3
- package/.next/server/chunks/_1hy9x9_._.js +0 -3
- package/.next/server/chunks/_1hyvcgk._.js +0 -5
- package/.next/server/chunks/_1wl2g8_._.js +0 -6
- package/.next/server/chunks/_1y3mnz4._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__10eb-1x._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__19s8qyj._.js +0 -3
- package/.next/server/chunks/ssr/_0o_o9ji._.js +0 -3
- package/.next/server/chunks/ssr/_0qne8xs._.js +0 -3
- package/.next/server/chunks/ssr/_0rvbegp._.js +0 -7
- package/.next/server/chunks/ssr/_1vtgiou._.js +0 -162
- package/.next/server/chunks/ssr/features_bot_1kr0_m-._.js +0 -3
- package/.next/static/chunks/04toe_3nqfjqt.js +0 -1
- package/.next/static/chunks/0mtfu8adz57qz.js +0 -1
- package/.next/static/chunks/0tp868040z9nn.js +0 -35
- package/.next/static/chunks/14qitm0kwsb6g.js +0 -15
- package/.next/static/chunks/1cyrrz4q871aj.js +0 -1
- package/.next/static/chunks/1st3b0c9vhxg3.js +0 -1
- package/.next/static/chunks/28sxb_k460e9h.js +0 -1
- package/.next/static/chunks/33ekkscpcq-z1.js +0 -1
- package/.next/static/chunks/388l-zszwa_jf.js +0 -1
- package/.next/static/chunks/3bwrvpjk95_x4.js +0 -1
- package/.next/static/chunks/3itdg6t243u6f.js +0 -1
- package/.next/static/chunks/3kj0pri2oc1g1.js +0 -1
- package/public/voices/intro/style-cb6fa4f7.ogg +0 -0
- /package/.next/static/{VtbCMn-0G969p8QJsWdGv → 8I2hKtciyA9LXvd8txuOz}/_buildManifest.js +0 -0
- /package/.next/static/{VtbCMn-0G969p8QJsWdGv → 8I2hKtciyA9LXvd8txuOz}/_clientMiddlewareManifest.js +0 -0
- /package/.next/static/{VtbCMn-0G969p8QJsWdGv → 8I2hKtciyA9LXvd8txuOz}/_ssgManifest.js +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
module.exports=[539470,e=>e.a(async(t,r)=>{try{var n=e.i(588762),a=e.i(333925),i=e.i(5509),s=e.i(900533),o=e.i(64774),l=t([i]);async function c(){let e=await (0,i.listThreadOverview)();if(!e.length)return null;let t=e.map(e=>{let t=(0,n.formatDistanceToNowStrict)((0,s.toDate)(e.updatedAt),{addSuffix:!0}),r=e.room.questions[0],i="waiting"===e.status&&r?`waiting on the user since ${t} — ${r.bot} asked: ${(0,o.clip)(r.text,a.PROMPT_LINE.jobOutcome)}`:"waiting"===e.status?`stopped ${t}, not finished`:"running"===e.status?`running, last moved ${t}`:`${e.status} ${t}`;return`- "${e.label}" (${e.id}) — ${e.bot} — ${i}`});return`[The threads as this call opened, open work first. They move while you talk.]
|
|
2
|
-
${t.join("\n")}`}[i]=l.then?(await l)():l,e.s(["loadCallStanding",0,c]),r()}catch(e){r(e)}},!1),79290,e=>e.a(async(t,r)=>{try{var n=e.i(333925),a=e.i(973589),i=e.i(51083),s=e.i(799791),o=e.i(951056),l=e.i(5509),c=e.i(1363),u=e.i(232549),d=e.i(343229),h=e.i(520401),p=e.i(871096),f=e.i(340697),g=e.i(497287),m=e.i(636608),y=t([s,l,c,d,h,f]);async function b(e){var t,r,y,b,_,E,x,R;let v,{backendPrompt:S,written:O=!1,phone:$=!1,readSkills:T}=e,A=await (0,p.openWorkspace)(),[P,j,D,C,I,
|
|
2
|
+
${t.join("\n")}`}[i]=l.then?(await l)():l,e.s(["loadCallStanding",0,c]),r()}catch(e){r(e)}},!1),79290,e=>e.a(async(t,r)=>{try{var n=e.i(333925),a=e.i(973589),i=e.i(51083),s=e.i(799791),o=e.i(951056),l=e.i(5509),c=e.i(1363),u=e.i(232549),d=e.i(343229),h=e.i(520401),p=e.i(871096),f=e.i(340697),g=e.i(497287),m=e.i(636608),y=t([s,l,c,d,h,f]);async function b(e){var t,r,y,b,_,E,x,R;let v,{backendPrompt:S,written:O=!1,phone:$=!1,readSkills:T}=e,A=await (0,p.openWorkspace)(),[P,j,D,C,N,I,M]=await Promise.all([(0,d.loadSkills)(A),(0,c.listNoteIndex)(),(0,c.readNotes)(u.MEMORY_ALWAYS_LISTED,{touch:!1}),(0,f.listConnectedToolNames)(),(0,s.listJobBots)(),(0,h.listRecentTurns)(n.RECENT_CALL.rows,e.callId),(0,s.readBotMemoryOn)()]),L=await (0,l.listCallJobs)(I.map(e=>e.callId)),B=[(0,m.thursdayIdentity)(),O?(0,g.personaLines)(e.persona):"",O?(0,m.styleLines)(e.stylePrompt):"",function(e,t){let{crowded:r,heavy:n}=(0,m.tidying)(e),a=[...n].sort((e,t)=>t.factCount-e.factCount).slice(0,3).map(e=>e.path),s=r||n.length?`
|
|
3
3
|
|
|
4
4
|
Saved memory has grown past what it holds well${a.length?` (${a.join(", ")})`:""}: say so once in what you return, go through what looks out of date with the user, and forget only what they name.`:"",o=new Set(t.map(e=>e.path)),l=`## Memory
|
|
5
5
|
|
|
@@ -11,11 +11,11 @@ ${(0,m.noteLines)(e.filter(e=>!o.has(e.path)),r)}${s}
|
|
|
11
11
|
|
|
12
12
|
Open a note before answering out of it; a topic not listed is one you know nothing about. A fact marked \`said\` came from a call.
|
|
13
13
|
|
|
14
|
-
Keep what the user tells you as it comes up, with \`${i.TOOL_NAMES.memory_remember}\`, without waiting to be asked: what they actually said, never a guess, nothing they asked you not to keep, and from a bot's report only what it confirmed about them. What tells you most about them comes first: what they loved or could not stand and why — how they want you to talk goes under preferences — then what they are going through or working toward, good news, stories from their past and the people in their life, and last plain facts and tastes. A subject that is not on the listing gets a note of its own with \`${i.TOOL_NAMES.memory_create}\`, under one of the paths below.
|
|
14
|
+
Keep what the user tells you as it comes up, with \`${i.TOOL_NAMES.memory_remember}\`, without waiting to be asked: what they actually said, never a guess, nothing they asked you not to keep, and from a bot's report only what it confirmed about them. What they say that bears on work already handed over is said to that thread as well (\`${i.TOOL_NAMES.thread_tell}\`). What tells you most about them comes first: what they loved or could not stand and why — how they want you to talk goes under preferences — then what they are going through or working toward, good news, stories from their past and the people in their life, and last plain facts and tastes. A subject that is not on the listing gets a note of its own with \`${i.TOOL_NAMES.memory_create}\`, under one of the paths below.
|
|
15
15
|
|
|
16
16
|
**Keep memory clean as you write.** A fact that repeats, narrows or changes one already in the note replaces it, merged into one line, rather than sitting beside it. A later call finds a note only by its path and its line: give something new its own path below, and when a line no longer says what its note is about, \`${i.TOOL_NAMES.memory_describe}\` puts it right.
|
|
17
17
|
|
|
18
|
-
${u.MEMORY_PATHS.map(e=>`- ${e.path} — ${e.of}`).join("\n")}`;return[l,c,d].join("\n\n")}(j,D.notes),(t=
|
|
18
|
+
${u.MEMORY_PATHS.map(e=>`- ${e.path} — ${e.of}`).join("\n")}`;return[l,c,d].join("\n\n")}(j,D.notes),(t=N,r=(0,m.reachNames)(T?[]:P,C),y=M,b=$,0===t.length?"":`## Background work
|
|
19
19
|
|
|
20
20
|
Who you hand work to — the names \`${i.TOOL_NAMES.thread_start}\` takes.
|
|
21
21
|
|
|
@@ -25,7 +25,7 @@ What bots can reach for: ${r}.`:""}
|
|
|
25
25
|
|
|
26
26
|
**A bot can take on almost anything, and anything that takes more than a few seconds is a bot's**; a note, a look at a file or one command is yours. A bot has this computer, a real browser, the web, a shell to build what is missing and far more time than a call; it signs in where it has to and carries work to the end, so something you do not know how to do is work for a bot, not a no. Bots bring each other in, so work that spans several things is still one thread.${y?" Each bot keeps its own memory from thread to thread: when the user says how a bot should work from now on, pass it to that bot to remember.":""}
|
|
27
27
|
|
|
28
|
-
**Work lives in threads.** A thread's bot remembers that thread and nothing else, so the same bot started on a new one begins from nothing. More about work already handed over — a correction, the next step once it finished, going on after it stopped — is said to that thread (\`${i.TOOL_NAMES.thread_tell}\`); only a request that stands on its own starts a new one (\`${i.TOOL_NAMES.thread_start}\`). The threads open as this call started come into the conversation at the start, and they move while you talk: \`${i.TOOL_NAMES.thread_status}\` reads them as they are now, before you answer about one or hand anything over. Ask the user which it is only when the request could be either. Write the request in the user's own words, with what it stands on — including how they told you they want work done — and nothing they did not say.
|
|
28
|
+
**Work lives in threads.** A thread's bot remembers that thread and nothing else, so the same bot started on a new one begins from nothing. More about work already handed over — a correction, the next step once it finished, going on after it stopped — is said to that thread (\`${i.TOOL_NAMES.thread_tell}\`); only a request that stands on its own starts a new one (\`${i.TOOL_NAMES.thread_start}\`). The threads open as this call started come into the conversation at the start, and they move while you talk: \`${i.TOOL_NAMES.thread_status}\` reads them as they are now, before you answer about one or hand anything over. Ask the user which it is only when the request could be either. Write the request in the user's own words, with what it stands on — including how they told you they want work done — and nothing they did not say. When something the work needs is still missing, either ask the user yourself before handing it over or let the bot ask them — never both.
|
|
29
29
|
|
|
30
30
|
**Work that should start by itself — every morning, every few hours — is a routine.** \`${i.TOOL_NAMES.routine}\` makes one from a bot, the work in the user's own words, and when; from then on it starts a thread for it each time without being asked, and the result reaches the user like any thread's. Ask once for whichever of those they left out, and read the ones that exist before making, changing or deleting one.
|
|
31
31
|
|
|
@@ -42,9 +42,9 @@ Skills are written-down ways of doing things here. \`${i.TOOL_NAMES.load_skill}\
|
|
|
42
42
|
|
|
43
43
|
${(0,m.skillLines)(E,{short:!0})}`),O?`## Answer in writing
|
|
44
44
|
|
|
45
|
-
This call is in writing: there is no voice, and what you write is what the user reads, so answer them directly, in their language. Say the relevant facts, whether the task is complete, and what comes next — for work you handed over, who has it and whether it carries an earlier thread on or starts a new one — or the one question they have to answer first. Use confirmed values from tool results and the notes above, and never invent a successful action. Keep it short and plain.`:`## Return the result
|
|
45
|
+
This call is in writing: there is no voice, and what you write is what the user reads, so answer them directly, in their language. Say the relevant facts, whether the task is complete, and what comes next — for work you handed over, who has it and whether it carries an earlier thread on or starts a new one — or the one question they have to answer first. Use confirmed values from tool results and the notes above, and never invent a successful action. Keep it short and plain. News from a bot comes in the middle of whatever you were talking about: say whose work it is and which job before what it says.`:`## Return the result
|
|
46
46
|
|
|
47
|
-
Return the relevant facts, whether the task is complete, and what comes next — for work you handed over, who has it and whether it carries an earlier thread on or starts a new one — or the one question the user has to answer first. Use confirmed values from tool results and the notes above, and never invent a successful action. What you return is said aloud: keep it short and plain, and carry what they do not know yet — never a confirmation this conversation has already given them.`,(x=
|
|
47
|
+
Return the relevant facts, whether the task is complete, and what comes next — for work you handed over, who has it and whether it carries an earlier thread on or starts a new one — or the one question the user has to answer first. Use confirmed values from tool results and the notes above, and never invent a successful action. What you return is said aloud: keep it short and plain, and carry what they do not know yet — never a confirmation this conversation has already given them. When all the turn did was keep what they told you about themselves, return only that it was kept: the voice is already answering them.`,(x=I,R=L,x.some(e=>e.turns.length>0)?`## Earlier calls
|
|
48
48
|
|
|
49
49
|
What was said on the last calls, verbatim, newest last. It is the past: pick it up when the user does, and never answer it as a new request.
|
|
50
50
|
|
|
@@ -59,15 +59,15 @@ ${t.length?t.join("\n"):"- (nothing yet)"}`}e.s(["loadThursdayPrompt",0,b]),r()}
|
|
|
59
59
|
|
|
60
60
|
→ ${(0,r.chatPieces)({plain:n},"slack",2900)[0]}`;await o("chat.update",{channel:e,ts:t.id,text:`${t.text.slice(0,2900-a.length)}${a}`,blocks:[]}).catch(()=>{})},async sendFiles(e,t){let r=[];for(let{bytes:e,name:n}of t){let t=new URLSearchParams({filename:n,length:String(e.byteLength)}),i=await fetch(`${a}/files.getUploadURLExternal`,{method:"POST",headers:{authorization:`Bearer ${s}`},body:t}),o=await i.json();if(!o.ok||!o.upload_url||!o.file_id)throw Error(`Slack answered ${o.error??i.status} to the upload`);let l=await fetch(o.upload_url,{method:"POST",body:new Blob([e])});if(!l.ok)throw Error(`Slack answered ${l.status} to the upload`);r.push({id:o.file_id,title:n})}r.length&&await o("files.completeUploadExternal",{files:r,channel_id:e})}}}])},644301,e=>{"use strict";var t=e.i(333925),r=e.i(417043),n=e.i(775247);let a="https://api.telegram.org",i={take:0x1400000,file:0x3200000,picture:0xa00000};class s extends Error{status;constructor(e,t){super(e),this.status=t}}e.s(["createTelegram",0,function(e){async function o(t,n,i){let o=n instanceof FormData;for(let l=0;;l++){let c=await fetch(`${a}/bot${e}/${t}`,{method:"POST",signal:i,...o?{body:n}:{headers:{"content-type":"application/json"},body:JSON.stringify(n??{})}}).catch(e=>{throw Error(`Could not reach ${new URL(a).host}`,{cause:e})}),u=await c.json().catch(()=>null);if(u?.ok)return u.result;if(429===c.status&&await (0,r.waitOut)(u?.parameters?.retry_after,l))continue;let d=u?.description??`Telegram answered ${c.status}`;if(401===c.status)throw new r.ChannelRefusal(`Telegram said “${d}”: this token was revoked or mistyped. Get it again from @BotFather and paste it here.`);throw new s(d,c.status)}}async function l(t,r,n){let{file_path:i}=await o("getFile",{file_id:t});if(!i)throw Error("Telegram did not say where the file is");let s=await fetch(`${a}/file/bot${e}/${i}`);if(!s.ok)throw Error(`Telegram answered ${s.status} for the file`);let l=i.includes(".")?i.slice(i.lastIndexOf(".")):"";return new File([await s.arrayBuffer()],r.includes(".")?r:`${r}${l}`,n?{type:n}:void 0)}let c=0;async function u(e,t){let r=new FormData;if(r.set("chat_id",e),1===t.length){r.set("photo",new Blob([t[0].bytes]),t[0].name),await o("sendPhoto",r);return}for(let[e,n]of(r.set("media",JSON.stringify(t.map((e,t)=>({type:"photo",media:`attach://p${t}`})))),t.entries()))r.set(`p${e}`,new Blob([n.bytes]),n.name);await o("sendMediaGroup",r)}return{limits:i,async listen(e,r){let n=await o("getMe",void 0,r);for(e.ready(n.username?`@${n.username}`:n.first_name??"the bot",n.username?`https://t.me/${n.username}`:null,String(n.id));!r.aborted;)for(let n of(await o("getUpdates",{offset:c,timeout:t.REACH.pollSeconds,allowed_updates:["message","callback_query"]},AbortSignal.any([r,AbortSignal.timeout((t.REACH.pollSeconds+15)*1e3)])))){c=n.update_id+1;let t=function(e){let t,r=e.callback_query;if(r)return o("answerCallbackQuery",{callback_query_id:r.id}).catch(()=>{}),{kind:"press",chat:String(r.from.id),data:r.data??"",under:r.message?.text?{id:String(r.message.message_id),text:r.message.text,keep:r.message.entities}:null};let n=e.message;if(!n?.from||"private"!==n.chat.type)return null;let a=n.photo?.at(-1),i=n.document?{id:n.document.file_id,name:n.document.file_name??"file",type:n.document.mime_type,size:n.document.file_size}:a?{id:a.file_id,name:`photo-${n.message_id}`,type:"",size:a.file_size}:null;return{kind:"message",chat:String(n.chat.id),name:(t=n.from,[t?.first_name,t?.last_name].filter(Boolean).join(" ")||(t?.username?`@${t.username}`:"Someone")),handle:n.from.username?`@${n.from.username}`:null,words:(n.text??n.caption??"").trim(),files:i?[{name:i.name,size:i.size,fetch:()=>l(i.id,i.name,i.type)}]:[],unreadable:!!(n.voice||n.audio||n.video)}}(n);t&&e.incoming(t)}},async say(e,t,r){let a=(0,n.chatPieces)(t,"telegram",4e3);for(let[t,n]of a.entries())await o("sendMessage",{chat_id:e,text:n,parse_mode:"HTML",link_preview_options:{is_disabled:!0},...r?.length&&t===a.length-1?{reply_markup:{inline_keyboard:r.map(e=>[{text:e.text,callback_data:e.data}])}}:{}})},async typing(e){await o("sendChatAction",{chat_id:e,action:"typing"}).catch(()=>{})},async settle(e,t,r){await o("editMessageText",{chat_id:e,message_id:Number(t.id),text:`${t.text}
|
|
61
61
|
|
|
62
|
-
→ ${r}`,entities:t.keep,link_preview_options:{is_disabled:!0}}).catch(()=>{})},async sendFiles(e,t){let r=t.filter(e=>e.picture),n=t.filter(e=>!e.picture);for(let t=0;t<r.length;t+=10){let a=r.slice(t,t+10);await u(e,a).catch(e=>{if(!(e instanceof s&&400===e.status))throw e;n.unshift(...a)})}for(let t of n){let r=new FormData;r.set("chat_id",e),r.set("document",new Blob([t.bytes]),t.name),await o("sendDocument",r)}}}}])},312485,e=>e.a(async(t,r)=>{try{var n=e.i(666680),a=e.i(912714),i=e.i(232347),s=e.i(333925),o=e.i(986507),l=e.i(636608),c=e.i(450220),u=e.i(49002),d=e.i(811592),h=e.i(5509),p=e.i(724185),f=e.i(822931),g=e.i(520401),m=e.i(181300),y=e.i(293822),b=e.i(375814),w=e.i(871096),k=e.i(317613),_=e.i(900533),E=e.i(938281),x=e.i(212389),R=e.i(417043),v=e.i(775247),S=e.i(854455),O=e.i(850668),$=e.i(735186),T=e.i(480791),A=e.i(644301),P=t([o,u,d,h,p,g,m,k]);[o,u,d,h,p,g,m,k]=P.then?(await P)():P;let ee={telegram:e=>(0,A.createTelegram)(e),discord:e=>(0,S.createDiscord)(e),slack:(e,t)=>(0,T.createSlack)(e,t)},et=globalThis,er=et.__reach??={live:new Map,last:null,told:new Map,choices:new Map,listening:null,gone:null,looking:null,idle:null},en=()=>i.appEvents.emit({type:"reach"});async function j(e){return await er.live.get(e)?.settled,D(e)}async function D(e){let t=await (0,p.readConfig)((0,$.reachPersonKey)(e));if(!t)return null;try{let e=JSON.parse(t);return"string"==typeof e.chat&&"string"==typeof e.name?{chat:e.chat,name:e.name,bot:"string"==typeof e.bot?e.bot:null}:null}catch{return null}}let ea=(e,t)=>(0,p.writeConfig)((0,$.reachPersonKey)(e),JSON.stringify(t));async function C(e){for(let t of e?[e]:$.REACH_CHANNELS){let r=er.live.get(t);r?.stop.abort(),er.live.delete(t),e&&r?.line&&await (0,g.endCall)(r.line.callId).catch(()=>{});let n=await Promise.all($.REACH_KEYS[t].map(p.readConfig));if(!n.every(e=>!!e)){e&&await (0,p.removeConfig)((0,$.reachPersonKey)(t));continue}let a=e&&r?.id?await D(t):null;a&&null===a.bot&&r?.id&&await ea(t,{...a,bot:r.id});let i={name:t,channel:ee[t](...n),stop:new AbortController,bot:null,link:null,problem:null,refused:null,id:null,adopt:!e,settled:Promise.resolve(),asking:null,held:[],line:null,calls:new Set,busy:!1,notes:[]};er.live.set(t,i),I(i)}er.live.size&&(er.listening??=i.appEvents.subscribe(e=>{"threads"===e.type&&V()}),er.gone??=i.presence.onGone(Y),V(),er.idle??=setInterval(()=>{H().catch(e=>E.logger.error("reach: idle lines",e))},s.REACH.idleMs).unref()),en()}async function I(e){let{signal:t}=e.stop,r=t=>{e.problem!==t&&(e.problem=t,en())};for(;!t.aborted;){try{await e.channel.listen({ready:(t,r,n)=>{e.bot=t,e.link=r,e.problem=null,e.id=n,e.settled=N(e,n).catch(t=>E.logger.error(`reach ${e.name}: who is let in`,t)),en()},incoming:t=>void M(e,t).catch(t=>E.logger.error(`reach ${e.name}: what arrived`,t))},t)}catch(a){if(t.aborted)return;let n=a instanceof Error?a.message:String(a);if(a instanceof R.ChannelRefusal){E.logger.warn(`reach ${e.name}: ${n}`);let t=$.REACH_KEYS[e.name];return e.refused=t[a.token]??t[0],e.problem=n,en()}r(n)}await new Promise(e=>setTimeout(e,s.REACH.retryMs))}}async function N(e,t){let r=await D(e.name);if(r&&r.bot!==t){if(null===r.bot&&e.adopt)return ea(e.name,{...r,bot:t});await (0,p.removeConfig)((0,$.reachPersonKey)(e.name)),en()}}async function M(e,t){let r=await j(e.name);if("press"===t.kind){if(r?.chat!==t.chat)return;return Q(e,r,t.data,t.under)}return r?.chat===t.chat?B(e,r,t):r?e.channel.say(t.chat,{plain:"This Thursday already answers someone else."}):L(e,t)}async function L(e,t){if(e.asking&&e.asking.chat!==t.chat)return e.channel.say(t.chat,{plain:"Someone else is already waiting to be let in here. If that is not you, press Not them on the computer, then write again."});e.held.length<s.REACH.held&&e.held.push(t),e.asking||(e.asking={chat:t.chat,name:t.name,handle:t.handle,said:t.words,code:(0,n.randomInt)(10**s.REACH.codeDigits).toString().padStart(s.REACH.codeDigits,"0")},en(),await e.channel.say(t.chat,{plain:`Almost there. Thursday is asking on your computer whether to let you in. Press Allow there only if it shows ${e.asking.code}, and she answers what you wrote.`}))}async function B(e,t,r){var n,a,i;let s=await z(e,r);s&&(n=e,a=t,i=s,n.busy?n.notes.push({text:i,said:!0}):(n.busy=!0,(async()=>{try{for(let e=i;null!==e;){await F(n,a,e);let t=n.notes.filter(e=>e.said);n.notes=n.notes.filter(e=>!e.said),e=t.length?t.map(e=>e.text).join("\n"):null}}finally{n.busy=!1}})()))}async function z(e,t){let{channel:r}=e;er.last=e.name;let{kept:n,lost:a}=await q(e,t.files);a.length&&await r.say(t.chat,{plain:a.map(({name:e,why:t})=>`${e} did not come through: ${t}.`).join("\n")}).catch(t=>E.logger.warn(`reach ${e.name}: could not say so`,t));let i=[t.words,...n].filter(Boolean).join("\n");return i?(a.length&&e.notes.push({text:`[Sent from their phone with what follows, and lost on the way: ${a.map(({name:e,why:t})=>`${e} (${t})`).join("; ")}. They have been told.]`,said:!1}),i):(t.unreadable&&!a.length&&await r.say(t.chat,{plain:"I can read words, pictures and files here — not voice or video yet. Write it instead."}),null)}async function q(e,t){let r=Math.min(e.channel.limits.take,s.REACH.fileBytes),n=[],a=t.filter(t=>!t.size||t.size<=r||(n.push({name:t.name,why:`it is ${es(t.size)}, and the most taken from ${$.REACH_LABEL[e.name]} is ${es(r)}`}),!1)),i=await Promise.allSettled(a.map(e=>e.fetch())),o=[];for(let[e,t]of i.entries())"fulfilled"===t.status?o.push(t.value):n.push({name:a[e].name,why:ei(t.reason)});if(!o.length)return{kept:[],lost:n};try{return{kept:await (0,k.keepGivenFiles)(o),lost:n}}catch(t){let e=ei(t);return{kept:[],lost:[...n,...o.map(t=>({name:t.name,why:e}))]}}}let ei=e=>e instanceof Error?e.message:String(e),es=e=>`${Math.ceil(e/1048576)} MB`;async function H(){for(let e of er.live.values())e.line&&!e.busy&&await U(e.line)&&await W(e)}async function U(e){return!(Date.now()-e.lastAt<=s.REACH.idleMs)&&!(await (0,h.listCallJobs)([e.callId])).some(e=>"running"===e.status)}async function W(e){let t=e.line;e.line=null,t&&await (0,g.endCall)(t.callId).catch(()=>{})}async function F(e,t,r){let{channel:n}=e;n.typing(t.chat).catch(()=>{});let a=setInterval(()=>void n.typing(t.chat).catch(()=>{}),4e3),i=e.notes.filter(e=>!e.said);e.notes=e.notes.filter(e=>e.said);try{let a=e.line;(!a||!await (0,g.isCallOpen)(a.callId)||await U(a))&&(await W(e),e.line={...await (0,m.openTextCall)(),messages:[],lastAt:0},e.calls.add(e.line.callId));let o=e.line,l=await (0,m.answerInWriting)({callId:o.callId,standing:o.standing,messages:[...o.messages,...i.map(e=>({role:"user",content:e.text})),{role:"user",content:r}],said:r,notes:()=>e.notes.splice(0)});o.messages=function(e){let t=Math.max(e.findLastIndex(e=>"user"===e.role),0),r=[...(0,c.asWords)(e.slice(0,t),(e,t)=>(0,y.toolLine)(e,JSON.stringify(t??{}))??e,e=>e.length>s.REACH.oldChars?`${e.slice(0,s.REACH.oldChars)}…`:e),...e.slice(t)];if(r.length<=s.REACH.messages)return r;let n=r.findIndex((e,t)=>t>=r.length-s.REACH.trimTo&&"user"===e.role);return n>0?r.slice(n):r}(l.messages),o.lastAt=Date.now();let u=[...new Set(l.did)].join(" · ");await n.say(t.chat,{markdown:[l.text,u&&`— ${(0,v.literal)(u)}`].filter(Boolean).join("\n\n")||"…"}),await X(e,t,l.text)}catch(a){e.notes.unshift(...i),e.line&&!e.line.lastAt&&await W(e);let r=(0,x.isPublicError)(a)?a.message:(0,o.modelErrorToString)(a);E.logger.warn(`reach ${e.name}: ${r}`),await n.say(t.chat,{plain:r}).catch(()=>{})}finally{clearInterval(a)}}async function X(e,t,r){let n=await (0,w.filesOnDisk)((0,b.pathsIn)(r),null),i=n.slice(0,Math.max(n.length-s.REACH.files,0)).map(e=>({name:e,why:`only ${s.REACH.files} files go with one answer`})),{limits:o}=e.channel,l=Math.min(o.file,s.REACH.fileBytes);for(let r of n.slice(-s.REACH.files)){let n=await (0,w.insideWorkspace)(r),s=n?await (0,a.stat)(n).catch(()=>null):null;if(n&&s){if(s.size>l){i.push({name:r,why:`it is ${es(s.size)}, and the most that goes to ${$.REACH_LABEL[e.name]} is ${es(l)}`});continue}try{await e.channel.sendFiles(t.chat,[...await (0,O.picturesOf)(n),{bytes:await (0,a.readFile)(n),name:r.split("/").pop()??"file",picture:"image"===(0,b.viewKindOf)(r)&&s.size<=o.picture}])}catch(t){E.logger.warn(`reach ${e.name}: could not send ${r}`,t),i.push({name:r,why:ei(t)})}}}i.length&&(await e.channel.say(t.chat,{plain:["Not sent — still on this computer:",...i.map(({name:e,why:t})=>`• ${e}: ${t}`)].join("\n")}).catch(t=>E.logger.warn(`reach ${e.name}: could not say so`,t)),e.notes.push({text:`[Named in what went to their phone, and not sent: ${i.map(({name:e,why:t})=>`${e} (${t})`).join("; ")}. They have been told.]`,said:!1}))}async function G(){for(let e of[...er.last?[er.last]:[],...$.REACH_CHANNELS.filter(e=>e!==er.last)]){let t=er.live.get(e),r=t?await j(e):null;if(t&&r)return{live:t,person:r}}return null}let eo=Date.now()-1e3*process.uptime();function V(e=s.REACH.lookMs){er.looking??=setTimeout(()=>{er.looking=null,K().catch(e=>E.logger.error("reach: open work",e))},e)}async function K(){let e=eo+s.BROWSER_GONE_MS-Date.now();if(e>0)return V(e);let t=await G();if(!t)return;let r=await (0,h.listInboxThreads)(),n=(0,f.openWork)(r).filter(e=>"progress"!==e.kind),a=new Set(n.map(e=>e.key));for(let e of er.told.keys())a.has(e)||er.told.delete(e);for(let[e,t]of er.choices)a.has((0,f.questionKey)(t.question))||er.choices.delete(e);let o=n.filter(e=>!er.told.has(e.key));if(!o.length)return;let l=await Z();for(let e of o){let n=r.find(t=>t.id===e.threadId);if(!n)continue;let a=l.get(e.threadId),s=a?await j(a.name):null,o=a&&s?{live:a,person:s}:!i.presence.watching&&(0,_.toDate)(n.updatedAt).getTime()>=eo?t:null;er.told.set(e.key,{kind:e.kind,phone:!!o}),o&&await J(o,e,n)}}function Y(){for(let[e,t]of er.told)"question"!==t.kind||t.phone||er.told.delete(e);V(0)}async function Z(){let e=[...er.live.values()],t=await (0,h.listCallJobs)(e.flatMap(e=>[...e.calls]));return new Map(t.flatMap(t=>{let r=e.find(e=>e.calls.has(t.callId??""));return r?[[t.id,r]]:[]}))}async function J(e,t,r){let{live:n,person:a}=e,i=r.room.questions.find(e=>(0,f.questionKey)(e.id)===t.key),s=(i?.options??[]).map((e,t)=>{let n=`${i?.id.slice(0,40)}:${t}`;return er.choices.set(n,{threadId:r.id,bot:i?.bot??"",question:i?.id??"",answer:e}),{text:e,data:n}});try{await n.channel.say(a.chat,{markdown:`${(0,v.literal)(`${t.show.line} \xb7 ${t.show.name}`)}
|
|
62
|
+
→ ${r}`,entities:t.keep,link_preview_options:{is_disabled:!0}}).catch(()=>{})},async sendFiles(e,t){let r=t.filter(e=>e.picture),n=t.filter(e=>!e.picture);for(let t=0;t<r.length;t+=10){let a=r.slice(t,t+10);await u(e,a).catch(e=>{if(!(e instanceof s&&400===e.status))throw e;n.unshift(...a)})}for(let t of n){let r=new FormData;r.set("chat_id",e),r.set("document",new Blob([t.bytes]),t.name),await o("sendDocument",r)}}}}])},312485,e=>e.a(async(t,r)=>{try{var n=e.i(666680),a=e.i(912714),i=e.i(232347),s=e.i(333925),o=e.i(986507),l=e.i(636608),c=e.i(450220),u=e.i(49002),d=e.i(811592),h=e.i(5509),p=e.i(724185),f=e.i(822931),g=e.i(520401),m=e.i(181300),y=e.i(293822),b=e.i(375814),w=e.i(871096),k=e.i(317613),_=e.i(900533),E=e.i(938281),x=e.i(212389),R=e.i(417043),v=e.i(775247),S=e.i(854455),O=e.i(850668),$=e.i(735186),T=e.i(480791),A=e.i(644301),P=t([o,u,d,h,p,g,m,k]);[o,u,d,h,p,g,m,k]=P.then?(await P)():P;let ee={telegram:e=>(0,A.createTelegram)(e),discord:e=>(0,S.createDiscord)(e),slack:(e,t)=>(0,T.createSlack)(e,t)},et=globalThis,er=et.__reach??={live:new Map,last:null,told:new Map,choices:new Map,listening:null,gone:null,looking:null,idle:null},en=()=>i.appEvents.emit({type:"reach"});async function j(e){return await er.live.get(e)?.settled,D(e)}async function D(e){let t=await (0,p.readConfig)((0,$.reachPersonKey)(e));if(!t)return null;try{let e=JSON.parse(t);return"string"==typeof e.chat&&"string"==typeof e.name?{chat:e.chat,name:e.name,bot:"string"==typeof e.bot?e.bot:null}:null}catch{return null}}let ea=(e,t)=>(0,p.writeConfig)((0,$.reachPersonKey)(e),JSON.stringify(t));async function C(e){for(let t of e?[e]:$.REACH_CHANNELS){let r=er.live.get(t);r?.stop.abort(),er.live.delete(t),e&&r?.line&&await (0,g.endCall)(r.line.callId).catch(()=>{});let n=await Promise.all($.REACH_KEYS[t].map(p.readConfig));if(!n.every(e=>!!e)){e&&await (0,p.removeConfig)((0,$.reachPersonKey)(t));continue}let a=e&&r?.id?await D(t):null;a&&null===a.bot&&r?.id&&await ea(t,{...a,bot:r.id});let i={name:t,channel:ee[t](...n),stop:new AbortController,bot:null,link:null,problem:null,refused:null,id:null,adopt:!e,settled:Promise.resolve(),asking:null,held:[],line:null,calls:new Set,busy:!1,notes:[]};er.live.set(t,i),N(i)}er.live.size&&(er.listening??=i.appEvents.subscribe(e=>{"threads"===e.type&&V()}),er.gone??=i.presence.onGone(Y),V(),er.idle??=setInterval(()=>{q().catch(e=>E.logger.error("reach: idle lines",e))},s.REACH.idleMs).unref()),en()}async function N(e){let{signal:t}=e.stop,r=t=>{e.problem!==t&&(e.problem=t,en())};for(;!t.aborted;){try{await e.channel.listen({ready:(t,r,n)=>{e.bot=t,e.link=r,e.problem=null,e.id=n,e.settled=I(e,n).catch(t=>E.logger.error(`reach ${e.name}: who is let in`,t)),en()},incoming:t=>void M(e,t).catch(t=>E.logger.error(`reach ${e.name}: what arrived`,t))},t)}catch(a){if(t.aborted)return;let n=a instanceof Error?a.message:String(a);if(a instanceof R.ChannelRefusal){E.logger.warn(`reach ${e.name}: ${n}`);let t=$.REACH_KEYS[e.name];return e.refused=t[a.token]??t[0],e.problem=n,en()}r(n)}await new Promise(e=>setTimeout(e,s.REACH.retryMs))}}async function I(e,t){let r=await D(e.name);if(r&&r.bot!==t){if(null===r.bot&&e.adopt)return ea(e.name,{...r,bot:t});await (0,p.removeConfig)((0,$.reachPersonKey)(e.name)),en()}}async function M(e,t){let r=await j(e.name);if("press"===t.kind){if(r?.chat!==t.chat)return;return Q(e,r,t.data,t.under)}return r?.chat===t.chat?B(e,r,t):r?e.channel.say(t.chat,{plain:"This Thursday already answers someone else."}):L(e,t)}async function L(e,t){if(e.asking&&e.asking.chat!==t.chat)return e.channel.say(t.chat,{plain:"Someone else is already waiting to be let in here. If that is not you, press Not them on the computer, then write again."});e.held.length<s.REACH.held&&e.held.push(t),e.asking||(e.asking={chat:t.chat,name:t.name,handle:t.handle,said:t.words,code:(0,n.randomInt)(10**s.REACH.codeDigits).toString().padStart(s.REACH.codeDigits,"0")},en(),await e.channel.say(t.chat,{plain:`Almost there. Thursday is asking on your computer whether to let you in. Press Allow there only if it shows ${e.asking.code}, and she answers what you wrote.`}))}async function B(e,t,r){var n,a,i;let s=await z(e,r);s&&(n=e,a=t,i=s,n.busy?n.notes.push({text:i,said:!0}):(n.busy=!0,(async()=>{try{for(let e=i;null!==e;){await F(n,a,e);let t=n.notes.filter(e=>e.said);n.notes=n.notes.filter(e=>!e.said),e=t.length?t.map(e=>e.text).join("\n"):null}}finally{n.busy=!1}})()))}async function z(e,t){let{channel:r}=e;er.last=e.name;let{kept:n,lost:a}=await U(e,t.files);a.length&&await r.say(t.chat,{plain:a.map(({name:e,why:t})=>`${e} did not come through: ${t}.`).join("\n")}).catch(t=>E.logger.warn(`reach ${e.name}: could not say so`,t));let i=[t.words,...n].filter(Boolean).join("\n");return i?(a.length&&e.notes.push({text:`[Sent from their phone with what follows, and lost on the way: ${a.map(({name:e,why:t})=>`${e} (${t})`).join("; ")}. They have been told.]`,said:!1}),i):(t.unreadable&&!a.length&&await r.say(t.chat,{plain:"I can read words, pictures and files here — not voice or video yet. Write it instead."}),null)}async function U(e,t){let r=Math.min(e.channel.limits.take,s.REACH.fileBytes),n=[],a=t.filter(t=>!t.size||t.size<=r||(n.push({name:t.name,why:`it is ${es(t.size)}, and the most taken from ${$.REACH_LABEL[e.name]} is ${es(r)}`}),!1)),i=await Promise.allSettled(a.map(e=>e.fetch())),o=[];for(let[e,t]of i.entries())"fulfilled"===t.status?o.push(t.value):n.push({name:a[e].name,why:ei(t.reason)});if(!o.length)return{kept:[],lost:n};try{return{kept:await (0,k.keepGivenFiles)(o),lost:n}}catch(t){let e=ei(t);return{kept:[],lost:[...n,...o.map(t=>({name:t.name,why:e}))]}}}let ei=e=>e instanceof Error?e.message:String(e),es=e=>`${Math.ceil(e/1048576)} MB`;async function q(){for(let e of er.live.values())e.line&&!e.busy&&await H(e.line)&&await W(e)}async function H(e){return!(Date.now()-e.lastAt<=s.REACH.idleMs)&&!(await (0,h.listCallJobs)([e.callId])).some(e=>"running"===e.status)}async function W(e){let t=e.line;e.line=null,t&&await (0,g.endCall)(t.callId).catch(()=>{})}async function F(e,t,r){let{channel:n}=e;n.typing(t.chat).catch(()=>{});let a=setInterval(()=>void n.typing(t.chat).catch(()=>{}),4e3),i=e.notes.filter(e=>!e.said);e.notes=e.notes.filter(e=>e.said);try{let a=e.line;(!a||!await (0,g.isCallOpen)(a.callId)||await H(a))&&(await W(e),e.line={...await (0,m.openTextCall)(),messages:[],lastAt:0},e.calls.add(e.line.callId));let o=e.line,l=await (0,m.answerInWriting)({callId:o.callId,standing:o.standing,messages:[...o.messages,...i.map(e=>({role:"user",content:e.text})),{role:"user",content:r}],said:r,notes:()=>e.notes.splice(0)});o.messages=function(e){let t=Math.max(e.findLastIndex(e=>"user"===e.role),0),r=[...(0,c.asWords)(e.slice(0,t),(e,t)=>(0,y.toolLine)(e,JSON.stringify(t??{}))??e,e=>e.length>s.REACH.oldChars?`${e.slice(0,s.REACH.oldChars)}…`:e),...e.slice(t)];if(r.length<=s.REACH.messages)return r;let n=r.findIndex((e,t)=>t>=r.length-s.REACH.trimTo&&"user"===e.role);return n>0?r.slice(n):r}(l.messages),o.lastAt=Date.now();let u=[...new Set(l.did)].join(" · ");await n.say(t.chat,{markdown:l.text?.trim()||(u?`— ${(0,v.literal)(u)}`:"…")}),await X(e,t,l.text)}catch(a){e.notes.unshift(...i),e.line&&!e.line.lastAt&&await W(e);let r=(0,x.isPublicError)(a)?a.message:(0,o.modelErrorToString)(a);E.logger.warn(`reach ${e.name}: ${r}`),await n.say(t.chat,{plain:r}).catch(()=>{})}finally{clearInterval(a)}}async function X(e,t,r){let n=await (0,w.filesOnDisk)((0,b.pathsIn)(r),null),i=n.slice(0,Math.max(n.length-s.REACH.files,0)).map(e=>({name:e,why:`only ${s.REACH.files} files go with one answer`})),{limits:o}=e.channel,l=Math.min(o.file,s.REACH.fileBytes);for(let r of n.slice(-s.REACH.files)){let n=await (0,w.insideWorkspace)(r),s=n?await (0,a.stat)(n).catch(()=>null):null;if(n&&s){if(s.size>l){i.push({name:r,why:`it is ${es(s.size)}, and the most that goes to ${$.REACH_LABEL[e.name]} is ${es(l)}`});continue}try{let l=await (0,O.picturesOf)(n);await e.channel.sendFiles(t.chat,l.length?l:[{bytes:await (0,a.readFile)(n),name:r.split("/").pop()??"file",picture:"image"===(0,b.viewKindOf)(r)&&s.size<=o.picture}]),l.length&&i.push({name:r,why:"sent as pictures above; the page itself opens on the computer"})}catch(t){E.logger.warn(`reach ${e.name}: could not send ${r}`,t),i.push({name:r,why:ei(t)})}}}i.length&&(await e.channel.say(t.chat,{plain:["Not sent — still on this computer:",...i.map(({name:e,why:t})=>`• ${e}: ${t}`)].join("\n")}).catch(t=>E.logger.warn(`reach ${e.name}: could not say so`,t)),e.notes.push({text:`[Named in what went to their phone, and not sent: ${i.map(({name:e,why:t})=>`${e} (${t})`).join("; ")}. They have been told.]`,said:!1}))}async function G(){for(let e of[...er.last?[er.last]:[],...$.REACH_CHANNELS.filter(e=>e!==er.last)]){let t=er.live.get(e),r=t?await j(e):null;if(t&&r)return{live:t,person:r}}return null}let eo=Date.now()-1e3*process.uptime();function V(e=s.REACH.lookMs){er.looking??=setTimeout(()=>{er.looking=null,K().catch(e=>E.logger.error("reach: open work",e))},e)}async function K(){let e=eo+s.BROWSER_GONE_MS-Date.now();if(e>0)return V(e);let t=await G();if(!t)return;let r=await (0,h.listInboxThreads)(),n=(0,f.openWork)(r).filter(e=>"progress"!==e.kind),a=new Set(n.map(e=>e.key));for(let e of er.told.keys())a.has(e)||er.told.delete(e);for(let[e,t]of er.choices)a.has((0,f.questionKey)(t.question))||er.choices.delete(e);let o=n.filter(e=>!er.told.has(e.key));if(!o.length)return;let l=await Z();for(let e of o){let n=r.find(t=>t.id===e.threadId);if(!n)continue;let a=l.get(e.threadId),s=a?await j(a.name):null,o=a&&s?{live:a,person:s}:!i.presence.watching&&(0,_.toDate)(n.updatedAt).getTime()>=eo?t:null;er.told.set(e.key,{kind:e.kind,phone:!!o}),o&&await J(o,e,n)}}function Y(){for(let[e,t]of er.told)"question"!==t.kind||t.phone||er.told.delete(e);V(0)}async function Z(){let e=[...er.live.values()],t=await (0,h.listCallJobs)(e.flatMap(e=>[...e.calls]));return new Map(t.flatMap(t=>{let r=e.find(e=>e.calls.has(t.callId??""));return r?[[t.id,r]]:[]}))}async function J(e,t,r){let{live:n,person:a}=e,i=r.room.questions.find(e=>(0,f.questionKey)(e.id)===t.key),s=(i?.options??[]).map((e,t)=>{let n=`${i?.id.slice(0,40)}:${t}`;return er.choices.set(n,{threadId:r.id,bot:i?.bot??"",question:i?.id??"",answer:e}),{text:e,data:n}});try{await n.channel.say(a.chat,{markdown:`${(0,v.literal)(`${t.show.line} \xb7 ${t.show.name}`)}
|
|
63
63
|
|
|
64
64
|
${t.text||"…"}`},s)}catch(e){E.logger.warn(`reach ${n.name}: could not tell ${t.key}`,e),er.told.delete(t.key);return}await X(n,a,t.text),n.notes.push({text:`${t.line}
|
|
65
|
-
[The user has had this on their phone, as ${t.show.bot} wrote it, since ${(0,l.clockNow)()}.]`,said:!1}),"ending"===t.kind?await (0,h.markSeen)([t.threadId]):await (0,d.acceptRoomRelays)(t.relayIds)}async function Q(e,t,r,n){let a=er.choices.get(r);if(!a)return void await e.channel.say(t.chat,{plain:"That question is no longer open here. Write your answer instead."});for(let[e,t]of er.choices)t.question===a.question&&er.choices.delete(e);try{await (0,u.answerThread)(a.threadId,a.answer,"user",a.bot),n&&await e.channel.settle(t.chat,n,a.answer),e.notes.push({text:`[The user answered ${a.bot}'s question from their phone at ${(0,l.clockNow)()}: ${a.answer}. It has reached ${a.bot}.]`,said:!1})}catch(r){await e.channel.say(t.chat,{plain:(0,x.isPublicError)(r)?r.message:"That answer did not get through."})}}e.s(["heldCalls",0,()=>[...er.live.values()].flatMap(e=>e.line?[e.line.callId]:[]),"startReach",0,C]),r()}catch(e){r(e)}},!1),822931,e=>{"use strict";var t=e.i(333925),r=e.i(951056),n=e.i(900533);let
|
|
66
|
-
[The message goes on; the rest is in its thread on screen.]`}let
|
|
67
|
-
${
|
|
68
|
-
${n}`,relayIds:p.map(e=>e.id),threadId:
|
|
69
|
-
${s(e.text)}`,relayIds:[e.id],threadId:l.id,text:e.text,show:h(e.bot,`${e.bot} ${a[e.kind]}`)})}return t.sort((e,t)=>e.rank-t.rank)},"questionKey",0,o])},181300,e=>e.a(async(t,r)=>{try{var n=e.i(734732),a=e.i(853205),i=e.i(333925),s=e.i(247839),o=e.i(113022),l=e.i(986507),c=e.i(864328),u=e.i(539470),d=e.i(79290),h=e.i(51083),p=e.i(656719),f=e.i(724185),g=e.i(426455);e.i(825184);var m=e.i(212389),y=e.i(520401),b=e.i(933395),w=e.i(293822),k=t([o,l,u,d,f,y]);async function _(){let e=await Promise.all(b.TEXT_CALL_PROVIDERS.map(async e=>await (0,f.readConfig)(e.apiKeyName)?e.apiKeyName:null));return(0,b.textCallRunsOn)(t=>e.includes(t))}async function E(e,t){if(t)return t;let r=await _();return r||(0,m.publicError)(O),{provider:r,model:e.backendModel}}async function x(e){let t=await E(await (0,y.readLiveSettings)(),e),[r,n]=await Promise.all([(0,y.insertCall)({provider:t.provider,model:i.TEXT_CALL.model,backendModel:t.model}),(0,u.loadCallStanding)()]);return{callId:r,standing:n}}async function R(e){var t;let r,{callId:a,standing:s,messages:o,said:l,signal:c}=e,[u,d]=await Promise.all([v(a,null,!0),(0,y.nextTurnSeq)(a)]);null!==l&&await (0,y.saveTurns)(a,[{id:crypto.randomUUID(),role:"user",text:l,seq:d}]);let p=(t=a,r=null===l?d:d+1,{step:async e=>{for(let n of e.content)if("tool-call"===n.type){let a=e.content.find(e=>"tool-result"===e.type&&e.toolCallId===n.toolCallId);await (0,y.saveTurns)(t,[{id:n.toolCallId,role:"tool",tool:n.toolName,text:n.toolName===h.TOOL_NAMES.web_search?function(e,t){let r=t??{},n=[(e??{}).query,r.action?.query].find(e=>"string"==typeof e&&!!e.trim()),a=Array.isArray(r.sources)?r.sources.flatMap(e=>e&&"object"==typeof e&&"url"in e&&"string"==typeof e.url?[{url:e.url,..."title"in e&&"string"==typeof e.title?{title:e.title}:{}}]:[]):[];return JSON.stringify({query:n??null,sources:a})}(n.input,a?.type==="tool-result"?a.output:null):JSON.stringify(n.input??{}),seq:r++}])}else"text"===n.type&&n.text.trim()?await (0,y.saveTurns)(t,[{id:crypto.randomUUID(),role:"assistant",text:n.text.trim(),seq:r++}]):"reasoning"===n.type&&n.text.trim()&&await (0,y.saveThought)(t,{id:crypto.randomUUID(),text:n.text.trim(),seq:r})},said:(e,n=crypto.randomUUID())=>(0,y.saveTurns)(t,[{id:n,role:"user",text:e,seq:r++}])}),f=S(s),g=[...f,...o],m=await (0,n.generateText)({model:u.model,instructions:u.system,messages:g,allowSystemInMessages:!0,tools:u.tools,providerOptions:u.providerOptions,stopWhen:(0,n.stepCountIs)(i.TEXT_CALL.maxSteps),abortSignal:c,prepareStep:async({stepNumber:t,messages:r})=>{let n=t>0?e.notes?.()??[]:[];for(let e of(g=[...r,...n.map(e=>({role:"user",content:e.text}))],n))e.said&&await p.said(e.text);return n.length?{messages:g}:void 0},onStepEnd:p.step});return{text:m.text.trim(),did:m.steps.flatMap(e=>e.toolCalls.map(e=>(0,w.toolLine)(e.toolName,JSON.stringify(e.input??{}))??e.toolName)),messages:[...g.slice(f.length),...m.steps.at(-1)?.response.messages??[]]}}[o,l,u,d,f,y]=k.then?(await k)():k,a.z.object({callId:a.z.string().min(1),standing:a.z.string().nullish(),runsOn:c.textModelRefSchema.nullish(),turn:a.z.string().min(1),messages:a.z.array(a.z.unknown()).min(1)}),globalThis.__textCallTurns??=new Map;let S=e=>e?[{role:"system",content:e}]:[];async function v(e,t,r=!1){let n=await (0,y.readLiveSettings)(),a=await E(n,t),i="openai"===a.provider||"chatgpt"===a.provider,[c,u,m,b,w]=await Promise.all([(0,l.getTextModel)(a),(0,d.loadThursdayPrompt)({backendPrompt:n.backendPrompt,written:!0,phone:r,persona:n.persona,stylePrompt:n.stylePrompt,readSkills:n.readSkills}),(0,o.loadTools)({target:"thursday",callId:e,webSearch:n.webSearch,readSkills:n.readSkills,written:!0,model:a,phone:r}),(0,f.readConfig)(p.EXA_API_KEY),(0,f.readConfig)(s.LIVE_PROVIDER.apiKeyName)]),k=c.searchTools&&Object.values(c.searchTools)[0],_={...m,...n.webSearch&&!b&&k?{[h.TOOL_NAMES.web_search]:k}:{}},x=i?w?await (0,g.acceptedReasoning)({apiKey:w,model:a.model,effort:n.reasoningEffort}):(0,g.wantedReasoning)(n.reasoningEffort):null;return{model:c.model,system:u,tools:_,providerOptions:{openai:{...x?.effort?{reasoningEffort:x.effort}:{},...x&&"summary"in x&&x.summary?{reasoningSummary:x.summary}:{}}}}}let O="Writing to Thursday needs a GPT subscription sign-in or an OpenAI key — Settings › API keys.";e.s(["answerInWriting",0,R,"openTextCall",0,x]),r()}catch(e){r(e)}},!1),317613,e=>e.a(async(t,r)=>{try{var n=e.i(874533);e.i(666680);var a=e.i(912714),i=e.i(750227),s=e.i(812057),o=e.i(333925),l=e.i(5509);e.i(375814);var c=e.i(871096),u=t([l]);async function d(e){let t=await (0,c.openWorkspace)(),r=new Set(await (0,a.readdir)((0,i.join)(c.WORKSPACE,o.GIVEN_FILES.dir)).catch(()=>[])),n=[];for(let a of e){let e=a.name.normalize("NFC").replace(/[^\p{L}\p{N}._-]+/gu,"-").replace(/^[-.]+|-+$/g,"")||"file",i=e.lastIndexOf("."),s=i>0?e.slice(0,i):e,l=i>0?e.slice(i):"",c=e;for(let e=2;r.has(c);e++)c=`${s}-${e}${l}`;r.add(c);let u=`${o.GIVEN_FILES.dir}/${c}`;await t.writeFile(u,Buffer.from(await a.arrayBuffer())),n.push(u)}return n}[l]=u.then?(await u)():u,(0,i.join)(o.APP_DIR,o.PATHS.skills.default,"artifact","scripts","spreadsheet.mjs"),(0,s.promisify)(n.execFile),e.s(["keepGivenFiles",0,d]),r()}catch(e){r(e)}},!1),417043,e=>{"use strict";var t=e.i(333925);async function r(e,r){if(null==e||!Number.isFinite(e))return!1;let n=Math.max(0,1e3*e);return!(r>=t.REACH.rateRetries)&&!(n>t.REACH.rateWaitMs)&&(await new Promise(e=>setTimeout(e,n)),!0)}e.s(["ChannelRefusal",0,class extends Error{token;constructor(e,t=0){super(e),this.token=t}},"waitOut",0,r])},775247,e=>{"use strict";function t(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var r=t(),n={exec:()=>null};function a(e,t=""){let r="string"==typeof e?e:e.source,n={replace:(e,t)=>{let a="string"==typeof t?t:t.source;return a=a.replace(s.caret,"$1"),r=r.replace(e,a),n},getRegex:()=>new RegExp(r,t)};return n}var i=(()=>{try{return!!RegExp("(?<=1)(?<!1)")}catch{return!1}})(),s={codeRemoveIndent:/^(?: {1,4}| {0,3}\t)/gm,outputLinkReplace:/\\([\[\]])/g,indentCodeCompensation:/^(\s+)(?:```)/,beginningSpace:/^\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\n/g,tabCharGlobal:/\t/g,multipleSpaceGlobal:/\s+/g,blankLine:/^[ \t]*$/,doubleBlankLine:/\n[ \t]*\n[ \t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] +\S/,listReplaceTask:/^\[[ xX]\] +/,listTaskCheckbox:/\[[ xX]\]/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^<a /i,endATag:/^<\/a>/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^</,endAngleBracket:/>$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:e=>RegExp(`^( {0,3}${e})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:e=>RegExp(`^ {0,${Math.min(3,e-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),hrRegex:e=>RegExp(`^ {0,${Math.min(3,e-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),fencesBeginRegex:e=>RegExp(`^ {0,${Math.min(3,e-1)}}(?:\`\`\`|~~~)`),headingBeginRegex:e=>RegExp(`^ {0,${Math.min(3,e-1)}}#`),htmlBeginRegex:e=>RegExp(`^ {0,${Math.min(3,e-1)}}<(?:[a-z].*>|!--)`,"i"),blockquoteBeginRegex:e=>RegExp(`^ {0,${Math.min(3,e-1)}}>`)},o=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,l=/ {0,3}(?:[*+-]|\d{1,9}[.)])/,c=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,u=a(c).replace(/bull/g,l).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),d=a(c).replace(/bull/g,l).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),h=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,p=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,f=a(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",p).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),g=a(/^(bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,l).getRegex(),m="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",y=/<!--(?:-?>|[\s\S]*?(?:-->|$))/,b=a("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|<![A-Z][\\s\\S]*?(?:>\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))","i").replace("comment",y).replace("tag",m).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),w=a(h).replace("hr",o).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",m).getRegex(),k={blockquote:a(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",w).getRegex(),code:/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,def:f,fences:/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,heading:/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,hr:o,html:b,lheading:u,list:g,newline:/^(?:[ \t]*(?:\n|$))+/,paragraph:w,table:n,text:/^[^\n]+/},_=a("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",o).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3} )[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",m).getRegex(),E={...k,lheading:d,table:_,paragraph:a(h).replace("hr",o).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",_).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",m).getRegex()},x={...k,html:a("^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:\"[^\"]*\"|'[^']*'|\\s[^'\"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))").replace("comment",y).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:n,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:a(h).replace("hr",o).replace("heading",` *#{1,6} *[^
|
|
70
|
-
]`).replace("lheading",u).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},R=/^( {2,}|\\)\n(?!\s*$)/,v=/[\p{P}\p{S}]/u,S=/[\s\p{P}\p{S}]/u,O=/[^\s\p{P}\p{S}]/u,$=a(/^((?![*_])punctSpace)/,"u").replace(/punctSpace/g,S).getRegex(),T=/(?!~)[\p{P}\p{S}]/u,A=a(/link|precode-code|html/,"g").replace("link",/\[(?:[^\[\]`]|(?<a>`+)[^`]+\k<a>(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace("precode-",i?"(?<!`)()":"(^^|[^`])").replace("code",/(?<b>`+)[^`]+\k<b>(?!`)/).replace("html",/<(?! )[^<>]*?>/).getRegex(),P=/^(?:\*+(?:((?!\*)punct)|([^\s*]))?)|^_+(?:((?!_)punct)|([^\s_]))?/,j=a(P,"u").replace(/punct/g,v).getRegex(),D=a(P,"u").replace(/punct/g,T).getRegex(),C="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",
|
|
65
|
+
[The user has had this on their phone, as ${t.show.bot} wrote it, since ${(0,l.clockNow)()}.]`,said:!1}),"ending"===t.kind?await (0,h.markSeen)([t.threadId]):await (0,d.acceptRoomRelays)(t.relayIds)}async function Q(e,t,r,n){let a=er.choices.get(r);if(!a)return void await e.channel.say(t.chat,{plain:"That question is no longer open here. Write your answer instead."});for(let[e,t]of er.choices)t.question===a.question&&er.choices.delete(e);try{await (0,u.answerThread)(a.threadId,a.answer,"user",a.bot),n&&await e.channel.settle(t.chat,n,a.answer),e.notes.push({text:`[The user answered ${a.bot}'s question from their phone at ${(0,l.clockNow)()}: ${a.answer}. It has reached ${a.bot}.]`,said:!1})}catch(r){await e.channel.say(t.chat,{plain:(0,x.isPublicError)(r)?r.message:"That answer did not get through."})}}e.s(["heldCalls",0,()=>[...er.live.values()].flatMap(e=>e.line?[e.line.callId]:[]),"startReach",0,C]),r()}catch(e){r(e)}},!1),822931,e=>{"use strict";var t=e.i(333925),r=e.i(951056),n=e.i(900533),a=e.i(64774);let i={message:"says",question:"asks",report:"reports",interrupted:"was cut off"},s={question:0,stopped:1,done:2,progress:3};function o(e){let r=(0,a.captionText)(e.replace(/!\[[^\]]*\]\([^)]*\)/g," ")).replace(a.MARKDOWN_LINK,"$1").replace(/^• /gm,"").trim();if(r.length<=t.CALL_RELAY.chars)return r;let n=r.slice(0,t.CALL_RELAY.chars),i=Math.max(n.lastIndexOf("\n\n"),n.lastIndexOf(". "),n.lastIndexOf(".\n"),n.lastIndexOf("。")),s=(i>t.CALL_RELAY.chars/3?n.slice(0,i+1):n).trim();return`${s}
|
|
66
|
+
[The message goes on; the rest is in its thread on screen.]`}let l=e=>`question:${e}`;e.s(["openWork",0,function(e){let t=[];for(let a of e){let{relays:e,questions:c}=a.room,u=(0,n.toDate)(a.updatedAt).getTime(),d=(e,t)=>`[${e} → Thursday, thread "${a.label}" (${a.id}), ${t}.]`,h=(e,t)=>({kind:"relay",name:a.label,line:t,done:!0,bot:e});for(let r of c){let n=r.options?.length?` Options: ${r.options.join(" / ")}.`:"";t.push({rank:s.question,key:l(r.id),kind:"question",line:`${d(r.bot,"question")}
|
|
67
|
+
${o(r.text)}${n}`,relayIds:e.filter(e=>e.messageId===r.id).map(e=>e.id),threadId:a.id,text:r.text,show:h(r.bot,`${r.bot} asks`)})}let p=e.filter(e=>!c.some(t=>t.id===e.messageId)),f="done"===a.status,g="waiting"===a.status&&(0,r.isAppStop)(a.ask);if(f||g){if(a.seen)continue;let e=g?"stopped":"done",r=(g?a.ask?.question:null)??a.outcome??"",n="stopped"===e?`It stopped before finishing. Where it got to: ${o(r)}`:`Done. Its answer: ${o(r)}`;t.push({rank:s[e],key:`${e}:${a.id}@${u}`,kind:"ending",line:`${d(a.bot,e)}
|
|
68
|
+
${n}`,relayIds:p.map(e=>e.id),threadId:a.id,text:r,show:h(a.bot,"stopped"===e?`${a.bot} stopped`:`${a.bot} finished`)});continue}for(let e of p)t.push({rank:s.progress,key:`progress:${e.id}`,kind:"progress",line:`${d(e.bot,e.kind)}
|
|
69
|
+
${o(e.text)}`,relayIds:[e.id],threadId:a.id,text:e.text,show:h(e.bot,`${e.bot} ${i[e.kind]}`)})}return t.sort((e,t)=>e.rank-t.rank)},"questionKey",0,l])},181300,e=>e.a(async(t,r)=>{try{var n=e.i(734732),a=e.i(853205),i=e.i(333925),s=e.i(247839),o=e.i(113022),l=e.i(986507),c=e.i(864328),u=e.i(539470),d=e.i(79290),h=e.i(51083),p=e.i(656719),f=e.i(724185),g=e.i(426455);e.i(825184);var m=e.i(212389),y=e.i(520401),b=e.i(933395),w=e.i(293822),k=t([o,l,u,d,f,y]);async function _(){let e=await Promise.all(b.TEXT_CALL_PROVIDERS.map(async e=>await (0,f.readConfig)(e.apiKeyName)?e.apiKeyName:null));return(0,b.textCallRunsOn)(t=>e.includes(t))}async function E(e,t){if(t)return t;let r=await _();return r||(0,m.publicError)(O),{provider:r,model:e.backendModel}}async function x(e){let t=await E(await (0,y.readLiveSettings)(),e),[r,n]=await Promise.all([(0,y.insertCall)({provider:t.provider,model:i.TEXT_CALL.model,backendModel:t.model}),(0,u.loadCallStanding)()]);return{callId:r,standing:n}}async function R(e){var t;let r,{callId:a,standing:s,messages:o,said:l,signal:c}=e,[u,d]=await Promise.all([v(a,null,!0),(0,y.nextTurnSeq)(a)]);null!==l&&await (0,y.saveTurns)(a,[{id:crypto.randomUUID(),role:"user",text:l,seq:d}]);let p=(t=a,r=null===l?d:d+1,{step:async e=>{for(let n of e.content)if("tool-call"===n.type){let a=e.content.find(e=>"tool-result"===e.type&&e.toolCallId===n.toolCallId);await (0,y.saveTurns)(t,[{id:n.toolCallId,role:"tool",tool:n.toolName,text:n.toolName===h.TOOL_NAMES.web_search?function(e,t){let r=t??{},n=[(e??{}).query,r.action?.query].find(e=>"string"==typeof e&&!!e.trim()),a=Array.isArray(r.sources)?r.sources.flatMap(e=>e&&"object"==typeof e&&"url"in e&&"string"==typeof e.url?[{url:e.url,..."title"in e&&"string"==typeof e.title?{title:e.title}:{}}]:[]):[];return JSON.stringify({query:n??null,sources:a})}(n.input,a?.type==="tool-result"?a.output:null):JSON.stringify(n.input??{}),seq:r++}])}else"text"===n.type&&n.text.trim()?await (0,y.saveTurns)(t,[{id:crypto.randomUUID(),role:"assistant",text:n.text.trim(),seq:r++}]):"reasoning"===n.type&&n.text.trim()&&await (0,y.saveThought)(t,{id:crypto.randomUUID(),text:n.text.trim(),seq:r})},said:(e,n=crypto.randomUUID())=>(0,y.saveTurns)(t,[{id:n,role:"user",text:e,seq:r++}])}),f=S(s),g=[...f,...o],m=await (0,n.generateText)({model:u.model,instructions:u.system,messages:g,allowSystemInMessages:!0,tools:u.tools,providerOptions:u.providerOptions,stopWhen:(0,n.stepCountIs)(i.TEXT_CALL.maxSteps),abortSignal:c,prepareStep:async({stepNumber:t,messages:r})=>{let n=t>0?e.notes?.()??[]:[];for(let e of(g=[...r,...n.map(e=>({role:"user",content:e.text}))],n))e.said&&await p.said(e.text);return n.length?{messages:g}:void 0},onStepEnd:p.step});return{text:m.text.trim(),did:m.steps.flatMap(e=>e.toolCalls.map(e=>(0,w.toolLine)(e.toolName,JSON.stringify(e.input??{}))??e.toolName)),messages:[...g.slice(f.length),...m.steps.at(-1)?.response.messages??[]]}}[o,l,u,d,f,y]=k.then?(await k)():k,a.z.object({callId:a.z.string().min(1),standing:a.z.string().nullish(),runsOn:c.textModelRefSchema.nullish(),turn:a.z.string().min(1),messages:a.z.array(a.z.unknown()).min(1)}),globalThis.__textCallTurns??=new Map;let S=e=>e?[{role:"system",content:e}]:[];async function v(e,t,r=!1){let n=await (0,y.readLiveSettings)(),a=await E(n,t),i="openai"===a.provider||"chatgpt"===a.provider,[c,u,m,b,w]=await Promise.all([(0,l.getTextModel)(a),(0,d.loadThursdayPrompt)({backendPrompt:n.backendPrompt,written:!0,callId:e,phone:r,persona:n.persona,stylePrompt:n.stylePrompt,readSkills:n.readSkills}),(0,o.loadTools)({target:"thursday",callId:e,webSearch:n.webSearch,readSkills:n.readSkills,written:!0,model:a,phone:r}),(0,f.readConfig)(p.EXA_API_KEY),(0,f.readConfig)(s.LIVE_PROVIDER.apiKeyName)]),k=c.searchTools&&Object.values(c.searchTools)[0],_={...m,...n.webSearch&&!b&&k?{[h.TOOL_NAMES.web_search]:k}:{}},x=i?w?await (0,g.acceptedReasoning)({apiKey:w,model:a.model,effort:n.reasoningEffort}):(0,g.wantedReasoning)(n.reasoningEffort):null;return{model:c.model,system:u,tools:_,providerOptions:{openai:{...x?.effort?{reasoningEffort:x.effort}:{},...x&&"summary"in x&&x.summary?{reasoningSummary:x.summary}:{}}}}}let O="Writing to Thursday needs a GPT subscription sign-in or an OpenAI key — Settings › API keys.";e.s(["answerInWriting",0,R,"openTextCall",0,x]),r()}catch(e){r(e)}},!1),317613,e=>e.a(async(t,r)=>{try{var n=e.i(874533);e.i(666680);var a=e.i(912714),i=e.i(750227),s=e.i(812057),o=e.i(333925),l=e.i(5509);e.i(375814);var c=e.i(871096),u=t([l]);async function d(e){let t=await (0,c.openWorkspace)(),r=new Set(await (0,a.readdir)((0,i.join)(c.WORKSPACE,o.GIVEN_FILES.dir)).catch(()=>[])),n=[];for(let a of e){let e=a.name.normalize("NFC").replace(/[^\p{L}\p{N}._-]+/gu,"-").replace(/^[-.]+|-+$/g,"")||"file",i=e.lastIndexOf("."),s=i>0?e.slice(0,i):e,l=i>0?e.slice(i):"",c=e;for(let e=2;r.has(c);e++)c=`${s}-${e}${l}`;r.add(c);let u=`${o.GIVEN_FILES.dir}/${c}`;await t.writeFile(u,Buffer.from(await a.arrayBuffer())),n.push(u)}return n}[l]=u.then?(await u)():u,(0,i.join)(o.APP_DIR,o.PATHS.skills.default,"artifact","scripts","spreadsheet.mjs"),(0,s.promisify)(n.execFile),e.s(["keepGivenFiles",0,d]),r()}catch(e){r(e)}},!1),417043,e=>{"use strict";var t=e.i(333925);async function r(e,r){if(null==e||!Number.isFinite(e))return!1;let n=Math.max(0,1e3*e);return!(r>=t.REACH.rateRetries)&&!(n>t.REACH.rateWaitMs)&&(await new Promise(e=>setTimeout(e,n)),!0)}e.s(["ChannelRefusal",0,class extends Error{token;constructor(e,t=0){super(e),this.token=t}},"waitOut",0,r])},775247,e=>{"use strict";function t(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var r=t(),n={exec:()=>null};function a(e,t=""){let r="string"==typeof e?e:e.source,n={replace:(e,t)=>{let a="string"==typeof t?t:t.source;return a=a.replace(s.caret,"$1"),r=r.replace(e,a),n},getRegex:()=>new RegExp(r,t)};return n}var i=(()=>{try{return!!RegExp("(?<=1)(?<!1)")}catch{return!1}})(),s={codeRemoveIndent:/^(?: {1,4}| {0,3}\t)/gm,outputLinkReplace:/\\([\[\]])/g,indentCodeCompensation:/^(\s+)(?:```)/,beginningSpace:/^\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\n/g,tabCharGlobal:/\t/g,multipleSpaceGlobal:/\s+/g,blankLine:/^[ \t]*$/,doubleBlankLine:/\n[ \t]*\n[ \t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] +\S/,listReplaceTask:/^\[[ xX]\] +/,listTaskCheckbox:/\[[ xX]\]/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^<a /i,endATag:/^<\/a>/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^</,endAngleBracket:/>$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:e=>RegExp(`^( {0,3}${e})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:e=>RegExp(`^ {0,${Math.min(3,e-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),hrRegex:e=>RegExp(`^ {0,${Math.min(3,e-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),fencesBeginRegex:e=>RegExp(`^ {0,${Math.min(3,e-1)}}(?:\`\`\`|~~~)`),headingBeginRegex:e=>RegExp(`^ {0,${Math.min(3,e-1)}}#`),htmlBeginRegex:e=>RegExp(`^ {0,${Math.min(3,e-1)}}<(?:[a-z].*>|!--)`,"i"),blockquoteBeginRegex:e=>RegExp(`^ {0,${Math.min(3,e-1)}}>`)},o=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,l=/ {0,3}(?:[*+-]|\d{1,9}[.)])/,c=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,u=a(c).replace(/bull/g,l).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),d=a(c).replace(/bull/g,l).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),h=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,p=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,f=a(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",p).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),g=a(/^(bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,l).getRegex(),m="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",y=/<!--(?:-?>|[\s\S]*?(?:-->|$))/,b=a("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|<![A-Z][\\s\\S]*?(?:>\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))","i").replace("comment",y).replace("tag",m).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),w=a(h).replace("hr",o).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",m).getRegex(),k={blockquote:a(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",w).getRegex(),code:/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,def:f,fences:/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,heading:/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,hr:o,html:b,lheading:u,list:g,newline:/^(?:[ \t]*(?:\n|$))+/,paragraph:w,table:n,text:/^[^\n]+/},_=a("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",o).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3} )[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",m).getRegex(),E={...k,lheading:d,table:_,paragraph:a(h).replace("hr",o).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",_).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",m).getRegex()},x={...k,html:a("^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:\"[^\"]*\"|'[^']*'|\\s[^'\"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))").replace("comment",y).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:n,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:a(h).replace("hr",o).replace("heading",` *#{1,6} *[^
|
|
70
|
+
]`).replace("lheading",u).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},R=/^( {2,}|\\)\n(?!\s*$)/,v=/[\p{P}\p{S}]/u,S=/[\s\p{P}\p{S}]/u,O=/[^\s\p{P}\p{S}]/u,$=a(/^((?![*_])punctSpace)/,"u").replace(/punctSpace/g,S).getRegex(),T=/(?!~)[\p{P}\p{S}]/u,A=a(/link|precode-code|html/,"g").replace("link",/\[(?:[^\[\]`]|(?<a>`+)[^`]+\k<a>(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace("precode-",i?"(?<!`)()":"(^^|[^`])").replace("code",/(?<b>`+)[^`]+\k<b>(?!`)/).replace("html",/<(?! )[^<>]*?>/).getRegex(),P=/^(?:\*+(?:((?!\*)punct)|([^\s*]))?)|^_+(?:((?!_)punct)|([^\s_]))?/,j=a(P,"u").replace(/punct/g,v).getRegex(),D=a(P,"u").replace(/punct/g,T).getRegex(),C="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",N=a(C,"gu").replace(/notPunctSpace/g,O).replace(/punctSpace/g,S).replace(/punct/g,v).getRegex(),I=a(C,"gu").replace(/notPunctSpace/g,/(?:[^\s\p{P}\p{S}]|~)/u).replace(/punctSpace/g,/(?!~)[\s\p{P}\p{S}]/u).replace(/punct/g,T).getRegex(),M=a("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,O).replace(/punctSpace/g,S).replace(/punct/g,v).getRegex(),L=a(/^~~?(?:((?!~)punct)|[^\s~])/,"u").replace(/punct/g,v).getRegex(),B=a("^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)","gu").replace(/notPunctSpace/g,O).replace(/punctSpace/g,S).replace(/punct/g,v).getRegex(),z=a(/\\(punct)/,"gu").replace(/punct/g,v).getRegex(),U=a(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),q=a(y).replace("(?:-->|$)","-->").getRegex(),H=a("^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>").replace("comment",q).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),W=/(?:\[(?:\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\])|[^\[\]\\`])*?/,F=a(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]+(?:\n[ \t]*)?|\n[ \t]*)(title))?\s*\)/).replace("label",W).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),X=a(/^!?\[(label)\]\[(ref)\]/).replace("label",W).replace("ref",p).getRegex(),G=a(/^!?\[(ref)\](?:\[\])?/).replace("ref",p).getRegex(),V=a("reflink|nolink(?!\\()","g").replace("reflink",X).replace("nolink",G).getRegex(),K=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,Y={_backpedal:n,anyPunctuation:z,autolink:U,blockSkip:A,br:R,code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,del:n,delLDelim:n,delRDelim:n,emStrongLDelim:j,emStrongRDelimAst:N,emStrongRDelimUnd:M,escape:/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,link:F,nolink:G,punctuation:$,reflink:X,reflinkSearch:V,tag:H,text:/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,url:n},Z={...Y,link:a(/^!?\[(label)\]\((.*?)\)/).replace("label",W).getRegex(),reflink:a(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",W).getRegex()},J={...Y,emStrongRDelimAst:I,emStrongLDelim:D,delLDelim:L,delRDelim:B,url:a(/^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace("protocol",K).replace("email",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/,text:a(/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|protocol:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/).replace("protocol",K).getRegex()},Q={...J,br:a(R).replace("{2,}","*").getRegex(),text:a(J.text).replace("\\b_","\\b_| {2,}\\n").replace(/\{2,\}/g,"*").getRegex()},ee={normal:k,gfm:E,pedantic:x},et={normal:Y,gfm:J,breaks:Q,pedantic:Z},er={"&":"&","<":"<",">":">",'"':""","'":"'"},en=e=>er[e];function ea(e,t){if(t){if(s.escapeTest.test(e))return e.replace(s.escapeReplace,en)}else if(s.escapeTestNoEncode.test(e))return e.replace(s.escapeReplaceNoEncode,en);return e}function ei(e){try{e=encodeURI(e).replace(s.percentDecode,"%")}catch{return null}return e}function es(e,t){let r=e.replace(s.findPipe,(e,t,r)=>{let n=!1,a=t;for(;--a>=0&&"\\"===r[a];)n=!n;return n?"|":" |"}).split(s.splitPipe),n=0;if(r[0].trim()||r.shift(),r.length>0&&!r.at(-1)?.trim()&&r.pop(),t)if(r.length>t)r.splice(t);else for(;r.length<t;)r.push("");for(;n<r.length;n++)r[n]=r[n].trim().replace(s.slashPipe,"|");return r}function eo(e,t,r){let n=e.length;if(0===n)return"";let a=0;for(;a<n;){let i=e.charAt(n-a-1);if(i!==t||r)if(i!==t&&r)a++;else break;else a++}return e.slice(0,n-a)}function el(e,t,r,n,a){let i=t.href,s=t.title||null,o=e[1].replace(a.other.outputLinkReplace,"$1");n.state.inLink=!0;let l={type:"!"===e[0].charAt(0)?"image":"link",raw:r,href:i,title:s,text:o,tokens:n.inlineTokens(o)};return n.state.inLink=!1,l}var ec=class{options;rules;lexer;constructor(e){this.options=e||r}space(e){let t=this.rules.block.newline.exec(e);if(t&&t[0].length>0)return{type:"space",raw:t[0]}}code(e){let t=this.rules.block.code.exec(e);if(t){let e=t[0].replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:t[0],codeBlockStyle:"indented",text:this.options.pedantic?e:eo(e,`
|
|
71
71
|
`)}}}fences(e){let t=this.rules.block.fences.exec(e);if(t){let e=t[0],r=function(e,t,r){let n=e.match(r.other.indentCodeCompensation);if(null===n)return t;let a=n[1];return t.split(`
|
|
72
72
|
`).map(e=>{let t=e.match(r.other.beginningSpace);if(null===t)return e;let[n]=t;return n.length>=a.length?e.slice(a.length):e}).join(`
|
|
73
73
|
`)}(e,t[3]||"",this.rules);return{type:"code",raw:e,lang:t[2]?t[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):t[2],text:r}}}heading(e){let t=this.rules.block.heading.exec(e);if(t){let e=t[2].trim();if(this.rules.other.endingHash.test(e)){let t=eo(e,"#");(this.options.pedantic||!t||this.rules.other.endingSpaceChar.test(t))&&(e=t.trim())}return{type:"heading",raw:t[0],depth:t[1].length,text:e,tokens:this.lexer.inline(e)}}}hr(e){let t=this.rules.block.hr.exec(e);if(t)return{type:"hr",raw:eo(t[0],`
|
|
@@ -124,13 +124,13 @@ ${this.parser.parse(e)}</blockquote>
|
|
|
124
124
|
${e}</tr>
|
|
125
125
|
`}tablecell(e){let t=this.parser.parseInline(e.tokens),r=e.header?"th":"td";return(e.align?`<${r} align="${e.align}">`:`<${r}>`)+t+`</${r}>
|
|
126
126
|
`}strong({tokens:e}){return`<strong>${this.parser.parseInline(e)}</strong>`}em({tokens:e}){return`<em>${this.parser.parseInline(e)}</em>`}codespan({text:e}){return`<code>${ea(e,!0)}</code>`}br(e){return"<br>"}del({tokens:e}){return`<del>${this.parser.parseInline(e)}</del>`}link({href:e,title:t,tokens:r}){let n=this.parser.parseInline(r),a=ei(e);if(null===a)return n;let i='<a href="'+(e=a)+'"';return t&&(i+=' title="'+ea(t)+'"'),i+=">"+n+"</a>"}image({href:e,title:t,text:r,tokens:n}){n&&(r=this.parser.parseInline(n,this.parser.textRenderer));let a=ei(e);if(null===a)return ea(r);e=a;let i=`<img src="${e}" alt="${ea(r)}"`;return t&&(i+=` title="${ea(t)}"`),i+=">"}text(e){return"tokens"in e&&e.tokens?this.parser.parseInline(e.tokens):"escaped"in e&&e.escaped?e.text:ea(e.text)}},eh=class{strong({text:e}){return e}em({text:e}){return e}codespan({text:e}){return e}del({text:e}){return e}html({text:e}){return e}text({text:e}){return e}link({text:e}){return""+e}image({text:e}){return""+e}br(){return""}checkbox({raw:e}){return e}},ep=class e{options;renderer;textRenderer;constructor(e){this.options=e||r,this.options.renderer=this.options.renderer||new ed,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new eh}static parse(t,r){return new e(r).parse(t)}static parseInline(t,r){return new e(r).parseInline(t)}parse(e){this.renderer.parser=this;let t="";for(let r=0;r<e.length;r++){let n=e[r];if(this.options.extensions?.renderers?.[n.type]){let e=this.options.extensions.renderers[n.type].call({parser:this},n);if(!1!==e||!["space","hr","heading","code","table","blockquote","list","html","def","paragraph","text"].includes(n.type)){t+=e||"";continue}}switch(n.type){case"space":t+=this.renderer.space(n);break;case"hr":t+=this.renderer.hr(n);break;case"heading":t+=this.renderer.heading(n);break;case"code":t+=this.renderer.code(n);break;case"table":t+=this.renderer.table(n);break;case"blockquote":t+=this.renderer.blockquote(n);break;case"list":t+=this.renderer.list(n);break;case"checkbox":t+=this.renderer.checkbox(n);break;case"html":t+=this.renderer.html(n);break;case"def":t+=this.renderer.def(n);break;case"paragraph":t+=this.renderer.paragraph(n);break;case"text":t+=this.renderer.text(n);break;default:{let e='Token with "'+n.type+'" type was not found.';if(this.options.silent)return console.error(e),"";throw Error(e)}}}return t}parseInline(e,t=this.renderer){this.renderer.parser=this;let r="";for(let n=0;n<e.length;n++){let a=e[n];if(this.options.extensions?.renderers?.[a.type]){let e=this.options.extensions.renderers[a.type].call({parser:this},a);if(!1!==e||!["escape","html","link","image","strong","em","codespan","br","del","text"].includes(a.type)){r+=e||"";continue}}switch(a.type){case"escape":case"text":r+=t.text(a);break;case"html":r+=t.html(a);break;case"link":r+=t.link(a);break;case"image":r+=t.image(a);break;case"checkbox":r+=t.checkbox(a);break;case"strong":r+=t.strong(a);break;case"em":r+=t.em(a);break;case"codespan":r+=t.codespan(a);break;case"br":r+=t.br(a);break;case"del":r+=t.del(a);break;default:{let e='Token with "'+a.type+'" type was not found.';if(this.options.silent)return console.error(e),"";throw Error(e)}}}return r}},ef=class{options;block;constructor(e){this.options=e||r}static passThroughHooks=new Set(["preprocess","postprocess","processAllTokens","emStrongMask"]);static passThroughHooksRespectAsync=new Set(["preprocess","postprocess","processAllTokens"]);preprocess(e){return e}postprocess(e){return e}processAllTokens(e){return e}emStrongMask(e){return e}provideLexer(e=this.block){return e?eu.lex:eu.lexInline}provideParser(e=this.block){return e?ep.parse:ep.parseInline}},eg=new class{defaults=t();options=this.setOptions;parse=this.parseMarkdown(!0);parseInline=this.parseMarkdown(!1);Parser=ep;Renderer=ed;TextRenderer=eh;Lexer=eu;Tokenizer=ec;Hooks=ef;constructor(...e){this.use(...e)}walkTokens(e,t){let r=[];for(let n of e)switch(r=r.concat(t.call(this,n)),n.type){case"table":for(let e of n.header)r=r.concat(this.walkTokens(e.tokens,t));for(let e of n.rows)for(let n of e)r=r.concat(this.walkTokens(n.tokens,t));break;case"list":r=r.concat(this.walkTokens(n.items,t));break;default:{let e=n;this.defaults.extensions?.childTokens?.[e.type]?this.defaults.extensions.childTokens[e.type].forEach(n=>{let a=e[n].flat(1/0);r=r.concat(this.walkTokens(a,t))}):e.tokens&&(r=r.concat(this.walkTokens(e.tokens,t)))}}return r}use(...e){let t=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach(e=>{let r={...e};if(r.async=this.defaults.async||r.async||!1,e.extensions&&(e.extensions.forEach(e=>{if(!e.name)throw Error("extension name required");if("renderer"in e){let r=t.renderers[e.name];r?t.renderers[e.name]=function(...t){let n=e.renderer.apply(this,t);return!1===n&&(n=r.apply(this,t)),n}:t.renderers[e.name]=e.renderer}if("tokenizer"in e){if(!e.level||"block"!==e.level&&"inline"!==e.level)throw Error("extension level must be 'block' or 'inline'");let r=t[e.level];r?r.unshift(e.tokenizer):t[e.level]=[e.tokenizer],e.start&&("block"===e.level?t.startBlock?t.startBlock.push(e.start):t.startBlock=[e.start]:"inline"===e.level&&(t.startInline?t.startInline.push(e.start):t.startInline=[e.start]))}"childTokens"in e&&e.childTokens&&(t.childTokens[e.name]=e.childTokens)}),r.extensions=t),e.renderer){let t=this.defaults.renderer||new ed(this.defaults);for(let r in e.renderer){if(!(r in t))throw Error(`renderer '${r}' does not exist`);if(["options","parser"].includes(r))continue;let n=e.renderer[r],a=t[r];t[r]=(...e)=>{let r=n.apply(t,e);return!1===r&&(r=a.apply(t,e)),r||""}}r.renderer=t}if(e.tokenizer){let t=this.defaults.tokenizer||new ec(this.defaults);for(let r in e.tokenizer){if(!(r in t))throw Error(`tokenizer '${r}' does not exist`);if(["options","rules","lexer"].includes(r))continue;let n=e.tokenizer[r],a=t[r];t[r]=(...e)=>{let r=n.apply(t,e);return!1===r&&(r=a.apply(t,e)),r}}r.tokenizer=t}if(e.hooks){let t=this.defaults.hooks||new ef;for(let r in e.hooks){if(!(r in t))throw Error(`hook '${r}' does not exist`);if(["options","block"].includes(r))continue;let n=e.hooks[r],a=t[r];ef.passThroughHooks.has(r)?t[r]=e=>{if(this.defaults.async&&ef.passThroughHooksRespectAsync.has(r))return(async()=>{let r=await n.call(t,e);return a.call(t,r)})();let i=n.call(t,e);return a.call(t,i)}:t[r]=(...e)=>{if(this.defaults.async)return(async()=>{let r=await n.apply(t,e);return!1===r&&(r=await a.apply(t,e)),r})();let r=n.apply(t,e);return!1===r&&(r=a.apply(t,e)),r}}r.hooks=t}if(e.walkTokens){let t=this.defaults.walkTokens,n=e.walkTokens;r.walkTokens=function(e){let r=[];return r.push(n.call(this,e)),t&&(r=r.concat(t.call(this,e))),r}}this.defaults={...this.defaults,...r}}),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,t){return eu.lex(e,t??this.defaults)}parser(e,t){return ep.parse(e,t??this.defaults)}parseMarkdown(e){return(t,r)=>{let n={...r},a={...this.defaults,...n},i=this.onError(!!a.silent,!!a.async);if(!0===this.defaults.async&&!1===n.async)return i(Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof t>"u"||null===t)return i(Error("marked(): input parameter is undefined or null"));if("string"!=typeof t)return i(Error("marked(): input parameter is of type "+Object.prototype.toString.call(t)+", string expected"));if(a.hooks&&(a.hooks.options=a,a.hooks.block=e),a.async)return(async()=>{let r=a.hooks?await a.hooks.preprocess(t):t,n=await (a.hooks?await a.hooks.provideLexer(e):e?eu.lex:eu.lexInline)(r,a),i=a.hooks?await a.hooks.processAllTokens(n):n;a.walkTokens&&await Promise.all(this.walkTokens(i,a.walkTokens));let s=await (a.hooks?await a.hooks.provideParser(e):e?ep.parse:ep.parseInline)(i,a);return a.hooks?await a.hooks.postprocess(s):s})().catch(i);try{a.hooks&&(t=a.hooks.preprocess(t));let r=(a.hooks?a.hooks.provideLexer(e):e?eu.lex:eu.lexInline)(t,a);a.hooks&&(r=a.hooks.processAllTokens(r)),a.walkTokens&&this.walkTokens(r,a.walkTokens);let n=(a.hooks?a.hooks.provideParser(e):e?ep.parse:ep.parseInline)(r,a);return a.hooks&&(n=a.hooks.postprocess(n)),n}catch(e){return i(e)}}}onError(e,t){return r=>{if(r.message+=`
|
|
127
|
-
Please report this to https://github.com/markedjs/marked.`,e){let e="<p>An error occurred:</p><pre>"+ea(r.message+"",!0)+"</pre>";return t?Promise.resolve(e):e}if(t)return Promise.reject(r);throw r}}};function em(e,t){return eg.parse(e,t)}function ey(e,t){let r=[],n=e;for(;n.length>t;){let e=n.slice(0,t),a=[e.lastIndexOf("\n\n"),e.lastIndexOf("\n"),e.lastIndexOf(" ")].find(e=>e>t/2),i=a??t,s=n.charCodeAt(i-1);!a&&s>=55296&&s<=56319&&(i-=1),r.push(n.slice(0,i).trim()),n=n.slice(i).trim()}return n&&r.push(n),r}function eb(e,t){var r,n,a,i,s,o,l;switch(e.type){case"heading":return r=ew(e.tokens??[],t),n=e.depth,"discord"===(a=t)&&n<=3?`${"#".repeat(n)} ${r}`:e_(r,"strong",a);case"paragraph":return ew(e.tokens??[],t);case"text":return e.tokens?ew(e.tokens,t):
|
|
127
|
+
Please report this to https://github.com/markedjs/marked.`,e){let e="<p>An error occurred:</p><pre>"+ea(r.message+"",!0)+"</pre>";return t?Promise.resolve(e):e}if(t)return Promise.reject(r);throw r}}};function em(e,t){return eg.parse(e,t)}function ey(e,t){let r=[],n=e;for(;n.length>t;){let e=n.slice(0,t),a=[e.lastIndexOf("\n\n"),e.lastIndexOf("\n"),e.lastIndexOf(" ")].find(e=>e>t/2),i=a??t,s=n.charCodeAt(i-1);!a&&s>=55296&&s<=56319&&(i-=1),r.push(n.slice(0,i).trim()),n=n.slice(i).trim()}return n&&r.push(n),r}function eb(e,t){var r,n,a,i,s,o,l;switch(e.type){case"heading":return r=ew(e.tokens??[],t),n=e.depth,"discord"===(a=t)&&n<=3?`${"#".repeat(n)} ${r}`:e_(r,"strong",a);case"paragraph":return ew(e.tokens??[],t);case"text":return e.tokens?ew(e.tokens,t):eR(eS(e.text),t);case"list":return function e(t,r,n){return t.items.map((a,i)=>{let s=t.ordered?`${Number(t.start||1)+i}.`:"discord"===r?"-":"•",o=a.task?a.checked?"☑ ":"☐ ":"",[l,...c]=a.tokens.filter(e=>"checkbox"!==e.type),u=`${n} `;return[`${n}${s} ${o}${l?eb(l,r):""}`,...c.map(t=>"list"===t.type?e(t,r,u):eb(t,r).replace(/^/gm,u))].filter(e=>e.trim()).join("\n")}).join("\n")}(e,t,"");case"blockquote":return i=(e.tokens??[]).map(e=>eb(e,t)).filter(Boolean).join("\n"),s=t,i?"telegram"===s?`<blockquote>${i}</blockquote>`:"plain"===s?i:i.replace(/^/gm,"> "):"";case"table":let c;return o=e,l=t,[e_((c=e=>e.map(e=>ew(e.tokens,l)).join(" · "))(o.header),"strong",l),...o.rows.map(c)].join("\n");case"code":return eE(e.lang??"",e.text,t);case"html":return eR(eS(e.text.replace(/<[^>]*>/g,"")).trim(),t);default:return""}}function ew(e,t){return e.map(e=>{switch(e.type){case"text":return e.tokens?ew(e.tokens,t):eR(eS(e.text),t);case"escape":return eR(e.text,t);case"strong":case"em":case"del":return e_(ew(e.tokens??[],t),e.type,t);case"codespan":var r,n;return r=e.text,"telegram"===(n=t)?`<code>${eR(r,n)}</code>`:"slack"===n?`\`${eR(r,n)}\``:"discord"===n?r.includes("`")?`\`\` ${r} \`\``:`\`${r}\``:r;case"link":var a=e,i=t;let s=ew(a.tokens,i)||eR(ex(a.href),i);if(!/^(https?|mailto):/i.test(a.href))return s;let o=a.text===a.href;switch(i){case"telegram":return`<a href="${eR(a.href,i).replaceAll('"',""")}">${s}</a>`;case"discord":return o?a.href:`[${s}](${a.href.replaceAll(")","%29")})`;case"slack":return o?`<${a.href}>`:`<${a.href}|${s}>`;default:return o?a.href:`${s} ${a.href}`}case"image":return eR(eS(e.text)||ex(e.href),t);case"br":return"\n";case"html":return/^<br\s*\/?>$/i.test(e.text)?"\n":"";default:return"text"in e?eR(eS(String(e.text)),t):""}}).join("")}em.options=em.setOptions=function(e){return eg.setOptions(e),em.defaults=eg.defaults,r=em.defaults,em},em.getDefaults=t,em.defaults=r,em.use=function(...e){return eg.use(...e),em.defaults=eg.defaults,r=em.defaults,em},em.walkTokens=function(e,t){return eg.walkTokens(e,t)},em.parseInline=eg.parseInline,em.Parser=ep,em.parser=ep.parse,em.Renderer=ed,em.TextRenderer=eh,em.Lexer=eu,em.lexer=eu.lex,em.Tokenizer=ec,em.Hooks=ef,em.parse=em,em.options,em.setOptions,em.use,em.walkTokens,em.parseInline,ep.parse,eu.lex;let ek={telegram:{strong:["<b>","</b>"],em:["<i>","</i>"],del:["<s>","</s>"]},discord:{strong:["**","**"],em:["*","*"],del:["~~","~~"]},slack:{strong:["*","*"],em:["_","_"],del:["~","~"]}};function e_(e,t,r){if(!e||"plain"===r)return e;let[n,a]=ek[r][t];return`${n}${e}${a}`}function eE(e,t,r){return"telegram"===r?e?`<pre><code class="language-${eR(e,r)}">${eR(t,r)}</code></pre>`:`<pre>${eR(t,r)}</pre>`:"discord"===r?`\`\`\`${e}
|
|
128
128
|
${t}
|
|
129
129
|
\`\`\``:"slack"===r?`\`\`\`
|
|
130
|
-
${
|
|
131
|
-
\`\`\``:t}function ex(e,t){return"telegram"===t||"slack"===t?e.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">"):"discord"===t?e.replace(/[\\*_~`|>[\]]/g,"\\$&").replace(/^(\s*)(#|-|\+|\d+\.)(?=\s)/gm,"$1\\$2"):e}let
|
|
130
|
+
${eR(t,r)}
|
|
131
|
+
\`\`\``:t}function ex(e){try{let t=new URL(e,"http://here"),r=t.searchParams.get("path")??t.pathname;return decodeURIComponent(r.split("/").filter(Boolean).pop()??"")}catch{return e.split("/").pop()??""}}function eR(e,t){return"telegram"===t||"slack"===t?e.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">"):"discord"===t?e.replace(/[\\*_~`|>[\]]/g,"\\$&").replace(/^(\s*)(#|-|\+|\d+\.)(?=\s)/gm,"$1\\$2"):e}let ev={amp:"&",lt:"<",gt:">",quot:'"',apos:"'",nbsp:" "};function eS(e){return e.replace(/&(#x[\da-f]+|#\d+|[a-z]+);/gi,(e,t)=>{if("#"!==t[0])return ev[t.toLowerCase()]??e;let r="x"===t[1].toLowerCase()?Number.parseInt(t.slice(2),16):Number(t.slice(1));return r>0&&r<=1114111?String.fromCodePoint(r):e})}e.s(["chatPieces",0,function(e,t,r){let n="plain"in e?[{kind:"text",drawn:eR(e.plain,t),words:e.plain}]:new eu({gfm:!0}).lex(e.markdown).flatMap(e=>(function(e,t){if("code"===e.type)return[{kind:"code",lang:e.lang??"",body:e.text}];let r=eb(e,t);return r?[{kind:"text",drawn:r,words:eb(e,"plain")}]:[]})(e,t)),a=[],i="",s=e=>{if(i&&i.length+2+e.length<=r){i+=`
|
|
132
132
|
|
|
133
|
-
${e}`;return}i&&a.push(i),i=e};for(let e of n){let n="code"===e.kind?eE(e.lang,e.body,t):e.drawn;if(n.length<=r)s(n);else if("code"===e.kind)for(let n of function(e,t,r,n){let a=n-eE(e,"",r).length,i=t.split("\n").flatMap(e=>e.length>a?ey(e,a):[e]),s=[],o=[];for(let t of i)o.length&&eE(e,[...o,t].join("\n"),r).length>n&&(s.push(eE(e,o.join("\n"),r)),o=[]),o.push(t);return o.length&&s.push(eE(e,o.join("\n"),r)),s}(e.lang,e.body,t,r))s(n);else for(let n of function e(t,r,n){return ey(t,n).flatMap(t=>{let a=
|
|
133
|
+
${e}`;return}i&&a.push(i),i=e};for(let e of n){let n="code"===e.kind?eE(e.lang,e.body,t):e.drawn;if(n.length<=r)s(n);else if("code"===e.kind)for(let n of function(e,t,r,n){let a=n-eE(e,"",r).length,i=t.split("\n").flatMap(e=>e.length>a?ey(e,a):[e]),s=[],o=[];for(let t of i)o.length&&eE(e,[...o,t].join("\n"),r).length>n&&(s.push(eE(e,o.join("\n"),r)),o=[]),o.push(t);return o.length&&s.push(eE(e,o.join("\n"),r)),s}(e.lang,e.body,t,r))s(n);else for(let n of function e(t,r,n){return ey(t,n).flatMap(t=>{let a=eR(t,r);return a.length<=n||t.length<2?[a]:e(t,r,Math.floor(n*t.length/a.length))})}(e.words,t,r))s(n)}return i&&a.push(i),a.length?a:[eR("…",t)]},"literal",0,e=>e.replace(/[\\`*_{}[\]()#+\-.!|~<>]/g,"\\$&")],775247)},903438,e=>{"use strict";e.s(["runSocket",0,function(e,t,r){return new Promise((n,a)=>{let i=new WebSocket(e),s=e=>{i.readyState===WebSocket.OPEN&&i.send(JSON.stringify(e))},o=!1,l=e=>{o||(o=!0,r.removeEventListener("abort",u),n(e))},c=(e,t)=>{l({code:e,reason:t}),i.close(e,t)},u=()=>c(1e3,"");r.addEventListener("abort",u,{once:!0}),i.addEventListener("message",e=>{try{t.message(JSON.parse(String(e.data)),s,c)}catch{}}),i.addEventListener("error",()=>{i.readyState===WebSocket.OPEN||o||(o=!0,r.removeEventListener("abort",u),a(Error(`Could not connect to ${new URL(e).host}`)))}),i.addEventListener("close",e=>l({code:e.code,reason:e.reason}))})}])},854455,e=>{"use strict";var t=e.i(417043),r=e.i(775247),n=e.i(903438);let a="https://discord.com/api/v10",i={4004:"Discord did not take the bot token: it was reset or mistyped. Reset it on the application's Bot page and paste the new one here.",4013:"Discord refused the intents this bot asked for.",4014:"Discord refused an intent this bot is not allowed — check the bot's page."};e.s(["createDiscord",0,function(e){async function s(r,n,i){let s=i instanceof FormData;for(let o=0;;o++){let l=await fetch(`${a}${n}`,{method:r,headers:{authorization:`Bot ${e}`,...s||!i?{}:{"content-type":"application/json"}},body:s?i:i?JSON.stringify(i):void 0}).catch(e=>{throw Error(`Could not reach ${new URL(a).host}`,{cause:e})});if(l.ok)return 204===l.status?null:await l.json();let c=await l.json().catch(()=>null);if(429===l.status&&await (0,t.waitOut)(c?.retry_after,o))continue;let u=c?.message??`Discord answered ${l.status}`;throw 401===l.status?new t.ChannelRefusal(u):Error(u)}}let o=e=>{let t=e.length<=5?1:5,r=[];for(let n=0;n<e.length&&r.length<5;n+=t)r.push({type:1,components:e.slice(n,n+t).map(e=>({type:2,style:2,label:e.text.slice(0,80),custom_id:e.data}))});return r};return{limits:{take:1/0,file:0x1400000,picture:0x1400000},async listen(r,a){let o,l=null,c=!0;try{let u=await (0,n.runSocket)("wss://gateway.discord.gg/?v=10&encoding=json",{message(t,n,a){let{op:i,d:u,s:d,t:h}=t;if(null!==d&&(l=d),10===i){let t=u.heartbeat_interval;o=setInterval(()=>{if(!c)return a(4e3,"Discord stopped answering");c=!1,n({op:1,d:l})},t),n({op:2,d:{token:e,intents:4096,properties:{os:process.platform,browser:"thursday",device:"thursday"}}})}else if(1===i)n({op:1,d:l});else if(11===i)c=!0;else if(7===i||9===i)a(4e3,"Discord asked for a new connection");else if(0===i&&"READY"===h){let e;r.ready(u.user.username,(e=u.application?.id)?`https://discord.com/oauth2/authorize?client_id=${e}&scope=bot&permissions=0`:null,u.user.id)}else if(0===i&&h){var p,f;let e=(p=h,f=u,"MESSAGE_CREATE"===p?f.guild_id||f.author.bot?null:{kind:"message",chat:f.channel_id,name:f.author.global_name||f.author.username,handle:`@${f.author.username}`,words:f.content.trim(),files:(f.attachments??[]).map(e=>({name:e.filename,size:e.size,fetch:async()=>{let t=await fetch(e.url);if(!t.ok)throw Error(`Discord answered ${t.status} for the file`);return new File([await t.arrayBuffer()],e.filename,{type:e.content_type??""})}})),unreadable:!1}:"INTERACTION_CREATE"===p?3!==f.type||f.guild_id?null:(s("POST",`/interactions/${f.id}/${f.token}/callback`,{type:6}).catch(()=>{}),{kind:"press",chat:f.channel_id,data:f.data?.custom_id??"",under:f.message?{id:f.message.id,text:f.message.content}:null}):null);e&&r.incoming(e)}}},a),d=i[u.code];if(d)throw new t.ChannelRefusal(d);if(!a.aborted)throw Error(u.reason||`Discord closed the connection (${u.code})`)}finally{clearInterval(o)}},async say(e,t,n){let a=(0,r.chatPieces)(t,"discord",1900);for(let[t,r]of a.entries())await s("POST",`/channels/${e}/messages`,{content:r,flags:4,allowed_mentions:{parse:[]},...n?.length&&t===a.length-1?{components:o(n)}:{}})},async typing(e){await s("POST",`/channels/${e}/typing`).catch(()=>{})},async settle(e,t,n){let a=`
|
|
134
134
|
|
|
135
135
|
→ ${(0,r.chatPieces)({plain:n},"discord",1900)[0]}`;await s("PATCH",`/channels/${e}/messages/${t.id}`,{content:`${t.text.slice(0,1900-a.length)}${a}`,components:[]}).catch(()=>{})},async sendFiles(e,t){for(let r=0;r<t.length;r+=10){let n=t.slice(r,r+10),a=new FormData;for(let[e,t]of(a.set("payload_json",JSON.stringify({attachments:n.map((e,t)=>({id:t,filename:e.name}))})),n.entries()))a.set(`files[${e}]`,new Blob([t.bytes]),t.name);await s("POST",`/channels/${e}/messages`,a)}}}}])},426455,e=>{"use strict";var t=e.i(853205),r=e.i(333925),n=e.i(938281);e.i(556325),t.z.object({session:t.z.object({id:t.z.string().min(1)}),transport:t.z.object({type:t.z.literal("webrtc"),sdp:t.z.string().min(1)})});let a=new Map;function i(e){return"none"===e?{effort:e}:{...e?{effort:e}:{},summary:"auto"}}async function s(e){let{apiKey:t,model:s,effort:o}=e,l=`${s} ${o??"auto"}`,c=a.get(l);if(void 0!==c)return c;let u=i(o);for(;;){let e=await fetch("https://api.openai.com/v1/responses/input_tokens",{method:"POST",headers:{Authorization:`Bearer ${t}`,"Content-Type":"application/json"},signal:AbortSignal.timeout(r.LIVE_CALL.reasoningCheckMs),body:JSON.stringify({model:s,input:".",reasoning:u})}).catch(()=>null);if(!e)return u;let i=Object.keys(u).length?u:null;if(e.ok)return a.set(l,i),i;let o=await e.json().catch(()=>null),c=o?.error?.param?.replace(/^reasoning\./,"");if("effort"!==c&&"summary"!==c||!(c in u))return u;if(n.logger.warn(`${s} takes no reasoning ${c}; calls omit it`),delete u[c],!Object.keys(u).length)return a.set(l,null),null}}e.s(["acceptedReasoning",0,s,"wantedReasoning",0,i])},461067,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"ReadonlyURLSearchParams",{enumerable:!0,get:function(){return a}});class n extends Error{constructor(){super("Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams"),Object.defineProperty(this,"__NEXT_ERROR_CODE",{value:"E1174",enumerable:!1,configurable:!0})}}class a extends URLSearchParams{append(){throw new n}delete(){throw new n}set(){throw new n}sort(){throw new n}}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},574542,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"RedirectStatusCode",{enumerable:!0,get:function(){return a}});var n,a=((n={})[n.SeeOther=303]="SeeOther",n[n.TemporaryRedirect=307]="TemporaryRedirect",n[n.PermanentRedirect=308]="PermanentRedirect",n);("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},4166,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={REDIRECT_ERROR_CODE:function(){return s},isRedirectError:function(){return o}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let i=e.r(574542),s="NEXT_REDIRECT";function o(e){if("object"!=typeof e||null===e||!("digest"in e)||"string"!=typeof e.digest)return!1;let t=e.digest.split(";"),[r,n]=t,a=t.slice(2,-2).join(";"),o=Number(t.at(-2));return r===s&&("replace"===n||"push"===n)&&"string"==typeof a&&!isNaN(o)&&o in i.RedirectStatusCode}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},845135,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={actionAsyncStorage:function(){return i.actionAsyncStorage},workAsyncStorage:function(){return s.workAsyncStorage},workUnitAsyncStorage:function(){return o.workUnitAsyncStorage}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let i=e.r(120635),s=e.r(556704),o=e.r(832319);("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},543212,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={getRedirectError:function(){return l},getRedirectStatusCodeFromError:function(){return p},getRedirectTypeFromError:function(){return h},getURLFromRedirectError:function(){return d},permanentRedirect:function(){return u},redirect:function(){return c}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let i=e.r(574542),s=e.r(4166),o=e.r(845135);function l(e,t,r=i.RedirectStatusCode.TemporaryRedirect){let n=Object.defineProperty(Error(s.REDIRECT_ERROR_CODE),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return n.digest=`${s.REDIRECT_ERROR_CODE};${t};${e};${r};`,n}function c(e,t){throw l(e,t??=o.actionAsyncStorage?.getStore()?.isAction?"push":"replace",i.RedirectStatusCode.TemporaryRedirect)}function u(e,t="replace"){throw l(e,t,i.RedirectStatusCode.PermanentRedirect)}function d(e){return(0,s.isRedirectError)(e)?e.digest.split(";").slice(2,-2).join(";"):null}function h(e){if(!(0,s.isRedirectError)(e))throw Object.defineProperty(Error("Not a redirect error"),"__NEXT_ERROR_CODE",{value:"E260",enumerable:!1,configurable:!0});return e.digest.split(";",2)[1]}function p(e){if(!(0,s.isRedirectError)(e))throw Object.defineProperty(Error("Not a redirect error"),"__NEXT_ERROR_CODE",{value:"E260",enumerable:!1,configurable:!0});return Number(e.digest.split(";").at(-2))}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},33394,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={HTTPAccessErrorStatus:function(){return i},HTTP_ERROR_FALLBACK_ERROR_CODE:function(){return o},getAccessFallbackErrorTypeByStatus:function(){return u},getAccessFallbackHTTPStatus:function(){return c},isHTTPAccessFallbackError:function(){return l}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let i={NOT_FOUND:404,FORBIDDEN:403,UNAUTHORIZED:401},s=new Set(Object.values(i)),o="NEXT_HTTP_ERROR_FALLBACK";function l(e){if("object"!=typeof e||null===e||!("digest"in e)||"string"!=typeof e.digest)return!1;let[t,r]=e.digest.split(";");return t===o&&s.has(Number(r))}function c(e){return Number(e.digest.split(";")[1])}function u(e){switch(e){case 401:return"unauthorized";case 403:return"forbidden";case 404:return"not-found";default:return}}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},944760,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"notFound",{enumerable:!0,get:function(){return i}});let n=e.r(33394),a=`${n.HTTP_ERROR_FALLBACK_ERROR_CODE};404`;function i(){let e=Object.defineProperty(Error(a),"__NEXT_ERROR_CODE",{value:"E1041",enumerable:!1,configurable:!0});throw e.digest=a,e}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},825345,(e,t,r)=>{"use strict";function n(){throw Object.defineProperty(Error("`forbidden()` is experimental and only allowed to be enabled when `experimental.authInterrupts` is enabled."),"__NEXT_ERROR_CODE",{value:"E488",enumerable:!1,configurable:!0})}Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"forbidden",{enumerable:!0,get:function(){return n}}),e.r(33394).HTTP_ERROR_FALLBACK_ERROR_CODE,("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},452616,(e,t,r)=>{"use strict";function n(){throw Object.defineProperty(Error("`unauthorized()` is experimental and only allowed to be used when `experimental.authInterrupts` is enabled."),"__NEXT_ERROR_CODE",{value:"E411",enumerable:!1,configurable:!0})}Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"unauthorized",{enumerable:!0,get:function(){return n}}),e.r(33394).HTTP_ERROR_FALLBACK_ERROR_CODE,("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},585346,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"InvariantError",{enumerable:!0,get:function(){return n}});class n extends Error{constructor(e,t){super(`Invariant: ${e.endsWith(".")?e:e+"."} This is a bug in Next.js.`,t),Object.defineProperty(this,"__NEXT_ERROR_CODE",{value:"E1179",enumerable:!1,configurable:!0}),this.name="InvariantError"}}},900338,(e,t,r)=>{"use strict";function n(){let e,t,r=new Promise((r,n)=>{e=r,t=n});return{resolve:e,reject:t,promise:r}}Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"createPromiseWithResolvers",{enumerable:!0,get:function(){return n}})},865832,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n,a,i={RENDER_STAGE_ADVANCE_ORDER:function(){return u},RenderStage:function(){return c},StagedRenderingController:function(){return f},SyncIOMode:function(){return p},getNextStage:function(){return d},isAdvanceableRenderStage:function(){return h}};for(var s in i)Object.defineProperty(r,s,{enumerable:!0,get:i[s]});let o=e.r(585346),l=e.r(900338);var c=((n={})[n.Before=1]="Before",n[n.ShellStatic=11]="ShellStatic",n[n.Static=13]="Static",n[n.ShellRuntime=21]="ShellRuntime",n[n.Runtime=23]="Runtime",n[n.Dynamic=30]="Dynamic",n[n.Abandoned=40]="Abandoned",n);let u=[11,13,21,23,30];function d(e){return u[u.indexOf(e)+1]}function h(e){return 1<e&&e<=30}var p=((a={})[a.Untracked=1]="Untracked",a[a.AllowedInRuntimeOrDynamic=2]="AllowedInRuntimeOrDynamic",a[a.AllowedInDynamic=3]="AllowedInDynamic",a);class f{constructor({abortSignal:e,abandonController:t,syncIO:r,finalStage:n}){this.currentStage=1,this.syncInterruptReason=null,this.triggers={11:m(),13:m(),21:m(),23:m(),30:m()},this.abortSignal=e,this.abandonController=t,this.syncIOMode=r,this.finalStage=n,e&&e.addEventListener("abort",()=>{let{reason:t}=e;for(let e of Object.values(this.triggers)){var r,n;r=e,n=t,"pending"===r.state&&(r.state="cancelled",r._listeners.length=0,r.promise.catch(g),r._rejectPromise(n))}},{once:!0}),t&&t.signal.addEventListener("abort",()=>{this.abandonRender()},{once:!0})}onStage(e,t){var r,n;r=this.triggers[e],n=t,"pending"===r.state?r._listeners.push(n):n()}shouldTrackSyncInterrupt(){if(1===this.syncIOMode)return!1;switch(this.currentStage){case 1:return!1;case 11:case 13:return!0;case 21:case 23:switch(this.syncIOMode){case 2:return!1;case 3:return!0}case 30:case 40:return!1;default:return this.currentStage,!1}}syncInterruptCurrentStageWithReason(e){let{currentStage:t}=this;if(1!==t&&30!==t&&40!==t){if(this.abandonController)return void this.abandonController.abort();if(this.abortSignal){this.syncInterruptReason=e,this.currentStage=40;return}this.syncInterruptReason=e,this.advanceStage(30)}}getSyncInterruptReason(){return this.syncInterruptReason}getStageEndTime(e){return this.triggers[d(e)].triggeredAt??1/0}abandonRender(){let{currentStage:e}=this;if(1===e)throw Object.defineProperty(new o.InvariantError("A render that hasn't started yet cannot be abandoned"),"__NEXT_ERROR_CODE",{value:"E1300",enumerable:!1,configurable:!0});if(30===e||40===e)return;let t=u.indexOf(e)+1,r=u.indexOf(30);for(let e=t;e<r;e++)this.resolveStage(u[e]);this.currentStage=40}advanceStage(e){if(null!==this.finalStage&&e>this.finalStage)throw Object.defineProperty(new o.InvariantError(`Attempted to advance to stage ${c[e]} but the render is limited to ${c[this.finalStage]}`),"__NEXT_ERROR_CODE",{value:"E1302",enumerable:!1,configurable:!0});let{currentStage:t}=this;if(30===t||40===t||e<=t)return;this.currentStage=e;let r=1===t?0:u.indexOf(t)+1,n=u.indexOf(e);for(let e=r;e<=n;e++)this.resolveStage(u[e])}resolveStage(e){var t=this.triggers[e];if("pending"===t.state){t.state="triggered",t.triggeredAt=performance.now()+performance.timeOrigin;try{let{_listeners:e}=t;for(let t=0;t<e.length;t++)e[t]();e.length=0}finally{t._resolvePromise()}}}getStagePromise(e){return this.triggers[e].promise}waitForStage(e){return this.getStagePromise(e)}delayUntilStage(e,t,r){let n=this.getStagePromise(e).then(()=>r);return this.abortSignal&&n.catch(g),n}}function g(){}function m(){let{promise:e,resolve:t,reject:r}=(0,l.createPromiseWithResolvers)();return{state:"pending",triggeredAt:null,promise:e,_listeners:[],_resolvePromise:t,_rejectPromise:r}}},756725,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={ClientHookDynamicError:function(){return u},RENDER_STAGES_BY_DATA_KIND:function(){return S},applyOwnerStack:function(){return O},isClientHookDynamicError:function(){return d},isHangingPromiseRejectionError:function(){return s},makeClientHookHangingPromise:function(){return _},makeDevtoolsIOAwarePromise:function(){return v},makeDynamicHangingPromise:function(){return p},makeFallbackParamsHangingPromise:function(){return m},makePromiseFromTrigger:function(){return R},makeRuntimeHangingPromise:function(){return g},makeStageHangingPromise:function(){return y},makeUntrackedHangingPromise:function(){return f},trackFallbackParamsAccessed:function(){return w},trackRuntimeDataAccessed:function(){return b}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let i=e.r(865832);function s(e){return"object"==typeof e&&null!==e&&"digest"in e&&e.digest===o}e.r(832319),e.r(559043);let o="HANGING_PROMISE_REJECTION";class l extends Error{constructor(e,t){super(`During prerendering, ${t} rejects when the prerender is complete. Typically these errors are handled by React but if you move ${t} to a different context by using \`setTimeout\`, \`after\`, or similar functions you may observe this error and you should handle it in that context. This occurred at route "${e}".`),this.route=e,this.expression=t,this.digest=o}}let c="CLIENT_HOOK_DYNAMIC";class u extends Error{constructor(e,t){super(`Route "${e}": Next.js encountered URL data \`${t}\` in a Client Component outside of \`<Suspense>\`.
|
|
136
136
|
|
|
@@ -279,7 +279,7 @@ Ways to fix this:
|
|
|
279
279
|
- [disable] Remove \`prefetch={true}\` from the <Link> to use the default prefetch
|
|
280
280
|
- [ignore] Set \`export const instant = false\` to opt the route out of instant-navigation validation
|
|
281
281
|
|
|
282
|
-
Learn more: https://nextjs.org/docs/messages/instant-link-prefetch-partial`),"__NEXT_ERROR_CODE",{value:"E1435",enumerable:!1,configurable:!0})}},258200,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n,a,i,s={DynamicHoleKind:function(){return ei},Postpone:function(){return D},PreludeState:function(){return eh},abortAndThrowOnSynchronousRequestDataAccess:function(){return j},abortOnSynchronousPlatformIOAccess:function(){return P},accessedDynamicData:function(){return
|
|
282
|
+
Learn more: https://nextjs.org/docs/messages/instant-link-prefetch-partial`),"__NEXT_ERROR_CODE",{value:"E1435",enumerable:!1,configurable:!0})}},258200,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n,a,i,s={DynamicHoleKind:function(){return ei},Postpone:function(){return D},PreludeState:function(){return eh},abortAndThrowOnSynchronousRequestDataAccess:function(){return j},abortOnSynchronousPlatformIOAccess:function(){return P},accessedDynamicData:function(){return U},annotateDynamicAccess:function(){return G},consumeDynamicAccess:function(){return q},createDynamicTrackingState:function(){return x},createDynamicValidationState:function(){return R},createHangingInputAbortSignal:function(){return F},createInstantValidationState:function(){return es},createRenderInBrowserAbortSignal:function(){return W},formatDynamicAPIAccesses:function(){return H},getFirstDynamicReason:function(){return S},getNavigationDisallowedDynamicReasons:function(){return ey},getStaticShellDisallowedDynamicReasons:function(){return em},isDynamicPostpone:function(){return I},isPrerenderInterruptedError:function(){return z},logDisallowedDynamicError:function(){return ep},markCurrentScopeAsDynamic:function(){return O},postponeWithTracking:function(){return C},throwIfDisallowedDynamic:function(){return eg},throwIfSyncIOUsed:function(){return ef},throwToInterruptStaticGeneration:function(){return $},trackAllowedDynamicAccess:function(){return ea},trackDynamicDataInDynamicRender:function(){return T},trackDynamicHoleInNavigation:function(){return eo},trackDynamicHoleInRuntimeShell:function(){return ec},trackDynamicHoleInStaticShell:function(){return eu},trackThrownErrorInNavigation:function(){return el},useDynamicRouteParams:function(){return V},useDynamicSearchParams:function(){return K}};for(var o in s)Object.defineProperty(r,o,{enumerable:!0,get:s[o]});let l=(n=e.r(910931))&&n.__esModule?n:{default:n},c=e.r(243727),u=e.r(183589),d=e.r(832319),h=e.r(556704),p=e.r(756725),f=e.r(534103),g=e.r(609975),m=e.r(107703),y=e.r(811525),b=e.r(585346),w=e.r(100204),k=e.r(199776),_=e.r(47076),E="function"==typeof l.default.unstable_postpone;function x(e){return{isDebugDynamicAccesses:e,dynamicAccesses:[],syncDynamicErrorWithStack:null,syncDynamicErrorWithStackPostMicrotask:!1}}function R(){return{hasSuspenseAboveBody:!1,hasDynamicMetadata:!1,dynamicMetadata:null,hasDynamicViewport:!1,hasAllowedDynamic:!1,dynamicErrors:[]}}function v(e){return e.syncDynamicErrorWithStackPostMicrotask?null:e.syncDynamicErrorWithStack}function S(e){var t;return null==(t=e.dynamicAccesses[0])?void 0:t.expression}function O(e,t,r){if(t)switch(t.type){case"cache":case"unstable-cache":case"private-cache":return}if(!e.forceDynamic&&!e.forceStatic){if(e.dynamicShouldError)throw Object.defineProperty(new u.StaticGenBailoutError(`Route ${e.route} with \`dynamic = "error"\` couldn't be rendered statically because it used \`${r}\`. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`),"__NEXT_ERROR_CODE",{value:"E553",enumerable:!1,configurable:!0});if(t)switch(t.type){case"prerender-ppr":return C(e.route,r,t.dynamicTracking);case"prerender-legacy":t.revalidate=0;let n=Object.defineProperty(new c.DynamicServerError(`Route ${e.route} couldn't be rendered statically because it used ${r}. See more info here: https://nextjs.org/docs/messages/dynamic-server-error`),"__NEXT_ERROR_CODE",{value:"E550",enumerable:!1,configurable:!0});throw e.dynamicUsageDescription=r,e.dynamicUsageStack=n.stack,n}}}function $(e,t,r){let n=Object.defineProperty(new c.DynamicServerError(`Route ${t.route} couldn't be rendered statically because it used \`${e}\`. See more info here: https://nextjs.org/docs/messages/dynamic-server-error`),"__NEXT_ERROR_CODE",{value:"E558",enumerable:!1,configurable:!0});throw r.revalidate=0,t.dynamicUsageDescription=e,t.dynamicUsageStack=n.stack,n}function T(e){switch(e.type){case"cache":case"unstable-cache":case"private-cache":return}}function A(e,t,r){let n=B(`Route ${e} needs to bail out of prerendering at this point because it used ${t}.`);r.controller.abort(n);let a=r.dynamicTracking;a&&a.dynamicAccesses.push({stack:a.isDebugDynamicAccesses?Error().stack:void 0,expression:t})}function P(e,t,r,n){let a=n.dynamicTracking;a&&null===a.syncDynamicErrorWithStack&&(a.syncDynamicErrorWithStack=r,queueMicrotask(()=>{a.syncDynamicErrorWithStackPostMicrotask=!0})),A(e,t,n)}function j(e,t,r,n){if((0,p.trackRuntimeDataAccessed)(n),!1===n.controller.signal.aborted){A(e,t,n);let a=n.dynamicTracking;a&&null===a.syncDynamicErrorWithStack&&(a.syncDynamicErrorWithStack=r)}throw B(`Route ${e} needs to bail out of prerendering at this point because it used ${t}.`)}function D({reason:e,route:t}){let r=d.workUnitAsyncStorage.getStore();C(t,e,r&&"prerender-ppr"===r.type?r.dynamicTracking:null)}function C(e,t,r){(function(){if(!E)throw Object.defineProperty(Error("Invariant: React.unstable_postpone is not defined. This suggests the wrong version of React was loaded. This is a bug in Next.js"),"__NEXT_ERROR_CODE",{value:"E224",enumerable:!1,configurable:!0})})(),r&&r.dynamicAccesses.push({stack:r.isDebugDynamicAccesses?Error().stack:void 0,expression:t}),l.default.unstable_postpone(N(e,t))}function N(e,t){return`Route ${e} needs to bail out of prerendering at this point because it used ${t}. React throws this special object to indicate where. It should not be caught by your own try/catch. Learn more: https://nextjs.org/docs/messages/ppr-caught-error`}function I(e){return"object"==typeof e&&null!==e&&"string"==typeof e.message&&M(e.message)}function M(e){return e.includes("needs to bail out of prerendering at this point because it used")&&e.includes("Learn more: https://nextjs.org/docs/messages/ppr-caught-error")}if(!1===M(N("%%%","^^^")))throw Object.defineProperty(Error("Invariant: isDynamicPostpone misidentified a postpone reason. This is a bug in Next.js"),"__NEXT_ERROR_CODE",{value:"E296",enumerable:!1,configurable:!0});let L="NEXT_PRERENDER_INTERRUPTED";function B(e){let t=Object.defineProperty(Error(e),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return t.digest=L,t}function z(e){return"object"==typeof e&&null!==e&&e.digest===L&&"name"in e&&"message"in e&&e instanceof Error}function U(e){return e.length>0}function q(e,t){return e.dynamicAccesses.push(...t.dynamicAccesses),e.dynamicAccesses}function H(e){return e.filter(e=>"string"==typeof e.stack&&e.stack.length>0).map(({expression:e,stack:t})=>(t=t.split("\n").slice(4).filter(e=>!(e.includes("node_modules/next/")||e.includes(" (<anonymous>)")||e.includes(" (node:"))).join("\n"),`Dynamic API Usage Debug - ${e}:
|
|
283
283
|
${t}`))}function W(){let e=new AbortController;return e.abort(Object.defineProperty(new m.BailoutToCSRError("Render in Browser"),"__NEXT_ERROR_CODE",{value:"E721",enumerable:!1,configurable:!0})),e.signal}function F(e){switch(e.type){case"prerender":case"prerender-runtime":let t=new AbortController;if(e.cacheSignal)e.cacheSignal.inputReady().then(()=>{t.abort()});else{let r=(0,d.getStagedRenderingController)(e);r&&null!==r.finalStage?r.waitForStage(r.finalStage).then(()=>(0,g.scheduleOnNextTick)(()=>t.abort()),X):(0,g.scheduleOnNextTick)(()=>t.abort())}return t.signal;case"prerender-client":case"validation-client":case"prerender-ppr":case"prerender-legacy":case"request":case"cache":case"private-cache":case"unstable-cache":case"generate-static-params":return}}function X(){}function G(e,t){let r=t.dynamicTracking;r&&r.dynamicAccesses.push({stack:r.isDebugDynamicAccesses?Error().stack:void 0,expression:e})}function V(e){let t=h.workAsyncStorage.getStore(),r=d.workUnitAsyncStorage.getStore();if(t&&r)switch(r.type){case"prerender-client":{let n=r.fallbackRouteParams;n&&n.size>0&&l.default.use((0,p.makeClientHookHangingPromise)(r.renderSignal,new p.ClientHookDynamicError(t.route,e)));break}case"prerender":throw Object.defineProperty(new b.InvariantError(`\`${e}\` was called from a Server Component. Next.js should be preventing ${e} from being included in server components statically, but did not in this case.`),"__NEXT_ERROR_CODE",{value:"E795",enumerable:!1,configurable:!0});case"prerender-ppr":{let n=r.fallbackRouteParams;if(n&&n.size>0)return C(t.route,e,r.dynamicTracking);break}case"validation-client":case"prerender-legacy":case"request":case"unstable-cache":break;case"prerender-runtime":throw Object.defineProperty(new b.InvariantError(`\`${e}\` was called during a runtime prerender. Next.js should be preventing ${e} from being included in server components statically, but did not in this case.`),"__NEXT_ERROR_CODE",{value:"E771",enumerable:!1,configurable:!0});case"cache":case"private-cache":throw Object.defineProperty(new b.InvariantError(`\`${e}\` was called inside a cache scope. Next.js should be preventing ${e} from being included in server components statically, but did not in this case.`),"__NEXT_ERROR_CODE",{value:"E745",enumerable:!1,configurable:!0});case"generate-static-params":throw Object.defineProperty(new b.InvariantError(`\`${e}\` was called in \`generateStaticParams\`. Next.js should be preventing ${e} from being included in server component files statically, but did not in this case.`),"__NEXT_ERROR_CODE",{value:"E1130",enumerable:!1,configurable:!0})}}function K(e){let t=h.workAsyncStorage.getStore(),r=d.workUnitAsyncStorage.getStore();if(t)switch(!r&&(0,d.throwForMissingRequestStore)(e),r.type){case"validation-client":case"request":return;case"prerender-client":l.default.use((0,p.makeClientHookHangingPromise)(r.renderSignal,new p.ClientHookDynamicError(t.route,e)));break;case"prerender-legacy":case"prerender-ppr":if(t.forceStatic)return;throw Object.defineProperty(new m.BailoutToCSRError(e),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});case"prerender":case"prerender-runtime":throw Object.defineProperty(new b.InvariantError(`\`${e}\` was called from a Server Component. Next.js should be preventing ${e} from being included in server components statically, but did not in this case.`),"__NEXT_ERROR_CODE",{value:"E795",enumerable:!1,configurable:!0});case"cache":case"unstable-cache":case"private-cache":throw Object.defineProperty(new b.InvariantError(`\`${e}\` was called inside a cache scope. Next.js should be preventing ${e} from being included in server components statically, but did not in this case.`),"__NEXT_ERROR_CODE",{value:"E745",enumerable:!1,configurable:!0});case"generate-static-params":throw Object.defineProperty(new b.InvariantError(`\`${e}\` was called in \`generateStaticParams\`. Next.js should be preventing ${e} from being included in server component files statically, but did not in this case.`),"__NEXT_ERROR_CODE",{value:"E1130",enumerable:!1,configurable:!0})}}let Y=/\n\s+at Suspense \(<anonymous>\)/,Z=RegExp(`\\n\\s+at Suspense \\(<anonymous>\\)(?:(?!\\n\\s+at (?:body|div|main|section|article|aside|header|footer|nav|form|p|span|h1|h2|h3|h4|h5|h6) \\(<anonymous>\\))[\\s\\S])*?\\n\\s+at ${f.ROOT_LAYOUT_BOUNDARY_NAME} \\([^\\n]*\\)`),J=RegExp(`\\n\\s+at ${f.METADATA_BOUNDARY_NAME}[\\n\\s]`),Q=RegExp(`\\n\\s+at ${f.VIEWPORT_BOUNDARY_NAME}[\\n\\s]`),ee=RegExp(`\\n\\s+at ${f.OUTLET_BOUNDARY_NAME}[\\n\\s]`),et=RegExp(`\\n\\s+at ${w.INSTANT_VALIDATION_BOUNDARY_NAME}[\\n\\s]`),er=RegExp(`\\n\\s+at ${w.INSTANT_SLOT_MARKER_PREFIX}(\\d+)${w.INSTANT_SLOT_MARKER_SUFFIX}[\\n\\s]`);function en(e,t){Z.test(e)&&(t.hasSuspenseAboveBody=!0)}function ea(e,t,r,n,a){let i=v(a);if(ee.test(r))return void en(r,n);if(J.test(r)){n.hasDynamicMetadata=!0;return}if(Q.test(r)){n.hasDynamicViewport=!0;return}if(Z.test(r)){n.hasAllowedDynamic=!0,n.hasSuspenseAboveBody=!0;return}if(Y.test(r)){n.hasAllowedDynamic=!0;return}else if(i)return void n.dynamicErrors.push(i);if((0,p.isClientHookDynamicError)(e))return void n.dynamicErrors.push(ed(e,r,null));let s=ed((0,y.createDynamicOrRuntimeBodyError)(t.route),r,null);n.dynamicErrors.push(s)}var ei=((a={})[a.Link=1]="Link",a[a.Runtime=2]="Runtime",a[a.Dynamic=3]="Dynamic",a);function es(e){return{hasDynamicMetadata:!1,hasAllowedClientDynamicAboveBoundary:!1,dynamicMetadata:null,hasDynamicViewport:!1,hasAllowedDynamic:!1,dynamicErrors:[],validationPreventingErrors:[],thrownErrorsOutsideBoundary:[],slotStacks:e}}function eo(e,t,r,n,a,i,s){let o=v(a);if(ee.test(r))return;let l=function(e,t){let{slotStacks:r}=t;if(r.length>1){let t=er.exec(e);if(t){let e=r[parseInt(t[1],10)+1];if(null!=e)return e}}return r[0]??null}(r,n);if(J.test(r)){n.dynamicMetadata=ed(1===i?(0,y.createLinkMetadataError)(t.route):2===i?(0,y.createRuntimeMetadataError)(t.route):(0,y.createDynamicMetadataError)(t.route),r,l);return}if(Q.test(r)){let e=ed(1===i?(0,y.createLinkViewportError)(t.route):2===i?(0,y.createRuntimeViewportError)(t.route):(0,y.createDynamicViewportError)(t.route),r,l);n.dynamicErrors.push(e);return}let c=et.exec(r);if(c){let e=Y.exec(r);if(e&&e.index<c.index){n.hasAllowedDynamic=!0;return}}else if((0,k.allRequiredBoundariesRendered)(s)){n.hasAllowedClientDynamicAboveBoundary=!0,n.hasAllowedDynamic=!0;return}else{let e=ed(Object.defineProperty(Error(`Route "${t.route}": Could not validate \`instant\` because a Client Component in a parent segment prevented the page from rendering.`),"__NEXT_ERROR_CODE",{value:"E1331",enumerable:!1,configurable:!0}),r,l);n.validationPreventingErrors.push(e);return}if(o){null!==l&&void 0===o.cause&&(o.cause=l()),n.dynamicErrors.push(o);return}if((0,p.isClientHookDynamicError)(e))return void n.dynamicErrors.push(ed(e,r,l));let u=ed(1===i?(0,y.createLinkBodyErrorInNavigation)(t.route):2===i?(0,y.createRuntimeBodyErrorInNavigation)(t.route):(0,y.createDynamicBodyErrorInNavigation)(t.route),r,l);n.dynamicErrors.push(u)}function el(e,t,r,n){let a=et.exec(n);if(a){let i=Y.exec(n);if(i&&i.index<a.index)return;let s=ed(Object.defineProperty(Error(`Route "${e.route}": Could not validate \`instant\` because an error prevented the target segment from rendering.`,{cause:r}),"__NEXT_ERROR_CODE",{value:"E1338",enumerable:!1,configurable:!0}),n,null);t.validationPreventingErrors.push(s)}else{let e=ed(Object.defineProperty(Error("An error occurred while attempting to validate instant UI. This error may be preventing the validation from completing.",{cause:r}),"__NEXT_ERROR_CODE",{value:"E1118",enumerable:!1,configurable:!0}),n,null);t.thrownErrorsOutsideBoundary.push(e)}}function ec(e,t,r,n,a){let i=v(a);if(ee.test(r))return void en(r,n);if(J.test(r)){n.dynamicMetadata=ed((0,y.createDynamicMetadataError)(t.route),r,null);return}if(Q.test(r)){let e=ed((0,y.createDynamicViewportError)(t.route),r,null);n.dynamicErrors.push(e);return}if(Z.test(r)){n.hasAllowedDynamic=!0,n.hasSuspenseAboveBody=!0;return}if(Y.test(r)){n.hasAllowedDynamic=!0;return}else if(i)return void n.dynamicErrors.push(i);if((0,p.isClientHookDynamicError)(e))return void n.dynamicErrors.push(ed(e,r,null));let s=ed((0,y.createDynamicBodyError)(t.route),r,null);n.dynamicErrors.push(s)}function eu(e,t,r,n,a){let i=v(a);if(ee.test(r))return void en(r,n);if(J.test(r)){n.dynamicMetadata=ed((0,y.createRuntimeMetadataError)(t.route),r,null);return}if(Q.test(r)){let e=ed((0,y.createRuntimeViewportError)(t.route),r,null);n.dynamicErrors.push(e);return}if(Z.test(r)){n.hasAllowedDynamic=!0,n.hasSuspenseAboveBody=!0;return}if(Y.test(r)){n.hasAllowedDynamic=!0;return}else if(i)return void n.dynamicErrors.push(i);if((0,p.isClientHookDynamicError)(e))return void n.dynamicErrors.push(ed(e,r,null));let s=ed((0,y.createRuntimeBodyError)(t.route),r,null);n.dynamicErrors.push(s)}function ed(e,t,r){return null!==r&&(e.cause=r()),e.stack=e.name+": "+e.message+t,e}var eh=((i={})[i.Full=0]="Full",i[i.Empty=1]="Empty",i[i.Errored=2]="Errored",i);function ep(e,t){console.error(t),(0,y.logBuildDebugHint)(e.route)}function ef(e,t){if(t.syncDynamicErrorWithStack)throw ep(e,t.syncDynamicErrorWithStack),new u.StaticGenBailoutError}function eg(e,t,r,n,a){if(ef(e,n),0===t&&!1===r.hasAllowedDynamic&&r.hasDynamicMetadata)throw console.error((0,y.createDynamicOrRuntimeMetadataError)(e.route).message),new u.StaticGenBailoutError;if(!a&&!r.hasSuspenseAboveBody&&0!==t){let n=r.dynamicErrors;if(n.length>0){for(let t=0;t<n.length;t++)ep(e,n[t]);throw new u.StaticGenBailoutError}if(r.hasDynamicViewport)throw console.error((0,y.createDynamicOrRuntimeViewportError)(e.route).message),new u.StaticGenBailoutError;if(1===t)throw console.error(`Route "${e.route}" did not produce a static shell and Next.js was unable to determine a reason. This is a bug in Next.js.`),new u.StaticGenBailoutError}}function em(e,t,r,n){if(0===t&&!1===r.hasAllowedDynamic&&0===r.dynamicErrors.length&&r.dynamicMetadata)return[r.dynamicMetadata];if(n||r.hasSuspenseAboveBody)return[];if(0!==t){let n=r.dynamicErrors;if(n.length>0)return n;if(1===t)return[Object.defineProperty(new b.InvariantError(`Route "${e.route}" did not produce a static shell and Next.js was unable to determine a reason.`),"__NEXT_ERROR_CODE",{value:"E936",enumerable:!1,configurable:!0})]}return[]}function ey(e,t,r,n,a,i){if(n){let{missingSampleErrors:e}=n;if(e.length>0)return e}let{validationPreventingErrors:s}=r;if(s.length>0)return s;if(0!==t){let n=r.dynamicErrors;if(n.length>0)return n;if(1===t&&!r.hasAllowedClientDynamicAboveBoundary&&(0,k.allRequiredBoundariesRendered)(a))return Object.defineProperty(new b.InvariantError(`Route "${e.route}" failed to render during instant validation and Next.js was unable to determine a reason.`),"__NEXT_ERROR_CODE",{value:"E1055",enumerable:!1,configurable:!0})}else{let e=r.dynamicErrors;if(e.length>0)return e;if(!1===r.hasAllowedDynamic&&r.dynamicMetadata)return[r.dynamicMetadata]}if(!(0,k.allRequiredBoundariesRendered)(a)){let{thrownErrorsOutsideBoundary:t}=r,n=r.slotStacks[0];if(0===t.length){let t=[];for(let[e,r]of a.requiredIds)if(!a.renderedIds.has(e))for(let e of r){let r=e.replace(/^\[project\][\\/]?/,"").replace(process.cwd()+"/","").replace(process.cwd()+"\\","");t.push(r)}return t.sort(),(0,_.createUnrenderedSegmentError)(e.route,t)}if(1===t.length){let r=`Route "${e.route}": Could not validate \`instant\` because the target segment was prevented from rendering, likely due to the following error.`,a=null!==n?n():Error();return a.name="Error",a.message=r,AggregateError([a,t[0]])}{let r=`Route "${e.route}": Could not validate \`instant\` because the target segment was prevented from rendering, likely due to one of the following errors.`,a=null!==n?n():Error();return a.name="Error",a.message=r,AggregateError([a,...t])}}return[]}},725478,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"unstable_rethrow",{enumerable:!0,get:function(){return function e(t){if((0,s.isNextRouterError)(t)||(0,i.isBailoutToCSRError)(t)||(0,l.isDynamicServerError)(t)||(0,o.isDynamicPostpone)(t)||(0,a.isPostpone)(t)||(0,n.isHangingPromiseRejectionError)(t)||(0,o.isPrerenderInterruptedError)(t))throw t;t instanceof Error&&"cause"in t&&e(t.cause)}}});let n=e.r(756725),a=e.r(24380),i=e.r(107703),s=e.r(555134),o=e.r(258200),l=e.r(243727);("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},66389,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={ReadonlyURLSearchParams:function(){return i.ReadonlyURLSearchParams},RedirectType:function(){return h},forbidden:function(){return l.forbidden},notFound:function(){return o.notFound},permanentRedirect:function(){return s.permanentRedirect},redirect:function(){return s.redirect},unauthorized:function(){return c.unauthorized},unstable_isUnrecognizedActionError:function(){return d},unstable_rethrow:function(){return u.unstable_rethrow}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let i=e.r(461067),s=e.r(543212),o=e.r(944760),l=e.r(825345),c=e.r(452616),u=e.r(725478);function d(){throw Object.defineProperty(Error("`unstable_isUnrecognizedActionError` can only be used on the client."),"__NEXT_ERROR_CODE",{value:"E776",enumerable:!1,configurable:!0})}let h={push:"push",replace:"replace"};("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},825184,e=>{"use strict";e.i(66389),e.i(938281),e.s([],825184)}];
|
|
284
284
|
|
|
285
285
|
//# sourceMappingURL=_19kea1l._.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[169945,e=>{"use strict";var t=e.i(902157),a=e.i(912714),n=e.i(81111),r=e.i(175936),i=e.i(629668),s=e.i(786025),o=e.i(91264);let l=/\.(html?|svg)$/i,u=(0,o.serverRoute)(async(e,{params:o})=>{let u=(0,r.decodePath)((await o).path),d=await (0,s.insideWorkspace)(u);if(!d)return new Response("Outside the workspace",{status:403});let c=await (0,a.stat)(d).catch(()=>null);if(!c?.isFile())return new Response("Not found",{status:404});let p=`W/"${c.size.toString(16)}-${c.mtimeMs.toString(16)}"`,h=new Headers({"content-type":(0,i.mimeOf)(u),"last-modified":c.mtime.toUTCString(),etag:p,"accept-ranges":"bytes","cache-control":"no-cache"});l.test(u)&&h.set("content-security-policy","sandbox allow-scripts allow-forms allow-popups allow-popups-to-escape-sandbox allow-modals allow-downloads; frame-ancestors 'self'");let R=Date.parse(e.headers.get("if-modified-since")??"");if(e.headers.get("if-none-match")===p||!e.headers.get("if-none-match")&&Number.isFinite(R)&&c.mtime.getTime()<=R+999)return new Response(null,{status:304,headers:h});if(0===c.size)return h.set("content-length","0"),new Response(null,{status:200,headers:h});let m=function(e,t){let a=e?.match(/^bytes=(\d*)-(\d*)$/);if(!a)return null;let[,n,r]=a;if(!n&&!r)return"bad";let i=n?Number(n):Math.max(0,t-Number(r)),s=n&&r?Math.min(Number(r),t-1):t-1;return i>s||i>=t?"bad":[i,s]}(e.headers.get("range"),c.size);if("bad"===m)return h.set("content-range",`bytes */${c.size}`),new Response(null,{status:416,headers:h});let[f,g]=m??[0,c.size-1];return h.set("content-length",String(g-f+1)),m&&h.set("content-range",`bytes ${f}-${g}/${c.size}`),new Response(n.Readable.toWeb((0,t.createReadStream)(d,{start:f,end:g})),{status:m?206:200,headers:h})});e.s(["GET",0,u])},917349,e=>{"use strict";var t=e.i(747909),a=e.i(174017),n=e.i(996250),r=e.i(759756),i=e.i(561916),s=e.i(174677),o=e.i(869741),l=e.i(316795),u=e.i(487718),d=e.i(995169),c=e.i(47587),p=e.i(666012),h=e.i(570101),R=e.i(626937),m=e.i(10372),f=e.i(193695);e.i(52474);var g=e.i(600220);let v=new t.AppRouteRouteModule({definition:{kind:a.RouteKind.APP_ROUTE,page:"/api/file/[...path]/route",pathname:"/api/file/[...path]",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/app/api/file/[...path]/route.ts",nextConfigOutput:"standalone",userland:()=>e.r(169945),...{}}),{workAsyncStorage:w,workUnitAsyncStorage:E,serverHooks:C}=v;async function b(e,t,n){n.requestMeta&&(0,r.setRequestMeta)(e,n.requestMeta),v.isDev&&(0,r.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let w="/api/file/[...path]/route";w=w.replace(/\/index$/,"")||"/";let E=await v.prepare(e,t,{srcPage:w,multiZoneDraftMode:!1});if(!E)return t.statusCode=400,t.end("Bad Request"),null==n.waitUntil||n.waitUntil.call(n,Promise.resolve()),null;let{buildId:C,deploymentId:b,params:x,nextConfig:y,parsedUrl:T,isDraftMode:A,prerenderManifest:S,routerServerContext:N,isOnDemandRevalidate:P,revalidateOnlyGenerated:O,resolvedPathname:_,clientReferenceManifest:H,serverActionsManifest:q}=E,M=(0,o.normalizeAppPath)(w),I=!!(S.dynamicRoutes[M]||S.routes[_]),U=async()=>((null==N?void 0:N.render404)?await N.render404(e,t,T,!1):t.end("This page could not be found"),null);if(I&&!A){let e=!!S.routes[_],t=S.dynamicRoutes[M];if(t&&!1===t.fallback&&!e){if(y.adapterPath)return await U();throw new f.NoFallbackError}}let k=null;!I||v.isDev||A||(k="/index"===(k=_)?"/":k);let $=!0===v.isDev||!I,D=I&&!$;q&&H&&(0,s.setManifestsSingleton)({page:w,clientReferenceManifest:H,serverActionsManifest:q});let F=e.method||"GET",K=(0,i.getTracer)(),j=K.getActiveScopeSpan(),z=!!(null==N?void 0:N.isWrappedByNextServer),L=!!(0,r.getRequestMeta)(e,"minimalMode"),B=(0,r.getRequestMeta)(e,"incrementalCache")||await v.getIncrementalCache(e,y,S,L);null==B||B.resetRequestCache(),globalThis.__incrementalCache=B;let G={params:x,previewProps:S.preview,renderOpts:{experimental:{authInterrupts:!!y.experimental.authInterrupts,useCacheTimeout:y.experimental.useCacheTimeout},cacheComponents:!!y.cacheComponents,validationLevel:y.experimental.instantInsights.validationLevel,supportsDynamicResponse:$,incrementalCache:B,hmrRefreshHash:(0,r.getRequestMeta)(e,"hmrRefreshHash"),cacheLifeProfiles:y.cacheLife,staticPageGenerationTimeout:y.staticPageGenerationTimeout,waitUntil:n.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,n,r)=>v.onRequestError(e,t,n,r,N)},sharedContext:{buildId:C,deploymentId:b}},W=new l.NodeNextRequest(e),V=new l.NodeNextResponse(t),X=u.NextRequestAdapter.fromNodeNextRequest(W,(0,u.signalFromNodeResponse)(t)),Z=async({previousCacheEntry:a})=>{try{if(!L&&P&&O&&!a)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let r=await v.handle(X,G);e.fetchMetrics=G.renderOpts.fetchMetrics;let i=G.renderOpts.pendingWaitUntil;i&&n.waitUntil&&(n.waitUntil(i),i=void 0);let s=G.renderOpts.collectedTags;if(!I)return await (0,p.sendResponse)(W,V,r,i),null;{let e=await r.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(r.headers);s&&(t[m.NEXT_CACHE_TAGS_HEADER]=s),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==G.renderOpts.collectedRevalidate&&!(G.renderOpts.collectedRevalidate>=m.INFINITE_CACHE)&&G.renderOpts.collectedRevalidate,n=void 0===G.renderOpts.collectedExpire||G.renderOpts.collectedExpire>=m.INFINITE_CACHE?!1!==a&&a>0?y.expireTime:void 0:G.renderOpts.collectedExpire;return{value:{kind:g.CachedRouteKind.APP_ROUTE,status:r.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:n}}}}catch(t){throw(null==a?void 0:a.isStale)&&await v.onRequestError(e,t,{routerKind:"App Router",routePath:w,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:P})},!1,N),t}},J=async(r,s)=>{try{var o,l;let r=await v.handleResponse({req:e,nextConfig:y,cacheKey:k,routeKind:a.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:S,isRoutePPREnabled:!1,isOnDemandRevalidate:P,revalidateOnlyGenerated:O,responseGenerator:Z,waitUntil:n.waitUntil,isMinimalMode:L});if(!I)return;if((null==r||null==(o=r.value)?void 0:o.kind)!==g.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==r||null==(l=r.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});L||t.setHeader("x-nextjs-cache",P?"REVALIDATED":r.isMiss?"MISS":r.isStale?"STALE":"HIT"),A&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let i=(0,h.fromNodeOutgoingHttpHeaders)(r.value.headers);L&&I||i.delete(m.NEXT_CACHE_TAGS_HEADER),!r.cacheControl||t.getHeader("Cache-Control")||i.get("Cache-Control")||i.set("Cache-Control",(0,R.getCacheControlHeader)(r.cacheControl)),await (0,p.sendResponse)(W,V,new Response(r.value.body,{headers:i,status:r.value.status||200}));return}catch(t){if(t instanceof f.NoFallbackError||await v.onRequestError(e,t,{routerKind:"App Router",routePath:M,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:P})},!1,N),I)throw t;await (0,p.sendResponse)(W,V,new Response(null,{status:500}));return}finally{(()=>{if(!r)return;let e=t.statusCode;r.setAttributes({"http.status_code":e,"next.rsc":!1}),e&&e>=500&&(r.setStatus({code:i.SpanStatusCode.ERROR}),r.setAttribute("error.type",e.toString()));let a=K.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 n=a.get("next.route")||M,o=`${F} ${n}`;r.setAttributes({"next.route":n,"http.route":n,"next.span_name":o}),r.updateName(o),s&&s!==r&&(s.setAttribute("http.route",n),s.updateName(o))})()}};if(z&&j)await J(j,void 0);else{let t=K.getActiveScopeSpan();await K.withPropagatedContext(e.headers,()=>K.trace(d.BaseServerSpan.handleRequest,{spanName:`${F} ${w}`,kind:i.SpanKind.SERVER,attributes:{"http.method":F,"http.target":e.url}},e=>J(e,t)),void 0,!z)}}e.s(["handler",0,b,"patchFetch",0,function(){return(0,n.patchFetch)({workAsyncStorage:w,workUnitAsyncStorage:E})},"routeModule",0,v,"serverHooks",0,C,"workAsyncStorage",0,w,"workUnitAsyncStorage",0,E])}];
|
|
1
|
+
module.exports=[169945,e=>{"use strict";var t=e.i(902157),a=e.i(912714),n=e.i(81111),r=e.i(175936),i=e.i(629668),s=e.i(786025),o=e.i(91264);let l=/\.(html?|svg)$/i,u=(0,o.serverRoute)(async(e,{params:o})=>{let u=(0,r.decodePath)((await o).path),d=await (0,s.insideWorkspace)(u);if(!d)return new Response("Outside the workspace",{status:403});let c=await (0,a.stat)(d).catch(()=>null);if(!c?.isFile())return new Response("Not found",{status:404});let p=`W/"${c.size.toString(16)}-${c.mtimeMs.toString(16)}"`,h=new Headers({"content-type":(0,i.mimeOf)(u),"x-content-type-options":"nosniff","last-modified":c.mtime.toUTCString(),etag:p,"accept-ranges":"bytes","cache-control":"no-cache"});l.test(u)&&h.set("content-security-policy","sandbox allow-scripts allow-forms allow-popups allow-popups-to-escape-sandbox allow-modals allow-downloads; frame-ancestors 'self'");let R=Date.parse(e.headers.get("if-modified-since")??"");if(e.headers.get("if-none-match")===p||!e.headers.get("if-none-match")&&Number.isFinite(R)&&c.mtime.getTime()<=R+999)return new Response(null,{status:304,headers:h});if(0===c.size)return h.set("content-length","0"),new Response(null,{status:200,headers:h});let m=function(e,t){let a=e?.match(/^bytes=(\d*)-(\d*)$/);if(!a)return null;let[,n,r]=a;if(!n&&!r)return"bad";let i=n?Number(n):Math.max(0,t-Number(r)),s=n&&r?Math.min(Number(r),t-1):t-1;return i>s||i>=t?"bad":[i,s]}(e.headers.get("range"),c.size);if("bad"===m)return h.set("content-range",`bytes */${c.size}`),new Response(null,{status:416,headers:h});let[f,g]=m??[0,c.size-1];return h.set("content-length",String(g-f+1)),m&&h.set("content-range",`bytes ${f}-${g}/${c.size}`),new Response(n.Readable.toWeb((0,t.createReadStream)(d,{start:f,end:g})),{status:m?206:200,headers:h})});e.s(["GET",0,u])},917349,e=>{"use strict";var t=e.i(747909),a=e.i(174017),n=e.i(996250),r=e.i(759756),i=e.i(561916),s=e.i(174677),o=e.i(869741),l=e.i(316795),u=e.i(487718),d=e.i(995169),c=e.i(47587),p=e.i(666012),h=e.i(570101),R=e.i(626937),m=e.i(10372),f=e.i(193695);e.i(52474);var g=e.i(600220);let v=new t.AppRouteRouteModule({definition:{kind:a.RouteKind.APP_ROUTE,page:"/api/file/[...path]/route",pathname:"/api/file/[...path]",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/app/api/file/[...path]/route.ts",nextConfigOutput:"standalone",userland:()=>e.r(169945),...{}}),{workAsyncStorage:w,workUnitAsyncStorage:E,serverHooks:C}=v;async function b(e,t,n){n.requestMeta&&(0,r.setRequestMeta)(e,n.requestMeta),v.isDev&&(0,r.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let w="/api/file/[...path]/route";w=w.replace(/\/index$/,"")||"/";let E=await v.prepare(e,t,{srcPage:w,multiZoneDraftMode:!1});if(!E)return t.statusCode=400,t.end("Bad Request"),null==n.waitUntil||n.waitUntil.call(n,Promise.resolve()),null;let{buildId:C,deploymentId:b,params:x,nextConfig:y,parsedUrl:T,isDraftMode:A,prerenderManifest:S,routerServerContext:N,isOnDemandRevalidate:P,revalidateOnlyGenerated:O,resolvedPathname:_,clientReferenceManifest:H,serverActionsManifest:q}=E,M=(0,o.normalizeAppPath)(w),I=!!(S.dynamicRoutes[M]||S.routes[_]),U=async()=>((null==N?void 0:N.render404)?await N.render404(e,t,T,!1):t.end("This page could not be found"),null);if(I&&!A){let e=!!S.routes[_],t=S.dynamicRoutes[M];if(t&&!1===t.fallback&&!e){if(y.adapterPath)return await U();throw new f.NoFallbackError}}let k=null;!I||v.isDev||A||(k="/index"===(k=_)?"/":k);let $=!0===v.isDev||!I,D=I&&!$;q&&H&&(0,s.setManifestsSingleton)({page:w,clientReferenceManifest:H,serverActionsManifest:q});let F=e.method||"GET",K=(0,i.getTracer)(),j=K.getActiveScopeSpan(),z=!!(null==N?void 0:N.isWrappedByNextServer),L=!!(0,r.getRequestMeta)(e,"minimalMode"),B=(0,r.getRequestMeta)(e,"incrementalCache")||await v.getIncrementalCache(e,y,S,L);null==B||B.resetRequestCache(),globalThis.__incrementalCache=B;let G={params:x,previewProps:S.preview,renderOpts:{experimental:{authInterrupts:!!y.experimental.authInterrupts,useCacheTimeout:y.experimental.useCacheTimeout},cacheComponents:!!y.cacheComponents,validationLevel:y.experimental.instantInsights.validationLevel,supportsDynamicResponse:$,incrementalCache:B,hmrRefreshHash:(0,r.getRequestMeta)(e,"hmrRefreshHash"),cacheLifeProfiles:y.cacheLife,staticPageGenerationTimeout:y.staticPageGenerationTimeout,waitUntil:n.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,n,r)=>v.onRequestError(e,t,n,r,N)},sharedContext:{buildId:C,deploymentId:b}},W=new l.NodeNextRequest(e),V=new l.NodeNextResponse(t),X=u.NextRequestAdapter.fromNodeNextRequest(W,(0,u.signalFromNodeResponse)(t)),Z=async({previousCacheEntry:a})=>{try{if(!L&&P&&O&&!a)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let r=await v.handle(X,G);e.fetchMetrics=G.renderOpts.fetchMetrics;let i=G.renderOpts.pendingWaitUntil;i&&n.waitUntil&&(n.waitUntil(i),i=void 0);let s=G.renderOpts.collectedTags;if(!I)return await (0,p.sendResponse)(W,V,r,i),null;{let e=await r.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(r.headers);s&&(t[m.NEXT_CACHE_TAGS_HEADER]=s),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==G.renderOpts.collectedRevalidate&&!(G.renderOpts.collectedRevalidate>=m.INFINITE_CACHE)&&G.renderOpts.collectedRevalidate,n=void 0===G.renderOpts.collectedExpire||G.renderOpts.collectedExpire>=m.INFINITE_CACHE?!1!==a&&a>0?y.expireTime:void 0:G.renderOpts.collectedExpire;return{value:{kind:g.CachedRouteKind.APP_ROUTE,status:r.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:n}}}}catch(t){throw(null==a?void 0:a.isStale)&&await v.onRequestError(e,t,{routerKind:"App Router",routePath:w,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:P})},!1,N),t}},J=async(r,s)=>{try{var o,l;let r=await v.handleResponse({req:e,nextConfig:y,cacheKey:k,routeKind:a.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:S,isRoutePPREnabled:!1,isOnDemandRevalidate:P,revalidateOnlyGenerated:O,responseGenerator:Z,waitUntil:n.waitUntil,isMinimalMode:L});if(!I)return;if((null==r||null==(o=r.value)?void 0:o.kind)!==g.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==r||null==(l=r.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});L||t.setHeader("x-nextjs-cache",P?"REVALIDATED":r.isMiss?"MISS":r.isStale?"STALE":"HIT"),A&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let i=(0,h.fromNodeOutgoingHttpHeaders)(r.value.headers);L&&I||i.delete(m.NEXT_CACHE_TAGS_HEADER),!r.cacheControl||t.getHeader("Cache-Control")||i.get("Cache-Control")||i.set("Cache-Control",(0,R.getCacheControlHeader)(r.cacheControl)),await (0,p.sendResponse)(W,V,new Response(r.value.body,{headers:i,status:r.value.status||200}));return}catch(t){if(t instanceof f.NoFallbackError||await v.onRequestError(e,t,{routerKind:"App Router",routePath:M,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:P})},!1,N),I)throw t;await (0,p.sendResponse)(W,V,new Response(null,{status:500}));return}finally{(()=>{if(!r)return;let e=t.statusCode;r.setAttributes({"http.status_code":e,"next.rsc":!1}),e&&e>=500&&(r.setStatus({code:i.SpanStatusCode.ERROR}),r.setAttribute("error.type",e.toString()));let a=K.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 n=a.get("next.route")||M,o=`${F} ${n}`;r.setAttributes({"next.route":n,"http.route":n,"next.span_name":o}),r.updateName(o),s&&s!==r&&(s.setAttribute("http.route",n),s.updateName(o))})()}};if(z&&j)await J(j,void 0);else{let t=K.getActiveScopeSpan();await K.withPropagatedContext(e.headers,()=>K.trace(d.BaseServerSpan.handleRequest,{spanName:`${F} ${w}`,kind:i.SpanKind.SERVER,attributes:{"http.method":F,"http.target":e.url}},e=>J(e,t)),void 0,!z)}}e.s(["handler",0,b,"patchFetch",0,function(){return(0,n.patchFetch)({workAsyncStorage:w,workUnitAsyncStorage:E})},"routeModule",0,v,"serverHooks",0,C,"workAsyncStorage",0,w,"workUnitAsyncStorage",0,E])}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=_1dtm9bs._.js.map
|