thursday-agent 0.9.0 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (320) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +0 -1
  3. package/.next/build-manifest.json +3 -3
  4. package/.next/prerender-manifest.json +3 -3
  5. package/.next/routes-manifest.json +0 -6
  6. package/.next/server/app/_global-error/page.js.nft.json +1 -1
  7. package/.next/server/app/_global-error.html +1 -1
  8. package/.next/server/app/_global-error.rsc +1 -1
  9. package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  10. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  11. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  12. package/.next/server/app/_not-found/page.js.nft.json +1 -1
  13. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  14. package/.next/server/app/_not-found.html +1 -1
  15. package/.next/server/app/_not-found.rsc +2 -2
  16. package/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  17. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  18. package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  19. package/.next/server/app/api/artifact/route.js.nft.json +1 -1
  20. package/.next/server/app/api/bot/keep-working/route.js.nft.json +1 -1
  21. package/.next/server/app/api/bot/memory/files/route.js.nft.json +1 -1
  22. package/.next/server/app/api/bot/memory/route.js.nft.json +1 -1
  23. package/.next/server/app/api/bot/route.js.nft.json +1 -1
  24. package/.next/server/app/api/bot/thread/[id]/route.js.nft.json +1 -1
  25. package/.next/server/app/api/bot/thread/route.js.nft.json +1 -1
  26. package/.next/server/app/api/config/route.js.nft.json +1 -1
  27. package/.next/server/app/api/events/route.js.nft.json +1 -1
  28. package/.next/server/app/api/favicon/[host]/route.js.nft.json +1 -1
  29. package/.next/server/app/api/file/[...path]/route.js.nft.json +1 -1
  30. package/.next/server/app/api/llm-model/catalog/route.js.nft.json +1 -1
  31. package/.next/server/app/api/llm-model/credits/route.js.nft.json +1 -1
  32. package/.next/server/app/api/llm-model/route.js.nft.json +1 -1
  33. package/.next/server/app/api/llm-model/subscription/route.js.nft.json +1 -1
  34. package/.next/server/app/api/mcp/[name]/route.js.nft.json +1 -1
  35. package/.next/server/app/api/mcp/oauth/callback/route.js.nft.json +1 -1
  36. package/.next/server/app/api/mcp/route.js.nft.json +1 -1
  37. package/.next/server/app/api/mcp/tools/route.js.nft.json +1 -1
  38. package/.next/server/app/api/memory/edit/route.js.nft.json +1 -1
  39. package/.next/server/app/api/memory/route.js.nft.json +1 -1
  40. package/.next/server/app/api/reach/route.js +13 -13
  41. package/.next/server/app/api/reach/route.js.nft.json +1 -1
  42. package/.next/server/app/api/routine/route.js.nft.json +1 -1
  43. package/.next/server/app/api/signins/route.js +1 -1
  44. package/.next/server/app/api/signins/route.js.nft.json +1 -1
  45. package/.next/server/app/api/skills/[source]/[name]/route.js.nft.json +1 -1
  46. package/.next/server/app/api/skills/route.js.nft.json +1 -1
  47. package/.next/server/app/api/thursday/call/route.js.nft.json +1 -1
  48. package/.next/server/app/api/thursday/skills/route.js.nft.json +1 -1
  49. package/.next/server/app/api/thursday/text/route.js.nft.json +1 -1
  50. package/.next/server/app/api/thursday/tool-call/route.js +14 -15
  51. package/.next/server/app/api/thursday/tool-call/route.js.nft.json +1 -1
  52. package/.next/server/app/api/workspace/files/route.js.nft.json +1 -1
  53. package/.next/server/app/api/workspace/route.js.nft.json +1 -1
  54. package/.next/server/app/artifact/[...path]/page/server-reference-manifest.json +1 -1
  55. package/.next/server/app/artifact/[...path]/page.js.nft.json +1 -1
  56. package/.next/server/app/artifact/[...path]/page_client-reference-manifest.js +1 -1
  57. package/.next/server/app/favicon.ico/route.js.nft.json +1 -1
  58. package/.next/server/app/manifest.webmanifest/route.js.nft.json +1 -1
  59. package/.next/server/app/page/server-reference-manifest.json +56 -56
  60. package/.next/server/app/page.js +4 -4
  61. package/.next/server/app/page.js.nft.json +1 -1
  62. package/.next/server/app/page_client-reference-manifest.js +1 -1
  63. package/.next/server/app-paths-manifest.json +0 -1
  64. package/.next/server/chunks/[root-of-the-server]__014ydvq._.js +2 -2
  65. package/.next/server/chunks/[root-of-the-server]__0209ah4._.js +7 -5
  66. package/.next/server/chunks/[root-of-the-server]__04r4h-2._.js +4 -2
  67. package/.next/server/chunks/[root-of-the-server]__0542v_d._.js +3 -0
  68. package/.next/server/chunks/[root-of-the-server]__0gewdg9._.js +2 -2
  69. package/.next/server/chunks/[root-of-the-server]__0mrk2it._.js +1 -1
  70. package/.next/server/chunks/[root-of-the-server]__1-swlkw._.js +2 -2
  71. package/.next/server/chunks/[root-of-the-server]__12iddfq._.js +1 -1
  72. package/.next/server/chunks/[root-of-the-server]__1ai5lme._.js +3 -3
  73. package/.next/server/chunks/[root-of-the-server]__1cjxw0-._.js +2 -2
  74. package/.next/server/chunks/{[root-of-the-server]__1fy2g82._.js → [root-of-the-server]__1k3j52n._.js} +1 -1
  75. package/.next/server/chunks/[root-of-the-server]__1kyjt5m._.js +3 -3
  76. package/.next/server/chunks/[root-of-the-server]__1ygplx1._.js +1 -1
  77. package/.next/server/chunks/_05v8k21._.js +3 -1
  78. package/.next/server/chunks/_0awtznl._.js +1 -1
  79. package/.next/server/chunks/_0na2fj1._.js +1 -1
  80. package/.next/server/chunks/_0x-ej3f._.js +17 -17
  81. package/.next/server/chunks/_12-amdu._.js +2 -2
  82. package/.next/server/chunks/_15740dw._.js +60 -0
  83. package/.next/server/chunks/_1dc_d1q._.js +3 -3
  84. package/.next/server/chunks/_1i350l5._.js +3 -1
  85. package/.next/server/chunks/_1jc5g4p._.js +2 -2
  86. package/.next/server/chunks/_1jn-aep._.js +4 -4
  87. package/.next/server/chunks/_1m88lkh._.js +11 -11
  88. package/.next/server/chunks/_1ogqovh._.js +4 -4
  89. package/.next/server/chunks/_1uuucy-._.js +1 -1
  90. package/.next/server/chunks/_1zxp-p6._.js +1 -1
  91. package/.next/server/chunks/features_0rfvely._.js +5 -3
  92. package/.next/server/chunks/ssr/{[root-of-the-server]__1se25x0._.js → [root-of-the-server]__0hpp3nw._.js} +29 -13
  93. package/.next/server/chunks/ssr/[root-of-the-server]__0m7u9j-._.js +3 -0
  94. package/.next/server/chunks/ssr/[root-of-the-server]__0tzekbl._.js +24 -60
  95. package/.next/server/chunks/ssr/[root-of-the-server]__1cz2rz5._.js +3 -0
  96. package/.next/server/chunks/ssr/{[root-of-the-server]__0tvavy9._.js → [root-of-the-server]__1iwyp1e._.js} +1 -1
  97. package/.next/server/chunks/ssr/[root-of-the-server]__1w9hqq8._.js +1 -1
  98. package/.next/server/chunks/ssr/_097-ljd._.js +1 -1
  99. package/.next/server/chunks/ssr/{_1tmu8z-._.js → _0btzccu._.js} +2 -2
  100. package/.next/server/chunks/ssr/_0fqhhwi._.js +1 -1
  101. package/.next/server/chunks/ssr/_0hjzb5o._.js +3 -0
  102. package/.next/server/chunks/ssr/_0ld9_qq._.js +1 -1
  103. package/.next/server/chunks/ssr/{_0urj3mc._.js → _0ouzu9f._.js} +2 -2
  104. package/.next/server/chunks/ssr/{_1-zyvdb._.js → _0u7ko71._.js} +2 -2
  105. package/.next/server/chunks/ssr/{_0ltz2q5._.js → _0wd_o8-._.js} +2 -2
  106. package/.next/server/chunks/ssr/_0ya0cb0._.js +3 -0
  107. package/.next/server/chunks/ssr/_10yyqtk._.js +67 -0
  108. package/.next/server/chunks/ssr/{_1uy0xom._.js → _12eyown._.js} +3 -3
  109. package/.next/server/chunks/ssr/_12mijol._.js +11 -11
  110. package/.next/server/chunks/ssr/_132qkfz._.js +1 -1
  111. package/.next/server/chunks/ssr/_184327j._.js +1 -1
  112. package/.next/server/chunks/ssr/{_1z74dmq._.js → _19ps4p3._.js} +7 -7
  113. package/.next/server/chunks/ssr/{_1flbs77._.js → _1bhy4yg._.js} +2 -2
  114. package/.next/server/chunks/ssr/_1d423aj._.js +7 -5
  115. package/.next/server/chunks/ssr/{_1a-nuxx._.js → _1kd843u._.js} +2 -2
  116. package/.next/server/chunks/ssr/{_0ital-2._.js → _1kq2ye_._.js} +2 -2
  117. package/.next/server/chunks/ssr/_1mqn9mc._.js +1 -1
  118. package/.next/server/chunks/ssr/_1neoj22._.js +1 -1
  119. package/.next/server/chunks/ssr/_1p8xorg._.js +3 -0
  120. package/.next/server/chunks/ssr/{_1x-kojb._.js → _1q683w8._.js} +3 -3
  121. package/.next/server/chunks/ssr/_1tawxu2._.js +3 -0
  122. package/.next/server/chunks/ssr/{_0scf7xy._.js → _1w2oba6._.js} +2 -2
  123. package/.next/server/chunks/ssr/_1xoch6f._.js +1 -1
  124. package/.next/server/chunks/ssr/{_0kjj5ts._.js → _1ybo1hd._.js} +3 -3
  125. package/.next/server/chunks/ssr/features_bot_0s11m4r._.js +3 -0
  126. package/.next/server/chunks/ssr/features_connectors_components_mcp-setting_tsx_0jmbgvp._.js +1 -1
  127. package/.next/server/chunks/ssr/features_memory_components_memory-setting_tsx_0oa43sw._.js +1 -1
  128. package/.next/server/chunks/ssr/features_routine_components_routine-setting_tsx_055fknz._.js +1 -1
  129. package/.next/server/chunks/ssr/features_workspace_00jz2hu._.js +1 -1
  130. package/.next/server/chunks/ssr/{node_modules_1af3w91._.js → node_modules_00pocul._.js} +1 -1
  131. package/.next/server/chunks/ssr/{node_modules_0th357h._.js → node_modules_02zt4az._.js} +1 -1
  132. package/.next/server/chunks/ssr/{node_modules_0jljel9._.js → node_modules_05ojmcl._.js} +1 -1
  133. package/.next/server/chunks/ssr/{node_modules_0wnlddw._.js → node_modules_06i6bli._.js} +1 -1
  134. package/.next/server/chunks/ssr/{node_modules_06bb4q8._.js → node_modules_09dj429._.js} +1 -1
  135. package/.next/server/chunks/ssr/{node_modules_068ws5v._.js → node_modules_0auzgvx._.js} +1 -1
  136. package/.next/server/chunks/ssr/{node_modules_1ogczzz._.js → node_modules_0evjwh1._.js} +1 -1
  137. package/.next/server/chunks/ssr/{node_modules_13kwejm._.js → node_modules_0gmdur8._.js} +1 -1
  138. package/.next/server/chunks/ssr/{node_modules_1s-gb-1._.js → node_modules_0j3te-1._.js} +1 -1
  139. package/.next/server/chunks/ssr/{node_modules_1bucjlk._.js → node_modules_0rbaymq._.js} +1 -1
  140. package/.next/server/chunks/ssr/{node_modules_1wbkzl9._.js → node_modules_0tf8_1e._.js} +1 -1
  141. package/.next/server/chunks/ssr/{node_modules_12et8d5._.js → node_modules_0yqy-0b._.js} +1 -1
  142. package/.next/server/chunks/ssr/{node_modules_1lkix61._.js → node_modules_1-53ebx._.js} +1 -1
  143. package/.next/server/chunks/ssr/{node_modules_03d0rfz._.js → node_modules_1-y9aho._.js} +1 -1
  144. package/.next/server/chunks/ssr/{node_modules_0x630an._.js → node_modules_11bltzp._.js} +1 -1
  145. package/.next/server/chunks/ssr/{node_modules_0uyh_vb._.js → node_modules_18jn2qo._.js} +1 -1
  146. package/.next/server/chunks/ssr/{node_modules_0dzm4um._.js → node_modules_1_te3bu._.js} +1 -1
  147. package/.next/server/chunks/ssr/{node_modules_07rs_p2._.js → node_modules_1c0pg3k._.js} +1 -1
  148. package/.next/server/chunks/ssr/{node_modules_0sgy-dc._.js → node_modules_1en2jx5._.js} +1 -1
  149. package/.next/server/chunks/ssr/{node_modules_0ubdtk-._.js → node_modules_1p-c8cr._.js} +1 -1
  150. package/.next/server/chunks/ssr/{node_modules_1z1lrbk._.js → node_modules_1qe-oxg._.js} +1 -1
  151. package/.next/server/chunks/ssr/{node_modules_04_sbbc._.js → node_modules_1rjt833._.js} +1 -1
  152. package/.next/server/chunks/ssr/{node_modules_0yvz9e0._.js → node_modules_1tzw5sn._.js} +1 -1
  153. package/.next/server/chunks/ssr/{node_modules_1uwg-gz._.js → node_modules_1x6uwvn._.js} +1 -1
  154. package/.next/server/chunks/ssr/{node_modules_0t_ez6-._.js → node_modules_1zqddke._.js} +1 -1
  155. package/.next/server/chunks/ssr/{node_modules_05ybmta._.js → node_modules_211zgim._.js} +1 -1
  156. package/.next/server/chunks/ssr/{node_modules_@mermaid-js_parser_dist_chunks_mermaid-parser_core_0r443fh._.js → node_modules_@mermaid-js_parser_dist_chunks_mermaid-parser_core_0y51bqj._.js} +1 -1
  157. package/.next/server/chunks/ssr/{node_modules_@mermaid-js_parser_dist_chunks_mermaid-parser_core_10wnlbk._.js → node_modules_@mermaid-js_parser_dist_chunks_mermaid-parser_core_1sc114e._.js} +1 -1
  158. package/.next/server/middleware-build-manifest.js +3 -3
  159. package/.next/server/pages/404.html +1 -1
  160. package/.next/server/pages/500.html +1 -1
  161. package/.next/server/server-reference-manifest.js +1 -1
  162. package/.next/server/server-reference-manifest.json +57 -57
  163. package/.next/static/chunks/{13ixzheqw7o-w.js → 03-724sj0nk_z.js} +2 -2
  164. package/.next/static/chunks/03bhu4mk8en2q.js +1 -0
  165. package/.next/static/chunks/{3h2e-xv1zxh_f.js → 04imzjhvzw65d.js} +2 -2
  166. package/.next/static/chunks/{27tvv1i-smrck.js → 0gljzv9fz1g7d.js} +1 -1
  167. package/.next/static/chunks/{37j27b3e1gt7r.js → 0h0lythv1ql93.js} +1 -1
  168. package/.next/static/chunks/{2o4dndk0d68do.js → 0hzbj7f48cmx0.js} +1 -1
  169. package/.next/static/chunks/0lwunwbl7u7pt.js +1 -0
  170. package/.next/static/chunks/{0u9ae9k_2g7k3.js → 0r6nwxg4dv83t.js} +1 -1
  171. package/.next/static/chunks/0rn9nbg6aif9f.js +17 -0
  172. package/.next/static/chunks/{3bbzsitgiltnt.js → 0x_w4shtvrrfg.js} +1 -1
  173. package/.next/static/chunks/{2sdwbfs1x5skp.js → 0ympuji_ufypd.js} +1 -1
  174. package/.next/static/chunks/{3t9huugh-5_ps.js → 0zmrz4zfzm4dt.js} +1 -1
  175. package/.next/static/chunks/{0qmd8n52hp-6v.js → 11tlxkr7a_rpc.js} +1 -1
  176. package/.next/static/chunks/{2c64drdevdla3.js → 12scesro428m7.js} +2 -2
  177. package/.next/static/chunks/16s2fx3890_jd.js +65 -0
  178. package/.next/static/chunks/{0oyz95sujd2c7.js → 1qzfgplyo18tc.js} +1 -1
  179. package/.next/static/chunks/{04e-e--5lk26x.js → 1r4zajz14jp9-.js} +1 -1
  180. package/.next/static/chunks/1s6m4cmbn7htf.js +1 -0
  181. package/.next/static/chunks/1wl9t1-3i-q8p.css +1 -0
  182. package/.next/static/chunks/2-asot3p1j3yg.js +1 -0
  183. package/.next/static/chunks/{0u3ktztrzu1fa.js → 2-jn4xscbm-i2.js} +1 -1
  184. package/.next/static/chunks/22h9gvclqtx_2.js +1 -0
  185. package/.next/static/chunks/{337g9g_ux2gj-.js → 26-eblxwnykck.js} +1 -1
  186. package/.next/static/chunks/{43q9cgbuw8krx.js → 2kzwhbuobpkw3.js} +2 -2
  187. package/.next/static/chunks/2m6jd3586ijb-.js +1 -0
  188. package/.next/static/chunks/{0_awn8tucznxc.js → 304q9p54tcgm1.js} +1 -1
  189. package/.next/static/chunks/{1u5i-jti87jbo.js → 35wdx3wt7cg4a.js} +1 -1
  190. package/.next/static/chunks/37unh9460im7v.js +18 -0
  191. package/.next/static/chunks/{01xjer0i_e5z5.js → 39gj5vxz1zpm_.js} +1 -1
  192. package/.next/static/chunks/{427qsc6kahxyo.js → 39vrqy1r_00jc.js} +1 -1
  193. package/.next/static/chunks/{245hb85nsy6j4.js → 3dipmu0mptqum.js} +1 -1
  194. package/.next/static/chunks/3gki-squw28yu.js +1 -0
  195. package/.next/static/chunks/{3obf9n3cxj99k.js → 3jvldk2wvwbge.js} +1 -1
  196. package/.next/static/chunks/{38301ji-85i30.js → 3nnzdl_te20hv.js} +1 -1
  197. package/.next/static/chunks/{2m267diam_vib.js → 3tz4dr0_8pq1-.js} +1 -1
  198. package/.next/static/chunks/{2gocl3dq0_h1s.js → 3x6pggb-2kyrk.js} +1 -1
  199. package/.next/static/chunks/{025bmrgeukcb2.js → 4440mws9jz3mt.js} +1 -1
  200. package/README.md +4 -0
  201. package/app/api/thursday/tool-call/route.ts +1 -15
  202. package/components/ui/radio-group.tsx +2 -2
  203. package/docs/images/demo-still.jpg +0 -0
  204. package/docs/live-calls.md +19 -11
  205. package/features/ai/prompts/live.prompt.ts +51 -26
  206. package/features/ai/prompts/prompt-helper.ts +1 -9
  207. package/features/ai/prompts/thursday.prompt.ts +8 -2
  208. package/features/bot/bot.run.ts +9 -3
  209. package/features/bot/bot.seed.ts +35 -91
  210. package/features/bot/components/bot-room.tsx +0 -6
  211. package/features/bot/components/bot-setting.tsx +4 -4
  212. package/features/bot/components/room-pill.tsx +4 -2
  213. package/features/bot/seed-bots.ts +2 -2
  214. package/features/intro/components/intro.tsx +2 -3
  215. package/features/reach/reach.ts +2 -2
  216. package/features/routine/components/routine-setting.tsx +1 -1
  217. package/features/signins/signins.query.ts +66 -1
  218. package/features/thursday/components/side-captions.tsx +31 -8
  219. package/features/thursday/components/thursday-setting.tsx +5 -5
  220. package/features/thursday/components/thursday.tsx +97 -39
  221. package/features/thursday/components/write-line.tsx +28 -17
  222. package/features/thursday/thursday.action.ts +4 -20
  223. package/features/thursday/thursday.schema.ts +0 -9
  224. package/features/thursday/thursday.store.ts +11 -15
  225. package/features/thursday/thursday.text.ts +10 -8
  226. package/features/thursday/tool-line.ts +17 -6
  227. package/features/thursday/use-call-ring.ts +1 -5
  228. package/features/thursday/use-text-call.ts +37 -21
  229. package/features/thursday/use-thursday.ts +14 -44
  230. package/features/workspace/workspace.ts +4 -2
  231. package/guide/bots.md +13 -3
  232. package/guide/calls.md +7 -5
  233. package/knip.json +1 -0
  234. package/lib/live/live.session.ts +0 -39
  235. package/package.json +1 -1
  236. package/scripts/live-session.test.mts +19 -26
  237. package/seed-skills/analyst/README.md +18 -0
  238. package/seed-skills/analyst/data-report/SKILL.md +60 -0
  239. package/seed-skills/analyst/data-report/references/brief.md +31 -0
  240. package/seed-skills/analyst/data-report/references/company.md +41 -0
  241. package/seed-skills/analyst/data-report/references/comparison.md +42 -0
  242. package/seed-skills/analyst/data-report/references/decision.md +28 -0
  243. package/seed-skills/analyst/data-report/references/market-size.md +49 -0
  244. package/seed-skills/analyst/data-report/references/price-check.md +33 -0
  245. package/seed-skills/analyst/data-report/references/sources.md +51 -0
  246. package/seed-skills/analyst/data-report/references/trend.md +39 -0
  247. package/seed-skills/analyst/data-report/scripts/fetch.mjs +521 -0
  248. package/seed-skills/insta/instagram/SKILL.md +36 -0
  249. package/seed-skills/insta/instagram/references/dm.md +49 -0
  250. package/seed-skills/insta/instagram/references/post.md +74 -0
  251. package/seed-skills/insta/instagram/scripts/compose.mjs +333 -0
  252. package/seed-skills/insta/instagram/scripts/inbox.mjs +163 -0
  253. package/seed-skills/insta/instagram/scripts/lib.mjs +33 -0
  254. package/seed-skills/insta/instagram/scripts/media.mjs +104 -0
  255. package/seed-skills/insta/instagram/scripts/profile.mjs +143 -0
  256. package/seed-skills/insta/instagram/scripts/read.mjs +244 -0
  257. package/seed-skills/insta/instagram/scripts/search.mjs +137 -0
  258. package/seed-skills/insta/instagram/scripts/selectors.mjs +56 -0
  259. package/seed-skills/insta/instagram/scripts/sheet.mjs +43 -0
  260. package/seed-skills/insta/instagram/templates/carousel.html +62 -0
  261. package/seed-skills/marketer/README.md +6 -4
  262. package/seed-skills/marketer/copywriting/SKILL.md +1 -1
  263. package/seed-skills/marketer/emails/SKILL.md +1 -1
  264. package/seed-skills/marketer/launch/SKILL.md +1 -1
  265. package/seed-skills/marketer/product-marketing/SKILL.md +5 -5
  266. package/seed-skills/marketer/seo-audit/SKILL.md +1 -1
  267. package/seed-skills/marketer/social/SKILL.md +1 -1
  268. package/seed-skills/tutor/picture-book/SKILL.md +16 -0
  269. package/seed-skills/tutor/picture-book/book/book.css +181 -0
  270. package/seed-skills/tutor/picture-book/book/book.html +33 -0
  271. package/seed-skills/tutor/picture-book/book/book.js +60 -0
  272. package/seed-skills/tutor/picture-book/references/picture-book.md +104 -0
  273. package/seed-skills/tutor/picture-book/scripts/book-video.mjs +177 -0
  274. package/seed-skills/tutor/picture-book/scripts/book.mjs +98 -0
  275. package/skills/browser/SKILL.md +13 -4
  276. package/skills/browser/references/scripts.md +55 -0
  277. package/skills/browser/scripts/image-size.mjs +30 -0
  278. package/skills/browser/scripts/render.mjs +126 -0
  279. package/skills/browser/scripts/session.mjs +105 -0
  280. package/skills/browser/scripts/sheet.mjs +97 -0
  281. package/skills/browser/scripts/webimage.mjs +105 -0
  282. package/skills/interactive-page/SKILL.md +4 -3
  283. package/skills/interactive-page/scripts/chart.mjs +679 -0
  284. package/skills/interactive-page/scripts/page.mjs +1 -0
  285. package/.next/server/app/api/probe/route/app-paths-manifest.json +0 -3
  286. package/.next/server/app/api/probe/route/build-manifest.json +0 -12
  287. package/.next/server/app/api/probe/route/server-reference-manifest.json +0 -4
  288. package/.next/server/app/api/probe/route.js +0 -10
  289. package/.next/server/app/api/probe/route.js.map +0 -5
  290. package/.next/server/app/api/probe/route.js.nft.json +0 -1
  291. package/.next/server/app/api/probe/route_client-reference-manifest.js +0 -3
  292. package/.next/server/chunks/[root-of-the-server]__012s2o8._.js +0 -3
  293. package/.next/server/chunks/[root-of-the-server]__0z0hc1f._.js +0 -4
  294. package/.next/server/chunks/[root-of-the-server]__1v7-zke._.js +0 -5
  295. package/.next/server/chunks/_0whlpyi._.js +0 -4
  296. package/.next/server/chunks/_next-internal_server_app_api_probe_route_actions_0cqd30j.js +0 -3
  297. package/.next/server/chunks/ssr/[root-of-the-server]__0oo-wlv._.js +0 -103
  298. package/.next/server/chunks/ssr/[root-of-the-server]__0zuns7e._.js +0 -3
  299. package/.next/server/chunks/ssr/_070nv1_._.js +0 -3
  300. package/.next/server/chunks/ssr/_0dshsh4._.js +0 -3
  301. package/.next/server/chunks/ssr/_0l_mcfz._.js +0 -3
  302. package/.next/server/chunks/ssr/_0u5xv6g._.js +0 -3
  303. package/.next/server/chunks/ssr/_157yfrk._.js +0 -3
  304. package/.next/server/chunks/ssr/features_bot_1nr94ks._.js +0 -3
  305. package/.next/static/chunks/06nt9tatr-dug.js +0 -1
  306. package/.next/static/chunks/0ge-hx0ed83a1.js +0 -1
  307. package/.next/static/chunks/0pda_vf-abwvx.js +0 -1
  308. package/.next/static/chunks/0rowp9rx3qbxu.js +0 -18
  309. package/.next/static/chunks/1grkt5gr8pbg1.js +0 -17
  310. package/.next/static/chunks/1yugpvvi8qrbu.js +0 -101
  311. package/.next/static/chunks/27lkanxvtdn09.js +0 -1
  312. package/.next/static/chunks/3fec-aeteddr-.js +0 -1
  313. package/.next/static/chunks/3go3hwp1z2_h2.css +0 -1
  314. package/.next/static/chunks/3h2bun3hcggg8.js +0 -1
  315. package/.next/static/chunks/3j1y335o95mj7.js +0 -1
  316. package/lib/probe.server.ts +0 -17
  317. package/lib/probe.ts +0 -55
  318. /package/.next/static/{u8kJqShUAa49vY7BxAWsw → En1vUPazxcYjPjnnahcN5}/_buildManifest.js +0 -0
  319. /package/.next/static/{u8kJqShUAa49vY7BxAWsw → En1vUPazxcYjPjnnahcN5}/_clientMiddlewareManifest.js +0 -0
  320. /package/.next/static/{u8kJqShUAa49vY7BxAWsw → En1vUPazxcYjPjnnahcN5}/_ssgManifest.js +0 -0
@@ -1,3 +1,3 @@
1
1
  globalThis.__RSC_MANIFEST = globalThis.__RSC_MANIFEST || {};
