thursday-agent 0.2.0 → 0.3.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 (535) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +5 -2
  3. package/.next/build-manifest.json +3 -3
  4. package/.next/prerender-manifest.json +5 -5
  5. package/.next/routes-manifest.json +24 -6
  6. package/.next/server/app/_global-error/page.js +2 -2
  7. package/.next/server/app/_global-error/page.js.nft.json +1 -1
  8. package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  9. package/.next/server/app/_global-error.html +1 -1
  10. package/.next/server/app/_global-error.rsc +2 -2
  11. package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  12. package/.next/server/app/_global-error.segments/_full.segment.rsc +2 -2
  13. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  14. package/.next/server/app/_not-found/page.js +2 -2
  15. package/.next/server/app/_not-found/page.js.nft.json +1 -1
  16. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  17. package/.next/server/app/_not-found.html +1 -1
  18. package/.next/server/app/_not-found.rsc +14 -14
  19. package/.next/server/app/_not-found.segments/_full.segment.rsc +14 -14
  20. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +12 -12
  21. package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  22. package/.next/server/app/api/artifact/route.js +3 -3
  23. package/.next/server/app/api/artifact/route.js.nft.json +1 -1
  24. package/.next/server/app/api/bot/memory/files/route/app-paths-manifest.json +3 -0
  25. package/.next/server/app/api/bot/memory/files/route.js +10 -0
  26. package/.next/server/app/api/bot/memory/files/route.js.nft.json +1 -0
  27. package/.next/server/app/api/bot/memory/files/route_client-reference-manifest.js +3 -0
  28. package/.next/server/app/api/bot/memory/route/app-paths-manifest.json +3 -0
  29. package/.next/server/app/api/bot/memory/route.js +14 -0
  30. package/.next/server/app/api/bot/{notes → memory}/route.js.nft.json +1 -1
  31. package/.next/server/app/api/bot/memory/route_client-reference-manifest.js +3 -0
  32. package/.next/server/app/api/bot/route.js +6 -6
  33. package/.next/server/app/api/bot/route.js.nft.json +1 -1
  34. package/.next/server/app/api/bot/task/[id]/route.js +8 -8
  35. package/.next/server/app/api/bot/task/[id]/route.js.nft.json +1 -1
  36. package/.next/server/app/api/bot/task/route.js +8 -8
  37. package/.next/server/app/api/bot/task/route.js.nft.json +1 -1
  38. package/.next/server/app/api/config/route.js +5 -5
  39. package/.next/server/app/api/config/route.js.nft.json +1 -1
  40. package/.next/server/app/api/events/route.js +4 -5
  41. package/.next/server/app/api/events/route.js.nft.json +1 -1
  42. package/.next/server/app/api/file/[...path]/route.js +3 -3
  43. package/.next/server/app/api/file/[...path]/route.js.nft.json +1 -1
  44. package/.next/server/app/api/llm-model/catalog/route.js +9 -8
  45. package/.next/server/app/api/llm-model/catalog/route.js.nft.json +1 -1
  46. package/.next/server/app/api/llm-model/credits/route/app-paths-manifest.json +3 -0
  47. package/.next/server/app/api/llm-model/credits/route/build-manifest.json +12 -0
  48. package/.next/server/app/api/llm-model/credits/route/server-reference-manifest.json +4 -0
  49. package/.next/server/app/api/llm-model/credits/route.js +16 -0
  50. package/.next/server/app/api/llm-model/credits/route.js.map +5 -0
  51. package/.next/server/app/api/llm-model/credits/route.js.nft.json +1 -0
  52. package/.next/server/app/api/llm-model/credits/route_client-reference-manifest.js +3 -0
  53. package/.next/server/app/api/llm-model/route.js +10 -8
  54. package/.next/server/app/api/llm-model/route.js.nft.json +1 -1
  55. package/.next/server/app/api/llm-model/subscription/route/app-paths-manifest.json +3 -0
  56. package/.next/server/app/api/llm-model/subscription/route/build-manifest.json +12 -0
  57. package/.next/server/app/api/llm-model/subscription/route/server-reference-manifest.json +4 -0
  58. package/.next/server/app/api/llm-model/subscription/route.js +15 -0
  59. package/.next/server/app/api/llm-model/subscription/route.js.map +5 -0
  60. package/.next/server/app/api/llm-model/subscription/route.js.nft.json +1 -0
  61. package/.next/server/app/api/llm-model/subscription/route_client-reference-manifest.js +3 -0
  62. package/.next/server/app/api/mcp/[name]/route.js +4 -4
  63. package/.next/server/app/api/mcp/[name]/route.js.nft.json +1 -1
  64. package/.next/server/app/api/mcp/oauth/callback/route.js +5 -5
  65. package/.next/server/app/api/mcp/oauth/callback/route.js.nft.json +1 -1
  66. package/.next/server/app/api/mcp/route.js +4 -4
  67. package/.next/server/app/api/mcp/route.js.nft.json +1 -1
  68. package/.next/server/app/api/mcp/tools/route.js +4 -4
  69. package/.next/server/app/api/mcp/tools/route.js.nft.json +1 -1
  70. package/.next/server/app/api/memory/edit/route/app-paths-manifest.json +3 -0
  71. package/.next/server/app/api/memory/edit/route/build-manifest.json +12 -0
  72. package/.next/server/app/api/memory/edit/route/server-reference-manifest.json +4 -0
  73. package/.next/server/app/api/memory/edit/route.js +24 -0
  74. package/.next/server/app/api/memory/edit/route.js.map +5 -0
  75. package/.next/server/app/api/memory/edit/route.js.nft.json +1 -0
  76. package/.next/server/app/api/memory/{tidy → edit}/route_client-reference-manifest.js +1 -1
  77. package/.next/server/app/api/memory/route.js +6 -7
  78. package/.next/server/app/api/memory/route.js.nft.json +1 -1
  79. package/.next/server/app/api/skills/[source]/[name]/route.js +3 -3
  80. package/.next/server/app/api/skills/[source]/[name]/route.js.nft.json +1 -1
  81. package/.next/server/app/api/skills/route.js +3 -3
  82. package/.next/server/app/api/skills/route.js.nft.json +1 -1
  83. package/.next/server/app/api/thursday/call/route.js +9 -7
  84. package/.next/server/app/api/thursday/call/route.js.nft.json +1 -1
  85. package/.next/server/app/api/thursday/skills/route.js +9 -7
  86. package/.next/server/app/api/thursday/skills/route.js.nft.json +1 -1
  87. package/.next/server/app/api/thursday/tool-call/route.js +17 -15
  88. package/.next/server/app/api/thursday/tool-call/route.js.nft.json +1 -1
  89. package/.next/server/app/api/workspace/route.js +4 -5
  90. package/.next/server/app/api/workspace/route.js.nft.json +1 -1
  91. package/.next/server/app/artifact/[...path]/page/server-reference-manifest.json +1 -1
  92. package/.next/server/app/artifact/[...path]/page.js +5 -6
  93. package/.next/server/app/artifact/[...path]/page.js.nft.json +1 -1
  94. package/.next/server/app/artifact/[...path]/page_client-reference-manifest.js +1 -1
  95. package/.next/server/app/favicon.ico/route.js +3 -4
  96. package/.next/server/app/favicon.ico/route.js.nft.json +1 -1
  97. package/.next/server/app/favicon.ico.body +0 -0
  98. package/.next/server/app/page/server-reference-manifest.json +57 -90
  99. package/.next/server/app/page.js +10 -10
  100. package/.next/server/app/page.js.nft.json +1 -1
  101. package/.next/server/app/page_client-reference-manifest.js +1 -1
  102. package/.next/server/app-paths-manifest.json +5 -2
  103. package/.next/server/chunks/[externals]__0dzuk6_._.js +3 -0
  104. package/.next/server/chunks/[root-of-the-server]__01dkp4a._.js +3 -0
  105. package/.next/server/chunks/[root-of-the-server]__02va5wz._.js +1 -1
  106. package/.next/server/chunks/[root-of-the-server]__02xjoto._.js +3 -0
  107. package/.next/server/chunks/[root-of-the-server]__04q--0f._.js +8 -0
  108. package/.next/server/chunks/[root-of-the-server]__0bl-e63._.js +3 -0
  109. package/.next/server/chunks/[root-of-the-server]__0ce8nf8._.js +5 -0
  110. package/.next/server/chunks/[root-of-the-server]__0ffbg85._.js +3 -0
  111. package/.next/server/chunks/[root-of-the-server]__0j7z0r3._.js +12 -0
  112. package/.next/server/chunks/[root-of-the-server]__0jq4ohy._.js +8 -0
  113. package/.next/server/chunks/[root-of-the-server]__0ls6_8y._.js +8 -0
  114. package/.next/server/chunks/[root-of-the-server]__0ncs9uu._.js +3 -0
  115. package/.next/server/chunks/[root-of-the-server]__0pa2n68._.js +3 -0
  116. package/.next/server/chunks/[root-of-the-server]__0q0vvt2._.js +5 -0
  117. package/.next/server/chunks/[root-of-the-server]__1-ga0kh._.js +5 -0
  118. package/.next/server/chunks/[root-of-the-server]__11n256_._.js +5 -0
  119. package/.next/server/chunks/[root-of-the-server]__12cabg9._.js +3 -0
  120. package/.next/server/chunks/[root-of-the-server]__1339jnv._.js +8 -0
  121. package/.next/server/chunks/[root-of-the-server]__15bjnu5._.js +5 -0
  122. package/.next/server/chunks/[root-of-the-server]__18_teo8._.js +8 -0
  123. package/.next/server/chunks/[root-of-the-server]__1_04mcf._.js +5 -0
  124. package/.next/server/chunks/[root-of-the-server]__1anc1p9._.js +3 -0
  125. package/.next/server/chunks/[root-of-the-server]__1ccon1w._.js +5 -5
  126. package/.next/server/chunks/[root-of-the-server]__1fizn31._.js +3 -0
  127. package/.next/server/chunks/[root-of-the-server]__1llj3-b._.js +3 -0
  128. package/.next/server/chunks/[root-of-the-server]__1orn-5b._.js +11 -0
  129. package/.next/server/chunks/[root-of-the-server]__1p8m3f4._.js +3 -0
  130. package/.next/server/chunks/[root-of-the-server]__1wa1k7r._.js +8 -0
  131. package/.next/server/chunks/_0-73of8._.js +5 -5
  132. package/.next/server/chunks/_0-fjql4._.js +26 -0
  133. package/.next/server/chunks/_00xh_q0._.js +27 -0
  134. package/.next/server/chunks/{_0pppbb5._.js → _03kp0jp._.js} +163 -36
  135. package/.next/server/chunks/_051qh8u._.js +3 -0
  136. package/.next/server/chunks/{node_modules_next_04q-o58._.js → _05dla15._.js} +2 -2
  137. package/.next/server/chunks/_05h2cii._.js +1 -1
  138. package/.next/server/chunks/_0c9j6rb._.js +49 -0
  139. package/.next/server/chunks/_0fzqt2y._.js +130 -0
  140. package/.next/server/chunks/{_0vnutv9._.js → _0ioz3nd._.js} +1 -1
  141. package/.next/server/chunks/_0iwfby5._.js +3 -0
  142. package/.next/server/chunks/_0mecv0f._.js +26 -0
  143. package/.next/server/chunks/_0mh8j4m._.js +3 -0
  144. package/.next/server/chunks/_0n74zsf._.js +4 -4
  145. package/.next/server/chunks/_0obojvv._.js +3 -0
  146. package/.next/server/chunks/_0recufk._.js +49 -0
  147. package/.next/server/chunks/_0rnf-6n._.js +4 -4
  148. package/.next/server/chunks/_0sb7tlz._.js +3 -0
  149. package/.next/server/chunks/_0u10wmw._.js +5 -5
  150. package/.next/server/chunks/_0u4aiy2._.js +3 -0
  151. package/.next/server/chunks/_0wp4le3._.js +1 -1
  152. package/.next/server/chunks/_0y5fg-x._.js +1 -1
  153. package/.next/server/chunks/_1230wbx._.js +10 -0
  154. package/.next/server/chunks/_12nheja._.js +3 -0
  155. package/.next/server/chunks/_13510xh._.js +3 -0
  156. package/.next/server/chunks/_15hq89o._.js +1 -1
  157. package/.next/server/chunks/_17l5ygt._.js +49 -0
  158. package/.next/server/chunks/_18-1wcc._.js +5 -5
  159. package/.next/server/chunks/_1_5mnq4._.js +4 -4
  160. package/.next/server/chunks/_1_9mjx-._.js +3 -0
  161. package/.next/server/chunks/_1d0j961._.js +6 -0
  162. package/.next/server/chunks/_1d5zmy8._.js +1 -1
  163. package/.next/server/chunks/_1drgfx4._.js +4 -4
  164. package/.next/server/chunks/_1f46eie._.js +3 -0
  165. package/.next/server/chunks/_1h5_8sk._.js +3 -0
  166. package/.next/server/chunks/_1hdnxb7._.js +3 -0
  167. package/.next/server/chunks/_1j8k_j5._.js +3 -0
  168. package/.next/server/chunks/_1krd9rf._.js +3 -0
  169. package/.next/server/chunks/_1nc0eui._.js +11 -0
  170. package/.next/server/chunks/_1nula3v._.js +3 -0
  171. package/.next/server/chunks/_1pf4qe-._.js +3 -0
  172. package/.next/server/chunks/_1php4eq._.js +1 -1
  173. package/.next/server/chunks/_1qxheoa._.js +3 -0
  174. package/.next/server/chunks/_1x6kd1r._.js +3 -0
  175. package/.next/server/chunks/_1yuv4vp._.js +1 -1
  176. package/.next/server/chunks/_1zjrdag._.js +3 -0
  177. package/.next/server/chunks/_next-internal_server_app_api_bot_memory_files_route_actions_1_xd_8f.js +3 -0
  178. package/.next/server/chunks/_next-internal_server_app_api_bot_memory_route_actions_1a8xfr7.js +3 -0
  179. package/.next/server/chunks/_next-internal_server_app_api_llm-model_credits_route_actions_0v424pb.js +3 -0
  180. package/.next/server/chunks/_next-internal_server_app_api_llm-model_subscription_route_actions_0-udcm5.js +3 -0
  181. package/.next/server/chunks/_next-internal_server_app_api_memory_edit_route_actions_02sfnmr.js +3 -0
  182. package/.next/server/chunks/config_ts_1g4sz5o._.js +1 -1
  183. package/.next/server/chunks/features_0rpfxbk._.js +3 -0
  184. package/.next/server/chunks/features_1qf3cei._.js +3 -0
  185. package/.next/server/chunks/features_bot_0zt92oh._.js +3 -0
  186. package/.next/server/chunks/features_bot_bot_query_ts_12mgkl2._.js +3 -0
  187. package/.next/server/chunks/features_memory_1uqvksn._.js +6 -0
  188. package/.next/server/chunks/{node_modules_consola_dist_chunks_prompt_mjs_0a1rd09._.js → node_modules_consola_dist_chunks_prompt_mjs_0i7cvml._.js} +1 -1
  189. package/.next/server/chunks/{node_modules_consola_dist_chunks_prompt_mjs_06067w6._.js → node_modules_consola_dist_chunks_prompt_mjs_0icqaqw._.js} +1 -1
  190. package/.next/server/chunks/{node_modules_consola_dist_chunks_prompt_mjs_096ais_._.js → node_modules_consola_dist_chunks_prompt_mjs_0r28-sm._.js} +1 -1
  191. package/.next/server/chunks/{node_modules_consola_dist_chunks_prompt_mjs_02s3hjt._.js → node_modules_consola_dist_chunks_prompt_mjs_0v_7drq._.js} +1 -1
  192. package/.next/server/chunks/node_modules_consola_dist_chunks_prompt_mjs_1xoq2rl._.js +3 -0
  193. package/.next/server/chunks/{node_modules_consola_dist_chunks_prompt_mjs_0tvkfgh._.js → node_modules_consola_dist_chunks_prompt_mjs_1y49572._.js} +1 -1
  194. package/.next/server/chunks/ssr/[root-of-the-server]__09q9med._.js +1 -1
  195. package/.next/server/chunks/ssr/{[root-of-the-server]__1qfqvmg._.js → [root-of-the-server]__0_69wqr._.js} +2 -2
  196. package/.next/server/chunks/ssr/[root-of-the-server]__0hg5gib._.js +1 -1
  197. package/.next/server/chunks/ssr/[root-of-the-server]__0i8ie7f._.js +3 -0
  198. package/.next/server/chunks/ssr/{[root-of-the-server]__0jsmmb-._.js → [root-of-the-server]__0mz33a7._.js} +1 -1
  199. package/.next/server/chunks/ssr/[root-of-the-server]__0tbkdlx._.js +3 -0
  200. package/.next/server/chunks/ssr/[root-of-the-server]__0vnmv-s._.js +3 -0
  201. package/.next/server/chunks/ssr/{[root-of-the-server]__0f6s48x._.js → [root-of-the-server]__0xpcv9w._.js} +3 -3
  202. package/.next/server/chunks/ssr/[root-of-the-server]__0xtssj3._.js +1 -1
  203. package/.next/server/chunks/ssr/[root-of-the-server]__0zkv7z_._.js +3 -0
  204. package/.next/server/chunks/ssr/[root-of-the-server]__10-dz5o._.js +57 -0
  205. package/.next/server/chunks/ssr/[root-of-the-server]__15_uhip._.js +3 -0
  206. package/.next/server/chunks/ssr/[root-of-the-server]__16jc196._.js +1 -1
  207. package/.next/server/chunks/ssr/{[root-of-the-server]__0m1b5ky._.js → [root-of-the-server]__1cyjywu._.js} +1 -1
  208. package/.next/server/chunks/ssr/[root-of-the-server]__1eh7hid._.js +3 -0
  209. package/.next/server/chunks/ssr/[root-of-the-server]__1gtlw6v._.js +43 -0
  210. package/.next/server/chunks/ssr/[root-of-the-server]__1mzi-ju._.js +1 -1
  211. package/.next/server/chunks/ssr/[root-of-the-server]__1ox7hbk._.js +4 -0
  212. package/.next/server/chunks/ssr/[root-of-the-server]__1pduf5n._.js +3 -0
  213. package/.next/server/chunks/ssr/{_1mznrxk._.js → _001_ms1._.js} +3 -3
  214. package/.next/server/chunks/ssr/_01_6m32._.js +3 -0
  215. package/.next/server/chunks/ssr/_01n3o0m._.js +3 -0
  216. package/.next/server/chunks/ssr/_07uchnc._.js +3 -0
  217. package/.next/server/chunks/ssr/_0ap2fzn._.js +3 -0
  218. package/.next/server/chunks/ssr/_0c-ql2m._.js +3 -0
  219. package/.next/server/chunks/ssr/_0h42fze._.js +3 -0
  220. package/.next/server/chunks/ssr/_0h7zdni._.js +1 -1
  221. package/.next/server/chunks/ssr/_0i_6q1w._.js +41 -0
  222. package/.next/server/chunks/ssr/_0kbkmar._.js +3 -0
  223. package/.next/server/chunks/ssr/{_077-g6s._.js → _0mb8zc8._.js} +3 -3
  224. package/.next/server/chunks/ssr/_0mo2w06._.js +3 -0
  225. package/.next/server/chunks/ssr/{_13punpm._.js → _0q0zan6._.js} +2 -2
  226. package/.next/server/chunks/ssr/{_040sk32._.js → _0u2jv_x._.js} +76 -82
  227. package/.next/server/chunks/ssr/_0y0tiht._.js +4 -0
  228. package/.next/server/chunks/ssr/_0zhoc3r._.js +3 -0
  229. package/.next/server/chunks/ssr/_1-teee5._.js +3 -3
  230. package/.next/server/chunks/ssr/_13fke0x._.js +3 -0
  231. package/.next/server/chunks/ssr/{_1lip4th._.js → _13z3f85._.js} +2 -2
  232. package/.next/server/chunks/ssr/_14_lw10._.js +3 -0
  233. package/.next/server/chunks/ssr/_15j2_8f._.js +3 -0
  234. package/.next/server/chunks/ssr/{_09ja_w1._.js → _1eoqg_g._.js} +2 -2
  235. package/.next/server/chunks/ssr/_1sji22n._.js +3 -0
  236. package/.next/server/chunks/ssr/_1spzm8z._.js +3 -0
  237. package/.next/server/chunks/ssr/{_0x_nu5e._.js → _1vi_uo7._.js} +2 -2
  238. package/.next/server/chunks/ssr/_1vyd1ji._.js +1 -1
  239. package/.next/server/chunks/ssr/{_1m3bsfr._.js → _1xvgn77._.js} +2 -2
  240. package/.next/server/chunks/ssr/_20kd_n0._.js +42 -0
  241. package/.next/server/chunks/ssr/features_bot_1s_-2vj._.js +3 -0
  242. package/.next/server/chunks/ssr/features_config_components_config-setting_tsx_0xfwqdg._.js +1 -1
  243. package/.next/server/chunks/ssr/features_connectors_components_mcp-setting_tsx_0jmbgvp._.js +1 -1
  244. package/.next/server/chunks/ssr/lib_date-like_ts_02is0pw._.js +3 -0
  245. package/.next/server/chunks/ssr/{node_modules_18_dk7_._.js → node_modules_063xwpp._.js} +1 -1
  246. package/.next/server/chunks/ssr/{node_modules_01qnv-a._.js → node_modules_0bvraul._.js} +1 -1
  247. package/.next/server/chunks/ssr/{node_modules_0n1kj4p._.js → node_modules_0eu1va6._.js} +1 -1
  248. package/.next/server/chunks/ssr/{node_modules_0kl7-tn._.js → node_modules_0h50b8n._.js} +1 -1
  249. package/.next/server/chunks/ssr/{node_modules_0_n241r._.js → node_modules_0h5hnr1._.js} +1 -1
  250. package/.next/server/chunks/ssr/{node_modules_0lrjk5t._.js → node_modules_0h7u60n._.js} +1 -1
  251. package/.next/server/chunks/ssr/{node_modules_0ndvxub._.js → node_modules_0lm7_vm._.js} +1 -1
  252. package/.next/server/chunks/ssr/{node_modules_13r44jq._.js → node_modules_0mwym0g._.js} +1 -1
  253. package/.next/server/chunks/ssr/{node_modules_17lrt3y._.js → node_modules_0rjg6t1._.js} +1 -1
  254. package/.next/server/chunks/ssr/node_modules_0x3-ply._.js +3 -0
  255. package/.next/server/chunks/ssr/{node_modules_004qlr4._.js → node_modules_0y_cded._.js} +1 -1
  256. package/.next/server/chunks/ssr/{node_modules_0kxz4gt._.js → node_modules_0z5tsu8._.js} +1 -1
  257. package/.next/server/chunks/ssr/{node_modules_0iz1rzd._.js → node_modules_0zp9r92._.js} +1 -1
  258. package/.next/server/chunks/ssr/{node_modules_19dp7ko._.js → node_modules_1-hc6uv._.js} +1 -1
  259. package/.next/server/chunks/ssr/{node_modules_1q0p85z._.js → node_modules_113tz0l._.js} +1 -1
  260. package/.next/server/chunks/ssr/{node_modules_1toafc-._.js → node_modules_124bue5._.js} +1 -1
  261. package/.next/server/chunks/ssr/node_modules_17bwo43._.js +55 -0
  262. package/.next/server/chunks/ssr/{node_modules_08d8bke._.js → node_modules_1_n3ztw._.js} +1 -1
  263. package/.next/server/chunks/ssr/{node_modules_1dwguw_._.js → node_modules_1bc7gu8._.js} +1 -1
  264. package/.next/server/chunks/ssr/{node_modules_20yebtj._.js → node_modules_1bgb6-f._.js} +1 -1
  265. package/.next/server/chunks/ssr/{node_modules_1n5ygqe._.js → node_modules_1h4a4pp._.js} +1 -1
  266. package/.next/server/chunks/ssr/{node_modules_04n7mjs._.js → node_modules_1i7u1ia._.js} +1 -1
  267. package/.next/server/chunks/ssr/{node_modules_1hn8z1f._.js → node_modules_1juq3hs._.js} +1 -1
  268. package/.next/server/chunks/ssr/{node_modules_1xyd7ov._.js → node_modules_1l0qtdu._.js} +1 -1
  269. package/.next/server/chunks/ssr/{node_modules_0m93zeg._.js → node_modules_1t9cyee._.js} +1 -1
  270. package/.next/server/chunks/ssr/{node_modules_09xhur7._.js → node_modules_1uuj9x1._.js} +1 -1
  271. package/.next/server/chunks/ssr/{node_modules_1hd-5tv._.js → node_modules_1vqb6po._.js} +1 -1
  272. package/.next/server/chunks/ssr/{node_modules_1zu988w._.js → node_modules_1xx28h1._.js} +1 -1
  273. package/.next/server/chunks/ssr/{node_modules_@mermaid-js_parser_dist_chunks_mermaid-parser_core_0m9a4y0._.js → node_modules_@mermaid-js_parser_dist_chunks_mermaid-parser_core_0d3skpl._.js} +1 -1
  274. package/.next/server/chunks/ssr/{node_modules_@mermaid-js_parser_dist_chunks_mermaid-parser_core_13w_wy9._.js → node_modules_@mermaid-js_parser_dist_chunks_mermaid-parser_core_0i44kk5._.js} +1 -1
  275. package/.next/server/chunks/ssr/node_modules_@vercel_oidc_dist_0qe30a_._.js +3 -0
  276. package/.next/server/chunks/ssr/{node_modules_next_dist_0w6mzq5._.js → node_modules_next_dist_0drixxt._.js} +4 -4
  277. package/.next/server/chunks/ssr/node_modules_next_dist_1n3w9lb._.js +2 -2
  278. package/.next/server/instrumentation.js +1 -1
  279. package/.next/server/middleware-build-manifest.js +3 -3
  280. package/.next/server/pages/404.html +1 -1
  281. package/.next/server/pages/500.html +1 -1
  282. package/.next/server/server-reference-manifest.js +1 -1
  283. package/.next/server/server-reference-manifest.json +58 -91
  284. package/.next/static/chunks/{31ttnjt6g35a0.js → 0ev4hyghq0mbb.js} +1 -1
  285. package/.next/static/chunks/0r5qcctujhxli.js +1 -0
  286. package/.next/static/chunks/0tmgrnlje14-s.js +3 -0
  287. package/.next/static/chunks/0x79tx04dxbpp.js +1 -0
  288. package/.next/static/chunks/0xzgvc0fkdb6t.js +1 -0
  289. package/.next/static/chunks/10teww7wt-f6h.js +1 -0
  290. package/.next/static/chunks/14hgtsjg-kael.css +1 -0
  291. package/.next/static/chunks/17donp69y4do7.js +40 -0
  292. package/.next/static/chunks/{3_h9txt3tq8t8.js → 1dkjg87pxk0n9.js} +1 -1
  293. package/.next/static/chunks/1ekc7ul556kbl.js +1 -0
  294. package/.next/static/chunks/{3ard_noqapnw1.js → 1grhjo7a5a0_-.js} +1 -1
  295. package/.next/static/chunks/1kq8h8wi_e0bc.js +53 -0
  296. package/.next/static/chunks/1okqiww3pnwka.js +1 -0
  297. package/.next/static/chunks/26-pr2c9ro222.js +1 -0
  298. package/.next/static/chunks/{18vhba44l1fc9.js → 280t0_e99i276.js} +1 -1
  299. package/.next/static/chunks/28cizcdaabd4h.js +1 -0
  300. package/.next/static/chunks/2a0k6jlq0_v1u.js +2 -0
  301. package/.next/static/chunks/2fzs9fm8yarvq.js +1 -0
  302. package/.next/static/chunks/2h0sd2vumhb15.js +1 -0
  303. package/.next/static/chunks/2hw2f6zmt7fmt.js +1 -0
  304. package/.next/static/chunks/2t4vhi3m8ahya.js +1 -0
  305. package/.next/static/chunks/2tigdtz3dpcy8.js +1 -0
  306. package/.next/static/chunks/3111pj5wnjgos.js +1 -0
  307. package/.next/static/chunks/{07kl352c-lvcz.js → 3agpgkwaa321p.js} +1 -1
  308. package/.next/static/chunks/3cfi_q6d_wtci.js +1 -0
  309. package/.next/static/chunks/3ok9_x74rip3v.js +1 -0
  310. package/.next/static/chunks/3xk7yqgomx7yq.js +1 -0
  311. package/.next/static/chunks/3xpbkl66ssib5.js +38 -0
  312. package/.next/static/media/favicon.37o1pjldwi2uc.ico +0 -0
  313. package/README.md +6 -4
  314. package/app/api/bot/memory/files/route.ts +14 -0
  315. package/app/api/bot/memory/route.ts +5 -0
  316. package/app/api/events/app-event.ts +3 -5
  317. package/app/api/llm-model/credits/route.ts +11 -0
  318. package/app/api/llm-model/route.ts +6 -1
  319. package/app/api/llm-model/subscription/route.ts +11 -0
  320. package/app/api/memory/edit/route.ts +7 -0
  321. package/app/api/memory/route.ts +21 -0
  322. package/app/api/query-key.ts +19 -4
  323. package/bin/thursday.mjs +3 -0
  324. package/components/ui/shiny-text.tsx +48 -134
  325. package/database/migrations/{20260909060813_optimal_sabretooth → 20260910173049_numerous_spirit}/migration.sql +24 -34
  326. package/database/migrations/{20260909060813_optimal_sabretooth → 20260910173049_numerous_spirit}/snapshot.json +71 -145
  327. package/database/migrations/20260911030320_opposite_jack_power/migration.sql +1 -0
  328. package/database/migrations/{20260909063821_bitter_tenebrous → 20260911030320_opposite_jack_power}/snapshot.json +57 -184
  329. package/features/ai/chatgpt.ts +617 -0
  330. package/features/ai/components/chatgpt-sign-in.tsx +66 -0
  331. package/features/ai/components/model-picker.tsx +17 -1
  332. package/features/ai/components/provider-icon.tsx +1 -0
  333. package/features/ai/load-tools.ts +58 -42
  334. package/features/ai/model.schema.ts +232 -34
  335. package/features/ai/model.ts +169 -24
  336. package/features/ai/prompts/bot.prompt.ts +156 -65
  337. package/features/ai/prompts/memory-edit.prompt.ts +33 -0
  338. package/features/ai/prompts/prompt-helper.ts +45 -26
  339. package/features/ai/prompts/thursday.prompt.ts +40 -17
  340. package/features/ai/tools/bot.tool.ts +35 -52
  341. package/features/ai/tools/connected.ts +17 -4
  342. package/features/ai/tools/memory.tool.ts +133 -72
  343. package/features/ai/tools/search.tool.ts +136 -47
  344. package/features/ai/tools/tool-name.ts +2 -5
  345. package/features/ai/tools/workspace.tool.ts +2 -1
  346. package/features/bot/bot.action.ts +8 -18
  347. package/features/bot/bot.memory.ts +89 -0
  348. package/features/bot/bot.query.ts +37 -57
  349. package/features/bot/bot.run.ts +507 -241
  350. package/features/bot/bot.runner.ts +410 -114
  351. package/features/bot/bot.schema.ts +79 -19
  352. package/features/bot/bot.seed.ts +89 -16
  353. package/features/bot/components/bot-mark.tsx +122 -20
  354. package/features/bot/components/bot-room.tsx +159 -130
  355. package/features/bot/components/bot-setting.tsx +790 -402
  356. package/features/bot/components/bot-tool.tsx +2 -6
  357. package/features/bot/components/mark-palette.tsx +54 -0
  358. package/features/bot/components/path-chips.tsx +1 -1
  359. package/features/bot/components/task-badge.tsx +26 -6
  360. package/features/bot/components/task-reply.tsx +22 -33
  361. package/features/bot/components/task-setting.tsx +20 -17
  362. package/features/bot/task.query.ts +215 -28
  363. package/features/bot/task.store.ts +53 -9
  364. package/features/config/components/config-setting.tsx +265 -34
  365. package/features/config/components/models-badge.tsx +42 -0
  366. package/features/config/config.action.ts +12 -0
  367. package/features/config/config.const.ts +38 -2
  368. package/features/connectors/mcp.manager.ts +10 -2
  369. package/features/intro/components/intro.tsx +47 -46
  370. package/features/memory/components/memory-edit.tsx +338 -0
  371. package/features/memory/components/memory-setting.tsx +75 -77
  372. package/features/memory/memory.action.ts +3 -43
  373. package/features/memory/memory.edit.ts +87 -0
  374. package/features/memory/memory.query.ts +24 -42
  375. package/features/memory/memory.schema.ts +29 -106
  376. package/features/settings/components/settings.tsx +2 -0
  377. package/features/settings/settings.alert.ts +3 -1
  378. package/features/thursday/components/ascii-orb.tsx +106 -90
  379. package/features/thursday/components/boot.tsx +7 -0
  380. package/features/thursday/components/call-log.tsx +219 -92
  381. package/features/thursday/components/face.tsx +6 -4
  382. package/features/thursday/components/tab-state.tsx +97 -0
  383. package/features/thursday/components/thursday-mark.tsx +4 -1
  384. package/features/thursday/components/thursday-setting.tsx +17 -47
  385. package/features/thursday/components/thursday.tsx +208 -95
  386. package/features/thursday/thursday.action.ts +12 -17
  387. package/features/thursday/thursday.query.ts +61 -70
  388. package/features/thursday/thursday.schema.ts +20 -7
  389. package/features/thursday/tool-line.ts +85 -11
  390. package/features/thursday/use-thursday.ts +86 -59
  391. package/features/workspace/components/file-view.tsx +4 -2
  392. package/features/workspace/workspace.ts +110 -26
  393. package/lib/limits.ts +1 -1
  394. package/lib/oauth-page.ts +27 -0
  395. package/lib/realtime/openai.ts +2 -2
  396. package/lib/realtime/realtime.protocol.ts +1 -1
  397. package/lib/realtime/realtime.tap.ts +122 -0
  398. package/lib/sandbox.ts +59 -36
  399. package/package.json +1 -1
  400. package/skills/browser/SKILL.md +55 -34
  401. package/.next/server/app/api/bot/notes/route/app-paths-manifest.json +0 -3
  402. package/.next/server/app/api/bot/notes/route.js +0 -14
  403. package/.next/server/app/api/bot/notes/route_client-reference-manifest.js +0 -3
  404. package/.next/server/app/api/memory/tidy/route/app-paths-manifest.json +0 -3
  405. package/.next/server/app/api/memory/tidy/route.js +0 -22
  406. package/.next/server/app/api/memory/tidy/route.js.nft.json +0 -1
  407. package/.next/server/chunks/0d-b_next_dist_server_app-render_after-task-async-storage_external_0-exn7p.js +0 -3
  408. package/.next/server/chunks/[root-of-the-server]__0-npkh_._.js +0 -3
  409. package/.next/server/chunks/[root-of-the-server]__005var5._.js +0 -3
  410. package/.next/server/chunks/[root-of-the-server]__019dx9f._.js +0 -5
  411. package/.next/server/chunks/[root-of-the-server]__02_2sm-._.js +0 -5
  412. package/.next/server/chunks/[root-of-the-server]__04_8spk._.js +0 -3
  413. package/.next/server/chunks/[root-of-the-server]__05luceg._.js +0 -3
  414. package/.next/server/chunks/[root-of-the-server]__06t77t4._.js +0 -11
  415. package/.next/server/chunks/[root-of-the-server]__0bed6hu._.js +0 -8
  416. package/.next/server/chunks/[root-of-the-server]__0cro2dz._.js +0 -5
  417. package/.next/server/chunks/[root-of-the-server]__0dupqt7._.js +0 -5
  418. package/.next/server/chunks/[root-of-the-server]__0emr6go._.js +0 -3
  419. package/.next/server/chunks/[root-of-the-server]__0le4d-p._.js +0 -3
  420. package/.next/server/chunks/[root-of-the-server]__0m8ywyo._.js +0 -10
  421. package/.next/server/chunks/[root-of-the-server]__0nfuugi._.js +0 -5
  422. package/.next/server/chunks/[root-of-the-server]__0p32jfz._.js +0 -12
  423. package/.next/server/chunks/[root-of-the-server]__0phdgco._.js +0 -8
  424. package/.next/server/chunks/[root-of-the-server]__0wvgrsl._.js +0 -3
  425. package/.next/server/chunks/[root-of-the-server]__10qshki._.js +0 -3
  426. package/.next/server/chunks/[root-of-the-server]__11j52t0._.js +0 -5
  427. package/.next/server/chunks/[root-of-the-server]__1692zrv._.js +0 -3
  428. package/.next/server/chunks/[root-of-the-server]__16thabu._.js +0 -3
  429. package/.next/server/chunks/[root-of-the-server]__173nhwf._.js +0 -8
  430. package/.next/server/chunks/[root-of-the-server]__1_aoyr9._.js +0 -3
  431. package/.next/server/chunks/[root-of-the-server]__1bn73ih._.js +0 -10
  432. package/.next/server/chunks/[root-of-the-server]__1bqhuh9._.js +0 -8
  433. package/.next/server/chunks/[root-of-the-server]__1cqizfq._.js +0 -5
  434. package/.next/server/chunks/[root-of-the-server]__1e-ci13._.js +0 -3
  435. package/.next/server/chunks/[root-of-the-server]__1fboj2j._.js +0 -3
  436. package/.next/server/chunks/[root-of-the-server]__1lr7j9t._.js +0 -5
  437. package/.next/server/chunks/[root-of-the-server]__1oli73c._.js +0 -3
  438. package/.next/server/chunks/[root-of-the-server]__1txedx6._.js +0 -8
  439. package/.next/server/chunks/[root-of-the-server]__1untqv8._.js +0 -5
  440. package/.next/server/chunks/[root-of-the-server]__1zgpz1w._.js +0 -3
  441. package/.next/server/chunks/_00_584r._.js +0 -293
  442. package/.next/server/chunks/_012yhfm._.js +0 -39
  443. package/.next/server/chunks/_06mxlgn._.js +0 -3
  444. package/.next/server/chunks/_07rtlxv._.js +0 -3
  445. package/.next/server/chunks/_0a351g7._.js +0 -6
  446. package/.next/server/chunks/_0kjjmag._.js +0 -3
  447. package/.next/server/chunks/_0nn99o2._.js +0 -3
  448. package/.next/server/chunks/_0zuzmt_._.js +0 -39
  449. package/.next/server/chunks/_106co2o._.js +0 -3
  450. package/.next/server/chunks/_12bbv5i._.js +0 -100
  451. package/.next/server/chunks/_15q1pig._.js +0 -3
  452. package/.next/server/chunks/_19wg5yn._.js +0 -138
  453. package/.next/server/chunks/_1bt95p9._.js +0 -55
  454. package/.next/server/chunks/_1cbk7ms._.js +0 -26
  455. package/.next/server/chunks/_1drv2et._.js +0 -40
  456. package/.next/server/chunks/_1ic3bew._.js +0 -5
  457. package/.next/server/chunks/_1mxn_lb._.js +0 -3
  458. package/.next/server/chunks/_1rysr-r._.js +0 -10
  459. package/.next/server/chunks/_1u3rwbr._.js +0 -3
  460. package/.next/server/chunks/_1x7p319._.js +0 -6
  461. package/.next/server/chunks/_next-internal_server_app_api_bot_notes_route_actions_0qcsyu7.js +0 -3
  462. package/.next/server/chunks/_next-internal_server_app_api_memory_tidy_route_actions_0_cfuom.js +0 -3
  463. package/.next/server/chunks/features_bot_task_query_ts_11xuzl3._.js +0 -3
  464. package/.next/server/chunks/node_modules_consola_dist_chunks_prompt_mjs_0gzvgfv._.js +0 -3
  465. package/.next/server/chunks/node_modules_consola_dist_chunks_prompt_mjs_0vorg6w._.js +0 -3
  466. package/.next/server/chunks/node_modules_consola_dist_chunks_prompt_mjs_1tpvamf._.js +0 -3
  467. package/.next/server/chunks/node_modules_consola_dist_chunks_prompt_mjs_1vmaq9f._.js +0 -3
  468. package/.next/server/chunks/node_modules_consola_dist_chunks_prompt_mjs_1y9-wcr._.js +0 -3
  469. package/.next/server/chunks/ssr/[externals]_node_crypto_1kn79-7._.js +0 -3
  470. package/.next/server/chunks/ssr/[root-of-the-server]__0iuoa-r._.js +0 -3
  471. package/.next/server/chunks/ssr/[root-of-the-server]__0un-erv._.js +0 -4
  472. package/.next/server/chunks/ssr/[root-of-the-server]__1-mnhyd._.js +0 -92
  473. package/.next/server/chunks/ssr/[root-of-the-server]__1bww500._.js +0 -3
  474. package/.next/server/chunks/ssr/[root-of-the-server]__1vcdast._.js +0 -3
  475. package/.next/server/chunks/ssr/[root-of-the-server]__1xwnu-h._.js +0 -3
  476. package/.next/server/chunks/ssr/_0-mc7ro._.js +0 -3
  477. package/.next/server/chunks/ssr/_01p5r6-._.js +0 -3
  478. package/.next/server/chunks/ssr/_03webdr._.js +0 -3
  479. package/.next/server/chunks/ssr/_09-0k3z._.js +0 -3
  480. package/.next/server/chunks/ssr/_0f_b_9s._.js +0 -3
  481. package/.next/server/chunks/ssr/_0fafgvl._.js +0 -3
  482. package/.next/server/chunks/ssr/_0sf1isi._.js +0 -3
  483. package/.next/server/chunks/ssr/_0su6_08._.js +0 -3
  484. package/.next/server/chunks/ssr/_0ti51xc._.js +0 -3
  485. package/.next/server/chunks/ssr/_0w5bgak._.js +0 -3
  486. package/.next/server/chunks/ssr/_0y84qo6._.js +0 -3
  487. package/.next/server/chunks/ssr/_1ciyoo3._.js +0 -3
  488. package/.next/server/chunks/ssr/_1e-dgz0._.js +0 -4
  489. package/.next/server/chunks/ssr/_1fq7zgb._.js +0 -3
  490. package/.next/server/chunks/ssr/_1g6l4uj._.js +0 -3
  491. package/.next/server/chunks/ssr/_1ruzehw._.js +0 -3
  492. package/.next/server/chunks/ssr/features_bot_components_bot-setting_tsx_01ajft6._.js +0 -4
  493. package/.next/server/chunks/ssr/features_config_components_14jqgy4._.js +0 -3
  494. package/.next/server/chunks/ssr/features_memory_components_memory-setting_tsx_0oa43sw._.js +0 -4
  495. package/.next/server/chunks/ssr/node_modules_zod_v4_classic_external_15fmmz3.js +0 -55
  496. package/.next/static/chunks/05b6nx_o3_f_n.js +0 -1
  497. package/.next/static/chunks/0dmns-gi0raa4.js +0 -1
  498. package/.next/static/chunks/0f9sq-7q_yxyl.js +0 -1
  499. package/.next/static/chunks/0oc4_xoia77dg.css +0 -1
  500. package/.next/static/chunks/0pheo8m3a-rzi.js +0 -1
  501. package/.next/static/chunks/19i8h2t-5evjx.js +0 -1
  502. package/.next/static/chunks/1c5fcj473025q.js +0 -1
  503. package/.next/static/chunks/1pi_hbmjw-f-z.js +0 -1
  504. package/.next/static/chunks/1twt6k09vg4np.js +0 -1
  505. package/.next/static/chunks/1ytnip8wdng93.js +0 -1
  506. package/.next/static/chunks/28gotuisldmom.js +0 -1
  507. package/.next/static/chunks/2998p0y7k1c8z.js +0 -3
  508. package/.next/static/chunks/29gyb3nubj51j.js +0 -53
  509. package/.next/static/chunks/2l233xfycjpd8.js +0 -1
  510. package/.next/static/chunks/2p5n7pa3c40t-.js +0 -2
  511. package/.next/static/chunks/2ru1q132af7h7.js +0 -1
  512. package/.next/static/chunks/2t8wqycwg3y04.js +0 -2
  513. package/.next/static/chunks/2uxum7qbyeyxd.js +0 -1
  514. package/.next/static/chunks/32z_ypgtchw48.js +0 -1
  515. package/.next/static/chunks/33pyjb3xd1iez.js +0 -1
  516. package/.next/static/chunks/3omud5xunrk1f.js +0 -1
  517. package/.next/static/chunks/42dnrkbph9e-1.js +0 -1
  518. package/.next/static/media/favicon.2vob68tjqpejf.ico +0 -0
  519. package/database/migrations/20260909063821_bitter_tenebrous/migration.sql +0 -1
  520. package/features/ai/prompts/memory-tidy.prompt.ts +0 -129
  521. package/features/ai/tools/tidy.tool.ts +0 -22
  522. package/features/bot/bot.notes.ts +0 -120
  523. package/features/memory/components/memory-tidy.tsx +0 -395
  524. package/features/memory/memory.tidy.ts +0 -332
  525. package/features/memory/tidy.query.ts +0 -135
  526. package/features/thursday/use-call-title.ts +0 -31
  527. /package/.next/server/app/api/bot/{notes → memory/files}/route/build-manifest.json +0 -0
  528. /package/.next/server/app/api/bot/{notes → memory/files}/route/server-reference-manifest.json +0 -0
  529. /package/.next/server/app/api/bot/{notes → memory/files}/route.js.map +0 -0
  530. /package/.next/server/app/api/{memory/tidy → bot/memory}/route/build-manifest.json +0 -0
  531. /package/.next/server/app/api/{memory/tidy → bot/memory}/route/server-reference-manifest.json +0 -0
  532. /package/.next/server/app/api/{memory/tidy → bot/memory}/route.js.map +0 -0
  533. /package/.next/static/{YR4NWcDDuzwLbTTU7U7Vr → x1cCqY0kWpR_VcYx_lWO5}/_buildManifest.js +0 -0
  534. /package/.next/static/{YR4NWcDDuzwLbTTU7U7Vr → x1cCqY0kWpR_VcYx_lWO5}/_clientMiddlewareManifest.js +0 -0
  535. /package/.next/static/{YR4NWcDDuzwLbTTU7U7Vr → x1cCqY0kWpR_VcYx_lWO5}/_ssgManifest.js +0 -0
