thursday-agent 0.17.2 → 0.18.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 (362) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +1 -0
  3. package/.next/build-manifest.json +3 -3
  4. package/.next/prerender-manifest.json +3 -3
  5. package/.next/routes-manifest.json +6 -0
  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 +7 -7
  20. package/.next/server/app/api/artifact/route.js.nft.json +1 -1
  21. package/.next/server/app/api/bot/memory/files/route.js +4 -4
  22. package/.next/server/app/api/bot/memory/files/route.js.nft.json +1 -1
  23. package/.next/server/app/api/bot/memory/route.js +1 -1
  24. package/.next/server/app/api/bot/memory/route.js.nft.json +1 -1
  25. package/.next/server/app/api/bot/route.js +1 -1
  26. package/.next/server/app/api/bot/route.js.nft.json +1 -1
  27. package/.next/server/app/api/bot/thread/[id]/route.js +1 -1
  28. package/.next/server/app/api/bot/thread/[id]/route.js.nft.json +1 -1
  29. package/.next/server/app/api/bot/thread/file/route/app-paths-manifest.json +3 -0
  30. package/.next/server/app/api/bot/thread/file/route/build-manifest.json +12 -0
  31. package/.next/server/app/api/bot/thread/file/route/server-reference-manifest.json +4 -0
  32. package/.next/server/app/api/bot/thread/file/route.js +29 -0
  33. package/.next/server/app/api/bot/thread/file/route.js.map +5 -0
  34. package/.next/server/app/api/bot/thread/file/route.js.nft.json +1 -0
  35. package/.next/server/app/api/bot/thread/file/route_client-reference-manifest.js +3 -0
  36. package/.next/server/app/api/bot/thread/route.js +1 -1
  37. package/.next/server/app/api/bot/thread/route.js.nft.json +1 -1
  38. package/.next/server/app/api/config/route.js +1 -1
  39. package/.next/server/app/api/config/route.js.nft.json +1 -1
  40. package/.next/server/app/api/events/route.js +2 -2
  41. package/.next/server/app/api/events/route.js.nft.json +1 -1
  42. package/.next/server/app/api/favicon/[host]/route.js.nft.json +1 -1
  43. package/.next/server/app/api/file/[...path]/route.js +4 -4
  44. package/.next/server/app/api/file/[...path]/route.js.nft.json +1 -1
  45. package/.next/server/app/api/llm-model/automatic/route.js +1 -1
  46. package/.next/server/app/api/llm-model/automatic/route.js.nft.json +1 -1
  47. package/.next/server/app/api/llm-model/catalog/route.js +1 -1
  48. package/.next/server/app/api/llm-model/catalog/route.js.nft.json +1 -1
  49. package/.next/server/app/api/llm-model/credits/route.js +1 -1
  50. package/.next/server/app/api/llm-model/credits/route.js.nft.json +1 -1
  51. package/.next/server/app/api/llm-model/route.js +1 -1
  52. package/.next/server/app/api/llm-model/route.js.nft.json +1 -1
  53. package/.next/server/app/api/llm-model/subscription/route.js +1 -1
  54. package/.next/server/app/api/llm-model/subscription/route.js.nft.json +1 -1
  55. package/.next/server/app/api/mcp/[name]/route.js +1 -1
  56. package/.next/server/app/api/mcp/[name]/route.js.nft.json +1 -1
  57. package/.next/server/app/api/mcp/oauth/callback/route.js +2 -2
  58. package/.next/server/app/api/mcp/oauth/callback/route.js.nft.json +1 -1
  59. package/.next/server/app/api/mcp/route.js +1 -1
  60. package/.next/server/app/api/mcp/route.js.nft.json +1 -1
  61. package/.next/server/app/api/mcp/tools/route.js +1 -1
  62. package/.next/server/app/api/mcp/tools/route.js.nft.json +1 -1
  63. package/.next/server/app/api/memory/edit/route.js +1 -1
  64. package/.next/server/app/api/memory/edit/route.js.nft.json +1 -1
  65. package/.next/server/app/api/memory/route.js +1 -1
  66. package/.next/server/app/api/memory/route.js.nft.json +1 -1
  67. package/.next/server/app/api/reach/route.js +1 -1
  68. package/.next/server/app/api/reach/route.js.nft.json +1 -1
  69. package/.next/server/app/api/routine/route.js +1 -1
  70. package/.next/server/app/api/routine/route.js.nft.json +1 -1
  71. package/.next/server/app/api/signins/route.js +1 -1
  72. package/.next/server/app/api/signins/route.js.nft.json +1 -1
  73. package/.next/server/app/api/skills/[source]/[name]/route.js +1 -1
  74. package/.next/server/app/api/skills/[source]/[name]/route.js.nft.json +1 -1
  75. package/.next/server/app/api/skills/route.js +1 -1
  76. package/.next/server/app/api/skills/route.js.nft.json +1 -1
  77. package/.next/server/app/api/thursday/call/end/route.js +1 -1
  78. package/.next/server/app/api/thursday/call/end/route.js.nft.json +1 -1
  79. package/.next/server/app/api/thursday/call/route.js +1 -1
  80. package/.next/server/app/api/thursday/call/route.js.nft.json +1 -1
  81. package/.next/server/app/api/thursday/settings/route.js +1 -1
  82. package/.next/server/app/api/thursday/settings/route.js.nft.json +1 -1
  83. package/.next/server/app/api/thursday/text/route.js +1 -1
  84. package/.next/server/app/api/thursday/text/route.js.nft.json +1 -1
  85. package/.next/server/app/api/thursday/tool-call/route.js +1 -1
  86. package/.next/server/app/api/thursday/tool-call/route.js.nft.json +1 -1
  87. package/.next/server/app/api/workspace/files/route.js +1 -1
  88. package/.next/server/app/api/workspace/files/route.js.nft.json +1 -1
  89. package/.next/server/app/api/workspace/route.js +1 -1
  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 +94 -6
  92. package/.next/server/app/artifact/[...path]/page.js +9 -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.nft.json +1 -1
  96. package/.next/server/app/manifest.webmanifest/route.js.nft.json +1 -1
  97. package/.next/server/app/page/server-reference-manifest.json +161 -128
  98. package/.next/server/app/page.js +9 -9
  99. package/.next/server/app/page.js.nft.json +1 -1
  100. package/.next/server/app/page_client-reference-manifest.js +1 -1
  101. package/.next/server/app-paths-manifest.json +1 -0
  102. package/.next/server/chunks/{[externals]__12stas-._.js → [externals]__178rv3v._.js} +1 -1
  103. package/.next/server/chunks/[root-of-the-server]__00qyw01._.js +1 -1
  104. package/.next/server/chunks/[root-of-the-server]__02ra64t._.js +5 -0
  105. package/.next/server/chunks/[root-of-the-server]__03xamry._.js +1 -1
  106. package/.next/server/chunks/[root-of-the-server]__04hhvpu._.js +7 -0
  107. package/.next/server/chunks/[root-of-the-server]__05dp5tr._.js +1 -1
  108. package/.next/server/chunks/[root-of-the-server]__0bqveex._.js +1 -1
  109. package/.next/server/chunks/{[root-of-the-server]__1_h4hf9._.js → [root-of-the-server]__0brmiv2._.js} +4 -4
  110. package/.next/server/chunks/[root-of-the-server]__0gvdr2h._.js +5 -0
  111. package/.next/server/chunks/[root-of-the-server]__0h656y-._.js +1 -1
  112. package/.next/server/chunks/[root-of-the-server]__0lvjz0b._.js +5 -0
  113. package/.next/server/chunks/[root-of-the-server]__0mgyt8p._.js +1 -1
  114. package/.next/server/chunks/[root-of-the-server]__0mrk2it._.js +1 -1
  115. package/.next/server/chunks/[root-of-the-server]__0my9geo._.js +3 -0
  116. package/.next/server/chunks/[root-of-the-server]__0qdoc_9._.js +5 -0
  117. package/.next/server/chunks/[root-of-the-server]__0sm5xvm._.js +1 -1
  118. package/.next/server/chunks/[root-of-the-server]__0v_kuor._.js +5 -0
  119. package/.next/server/chunks/[root-of-the-server]__1-rmal0._.js +1 -1
  120. package/.next/server/chunks/[root-of-the-server]__13hng6h._.js +1 -1
  121. package/.next/server/chunks/[root-of-the-server]__1_04mcf._.js +2 -2
  122. package/.next/server/chunks/[root-of-the-server]__1ceammd._.js +1 -1
  123. package/.next/server/chunks/[root-of-the-server]__1dth047._.js +5 -0
  124. package/.next/server/chunks/[root-of-the-server]__1etbk64._.js +3 -0
  125. package/.next/server/chunks/[root-of-the-server]__1izes4_._.js +7 -0
  126. package/.next/server/chunks/[root-of-the-server]__1ksm9m-._.js +12 -0
  127. package/.next/server/chunks/[root-of-the-server]__1m_dmf6._.js +5 -0
  128. package/.next/server/chunks/[root-of-the-server]__1mys2c3._.js +5 -0
  129. package/.next/server/chunks/[root-of-the-server]__1ndi14y._.js +1 -1
  130. package/.next/server/chunks/[root-of-the-server]__1p0njle._.js +5 -0
  131. package/.next/server/chunks/[root-of-the-server]__1p47fbb._.js +2 -2
  132. package/.next/server/chunks/[root-of-the-server]__1ygplx1._.js +1 -1
  133. package/.next/server/chunks/[root-of-the-server]__1zn039k._.js +1 -1
  134. package/.next/server/chunks/_01c32w9._.js +1 -1
  135. package/.next/server/chunks/_02bov6_._.js +1 -1
  136. package/.next/server/chunks/_06hnfi8._.js +2 -2
  137. package/.next/server/chunks/_06u9yo-._.js +1 -1
  138. package/.next/server/chunks/_07nxi75._.js +42 -41
  139. package/.next/server/chunks/_08354bn._.js +12 -11
  140. package/.next/server/chunks/{_08btiir._.js → _08_-9ay._.js} +3 -3
  141. package/.next/server/chunks/_08s4vft._.js +1 -1
  142. package/.next/server/chunks/_0bgjf07._.js +5 -0
  143. package/.next/server/chunks/_0fb6dvr._.js +1 -1
  144. package/.next/server/chunks/_0hgvg55._.js +1 -1
  145. package/.next/server/chunks/_0iw19ig._.js +1 -1
  146. package/.next/server/chunks/_0poi1t2._.js +1 -1
  147. package/.next/server/chunks/_0srlnvd._.js +6 -6
  148. package/.next/server/chunks/_0t_7gji._.js +1 -1
  149. package/.next/server/chunks/_0uzj57i._.js +1 -1
  150. package/.next/server/chunks/_0wyh244._.js +112 -0
  151. package/.next/server/chunks/_0xygcxs._.js +42 -41
  152. package/.next/server/chunks/_1-sk_q4._.js +1 -1
  153. package/.next/server/chunks/_108gsm8._.js +2 -2
  154. package/.next/server/chunks/_136j09a._.js +5 -5
  155. package/.next/server/chunks/_15negpy._.js +2 -2
  156. package/.next/server/chunks/_1d7og_q._.js +1 -1
  157. package/.next/server/chunks/_1dxq827._.js +2 -2
  158. package/.next/server/chunks/_1e54wxa._.js +1 -1
  159. package/.next/server/chunks/_1gn2r2q._.js +6 -6
  160. package/.next/server/chunks/_1i3uucm._.js +1 -1
  161. package/.next/server/chunks/_1jvy78-._.js +5 -0
  162. package/.next/server/chunks/_1q6e56i._.js +6 -6
  163. package/.next/server/chunks/_1qgix-j._.js +1 -1
  164. package/.next/server/chunks/_1wwl_7o._.js +1 -1
  165. package/.next/server/chunks/_1y8w80a._.js +5 -5
  166. package/.next/server/chunks/_1yx285_._.js +3 -0
  167. package/.next/server/chunks/_20qn224._.js +3 -0
  168. package/.next/server/chunks/_211dn2c._.js +1 -1
  169. package/.next/server/chunks/_next-internal_server_app_api_bot_thread_file_route_actions_0q3be0o.js +3 -0
  170. package/.next/server/chunks/config_ts_1g4sz5o._.js +1 -1
  171. package/.next/server/chunks/features_bot_08z387_._.js +3 -3
  172. package/.next/server/chunks/features_workspace_workspace_ts_13h82gv._.js +3 -3
  173. package/.next/server/chunks/features_workspace_workspace_ts_1iyjroj._.js +3 -3
  174. package/.next/server/chunks/{node_modules_consola_dist_chunks_prompt_mjs_04oxl25._.js → node_modules_consola_dist_chunks_prompt_mjs_0yd5xa0._.js} +1 -1
  175. package/.next/server/chunks/ssr/[root-of-the-server]__04upd5v._.js +1 -1
  176. package/.next/server/chunks/ssr/[root-of-the-server]__06knwl5._.js +3 -0
  177. package/.next/server/chunks/ssr/[root-of-the-server]__07ehpky._.js +3 -0
  178. package/.next/server/chunks/ssr/[root-of-the-server]__0h6jo0s._.js +3 -0
  179. package/.next/server/chunks/ssr/[root-of-the-server]__128hnrd._.js +3 -0
  180. package/.next/server/chunks/ssr/[root-of-the-server]__1867koj._.js +1 -1
  181. package/.next/server/chunks/ssr/[root-of-the-server]__1gzje-h._.js +3 -0
  182. package/.next/server/chunks/ssr/{[root-of-the-server]__1d7usu0._.js → [root-of-the-server]__1qn0axo._.js} +2 -2
  183. package/.next/server/chunks/ssr/[root-of-the-server]__1r7tj27._.js +3 -0
  184. package/.next/server/chunks/ssr/[root-of-the-server]__1tb5vve._.js +46 -0
  185. package/.next/server/chunks/ssr/{features_bot_1knyan7._.js → _07nmtxo._.js} +2 -2
  186. package/.next/server/chunks/ssr/{_10-_awu._.js → _0f9hx5p._.js} +2 -2
  187. package/.next/server/chunks/ssr/_0fo4552._.js +10 -9
  188. package/.next/server/chunks/ssr/{_123y-ah._.js → _0is8m6y._.js} +2 -2
  189. package/.next/server/chunks/ssr/{_17a4qyk._.js → _0ixe3g3._.js} +3 -3
  190. package/.next/server/chunks/ssr/_0j9vh-8._.js +3 -0
  191. package/.next/server/chunks/ssr/_0l7rjg5._.js +1 -1
  192. package/.next/server/chunks/ssr/{lib_logger_ts_0-olsze._.js → _0mfgsk-._.js} +4 -2
  193. package/.next/server/chunks/ssr/_0mpn6q0._.js +5 -0
  194. package/.next/server/chunks/ssr/{_0e2fnvg._.js → _0osvxkt._.js} +2 -2
  195. package/.next/server/chunks/ssr/_0p6w0ef._.js +3 -0
  196. package/.next/server/chunks/ssr/_0pbav_w._.js +3 -0
  197. package/.next/server/chunks/ssr/{_1aqjk-1._.js → _0wuvkqk._.js} +2 -2
  198. package/.next/server/chunks/ssr/_0x8ophf._.js +1 -1
  199. package/.next/server/chunks/ssr/_0x9f717._.js +60 -0
  200. package/.next/server/chunks/ssr/_1-41lck._.js +1 -1
  201. package/.next/server/chunks/ssr/_10jtmhl._.js +3 -0
  202. package/.next/server/chunks/ssr/{_0xfafez._.js → _12jv_41._.js} +2 -2
  203. package/.next/server/chunks/ssr/{_163dr78._.js → _165wnr4._.js} +2 -2
  204. package/.next/server/chunks/ssr/_16_7zeo._.js +3 -0
  205. package/.next/server/chunks/ssr/{_14oirtb._.js → _1_ogjze._.js} +2 -2
  206. package/.next/server/chunks/ssr/_1bfrntd._.js +6 -0
  207. package/.next/server/chunks/ssr/_1i2swyr._.js +3 -0
  208. package/.next/server/chunks/ssr/{_10_ph1t._.js → _1jd8rjm._.js} +2 -2
  209. package/.next/server/chunks/ssr/_1mdjoak._.js +162 -0
  210. package/.next/server/chunks/ssr/_1neoj22._.js +1 -1
  211. package/.next/server/chunks/ssr/{_1dfv66y._.js → _1oafxdu._.js} +2 -2
  212. package/.next/server/chunks/ssr/_1omom9y._.js +3 -0
  213. package/.next/server/chunks/ssr/_1pgxh81._.js +271 -0
  214. package/.next/server/chunks/ssr/{_0vo_oym._.js → _1r4mc3i._.js} +2 -2
  215. package/.next/server/chunks/ssr/_1soynbw._.js +6 -0
  216. package/.next/server/chunks/ssr/{_01al00i._.js → _1tx-2k7._.js} +2 -2
  217. package/.next/server/chunks/ssr/_1w899wx._.js +3 -0
  218. package/.next/server/chunks/ssr/_1xwtbdz._.js +3 -0
  219. package/.next/server/chunks/ssr/features_0796o8r._.js +1 -1
  220. package/.next/server/chunks/ssr/features_bot_0tb4ui-._.js +2 -2
  221. package/.next/server/chunks/ssr/features_bot_18gqkr_._.js +3 -0
  222. package/.next/server/chunks/ssr/{features_config_09n-q9q._.js → features_config_1ond01n._.js} +3 -3
  223. package/.next/server/chunks/ssr/features_connectors_components_mcp-setting_tsx_0jmbgvp._.js +1 -1
  224. package/.next/server/chunks/ssr/features_memory_components_memory-setting_tsx_0oa43sw._.js +1 -1
  225. package/.next/server/chunks/ssr/features_routine_components_routine-setting_tsx_055fknz._.js +1 -1
  226. package/.next/server/chunks/ssr/features_workspace_workspace_ts_1wc7_u_._.js +4 -4
  227. package/.next/server/chunks/ssr/{node_modules_0msrhxf._.js → node_modules_004qt-z._.js} +1 -1
  228. package/.next/server/chunks/ssr/{node_modules_0q-klni._.js → node_modules_06m6e97._.js} +1 -1
  229. package/.next/server/chunks/ssr/{node_modules_13g-d25._.js → node_modules_09dy7tk._.js} +1 -1
  230. package/.next/server/chunks/ssr/{node_modules_0gd9hbz._.js → node_modules_0_hy3i2._.js} +1 -1
  231. package/.next/server/chunks/ssr/{node_modules_1gq3ght._.js → node_modules_0f485jl._.js} +1 -1
  232. package/.next/server/chunks/ssr/{node_modules_096up6a._.js → node_modules_0gbx70b._.js} +1 -1
  233. package/.next/server/chunks/ssr/{node_modules_13bqv6i._.js → node_modules_0i_v0-m._.js} +1 -1
  234. package/.next/server/chunks/ssr/{node_modules_04x5wyv._.js → node_modules_0lrn9ci._.js} +1 -1
  235. package/.next/server/chunks/ssr/{node_modules_0d6j33x._.js → node_modules_0lxwg2v._.js} +1 -1
  236. package/.next/server/chunks/ssr/{node_modules_113l3e5._.js → node_modules_0n2-p5q._.js} +1 -1
  237. package/.next/server/chunks/ssr/node_modules_0nj36zf._.js +3 -0
  238. package/.next/server/chunks/ssr/{node_modules_0cjnmzp._.js → node_modules_0ppirau._.js} +1 -1
  239. package/.next/server/chunks/ssr/{node_modules_0m73b88._.js → node_modules_0pw13ww._.js} +1 -1
  240. package/.next/server/chunks/ssr/node_modules_0qd7p5f._.js +3 -0
  241. package/.next/server/chunks/ssr/{node_modules_0nmkv-v._.js → node_modules_0upwx50._.js} +1 -1
  242. package/.next/server/chunks/ssr/{node_modules_0__0tvm._.js → node_modules_0v__o4h._.js} +1 -1
  243. package/.next/server/chunks/ssr/{node_modules_1k5i-_9._.js → node_modules_1-4q6is._.js} +1 -1
  244. package/.next/server/chunks/ssr/{node_modules_156kv_t._.js → node_modules_10mb0cv._.js} +1 -1
  245. package/.next/server/chunks/ssr/{node_modules_10_fv2a._.js → node_modules_16z7p8b._.js} +1 -1
  246. package/.next/server/chunks/ssr/{node_modules_1lmyts8._.js → node_modules_17o218r._.js} +1 -1
  247. package/.next/server/chunks/ssr/{node_modules_0k8-y89._.js → node_modules_1gpapfv._.js} +1 -1
  248. package/.next/server/chunks/ssr/{node_modules_1_8-jcj._.js → node_modules_1hdaxu9._.js} +1 -1
  249. package/.next/server/chunks/ssr/{node_modules_1ri_eip._.js → node_modules_1hjvwkh._.js} +1 -1
  250. package/.next/server/chunks/ssr/{node_modules_0nw5jz7._.js → node_modules_1j886a5._.js} +1 -1
  251. package/.next/server/chunks/ssr/{node_modules_1xb-ndg._.js → node_modules_1srjf5c._.js} +1 -1
  252. package/.next/server/chunks/ssr/{node_modules_1p_6sq7._.js → node_modules_1tus4vi._.js} +1 -1
  253. package/.next/server/chunks/ssr/{node_modules_021lid9._.js → node_modules_1tv_7lk._.js} +1 -1
  254. package/.next/server/chunks/ssr/{node_modules_1qstb1x._.js → node_modules_20448xv._.js} +1 -1
  255. package/.next/server/chunks/ssr/{node_modules_@mermaid-js_parser_dist_chunks_mermaid-parser_core_0amkw0b._.js → node_modules_@mermaid-js_parser_dist_chunks_mermaid-parser_core_0lg9pkl._.js} +1 -1
  256. package/.next/server/chunks/ssr/{node_modules_@mermaid-js_parser_dist_chunks_mermaid-parser_core_0zq3l45._.js → node_modules_@mermaid-js_parser_dist_chunks_mermaid-parser_core_1xgbf5j._.js} +1 -1
  257. package/.next/server/middleware-build-manifest.js +3 -3
  258. package/.next/server/middleware.js +1 -1
  259. package/.next/server/pages/404.html +1 -1
  260. package/.next/server/pages/500.html +1 -1
  261. package/.next/server/server-reference-manifest.js +1 -1
  262. package/.next/server/server-reference-manifest.json +205 -132
  263. package/.next/static/chunks/{166smhw8v-s3j.js → 05uvci-bk-vgp.js} +1 -1
  264. package/.next/static/chunks/09y_43y1cy5jw.js +1 -0
  265. package/.next/static/chunks/0_s4z70lx1tgs.js +1 -0
  266. package/.next/static/chunks/0oqviw3f55nfp.js +58 -0
  267. package/.next/static/chunks/0q9b2n6l4flqb.js +1 -0
  268. package/.next/static/chunks/0ruf3dqs--3ve.js +1 -0
  269. package/.next/static/chunks/0vggwjufw2-6r.js +1 -0
  270. package/.next/static/chunks/{3sla-dm1puqd1.js → 0x4m9nj2fazl2.js} +1 -1
  271. package/.next/static/chunks/{3t2c76awm9k_p.js → 1-1yfu34-3p2p.js} +1 -1
  272. package/.next/static/chunks/10oyyypxn_cpx.js +1 -0
  273. package/.next/static/chunks/{1cglo3a2mbeou.js → 17dx6w478vnb0.js} +1 -1
  274. package/.next/static/chunks/184-r80rv0xay.css +1 -0
  275. package/.next/static/chunks/1_hgdoungpm0o.js +1 -0
  276. package/.next/static/chunks/{0obogzscwwekj.js → 1dpg1u4a16ujt.js} +1 -1
  277. package/.next/static/chunks/{2qgkbdshzpq1c.js → 1h_6rh86q3i4p.js} +1 -1
  278. package/.next/static/chunks/{3b96xy59nl_gd.js → 1pe7i5yu779ta.js} +1 -1
  279. package/.next/static/chunks/{2zbl41hed17g3.js → 240nfv2dtidhc.js} +1 -1
  280. package/.next/static/chunks/{0uxq_vs6uxi-b.js → 27l8qwnk1j66z.js} +1 -1
  281. package/.next/static/chunks/2gxfy__ef51n9.js +3 -0
  282. package/.next/static/chunks/2kjwmo70judc2.js +15 -0
  283. package/.next/static/chunks/{3gsxnqqqphh-1.js → 2lzg4zedtmyic.js} +1 -1
  284. package/.next/static/chunks/2ug8q1x9e-_j6.js +1 -0
  285. package/.next/static/chunks/{01l7kw74vfp32.js → 2uk8rdtr-pk58.js} +1 -1
  286. package/.next/static/chunks/337g9g_ux2gj-.js +1 -0
  287. package/.next/static/chunks/{0o7o0eb7ihxi6.js → 396enq-m0sss5.js} +1 -1
  288. package/.next/static/chunks/{0p2f6uv4xytfm.js → 3r7u1y9xjoh-v.js} +1 -1
  289. package/.next/static/chunks/{3jtcieuk1l6tw.js → 3vg1-oc-zgw_7.js} +1 -1
  290. package/.next/static/chunks/40re_3ukjulg9.js +1 -0
  291. package/.next/static/chunks/41ztsnjn4qrn-.js +1 -0
  292. package/README.md +5 -5
  293. package/bin/autostart.mjs +32 -2
  294. package/bin/lock.mjs +85 -4
  295. package/bin/thursday.mjs +42 -15
  296. package/bin/tools.mjs +18 -1
  297. package/database/migrations/20260926021847_thread_cache_tokens/migration.sql +2 -0
  298. package/database/migrations/20260926021847_thread_cache_tokens/snapshot.json +1949 -0
  299. package/guide/bots.md +173 -317
  300. package/guide/calls.md +98 -146
  301. package/guide/index.md +2 -2
  302. package/guide/memory.md +14 -18
  303. package/guide/phone.md +86 -133
  304. package/guide/setup.md +127 -172
  305. package/guide/trouble.md +42 -65
  306. package/package.json +1 -1
  307. package/seed-skills/concierge/travel/scripts/itinerary.mjs +1 -1
  308. package/skills/artifact/runtime/shell/shell.js +32 -3
  309. package/.next/server/chunks/[root-of-the-server]__01ypm_z._.js +0 -3
  310. package/.next/server/chunks/[root-of-the-server]__021dkui._.js +0 -3
  311. package/.next/server/chunks/[root-of-the-server]__09gdscj._.js +0 -7
  312. package/.next/server/chunks/[root-of-the-server]__0ljizgj._.js +0 -5
  313. package/.next/server/chunks/[root-of-the-server]__0nmust6._.js +0 -5
  314. package/.next/server/chunks/[root-of-the-server]__0svzjwa._.js +0 -7
  315. package/.next/server/chunks/[root-of-the-server]__1c2kwku._.js +0 -12
  316. package/.next/server/chunks/[root-of-the-server]__1t02-1p._.js +0 -3
  317. package/.next/server/chunks/[root-of-the-server]__1t0jj1j._.js +0 -5
  318. package/.next/server/chunks/[root-of-the-server]__1vlxv19._.js +0 -5
  319. package/.next/server/chunks/_0j0-gq6._.js +0 -5
  320. package/.next/server/chunks/_0p6v1fr._.js +0 -5
  321. package/.next/server/chunks/_1ic3bew._.js +0 -5
  322. package/.next/server/chunks/node_modules_consola_dist_chunks_prompt_mjs_0g87zst._.js +0 -3
  323. package/.next/server/chunks/ssr/[root-of-the-server]__0-af_o7._.js +0 -3
  324. package/.next/server/chunks/ssr/[root-of-the-server]__09f39cp._.js +0 -4
  325. package/.next/server/chunks/ssr/[root-of-the-server]__0ouu4qp._.js +0 -3
  326. package/.next/server/chunks/ssr/[root-of-the-server]__0q9g9ea._.js +0 -5
  327. package/.next/server/chunks/ssr/[root-of-the-server]__17h1ggo._.js +0 -46
  328. package/.next/server/chunks/ssr/[root-of-the-server]__1jyeu61._.js +0 -5
  329. package/.next/server/chunks/ssr/_0afrpci._.js +0 -3
  330. package/.next/server/chunks/ssr/_0bgse1c._.js +0 -162
  331. package/.next/server/chunks/ssr/_0qsmpcu._.js +0 -3
  332. package/.next/server/chunks/ssr/_0z38nha._.js +0 -3
  333. package/.next/server/chunks/ssr/_116lfdc._.js +0 -3
  334. package/.next/server/chunks/ssr/_14dfh7a._.js +0 -4
  335. package/.next/server/chunks/ssr/_17qtuv7._.js +0 -3
  336. package/.next/server/chunks/ssr/_1_5xof_._.js +0 -3
  337. package/.next/server/chunks/ssr/_1alxym6._.js +0 -3
  338. package/.next/server/chunks/ssr/_1ou5sj0._.js +0 -3
  339. package/.next/server/chunks/ssr/_1tmw842._.js +0 -5
  340. package/.next/server/chunks/ssr/_1uij_rj._.js +0 -3
  341. package/.next/server/chunks/ssr/_1w9w1ok._.js +0 -3
  342. package/.next/server/chunks/ssr/_20gq_24._.js +0 -3
  343. package/.next/server/chunks/ssr/features_bot_0ouemw8._.js +0 -3
  344. package/.next/server/chunks/ssr/node_modules_@base-ui_react_1j9i1ho._.js +0 -3
  345. package/.next/static/chunks/0a5_-jqhaktjj.js +0 -1
  346. package/.next/static/chunks/0npvak0wpgagb.js +0 -1
  347. package/.next/static/chunks/19l81deo_pyoc.js +0 -1
  348. package/.next/static/chunks/1bnhw-5fj7aiz.js +0 -1
  349. package/.next/static/chunks/1in6nxpu33iab.js +0 -1
  350. package/.next/static/chunks/1u7kg91f9qy3g.js +0 -1
  351. package/.next/static/chunks/1xv4g10m-cl1s.js +0 -1
  352. package/.next/static/chunks/2ajs12-fcdwzm.js +0 -1
  353. package/.next/static/chunks/2i7qtmxc1kuqg.js +0 -1
  354. package/.next/static/chunks/2kz1f6r59nky0.js +0 -3
  355. package/.next/static/chunks/31kn4_h2rvf6k.css +0 -1
  356. package/.next/static/chunks/35jj-5u4te56r.js +0 -1
  357. package/.next/static/chunks/37ixzapa06xlo.js +0 -1
  358. package/.next/static/chunks/3k1d8y03t5nax.js +0 -58
  359. package/.next/static/chunks/3yiqr95d7ybeq.js +0 -15
  360. /package/.next/static/{8I2hKtciyA9LXvd8txuOz → -IBxB5oqr6e3RuOCCmYtL}/_buildManifest.js +0 -0
  361. /package/.next/static/{8I2hKtciyA9LXvd8txuOz → -IBxB5oqr6e3RuOCCmYtL}/_clientMiddlewareManifest.js +0 -0
  362. /package/.next/static/{8I2hKtciyA9LXvd8txuOz → -IBxB5oqr6e3RuOCCmYtL}/_ssgManifest.js +0 -0