2
- globalThis.__RSC_MANIFEST["/page"] = {"moduleLoading":{"prefix":""},"clientModules":{"[project]/node_modules/next/dist/esm/client/components/layout-router.js":{"id":339756,"name":"*","chunks":["/_next/static/chunks/0vlgzqo9ka90v.js","/_next/static/chunks/0c_g4-11sha-1.js","/_next/static/chunks/25huyu8ndoo-w.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":837457,"name":"*","chunks":["/_next/static/chunks/0vlgzqo9ka90v.js","/_next/static/chunks/0c_g4-11sha-1.js","/_next/static/chunks/25huyu8ndoo-w.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/client-page.js":{"id":347257,"name":"*","chunks":["/_next/static/chunks/0vlgzqo9ka90v.js","/_next/static/chunks/0c_g4-11sha-1.js","/_next/static/chunks/25huyu8ndoo-w.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/client-segment.js":{"id":92825,"name":"*","chunks":["/_next/static/chunks/0vlgzqo9ka90v.js","/_next/static/chunks/0c_g4-11sha-1.js","/_next/static/chunks/25huyu8ndoo-w.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":768017,"name":"*","chunks":["/_next/static/chunks/0vlgzqo9ka90v.js","/_next/static/chunks/0c_g4-11sha-1.js","/_next/static/chunks/25huyu8ndoo-w.js"],"async":false},"[project]/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":897367,"name":"*","chunks":["/_next/static/chunks/0vlgzqo9ka90v.js","/_next/static/chunks/0c_g4-11sha-1.js","/_next/static/chunks/25huyu8ndoo-w.js"],"async":false},"[project]/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":27201,"name":"*","chunks":["/_next/static/chunks/0vlgzqo9ka90v.js","/_next/static/chunks/0c_g4-11sha-1.js","/_next/static/chunks/25huyu8ndoo-w.js"],"async":false},"[project]/node_modules/next/dist/client/script.js":{"id":479520,"name":"*","chunks":["/_next/static/chunks/0vlgzqo9ka90v.js","/_next/static/chunks/0c_g4-11sha-1.js","/_next/static/chunks/25huyu8ndoo-w.js"],"async":false},"[project]/app/api/events/app-event.client.ts":{"id":511769,"name":"*","chunks":["/_next/static/chunks/0vlgzqo9ka90v.js","/_next/static/chunks/0c_g4-11sha-1.js","/_next/static/chunks/25huyu8ndoo-w.js"],"async":false},"[project]/components/ui/theme-sync.tsx":{"id":881283,"name":"*","chunks":["/_next/static/chunks/0vlgzqo9ka90v.js","/_next/static/chunks/0c_g4-11sha-1.js","/_next/static/chunks/25huyu8ndoo-w.js"],"async":false},"[project]/components/ui/toast.tsx":{"id":6799,"name":"*","chunks":["/_next/static/chunks/0vlgzqo9ka90v.js","/_next/static/chunks/0c_g4-11sha-1.js","/_next/static/chunks/25huyu8ndoo-w.js"],"async":false},"[project]/node_modules/next/dist/client/components/builtin/global-error.js":{"id":168027,"name":"*","chunks":["/_next/static/chunks/0vlgzqo9ka90v.js","/_next/static/chunks/0c_g4-11sha-1.js","/_next/static/chunks/25huyu8ndoo-w.js"],"async":false},"[project]/features/intro/components/intro.tsx":{"id":302707,"name":"*","chunks":["/_next/static/chunks/0vlgzqo9ka90v.js","/_next/static/chunks/0c_g4-11sha-1.js","/_next/static/chunks/25huyu8ndoo-w.js","/_next/static/chunks/0qmd8n52hp-6v.js","/_next/static/chunks/2yp4u469_4i3l.js","/_next/static/chunks/3obf9n3cxj99k.js","/_next/static/chunks/06nt9tatr-dug.js","/_next/static/chunks/3t9huugh-5_ps.js","/_next/static/chunks/0pda_vf-abwvx.js","/_next/static/chunks/3fec-aeteddr-.js","/_next/static/chunks/33lyk6a4x_hg8.js","/_next/static/chunks/0ge-hx0ed83a1.js","/_next/static/chunks/1i5pmx0b-xvcb.js","/_next/static/chunks/0dcfqbly-089u.js","/_next/static/chunks/43q9cgbuw8krx.js","/_next/static/chunks/0sqe8zks75fot.js","/_next/static/chunks/0rowp9rx3qbxu.js","/_next/static/chunks/1yugpvvi8qrbu.js","/_next/static/chunks/3sfcixohjbvu5.js","/_next/static/chunks/3zgnmu3cnahk0.js","/_next/static/chunks/2re701zfx-nrj.js","/_next/static/chunks/0ev4hyghq0mbb.js","/_next/static/chunks/1grkt5gr8pbg1.js","/_next/static/chunks/3l6bwn061vy22.js","/_next/static/chunks/2ndw4w4u2x51r.js","/_next/static/chunks/37j27b3e1gt7r.js","/_next/static/chunks/23nfu5g4vl_m7.js","/_next/static/chunks/13ixzheqw7o-w.js","/_next/static/chunks/1rowt7kr1tu9y.js","/_next/static/chunks/1g9yyvculuxj2.js","/_next/static/chunks/0n6rdrjpwcyya.js","/_next/static/chunks/1d9i8nlx-zy9a.js","/_next/static/chunks/2p2pqpub-48me.js"],"async":true},"[project]/features/reach/components/reach-ask.tsx":{"id":756958,"name":"*","chunks":["/_next/static/chunks/0vlgzqo9ka90v.js","/_next/static/chunks/0c_g4-11sha-1.js","/_next/static/chunks/25huyu8ndoo-w.js","/_next/static/chunks/0qmd8n52hp-6v.js","/_next/static/chunks/2yp4u469_4i3l.js","/_next/static/chunks/3obf9n3cxj99k.js","/_next/static/chunks/06nt9tatr-dug.js","/_next/static/chunks/3t9huugh-5_ps.js","/_next/static/chunks/0pda_vf-abwvx.js","/_next/static/chunks/3fec-aeteddr-.js","/_next/static/chunks/33lyk6a4x_hg8.js","/_next/static/chunks/0ge-hx0ed83a1.js","/_next/static/chunks/1i5pmx0b-xvcb.js","/_next/static/chunks/0dcfqbly-089u.js","/_next/static/chunks/43q9cgbuw8krx.js","/_next/static/chunks/0sqe8zks75fot.js","/_next/static/chunks/0rowp9rx3qbxu.js","/_next/static/chunks/1yugpvvi8qrbu.js","/_next/static/chunks/3sfcixohjbvu5.js","/_next/static/chunks/3zgnmu3cnahk0.js","/_next/static/chunks/2re701zfx-nrj.js","/_next/static/chunks/0ev4hyghq0mbb.js","/_next/static/chunks/1grkt5gr8pbg1.js","/_next/static/chunks/3l6bwn061vy22.js","/_next/static/chunks/2ndw4w4u2x51r.js","/_next/static/chunks/37j27b3e1gt7r.js","/_next/static/chunks/23nfu5g4vl_m7.js","/_next/static/chunks/13ixzheqw7o-w.js","/_next/static/chunks/1rowt7kr1tu9y.js","/_next/static/chunks/1g9yyvculuxj2.js","/_next/static/chunks/0n6rdrjpwcyya.js","/_next/static/chunks/1d9i8nlx-zy9a.js","/_next/static/chunks/2p2pqpub-48me.js"],"async":false},"[project]/features/thursday/components/boot.tsx":{"id":252284,"name":"*","chunks":["/_next/static/chunks/0vlgzqo9ka90v.js","/_next/static/chunks/0c_g4-11sha-1.js","/_next/static/chunks/25huyu8ndoo-w.js","/_next/static/chunks/0qmd8n52hp-6v.js","/_next/static/chunks/2yp4u469_4i3l.js","/_next/static/chunks/3obf9n3cxj99k.js","/_next/static/chunks/06nt9tatr-dug.js","/_next/static/chunks/3t9huugh-5_ps.js","/_next/static/chunks/0pda_vf-abwvx.js","/_next/static/chunks/3fec-aeteddr-.js","/_next/static/chunks/33lyk6a4x_hg8.js","/_next/static/chunks/0ge-hx0ed83a1.js","/_next/static/chunks/1i5pmx0b-xvcb.js","/_next/static/chunks/0dcfqbly-089u.js","/_next/static/chunks/43q9cgbuw8krx.js","/_next/static/chunks/0sqe8zks75fot.js","/_next/static/chunks/0rowp9rx3qbxu.js","/_next/static/chunks/1yugpvvi8qrbu.js","/_next/static/chunks/3sfcixohjbvu5.js","/_next/static/chunks/3zgnmu3cnahk0.js","/_next/static/chunks/2re701zfx-nrj.js","/_next/static/chunks/0ev4hyghq0mbb.js","/_next/static/chunks/1grkt5gr8pbg1.js","/_next/static/chunks/3l6bwn061vy22.js","/_next/static/chunks/2ndw4w4u2x51r.js","/_next/static/chunks/37j27b3e1gt7r.js","/_next/static/chunks/23nfu5g4vl_m7.js","/_next/static/chunks/13ixzheqw7o-w.js","/_next/static/chunks/1rowt7kr1tu9y.js","/_next/static/chunks/1g9yyvculuxj2.js","/_next/static/chunks/0n6rdrjpwcyya.js","/_next/static/chunks/1d9i8nlx-zy9a.js","/_next/static/chunks/2p2pqpub-48me.js"],"async":false},"[project]/features/thursday/components/thursday.tsx":{"id":692888,"name":"*","chunks":["/_next/static/chunks/0vlgzqo9ka90v.js","/_next/static/chunks/0c_g4-11sha-1.js","/_next/static/chunks/25huyu8ndoo-w.js","/_next/static/chunks/0qmd8n52hp-6v.js","/_next/static/chunks/2yp4u469_4i3l.js","/_next/static/chunks/3obf9n3cxj99k.js","/_next/static/chunks/06nt9tatr-dug.js","/_next/static/chunks/3t9huugh-5_ps.js","/_next/static/chunks/0pda_vf-abwvx.js","/_next/static/chunks/3fec-aeteddr-.js","/_next/static/chunks/33lyk6a4x_hg8.js","/_next/static/chunks/0ge-hx0ed83a1.js","/_next/static/chunks/1i5pmx0b-xvcb.js","/_next/static/chunks/0dcfqbly-089u.js","/_next/static/chunks/43q9cgbuw8krx.js","/_next/static/chunks/0sqe8zks75fot.js","/_next/static/chunks/0rowp9rx3qbxu.js","/_next/static/chunks/1yugpvvi8qrbu.js","/_next/static/chunks/3sfcixohjbvu5.js","/_next/static/chunks/3zgnmu3cnahk0.js","/_next/static/chunks/2re701zfx-nrj.js","/_next/static/chunks/0ev4hyghq0mbb.js","/_next/static/chunks/1grkt5gr8pbg1.js","/_next/static/chunks/3l6bwn061vy22.js","/_next/static/chunks/2ndw4w4u2x51r.js","/_next/static/chunks/37j27b3e1gt7r.js","/_next/static/chunks/23nfu5g4vl_m7.js","/_next/static/chunks/13ixzheqw7o-w.js","/_next/static/chunks/1rowt7kr1tu9y.js","/_next/static/chunks/1g9yyvculuxj2.js","/_next/static/chunks/0n6rdrjpwcyya.js","/_next/static/chunks/1d9i8nlx-zy9a.js","/_next/static/chunks/2p2pqpub-48me.js"],"async":true}},"ssrModuleMapping":{"339756":{"*":{"id":802420,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1756892._.js","server/chunks/ssr/node_modules_clsx_dist_clsx_mjs_0q8hrxx._.js","server/chunks/ssr/node_modules_next_dist_1v8aef8._.js","server/chunks/ssr/_0evkpto._.js"],"async":false}},"837457":{"*":{"id":324017,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1756892._.js","server/chunks/ssr/node_modules_clsx_dist_clsx_mjs_0q8hrxx._.js","server/chunks/ssr/node_modules_next_dist_1v8aef8._.js","server/chunks/ssr/_0evkpto._.js"],"async":false}},"347257":{"*":{"id":877682,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1756892._.js","server/chunks/ssr/node_modules_clsx_dist_clsx_mjs_0q8hrxx._.js","server/chunks/ssr/node_modules_next_dist_1v8aef8._.js","server/chunks/ssr/_0evkpto._.js"],"async":false}},"92825":{"*":{"id":697296,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1756892._.js","server/chunks/ssr/node_modules_clsx_dist_clsx_mjs_0q8hrxx._.js","server/chunks/ssr/node_modules_next_dist_1v8aef8._.js","server/chunks/ssr/_0evkpto._.js"],"async":false}},"768017":{"*":{"id":861660,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1756892._.js","server/chunks/ssr/node_modules_clsx_dist_clsx_mjs_0q8hrxx._.js","server/chunks/ssr/node_modules_next_dist_1v8aef8._.js","server/chunks/ssr/_0evkpto._.js"],"async":false}},"897367":{"*":{"id":990574,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1756892._.js","server/chunks/ssr/node_modules_clsx_dist_clsx_mjs_0q8hrxx._.js","server/chunks/ssr/node_modules_next_dist_1v8aef8._.js","server/chunks/ssr/_0evkpto._.js"],"async":false}},"27201":{"*":{"id":660704,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1756892._.js","server/chunks/ssr/node_modules_clsx_dist_clsx_mjs_0q8hrxx._.js","server/chunks/ssr/node_modules_next_dist_1v8aef8._.js","server/chunks/ssr/_0evkpto._.js"],"async":false}},"479520":{"*":{"id":496665,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1756892._.js","server/chunks/ssr/node_modules_clsx_dist_clsx_mjs_0q8hrxx._.js","server/chunks/ssr/node_modules_next_dist_1v8aef8._.js","server/chunks/ssr/_0evkpto._.js"],"async":false}},"511769":{"*":{"id":986368,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1756892._.js","server/chunks/ssr/node_modules_clsx_dist_clsx_mjs_0q8hrxx._.js","server/chunks/ssr/node_modules_next_dist_1v8aef8._.js","server/chunks/ssr/_0evkpto._.js"],"async":false}},"881283":{"*":{"id":198538,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1756892._.js","server/chunks/ssr/node_modules_clsx_dist_clsx_mjs_0q8hrxx._.js","server/chunks/ssr/node_modules_next_dist_1v8aef8._.js","server/chunks/ssr/_0evkpto._.js"],"async":false}},"6799":{"*":{"id":864037,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1756892._.js","server/chunks/ssr/node_modules_clsx_dist_clsx_mjs_0q8hrxx._.js","server/chunks/ssr/node_modules_next_dist_1v8aef8._.js","server/chunks/ssr/_0evkpto._.js"],"async":false}},"168027":{"*":{"id":340622,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1756892._.js","server/chunks/ssr/node_modules_clsx_dist_clsx_mjs_0q8hrxx._.js","server/chunks/ssr/node_modules_next_dist_1v8aef8._.js","server/chunks/ssr/_0evkpto._.js","server/chunks/ssr/node_modules_next_dist_client_components_1bi5-b2._.js"],"async":false}},"302707":{"*":{"id":102928,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1756892._.js","server/chunks/ssr/node_modules_clsx_dist_clsx_mjs_0q8hrxx._.js","server/chunks/ssr/node_modules_next_dist_1v8aef8._.js","server/chunks/ssr/_0evkpto._.js","server/chunks/ssr/_1tmu8z-._.js","server/chunks/ssr/_070nv1_._.js","server/chunks/ssr/_0ital-2._.js","server/chunks/ssr/node_modules_14gkv49._.js","server/chunks/ssr/_1alxym6._.js","server/chunks/ssr/features_bot_1s_-2vj._.js","server/chunks/ssr/node_modules_roughjs_bundled_rough_esm_15c9pcx.js","server/chunks/ssr/_0u5xv6g._.js","server/chunks/ssr/node_modules_1c0h-_d._.js","server/chunks/ssr/components_ui_tabs_tsx_0ej40b4._.js","server/chunks/ssr/_1mqn9mc._.js","server/chunks/ssr/_1x-kojb._.js","server/chunks/ssr/node_modules_@base-ui_react_0buz1-j._.js","server/chunks/ssr/node_modules_1vbiuwu._.js","server/chunks/ssr/_123y-ah._.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-OSK3NFVY_mjs_0x5leh1._.js","server/chunks/ssr/_184327j._.js","server/chunks/ssr/_157yfrk._.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-2E4U76K2_mjs_20f4_iz._.js","server/chunks/ssr/_1z74dmq._.js","server/chunks/ssr/_0ld9_qq._.js","server/chunks/ssr/node_modules_katex_dist_katex_mjs_1oxucd3._.js","server/chunks/ssr/node_modules_0vi73_6._.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-4HAMMTFA_mjs_1cfif1_._.js","server/chunks/ssr/node_modules_1bmqmso._.js","server/chunks/ssr/[root-of-the-server]__1c2a2og._.js","server/chunks/ssr/[root-of-the-server]__0l93lgv._.js","server/chunks/ssr/_15zqt-t._.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-DU6HZSFF_mjs_20hsuk9._.js","server/chunks/ssr/node_modules_0794bsw._.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-LNGE3PJU_mjs_15ujw6f._.js","server/chunks/ssr/_1uy0xom._.js","server/chunks/ssr/_1xoch6f._.js","server/chunks/ssr/node_modules_0rb-_la._.js","server/chunks/ssr/_0dshsh4._.js","server/chunks/ssr/_0urj3mc._.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-75Z2AOVW_mjs_051rute._.js","server/chunks/ssr/_05pl_u8._.js","server/chunks/ssr/[root-of-the-server]__0oo-wlv._.js"],"async":true}},"756958":{"*":{"id":484267,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1756892._.js","server/chunks/ssr/node_modules_clsx_dist_clsx_mjs_0q8hrxx._.js","server/chunks/ssr/node_modules_next_dist_1v8aef8._.js","server/chunks/ssr/_0evkpto._.js","server/chunks/ssr/_1tmu8z-._.js","server/chunks/ssr/_070nv1_._.js","server/chunks/ssr/_0ital-2._.js","server/chunks/ssr/node_modules_14gkv49._.js","server/chunks/ssr/_1alxym6._.js","server/chunks/ssr/features_bot_1s_-2vj._.js","server/chunks/ssr/node_modules_roughjs_bundled_rough_esm_15c9pcx.js","server/chunks/ssr/_0u5xv6g._.js","server/chunks/ssr/node_modules_1c0h-_d._.js","server/chunks/ssr/components_ui_tabs_tsx_0ej40b4._.js","server/chunks/ssr/_1mqn9mc._.js","server/chunks/ssr/_1x-kojb._.js","server/chunks/ssr/node_modules_@base-ui_react_0buz1-j._.js","server/chunks/ssr/node_modules_1vbiuwu._.js","server/chunks/ssr/_123y-ah._.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-OSK3NFVY_mjs_0x5leh1._.js","server/chunks/ssr/_184327j._.js","server/chunks/ssr/_157yfrk._.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-2E4U76K2_mjs_20f4_iz._.js","server/chunks/ssr/_1z74dmq._.js","server/chunks/ssr/_0ld9_qq._.js","server/chunks/ssr/node_modules_katex_dist_katex_mjs_1oxucd3._.js","server/chunks/ssr/node_modules_0vi73_6._.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-4HAMMTFA_mjs_1cfif1_._.js","server/chunks/ssr/node_modules_1bmqmso._.js","server/chunks/ssr/[root-of-the-server]__1c2a2og._.js","server/chunks/ssr/[root-of-the-server]__0l93lgv._.js","server/chunks/ssr/_15zqt-t._.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-DU6HZSFF_mjs_20hsuk9._.js","server/chunks/ssr/node_modules_0794bsw._.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-LNGE3PJU_mjs_15ujw6f._.js","server/chunks/ssr/_1uy0xom._.js","server/chunks/ssr/_1xoch6f._.js","server/chunks/ssr/node_modules_0rb-_la._.js","server/chunks/ssr/_0dshsh4._.js","server/chunks/ssr/_0urj3mc._.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-75Z2AOVW_mjs_051rute._.js","server/chunks/ssr/_05pl_u8._.js","server/chunks/ssr/[root-of-the-server]__0oo-wlv._.js"],"async":false}},"252284":{"*":{"id":72962,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1756892._.js","server/chunks/ssr/node_modules_clsx_dist_clsx_mjs_0q8hrxx._.js","server/chunks/ssr/node_modules_next_dist_1v8aef8._.js","server/chunks/ssr/_0evkpto._.js","server/chunks/ssr/_1tmu8z-._.js","server/chunks/ssr/_070nv1_._.js","server/chunks/ssr/_0ital-2._.js","server/chunks/ssr/node_modules_14gkv49._.js","server/chunks/ssr/_1alxym6._.js","server/chunks/ssr/features_bot_1s_-2vj._.js","server/chunks/ssr/node_modules_roughjs_bundled_rough_esm_15c9pcx.js","server/chunks/ssr/_0u5xv6g._.js","server/chunks/ssr/node_modules_1c0h-_d._.js","server/chunks/ssr/components_ui_tabs_tsx_0ej40b4._.js","server/chunks/ssr/_1mqn9mc._.js","server/chunks/ssr/_1x-kojb._.js","server/chunks/ssr/node_modules_@base-ui_react_0buz1-j._.js","server/chunks/ssr/node_modules_1vbiuwu._.js","server/chunks/ssr/_123y-ah._.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-OSK3NFVY_mjs_0x5leh1._.js","server/chunks/ssr/_184327j._.js","server/chunks/ssr/_157yfrk._.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-2E4U76K2_mjs_20f4_iz._.js","server/chunks/ssr/_1z74dmq._.js","server/chunks/ssr/_0ld9_qq._.js","server/chunks/ssr/node_modules_katex_dist_katex_mjs_1oxucd3._.js","server/chunks/ssr/node_modules_0vi73_6._.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-4HAMMTFA_mjs_1cfif1_._.js","server/chunks/ssr/node_modules_1bmqmso._.js","server/chunks/ssr/[root-of-the-server]__1c2a2og._.js","server/chunks/ssr/[root-of-the-server]__0l93lgv._.js","server/chunks/ssr/_15zqt-t._.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-DU6HZSFF_mjs_20hsuk9._.js","server/chunks/ssr/node_modules_0794bsw._.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-LNGE3PJU_mjs_15ujw6f._.js","server/chunks/ssr/_1uy0xom._.js","server/chunks/ssr/_1xoch6f._.js","server/chunks/ssr/node_modules_0rb-_la._.js","server/chunks/ssr/_0dshsh4._.js","server/chunks/ssr/_0urj3mc._.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-75Z2AOVW_mjs_051rute._.js","server/chunks/ssr/_05pl_u8._.js","server/chunks/ssr/[root-of-the-server]__0oo-wlv._.js"],"async":false}},"692888":{"*":{"id":137079,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1756892._.js","server/chunks/ssr/node_modules_clsx_dist_clsx_mjs_0q8hrxx._.js","server/chunks/ssr/node_modules_next_dist_1v8aef8._.js","server/chunks/ssr/_0evkpto._.js","server/chunks/ssr/_1tmu8z-._.js","server/chunks/ssr/_070nv1_._.js","server/chunks/ssr/_0ital-2._.js","server/chunks/ssr/node_modules_14gkv49._.js","server/chunks/ssr/_1alxym6._.js","server/chunks/ssr/features_bot_1s_-2vj._.js","server/chunks/ssr/node_modules_roughjs_bundled_rough_esm_15c9pcx.js","server/chunks/ssr/_0u5xv6g._.js","server/chunks/ssr/node_modules_1c0h-_d._.js","server/chunks/ssr/components_ui_tabs_tsx_0ej40b4._.js","server/chunks/ssr/_1mqn9mc._.js","server/chunks/ssr/_1x-kojb._.js","server/chunks/ssr/node_modules_@base-ui_react_0buz1-j._.js","server/chunks/ssr/node_modules_1vbiuwu._.js","server/chunks/ssr/_123y-ah._.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-OSK3NFVY_mjs_0x5leh1._.js","server/chunks/ssr/_184327j._.js","server/chunks/ssr/_157yfrk._.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-2E4U76K2_mjs_20f4_iz._.js","server/chunks/ssr/_1z74dmq._.js","server/chunks/ssr/_0ld9_qq._.js","server/chunks/ssr/node_modules_katex_dist_katex_mjs_1oxucd3._.js","server/chunks/ssr/node_modules_0vi73_6._.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-4HAMMTFA_mjs_1cfif1_._.js","server/chunks/ssr/node_modules_1bmqmso._.js","server/chunks/ssr/[root-of-the-server]__1c2a2og._.js","server/chunks/ssr/[root-of-the-server]__0l93lgv._.js","server/chunks/ssr/_15zqt-t._.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-DU6HZSFF_mjs_20hsuk9._.js","server/chunks/ssr/node_modules_0794bsw._.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-LNGE3PJU_mjs_15ujw6f._.js","server/chunks/ssr/_1uy0xom._.js","server/chunks/ssr/_1xoch6f._.js","server/chunks/ssr/node_modules_0rb-_la._.js","server/chunks/ssr/_0dshsh4._.js","server/chunks/ssr/_0urj3mc._.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-75Z2AOVW_mjs_051rute._.js","server/chunks/ssr/_05pl_u8._.js","server/chunks/ssr/[root-of-the-server]__0oo-wlv._.js"],"async":true}}},"edgeSSRModuleMapping":{},"rscModuleMapping":{"339756":{"*":{"id":926768,"name":"*","chunks":[],"async":false}},"837457":{"*":{"id":517910,"name":"*","chunks":[],"async":false}},"347257":{"*":{"id":292977,"name":"*","chunks":[],"async":false}},"92825":{"*":{"id":348552,"name":"*","chunks":[],"async":false}},"768017":{"*":{"id":683919,"name":"*","chunks":[],"async":false}},"897367":{"*":{"id":724150,"name":"*","chunks":[],"async":false}},"27201":{"*":{"id":340771,"name":"*","chunks":[],"async":false}},"479520":{"*":{"id":944536,"name":"*","chunks":[],"async":false}},"511769":{"*":{"id":773791,"name":"*","chunks":[],"async":false}},"881283":{"*":{"id":265728,"name":"*","chunks":[],"async":false}},"6799":{"*":{"id":502807,"name":"*","chunks":[],"async":false}},"168027":{"*":{"id":782509,"name":"*","chunks":[],"async":false}},"302707":{"*":{"id":982616,"name":"*","chunks":[],"async":false}},"756958":{"*":{"id":663137,"name":"*","chunks":[],"async":false}},"252284":{"*":{"id":128756,"name":"*","chunks":[],"async":false}},"692888":{"*":{"id":588694,"name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{},"entryCSSFiles":{"[project]/app/layout":[{"path":"static/chunks/233p45nuh4m5b.css","inlined":false},{"path":"static/chunks/02omaqvvszea3.css","inlined":false},{"path":"static/chunks/3go3hwp1z2_h2.css","inlined":false}],"[project]/node_modules/next/dist/client/components/builtin/global-error":[{"path":"static/chunks/233p45nuh4m5b.css","inlined":false},{"path":"static/chunks/02omaqvvszea3.css","inlined":false},{"path":"static/chunks/3go3hwp1z2_h2.css","inlined":false}],"[project]/app/page":[{"path":"static/chunks/233p45nuh4m5b.css","inlined":false},{"path":"static/chunks/02omaqvvszea3.css","inlined":false},{"path":"static/chunks/3go3hwp1z2_h2.css","inlined":false}]},"entryJSFiles":{"[project]/app/layout":["static/chunks/0vlgzqo9ka90v.js","static/chunks/0c_g4-11sha-1.js","static/chunks/25huyu8ndoo-w.js"],"[project]/node_modules/next/dist/client/components/builtin/global-error":["static/chunks/0vlgzqo9ka90v.js","static/chunks/0c_g4-11sha-1.js","static/chunks/25huyu8ndoo-w.js"],"[project]/app/page":["static/chunks/0vlgzqo9ka90v.js","static/chunks/0c_g4-11sha-1.js","static/chunks/25huyu8ndoo-w.js","static/chunks/0qmd8n52hp-6v.js","static/chunks/2yp4u469_4i3l.js","static/chunks/3obf9n3cxj99k.js","static/chunks/06nt9tatr-dug.js","static/chunks/3t9huugh-5_ps.js","static/chunks/0pda_vf-abwvx.js","static/chunks/3fec-aeteddr-.js","static/chunks/33lyk6a4x_hg8.js","static/chunks/0ge-hx0ed83a1.js","static/chunks/1i5pmx0b-xvcb.js","static/chunks/0dcfqbly-089u.js","static/chunks/43q9cgbuw8krx.js","static/chunks/0sqe8zks75fot.js","static/chunks/0rowp9rx3qbxu.js","static/chunks/1yugpvvi8qrbu.js","static/chunks/3sfcixohjbvu5.js","static/chunks/3zgnmu3cnahk0.js","static/chunks/2re701zfx-nrj.js","static/chunks/0ev4hyghq0mbb.js","static/chunks/1grkt5gr8pbg1.js","static/chunks/3l6bwn061vy22.js","static/chunks/2ndw4w4u2x51r.js","static/chunks/37j27b3e1gt7r.js","static/chunks/23nfu5g4vl_m7.js","static/chunks/13ixzheqw7o-w.js","static/chunks/1rowt7kr1tu9y.js","static/chunks/1g9yyvculuxj2.js","static/chunks/0n6rdrjpwcyya.js","static/chunks/1d9i8nlx-zy9a.js","static/chunks/2p2pqpub-48me.js"]}};
2
+ globalThis.__RSC_MANIFEST["/page"] = {"moduleLoading":{"prefix":""},"clientModules":{"[project]/node_modules/next/dist/esm/client/components/layout-router.js":{"id":339756,"name":"*","chunks":["/_next/static/chunks/0vlgzqo9ka90v.js","/_next/static/chunks/0c_g4-11sha-1.js","/_next/static/chunks/25huyu8ndoo-w.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":837457,"name":"*","chunks":["/_next/static/chunks/0vlgzqo9ka90v.js","/_next/static/chunks/0c_g4-11sha-1.js","/_next/static/chunks/25huyu8ndoo-w.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/client-page.js":{"id":347257,"name":"*","chunks":["/_next/static/chunks/0vlgzqo9ka90v.js","/_next/static/chunks/0c_g4-11sha-1.js","/_next/static/chunks/25huyu8ndoo-w.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/client-segment.js":{"id":92825,"name":"*","chunks":["/_next/static/chunks/0vlgzqo9ka90v.js","/_next/static/chunks/0c_g4-11sha-1.js","/_next/static/chunks/25huyu8ndoo-w.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":768017,"name":"*","chunks":["/_next/static/chunks/0vlgzqo9ka90v.js","/_next/static/chunks/0c_g4-11sha-1.js","/_next/static/chunks/25huyu8ndoo-w.js"],"async":false},"[project]/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":897367,"name":"*","chunks":["/_next/static/chunks/0vlgzqo9ka90v.js","/_next/static/chunks/0c_g4-11sha-1.js","/_next/static/chunks/25huyu8ndoo-w.js"],"async":false},"[project]/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":27201,"name":"*","chunks":["/_next/static/chunks/0vlgzqo9ka90v.js","/_next/static/chunks/0c_g4-11sha-1.js","/_next/static/chunks/25huyu8ndoo-w.js"],"async":false},"[project]/node_modules/next/dist/client/script.js":{"id":479520,"name":"*","chunks":["/_next/static/chunks/0vlgzqo9ka90v.js","/_next/static/chunks/0c_g4-11sha-1.js","/_next/static/chunks/25huyu8ndoo-w.js"],"async":false},"[project]/app/api/events/app-event.client.ts":{"id":511769,"name":"*","chunks":["/_next/static/chunks/0vlgzqo9ka90v.js","/_next/static/chunks/0c_g4-11sha-1.js","/_next/static/chunks/25huyu8ndoo-w.js"],"async":false},"[project]/components/ui/theme-sync.tsx":{"id":881283,"name":"*","chunks":["/_next/static/chunks/0vlgzqo9ka90v.js","/_next/static/chunks/0c_g4-11sha-1.js","/_next/static/chunks/25huyu8ndoo-w.js"],"async":false},"[project]/components/ui/toast.tsx":{"id":6799,"name":"*","chunks":["/_next/static/chunks/0vlgzqo9ka90v.js","/_next/static/chunks/0c_g4-11sha-1.js","/_next/static/chunks/25huyu8ndoo-w.js"],"async":false},"[project]/node_modules/next/dist/client/components/builtin/global-error.js":{"id":168027,"name":"*","chunks":["/_next/static/chunks/0vlgzqo9ka90v.js","/_next/static/chunks/0c_g4-11sha-1.js","/_next/static/chunks/25huyu8ndoo-w.js"],"async":false},"[project]/features/intro/components/intro.tsx":{"id":302707,"name":"*","chunks":["/_next/static/chunks/0vlgzqo9ka90v.js","/_next/static/chunks/0c_g4-11sha-1.js","/_next/static/chunks/25huyu8ndoo-w.js","/_next/static/chunks/11tlxkr7a_rpc.js","/_next/static/chunks/2yp4u469_4i3l.js","/_next/static/chunks/3jvldk2wvwbge.js","/_next/static/chunks/1rowt7kr1tu9y.js","/_next/static/chunks/0zmrz4zfzm4dt.js","/_next/static/chunks/3gki-squw28yu.js","/_next/static/chunks/2m6jd3586ijb-.js","/_next/static/chunks/2ndw4w4u2x51r.js","/_next/static/chunks/0h0lythv1ql93.js","/_next/static/chunks/2re701zfx-nrj.js","/_next/static/chunks/0dcfqbly-089u.js","/_next/static/chunks/2kzwhbuobpkw3.js","/_next/static/chunks/0sqe8zks75fot.js","/_next/static/chunks/16s2fx3890_jd.js","/_next/static/chunks/33lyk6a4x_hg8.js","/_next/static/chunks/2p2pqpub-48me.js","/_next/static/chunks/3zgnmu3cnahk0.js","/_next/static/chunks/1d9i8nlx-zy9a.js","/_next/static/chunks/23nfu5g4vl_m7.js","/_next/static/chunks/0ev4hyghq0mbb.js","/_next/static/chunks/0rn9nbg6aif9f.js","/_next/static/chunks/3sfcixohjbvu5.js","/_next/static/chunks/1s6m4cmbn7htf.js","/_next/static/chunks/03-724sj0nk_z.js","/_next/static/chunks/2-asot3p1j3yg.js","/_next/static/chunks/3l6bwn061vy22.js","/_next/static/chunks/1g9yyvculuxj2.js","/_next/static/chunks/1i5pmx0b-xvcb.js","/_next/static/chunks/37unh9460im7v.js","/_next/static/chunks/0n6rdrjpwcyya.js"],"async":true},"[project]/features/reach/components/reach-ask.tsx":{"id":756958,"name":"*","chunks":["/_next/static/chunks/0vlgzqo9ka90v.js","/_next/static/chunks/0c_g4-11sha-1.js","/_next/static/chunks/25huyu8ndoo-w.js","/_next/static/chunks/11tlxkr7a_rpc.js","/_next/static/chunks/2yp4u469_4i3l.js","/_next/static/chunks/3jvldk2wvwbge.js","/_next/static/chunks/1rowt7kr1tu9y.js","/_next/static/chunks/0zmrz4zfzm4dt.js","/_next/static/chunks/3gki-squw28yu.js","/_next/static/chunks/2m6jd3586ijb-.js","/_next/static/chunks/2ndw4w4u2x51r.js","/_next/static/chunks/0h0lythv1ql93.js","/_next/static/chunks/2re701zfx-nrj.js","/_next/static/chunks/0dcfqbly-089u.js","/_next/static/chunks/2kzwhbuobpkw3.js","/_next/static/chunks/0sqe8zks75fot.js","/_next/static/chunks/16s2fx3890_jd.js","/_next/static/chunks/33lyk6a4x_hg8.js","/_next/static/chunks/2p2pqpub-48me.js","/_next/static/chunks/3zgnmu3cnahk0.js","/_next/static/chunks/1d9i8nlx-zy9a.js","/_next/static/chunks/23nfu5g4vl_m7.js","/_next/static/chunks/0ev4hyghq0mbb.js","/_next/static/chunks/0rn9nbg6aif9f.js","/_next/static/chunks/3sfcixohjbvu5.js","/_next/static/chunks/1s6m4cmbn7htf.js","/_next/static/chunks/03-724sj0nk_z.js","/_next/static/chunks/2-asot3p1j3yg.js","/_next/static/chunks/3l6bwn061vy22.js","/_next/static/chunks/1g9yyvculuxj2.js","/_next/static/chunks/1i5pmx0b-xvcb.js","/_next/static/chunks/37unh9460im7v.js","/_next/static/chunks/0n6rdrjpwcyya.js"],"async":false},"[project]/features/thursday/components/boot.tsx":{"id":252284,"name":"*","chunks":["/_next/static/chunks/0vlgzqo9ka90v.js","/_next/static/chunks/0c_g4-11sha-1.js","/_next/static/chunks/25huyu8ndoo-w.js","/_next/static/chunks/11tlxkr7a_rpc.js","/_next/static/chunks/2yp4u469_4i3l.js","/_next/static/chunks/3jvldk2wvwbge.js","/_next/static/chunks/1rowt7kr1tu9y.js","/_next/static/chunks/0zmrz4zfzm4dt.js","/_next/static/chunks/3gki-squw28yu.js","/_next/static/chunks/2m6jd3586ijb-.js","/_next/static/chunks/2ndw4w4u2x51r.js","/_next/static/chunks/0h0lythv1ql93.js","/_next/static/chunks/2re701zfx-nrj.js","/_next/static/chunks/0dcfqbly-089u.js","/_next/static/chunks/2kzwhbuobpkw3.js","/_next/static/chunks/0sqe8zks75fot.js","/_next/static/chunks/16s2fx3890_jd.js","/_next/static/chunks/33lyk6a4x_hg8.js","/_next/static/chunks/2p2pqpub-48me.js","/_next/static/chunks/3zgnmu3cnahk0.js","/_next/static/chunks/1d9i8nlx-zy9a.js","/_next/static/chunks/23nfu5g4vl_m7.js","/_next/static/chunks/0ev4hyghq0mbb.js","/_next/static/chunks/0rn9nbg6aif9f.js","/_next/static/chunks/3sfcixohjbvu5.js","/_next/static/chunks/1s6m4cmbn7htf.js","/_next/static/chunks/03-724sj0nk_z.js","/_next/static/chunks/2-asot3p1j3yg.js","/_next/static/chunks/3l6bwn061vy22.js","/_next/static/chunks/1g9yyvculuxj2.js","/_next/static/chunks/1i5pmx0b-xvcb.js","/_next/static/chunks/37unh9460im7v.js","/_next/static/chunks/0n6rdrjpwcyya.js"],"async":false},"[project]/features/thursday/components/thursday.tsx":{"id":692888,"name":"*","chunks":["/_next/static/chunks/0vlgzqo9ka90v.js","/_next/static/chunks/0c_g4-11sha-1.js","/_next/static/chunks/25huyu8ndoo-w.js","/_next/static/chunks/11tlxkr7a_rpc.js","/_next/static/chunks/2yp4u469_4i3l.js","/_next/static/chunks/3jvldk2wvwbge.js","/_next/static/chunks/1rowt7kr1tu9y.js","/_next/static/chunks/0zmrz4zfzm4dt.js","/_next/static/chunks/3gki-squw28yu.js","/_next/static/chunks/2m6jd3586ijb-.js","/_next/static/chunks/2ndw4w4u2x51r.js","/_next/static/chunks/0h0lythv1ql93.js","/_next/static/chunks/2re701zfx-nrj.js","/_next/static/chunks/0dcfqbly-089u.js","/_next/static/chunks/2kzwhbuobpkw3.js","/_next/static/chunks/0sqe8zks75fot.js","/_next/static/chunks/16s2fx3890_jd.js","/_next/static/chunks/33lyk6a4x_hg8.js","/_next/static/chunks/2p2pqpub-48me.js","/_next/static/chunks/3zgnmu3cnahk0.js","/_next/static/chunks/1d9i8nlx-zy9a.js","/_next/static/chunks/23nfu5g4vl_m7.js","/_next/static/chunks/0ev4hyghq0mbb.js","/_next/static/chunks/0rn9nbg6aif9f.js","/_next/static/chunks/3sfcixohjbvu5.js","/_next/static/chunks/1s6m4cmbn7htf.js","/_next/static/chunks/03-724sj0nk_z.js","/_next/static/chunks/2-asot3p1j3yg.js","/_next/static/chunks/3l6bwn061vy22.js","/_next/static/chunks/1g9yyvculuxj2.js","/_next/static/chunks/1i5pmx0b-xvcb.js","/_next/static/chunks/37unh9460im7v.js","/_next/static/chunks/0n6rdrjpwcyya.js"],"async":true}},"ssrModuleMapping":{"339756":{"*":{"id":802420,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1756892._.js","server/chunks/ssr/node_modules_clsx_dist_clsx_mjs_0q8hrxx._.js","server/chunks/ssr/node_modules_next_dist_1v8aef8._.js","server/chunks/ssr/_0evkpto._.js"],"async":false}},"837457":{"*":{"id":324017,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1756892._.js","server/chunks/ssr/node_modules_clsx_dist_clsx_mjs_0q8hrxx._.js","server/chunks/ssr/node_modules_next_dist_1v8aef8._.js","server/chunks/ssr/_0evkpto._.js"],"async":false}},"347257":{"*":{"id":877682,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1756892._.js","server/chunks/ssr/node_modules_clsx_dist_clsx_mjs_0q8hrxx._.js","server/chunks/ssr/node_modules_next_dist_1v8aef8._.js","server/chunks/ssr/_0evkpto._.js"],"async":false}},"92825":{"*":{"id":697296,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1756892._.js","server/chunks/ssr/node_modules_clsx_dist_clsx_mjs_0q8hrxx._.js","server/chunks/ssr/node_modules_next_dist_1v8aef8._.js","server/chunks/ssr/_0evkpto._.js"],"async":false}},"768017":{"*":{"id":861660,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1756892._.js","server/chunks/ssr/node_modules_clsx_dist_clsx_mjs_0q8hrxx._.js","server/chunks/ssr/node_modules_next_dist_1v8aef8._.js","server/chunks/ssr/_0evkpto._.js"],"async":false}},"897367":{"*":{"id":990574,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1756892._.js","server/chunks/ssr/node_modules_clsx_dist_clsx_mjs_0q8hrxx._.js","server/chunks/ssr/node_modules_next_dist_1v8aef8._.js","server/chunks/ssr/_0evkpto._.js"],"async":false}},"27201":{"*":{"id":660704,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1756892._.js","server/chunks/ssr/node_modules_clsx_dist_clsx_mjs_0q8hrxx._.js","server/chunks/ssr/node_modules_next_dist_1v8aef8._.js","server/chunks/ssr/_0evkpto._.js"],"async":false}},"479520":{"*":{"id":496665,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1756892._.js","server/chunks/ssr/node_modules_clsx_dist_clsx_mjs_0q8hrxx._.js","server/chunks/ssr/node_modules_next_dist_1v8aef8._.js","server/chunks/ssr/_0evkpto._.js"],"async":false}},"511769":{"*":{"id":986368,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1756892._.js","server/chunks/ssr/node_modules_clsx_dist_clsx_mjs_0q8hrxx._.js","server/chunks/ssr/node_modules_next_dist_1v8aef8._.js","server/chunks/ssr/_0evkpto._.js"],"async":false}},"881283":{"*":{"id":198538,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1756892._.js","server/chunks/ssr/node_modules_clsx_dist_clsx_mjs_0q8hrxx._.js","server/chunks/ssr/node_modules_next_dist_1v8aef8._.js","server/chunks/ssr/_0evkpto._.js"],"async":false}},"6799":{"*":{"id":864037,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1756892._.js","server/chunks/ssr/node_modules_clsx_dist_clsx_mjs_0q8hrxx._.js","server/chunks/ssr/node_modules_next_dist_1v8aef8._.js","server/chunks/ssr/_0evkpto._.js"],"async":false}},"168027":{"*":{"id":340622,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1756892._.js","server/chunks/ssr/node_modules_clsx_dist_clsx_mjs_0q8hrxx._.js","server/chunks/ssr/node_modules_next_dist_1v8aef8._.js","server/chunks/ssr/_0evkpto._.js","server/chunks/ssr/node_modules_next_dist_client_components_1bi5-b2._.js"],"async":false}},"302707":{"*":{"id":102928,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1756892._.js","server/chunks/ssr/node_modules_clsx_dist_clsx_mjs_0q8hrxx._.js","server/chunks/ssr/node_modules_next_dist_1v8aef8._.js","server/chunks/ssr/_0evkpto._.js","server/chunks/ssr/_0btzccu._.js","server/chunks/ssr/_1p8xorg._.js","server/chunks/ssr/_1kq2ye_._.js","server/chunks/ssr/node_modules_14gkv49._.js","server/chunks/ssr/_1alxym6._.js","server/chunks/ssr/features_bot_1s_-2vj._.js","server/chunks/ssr/node_modules_roughjs_bundled_rough_esm_15c9pcx.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-2E4U76K2_mjs_20f4_iz._.js","server/chunks/ssr/node_modules_1c0h-_d._.js","server/chunks/ssr/components_ui_tabs_tsx_0ej40b4._.js","server/chunks/ssr/_1mqn9mc._.js","server/chunks/ssr/_1q683w8._.js","server/chunks/ssr/_12eyown._.js","server/chunks/ssr/[root-of-the-server]__1c2a2og._.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-75Z2AOVW_mjs_051rute._.js","server/chunks/ssr/_123y-ah._.js","server/chunks/ssr/_0ya0cb0._.js","server/chunks/ssr/_10yyqtk._.js","server/chunks/ssr/_0hjzb5o._.js","server/chunks/ssr/node_modules_@base-ui_react_0buz1-j._.js","server/chunks/ssr/_0ld9_qq._.js","server/chunks/ssr/_15zqt-t._.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-4HAMMTFA_mjs_1cfif1_._.js","server/chunks/ssr/node_modules_0vi73_6._.js","server/chunks/ssr/node_modules_1vbiuwu._.js","server/chunks/ssr/node_modules_0rb-_la._.js","server/chunks/ssr/[root-of-the-server]__0l93lgv._.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-DU6HZSFF_mjs_20hsuk9._.js","server/chunks/ssr/_19ps4p3._.js","server/chunks/ssr/node_modules_katex_dist_katex_mjs_1oxucd3._.js","server/chunks/ssr/_1xoch6f._.js","server/chunks/ssr/_05pl_u8._.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-OSK3NFVY_mjs_0x5leh1._.js","server/chunks/ssr/node_modules_1bmqmso._.js","server/chunks/ssr/_184327j._.js","server/chunks/ssr/_0ouzu9f._.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-LNGE3PJU_mjs_15ujw6f._.js","server/chunks/ssr/node_modules_0794bsw._.js","server/chunks/ssr/[root-of-the-server]__1cz2rz5._.js"],"async":true}},"756958":{"*":{"id":484267,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1756892._.js","server/chunks/ssr/node_modules_clsx_dist_clsx_mjs_0q8hrxx._.js","server/chunks/ssr/node_modules_next_dist_1v8aef8._.js","server/chunks/ssr/_0evkpto._.js","server/chunks/ssr/_0btzccu._.js","server/chunks/ssr/_1p8xorg._.js","server/chunks/ssr/_1kq2ye_._.js","server/chunks/ssr/node_modules_14gkv49._.js","server/chunks/ssr/_1alxym6._.js","server/chunks/ssr/features_bot_1s_-2vj._.js","server/chunks/ssr/node_modules_roughjs_bundled_rough_esm_15c9pcx.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-2E4U76K2_mjs_20f4_iz._.js","server/chunks/ssr/node_modules_1c0h-_d._.js","server/chunks/ssr/components_ui_tabs_tsx_0ej40b4._.js","server/chunks/ssr/_1mqn9mc._.js","server/chunks/ssr/_1q683w8._.js","server/chunks/ssr/_12eyown._.js","server/chunks/ssr/[root-of-the-server]__1c2a2og._.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-75Z2AOVW_mjs_051rute._.js","server/chunks/ssr/_123y-ah._.js","server/chunks/ssr/_0ya0cb0._.js","server/chunks/ssr/_10yyqtk._.js","server/chunks/ssr/_0hjzb5o._.js","server/chunks/ssr/node_modules_@base-ui_react_0buz1-j._.js","server/chunks/ssr/_0ld9_qq._.js","server/chunks/ssr/_15zqt-t._.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-4HAMMTFA_mjs_1cfif1_._.js","server/chunks/ssr/node_modules_0vi73_6._.js","server/chunks/ssr/node_modules_1vbiuwu._.js","server/chunks/ssr/node_modules_0rb-_la._.js","server/chunks/ssr/[root-of-the-server]__0l93lgv._.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-DU6HZSFF_mjs_20hsuk9._.js","server/chunks/ssr/_19ps4p3._.js","server/chunks/ssr/node_modules_katex_dist_katex_mjs_1oxucd3._.js","server/chunks/ssr/_1xoch6f._.js","server/chunks/ssr/_05pl_u8._.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-OSK3NFVY_mjs_0x5leh1._.js","server/chunks/ssr/node_modules_1bmqmso._.js","server/chunks/ssr/_184327j._.js","server/chunks/ssr/_0ouzu9f._.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-LNGE3PJU_mjs_15ujw6f._.js","server/chunks/ssr/node_modules_0794bsw._.js","server/chunks/ssr/[root-of-the-server]__1cz2rz5._.js"],"async":false}},"252284":{"*":{"id":72962,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1756892._.js","server/chunks/ssr/node_modules_clsx_dist_clsx_mjs_0q8hrxx._.js","server/chunks/ssr/node_modules_next_dist_1v8aef8._.js","server/chunks/ssr/_0evkpto._.js","server/chunks/ssr/_0btzccu._.js","server/chunks/ssr/_1p8xorg._.js","server/chunks/ssr/_1kq2ye_._.js","server/chunks/ssr/node_modules_14gkv49._.js","server/chunks/ssr/_1alxym6._.js","server/chunks/ssr/features_bot_1s_-2vj._.js","server/chunks/ssr/node_modules_roughjs_bundled_rough_esm_15c9pcx.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-2E4U76K2_mjs_20f4_iz._.js","server/chunks/ssr/node_modules_1c0h-_d._.js","server/chunks/ssr/components_ui_tabs_tsx_0ej40b4._.js","server/chunks/ssr/_1mqn9mc._.js","server/chunks/ssr/_1q683w8._.js","server/chunks/ssr/_12eyown._.js","server/chunks/ssr/[root-of-the-server]__1c2a2og._.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-75Z2AOVW_mjs_051rute._.js","server/chunks/ssr/_123y-ah._.js","server/chunks/ssr/_0ya0cb0._.js","server/chunks/ssr/_10yyqtk._.js","server/chunks/ssr/_0hjzb5o._.js","server/chunks/ssr/node_modules_@base-ui_react_0buz1-j._.js","server/chunks/ssr/_0ld9_qq._.js","server/chunks/ssr/_15zqt-t._.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-4HAMMTFA_mjs_1cfif1_._.js","server/chunks/ssr/node_modules_0vi73_6._.js","server/chunks/ssr/node_modules_1vbiuwu._.js","server/chunks/ssr/node_modules_0rb-_la._.js","server/chunks/ssr/[root-of-the-server]__0l93lgv._.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-DU6HZSFF_mjs_20hsuk9._.js","server/chunks/ssr/_19ps4p3._.js","server/chunks/ssr/node_modules_katex_dist_katex_mjs_1oxucd3._.js","server/chunks/ssr/_1xoch6f._.js","server/chunks/ssr/_05pl_u8._.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-OSK3NFVY_mjs_0x5leh1._.js","server/chunks/ssr/node_modules_1bmqmso._.js","server/chunks/ssr/_184327j._.js","server/chunks/ssr/_0ouzu9f._.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-LNGE3PJU_mjs_15ujw6f._.js","server/chunks/ssr/node_modules_0794bsw._.js","server/chunks/ssr/[root-of-the-server]__1cz2rz5._.js"],"async":false}},"692888":{"*":{"id":137079,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1756892._.js","server/chunks/ssr/node_modules_clsx_dist_clsx_mjs_0q8hrxx._.js","server/chunks/ssr/node_modules_next_dist_1v8aef8._.js","server/chunks/ssr/_0evkpto._.js","server/chunks/ssr/_0btzccu._.js","server/chunks/ssr/_1p8xorg._.js","server/chunks/ssr/_1kq2ye_._.js","server/chunks/ssr/node_modules_14gkv49._.js","server/chunks/ssr/_1alxym6._.js","server/chunks/ssr/features_bot_1s_-2vj._.js","server/chunks/ssr/node_modules_roughjs_bundled_rough_esm_15c9pcx.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-2E4U76K2_mjs_20f4_iz._.js","server/chunks/ssr/node_modules_1c0h-_d._.js","server/chunks/ssr/components_ui_tabs_tsx_0ej40b4._.js","server/chunks/ssr/_1mqn9mc._.js","server/chunks/ssr/_1q683w8._.js","server/chunks/ssr/_12eyown._.js","server/chunks/ssr/[root-of-the-server]__1c2a2og._.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-75Z2AOVW_mjs_051rute._.js","server/chunks/ssr/_123y-ah._.js","server/chunks/ssr/_0ya0cb0._.js","server/chunks/ssr/_10yyqtk._.js","server/chunks/ssr/_0hjzb5o._.js","server/chunks/ssr/node_modules_@base-ui_react_0buz1-j._.js","server/chunks/ssr/_0ld9_qq._.js","server/chunks/ssr/_15zqt-t._.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-4HAMMTFA_mjs_1cfif1_._.js","server/chunks/ssr/node_modules_0vi73_6._.js","server/chunks/ssr/node_modules_1vbiuwu._.js","server/chunks/ssr/node_modules_0rb-_la._.js","server/chunks/ssr/[root-of-the-server]__0l93lgv._.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-DU6HZSFF_mjs_20hsuk9._.js","server/chunks/ssr/_19ps4p3._.js","server/chunks/ssr/node_modules_katex_dist_katex_mjs_1oxucd3._.js","server/chunks/ssr/_1xoch6f._.js","server/chunks/ssr/_05pl_u8._.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-OSK3NFVY_mjs_0x5leh1._.js","server/chunks/ssr/node_modules_1bmqmso._.js","server/chunks/ssr/_184327j._.js","server/chunks/ssr/_0ouzu9f._.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-LNGE3PJU_mjs_15ujw6f._.js","server/chunks/ssr/node_modules_0794bsw._.js","server/chunks/ssr/[root-of-the-server]__1cz2rz5._.js"],"async":true}}},"edgeSSRModuleMapping":{},"rscModuleMapping":{"339756":{"*":{"id":926768,"name":"*","chunks":[],"async":false}},"837457":{"*":{"id":517910,"name":"*","chunks":[],"async":false}},"347257":{"*":{"id":292977,"name":"*","chunks":[],"async":false}},"92825":{"*":{"id":348552,"name":"*","chunks":[],"async":false}},"768017":{"*":{"id":683919,"name":"*","chunks":[],"async":false}},"897367":{"*":{"id":724150,"name":"*","chunks":[],"async":false}},"27201":{"*":{"id":340771,"name":"*","chunks":[],"async":false}},"479520":{"*":{"id":944536,"name":"*","chunks":[],"async":false}},"511769":{"*":{"id":773791,"name":"*","chunks":[],"async":false}},"881283":{"*":{"id":265728,"name":"*","chunks":[],"async":false}},"6799":{"*":{"id":502807,"name":"*","chunks":[],"async":false}},"168027":{"*":{"id":782509,"name":"*","chunks":[],"async":false}},"302707":{"*":{"id":982616,"name":"*","chunks":[],"async":false}},"756958":{"*":{"id":663137,"name":"*","chunks":[],"async":false}},"252284":{"*":{"id":128756,"name":"*","chunks":[],"async":false}},"692888":{"*":{"id":588694,"name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{},"entryCSSFiles":{"[project]/app/layout":[{"path":"static/chunks/233p45nuh4m5b.css","inlined":false},{"path":"static/chunks/02omaqvvszea3.css","inlined":false},{"path":"static/chunks/1wl9t1-3i-q8p.css","inlined":false}],"[project]/node_modules/next/dist/client/components/builtin/global-error":[{"path":"static/chunks/233p45nuh4m5b.css","inlined":false},{"path":"static/chunks/02omaqvvszea3.css","inlined":false},{"path":"static/chunks/1wl9t1-3i-q8p.css","inlined":false}],"[project]/app/page":[{"path":"static/chunks/233p45nuh4m5b.css","inlined":false},{"path":"static/chunks/02omaqvvszea3.css","inlined":false},{"path":"static/chunks/1wl9t1-3i-q8p.css","inlined":false}]},"entryJSFiles":{"[project]/app/layout":["static/chunks/0vlgzqo9ka90v.js","static/chunks/0c_g4-11sha-1.js","static/chunks/25huyu8ndoo-w.js"],"[project]/node_modules/next/dist/client/components/builtin/global-error":["static/chunks/0vlgzqo9ka90v.js","static/chunks/0c_g4-11sha-1.js","static/chunks/25huyu8ndoo-w.js"],"[project]/app/page":["static/chunks/0vlgzqo9ka90v.js","static/chunks/0c_g4-11sha-1.js","static/chunks/25huyu8ndoo-w.js","static/chunks/11tlxkr7a_rpc.js","static/chunks/2yp4u469_4i3l.js","static/chunks/3jvldk2wvwbge.js","static/chunks/1rowt7kr1tu9y.js","static/chunks/0zmrz4zfzm4dt.js","static/chunks/3gki-squw28yu.js","static/chunks/2m6jd3586ijb-.js","static/chunks/2ndw4w4u2x51r.js","static/chunks/0h0lythv1ql93.js","static/chunks/2re701zfx-nrj.js","static/chunks/0dcfqbly-089u.js","static/chunks/2kzwhbuobpkw3.js","static/chunks/0sqe8zks75fot.js","static/chunks/16s2fx3890_jd.js","static/chunks/33lyk6a4x_hg8.js","static/chunks/2p2pqpub-48me.js","static/chunks/3zgnmu3cnahk0.js","static/chunks/1d9i8nlx-zy9a.js","static/chunks/23nfu5g4vl_m7.js","static/chunks/0ev4hyghq0mbb.js","static/chunks/0rn9nbg6aif9f.js","static/chunks/3sfcixohjbvu5.js","static/chunks/1s6m4cmbn7htf.js","static/chunks/03-724sj0nk_z.js","static/chunks/2-asot3p1j3yg.js","static/chunks/3l6bwn061vy22.js","static/chunks/1g9yyvculuxj2.js","static/chunks/1i5pmx0b-xvcb.js","static/chunks/37unh9460im7v.js","static/chunks/0n6rdrjpwcyya.js"]}};
3
3
 
@@ -22,7 +22,6 @@
22
22
  "/api/mcp/tools/route": "app/api/mcp/tools/route.js",
23
23
  "/api/memory/edit/route": "app/api/memory/edit/route.js",
24
24
  "/api/memory/route": "app/api/memory/route.js",
25
- "/api/probe/route": "app/api/probe/route.js",
26
25
  "/api/reach/route": "app/api/reach/route.js",
27
26
  "/api/routine/route": "app/api/routine/route.js",
28
27
  "/api/signins/route": "app/api/signins/route.js",
@@ -2,7 +2,7 @@ module.exports=[874533,(e,t,i)=>{t.exports=e.x("node:child_process",()=>require(
2
2
 
3
3
  [${t} cut at ${a.max.toLocaleString("en")} chars — the whole thing (${c} lines) is at ${l}. Read the part you need with \`sed -n\`.]
4
4
 
5
- ${e.slice(-a.tail).trimStart()}`}let p=n.APP_DIR,h=(0,o.join)(n.DATA_DIR,n.PATHS.workspace),f=(process.env.THURSDAY_TOOL_PATH?.split(":")??[(0,o.join)(p,"node_modules",".bin")]).filter(Boolean),w=(0,o.join)(h,n.PATHS.artifacts),y=[n.PATHS.artifacts,n.PATHS.projects,n.PATHS.scratch,n.PATHS.bots],g=new Set([...y,".agents"]),S=(e,t)=>t===e||t.startsWith(e+o.sep),k=e=>(0,r.realpath)(e).catch(()=>null);async function T(e){let t=await k(h)??h,i=(0,o.resolve)(h,e);if(!S(h,i))return null;let r=i,a=await k(r);for(;null===a&&(0,o.dirname)(r)!==r;)r=(0,o.dirname)(r),a=await k(r);if(null===a)return null;let n=(0,o.relative)(r,i),s=n?(0,o.join)(a,n):a;return S(t,s)?s:null}function b(e,t){let i=t.trim().toLowerCase().replace(/[^\p{L}\p{N}]+/gu,"-").replace(/^-+|-+$/g,"").slice(0,40)||"job";return`${n.PATHS.scratch}/${i}-${e.slice(0,6)}`}let v=e=>e.replace(/[^\p{L}\p{N}_-]+/gu,"-"),$=e=>`${n.PATHS.bots}/${v(e)}`,A=e=>`${n.PATHS.artifacts}/${v(e)}`;async function _(e){let t=$(e),i=A(e);return await Promise.all([t,i].map(e=>(0,r.mkdir)((0,o.join)(h,e),{recursive:!0}))),{own:t,artifacts:i}}async function P(e,t){let i=b(e,t);return await (0,r.mkdir)((0,o.join)(h,i),{recursive:!0}),i}let x=e=>({PLAYWRIGHT_MCP_BROWSER:"chromium",...e?{PLAYWRIGHT_CLI_SESSION:`thread-${e}`,PLAYWRIGHT_MCP_VIEWPORT_SIZE:n.BROWSER_VIEWPORT}:{}}),j={runtimes:["node","python3","uv","bun","deno"],managers:["pnpm","npm","yarn"]};async function E(e){let t=Object.values(j).flat(),{stdout:i}=await e.exec(t.map(e=>`command -v ${e} >/dev/null 2>&1 && printf '%s ' ${e}`).join("; "),{timeoutMs:1e4}),r=new Set(i.trim().split(/\s+/).filter(Boolean)),a=e=>({found:e.filter(e=>r.has(e)),missing:e.filter(e=>!r.has(e))});return{runtimes:a(j.runtimes),managers:a(j.managers),browser:null}}async function H(){await F(),await W()}async function I(e){await L(e,await O(e,!1))}async function R(e){await O(e,!0)}async function C(e){await L(e,await O(e,!0))}async function L(e,i){let n=process.env.XDG_CACHE_HOME||(0,o.join)((0,a.homedir)(),".cache"),l=await (0,r.realpath)(h).catch(()=>h),c=(0,o.join)(n,"ms-playwright","daemon",(0,t.createHash)("sha1").update(l).digest("hex").slice(0,16)),d=x(e).PLAYWRIGHT_CLI_SESSION;for(let e of(await (0,r.readdir)(c).catch(()=>[]))){let t=e.startsWith("ud-")?e.slice(3):e;(t===d||t.startsWith(`${d}-`)||t.startsWith(`${d}.`))&&(i.some(e=>t===e||t.startsWith(`${e}-`)||t.startsWith(`${e}.`))||await (0,r.rm)((0,o.join)(c,e),{recursive:!0,force:!0}).catch(t=>s.logger.warn(`browser data ${e}: ${String(t)}`)))}}async function O(e,t){let i=await G(),r=x(e),a=await i.exec("playwright-cli list --json",{env:r,timeoutMs:15e3}).catch(()=>null),o=[];try{let{browsers:e}=JSON.parse(a?.stdout??"");o=e?.filter(e=>e.name===r.PLAYWRIGHT_CLI_SESSION||e.name.startsWith(`${r.PLAYWRIGHT_CLI_SESSION}-`))??[]}catch{}let n=[];for(let e of o){if(e.attached||!t&&!1!==e.headed){n.push(e.name);continue}await i.exec("playwright-cli close",{env:{...r,PLAYWRIGHT_CLI_SESSION:e.name},timeoutMs:15e3}).catch(()=>{})}return await H(),n}let W=()=>q(n.PATHS.output),F=()=>q(".playwright-cli");async function q(e){let t=(0,o.join)(h,e),i=await (0,r.readdir)(t,{withFileTypes:!0}).catch(()=>[]),a=Date.now()-n.WORKSPACE_KEEP.forMs;for(let e of i){if(!e.isFile())continue;let i=(0,o.join)(t,e.name),n=await (0,r.stat)(i).catch(()=>null);n&&n.mtimeMs<a&&await (0,r.unlink)(i).catch(()=>{})}}async function M(){return(await (0,r.readdir)((0,o.join)(h,n.PATHS.scratch),{withFileTypes:!0}).catch(()=>[])).filter(e=>e.isDirectory()).map(e=>`${n.PATHS.scratch}/${e.name}`)}async function N(e){let t=Date.now()-n.WORKSPACE_KEEP.forMs,i=[];for(let a of e){let e=(0,o.join)(h,a),n=await (0,r.stat)(e).catch(()=>null);n?.isDirectory()&&!(n.mtimeMs>=t)&&(await (0,r.rm)(e,{recursive:!0,force:!0}).catch(()=>{}),i.push(a))}return i}let D={"pnpm-workspace.yaml":"packages:\n - '**'\n",".npmrc":"recursive-install=false\n"};async function G(){for(let e of[...y,".playwright"])await (0,r.mkdir)((0,o.join)(h,e),{recursive:!0});for(let[e,t]of Object.entries(D))await (0,r.writeFile)((0,o.join)(h,e),t,{flag:"wx"}).catch(()=>{});return(({workingDirectory:e,spill:t,toolPath:i})=>{let a=(0,o.resolve)(e),n=(i??[]).filter(Boolean).join(":"),s=e=>e.startsWith("/")||/^[A-Za-z]:/.test(e)?e:(0,o.resolve)(a,e);return{cwd:a,resolve:s,readFile:(e,t)=>(0,r.readFile)(s(e),t),async writeFile(e,t){let i=s(e);await (0,r.mkdir)((0,o.join)(i,".."),{recursive:!0}),await (0,r.writeFile)(i,t)},readdir:(e,t)=>(0,r.readdir)(s(e),t),fold:(e,i="output")=>m(e,i,a,t),async glob(e,{path:t=".",limit:i=200}={}){let r=s(t),a=RegExp("^"+e.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*\*\//g,"(?:.*/)?").replace(/\*/g,"[^/]*").replace(/\?/g,"[^/]")+"$"),n=[];for await(let e of u(r)){let t=(0,o.relative)(r,e).split(o.sep).join("/");if((a.test(t)||a.test(e))&&n.push(e),n.length>=i)break}return n},exec:(e,{cwd:i,timeoutMs:r=c.EXEC_TIMEOUT_MS,signal:o,env:d}={})=>new Promise(u=>{let p,h,f=function(){let e={...process.env};for(let t of Object.keys(e))/KEY|TOKEN|SECRET|PASSWORD|CREDENTIAL|_AUTH/i.test(t)&&delete e[t];return e.TERM="dumb",e.PAGER="cat",e.GIT_PAGER="cat",e}();n&&(f.PATH=`${f.PATH??""}:${n}`);let w=(0,l.spawn)(e,{shell:!0,cwd:i?s(i):a,env:{...f,...d},detached:!0}),y="",g="";w.stdout?.on("data",e=>y+=e),w.stderr?.on("data",e=>g+=e);let S=e=>{try{w.pid&&process.kill(-w.pid,e)}catch{w.kill(e)}},k=!1,T=async e=>{k||(k=!0,clearTimeout(v),clearTimeout(p),clearTimeout(h),o?.removeEventListener("abort",$),u({...e,stdout:await m(e.stdout,"stdout",a,t),stderr:await m(e.stderr,"stderr",a,t)}))},b=e=>{p||k||(g+=`
6
- [${e}]`,S("SIGTERM"),p=setTimeout(()=>{g+="\n[Killed: it did not exit on SIGTERM]",S("SIGKILL"),h=setTimeout(()=>{w.stdout?.destroy(),w.stderr?.destroy(),T({stdout:y,stderr:g,exitCode:-1})},1e3)},c.EXEC_KILL_GRACE_MS))},v=setTimeout(()=>b(`Timed out after ${r}ms`),r),$=()=>b("Aborted");o?.aborted?$():o?.addEventListener("abort",$,{once:!0}),w.on("close",e=>T({stdout:y,stderr:g,exitCode:e??-1})),w.on("error",e=>T({stdout:y,stderr:g+String(e),exitCode:-1}))})}})({workingDirectory:h,spill:{dir:n.PATHS.output,...n.TOOL_OUTPUT},toolPath:f})}async function K(e,t){let i=e.map(e=>(0,o.resolve)(h,e));if(t){let e=0;for await(let r of u((0,o.join)(h,t)))if(i.push(r),(e+=1)>=500)break}let a=new Map;for(let e of i){let t=await (0,r.stat)(e).catch(()=>null);if(!t?.isFile())continue;let i=(0,o.relative)(h,e);a.set(i&&!i.startsWith("..")?i:e,t.mtimeMs)}return[...a].sort((e,t)=>e[1]-t[1]).map(([e])=>e)}async function U(e,t){await (0,r.rm)((0,o.join)(h,b(e,t)),{recursive:!0,force:!0}).catch(()=>{})}e.s(["ARTIFACTS",0,w,"WORKSPACE",0,h,"botArtifacts",0,A,"botBrowserSession",0,(e,i)=>`${e}-bot-${(0,t.createHash)("sha256").update(i.trim().toLowerCase()).digest("hex").slice(0,20)}`,"botFolder",0,$,"botFolderName",0,v,"botShellEnv",0,e=>({THURSDAY_ARTIFACTS:A(e)}),"closeHiddenBrowser",0,I,"closeJobShell",0,R,"filesOnDisk",0,K,"insideWorkspace",0,T,"jobScratch",0,b,"jobShellEnv",0,x,"listScratchFolders",0,M,"openBotFolders",0,_,"openJobScratch",0,P,"openWorkspace",0,G,"pruneJobFiles",0,H,"readMachineTools",0,E,"removeJobBrowsers",0,C,"removeJobScratch",0,U,"removeUnchangedFolders",0,N,"writeRefusal",0,function(e,t){if(S(h,e)){let r=(0,o.relative)(h,e),[a,s]=r.split(o.sep);return a&&g.has(a)?t&&a===n.PATHS.artifacts&&s&&s.toLowerCase()!==v(t).toLowerCase()&&!(0,i.existsSync)((0,o.join)(w,s))?`Not written: ${r} would sit loose at the top of ${n.PATHS.artifacts}/. Your finished work goes in ${A(t)}/.`:null:`Not written: ${r||"the workspace root"} is outside the workspace's folders. Finished work goes under ${t?A(t):n.PATHS.artifacts}/, code under ${n.PATHS.projects}/, your own kit under ${n.PATHS.bots}/, and this job's working material under ${n.PATHS.scratch}/.`}return S(p,e)?`Not written: ${e} is inside the app that is running you, not the user's files. Work in ${h}; outside it, write only where the user pointed you.`:null}],786025)},105249,e=>{"use strict";var t=e.i(562810);e.s(["default",0,t])}];
5
+ ${e.slice(-a.tail).trimStart()}`}let p=n.APP_DIR,h=(0,o.join)(n.DATA_DIR,n.PATHS.workspace),f=(process.env.THURSDAY_TOOL_PATH?.split(":")??[(0,o.join)(p,"node_modules",".bin")]).filter(Boolean),w=(0,o.join)(h,n.PATHS.artifacts),y=[n.PATHS.artifacts,n.PATHS.projects,n.PATHS.scratch,n.PATHS.bots],g=new Set([...y,".agents"]),S=(e,t)=>t===e||t.startsWith(e+o.sep),k=e=>(0,r.realpath)(e).catch(()=>null);async function T(e){let t=await k(h)??h,i=(0,o.resolve)(h,e);if(!S(h,i))return null;let r=i,a=await k(r);for(;null===a&&(0,o.dirname)(r)!==r;)r=(0,o.dirname)(r),a=await k(r);if(null===a)return null;let n=(0,o.relative)(r,i),s=n?(0,o.join)(a,n):a;return S(t,s)?s:null}function b(e,t){let i=t.trim().toLowerCase().replace(/[^\p{L}\p{N}]+/gu,"-").replace(/^-+|-+$/g,"").slice(0,40)||"job";return`${n.PATHS.scratch}/${i}-${e.slice(0,6)}`}let v=e=>e.replace(/[^\p{L}\p{N}_-]+/gu,"-"),A=e=>`${n.PATHS.bots}/${v(e)}`,$=e=>`${n.PATHS.artifacts}/${v(e)}`;async function _(e){let t=A(e),i=$(e);return await Promise.all([t,i].map(e=>(0,r.mkdir)((0,o.join)(h,e),{recursive:!0}))),{own:t,artifacts:i}}async function P(e,t){let i=b(e,t);return await (0,r.mkdir)((0,o.join)(h,i),{recursive:!0}),i}let x=e=>({PLAYWRIGHT_MCP_BROWSER:"chromium",...e?{PLAYWRIGHT_CLI_SESSION:`thread-${e}`,PLAYWRIGHT_MCP_VIEWPORT_SIZE:n.BROWSER_VIEWPORT}:{}}),j={runtimes:["node","python3","uv","bun","deno"],managers:["pnpm","npm","yarn"]};async function E(e){let t=Object.values(j).flat(),{stdout:i}=await e.exec(t.map(e=>`command -v ${e} >/dev/null 2>&1 && printf '%s ' ${e}`).join("; "),{timeoutMs:1e4}),r=new Set(i.trim().split(/\s+/).filter(Boolean)),a=e=>({found:e.filter(e=>r.has(e)),missing:e.filter(e=>!r.has(e))});return{runtimes:a(j.runtimes),managers:a(j.managers),browser:null}}async function H(){await F(),await W()}async function I(e){await C(e,await O(e,!1))}async function R(e){await O(e,!0)}async function L(e){await C(e,await O(e,!0))}async function C(e,i){let n=process.env.XDG_CACHE_HOME||(0,o.join)((0,a.homedir)(),".cache"),l=await (0,r.realpath)(h).catch(()=>h),c=(0,o.join)(n,"ms-playwright","daemon",(0,t.createHash)("sha1").update(l).digest("hex").slice(0,16)),d=x(e).PLAYWRIGHT_CLI_SESSION;for(let e of(await (0,r.readdir)(c).catch(()=>[]))){let t=e.startsWith("ud-")?e.slice(3):e;(t===d||t.startsWith(`${d}-`)||t.startsWith(`${d}.`))&&(i.some(e=>t===e||t.startsWith(`${e}-`)||t.startsWith(`${e}.`))||await (0,r.rm)((0,o.join)(c,e),{recursive:!0,force:!0}).catch(t=>s.logger.warn(`browser data ${e}: ${String(t)}`)))}}async function O(e,t){let i=await G(),r=x(e),a=await i.exec("playwright-cli list --json",{env:r,timeoutMs:15e3}).catch(()=>null),o=[];try{let{browsers:e}=JSON.parse(a?.stdout??"");o=e?.filter(e=>e.name===r.PLAYWRIGHT_CLI_SESSION||e.name.startsWith(`${r.PLAYWRIGHT_CLI_SESSION}-`))??[]}catch{}let n=[];for(let e of o){if(e.attached||!t&&!1!==e.headed){n.push(e.name);continue}await i.exec("playwright-cli close",{env:{...r,PLAYWRIGHT_CLI_SESSION:e.name},timeoutMs:15e3}).catch(()=>{})}return await H(),n}let W=()=>q(n.PATHS.output),F=()=>q(".playwright-cli");async function q(e){let t=(0,o.join)(h,e),i=await (0,r.readdir)(t,{withFileTypes:!0}).catch(()=>[]),a=Date.now()-n.WORKSPACE_KEEP.forMs;for(let e of i){if(!e.isFile())continue;let i=(0,o.join)(t,e.name),n=await (0,r.stat)(i).catch(()=>null);n&&n.mtimeMs<a&&await (0,r.unlink)(i).catch(()=>{})}}async function M(){return(await (0,r.readdir)((0,o.join)(h,n.PATHS.scratch),{withFileTypes:!0}).catch(()=>[])).filter(e=>e.isDirectory()).map(e=>`${n.PATHS.scratch}/${e.name}`)}async function N(e){let t=Date.now()-n.WORKSPACE_KEEP.forMs,i=[];for(let a of e){let e=(0,o.join)(h,a),n=await (0,r.stat)(e).catch(()=>null);n?.isDirectory()&&!(n.mtimeMs>=t)&&(await (0,r.rm)(e,{recursive:!0,force:!0}).catch(()=>{}),i.push(a))}return i}let D={"pnpm-workspace.yaml":"packages:\n - '**'\n",".npmrc":"recursive-install=false\n"};async function G(){for(let e of[...y,".playwright"])await (0,r.mkdir)((0,o.join)(h,e),{recursive:!0});for(let[e,t]of Object.entries(D))await (0,r.writeFile)((0,o.join)(h,e),t,{flag:"wx"}).catch(()=>{});return(({workingDirectory:e,spill:t,toolPath:i})=>{let a=(0,o.resolve)(e),n=(i??[]).filter(Boolean).join(":"),s=e=>e.startsWith("/")||/^[A-Za-z]:/.test(e)?e:(0,o.resolve)(a,e);return{cwd:a,resolve:s,readFile:(e,t)=>(0,r.readFile)(s(e),t),async writeFile(e,t){let i=s(e);await (0,r.mkdir)((0,o.join)(i,".."),{recursive:!0}),await (0,r.writeFile)(i,t)},readdir:(e,t)=>(0,r.readdir)(s(e),t),fold:(e,i="output")=>m(e,i,a,t),async glob(e,{path:t=".",limit:i=200}={}){let r=s(t),a=RegExp("^"+e.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*\*\//g,"(?:.*/)?").replace(/\*/g,"[^/]*").replace(/\?/g,"[^/]")+"$"),n=[];for await(let e of u(r)){let t=(0,o.relative)(r,e).split(o.sep).join("/");if((a.test(t)||a.test(e))&&n.push(e),n.length>=i)break}return n},exec:(e,{cwd:i,timeoutMs:r=c.EXEC_TIMEOUT_MS,signal:o,env:d}={})=>new Promise(u=>{let p,h,f=function(){let e={...process.env};for(let t of Object.keys(e))/KEY|TOKEN|SECRET|PASSWORD|CREDENTIAL|_AUTH/i.test(t)&&delete e[t];return e.TERM="dumb",e.PAGER="cat",e.GIT_PAGER="cat",e}();n&&(f.PATH=`${f.PATH??""}:${n}`);let w=(0,l.spawn)(e,{shell:!0,cwd:i?s(i):a,env:{...f,...d},detached:!0}),y="",g="";w.stdout?.on("data",e=>y+=e),w.stderr?.on("data",e=>g+=e);let S=e=>{try{w.pid&&process.kill(-w.pid,e)}catch{w.kill(e)}},k=!1,T=async e=>{k||(k=!0,clearTimeout(v),clearTimeout(p),clearTimeout(h),o?.removeEventListener("abort",A),u({...e,stdout:await m(e.stdout,"stdout",a,t),stderr:await m(e.stderr,"stderr",a,t)}))},b=e=>{p||k||(g+=`
6
+ [${e}]`,S("SIGTERM"),p=setTimeout(()=>{g+="\n[Killed: it did not exit on SIGTERM]",S("SIGKILL"),h=setTimeout(()=>{w.stdout?.destroy(),w.stderr?.destroy(),T({stdout:y,stderr:g,exitCode:-1})},1e3)},c.EXEC_KILL_GRACE_MS))},v=setTimeout(()=>b(`Timed out after ${r}ms`),r),A=()=>b("Aborted");o?.aborted?A():o?.addEventListener("abort",A,{once:!0}),w.on("close",e=>T({stdout:y,stderr:g,exitCode:e??-1})),w.on("error",e=>T({stdout:y,stderr:g+String(e),exitCode:-1}))})}})({workingDirectory:h,spill:{dir:n.PATHS.output,...n.TOOL_OUTPUT},toolPath:f})}async function K(e,t){let i=e.map(e=>(0,o.resolve)(h,e));if(t){let e=0;for await(let r of u((0,o.join)(h,t)))if(i.push(r),(e+=1)>=500)break}let a=new Map;for(let e of i){let t=await (0,r.stat)(e).catch(()=>null);if(!t?.isFile())continue;let i=(0,o.relative)(h,e);a.set(i&&!i.startsWith("..")?i:e,t.mtimeMs)}return[...a].sort((e,t)=>e[1]-t[1]).map(([e])=>e)}async function U(e,t){await (0,r.rm)((0,o.join)(h,b(e,t)),{recursive:!0,force:!0}).catch(()=>{})}e.s(["ARTIFACTS",0,w,"WORKSPACE",0,h,"botArtifacts",0,$,"botBrowserSession",0,(e,i)=>`${e}-bot-${(0,t.createHash)("sha256").update(i.trim().toLowerCase()).digest("hex").slice(0,20)}`,"botFolder",0,A,"botFolderName",0,v,"botShellEnv",0,e=>({THURSDAY_ARTIFACTS:$(e),THURSDAY_SKILLS:(0,o.join)(n.APP_DIR,n.PATHS.skills.default)}),"closeHiddenBrowser",0,I,"closeJobShell",0,R,"filesOnDisk",0,K,"insideWorkspace",0,T,"jobScratch",0,b,"jobShellEnv",0,x,"listScratchFolders",0,M,"openBotFolders",0,_,"openJobScratch",0,P,"openWorkspace",0,G,"pruneJobFiles",0,H,"readMachineTools",0,E,"removeJobBrowsers",0,L,"removeJobScratch",0,U,"removeUnchangedFolders",0,N,"writeRefusal",0,function(e,t){if(S(h,e)){let r=(0,o.relative)(h,e),[a,s]=r.split(o.sep);return a&&g.has(a)?t&&a===n.PATHS.artifacts&&s&&s.toLowerCase()!==v(t).toLowerCase()&&!(0,i.existsSync)((0,o.join)(w,s))?`Not written: ${r} would sit loose at the top of ${n.PATHS.artifacts}/. Your finished work goes in ${$(t)}/.`:null:`Not written: ${r||"the workspace root"} is outside the workspace's folders. Finished work goes under ${t?$(t):n.PATHS.artifacts}/, code under ${n.PATHS.projects}/, your own kit under ${n.PATHS.bots}/, and this job's working material under ${n.PATHS.scratch}/.`}return S(p,e)?`Not written: ${e} is inside the app that is running you, not the user's files. Work in ${h}; outside it, write only where the user pointed you.`:null}],786025)},105249,e=>{"use strict";var t=e.i(562810);e.s(["default",0,t])}];
7
7
 
8
8
  //# sourceMappingURL=%5Broot-of-the-server%5D__014ydvq._.js.map
@@ -1,10 +1,12 @@
1
- module.exports=[874533,(e,t,r)=>{t.exports=e.x("node:child_process",()=>require("node:child_process"))},666680,(e,t,r)=>{t.exports=e.x("node:crypto",()=>require("node:crypto"))},902157,(e,t,r)=>{t.exports=e.x("node:fs",()=>require("node:fs"))},912714,(e,t,r)=>{t.exports=e.x("node:fs/promises",()=>require("node:fs/promises"))},660526,(e,t,r)=>{t.exports=e.x("node:os",()=>require("node:os"))},750227,(e,t,r)=>{t.exports=e.x("node:path",()=>require("node:path"))},59639,(e,t,r)=>{t.exports=e.x("node:process",()=>require("node:process"))},509656,(e,t,r)=>{t.exports=e.x("node:tty",()=>require("node:tty"))},812057,(e,t,r)=>{t.exports=e.x("node:util",()=>require("node:util"))},232347,e=>{"use strict";let t,r,a,s,i,n;var o,c=e.i(333925),l=e.i(938281);let u={threads:!0,routines:!0,memory:!0,mcp:!0,config:!0,reach:!0,signins:!0},d=globalThis,p=d.__appEvents??=(t=new Set,{emit(e){for(let r of[...t])try{r(e)}catch(e){console.error("event listener failed",e)}},subscribe:e=>(t.add(e),()=>{t.delete(e)})}),f=d.__presence??=(o=c.BROWSER_GONE_MS,r=!1,a=null,s=new Set,i=new Set,n=e=>{for(let t of[...e])try{t()}catch(e){console.error("presence listener failed",e)}},{get watching(){return r},track(e){if(e>0){a&&clearTimeout(a),a=null,r||(r=!0,n(i));return}!a&&r&&(a=setTimeout(()=>{a=null,r=!1,n(s)},o))},onGone:e=>(s.add(e),()=>s.delete(e)),onBack:e=>(i.add(e),()=>i.delete(e))});d.__appEventStream??=function(e,t={}){let r=new TextEncoder,a=t.heartbeatMs??2e4,s=0;return{respond:(i,n)=>{let o=()=>{};return new Response(new ReadableStream({async start(c){let u=!1,d=new Map,p=[],f=e=>{if(!u)try{c.enqueue(r.encode(e))}catch{o()}},h=e=>f(`data: ${JSON.stringify(e)}
1
+ module.exports=[874533,(e,t,r)=>{t.exports=e.x("node:child_process",()=>require("node:child_process"))},666680,(e,t,r)=>{t.exports=e.x("node:crypto",()=>require("node:crypto"))},902157,(e,t,r)=>{t.exports=e.x("node:fs",()=>require("node:fs"))},912714,(e,t,r)=>{t.exports=e.x("node:fs/promises",()=>require("node:fs/promises"))},660526,(e,t,r)=>{t.exports=e.x("node:os",()=>require("node:os"))},750227,(e,t,r)=>{t.exports=e.x("node:path",()=>require("node:path"))},59639,(e,t,r)=>{t.exports=e.x("node:process",()=>require("node:process"))},509656,(e,t,r)=>{t.exports=e.x("node:tty",()=>require("node:tty"))},812057,(e,t,r)=>{t.exports=e.x("node:util",()=>require("node:util"))},232347,e=>{"use strict";let t,r,a,i,s,n;var o,c=e.i(333925),l=e.i(938281);let u={threads:!0,routines:!0,memory:!0,mcp:!0,config:!0,reach:!0,signins:!0},d=globalThis,p=d.__appEvents??=(t=new Set,{emit(e){for(let r of[...t])try{r(e)}catch(e){console.error("event listener failed",e)}},subscribe:e=>(t.add(e),()=>{t.delete(e)})}),f=d.__presence??=(o=c.BROWSER_GONE_MS,r=!1,a=null,i=new Set,s=new Set,n=e=>{for(let t of[...e])try{t()}catch(e){console.error("presence listener failed",e)}},{get watching(){return r},track(e){if(e>0){a&&clearTimeout(a),a=null,r||(r=!0,n(s));return}!a&&r&&(a=setTimeout(()=>{a=null,r=!1,n(i)},o))},onGone:e=>(i.add(e),()=>i.delete(e)),onBack:e=>(s.add(e),()=>s.delete(e))});d.__appEventStream??=function(e,t={}){let r=new TextEncoder,a=t.heartbeatMs??2e4,i=0;return{respond:(s,n)=>{let o=()=>{};return new Response(new ReadableStream({async start(c){let u=!1,d=new Map,p=[],f=e=>{if(!u)try{c.enqueue(r.encode(e))}catch{o()}},w=e=>f(`data: ${JSON.stringify(e)}
2
2
 
3
- `),w=e=>{let r=t.coalesce?.keyOf(e)??null;if(null===r)return h(e);let a=d.get(r);a&&clearTimeout(a),d.set(r,setTimeout(()=>{d.delete(r),h(e)},t.coalesce?.ms))},m=e.subscribe(e=>p?p.push(e):w(e)),S=setInterval(()=>f(": ping\n\n"),a);s+=1,t.onWatchers?.(s),o=()=>{if(!u){for(let e of(u=!0,s-=1,t.onWatchers?.(s),m(),clearInterval(S),d.values()))clearTimeout(e);try{c.close()}catch{}}},i.addEventListener("abort",o);try{for(let e of await n?.()??[])h(e)}catch(e){l.logger.error("event stream opening failed",e),o();return}let T=p;for(let e of(p=null,T))w(e)},cancel(){o()}}),{headers:{"Content-Type":"text/event-stream; charset=utf-8","Cache-Control":"no-store","X-Accel-Buffering":"no"}})},get watchers(){return s}}}(p,{coalesce:{ms:150,keyOf:e=>e.type in u?e.type:null},onWatchers:f.track}),d.__bootId??=crypto.randomUUID(),e.s(["appEvents",0,p,"presence",0,f],232347)},333925,e=>{"use strict";let t=process.env.THURSDAY_APP_DIR?.trim()||process.cwd(),r=process.env.THURSDAY_HOME?.trim()||process.cwd(),a=process.env.THURSDAY_URL?.trim()||`http://localhost:${process.env.PORT?.trim()||3e3}`,s=`file:${r}/local.db`,i=".ai-workspace",n={workspace:i,artifacts:"artifacts",projects:"projects",scratch:"scratch",bots:"bots",output:".output",signIns:".sign-ins",skills:{default:"skills",custom:`${i}/.agents/skills`,own:".agents/skills",seeds:"seed-skills"}};e.s(["APP_DIR",0,t,"APP_NAME",0,"Thursday","APP_URL",0,a,"ASCII_FACE",0,{charset:"emojiOnly",fontSize:{default:8,min:4,max:16},density:{default:1.4,min:.6,max:2}},"BOT_MEMORY_LIMITS",0,{files:20,chars:1e4},"BOT_RUN",0,{steps:100,compactAt:5e5,compactHeadroom:.8,summaryWords:{min:600,max:3e3,perTokens:200},participants:12,concurrent:4,turns:120,queuedMessages:200,silenceMs:3e5,overflowShrink:.6,retryMs:1e4,compactFiles:40},"BOT_WORK",0,{open:5,recent:5,said:80,files:2,reads:2,asked:400,readChars:4e3},"BROWSER_GONE_MS",0,1e4,"BROWSER_VIEWPORT",0,"700x700","CALL_EXEC_TIMEOUT_MS",0,15e3,"CALL_RELAY",0,{quietMs:7e3,perTurn:3,readMs:15e3,chars:600},"CHATGPT_SIGN_IN",0,{waitMs:6e5,renewBeforeMs:3e5},"CONNECTED_TOOL_TIMEOUT_MS",0,6e5,"DATA_DIR",0,r,"DB_FILE_NAME",0,s,"EXEC_KILL_GRACE_MS",0,5e3,"EXEC_TIMEOUT_MS",0,18e4,"FINISHED_NOTICE",0,{rows:5,words:240},"GIVEN_FILES",0,{dir:"inbox",maxBytes:0x1900000,perMessage:8},"INBOX_FINISHED",0,5,"IS_DEV",0,!1,"LIVE_CALL",0,{startupMs:3e4,closeMs:15e3,transcriptGapMs:1500,transcriptSaveMs:500,appendMs:15e3,backendOutputTokens:4096,reasoningCheckMs:5e3,keyCheckMs:5e3},"LOOK",0,{maxBytes:4194304},"MEMORY_CONVERSATION_PAGE",0,100,"MEMORY_LIMITS",0,{facts:400,factsPerNote:50,carried:20,expanded:10},"PATHS",0,n,"PROMPT_BUDGET",0,6e3,"PROMPT_LINE",0,{skill:90,toolArgs:30,jobOutcome:160,botMemory:100},"REACH",0,{pollSeconds:50,retryMs:5e3,idleMs:6e5,notifyAfterMs:6e4,chars:3500,files:3,fileBytes:0x2d00000},"RECENT_CALL",0,{rows:20,tokens:600},"ROUTINE",0,{tickMs:3e4,max:12,minHours:1,runsShown:5},"SEARCH",0,{sources:3,excerptChars:1200,timeoutMs:3e4},"STUDIO_SERVER",0,"studio","TEXT_CALL",0,{maxSteps:12,model:"text"},"THREAD_STATUS_LIMIT",0,10,"TOOL_OUTPUT",0,{max:8e3,head:5500,tail:1500},"WORKSPACE_KEEP",0,{forMs:2592e5,sweepEveryMs:36e5}])},379651,377205,e=>{"use strict";var t=e.i(912714),r=e.i(750227),a=e.i(232347),s=e.i(333925),i=e.i(871096),n=e.i(938281);let o=e=>e.trim().toLowerCase().replace(/^[a-z]+:\/\//,"").replace(/^www\./,"").replace(/[/?#].*$/,"");e.s(["siteOf",0,o],377205);let c=(0,r.join)(s.DATA_DIR,s.PATHS.signIns),l=e=>(0,r.join)(c,`${encodeURIComponent(o(e))}.json`);async function u(e){try{return JSON.parse(await (0,t.readFile)(l(e),"utf8"))}catch{return null}}async function d(e){await (0,t.mkdir)(c,{recursive:!0}),await (0,t.writeFile)(l(e.site),JSON.stringify(e),{mode:384}),a.appEvents.emit({type:"signins"})}async function p(){let e=await (0,t.readdir)(c).catch(()=>[]);return(await Promise.all(e.filter(e=>e.endsWith(".json")).map(e=>u(decodeURIComponent(e.slice(0,-5)))))).flatMap(e=>e?[(({state:e,...t})=>t)(e)]:[]).sort((e,t)=>e.site.localeCompare(t.site))}async function f(e){let t=o(e.site),r=await u(t),a={site:t,account:e.account.trim()||t,bots:[...new Set([...r?.bots??[],e.bot])],asking:(r?.asking??[]).filter(t=>t!==e.bot),keptAt:new Date().toISOString(),usedAt:r?.usedAt??null,state:e.state};return await d(a),(({state:e,...t})=>t)(a)}async function h(e,t){let r=await u(e);if(!r)return{kind:"none",kept:(await p()).map(e=>e.site)};if(!r.bots.includes(t))return r.asking.includes(t)||await d({...r,asking:[...r.asking,t]}),{kind:"ask",signIn:(({state:e,...t})=>t)(r)};let a={...r,usedAt:new Date().toISOString()};return await d(a),{kind:"state",signIn:(({state:e,...t})=>t)(a),state:r.state}}async function w(){let e=(0,r.join)(i.WORKSPACE,s.PATHS.bots);for(let a of(await (0,t.readdir)(e).catch(()=>[]))){let s=(0,r.join)(e,a,".auth");for(let e of(await (0,t.readdir)(s).catch(()=>[]))){if(!e.endsWith(".json"))continue;let i=(0,r.join)(s,e);try{let o=JSON.parse(await (0,t.readFile)(i,"utf8")),c=e.slice(0,-5),l=(await (0,t.readFile)((0,r.join)(s,"account.txt"),"utf8").catch(()=>"")).trim();await f({site:c,account:l,bot:a,state:o}),await (0,t.rm)(i),n.logger.info(`sign-ins: took in ${a}'s ${c}`)}catch(e){n.logger.warn(`sign-ins: could not take in ${i}`,e)}}}}e.s(["adoptKeptSessions",0,w,"borrowSignIn",0,h,"keepSignIn",0,f],379651)},871096,e=>{"use strict";var t=e.i(666680),r=e.i(902157),a=e.i(912714),s=e.i(660526),i=e.i(750227),n=e.i(333925),o=e.i(938281),c=e.i(874533),l=n;let u=new Set(["node_modules",".git",".next","dist","build",".venv","__pycache__",".turbo","coverage"]);async function*d(e){let t;try{t=await (0,a.readdir)(e,{withFileTypes:!0})}catch{return}for(let r of t){if(u.has(r.name)||r.name.startsWith("."))continue;let t=(0,i.join)(e,r.name);r.isDirectory()?yield*d(t):r.isFile()&&(yield t)}}async function p(e,t,r,s){if(e.length<=s.max)return e;let n=(0,i.join)(r,s.dir),o=(0,i.join)(n,`${new Date().toISOString().replace(/[:.]/g,"-")}-${t.replace(/[^a-zA-Z0-9_-]+/g,"_")}.txt`),c=o;try{await (0,a.mkdir)(n,{recursive:!0}),await (0,a.writeFile)(o,e),c=(0,i.relative)(r,o)||o}catch{c="(could not be written to a file)"}let l=(e.match(/\n/g)?.length??0)+1;return`${e.slice(0,s.head).trimEnd()}
3
+ `),h=e=>{let r=t.coalesce?.keyOf(e)??null;if(null===r)return w(e);let a=d.get(r);a&&clearTimeout(a),d.set(r,setTimeout(()=>{d.delete(r),w(e)},t.coalesce?.ms))},m=e.subscribe(e=>p?p.push(e):h(e)),S=setInterval(()=>f(": ping\n\n"),a);i+=1,t.onWatchers?.(i),o=()=>{if(!u){for(let e of(u=!0,i-=1,t.onWatchers?.(i),m(),clearInterval(S),d.values()))clearTimeout(e);try{c.close()}catch{}}},s.addEventListener("abort",o);try{for(let e of await n?.()??[])w(e)}catch(e){l.logger.error("event stream opening failed",e),o();return}let T=p;for(let e of(p=null,T))h(e)},cancel(){o()}}),{headers:{"Content-Type":"text/event-stream; charset=utf-8","Cache-Control":"no-store","X-Accel-Buffering":"no"}})},get watchers(){return i}}}(p,{coalesce:{ms:150,keyOf:e=>e.type in u?e.type:null},onWatchers:f.track}),d.__bootId??=crypto.randomUUID(),e.s(["appEvents",0,p,"presence",0,f],232347)},333925,e=>{"use strict";let t=process.env.THURSDAY_APP_DIR?.trim()||process.cwd(),r=process.env.THURSDAY_HOME?.trim()||process.cwd(),a=process.env.THURSDAY_URL?.trim()||`http://localhost:${process.env.PORT?.trim()||3e3}`,i=`file:${r}/local.db`,s=".ai-workspace",n={workspace:s,artifacts:"artifacts",projects:"projects",scratch:"scratch",bots:"bots",output:".output",signIns:".sign-ins",skills:{default:"skills",custom:`${s}/.agents/skills`,own:".agents/skills",seeds:"seed-skills"}};e.s(["APP_DIR",0,t,"APP_NAME",0,"Thursday","APP_URL",0,a,"ASCII_FACE",0,{charset:"emojiOnly",fontSize:{default:8,min:4,max:16},density:{default:1.4,min:.6,max:2}},"BOT_MEMORY_LIMITS",0,{files:20,chars:1e4},"BOT_RUN",0,{steps:100,compactAt:5e5,compactHeadroom:.8,summaryWords:{min:600,max:3e3,perTokens:200},participants:12,concurrent:4,turns:120,queuedMessages:200,silenceMs:3e5,overflowShrink:.6,retryMs:1e4,compactFiles:40},"BOT_WORK",0,{open:5,recent:5,said:80,files:2,reads:2,asked:400,readChars:4e3},"BROWSER_GONE_MS",0,1e4,"BROWSER_VIEWPORT",0,"700x700","CALL_EXEC_TIMEOUT_MS",0,15e3,"CALL_RELAY",0,{quietMs:7e3,perTurn:3,readMs:15e3,chars:600},"CHATGPT_SIGN_IN",0,{waitMs:6e5,renewBeforeMs:3e5},"CONNECTED_TOOL_TIMEOUT_MS",0,6e5,"DATA_DIR",0,r,"DB_FILE_NAME",0,i,"EXEC_KILL_GRACE_MS",0,5e3,"EXEC_TIMEOUT_MS",0,18e4,"FINISHED_NOTICE",0,{rows:5,words:240},"GIVEN_FILES",0,{dir:"inbox",maxBytes:0x1900000,perMessage:8},"INBOX_FINISHED",0,5,"IS_DEV",0,!1,"LIVE_CALL",0,{startupMs:3e4,closeMs:15e3,transcriptGapMs:1500,transcriptSaveMs:500,appendMs:15e3,backendOutputTokens:4096,reasoningCheckMs:5e3,keyCheckMs:5e3},"LOOK",0,{maxBytes:4194304},"MEMORY_CONVERSATION_PAGE",0,100,"MEMORY_LIMITS",0,{facts:400,factsPerNote:50,carried:20,expanded:10},"PATHS",0,n,"PROMPT_BUDGET",0,6e3,"PROMPT_LINE",0,{skill:90,toolArgs:30,jobOutcome:160,botMemory:100},"REACH",0,{pollSeconds:50,retryMs:5e3,idleMs:6e5,notifyAfterMs:6e4,chars:3500,files:3,fileBytes:0x2d00000},"RECENT_CALL",0,{rows:20,tokens:600},"ROUTINE",0,{tickMs:3e4,max:12,minHours:1,runsShown:5},"SEARCH",0,{sources:3,excerptChars:1200,timeoutMs:3e4},"STUDIO_SERVER",0,"studio","TEXT_CALL",0,{maxSteps:12,model:"text"},"THREAD_STATUS_LIMIT",0,10,"TOOL_OUTPUT",0,{max:8e3,head:5500,tail:1500},"WORKSPACE_KEEP",0,{forMs:2592e5,sweepEveryMs:36e5}])},379651,377205,e=>{"use strict";var t=e.i(912714),r=e.i(750227),a=e.i(232347),i=e.i(333925),s=e.i(871096),n=e.i(938281);let o=e=>e.trim().toLowerCase().replace(/^[a-z]+:\/\//,"").replace(/^www\./,"").replace(/[/?#].*$/,"");e.s(["siteOf",0,o],377205);let c=(0,r.join)(i.DATA_DIR,i.PATHS.signIns),l=e=>(0,r.join)(c,`${encodeURIComponent(o(e))}.json`);async function u(e){try{return JSON.parse(await (0,t.readFile)(l(e),"utf8"))}catch{return null}}async function d(e){await (0,t.mkdir)(c,{recursive:!0}),await (0,t.writeFile)(l(e.site),JSON.stringify(e),{mode:384}),a.appEvents.emit({type:"signins"})}async function p(){let e=await (0,t.readdir)(c).catch(()=>[]);return(await Promise.all(e.filter(e=>e.endsWith(".json")).map(e=>u(decodeURIComponent(e.slice(0,-5)))))).flatMap(e=>e?[(({state:e,...t})=>t)(e)]:[]).sort((e,t)=>e.site.localeCompare(t.site))}async function f(e){let t=o(e.site),r=await u(t),a={site:t,account:e.account.trim()||t,bots:[...new Set([...r?.bots??[],e.bot])],asking:(r?.asking??[]).filter(t=>t!==e.bot),keptAt:new Date().toISOString(),usedAt:r?.usedAt??null,state:e.state};return await d(a),(({state:e,...t})=>t)(a)}async function w(e,t){let r=await u(e);if(!r)return{kind:"none",kept:(await p()).map(e=>e.site)};if(!r.bots.includes(t))return r.asking.includes(t)||await d({...r,asking:[...r.asking,t]}),{kind:"ask",signIn:(({state:e,...t})=>t)(r)};let a={...r,usedAt:new Date().toISOString()};return await d(a),{kind:"state",signIn:(({state:e,...t})=>t)(a),state:r.state}}let h=e=>`${e.name}
4
+ ${e.domain}
5
+ ${e.path}`;async function m(e){let r,a=await (0,t.readdir)(c).catch(()=>[]);if(!a.some(e=>e.endsWith(".json")))return;let i=await (0,s.openWorkspace)(),n=(0,s.jobShellEnv)(e),{browsers:o}=JSON.parse((await i.exec("playwright-cli list --json",{env:n,timeoutMs:15e3})).stdout||"{}"),l=o?.find(e=>e.name===n.PLAYWRIGHT_CLI_SESSION);if(!l||l.attached)return;let p=`.playwright-cli/state-${crypto.randomUUID()}.json`;try{let e=await i.exec(`mkdir -p .playwright-cli && playwright-cli state-save ${p}`,{env:n,timeoutMs:3e4});if(0!==e.exitCode)return;let t=JSON.parse(await i.readFile(p,"utf-8"));r=new Map((t.cookies??[]).map(e=>[h(e),e]))}finally{await i.exec(`rm -f ${p}`)}for(let e of a){if(!e.endsWith(".json"))continue;let t=await u(decodeURIComponent(e.slice(0,-5))),a=t?.state;if(!t||!a?.cookies)continue;let i=!1,s=a.cookies.map(e=>{let t=r.get(h(e));return t&&JSON.stringify(t)!==JSON.stringify(e)?(i=!0,t):e});i&&await d({...t,state:{...a,cookies:s}})}}async function S(){let e=(0,r.join)(s.WORKSPACE,i.PATHS.bots);for(let a of(await (0,t.readdir)(e).catch(()=>[]))){let i=(0,r.join)(e,a,".auth");for(let e of(await (0,t.readdir)(i).catch(()=>[]))){if(!e.endsWith(".json"))continue;let s=(0,r.join)(i,e);try{let o=JSON.parse(await (0,t.readFile)(s,"utf8")),c=e.slice(0,-5),l=(await (0,t.readFile)((0,r.join)(i,"account.txt"),"utf8").catch(()=>"")).trim();await f({site:c,account:l,bot:a,state:o}),await (0,t.rm)(s),n.logger.info(`sign-ins: took in ${a}'s ${c}`)}catch(e){n.logger.warn(`sign-ins: could not take in ${s}`,e)}}}}e.s(["adoptKeptSessions",0,S,"borrowSignIn",0,w,"keepSignIn",0,f,"renewSignIns",0,m],379651)},871096,e=>{"use strict";var t=e.i(666680),r=e.i(902157),a=e.i(912714),i=e.i(660526),s=e.i(750227),n=e.i(333925),o=e.i(938281),c=e.i(874533),l=n;let u=new Set(["node_modules",".git",".next","dist","build",".venv","__pycache__",".turbo","coverage"]);async function*d(e){let t;try{t=await (0,a.readdir)(e,{withFileTypes:!0})}catch{return}for(let r of t){if(u.has(r.name)||r.name.startsWith("."))continue;let t=(0,s.join)(e,r.name);r.isDirectory()?yield*d(t):r.isFile()&&(yield t)}}async function p(e,t,r,i){if(e.length<=i.max)return e;let n=(0,s.join)(r,i.dir),o=(0,s.join)(n,`${new Date().toISOString().replace(/[:.]/g,"-")}-${t.replace(/[^a-zA-Z0-9_-]+/g,"_")}.txt`),c=o;try{await (0,a.mkdir)(n,{recursive:!0}),await (0,a.writeFile)(o,e),c=(0,s.relative)(r,o)||o}catch{c="(could not be written to a file)"}let l=(e.match(/\n/g)?.length??0)+1;return`${e.slice(0,i.head).trimEnd()}
4
6
 
5
- [${t} cut at ${s.max.toLocaleString("en")} chars — the whole thing (${l} lines) is at ${c}. Read the part you need with \`sed -n\`.]
7
+ [${t} cut at ${i.max.toLocaleString("en")} chars — the whole thing (${l} lines) is at ${c}. Read the part you need with \`sed -n\`.]
6
8
 
7
- ${e.slice(-s.tail).trimStart()}`}let f=n.APP_DIR,h=(0,i.join)(n.DATA_DIR,n.PATHS.workspace),w=(process.env.THURSDAY_TOOL_PATH?.split(":")??[(0,i.join)(f,"node_modules",".bin")]).filter(Boolean),m=(0,i.join)(h,n.PATHS.artifacts),S=[n.PATHS.artifacts,n.PATHS.projects,n.PATHS.scratch,n.PATHS.bots],T=new Set([...S,".agents"]),_=(e,t)=>t===e||t.startsWith(e+i.sep),E=e=>(0,a.realpath)(e).catch(()=>null);async function y(e){let t=await E(h)??h,r=(0,i.resolve)(h,e);if(!_(h,r))return null;let a=r,s=await E(a);for(;null===s&&(0,i.dirname)(a)!==a;)a=(0,i.dirname)(a),s=await E(a);if(null===s)return null;let n=(0,i.relative)(a,r),o=n?(0,i.join)(s,n):s;return _(t,o)?o:null}function g(e,t){let r=t.trim().toLowerCase().replace(/[^\p{L}\p{N}]+/gu,"-").replace(/^-+|-+$/g,"").slice(0,40)||"job";return`${n.PATHS.scratch}/${r}-${e.slice(0,6)}`}let A=e=>`${n.PATHS.bots}/${e.replace(/[^\p{L}\p{N}_-]+/gu,"-")}`,I=e=>`${n.PATHS.artifacts}/${e.replace(/[^\p{L}\p{N}_-]+/gu,"-")}`;async function O(e){let t=A(e),r=I(e);return await Promise.all([t,r].map(e=>(0,a.mkdir)((0,i.join)(h,e),{recursive:!0}))),{own:t,artifacts:r}}async function R(e,t){let r=g(e,t);return await (0,a.mkdir)((0,i.join)(h,r),{recursive:!0}),r}let P=e=>({PLAYWRIGHT_MCP_BROWSER:"chromium",...e?{PLAYWRIGHT_CLI_SESSION:`thread-${e}`,PLAYWRIGHT_MCP_VIEWPORT_SIZE:n.BROWSER_VIEWPORT}:{}}),M=null,k={runtimes:["node","python3","uv","bun","deno"],managers:["pnpm","npm","yarn"]};async function b(e){let t=Object.values(k).flat(),{stdout:r}=await e.exec(t.map(e=>`command -v ${e} >/dev/null 2>&1 && printf '%s ' ${e}`).join("; "),{timeoutMs:1e4}),a=new Set(r.trim().split(/\s+/).filter(Boolean)),s=e=>({found:e.filter(e=>a.has(e)),missing:e.filter(e=>!a.has(e))});return{runtimes:s(k.runtimes),managers:s(k.managers),browser:M}}async function v(){if(process.env.THURSDAY_SKIP_BROWSER)return;let e=await G(),t=await e.exec("playwright-cli install-browser chromium").catch(e=>({exitCode:1,stderr:String(e)}));(M=0===t.exitCode)||o.logger.warn(`no browser — bots cannot open a page until \`playwright-cli install-browser chromium\` succeeds: ${t.stderr.trim().split("\n").at(-1)??""}`)}async function C(){await N(),await W()}async function x(e){await H(e,await j(e,!1))}async function L(e){await j(e,!0)}async function $(e){await H(e,await j(e,!0))}async function H(e,r){let n=process.env.XDG_CACHE_HOME||(0,i.join)((0,s.homedir)(),".cache"),c=await (0,a.realpath)(h).catch(()=>h),l=(0,i.join)(n,"ms-playwright","daemon",(0,t.createHash)("sha1").update(c).digest("hex").slice(0,16)),u=P(e).PLAYWRIGHT_CLI_SESSION;for(let e of(await (0,a.readdir)(l).catch(()=>[]))){let t=e.startsWith("ud-")?e.slice(3):e;(t===u||t.startsWith(`${u}-`)||t.startsWith(`${u}.`))&&(r.some(e=>t===e||t.startsWith(`${e}-`)||t.startsWith(`${e}.`))||await (0,a.rm)((0,i.join)(l,e),{recursive:!0,force:!0}).catch(t=>o.logger.warn(`browser data ${e}: ${String(t)}`)))}}async function j(e,t){let r=await G(),a=P(e),s=await r.exec("playwright-cli list --json",{env:a,timeoutMs:15e3}).catch(()=>null),i=[];try{let{browsers:e}=JSON.parse(s?.stdout??"");i=e?.filter(e=>e.name===a.PLAYWRIGHT_CLI_SESSION||e.name.startsWith(`${a.PLAYWRIGHT_CLI_SESSION}-`))??[]}catch{}let n=[];for(let e of i){if(e.attached||!t&&!1!==e.headed){n.push(e.name);continue}await r.exec("playwright-cli close",{env:{...a,PLAYWRIGHT_CLI_SESSION:e.name},timeoutMs:15e3}).catch(()=>{})}return await C(),n}let W=()=>D(n.PATHS.output),N=()=>D(".playwright-cli");async function D(e){let t=(0,i.join)(h,e),r=await (0,a.readdir)(t,{withFileTypes:!0}).catch(()=>[]),s=Date.now()-n.WORKSPACE_KEEP.forMs;for(let e of r){if(!e.isFile())continue;let r=(0,i.join)(t,e.name),n=await (0,a.stat)(r).catch(()=>null);n&&n.mtimeMs<s&&await (0,a.unlink)(r).catch(()=>{})}}async function F(){return(await (0,a.readdir)((0,i.join)(h,n.PATHS.scratch),{withFileTypes:!0}).catch(()=>[])).filter(e=>e.isDirectory()).map(e=>`${n.PATHS.scratch}/${e.name}`)}async function U(e){let t=Date.now()-n.WORKSPACE_KEEP.forMs,r=[];for(let s of e){let e=(0,i.join)(h,s),n=await (0,a.stat)(e).catch(()=>null);n?.isDirectory()&&!(n.mtimeMs>=t)&&(await (0,a.rm)(e,{recursive:!0,force:!0}).catch(()=>{}),r.push(s))}return r}let B={"pnpm-workspace.yaml":"packages:\n - '**'\n",".npmrc":"recursive-install=false\n"};async function G(){for(let e of[...S,".playwright"])await (0,a.mkdir)((0,i.join)(h,e),{recursive:!0});for(let[e,t]of Object.entries(B))await (0,a.writeFile)((0,i.join)(h,e),t,{flag:"wx"}).catch(()=>{});return(({workingDirectory:e,spill:t,toolPath:r})=>{let s=(0,i.resolve)(e),n=(r??[]).filter(Boolean).join(":"),o=e=>e.startsWith("/")||/^[A-Za-z]:/.test(e)?e:(0,i.resolve)(s,e);return{cwd:s,resolve:o,readFile:(e,t)=>(0,a.readFile)(o(e),t),async writeFile(e,t){let r=o(e);await (0,a.mkdir)((0,i.join)(r,".."),{recursive:!0}),await (0,a.writeFile)(r,t)},readdir:(e,t)=>(0,a.readdir)(o(e),t),fold:(e,r="output")=>p(e,r,s,t),async glob(e,{path:t=".",limit:r=200}={}){let a=o(t),s=RegExp("^"+e.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*\*\//g,"(?:.*/)?").replace(/\*/g,"[^/]*").replace(/\?/g,"[^/]")+"$"),n=[];for await(let e of d(a)){let t=(0,i.relative)(a,e).split(i.sep).join("/");if((s.test(t)||s.test(e))&&n.push(e),n.length>=r)break}return n},exec:(e,{cwd:r,timeoutMs:a=l.EXEC_TIMEOUT_MS,signal:i,env:u}={})=>new Promise(d=>{let f,h,w=function(){let e={...process.env};for(let t of Object.keys(e))/KEY|TOKEN|SECRET|PASSWORD|CREDENTIAL|_AUTH/i.test(t)&&delete e[t];return e.TERM="dumb",e.PAGER="cat",e.GIT_PAGER="cat",e}();n&&(w.PATH=`${w.PATH??""}:${n}`);let m=(0,c.spawn)(e,{shell:!0,cwd:r?o(r):s,env:{...w,...u},detached:!0}),S="",T="";m.stdout?.on("data",e=>S+=e),m.stderr?.on("data",e=>T+=e);let _=e=>{try{m.pid&&process.kill(-m.pid,e)}catch{m.kill(e)}},E=!1,y=async e=>{E||(E=!0,clearTimeout(A),clearTimeout(f),clearTimeout(h),i?.removeEventListener("abort",I),d({...e,stdout:await p(e.stdout,"stdout",s,t),stderr:await p(e.stderr,"stderr",s,t)}))},g=e=>{f||E||(T+=`
8
- [${e}]`,_("SIGTERM"),f=setTimeout(()=>{T+="\n[Killed: it did not exit on SIGTERM]",_("SIGKILL"),h=setTimeout(()=>{m.stdout?.destroy(),m.stderr?.destroy(),y({stdout:S,stderr:T,exitCode:-1})},1e3)},l.EXEC_KILL_GRACE_MS))},A=setTimeout(()=>g(`Timed out after ${a}ms`),a),I=()=>g("Aborted");i?.aborted?I():i?.addEventListener("abort",I,{once:!0}),m.on("close",e=>y({stdout:S,stderr:T,exitCode:e??-1})),m.on("error",e=>y({stdout:S,stderr:T+String(e),exitCode:-1}))})}})({workingDirectory:h,spill:{dir:n.PATHS.output,...n.TOOL_OUTPUT},toolPath:w})}async function Y(e,t){let r=e.map(e=>(0,i.resolve)(h,e));if(t){let e=0;for await(let a of d((0,i.join)(h,t)))if(r.push(a),(e+=1)>=500)break}let s=new Map;for(let e of r){let t=await (0,a.stat)(e).catch(()=>null);if(!t?.isFile())continue;let r=(0,i.relative)(h,e);s.set(r&&!r.startsWith("..")?r:e,t.mtimeMs)}return[...s].sort((e,t)=>e[1]-t[1]).map(([e])=>e)}async function K(e,t){await (0,a.rm)((0,i.join)(h,g(e,t)),{recursive:!0,force:!0}).catch(()=>{})}e.s(["WORKSPACE",0,h,"botArtifacts",0,I,"botBrowserSession",0,(e,r)=>`${e}-bot-${(0,t.createHash)("sha256").update(r.trim().toLowerCase()).digest("hex").slice(0,20)}`,"botFolder",0,A,"botShellEnv",0,e=>({THURSDAY_ARTIFACTS:I(e)}),"closeHiddenBrowser",0,x,"closeJobShell",0,L,"ensureBrowser",0,v,"filesOnDisk",0,Y,"insideWorkspace",0,y,"jobScratch",0,g,"jobShellEnv",0,P,"listScratchFolders",0,F,"openBotFolders",0,O,"openJobScratch",0,R,"openWorkspace",0,G,"pruneJobFiles",0,C,"readMachineTools",0,b,"removeJobBrowsers",0,$,"removeJobScratch",0,K,"removeUnchangedFolders",0,U,"writeRefusal",0,function(e,t){if(_(h,e)){let a=(0,i.relative)(h,e),[s,o]=a.split(i.sep);return s&&T.has(s)?t&&s===n.PATHS.artifacts&&o&&o.toLowerCase()!==t.replace(/[^\p{L}\p{N}_-]+/gu,"-").toLowerCase()&&!(0,r.existsSync)((0,i.join)(m,o))?`Not written: ${a} would sit loose at the top of ${n.PATHS.artifacts}/. Your finished work goes in ${I(t)}/.`:null:`Not written: ${a||"the workspace root"} is outside the workspace's folders. Finished work goes under ${t?I(t):n.PATHS.artifacts}/, code under ${n.PATHS.projects}/, your own kit under ${n.PATHS.bots}/, and this job's working material under ${n.PATHS.scratch}/.`}return _(f,e)?`Not written: ${e} is inside the app that is running you, not the user's files. Work in ${h}; outside it, write only where the user pointed you.`:null}],871096)}];
9
+ ${e.slice(-i.tail).trimStart()}`}let f=n.APP_DIR,w=(0,s.join)(n.DATA_DIR,n.PATHS.workspace),h=(process.env.THURSDAY_TOOL_PATH?.split(":")??[(0,s.join)(f,"node_modules",".bin")]).filter(Boolean),m=(0,s.join)(w,n.PATHS.artifacts),S=[n.PATHS.artifacts,n.PATHS.projects,n.PATHS.scratch,n.PATHS.bots],T=new Set([...S,".agents"]),_=(e,t)=>t===e||t.startsWith(e+s.sep),y=e=>(0,a.realpath)(e).catch(()=>null);async function E(e){let t=await y(w)??w,r=(0,s.resolve)(w,e);if(!_(w,r))return null;let a=r,i=await y(a);for(;null===i&&(0,s.dirname)(a)!==a;)a=(0,s.dirname)(a),i=await y(a);if(null===i)return null;let n=(0,s.relative)(a,r),o=n?(0,s.join)(i,n):i;return _(t,o)?o:null}function g(e,t){let r=t.trim().toLowerCase().replace(/[^\p{L}\p{N}]+/gu,"-").replace(/^-+|-+$/g,"").slice(0,40)||"job";return`${n.PATHS.scratch}/${r}-${e.slice(0,6)}`}let A=e=>`${n.PATHS.bots}/${e.replace(/[^\p{L}\p{N}_-]+/gu,"-")}`,I=e=>`${n.PATHS.artifacts}/${e.replace(/[^\p{L}\p{N}_-]+/gu,"-")}`;async function O(e){let t=A(e),r=I(e);return await Promise.all([t,r].map(e=>(0,a.mkdir)((0,s.join)(w,e),{recursive:!0}))),{own:t,artifacts:r}}async function R(e,t){let r=g(e,t);return await (0,a.mkdir)((0,s.join)(w,r),{recursive:!0}),r}let P=e=>({PLAYWRIGHT_MCP_BROWSER:"chromium",...e?{PLAYWRIGHT_CLI_SESSION:`thread-${e}`,PLAYWRIGHT_MCP_VIEWPORT_SIZE:n.BROWSER_VIEWPORT}:{}}),M=null,k={runtimes:["node","python3","uv","bun","deno"],managers:["pnpm","npm","yarn"]};async function v(e){let t=Object.values(k).flat(),{stdout:r}=await e.exec(t.map(e=>`command -v ${e} >/dev/null 2>&1 && printf '%s ' ${e}`).join("; "),{timeoutMs:1e4}),a=new Set(r.trim().split(/\s+/).filter(Boolean)),i=e=>({found:e.filter(e=>a.has(e)),missing:e.filter(e=>!a.has(e))});return{runtimes:i(k.runtimes),managers:i(k.managers),browser:M}}async function b(){if(process.env.THURSDAY_SKIP_BROWSER)return;let e=await G(),t=await e.exec("playwright-cli install-browser chromium").catch(e=>({exitCode:1,stderr:String(e)}));(M=0===t.exitCode)||o.logger.warn(`no browser — bots cannot open a page until \`playwright-cli install-browser chromium\` succeeds: ${t.stderr.trim().split("\n").at(-1)??""}`)}async function $(){await N(),await W()}async function C(e){await H(e,await j(e,!1))}async function x(e){await j(e,!0)}async function L(e){await H(e,await j(e,!0))}async function H(e,r){let n=process.env.XDG_CACHE_HOME||(0,s.join)((0,i.homedir)(),".cache"),c=await (0,a.realpath)(w).catch(()=>w),l=(0,s.join)(n,"ms-playwright","daemon",(0,t.createHash)("sha1").update(c).digest("hex").slice(0,16)),u=P(e).PLAYWRIGHT_CLI_SESSION;for(let e of(await (0,a.readdir)(l).catch(()=>[]))){let t=e.startsWith("ud-")?e.slice(3):e;(t===u||t.startsWith(`${u}-`)||t.startsWith(`${u}.`))&&(r.some(e=>t===e||t.startsWith(`${e}-`)||t.startsWith(`${e}.`))||await (0,a.rm)((0,s.join)(l,e),{recursive:!0,force:!0}).catch(t=>o.logger.warn(`browser data ${e}: ${String(t)}`)))}}async function j(e,t){let r=await G(),a=P(e),i=await r.exec("playwright-cli list --json",{env:a,timeoutMs:15e3}).catch(()=>null),s=[];try{let{browsers:e}=JSON.parse(i?.stdout??"");s=e?.filter(e=>e.name===a.PLAYWRIGHT_CLI_SESSION||e.name.startsWith(`${a.PLAYWRIGHT_CLI_SESSION}-`))??[]}catch{}let n=[];for(let e of s){if(e.attached||!t&&!1!==e.headed){n.push(e.name);continue}await r.exec("playwright-cli close",{env:{...a,PLAYWRIGHT_CLI_SESSION:e.name},timeoutMs:15e3}).catch(()=>{})}return await $(),n}let W=()=>D(n.PATHS.output),N=()=>D(".playwright-cli");async function D(e){let t=(0,s.join)(w,e),r=await (0,a.readdir)(t,{withFileTypes:!0}).catch(()=>[]),i=Date.now()-n.WORKSPACE_KEEP.forMs;for(let e of r){if(!e.isFile())continue;let r=(0,s.join)(t,e.name),n=await (0,a.stat)(r).catch(()=>null);n&&n.mtimeMs<i&&await (0,a.unlink)(r).catch(()=>{})}}async function U(){return(await (0,a.readdir)((0,s.join)(w,n.PATHS.scratch),{withFileTypes:!0}).catch(()=>[])).filter(e=>e.isDirectory()).map(e=>`${n.PATHS.scratch}/${e.name}`)}async function F(e){let t=Date.now()-n.WORKSPACE_KEEP.forMs,r=[];for(let i of e){let e=(0,s.join)(w,i),n=await (0,a.stat)(e).catch(()=>null);n?.isDirectory()&&!(n.mtimeMs>=t)&&(await (0,a.rm)(e,{recursive:!0,force:!0}).catch(()=>{}),r.push(i))}return r}let B={"pnpm-workspace.yaml":"packages:\n - '**'\n",".npmrc":"recursive-install=false\n"};async function G(){for(let e of[...S,".playwright"])await (0,a.mkdir)((0,s.join)(w,e),{recursive:!0});for(let[e,t]of Object.entries(B))await (0,a.writeFile)((0,s.join)(w,e),t,{flag:"wx"}).catch(()=>{});return(({workingDirectory:e,spill:t,toolPath:r})=>{let i=(0,s.resolve)(e),n=(r??[]).filter(Boolean).join(":"),o=e=>e.startsWith("/")||/^[A-Za-z]:/.test(e)?e:(0,s.resolve)(i,e);return{cwd:i,resolve:o,readFile:(e,t)=>(0,a.readFile)(o(e),t),async writeFile(e,t){let r=o(e);await (0,a.mkdir)((0,s.join)(r,".."),{recursive:!0}),await (0,a.writeFile)(r,t)},readdir:(e,t)=>(0,a.readdir)(o(e),t),fold:(e,r="output")=>p(e,r,i,t),async glob(e,{path:t=".",limit:r=200}={}){let a=o(t),i=RegExp("^"+e.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*\*\//g,"(?:.*/)?").replace(/\*/g,"[^/]*").replace(/\?/g,"[^/]")+"$"),n=[];for await(let e of d(a)){let t=(0,s.relative)(a,e).split(s.sep).join("/");if((i.test(t)||i.test(e))&&n.push(e),n.length>=r)break}return n},exec:(e,{cwd:r,timeoutMs:a=l.EXEC_TIMEOUT_MS,signal:s,env:u}={})=>new Promise(d=>{let f,w,h=function(){let e={...process.env};for(let t of Object.keys(e))/KEY|TOKEN|SECRET|PASSWORD|CREDENTIAL|_AUTH/i.test(t)&&delete e[t];return e.TERM="dumb",e.PAGER="cat",e.GIT_PAGER="cat",e}();n&&(h.PATH=`${h.PATH??""}:${n}`);let m=(0,c.spawn)(e,{shell:!0,cwd:r?o(r):i,env:{...h,...u},detached:!0}),S="",T="";m.stdout?.on("data",e=>S+=e),m.stderr?.on("data",e=>T+=e);let _=e=>{try{m.pid&&process.kill(-m.pid,e)}catch{m.kill(e)}},y=!1,E=async e=>{y||(y=!0,clearTimeout(A),clearTimeout(f),clearTimeout(w),s?.removeEventListener("abort",I),d({...e,stdout:await p(e.stdout,"stdout",i,t),stderr:await p(e.stderr,"stderr",i,t)}))},g=e=>{f||y||(T+=`
10
+ [${e}]`,_("SIGTERM"),f=setTimeout(()=>{T+="\n[Killed: it did not exit on SIGTERM]",_("SIGKILL"),w=setTimeout(()=>{m.stdout?.destroy(),m.stderr?.destroy(),E({stdout:S,stderr:T,exitCode:-1})},1e3)},l.EXEC_KILL_GRACE_MS))},A=setTimeout(()=>g(`Timed out after ${a}ms`),a),I=()=>g("Aborted");s?.aborted?I():s?.addEventListener("abort",I,{once:!0}),m.on("close",e=>E({stdout:S,stderr:T,exitCode:e??-1})),m.on("error",e=>E({stdout:S,stderr:T+String(e),exitCode:-1}))})}})({workingDirectory:w,spill:{dir:n.PATHS.output,...n.TOOL_OUTPUT},toolPath:h})}async function Y(e,t){let r=e.map(e=>(0,s.resolve)(w,e));if(t){let e=0;for await(let a of d((0,s.join)(w,t)))if(r.push(a),(e+=1)>=500)break}let i=new Map;for(let e of r){let t=await (0,a.stat)(e).catch(()=>null);if(!t?.isFile())continue;let r=(0,s.relative)(w,e);i.set(r&&!r.startsWith("..")?r:e,t.mtimeMs)}return[...i].sort((e,t)=>e[1]-t[1]).map(([e])=>e)}async function K(e,t){await (0,a.rm)((0,s.join)(w,g(e,t)),{recursive:!0,force:!0}).catch(()=>{})}e.s(["WORKSPACE",0,w,"botArtifacts",0,I,"botBrowserSession",0,(e,r)=>`${e}-bot-${(0,t.createHash)("sha256").update(r.trim().toLowerCase()).digest("hex").slice(0,20)}`,"botFolder",0,A,"botShellEnv",0,e=>({THURSDAY_ARTIFACTS:I(e),THURSDAY_SKILLS:(0,s.join)(n.APP_DIR,n.PATHS.skills.default)}),"closeHiddenBrowser",0,C,"closeJobShell",0,x,"ensureBrowser",0,b,"filesOnDisk",0,Y,"insideWorkspace",0,E,"jobScratch",0,g,"jobShellEnv",0,P,"listScratchFolders",0,U,"openBotFolders",0,O,"openJobScratch",0,R,"openWorkspace",0,G,"pruneJobFiles",0,$,"readMachineTools",0,v,"removeJobBrowsers",0,L,"removeJobScratch",0,K,"removeUnchangedFolders",0,F,"writeRefusal",0,function(e,t){if(_(w,e)){let a=(0,s.relative)(w,e),[i,o]=a.split(s.sep);return i&&T.has(i)?t&&i===n.PATHS.artifacts&&o&&o.toLowerCase()!==t.replace(/[^\p{L}\p{N}_-]+/gu,"-").toLowerCase()&&!(0,r.existsSync)((0,s.join)(m,o))?`Not written: ${a} would sit loose at the top of ${n.PATHS.artifacts}/. Your finished work goes in ${I(t)}/.`:null:`Not written: ${a||"the workspace root"} is outside the workspace's folders. Finished work goes under ${t?I(t):n.PATHS.artifacts}/, code under ${n.PATHS.projects}/, your own kit under ${n.PATHS.bots}/, and this job's working material under ${n.PATHS.scratch}/.`}return _(f,e)?`Not written: ${e} is inside the app that is running you, not the user's files. Work in ${w}; outside it, write only where the user pointed you.`:null}],871096)}];
9
11
 
10
12
  //# sourceMappingURL=%5Broot-of-the-server%5D__0209ah4._.js.map
@@ -1,5 +1,7 @@
1
- module.exports=[500874,(e,t,r)=>{t.exports=e.x("buffer",()=>require("buffer"))},233405,(e,t,r)=>{t.exports=e.x("child_process",()=>require("child_process"))},522734,(e,t,r)=>{t.exports=e.x("fs",()=>require("fs"))},347299,(e,t,r)=>{t.exports=e.x("node:http",()=>require("node:http"))},446786,(e,t,r)=>{t.exports=e.x("os",()=>require("os"))},814747,(e,t,r)=>{t.exports=e.x("path",()=>require("path"))},605365,(e,t,r)=>{t.exports=e.x("process",()=>require("process"))},380690,e=>{"use strict";let t,r,a,n,l,o;var i,s=e.i(687388),c=e.i(640911);let u={threads:!0,routines:!0,memory:!0,mcp:!0,config:!0,reach:!0,signins:!0},d=globalThis,m=d.__appEvents??=(t=new Set,{emit(e){for(let r of[...t])try{r(e)}catch(e){console.error("event listener failed",e)}},subscribe:e=>(t.add(e),()=>{t.delete(e)})}),p=d.__presence??=(i=s.BROWSER_GONE_MS,r=!1,a=null,n=new Set,l=new Set,o=e=>{for(let t of[...e])try{t()}catch(e){console.error("presence listener failed",e)}},{get watching(){return r},track(e){if(e>0){a&&clearTimeout(a),a=null,r||(r=!0,o(l));return}!a&&r&&(a=setTimeout(()=>{a=null,r=!1,o(n)},i))},onGone:e=>(n.add(e),()=>n.delete(e)),onBack:e=>(l.add(e),()=>l.delete(e))}),f=d.__appEventStream??=function(e,t={}){let r=new TextEncoder,a=t.heartbeatMs??2e4,n=0;return{respond:(l,o)=>{let i=()=>{};return new Response(new ReadableStream({async start(s){let u=!1,d=new Map,m=[],p=e=>{if(!u)try{s.enqueue(r.encode(e))}catch{i()}},f=e=>p(`data: ${JSON.stringify(e)}
1
+ module.exports=[500874,(e,t,a)=>{t.exports=e.x("buffer",()=>require("buffer"))},233405,(e,t,a)=>{t.exports=e.x("child_process",()=>require("child_process"))},522734,(e,t,a)=>{t.exports=e.x("fs",()=>require("fs"))},347299,(e,t,a)=>{t.exports=e.x("node:http",()=>require("node:http"))},446786,(e,t,a)=>{t.exports=e.x("os",()=>require("os"))},814747,(e,t,a)=>{t.exports=e.x("path",()=>require("path"))},605365,(e,t,a)=>{t.exports=e.x("process",()=>require("process"))},380690,e=>{"use strict";let t,a,r,n,l,o;var i,s=e.i(687388),c=e.i(640911);let u={threads:!0,routines:!0,memory:!0,mcp:!0,config:!0,reach:!0,signins:!0},d=globalThis,m=d.__appEvents??=(t=new Set,{emit(e){for(let a of[...t])try{a(e)}catch(e){console.error("event listener failed",e)}},subscribe:e=>(t.add(e),()=>{t.delete(e)})}),p=d.__presence??=(i=s.BROWSER_GONE_MS,a=!1,r=null,n=new Set,l=new Set,o=e=>{for(let t of[...e])try{t()}catch(e){console.error("presence listener failed",e)}},{get watching(){return a},track(e){if(e>0){r&&clearTimeout(r),r=null,a||(a=!0,o(l));return}!r&&a&&(r=setTimeout(()=>{r=null,a=!1,o(n)},i))},onGone:e=>(n.add(e),()=>n.delete(e)),onBack:e=>(l.add(e),()=>l.delete(e))}),f=d.__appEventStream??=function(e,t={}){let a=new TextEncoder,r=t.heartbeatMs??2e4,n=0;return{respond:(l,o)=>{let i=()=>{};return new Response(new ReadableStream({async start(s){let u=!1,d=new Map,m=[],p=e=>{if(!u)try{s.enqueue(a.encode(e))}catch{i()}},f=e=>p(`data: ${JSON.stringify(e)}
2
2
 
3
- `),b=e=>{let r=t.coalesce?.keyOf(e)??null;if(null===r)return f(e);let a=d.get(r);a&&clearTimeout(a),d.set(r,setTimeout(()=>{d.delete(r),f(e)},t.coalesce?.ms))},h=e.subscribe(e=>m?m.push(e):b(e)),T=setInterval(()=>p(": ping\n\n"),a);n+=1,t.onWatchers?.(n),i=()=>{if(!u){for(let e of(u=!0,n-=1,t.onWatchers?.(n),h(),clearInterval(T),d.values()))clearTimeout(e);try{s.close()}catch{}}},l.addEventListener("abort",i);try{for(let e of await o?.()??[])f(e)}catch(e){c.logger.error("event stream opening failed",e),i();return}let g=m;for(let e of(m=null,g))b(e)},cancel(){i()}}),{headers:{"Content-Type":"text/event-stream; charset=utf-8","Cache-Control":"no-store","X-Accel-Buffering":"no"}})},get watchers(){return n}}}(m,{coalesce:{ms:150,keyOf:e=>e.type in u?e.type:null},onWatchers:p.track}),b=d.__bootId??=crypto.randomUUID();e.s(["BOOT_ID",0,b,"appEventStream",0,f,"appEvents",0,m,"presence",0,p],380690)},393189,e=>{"use strict";var t=e.i(912714),r=e.i(750227),a=e.i(687388),n=e.i(786025);let l=e=>`${(0,n.botFolder)(e)}/memory`;async function o(e,t=a.BOT_MEMORY_LIMITS.files){let s=l(e),c=(0,r.join)(n.WORKSPACE,s),u=(await i(c)).sort((e,t)=>t.info.mtimeMs-e.info.mtimeMs),m=await Promise.all(u.slice(0,t).map(async({name:e,info:t})=>({file:e,path:`${s}/${e}`,line:await d((0,r.join)(c,e)),at:new Date(t.mtimeMs),bytes:t.size})));return{folder:s,entries:m,total:u.length}}async function i(e){let a=await (0,t.readdir)(e).catch(()=>[]);return(await Promise.all(a.filter(e=>!e.startsWith(".")).map(async a=>{let n=await (0,t.stat)((0,r.join)(e,a)).catch(()=>null);return n?.isFile()?{name:a,info:n}:null}))).filter(e=>null!==e)}async function s(e){let o=(0,r.join)(n.WORKSPACE,l(e)),s=new Map;return await Promise.all((await i(o)).map(async({name:e,info:n})=>{let l=n.size>4*a.BOT_MEMORY_LIMITS.chars?null:await (0,t.readFile)((0,r.join)(o,e),"utf8").catch(()=>null);s.set(e,{text:null!==l&&u(l)<=a.BOT_MEMORY_LIMITS.chars?l:null,size:n.size,mtimeMs:n.mtimeMs,atime:n.atime,mtime:n.mtime})})),s}async function c(e,o){let s=l(e),c=(0,r.join)(n.WORKSPACE,s),{files:d,chars:m}=a.BOT_MEMORY_LIMITS,p=[],f=[],b=0;for(let{name:e,info:a}of(await i(c))){b+=1;let n=o.get(e);if(n&&n.size===a.size&&n.mtimeMs===a.mtimeMs)continue;let l=(0,r.join)(c,e),i=u(await (0,t.readFile)(l,"utf8").catch(()=>""));if(i<=m){n||f.push(e);continue}let d=`${i.toLocaleString("en-US")} characters, past the ${m.toLocaleString("en-US")} a memory file holds`;n?null!==n.text?(await (0,t.writeFile)(l,n.text),await (0,t.utimes)(l,n.atime,n.mtime),p.push(`Not kept: \`${s}/${e}\` came to ${d}, so it is back as it was. Write it again shorter.`)):p.push(`\`${s}/${e}\` is ${d}. Shorten it.`):(await (0,t.rm)(l,{force:!0}),b-=1,p.push(`Not kept: \`${s}/${e}\` came to ${d}, so it was removed. Write it again shorter.`))}if(b>d&&f.length){await Promise.all(f.map(e=>(0,t.rm)((0,r.join)(c,e),{force:!0})));let e=f.map(e=>`\`${s}/${e}\``).join(", ");p.push(`Not kept: your memory holds ${d} files at most and this made ${b}, so ${e} ${1===f.length?"was":"were"} removed. Delete or merge files no longer worth keeping, then write it again.`)}return p.length?p.join("\n"):null}let u=e=>[...e.trim()].length;async function d(e){let r=await (0,t.open)(e,"r").catch(()=>null);if(!r)return"";try{let e=Buffer.alloc(1024),{bytesRead:t}=await r.read(e,0,1024,0),a=e.toString("utf8",0,t).split("\n").map(e=>e.trim()).filter(Boolean);if("---"===a[0]){let e=a.find(e=>e.startsWith("description:"));if(e)return e.slice(12).trim().replace(/^["']|["']$/g,"");let t=a.indexOf("---",1);return t>0?(a[t+1]??"").replace(/^#+\s*/,""):""}return(a[0]??"").replace(/^#+\s*/,"")}finally{await r.close()}}e.s(["botMemoryFolder",0,l,"holdBotMemory",0,s,"keepBotMemory",0,c,"listBotMemory",0,o])},148831,e=>e.a(async(t,r)=>{try{var a=e.i(875225),n=e.i(260338),l=e.i(518899),o=e.i(380690),i=e.i(528790),s=e.i(613240),c=e.i(441963),u=t([i]);function d(e){return(0,c.isRemoteConfig)(e)?{url:e.url}:{command:e.command,args:e.args}}async function m(){return(await i.database.select({name:s.mcpServerTable.name,config:s.mcpServerTable.config,lastError:s.mcpServerTable.lastError,toolCount:(0,n.count)(s.mcpToolTable.id)}).from(s.mcpServerTable).leftJoin(s.mcpToolTable,(0,a.eq)(s.mcpToolTable.serverName,s.mcpServerTable.name)).groupBy(s.mcpServerTable.name)).map(e=>({...e,config:d(e.config)}))}async function p(e){let[t]=await i.database.select({name:s.mcpServerTable.name,config:s.mcpServerTable.config,lastError:s.mcpServerTable.lastError,toolsSyncedAt:s.mcpServerTable.toolsSyncedAt}).from(s.mcpServerTable).where((0,a.eq)(s.mcpServerTable.name,e));return t?{...t,config:d(t.config),tools:await f(e)}:null}async function f(e){return i.database.select({id:s.mcpToolTable.id,name:s.mcpToolTable.name,description:s.mcpToolTable.description,inputSchema:s.mcpToolTable.inputSchema,outputSchema:s.mcpToolTable.outputSchema}).from(s.mcpToolTable).where((0,a.eq)(s.mcpToolTable.serverName,e)).orderBy(s.mcpToolTable.name)}async function b(e){let[t]=await i.database.select().from(s.mcpServerTable).where((0,a.eq)(s.mcpServerTable.name,e));return t??null}[i]=u.then?(await u)():u;let v=()=>o.appEvents.emit({type:"mcp"});async function h(e,t){await i.database.transaction(async r=>{t.length&&await r.insert(s.mcpToolTable).values(t.map(t=>({...t,serverName:e}))).onConflictDoUpdate({target:[s.mcpToolTable.serverName,s.mcpToolTable.name],set:{description:T(s.mcpToolTable.description),inputSchema:T(s.mcpToolTable.inputSchema),outputSchema:T(s.mcpToolTable.outputSchema)}}),await r.delete(s.mcpToolTable).where(t.length?(0,a.and)((0,a.eq)(s.mcpToolTable.serverName,e),(0,a.notInArray)(s.mcpToolTable.name,t.map(e=>e.name))):(0,a.eq)(s.mcpToolTable.serverName,e)),await r.update(s.mcpServerTable).set({lastError:null,toolsSyncedAt:new Date}).where((0,a.eq)(s.mcpServerTable.name,e))}),v()}function T(e){return l.sql.raw(`excluded."${e.name}"`)}async function g(e,t){await i.database.update(s.mcpServerTable).set({lastError:t}).where((0,a.eq)(s.mcpServerTable.name,e)),v()}async function y(e,t){await i.database.update(s.mcpServerTable).set({oauth:t}).where((0,a.eq)(s.mcpServerTable.name,e)),v()}async function w(e){let[t]=await i.database.select().from(s.mcpServerTable).where(l.sql`json_extract(${s.mcpServerTable.oauth}, '$.state') = ${e}`);return t??null}e.s(["findAllServers",0,m,"findAllTools",0,function(){return i.database.select({id:s.mcpToolTable.id,name:s.mcpToolTable.name,serverName:s.mcpToolTable.serverName,description:s.mcpToolTable.description}).from(s.mcpToolTable).orderBy(s.mcpToolTable.serverName,s.mcpToolTable.name)},"findPinnedTools",0,function(e){return i.database.select({server:s.mcpToolTable.serverName,name:s.mcpToolTable.name,description:s.mcpToolTable.description,inputSchema:s.mcpToolTable.inputSchema}).from(s.botMcpToolTable).innerJoin(s.mcpToolTable,(0,a.eq)(s.botMcpToolTable.toolId,s.mcpToolTable.id)).where((0,a.eq)(s.botMcpToolTable.botName,e)).orderBy(s.mcpToolTable.serverName,s.mcpToolTable.name)},"findServer",0,b,"findServerByOAuthState",0,w,"findServerDetail",0,p,"findToolSchemas",0,function(e,t){return t.length?i.database.select({name:s.mcpToolTable.name,description:s.mcpToolTable.description,inputSchema:s.mcpToolTable.inputSchema}).from(s.mcpToolTable).where((0,a.and)((0,a.eq)(s.mcpToolTable.serverName,e),(0,a.inArray)(s.mcpToolTable.name,t))).orderBy(s.mcpToolTable.name):Promise.resolve([])},"listServerNames",0,function(){return i.database.select({name:s.mcpServerTable.name}).from(s.mcpServerTable).orderBy(s.mcpServerTable.name)},"listToolNames",0,function(e){let t=i.database.select({server:s.mcpToolTable.serverName,name:s.mcpToolTable.name}).from(s.mcpToolTable);return e?t.where((0,a.eq)(s.mcpToolTable.serverName,e)).orderBy(s.mcpToolTable.name):t.orderBy(s.mcpToolTable.serverName,s.mcpToolTable.name)},"saveConnectionError",0,g,"saveOAuthData",0,y,"syncServerTools",0,h]),r()}catch(e){r(e)}},!1),441963,e=>{"use strict";var t=e.i(469719),r=e.i(704161);let a=t.z.object({url:t.z.url(),headers:t.z.record(t.z.string(),t.z.string()).optional(),oauthClient:t.z.object({clientId:t.z.string().min(1),clientSecret:t.z.string().optional()}).optional()}),n=t.z.object({command:t.z.string().min(1),args:t.z.array(t.z.string()).optional(),env:t.z.record(t.z.string(),t.z.string()).optional()}),l=t.z.union([a,n]),o=t.z.object({name:t.z.string(),description:t.z.string().optional(),inputSchema:t.z.looseObject({}).optional(),outputSchema:t.z.looseObject({}).optional()});t.z.object({clientInformation:t.z.looseObject({}).optional(),tokens:t.z.looseObject({}).optional(),authorizationServer:t.z.looseObject({}).optional(),codeVerifier:t.z.string().optional(),state:t.z.string().optional()});let i=t.z.object({name:t.z.string().min(1).max(40),config:l,toolCount:t.z.number().int(),lastError:t.z.string().nullish()}),s=o.extend({id:t.z.number().int(),description:t.z.string().nullish()});i.omit({toolCount:!0}).extend({tools:s.array().default([]),toolsSyncedAt:r.DateLikeSchema}),t.z.object({name:t.z.string().min(1,"Name is required").max(40).regex(/^[a-zA-Z0-9_-]+$/,"Only letters, numbers, - and _ are allowed"),config:l}),t.z.union([t.z.object({mcpServers:t.z.record(t.z.string(),l)}),t.z.record(t.z.string(),l)]),e.s(["isRemoteConfig",0,function(e){return"url"in e}])},963219,e=>e.a(async(t,r)=>{try{var a=e.i(260338),n=e.i(349129),l=e.i(875225),o=e.i(380690),i=e.i(687388),s=e.i(528790),c=e.i(613240),u=e.i(265143),d=e.i(53748),m=e.i(473139),p=t([s,u]);[s,u]=p.then?(await p)():p;let S=()=>o.appEvents.emit({type:"routines"});async function f(e,t){return s.database.select({id:c.threadTable.id,status:c.threadTable.status,outcome:c.threadTable.outcome,updatedAt:c.threadTable.updatedAt}).from(c.threadTable).where((0,l.eq)(c.threadTable.routineId,e)).orderBy((0,n.desc)(c.threadTable.createdAt)).limit(t)}let O=async e=>{let{createdAt:t,...r}=e;return{...r,runs:await f(e.id,i.ROUTINE.runsShown)}};async function b(){let e=await s.database.select().from(c.routineTable).orderBy(c.routineTable.createdAt);return Promise.all(e.map(O))}async function h(e){let[t]=await s.database.select().from(c.routineTable).where((0,l.eq)(c.routineTable.id,e));return t?O(t):null}async function T(e){let t=await h(e.trim());if(t)return t;let r=e.trim().toLowerCase(),a=(await b()).filter(e=>e.label.toLowerCase()===r);return 1===a.length?a[0]:null}async function g(e){let t=await (0,u.findJobBot)(e);return(!t||t.disabled)&&(0,d.publicError)("Choose an enabled bot."),t.name}function y(e,t){t&&"once"===e.kind&&(0,m.momentOf)(e.at)<=new Date&&(0,d.publicError)("That time has passed. Pick a later one.")}async function w(e){let[{total:t}]=await s.database.select({total:(0,a.count)()}).from(c.routineTable);t>=i.ROUTINE.max&&(0,d.publicError)(`There are already ${i.ROUTINE.max} routines. Delete one to make another.`),y(e.schedule,!0);let[r]=await s.database.insert(c.routineTable).values({id:crypto.randomUUID(),...e,bot:await g(e.bot),nextRunAt:(0,m.nextRun)(e.schedule,new Date)}).returning();return S(),O(r)}async function v(e,t){let[r]=await s.database.select().from(c.routineTable).where((0,l.eq)(c.routineTable.id,e));if(!r)return null;let a=t.schedule??r.schedule,n=!!t.schedule||t.enabled&&!r.enabled;n&&y(a,t.enabled??r.enabled);let[o]=await s.database.update(c.routineTable).set({...t,...t.bot?{bot:await g(t.bot)}:{},...n?{nextRunAt:(0,m.nextRun)(a,new Date)}:{}}).where((0,l.eq)(c.routineTable.id,e)).returning();return S(),O(o)}async function k(e){let t=await s.database.delete(c.routineTable).where((0,l.eq)(c.routineTable.id,e)).returning({id:c.routineTable.id});return t.length&&S(),t.length>0}e.s(["createRoutine",0,w,"deleteRoutine",0,k,"listRoutines",0,b,"resolveRoutine",0,T,"updateRoutine",0,v]),r()}catch(e){r(e)}},!1),473139,e=>{"use strict";var t=e.i(105249),r=e.i(687388),a=e.i(704161);let n=t.default.string().regex(/^([01]\d|2[0-3]):[0-5]\d$/,"A time is HH:MM, 00:00 to 23:59");function l(e){let[t,r]=e.split(" "),[a,n,l]=t.split("-").map(Number),[o,i]=r.split(":").map(Number);return new Date(a,n-1,l,o,i)}let o=/^\d{4}-\d\d-\d\d ([01]\d|2[0-3]):[0-5]\d$/,i=t.default.string().regex(o,'A moment is "YYYY-MM-DD HH:MM"').refine(e=>{if(!o.test(e))return!0;let t=l(e);return t.getMonth()===Number(e.slice(5,7))-1&&t.getDate()===Number(e.slice(8,10))},"There is no such day"),s=t.default.discriminatedUnion("kind",[t.default.object({kind:t.default.literal("once"),at:i}),t.default.object({kind:t.default.literal("daily"),time:n,days:t.default.array(t.default.number().int().min(1).max(7)).min(1,"Pick at least one day").transform(e=>[...new Set(e)].sort((e,t)=>e-t))}),t.default.object({kind:t.default.literal("every"),hours:t.default.number().int().min(r.ROUTINE.minHours,`No more often than every ${r.ROUTINE.minHours}h`).max(168)})]),c=t.default.object({bot:t.default.string().trim().min(1,"Pick a bot"),label:t.default.string().trim().min(1,"Give it a name").max(80),request:t.default.string().trim().min(1,"Say what it should do"),schedule:s}),u=t.default.object({id:t.default.string(),status:t.default.enum(["running","waiting","done","cancelled"]),outcome:t.default.string().nullable(),updatedAt:a.DateLikeSchema});c.extend({id:t.default.string(),enabled:t.default.boolean(),nextRunAt:a.DateLikeSchema,runs:t.default.array(u)});let d=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],m=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];e.s(["RoutineInputSchema",0,c,"RoutineScheduleSchema",0,s,"momentOf",0,l,"nextRun",0,function(e,t){if("once"===e.kind)return l(e.at);if("every"===e.kind)return new Date(t.getTime()+36e5*e.hours);let[r,a]=e.time.split(":").map(Number);for(let n=0;n<=7;n++){let l=new Date(t);l.setDate(l.getDate()+n),l.setHours(r,a,0,0);let o=0===l.getDay()?7:l.getDay();if(l>t&&e.days.includes(o))return l}return new Date(t.getTime()+864e5)},"scheduleText",0,function(e){if("once"===e.kind){let[t,r]=e.at.split(" "),[,a,n]=t.split("-").map(Number);return`Once \xb7 ${m[a-1]} ${n} ${r}`}if("every"===e.kind)return 1===e.hours?"Every hour":`Every ${e.hours} hours`;let{days:t,time:r}=e;if(7===t.length)return`Daily ${r}`;if(1===t.length)return`${d[t[0]-1]} ${r}`;let a=t.every((e,r)=>0===r||e===t[r-1]+1)?`${d[t[0]-1]}–${d[t.at(-1)-1]}`:t.map(e=>d[e-1]).join(" ");return`Daily ${r} \xb7 ${a}`}])},527608,824664,e=>{"use strict";var t=e.i(912714),r=e.i(750227),a=e.i(380690),n=e.i(687388);e.i(786025),e.i(640911);let l=e=>e.trim().toLowerCase().replace(/^[a-z]+:\/\//,"").replace(/^www\./,"").replace(/[/?#].*$/,"");e.s(["siteOf",0,l],824664);let o=(0,r.join)(n.DATA_DIR,n.PATHS.signIns),i=e=>(0,r.join)(o,`${encodeURIComponent(l(e))}.json`);async function s(e){try{return JSON.parse(await (0,t.readFile)(i(e),"utf8"))}catch{return null}}async function c(e){await (0,t.mkdir)(o,{recursive:!0}),await (0,t.writeFile)(i(e.site),JSON.stringify(e),{mode:384}),a.appEvents.emit({type:"signins"})}async function u(){let e=await (0,t.readdir)(o).catch(()=>[]);return(await Promise.all(e.filter(e=>e.endsWith(".json")).map(e=>s(decodeURIComponent(e.slice(0,-5)))))).flatMap(e=>e?[(({state:e,...t})=>t)(e)]:[]).sort((e,t)=>e.site.localeCompare(t.site))}async function d(e){let t=l(e.site),r=await s(t),a={site:t,account:e.account.trim()||t,bots:[...new Set([...r?.bots??[],e.bot])],asking:(r?.asking??[]).filter(t=>t!==e.bot),keptAt:new Date().toISOString(),usedAt:r?.usedAt??null,state:e.state};return await c(a),(({state:e,...t})=>t)(a)}async function m(e,t){let r=await s(e);if(!r)return{kind:"none",kept:(await u()).map(e=>e.site)};if(!r.bots.includes(t))return r.asking.includes(t)||await c({...r,asking:[...r.asking,t]}),{kind:"ask",signIn:(({state:e,...t})=>t)(r)};let a={...r,usedAt:new Date().toISOString()};return await c(a),{kind:"state",signIn:(({state:e,...t})=>t)(a),state:r.state}}e.s(["borrowSignIn",0,m,"keepSignIn",0,d,"listSignIns",0,u],527608)},22676,e=>e.a(async(t,r)=>{try{var a=e.i(349129),n=e.i(875225),l=e.i(518899),o=e.i(687388),i=e.i(528790),s=e.i(613240),c=e.i(378884),u=e.i(340698),d=e.i(134344),m=t([i,c,u]);async function p(){return(0,d.isSkillsOn)(await (0,u.readConfig)(d.THURSDAY_KEYS.skills))}async function f(e,t){for(let r of t)await i.database.insert(s.callMessageTable).values({callId:e,...r,fragments:r.fragments??null}).onConflictDoUpdate({target:[s.callMessageTable.callId,s.callMessageTable.id],set:{text:r.text,role:r.role,tool:r.tool??null,fragments:r.fragments??null}})}async function b(e){let[t]=await i.database.select({seq:l.sql`max(${s.callMessageTable.seq})`}).from(s.callMessageTable).where((0,n.eq)(s.callMessageTable.callId,e));return t?.seq==null?0:Number(t.seq)+1}async function h(e,t){await i.database.insert(s.callThoughtTable).values({callId:e,...t}).onConflictDoNothing()}async function T(e){let t=await i.database.select({callId:s.callMessageTable.callId,startedAt:s.callTable.startedAt,role:s.callMessageTable.role,tool:s.callMessageTable.tool,text:s.callMessageTable.text,seq:s.callMessageTable.seq}).from(s.callMessageTable).innerJoin(s.callTable,(0,n.eq)(s.callMessageTable.callId,s.callTable.id)).orderBy((0,a.desc)(s.callTable.startedAt),(0,a.desc)(s.callMessageTable.seq)).limit(e),r=new Map;for(let e of t){let t=r.get(e.callId)??{callId:e.callId,startedAt:e.startedAt,turns:[]};t.turns.push({role:e.role,tool:e.tool,text:e.text,seq:e.seq}),r.set(e.callId,t)}return[...r.values()].reverse().map(e=>({...e,turns:e.turns.reverse()}))}async function g(e,t,r){let[o]=await i.database.select({startedAt:s.callTable.startedAt}).from(s.callTable).where((0,n.eq)(s.callTable.id,e));if(!o)return null;let[c]=await i.database.select({total:l.sql`count(*)`}).from(s.callMessageTable).where((0,n.eq)(s.callMessageTable.callId,e)),u=await i.database.select({role:s.callMessageTable.role,tool:s.callMessageTable.tool,text:s.callMessageTable.text}).from(s.callMessageTable).where((0,n.eq)(s.callMessageTable.callId,e)).orderBy((0,a.asc)(s.callMessageTable.seq)).limit(r).offset((t-1)*r);return{startedAt:o.startedAt,total:Number(c?.total??0),turns:u}}async function y(){return(await i.database.select({id:s.callTable.id}).from(s.callTable).where((0,n.isNull)(s.callTable.endedAt)).limit(1)).length>0}async function w(e){let t=e.limit??o.CALL_HISTORY_PAGE,r=await i.database.select({id:s.callTable.id,provider:s.callTable.provider,model:s.callTable.model,backendModel:s.callTable.backendModel,startedAt:s.callTable.startedAt,endedAt:s.callTable.endedAt,endedReason:s.callTable.endedReason,seconds:s.callTable.seconds}).from(s.callTable).innerJoin(s.callMessageTable,(0,n.eq)(s.callMessageTable.callId,s.callTable.id)).where(e.before?(0,n.lt)(s.callTable.startedAt,e.before):void 0).groupBy(s.callTable.id).orderBy((0,a.desc)(s.callTable.startedAt)).limit(t);if(0===r.length)return[];let l=await i.database.select({callId:s.callMessageTable.callId,id:s.callMessageTable.id,role:s.callMessageTable.role,tool:s.callMessageTable.tool,text:s.callMessageTable.text,seq:s.callMessageTable.seq,fragments:s.callMessageTable.fragments,at:s.callMessageTable.at}).from(s.callMessageTable).where((0,n.inArray)(s.callMessageTable.callId,r.map(e=>e.id))).orderBy((0,a.asc)(s.callMessageTable.callId),(0,a.asc)(s.callMessageTable.seq)),u=new Map;for(let e of l){let{callId:t,...r}=e,a=u.get(t);a?a.push(r):u.set(t,[r])}let d=await (0,c.listCallJobs)(r.map(e=>e.id));return r.map(e=>({...e,turns:u.get(e.id)??[],jobs:d.filter(t=>t.callId===e.id).map(e=>({id:e.id,label:e.label,status:e.status,outcome:e.outcome}))}))}[i,c,u]=m.then?(await m)():m,e.s(["isAnyCallLive",0,y,"listCallHistory",0,w,"listRecentTurns",0,T,"nextTurnSeq",0,b,"readCallConversation",0,g,"readCallSkillsOn",0,p,"saveThought",0,h,"saveTurns",0,f]),r()}catch(e){r(e)}},!1),134344,e=>{"use strict";var t=e.i(105249),r=e.i(687388),a=e.i(911757),n=e.i(264079),l=e.i(904309);let o=a.LiveSettingsSchema.extend({locale:t.default.string().max(35).nullish()}),i=[{id:"chatgpt",...n.TEXT_MODEL_PROVIDERS.chatgpt},{id:"openai",...n.TEXT_MODEL_PROVIDERS.openai}];t.default.object({charset:t.default.enum(["ascii","emoji","emojiOnly"]).default(r.ASCII_FACE.charset),fontSize:t.default.number().min(r.ASCII_FACE.fontSize.min).max(r.ASCII_FACE.fontSize.max).default(r.ASCII_FACE.fontSize.default),density:t.default.number().min(r.ASCII_FACE.density.min).max(r.ASCII_FACE.density.max).default(r.ASCII_FACE.density.default)}).parse({});t.default.object({enabled:t.default.boolean(),phrase:t.default.string().trim().min(3).max(32)}),t.default.object({enabled:t.default.boolean(),combo:t.default.string().trim().min(1).max(64)}),t.default.enum(["off","waiting","any"]),t.default.enum(["center","sides"]),t.default.object({id:t.default.string().min(1),role:t.default.enum(["user","assistant","tool"]),tool:t.default.string().nullish(),text:t.default.string(),seq:t.default.number().int().min(0),fragments:t.default.array(l.LiveFragmentSchema).nullish()}),t.default.object({id:t.default.string().min(1),text:t.default.string(),seq:t.default.number().int().min(0)}),e.s(["TEXT_CALL_PROVIDERS",0,i,"THURSDAY_KEYS",0,{skills:"THURSDAY_SKILLS"},"ThursdaySettingsSchema",0,o,"isSkillsOn",0,e=>e?.trim()==="on","textCallRunsOn",0,e=>i.find(t=>e(t.apiKeyName))?.id??null],134344)},629668,175936,e=>{"use strict";let t=e=>e.split("/").map(encodeURIComponent).join("/"),r={memory:"/api/memory",memoryPage:e=>({url:"/api/memory",query:{offset:e||null}}),notePath:e=>({url:"/api/memory",query:{path:e}}),mcp:"/api/mcp",mcpServer:e=>({url:"/api/mcp",pathVariable:[e]}),mcpTools:"/api/mcp/tools",skills:"/api/skills",skillNode:(e,t,r)=>({url:"/api/skills",pathVariable:[e,t],query:{path:r}}),bot:"/api/bot",botMemory:"/api/bot/memory",botKeepWorking:"/api/bot/keep-working",botMemoryFiles:e=>({url:"/api/bot/memory/files",query:{bot:e}}),routines:"/api/routine",threads:"/api/bot/thread",threadHistory:e=>({url:"/api/bot/thread",query:{history:1,before:e}}),thread:e=>({url:"/api/bot/thread",query:{id:e}}),toolResult:(e,t)=>({url:"/api/bot/thread",pathVariable:[e],query:{call:t}}),workspace:"/api/workspace",workspaceFolder:(e,t)=>({url:"/api/workspace",query:{path:e||null,rows:t}}),workspaceFiles:e=>({url:"/api/workspace/files",query:{paths:JSON.stringify(e)}}),artifacts:"/api/artifact",artifactShelf:e=>({url:"/api/artifact",query:{rows:e}}),artifactSet:(e,t)=>({url:"/api/artifact",query:{set:e,rows:t}}),file:e=>`/api/file/${t(e)}`,favicon:e=>`/api/favicon/${encodeURIComponent(e)}`,fileView:e=>`/artifact/${t(e)}`,events:"/api/events",config:"/api/config",callHistory:e=>({url:"/api/thursday/call",query:{before:e}}),callSkills:"/api/thursday/skills",toolCall:"/api/thursday/tool-call",signIns:"/api/signins",reach:"/api/reach",textCall:"/api/thursday/text",memoryEdit:"/api/memory/edit",llmModel:"/api/llm-model",modelCatalog:"/api/llm-model/catalog",gatewayCredits:"/api/llm-model/credits",subscriptionUsage:"/api/llm-model/subscription"};e.s(["decodePath",0,e=>e.join("/"),"queryKey",0,r],175936);var a=e.i(687388);let n=e=>`text/${e}; charset=utf-8`,l={md:{kind:"markdown",mime:n("markdown")},markdown:{kind:"markdown",mime:n("markdown")},csv:{kind:"csv",mime:n("csv")},json:{kind:"json",mime:"application/json; charset=utf-8"},txt:{kind:"text",mime:n("plain")},log:{kind:"text",mime:n("plain")},html:{kind:"frame",mime:n("html")},htm:{kind:"frame",mime:n("html")},pdf:{kind:"frame",mime:"application/pdf"},png:{kind:"image",mime:"image/png"},jpg:{kind:"image",mime:"image/jpeg"},jpeg:{kind:"image",mime:"image/jpeg"},gif:{kind:"image",mime:"image/gif"},webp:{kind:"image",mime:"image/webp"},svg:{kind:"image",mime:"image/svg+xml"},mp3:{kind:"audio",mime:"audio/mpeg"},wav:{kind:"audio",mime:"audio/wav"},mp4:{kind:"video",mime:"video/mp4"},webm:{kind:"video",mime:"video/webm"},css:{kind:"none",mime:n("css")},js:{kind:"none",mime:n("javascript")},woff2:{kind:"none",mime:"font/woff2"}},o=e=>e.split(".").pop()?.toLowerCase()??"",i=new Set(["node_modules","__pycache__"]),s=Object.entries(l).filter(([,e])=>"none"!==e.kind).map(([e])=>e),c=RegExp(String.raw`(?<![\p{L}\p{N}_/:@%-])\/?(?:[\p{L}\p{N}_.@%-]+/)*[\p{L}\p{N}_@%-]+(?:\.[\p{L}\p{N}_-]+)*\.(?:${s.join("|")})\b`,"giu"),u=`${a.PATHS.workspace}/`,d=r.file(""),m=/^[\s`'"*_)]*(?:~|–|—|-|\.{2,}|…|to|through)[\s`'"*_(]*$/i;e.s(["isListedFolder",0,e=>!e.startsWith(".")&&!i.has(e),"mimeOf",0,e=>l[o(e)]?.mime??"application/octet-stream","opensOnFinish",0,e=>e.startsWith(`${a.PATHS.artifacts}/`)&&["md","markdown","html","htm"].includes(o(e)),"pathsIn",0,function(e){let t=e.replace(/\b[a-z][\w+.-]*:\/\/\S+/gi," "),r=new Set,a="",n=null;for(let e of t.matchAll(c)){let l=e[0],o=!l.includes("/"),i=function(e){let t,r,a=(r=(t=function(e){if(!e.startsWith(d))return e;let t=e.slice(d.length);try{return decodeURIComponent(t)}catch{return t}}(e.trim())).indexOf(u))>=0?t.slice(r+u.length)||null:t.startsWith("/")||/^[A-Za-z]:/.test(t)||t.split("/").includes("..")?null:t||null;if(!a)return null;let[n,...l]=a.split("/");return l.length&&n.includes(".")?null:a}(o?a+l:l);if(o||(a=i?.slice(0,i.lastIndexOf("/")+1)??""),i){if(n&&m.test(t.slice(n.end,e.index)))for(let e of function(e,t){let r=/^(.*?)(\d+)(\D*)$/.exec(e),a=/^(.*?)(\d+)(\D*)$/.exec(t);if(!r||!a||r[1]!==a[1]||r[3]!==a[3])return[];let n=Number(r[2]),l=Number(a[2]);if(!(l-n>1)||l-n>12)return[];let o=r[2].startsWith("0")?r[2].length:0;return Array.from({length:l-n-1},(e,t)=>`${r[1]}${String(n+t+1).padStart(o,"0")}${r[3]}`)}(n.rel,i))r.add(e);r.add(i),n={rel:i,end:e.index+l.length}}}return[...r].slice(0,12)},"viewKindOf",0,e=>l[o(e)]?.kind??"none"],629668)},268486,e=>{"use strict";var t=e.i(41444);e.s(["createKeyedLock",0,function(){let e=new Map,r=new Map;return function(a,n){let l=e.get(a);l||(l=(0,t.PromiseChain)(),e.set(a,l)),r.set(a,(r.get(a)??0)+1);let o=()=>{let t=(r.get(a)??1)-1;t>0?r.set(a,t):(r.delete(a),e.delete(a))};return l(n).then(e=>(o(),e),e=>{throw o(),e})}}])},78997,(e,t,r)=>{"use strict";var a=Object.create,n=Object.defineProperty,l=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyNames,i=Object.getPrototypeOf,s=Object.prototype.hasOwnProperty,c=(e,t,r,a)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let i of o(t))s.call(e,i)||i===r||n(e,i,{get:()=>t[i],enumerable:!(a=l(t,i))||a.enumerable});return e},u=(e,t,r)=>(r=null!=e?a(i(e)):{},c(!t&&e&&e.__esModule?r:n(r,"default",{value:e,enumerable:!0}),e)),d={},m={isValidAccessToken:()=>w,readAuthConfig:()=>g,writeAuthConfig:()=>y};for(var p in m)n(d,p,{get:m[p],enumerable:!0});t.exports=c(n({},"__esModule",{value:!0}),d);var f=u(e.r(522734)),b=u(e.r(814747)),h=e.r(783697);function T(){let e=(0,h.getVercelDataDir)();if(!e)throw Error(`Unable to find Vercel CLI data directory. Your platform: ${process.platform}. Supported: darwin, linux, win32.`);return b.join(e,"auth.json")}function g(){try{let e=T();if(!f.existsSync(e))return null;let t=f.readFileSync(e,"utf8");if(!t)return null;return JSON.parse(t)}catch(e){return null}}function y(e){let t=T(),r=b.dirname(t);f.existsSync(r)||f.mkdirSync(r,{mode:504,recursive:!0}),f.writeFileSync(t,JSON.stringify(e,null,2),{mode:384})}function w(e,t=0){if(!e.token)return!1;if("number"!=typeof e.expiresAt)return!0;let r=Math.floor(Date.now()/1e3);return e.expiresAt>=r+t/1e3}},452005,(e,t,r)=>{"use strict";var a=Object.defineProperty,n=Object.getOwnPropertyDescriptor,l=Object.getOwnPropertyNames,o=Object.prototype.hasOwnProperty,i={},s={AccessTokenMissingError:()=>u,RefreshAccessTokenFailedError:()=>d};for(var c in s)a(i,c,{get:s[c],enumerable:!0});t.exports=((e,t,r)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let i of l(t))o.call(e,i)||void 0===i||a(e,i,{get:()=>t[i],enumerable:!(r=n(t,i))||r.enumerable});return e})(a({},"__esModule",{value:!0}),i);class u extends Error{constructor(){super("No authentication found. Please log in with the Vercel CLI (vercel login)."),this.name="AccessTokenMissingError"}}class d extends Error{constructor(e){super("Failed to refresh authentication token.",{cause:e}),this.name="RefreshAccessTokenFailedError"}}},394853,(e,t,r)=>{"use strict";var a=Object.defineProperty,n=Object.getOwnPropertyDescriptor,l=Object.getOwnPropertyNames,o=Object.prototype.hasOwnProperty,i={},s={processTokenResponse:()=>b,refreshTokenRequest:()=>f};for(var c in s)a(i,c,{get:s[c],enumerable:!0});t.exports=((e,t,r)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let i of l(t))o.call(e,i)||void 0===i||a(e,i,{get:()=>t[i],enumerable:!(r=n(t,i))||r.enumerable});return e})(a({},"__esModule",{value:!0}),i);var u=e.r(446786);let d=`@vercel/oidc node-${process.version} ${(0,u.platform)()} (${(0,u.arch)()}) ${(0,u.hostname)()}`,m=null;async function p(){if(m)return m;let e=await fetch("https://vercel.com/.well-known/openid-configuration",{headers:{"user-agent":d}});if(!e.ok)throw Error("Failed to discover OAuth endpoints");let t=await e.json();if(!t||"string"!=typeof t.token_endpoint)throw Error("Invalid OAuth discovery response");let r=t.token_endpoint;return m=r,r}async function f(e){let t=await p();return await fetch(t,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded","user-agent":d},body:new URLSearchParams({client_id:"cl_HYyOPBNtFMfHhaUn9L4QPfTZz6TP47bp",grant_type:"refresh_token",...e})})}async function b(e){let t=await e.json();return e.ok?"object"!=typeof t||null===t?[Error("Invalid token response")]:"string"!=typeof t.access_token?[Error("Missing access_token in response")]:"Bearer"!==t.token_type?[Error("Invalid token_type in response")]:"number"!=typeof t.expires_in?[Error("Missing expires_in in response")]:[null,t]:[Error("object"==typeof t&&t&&"error"in t?String(t.error):"Token refresh failed")]}},484199,(e,t,r)=>{"use strict";var a=Object.defineProperty,n=Object.getOwnPropertyDescriptor,l=Object.getOwnPropertyNames,o=Object.prototype.hasOwnProperty,i={},s={VercelOidcTokenError:()=>u};for(var c in s)a(i,c,{get:s[c],enumerable:!0});t.exports=((e,t,r)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let i of l(t))o.call(e,i)||void 0===i||a(e,i,{get:()=>t[i],enumerable:!(r=n(t,i))||r.enumerable});return e})(a({},"__esModule",{value:!0}),i);class u extends Error{constructor(e,t){super(e),this.name="VercelOidcTokenError",this.cause=t}toString(){return this.cause?`${this.name}: ${this.message}: ${this.cause}`:`${this.name}: ${this.message}`}}},1791,(e,t,r)=>{"use strict";var a=Object.create,n=Object.defineProperty,l=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyNames,i=Object.getPrototypeOf,s=Object.prototype.hasOwnProperty,c=(e,t,r,a)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let i of o(t))s.call(e,i)||i===r||n(e,i,{get:()=>t[i],enumerable:!(a=l(t,i))||a.enumerable});return e},u=(e,t,r)=>(r=null!=e?a(i(e)):{},c(!t&&e&&e.__esModule?r:n(r,"default",{value:e,enumerable:!0}),e)),d={},m={findRootDir:()=>g,getUserDataDir:()=>y};for(var p in m)n(d,p,{get:m[p],enumerable:!0});t.exports=c(n({},"__esModule",{value:!0}),d);var f=u(e.r(814747)),b=u(e.r(522734)),h=u(e.r(446786)),T=e.r(484199);function g(){try{let e=process.cwd();for(;e!==f.default.dirname(e);){let t=f.default.join(e,".vercel");if(b.default.existsSync(t))return e;e=f.default.dirname(e)}}catch(e){throw new T.VercelOidcTokenError("Token refresh only supported in node server environments")}return null}function y(){if(process.env.XDG_DATA_HOME)return process.env.XDG_DATA_HOME;switch(h.default.platform()){case"darwin":return f.default.join(h.default.homedir(),"Library/Application Support");case"linux":return f.default.join(h.default.homedir(),".local/share");case"win32":if(process.env.LOCALAPPDATA)return process.env.LOCALAPPDATA;return null;default:return null}}},783697,(e,t,r)=>{"use strict";var a=Object.create,n=Object.defineProperty,l=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyNames,i=Object.getPrototypeOf,s=Object.prototype.hasOwnProperty,c=(e,t,r,a)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let i of o(t))s.call(e,i)||i===r||n(e,i,{get:()=>t[i],enumerable:!(a=l(t,i))||a.enumerable});return e},u=(e,t,r)=>(r=null!=e?a(i(e)):{},c(!t&&e&&e.__esModule?r:n(r,"default",{value:e,enumerable:!0}),e)),d={},m={assertVercelOidcTokenResponse:()=>O,findProjectInfo:()=>j,getTokenPayload:()=>M,getVercelDataDir:()=>v,getVercelOidcToken:()=>S,getVercelToken:()=>k,isExpired:()=>I,loadToken:()=>x,saveToken:()=>A};for(var p in m)n(d,p,{get:m[p],enumerable:!0});t.exports=c(n({},"__esModule",{value:!0}),d);var f=u(e.r(814747)),b=u(e.r(522734)),h=e.r(484199),T=e.r(1791),g=e.r(78997),y=e.r(394853),w=e.r(452005);function v(){let e=(0,T.getUserDataDir)();return e?f.join(e,"com.vercel.cli"):null}async function k(e){let t=(0,g.readAuthConfig)();if(!t?.token)throw new w.AccessTokenMissingError;if((0,g.isValidAccessToken)(t,e?.expirationBufferMs))return t.token;if(!t.refreshToken)throw(0,g.writeAuthConfig)({}),new w.RefreshAccessTokenFailedError("No refresh token available");try{let e=await (0,y.refreshTokenRequest)({refresh_token:t.refreshToken}),[r,a]=await (0,y.processTokenResponse)(e);if(r||!a)throw(0,g.writeAuthConfig)({}),new w.RefreshAccessTokenFailedError(r);let n={token:a.access_token,expiresAt:Math.floor(Date.now()/1e3)+a.expires_in};return a.refresh_token&&(n.refreshToken=a.refresh_token),(0,g.writeAuthConfig)(n),n.token}catch(e){if((0,g.writeAuthConfig)({}),e instanceof w.AccessTokenMissingError||e instanceof w.RefreshAccessTokenFailedError)throw e;throw new w.RefreshAccessTokenFailedError(e)}}async function S(e,t,r){let a=`https://api.vercel.com/v1/projects/${t}/token?source=vercel-oidc-refresh${r?`&teamId=${r}`:""}`,n=await fetch(a,{method:"POST",headers:{Authorization:`Bearer ${e}`}});if(!n.ok)throw new h.VercelOidcTokenError(`Failed to refresh OIDC token: ${n.statusText}`);let l=await n.json();return O(l),l}function O(e){if(!e||"object"!=typeof e)throw TypeError("Vercel OIDC token is malformed. Expected an object. Please run `vc env pull` and try again");if(!("token"in e)||"string"!=typeof e.token)throw TypeError("Vercel OIDC token is malformed. Expected a string-valued token property. Please run `vc env pull` and try again")}function j(){let e=(0,T.findRootDir)();if(!e)throw new h.VercelOidcTokenError("Unable to find project root directory. Have you linked your project with `vc link?`");let t=f.join(e,".vercel","project.json");if(!b.existsSync(t))throw new h.VercelOidcTokenError("project.json not found, have you linked your project with `vc link?`");let r=JSON.parse(b.readFileSync(t,"utf8"));if("string"!=typeof r.projectId&&"string"!=typeof r.orgId)throw TypeError("Expected a string-valued projectId property. Try running `vc link` to re-link your project.");return{projectId:r.projectId,teamId:r.orgId}}function A(e,t){let r=(0,T.getUserDataDir)();if(!r)throw new h.VercelOidcTokenError("Unable to find user data directory. Please reach out to Vercel support.");let a=f.join(r,"com.vercel.token",`${t}.json`),n=JSON.stringify(e);b.mkdirSync(f.dirname(a),{mode:504,recursive:!0}),b.writeFileSync(a,n),b.chmodSync(a,432)}function x(e){let t=(0,T.getUserDataDir)();if(!t)throw new h.VercelOidcTokenError("Unable to find user data directory. Please reach out to Vercel support.");let r=f.join(t,"com.vercel.token",`${e}.json`);if(!b.existsSync(r))return null;let a=JSON.parse(b.readFileSync(r,"utf8"));return O(a),a}function M(e){let t=e.split(".");if(3!==t.length)throw new h.VercelOidcTokenError("Invalid token. Please run `vc env pull` and try again");let r=t[1].replace(/-/g,"+").replace(/_/g,"/"),a=r.padEnd(r.length+(4-r.length%4)%4,"=");return JSON.parse(Buffer.from(a,"base64").toString("utf8"))}function I(e,t=0){return 1e3*e.exp<Date.now()+t}},260338,e=>{"use strict";var t=e.i(518899),r=e.i(844988),a=e.i(156325);e.s(["count",0,function(e){return t.sql`count(${e||t.sql.raw("*")})`.mapWith(Number)},"max",0,function(e){return t.sql`max(${e})`.mapWith((0,r.is)(e,a.Column)?e:String)}])}];
3
+ `),b=e=>{let a=t.coalesce?.keyOf(e)??null;if(null===a)return f(e);let r=d.get(a);r&&clearTimeout(r),d.set(a,setTimeout(()=>{d.delete(a),f(e)},t.coalesce?.ms))},h=e.subscribe(e=>m?m.push(e):b(e)),T=setInterval(()=>p(": ping\n\n"),r);n+=1,t.onWatchers?.(n),i=()=>{if(!u){for(let e of(u=!0,n-=1,t.onWatchers?.(n),h(),clearInterval(T),d.values()))clearTimeout(e);try{s.close()}catch{}}},l.addEventListener("abort",i);try{for(let e of await o?.()??[])f(e)}catch(e){c.logger.error("event stream opening failed",e),i();return}let g=m;for(let e of(m=null,g))b(e)},cancel(){i()}}),{headers:{"Content-Type":"text/event-stream; charset=utf-8","Cache-Control":"no-store","X-Accel-Buffering":"no"}})},get watchers(){return n}}}(m,{coalesce:{ms:150,keyOf:e=>e.type in u?e.type:null},onWatchers:p.track}),b=d.__bootId??=crypto.randomUUID();e.s(["BOOT_ID",0,b,"appEventStream",0,f,"appEvents",0,m,"presence",0,p],380690)},393189,e=>{"use strict";var t=e.i(912714),a=e.i(750227),r=e.i(687388),n=e.i(786025);let l=e=>`${(0,n.botFolder)(e)}/memory`;async function o(e,t=r.BOT_MEMORY_LIMITS.files){let s=l(e),c=(0,a.join)(n.WORKSPACE,s),u=(await i(c)).sort((e,t)=>t.info.mtimeMs-e.info.mtimeMs),m=await Promise.all(u.slice(0,t).map(async({name:e,info:t})=>({file:e,path:`${s}/${e}`,line:await d((0,a.join)(c,e)),at:new Date(t.mtimeMs),bytes:t.size})));return{folder:s,entries:m,total:u.length}}async function i(e){let r=await (0,t.readdir)(e).catch(()=>[]);return(await Promise.all(r.filter(e=>!e.startsWith(".")).map(async r=>{let n=await (0,t.stat)((0,a.join)(e,r)).catch(()=>null);return n?.isFile()?{name:r,info:n}:null}))).filter(e=>null!==e)}async function s(e){let o=(0,a.join)(n.WORKSPACE,l(e)),s=new Map;return await Promise.all((await i(o)).map(async({name:e,info:n})=>{let l=n.size>4*r.BOT_MEMORY_LIMITS.chars?null:await (0,t.readFile)((0,a.join)(o,e),"utf8").catch(()=>null);s.set(e,{text:null!==l&&u(l)<=r.BOT_MEMORY_LIMITS.chars?l:null,size:n.size,mtimeMs:n.mtimeMs,atime:n.atime,mtime:n.mtime})})),s}async function c(e,o){let s=l(e),c=(0,a.join)(n.WORKSPACE,s),{files:d,chars:m}=r.BOT_MEMORY_LIMITS,p=[],f=[],b=0;for(let{name:e,info:r}of(await i(c))){b+=1;let n=o.get(e);if(n&&n.size===r.size&&n.mtimeMs===r.mtimeMs)continue;let l=(0,a.join)(c,e),i=u(await (0,t.readFile)(l,"utf8").catch(()=>""));if(i<=m){n||f.push(e);continue}let d=`${i.toLocaleString("en-US")} characters, past the ${m.toLocaleString("en-US")} a memory file holds`;n?null!==n.text?(await (0,t.writeFile)(l,n.text),await (0,t.utimes)(l,n.atime,n.mtime),p.push(`Not kept: \`${s}/${e}\` came to ${d}, so it is back as it was. Write it again shorter.`)):p.push(`\`${s}/${e}\` is ${d}. Shorten it.`):(await (0,t.rm)(l,{force:!0}),b-=1,p.push(`Not kept: \`${s}/${e}\` came to ${d}, so it was removed. Write it again shorter.`))}if(b>d&&f.length){await Promise.all(f.map(e=>(0,t.rm)((0,a.join)(c,e),{force:!0})));let e=f.map(e=>`\`${s}/${e}\``).join(", ");p.push(`Not kept: your memory holds ${d} files at most and this made ${b}, so ${e} ${1===f.length?"was":"were"} removed. Delete or merge files no longer worth keeping, then write it again.`)}return p.length?p.join("\n"):null}let u=e=>[...e.trim()].length;async function d(e){let a=await (0,t.open)(e,"r").catch(()=>null);if(!a)return"";try{let e=Buffer.alloc(1024),{bytesRead:t}=await a.read(e,0,1024,0),r=e.toString("utf8",0,t).split("\n").map(e=>e.trim()).filter(Boolean);if("---"===r[0]){let e=r.find(e=>e.startsWith("description:"));if(e)return e.slice(12).trim().replace(/^["']|["']$/g,"");let t=r.indexOf("---",1);return t>0?(r[t+1]??"").replace(/^#+\s*/,""):""}return(r[0]??"").replace(/^#+\s*/,"")}finally{await a.close()}}e.s(["botMemoryFolder",0,l,"holdBotMemory",0,s,"keepBotMemory",0,c,"listBotMemory",0,o])},148831,e=>e.a(async(t,a)=>{try{var r=e.i(875225),n=e.i(260338),l=e.i(518899),o=e.i(380690),i=e.i(528790),s=e.i(613240),c=e.i(441963),u=t([i]);function d(e){return(0,c.isRemoteConfig)(e)?{url:e.url}:{command:e.command,args:e.args}}async function m(){return(await i.database.select({name:s.mcpServerTable.name,config:s.mcpServerTable.config,lastError:s.mcpServerTable.lastError,toolCount:(0,n.count)(s.mcpToolTable.id)}).from(s.mcpServerTable).leftJoin(s.mcpToolTable,(0,r.eq)(s.mcpToolTable.serverName,s.mcpServerTable.name)).groupBy(s.mcpServerTable.name)).map(e=>({...e,config:d(e.config)}))}async function p(e){let[t]=await i.database.select({name:s.mcpServerTable.name,config:s.mcpServerTable.config,lastError:s.mcpServerTable.lastError,toolsSyncedAt:s.mcpServerTable.toolsSyncedAt}).from(s.mcpServerTable).where((0,r.eq)(s.mcpServerTable.name,e));return t?{...t,config:d(t.config),tools:await f(e)}:null}async function f(e){return i.database.select({id:s.mcpToolTable.id,name:s.mcpToolTable.name,description:s.mcpToolTable.description,inputSchema:s.mcpToolTable.inputSchema,outputSchema:s.mcpToolTable.outputSchema}).from(s.mcpToolTable).where((0,r.eq)(s.mcpToolTable.serverName,e)).orderBy(s.mcpToolTable.name)}async function b(e){let[t]=await i.database.select().from(s.mcpServerTable).where((0,r.eq)(s.mcpServerTable.name,e));return t??null}[i]=u.then?(await u)():u;let v=()=>o.appEvents.emit({type:"mcp"});async function h(e,t){await i.database.transaction(async a=>{t.length&&await a.insert(s.mcpToolTable).values(t.map(t=>({...t,serverName:e}))).onConflictDoUpdate({target:[s.mcpToolTable.serverName,s.mcpToolTable.name],set:{description:T(s.mcpToolTable.description),inputSchema:T(s.mcpToolTable.inputSchema),outputSchema:T(s.mcpToolTable.outputSchema)}}),await a.delete(s.mcpToolTable).where(t.length?(0,r.and)((0,r.eq)(s.mcpToolTable.serverName,e),(0,r.notInArray)(s.mcpToolTable.name,t.map(e=>e.name))):(0,r.eq)(s.mcpToolTable.serverName,e)),await a.update(s.mcpServerTable).set({lastError:null,toolsSyncedAt:new Date}).where((0,r.eq)(s.mcpServerTable.name,e))}),v()}function T(e){return l.sql.raw(`excluded."${e.name}"`)}async function g(e,t){await i.database.update(s.mcpServerTable).set({lastError:t}).where((0,r.eq)(s.mcpServerTable.name,e)),v()}async function y(e,t){await i.database.update(s.mcpServerTable).set({oauth:t}).where((0,r.eq)(s.mcpServerTable.name,e)),v()}async function w(e){let[t]=await i.database.select().from(s.mcpServerTable).where(l.sql`json_extract(${s.mcpServerTable.oauth}, '$.state') = ${e}`);return t??null}e.s(["findAllServers",0,m,"findAllTools",0,function(){return i.database.select({id:s.mcpToolTable.id,name:s.mcpToolTable.name,serverName:s.mcpToolTable.serverName,description:s.mcpToolTable.description}).from(s.mcpToolTable).orderBy(s.mcpToolTable.serverName,s.mcpToolTable.name)},"findPinnedTools",0,function(e){return i.database.select({server:s.mcpToolTable.serverName,name:s.mcpToolTable.name,description:s.mcpToolTable.description,inputSchema:s.mcpToolTable.inputSchema}).from(s.botMcpToolTable).innerJoin(s.mcpToolTable,(0,r.eq)(s.botMcpToolTable.toolId,s.mcpToolTable.id)).where((0,r.eq)(s.botMcpToolTable.botName,e)).orderBy(s.mcpToolTable.serverName,s.mcpToolTable.name)},"findServer",0,b,"findServerByOAuthState",0,w,"findServerDetail",0,p,"findToolSchemas",0,function(e,t){return t.length?i.database.select({name:s.mcpToolTable.name,description:s.mcpToolTable.description,inputSchema:s.mcpToolTable.inputSchema}).from(s.mcpToolTable).where((0,r.and)((0,r.eq)(s.mcpToolTable.serverName,e),(0,r.inArray)(s.mcpToolTable.name,t))).orderBy(s.mcpToolTable.name):Promise.resolve([])},"listServerNames",0,function(){return i.database.select({name:s.mcpServerTable.name}).from(s.mcpServerTable).orderBy(s.mcpServerTable.name)},"listToolNames",0,function(e){let t=i.database.select({server:s.mcpToolTable.serverName,name:s.mcpToolTable.name}).from(s.mcpToolTable);return e?t.where((0,r.eq)(s.mcpToolTable.serverName,e)).orderBy(s.mcpToolTable.name):t.orderBy(s.mcpToolTable.serverName,s.mcpToolTable.name)},"saveConnectionError",0,g,"saveOAuthData",0,y,"syncServerTools",0,h]),a()}catch(e){a(e)}},!1),441963,e=>{"use strict";var t=e.i(469719),a=e.i(704161);let r=t.z.object({url:t.z.url(),headers:t.z.record(t.z.string(),t.z.string()).optional(),oauthClient:t.z.object({clientId:t.z.string().min(1),clientSecret:t.z.string().optional()}).optional()}),n=t.z.object({command:t.z.string().min(1),args:t.z.array(t.z.string()).optional(),env:t.z.record(t.z.string(),t.z.string()).optional()}),l=t.z.union([r,n]),o=t.z.object({name:t.z.string(),description:t.z.string().optional(),inputSchema:t.z.looseObject({}).optional(),outputSchema:t.z.looseObject({}).optional()});t.z.object({clientInformation:t.z.looseObject({}).optional(),tokens:t.z.looseObject({}).optional(),authorizationServer:t.z.looseObject({}).optional(),codeVerifier:t.z.string().optional(),state:t.z.string().optional()});let i=t.z.object({name:t.z.string().min(1).max(40),config:l,toolCount:t.z.number().int(),lastError:t.z.string().nullish()}),s=o.extend({id:t.z.number().int(),description:t.z.string().nullish()});i.omit({toolCount:!0}).extend({tools:s.array().default([]),toolsSyncedAt:a.DateLikeSchema}),t.z.object({name:t.z.string().min(1,"Name is required").max(40).regex(/^[a-zA-Z0-9_-]+$/,"Only letters, numbers, - and _ are allowed"),config:l}),t.z.union([t.z.object({mcpServers:t.z.record(t.z.string(),l)}),t.z.record(t.z.string(),l)]),e.s(["isRemoteConfig",0,function(e){return"url"in e}])},963219,e=>e.a(async(t,a)=>{try{var r=e.i(260338),n=e.i(349129),l=e.i(875225),o=e.i(380690),i=e.i(687388),s=e.i(528790),c=e.i(613240),u=e.i(265143),d=e.i(53748),m=e.i(473139),p=t([s,u]);[s,u]=p.then?(await p)():p;let S=()=>o.appEvents.emit({type:"routines"});async function f(e,t){return s.database.select({id:c.threadTable.id,status:c.threadTable.status,outcome:c.threadTable.outcome,updatedAt:c.threadTable.updatedAt}).from(c.threadTable).where((0,l.eq)(c.threadTable.routineId,e)).orderBy((0,n.desc)(c.threadTable.createdAt)).limit(t)}let O=async e=>{let{createdAt:t,...a}=e;return{...a,runs:await f(e.id,i.ROUTINE.runsShown)}};async function b(){let e=await s.database.select().from(c.routineTable).orderBy(c.routineTable.createdAt);return Promise.all(e.map(O))}async function h(e){let[t]=await s.database.select().from(c.routineTable).where((0,l.eq)(c.routineTable.id,e));return t?O(t):null}async function T(e){let t=await h(e.trim());if(t)return t;let a=e.trim().toLowerCase(),r=(await b()).filter(e=>e.label.toLowerCase()===a);return 1===r.length?r[0]:null}async function g(e){let t=await (0,u.findJobBot)(e);return(!t||t.disabled)&&(0,d.publicError)("Choose an enabled bot."),t.name}function y(e,t){t&&"once"===e.kind&&(0,m.momentOf)(e.at)<=new Date&&(0,d.publicError)("That time has passed. Pick a later one.")}async function w(e){let[{total:t}]=await s.database.select({total:(0,r.count)()}).from(c.routineTable);t>=i.ROUTINE.max&&(0,d.publicError)(`There are already ${i.ROUTINE.max} routines. Delete one to make another.`),y(e.schedule,!0);let[a]=await s.database.insert(c.routineTable).values({id:crypto.randomUUID(),...e,bot:await g(e.bot),nextRunAt:(0,m.nextRun)(e.schedule,new Date)}).returning();return S(),O(a)}async function v(e,t){let[a]=await s.database.select().from(c.routineTable).where((0,l.eq)(c.routineTable.id,e));if(!a)return null;let r=t.schedule??a.schedule,n=!!t.schedule||t.enabled&&!a.enabled;n&&y(r,t.enabled??a.enabled);let[o]=await s.database.update(c.routineTable).set({...t,...t.bot?{bot:await g(t.bot)}:{},...n?{nextRunAt:(0,m.nextRun)(r,new Date)}:{}}).where((0,l.eq)(c.routineTable.id,e)).returning();return S(),O(o)}async function k(e){let t=await s.database.delete(c.routineTable).where((0,l.eq)(c.routineTable.id,e)).returning({id:c.routineTable.id});return t.length&&S(),t.length>0}e.s(["createRoutine",0,w,"deleteRoutine",0,k,"listRoutines",0,b,"resolveRoutine",0,T,"updateRoutine",0,v]),a()}catch(e){a(e)}},!1),473139,e=>{"use strict";var t=e.i(105249),a=e.i(687388),r=e.i(704161);let n=t.default.string().regex(/^([01]\d|2[0-3]):[0-5]\d$/,"A time is HH:MM, 00:00 to 23:59");function l(e){let[t,a]=e.split(" "),[r,n,l]=t.split("-").map(Number),[o,i]=a.split(":").map(Number);return new Date(r,n-1,l,o,i)}let o=/^\d{4}-\d\d-\d\d ([01]\d|2[0-3]):[0-5]\d$/,i=t.default.string().regex(o,'A moment is "YYYY-MM-DD HH:MM"').refine(e=>{if(!o.test(e))return!0;let t=l(e);return t.getMonth()===Number(e.slice(5,7))-1&&t.getDate()===Number(e.slice(8,10))},"There is no such day"),s=t.default.discriminatedUnion("kind",[t.default.object({kind:t.default.literal("once"),at:i}),t.default.object({kind:t.default.literal("daily"),time:n,days:t.default.array(t.default.number().int().min(1).max(7)).min(1,"Pick at least one day").transform(e=>[...new Set(e)].sort((e,t)=>e-t))}),t.default.object({kind:t.default.literal("every"),hours:t.default.number().int().min(a.ROUTINE.minHours,`No more often than every ${a.ROUTINE.minHours}h`).max(168)})]),c=t.default.object({bot:t.default.string().trim().min(1,"Pick a bot"),label:t.default.string().trim().min(1,"Give it a name").max(80),request:t.default.string().trim().min(1,"Say what it should do"),schedule:s}),u=t.default.object({id:t.default.string(),status:t.default.enum(["running","waiting","done","cancelled"]),outcome:t.default.string().nullable(),updatedAt:r.DateLikeSchema});c.extend({id:t.default.string(),enabled:t.default.boolean(),nextRunAt:r.DateLikeSchema,runs:t.default.array(u)});let d=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],m=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];e.s(["RoutineInputSchema",0,c,"RoutineScheduleSchema",0,s,"momentOf",0,l,"nextRun",0,function(e,t){if("once"===e.kind)return l(e.at);if("every"===e.kind)return new Date(t.getTime()+36e5*e.hours);let[a,r]=e.time.split(":").map(Number);for(let n=0;n<=7;n++){let l=new Date(t);l.setDate(l.getDate()+n),l.setHours(a,r,0,0);let o=0===l.getDay()?7:l.getDay();if(l>t&&e.days.includes(o))return l}return new Date(t.getTime()+864e5)},"scheduleText",0,function(e){if("once"===e.kind){let[t,a]=e.at.split(" "),[,r,n]=t.split("-").map(Number);return`Once \xb7 ${m[r-1]} ${n} ${a}`}if("every"===e.kind)return 1===e.hours?"Every hour":`Every ${e.hours} hours`;let{days:t,time:a}=e;if(7===t.length)return`Daily ${a}`;if(1===t.length)return`${d[t[0]-1]} ${a}`;let r=t.every((e,a)=>0===a||e===t[a-1]+1)?`${d[t[0]-1]}–${d[t.at(-1)-1]}`:t.map(e=>d[e-1]).join(" ");return`Daily ${a} \xb7 ${r}`}])},527608,824664,e=>{"use strict";var t=e.i(912714),a=e.i(750227),r=e.i(380690),n=e.i(687388),l=e.i(786025);e.i(640911);let o=e=>e.trim().toLowerCase().replace(/^[a-z]+:\/\//,"").replace(/^www\./,"").replace(/[/?#].*$/,"");e.s(["siteOf",0,o],824664);let i=(0,a.join)(n.DATA_DIR,n.PATHS.signIns),s=e=>(0,a.join)(i,`${encodeURIComponent(o(e))}.json`);async function c(e){try{return JSON.parse(await (0,t.readFile)(s(e),"utf8"))}catch{return null}}async function u(e){await (0,t.mkdir)(i,{recursive:!0}),await (0,t.writeFile)(s(e.site),JSON.stringify(e),{mode:384}),r.appEvents.emit({type:"signins"})}async function d(){let e=await (0,t.readdir)(i).catch(()=>[]);return(await Promise.all(e.filter(e=>e.endsWith(".json")).map(e=>c(decodeURIComponent(e.slice(0,-5)))))).flatMap(e=>e?[(({state:e,...t})=>t)(e)]:[]).sort((e,t)=>e.site.localeCompare(t.site))}async function m(e){let t=o(e.site),a=await c(t),r={site:t,account:e.account.trim()||t,bots:[...new Set([...a?.bots??[],e.bot])],asking:(a?.asking??[]).filter(t=>t!==e.bot),keptAt:new Date().toISOString(),usedAt:a?.usedAt??null,state:e.state};return await u(r),(({state:e,...t})=>t)(r)}async function p(e,t){let a=await c(e);if(!a)return{kind:"none",kept:(await d()).map(e=>e.site)};if(!a.bots.includes(t))return a.asking.includes(t)||await u({...a,asking:[...a.asking,t]}),{kind:"ask",signIn:(({state:e,...t})=>t)(a)};let r={...a,usedAt:new Date().toISOString()};return await u(r),{kind:"state",signIn:(({state:e,...t})=>t)(r),state:a.state}}let f=e=>`${e.name}
4
+ ${e.domain}
5
+ ${e.path}`;async function b(e){let a,r=await (0,t.readdir)(i).catch(()=>[]);if(!r.some(e=>e.endsWith(".json")))return;let n=await (0,l.openWorkspace)(),o=(0,l.jobShellEnv)(e),{browsers:s}=JSON.parse((await n.exec("playwright-cli list --json",{env:o,timeoutMs:15e3})).stdout||"{}"),d=s?.find(e=>e.name===o.PLAYWRIGHT_CLI_SESSION);if(!d||d.attached)return;let m=`.playwright-cli/state-${crypto.randomUUID()}.json`;try{let e=await n.exec(`mkdir -p .playwright-cli && playwright-cli state-save ${m}`,{env:o,timeoutMs:3e4});if(0!==e.exitCode)return;let t=JSON.parse(await n.readFile(m,"utf-8"));a=new Map((t.cookies??[]).map(e=>[f(e),e]))}finally{await n.exec(`rm -f ${m}`)}for(let e of r){if(!e.endsWith(".json"))continue;let t=await c(decodeURIComponent(e.slice(0,-5))),r=t?.state;if(!t||!r?.cookies)continue;let n=!1,l=r.cookies.map(e=>{let t=a.get(f(e));return t&&JSON.stringify(t)!==JSON.stringify(e)?(n=!0,t):e});n&&await u({...t,state:{...r,cookies:l}})}}e.s(["borrowSignIn",0,p,"keepSignIn",0,m,"listSignIns",0,d,"renewSignIns",0,b],527608)},22676,e=>e.a(async(t,a)=>{try{var r=e.i(349129),n=e.i(875225),l=e.i(518899),o=e.i(687388),i=e.i(528790),s=e.i(613240),c=e.i(378884),u=e.i(340698),d=e.i(134344),m=t([i,c,u]);async function p(){return(0,d.isSkillsOn)(await (0,u.readConfig)(d.THURSDAY_KEYS.skills))}async function f(e,t){for(let a of t)await i.database.insert(s.callMessageTable).values({callId:e,...a,fragments:a.fragments??null}).onConflictDoUpdate({target:[s.callMessageTable.callId,s.callMessageTable.id],set:{text:a.text,role:a.role,tool:a.tool??null,fragments:a.fragments??null}})}async function b(e){let[t]=await i.database.select({seq:l.sql`max(${s.callMessageTable.seq})`}).from(s.callMessageTable).where((0,n.eq)(s.callMessageTable.callId,e));return t?.seq==null?0:Number(t.seq)+1}async function h(e,t){await i.database.insert(s.callThoughtTable).values({callId:e,...t}).onConflictDoNothing()}async function T(e){let t=await i.database.select({callId:s.callMessageTable.callId,startedAt:s.callTable.startedAt,role:s.callMessageTable.role,tool:s.callMessageTable.tool,text:s.callMessageTable.text,seq:s.callMessageTable.seq}).from(s.callMessageTable).innerJoin(s.callTable,(0,n.eq)(s.callMessageTable.callId,s.callTable.id)).orderBy((0,r.desc)(s.callTable.startedAt),(0,r.desc)(s.callMessageTable.seq)).limit(e),a=new Map;for(let e of t){let t=a.get(e.callId)??{callId:e.callId,startedAt:e.startedAt,turns:[]};t.turns.push({role:e.role,tool:e.tool,text:e.text,seq:e.seq}),a.set(e.callId,t)}return[...a.values()].reverse().map(e=>({...e,turns:e.turns.reverse()}))}async function g(e,t,a){let[o]=await i.database.select({startedAt:s.callTable.startedAt}).from(s.callTable).where((0,n.eq)(s.callTable.id,e));if(!o)return null;let[c]=await i.database.select({total:l.sql`count(*)`}).from(s.callMessageTable).where((0,n.eq)(s.callMessageTable.callId,e)),u=await i.database.select({role:s.callMessageTable.role,tool:s.callMessageTable.tool,text:s.callMessageTable.text}).from(s.callMessageTable).where((0,n.eq)(s.callMessageTable.callId,e)).orderBy((0,r.asc)(s.callMessageTable.seq)).limit(a).offset((t-1)*a);return{startedAt:o.startedAt,total:Number(c?.total??0),turns:u}}async function y(){return(await i.database.select({id:s.callTable.id}).from(s.callTable).where((0,n.isNull)(s.callTable.endedAt)).limit(1)).length>0}async function w(e){let t=e.limit??o.CALL_HISTORY_PAGE,a=await i.database.select({id:s.callTable.id,provider:s.callTable.provider,model:s.callTable.model,backendModel:s.callTable.backendModel,startedAt:s.callTable.startedAt,endedAt:s.callTable.endedAt,endedReason:s.callTable.endedReason,seconds:s.callTable.seconds}).from(s.callTable).innerJoin(s.callMessageTable,(0,n.eq)(s.callMessageTable.callId,s.callTable.id)).where(e.before?(0,n.lt)(s.callTable.startedAt,e.before):void 0).groupBy(s.callTable.id).orderBy((0,r.desc)(s.callTable.startedAt)).limit(t);if(0===a.length)return[];let l=await i.database.select({callId:s.callMessageTable.callId,id:s.callMessageTable.id,role:s.callMessageTable.role,tool:s.callMessageTable.tool,text:s.callMessageTable.text,seq:s.callMessageTable.seq,fragments:s.callMessageTable.fragments,at:s.callMessageTable.at}).from(s.callMessageTable).where((0,n.inArray)(s.callMessageTable.callId,a.map(e=>e.id))).orderBy((0,r.asc)(s.callMessageTable.callId),(0,r.asc)(s.callMessageTable.seq)),u=new Map;for(let e of l){let{callId:t,...a}=e,r=u.get(t);r?r.push(a):u.set(t,[a])}let d=await (0,c.listCallJobs)(a.map(e=>e.id));return a.map(e=>({...e,turns:u.get(e.id)??[],jobs:d.filter(t=>t.callId===e.id).map(e=>({id:e.id,label:e.label,status:e.status,outcome:e.outcome}))}))}[i,c,u]=m.then?(await m)():m,e.s(["isAnyCallLive",0,y,"listCallHistory",0,w,"listRecentTurns",0,T,"nextTurnSeq",0,b,"readCallConversation",0,g,"readCallSkillsOn",0,p,"saveThought",0,h,"saveTurns",0,f]),a()}catch(e){a(e)}},!1),134344,e=>{"use strict";var t=e.i(105249),a=e.i(687388),r=e.i(264079),n=e.i(904309);let l=[{id:"chatgpt",...r.TEXT_MODEL_PROVIDERS.chatgpt},{id:"openai",...r.TEXT_MODEL_PROVIDERS.openai}];t.default.object({charset:t.default.enum(["ascii","emoji","emojiOnly"]).default(a.ASCII_FACE.charset),fontSize:t.default.number().min(a.ASCII_FACE.fontSize.min).max(a.ASCII_FACE.fontSize.max).default(a.ASCII_FACE.fontSize.default),density:t.default.number().min(a.ASCII_FACE.density.min).max(a.ASCII_FACE.density.max).default(a.ASCII_FACE.density.default)}).parse({});t.default.object({enabled:t.default.boolean(),phrase:t.default.string().trim().min(3).max(32)}),t.default.object({enabled:t.default.boolean(),combo:t.default.string().trim().min(1).max(64)}),t.default.enum(["off","waiting","any"]),t.default.enum(["center","sides"]),t.default.object({id:t.default.string().min(1),role:t.default.enum(["user","assistant","tool"]),tool:t.default.string().nullish(),text:t.default.string(),seq:t.default.number().int().min(0),fragments:t.default.array(n.LiveFragmentSchema).nullish()}),t.default.object({id:t.default.string().min(1),text:t.default.string(),seq:t.default.number().int().min(0)}),e.s(["TEXT_CALL_PROVIDERS",0,l,"THURSDAY_KEYS",0,{skills:"THURSDAY_SKILLS"},"isSkillsOn",0,e=>e?.trim()==="on","textCallRunsOn",0,e=>l.find(t=>e(t.apiKeyName))?.id??null],134344)},629668,175936,e=>{"use strict";let t=e=>e.split("/").map(encodeURIComponent).join("/"),a={memory:"/api/memory",memoryPage:e=>({url:"/api/memory",query:{offset:e||null}}),notePath:e=>({url:"/api/memory",query:{path:e}}),mcp:"/api/mcp",mcpServer:e=>({url:"/api/mcp",pathVariable:[e]}),mcpTools:"/api/mcp/tools",skills:"/api/skills",skillNode:(e,t,a)=>({url:"/api/skills",pathVariable:[e,t],query:{path:a}}),bot:"/api/bot",botMemory:"/api/bot/memory",botKeepWorking:"/api/bot/keep-working",botMemoryFiles:e=>({url:"/api/bot/memory/files",query:{bot:e}}),routines:"/api/routine",threads:"/api/bot/thread",threadHistory:e=>({url:"/api/bot/thread",query:{history:1,before:e}}),thread:e=>({url:"/api/bot/thread",query:{id:e}}),toolResult:(e,t)=>({url:"/api/bot/thread",pathVariable:[e],query:{call:t}}),workspace:"/api/workspace",workspaceFolder:(e,t)=>({url:"/api/workspace",query:{path:e||null,rows:t}}),workspaceFiles:e=>({url:"/api/workspace/files",query:{paths:JSON.stringify(e)}}),artifacts:"/api/artifact",artifactShelf:e=>({url:"/api/artifact",query:{rows:e}}),artifactSet:(e,t)=>({url:"/api/artifact",query:{set:e,rows:t}}),file:e=>`/api/file/${t(e)}`,favicon:e=>`/api/favicon/${encodeURIComponent(e)}`,fileView:e=>`/artifact/${t(e)}`,events:"/api/events",config:"/api/config",callHistory:e=>({url:"/api/thursday/call",query:{before:e}}),callSkills:"/api/thursday/skills",toolCall:"/api/thursday/tool-call",signIns:"/api/signins",reach:"/api/reach",textCall:"/api/thursday/text",memoryEdit:"/api/memory/edit",llmModel:"/api/llm-model",modelCatalog:"/api/llm-model/catalog",gatewayCredits:"/api/llm-model/credits",subscriptionUsage:"/api/llm-model/subscription"};e.s(["decodePath",0,e=>e.join("/"),"queryKey",0,a],175936);var r=e.i(687388);let n=e=>`text/${e}; charset=utf-8`,l={md:{kind:"markdown",mime:n("markdown")},markdown:{kind:"markdown",mime:n("markdown")},csv:{kind:"csv",mime:n("csv")},json:{kind:"json",mime:"application/json; charset=utf-8"},txt:{kind:"text",mime:n("plain")},log:{kind:"text",mime:n("plain")},html:{kind:"frame",mime:n("html")},htm:{kind:"frame",mime:n("html")},pdf:{kind:"frame",mime:"application/pdf"},png:{kind:"image",mime:"image/png"},jpg:{kind:"image",mime:"image/jpeg"},jpeg:{kind:"image",mime:"image/jpeg"},gif:{kind:"image",mime:"image/gif"},webp:{kind:"image",mime:"image/webp"},svg:{kind:"image",mime:"image/svg+xml"},mp3:{kind:"audio",mime:"audio/mpeg"},wav:{kind:"audio",mime:"audio/wav"},mp4:{kind:"video",mime:"video/mp4"},webm:{kind:"video",mime:"video/webm"},css:{kind:"none",mime:n("css")},js:{kind:"none",mime:n("javascript")},woff2:{kind:"none",mime:"font/woff2"}},o=e=>e.split(".").pop()?.toLowerCase()??"",i=new Set(["node_modules","__pycache__"]),s=Object.entries(l).filter(([,e])=>"none"!==e.kind).map(([e])=>e),c=RegExp(String.raw`(?<![\p{L}\p{N}_/:@%-])\/?(?:[\p{L}\p{N}_.@%-]+/)*[\p{L}\p{N}_@%-]+(?:\.[\p{L}\p{N}_-]+)*\.(?:${s.join("|")})\b`,"giu"),u=`${r.PATHS.workspace}/`,d=a.file(""),m=/^[\s`'"*_)]*(?:~|–|—|-|\.{2,}|…|to|through)[\s`'"*_(]*$/i;e.s(["isListedFolder",0,e=>!e.startsWith(".")&&!i.has(e),"mimeOf",0,e=>l[o(e)]?.mime??"application/octet-stream","opensOnFinish",0,e=>e.startsWith(`${r.PATHS.artifacts}/`)&&["md","markdown","html","htm"].includes(o(e)),"pathsIn",0,function(e){let t=e.replace(/\b[a-z][\w+.-]*:\/\/\S+/gi," "),a=new Set,r="",n=null;for(let e of t.matchAll(c)){let l=e[0],o=!l.includes("/"),i=function(e){let t,a,r=(a=(t=function(e){if(!e.startsWith(d))return e;let t=e.slice(d.length);try{return decodeURIComponent(t)}catch{return t}}(e.trim())).indexOf(u))>=0?t.slice(a+u.length)||null:t.startsWith("/")||/^[A-Za-z]:/.test(t)||t.split("/").includes("..")?null:t||null;if(!r)return null;let[n,...l]=r.split("/");return l.length&&n.includes(".")?null:r}(o?r+l:l);if(o||(r=i?.slice(0,i.lastIndexOf("/")+1)??""),i){if(n&&m.test(t.slice(n.end,e.index)))for(let e of function(e,t){let a=/^(.*?)(\d+)(\D*)$/.exec(e),r=/^(.*?)(\d+)(\D*)$/.exec(t);if(!a||!r||a[1]!==r[1]||a[3]!==r[3])return[];let n=Number(a[2]),l=Number(r[2]);if(!(l-n>1)||l-n>12)return[];let o=a[2].startsWith("0")?a[2].length:0;return Array.from({length:l-n-1},(e,t)=>`${a[1]}${String(n+t+1).padStart(o,"0")}${a[3]}`)}(n.rel,i))a.add(e);a.add(i),n={rel:i,end:e.index+l.length}}}return[...a].slice(0,12)},"viewKindOf",0,e=>l[o(e)]?.kind??"none"],629668)},268486,e=>{"use strict";var t=e.i(41444);e.s(["createKeyedLock",0,function(){let e=new Map,a=new Map;return function(r,n){let l=e.get(r);l||(l=(0,t.PromiseChain)(),e.set(r,l)),a.set(r,(a.get(r)??0)+1);let o=()=>{let t=(a.get(r)??1)-1;t>0?a.set(r,t):(a.delete(r),e.delete(r))};return l(n).then(e=>(o(),e),e=>{throw o(),e})}}])},78997,(e,t,a)=>{"use strict";var r=Object.create,n=Object.defineProperty,l=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyNames,i=Object.getPrototypeOf,s=Object.prototype.hasOwnProperty,c=(e,t,a,r)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let i of o(t))s.call(e,i)||i===a||n(e,i,{get:()=>t[i],enumerable:!(r=l(t,i))||r.enumerable});return e},u=(e,t,a)=>(a=null!=e?r(i(e)):{},c(!t&&e&&e.__esModule?a:n(a,"default",{value:e,enumerable:!0}),e)),d={},m={isValidAccessToken:()=>w,readAuthConfig:()=>g,writeAuthConfig:()=>y};for(var p in m)n(d,p,{get:m[p],enumerable:!0});t.exports=c(n({},"__esModule",{value:!0}),d);var f=u(e.r(522734)),b=u(e.r(814747)),h=e.r(783697);function T(){let e=(0,h.getVercelDataDir)();if(!e)throw Error(`Unable to find Vercel CLI data directory. Your platform: ${process.platform}. Supported: darwin, linux, win32.`);return b.join(e,"auth.json")}function g(){try{let e=T();if(!f.existsSync(e))return null;let t=f.readFileSync(e,"utf8");if(!t)return null;return JSON.parse(t)}catch(e){return null}}function y(e){let t=T(),a=b.dirname(t);f.existsSync(a)||f.mkdirSync(a,{mode:504,recursive:!0}),f.writeFileSync(t,JSON.stringify(e,null,2),{mode:384})}function w(e,t=0){if(!e.token)return!1;if("number"!=typeof e.expiresAt)return!0;let a=Math.floor(Date.now()/1e3);return e.expiresAt>=a+t/1e3}},452005,(e,t,a)=>{"use strict";var r=Object.defineProperty,n=Object.getOwnPropertyDescriptor,l=Object.getOwnPropertyNames,o=Object.prototype.hasOwnProperty,i={},s={AccessTokenMissingError:()=>u,RefreshAccessTokenFailedError:()=>d};for(var c in s)r(i,c,{get:s[c],enumerable:!0});t.exports=((e,t,a)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let i of l(t))o.call(e,i)||void 0===i||r(e,i,{get:()=>t[i],enumerable:!(a=n(t,i))||a.enumerable});return e})(r({},"__esModule",{value:!0}),i);class u extends Error{constructor(){super("No authentication found. Please log in with the Vercel CLI (vercel login)."),this.name="AccessTokenMissingError"}}class d extends Error{constructor(e){super("Failed to refresh authentication token.",{cause:e}),this.name="RefreshAccessTokenFailedError"}}},394853,(e,t,a)=>{"use strict";var r=Object.defineProperty,n=Object.getOwnPropertyDescriptor,l=Object.getOwnPropertyNames,o=Object.prototype.hasOwnProperty,i={},s={processTokenResponse:()=>b,refreshTokenRequest:()=>f};for(var c in s)r(i,c,{get:s[c],enumerable:!0});t.exports=((e,t,a)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let i of l(t))o.call(e,i)||void 0===i||r(e,i,{get:()=>t[i],enumerable:!(a=n(t,i))||a.enumerable});return e})(r({},"__esModule",{value:!0}),i);var u=e.r(446786);let d=`@vercel/oidc node-${process.version} ${(0,u.platform)()} (${(0,u.arch)()}) ${(0,u.hostname)()}`,m=null;async function p(){if(m)return m;let e=await fetch("https://vercel.com/.well-known/openid-configuration",{headers:{"user-agent":d}});if(!e.ok)throw Error("Failed to discover OAuth endpoints");let t=await e.json();if(!t||"string"!=typeof t.token_endpoint)throw Error("Invalid OAuth discovery response");let a=t.token_endpoint;return m=a,a}async function f(e){let t=await p();return await fetch(t,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded","user-agent":d},body:new URLSearchParams({client_id:"cl_HYyOPBNtFMfHhaUn9L4QPfTZz6TP47bp",grant_type:"refresh_token",...e})})}async function b(e){let t=await e.json();return e.ok?"object"!=typeof t||null===t?[Error("Invalid token response")]:"string"!=typeof t.access_token?[Error("Missing access_token in response")]:"Bearer"!==t.token_type?[Error("Invalid token_type in response")]:"number"!=typeof t.expires_in?[Error("Missing expires_in in response")]:[null,t]:[Error("object"==typeof t&&t&&"error"in t?String(t.error):"Token refresh failed")]}},484199,(e,t,a)=>{"use strict";var r=Object.defineProperty,n=Object.getOwnPropertyDescriptor,l=Object.getOwnPropertyNames,o=Object.prototype.hasOwnProperty,i={},s={VercelOidcTokenError:()=>u};for(var c in s)r(i,c,{get:s[c],enumerable:!0});t.exports=((e,t,a)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let i of l(t))o.call(e,i)||void 0===i||r(e,i,{get:()=>t[i],enumerable:!(a=n(t,i))||a.enumerable});return e})(r({},"__esModule",{value:!0}),i);class u extends Error{constructor(e,t){super(e),this.name="VercelOidcTokenError",this.cause=t}toString(){return this.cause?`${this.name}: ${this.message}: ${this.cause}`:`${this.name}: ${this.message}`}}},1791,(e,t,a)=>{"use strict";var r=Object.create,n=Object.defineProperty,l=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyNames,i=Object.getPrototypeOf,s=Object.prototype.hasOwnProperty,c=(e,t,a,r)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let i of o(t))s.call(e,i)||i===a||n(e,i,{get:()=>t[i],enumerable:!(r=l(t,i))||r.enumerable});return e},u=(e,t,a)=>(a=null!=e?r(i(e)):{},c(!t&&e&&e.__esModule?a:n(a,"default",{value:e,enumerable:!0}),e)),d={},m={findRootDir:()=>g,getUserDataDir:()=>y};for(var p in m)n(d,p,{get:m[p],enumerable:!0});t.exports=c(n({},"__esModule",{value:!0}),d);var f=u(e.r(814747)),b=u(e.r(522734)),h=u(e.r(446786)),T=e.r(484199);function g(){try{let e=process.cwd();for(;e!==f.default.dirname(e);){let t=f.default.join(e,".vercel");if(b.default.existsSync(t))return e;e=f.default.dirname(e)}}catch(e){throw new T.VercelOidcTokenError("Token refresh only supported in node server environments")}return null}function y(){if(process.env.XDG_DATA_HOME)return process.env.XDG_DATA_HOME;switch(h.default.platform()){case"darwin":return f.default.join(h.default.homedir(),"Library/Application Support");case"linux":return f.default.join(h.default.homedir(),".local/share");case"win32":if(process.env.LOCALAPPDATA)return process.env.LOCALAPPDATA;return null;default:return null}}},783697,(e,t,a)=>{"use strict";var r=Object.create,n=Object.defineProperty,l=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyNames,i=Object.getPrototypeOf,s=Object.prototype.hasOwnProperty,c=(e,t,a,r)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let i of o(t))s.call(e,i)||i===a||n(e,i,{get:()=>t[i],enumerable:!(r=l(t,i))||r.enumerable});return e},u=(e,t,a)=>(a=null!=e?r(i(e)):{},c(!t&&e&&e.__esModule?a:n(a,"default",{value:e,enumerable:!0}),e)),d={},m={assertVercelOidcTokenResponse:()=>O,findProjectInfo:()=>j,getTokenPayload:()=>M,getVercelDataDir:()=>v,getVercelOidcToken:()=>S,getVercelToken:()=>k,isExpired:()=>I,loadToken:()=>x,saveToken:()=>A};for(var p in m)n(d,p,{get:m[p],enumerable:!0});t.exports=c(n({},"__esModule",{value:!0}),d);var f=u(e.r(814747)),b=u(e.r(522734)),h=e.r(484199),T=e.r(1791),g=e.r(78997),y=e.r(394853),w=e.r(452005);function v(){let e=(0,T.getUserDataDir)();return e?f.join(e,"com.vercel.cli"):null}async function k(e){let t=(0,g.readAuthConfig)();if(!t?.token)throw new w.AccessTokenMissingError;if((0,g.isValidAccessToken)(t,e?.expirationBufferMs))return t.token;if(!t.refreshToken)throw(0,g.writeAuthConfig)({}),new w.RefreshAccessTokenFailedError("No refresh token available");try{let e=await (0,y.refreshTokenRequest)({refresh_token:t.refreshToken}),[a,r]=await (0,y.processTokenResponse)(e);if(a||!r)throw(0,g.writeAuthConfig)({}),new w.RefreshAccessTokenFailedError(a);let n={token:r.access_token,expiresAt:Math.floor(Date.now()/1e3)+r.expires_in};return r.refresh_token&&(n.refreshToken=r.refresh_token),(0,g.writeAuthConfig)(n),n.token}catch(e){if((0,g.writeAuthConfig)({}),e instanceof w.AccessTokenMissingError||e instanceof w.RefreshAccessTokenFailedError)throw e;throw new w.RefreshAccessTokenFailedError(e)}}async function S(e,t,a){let r=`https://api.vercel.com/v1/projects/${t}/token?source=vercel-oidc-refresh${a?`&teamId=${a}`:""}`,n=await fetch(r,{method:"POST",headers:{Authorization:`Bearer ${e}`}});if(!n.ok)throw new h.VercelOidcTokenError(`Failed to refresh OIDC token: ${n.statusText}`);let l=await n.json();return O(l),l}function O(e){if(!e||"object"!=typeof e)throw TypeError("Vercel OIDC token is malformed. Expected an object. Please run `vc env pull` and try again");if(!("token"in e)||"string"!=typeof e.token)throw TypeError("Vercel OIDC token is malformed. Expected a string-valued token property. Please run `vc env pull` and try again")}function j(){let e=(0,T.findRootDir)();if(!e)throw new h.VercelOidcTokenError("Unable to find project root directory. Have you linked your project with `vc link?`");let t=f.join(e,".vercel","project.json");if(!b.existsSync(t))throw new h.VercelOidcTokenError("project.json not found, have you linked your project with `vc link?`");let a=JSON.parse(b.readFileSync(t,"utf8"));if("string"!=typeof a.projectId&&"string"!=typeof a.orgId)throw TypeError("Expected a string-valued projectId property. Try running `vc link` to re-link your project.");return{projectId:a.projectId,teamId:a.orgId}}function A(e,t){let a=(0,T.getUserDataDir)();if(!a)throw new h.VercelOidcTokenError("Unable to find user data directory. Please reach out to Vercel support.");let r=f.join(a,"com.vercel.token",`${t}.json`),n=JSON.stringify(e);b.mkdirSync(f.dirname(r),{mode:504,recursive:!0}),b.writeFileSync(r,n),b.chmodSync(r,432)}function x(e){let t=(0,T.getUserDataDir)();if(!t)throw new h.VercelOidcTokenError("Unable to find user data directory. Please reach out to Vercel support.");let a=f.join(t,"com.vercel.token",`${e}.json`);if(!b.existsSync(a))return null;let r=JSON.parse(b.readFileSync(a,"utf8"));return O(r),r}function M(e){let t=e.split(".");if(3!==t.length)throw new h.VercelOidcTokenError("Invalid token. Please run `vc env pull` and try again");let a=t[1].replace(/-/g,"+").replace(/_/g,"/"),r=a.padEnd(a.length+(4-a.length%4)%4,"=");return JSON.parse(Buffer.from(r,"base64").toString("utf8"))}function I(e,t=0){return 1e3*e.exp<Date.now()+t}},260338,e=>{"use strict";var t=e.i(518899),a=e.i(844988),r=e.i(156325);e.s(["count",0,function(e){return t.sql`count(${e||t.sql.raw("*")})`.mapWith(Number)},"max",0,function(e){return t.sql`max(${e})`.mapWith((0,a.is)(e,r.Column)?e:String)}])}];
4
6
 
5
7
  //# sourceMappingURL=%5Broot-of-the-server%5D__04r4h-2._.js.map