@@ -1,3 +0,0 @@
1
- module.exports=[444444,t=>t.a(async(e,a)=>{try{var s=t.i(336763),n=t.i(396918),r=t.i(157406),l=t.i(533102),o=t.i(232347),i=t.i(876393),u=t.i(220376),d=t.i(423620),c=t.i(51083),p=t.i(64774),k=t.i(951056),f=e([i]);[i]=f.then?(await f)():f;let v=()=>o.appEvents.emit({type:"tasks"}),j={id:u.taskTable.id,bot:u.taskTable.bot,label:u.taskTable.label,request:u.taskTable.request,status:u.taskTable.status,outcome:u.taskTable.outcome,pending:u.taskTable.pending,reported:u.taskTable.reported,inputTokens:u.taskTable.inputTokens,outputTokens:u.taskTable.outputTokens,contextTokens:u.taskTable.contextTokens,contextBudget:u.taskTable.contextBudget,createdAt:u.taskTable.createdAt,updatedAt:u.taskTable.updatedAt};async function b(t){let{opening:e,...a}=t,[s]=await i.database.insert(u.taskTable).values({id:crypto.randomUUID(),status:"running",...a}).returning();return await x(s.id,0,{bot:null,parent:null,role:"user",content:e}),v(),s}async function T(t,e){await i.database.update(u.taskTable).set({...e,updatedAt:new Date}).where((0,s.eq)(u.taskTable.id,t)),v()}async function m(t,e,a=null){(e.input||e.output||null!==a)&&(await i.database.update(u.taskTable).set({inputTokens:l.sql`${u.taskTable.inputTokens} + ${e.input}`,outputTokens:l.sql`${u.taskTable.outputTokens} + ${e.output}`,...null===a?{}:{contextTokens:a.tokens,contextBudget:a.budget}}).where((0,s.eq)(u.taskTable.id,t)),v())}async function g(t){let[e]=await i.database.select().from(u.taskTable).where((0,s.eq)(u.taskTable.id,t));return e??null}async function y(t={}){let e=await i.database.select(j).from(u.taskTable).where(t.before?(0,s.lt)(u.taskTable.updatedAt,t.before):void 0).orderBy((0,n.desc)(u.taskTable.updatedAt)).limit(t.limit??k.TASK_HISTORY_PAGE);return O(e)}async function h(){return(await i.database.select({id:u.taskTable.id}).from(u.taskTable).where((0,s.eq)(u.taskTable.status,"running"))).map(t=>t.id)}async function M(t){let e=t.trim();if(!e)return null;let a=await g(e);if(a)return a;let s=e.toLowerCase();return(await i.database.select().from(u.taskTable).orderBy((0,n.desc)(u.taskTable.updatedAt)).limit(20)).find(t=>t.label.toLowerCase()===s)??null}async function x(t,e,a){await i.database.insert(u.taskMessageTable).values({taskId:t,seq:e,...a,compact:a.compact??!1,note:a.note??!1}).onConflictDoUpdate({target:[u.taskMessageTable.taskId,u.taskMessageTable.seq],set:{role:a.role,content:a.content,compact:a.compact??!1,note:a.note??!1}}),v()}async function A(t,e){e.length&&(await i.database.delete(u.taskMessageTable).where((0,s.and)((0,s.eq)(u.taskMessageTable.taskId,t),(0,s.inArray)(u.taskMessageTable.seq,e))),v())}async function S(t){let[e]=await i.database.select({seq:(0,r.max)(u.taskMessageTable.seq)}).from(u.taskMessageTable).where((0,s.eq)(u.taskMessageTable.taskId,t));return e?.seq??-1}async function w(t){let e=await i.database.select({role:u.taskMessageTable.role,content:u.taskMessageTable.content,compact:u.taskMessageTable.compact}).from(u.taskMessageTable).where((0,s.and)((0,s.eq)(u.taskMessageTable.taskId,t),(0,s.isNull)(u.taskMessageTable.parent))).orderBy(u.taskMessageTable.seq),a=e.findLastIndex(t=>t.compact);return e.slice(Math.max(a,0)).map(t=>({role:t.role,content:t.content}))}async function O(t){if(0===t.length)return[];let e=await i.database.select().from(u.taskMessageTable).where((0,s.inArray)(u.taskMessageTable.taskId,t.map(t=>t.id))).orderBy(u.taskMessageTable.seq),a=new Map(t.map(t=>[t.id,t.bot])),n=new Map;for(let t of e){let e=n.get(t.taskId)??[];e.push(...function(t,e){let a={seq:t.seq,bot:t.bot,parent:t.parent,at:t.createdAt},s=e=>`${t.id}-${e}`,n=t.content;if("user"===t.role){if(0===t.seq)return[];let e="string"==typeof n?n:n.flatMap(t=>"text"===t.type&&t.text?[t.text]:[]).join("\n").trim();return e?t.note||t.compact?[{...a,id:s(0),kind:"note",text:e}]:[{...a,id:s(0),kind:"user",text:e}]:[]}if("assistant"===t.role){let n=t.content;if("string"==typeof n)return n.trim()?[{...a,id:s(0),kind:"text",text:n.trim()}]:[];let r=[];return n.forEach((t,n)=>{if("text"===t.type){let e=t.text.trim();e&&r.push({...a,id:s(n),kind:"text",text:e});return}if("tool-result"===t.type)return void r.push(I(a,s(n),t));if("tool-call"!==t.type)return;let l=t.input??{};if(t.toolName===c.TOOL_NAMES.ask_thursday)r.push({...a,id:s(n),kind:"waiting",callId:t.toolCallId,question:String(l.question??""),options:_(l.options)});else if(t.toolName===c.TOOL_NAMES.report){let t=String(l.result??"").trim();t&&r.push({...a,id:s(n),kind:"text",text:t})}else t.toolName===c.TOOL_NAMES.ask_bot?r.push({...a,id:s(n),kind:"ask",callId:t.toolCallId,to:String(l.bot??""),text:String(l.request??"")}):t.toolName===c.TOOL_NAMES.ask_back?r.push({...a,id:s(n),kind:"ask",callId:t.toolCallId,to:e,text:String(l.question??"")}):t.toolName===c.TOOL_NAMES.bash?r.push({...a,id:s(n),kind:"tool",callId:t.toolCallId,name:t.toolName,input:(0,p.clip)(String(l.command??""),120),note:q(l)}):r.push({...a,id:s(n),kind:"tool",callId:t.toolCallId,name:t.toolName,input:N(t.toolName,l),note:q(l),path:t.toolName===c.TOOL_NAMES.write_file?C(l,"path")??null:null})}),r}if("tool"===t.role){let e=[];return t.content.forEach((t,n)=>{if("tool-result"===t.type&&!(t.toolName===c.TOOL_NAMES.report&&(0,d.reportAccepted)(t.output)))if(t.toolName===c.TOOL_NAMES.ask_thursday){let r=E(t.output,4).flatMap(t=>"text"===t.type?[t.text]:[]).join("\n");e.push({...a,id:s(n),kind:"user",text:r})}else if(t.toolName===c.TOOL_NAMES.ask_bot||t.toolName===c.TOOL_NAMES.ask_back){let r=E(t.output,4).flatMap(t=>"text"===t.type?[t.text]:[]).join("\n");e.push({...a,id:s(n),kind:"ask-result",callId:t.toolCallId,text:r})}else e.push(I(a,s(n),t))}),e}return[]}(t,a.get(t.taskId)??"")),n.set(t.taskId,e)}return t.map(t=>(function(t,e){let{pending:a,inputTokens:s,outputTokens:n,...r}=t;return{...r,ask:"waiting"===t.status?{question:t.outcome??"",options:a?.options??[]}:null,tokens:{input:s,output:n},lines:e}})(t,n.get(t.id)??[]))}let B=["query","command","prompt","url","path","pattern","request","question","title","name","task","text"],C=(t,e)=>{let a=t[e];return"string"==typeof a&&a.trim()?a:null};function q(t){let e=C(t,"description");return e?(0,p.clip)(e,120):null}function N(t,e){let a=e??{};if("object"!=typeof a||Array.isArray(a))return(0,p.clip)(String(e??""),120);if(t===c.TOOL_NAMES.bash)return q(a)??(0,p.clip)(String(a.command??""),120);if(t===c.TOOL_NAMES.tool_call||t===c.TOOL_NAMES.tool_search){let t=Array.isArray(a.tools)?a.tools.map(String).join(", "):String(a.tool??""),e=a.args&&"object"==typeof a.args?JSON.stringify(a.args):"";return(0,p.clip)([String(a.server??""),t,e].filter(Boolean).join(" "),120)}for(let t of B){let e=C(a,t);if(e)return(0,p.clip)(e,120)}for(let t of Object.keys(a)){let e=C(a,t);if(e)return(0,p.clip)(e,120)}return Object.keys(a).length?(0,p.clip)(JSON.stringify(a),120):""}function I(t,e,a){let s=E(a.output,5);return{...t,id:e,kind:"tool-result",callId:a.toolCallId,name:a.toolName,results:s.slice(0,4),more:s.length>4}}function _(t){return Array.isArray(t)?t.map(t=>String(t).trim()).filter(Boolean):[]}function E(t,e){if(null==t)return[];if("string"==typeof t)return L(t,e);if("object"!=typeof t)return L(String(t),e);switch(t.type){case"text":case"error-text":return L(String(t.value??""),e);case"json":case"error-json":return E(t.value,e);case"execution-denied":return L("Denied.",e);case"content":{if(!Array.isArray(t.value))return[];let a=[];for(let s of t.value){if("text"===s.type&&"string"==typeof s.text){a.push(...L(s.text,e));continue}let t=function(t){let e=String(t.mediaType??"");if(!e.startsWith("image/"))return null;let a=t.data;return"string"==typeof a?`data:${e};base64,${a}`:a?.type==="url"&&a.url?a.url:a?.type==="data"&&"string"==typeof a.data?`data:${e};base64,${a.data}`:null}(s);t&&a.push({type:"image",src:t})}return a}}return Array.isArray(t.sources)?t.sources.map(t=>String(t?.title??"")).filter(Boolean).slice(0,e).map(t=>({type:"text",text:t})):"string"==typeof t.stdout?L(t.stdout||String(t.stderr??""),e):"string"==typeof t.answer?L(t.answer,e):L(JSON.stringify(t),e)}function L(t,e){return t.split("\n").map(t=>t.trim()).filter(Boolean).slice(0,e).map(t=>({type:"text",text:t}))}t.s(["addTaskUsage",0,m,"deleteMessages",0,A,"findTask",0,g,"insertTask",0,b,"lastSeq",0,S,"listRunningTaskIds",0,h,"listTaskHistory",0,y,"listThread",0,w,"optionsOf",0,_,"resolveTask",0,M,"toolLine",0,N,"updateTask",0,T,"upsertMessage",0,x]),a()}catch(t){a(t)}},!1),157406,t=>{"use strict";var e=t.i(533102),a=t.i(539774),s=t.i(763369);t.s(["max",0,function(t){return e.sql`max(${t})`.mapWith((0,a.is)(t,s.Column)?t:String)}])}];
2
-
3
- //# sourceMappingURL=_15q1pig._.js.map
@@ -1,138 +0,0 @@
1
- module.exports=[851372,e=>e.a(async(t,o)=>{try{var a=e.i(687388),n=e.i(353885),s=e.i(265143),r=e.i(148831),i=e.i(619898),l=e.i(636882),h=e.i(786025),u=e.i(640911),d=e.i(41444),c=e.i(660948),p=e.i(54282),w=t([s,r,i,c]);async function y(e,t,o,d){var w,y,$,S,O,x,A,_;let E,j,I,M=await (0,h.openWorkspace)(),L=e.trim(),[q,B,C,W,P,U,R,Y,H]=await Promise.all([(0,l.loadSkills)(M),(0,i.listNoteIndex)(),(0,i.listAlwaysLoaded)(),(0,c.listConnectedToolNames)(),(0,r.findPinnedTools)(L),(0,s.listJobBots)(),(0,s.readBotNote)(L),(0,s.readBotNotesOn)(),(0,h.readMachineTools)(M)]),J=o?[]:U.filter(e=>e.name!==L),F=[o?(w=L,y=o,[`You are ${w}, a worker. ${y} is holding a job Thursday handed them and has handed one part of it to you. The user speaks to Thursday and to nobody else; you never address them, and what you hand back goes into ${y}'s report as-is. This thread is drawn on their screen while you work: not written to them, but not private either. ${(0,p.nowLine)()}`,m,g].join("\n\n")):($=L,[`You are ${$}, a worker. Thursday handed you a job while she keeps talking to the user — they speak to her and to nobody else, and what she reads them out of your report is the only part of this that reaches them. You are not in that conversation and never address the user. This thread is drawn on their screen while you work, though: not written to them, but not private either. ${(0,p.nowLine)()}`,m,g].join("\n\n")),(S=B,O=C,E=`## Memory
2
-
3
- What the user's assistant knows about them. Thursday keeps it as she talks with them, and everyone reads it.
4
-
5
- Yours to read, and to add to when the work turns up something about *them* that outlives the job; what the job itself turned up goes in your report. It describes the user, not you: how they are named and spoken to is hers to use with them, not yours to borrow. What you learn about this machine is not memory — that is your own instructions, below.`,j=O.length?`Already known:
6
-
7
- ${(0,p.carriedLines)(O)}`:"",I=`path — what is under it (facts) "what the user calls it"
8
-
9
- ${(0,p.noteLines)(S)}
10
-
11
- A topic not listed is one nobody knows anything about.`,[E,j,I].filter(Boolean).join("\n\n")),Y?(x=R,`## Your own instructions
12
-
13
- What you wrote to yourself on earlier jobs here, to get better at this machine. Only you read it, and it is the one thing that reaches your next job. What belongs in it is what working here is like — the command that turns out to be the right one, the flag it needs, the tool this platform does not have. Not what the user is like: that is Memory, above, and everyone reads that one.
14
-
15
- ${x??"Empty. What usually goes in first is whatever you had to find out before you could start."}
16
-
17
- (${x?.length??0}/${a.BOT_NOTES.chars} characters)`):"",function(e,t){let o=new Set(t.map(e=>`${e.server}/${e.name}`)),a=e.filter(e=>!o.has(`${e.server}/${e.name}`));if(0===a.length)return"";let s=o.size?" What is not listed above you are already holding — it is in your tools.":"";return`## Connected tools
18
-
19
- ${(0,p.mcpToolLines)(a)}
20
-
21
- Names only: \`${n.TOOL_NAMES.tool_search}\` returns what each one takes, \`${n.TOOL_NAMES.tool_call}\` runs one.${s}`}(W,P),(A=q,0===A.length?"":`## Skills
22
-
23
- Written-down methods. When the job is one of these, read it with \`${n.TOOL_NAMES.load_skill}\` before starting.
24
-
25
- ${(0,p.skillLines)(A)}`),b(M.cwd,H,d),(_=J,0===_.length?"":`## Bots
26
-
27
- ${_.map(e=>`- **${e.name}** — ${e.description}`).join("\n")}
28
-
29
- These lines were written for the user, who reads them on their own screen: where one says "you" it means them, not you.
30
-
31
- A part of your job another bot is for goes to \`${n.TOOL_NAMES.ask_bot}\`, because their tools and their practice are the reason they exist. What you build is made of what they bring back, so send for it before you build. A part you could finish in a couple of commands is yours; one that would take a run of its own is theirs. The job stays yours and you report; they see only your brief — not the call, not this thread.`),o?T(o):k,o?v(o):N,f(t)].filter(Boolean).join("\n\n");return(0,p.logPromptSize)("bot",F),u.logger.debug(`bot prompt
32
- ${F}`),{text:F,peers:J.map(e=>e.name),opening:null}}[s,r,i,c]=w.then?(await w)():w;let m=`**You are on a real computer — the user's own.** You have a shell and a filesystem, and the job is done, not described: where there is no tool for something, write one — in \`node\` unless they asked for another language, the runtime this app itself runs on. Reach for \`${n.TOOL_NAMES.bash}\` before concluding that something cannot be done, but after the roster, not instead of it: a script you write to do another bot's job is the long way round.
33
-
34
- **What is missing gets installed**, onto the machine once they say yes. What is already there is nobody's question — Environment says what this machine has.
35
-
36
- **Bring back the thing itself** — their own machine, their own accounts, their own copy of whatever they sent you for — not a smaller safer version of it, and not a note on why you did not.`,g="**Never present a guess as a result.** She says it out loud as fact. Say which part is unverified and why.",f=e=>e?.trim()?`## Owner's instructions
37
-
38
- Written by the person this bot works for. Where these and anything above disagree, these win.
39
-
40
- ${e.trim()}`:"",b=(e,t,o)=>{var s;let r,i;return`## Environment
41
-
42
- Current Cwd: ${e}
43
- Platform: ${process.platform}
44
- ${s=t,r=(e,t)=>`${e}: ${t.found.length?t.found.join(", "):"none"}.${t.missing.length?` Not here: ${t.missing.join(", ")}.`:""}`,i=s.managers.found.includes("pnpm")?" Use pnpm, not npm — this workspace is fenced for it (`pnpm-workspace.yaml`, `.npmrc`).":"",[r("Runtimes",s.runtimes),`${r("Package managers",s.managers)}${i}`,null===s.browser?"":s.browser?"Browser: installed.":"Browser: not installed — `playwright-cli install-browser chromium` puts one there."].filter(Boolean).join("\n")}
45
-
46
- Read off this machine as the job opened, so it is current: reach for what is here instead of checking for it.
47
-
48
- Your workspace — \`${n.TOOL_NAMES.bash}\` runs here. Everything you write goes in one of these, and they are kept apart because what is in them lives for different lengths of time:
49
-
50
- - \`${a.PATHS.artifacts}/\` — finished work the user opens, one entry per result. Theirs, and it stays.
51
- - \`${a.PATHS.projects}/\` — code you build, one folder each. It outlives this job, and a project's dependencies install inside it, never at the workspace root.
52
- - \`${o?.scratch??a.PATHS.scratch}/\` — this job's working material. It goes when the job does, so nothing here is worth keeping.
53
- - \`${o?.own??a.PATHS.bots}/\` — yours, across every job you run here. A script you wrote once and will want again, a table you built. Your own instructions can name what is in it.
54
-
55
- Never the directory above — that is the app you run in; outside the workspace, only where the user pointed you.`},k=`## Asking
56
-
57
- What you cannot get for yourself — a decision between real options, a detail only the conversation has, a go-ahead before deleting or sending — goes to \`${n.TOOL_NAMES.ask_thursday}\`, once, with everything in it. Ask before you start, not after an hour; never ask what one command would tell you.
58
-
59
- A job that arrives without its shape — several ways to do it, no telling what it is for, a scale nobody named — is planned before it is built: put the plan up in two or three lines with what you need decided. A job asked for as one thing is built, not proposed.
60
-
61
- A request that says buy, pay, top up is the go-ahead — press the button. Only what is theirs alone stops the job: a password, a one-time code, a passkey, a permission on their machine. Set it up one action away, ask, and carry on when the answer comes back.`,T=e=>`## Asking
62
-
63
- What you cannot get for yourself goes to \`${n.TOOL_NAMES.ask_back}\`: ${e} handed you this part and answers from what they have. They cannot take a question to the user, so for what is the user's alone take the safer reading and say so in what you hand back. Ask before you start, once, whole.`,$=`Your steps are capped at ${a.BOT_RUN.steps}; running long, report what you have with \`complete: false\` while the summary is still yours to write.`,N=`## Finishing
64
-
65
- Every job ends with \`${n.TOOL_NAMES.report}\`, in the user's language, written to be heard — she reads it out loud. **The job ends in the thing that was asked for**: an action with the action done, photos in a page with the photos in it, a comparison in a table. Anything that does not fit in a few lines is a file under \`${a.PATHS.artifacts}/\`, and the report names its path — it becomes a link on their screen. In a \`.md\`, images only by absolute route (\`/api/file/${a.PATHS.artifacts}/…\`).
66
-
67
- \`complete: false\` when part of the request is genuinely undone — say where you got to and the user decides. ${$}`,v=e=>`## Finishing
68
-
69
- Every part ends with \`${n.TOOL_NAMES.report}\`; what you hand back goes into ${e}'s own report. Hand back what the brief asked for, in the shape it asked for, with everything you learned that bears on it — exact values, the paths of files you wrote, what did not work. They cannot see your thread, so long is right here. \`complete: false\` when part of the brief is undone, with where you got to. ${$}`;e.s(["OPENING_TURNS",0,10,"buildTaskOpening",0,function(e){let t=e.conversation.filter(e=>e.text.trim());if(!t.length)return e.request;let o=t.map(e=>`${"user"===e.role?"user":"thursday"}: ${(0,d.clip)(e.text,160)}`);return`${e.request}
70
-
71
- ## The call, just before this reached you
72
-
73
- A detail that is not in the request may be here — a name, a number, which one of two. The request wins where they disagree, with one exception: when they asked out loud for something to be *done* and the request only asks about it, the doing is the job.
74
-
75
- ${o.join("\n")}`},"loadBotPrompt",0,y]),o()}catch(e){o(e)}},!1),982388,e=>e.a(async(t,o)=>{try{var a=e.i(68356),n=e.i(847841),s=e.i(907855),r=e.i(687388),i=e.i(353885),l=e.i(640911),h=e.i(268486),u=e.i(265143),d=t([u]);[u]=d.then?(await d)():d;let p=(0,h.createKeyedLock)();async function c(e){return p(e.bot,async()=>{let t=await (0,u.readBotNote)(e.bot),o=t;try{var h,d;await (0,a.generateText)({model:e.model,messages:[{role:"user",content:(h=t,d=e.want,`You keep one worker's notes. It is an agent with a shell on this machine; the notes are its own, read at the start of every job it runs and by nobody else. They hold what this machine has taught it — the command that works here, the flag without which something fails, the tool this platform does not have. Write what the worker found, never what it proposed.
76
-
77
- Four things do not belong, however true today: what is in a folder right now, what a job produced, anything about the person the work is for, and how to satisfy the worker's own tools (\`report\`, \`write_file\`, \`bash\` — those belong to the app it runs inside and change with it). A program *on the machine* is the opposite and does belong.
78
-
79
- Nor does how the worker should behave. Whoever owns it writes that separately and it outranks these, so a note about manner or language is either already said or about to be overruled.
80
-
81
- The change is applied to what is already there, not written over it. Say the notes read \`Tests here run with npm.\` and then \`Chromium needs --no-sandbox or it exits.\` The worker asks for the npm line to be corrected to pnpm: both lines come back, the first now reading \`Tests here run with pnpm.\` and the second word for word as it was. Added, corrected or dropped is one line moving; everything the request did not name is untouched.
82
-
83
- ${h?"The notes as they stand:":"There are no notes yet — the fence below is empty because nothing has been written, not because the notes say so."}
84
-
85
- \`\`\`
86
- ${h??""}
87
- \`\`\`
88
-
89
- The worker asks for this change:
90
-
91
- ${d.trim()}
92
-
93
- Hand back the whole thing as it should now read, keeping what the request does not touch. Only what belongs inside the fence, never a word about it, and nothing at all when the request holds nothing that belongs. At most ${r.BOT_NOTES.chars} characters, which is a ceiling and not a target.`)}],abortSignal:e.signal,tools:{[i.TOOL_NAMES.update_notes]:(0,n.tool)({description:"Hand back the updated prompt.",inputSchema:s.object({prompt:s.string().max(r.BOT_NOTES.chars).describe(`The whole prompt as it should now read, at most ${r.BOT_NOTES.chars} characters.`)}),execute:async({prompt:t})=>(await (0,u.writeBotNote)(e.bot,t),o=t.trim()||null,"Saved.")})},toolChoice:"required",stopWhen:[(0,a.stepCountIs)(3),(0,a.hasToolCall)(i.TOOL_NAMES.update_notes)]})}catch(t){l.logger.warn(`notes pass for ${e.bot} failed: ${t}`)}return o})}e.s(["hasNotesRequest",0,e=>!!e?.trim(),"keepNotes",0,c]),o()}catch(e){o(e)}},!1),585099,e=>e.a(async(t,o)=>{try{var a=e.i(68356),n=e.i(847841),s=e.i(687388),r=e.i(159479),i=e.i(386075),l=e.i(851372),h=e.i(316172),u=e.i(353885),d=e.i(944971),c=e.i(786025),p=e.i(640911),w=e.i(53748),y=e.i(388439),m=e.i(41444),g=e.i(982388),f=e.i(265143),b=e.i(780274),k=t([r,i,l,g,f,b]);[r,i,l,g,f,b]=k.then?(await k)():k;let O=s.BOT_RUN.steps,x=s.BOT_RUN.compactAt;async function T(e,t){var o,s;let d,w,m,k,T=t.depth??0,j=t.parent??null,I=e.bot.trim(),M=e=>t.emit({...e,bot:I,parent:j}),L=await (0,f.findJobBot)(I);if(!L)return void await M({type:"error",message:`No bot named "${e.bot}". Use a name from the list.`});let q=await ((o=L).provider&&o.model?(0,i.getTextModel)({provider:o.provider,model:o.model}):(0,i.resolveDefaultModel)().then(i.getTextModel)),[B,C]=await Promise.all([t.taskId?(0,c.openJobScratch)(t.taskId,(await (0,b.findTask)(t.taskId))?.label??"job"):null,(0,c.openBotFolder)(I)]),[W,P]=await Promise.all([(0,l.loadBotPrompt)(I,L.systemPrompt,"askedBy"in e?e.askedBy:null,{scratch:B,own:C}),(0,r.loadTools)({target:"bot",bot:I,taskId:t.taskId,model:q})]),U="messages"in e?e.messages:[{role:"user",content:(s=e,(d=s.context?.trim())?`${s.request}
94
-
95
- ## What ${s.askedBy} already knows
96
-
97
- ${d}`:s.request)}],R={left:3},Y=T>=1?function(e,t,o){let a={...e};delete a[u.TOOL_NAMES.ask_thursday];let{answer:s}=o;return s?{...a,[u.TOOL_NAMES.ask_back]:(0,n.tool)({description:h.askBackSpec.description,inputSchema:h.askBackSpec.parameters,execute:async({question:e})=>(t.left-=1,s(e))})}:a}(P,R,t):function(e,t){if(0===t.peers.length)return e;let o={...e,[u.TOOL_NAMES.ask_bot]:(0,n.tool)({description:h.askBotSpec.description,inputSchema:h.askBotSpec.parameters,execute:async({bot:e,request:a,context:n},s)=>{let r=t.options.taskId?`${t.options.taskId}-${s.toolCallId.slice(0,8)}`:null,i=[],l=async n=>{let r=await v({model:t.model,instructions:t.instructions,tools:o,messages:s.messages,asked:{bot:e,request:a},question:n,signal:t.options.signal});return await t.emit({type:"answered",question:n,...r}),i.push({question:n,answer:r.text}),r.text};try{var h;let o=await N({bot:e,request:a,context:n,askedBy:t.name},{...t.options,depth:t.depth+1,parent:s.toolCallId,taskId:r,answer:l});return i.length?`${o}
98
-
99
- ${h=e,i.map(({question:e,answer:t})=>`(On the way ${h} asked you: "${e}" — you answered: "${t}")`).join("\n")}`:o}finally{r&&(0,c.closeJobShell)(r)}}})};return o}(P,{name:I,model:q.model,instructions:W.text,peers:W.peers,depth:T,options:t,emit:M}),H={compact:null,interjections:[]},J=new a.ToolLoopAgent({model:q.model,instructions:W.text,tools:Y,stopWhen:[(0,a.stepCountIs)(O),A,(0,a.hasToolCall)(u.TOOL_NAMES.ask_thursday)],prepareStep:async({stepNumber:e,steps:o,messages:a})=>{let n=e<O-1?{}:{activeTools:[u.TOOL_NAMES.report],toolChoice:{type:"tool",toolName:u.TOOL_NAMES.report}};!n.activeTools&&R.left<=0&&(n={...n,activeTools:Object.keys(Y).filter(e=>e!==u.TOOL_NAMES.ask_back)});let s=o.at(-1)?.usage.inputTokens??0,r=Math.max(s,a.reduce((e,t)=>e+(0,y.estimateTokens)("string"==typeof t.content?t.content:JSON.stringify(t.content))+4,0)),i=a;if(r>x&&a.length>=2){let e=await $(q.model,Y,a,{signal:t.signal,budget:x});p.logger.debug(`compacted ${a.length} messages at ${r} tokens (budget ${x})`),H.compact={type:"compact",text:e.text,usage:e.usage,messages:a.length,tokens:r},i=[{role:"user",content:e.text}]}let l=e>0?t.notes?.()??[]:[];return(l.length&&(H.interjections.push(...l),i=[...i,...l.map(e=>({role:"user",content:e}))]),i===a)?n:{...n,messages:i}}}),F=(w=[],m=[],k=!1,{push(e){let t=m.shift();t?t(e):w.push(e)},take(){let e=w.shift();return e?Promise.resolve(e):k?Promise.resolve(null):new Promise(e=>m.push(e))},end(){for(let e of(k=!0,m.splice(0)))e(null)}}),G=await J.stream({messages:U,abortSignal:t.signal,onStepEnd:e=>F.push({messages:e.response.messages,usage:E(e.usage)})}),D="",K=null,z=null,Q=null,V=null;t.signal?.addEventListener("abort",()=>F.end(),{once:!0});try{for await(let e of G.fullStream)switch(e.type){case"start-step":for(let e of(H.compact&&(await M(H.compact),H.compact=null),H.interjections.splice(0)))await M({type:"interjection",text:e});break;case"text-delta":D+=e.text;break;case"text-end":{let e=D.trim();if(D="",!e)break;K=e,await M({type:"text",text:e});break}case"tool-call":if(e.toolName===u.TOOL_NAMES.ask_thursday){let t=e.input;z={id:e.toolCallId,question:String(t.question??""),options:(0,b.optionsOf)(t.options)}}else if(e.toolName===u.TOOL_NAMES.report){let t=e.input;Q={text:String(t.result??"").trim(),complete:!1!==t.complete},V=function(e){let t=e?.notes,o="string"==typeof t?t.trim():"";return o&&!_.has(o.toLowerCase())?o:null}(e.input)}await M({type:"tool",id:e.toolCallId,name:e.toolName,input:e.input});break;case"tool-result":e.toolName===u.TOOL_NAMES.report&&Q&&!(0,h.reportAccepted)(e.output)&&(Q={text:`${Q.text}
100
-
101
- ${S(e.output)}`,complete:!1}),await M({type:"tool-result",id:e.toolCallId,name:e.toolName,output:e.output});break;case"finish-step":{let e=await F.take();e&&await M({type:"step",...e,budget:x});break}case"error":await M({type:"error",message:(0,i.modelErrorToString)(e.error)});return}}finally{F.end()}try{await G.response}catch(e){await M({type:"error",message:(0,i.modelErrorToString)(e)});return}if(z)return void await M({type:"waiting",...z});if(Q){await M({type:"report",...Q}),(0,g.hasNotesRequest)(V)&&await (0,f.readBotNotesOn)()&&await (0,g.keepNotes)({bot:I,model:q.model,want:V,signal:t.signal});return}await M({type:"report",text:K??"Stopped without handing anything back.",complete:!1})}let A=({steps:e})=>e.at(-1)?.toolResults.some(e=>e.toolName===u.TOOL_NAMES.report&&(0,h.reportAccepted)(e.output))??!1,_=new Set(["null","none","n/a","-","없음"]);async function $(e,t,o,n){try{let r,{text:i,usage:l}=await (0,a.generateText)({model:e,tools:t,toolChoice:"none",messages:[...o,{role:"user",content:(r=(e=>{let{min:t,max:o,perTokens:a}=s.BOT_RUN.summaryWords;return Math.min(o,Math.max(t,Math.round(e/a)))})(n.budget),`Compact your context. Everything above is your own work on this job so far; after this message it is replaced by what you write now, and you carry on from that alone. Write what a fresh copy of you needs to continue without re-reading anything:
102
-
103
- - The job as it was given — the request, quoted, and the details from the call that matter.
104
- - What you have done and what you found, with the exact values: numbers, names, urls, dates, ids, error messages.
105
- - Files you wrote or read, by path, and what each holds.
106
- - What is still left to do, in order, and any decision or answer you are waiting on.
107
- - What did not work, so it is not tried again.
108
-
109
- Plain text, under ${r} words. No preamble and no headings about the summary itself — start with the job.`)}],abortSignal:n.signal}),h=i.trim();if(h)return{text:`The context was compacted here. Below is your own summary of the job up to this point; continue from it.
110
-
111
- ${h}`,usage:E(l)}}catch(e){if(n.signal?.aborted)throw e;throw Error(`Could not compact the context (${(0,i.modelErrorToString)(e)}).`)}throw Error("The summary of the context came back empty, so there is nothing to carry on from.")}let E=e=>({input:e.inputTokens??0,output:e.outputTokens??0});async function N(e,t){let o="",a=null;return await T(e,{...t,emit:async e=>{"report"===e.type&&(o=e.complete?e.text:`${e.text}
112
-
113
- (As far as they got — they ran out of steps.)`),"error"===e.type&&(a=e.message),await t.emit(e)}}),a&&(0,w.publicError)(a),o}async function v(e){try{let t,o,{text:n,usage:s}=await (0,a.generateText)({model:e.model,system:e.instructions,tools:e.tools,toolChoice:"none",messages:[...e.messages,{role:"user",content:(t=e.asked,o=e.question,`You handed one part of your job to ${t.bot}:
114
-
115
- > ${t.request.trim()}
116
-
117
- Before going on, they ask you:
118
-
119
- > ${o.trim()}
120
-
121
- Answer from what you already have — the request as it reached you, the call it came out of, what you found before asking them. A few lines, plain text, and nothing else: no tools run here. If it is not in what you have, say so rather than guess, and say which way to go without it.`)}],abortSignal:e.signal});return{text:n.trim()||"They had nothing to add. Go on with your best reading, and say what you assumed in what you hand back.",usage:E(s)}}catch(t){if(e.signal?.aborted)throw t;return p.logger.warn(`ask_back: ${(0,i.modelErrorToString)(t)}`),{text:`No answer came back (${(0,i.modelErrorToString)(t)}). Go on with your best reading, and say what you assumed in what you hand back.`,usage:d.NO_TOKENS}}}function S(e){return"string"==typeof e?e:e&&"object"==typeof e&&"value"in e?"string"==typeof e.value?e.value:JSON.stringify(e.value??""):JSON.stringify(e??"")}e.s(["condenseThread",0,function(e,t=s.BOT_RUN.resumeMessages){let[o,...a]=e,n=[],r=(e,t)=>{let o=t.trim();if(!o)return;let a=n.at(-1);a?.role===e?a.content=`${a.content}
122
-
123
- ${o}`:n.push({role:e,content:o})};for(let e of a)if("user"===e.role)r("user","string"==typeof e.content?e.content:e.content.flatMap(e=>"text"===e.type?[e.text]:[]).join("\n"));else if("assistant"===e.role){if("string"==typeof e.content){r("assistant",e.content);continue}for(let t of e.content)"text"===t.type?r("assistant",t.text):"tool-call"===t.type&&r("assistant",function(e){let t=e.input??{};return e.toolName===u.TOOL_NAMES.ask_thursday?`(asked Thursday: ${String(t.question??"")})`:e.toolName===u.TOOL_NAMES.ask_back?`(asked back: ${String(t.question??"")})`:e.toolName===u.TOOL_NAMES.ask_bot?`(asked ${String(t.bot??"")} for: ${String(t.request??"")})`:e.toolName===u.TOOL_NAMES.report?`(handed back: ${(0,m.clip)(String(t.result??""),300)})`:`[${e.toolName} ${(0,b.toolLine)(e.toolName,t)}]`}(t))}else if("tool"===e.role)for(let t of e.content)"tool-result"===t.type&&(t.toolName===u.TOOL_NAMES.ask_thursday||t.toolName===u.TOOL_NAMES.ask_back?r("user",S(t.output)):t.toolName===u.TOOL_NAMES.ask_bot&&r("assistant",`(they answered: ${(0,m.clip)(S(t.output),600)})`));let i=n.slice(-t);return o?[o,...i]:i},"runBot",0,T]),o()}catch(e){o(e)}},!1),39803,e=>e.a(async(t,o)=>{try{var a=e.i(89171),n=e.i(380690),s=e.i(687388),r=e.i(386075),i=e.i(851372),l=e.i(353885),h=e.i(22676),u=e.i(629668),d=e.i(786025),c=e.i(167004),p=e.i(640911),w=e.i(53748),y=e.i(268486),m=e.i(585099),g=e.i(944971),f=e.i(780274),b=t([r,i,h,m,f]);[r,i,h,m,f]=b.then?(await b)():b;let x=globalThis.__botRuns??=new Map,A=globalThis.__botTaskLock??=(0,y.createKeyedLock)();async function k(e){let t=e.callId?await (0,h.listCallTurns)(e.callId,i.OPENING_TURNS):[],o=(0,i.buildTaskOpening)({request:e.request,conversation:t}),a=await (0,f.insertTask)({...e,opening:o});return N(a.id,{bot:e.bot,messages:[{role:"user",content:o}]}),a.id}async function T(e,t){return A(e,async()=>{var o,a;let n,s=await (0,f.findTask)(e);s||(0,w.publicError)("No such job.");let r=x.get(e);if(r&&"running"===s.status&&r.note(t))return void p.logger.debug(`task ${e}: interjection queued`);r&&(r.stop.abort(),await r.done);let{reply:i,as:h}=(o=s,a=t,n="waiting"===o.status?o.pending:null,n?.toolCallId?{as:"answer",reply:{role:"tool",content:[{type:"tool-result",toolCallId:n.toolCallId,toolName:l.TOOL_NAMES.ask_thursday,output:{type:"text",value:a}}]}}:{as:"running"===o.status?"interruption":"waiting"===o.status?"answer":"follow-up",reply:{role:"user",content:a}});p.logger.debug(`task ${e}: ${h}`);let u=await (0,f.listThread)(e);await (0,f.upsertMessage)(e,await (0,f.lastSeq)(e)+1,{bot:null,parent:null,...i}),await (0,f.updateTask)(e,{status:"running",outcome:null,pending:null,reported:!1,endedAt:null}),N(e,{bot:s.bot,messages:(0,m.condenseThread)([...u,i])})})}async function $(e){return A(e,async()=>{await (0,f.findTask)(e)||(0,w.publicError)("No such job."),x.get(e)?.stop.abort(),await (0,f.updateTask)(e,{status:"failed",outcome:"Cancelled.",pending:null,reported:!0,endedAt:new Date}),(0,d.closeJobShell)(e)})}function N(e,t){let o=new AbortController,n=()=>{},s=new Promise(e=>{n=e}),r=[];x.set(e,{stop:o,done:s,note:t=>!!x.has(e)&&(r.push(t),!0)}),(0,a.after)(()=>v(e,t,o.signal,r).catch(t=>{p.logger.error(`task ${e}`,t)}).finally(n))}class _{taskId;seq;steps;constructor(e,t){this.taskId=e,this.steps=new Map,this.seq=t}async note(e){await (0,f.upsertMessage)(this.taskId,++this.seq,{bot:null,parent:null,role:"user",content:e,note:!0})}step(e){let t=`${e.bot} ${e.parent??""}`,o=this.steps.get(t);return o||(o={assistant:null,tool:null,parts:{assistant:[],tool:[]}},this.steps.set(t,o)),o}write(e,t,o,a={}){let n={bot:t.bot,parent:t.parent,role:o.role,content:o.content,compact:a.compact??!1,note:a.note??!1};return(0,f.upsertMessage)(this.taskId,e,n)}async on(e){let t=this.step(e);switch(e.type){case"text":return t.assistant??=++this.seq,t.parts.assistant.push({type:"text",text:e.text}),this.write(t.assistant,e,{role:"assistant",content:t.parts.assistant});case"tool":return t.assistant??=++this.seq,t.parts.assistant.push({type:"tool-call",toolCallId:e.id,toolName:e.name,input:e.input}),this.write(t.assistant,e,{role:"assistant",content:t.parts.assistant});case"tool-result":return t.assistant??=++this.seq,t.tool??=++this.seq,t.parts.tool.push({type:"tool-result",toolCallId:e.id,toolName:e.name,output:"string"==typeof e.output?{type:"text",value:e.output}:{type:"json",value:e.output}}),this.write(t.tool,e,{role:"tool",content:t.parts.tool});case"step":{let o=[t.assistant,t.tool];this.steps.delete(`${e.bot} ${e.parent??""}`);let a=new Set;for(let[t,n]of e.messages.entries()){let s=o[t]??++this.seq;a.add(s),await this.write(s,e,n)}let n=o.filter(e=>null!==e&&!a.has(e));n.length&&await (0,f.deleteMessages)(this.taskId,n);return}case"compact":return this.write(++this.seq,e,{role:"user",content:e.text},{compact:!0,note:!0});case"interjection":return this.write(++this.seq,e,{role:"user",content:e.text});default:return}}}async function v(e,t,o,a){let i=new _(e,await (0,f.lastSeq)(e)),l=null,h=null;try{await (0,m.runBot)(t,{signal:o,taskId:e,notes:()=>a.splice(0),emit:async t=>{await i.on(t),"step"===t.type&&await (0,f.addTaskUsage)(e,t.usage,t.parent?null:{tokens:t.usage.input,budget:t.budget}),("compact"===t.type||"answered"===t.type)&&await (0,f.addTaskUsage)(e,t.usage),t.parent||("waiting"===t.type?l={status:"waiting",outcome:t.question,pending:{toolCallId:t.id,options:t.options}}:"report"===t.type?l={status:t.complete?"done":"waiting",outcome:t.text,pending:t.complete?null:{toolCallId:null,options:[g.TASK_CONTINUE]}}:"error"===t.type&&(h=t.message,l={status:"failed",outcome:S(t.message),pending:null}))}})}catch(e){h=(0,r.modelErrorToString)(e),l={status:"failed",outcome:S(h),pending:null}}finally{x.delete(e)}if(o.aborted)return;let c=l??{status:"failed",outcome:"Stopped without handing anything back.",pending:null};"failed"===c.status&&await i.note(`The run stopped here: ${h??c.outcome}`).catch(t=>p.logger.warn(`task ${e}: break not written`,t));try{await (0,f.updateTask)(e,{...c,reported:!1,endedAt:"waiting"===c.status?null:new Date})}catch(t){p.logger.error(`task ${e}: could not record how it ended`,t);return}"waiting"!==c.status&&(0,d.closeJobShell)(e);let w=await (0,f.findTask)(e);if(w){if(a.length){let t=a.splice(0).join("\n\n");p.logger.debug(`task ${e}: interjection after the run ended — resuming`),T(e,t).catch(t=>{p.logger.error(`task ${e}: late interjection`,t)});return}if(await O(w.label,c),"done"===c.status){var y;let t,o=(y=c.outcome,(t=(0,u.pathsIn)(y)).find(e=>e.startsWith(`${s.PATHS.artifacts}/`))??t[0]??null);o&&n.appEvents.emit({type:"artifact",taskId:e,label:w.label,path:o})}}}function S(e){return`The run broke: ${e}
124
-
125
- Everything it had done is still here — answer to pick it back up.`}async function O(e,t){if(0!==n.appEventStream.watchers&&await (0,h.isAnyCallLive)())return;let o="waiting"===t.status?`${e} — needs you`:e;(0,c.desktopNotify)(o,t.outcome)}e.s(["answerTask",0,T,"cancelTask",0,$,"startTask",0,k]),o()}catch(e){o(e)}},!1),167004,e=>{"use strict";var t=e.i(874533),o=e.i(687388);let a=`on run argv
126
- display notification (item 2 of argv) with title (item 1 of argv)
127
- end run`,n=`
128
- $ErrorActionPreference = 'Stop'
129
- [void][Windows.UI.Notifications.ToastNotificationManager, Windows.UI.Notifications, ContentType = WindowsRuntime]
130
- $xml = [Windows.UI.Notifications.ToastNotificationManager]::GetTemplateContent([Windows.UI.Notifications.ToastTemplateType]::ToastText02)
131
- $text = $xml.GetElementsByTagName('text')
132
- [void]$text.Item(0).AppendChild($xml.CreateTextNode($env:NOTIFY_TITLE))
133
- [void]$text.Item(1).AppendChild($xml.CreateTextNode($env:NOTIFY_BODY))
134
- $id = '{1AC14E77-02E7-4E5D-B744-2EB1AE5198B7}\\WindowsPowerShell\\v1.0\\powershell.exe'
135
- [Windows.UI.Notifications.ToastNotificationManager]::CreateToastNotifier($id).Show([Windows.UI.Notifications.ToastNotification]::new($xml))
136
- `,s={darwin:(e,t)=>["osascript",["-e",a,"--",e,t]],win32:()=>["powershell.exe",["-NoProfile","-NonInteractive","-Command",n]],linux:(e,t)=>["notify-send",["--app-name",o.APP_NAME,"--",e,t]]};e.s(["desktopNotify",0,function(e,o){let a=e.slice(0,80),n=o.slice(0,200),r=s[process.platform]?.(a,n);if(!r)return;let[i,l]=r;(0,t.execFile)(i,l,{env:{...process.env,NOTIFY_TITLE:a,NOTIFY_BODY:n},timeout:1e4,windowsHide:!0},()=>{})}])}];
137
-
138
- //# sourceMappingURL=_19wg5yn._.js.map