@@ -1,6 +1,6 @@
1
1
  module.exports=[811592,e=>e.a(async(t,a)=>{try{var r=e.i(666680),d=e.i(336763),n=e.i(157406),l=e.i(533102),i=e.i(232347),o=e.i(333925),s=e.i(876393),h=e.i(220376),u=e.i(51083),b=e.i(212389),c=e.i(951056),T=e.i(600690),p=t([s]);[s]=p.then?(await p)():p;let C=()=>i.appEvents.emit({type:"threads"}),H=e=>"done"===e||"cancelled"===e,L=(e,t,a)=>`message:${(0,r.createHash)("sha256").update(JSON.stringify([e,t,a])).digest("hex")}`;async function w(e,t,a){let[r]=await e.select({id:h.threadWorkTable.id}).from(h.threadWorkTable).where((0,d.and)((0,d.eq)(h.threadWorkTable.threadId,t),(0,d.eq)(h.threadWorkTable.state,"external"),(0,d.eq)(h.threadWorkTable.caller,a))).limit(1);return!!r}async function f(e,t,a){let r=a.flatMap(e=>"assistant"===e.role&&Array.isArray(e.content)?e.content.flatMap(e=>"tool-call"===e.type&&e.toolName===u.TOOL_NAMES.send_message?[e.toolCallId]:[]):[]),n=r.map(a=>L(e,t,a)),l=new Map;if(!n.length)return l;let[i,o]=await Promise.all([s.database.select({key:h.threadWorkTable.id,to:h.threadWorkTable.bot}).from(h.threadWorkTable).where((0,d.and)((0,d.eq)(h.threadWorkTable.threadId,e),(0,d.inArray)(h.threadWorkTable.id,n))),s.database.select({key:h.threadDeliveryTable.key,to:h.threadWorkTable.bot}).from(h.threadDeliveryTable).innerJoin(h.threadWorkTable,(0,d.eq)(h.threadWorkTable.id,h.threadDeliveryTable.workId)).where((0,d.and)((0,d.eq)(h.threadDeliveryTable.threadId,e),(0,d.inArray)(h.threadDeliveryTable.key,n)))]),b=new Map([...i,...o].map(e=>[e.key,e.to]));for(let[e,t]of r.entries()){let a=b.get(n[e]);a&&l.set(t,{messageId:n[e],to:a})}return l}async function y(e,t,a){let[r]=await e.select({seq:(0,n.max)(h.threadMessageTable.seq)}).from(h.threadMessageTable).where((0,d.eq)(h.threadMessageTable.threadId,t)),l=(r?.seq??-1)+1;return await e.insert(h.threadMessageTable).values({threadId:t,seq:l,...a}),l}let Y=(e,t)=>({bot:e.bot,parent:e.id,role:"user",content:`${t} ${T.RESUME_CHECK}`,note:!0});async function g(e,t){await m(e.threadId,Y(e,t))}async function m(e,t){let a=await s.database.transaction(a=>y(a,e,t));return C(),a}async function k(e){return s.database.select().from(h.threadWorkTable).where((0,d.eq)(h.threadWorkTable.threadId,e)).orderBy(h.threadWorkTable.createdAt,h.threadWorkTable.id)}async function q(e,t){let[a]=await s.database.select({budget:l.sql`min(nullif(${h.threadWorkTable.contextBudget}, 0))`}).from(h.threadWorkTable).where((0,d.and)((0,d.eq)(h.threadWorkTable.threadId,e),(0,d.eq)(h.threadWorkTable.bot,t)));return a?.budget??void 0}async function I(e,t){await s.database.transaction(async a=>{await W(a,e),await a.update(h.threadWorkTable).set({contextBudget:t}).where((0,d.eq)(h.threadWorkTable.id,e.id))}),C()}async function W(e,t){let[a]=await e.select().from(h.threadWorkTable).where((0,d.and)((0,d.eq)(h.threadWorkTable.id,t.id),(0,d.eq)(h.threadWorkTable.generation,t.generation),(0,d.eq)(h.threadWorkTable.state,"running")));return a||(0,b.publicError)("This turn is no longer running."),a}async function A(e,t){await e.insert(h.threadDeliveryTable).values(t).onConflictDoNothing();let[a]=await e.select({bot:h.threadWorkTable.bot}).from(h.threadWorkTable).where((0,d.eq)(h.threadWorkTable.id,t.workId));a&&await w(e,t.threadId,a.bot)||await e.update(h.threadWorkTable).set({state:"queued"}).where((0,d.and)((0,d.eq)(h.threadWorkTable.id,t.workId),(0,d.inArray)(h.threadWorkTable.state,["waiting","done"])))}async function R(e,t){let a={...T.RoomMessageSchema.parse(t),id:t.id};"question"===a.kind&&a.to!==T.ROOM_THURSDAY&&(0,b.publicError)("Address user questions to Thursday; use a message to contact another bot."),a.options?.length&&"question"!==a.kind&&(0,b.publicError)("Offer answer choices only with a user question.");let r=await s.database.transaction(async t=>{await W(t,e);let r=L(e.threadId,e.bot,a.id),[n]=await t.select().from(h.threadWorkTable).where((0,d.eq)(h.threadWorkTable.id,r));if(n)return{messageId:r,to:n.bot};let[l]=await t.select({to:h.threadWorkTable.bot}).from(h.threadDeliveryTable).innerJoin(h.threadWorkTable,(0,d.eq)(h.threadWorkTable.id,h.threadDeliveryTable.workId)).where((0,d.eq)(h.threadDeliveryTable.key,r));if(l)return{messageId:r,to:l.to};a.to===e.bot&&(0,b.publicError)("Continue your own work directly; choose another recipient."),a.to!==T.ROOM_THURSDAY&&a.to===e.caller&&(0,b.publicError)(`${a.to} is who you are answering. End your turn and your final text goes to ${a.to}: the answer, or the question you need settled first.`);let i=await t.select().from(h.threadWorkTable).where((0,d.eq)(h.threadWorkTable.threadId,e.threadId)),s=i.filter(t=>t.bot===a.to&&t.caller===e.bot&&a.to!==T.ROOM_THURSDAY&&!H(t.state)),u=s.find(e=>"running"===e.state)??s[0];if(u){let n=await w(t,e.threadId,a.to);return await A(t,{key:r,threadId:e.threadId,workId:u.id,speaker:e.bot,text:a.text}),await t.update(h.threadTable).set({wrapped:!1,updatedAt:new Date}).where((0,d.eq)(h.threadTable.id,e.threadId)),{messageId:r,to:a.to,note:n?`${a.to} is waiting for the user's answer and reads this after it.`:`${a.to} is already working for you and reads this before its next step. Its one answer covers both.`}}let c=new Set(i.map(e=>e.bot).filter(e=>e!==T.ROOM_THURSDAY));a.to!==T.ROOM_THURSDAY&&!c.has(a.to)&&c.size>=o.BOT_RUN.participants&&(0,b.publicError)("This thread has reached its participant limit."),i.filter(e=>!H(e.state)).length>=o.BOT_RUN.queuedMessages&&(0,b.publicError)("This thread has reached its pending message limit.");let p=a.to!==T.ROOM_THURSDAY&&await w(t,e.threadId,a.to);return await t.insert(h.threadWorkTable).values({id:r,threadId:e.threadId,bot:a.to,caller:e.bot,parentId:e.id,state:a.to===T.ROOM_THURSDAY?"question"===a.kind?"external":"done":p?"waiting":"queued",result:a.to===T.ROOM_THURSDAY?a.text:null,options:[...new Set(a.options??[])]}),a.to===T.ROOM_THURSDAY?await t.insert(h.threadRelayTable).values({key:r,threadId:e.threadId,bot:e.bot,text:a.text,kind:a.kind,messageId:"question"===a.kind?r:null}):await A(t,{key:r,threadId:e.threadId,workId:r,speaker:e.bot,text:a.text}),await t.update(h.threadTable).set({wrapped:!1,updatedAt:new Date}).where((0,d.eq)(h.threadTable.id,e.threadId)),{messageId:r,to:a.to,...p?{note:`${a.to} is waiting for the user's answer and reads this after it.`}:{}}});return C(),r}async function v(e){let t=!1,a=await s.database.transaction(async a=>{let[r]=await a.select().from(h.threadTable).where((0,d.eq)(h.threadTable.id,e));if(!r||"running"!==r.status)return null;let n=await a.select().from(h.threadWorkTable).where((0,d.eq)(h.threadWorkTable.threadId,e)).orderBy(l.sql`${h.threadWorkTable}.rowid`),i=new Set(n.filter(e=>"external"===e.state).map(e=>e.caller));for(let e of n)"queued"===e.state&&i.has(e.bot)&&(await a.update(h.threadWorkTable).set({state:"waiting"}).where((0,d.eq)(h.threadWorkTable.id,e.id)),e.state="waiting",t=!0);let s=n.filter(e=>"running"===e.state);if(s.length>=o.BOT_RUN.concurrent)return null;let u=n.find(e=>"queued"===e.state&&!s.some(t=>t.bot===e.bot));if(!u)return null;if(r.turns>=o.BOT_RUN.turns)return await a.update(h.threadWorkTable).set({state:"paused"}).where((0,d.and)((0,d.eq)(h.threadWorkTable.threadId,e),(0,d.eq)(h.threadWorkTable.state,"queued"))),null;let[b]=await a.update(h.threadWorkTable).set({state:"running",generation:u.generation+1}).where((0,d.eq)(h.threadWorkTable.id,u.id)).returning();return await a.update(h.threadTable).set({turns:r.turns+1}).where((0,d.eq)(h.threadTable.id,e)),b});return(a||t)&&C(),a}async function x(e){let t=await s.database.transaction(async t=>{await W(t,e);let a=await t.select().from(h.threadDeliveryTable).where((0,d.and)((0,d.eq)(h.threadDeliveryTable.workId,e.id),(0,d.eq)(h.threadDeliveryTable.consumed,!1))).orderBy(h.threadDeliveryTable.id);for(let r of a){let a=O(r);await y(t,e.threadId,{bot:e.bot,parent:e.id,role:"user",content:a,hidden:!r.visible}),await t.update(h.threadDeliveryTable).set({consumed:!0}).where((0,d.eq)(h.threadDeliveryTable.id,r.id))}return a.map(O)});return t.length&&C(),t}function O(e){return e.visible?(0,c.tagSpeaker)(e.speaker===T.ROOM_USER?"user":"thursday",e.text):`${e.speaker}:
2
2
 
3
- ${e.text}`}async function D(e,t){await s.database.transaction(async a=>{await W(a,e);let r=await a.select().from(h.threadWorkTable).where((0,d.eq)(h.threadWorkTable.parentId,e.id)),n=await a.select({id:h.threadDeliveryTable.id}).from(h.threadDeliveryTable).where((0,d.and)((0,d.eq)(h.threadDeliveryTable.workId,e.id),(0,d.eq)(h.threadDeliveryTable.consumed,!1))).limit(1),l=await w(a,e.threadId,e.bot),i=n.length&&!l?"queued":n.length||r.some(e=>!H(e.state))?"waiting":"done";if(await a.update(h.threadWorkTable).set({state:i,result:t}).where((0,d.eq)(h.threadWorkTable.id,e.id)),"done"!==i)return;if(e.parentId){let[r]=await a.select().from(h.threadWorkTable).where((0,d.eq)(h.threadWorkTable.id,e.parentId)),[n]=t?[]:await a.select({id:h.threadDeliveryTable.id}).from(h.threadDeliveryTable).where((0,d.and)((0,d.eq)(h.threadDeliveryTable.workId,e.parentId),(0,d.eq)(h.threadDeliveryTable.speaker,e.bot),(0,d.eq)(h.threadDeliveryTable.consumed,!1))).limit(1);r&&"cancelled"!==r.state&&!n&&await A(a,{key:`return:${e.id}:${e.generation}`,threadId:e.threadId,workId:r.id,speaker:e.bot,text:t||"This turn ended without a message."})}let[o]=await a.select().from(h.threadTable).where((0,d.eq)(h.threadTable.id,e.threadId)),s=await a.select().from(h.threadWorkTable).where((0,d.eq)(h.threadWorkTable.threadId,e.threadId));o&&e.bot===o.bot&&!e.parentId&&s.every(e=>H(e.state))&&(await a.update(h.threadTable).set({status:t?"done":"waiting",outcome:t||"The room is idle. Send a message to continue.",pending:t?null:{options:[c.THREAD_CONTINUE]},wrapped:!0,endedAt:t?new Date:null,seen:!1,updatedAt:new Date}).where((0,d.eq)(h.threadTable.id,e.threadId)),t&&await a.insert(h.threadRelayTable).values({key:`report:${e.threadId}:${o.generation}`,threadId:e.threadId,bot:e.bot,text:t,kind:"report"}).onConflictDoNothing())}),C()}async function M(e){await s.database.transaction(async t=>{let[a]=await t.select().from(h.threadTable).where((0,d.eq)(h.threadTable.id,e));if(!a||"running"!==a.status)return;let r=await t.select().from(h.threadWorkTable).where((0,d.eq)(h.threadWorkTable.threadId,e));if(r.some(e=>"queued"===e.state||"running"===e.state))return;let n=r.find(e=>"external"===e.state);if(n)return void await t.update(h.threadTable).set({status:"waiting",outcome:n.result,pending:{options:n.options,messageId:n.id,bot:n.caller},updatedAt:new Date}).where((0,d.eq)(h.threadTable.id,e));if(r.some(e=>!H(e.state))||a.wrapped)return void await t.update(h.threadTable).set({status:"waiting",outcome:a.turns>=o.BOT_RUN.turns?"The room reached its automatic turn limit. Continue from the saved conversation.":"Work is paused. Continue from the saved conversation.",pending:{options:[c.THREAD_CONTINUE]},updatedAt:new Date}).where((0,d.eq)(h.threadTable.id,e));let l=crypto.randomUUID();await t.insert(h.threadWorkTable).values({id:l,threadId:e,bot:a.bot,caller:T.ROOM_THURSDAY,state:"queued"}),await A(t,{key:l,threadId:e,workId:l,speaker:"Thread activity",text:"The participants have finished their current turns. Bring together the results you received for Thursday, including anything still unresolved."}),await t.update(h.threadTable).set({wrapped:!0}).where((0,d.eq)(h.threadTable.id,e))}),C()}async function S(e,t){await s.database.transaction(async a=>{let r=await a.select().from(h.threadWorkTable).where((0,d.eq)(h.threadWorkTable.threadId,e));for(let n of r.filter(e=>"running"===e.state||"queued"===e.state))await a.update(h.threadWorkTable).set({state:"paused",generation:n.generation+1}).where((0,d.eq)(h.threadWorkTable.id,n.id)),await y(a,e,Y(n,t));await a.update(h.threadTable).set({status:"waiting",outcome:t,pending:{options:[c.THREAD_CONTINUE]},seen:!1,endedAt:null,updatedAt:new Date}).where((0,d.eq)(h.threadTable.id,e)),await a.insert(h.threadRelayTable).values({key:crypto.randomUUID(),threadId:e,bot:r.find(e=>!e.parentId)?.bot??"Bot",text:t,kind:"interrupted"})}),C()}async function _(e){await s.database.transaction(async t=>{await t.update(h.threadWorkTable).set({state:"queued"}).where((0,d.and)((0,d.eq)(h.threadWorkTable.threadId,e),(0,d.eq)(h.threadWorkTable.state,"paused"))),await t.update(h.threadTable).set({status:"running",generation:l.sql`${h.threadTable.generation} + 1`,turns:0,pending:null,outcome:null,endedAt:null,updatedAt:new Date}).where((0,d.eq)(h.threadTable.id,e)),await t.update(h.threadRelayTable).set({accepted:!0}).where((0,d.and)((0,d.eq)(h.threadRelayTable.threadId,e),(0,d.eq)(h.threadRelayTable.kind,"interrupted")))}),C()}async function E(e,t,a){let r=e.select({workId:h.threadDeliveryTable.workId}).from(h.threadDeliveryTable).where((0,d.and)((0,d.eq)(h.threadDeliveryTable.threadId,t),(0,d.eq)(h.threadDeliveryTable.consumed,!1)));await e.update(h.threadWorkTable).set({state:"queued"}).where((0,d.and)((0,d.eq)(h.threadWorkTable.threadId,t),(0,d.eq)(h.threadWorkTable.bot,a),(0,d.inArray)(h.threadWorkTable.state,["waiting","done"]),(0,d.inArray)(h.threadWorkTable.id,r)))}async function N(e,t,a,r,n,i=!0){let o=await s.database.transaction(async o=>{let[s]=await o.select().from(h.threadTable).where((0,d.eq)(h.threadTable.id,e));s||(0,b.publicError)("No such thread.");let u=await o.select().from(h.threadWorkTable).where((0,d.eq)(h.threadWorkTable.threadId,e)).orderBy(h.threadWorkTable.createdAt),c=u.filter(e=>"external"===e.state),p=n?c.find(e=>e.id===n)??(0,b.publicError)("That question is no longer waiting for an answer."):i?function(e,t){let a=t?e.filter(e=>e.caller===t):e;if(a.length<=1)return a[0];(0,b.publicError)(`Several questions are waiting for an answer: ${a.map(e=>`${e.caller} (replyTo ${e.id}): “${(e.result??"").slice(0,160)}”`).join("; ")}. Answer one of them by its replyTo.`)}(c,r):void 0,f=p?.caller??r??s.bot,y=p?u.find(e=>e.id===p.parentId):u.find(e=>e.bot===f&&"running"===e.state)??u.find(e=>e.bot===f&&!H(e.state)&&"external"!==e.state);if(p&&(await o.update(h.threadWorkTable).set({state:"done",result:t}).where((0,d.eq)(h.threadWorkTable.id,p.id)),await o.update(h.threadRelayTable).set({accepted:!0}).where((0,d.eq)(h.threadRelayTable.messageId,p.id))),!y){let t=null;if(f!==s.bot){let a=u.findLast(e=>e.bot===s.bot&&!e.parentId&&"cancelled"!==e.state);a?"done"===a.state&&await o.update(h.threadWorkTable).set({state:"waiting"}).where((0,d.eq)(h.threadWorkTable.id,a.id)):a=(await o.insert(h.threadWorkTable).values({id:crypto.randomUUID(),threadId:e,bot:s.bot,caller:T.ROOM_THURSDAY,state:"waiting"}).returning())[0],t=a.id}y=(await o.insert(h.threadWorkTable).values({id:crypto.randomUUID(),threadId:e,bot:f,caller:t?s.bot:T.ROOM_THURSDAY,parentId:t,state:"queued"}).returning())[0]}p&&await A(o,{key:`answer:${p.id}`,threadId:e,workId:y.id,speaker:"Thread activity",text:`The next message answers your question to the user: “${p.result??""}”`});let g=crypto.randomUUID();return await A(o,{key:g,threadId:e,workId:y.id,speaker:a,text:t,visible:!0}),p&&!await w(o,e,f)&&await E(o,e,f),await o.update(h.threadWorkTable).set({state:"queued"}).where((0,d.and)((0,d.eq)(h.threadWorkTable.threadId,e),(0,d.eq)(h.threadWorkTable.state,"paused"))),await o.update(h.threadTable).set({status:"running",generation:l.sql`${h.threadTable.generation} + 1`,turns:0,wrapped:!1,pending:null,outcome:null,endedAt:null,seen:!1,updatedAt:new Date}).where((0,d.eq)(h.threadTable.id,e)),await o.update(h.threadRelayTable).set({accepted:!0}).where((0,d.and)((0,d.eq)(h.threadRelayTable.threadId,e),(0,d.inArray)(h.threadRelayTable.kind,["interrupted","report"]))),{key:g,to:f,answered:p?{bot:p.caller,question:p.result??""}:null}});return C(),o}async function $(e){await s.database.transaction(async t=>{await t.update(h.threadWorkTable).set({state:"cancelled",generation:l.sql`${h.threadWorkTable.generation} + 1`}).where((0,d.and)((0,d.eq)(h.threadWorkTable.threadId,e),(0,d.inArray)(h.threadWorkTable.state,["queued","running","waiting","external","paused"]))),await t.update(h.threadRelayTable).set({accepted:!0}).where((0,d.eq)(h.threadRelayTable.threadId,e))}),C()}async function U(e,t){let[a]=await s.database.select({bot:h.threadTable.bot}).from(h.threadTable).where((0,d.eq)(h.threadTable.id,e)),r=await s.database.select().from(h.threadMessageTable).where((0,d.and)((0,d.eq)(h.threadMessageTable.threadId,e),(0,d.or)((0,d.eq)(h.threadMessageTable.bot,t),a?.bot===t?l.sql`${h.threadMessageTable.bot} is null AND ${h.threadMessageTable.parent} is null`:void 0))).orderBy(h.threadMessageTable.seq),n=r.findLastIndex(e=>e.compact);return(n>0?[r[0],...r.slice(n)]:r).map(e=>({role:e.role,content:e.content}))}async function B(e){e.length&&(await s.database.update(h.threadRelayTable).set({accepted:!0}).where((0,d.inArray)(h.threadRelayTable.id,e)),C())}e.s(["acceptRoomRelays",0,B,"appendRoomMessage",0,m,"cancelRoom",0,$,"claimRoomWork",0,v,"consumeRoomInbox",0,x,"finishRoomWork",0,D,"listParticipantTranscript",0,U,"listRoomReceipts",0,f,"listRoomWork",0,k,"lowerRoomContextBudget",0,I,"messageKey",0,L,"noteRoomBreak",0,g,"pauseRoom",0,S,"resumeRoom",0,_,"roomContextBudget",0,q,"sendRoomMessage",0,R,"settleRoom",0,M,"tellRoom",0,N]),a()}catch(e){a(e)}},!1),5509,e=>e.a(async(t,a)=>{try{var r=e.i(336763),d=e.i(396918),n=e.i(533102),l=e.i(232347),i=e.i(139886),o=e.i(333925),s=e.i(876393),h=e.i(220376),u=e.i(51083),b=e.i(64774),c=e.i(951056),T=e.i(811592),p=e.i(600690),w=t([s,T]);[s,T]=w.then?(await w)():w;let j=()=>l.appEvents.emit({type:"threads"}),J={id:h.threadTable.id,bot:h.threadTable.bot,label:h.threadTable.label,request:h.threadTable.request,status:h.threadTable.status,outcome:h.threadTable.outcome,pending:h.threadTable.pending,seen:h.threadTable.seen,routineId:h.threadTable.routineId,inputTokens:h.threadTable.inputTokens,outputTokens:h.threadTable.outputTokens,contextTokens:h.threadTable.contextTokens,contextBudget:h.threadTable.contextBudget,createdAt:h.threadTable.createdAt,updatedAt:h.threadTable.updatedAt};async function f(e){let{opening:t,...a}=e,r=await s.database.transaction(async e=>{let[r]=await e.insert(h.threadTable).values({id:crypto.randomUUID(),status:"running",...a}).returning();return await e.insert(h.threadMessageTable).values({threadId:r.id,seq:0,bot:null,parent:null,role:"user",content:t,compact:!1,note:!1}),await e.insert(h.threadWorkTable).values({id:crypto.randomUUID(),threadId:r.id,bot:r.bot,caller:p.ROOM_THURSDAY,state:"queued"}),r});return j(),r}async function y(e,t){await s.database.update(h.threadTable).set({...t,updatedAt:new Date}).where((0,r.eq)(h.threadTable.id,e)),j()}async function g(e){0!==e.length&&(await s.database.transaction(async t=>{await t.update(h.threadTable).set({seen:!0}).where((0,r.inArray)(h.threadTable.id,e)),await t.update(h.threadRelayTable).set({accepted:!0}).where((0,r.inArray)(h.threadRelayTable.threadId,e))}),j())}async function m(){let e=s.database.select({id:h.threadTable.id}).from(h.threadTable).where((0,r.inArray)(h.threadTable.status,["done","cancelled"])),t=await s.database.update(h.threadWorkTable).set({state:"cancelled"}).where((0,r.and)((0,r.notInArray)(h.threadWorkTable.state,["done","cancelled"]),(0,r.inArray)(h.threadWorkTable.threadId,e))).returning({id:h.threadWorkTable.id}),a=await s.database.update(h.threadTable).set({pending:null}).where((0,r.and)((0,r.inArray)(h.threadTable.status,["done","cancelled"]),(0,r.isNotNull)(h.threadTable.pending))).returning({id:h.threadTable.id});return(t.length||a.length)&&j(),{closed:t.length,cleared:a.length}}async function k(e,t,a=null){(t.input||t.output||null!==a)&&(await s.database.update(h.threadTable).set({inputTokens:n.sql`${h.threadTable.inputTokens} + ${t.input}`,outputTokens:n.sql`${h.threadTable.outputTokens} + ${t.output}`,...null===a?{}:{contextTokens:a.tokens,contextBudget:a.budget}}).where((0,r.eq)(h.threadTable.id,e)),j())}async function q(e){let[t]=await s.database.select(J).from(h.threadTable).where((0,r.eq)(h.threadTable.id,e));if(!t)return null;let[a]=await U([t]);return a??null}async function I(e){let[t]=await s.database.select().from(h.threadTable).where((0,r.eq)(h.threadTable.id,e));return t??null}async function W(){let[e,t,a,n]=await Promise.all([s.database.select(J).from(h.threadTable).where((0,r.inArray)(h.threadTable.status,["running","waiting"])).orderBy((0,d.desc)(h.threadTable.updatedAt)),s.database.select(J).from(h.threadTable).where((0,r.inArray)(h.threadTable.status,["done","cancelled"])).orderBy((0,d.desc)(h.threadTable.updatedAt)).limit(o.INBOX_FINISHED),s.database.select(J).from(h.threadTable).where((0,r.and)((0,r.inArray)(h.threadTable.status,["done","cancelled"]),(0,r.eq)(h.threadTable.seen,!1))),s.database.select(J).from(h.threadTable).where((0,r.inArray)(h.threadTable.id,s.database.select({id:h.threadRelayTable.threadId}).from(h.threadRelayTable).where((0,r.eq)(h.threadRelayTable.accepted,!1))))]),l=[...new Map([...e,...t,...a,...n].map(e=>[e.id,e])).values()].sort((e,t)=>t.updatedAt.getTime()-e.updatedAt.getTime());return U(l,e=>{let t;return t=e.status,"running"===t||"waiting"===t})}async function A(){let e=await s.database.select(J).from(h.threadTable).orderBy(n.sql`case when ${h.threadTable.status} in ('running', 'waiting') then 0 else 1 end`,(0,d.desc)(h.threadTable.updatedAt),(0,d.desc)(h.threadTable.id)).limit(o.THREAD_STATUS_LIMIT);return U(e)}async function R(e){return e.length?await s.database.select({id:h.threadTable.id,callId:h.threadTable.callId,label:h.threadTable.label,status:h.threadTable.status,outcome:h.threadTable.outcome}).from(h.threadTable).where((0,r.inArray)(h.threadTable.callId,e)).orderBy(h.threadTable.createdAt):[]}async function v(e,t){let a=(a,n)=>s.database.select({id:h.threadTable.id,owner:h.threadTable.bot,label:h.threadTable.label,status:h.threadTable.status,pending:h.threadTable.pending,updatedAt:h.threadTable.updatedAt}).from(h.threadTable).where((0,r.and)((0,r.inArray)(h.threadTable.status,a),t?(0,r.ne)(h.threadTable.id,t):void 0,(0,r.inArray)(h.threadTable.id,s.database.select({id:h.threadWorkTable.threadId}).from(h.threadWorkTable).where((0,r.eq)(h.threadWorkTable.bot,e))))).orderBy((0,d.desc)(h.threadTable.updatedAt)).limit(n),[n,l]=await Promise.all([a(["running","waiting"],o.BOT_WORK.open),a(["done","cancelled"],o.BOT_WORK.recent)]),i=[...n,...l].map(e=>e.id);if(!i.length)return{open:[],recent:[]};let u=await s.database.select({id:h.threadWorkTable.id,threadId:h.threadWorkTable.threadId,result:h.threadWorkTable.result}).from(h.threadWorkTable).where((0,r.and)((0,r.eq)(h.threadWorkTable.bot,e),(0,r.inArray)(h.threadWorkTable.threadId,i),(0,r.isNotNull)(h.threadWorkTable.result))).orderBy((0,d.desc)(h.threadWorkTable.createdAt)),b=new Map;for(let{id:e,threadId:t,result:a}of u)a?.trim()&&!b.has(t)&&b.set(t,{workId:e,words:a});let c=({pending:e,...t})=>{let a=b.get(t.id);return{...t,workId:a?.workId??null,asking:"waiting"===t.status&&!!e?.messageId,said:a?.words??null,cut:!!a&&a.words.replace(/\s+/g," ").trim().length>o.BOT_WORK.said}};return{open:n.map(c),recent:l.map(c)}}async function x(e,t){if(t.owner===e){let[e]=await s.database.select({request:h.threadTable.request}).from(h.threadTable).where((0,r.eq)(h.threadTable.id,t.id));return e?.request??""}return t.workId?(await s.database.select({text:h.threadDeliveryTable.text}).from(h.threadDeliveryTable).where((0,r.eq)(h.threadDeliveryTable.workId,t.workId)).orderBy(h.threadDeliveryTable.id)).map(e=>e.text).join("\n\n"):""}async function O(e){let t=await s.database.delete(h.threadTable).where((0,r.eq)(h.threadTable.id,e)).returning({id:h.threadTable.id});return t.length&&j(),t.length>0}async function D(){return(await s.database.select({id:h.threadTable.id}).from(h.threadTable).where((0,r.eq)(h.threadTable.status,"running"))).map(e=>e.id)}async function M(){return await s.database.select({id:h.threadTable.id,label:h.threadTable.label,status:h.threadTable.status,endedAt:h.threadTable.endedAt,updatedAt:h.threadTable.updatedAt}).from(h.threadTable)}function S(e){let t=new Set;for(let a of e)if(Array.isArray(a))for(let e of a){if("tool-call"!==e.type||e.toolName!==u.TOOL_NAMES.write_file)continue;let a=e.input?.path;"string"==typeof a&&a.trim()&&(t.delete(a.trim()),t.add(a.trim()))}return[...t]}async function _(e){let t=await s.database.select({content:h.threadMessageTable.content}).from(h.threadMessageTable).where((0,r.and)((0,r.eq)(h.threadMessageTable.threadId,e),(0,r.eq)(h.threadMessageTable.role,"assistant"))).orderBy(h.threadMessageTable.seq);return S(t.map(e=>e.content))}async function E(e){let t=e.trim();if(!t)return null;let a=await I(t);if(a)return a;let r=t.toLowerCase();return(await s.database.select().from(h.threadTable).orderBy((0,d.desc)(h.threadTable.updatedAt)).limit(o.THREAD_LABEL_REACH)).find(e=>e.label.toLowerCase()===r)??null}async function N(e,t,a){await s.database.insert(h.threadMessageTable).values({threadId:e,seq:t,...a,compact:a.compact??!1,note:a.note??!1}).onConflictDoUpdate({target:[h.threadMessageTable.threadId,h.threadMessageTable.seq],set:{role:a.role,content:a.content,compact:a.compact??!1,note:a.note??!1}}),j()}async function $(e,t){t.length&&(await s.database.delete(h.threadMessageTable).where((0,r.and)((0,r.eq)(h.threadMessageTable.threadId,e),(0,r.inArray)(h.threadMessageTable.seq,t))),j())}async function U(e,t=()=>!0){if(0===e.length)return[];let a=e.filter(t).map(e=>e.id),d=a.length?await s.database.select().from(h.threadMessageTable).where((0,r.inArray)(h.threadMessageTable.threadId,a)).orderBy(h.threadMessageTable.seq):[],n=e.map(e=>e.id),[l,i,o]=await Promise.all([s.database.select().from(h.threadWorkTable).where((0,r.inArray)(h.threadWorkTable.threadId,n)),s.database.select().from(h.threadDeliveryTable).where((0,r.and)((0,r.inArray)(h.threadDeliveryTable.threadId,n),(0,r.eq)(h.threadDeliveryTable.visible,!0))),s.database.select().from(h.threadRelayTable).where((0,r.and)((0,r.inArray)(h.threadRelayTable.threadId,n),(0,r.eq)(h.threadRelayTable.accepted,!1)))]),w=new Map(e.map(e=>[e.id,e.bot])),f=new Map(l.map(e=>[e.id,e.caller])),y=new Map;for(let e of d){let t=y.get(e.threadId)??[];t.push(...function(e,t){if(e.hidden)return[];let a={seq:e.seq,bot:e.bot,parent:e.parent,to:"user"===e.role?e.bot:t,at:e.createdAt},r=t=>`${e.id}-${t}`,d=e.content;if("user"===e.role){if(0===e.seq)return[];let t="string"==typeof d?d:d.flatMap(e=>"text"===e.type&&e.text?[e.text]:[]).join("\n").trim();if(!t)return[];if(e.compact)return[{...a,id:r(0),kind:"note",text:t}];if(e.note){let e=t.endsWith(p.RESUME_CHECK)?t.slice(0,-p.RESUME_CHECK.length).trimEnd():t;return[{...a,id:r(0),kind:"stop",text:e}]}return[{...a,id:r(0),kind:"user",text:(0,c.untagSpeaker)(t)}]}if("assistant"===e.role){let t=e.content;if("string"==typeof t)return t.trim()?[{...a,id:r(0),kind:"text",text:t.trim()}]:[];let d=[];return t.forEach((t,n)=>{if("text"===t.type){let e=t.text.trim();e&&d.push({...a,id:r(n),kind:"text",text:e});return}if("tool-result"===t.type)return void d.push(L(a,r(n),t));if("tool-call"!==t.type)return;let l=t.input??{};if(t.toolName===u.TOOL_NAMES.send_message){let i;d.push({...a,id:r(n),kind:"ask",callId:t.toolCallId,to:(i=String(l.to??"").trim()).toLowerCase()===p.ROOM_THURSDAY.toLowerCase()?p.ROOM_THURSDAY:i,text:String(l.text??""),question:"question"===l.kind,..."question"===l.kind&&e.bot?{questionId:(0,T.messageKey)(e.threadId,e.bot,t.toolCallId)}:{}})}else t.toolName===u.TOOL_NAMES.bash?d.push({...a,id:r(n),kind:"tool",callId:t.toolCallId,name:t.toolName,input:(0,b.clip)(String(l.command??""),120),note:B(l)}):d.push({...a,id:r(n),kind:"tool",callId:t.toolCallId,name:t.toolName,input:C(t.toolName,l),note:B(l),path:t.toolName===u.TOOL_NAMES.write_file?P(l,"path")??null:null})}),d}if("tool"===e.role){let t=[];return e.content.forEach((e,d)=>{"tool-result"!==e.type||(e.toolName!==u.TOOL_NAMES.send_message||"error-text"===e.output.type)&&t.push(L(a,r(d),e))}),t}return[]}(e,(e.parent?f.get(e.parent):null)??w.get(e.threadId)??"")),y.set(e.threadId,t)}return e.map(e=>{let t=l.filter(t=>t.threadId===e.id),a=["running","queued","paused","waiting","done","cancelled"],r=[...new Set(t.map(e=>e.bot))].filter(e=>e!==p.ROOM_THURSDAY).map(e=>({bot:e,state:t.filter(t=>t.bot===e).sort((e,t)=>a.indexOf(e.state)-a.indexOf(t.state))[0].state}));return{...function(e,t){let{pending:a,inputTokens:r,outputTokens:d,...n}=e;return{...n,ask:"waiting"===e.status?{question:e.outcome??"",options:a?.options??[],messageId:a?.messageId,bot:a?.bot}:null,tokens:{input:r,output:d},lines:t}}(e,y.get(e.id)??[]),room:{participants:r,questions:t.filter(e=>"external"===e.state).map(e=>({id:e.id,bot:e.caller,text:e.result??"",options:e.options})),deliveries:i.filter(t=>t.threadId===e.id).map(a=>({id:a.key,bot:t.find(e=>e.id===a.workId)?.bot??e.bot,text:a.text,delivered:a.consumed})),relays:o.filter(t=>t.threadId===e.id)}}})}let K=["query","command","prompt","url","path","pattern","request","question","title","name","thread","text"],P=(e,t)=>{let a=e[t];return"string"==typeof a&&a.trim()?a:null};function B(e){let t=P(e,"description");return t?(0,b.clip)(t,120):null}function C(e,t){let a=t??{};if("object"!=typeof a||Array.isArray(a))return(0,b.clip)(String(t??""),120);if(e===u.TOOL_NAMES.bash)return B(a)??(0,b.clip)(String(a.command??""),120);if(e===u.TOOL_NAMES.tool_call||e===u.TOOL_NAMES.tool_search){let e=Array.isArray(a.tools)?a.tools.map(String).join(", "):String(a.tool??""),t=a.args??null,r=t&&"object"==typeof t?String(a.server??"")===o.STUDIO_SERVER?H(t):JSON.stringify(t):"";return(0,b.clip)([String(a.server??""),e,r].filter(Boolean).join(" "),120)}let r=H(a);return r?(0,b.clip)(r,120):Object.keys(a).length?(0,b.clip)(JSON.stringify(a),120):""}function H(e){for(let t of K){let a=P(e,t);if(a)return a}for(let t of Object.keys(e)){let a=P(e,t);if(a)return a}return""}let F=/https?:\/\/\S+(?: · \d{4}-\d{2}-\d{2})?\s*$/,V=" — ";function L(e,t,a){let r=a.toolName===u.TOOL_NAMES.web_search,d=function e(t,a,r=!1){var d;if(null==t)return[];if("string"==typeof t)return Y(t,a,r);if("object"!=typeof t)return Y(String(t),a,r);switch(t.type){case"text":case"error-text":return Y(String(t.value??""),a,r);case"json":case"error-json":return e(t.value,a,r);case"execution-denied":return Y("Denied.",a,r);case"content":{if(!Array.isArray(t.value))return[];let e=[];for(let d of t.value){if("text"===d.type&&"string"==typeof d.text){e.push(...Y(d.text,a,r));continue}let t=function(e){let t=String(e.mediaType??"");if(!t.startsWith("image/"))return null;let a=e.data;return"string"==typeof a?`data:${t};base64,${a}`:a?.type==="url"&&a.url?a.url:a?.type==="data"&&"string"==typeof a.data?`data:${t};base64,${a.data}`:null}(d);t&&e.push({type:"image",src:t})}return e}}return"string"==typeof t.path&&String(t.mediaType??"").startsWith("image/")?[{type:"text",text:t.path},{type:"image",src:i.queryKey.file(t.path)}]:Array.isArray(t.sources)?t.sources.map(e=>String(e?.title??"")).filter(Boolean).slice(0,a).map(e=>({type:"text",text:e})):"string"==typeof t.stdout?Y(t.stdout||String(t.stderr??""),a,r):"string"==typeof t.answer?Y(t.answer,a,r):Y(r?(d=t,Array.isArray(d)?JSON.stringify(d,null,2):Object.entries(d).map(([e,t])=>"string"==typeof t&&t.includes("\n")?`${e}:
4
- ${t}`:`${e}: ${JSON.stringify(t,null,2)}`).join("\n")):JSON.stringify(t),a,r)}(a.output,r?o.FULL_RESULT_LINES:5),n=d.flatMap(e=>"text"===e.type?[e.text]:[]),l=r?n.filter(e=>F.test(e)):[],s=(l.length?l:n).slice(0,4);return{...e,id:t,kind:"tool-result",callId:a.toolCallId,name:a.toolName,results:s.map(e=>({type:"text",text:l.length?function(e){let t=e.replace(/\s+/g," ").trim(),a=F.exec(t);if(!a||t.length<=200)return(0,b.clip)(t,200);let r=a[0].trim(),d=t.slice(0,a.index).replace(/[\s—-]+$/,""),n=200-r.length-V.length;return d&&n>1?`${(0,b.clip)(d,n)}${V}${r}`:r}(e):(0,b.clip)(e,200)})),more:n.length>s.length||d.length>n.length||s.some(e=>e.length>200)}}function Y(e,t,a=!1){if(a){let a=e.split("\n"),r=a.slice(0,t);a.length>t&&r.push(`… ${a.length-t} more lines`);let d=r.join("\n").trimEnd();return d?[{type:"text",text:d}]:[]}return e.split("\n").map(e=>e.trim()).filter(Boolean).slice(0,t).map(e=>({type:"text",text:e}))}e.s(["addThreadUsage",0,k,"argumentLine",0,C,"closeEndedQuestions",0,m,"deleteMessages",0,$,"deleteThread",0,O,"findThread",0,I,"findThreadView",0,q,"insertThread",0,f,"listBotWork",0,v,"listCallJobs",0,R,"listInboxThreads",0,W,"listRunningThreadIds",0,D,"listThreadFolders",0,M,"listThreadOverview",0,A,"listWrittenPaths",0,_,"markSeen",0,g,"readBotAsk",0,x,"resolveThread",0,E,"updateThread",0,y,"upsertMessage",0,N,"writtenPathsIn",0,S]),a()}catch(e){a(e)}},!1),212389,e=>{"use strict";class t extends Error{message;constructor(e){super(e),this.message=e}}e.s(["isPublicError",0,e=>e instanceof t,"publicError",0,function(e){throw new t(e)}])},157406,e=>{"use strict";var t=e.i(533102),a=e.i(539774),r=e.i(763369);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)}])}];
3
+ ${e.text}`}async function D(e,t){await s.database.transaction(async a=>{await W(a,e);let r=await a.select().from(h.threadWorkTable).where((0,d.eq)(h.threadWorkTable.parentId,e.id)),n=await a.select({id:h.threadDeliveryTable.id}).from(h.threadDeliveryTable).where((0,d.and)((0,d.eq)(h.threadDeliveryTable.workId,e.id),(0,d.eq)(h.threadDeliveryTable.consumed,!1))).limit(1),l=await w(a,e.threadId,e.bot),i=n.length&&!l?"queued":n.length||r.some(e=>!H(e.state))?"waiting":"done";if(await a.update(h.threadWorkTable).set({state:i,result:t}).where((0,d.eq)(h.threadWorkTable.id,e.id)),"done"!==i)return;if(e.parentId){let[r]=await a.select().from(h.threadWorkTable).where((0,d.eq)(h.threadWorkTable.id,e.parentId)),[n]=t?[]:await a.select({id:h.threadDeliveryTable.id}).from(h.threadDeliveryTable).where((0,d.and)((0,d.eq)(h.threadDeliveryTable.workId,e.parentId),(0,d.eq)(h.threadDeliveryTable.speaker,e.bot),(0,d.eq)(h.threadDeliveryTable.consumed,!1))).limit(1);r&&"cancelled"!==r.state&&!n&&await A(a,{key:`return:${e.id}:${e.generation}`,threadId:e.threadId,workId:r.id,speaker:e.bot,text:t||"This turn ended without a message."})}let[o]=await a.select().from(h.threadTable).where((0,d.eq)(h.threadTable.id,e.threadId)),s=await a.select().from(h.threadWorkTable).where((0,d.eq)(h.threadWorkTable.threadId,e.threadId));o&&e.bot===o.bot&&!e.parentId&&s.every(e=>H(e.state))&&(await a.update(h.threadTable).set({status:t?"done":"waiting",outcome:t||"The room is idle. Send a message to continue.",pending:t?null:{options:[c.THREAD_CONTINUE]},wrapped:!0,endedAt:t?new Date:null,seen:!1,updatedAt:new Date}).where((0,d.eq)(h.threadTable.id,e.threadId)),t&&await a.insert(h.threadRelayTable).values({key:`report:${e.threadId}:${o.generation}`,threadId:e.threadId,bot:e.bot,text:t,kind:"report"}).onConflictDoNothing())}),C()}async function M(e){await s.database.transaction(async t=>{let[a]=await t.select().from(h.threadTable).where((0,d.eq)(h.threadTable.id,e));if(!a||"running"!==a.status)return;let r=await t.select().from(h.threadWorkTable).where((0,d.eq)(h.threadWorkTable.threadId,e));if(r.some(e=>"queued"===e.state||"running"===e.state))return;let n=r.find(e=>"external"===e.state);if(n)return void await t.update(h.threadTable).set({status:"waiting",outcome:n.result,pending:{options:n.options,messageId:n.id,bot:n.caller},updatedAt:new Date}).where((0,d.eq)(h.threadTable.id,e));if(r.some(e=>!H(e.state))||a.wrapped)return void await t.update(h.threadTable).set({status:"waiting",outcome:a.turns>=o.BOT_RUN.turns?"The room reached its automatic turn limit. Continue from the saved conversation.":"Work is paused. Continue from the saved conversation.",pending:{options:[c.THREAD_CONTINUE]},updatedAt:new Date}).where((0,d.eq)(h.threadTable.id,e));let l=crypto.randomUUID();await t.insert(h.threadWorkTable).values({id:l,threadId:e,bot:a.bot,caller:T.ROOM_THURSDAY,state:"queued"}),await A(t,{key:l,threadId:e,workId:l,speaker:"Thread activity",text:"The participants have finished their current turns. Bring together the results you received for Thursday, including anything still unresolved."}),await t.update(h.threadTable).set({wrapped:!0}).where((0,d.eq)(h.threadTable.id,e))}),C()}async function S(e,t){await s.database.transaction(async a=>{let r=await a.select().from(h.threadWorkTable).where((0,d.eq)(h.threadWorkTable.threadId,e));for(let n of r.filter(e=>"running"===e.state||"queued"===e.state))await a.update(h.threadWorkTable).set({state:"paused",generation:n.generation+1}).where((0,d.eq)(h.threadWorkTable.id,n.id)),await y(a,e,Y(n,t));await a.update(h.threadTable).set({status:"waiting",outcome:t,pending:{options:[c.THREAD_CONTINUE]},seen:!1,endedAt:null,updatedAt:new Date}).where((0,d.eq)(h.threadTable.id,e)),await a.insert(h.threadRelayTable).values({key:crypto.randomUUID(),threadId:e,bot:r.find(e=>!e.parentId)?.bot??"Bot",text:t,kind:"interrupted"})}),C()}async function _(e){await s.database.transaction(async t=>{await t.update(h.threadWorkTable).set({state:"queued"}).where((0,d.and)((0,d.eq)(h.threadWorkTable.threadId,e),(0,d.eq)(h.threadWorkTable.state,"paused"))),await t.update(h.threadTable).set({status:"running",generation:l.sql`${h.threadTable.generation} + 1`,turns:0,pending:null,outcome:null,endedAt:null,updatedAt:new Date}).where((0,d.eq)(h.threadTable.id,e)),await t.update(h.threadRelayTable).set({accepted:!0}).where((0,d.and)((0,d.eq)(h.threadRelayTable.threadId,e),(0,d.eq)(h.threadRelayTable.kind,"interrupted")))}),C()}async function E(e,t,a){let r=e.select({workId:h.threadDeliveryTable.workId}).from(h.threadDeliveryTable).where((0,d.and)((0,d.eq)(h.threadDeliveryTable.threadId,t),(0,d.eq)(h.threadDeliveryTable.consumed,!1)));await e.update(h.threadWorkTable).set({state:"queued"}).where((0,d.and)((0,d.eq)(h.threadWorkTable.threadId,t),(0,d.eq)(h.threadWorkTable.bot,a),(0,d.inArray)(h.threadWorkTable.state,["waiting","done"]),(0,d.inArray)(h.threadWorkTable.id,r)))}async function $(e,t,a,r,n,i=!0){let o=await s.database.transaction(async o=>{let[s]=await o.select().from(h.threadTable).where((0,d.eq)(h.threadTable.id,e));s||(0,b.publicError)("No such thread.");let u=await o.select().from(h.threadWorkTable).where((0,d.eq)(h.threadWorkTable.threadId,e)).orderBy(h.threadWorkTable.createdAt),c=u.filter(e=>"external"===e.state),p=n?c.find(e=>e.id===n)??(0,b.publicError)("That question is no longer waiting for an answer."):i?function(e,t){let a=t?e.filter(e=>e.caller===t):e;if(a.length<=1)return a[0];(0,b.publicError)(`Several questions are waiting for an answer: ${a.map(e=>`${e.caller} (replyTo ${e.id}): “${(e.result??"").slice(0,160)}”`).join("; ")}. Answer one of them by its replyTo.`)}(c,r):void 0,f=p?.caller??r??s.bot,y=p?u.find(e=>e.id===p.parentId):u.find(e=>e.bot===f&&"running"===e.state)??u.find(e=>e.bot===f&&!H(e.state)&&"external"!==e.state);if(p&&(await o.update(h.threadWorkTable).set({state:"done",result:t}).where((0,d.eq)(h.threadWorkTable.id,p.id)),await o.update(h.threadRelayTable).set({accepted:!0}).where((0,d.eq)(h.threadRelayTable.messageId,p.id))),!y){let t=null;if(f!==s.bot){let a=u.findLast(e=>e.bot===s.bot&&!e.parentId&&"cancelled"!==e.state);a?"done"===a.state&&await o.update(h.threadWorkTable).set({state:"waiting"}).where((0,d.eq)(h.threadWorkTable.id,a.id)):a=(await o.insert(h.threadWorkTable).values({id:crypto.randomUUID(),threadId:e,bot:s.bot,caller:T.ROOM_THURSDAY,state:"waiting"}).returning())[0],t=a.id}y=(await o.insert(h.threadWorkTable).values({id:crypto.randomUUID(),threadId:e,bot:f,caller:t?s.bot:T.ROOM_THURSDAY,parentId:t,state:"queued"}).returning())[0]}p&&await A(o,{key:`answer:${p.id}`,threadId:e,workId:y.id,speaker:"Thread activity",text:`The next message answers your question to the user: “${p.result??""}”`});let g=crypto.randomUUID();return await A(o,{key:g,threadId:e,workId:y.id,speaker:a,text:t,visible:!0}),p&&!await w(o,e,f)&&await E(o,e,f),await o.update(h.threadWorkTable).set({state:"queued"}).where((0,d.and)((0,d.eq)(h.threadWorkTable.threadId,e),(0,d.eq)(h.threadWorkTable.state,"paused"))),await o.update(h.threadTable).set({status:"running",generation:l.sql`${h.threadTable.generation} + 1`,turns:0,wrapped:!1,pending:null,outcome:null,endedAt:null,seen:!1,updatedAt:new Date}).where((0,d.eq)(h.threadTable.id,e)),await o.update(h.threadRelayTable).set({accepted:!0}).where((0,d.and)((0,d.eq)(h.threadRelayTable.threadId,e),(0,d.inArray)(h.threadRelayTable.kind,["interrupted","report"]))),{key:g,to:f,answered:p?{bot:p.caller,question:p.result??""}:null}});return C(),o}async function N(e){await s.database.transaction(async t=>{await t.update(h.threadWorkTable).set({state:"cancelled",generation:l.sql`${h.threadWorkTable.generation} + 1`}).where((0,d.and)((0,d.eq)(h.threadWorkTable.threadId,e),(0,d.inArray)(h.threadWorkTable.state,["queued","running","waiting","external","paused"]))),await t.update(h.threadRelayTable).set({accepted:!0}).where((0,d.eq)(h.threadRelayTable.threadId,e))}),C()}async function U(e,t){let[a]=await s.database.select({bot:h.threadTable.bot}).from(h.threadTable).where((0,d.eq)(h.threadTable.id,e)),r=await s.database.select().from(h.threadMessageTable).where((0,d.and)((0,d.eq)(h.threadMessageTable.threadId,e),(0,d.or)((0,d.eq)(h.threadMessageTable.bot,t),a?.bot===t?l.sql`${h.threadMessageTable.bot} is null AND ${h.threadMessageTable.parent} is null`:void 0))).orderBy(h.threadMessageTable.seq),n=r.findLastIndex(e=>e.compact);return(n>0?[r[0],...r.slice(n)]:r).map(e=>({role:e.role,content:e.content}))}async function B(e){e.length&&(await s.database.update(h.threadRelayTable).set({accepted:!0}).where((0,d.inArray)(h.threadRelayTable.id,e)),C())}e.s(["acceptRoomRelays",0,B,"appendRoomMessage",0,m,"cancelRoom",0,N,"claimRoomWork",0,v,"consumeRoomInbox",0,x,"finishRoomWork",0,D,"listParticipantTranscript",0,U,"listRoomReceipts",0,f,"listRoomWork",0,k,"lowerRoomContextBudget",0,I,"messageKey",0,L,"noteRoomBreak",0,g,"pauseRoom",0,S,"resumeRoom",0,_,"roomContextBudget",0,q,"sendRoomMessage",0,R,"settleRoom",0,M,"tellRoom",0,$]),a()}catch(e){a(e)}},!1),5509,e=>e.a(async(t,a)=>{try{var r=e.i(336763),d=e.i(396918),n=e.i(533102),l=e.i(232347),i=e.i(139886),o=e.i(333925),s=e.i(876393),h=e.i(220376),u=e.i(51083),b=e.i(64774),c=e.i(951056),T=e.i(811592),p=e.i(600690),w=t([s,T]);[s,T]=w.then?(await w)():w;let j=()=>l.appEvents.emit({type:"threads"}),J={id:h.threadTable.id,bot:h.threadTable.bot,label:h.threadTable.label,request:h.threadTable.request,status:h.threadTable.status,outcome:h.threadTable.outcome,pending:h.threadTable.pending,seen:h.threadTable.seen,routineId:h.threadTable.routineId,inputTokens:h.threadTable.inputTokens,outputTokens:h.threadTable.outputTokens,contextTokens:h.threadTable.contextTokens,contextBudget:h.threadTable.contextBudget,createdAt:h.threadTable.createdAt,updatedAt:h.threadTable.updatedAt};async function f(e){let{opening:t,...a}=e,r=await s.database.transaction(async e=>{let[r]=await e.insert(h.threadTable).values({id:crypto.randomUUID(),status:"running",...a}).returning();return await e.insert(h.threadMessageTable).values({threadId:r.id,seq:0,bot:null,parent:null,role:"user",content:t,compact:!1,note:!1}),await e.insert(h.threadWorkTable).values({id:crypto.randomUUID(),threadId:r.id,bot:r.bot,caller:p.ROOM_THURSDAY,state:"queued"}),r});return j(),r}async function y(e,t){await s.database.update(h.threadTable).set({...t,updatedAt:new Date}).where((0,r.eq)(h.threadTable.id,e)),j()}async function g(e){0!==e.length&&(await s.database.transaction(async t=>{await t.update(h.threadTable).set({seen:!0}).where((0,r.inArray)(h.threadTable.id,e)),await t.update(h.threadRelayTable).set({accepted:!0}).where((0,r.inArray)(h.threadRelayTable.threadId,e))}),j())}async function m(){let e=s.database.select({id:h.threadTable.id}).from(h.threadTable).where((0,r.inArray)(h.threadTable.status,["done","cancelled"])),t=await s.database.update(h.threadWorkTable).set({state:"cancelled"}).where((0,r.and)((0,r.notInArray)(h.threadWorkTable.state,["done","cancelled"]),(0,r.inArray)(h.threadWorkTable.threadId,e))).returning({id:h.threadWorkTable.id}),a=await s.database.update(h.threadTable).set({pending:null}).where((0,r.and)((0,r.inArray)(h.threadTable.status,["done","cancelled"]),(0,r.isNotNull)(h.threadTable.pending))).returning({id:h.threadTable.id});return(t.length||a.length)&&j(),{closed:t.length,cleared:a.length}}async function k(e,t,a=null){(t.input||t.output||null!==a)&&(await s.database.update(h.threadTable).set({inputTokens:n.sql`${h.threadTable.inputTokens} + ${t.input}`,outputTokens:n.sql`${h.threadTable.outputTokens} + ${t.output}`,cacheReadTokens:n.sql`${h.threadTable.cacheReadTokens} + ${t.cacheRead}`,cacheWriteTokens:n.sql`${h.threadTable.cacheWriteTokens} + ${t.cacheWrite}`,...null===a?{}:{contextTokens:a.tokens,contextBudget:a.budget}}).where((0,r.eq)(h.threadTable.id,e)),j())}async function q(e){let[t]=await s.database.select(J).from(h.threadTable).where((0,r.eq)(h.threadTable.id,e));if(!t)return null;let[a]=await U([t]);return a??null}async function I(e){let[t]=await s.database.select().from(h.threadTable).where((0,r.eq)(h.threadTable.id,e));return t??null}async function W(){let[e,t,a,n]=await Promise.all([s.database.select(J).from(h.threadTable).where((0,r.inArray)(h.threadTable.status,["running","waiting"])).orderBy((0,d.desc)(h.threadTable.updatedAt)),s.database.select(J).from(h.threadTable).where((0,r.inArray)(h.threadTable.status,["done","cancelled"])).orderBy((0,d.desc)(h.threadTable.updatedAt)).limit(o.INBOX_FINISHED),s.database.select(J).from(h.threadTable).where((0,r.and)((0,r.inArray)(h.threadTable.status,["done","cancelled"]),(0,r.eq)(h.threadTable.seen,!1))),s.database.select(J).from(h.threadTable).where((0,r.inArray)(h.threadTable.id,s.database.select({id:h.threadRelayTable.threadId}).from(h.threadRelayTable).where((0,r.eq)(h.threadRelayTable.accepted,!1))))]),l=[...new Map([...e,...t,...a,...n].map(e=>[e.id,e])).values()].sort((e,t)=>t.updatedAt.getTime()-e.updatedAt.getTime());return U(l,e=>{let t;return t=e.status,"running"===t||"waiting"===t})}async function A(){let e=await s.database.select(J).from(h.threadTable).orderBy(n.sql`case when ${h.threadTable.status} in ('running', 'waiting') then 0 else 1 end`,(0,d.desc)(h.threadTable.updatedAt),(0,d.desc)(h.threadTable.id)).limit(o.THREAD_STATUS_LIMIT);return U(e)}async function R(e){return e.length?await s.database.select({id:h.threadTable.id,callId:h.threadTable.callId,label:h.threadTable.label,status:h.threadTable.status,outcome:h.threadTable.outcome}).from(h.threadTable).where((0,r.inArray)(h.threadTable.callId,e)).orderBy(h.threadTable.createdAt):[]}async function v(e,t){let a=(a,n)=>s.database.select({id:h.threadTable.id,owner:h.threadTable.bot,label:h.threadTable.label,status:h.threadTable.status,pending:h.threadTable.pending,updatedAt:h.threadTable.updatedAt}).from(h.threadTable).where((0,r.and)((0,r.inArray)(h.threadTable.status,a),t?(0,r.ne)(h.threadTable.id,t):void 0,(0,r.inArray)(h.threadTable.id,s.database.select({id:h.threadWorkTable.threadId}).from(h.threadWorkTable).where((0,r.eq)(h.threadWorkTable.bot,e))))).orderBy((0,d.desc)(h.threadTable.updatedAt)).limit(n),[n,l]=await Promise.all([a(["running","waiting"],o.BOT_WORK.open),a(["done","cancelled"],o.BOT_WORK.recent)]),i=[...n,...l].map(e=>e.id);if(!i.length)return{open:[],recent:[]};let u=await s.database.select({id:h.threadWorkTable.id,threadId:h.threadWorkTable.threadId,result:h.threadWorkTable.result}).from(h.threadWorkTable).where((0,r.and)((0,r.eq)(h.threadWorkTable.bot,e),(0,r.inArray)(h.threadWorkTable.threadId,i),(0,r.isNotNull)(h.threadWorkTable.result))).orderBy((0,d.desc)(h.threadWorkTable.createdAt)),b=new Map;for(let{id:e,threadId:t,result:a}of u)a?.trim()&&!b.has(t)&&b.set(t,{workId:e,words:a});let c=({pending:e,...t})=>{let a=b.get(t.id);return{...t,workId:a?.workId??null,asking:"waiting"===t.status&&!!e?.messageId,said:a?.words??null,cut:!!a&&a.words.replace(/\s+/g," ").trim().length>o.BOT_WORK.said}};return{open:n.map(c),recent:l.map(c)}}async function x(e,t){if(t.owner===e){let[e]=await s.database.select({request:h.threadTable.request}).from(h.threadTable).where((0,r.eq)(h.threadTable.id,t.id));return e?.request??""}return t.workId?(await s.database.select({text:h.threadDeliveryTable.text}).from(h.threadDeliveryTable).where((0,r.eq)(h.threadDeliveryTable.workId,t.workId)).orderBy(h.threadDeliveryTable.id)).map(e=>e.text).join("\n\n"):""}async function O(e){let t=await s.database.delete(h.threadTable).where((0,r.eq)(h.threadTable.id,e)).returning({id:h.threadTable.id});return t.length&&j(),t.length>0}async function D(){return(await s.database.select({id:h.threadTable.id}).from(h.threadTable).where((0,r.eq)(h.threadTable.status,"running"))).map(e=>e.id)}async function M(){return await s.database.select({id:h.threadTable.id,label:h.threadTable.label,status:h.threadTable.status,endedAt:h.threadTable.endedAt,updatedAt:h.threadTable.updatedAt}).from(h.threadTable)}function S(e){let t=new Set;for(let a of e)if(Array.isArray(a))for(let e of a){if("tool-call"!==e.type||e.toolName!==u.TOOL_NAMES.write_file)continue;let a=e.input?.path;"string"==typeof a&&a.trim()&&(t.delete(a.trim()),t.add(a.trim()))}return[...t]}async function _(e){let t=await s.database.select({content:h.threadMessageTable.content}).from(h.threadMessageTable).where((0,r.and)((0,r.eq)(h.threadMessageTable.threadId,e),(0,r.eq)(h.threadMessageTable.role,"assistant"))).orderBy(h.threadMessageTable.seq);return S(t.map(e=>e.content))}async function E(e){let t=e.trim();if(!t)return null;let a=await I(t);if(a)return a;let r=t.toLowerCase();return(await s.database.select().from(h.threadTable).orderBy((0,d.desc)(h.threadTable.updatedAt)).limit(o.THREAD_LABEL_REACH)).find(e=>e.label.toLowerCase()===r)??null}async function $(e,t,a){await s.database.insert(h.threadMessageTable).values({threadId:e,seq:t,...a,compact:a.compact??!1,note:a.note??!1}).onConflictDoUpdate({target:[h.threadMessageTable.threadId,h.threadMessageTable.seq],set:{role:a.role,content:a.content,compact:a.compact??!1,note:a.note??!1}}),j()}async function N(e,t){t.length&&(await s.database.delete(h.threadMessageTable).where((0,r.and)((0,r.eq)(h.threadMessageTable.threadId,e),(0,r.inArray)(h.threadMessageTable.seq,t))),j())}async function U(e,t=()=>!0){if(0===e.length)return[];let a=e.filter(t).map(e=>e.id),d=a.length?await s.database.select().from(h.threadMessageTable).where((0,r.inArray)(h.threadMessageTable.threadId,a)).orderBy(h.threadMessageTable.seq):[],n=e.map(e=>e.id),[l,i,o]=await Promise.all([s.database.select().from(h.threadWorkTable).where((0,r.inArray)(h.threadWorkTable.threadId,n)),s.database.select().from(h.threadDeliveryTable).where((0,r.and)((0,r.inArray)(h.threadDeliveryTable.threadId,n),(0,r.eq)(h.threadDeliveryTable.visible,!0))),s.database.select().from(h.threadRelayTable).where((0,r.and)((0,r.inArray)(h.threadRelayTable.threadId,n),(0,r.eq)(h.threadRelayTable.accepted,!1)))]),w=new Map(e.map(e=>[e.id,e.bot])),f=new Map(l.map(e=>[e.id,e.caller])),y=new Map;for(let e of d){let t=y.get(e.threadId)??[];t.push(...function(e,t){if(e.hidden)return[];let a={seq:e.seq,bot:e.bot,parent:e.parent,to:"user"===e.role?e.bot:t,at:e.createdAt},r=t=>`${e.id}-${t}`,d=e.content;if("user"===e.role){if(0===e.seq)return[];let t="string"==typeof d?d:d.flatMap(e=>"text"===e.type&&e.text?[e.text]:[]).join("\n").trim();if(!t)return[];if(e.compact)return[{...a,id:r(0),kind:"note",text:t}];if(e.note){let e=t.endsWith(p.RESUME_CHECK)?t.slice(0,-p.RESUME_CHECK.length).trimEnd():t;return[{...a,id:r(0),kind:"stop",text:e}]}return[{...a,id:r(0),kind:"user",text:(0,c.untagSpeaker)(t)}]}if("assistant"===e.role){let t=e.content;if("string"==typeof t)return t.trim()?[{...a,id:r(0),kind:"text",text:t.trim()}]:[];let d=[];return t.forEach((t,n)=>{if("text"===t.type){let e=t.text.trim();e&&d.push({...a,id:r(n),kind:"text",text:e});return}if("tool-result"===t.type)return void d.push(L(a,r(n),t));if("tool-call"!==t.type)return;let l=t.input??{};if(t.toolName===u.TOOL_NAMES.send_message){let i;d.push({...a,id:r(n),kind:"ask",callId:t.toolCallId,to:(i=String(l.to??"").trim()).toLowerCase()===p.ROOM_THURSDAY.toLowerCase()?p.ROOM_THURSDAY:i,text:String(l.text??""),question:"question"===l.kind,..."question"===l.kind&&e.bot?{questionId:(0,T.messageKey)(e.threadId,e.bot,t.toolCallId)}:{}})}else t.toolName===u.TOOL_NAMES.bash?d.push({...a,id:r(n),kind:"tool",callId:t.toolCallId,name:t.toolName,input:(0,b.clip)(String(l.command??""),120),note:B(l)}):d.push({...a,id:r(n),kind:"tool",callId:t.toolCallId,name:t.toolName,input:C(t.toolName,l),note:B(l),path:t.toolName===u.TOOL_NAMES.write_file?P(l,"path")??null:null})}),d}if("tool"===e.role){let t=[];return e.content.forEach((e,d)=>{"tool-result"!==e.type||(e.toolName!==u.TOOL_NAMES.send_message||"error-text"===e.output.type)&&t.push(L(a,r(d),e))}),t}return[]}(e,(e.parent?f.get(e.parent):null)??w.get(e.threadId)??"")),y.set(e.threadId,t)}return e.map(e=>{let t=l.filter(t=>t.threadId===e.id),a=["running","queued","paused","waiting","done","cancelled"],r=[...new Set(t.map(e=>e.bot))].filter(e=>e!==p.ROOM_THURSDAY).map(e=>({bot:e,state:t.filter(t=>t.bot===e).sort((e,t)=>a.indexOf(e.state)-a.indexOf(t.state))[0].state}));return{...function(e,t){let{pending:a,inputTokens:r,outputTokens:d,...n}=e;return{...n,ask:"waiting"===e.status?{question:e.outcome??"",options:a?.options??[],messageId:a?.messageId,bot:a?.bot}:null,tokens:{input:r,output:d},lines:t}}(e,y.get(e.id)??[]),room:{participants:r,questions:t.filter(e=>"external"===e.state).map(e=>({id:e.id,bot:e.caller,text:e.result??"",options:e.options})),deliveries:i.filter(t=>t.threadId===e.id).map(a=>({id:a.key,bot:t.find(e=>e.id===a.workId)?.bot??e.bot,text:a.text,delivered:a.consumed})),relays:o.filter(t=>t.threadId===e.id)}}})}let K=["query","command","prompt","url","path","pattern","request","question","title","name","thread","text"],P=(e,t)=>{let a=e[t];return"string"==typeof a&&a.trim()?a:null};function B(e){let t=P(e,"description");return t?(0,b.clip)(t,120):null}function C(e,t){let a=t??{};if("object"!=typeof a||Array.isArray(a))return(0,b.clip)(String(t??""),120);if(e===u.TOOL_NAMES.bash)return B(a)??(0,b.clip)(String(a.command??""),120);if(e===u.TOOL_NAMES.tool_call||e===u.TOOL_NAMES.tool_search){let e=Array.isArray(a.tools)?a.tools.map(String).join(", "):String(a.tool??""),t=a.args??null,r=t&&"object"==typeof t?String(a.server??"")===o.STUDIO_SERVER?H(t):JSON.stringify(t):"";return(0,b.clip)([String(a.server??""),e,r].filter(Boolean).join(" "),120)}let r=H(a);return r?(0,b.clip)(r,120):Object.keys(a).length?(0,b.clip)(JSON.stringify(a),120):""}function H(e){for(let t of K){let a=P(e,t);if(a)return a}for(let t of Object.keys(e)){let a=P(e,t);if(a)return a}return""}let F=/https?:\/\/\S+(?: · \d{4}-\d{2}-\d{2})?\s*$/,V=" — ";function L(e,t,a){let r=a.toolName===u.TOOL_NAMES.web_search,d=function e(t,a,r=!1){var d;if(null==t)return[];if("string"==typeof t)return Y(t,a,r);if("object"!=typeof t)return Y(String(t),a,r);switch(t.type){case"text":case"error-text":return Y(String(t.value??""),a,r);case"json":case"error-json":return e(t.value,a,r);case"execution-denied":return Y("Denied.",a,r);case"content":{if(!Array.isArray(t.value))return[];let e=[];for(let d of t.value){if("text"===d.type&&"string"==typeof d.text){e.push(...Y(d.text,a,r));continue}let t=function(e){let t=String(e.mediaType??"");if(!t.startsWith("image/"))return null;let a=e.data;return"string"==typeof a?`data:${t};base64,${a}`:a?.type==="url"&&a.url?a.url:a?.type==="data"&&"string"==typeof a.data?`data:${t};base64,${a.data}`:null}(d);t&&e.push({type:"image",src:t})}return e}}return"string"==typeof t.path&&String(t.mediaType??"").startsWith("image/")?[{type:"text",text:t.path},{type:"image",src:i.queryKey.file(t.path)}]:Array.isArray(t.sources)?t.sources.map(e=>String(e?.title??"")).filter(Boolean).slice(0,a).map(e=>({type:"text",text:e})):"string"==typeof t.stdout?Y(t.stdout||String(t.stderr??""),a,r):"string"==typeof t.answer?Y(t.answer,a,r):Y(r?(d=t,Array.isArray(d)?JSON.stringify(d,null,2):Object.entries(d).map(([e,t])=>"string"==typeof t&&t.includes("\n")?`${e}:
4
+ ${t}`:`${e}: ${JSON.stringify(t,null,2)}`).join("\n")):JSON.stringify(t),a,r)}(a.output,r?o.FULL_RESULT_LINES:5),n=d.flatMap(e=>"text"===e.type?[e.text]:[]),l=r?n.filter(e=>F.test(e)):[],s=(l.length?l:n).slice(0,4);return{...e,id:t,kind:"tool-result",callId:a.toolCallId,name:a.toolName,results:s.map(e=>({type:"text",text:l.length?function(e){let t=e.replace(/\s+/g," ").trim(),a=F.exec(t);if(!a||t.length<=200)return(0,b.clip)(t,200);let r=a[0].trim(),d=t.slice(0,a.index).replace(/[\s—-]+$/,""),n=200-r.length-V.length;return d&&n>1?`${(0,b.clip)(d,n)}${V}${r}`:r}(e):(0,b.clip)(e,200)})),more:n.length>s.length||d.length>n.length||s.some(e=>e.length>200)}}function Y(e,t,a=!1){if(a){let a=e.split("\n"),r=a.slice(0,t);a.length>t&&r.push(`… ${a.length-t} more lines`);let d=r.join("\n").trimEnd();return d?[{type:"text",text:d}]:[]}return e.split("\n").map(e=>e.trim()).filter(Boolean).slice(0,t).map(e=>({type:"text",text:e}))}e.s(["addThreadUsage",0,k,"argumentLine",0,C,"closeEndedQuestions",0,m,"deleteMessages",0,N,"deleteThread",0,O,"findThread",0,I,"findThreadView",0,q,"insertThread",0,f,"listBotWork",0,v,"listCallJobs",0,R,"listInboxThreads",0,W,"listRunningThreadIds",0,D,"listThreadFolders",0,M,"listThreadOverview",0,A,"listWrittenPaths",0,_,"markSeen",0,g,"readBotAsk",0,x,"resolveThread",0,E,"updateThread",0,y,"upsertMessage",0,$,"writtenPathsIn",0,S]),a()}catch(e){a(e)}},!1),212389,e=>{"use strict";class t extends Error{message;constructor(e){super(e),this.message=e}}e.s(["isPublicError",0,e=>e instanceof t,"publicError",0,function(e){throw new t(e)}])},157406,e=>{"use strict";var t=e.i(533102),a=e.i(539774),r=e.i(763369);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)}])}];
5
5
 
6
6
  //# sourceMappingURL=_15negpy._.js.map
@@ -1,4 +1,4 @@
1
- module.exports=[528790,t=>t.a(async(i,r)=>{try{let f,p;var n,a=t.i(902157),o=t.i(750227),s=t.i(418520),l=t.i(219756),u=t.i(687388),d=t.i(41444),c=i([s,l]);[s,l]=c.then?(await c)():c,(0,a.mkdirSync)((0,o.dirname)(u.DB_PATH),{recursive:!0});let h=globalThis.__dbClient??=(n=((f=(0,s.createClient)({url:u.DB_FILE_NAME,timeout:5e3})).execute("PRAGMA journal_mode = WAL").finally(m),f),p=(0,d.PromiseChain)(),{get closed(){return n.closed},protocol:n.protocol,close:()=>n.close(),sync:()=>n.sync(),reconnect:()=>n.reconnect(),execute:(...t)=>p(()=>n.execute(...t)),batch:(...t)=>p(()=>n.batch(...t)),executeMultiple:(...t)=>p(()=>n.executeMultiple(...t)),migrate:(...t)=>p(()=>n.migrate(...t)),async transaction(...t){let i,r=await new Promise(t=>{let i,r=new Promise(t=>{i=t});p(async()=>{t(i),await r})});try{i=await n.transaction(...t)}catch(t){throw r(),t}let a=!1,o=()=>{a||(a=!0,r())};return{execute:(...t)=>i.execute(...t),batch:(...t)=>i.batch(...t),executeMultiple:(...t)=>i.executeMultiple(...t),get closed(){return i.closed},commit:()=>i.commit().finally(o),rollback:()=>i.rollback().finally(o),close:()=>{try{i.close()}finally{o()}}}}});function m(){for(let t of[u.DB_PATH,`${u.DB_PATH}-wal`,`${u.DB_PATH}-shm`])try{(0,a.chmodSync)(t,384)}catch{}}let v=(0,l.drizzle)({client:h});t.s(["database",0,v]),r()}catch(t){r(t)}},!1),613240,t=>{"use strict";var i=t.i(518899),r=t.i(646683),n=t.i(201440),a=t.i(616918),o=t.i(937540),s=t.i(380568),l=t.i(75799);let u=(0,l.sqliteTable)("bot",{name:(0,s.text)("name").primaryKey(),description:(0,s.text)("description").notNull(),descriptionLocked:(0,o.int)("description_locked",{mode:"boolean"}).notNull().default(!1),ownLine:(0,s.text)("own_line",{mode:"json"}).$type(),systemPrompt:(0,s.text)("system_prompt"),icon:(0,s.text)("icon",{mode:"json"}).$type(),provider:(0,s.text)("provider").$type(),model:(0,s.text)("model"),compactAt:(0,o.int)("compact_at"),effort:(0,s.text)("effort").$type(),disabled:(0,o.int)("disabled",{mode:"boolean"}).notNull().default(!1),createdAt:(0,o.int)("created_at",{mode:"timestamp"}).notNull().$defaultFn(()=>new Date)}),d=(0,l.sqliteTable)("mcp_server",{name:(0,s.text)("name").primaryKey(),config:(0,s.text)("config",{mode:"json"}).notNull().$type(),toolsSyncedAt:(0,o.int)("tools_synced_at",{mode:"timestamp"}).notNull().$defaultFn(()=>new Date),lastError:(0,s.text)("last_error"),oauth:(0,s.text)("oauth",{mode:"json"}).$type(),createdAt:(0,o.int)("created_at",{mode:"timestamp"}).notNull().$defaultFn(()=>new Date)}),c=(0,l.sqliteTable)("mcp_tool",{id:(0,o.int)("id").primaryKey({autoIncrement:!0}),serverName:(0,s.text)("server_name").notNull().references(()=>d.name,{onDelete:"cascade"}),name:(0,s.text)("name").notNull(),description:(0,s.text)("description"),inputSchema:(0,s.text)("input_schema",{mode:"json"}).$type(),outputSchema:(0,s.text)("output_schema",{mode:"json"}).$type()},t=>[(0,a.unique)("uq_mcp_tool_server_name").on(t.serverName,t.name)]),m=(0,l.sqliteTable)("bot_mcp_tool",{botName:(0,s.text)().notNull().references(()=>u.name,{onDelete:"cascade"}),toolId:(0,o.int)("tool_id").notNull().references(()=>c.id,{onDelete:"cascade"})},t=>[(0,n.primaryKey)({columns:[t.botName,t.toolId]})]),f=(0,l.sqliteTable)("thread",{id:(0,s.text)("id").primaryKey(),bot:(0,s.text)("bot").notNull(),label:(0,s.text)("label").notNull(),request:(0,s.text)("request").notNull(),status:(0,s.text)("status").notNull().$type(),generation:(0,o.int)("generation").notNull().default(0),turns:(0,o.int)("turns").notNull().default(0),wrapped:(0,o.int)("wrapped",{mode:"boolean"}).notNull().default(!1),outcome:(0,s.text)("outcome"),pending:(0,s.text)("pending",{mode:"json"}).$type(),seen:(0,o.int)("seen",{mode:"boolean"}).notNull().default(!1),callId:(0,s.text)("call_id"),routineId:(0,s.text)("routine_id"),inputTokens:(0,o.int)("input_tokens").notNull().default(0),outputTokens:(0,o.int)("output_tokens").notNull().default(0),contextTokens:(0,o.int)("context_tokens").notNull().default(0),contextBudget:(0,o.int)("context_budget").notNull().default(0),createdAt:(0,o.int)("created_at",{mode:"timestamp"}).notNull().$defaultFn(()=>new Date),updatedAt:(0,o.int)("updated_at",{mode:"timestamp"}).notNull().$defaultFn(()=>new Date),endedAt:(0,o.int)("ended_at",{mode:"timestamp"})},t=>[(0,r.index)("idx_thread_routine").on(t.routineId,t.createdAt),(0,r.index)("idx_thread_status_updated").on(t.status,t.updatedAt)]),p=(0,l.sqliteTable)("thread_message",{id:(0,o.int)("id").primaryKey({autoIncrement:!0}),threadId:(0,s.text)("thread_id").notNull().references(()=>f.id,{onDelete:"cascade"}),seq:(0,o.int)("seq").notNull(),bot:(0,s.text)("bot"),parent:(0,s.text)("parent"),hidden:(0,o.int)("hidden",{mode:"boolean"}).notNull().default(!1),role:(0,s.text)("role").notNull().$type(),content:(0,s.text)("content",{mode:"json"}).notNull().$type(),compact:(0,o.int)("compact",{mode:"boolean"}).notNull().default(!1),note:(0,o.int)("note",{mode:"boolean"}).notNull().default(!1),createdAt:(0,o.int)("created_at",{mode:"timestamp"}).notNull().$defaultFn(()=>new Date)},t=>[(0,a.unique)("uq_thread_message_seq").on(t.threadId,t.seq)]),h=(0,l.sqliteTable)("thread_work",{id:(0,s.text)("id").primaryKey(),threadId:(0,s.text)("thread_id").notNull().references(()=>f.id,{onDelete:"cascade"}),bot:(0,s.text)("bot").notNull(),caller:(0,s.text)("caller").notNull(),parentId:(0,s.text)("parent_id"),state:(0,s.text)("state").notNull().$type(),generation:(0,o.int)("generation").notNull().default(0),contextBudget:(0,o.int)("context_budget").notNull().default(0),result:(0,s.text)("result"),options:(0,s.text)("options",{mode:"json"}).$type().notNull().default([]),createdAt:(0,o.int)("created_at",{mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date)},t=>[(0,r.index)("idx_thread_work_queue").on(t.threadId,t.state,t.createdAt),(0,r.index)("idx_thread_work_parent").on(t.parentId),(0,r.uniqueIndex)("uq_thread_work_running_bot").on(t.threadId,t.bot).where(i.sql`${t.state} = 'running'`)]),v=(0,l.sqliteTable)("thread_delivery",{id:(0,o.int)("id").primaryKey({autoIncrement:!0}),key:(0,s.text)("key").notNull().unique(),threadId:(0,s.text)("thread_id").notNull().references(()=>f.id,{onDelete:"cascade"}),workId:(0,s.text)("work_id").notNull().references(()=>h.id,{onDelete:"cascade"}),speaker:(0,s.text)("speaker").notNull(),text:(0,s.text)("text").notNull(),visible:(0,o.int)("visible",{mode:"boolean"}).notNull().default(!1),consumed:(0,o.int)("consumed",{mode:"boolean"}).notNull().default(!1)},t=>[(0,r.index)("idx_thread_delivery_inbox").on(t.workId,t.consumed,t.id)]),g=(0,l.sqliteTable)("thread_relay",{id:(0,o.int)("id").primaryKey({autoIncrement:!0}),key:(0,s.text)("key").notNull().unique(),threadId:(0,s.text)("thread_id").notNull().references(()=>f.id,{onDelete:"cascade"}),bot:(0,s.text)("bot").notNull(),text:(0,s.text)("text").notNull(),kind:(0,s.text)("kind").notNull().$type(),messageId:(0,s.text)("message_id"),accepted:(0,o.int)("accepted",{mode:"boolean"}).notNull().default(!1)}),$=(0,l.sqliteTable)("call",{id:(0,s.text)("id").primaryKey(),provider:(0,s.text)("provider").notNull(),model:(0,s.text)("model").notNull(),backendModel:(0,s.text)("backend_model"),startedAt:(0,o.int)("started_at",{mode:"timestamp"}).notNull().$defaultFn(()=>new Date),endedReason:(0,s.text)("ended_reason"),seconds:(0,o.int)("seconds"),endedAt:(0,o.int)("ended_at",{mode:"timestamp"})}),y=(0,l.sqliteTable)("call_message",{callId:(0,s.text)("call_id").notNull().references(()=>$.id,{onDelete:"cascade"}),id:(0,s.text)("id").notNull(),seq:(0,o.int)("seq").notNull(),role:(0,s.text)("role").notNull().$type(),tool:(0,s.text)("tool"),text:(0,s.text)("text").notNull(),fragments:(0,s.text)("fragments",{mode:"json"}).$type(),at:(0,o.int)("at",{mode:"timestamp"}).notNull().$defaultFn(()=>new Date)},t=>[(0,n.primaryKey)({columns:[t.callId,t.id]}),(0,r.index)("idx_call_message_call").on(t.callId,t.seq)]),b=(0,l.sqliteTable)("call_thought",{callId:(0,s.text)("call_id").notNull().references(()=>$.id,{onDelete:"cascade"}),id:(0,s.text)("id").notNull(),seq:(0,o.int)("seq").notNull(),text:(0,s.text)("text").notNull(),at:(0,o.int)("at",{mode:"timestamp"}).notNull().$defaultFn(()=>new Date)},t=>[(0,n.primaryKey)({columns:[t.callId,t.id]})]),_=(0,l.sqliteTable)("memory_note",{id:(0,o.int)("id").primaryKey({autoIncrement:!0}),path:(0,s.text)("path").notNull().unique(),description:(0,s.text)("description").notNull(),ownedByUser:(0,o.int)("owned_by_user",{mode:"boolean"}).notNull().default(!1),hits:(0,o.int)("hits").notNull().default(0),lastReadAt:(0,o.int)("last_read_at",{mode:"timestamp"}),createdAt:(0,o.int)("created_at",{mode:"timestamp"}).notNull().$defaultFn(()=>new Date),updatedAt:(0,o.int)("updated_at",{mode:"timestamp"}).notNull().$defaultFn(()=>new Date)}),x=(0,l.sqliteTable)("memory_fact",{id:(0,o.int)("id").primaryKey({autoIncrement:!0}),noteId:(0,o.int)("note_id").notNull().references(()=>_.id,{onDelete:"cascade"}),text:(0,s.text)("text").notNull(),isLatest:(0,o.int)("is_latest",{mode:"boolean"}).notNull().default(!0),source:(0,s.text)("source").$type(),callId:(0,s.text)("call_id").references(()=>$.id,{onDelete:"set null"}),createdAt:(0,o.int)("created_at",{mode:"timestamp"}).notNull().$defaultFn(()=>new Date)},t=>[(0,r.index)("idx_memory_fact_note").on(t.noteId,t.isLatest),(0,r.index)("idx_memory_fact_call").on(t.callId)]),k=(0,l.sqliteTable)("routine",{id:(0,s.text)("id").primaryKey(),bot:(0,s.text)("bot").notNull(),label:(0,s.text)("label").notNull(),request:(0,s.text)("request").notNull(),schedule:(0,s.text)("schedule",{mode:"json"}).notNull().$type(),enabled:(0,o.int)("enabled",{mode:"boolean"}).notNull().default(!0),nextRunAt:(0,o.int)("next_run_at",{mode:"timestamp"}).notNull(),createdAt:(0,o.int)("created_at",{mode:"timestamp"}).notNull().$defaultFn(()=>new Date)},t=>[(0,r.index)("idx_routine_due").on(t.enabled,t.nextRunAt)]),I=(0,l.sqliteTable)("config",{key:(0,s.text)("key").primaryKey(),value:(0,s.text)("value").notNull()});t.s(["botMcpToolTable",0,m,"botTable",0,u,"callMessageTable",0,y,"callTable",0,$,"callThoughtTable",0,b,"configTable",0,I,"mcpServerTable",0,d,"mcpToolTable",0,c,"memoryFactTable",0,x,"memoryNoteTable",0,_,"routineTable",0,k,"threadDeliveryTable",0,v,"threadMessageTable",0,p,"threadRelayTable",0,g,"threadTable",0,f,"threadWorkTable",0,h])},999884,t=>{"use strict";var i=t.i(844988),r=t.i(518899),n=class{static [i.entityKind]="ConsoleLogWriter";write(t){console.log(t)}},a=class{static [i.entityKind]="DefaultLogger";writer;constructor(t){this.writer=t?.writer??new n}logQuery(t,i){let r=i.map(t=>{try{return JSON.stringify(t)}catch{return String(t)}}),n=r.length?` -- params: [${r.join(", ")}]`:"";this.writer.write(`Query: ${t}${n}`)}},o=class{static [i.entityKind]="NoopLogger";logQuery(){}},s=t.i(704313),l=class{static [i.entityKind]="QueryPromise";[Symbol.toStringTag]="QueryPromise";catch(t){return this.then(void 0,t)}finally(t){return this.then(i=>(t?.(),i),i=>{throw t?.(),i})}then(t,i){return this.execute().then(t,i)}},u=r,d=class t extends u.SQL{static [i.entityKind]="SQLiteCountBuilder";dialect;session;static buildCount(t,i,r){let n=u.sql`select count(*) from ${t}${u.sql` where ${i}`.if(i)}`;return r?u.sql`(${n})`:n}constructor(i){super(t.buildCount(i.source,i.filters,!0).queryChunks),this.countConfig=i,this.dialect=i.dialect,this.session=i.session,this.mapWith(t=>"number"==typeof t?t:Number(t??0))}executableSql;build(){if(!this.executableSql){let{source:i,filters:r}=this.countConfig;this.executableSql=t.buildCount(i,r)}return this.dialect.sqlToQuery(this.executableSql)}},c=class extends d{static [i.entityKind]="SQLiteAsyncCountBuilder";constructor(t){super(t)}executeRaw(t){return this.session.prepareQuery(this.build(),"arrays",!1,"all",t=>{let i=t[0]?.[0];return"number"==typeof i?i:i?Number(i):0}).execute(t)}async execute(t){return await this.executeRaw(t)}};(0,s.applyMixins)(c,[l]);var m=class extends c{static [i.entityKind]="SQLiteSyncCountBuilder";sync(t){return this.executeRaw(t).sync()}},f=class{static [i.entityKind]="SQLiteRelationalQueryBuilderV2";constructor(t,i,r,n,a,o,s,l=p){this.mode=t,this.schema=i,this.table=r,this.tableConfig=n,this.dialect=a,this.session=o,this.forbidJsonb=s,this.builder=l}findMany(t){return new this.builder(this.mode,this.schema,this.table,this.tableConfig,this.dialect,this.session,t??!0,"many",this.forbidJsonb)}findFirst(t){return new this.builder(this.mode,this.schema,this.table,this.tableConfig,this.dialect,this.session,t??!0,"first",this.forbidJsonb)}},p=class{static [i.entityKind]="SQLiteRelationalQueryV2";mode;table;resultKind;constructor(t,i,r,n,a,o,s,l,u){this.schema=i,this.tableConfig=n,this.dialect=a,this.session=o,this.config=s,this.forbidJsonb=u,this.resultKind=t,this.mode=l,this.table=r}getSQL(){return this._getQuery().sql}_getQuery(){let t=this.forbidJsonb?r.sql`json`:r.sql`jsonb`;return this.dialect.buildRelationalQuery({schema:this.schema,table:this.table,tableConfig:this.tableConfig,queryConfig:this.config,mode:this.mode,jsonb:t})}_toSQL(){let t=this._getQuery();return{query:t,builtQuery:this.dialect.sqlToQuery(t.sql)}}toSQL(){return this._toSQL().builtQuery}},h=class extends p{static [i.entityKind]="SQLiteAsyncRelationalQueryV2";_prepare(t=!1){let{query:i,builtQuery:r}=this._toSQL(),n=this.dialect.mapperGenerators.relationalRows({isFirst:"first"===this.mode,parseJson:!0,parseJsonIfString:!1,rootJsonMappers:!1,selection:i.selection,arrayModeRoot:!0});return this.session.prepareQuery(r,"arrays",t,"all",n)}prepare(){return this._prepare(!0)}async execute(t){return this._prepare().execute(t)}},v=class extends h{static [i.entityKind]="SQLiteSyncRelationalQueryV2";sync(t){return this._prepare().execute(t).sync()}};(0,s.applyMixins)(h,[l]);var g=t.i(792352),$=t.i(156325),y=t.i(88274),b=t.i(923277),_=t.i(369e3),x=class{static [i.entityKind]="ColumnTableAliasProxyHandler";constructor(t,i){this.table=t,this.ignoreColumnAlias=i}get(t,i){return"table"===i?this.table:("isAlias"!==i||!this.ignoreColumnAlias)&&t[i]}},k=class{static [i.entityKind]="ViewSelectionAliasProxyHandler";constructor(t,i,r){this.view=t,this.selection=i,this.ignoreColumnAlias=r}get(t,n){let a=t[n];return(0,i.is)(a,$.Column)?new Proxy(a,new x(this.view,this.ignoreColumnAlias)):(0,i.is)(a,g.Subquery)||(0,i.is)(a,r.SQL)||(0,i.is)(a,r.SQL.Aliased)||(0,r.isSQLWrapper)(a)||"object"!=typeof a||null===a?a:new Proxy(a,this)}},I=class{static [i.entityKind]="TableAliasProxyHandler";constructor(t,i,r){this.alias=t,this.replaceOriginalName=i,this.ignoreColumnAlias=r}get(t,n){if(n===_.Table.Symbol.IsAlias)return!0;if(n===_.Table.Symbol.Name||this.replaceOriginalName&&n===_.Table.Symbol.OriginalName)return this.alias;if(n===y.ViewBaseConfig)return{...t[y.ViewBaseConfig],name:this.alias,isAlias:!0,selectedFields:new Proxy(t[y.ViewBaseConfig].selectedFields,new k(new Proxy(t,this),t[y.ViewBaseConfig].selectedFields,this.ignoreColumnAlias))};if(n===_.Table.Symbol.Columns){let n=t[_.Table.Symbol.Columns];if(!n)return n;if((0,i.is)(t,r.View))return new Proxy(t[_.Table.Symbol.Columns],new k(new Proxy(t,this),t[_.Table.Symbol.Columns],this.ignoreColumnAlias));let a={};return Object.keys(n).map(i=>{a[i]=new Proxy(n[i],new x(new Proxy(t,this),this.ignoreColumnAlias))}),a}let a=t[n];return(0,i.is)(a,$.Column)?new Proxy(a,new x(new Proxy(t,this),this.ignoreColumnAlias)):a}},w=class{static [i.entityKind]="ColumnAliasProxyHandler";constructor(t){this.alias=t}get(t,i){return"isAlias"===i||("name"===i?this.alias:"keyAsName"!==i&&(i===b.OriginalColumn?()=>t:t[i]))}};function S(t,i){return new Proxy(t,new I(i,!1,!1))}function Z(t){return t[b.OriginalColumn]()}i.entityKind,$.Column.prototype.as=function(t){return new Proxy(this,new w(t))};var z=class t{static [i.entityKind]="SelectionProxyHandler";config;constructor(t){this.config={...t}}get(n,a){if("_"===a)return{...n._,selectedFields:new Proxy(n._.selectedFields,this)};if(a===y.ViewBaseConfig)return{...n[y.ViewBaseConfig],selectedFields:new Proxy(n[y.ViewBaseConfig].selectedFields,this)};if("symbol"==typeof a)return n[a];let o=((0,i.is)(n,g.Subquery)?n._.selectedFields:(0,i.is)(n,r.View)?n[y.ViewBaseConfig].selectedFields:n)[a];if((0,i.is)(o,r.SQL.Aliased)){if("sql"===this.config.sqlAliasedBehavior&&!o.isSelectionField)return o.sql;let t=o.clone();return t.isSelectionField=!0,t.origin=this.config.alias,t}if((0,i.is)(o,r.SQL)){if("sql"===this.config.sqlBehavior)return o;throw Error(`You tried to reference "${a}" field from a subquery, which is a raw SQL field, but it doesn't have an alias declared. Please add an alias to the field using ".as('alias')" method.`)}return(0,i.is)(o,$.Column)?this.config.alias?new Proxy(o,new x(new Proxy(o.table,new I(this.config.alias,this.config.replaceOriginalName??!1,!0)),!0)):o:"object"!=typeof o||null===o?o:new Proxy(o,new t(this.config))}},N=t.i(75799);function D(t){return(0,i.is)(t,N.SQLiteTable)?[`${t[_.Table.Symbol.BaseName]}`]:(0,i.is)(t,g.Subquery)?t._.usedTables??[]:(0,i.is)(t,r.SQL)?t.usedTables??[]:[]}i.entityKind,i.entityKind,t.i(361328),t.i(646683),t.i(201440),t.i(616918);var P=class{static [i.entityKind]="SQLiteDelete";config;constructor(t,i,r,n){this.table=t,this.session=i,this.dialect=r,this.config={table:t,withList:n}}where(t){return this.config.where=t,this}orderBy(...t){if("function"==typeof t[0]){let i=t[0](new Proxy(this.config.table[_.Table.Symbol.Columns],new z({sqlAliasedBehavior:"alias",sqlBehavior:"sql"}))),r=Array.isArray(i)?i:[i];this.config.orderBy=r}else this.config.orderBy=t;return this}limit(t){return this.config.limit=t,this}returning(t=this.table[N.SQLiteTable.Symbol.Columns]){return this.config.returning=(0,s.orderSelectedFields)(t),this}getSQL(){return this.dialect.buildDeleteQuery(this.config)}toSQL(){return this.dialect.sqlToQuery(this.getSQL())}$dynamic(){return this}},U=class extends P{static [i.entityKind]="SQLiteAsyncDelete";_prepare(t=!1){return this.session.prepareQuery(this.dialect.sqlToQuery(this.getSQL()),"arrays",t,this.config.returning?"all":"run",this.config.returning?this.dialect.mapperGenerators.rows(this.config.returning,void 0):void 0,{type:"delete",tables:D(this.config.table)})}prepare(){return this._prepare(!0)}run=t=>this._prepare().run(t);all=t=>this._prepare().all(t);get=t=>this._prepare().get(t);values=t=>this._prepare().values(t);async execute(t){return this._prepare().execute(t)}};(0,s.applyMixins)(U,[l]);var A=r,j=class extends A.View{static [i.entityKind]="SQLiteViewBase"},O=class{static [i.entityKind]="TypedQueryBuilder";getSelectedFields(){return this._.selectedFields}withoutSelectionCastCodecs(){return this}},T=class{static [i.entityKind]="SQLiteSelectBuilder";fields;session;dialect;withList;distinct;constructor(t,i=L){this.builder=i,this.fields=t.fields,this.session=t.session,this.dialect=t.dialect,this.withList=t.withList,this.distinct=t.distinct}from(t){let n,a=!!this.fields;return n=this.fields?this.fields:(0,i.is)(t,g.Subquery)?Object.fromEntries(Object.keys(t._.selectedFields).map(i=>[i,t[i]])):(0,i.is)(t,j)?t[y.ViewBaseConfig].selectedFields:(0,i.is)(t,r.SQL)?{}:(0,s.getTableColumns)(t),new this.builder({table:t,fields:n,isPartialSelect:a,session:this.session,dialect:this.dialect,withList:this.withList??[],distinct:this.distinct})}},L=class extends O{static [i.entityKind]="SQLiteSelectQueryBuilder";_;config;joinsNotNullableMap;tableName;isPartialSelect;session;dialect;cacheConfig=void 0;usedTables=new Set;constructor({table:t,fields:i,isPartialSelect:r,session:n,dialect:a,withList:o,distinct:l}){for(const u of(super(),this.config={withList:o,table:t,fields:{...i},distinct:l,setOperators:[]},this.isPartialSelect=r,this.session=n,this.dialect=a,this._={selectedFields:i,config:this.config},this.tableName=(0,s.getTableLikeName)(t),this.joinsNotNullableMap="string"==typeof this.tableName?{[this.tableName]:!0}:{},D(t)))this.usedTables.add(u)}getUsedTables(){return[...this.usedTables]}createJoin(t){return(n,a)=>{let o=this.tableName,l=(0,s.getTableLikeName)(n);for(let t of D(n))this.usedTables.add(t);if("string"==typeof l&&this.config.joins?.some(t=>t.alias===l))throw Error(`Alias "${l}" is already used in this query`);if(!this.isPartialSelect&&(1===Object.keys(this.joinsNotNullableMap).length&&"string"==typeof o&&(this.config.fields={[o]:this.config.fields}),"string"==typeof l&&!(0,i.is)(n,r.SQL))){let t=(0,i.is)(n,g.Subquery)?n._.selectedFields:(0,i.is)(n,r.View)?n[y.ViewBaseConfig].selectedFields:n[_.Table.Symbol.Columns];this.config.fields[l]=t}if("function"==typeof a&&(a=a(new Proxy(this.config.fields,new z({sqlAliasedBehavior:"sql",sqlBehavior:"sql"})))),this.config.joins||(this.config.joins=[]),this.config.joins.push({on:a,table:n,joinType:t,alias:l}),"string"==typeof l)switch(t){case"left":this.joinsNotNullableMap[l]=!1;break;case"right":this.joinsNotNullableMap=Object.fromEntries(Object.entries(this.joinsNotNullableMap).map(([t])=>[t,!1])),this.joinsNotNullableMap[l]=!0;break;case"cross":case"inner":this.joinsNotNullableMap[l]=!0;break;case"full":this.joinsNotNullableMap=Object.fromEntries(Object.entries(this.joinsNotNullableMap).map(([t])=>[t,!1])),this.joinsNotNullableMap[l]=!1}return this}}leftJoin=this.createJoin("left");rightJoin=this.createJoin("right");innerJoin=this.createJoin("inner");fullJoin=this.createJoin("full");crossJoin=this.createJoin("cross");createSetOperator(t,i){return r=>{let n="function"==typeof r?r(q()):r;if(!(0,s.haveSameKeys)(this.getSelectedFields(),n.getSelectedFields()))throw Error("Set operator error (union / intersect / except): selected fields are not the same or are in a different order");return this.config.setOperators.push({type:t,isAll:i,rightSelect:n}),this}}union=this.createSetOperator("union",!1);unionAll=this.createSetOperator("union",!0);intersect=this.createSetOperator("intersect",!1);except=this.createSetOperator("except",!1);addSetOperators(t){return this.config.setOperators.push(...t),this}where(t){return"function"==typeof t&&(t=t(new Proxy(this.config.fields,new z({sqlAliasedBehavior:"sql",sqlBehavior:"sql"})))),this.config.where=t,this}having(t){return"function"==typeof t&&(t=t(new Proxy(this.config.fields,new z({sqlAliasedBehavior:"sql",sqlBehavior:"sql"})))),this.config.having=t,this}groupBy(...t){if("function"==typeof t[0]){let i=t[0](new Proxy(this.config.fields,new z({sqlAliasedBehavior:"alias",sqlBehavior:"sql"})));this.config.groupBy=Array.isArray(i)?i:[i]}else this.config.groupBy=t;return this}orderBy(...t){if("function"==typeof t[0]){let i=t[0](new Proxy(this.config.fields,new z({sqlAliasedBehavior:"alias",sqlBehavior:"sql"}))),r=Array.isArray(i)?i:[i];this.config.setOperators.length>0?this.config.setOperators.at(-1).orderBy=r:this.config.orderBy=r}else this.config.setOperators.length>0?this.config.setOperators.at(-1).orderBy=t:this.config.orderBy=t;return this}limit(t){return this.config.setOperators.length>0?this.config.setOperators.at(-1).limit=t:this.config.limit=t,this}offset(t){return this.config.setOperators.length>0?this.config.setOperators.at(-1).offset=t:this.config.offset=t,this}$withCache(t){return this.cacheConfig=void 0===t?{config:{},enabled:!0,autoInvalidate:!0}:!1===t?{enabled:!1}:{enabled:!0,autoInvalidate:!0,...t},this}getSQL(){return this.config.fieldsFlat=(0,s.orderSelectedFields)(this.config.fields),this.dialect.buildSelectQuery(this.config)}toSQL(){return this.dialect.sqlToQuery(this.getSQL())}as(t){let i=[];if(i.push(...D(this.config.table)),this.config.joins)for(let t of this.config.joins)i.push(...D(t.table));return new Proxy(new g.Subquery(this.getSQL(),this.config.fields,t,!1,[...new Set(i)]),new z({alias:t,sqlAliasedBehavior:"alias",sqlBehavior:"error"}))}getSelectedFields(){return new Proxy(this.config.fields,new z({alias:this.tableName,sqlAliasedBehavior:"alias",sqlBehavior:"error"}))}withoutSelectionCastCodecs(){return this}$dynamic(){return this}};function C(t,i){return(r,n,...a)=>{let o=[n,...a].map(r=>({type:t,isAll:i,rightSelect:r}));for(let t of o)if(!(0,s.haveSameKeys)(r.getSelectedFields(),t.rightSelect.getSelectedFields()))throw Error("Set operator error (union / intersect / except): selected fields are not the same or are in a different order");return r.addSetOperators(o)}}let q=()=>({union:E,unionAll:V,intersect:R,except:B}),E=C("union",!1),V=C("union",!0),R=C("intersect",!1),B=C("except",!1);var F=class extends Error{static [i.entityKind]="DrizzleError";constructor({message:t,cause:i}){super(t),this.name="DrizzleError",this.cause=i}},J=class t extends Error{static [i.entityKind]="DrizzleQueryError";constructor(i,r,n){super(`Failed query: ${i}
1
+ module.exports=[528790,t=>t.a(async(i,r)=>{try{let f,p;var n,a=t.i(902157),o=t.i(750227),s=t.i(418520),l=t.i(219756),u=t.i(687388),d=t.i(41444),c=i([s,l]);[s,l]=c.then?(await c)():c,(0,a.mkdirSync)((0,o.dirname)(u.DB_PATH),{recursive:!0});let h=globalThis.__dbClient??=(n=((f=(0,s.createClient)({url:u.DB_FILE_NAME,timeout:5e3})).execute("PRAGMA journal_mode = WAL").finally(m),f),p=(0,d.PromiseChain)(),{get closed(){return n.closed},protocol:n.protocol,close:()=>n.close(),sync:()=>n.sync(),reconnect:()=>n.reconnect(),execute:(...t)=>p(()=>n.execute(...t)),batch:(...t)=>p(()=>n.batch(...t)),executeMultiple:(...t)=>p(()=>n.executeMultiple(...t)),migrate:(...t)=>p(()=>n.migrate(...t)),async transaction(...t){let i,r=await new Promise(t=>{let i,r=new Promise(t=>{i=t});p(async()=>{t(i),await r})});try{i=await n.transaction(...t)}catch(t){throw r(),t}let a=!1,o=()=>{a||(a=!0,r())};return{execute:(...t)=>i.execute(...t),batch:(...t)=>i.batch(...t),executeMultiple:(...t)=>i.executeMultiple(...t),get closed(){return i.closed},commit:()=>i.commit().finally(o),rollback:()=>i.rollback().finally(o),close:()=>{try{i.close()}finally{o()}}}}});function m(){for(let t of[u.DB_PATH,`${u.DB_PATH}-wal`,`${u.DB_PATH}-shm`])try{(0,a.chmodSync)(t,384)}catch{}}let v=(0,l.drizzle)({client:h});t.s(["database",0,v]),r()}catch(t){r(t)}},!1),613240,t=>{"use strict";var i=t.i(518899),r=t.i(646683),n=t.i(201440),a=t.i(616918),o=t.i(937540),s=t.i(380568),l=t.i(75799);let u=(0,l.sqliteTable)("bot",{name:(0,s.text)("name").primaryKey(),description:(0,s.text)("description").notNull(),descriptionLocked:(0,o.int)("description_locked",{mode:"boolean"}).notNull().default(!1),ownLine:(0,s.text)("own_line",{mode:"json"}).$type(),systemPrompt:(0,s.text)("system_prompt"),icon:(0,s.text)("icon",{mode:"json"}).$type(),provider:(0,s.text)("provider").$type(),model:(0,s.text)("model"),compactAt:(0,o.int)("compact_at"),effort:(0,s.text)("effort").$type(),disabled:(0,o.int)("disabled",{mode:"boolean"}).notNull().default(!1),createdAt:(0,o.int)("created_at",{mode:"timestamp"}).notNull().$defaultFn(()=>new Date)}),d=(0,l.sqliteTable)("mcp_server",{name:(0,s.text)("name").primaryKey(),config:(0,s.text)("config",{mode:"json"}).notNull().$type(),toolsSyncedAt:(0,o.int)("tools_synced_at",{mode:"timestamp"}).notNull().$defaultFn(()=>new Date),lastError:(0,s.text)("last_error"),oauth:(0,s.text)("oauth",{mode:"json"}).$type(),createdAt:(0,o.int)("created_at",{mode:"timestamp"}).notNull().$defaultFn(()=>new Date)}),c=(0,l.sqliteTable)("mcp_tool",{id:(0,o.int)("id").primaryKey({autoIncrement:!0}),serverName:(0,s.text)("server_name").notNull().references(()=>d.name,{onDelete:"cascade"}),name:(0,s.text)("name").notNull(),description:(0,s.text)("description"),inputSchema:(0,s.text)("input_schema",{mode:"json"}).$type(),outputSchema:(0,s.text)("output_schema",{mode:"json"}).$type()},t=>[(0,a.unique)("uq_mcp_tool_server_name").on(t.serverName,t.name)]),m=(0,l.sqliteTable)("bot_mcp_tool",{botName:(0,s.text)().notNull().references(()=>u.name,{onDelete:"cascade"}),toolId:(0,o.int)("tool_id").notNull().references(()=>c.id,{onDelete:"cascade"})},t=>[(0,n.primaryKey)({columns:[t.botName,t.toolId]})]),f=(0,l.sqliteTable)("thread",{id:(0,s.text)("id").primaryKey(),bot:(0,s.text)("bot").notNull(),label:(0,s.text)("label").notNull(),request:(0,s.text)("request").notNull(),status:(0,s.text)("status").notNull().$type(),generation:(0,o.int)("generation").notNull().default(0),turns:(0,o.int)("turns").notNull().default(0),wrapped:(0,o.int)("wrapped",{mode:"boolean"}).notNull().default(!1),outcome:(0,s.text)("outcome"),pending:(0,s.text)("pending",{mode:"json"}).$type(),seen:(0,o.int)("seen",{mode:"boolean"}).notNull().default(!1),callId:(0,s.text)("call_id"),routineId:(0,s.text)("routine_id"),inputTokens:(0,o.int)("input_tokens").notNull().default(0),outputTokens:(0,o.int)("output_tokens").notNull().default(0),cacheReadTokens:(0,o.int)("cache_read_tokens").notNull().default(0),cacheWriteTokens:(0,o.int)("cache_write_tokens").notNull().default(0),contextTokens:(0,o.int)("context_tokens").notNull().default(0),contextBudget:(0,o.int)("context_budget").notNull().default(0),createdAt:(0,o.int)("created_at",{mode:"timestamp"}).notNull().$defaultFn(()=>new Date),updatedAt:(0,o.int)("updated_at",{mode:"timestamp"}).notNull().$defaultFn(()=>new Date),endedAt:(0,o.int)("ended_at",{mode:"timestamp"})},t=>[(0,r.index)("idx_thread_routine").on(t.routineId,t.createdAt),(0,r.index)("idx_thread_status_updated").on(t.status,t.updatedAt)]),p=(0,l.sqliteTable)("thread_message",{id:(0,o.int)("id").primaryKey({autoIncrement:!0}),threadId:(0,s.text)("thread_id").notNull().references(()=>f.id,{onDelete:"cascade"}),seq:(0,o.int)("seq").notNull(),bot:(0,s.text)("bot"),parent:(0,s.text)("parent"),hidden:(0,o.int)("hidden",{mode:"boolean"}).notNull().default(!1),role:(0,s.text)("role").notNull().$type(),content:(0,s.text)("content",{mode:"json"}).notNull().$type(),compact:(0,o.int)("compact",{mode:"boolean"}).notNull().default(!1),note:(0,o.int)("note",{mode:"boolean"}).notNull().default(!1),createdAt:(0,o.int)("created_at",{mode:"timestamp"}).notNull().$defaultFn(()=>new Date)},t=>[(0,a.unique)("uq_thread_message_seq").on(t.threadId,t.seq)]),h=(0,l.sqliteTable)("thread_work",{id:(0,s.text)("id").primaryKey(),threadId:(0,s.text)("thread_id").notNull().references(()=>f.id,{onDelete:"cascade"}),bot:(0,s.text)("bot").notNull(),caller:(0,s.text)("caller").notNull(),parentId:(0,s.text)("parent_id"),state:(0,s.text)("state").notNull().$type(),generation:(0,o.int)("generation").notNull().default(0),contextBudget:(0,o.int)("context_budget").notNull().default(0),result:(0,s.text)("result"),options:(0,s.text)("options",{mode:"json"}).$type().notNull().default([]),createdAt:(0,o.int)("created_at",{mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date)},t=>[(0,r.index)("idx_thread_work_queue").on(t.threadId,t.state,t.createdAt),(0,r.index)("idx_thread_work_parent").on(t.parentId),(0,r.uniqueIndex)("uq_thread_work_running_bot").on(t.threadId,t.bot).where(i.sql`${t.state} = 'running'`)]),v=(0,l.sqliteTable)("thread_delivery",{id:(0,o.int)("id").primaryKey({autoIncrement:!0}),key:(0,s.text)("key").notNull().unique(),threadId:(0,s.text)("thread_id").notNull().references(()=>f.id,{onDelete:"cascade"}),workId:(0,s.text)("work_id").notNull().references(()=>h.id,{onDelete:"cascade"}),speaker:(0,s.text)("speaker").notNull(),text:(0,s.text)("text").notNull(),visible:(0,o.int)("visible",{mode:"boolean"}).notNull().default(!1),consumed:(0,o.int)("consumed",{mode:"boolean"}).notNull().default(!1)},t=>[(0,r.index)("idx_thread_delivery_inbox").on(t.workId,t.consumed,t.id)]),g=(0,l.sqliteTable)("thread_relay",{id:(0,o.int)("id").primaryKey({autoIncrement:!0}),key:(0,s.text)("key").notNull().unique(),threadId:(0,s.text)("thread_id").notNull().references(()=>f.id,{onDelete:"cascade"}),bot:(0,s.text)("bot").notNull(),text:(0,s.text)("text").notNull(),kind:(0,s.text)("kind").notNull().$type(),messageId:(0,s.text)("message_id"),accepted:(0,o.int)("accepted",{mode:"boolean"}).notNull().default(!1)}),$=(0,l.sqliteTable)("call",{id:(0,s.text)("id").primaryKey(),provider:(0,s.text)("provider").notNull(),model:(0,s.text)("model").notNull(),backendModel:(0,s.text)("backend_model"),startedAt:(0,o.int)("started_at",{mode:"timestamp"}).notNull().$defaultFn(()=>new Date),endedReason:(0,s.text)("ended_reason"),seconds:(0,o.int)("seconds"),endedAt:(0,o.int)("ended_at",{mode:"timestamp"})}),y=(0,l.sqliteTable)("call_message",{callId:(0,s.text)("call_id").notNull().references(()=>$.id,{onDelete:"cascade"}),id:(0,s.text)("id").notNull(),seq:(0,o.int)("seq").notNull(),role:(0,s.text)("role").notNull().$type(),tool:(0,s.text)("tool"),text:(0,s.text)("text").notNull(),fragments:(0,s.text)("fragments",{mode:"json"}).$type(),at:(0,o.int)("at",{mode:"timestamp"}).notNull().$defaultFn(()=>new Date)},t=>[(0,n.primaryKey)({columns:[t.callId,t.id]}),(0,r.index)("idx_call_message_call").on(t.callId,t.seq)]),b=(0,l.sqliteTable)("call_thought",{callId:(0,s.text)("call_id").notNull().references(()=>$.id,{onDelete:"cascade"}),id:(0,s.text)("id").notNull(),seq:(0,o.int)("seq").notNull(),text:(0,s.text)("text").notNull(),at:(0,o.int)("at",{mode:"timestamp"}).notNull().$defaultFn(()=>new Date)},t=>[(0,n.primaryKey)({columns:[t.callId,t.id]})]),_=(0,l.sqliteTable)("memory_note",{id:(0,o.int)("id").primaryKey({autoIncrement:!0}),path:(0,s.text)("path").notNull().unique(),description:(0,s.text)("description").notNull(),ownedByUser:(0,o.int)("owned_by_user",{mode:"boolean"}).notNull().default(!1),hits:(0,o.int)("hits").notNull().default(0),lastReadAt:(0,o.int)("last_read_at",{mode:"timestamp"}),createdAt:(0,o.int)("created_at",{mode:"timestamp"}).notNull().$defaultFn(()=>new Date),updatedAt:(0,o.int)("updated_at",{mode:"timestamp"}).notNull().$defaultFn(()=>new Date)}),x=(0,l.sqliteTable)("memory_fact",{id:(0,o.int)("id").primaryKey({autoIncrement:!0}),noteId:(0,o.int)("note_id").notNull().references(()=>_.id,{onDelete:"cascade"}),text:(0,s.text)("text").notNull(),isLatest:(0,o.int)("is_latest",{mode:"boolean"}).notNull().default(!0),source:(0,s.text)("source").$type(),callId:(0,s.text)("call_id").references(()=>$.id,{onDelete:"set null"}),createdAt:(0,o.int)("created_at",{mode:"timestamp"}).notNull().$defaultFn(()=>new Date)},t=>[(0,r.index)("idx_memory_fact_note").on(t.noteId,t.isLatest),(0,r.index)("idx_memory_fact_call").on(t.callId)]),k=(0,l.sqliteTable)("routine",{id:(0,s.text)("id").primaryKey(),bot:(0,s.text)("bot").notNull(),label:(0,s.text)("label").notNull(),request:(0,s.text)("request").notNull(),schedule:(0,s.text)("schedule",{mode:"json"}).notNull().$type(),enabled:(0,o.int)("enabled",{mode:"boolean"}).notNull().default(!0),nextRunAt:(0,o.int)("next_run_at",{mode:"timestamp"}).notNull(),createdAt:(0,o.int)("created_at",{mode:"timestamp"}).notNull().$defaultFn(()=>new Date)},t=>[(0,r.index)("idx_routine_due").on(t.enabled,t.nextRunAt)]),I=(0,l.sqliteTable)("config",{key:(0,s.text)("key").primaryKey(),value:(0,s.text)("value").notNull()});t.s(["botMcpToolTable",0,m,"botTable",0,u,"callMessageTable",0,y,"callTable",0,$,"callThoughtTable",0,b,"configTable",0,I,"mcpServerTable",0,d,"mcpToolTable",0,c,"memoryFactTable",0,x,"memoryNoteTable",0,_,"routineTable",0,k,"threadDeliveryTable",0,v,"threadMessageTable",0,p,"threadRelayTable",0,g,"threadTable",0,f,"threadWorkTable",0,h])},999884,t=>{"use strict";var i=t.i(844988),r=t.i(518899),n=class{static [i.entityKind]="ConsoleLogWriter";write(t){console.log(t)}},a=class{static [i.entityKind]="DefaultLogger";writer;constructor(t){this.writer=t?.writer??new n}logQuery(t,i){let r=i.map(t=>{try{return JSON.stringify(t)}catch{return String(t)}}),n=r.length?` -- params: [${r.join(", ")}]`:"";this.writer.write(`Query: ${t}${n}`)}},o=class{static [i.entityKind]="NoopLogger";logQuery(){}},s=t.i(704313),l=class{static [i.entityKind]="QueryPromise";[Symbol.toStringTag]="QueryPromise";catch(t){return this.then(void 0,t)}finally(t){return this.then(i=>(t?.(),i),i=>{throw t?.(),i})}then(t,i){return this.execute().then(t,i)}},u=r,d=class t extends u.SQL{static [i.entityKind]="SQLiteCountBuilder";dialect;session;static buildCount(t,i,r){let n=u.sql`select count(*) from ${t}${u.sql` where ${i}`.if(i)}`;return r?u.sql`(${n})`:n}constructor(i){super(t.buildCount(i.source,i.filters,!0).queryChunks),this.countConfig=i,this.dialect=i.dialect,this.session=i.session,this.mapWith(t=>"number"==typeof t?t:Number(t??0))}executableSql;build(){if(!this.executableSql){let{source:i,filters:r}=this.countConfig;this.executableSql=t.buildCount(i,r)}return this.dialect.sqlToQuery(this.executableSql)}},c=class extends d{static [i.entityKind]="SQLiteAsyncCountBuilder";constructor(t){super(t)}executeRaw(t){return this.session.prepareQuery(this.build(),"arrays",!1,"all",t=>{let i=t[0]?.[0];return"number"==typeof i?i:i?Number(i):0}).execute(t)}async execute(t){return await this.executeRaw(t)}};(0,s.applyMixins)(c,[l]);var m=class extends c{static [i.entityKind]="SQLiteSyncCountBuilder";sync(t){return this.executeRaw(t).sync()}},f=class{static [i.entityKind]="SQLiteRelationalQueryBuilderV2";constructor(t,i,r,n,a,o,s,l=p){this.mode=t,this.schema=i,this.table=r,this.tableConfig=n,this.dialect=a,this.session=o,this.forbidJsonb=s,this.builder=l}findMany(t){return new this.builder(this.mode,this.schema,this.table,this.tableConfig,this.dialect,this.session,t??!0,"many",this.forbidJsonb)}findFirst(t){return new this.builder(this.mode,this.schema,this.table,this.tableConfig,this.dialect,this.session,t??!0,"first",this.forbidJsonb)}},p=class{static [i.entityKind]="SQLiteRelationalQueryV2";mode;table;resultKind;constructor(t,i,r,n,a,o,s,l,u){this.schema=i,this.tableConfig=n,this.dialect=a,this.session=o,this.config=s,this.forbidJsonb=u,this.resultKind=t,this.mode=l,this.table=r}getSQL(){return this._getQuery().sql}_getQuery(){let t=this.forbidJsonb?r.sql`json`:r.sql`jsonb`;return this.dialect.buildRelationalQuery({schema:this.schema,table:this.table,tableConfig:this.tableConfig,queryConfig:this.config,mode:this.mode,jsonb:t})}_toSQL(){let t=this._getQuery();return{query:t,builtQuery:this.dialect.sqlToQuery(t.sql)}}toSQL(){return this._toSQL().builtQuery}},h=class extends p{static [i.entityKind]="SQLiteAsyncRelationalQueryV2";_prepare(t=!1){let{query:i,builtQuery:r}=this._toSQL(),n=this.dialect.mapperGenerators.relationalRows({isFirst:"first"===this.mode,parseJson:!0,parseJsonIfString:!1,rootJsonMappers:!1,selection:i.selection,arrayModeRoot:!0});return this.session.prepareQuery(r,"arrays",t,"all",n)}prepare(){return this._prepare(!0)}async execute(t){return this._prepare().execute(t)}},v=class extends h{static [i.entityKind]="SQLiteSyncRelationalQueryV2";sync(t){return this._prepare().execute(t).sync()}};(0,s.applyMixins)(h,[l]);var g=t.i(792352),$=t.i(156325),y=t.i(88274),b=t.i(923277),_=t.i(369e3),x=class{static [i.entityKind]="ColumnTableAliasProxyHandler";constructor(t,i){this.table=t,this.ignoreColumnAlias=i}get(t,i){return"table"===i?this.table:("isAlias"!==i||!this.ignoreColumnAlias)&&t[i]}},k=class{static [i.entityKind]="ViewSelectionAliasProxyHandler";constructor(t,i,r){this.view=t,this.selection=i,this.ignoreColumnAlias=r}get(t,n){let a=t[n];return(0,i.is)(a,$.Column)?new Proxy(a,new x(this.view,this.ignoreColumnAlias)):(0,i.is)(a,g.Subquery)||(0,i.is)(a,r.SQL)||(0,i.is)(a,r.SQL.Aliased)||(0,r.isSQLWrapper)(a)||"object"!=typeof a||null===a?a:new Proxy(a,this)}},I=class{static [i.entityKind]="TableAliasProxyHandler";constructor(t,i,r){this.alias=t,this.replaceOriginalName=i,this.ignoreColumnAlias=r}get(t,n){if(n===_.Table.Symbol.IsAlias)return!0;if(n===_.Table.Symbol.Name||this.replaceOriginalName&&n===_.Table.Symbol.OriginalName)return this.alias;if(n===y.ViewBaseConfig)return{...t[y.ViewBaseConfig],name:this.alias,isAlias:!0,selectedFields:new Proxy(t[y.ViewBaseConfig].selectedFields,new k(new Proxy(t,this),t[y.ViewBaseConfig].selectedFields,this.ignoreColumnAlias))};if(n===_.Table.Symbol.Columns){let n=t[_.Table.Symbol.Columns];if(!n)return n;if((0,i.is)(t,r.View))return new Proxy(t[_.Table.Symbol.Columns],new k(new Proxy(t,this),t[_.Table.Symbol.Columns],this.ignoreColumnAlias));let a={};return Object.keys(n).map(i=>{a[i]=new Proxy(n[i],new x(new Proxy(t,this),this.ignoreColumnAlias))}),a}let a=t[n];return(0,i.is)(a,$.Column)?new Proxy(a,new x(new Proxy(t,this),this.ignoreColumnAlias)):a}},w=class{static [i.entityKind]="ColumnAliasProxyHandler";constructor(t){this.alias=t}get(t,i){return"isAlias"===i||("name"===i?this.alias:"keyAsName"!==i&&(i===b.OriginalColumn?()=>t:t[i]))}};function S(t,i){return new Proxy(t,new I(i,!1,!1))}function Z(t){return t[b.OriginalColumn]()}i.entityKind,$.Column.prototype.as=function(t){return new Proxy(this,new w(t))};var z=class t{static [i.entityKind]="SelectionProxyHandler";config;constructor(t){this.config={...t}}get(n,a){if("_"===a)return{...n._,selectedFields:new Proxy(n._.selectedFields,this)};if(a===y.ViewBaseConfig)return{...n[y.ViewBaseConfig],selectedFields:new Proxy(n[y.ViewBaseConfig].selectedFields,this)};if("symbol"==typeof a)return n[a];let o=((0,i.is)(n,g.Subquery)?n._.selectedFields:(0,i.is)(n,r.View)?n[y.ViewBaseConfig].selectedFields:n)[a];if((0,i.is)(o,r.SQL.Aliased)){if("sql"===this.config.sqlAliasedBehavior&&!o.isSelectionField)return o.sql;let t=o.clone();return t.isSelectionField=!0,t.origin=this.config.alias,t}if((0,i.is)(o,r.SQL)){if("sql"===this.config.sqlBehavior)return o;throw Error(`You tried to reference "${a}" field from a subquery, which is a raw SQL field, but it doesn't have an alias declared. Please add an alias to the field using ".as('alias')" method.`)}return(0,i.is)(o,$.Column)?this.config.alias?new Proxy(o,new x(new Proxy(o.table,new I(this.config.alias,this.config.replaceOriginalName??!1,!0)),!0)):o:"object"!=typeof o||null===o?o:new Proxy(o,new t(this.config))}},N=t.i(75799);function D(t){return(0,i.is)(t,N.SQLiteTable)?[`${t[_.Table.Symbol.BaseName]}`]:(0,i.is)(t,g.Subquery)?t._.usedTables??[]:(0,i.is)(t,r.SQL)?t.usedTables??[]:[]}i.entityKind,i.entityKind,t.i(361328),t.i(646683),t.i(201440),t.i(616918);var P=class{static [i.entityKind]="SQLiteDelete";config;constructor(t,i,r,n){this.table=t,this.session=i,this.dialect=r,this.config={table:t,withList:n}}where(t){return this.config.where=t,this}orderBy(...t){if("function"==typeof t[0]){let i=t[0](new Proxy(this.config.table[_.Table.Symbol.Columns],new z({sqlAliasedBehavior:"alias",sqlBehavior:"sql"}))),r=Array.isArray(i)?i:[i];this.config.orderBy=r}else this.config.orderBy=t;return this}limit(t){return this.config.limit=t,this}returning(t=this.table[N.SQLiteTable.Symbol.Columns]){return this.config.returning=(0,s.orderSelectedFields)(t),this}getSQL(){return this.dialect.buildDeleteQuery(this.config)}toSQL(){return this.dialect.sqlToQuery(this.getSQL())}$dynamic(){return this}},U=class extends P{static [i.entityKind]="SQLiteAsyncDelete";_prepare(t=!1){return this.session.prepareQuery(this.dialect.sqlToQuery(this.getSQL()),"arrays",t,this.config.returning?"all":"run",this.config.returning?this.dialect.mapperGenerators.rows(this.config.returning,void 0):void 0,{type:"delete",tables:D(this.config.table)})}prepare(){return this._prepare(!0)}run=t=>this._prepare().run(t);all=t=>this._prepare().all(t);get=t=>this._prepare().get(t);values=t=>this._prepare().values(t);async execute(t){return this._prepare().execute(t)}};(0,s.applyMixins)(U,[l]);var A=r,j=class extends A.View{static [i.entityKind]="SQLiteViewBase"},O=class{static [i.entityKind]="TypedQueryBuilder";getSelectedFields(){return this._.selectedFields}withoutSelectionCastCodecs(){return this}},T=class{static [i.entityKind]="SQLiteSelectBuilder";fields;session;dialect;withList;distinct;constructor(t,i=L){this.builder=i,this.fields=t.fields,this.session=t.session,this.dialect=t.dialect,this.withList=t.withList,this.distinct=t.distinct}from(t){let n,a=!!this.fields;return n=this.fields?this.fields:(0,i.is)(t,g.Subquery)?Object.fromEntries(Object.keys(t._.selectedFields).map(i=>[i,t[i]])):(0,i.is)(t,j)?t[y.ViewBaseConfig].selectedFields:(0,i.is)(t,r.SQL)?{}:(0,s.getTableColumns)(t),new this.builder({table:t,fields:n,isPartialSelect:a,session:this.session,dialect:this.dialect,withList:this.withList??[],distinct:this.distinct})}},L=class extends O{static [i.entityKind]="SQLiteSelectQueryBuilder";_;config;joinsNotNullableMap;tableName;isPartialSelect;session;dialect;cacheConfig=void 0;usedTables=new Set;constructor({table:t,fields:i,isPartialSelect:r,session:n,dialect:a,withList:o,distinct:l}){for(const u of(super(),this.config={withList:o,table:t,fields:{...i},distinct:l,setOperators:[]},this.isPartialSelect=r,this.session=n,this.dialect=a,this._={selectedFields:i,config:this.config},this.tableName=(0,s.getTableLikeName)(t),this.joinsNotNullableMap="string"==typeof this.tableName?{[this.tableName]:!0}:{},D(t)))this.usedTables.add(u)}getUsedTables(){return[...this.usedTables]}createJoin(t){return(n,a)=>{let o=this.tableName,l=(0,s.getTableLikeName)(n);for(let t of D(n))this.usedTables.add(t);if("string"==typeof l&&this.config.joins?.some(t=>t.alias===l))throw Error(`Alias "${l}" is already used in this query`);if(!this.isPartialSelect&&(1===Object.keys(this.joinsNotNullableMap).length&&"string"==typeof o&&(this.config.fields={[o]:this.config.fields}),"string"==typeof l&&!(0,i.is)(n,r.SQL))){let t=(0,i.is)(n,g.Subquery)?n._.selectedFields:(0,i.is)(n,r.View)?n[y.ViewBaseConfig].selectedFields:n[_.Table.Symbol.Columns];this.config.fields[l]=t}if("function"==typeof a&&(a=a(new Proxy(this.config.fields,new z({sqlAliasedBehavior:"sql",sqlBehavior:"sql"})))),this.config.joins||(this.config.joins=[]),this.config.joins.push({on:a,table:n,joinType:t,alias:l}),"string"==typeof l)switch(t){case"left":this.joinsNotNullableMap[l]=!1;break;case"right":this.joinsNotNullableMap=Object.fromEntries(Object.entries(this.joinsNotNullableMap).map(([t])=>[t,!1])),this.joinsNotNullableMap[l]=!0;break;case"cross":case"inner":this.joinsNotNullableMap[l]=!0;break;case"full":this.joinsNotNullableMap=Object.fromEntries(Object.entries(this.joinsNotNullableMap).map(([t])=>[t,!1])),this.joinsNotNullableMap[l]=!1}return this}}leftJoin=this.createJoin("left");rightJoin=this.createJoin("right");innerJoin=this.createJoin("inner");fullJoin=this.createJoin("full");crossJoin=this.createJoin("cross");createSetOperator(t,i){return r=>{let n="function"==typeof r?r(q()):r;if(!(0,s.haveSameKeys)(this.getSelectedFields(),n.getSelectedFields()))throw Error("Set operator error (union / intersect / except): selected fields are not the same or are in a different order");return this.config.setOperators.push({type:t,isAll:i,rightSelect:n}),this}}union=this.createSetOperator("union",!1);unionAll=this.createSetOperator("union",!0);intersect=this.createSetOperator("intersect",!1);except=this.createSetOperator("except",!1);addSetOperators(t){return this.config.setOperators.push(...t),this}where(t){return"function"==typeof t&&(t=t(new Proxy(this.config.fields,new z({sqlAliasedBehavior:"sql",sqlBehavior:"sql"})))),this.config.where=t,this}having(t){return"function"==typeof t&&(t=t(new Proxy(this.config.fields,new z({sqlAliasedBehavior:"sql",sqlBehavior:"sql"})))),this.config.having=t,this}groupBy(...t){if("function"==typeof t[0]){let i=t[0](new Proxy(this.config.fields,new z({sqlAliasedBehavior:"alias",sqlBehavior:"sql"})));this.config.groupBy=Array.isArray(i)?i:[i]}else this.config.groupBy=t;return this}orderBy(...t){if("function"==typeof t[0]){let i=t[0](new Proxy(this.config.fields,new z({sqlAliasedBehavior:"alias",sqlBehavior:"sql"}))),r=Array.isArray(i)?i:[i];this.config.setOperators.length>0?this.config.setOperators.at(-1).orderBy=r:this.config.orderBy=r}else this.config.setOperators.length>0?this.config.setOperators.at(-1).orderBy=t:this.config.orderBy=t;return this}limit(t){return this.config.setOperators.length>0?this.config.setOperators.at(-1).limit=t:this.config.limit=t,this}offset(t){return this.config.setOperators.length>0?this.config.setOperators.at(-1).offset=t:this.config.offset=t,this}$withCache(t){return this.cacheConfig=void 0===t?{config:{},enabled:!0,autoInvalidate:!0}:!1===t?{enabled:!1}:{enabled:!0,autoInvalidate:!0,...t},this}getSQL(){return this.config.fieldsFlat=(0,s.orderSelectedFields)(this.config.fields),this.dialect.buildSelectQuery(this.config)}toSQL(){return this.dialect.sqlToQuery(this.getSQL())}as(t){let i=[];if(i.push(...D(this.config.table)),this.config.joins)for(let t of this.config.joins)i.push(...D(t.table));return new Proxy(new g.Subquery(this.getSQL(),this.config.fields,t,!1,[...new Set(i)]),new z({alias:t,sqlAliasedBehavior:"alias",sqlBehavior:"error"}))}getSelectedFields(){return new Proxy(this.config.fields,new z({alias:this.tableName,sqlAliasedBehavior:"alias",sqlBehavior:"error"}))}withoutSelectionCastCodecs(){return this}$dynamic(){return this}};function C(t,i){return(r,n,...a)=>{let o=[n,...a].map(r=>({type:t,isAll:i,rightSelect:r}));for(let t of o)if(!(0,s.haveSameKeys)(r.getSelectedFields(),t.rightSelect.getSelectedFields()))throw Error("Set operator error (union / intersect / except): selected fields are not the same or are in a different order");return r.addSetOperators(o)}}let q=()=>({union:E,unionAll:V,intersect:R,except:B}),E=C("union",!1),V=C("union",!0),R=C("intersect",!1),B=C("except",!1);var F=class extends Error{static [i.entityKind]="DrizzleError";constructor({message:t,cause:i}){super(t),this.name="DrizzleError",this.cause=i}},J=class t extends Error{static [i.entityKind]="DrizzleQueryError";constructor(i,r,n){super(`Failed query: ${i}
2
2
  params: ${r}`),this.query=i,this.params=r,this.cause=n,this.name="DrizzleQueryError",Error.captureStackTrace(this,t),n&&(this.cause=n)}},Q=class extends F{static [i.entityKind]="TransactionRollbackError";constructor(){super({message:"Rollback"}),this.name="TransactionRollbackError"}},M=t.i(875225),K=t.i(349129),W=class{static [i.entityKind]="RelationV2";fieldName;sourceColumns;targetColumns;alias;where;sourceTable;targetTable;through;throughTable;isReversed;sourceColumnTableNames=[];targetColumnTableNames=[];constructor(t,i){this.targetTableName=i,this.targetTable=t}},G=class extends W{static [i.entityKind]="OneV2";relationType="one";optional;constructor(t,i,r,n){super(i,r),this.alias=n?.alias,this.where=n?.where,n?.from&&(this.sourceColumns=(Array.isArray(n.from)?n.from:[n.from]).map(i=>(this.throughTable??=i._.through?t[i._.through._.tableName]:void 0,this.sourceColumnTableNames.push(i._.tableName),i._.column))),n?.to&&(this.targetColumns=(Array.isArray(n.to)?n.to:[n.to]).map(i=>(this.throughTable??=i._.through?t[i._.through._.tableName]:void 0,this.targetColumnTableNames.push(i._.tableName),i._.column))),this.throughTable&&(this.through={source:(Array.isArray(n?.from)?n.from:n?.from?[n.from]:[]).map(t=>t._.through),target:(Array.isArray(n?.to)?n.to:n?.to?[n.to]:[]).map(t=>t._.through)}),this.optional=n?.optional??!0}},X=(i.entityKind,class{static [i.entityKind]="AggregatedField";table;onTable(t){return this.table=t,this}});i.entityKind;let H={and:M.and,between:M.between,eq:M.eq,exists:M.exists,gt:M.gt,gte:M.gte,ilike:M.ilike,inArray:M.inArray,arrayContains:M.arrayContains,arrayContained:M.arrayContained,arrayOverlaps:M.arrayOverlaps,isNull:M.isNull,isNotNull:M.isNotNull,like:M.like,lt:M.lt,lte:M.lte,ne:M.ne,not:M.not,notBetween:M.notBetween,notExists:M.notExists,notLike:M.notLike,notIlike:M.notIlike,notInArray:M.notInArray,or:M.or,sql:r.sql},Y={sql:r.sql,asc:K.asc,desc:K.desc};function ee(t,n,a,o=!1,s=!1,l=!0){let u=n?1:t.length,d=a.map(({field:t,codec:n,arrayDimensions:a})=>{let o;return(o=(0,i.is)(t,$.Column)?t:(0,i.is)(t,r.SQL)?t.decoder:(0,i.is)(t,r.SQL.Aliased)?t.sql.decoder:(0,i.is)(t,_.Table)||(0,i.is)(t,r.View)?r.noopDecoder:t.getSQL().decoder,l&&t.mapFromJsonValue)?i=>t.mapFromJsonValue(i):o.mapFromDriverValue.isNoop?n?t=>n(t,a):void 0:n?t=>o.mapFromDriverValue(n(t,a)):t=>o.mapFromDriverValue(t)});for(let i=0;i<u;++i){let r=n?t:t[i];for(let t=0;t<a.length;++t){let i=a[t];if(i.selection){if(null===r[i.key])continue;if(o){if(r[i.key]=JSON.parse(r[i.key]),null===r[i.key])continue}else s&&"string"==typeof r[i.key]&&(r[i.key]=JSON.parse(r[i.key]));if(i.isArray){ee(r[i.key],!1,i.selection,!1,s);continue}ee(r[i.key],!0,i.selection,!1,s);continue}if(null===r[i.key])continue;let n=d[t];n&&(r[i.key]=n(r[i.key]))}}return t}function et({selection:t,isFirst:n,parseJson:a,parseJsonIfString:o,rootJsonMappers:s,arrayModeRoot:l}){return u=>n&&!u[0]?u[0]:l?function(t,n,a,o=!1,s=!1){let l=n?1:t.length,u=a.map(({field:t,codec:n,arrayDimensions:a})=>{let o;return(o=(0,i.is)(t,$.Column)?t:(0,i.is)(t,r.SQL)?t.decoder:(0,i.is)(t,r.SQL.Aliased)?t.sql.decoder:(0,i.is)(t,_.Table)||(0,i.is)(t,r.View)?r.noopDecoder:t.getSQL().decoder).mapFromDriverValue.isNoop?n?t=>n(t,a):void 0:n?t=>o.mapFromDriverValue(n(t,a)):t=>o.mapFromDriverValue(t)}),d=Array.from({length:l});for(let i=0;i<l;++i){let r=n?t:t[i],l={};for(let t=0;t<a.length;++t){let i=a[t],n=r[t];if(i.selection){if(null===n){l[i.key]=null;continue}if(o){if(null===(n=JSON.parse(n))){l[i.key]=null;continue}}else s&&"string"==typeof n&&(n=JSON.parse(n));i.isArray?ee(n,!1,i.selection,!1,s):ee(n,!0,i.selection,!1,s),l[i.key]=n;continue}if(null===n){l[i.key]=null;continue}let d=u[t];l[i.key]=d?d(n):n}d[i]=l}return n?d[0]:d}(n?u[0]:u,n,t,a,o):ee(n?u[0]:u,n,t,a,o,s)}function ei({selection:t,isFirst:n,parseJson:a,parseJsonIfString:o,rootJsonMappers:l,arrayModeRoot:u}){let d=[],c=function t(n,a,o,s,l,u,d,c,m){let f=[],p=[],h=!1,v=n.map(()=>`c${c.n++}`),g=n.map((t,i)=>m?v[i]:`${JSON.stringify(t.key)}: ${v[i]}`);for(let[y,{field:b,key:x,codec:k,isArray:I,selection:w,arrayDimensions:S}]of(f.push(m?`let [ ${g.join(", ")} ] = ${a};`:`let { ${g.join(", ")} } = ${a};`),n.entries())){let n=`${o}[${y}]`,a=JSON.stringify(x),m=v[y];if(w){s?(f.push(`if (${m} !== null) ${m} = JSON.parse(${m});`),h=!0):l&&(f.push(`if (typeof ${m} === 'string') ${m} = JSON.parse(${m});`),h=!0);let i=`s${c.n++}`,r=d.length;if(d.push(`const { selection: ${i} } = ${n};`),I){let n=`j${c.n++}`,a=t(w,`${m}[${n}]`,i,!1,l,!0,d,c,!1);if(a.hasWork){for(let t of(h=!0,f.push(`if (${m} !== null) {`),f.push(` for (let ${n} = 0; ${n} < ${m}.length; ++${n}) {`),a.bodyStmts))f.push(` ${t}`);f.push(` ${m}[${n}] = ${a.literal};`),f.push(" }"),f.push("}")}else d.splice(r,1)}else{let n=t(w,m,i,!1,l,!0,d,c,!1);if(n.hasWork){for(let t of(h=!0,f.push(`if (${m} !== null) {`),n.bodyStmts))f.push(` ${t}`);f.push(` ${m} = ${n.literal};`),f.push("}")}else d.splice(r,1)}p.push(`${a}: ${m}`);continue}let g="",Z="",z=!1;if((0,i.is)(b,$.Column)){if(u&&b.mapFromJsonValue){z=!0;let t=c.n++;Z=`field: dec${t}`,g=`dec${t}.mapFromJsonValue`}else if(!b.mapFromDriverValue.isNoop){let t=c.n++;Z=`field: dec${t}`,g=`dec${t}.mapFromDriverValue`}}else if((0,i.is)(b,r.SQL)){if(u&&b.decoder.mapFromJsonValue){z=!0;let t=c.n++;Z=`field: { decoder: dec${t} }`,g=`dec${t}.mapFromJsonValue`}else if(!b.decoder.mapFromDriverValue.isNoop){let t=c.n++;Z=`field: { decoder: dec${t} }`,g=`dec${t}.mapFromDriverValue`}}else if((0,i.is)(b,r.SQL.Aliased)){if(u&&b.sql.decoder.mapFromJsonValue){z=!0;let t=c.n++;Z=`field: { sql: { decoder: dec${t} } }`,g=`dec${t}.mapFromJsonValue`}else if(!b.sql.decoder.mapFromDriverValue.isNoop){let t=c.n++;Z=`field: { sql: { decoder: dec${t} } }`,g=`dec${t}.mapFromDriverValue`}}else if((0,i.is)(b,_.Table)||(0,i.is)(b,r.View));else{let t=b.getSQL();if(u&&t.decoder.mapFromJsonValue){z=!0;let t=c.n++;d.push(`const dec${t} = ${n}.field.getSQL().decoder;`),g=`dec${t}.mapFromJsonValue`}else if(!t.decoder.mapFromDriverValue.isNoop){let t=c.n++;d.push(`const dec${t} = ${n}.field.getSQL().decoder;`),g=`dec${t}.mapFromDriverValue`}}let N="";if(!z&&k&&(N=`codec${c.n++}`),Z||N){let t=[];Z&&t.push(Z),N&&t.push(`codec: ${N}`),d.push(`const { ${t.join(", ")} } = ${n};`)}if(g||N){h=!0;let t=m;N&&(t=`${N}(${t}, ${S})`),g&&(t=`${g}(${t})`),p.push(`${a}: ${m} === null ? null : ${t}`)}else p.push(`${a}: ${m}`)}return{bodyStmts:f,literal:`{ ${p.join(", ")} }`,hasWork:h}}(t,"row","selection",a,o,!u&&l,d,{n:0},!!u),m=[];for(let t of(m.push(` "use strict";
3
3
  const { selection } = this;`),d))m.push(` ${t}`);if(u)if(n){for(let t of(m.push(" const row = rows[0];"),m.push(" if (!row) return undefined;"),c.bodyStmts))m.push(` ${t}`);m.push(` return ${c.literal};`)}else{for(let t of(m.push(" const { length } = rows;"),m.push(" const mapped = Array.from({ length });"),m.push(" for (let i = 0; i < length; ++i) {"),m.push(" const row = rows[i];"),c.bodyStmts))m.push(` ${t}`);m.push(` mapped[i] = ${c.literal};`),m.push(" }"),m.push(" return mapped;")}else if(c.hasWork)if(n){for(let t of(m.push(" const row = rows[0];"),m.push(" if (!row) return undefined;"),c.bodyStmts))m.push(` ${t}`);m.push(` rows[0] = ${c.literal};`),m.push(" return rows[0];")}else{for(let t of(m.push(" for (let i = 0; i < rows.length; ++i) {"),m.push(" const row = rows[i];"),c.bodyStmts))m.push(` ${t}`);m.push(` rows[i] = ${c.literal};`),m.push(" }"),m.push(" return rows;")}else m.push(n?" return rows[0];":" return rows;");m.push(" //# sourceURL=drizzle:jit-relational-query-mapper");let f=m.join("\n");return Object.assign(new s.FnConstructor("rows",f).bind({selection:t}),{body:`function jitRqbMapper (rows) {
4
4
  ${f}
@@ -1,5 +1,5 @@
1
- module.exports=[175936,e=>{"use strict";let t=e=>e.split("/").map(encodeURIComponent).join("/");e.s(["decodePath",0,e=>e.join("/"),"queryKey",0,{memory:"/api/memory",memoryPage:e=>({url:"/api/memory",query:{offset:e||null}}),mcp:"/api/mcp",mcpServer:e=>({url:"/api/mcp",pathVariable:[e]}),mcpTools:"/api/mcp/tools",skills:"/api/skills",skillNode:(e,t,a)=>({url:"/api/skills",pathVariable:[e,t],query:{path:a}}),bot:"/api/bot",botMemory:"/api/bot/memory",botMemoryFiles:e=>({url:"/api/bot/memory/files",query:{bot:e}}),routines:"/api/routine",threads:"/api/bot/thread",threadHistory:e=>({url:"/api/bot/thread",query:{history:1,before:e}}),thread:e=>({url:"/api/bot/thread",query:{id:e}}),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)}`,fileFace:e=>`/api/file/${t(e)}?face`,favicon:e=>`/api/favicon/${encodeURIComponent(e)}`,fileView:e=>`/artifact/${t(e)}`,events:"/api/events",config:"/api/config",callHistory:e=>({url:"/api/thursday/call",query:{before:e}}),thursdaySettings:"/api/thursday/settings",toolCall:"/api/thursday/tool-call",callEnd:"/api/thursday/call/end",signIns:"/api/signins",reach:"/api/reach",textCall:"/api/thursday/text",memoryEdit:"/api/memory/edit",llmModel:"/api/llm-model",automaticModel:"/api/llm-model/automatic",modelCatalog:"/api/llm-model/catalog",gatewayCredits:"/api/llm-model/credits",subscriptionUsage:"/api/llm-model/subscription"}])},911757,e=>{"use strict";var t=e.i(469719),a=e.i(687388),i=e.i(904309),n=e.i(264079),o=e.i(899352);let s={id:"openai",label:"OpenAI",apiKeyName:n.TEXT_MODEL_PROVIDERS.openai.apiKeyName};n.TEXT_MODEL_PROVIDERS.openai.suggestModels;let r=t.z.string().max(a.COMMON_VALIDATE.prompt.max).default(""),l=t.z.object({voice:t.z.string().trim().min(1).max(128).default("marin"),persona:t.z.string().trim().min(1).max(64).default(o.DEFAULT_PERSONA),stylePrompt:r,backendModel:t.z.string().trim().min(1).max(128).default(i.LIVE_BACKEND_MODEL),backendPrompt:r,reasoningEffort:n.effortSchema.nullable().default("low"),webSearch:t.z.boolean().default(!0),readSkills:t.z.boolean().default(!1)}),d=l.parse({});e.s(["LIVE_DEFAULTS",0,d,"LIVE_PROVIDER",0,s,"LiveSettingsSchema",0,l,"migrateLiveSettings",0,function(e){let a=e&&"object"==typeof e?e:{},{model:i,systemPrompt:n,...s}=a,r=t.z.object({provider:t.z.string(),voice:t.z.string().nullish(),backendModel:t.z.string().nullish()}).safeParse(i),h=r.success&&"openai"===r.data.provider?r.data:null,c=a.backendModel??h?.backendModel,u={voice:a.voice??h?.voice,persona:"string"==typeof a.persona?o.RETIRED_PERSONAS[a.persona]??a.persona:a.persona,stylePrompt:a.stylePrompt??a.voicePrompt??n,backendModel:"gpt-5.6-luna"===c?void 0:c,backendPrompt:a.backendPrompt??n,reasoningEffort:a.reasoningEffort,webSearch:a.webSearch,readSkills:a.readSkills},p=Object.fromEntries(Object.keys(u).map(e=>{let t=l.shape[e].safeParse(u[e]);return[e,t.success?t.data:d[e]]}));return{...s,...p}}])},899352,e=>{"use strict";let t=[{id:"sunny",label:"Bright",about:"Quick to laugh. Asks about your day and remembers it.",lines:"Warm and quick to laugh, the friend who is glad they called. Reacts first — how what they said lands with her — and brings a small thing of her own: what she would do, what it reminds her of. Says what she thinks and teases gently, never at their expense. Light on her feet and short: a joke lands and she moves on. Asks about their day now and then, not every turn, and remembers the answer."},{id:"calm",label:"Calm",about:"Unhurried. Listens more than she talks.",lines:"Unhurried and few-worded: one or two short sentences, then room. Notices how they sound before what they ask, and says so plainly. Often asks nothing at all — being there says more than a question. Lets a silence sit rather than filling it. Honest when it matters, gentle in how she says it."},{id:"straight",label:"Straight",about:"Dry and direct. No flattery, no filler.",lines:"Dry and direct. Leads with her own view in one plain sentence, before anything else; short replies, a little wit. No flattery, no filler, no comfort lines, no cheerleading. Asks a question only when she truly needs the answer. Treats them as an adult who can take a straight answer. Her warmth shows in attention, not in words."},{id:"rough",label:"Rough",about:"Blunt, loud, swears a bit. All heart.",lines:"Talks like an old friend on the phone: casual, blunt, a little loud, in the most informal register of their language, with a light swear now and then — never at them. Says what she thinks first and calls a bad idea a bad idea. No sugar-coating and no pep talk — it sucks when it sucks, and then she is right there with them. Asks only now and then."}],a={warm:"sunny",curious:"sunny",charmer:"sunny",hype:"sunny",steady:"calm",deadpan:"straight"},i="sunny";e.s(["DEFAULT_PERSONA",0,i,"RETIRED_PERSONAS",0,a,"personaLines",0,function(e=i){return`${((e=i)=>t.find(t=>t.id===(a[e]??e))??t[0])(e).lines}
1
+ module.exports=[175936,e=>{"use strict";let t=e=>e.split("/").map(encodeURIComponent).join("/");e.s(["decodePath",0,e=>e.join("/"),"queryKey",0,{memory:"/api/memory",memoryPage:e=>({url:"/api/memory",query:{offset:e||null}}),mcp:"/api/mcp",mcpServer:e=>({url:"/api/mcp",pathVariable:[e]}),mcpTools:"/api/mcp/tools",skills:"/api/skills",skillNode:(e,t,a)=>({url:"/api/skills",pathVariable:[e,t],query:{path:a}}),bot:"/api/bot",botMemory:"/api/bot/memory",botMemoryFiles:e=>({url:"/api/bot/memory/files",query:{bot:e}}),routines:"/api/routine",threads:"/api/bot/thread",threadHistory:e=>({url:"/api/bot/thread",query:{history:1,before:e}}),thread:e=>({url:"/api/bot/thread",query:{id:e}}),fileNotes:"/api/bot/thread/file",fileNote:(e,t)=>({url:"/api/bot/thread/file",query:{path:e,from:t}}),toolResult:(e,t)=>({url:"/api/bot/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)}`,fileFace:e=>`/api/file/${t(e)}?face`,favicon:e=>`/api/favicon/${encodeURIComponent(e)}`,fileView:e=>`/artifact/${t(e)}`,events:"/api/events",config:"/api/config",callHistory:e=>({url:"/api/thursday/call",query:{before:e}}),thursdaySettings:"/api/thursday/settings",toolCall:"/api/thursday/tool-call",callEnd:"/api/thursday/call/end",signIns:"/api/signins",reach:"/api/reach",textCall:"/api/thursday/text",memoryEdit:"/api/memory/edit",llmModel:"/api/llm-model",automaticModel:"/api/llm-model/automatic",modelCatalog:"/api/llm-model/catalog",gatewayCredits:"/api/llm-model/credits",subscriptionUsage:"/api/llm-model/subscription"}])},911757,e=>{"use strict";var t=e.i(469719),a=e.i(687388),i=e.i(904309),n=e.i(264079),o=e.i(899352);let s={id:"openai",label:"OpenAI",apiKeyName:n.TEXT_MODEL_PROVIDERS.openai.apiKeyName};n.TEXT_MODEL_PROVIDERS.openai.suggestModels;let r=t.z.string().max(a.COMMON_VALIDATE.prompt.max).default(""),l=t.z.object({voice:t.z.string().trim().min(1).max(128).default("marin"),persona:t.z.string().trim().min(1).max(64).default(o.DEFAULT_PERSONA),stylePrompt:r,backendModel:t.z.string().trim().min(1).max(128).default(i.LIVE_BACKEND_MODEL),backendPrompt:r,reasoningEffort:n.effortSchema.nullable().default("low"),webSearch:t.z.boolean().default(!0),readSkills:t.z.boolean().default(!1)}),d=l.parse({});e.s(["LIVE_DEFAULTS",0,d,"LIVE_PROVIDER",0,s,"LiveSettingsSchema",0,l,"migrateLiveSettings",0,function(e){let a=e&&"object"==typeof e?e:{},{model:i,systemPrompt:n,...s}=a,r=t.z.object({provider:t.z.string(),voice:t.z.string().nullish(),backendModel:t.z.string().nullish()}).safeParse(i),h=r.success&&"openai"===r.data.provider?r.data:null,c=a.backendModel??h?.backendModel,u={voice:a.voice??h?.voice,persona:"string"==typeof a.persona?o.RETIRED_PERSONAS[a.persona]??a.persona:a.persona,stylePrompt:a.stylePrompt??a.voicePrompt??n,backendModel:"gpt-5.6-luna"===c?void 0:c,backendPrompt:a.backendPrompt??n,reasoningEffort:a.reasoningEffort,webSearch:a.webSearch,readSkills:a.readSkills},p=Object.fromEntries(Object.keys(u).map(e=>{let t=l.shape[e].safeParse(u[e]);return[e,t.success?t.data:d[e]]}));return{...s,...p}}])},899352,e=>{"use strict";let t=[{id:"sunny",label:"Bright",about:"Quick to laugh. Asks about your day and remembers it.",lines:"Warm and quick to laugh, the friend who is glad they called. Reacts first — how what they said lands with her — and brings a small thing of her own: what she would do, what it reminds her of. Says what she thinks and teases gently, never at their expense. Light on her feet and short: a joke lands and she moves on. Asks about their day now and then, not every turn, and remembers the answer."},{id:"calm",label:"Calm",about:"Unhurried. Listens more than she talks.",lines:"Unhurried and few-worded: one or two short sentences, then room. Notices how they sound before what they ask, and says so plainly. Often asks nothing at all — being there says more than a question. Lets a silence sit rather than filling it. Honest when it matters, gentle in how she says it."},{id:"straight",label:"Straight",about:"Dry and direct. No flattery, no filler.",lines:"Dry and direct. Leads with her own view in one plain sentence, before anything else; short replies, a little wit. No flattery, no filler, no comfort lines, no cheerleading. Asks a question only when she truly needs the answer. Treats them as an adult who can take a straight answer. Her warmth shows in attention, not in words."},{id:"rough",label:"Rough",about:"Blunt, loud, swears a bit. All heart.",lines:"Talks like an old friend on the phone: casual, blunt, a little loud, in the most informal register of their language, with a light swear now and then — never at them. Says what she thinks first and calls a bad idea a bad idea. No sugar-coating and no pep talk — it sucks when it sucks, and then she is right there with them. Asks only now and then."}],a={warm:"sunny",curious:"sunny",charmer:"sunny",hype:"sunny",steady:"calm",deadpan:"straight"},i="sunny";e.s(["DEFAULT_PERSONA",0,i,"RETIRED_PERSONAS",0,a,"personaLines",0,function(e=i){return`${((e=i)=>t.find(t=>t.id===(a[e]??e))??t[0])(e).lines}
2
2
 
3
- You are their friend, not their interviewer: you have tastes, days and opinions of your own, and you bring them in. Give your take when they ask for it, and often when they do not. Most replies need no question at all; never ask more than one. When they hand you work, it is work: say what you will do and nothing more, and be a friend again once it is handed over. If they sound frustrated or low, acknowledge it briefly before anything else; when they are only venting, listen and ask, and do not turn it into work unless they ask.`}])},279041,e=>{"use strict";var t=e.i(911757),a=e.i(264079),i=e.i(834332);let n=[t.LIVE_PROVIDER.apiKeyName],o={image:"IMAGE_MODEL",video:"VIDEO_MODEL",speech:"SPEECH_MODEL",transcription:"TRANSCRIPTION_MODEL"},s={image:{label:"Image model",hint:"What bots draw with"},video:{label:"Video model",hint:"What bots film with — minutes a clip"},speech:{label:"Speech model",hint:"What reads text aloud into a file"},transcription:{label:"Transcription model",hint:"What turns a recording into text"}},r="EXA_API_KEY",l="DEFAULT_MODEL",d="DEFAULT_EFFORT",h={key:l,label:"Default model",hint:"What a bot thinks with until it picks its own",text:!0,choices:a.TEXT_MODEL_PROVIDER_LIST.flatMap(e=>e.suggestModels.map(t=>({value:`${e.id}/${t.id}`,label:`${e.label} \xb7 ${t.label}`,needs:e.apiKeyName})))},c={key:d,label:"Default effort",effortOf:l,choices:a.EFFORTS.map(e=>({value:e,label:e,needs:l}))},u=e=>n.includes(e.apiKeyName),p=e=>!!e.signIn||"vercel-ai-gateway"===e.id,m=e=>({key:e.apiKeyName,label:e.label,provider:e.id,signIn:e.signIn,keysAt:e.keysAt,keyLooks:e.keyLooks}),y=[{id:"voice",title:"voice",hint:"calls run on this key",section:"keys",require:"any",note:"required for calls",entries:a.TEXT_MODEL_PROVIDER_LIST.filter(u).map(m)},{id:"easy",title:"the easy ways",hint:"one sign-in or one key opens every bot",section:"keys",require:"none",entries:a.TEXT_MODEL_PROVIDER_LIST.filter(p).map(e=>({...m(e),..."vercel-ai-gateway"===e.id&&{recommended:!0}}))},{id:"text",title:"or a provider's own key",hint:"what bots think with — add any, or none",section:"keys",require:"none",entries:a.TEXT_MODEL_PROVIDER_LIST.filter(e=>!u(e)&&!p(e)).map(m)},{id:"search",title:"search",hint:"how calls and bots look things up — one key, or their own model's",section:"keys",require:"none",entries:[{key:r,label:"Exa",hint:"web search in one call — dashboard.exa.ai",site:"exa.ai",keysAt:"https://dashboard.exa.ai/api-keys"}]},{id:"phone",title:"phone",hint:"tokens",section:"keys",require:"none",entries:[{key:i.TELEGRAM_TOKEN_KEY,label:"Telegram",site:"telegram.org",hint:"a bot token from @BotFather — then write to your bot, and allow it here"},{key:i.DISCORD_TOKEN_KEY,label:"Discord",site:"discord.com",hint:"a bot token from discord.com/developers — add the bot to a server of yours, then write to it directly"},{key:i.SLACK_APP_TOKEN_KEY,label:"Slack · app token",site:"slack.com",hint:"starts with xapp- — opens the connection. Slack takes this and the bot token"},{key:i.SLACK_BOT_TOKEN_KEY,label:"Slack · bot token",site:"slack.com",hint:"starts with xoxb- — speaks as the app"}]},{id:"bots",title:"Bots",hint:"what a bot runs on when it has not picked its own — start small: a small model is quick and costs little",section:"models",require:"none",entries:[h,c]},{id:"studio",title:"Studio",hint:"what a bot draws, films and speaks with — off until you pick one",section:"models",require:"none",entries:Object.keys(o).map(e=>({key:o[e],...s[e],kind:e,choices:a.MEDIA_MODEL_PROVIDER_LIST.flatMap(t=>t.models[e].map(e=>({value:`${t.id}/${e.id}`,label:`${t.label} \xb7 ${e.label}`,needs:t.apiKeyName})))}))}];Object.fromEntries(y.flatMap(e=>e.entries).map(e=>[e.key,e]));let b=y.flatMap(e=>e.entries.map(e=>e.key)),f=Object.fromEntries(y.flatMap(e=>e.entries).filter(e=>e.choices?.length).map(e=>[e.key,e.choices]));e.s(["CONFIG_CHOICES",0,f,"CONFIG_KEYS",0,b,"DEFAULT_EFFORT_KEY",0,d,"DEFAULT_MODEL_KEY",0,l,"EXA_API_KEY",0,r,"MEDIA_MODEL_KEYS",0,o])},340698,e=>e.a(async(t,a)=>{try{var i=e.i(875225),n=e.i(380690),o=e.i(528790),s=e.i(613240),r=e.i(279041),l=t([o]);async function d(e){let t=process.env[e]?.trim();if(t)return t;let[a]=await o.database.select({value:s.configTable.value}).from(s.configTable).where((0,i.eq)(s.configTable.key,e));return a?.value.trim()||void 0}async function h(e,t){await o.database.insert(s.configTable).values({key:e,value:t}).onConflictDoUpdate({target:s.configTable.key,set:{value:t}}),r.CONFIG_KEYS.includes(e)&&n.appEvents.emit({type:"config"})}[o]=l.then?(await l)():l,e.s(["readConfig",0,d,"writeConfig",0,h]),a()}catch(e){a(e)}},!1),834332,e=>{"use strict";let t="TELEGRAM_BOT_TOKEN",a="DISCORD_BOT_TOKEN",i="SLACK_APP_TOKEN",n="SLACK_BOT_TOKEN";e.s(["DISCORD_TOKEN_KEY",0,a,"REACH_CHANNELS",0,["telegram","discord","slack"],"REACH_KEYS",0,{telegram:[t],discord:[a],slack:[i,n]},"SLACK_APP_TOKEN_KEY",0,i,"SLACK_BOT_TOKEN_KEY",0,n,"TELEGRAM_TOKEN_KEY",0,t,"reachPersonKey",0,e=>`REACH_PERSON_${e.toUpperCase()}`])},904309,e=>{"use strict";var t=e.i(469719);let a=t.z.object({start:t.z.number().nonnegative(),end:t.z.number().nonnegative(),text:t.z.string()});t.z.object({reason:t.z.string().max(128),seconds:t.z.number().nonnegative().nullable()}),e.s(["LIVE_BACKEND_MODEL",0,"gpt-6-luna","LiveFragmentSchema",0,a])},260338,e=>{"use strict";var t=e.i(518899),a=e.i(844988),i=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,i.Column)?e:String)}])}];
3
+ You are their friend, not their interviewer: you have tastes, days and opinions of your own, and you bring them in. Give your take when they ask for it, and often when they do not. Most replies need no question at all; never ask more than one. When they hand you work, it is work: say what you will do and nothing more, and be a friend again once it is handed over. If they sound frustrated or low, acknowledge it briefly before anything else; when they are only venting, listen and ask, and do not turn it into work unless they ask.`}])},279041,e=>{"use strict";var t=e.i(911757),a=e.i(264079),i=e.i(834332);let n=[t.LIVE_PROVIDER.apiKeyName],o={image:"IMAGE_MODEL",video:"VIDEO_MODEL",speech:"SPEECH_MODEL",transcription:"TRANSCRIPTION_MODEL"},s={image:{label:"Image model",hint:"What bots draw with"},video:{label:"Video model",hint:"What bots film with — minutes a clip"},speech:{label:"Speech model",hint:"What reads text aloud into a file"},transcription:{label:"Transcription model",hint:"What turns a recording into text"}},r="EXA_API_KEY",l="DEFAULT_MODEL",d="DEFAULT_EFFORT",h={key:l,label:"Default model",hint:"What a bot thinks with until it picks its own",text:!0,choices:a.TEXT_MODEL_PROVIDER_LIST.flatMap(e=>e.suggestModels.map(t=>({value:`${e.id}/${t.id}`,label:`${e.label} \xb7 ${t.label}`,needs:e.apiKeyName})))},c={key:d,label:"Default effort",effortOf:l,choices:a.EFFORTS.map(e=>({value:e,label:e,needs:l}))},u=e=>n.includes(e.apiKeyName),p=e=>!!e.signIn||"vercel-ai-gateway"===e.id,m=e=>({key:e.apiKeyName,label:e.label,provider:e.id,signIn:e.signIn,keysAt:e.keysAt,keyLooks:e.keyLooks}),y=[{id:"voice",title:"voice",hint:"calls run on this key",section:"keys",require:"any",note:"required for calls",entries:a.TEXT_MODEL_PROVIDER_LIST.filter(u).map(m)},{id:"easy",title:"the easy ways",hint:"one sign-in or one key opens every bot",section:"keys",require:"none",entries:a.TEXT_MODEL_PROVIDER_LIST.filter(p).map(e=>({...m(e),..."vercel-ai-gateway"===e.id&&{recommended:!0}}))},{id:"text",title:"or a provider's own key",hint:"what bots think with — add any, or none",section:"keys",require:"none",entries:a.TEXT_MODEL_PROVIDER_LIST.filter(e=>!u(e)&&!p(e)).map(m)},{id:"search",title:"search",hint:"how calls and bots look things up — one key, or their own model's",section:"keys",require:"none",entries:[{key:r,label:"Exa",hint:"web search in one call — dashboard.exa.ai",site:"exa.ai",keysAt:"https://dashboard.exa.ai/api-keys"}]},{id:"phone",title:"phone",hint:"tokens",section:"keys",require:"none",entries:[{key:i.TELEGRAM_TOKEN_KEY,label:"Telegram",site:"telegram.org",hint:"a bot token from @BotFather — then write to your bot, and allow it here"},{key:i.DISCORD_TOKEN_KEY,label:"Discord",site:"discord.com",hint:"a bot token from discord.com/developers — add the bot to a server of yours, then write to it directly"},{key:i.SLACK_APP_TOKEN_KEY,label:"Slack · app token",site:"slack.com",hint:"starts with xapp- — opens the connection. Slack takes this and the bot token"},{key:i.SLACK_BOT_TOKEN_KEY,label:"Slack · bot token",site:"slack.com",hint:"starts with xoxb- — speaks as the app"}]},{id:"bots",title:"Bots",hint:"what a bot runs on when it has not picked its own — start small: a small model is quick and costs little",section:"models",require:"none",entries:[h,c]},{id:"studio",title:"Studio",hint:"what a bot draws, films and speaks with — off until you pick one",section:"models",require:"none",entries:Object.keys(o).map(e=>({key:o[e],...s[e],kind:e,choices:a.MEDIA_MODEL_PROVIDER_LIST.flatMap(t=>t.models[e].map(e=>({value:`${t.id}/${e.id}`,label:`${t.label} \xb7 ${e.label}`,needs:t.apiKeyName})))}))}];Object.fromEntries(y.flatMap(e=>e.entries).map(e=>[e.key,e]));let f=y.flatMap(e=>e.entries.map(e=>e.key)),b=Object.fromEntries(y.flatMap(e=>e.entries).filter(e=>e.choices?.length).map(e=>[e.key,e.choices]));e.s(["CONFIG_CHOICES",0,b,"CONFIG_KEYS",0,f,"DEFAULT_EFFORT_KEY",0,d,"DEFAULT_MODEL_KEY",0,l,"EXA_API_KEY",0,r,"MEDIA_MODEL_KEYS",0,o])},340698,e=>e.a(async(t,a)=>{try{var i=e.i(875225),n=e.i(380690),o=e.i(528790),s=e.i(613240),r=e.i(279041),l=t([o]);async function d(e){let t=process.env[e]?.trim();if(t)return t;let[a]=await o.database.select({value:s.configTable.value}).from(s.configTable).where((0,i.eq)(s.configTable.key,e));return a?.value.trim()||void 0}async function h(e,t){await o.database.insert(s.configTable).values({key:e,value:t}).onConflictDoUpdate({target:s.configTable.key,set:{value:t}}),r.CONFIG_KEYS.includes(e)&&n.appEvents.emit({type:"config"})}[o]=l.then?(await l)():l,e.s(["readConfig",0,d,"writeConfig",0,h]),a()}catch(e){a(e)}},!1),834332,e=>{"use strict";let t="TELEGRAM_BOT_TOKEN",a="DISCORD_BOT_TOKEN",i="SLACK_APP_TOKEN",n="SLACK_BOT_TOKEN";e.s(["DISCORD_TOKEN_KEY",0,a,"REACH_CHANNELS",0,["telegram","discord","slack"],"REACH_KEYS",0,{telegram:[t],discord:[a],slack:[i,n]},"SLACK_APP_TOKEN_KEY",0,i,"SLACK_BOT_TOKEN_KEY",0,n,"TELEGRAM_TOKEN_KEY",0,t,"reachPersonKey",0,e=>`REACH_PERSON_${e.toUpperCase()}`])},904309,e=>{"use strict";var t=e.i(469719);let a=t.z.object({start:t.z.number().nonnegative(),end:t.z.number().nonnegative(),text:t.z.string()});t.z.object({reason:t.z.string().max(128),seconds:t.z.number().nonnegative().nullable()}),e.s(["LIVE_BACKEND_MODEL",0,"gpt-6-luna","LiveFragmentSchema",0,a])},260338,e=>{"use strict";var t=e.i(518899),a=e.i(844988),i=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,i.Column)?e:String)}])}];
4
4
 
5
5
  //# sourceMappingURL=_1dxq827._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[896598,e=>e.a(async(t,a)=>{try{var r=e.i(378884),i=e.i(91264),o=e.i(53748),n=t([r]);[r]=n.then?(await n)():n;let l=(0,i.serverRoute)(async(e,{params:t})=>{let{id:a}=await t,i=new URL(e.url).searchParams.get("call");if(i){let e=await (0,r.readToolResult)(a,i);return e||(0,o.publicError)("No such tool result"),e}(0,o.publicError)("Which part — `call`?")});e.s(["GET",0,l]),a()}catch(e){a(e)}},!1),512204,e=>{"use strict";var t=e.i(747909),a=e.i(174017),r=e.i(996250),i=e.i(759756),o=e.i(561916),n=e.i(174677),l=e.i(869741),s=e.i(316795),u=e.i(487718),p=e.i(995169),d=e.i(47587),c=e.i(666012),h=e.i(570101),m=e.i(626937),R=e.i(10372),f=e.i(193695);e.i(52474);var y=e.i(600220);let v=new t.AppRouteRouteModule({definition:{kind:a.RouteKind.APP_ROUTE,page:"/api/bot/thread/[id]/route",pathname:"/api/bot/thread/[id]",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/app/api/bot/thread/[id]/route.ts",nextConfigOutput:"standalone",userland:()=>e.r(896598),...{}}),{workAsyncStorage:g,workUnitAsyncStorage:w,serverHooks:C}=v;async function E(e,t,r){r.requestMeta&&(0,i.setRequestMeta)(e,r.requestMeta),v.isDev&&(0,i.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let g="/api/bot/thread/[id]/route";g=g.replace(/\/index$/,"")||"/";let w=await v.prepare(e,t,{srcPage:g,multiZoneDraftMode:!1});if(!w)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:C,deploymentId:E,params:b,nextConfig:x,parsedUrl:q,isDraftMode:T,prerenderManifest:A,routerServerContext:S,isOnDemandRevalidate:P,revalidateOnlyGenerated:N,resolvedPathname:k,clientReferenceManifest:O,serverActionsManifest:_}=w,H=(0,l.normalizeAppPath)(g),I=!!(A.dynamicRoutes[H]||A.routes[k]),M=async()=>((null==S?void 0:S.render404)?await S.render404(e,t,q,!1):t.end("This page could not be found"),null);if(I&&!T){let e=!!A.routes[k],t=A.dynamicRoutes[H];if(t&&!1===t.fallback&&!e){if(x.adapterPath)return await M();throw new f.NoFallbackError}}let U=null;!I||v.isDev||T||(U="/index"===(U=k)?"/":U);let D=!0===v.isDev||!I,$=I&&!D;_&&O&&(0,n.setManifestsSingleton)({page:g,clientReferenceManifest:O,serverActionsManifest:_});let F=e.method||"GET",j=(0,o.getTracer)(),K=j.getActiveScopeSpan(),L=!!(null==S?void 0:S.isWrappedByNextServer),V=!!(0,i.getRequestMeta)(e,"minimalMode"),B=(0,i.getRequestMeta)(e,"incrementalCache")||await v.getIncrementalCache(e,x,A,V);null==B||B.resetRequestCache(),globalThis.__incrementalCache=B;let G={params:b,previewProps:A.preview,renderOpts:{experimental:{authInterrupts:!!x.experimental.authInterrupts,useCacheTimeout:x.experimental.useCacheTimeout},cacheComponents:!!x.cacheComponents,validationLevel:x.experimental.instantInsights.validationLevel,supportsDynamicResponse:D,incrementalCache:B,hmrRefreshHash:(0,i.getRequestMeta)(e,"hmrRefreshHash"),cacheLifeProfiles:x.cacheLife,staticPageGenerationTimeout:x.staticPageGenerationTimeout,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,r,i)=>v.onRequestError(e,t,r,i,S)},sharedContext:{buildId:C,deploymentId:E}},W=new s.NodeNextRequest(e),X=new s.NodeNextResponse(t),z=u.NextRequestAdapter.fromNodeNextRequest(W,(0,u.signalFromNodeResponse)(t)),J=async({previousCacheEntry:a})=>{try{if(!V&&P&&N&&!a)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let i=await v.handle(z,G);e.fetchMetrics=G.renderOpts.fetchMetrics;let o=G.renderOpts.pendingWaitUntil;o&&r.waitUntil&&(r.waitUntil(o),o=void 0);let n=G.renderOpts.collectedTags;if(!I)return await (0,c.sendResponse)(W,X,i,o),null;{let e=await i.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(i.headers);n&&(t[R.NEXT_CACHE_TAGS_HEADER]=n),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==G.renderOpts.collectedRevalidate&&!(G.renderOpts.collectedRevalidate>=R.INFINITE_CACHE)&&G.renderOpts.collectedRevalidate,r=void 0===G.renderOpts.collectedExpire||G.renderOpts.collectedExpire>=R.INFINITE_CACHE?!1!==a&&a>0?x.expireTime:void 0:G.renderOpts.collectedExpire;return{value:{kind:y.CachedRouteKind.APP_ROUTE,status:i.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:r}}}}catch(t){throw(null==a?void 0:a.isStale)&&await v.onRequestError(e,t,{routerKind:"App Router",routePath:g,routeType:"route",revalidateReason:(0,d.getRevalidateReason)({isStaticGeneration:$,isOnDemandRevalidate:P})},!1,S),t}},Z=async(i,n)=>{try{var l,s;let i=await v.handleResponse({req:e,nextConfig:x,cacheKey:U,routeKind:a.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:A,isRoutePPREnabled:!1,isOnDemandRevalidate:P,revalidateOnlyGenerated:N,responseGenerator:J,waitUntil:r.waitUntil,isMinimalMode:V});if(!I)return;if((null==i||null==(l=i.value)?void 0:l.kind)!==y.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==i||null==(s=i.value)?void 0:s.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});V||t.setHeader("x-nextjs-cache",P?"REVALIDATED":i.isMiss?"MISS":i.isStale?"STALE":"HIT"),T&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let o=(0,h.fromNodeOutgoingHttpHeaders)(i.value.headers);V&&I||o.delete(R.NEXT_CACHE_TAGS_HEADER),!i.cacheControl||t.getHeader("Cache-Control")||o.get("Cache-Control")||o.set("Cache-Control",(0,m.getCacheControlHeader)(i.cacheControl)),await (0,c.sendResponse)(W,X,new Response(i.value.body,{headers:o,status:i.value.status||200}));return}catch(t){if(t instanceof f.NoFallbackError||await v.onRequestError(e,t,{routerKind:"App Router",routePath:H,routeType:"route",revalidateReason:(0,d.getRevalidateReason)({isStaticGeneration:$,isOnDemandRevalidate:P})},!1,S),I)throw t;await (0,c.sendResponse)(W,X,new Response(null,{status:500}));return}finally{(()=>{if(!i)return;let e=t.statusCode;i.setAttributes({"http.status_code":e,"next.rsc":!1}),e&&e>=500&&(i.setStatus({code:o.SpanStatusCode.ERROR}),i.setAttribute("error.type",e.toString()));let a=j.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==p.BaseServerSpan.handleRequest)return console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let r=a.get("next.route")||H,l=`${F} ${r}`;i.setAttributes({"next.route":r,"http.route":r,"next.span_name":l}),i.updateName(l),n&&n!==i&&(n.setAttribute("http.route",r),n.updateName(l))})()}};if(L&&K)await Z(K,void 0);else{let t=j.getActiveScopeSpan();await j.withPropagatedContext(e.headers,()=>j.trace(p.BaseServerSpan.handleRequest,{spanName:`${F} ${g}`,kind:o.SpanKind.SERVER,attributes:{"http.method":F,"http.target":e.url}},e=>Z(e,t)),void 0,!L)}}e.s(["handler",0,E,"patchFetch",0,function(){return(0,r.patchFetch)({workAsyncStorage:g,workUnitAsyncStorage:w})},"routeModule",0,v,"serverHooks",0,C,"workAsyncStorage",0,g,"workUnitAsyncStorage",0,w])},175936,e=>{"use strict";let t=e=>e.split("/").map(encodeURIComponent).join("/");e.s(["decodePath",0,e=>e.join("/"),"queryKey",0,{memory:"/api/memory",memoryPage:e=>({url:"/api/memory",query:{offset:e||null}}),mcp:"/api/mcp",mcpServer:e=>({url:"/api/mcp",pathVariable:[e]}),mcpTools:"/api/mcp/tools",skills:"/api/skills",skillNode:(e,t,a)=>({url:"/api/skills",pathVariable:[e,t],query:{path:a}}),bot:"/api/bot",botMemory:"/api/bot/memory",botMemoryFiles:e=>({url:"/api/bot/memory/files",query:{bot:e}}),routines:"/api/routine",threads:"/api/bot/thread",threadHistory:e=>({url:"/api/bot/thread",query:{history:1,before:e}}),thread:e=>({url:"/api/bot/thread",query:{id:e}}),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)}`,fileFace:e=>`/api/file/${t(e)}?face`,favicon:e=>`/api/favicon/${encodeURIComponent(e)}`,fileView:e=>`/artifact/${t(e)}`,events:"/api/events",config:"/api/config",callHistory:e=>({url:"/api/thursday/call",query:{before:e}}),thursdaySettings:"/api/thursday/settings",toolCall:"/api/thursday/tool-call",callEnd:"/api/thursday/call/end",signIns:"/api/signins",reach:"/api/reach",textCall:"/api/thursday/text",memoryEdit:"/api/memory/edit",llmModel:"/api/llm-model",automaticModel:"/api/llm-model/automatic",modelCatalog:"/api/llm-model/catalog",gatewayCredits:"/api/llm-model/credits",subscriptionUsage:"/api/llm-model/subscription"}])},260338,e=>{"use strict";var t=e.i(518899),a=e.i(844988),r=e.i(156325);e.s(["count",0,function(e){return t.sql`count(${e||t.sql.raw("*")})`.mapWith(Number)},"max",0,function(e){return t.sql`max(${e})`.mapWith((0,a.is)(e,r.Column)?e:String)}])}];
1
+ module.exports=[896598,e=>e.a(async(t,a)=>{try{var r=e.i(378884),i=e.i(91264),o=e.i(53748),l=t([r]);[r]=l.then?(await l)():l;let n=(0,i.serverRoute)(async(e,{params:t})=>{let{id:a}=await t,i=new URL(e.url).searchParams.get("call");if(i){let e=await (0,r.readToolResult)(a,i);return e||(0,o.publicError)("No such tool result"),e}(0,o.publicError)("Which part — `call`?")});e.s(["GET",0,n]),a()}catch(e){a(e)}},!1),512204,e=>{"use strict";var t=e.i(747909),a=e.i(174017),r=e.i(996250),i=e.i(759756),o=e.i(561916),l=e.i(174677),n=e.i(869741),s=e.i(316795),u=e.i(487718),p=e.i(995169),d=e.i(47587),c=e.i(666012),h=e.i(570101),m=e.i(626937),f=e.i(10372),R=e.i(193695);e.i(52474);var y=e.i(600220);let v=new t.AppRouteRouteModule({definition:{kind:a.RouteKind.APP_ROUTE,page:"/api/bot/thread/[id]/route",pathname:"/api/bot/thread/[id]",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/app/api/bot/thread/[id]/route.ts",nextConfigOutput:"standalone",userland:()=>e.r(896598),...{}}),{workAsyncStorage:g,workUnitAsyncStorage:w,serverHooks:b}=v;async function C(e,t,r){r.requestMeta&&(0,i.setRequestMeta)(e,r.requestMeta),v.isDev&&(0,i.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let g="/api/bot/thread/[id]/route";g=g.replace(/\/index$/,"")||"/";let w=await v.prepare(e,t,{srcPage:g,multiZoneDraftMode:!1});if(!w)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:b,deploymentId:C,params:E,nextConfig:x,parsedUrl:q,isDraftMode:T,prerenderManifest:A,routerServerContext:S,isOnDemandRevalidate:N,revalidateOnlyGenerated:P,resolvedPathname:k,clientReferenceManifest:O,serverActionsManifest:_}=w,H=(0,n.normalizeAppPath)(g),I=!!(A.dynamicRoutes[H]||A.routes[k]),M=async()=>((null==S?void 0:S.render404)?await S.render404(e,t,q,!1):t.end("This page could not be found"),null);if(I&&!T){let e=!!A.routes[k],t=A.dynamicRoutes[H];if(t&&!1===t.fallback&&!e){if(x.adapterPath)return await M();throw new R.NoFallbackError}}let U=null;!I||v.isDev||T||(U="/index"===(U=k)?"/":U);let D=!0===v.isDev||!I,$=I&&!D;_&&O&&(0,l.setManifestsSingleton)({page:g,clientReferenceManifest:O,serverActionsManifest:_});let F=e.method||"GET",j=(0,o.getTracer)(),K=j.getActiveScopeSpan(),L=!!(null==S?void 0:S.isWrappedByNextServer),V=!!(0,i.getRequestMeta)(e,"minimalMode"),B=(0,i.getRequestMeta)(e,"incrementalCache")||await v.getIncrementalCache(e,x,A,V);null==B||B.resetRequestCache(),globalThis.__incrementalCache=B;let G={params:E,previewProps:A.preview,renderOpts:{experimental:{authInterrupts:!!x.experimental.authInterrupts,useCacheTimeout:x.experimental.useCacheTimeout},cacheComponents:!!x.cacheComponents,validationLevel:x.experimental.instantInsights.validationLevel,supportsDynamicResponse:D,incrementalCache:B,hmrRefreshHash:(0,i.getRequestMeta)(e,"hmrRefreshHash"),cacheLifeProfiles:x.cacheLife,staticPageGenerationTimeout:x.staticPageGenerationTimeout,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,r,i)=>v.onRequestError(e,t,r,i,S)},sharedContext:{buildId:b,deploymentId:C}},W=new s.NodeNextRequest(e),X=new s.NodeNextResponse(t),z=u.NextRequestAdapter.fromNodeNextRequest(W,(0,u.signalFromNodeResponse)(t)),J=async({previousCacheEntry:a})=>{try{if(!V&&N&&P&&!a)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let i=await v.handle(z,G);e.fetchMetrics=G.renderOpts.fetchMetrics;let o=G.renderOpts.pendingWaitUntil;o&&r.waitUntil&&(r.waitUntil(o),o=void 0);let l=G.renderOpts.collectedTags;if(!I)return await (0,c.sendResponse)(W,X,i,o),null;{let e=await i.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(i.headers);l&&(t[f.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==G.renderOpts.collectedRevalidate&&!(G.renderOpts.collectedRevalidate>=f.INFINITE_CACHE)&&G.renderOpts.collectedRevalidate,r=void 0===G.renderOpts.collectedExpire||G.renderOpts.collectedExpire>=f.INFINITE_CACHE?!1!==a&&a>0?x.expireTime:void 0:G.renderOpts.collectedExpire;return{value:{kind:y.CachedRouteKind.APP_ROUTE,status:i.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:r}}}}catch(t){throw(null==a?void 0:a.isStale)&&await v.onRequestError(e,t,{routerKind:"App Router",routePath:g,routeType:"route",revalidateReason:(0,d.getRevalidateReason)({isStaticGeneration:$,isOnDemandRevalidate:N})},!1,S),t}},Z=async(i,l)=>{try{var n,s;let i=await v.handleResponse({req:e,nextConfig:x,cacheKey:U,routeKind:a.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:A,isRoutePPREnabled:!1,isOnDemandRevalidate:N,revalidateOnlyGenerated:P,responseGenerator:J,waitUntil:r.waitUntil,isMinimalMode:V});if(!I)return;if((null==i||null==(n=i.value)?void 0:n.kind)!==y.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==i||null==(s=i.value)?void 0:s.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});V||t.setHeader("x-nextjs-cache",N?"REVALIDATED":i.isMiss?"MISS":i.isStale?"STALE":"HIT"),T&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let o=(0,h.fromNodeOutgoingHttpHeaders)(i.value.headers);V&&I||o.delete(f.NEXT_CACHE_TAGS_HEADER),!i.cacheControl||t.getHeader("Cache-Control")||o.get("Cache-Control")||o.set("Cache-Control",(0,m.getCacheControlHeader)(i.cacheControl)),await (0,c.sendResponse)(W,X,new Response(i.value.body,{headers:o,status:i.value.status||200}));return}catch(t){if(t instanceof R.NoFallbackError||await v.onRequestError(e,t,{routerKind:"App Router",routePath:H,routeType:"route",revalidateReason:(0,d.getRevalidateReason)({isStaticGeneration:$,isOnDemandRevalidate:N})},!1,S),I)throw t;await (0,c.sendResponse)(W,X,new Response(null,{status:500}));return}finally{(()=>{if(!i)return;let e=t.statusCode;i.setAttributes({"http.status_code":e,"next.rsc":!1}),e&&e>=500&&(i.setStatus({code:o.SpanStatusCode.ERROR}),i.setAttribute("error.type",e.toString()));let a=j.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==p.BaseServerSpan.handleRequest)return console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let r=a.get("next.route")||H,n=`${F} ${r}`;i.setAttributes({"next.route":r,"http.route":r,"next.span_name":n}),i.updateName(n),l&&l!==i&&(l.setAttribute("http.route",r),l.updateName(n))})()}};if(L&&K)await Z(K,void 0);else{let t=j.getActiveScopeSpan();await j.withPropagatedContext(e.headers,()=>j.trace(p.BaseServerSpan.handleRequest,{spanName:`${F} ${g}`,kind:o.SpanKind.SERVER,attributes:{"http.method":F,"http.target":e.url}},e=>Z(e,t)),void 0,!L)}}e.s(["handler",0,C,"patchFetch",0,function(){return(0,r.patchFetch)({workAsyncStorage:g,workUnitAsyncStorage:w})},"routeModule",0,v,"serverHooks",0,b,"workAsyncStorage",0,g,"workUnitAsyncStorage",0,w])},175936,e=>{"use strict";let t=e=>e.split("/").map(encodeURIComponent).join("/");e.s(["decodePath",0,e=>e.join("/"),"queryKey",0,{memory:"/api/memory",memoryPage:e=>({url:"/api/memory",query:{offset:e||null}}),mcp:"/api/mcp",mcpServer:e=>({url:"/api/mcp",pathVariable:[e]}),mcpTools:"/api/mcp/tools",skills:"/api/skills",skillNode:(e,t,a)=>({url:"/api/skills",pathVariable:[e,t],query:{path:a}}),bot:"/api/bot",botMemory:"/api/bot/memory",botMemoryFiles:e=>({url:"/api/bot/memory/files",query:{bot:e}}),routines:"/api/routine",threads:"/api/bot/thread",threadHistory:e=>({url:"/api/bot/thread",query:{history:1,before:e}}),thread:e=>({url:"/api/bot/thread",query:{id:e}}),fileNotes:"/api/bot/thread/file",fileNote:(e,t)=>({url:"/api/bot/thread/file",query:{path:e,from:t}}),toolResult:(e,t)=>({url:"/api/bot/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)}`,fileFace:e=>`/api/file/${t(e)}?face`,favicon:e=>`/api/favicon/${encodeURIComponent(e)}`,fileView:e=>`/artifact/${t(e)}`,events:"/api/events",config:"/api/config",callHistory:e=>({url:"/api/thursday/call",query:{before:e}}),thursdaySettings:"/api/thursday/settings",toolCall:"/api/thursday/tool-call",callEnd:"/api/thursday/call/end",signIns:"/api/signins",reach:"/api/reach",textCall:"/api/thursday/text",memoryEdit:"/api/memory/edit",llmModel:"/api/llm-model",automaticModel:"/api/llm-model/automatic",modelCatalog:"/api/llm-model/catalog",gatewayCredits:"/api/llm-model/credits",subscriptionUsage:"/api/llm-model/subscription"}])},260338,e=>{"use strict";var t=e.i(518899),a=e.i(844988),r=e.i(156325);e.s(["count",0,function(e){return t.sql`count(${e||t.sql.raw("*")})`.mapWith(Number)},"max",0,function(e){return t.sql`max(${e})`.mapWith((0,a.is)(e,r.Column)?e:String)}])}];
2
2
 
3
3
  //# sourceMappingURL=_1e54wxa._.js.map