thursday-agent 0.17.2 → 0.19.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 (444) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +4 -2
  3. package/.next/build-manifest.json +3 -3
  4. package/.next/prerender-manifest.json +3 -3
  5. package/.next/routes-manifest.json +28 -12
  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 +12 -12
  16. package/.next/server/app/_not-found.segments/_full.segment.rsc +12 -12
  17. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +11 -11
  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 +4 -4
  24. package/.next/server/app/api/bot/memory/route.js.nft.json +1 -1
  25. package/.next/server/app/api/bot/route.js +4 -4
  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.js +29 -0
  31. package/.next/server/app/api/bot/thread/file/route.js.nft.json +1 -0
  32. package/.next/server/app/api/bot/thread/file/route_client-reference-manifest.js +3 -0
  33. package/.next/server/app/api/bot/thread/route.js +1 -1
  34. package/.next/server/app/api/bot/thread/route.js.nft.json +1 -1
  35. package/.next/server/app/api/config/route.js +1 -1
  36. package/.next/server/app/api/config/route.js.nft.json +1 -1
  37. package/.next/server/app/api/events/route.js +2 -2
  38. package/.next/server/app/api/events/route.js.nft.json +1 -1
  39. package/.next/server/app/api/favicon/[host]/route.js.nft.json +1 -1
  40. package/.next/server/app/api/file/[...path]/route.js +4 -4
  41. package/.next/server/app/api/file/[...path]/route.js.nft.json +1 -1
  42. package/.next/server/app/api/llm-model/automatic/route.js +3 -3
  43. package/.next/server/app/api/llm-model/automatic/route.js.nft.json +1 -1
  44. package/.next/server/app/api/llm-model/catalog/[provider]/route/app-paths-manifest.json +3 -0
  45. package/.next/server/app/api/llm-model/catalog/{route.js → [provider]/route.js} +8 -8
  46. package/.next/server/app/api/llm-model/catalog/[provider]/route.js.nft.json +1 -0
  47. package/.next/server/app/api/llm-model/catalog/[provider]/route_client-reference-manifest.js +3 -0
  48. package/.next/server/app/api/llm-model/credits/[provider]/route/app-paths-manifest.json +3 -0
  49. package/.next/server/app/api/llm-model/credits/[provider]/route/build-manifest.json +12 -0
  50. package/.next/server/app/api/llm-model/credits/[provider]/route/server-reference-manifest.json +4 -0
  51. package/.next/server/app/api/llm-model/credits/{route.js → [provider]/route.js} +8 -8
  52. package/.next/server/app/api/llm-model/credits/[provider]/route.js.map +5 -0
  53. package/.next/server/app/api/llm-model/credits/[provider]/route.js.nft.json +1 -0
  54. package/.next/server/app/api/llm-model/credits/[provider]/route_client-reference-manifest.js +3 -0
  55. package/.next/server/app/api/llm-model/route.js +1 -1
  56. package/.next/server/app/api/llm-model/route.js.nft.json +1 -1
  57. package/.next/server/app/api/llm-model/subscription/route.js +1 -1
  58. package/.next/server/app/api/llm-model/subscription/route.js.nft.json +1 -1
  59. package/.next/server/app/api/mcp/[name]/route.js +1 -1
  60. package/.next/server/app/api/mcp/[name]/route.js.nft.json +1 -1
  61. package/.next/server/app/api/mcp/oauth/callback/route.js +2 -2
  62. package/.next/server/app/api/mcp/oauth/callback/route.js.nft.json +1 -1
  63. package/.next/server/app/api/mcp/route.js +1 -1
  64. package/.next/server/app/api/mcp/route.js.nft.json +1 -1
  65. package/.next/server/app/api/mcp/tools/route.js +1 -1
  66. package/.next/server/app/api/mcp/tools/route.js.nft.json +1 -1
  67. package/.next/server/app/api/memory/edit/route.js +12 -12
  68. package/.next/server/app/api/memory/edit/route.js.nft.json +1 -1
  69. package/.next/server/app/api/memory/route.js +1 -1
  70. package/.next/server/app/api/memory/route.js.nft.json +1 -1
  71. package/.next/server/app/api/reach/route.js +17 -17
  72. package/.next/server/app/api/reach/route.js.nft.json +1 -1
  73. package/.next/server/app/api/routine/route.js +6 -6
  74. package/.next/server/app/api/routine/route.js.nft.json +1 -1
  75. package/.next/server/app/api/running/route/app-paths-manifest.json +3 -0
  76. package/.next/server/app/api/running/route/build-manifest.json +12 -0
  77. package/.next/server/app/api/running/route/server-reference-manifest.json +4 -0
  78. package/.next/server/app/api/running/route.js +10 -0
  79. package/.next/server/app/api/running/route.js.map +5 -0
  80. package/.next/server/app/api/running/route.js.nft.json +1 -0
  81. package/.next/server/app/api/running/route_client-reference-manifest.js +3 -0
  82. package/.next/server/app/api/signins/route.js +4 -4
  83. package/.next/server/app/api/signins/route.js.nft.json +1 -1
  84. package/.next/server/app/api/skills/[source]/[name]/route.js +7 -7
  85. package/.next/server/app/api/skills/[source]/[name]/route.js.nft.json +1 -1
  86. package/.next/server/app/api/skills/route.js +6 -6
  87. package/.next/server/app/api/skills/route.js.nft.json +1 -1
  88. package/.next/server/app/api/thursday/call/end/route.js +1 -1
  89. package/.next/server/app/api/thursday/call/end/route.js.nft.json +1 -1
  90. package/.next/server/app/api/thursday/call/route.js +1 -1
  91. package/.next/server/app/api/thursday/call/route.js.nft.json +1 -1
  92. package/.next/server/app/api/thursday/settings/route.js +1 -1
  93. package/.next/server/app/api/thursday/settings/route.js.nft.json +1 -1
  94. package/.next/server/app/api/thursday/text/route.js +12 -12
  95. package/.next/server/app/api/thursday/text/route.js.nft.json +1 -1
  96. package/.next/server/app/api/thursday/tool-call/route.js +13 -13
  97. package/.next/server/app/api/thursday/tool-call/route.js.nft.json +1 -1
  98. package/.next/server/app/api/workspace/files/route.js +7 -7
  99. package/.next/server/app/api/workspace/files/route.js.nft.json +1 -1
  100. package/.next/server/app/api/workspace/route.js +6 -6
  101. package/.next/server/app/api/workspace/route.js.nft.json +1 -1
  102. package/.next/server/app/artifact/[...path]/page/server-reference-manifest.json +94 -6
  103. package/.next/server/app/artifact/[...path]/page.js +9 -5
  104. package/.next/server/app/artifact/[...path]/page.js.nft.json +1 -1
  105. package/.next/server/app/artifact/[...path]/page_client-reference-manifest.js +1 -1
  106. package/.next/server/app/favicon.ico/route.js.nft.json +1 -1
  107. package/.next/server/app/manifest.webmanifest/route.js.nft.json +1 -1
  108. package/.next/server/app/page/server-reference-manifest.json +161 -128
  109. package/.next/server/app/page.js +10 -9
  110. package/.next/server/app/page.js.nft.json +1 -1
  111. package/.next/server/app/page_client-reference-manifest.js +1 -1
  112. package/.next/server/app-paths-manifest.json +4 -2
  113. package/.next/server/chunks/[root-of-the-server]__00qyw01._.js +1 -1
  114. package/.next/server/chunks/[root-of-the-server]__02ra64t._.js +5 -0
  115. package/.next/server/chunks/{[root-of-the-server]__05dp5tr._.js → [root-of-the-server]__06ky9of._.js} +2 -2
  116. package/.next/server/chunks/[root-of-the-server]__0b565-x._.js +7 -0
  117. package/.next/server/chunks/[root-of-the-server]__0bmtib_._.js +7 -0
  118. package/.next/server/chunks/[root-of-the-server]__0bqveex._.js +1 -1
  119. package/.next/server/chunks/[root-of-the-server]__0brmiv2._.js +7 -0
  120. package/.next/server/chunks/[root-of-the-server]__0eivkvk._.js +2 -2
  121. package/.next/server/chunks/[root-of-the-server]__0f7m79q._.js +1 -1
  122. package/.next/server/chunks/[root-of-the-server]__0g38-aj._.js +2 -2
  123. package/.next/server/chunks/[root-of-the-server]__0gvdr2h._.js +5 -0
  124. package/.next/server/chunks/[root-of-the-server]__0h656y-._.js +2 -2
  125. package/.next/server/chunks/[root-of-the-server]__0hm3tiq._.js +2 -2
  126. package/.next/server/chunks/[root-of-the-server]__0hzdqnv._.js +2 -2
  127. package/.next/server/chunks/[root-of-the-server]__0kzmxpg._.js +3 -0
  128. package/.next/server/chunks/[root-of-the-server]__0mgyt8p._.js +2 -2
  129. package/.next/server/chunks/[root-of-the-server]__0mrk2it._.js +1 -1
  130. package/.next/server/chunks/[root-of-the-server]__0o5s5-o._.js +5 -0
  131. package/.next/server/chunks/[root-of-the-server]__0p80i1n._.js +1 -1
  132. package/.next/server/chunks/[root-of-the-server]__0qdoc_9._.js +5 -0
  133. package/.next/server/chunks/[root-of-the-server]__0qzho69._.js +1 -1
  134. package/.next/server/chunks/[root-of-the-server]__0sm5xvm._.js +1 -1
  135. package/.next/server/chunks/[root-of-the-server]__0v_kuor._.js +5 -0
  136. package/.next/server/chunks/{[root-of-the-server]__061o2_x._.js → [root-of-the-server]__0ypkfbu._.js} +1 -1
  137. package/.next/server/chunks/[root-of-the-server]__1-18_pz._.js +1 -1
  138. package/.next/server/chunks/[root-of-the-server]__13hng6h._.js +1 -1
  139. package/.next/server/chunks/{[root-of-the-server]__01k3vi3._.js → [root-of-the-server]__14iga7p._.js} +1 -1
  140. package/.next/server/chunks/[root-of-the-server]__16gn7zn._.js +3 -0
  141. package/.next/server/chunks/[root-of-the-server]__18e65_-._.js +3 -0
  142. package/.next/server/chunks/[root-of-the-server]__1_04mcf._.js +2 -2
  143. package/.next/server/chunks/[root-of-the-server]__1_cgawk._.js +5 -0
  144. package/.next/server/chunks/[root-of-the-server]__1ceammd._.js +1 -1
  145. package/.next/server/chunks/[root-of-the-server]__1ckt1yj._.js +1 -1
  146. package/.next/server/chunks/[root-of-the-server]__1cu5f3z._.js +1 -1
  147. package/.next/server/chunks/[root-of-the-server]__1dth047._.js +5 -0
  148. package/.next/server/chunks/{[root-of-the-server]__1k2qs1m._.js → [root-of-the-server]__1fc6v12._.js} +1 -1
  149. package/.next/server/chunks/[root-of-the-server]__1hviq62._.js +2 -2
  150. package/.next/server/chunks/[root-of-the-server]__1ksm9m-._.js +12 -0
  151. package/.next/server/chunks/[root-of-the-server]__1m1q6u5._.js +3 -0
  152. package/.next/server/chunks/[root-of-the-server]__1m_dmf6._.js +5 -0
  153. package/.next/server/chunks/[root-of-the-server]__1mys2c3._.js +5 -0
  154. package/.next/server/chunks/[root-of-the-server]__1ndi14y._.js +1 -1
  155. package/.next/server/chunks/[root-of-the-server]__1p0njle._.js +5 -0
  156. package/.next/server/chunks/[root-of-the-server]__1p47fbb._.js +2 -2
  157. package/.next/server/chunks/[root-of-the-server]__1pugoq0._.js +1 -1
  158. package/.next/server/chunks/{[root-of-the-server]__0ts7ai0._.js → [root-of-the-server]__1trns9g._.js} +1 -1
  159. package/.next/server/chunks/[root-of-the-server]__1ygplx1._.js +1 -1
  160. package/.next/server/chunks/[root-of-the-server]__1zn039k._.js +1 -1
  161. package/.next/server/chunks/[root-of-the-server]__20w_g71._.js +3 -0
  162. package/.next/server/chunks/_01c32w9._.js +1 -1
  163. package/.next/server/chunks/_02bov6_._.js +1 -1
  164. package/.next/server/chunks/_06hnfi8._.js +2 -2
  165. package/.next/server/chunks/_06u9yo-._.js +1 -1
  166. package/.next/server/chunks/_08354bn._.js +12 -11
  167. package/.next/server/chunks/_08_-9ay._.js +7 -0
  168. package/.next/server/chunks/_08s4vft._.js +1 -1
  169. package/.next/server/chunks/_0bgjf07._.js +5 -0
  170. package/.next/server/chunks/_0c49lmw._.js +1 -1
  171. package/.next/server/chunks/_0fb6dvr._.js +1 -1
  172. package/.next/server/chunks/_0hgvg55._.js +1 -1
  173. package/.next/server/chunks/_0iw19ig._.js +1 -1
  174. package/.next/server/chunks/_0poi1t2._.js +1 -1
  175. package/.next/server/chunks/_0s8ao8z._.js +1 -1
  176. package/.next/server/chunks/_0t_7gji._.js +1 -1
  177. package/.next/server/chunks/_0ucx1jv._.js +1 -1
  178. package/.next/server/chunks/_0uzj57i._.js +1 -1
  179. package/.next/server/chunks/_0wyh244._.js +112 -0
  180. package/.next/server/chunks/_1-sk_q4._.js +1 -1
  181. package/.next/server/chunks/_108gsm8._.js +2 -2
  182. package/.next/server/chunks/_136j09a._.js +5 -5
  183. package/.next/server/chunks/_15negpy._.js +2 -2
  184. package/.next/server/chunks/_1d7og_q._.js +1 -1
  185. package/.next/server/chunks/_1dxq827._.js +2 -2
  186. package/.next/server/chunks/_1e54wxa._.js +1 -1
  187. package/.next/server/chunks/_1frcwj1._.js +1 -1
  188. package/.next/server/chunks/_1gn2r2q._.js +8 -6
  189. package/.next/server/chunks/_1gxankq._.js +2 -2
  190. package/.next/server/chunks/_1i3uucm._.js +1 -1
  191. package/.next/server/chunks/_1jvy78-._.js +5 -0
  192. package/.next/server/chunks/_1lg0lsu._.js +53 -0
  193. package/.next/server/chunks/_1njolhx._.js +294 -0
  194. package/.next/server/chunks/_1q6e56i._.js +8 -6
  195. package/.next/server/chunks/_1qgix-j._.js +1 -1
  196. package/.next/server/chunks/_1wtb-77._.js +294 -0
  197. package/.next/server/chunks/_1wwl_7o._.js +1 -1
  198. package/.next/server/chunks/_1y8w80a._.js +5 -5
  199. package/.next/server/chunks/_1yx285_._.js +3 -0
  200. package/.next/server/chunks/_20qn224._.js +3 -0
  201. package/.next/server/chunks/_211dn2c._.js +1 -1
  202. package/.next/server/chunks/_next-internal_server_app_api_bot_thread_file_route_actions_0q3be0o.js +3 -0
  203. package/.next/server/chunks/_next-internal_server_app_api_llm-model_catalog_[provider]_route_actions_1i0449q.js +3 -0
  204. package/.next/server/chunks/_next-internal_server_app_api_llm-model_credits_[provider]_route_actions_0iui9hz.js +3 -0
  205. package/.next/server/chunks/_next-internal_server_app_api_running_route_actions_0o1g-aw.js +3 -0
  206. package/.next/server/chunks/config_ts_1g4sz5o._.js +1 -1
  207. package/.next/server/chunks/features_bot_08z387_._.js +3 -3
  208. package/.next/server/chunks/features_bot_0zy_q8y._.js +7 -7
  209. package/.next/server/chunks/features_bot_1dfrdsb._.js +7 -7
  210. package/.next/server/chunks/features_workspace_workspace_ts_13h82gv._.js +3 -3
  211. package/.next/server/chunks/features_workspace_workspace_ts_1iyjroj._.js +3 -3
  212. package/.next/server/chunks/{node_modules_1rosz79._.js → node_modules_035o7ku._.js} +1 -1
  213. package/.next/server/chunks/{node_modules_1er1u8w._.js → node_modules_0tn5t13._.js} +1 -1
  214. package/.next/server/chunks/{node_modules_103lpef._.js → node_modules_12oq3hr._.js} +1 -1
  215. package/.next/server/chunks/{node_modules_consola_dist_chunks_prompt_mjs_0g87zst._.js → node_modules_consola_dist_chunks_prompt_mjs_0yd5xa0._.js} +1 -1
  216. package/.next/server/chunks/ssr/[root-of-the-server]__04upd5v._.js +1 -1
  217. package/.next/server/chunks/ssr/[root-of-the-server]__0p0mv2u._.js +3 -0
  218. package/.next/server/chunks/ssr/[root-of-the-server]__0sk5enu._.js +3 -0
  219. package/.next/server/chunks/ssr/[root-of-the-server]__0xyaud4._.js +3 -0
  220. package/.next/server/chunks/ssr/[root-of-the-server]__1-gi9sm._.js +3 -0
  221. package/.next/server/chunks/ssr/[root-of-the-server]__16nn3pe._.js +3 -0
  222. package/.next/server/chunks/ssr/[root-of-the-server]__1867koj._.js +1 -1
  223. package/.next/server/chunks/ssr/[root-of-the-server]__1c8-7cw._.js +3 -0
  224. package/.next/server/chunks/ssr/{[root-of-the-server]__1d7usu0._.js → [root-of-the-server]__1qn0axo._.js} +2 -2
  225. package/.next/server/chunks/ssr/[root-of-the-server]__1tb5vve._.js +47 -0
  226. package/.next/server/chunks/ssr/_02cm0fr._.js +5 -0
  227. package/.next/server/chunks/ssr/{features_bot_1knyan7._.js → _07nmtxo._.js} +2 -2
  228. package/.next/server/chunks/ssr/_088vzgn._.js +1 -1
  229. package/.next/server/chunks/ssr/{_1dfv66y._.js → _0bg1u1j._.js} +2 -2
  230. package/.next/server/chunks/ssr/_0cv9tmv._.js +1 -1
  231. package/.next/server/chunks/ssr/{_10-_awu._.js → _0f9hx5p._.js} +2 -2
  232. package/.next/server/chunks/ssr/_0g9ula_._.js +3 -0
  233. package/.next/server/chunks/ssr/{_1aqjk-1._.js → _0irozu9._.js} +2 -2
  234. package/.next/server/chunks/ssr/{_123y-ah._.js → _0is8m6y._.js} +2 -2
  235. package/.next/server/chunks/ssr/_0iwsdp7._.js +3 -0
  236. package/.next/server/chunks/ssr/_0l7rjg5._.js +1 -1
  237. package/.next/server/chunks/ssr/{lib_logger_ts_0-olsze._.js → _0mfgsk-._.js} +4 -2
  238. package/.next/server/chunks/ssr/{_0fo4552._.js → _0nk80t6._.js} +53 -13
  239. package/.next/server/chunks/ssr/_0p6w0ef._.js +3 -0
  240. package/.next/server/chunks/ssr/_0pbav_w._.js +3 -0
  241. package/.next/server/chunks/ssr/{_0vo_oym._.js → _0q-mdwv._.js} +8 -8
  242. package/.next/server/chunks/ssr/_0s5_ahb._.js +3 -0
  243. package/.next/server/chunks/ssr/{_0e2fnvg._.js → _0t5f2c3._.js} +2 -2
  244. package/.next/server/chunks/ssr/_0v9r8g2._.js +1 -1
  245. package/.next/server/chunks/ssr/_0x8ophf._.js +1 -1
  246. package/.next/server/chunks/ssr/_0x9f717._.js +60 -0
  247. package/.next/server/chunks/ssr/_107vtdk._.js +162 -0
  248. package/.next/server/chunks/ssr/{_17a4qyk._.js → _12lql1x._.js} +3 -3
  249. package/.next/server/chunks/ssr/{_163dr78._.js → _165wnr4._.js} +2 -2
  250. package/.next/server/chunks/ssr/_16_7zeo._.js +3 -0
  251. package/.next/server/chunks/ssr/_17komoi._.js +3 -0
  252. package/.next/server/chunks/ssr/_190hjys._.js +3 -0
  253. package/.next/server/chunks/ssr/_1bfrntd._.js +6 -0
  254. package/.next/server/chunks/ssr/{_01al00i._.js → _1booff4._.js} +2 -2
  255. package/.next/server/chunks/ssr/{_0xfafez._.js → _1ew1j7l._.js} +2 -2
  256. package/.next/server/chunks/ssr/_1i2swyr._.js +3 -0
  257. package/.next/server/chunks/ssr/_1neoj22._.js +1 -1
  258. package/.next/server/chunks/ssr/_1qsa25k._.js +3 -0
  259. package/.next/server/chunks/ssr/_1soynbw._.js +6 -0
  260. package/.next/server/chunks/ssr/_1vc2xmu._.js +3 -0
  261. package/.next/server/chunks/ssr/{_14oirtb._.js → _1wq90j8._.js} +2 -2
  262. package/.next/server/chunks/ssr/_1xwtbdz._.js +3 -0
  263. package/.next/server/chunks/ssr/_1zrhkf0._.js +310 -0
  264. package/.next/server/chunks/ssr/_21awrs2._.js +5 -0
  265. package/.next/server/chunks/ssr/features_0796o8r._.js +1 -1
  266. package/.next/server/chunks/ssr/features_bot_0tb4ui-._.js +2 -2
  267. package/.next/server/chunks/ssr/features_bot_1c56lew._.js +37 -0
  268. package/.next/server/chunks/ssr/features_bot_1fn_grf._.js +3 -0
  269. package/.next/server/chunks/ssr/{features_config_09n-q9q._.js → features_config_05zi68v._.js} +3 -3
  270. package/.next/server/chunks/ssr/features_connectors_components_mcp-setting_tsx_0jmbgvp._.js +1 -1
  271. package/.next/server/chunks/ssr/features_memory_components_memory-setting_tsx_0oa43sw._.js +1 -1
  272. package/.next/server/chunks/ssr/features_routine_components_routine-setting_tsx_055fknz._.js +1 -1
  273. package/.next/server/chunks/ssr/features_workspace_workspace_ts_1wc7_u_._.js +4 -4
  274. package/.next/server/chunks/ssr/{node_modules_1k5i-_9._.js → node_modules_0-sux1a._.js} +1 -1
  275. package/.next/server/chunks/ssr/{node_modules_0msrhxf._.js → node_modules_01oezhb._.js} +1 -1
  276. package/.next/server/chunks/ssr/{node_modules_1gq3ght._.js → node_modules_04m6ebg._.js} +1 -1
  277. package/.next/server/chunks/ssr/{node_modules_0nmkv-v._.js → node_modules_067jfov._.js} +1 -1
  278. package/.next/server/chunks/ssr/{node_modules_0gd9hbz._.js → node_modules_06ugby3._.js} +1 -1
  279. package/.next/server/chunks/ssr/{node_modules_0d6j33x._.js → node_modules_07p51j3._.js} +1 -1
  280. package/.next/server/chunks/ssr/{node_modules_10_fv2a._.js → node_modules_0995xyq._.js} +1 -1
  281. package/.next/server/chunks/ssr/{node_modules_1lmyts8._.js → node_modules_0_uecwx._.js} +1 -1
  282. package/.next/server/chunks/ssr/{node_modules_04x5wyv._.js → node_modules_0dsyc90._.js} +1 -1
  283. package/.next/server/chunks/ssr/{node_modules_0__0tvm._.js → node_modules_0hli6s2._.js} +1 -1
  284. package/.next/server/chunks/ssr/{node_modules_0k8-y89._.js → node_modules_0m-bde_._.js} +1 -1
  285. package/.next/server/chunks/ssr/{node_modules_1p_6sq7._.js → node_modules_0oqfdbr._.js} +1 -1
  286. package/.next/server/chunks/ssr/node_modules_0qd7p5f._.js +3 -0
  287. package/.next/server/chunks/ssr/{node_modules_13g-d25._.js → node_modules_0tgy5s5._.js} +1 -1
  288. package/.next/server/chunks/ssr/{node_modules_1_8-jcj._.js → node_modules_1-kjmls._.js} +1 -1
  289. package/.next/server/chunks/ssr/{node_modules_0m73b88._.js → node_modules_1-l3ka5._.js} +1 -1
  290. package/.next/server/chunks/ssr/{node_modules_113l3e5._.js → node_modules_1-w3ayh._.js} +1 -1
  291. package/.next/server/chunks/ssr/{node_modules_0q-klni._.js → node_modules_133exgm._.js} +1 -1
  292. package/.next/server/chunks/ssr/{node_modules_1xb-ndg._.js → node_modules_17xc5_k._.js} +1 -1
  293. package/.next/server/chunks/ssr/{node_modules_021lid9._.js → node_modules_1_i_w30._.js} +1 -1
  294. package/.next/server/chunks/ssr/{node_modules_1ri_eip._.js → node_modules_1a2cjfk._.js} +1 -1
  295. package/.next/server/chunks/ssr/{node_modules_13bqv6i._.js → node_modules_1k752fe._.js} +1 -1
  296. package/.next/server/chunks/ssr/{node_modules_1qstb1x._.js → node_modules_1lie7z8._.js} +1 -1
  297. package/.next/server/chunks/ssr/{node_modules_096up6a._.js → node_modules_1mv70-y._.js} +1 -1
  298. package/.next/server/chunks/ssr/{node_modules_156kv_t._.js → node_modules_1r611t2._.js} +1 -1
  299. package/.next/server/chunks/ssr/node_modules_1vfd8dz._.js +3 -0
  300. package/.next/server/chunks/ssr/{node_modules_0cjnmzp._.js → node_modules_1yaowd7._.js} +1 -1
  301. package/.next/server/chunks/ssr/{node_modules_0nw5jz7._.js → node_modules_20a1wpo._.js} +1 -1
  302. 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_1r8pxbe._.js} +1 -1
  303. 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_1siiu4h._.js} +1 -1
  304. package/.next/server/middleware-build-manifest.js +3 -3
  305. package/.next/server/pages/404.html +1 -1
  306. package/.next/server/pages/500.html +1 -1
  307. package/.next/server/server-reference-manifest.js +1 -1
  308. package/.next/server/server-reference-manifest.json +205 -132
  309. package/.next/static/chunks/{0obogzscwwekj.js → 088d3w5qxu19g.js} +2 -2
  310. package/.next/static/chunks/0_s4z70lx1tgs.js +1 -0
  311. package/.next/static/chunks/0bxekp4hnuk1g.js +1 -0
  312. package/.next/static/chunks/{1cglo3a2mbeou.js → 0fw4u_s974j24.js} +1 -1
  313. package/.next/static/chunks/0hy2x7qhk8wgx.css +1 -0
  314. package/.next/static/chunks/{2zbl41hed17g3.js → 0n_eshmn_7wfn.js} +2 -2
  315. package/.next/static/chunks/0q9b2n6l4flqb.js +1 -0
  316. package/.next/static/chunks/0ulcp_u_y1u0b.js +15 -0
  317. package/.next/static/chunks/0vj93zo0yvix9.js +35 -0
  318. package/.next/static/chunks/{166smhw8v-s3j.js → 10f98bh4hdmhe.js} +1 -1
  319. package/.next/static/chunks/1b8bce_z_act0.js +1 -0
  320. package/.next/static/chunks/1c32d2azsjaj_.js +1 -0
  321. package/.next/static/chunks/{1xv4g10m-cl1s.js → 1fs829mz69pxz.js} +1 -1
  322. package/.next/static/chunks/1lwlh4mo_vv8d.js +1 -0
  323. package/.next/static/chunks/{0p2f6uv4xytfm.js → 1po8fkg40peu-.js} +1 -1
  324. package/.next/static/chunks/{0uxq_vs6uxi-b.js → 1rg6b9l5fm1hj.js} +1 -1
  325. package/.next/static/chunks/{3b96xy59nl_gd.js → 26g3iwfuad-7p.js} +1 -1
  326. package/.next/static/chunks/2bjnmtke_q43c.js +1 -0
  327. package/.next/static/chunks/2c86k0o-1p9_w.js +1 -0
  328. package/.next/static/chunks/2gf4t0d76bvyv.js +1 -0
  329. package/.next/static/chunks/2rj3q_ahctv19.js +1 -0
  330. package/.next/static/chunks/{2lhc74urf3acr.js → 2x6-fpctvucte.js} +1 -1
  331. package/.next/static/chunks/2yicf7bky866n.js +3 -0
  332. package/.next/static/chunks/337g9g_ux2gj-.js +1 -0
  333. package/.next/static/chunks/350ws7svim7ij.js +58 -0
  334. package/.next/static/chunks/{0o7o0eb7ihxi6.js → 396enq-m0sss5.js} +1 -1
  335. package/.next/static/chunks/3e1w_nwfb39j-.js +1 -0
  336. package/.next/static/chunks/3v3ooretb54ag.js +1 -0
  337. package/.next/static/chunks/40re_3ukjulg9.js +1 -0
  338. package/.next/static/chunks/{3gsxnqqqphh-1.js → 44bcbnmup71so.js} +1 -1
  339. package/.next/static/chunks/{2qgkbdshzpq1c.js → 458dtbsemx996.js} +1 -1
  340. package/README.md +5 -5
  341. package/bin/background.mjs +995 -0
  342. package/bin/lock.mjs +121 -5
  343. package/bin/thursday.mjs +126 -30
  344. package/bin/tools.mjs +72 -1
  345. package/database/migrations/20260926021847_thread_cache_tokens/migration.sql +2 -0
  346. package/database/migrations/20260926021847_thread_cache_tokens/snapshot.json +1949 -0
  347. package/guide/bots.md +173 -317
  348. package/guide/calls.md +106 -146
  349. package/guide/index.md +2 -2
  350. package/guide/memory.md +14 -18
  351. package/guide/phone.md +86 -133
  352. package/guide/setup.md +141 -172
  353. package/guide/trouble.md +42 -65
  354. package/package.json +1 -1
  355. package/seed-skills/concierge/travel/references/itinerary.md +1 -1
  356. package/seed-skills/concierge/travel/scripts/itinerary.mjs +8 -3
  357. package/skills/artifact/references/book.md +3 -3
  358. package/skills/artifact/runtime/shell/shell.js +32 -3
  359. package/.next/server/app/api/llm-model/catalog/route/app-paths-manifest.json +0 -3
  360. package/.next/server/app/api/llm-model/catalog/route.js.nft.json +0 -1
  361. package/.next/server/app/api/llm-model/catalog/route_client-reference-manifest.js +0 -3
  362. package/.next/server/app/api/llm-model/credits/route/app-paths-manifest.json +0 -3
  363. package/.next/server/app/api/llm-model/credits/route.js.nft.json +0 -1
  364. package/.next/server/app/api/llm-model/credits/route_client-reference-manifest.js +0 -3
  365. package/.next/server/chunks/[root-of-the-server]__01ypm_z._.js +0 -3
  366. package/.next/server/chunks/[root-of-the-server]__021dkui._.js +0 -3
  367. package/.next/server/chunks/[root-of-the-server]__03xamry._.js +0 -3
  368. package/.next/server/chunks/[root-of-the-server]__09gdscj._.js +0 -7
  369. package/.next/server/chunks/[root-of-the-server]__0ljizgj._.js +0 -5
  370. package/.next/server/chunks/[root-of-the-server]__0nmust6._.js +0 -5
  371. package/.next/server/chunks/[root-of-the-server]__0svzjwa._.js +0 -7
  372. package/.next/server/chunks/[root-of-the-server]__1-rmal0._.js +0 -5
  373. package/.next/server/chunks/[root-of-the-server]__10xnb7e._.js +0 -3
  374. package/.next/server/chunks/[root-of-the-server]__1_h4hf9._.js +0 -7
  375. package/.next/server/chunks/[root-of-the-server]__1c2kwku._.js +0 -12
  376. package/.next/server/chunks/[root-of-the-server]__1t02-1p._.js +0 -3
  377. package/.next/server/chunks/[root-of-the-server]__1t0jj1j._.js +0 -5
  378. package/.next/server/chunks/[root-of-the-server]__1v7x5ym._.js +0 -3
  379. package/.next/server/chunks/[root-of-the-server]__1vlxv19._.js +0 -5
  380. package/.next/server/chunks/_07nxi75._.js +0 -254
  381. package/.next/server/chunks/_08btiir._.js +0 -7
  382. package/.next/server/chunks/_0j0-gq6._.js +0 -5
  383. package/.next/server/chunks/_0p6v1fr._.js +0 -5
  384. package/.next/server/chunks/_0srlnvd._.js +0 -16
  385. package/.next/server/chunks/_0xygcxs._.js +0 -254
  386. package/.next/server/chunks/_1ic3bew._.js +0 -5
  387. package/.next/server/chunks/_next-internal_server_app_api_llm-model_catalog_route_actions_1eu2y41.js +0 -3
  388. package/.next/server/chunks/_next-internal_server_app_api_llm-model_credits_route_actions_0v424pb.js +0 -3
  389. package/.next/server/chunks/node_modules_consola_dist_chunks_prompt_mjs_04oxl25._.js +0 -3
  390. package/.next/server/chunks/ssr/[root-of-the-server]__0-af_o7._.js +0 -3
  391. package/.next/server/chunks/ssr/[root-of-the-server]__09f39cp._.js +0 -4
  392. package/.next/server/chunks/ssr/[root-of-the-server]__0ouu4qp._.js +0 -3
  393. package/.next/server/chunks/ssr/[root-of-the-server]__0q9g9ea._.js +0 -5
  394. package/.next/server/chunks/ssr/[root-of-the-server]__17h1ggo._.js +0 -46
  395. package/.next/server/chunks/ssr/[root-of-the-server]__1jyeu61._.js +0 -5
  396. package/.next/server/chunks/ssr/_0afrpci._.js +0 -3
  397. package/.next/server/chunks/ssr/_0bgse1c._.js +0 -162
  398. package/.next/server/chunks/ssr/_0jstvlg._.js +0 -39
  399. package/.next/server/chunks/ssr/_0qsmpcu._.js +0 -3
  400. package/.next/server/chunks/ssr/_0z38nha._.js +0 -3
  401. package/.next/server/chunks/ssr/_1-41lck._.js +0 -3
  402. package/.next/server/chunks/ssr/_10_ph1t._.js +0 -3
  403. package/.next/server/chunks/ssr/_116lfdc._.js +0 -3
  404. package/.next/server/chunks/ssr/_14dfh7a._.js +0 -4
  405. package/.next/server/chunks/ssr/_17qtuv7._.js +0 -3
  406. package/.next/server/chunks/ssr/_19jez1a._.js +0 -3
  407. package/.next/server/chunks/ssr/_1_5xof_._.js +0 -3
  408. package/.next/server/chunks/ssr/_1alxym6._.js +0 -3
  409. package/.next/server/chunks/ssr/_1ou5sj0._.js +0 -3
  410. package/.next/server/chunks/ssr/_1tmw842._.js +0 -5
  411. package/.next/server/chunks/ssr/_1uij_rj._.js +0 -3
  412. package/.next/server/chunks/ssr/_1w9w1ok._.js +0 -3
  413. package/.next/server/chunks/ssr/_20gq_24._.js +0 -3
  414. package/.next/server/chunks/ssr/features_bot_0ouemw8._.js +0 -3
  415. package/.next/server/chunks/ssr/node_modules_@base-ui_react_1j9i1ho._.js +0 -3
  416. package/.next/static/chunks/01l7kw74vfp32.js +0 -1
  417. package/.next/static/chunks/0a5_-jqhaktjj.js +0 -1
  418. package/.next/static/chunks/0npvak0wpgagb.js +0 -1
  419. package/.next/static/chunks/19l81deo_pyoc.js +0 -1
  420. package/.next/static/chunks/1bnhw-5fj7aiz.js +0 -1
  421. package/.next/static/chunks/1in6nxpu33iab.js +0 -1
  422. package/.next/static/chunks/1u7kg91f9qy3g.js +0 -1
  423. package/.next/static/chunks/2ajs12-fcdwzm.js +0 -1
  424. package/.next/static/chunks/2i7qtmxc1kuqg.js +0 -1
  425. package/.next/static/chunks/2kz1f6r59nky0.js +0 -3
  426. package/.next/static/chunks/31kn4_h2rvf6k.css +0 -1
  427. package/.next/static/chunks/35jj-5u4te56r.js +0 -1
  428. package/.next/static/chunks/37ixzapa06xlo.js +0 -1
  429. package/.next/static/chunks/3jtcieuk1l6tw.js +0 -1
  430. package/.next/static/chunks/3k1d8y03t5nax.js +0 -58
  431. package/.next/static/chunks/3sla-dm1puqd1.js +0 -35
  432. package/.next/static/chunks/3t2c76awm9k_p.js +0 -1
  433. package/.next/static/chunks/3vrmcm31ih7gb.js +0 -1
  434. package/.next/static/chunks/3yiqr95d7ybeq.js +0 -15
  435. package/bin/autostart.mjs +0 -162
  436. /package/.next/server/app/api/{llm-model/catalog → bot/thread/file}/route/build-manifest.json +0 -0
  437. /package/.next/server/app/api/{llm-model/catalog → bot/thread/file}/route/server-reference-manifest.json +0 -0
  438. /package/.next/server/app/api/{llm-model/catalog → bot/thread/file}/route.js.map +0 -0
  439. /package/.next/server/app/api/llm-model/{credits → catalog/[provider]}/route/build-manifest.json +0 -0
  440. /package/.next/server/app/api/llm-model/{credits → catalog/[provider]}/route/server-reference-manifest.json +0 -0
  441. /package/.next/server/app/api/llm-model/{credits → catalog/[provider]}/route.js.map +0 -0
  442. /package/.next/static/{8I2hKtciyA9LXvd8txuOz → YhaRHJqObuAcXZe5VLFs0}/_buildManifest.js +0 -0
  443. /package/.next/static/{8I2hKtciyA9LXvd8txuOz → YhaRHJqObuAcXZe5VLFs0}/_clientMiddlewareManifest.js +0 -0
  444. /package/.next/static/{8I2hKtciyA9LXvd8txuOz → YhaRHJqObuAcXZe5VLFs0}/_ssgManifest.js +0 -0
@@ -0,0 +1,3 @@
1
+ module.exports=[119663,e=>e.a(async(t,a)=>{try{var r=e.i(443771),i=e.i(440998),n=e.i(91264),o=e.i(53748),s=t([r,i]);[r,i]=s.then?(await s)():s;let l=(0,n.serverRoute)(async e=>{let t=new URL(e.url).searchParams,a=t.get("path")?.trim();a||(0,o.publicError)("Which file?");let[n,s]=await Promise.all([(0,i.readFileVersion)(a),(0,r.readFileThread)(a,t.get("from")||null)]);return{file:n,note:s}});e.s(["GET",0,l]),a()}catch(e){a(e)}},!1),602283,e=>{"use strict";var t=e.i(747909),a=e.i(174017),r=e.i(996250),i=e.i(759756),n=e.i(561916),o=e.i(174677),s=e.i(869741),l=e.i(316795),u=e.i(487718),d=e.i(995169),c=e.i(47587),p=e.i(666012),h=e.i(570101),f=e.i(626937),R=e.i(10372),w=e.i(193695);e.i(52474);var v=e.i(600220);let g=new t.AppRouteRouteModule({definition:{kind:a.RouteKind.APP_ROUTE,page:"/api/bot/thread/file/route",pathname:"/api/bot/thread/file",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/app/api/bot/thread/file/route.ts",nextConfigOutput:"standalone",userland:()=>e.r(119663),...{}}),{workAsyncStorage:m,workUnitAsyncStorage:b,serverHooks:E}=g;async function C(e,t,r){r.requestMeta&&(0,i.setRequestMeta)(e,r.requestMeta),g.isDev&&(0,i.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let m="/api/bot/thread/file/route";m=m.replace(/\/index$/,"")||"/";let b=await g.prepare(e,t,{srcPage:m,multiZoneDraftMode:!1});if(!b)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:E,deploymentId:C,params:y,nextConfig:T,parsedUrl:A,isDraftMode:x,prerenderManifest:S,routerServerContext:P,isOnDemandRevalidate:N,revalidateOnlyGenerated:O,resolvedPathname:_,clientReferenceManifest:q,serverActionsManifest:H}=b,I=(0,s.normalizeAppPath)(m),k=!!(S.dynamicRoutes[I]||S.routes[_]),M=async()=>((null==P?void 0:P.render404)?await P.render404(e,t,A,!1):t.end("This page could not be found"),null);if(k&&!x){let e=!!S.routes[_],t=S.dynamicRoutes[I];if(t&&!1===t.fallback&&!e){if(T.adapterPath)return await M();throw new w.NoFallbackError}}let U=null;!k||g.isDev||x||(U="/index"===(U=_)?"/":U);let D=!0===g.isDev||!k,F=k&&!D;H&&q&&(0,o.setManifestsSingleton)({page:m,clientReferenceManifest:q,serverActionsManifest:H});let $=e.method||"GET",L=(0,n.getTracer)(),B=L.getActiveScopeSpan(),K=!!(null==P?void 0:P.isWrappedByNextServer),j=!!(0,i.getRequestMeta)(e,"minimalMode"),G=(0,i.getRequestMeta)(e,"incrementalCache")||await g.getIncrementalCache(e,T,S,j);null==G||G.resetRequestCache(),globalThis.__incrementalCache=G;let W={params:y,previewProps:S.preview,renderOpts:{experimental:{authInterrupts:!!T.experimental.authInterrupts,useCacheTimeout:T.experimental.useCacheTimeout},cacheComponents:!!T.cacheComponents,validationLevel:T.experimental.instantInsights.validationLevel,supportsDynamicResponse:D,incrementalCache:G,hmrRefreshHash:(0,i.getRequestMeta)(e,"hmrRefreshHash"),cacheLifeProfiles:T.cacheLife,staticPageGenerationTimeout:T.staticPageGenerationTimeout,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,r,i)=>g.onRequestError(e,t,r,i,P)},sharedContext:{buildId:E,deploymentId:C}},V=new l.NodeNextRequest(e),X=new l.NodeNextResponse(t),J=u.NextRequestAdapter.fromNodeNextRequest(V,(0,u.signalFromNodeResponse)(t)),z=async({previousCacheEntry:a})=>{try{if(!j&&N&&O&&!a)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let i=await g.handle(J,W);e.fetchMetrics=W.renderOpts.fetchMetrics;let n=W.renderOpts.pendingWaitUntil;n&&r.waitUntil&&(r.waitUntil(n),n=void 0);let o=W.renderOpts.collectedTags;if(!k)return await (0,p.sendResponse)(V,X,i,n),null;{let e=await i.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(i.headers);o&&(t[R.NEXT_CACHE_TAGS_HEADER]=o),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==W.renderOpts.collectedRevalidate&&!(W.renderOpts.collectedRevalidate>=R.INFINITE_CACHE)&&W.renderOpts.collectedRevalidate,r=void 0===W.renderOpts.collectedExpire||W.renderOpts.collectedExpire>=R.INFINITE_CACHE?!1!==a&&a>0?T.expireTime:void 0:W.renderOpts.collectedExpire;return{value:{kind:v.CachedRouteKind.APP_ROUTE,status:i.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:r}}}}catch(t){throw(null==a?void 0:a.isStale)&&await g.onRequestError(e,t,{routerKind:"App Router",routePath:m,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:F,isOnDemandRevalidate:N})},!1,P),t}},Z=async(i,o)=>{try{var s,l;let i=await g.handleResponse({req:e,nextConfig:T,cacheKey:U,routeKind:a.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:S,isRoutePPREnabled:!1,isOnDemandRevalidate:N,revalidateOnlyGenerated:O,responseGenerator:z,waitUntil:r.waitUntil,isMinimalMode:j});if(!k)return;if((null==i||null==(s=i.value)?void 0:s.kind)!==v.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==i||null==(l=i.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});j||t.setHeader("x-nextjs-cache",N?"REVALIDATED":i.isMiss?"MISS":i.isStale?"STALE":"HIT"),x&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let n=(0,h.fromNodeOutgoingHttpHeaders)(i.value.headers);j&&k||n.delete(R.NEXT_CACHE_TAGS_HEADER),!i.cacheControl||t.getHeader("Cache-Control")||n.get("Cache-Control")||n.set("Cache-Control",(0,f.getCacheControlHeader)(i.cacheControl)),await (0,p.sendResponse)(V,X,new Response(i.value.body,{headers:n,status:i.value.status||200}));return}catch(t){if(t instanceof w.NoFallbackError||await g.onRequestError(e,t,{routerKind:"App Router",routePath:I,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:F,isOnDemandRevalidate:N})},!1,P),k)throw t;await (0,p.sendResponse)(V,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:n.SpanStatusCode.ERROR}),i.setAttribute("error.type",e.toString()));let a=L.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==d.BaseServerSpan.handleRequest)return console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let r=a.get("next.route")||I,s=`${$} ${r}`;i.setAttributes({"next.route":r,"http.route":r,"next.span_name":s}),i.updateName(s),o&&o!==i&&(o.setAttribute("http.route",r),o.updateName(s))})()}};if(K&&B)await Z(B,void 0);else{let t=L.getActiveScopeSpan();await L.withPropagatedContext(e.headers,()=>L.trace(d.BaseServerSpan.handleRequest,{spanName:`${$} ${m}`,kind:n.SpanKind.SERVER,attributes:{"http.method":$,"http.target":e.url}},e=>Z(e,t)),void 0,!K)}}e.s(["handler",0,C,"patchFetch",0,function(){return(0,r.patchFetch)({workAsyncStorage:m,workUnitAsyncStorage:b})},"routeModule",0,g,"serverHooks",0,E,"workAsyncStorage",0,m,"workUnitAsyncStorage",0,b])},443771,e=>e.a(async(t,a)=>{try{var r=e.i(912714),i=e.i(687388),n=e.i(771716),o=e.i(629668),s=e.i(786025),l=e.i(53748),u=e.i(41444),d=e.i(265143),c=e.i(585099),p=e.i(39803),h=e.i(944971),f=e.i(742712),R=e.i(378884),w=t([n,d,c,p,f,R]);async function v(e,t=null){let a=await (0,s.insideWorkspace)(e),i=a?await (0,r.stat)(a).catch(()=>null):null;if(!i?.isFile())return{state:"gone"};let o=await g(e,t);if(!o)return{state:"none",bot:await (0,n.botOfArtifact)(e),threadDeleted:null!==t};let p={id:o.id,label:o.label,bot:o.bot};if("waiting"===o.status&&o.pending&&!(0,h.isAppStop)(o.pending))return{state:"asking",thread:p,bot:o.pending.bot??o.bot,question:o.outcome??""};let R=e.split("/")[1]?.toLowerCase(),w=[...new Set((await (0,f.listRoomWork)(o.id)).map(e=>e.bot))].find(e=>e!==o.bot&&(0,s.botFolderName)(e).toLowerCase()===R),m=(w&&await (0,d.findJobBot)(w))??await (0,d.findJobBot)(o.bot);if(!m)return{state:"refused",thread:p,reason:"deleted",why:`${w??o.bot} was deleted, so nobody in this thread can take it up.`};try{await (0,c.resolveModel)(m,{quiet:!0})}catch(e){if(!(0,l.isPublicError)(e))throw e;return{state:"refused",thread:p,reason:"model",why:(0,u.errorToString)(e)}}return{state:"open",thread:p,status:o.status,to:m.name,coordinator:o.bot,paused:"waiting"===o.status&&(0,h.isAppStop)(o.pending)?o.outcome:null}}async function g(e,t){if(t)return(0,R.findThread)(t);let a=function(e){let[t,a,r,...n]=e.split("/");return t===i.PATHS.artifacts&&a&&r&&n.length?`${t}/${a}/${r}`:null}(e),r=await (0,f.listReportsNaming)(a??e),n=async e=>{for(let t of r){if(!(0,o.pathsIn)(t.text).some(e))continue;let a=await (0,R.findThread)(t.threadId);if(a)return a}return null};return await n(t=>t===e)??(a?await n(e=>e.startsWith(`${a}/`)):null)}[n,d,c,p,f,R]=w.then?(await w)():w,e.s(["readFileThread",0,v]),a()}catch(e){a(e)}},!1)];
2
+
3
+ //# sourceMappingURL=_1yx285_._.js.map
@@ -0,0 +1,3 @@
1
+ module.exports=[21124,e=>{"use strict";var t=e.i(687388),a=e.i(393189),r=e.i(91264),n=e.i(53748);let o=(0,r.serverRoute)(async e=>{let r=new URL(e.url).searchParams.get("bot")?.trim();return r||(0,n.publicError)("Which bot?"),(0,a.listBotMemory)(r,t.WORKSPACE_VIEW.rows)});e.s(["GET",0,o])},239818,e=>{"use strict";var t=e.i(747909),a=e.i(174017),r=e.i(996250),n=e.i(759756),o=e.i(561916),i=e.i(174677),s=e.i(869741),l=e.i(316795),u=e.i(487718),d=e.i(995169),c=e.i(47587),p=e.i(666012),h=e.i(570101),R=e.i(626937),m=e.i(10372),v=e.i(193695);e.i(52474);var f=e.i(600220);let E=new t.AppRouteRouteModule({definition:{kind:a.RouteKind.APP_ROUTE,page:"/api/bot/memory/files/route",pathname:"/api/bot/memory/files",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/app/api/bot/memory/files/route.ts",nextConfigOutput:"standalone",userland:()=>e.r(21124),...{}}),{workAsyncStorage:g,workUnitAsyncStorage:w,serverHooks:C}=E;async function x(e,t,r){r.requestMeta&&(0,n.setRequestMeta)(e,r.requestMeta),E.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let g="/api/bot/memory/files/route";g=g.replace(/\/index$/,"")||"/";let w=await E.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:x,params:_,nextConfig:y,parsedUrl:A,isDraftMode:b,prerenderManifest:T,routerServerContext:P,isOnDemandRevalidate:S,revalidateOnlyGenerated:N,resolvedPathname:O,clientReferenceManifest:q,serverActionsManifest:H}=w,I=(0,s.normalizeAppPath)(g),M=!!(T.dynamicRoutes[I]||T.routes[O]),k=async()=>((null==P?void 0:P.render404)?await P.render404(e,t,A,!1):t.end("This page could not be found"),null);if(M&&!b){let e=!!T.routes[O],t=T.dynamicRoutes[I];if(t&&!1===t.fallback&&!e){if(y.adapterPath)return await k();throw new v.NoFallbackError}}let U=null;!M||E.isDev||b||(U="/index"===(U=O)?"/":U);let D=!0===E.isDev||!M,j=M&&!D;H&&q&&(0,i.setManifestsSingleton)({page:g,clientReferenceManifest:q,serverActionsManifest:H});let K=e.method||"GET",F=(0,o.getTracer)(),L=F.getActiveScopeSpan(),B=!!(null==P?void 0:P.isWrappedByNextServer),$=!!(0,n.getRequestMeta)(e,"minimalMode"),G=(0,n.getRequestMeta)(e,"incrementalCache")||await E.getIncrementalCache(e,y,T,$);null==G||G.resetRequestCache(),globalThis.__incrementalCache=G;let W={params:_,previewProps:T.preview,renderOpts:{experimental:{authInterrupts:!!y.experimental.authInterrupts,useCacheTimeout:y.experimental.useCacheTimeout},cacheComponents:!!y.cacheComponents,validationLevel:y.experimental.instantInsights.validationLevel,supportsDynamicResponse:D,incrementalCache:G,hmrRefreshHash:(0,n.getRequestMeta)(e,"hmrRefreshHash"),cacheLifeProfiles:y.cacheLife,staticPageGenerationTimeout:y.staticPageGenerationTimeout,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,r,n)=>E.onRequestError(e,t,r,n,P)},sharedContext:{buildId:C,deploymentId:x}},V=new l.NodeNextRequest(e),X=new l.NodeNextResponse(t),z=u.NextRequestAdapter.fromNodeNextRequest(V,(0,u.signalFromNodeResponse)(t)),Z=async({previousCacheEntry:a})=>{try{if(!$&&S&&N&&!a)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let n=await E.handle(z,W);e.fetchMetrics=W.renderOpts.fetchMetrics;let o=W.renderOpts.pendingWaitUntil;o&&r.waitUntil&&(r.waitUntil(o),o=void 0);let i=W.renderOpts.collectedTags;if(!M)return await (0,p.sendResponse)(V,X,n,o),null;{let e=await n.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(n.headers);i&&(t[m.NEXT_CACHE_TAGS_HEADER]=i),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==W.renderOpts.collectedRevalidate&&!(W.renderOpts.collectedRevalidate>=m.INFINITE_CACHE)&&W.renderOpts.collectedRevalidate,r=void 0===W.renderOpts.collectedExpire||W.renderOpts.collectedExpire>=m.INFINITE_CACHE?!1!==a&&a>0?y.expireTime:void 0:W.renderOpts.collectedExpire;return{value:{kind:f.CachedRouteKind.APP_ROUTE,status:n.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:r}}}}catch(t){throw(null==a?void 0:a.isStale)&&await E.onRequestError(e,t,{routerKind:"App Router",routePath:g,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:j,isOnDemandRevalidate:S})},!1,P),t}},J=async(n,i)=>{try{var s,l;let n=await E.handleResponse({req:e,nextConfig:y,cacheKey:U,routeKind:a.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:T,isRoutePPREnabled:!1,isOnDemandRevalidate:S,revalidateOnlyGenerated:N,responseGenerator:Z,waitUntil:r.waitUntil,isMinimalMode:$});if(!M)return;if((null==n||null==(s=n.value)?void 0:s.kind)!==f.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==n||null==(l=n.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});$||t.setHeader("x-nextjs-cache",S?"REVALIDATED":n.isMiss?"MISS":n.isStale?"STALE":"HIT"),b&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let o=(0,h.fromNodeOutgoingHttpHeaders)(n.value.headers);$&&M||o.delete(m.NEXT_CACHE_TAGS_HEADER),!n.cacheControl||t.getHeader("Cache-Control")||o.get("Cache-Control")||o.set("Cache-Control",(0,R.getCacheControlHeader)(n.cacheControl)),await (0,p.sendResponse)(V,X,new Response(n.value.body,{headers:o,status:n.value.status||200}));return}catch(t){if(t instanceof v.NoFallbackError||await E.onRequestError(e,t,{routerKind:"App Router",routePath:I,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:j,isOnDemandRevalidate:S})},!1,P),M)throw t;await (0,p.sendResponse)(V,X,new Response(null,{status:500}));return}finally{(()=>{if(!n)return;let e=t.statusCode;n.setAttributes({"http.status_code":e,"next.rsc":!1}),e&&e>=500&&(n.setStatus({code:o.SpanStatusCode.ERROR}),n.setAttribute("error.type",e.toString()));let a=F.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==d.BaseServerSpan.handleRequest)return console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let r=a.get("next.route")||I,s=`${K} ${r}`;n.setAttributes({"next.route":r,"http.route":r,"next.span_name":s}),n.updateName(s),i&&i!==n&&(i.setAttribute("http.route",r),i.updateName(s))})()}};if(B&&L)await J(L,void 0);else{let t=F.getActiveScopeSpan();await F.withPropagatedContext(e.headers,()=>F.trace(d.BaseServerSpan.handleRequest,{spanName:`${K} ${g}`,kind:o.SpanKind.SERVER,attributes:{"http.method":K,"http.target":e.url}},e=>J(e,t)),void 0,!B)}}e.s(["handler",0,x,"patchFetch",0,function(){return(0,r.patchFetch)({workAsyncStorage:g,workUnitAsyncStorage:w})},"routeModule",0,E,"serverHooks",0,C,"workAsyncStorage",0,g,"workUnitAsyncStorage",0,w])},329280,e=>{e.v(t=>Promise.all(["server/chunks/[externals]_node_readline_1u65a-m._.js","server/chunks/node_modules_consola_dist_chunks_prompt_mjs_02axwqv._.js"].map(t=>e.l(t))).then(()=>t(781937)))}];
2
+
3
+ //# sourceMappingURL=_20qn224._.js.map
@@ -1,4 +1,4 @@
1
- module.exports=[656446,e=>e.a(async(t,o)=>{try{var r=e.i(666680);e.i(347299);var a=e.i(115737),n=e.i(68356),i=e.i(983477),l=e.i(469719),s=e.i(687388),u=e.i(340698),d=e.i(640911),p=e.i(53748),c=e.i(268486),m=e.i(41444),g=e.i(264079),h=t([u]);[u]=h.then?(await h)():h;let x="thursday",{apiKeyName:S,label:k}=g.TEXT_MODEL_PROVIDERS.chatgpt,T=`${k} is not signed in — sign in from Settings › API keys.`,M=l.z.object({access:l.z.string().min(1),refresh:l.z.string().min(1),expires:l.z.number(),accountId:l.z.string().min(1),plan:l.z.string().nullable()}),C=globalThis,E=C.__chatgptRenewal??=(0,c.createKeyedLock)();async function f(e){let t=await fetch("https://auth.openai.com/oauth/token",{method:"POST",headers:{accept:"application/json","content-type":"application/x-www-form-urlencoded"},body:new URLSearchParams({client_id:"app_EMoamEEZ73f0CkXaXp7hrann",...e})}).catch(e=>{d.logger.warn({cause:e},"chatgpt token endpoint unreachable"),(0,p.publicError)("Could not reach ChatGPT's sign-in")}),o=await t.json().catch(()=>null),r=o?.access_token;if(!t.ok||!r){let e=o?.error,r="string"==typeof e?[e,o?.error_description].filter(Boolean).join(": "):e?.message??e?.code??"";(0,p.publicError)(`ChatGPT's sign-in answered ${t.status}${r?`: ${r}`:""}`)}let a=function(e){try{let t=JSON.parse(Buffer.from(e.split(".")[1]??"","base64url").toString("utf8")),o=t["https://api.openai.com/auth"]??{};return{accountId:"string"==typeof o.chatgpt_account_id?o.chatgpt_account_id:null,plan:"string"==typeof o.chatgpt_plan_type?o.chatgpt_plan_type:null,expires:"number"==typeof t.exp?1e3*t.exp:null}}catch{return{accountId:null,plan:null,expires:null}}}(r),n=o?.refresh_token??e.refresh_token;a.accountId&&n||(0,p.publicError)("ChatGPT's sign-in came back without an account");let i=o?.expires_in;return{access:r,refresh:n,expires:"number"==typeof i?Date.now()+1e3*i:a.expires??Date.now(),accountId:a.accountId,plan:a.plan}}async function y(){let e=await (0,u.readConfig)(S);if(!e)return null;try{return M.parse(JSON.parse(e))}catch{return null}}let j=e=>e.expires-s.CHATGPT_SIGN_IN.renewBeforeMs<=Date.now();async function v(){let e=await y();return(e||(0,p.publicError)(T),j(e))?E(S,async()=>{let e=await y();if(e||(0,p.publicError)(T),!j(e))return e;try{let t=await f({grant_type:"refresh_token",refresh_token:e.refresh});return await (0,u.writeConfig)(S,JSON.stringify(t)),t}catch(e){(0,p.publicError)(`Could not renew the ${k} sign-in (${(0,m.errorToString)(e)}). If it keeps failing, sign in again from Settings › API keys.`)}}):e}async function b(){return(await y())?.plan??null}async function _(){let e;if(!await y())return null;try{e=await v()}catch(e){return{refused:(0,m.errorToString)(e)}}let t=await fetch("https://chatgpt.com/backend-api/wham/usage",{headers:{accept:"application/json",authorization:`Bearer ${e.access}`,"chatgpt-account-id":e.accountId,originator:x}}).catch(e=>{d.logger.warn({cause:e},"chatgpt usage unreachable"),(0,p.publicError)("Could not reach ChatGPT")}),o=await t.json().catch(()=>null);if(401===t.status||403===t.status)return{refused:o?.error?.message??o?.detail??`ChatGPT answered ${t.status}`};t.ok||(0,p.publicError)(`ChatGPT answered ${t.status}`);let r=[o?.rate_limit?.primary_window,o?.rate_limit?.secondary_window].filter(e=>"number"==typeof e?.used_percent).sort((e,t)=>(t.used_percent??0)-(e.used_percent??0))[0];r||(0,p.publicError)("ChatGPT did not say how much of the plan is used");let a=Math.round(r.used_percent??0),n=!!o?.rate_limit?.limit_reached,i=r.reset_at?1e3*r.reset_at:r.reset_after_seconds?Date.now()+1e3*r.reset_after_seconds:null;return{plan:o?.plan_type??e.plan,usedPercent:a,resetsAt:i?new Date(i).toISOString():null,spent:n,high:n||a>=s.CHATGPT_USAGE_HIGH}}async function w(e,t){let o=await v(),r=new Headers(t?.headers);if(r.set("authorization",`Bearer ${o.access}`),r.set("chatgpt-account-id",o.accountId),r.set("originator",x),t?.method!=="POST"||"string"!=typeof t.body||!String(e).endsWith("/responses"))return fetch(e,{...t,headers:r});let a=JSON.parse(t.body),n=!0===a.stream,i=[];a.input=(a.input??[]).filter(e=>"system"!==e.role&&"developer"!==e.role||(i.push("string"==typeof e.content?e.content:(e.content??[]).map(e=>e.text??"").join("\n")),!1)),a.instructions=[a.instructions,...i].filter(Boolean).join("\n\n")||"You are a helpful assistant.",a.store=!1,a.stream=!0,a.max_output_tokens=void 0,r.set("accept","text/event-stream");let l=await fetch(e,{...t,headers:r,body:JSON.stringify(a)});return 429===l.status?z(l):n||!l.ok?l:I(l)}async function z(e){let t=await e.text(),o={};try{o=JSON.parse(t).error??{}}catch{}if(!/usage_limit_reached|usage_not_included/.test(`${o.code} ${o.type}`)){let o=e.headers.get("retry-after");return new Response(t,{status:429,headers:{"content-type":"application/json",...o?{"retry-after":o}:{}}})}let r=o.resets_at?1e3*o.resets_at:o.resets_in_seconds?Date.now()+1e3*o.resets_in_seconds:null,a=o.plan_type?` on the ${o.plan_type} plan`:"",n=r?` It resets in ${(0,i.formatDistanceToNowStrict)(r)}.`:"";return Response.json({error:{message:`${k} usage limit reached${a}.${n}`,code:o.code??o.type}},{status:402})}async function I(e){let t=[],o=null,r=null;for(let a of(await e.text()).replaceAll("\r\n","\n").split("\n\n")){let e,n=a.split("\n").filter(e=>e.startsWith("data:")).map(e=>e.slice(5).trimStart()).join("\n");if(n&&"[DONE]"!==n){try{e=JSON.parse(n)}catch{continue}"response.output_item.done"===e.type?t.push(e.item):"response.completed"===e.type||"response.incomplete"===e.type?o=e.response??{}:"response.failed"===e.type?r=e.response?.error??{message:"The response failed"}:"error"===e.type&&(r={code:e.code,message:e.message})}}return r||!o?Response.json({error:{message:r?.message??"The stream ended before the response finished",code:r?.code}},{status:r?.code==="context_length_exceeded"?400:500}):Response.json({...o,output:o.output?.length?o.output:t})}e.s(["chatGptModel",0,function(e){let t=(0,a.createOpenAI)({baseURL:"https://chatgpt.com/backend-api/codex",apiKey:"signed-in",headers:{"OpenAI-Beta":"responses=experimental"},fetch:w}),o=(0,r.randomUUID)();return(0,n.wrapLanguageModel)({model:t.responses(e),middleware:{transformParams:async({params:e})=>({...e,providerOptions:{...e.providerOptions,openai:{promptCacheKey:o,...e.providerOptions?.openai,store:!1,includeWebSearchSources:!1}}})}})},"chatGptSearch",0,()=>(0,a.createOpenAI)({apiKey:"signed-in"}).tools.webSearch(),"readChatGptPlan",0,b,"readChatGptUsage",0,_]),o()}catch(e){o(e)}},!1),268486,e=>{"use strict";var t=e.i(41444);e.s(["createKeyedLock",0,function(){let e=new Map,o=new Map;return function(r,a){let n=e.get(r);n||(n=(0,t.PromiseChain)(),e.set(r,n)),o.set(r,(o.get(r)??0)+1);let i=()=>{let t=(o.get(r)??1)-1;t>0?o.set(r,t):(o.delete(r),e.delete(r))};return n(a).then(e=>(i(),e),e=>{throw i(),e})}}])},115737,e=>{"use strict";var t,o=e.i(847841),r=e.i(546888),a=e.i(376261),n=e.i(110567),i=e.i(469719),l=i.z.object({error:i.z.object({message:i.z.string(),type:i.z.string().nullish(),param:i.z.any().nullish(),code:i.z.union([i.z.string(),i.z.number()]).nullish()})}),s=(0,o.createJsonErrorResponseHandler)({errorSchema:l,errorToMessage:e=>e.error.message});function u(e){var t,o,r,a,n,i;let l,s=(i=e,null==(l=/^o(\d+)(?:-|$)/.exec(i))?void 0:Number(l[1])),u=function(e){let t=/^gpt-(\d+)(?:\.(\d+))?(?:-(.+))?$/.exec(e);if(null!=t)return{major:Number(t[1]),minor:null==t[2]?void 0:Number(t[2]),variant:t[3]}}(e),d=(null==u?void 0:u.minor)==null&&null!=(o=null==(t=null==u?void 0:u.variant)?void 0:t.startsWith("chat"))&&o,p=null!=(a=null==(r=null==u?void 0:u.variant)?void 0:r.startsWith("nano"))&&a,c=null!=u&&u.major>=6,m="gpt-6-sol"===e||"gpt-6-luna"===e,g=null!=s&&s>=3||null!=u&&u.major>=5&&!d,h=e.startsWith("gpt-4")||null!=u&&u.major>=5&&!p&&!d||null!=s&&s>=3,f=null!=s||null!=u&&u.major>=5&&!d,y=!c&&null!=u&&(u.major>5||5===u.major&&(null!=(n=u.minor)?n:0)>=1);return{supportsFlexProcessing:g,supportsPriorityProcessing:h,supportsConfigurationUpdate:c,supportsAsyncToolCalling:c,supportedReasoningEfforts:m?["none","low","medium","high","xhigh","max"]:c?["low","medium","high","xhigh","max"]:void 0,isReasoningModel:f,systemMessageMode:f?"developer":"system",supportsNonReasoningParameters:y}}function d(e){var t,r;let a=function(e){var t;let o=g(e);if(null==o)return;if("response.failed"===o.type){let e=g(o.response),t=g(null==e?void 0:e.error);return"string"==typeof(null==t?void 0:t.message)?{message:t.message,code:h(t.code),type:"response.failed"}:void 0}let r=null!=(t=g(o.error))?t:o;return"string"==typeof r.message&&(null!=g(o.error)||"string"==typeof r.type||"code"in r||"param"in r)?{message:r.message,code:h(r.code),type:"string"==typeof r.type?r.type:void 0}:void 0}(e);if(null==a)return;let n=function(e){var t,o;let r,a="number"==typeof(r="string"==typeof(t=e.code)&&/^\d{3}$/.test(t)?Number(t):t)&&Number.isInteger(o=r)&&o>=400&&o<=599?r:void 0;if(null!=a)return a;let n=[e.code,e.type].filter(e=>"string"==typeof e||"number"==typeof e).join(" ").toLowerCase();return["insufficient_quota","rate_limit"].some(e=>n.includes(e))?429:n.includes("authentication")?401:n.includes("permission")?403:n.includes("not_found")?404:["invalid","bad_request","context_length"].some(e=>n.includes(e))?400:n.includes("overload")?503:n.includes("timeout")?504:500}(a);return(0,o.createProviderStreamError)({message:a.message,type:null!=(t=a.type)?t:void 0,code:null!=(r=a.code)?r:void 0,statusCode:n,isRetryable:function(e,t){return"insufficient_quota"!==e.code&&"insufficient_quota"!==e.type&&(408===t||409===t||429===t||t>=500)}(a,n),data:e})}async function p({stream:e,getError:t,isOutputChunk:o,isAcceptedChunk:r,acceptedGraceMs:n=50,url:i,requestBodyValues:l,responseHeaders:s}){let[u,g]=e.tee(),h=u.getReader(),f=!1;try{let e=!1;for(;;){let u;if(e){let e=await m(h.read(),n);if(e.timedOut)return g;u=e.value}else u=await h.read();if(u.done)return g;let p=u.value;if(!p.success)return g;let y=t(p.value);if(null!=y)throw f=!0,c(h).catch(()=>{}),c(g.getReader()).catch(()=>{}),function({frame:e,url:t,requestBodyValues:o,responseHeaders:r}){var n,i;let l=d(e);return new a.APICallError({message:null!=(n=null==l?void 0:l.message)?n:"OpenAI stream failed before any output was generated",url:t,requestBodyValues:o,statusCode:null!=(i=null==l?void 0:l.statusCode)?i:500,responseHeaders:r,responseBody:JSON.stringify(e),data:e,isRetryable:null==l?void 0:l.isRetryable})}({frame:y,url:i,requestBodyValues:l,responseHeaders:s});if(o(p.value))return g;e||(null==r?void 0:r(p.value))!==!0||(e=!0)}}finally{f||(h.cancel().catch(()=>{}),h.releaseLock())}}async function c(e){try{for(;!(await e.read()).done;);}catch(e){}finally{e.releaseLock()}}async function m(e,t){let o,r=e.then(e=>({timedOut:!1,value:e}));try{let e=await Promise.race([r,new Promise(e=>{o=setTimeout(()=>e({timedOut:!0}),t)})]);return e.timedOut&&r.catch(()=>{}),e}finally{clearTimeout(o)}}function g(e){return"object"==typeof e&&null!=e?e:void 0}function h(e){return"string"==typeof e||"number"==typeof e?e:void 0}function f(e){var t,r,a,n,i,l,s,u;if(null==e)return(0,o.createNullLanguageModelUsage)();let d=null!=(t=e.prompt_tokens)?t:0,p=null!=(r=e.completion_tokens)?r:0,c=null!=(n=null==(a=e.prompt_tokens_details)?void 0:a.cached_tokens)?n:0,m=null!=(l=null==(i=e.prompt_tokens_details)?void 0:i.cache_write_tokens)?l:void 0,g=null!=(u=null==(s=e.completion_tokens_details)?void 0:s.reasoning_tokens)?u:0;return{inputTokens:{total:d,noCache:d-c-(null!=m?m:0),cacheRead:c,cacheWrite:m},outputTokens:{total:p,text:Math.max(0,p-g),reasoning:g},raw:e}}function y(e){var t;return null==(t=null==e?void 0:e.openai)?void 0:t.promptCacheBreakpoint}function v({id:e,model:t,created:r}){return(0,o.createLanguageModelResponseMetadata)({id:e,model:t,created:r||void 0})}function b(e){switch(e){case"stop":return"stop";case"length":return"length";case"content_filter":return"content-filter";case"function_call":case"tool_calls":return"tool-calls";default:return"other"}}var _=(0,o.lazySchema)(()=>(0,o.zodSchema)(i.z.object({id:i.z.string().nullish(),created:i.z.number().nullish(),model:i.z.string().nullish(),choices:i.z.array(i.z.object({message:i.z.object({role:i.z.literal("assistant").nullish(),content:i.z.string().nullish(),audio:i.z.object({transcript:i.z.string().nullish()}).nullish(),tool_calls:i.z.array(i.z.object({id:i.z.string().nullish(),type:i.z.literal("function"),function:i.z.object({name:i.z.string(),arguments:i.z.string()})})).nullish(),annotations:i.z.array(i.z.object({type:i.z.literal("url_citation"),url_citation:i.z.object({start_index:i.z.number(),end_index:i.z.number(),url:i.z.string(),title:i.z.string()})})).nullish()}),index:i.z.number(),logprobs:i.z.object({content:i.z.array(i.z.object({token:i.z.string(),logprob:i.z.number(),top_logprobs:i.z.array(i.z.object({token:i.z.string(),logprob:i.z.number()}))})).nullish()}).nullish(),finish_reason:i.z.string().nullish()})),usage:i.z.object({prompt_tokens:i.z.number().nullish(),completion_tokens:i.z.number().nullish(),total_tokens:i.z.number().nullish(),prompt_tokens_details:i.z.object({cached_tokens:i.z.number().nullish(),cache_write_tokens:i.z.number().nullish()}).nullish(),completion_tokens_details:i.z.object({reasoning_tokens:i.z.number().nullish(),accepted_prediction_tokens:i.z.number().nullish(),rejected_prediction_tokens:i.z.number().nullish()}).nullish()}).nullish()}))),w=(0,o.lazySchema)(()=>(0,o.zodSchema)(i.z.union([i.z.object({id:i.z.string().nullish(),created:i.z.number().nullish(),model:i.z.string().nullish(),choices:i.z.array(i.z.object({delta:i.z.object({role:i.z.enum(["assistant"]).nullish(),content:i.z.string().nullish(),tool_calls:i.z.array(i.z.object({index:i.z.number(),id:i.z.string().nullish(),type:i.z.literal("function").nullish(),function:i.z.object({name:i.z.string().nullish(),arguments:i.z.string().nullish()})})).nullish(),annotations:i.z.array(i.z.object({type:i.z.literal("url_citation"),url_citation:i.z.object({start_index:i.z.number(),end_index:i.z.number(),url:i.z.string(),title:i.z.string()})})).nullish()}).nullish(),logprobs:i.z.object({content:i.z.array(i.z.object({token:i.z.string(),logprob:i.z.number(),top_logprobs:i.z.array(i.z.object({token:i.z.string(),logprob:i.z.number()}))})).nullish()}).nullish(),finish_reason:i.z.string().nullish(),index:i.z.number()})),usage:i.z.object({prompt_tokens:i.z.number().nullish(),completion_tokens:i.z.number().nullish(),total_tokens:i.z.number().nullish(),prompt_tokens_details:i.z.object({cached_tokens:i.z.number().nullish(),cache_write_tokens:i.z.number().nullish()}).nullish(),completion_tokens_details:i.z.object({reasoning_tokens:i.z.number().nullish(),accepted_prediction_tokens:i.z.number().nullish(),rejected_prediction_tokens:i.z.number().nullish()}).nullish()}).nullish()}),l]))),z=(0,o.lazySchema)(()=>(0,o.zodSchema)(i.z.object({logitBias:i.z.record(i.z.coerce.number(),i.z.number()).optional(),logprobs:i.z.union([i.z.boolean(),i.z.number()]).optional(),parallelToolCalls:i.z.boolean().optional(),user:i.z.string().optional(),reasoningEffort:i.z.enum(["none","minimal","low","medium","high","xhigh","max"]).optional(),maxCompletionTokens:i.z.number().optional(),store:i.z.boolean().optional(),metadata:i.z.record(i.z.string().max(64),i.z.string().max(512)).optional(),prediction:i.z.record(i.z.string(),i.z.any()).optional(),serviceTier:i.z.enum(["auto","flex","priority","fast","ultrafast","default"]).optional(),strictJsonSchema:i.z.boolean().optional(),textVerbosity:i.z.enum(["low","medium","high"]).optional(),promptCacheKey:i.z.string().optional(),promptCacheOptions:i.z.object({mode:i.z.enum(["implicit","explicit"]).optional(),ttl:i.z.literal("30m").optional()}).optional(),promptCacheRetention:i.z.enum(["in_memory","24h"]).optional(),safetyIdentifier:i.z.string().optional(),systemMessageMode:i.z.enum(["system","developer","remove"]).optional(),forceReasoning:i.z.boolean().optional()})));function I(e){let t=!1,o=!1,r=i(e),n=[];return t&&n.push({type:"compatibility",feature:"JSON Schema propertyNames",details:"OpenAI does not support JSON Schema propertyNames. It was removed before sending the schema, so OpenAI will not enforce property-name constraints."}),o&&n.push({type:"compatibility",feature:"JSON Schema pattern with regex lookaround",details:"OpenAI does not support regex lookaround in JSON Schema patterns. The pattern was removed before sending the schema, so OpenAI will not enforce that constraint."}),{schema:r,warnings:n};function i(e){let r=e.propertyNames;if(null!=r){if("boolean"==typeof r||"string"!==r.type)throw new a.UnsupportedFunctionalityError({functionality:"JSON Schema propertyNames that does not use a string schema"});t=!0}let n={...e};for(let e of(delete n.propertyNames,null!=n.pattern&&function(e){let t=!1,o=!1;for(let r=0;r<e.length;r++){let a=e[r];if(t){t=!1;continue}if("\\"===a){t=!0;continue}if("["===a){o=!0;continue}if("]"===a){o=!1;continue}if(!o&&"("===a&&"?"===e[r+1]){let t=e[r+2];if("="===t||"!"===t||"<"===t&&("="===e[r+3]||"!"===e[r+3]))return!0}}return!1}(n.pattern)&&(delete n.pattern,o=!0),null!=n.properties&&(n.properties=l(n.properties)),null!=n.patternProperties&&(n.patternProperties=l(n.patternProperties)),null!=n.additionalProperties&&(n.additionalProperties=s(n.additionalProperties)),null!=n.additionalItems&&(n.additionalItems=s(n.additionalItems)),null!=n.items&&(n.items=Array.isArray(n.items)?n.items.map(s):s(n.items)),null!=n.contains&&(n.contains=s(n.contains)),null!=n.not&&(n.not=s(n.not)),null!=n.allOf&&(n.allOf=n.allOf.map(s)),null!=n.anyOf&&(n.anyOf=n.anyOf.map(s)),null!=n.oneOf&&(n.oneOf=n.oneOf.map(s)),null!=n.definitions&&(n.definitions=l(n.definitions)),null!=n.$defs&&(n.$defs=l(n.$defs)),null!=n.dependencies&&(n.dependencies=Object.fromEntries(Object.entries(n.dependencies).map(([e,t])=>[e,Array.isArray(t)?t:s(t)]))),["if","then","else"])){let t=n[e];null!=t&&(n[e]=s(t))}return n}function l(e){return Object.fromEntries(Object.entries(e).map(([e,t])=>[e,s(t)]))}function s(e){return"boolean"==typeof e?e:i(e)}}var x=class e{constructor(e,t){this.specificationVersion="v4",this.supportedUrls={"image/*":[/^https?:\/\/.*$/]},this.modelId=e,this.config=t}static[n.WORKFLOW_SERIALIZE](e){return(0,o.serializeModelOptions)({modelId:e.modelId,config:e.config})}static[n.WORKFLOW_DESERIALIZE](t){return new e(t.modelId,t.config)}get provider(){return this.config.provider}async getArgs({prompt:e,maxOutputTokens:t,temperature:r,topP:n,topK:i,frequencyPenalty:l,presencePenalty:s,stopSequences:d,responseFormat:p,seed:c,tools:m,toolChoice:g,reasoning:h,providerOptions:f}){var v,b,_,w,x,S;let k=[],T=null!=(v=await (0,o.parseProviderOptions)({provider:"openai",providerOptions:f,schema:z}))?v:{},M=u(this.modelId),C=null!=(b=T.reasoningEffort)?b:(0,o.isCustomReasoning)(h)?h:void 0;null==C||null==M.supportedReasoningEfforts||M.supportedReasoningEfforts.includes(C)||(k.push({type:"unsupported",feature:"reasoningEffort",details:`${this.modelId} only supports the following reasoning efforts: ${M.supportedReasoningEfforts.join(", ")}`}),C=void 0);let E=null!=(_=T.forceReasoning)?_:M.isReasoningModel;null!=i&&k.push({type:"unsupported",feature:"topK"});let{messages:j,warnings:O}=function({prompt:e,systemMessageMode:t="system"}){var r,n,i;let l=[],s=[];for(let{role:u,content:d,providerOptions:p}of e)switch(u){case"system":switch(t){case"system":{let e=y(p);l.push({role:"system",content:null==e?d:[{type:"text",text:d,prompt_cache_breakpoint:e}]});break}case"developer":{let e=y(p);l.push({role:"developer",content:null==e?d:[{type:"text",text:d,prompt_cache_breakpoint:e}]});break}case"remove":s.push({type:"other",message:"system messages are removed for this model"});break;default:throw Error(`Unsupported system message mode: ${t}`)}break;case"user":if(1===d.length&&"text"===d[0].type&&null==y(d[0].providerOptions)){l.push({role:"user",content:d[0].text});break}l.push({role:"user",content:d.map((e,t)=>{var r,n,i;switch(e.type){case"text":{let t=y(e.providerOptions);return{type:"text",text:e.text,...null!=t&&{prompt_cache_breakpoint:t}}}case"file":{let l=y(e.providerOptions);switch(e.data.type){case"reference":return{type:"file",file:{file_id:(0,o.resolveProviderReference)({reference:e.data.reference,provider:"openai"})},...null!=l&&{prompt_cache_breakpoint:l}};case"text":throw new a.UnsupportedFunctionalityError({functionality:"text file parts"});case"url":case"data":{let s=(0,o.getTopLevelMediaType)(e.mediaType);if("image"===s)return{type:"image_url",image_url:{url:"url"===e.data.type?e.data.url.toString():`data:${(0,o.resolveFullMediaType)({part:e})};base64,${(0,o.convertToBase64)(e.data.data)}`,detail:null==(n=null==(r=e.providerOptions)?void 0:r.openai)?void 0:n.imageDetail},...null!=l&&{prompt_cache_breakpoint:l}};if("audio"===s){if("url"===e.data.type)throw new a.UnsupportedFunctionalityError({functionality:"audio file parts with URLs"});let t=(0,o.resolveFullMediaType)({part:e});switch(t){case"audio/wav":return{type:"input_audio",input_audio:{data:(0,o.convertToBase64)(e.data.data),format:"wav"},...null!=l&&{prompt_cache_breakpoint:l}};case"audio/mp3":case"audio/mpeg":return{type:"input_audio",input_audio:{data:(0,o.convertToBase64)(e.data.data),format:"mp3"},...null!=l&&{prompt_cache_breakpoint:l}};default:throw new a.UnsupportedFunctionalityError({functionality:`audio content parts with media type ${t}`})}}{let r=(0,o.resolveFullMediaType)({part:e});if("application/pdf"!==r)throw new a.UnsupportedFunctionalityError({functionality:`file part media type ${r}`});if("url"===e.data.type)throw new a.UnsupportedFunctionalityError({functionality:"PDF file parts with URLs"});return{type:"file",file:{filename:null!=(i=e.filename)?i:`part-${t}.pdf`,file_data:`data:application/pdf;base64,${(0,o.convertToBase64)(e.data.data)}`},...null!=l&&{prompt_cache_breakpoint:l}}}}}}}})});break;case"assistant":{let e="",t=[],o=!1,r=[];for(let a of d)switch(a.type){case"text":{let r=y(a.providerOptions);e+=a.text,t.push({type:"text",text:a.text,...null!=r&&{prompt_cache_breakpoint:r}}),o||(o=null!=r);break}case"tool-call":r.push({id:a.toolCallId,type:"function",function:{name:a.toolName,arguments:JSON.stringify("object"!=typeof(i=a.input)||null===i||Array.isArray(i)?{}:i)}})}l.push({role:"assistant",content:o?t:r.length>0?e||null:e,tool_calls:r.length>0?r:void 0});break}case"tool":for(let e of d){let t;if("tool-approval-response"===e.type)continue;let o=e.output,a=null!=(r="content"===o.type?o.value.map(e=>y(e.providerOptions)).find(e=>null!=e):y(o.providerOptions))?r:y(e.providerOptions);switch(o.type){case"text":case"error-text":t=o.value;break;case"execution-denied":t=null!=(n=o.reason)?n:"Tool call execution denied.";break;case"content":case"json":case"error-json":t=JSON.stringify(o.value)}l.push({role:"tool",tool_call_id:e.toolCallId,content:null==a?t:[{type:"text",text:t,prompt_cache_breakpoint:a}]})}break;default:throw Error(`Unsupported role: ${u}`)}return{messages:l,warnings:s}}({prompt:e,systemMessageMode:null!=(w=T.systemMessageMode)?w:E?"developer":M.systemMessageMode});k.push(...O);let R=null==(x=T.strictJsonSchema)||x,A=(null==p?void 0:p.type)==="json"&&null!=p.schema?I(p.schema):void 0;null!=A&&k.push(...A.warnings);let N={model:this.modelId,logit_bias:T.logitBias,logprobs:!0===T.logprobs||"number"==typeof T.logprobs||void 0,top_logprobs:"number"==typeof T.logprobs?T.logprobs:"boolean"==typeof T.logprobs&&T.logprobs?0:void 0,user:T.user,parallel_tool_calls:T.parallelToolCalls,max_tokens:t,temperature:r,top_p:n,frequency_penalty:l,presence_penalty:s,response_format:(null==p?void 0:p.type)==="json"?null!=A?{type:"json_schema",json_schema:{schema:A.schema,strict:R,name:null!=(S=p.name)?S:"response",description:p.description}}:{type:"json_object"}:void 0,stop:d,seed:c,verbosity:T.textVerbosity,max_completion_tokens:T.maxCompletionTokens,store:T.store,metadata:T.metadata,prediction:T.prediction,reasoning_effort:C,service_tier:T.serviceTier,prompt_cache_key:T.promptCacheKey,prompt_cache_options:T.promptCacheOptions,prompt_cache_retention:T.promptCacheRetention,safety_identifier:T.safetyIdentifier,messages:j};null!=M.supportedReasoningEfforts&&null!=N.prompt_cache_retention&&(N.prompt_cache_retention=void 0,k.push({type:"unsupported",feature:"promptCacheRetention",details:"promptCacheRetention is not supported by GPT-6 and later models; use promptCacheOptions instead"})),E?("none"===C&&M.supportsNonReasoningParameters||(null!=N.temperature&&(N.temperature=void 0,k.push({type:"unsupported",feature:"temperature",details:"temperature is not supported for reasoning models"})),null!=N.top_p&&(N.top_p=void 0,k.push({type:"unsupported",feature:"topP",details:"topP is not supported for reasoning models"})),null!=N.logprobs&&(N.logprobs=void 0,k.push({type:"other",message:"logprobs is not supported for reasoning models"}))),null!=N.frequency_penalty&&(N.frequency_penalty=void 0,k.push({type:"unsupported",feature:"frequencyPenalty",details:"frequencyPenalty is not supported for reasoning models"})),null!=N.presence_penalty&&(N.presence_penalty=void 0,k.push({type:"unsupported",feature:"presencePenalty",details:"presencePenalty is not supported for reasoning models"})),null!=N.logit_bias&&(N.logit_bias=void 0,k.push({type:"other",message:"logitBias is not supported for reasoning models"})),null!=N.top_logprobs&&(N.top_logprobs=void 0,k.push({type:"other",message:"topLogprobs is not supported for reasoning models"})),null!=N.max_tokens&&(null==N.max_completion_tokens&&(N.max_completion_tokens=N.max_tokens),N.max_tokens=void 0)):(this.modelId.startsWith("gpt-4o-search-preview")||this.modelId.startsWith("gpt-4o-mini-search-preview"))&&null!=N.temperature&&(N.temperature=void 0,k.push({type:"unsupported",feature:"temperature",details:"temperature is not supported for the search preview models and has been removed."})),"flex"!==T.serviceTier||M.supportsFlexProcessing||(k.push({type:"unsupported",feature:"serviceTier",details:"flex processing is only available for o3, o4-mini, and gpt-5 models"}),N.service_tier=void 0),"priority"!==T.serviceTier&&"fast"!==T.serviceTier||M.supportsPriorityProcessing||(k.push({type:"unsupported",feature:"serviceTier",details:"priority processing is only available for supported models (gpt-4, gpt-5, gpt-5-mini, o3, o4-mini) and requires Enterprise access. gpt-5-nano is not supported"}),N.service_tier=void 0);let{tools:P,toolChoice:q,toolWarnings:$}=function({tools:e,toolChoice:t}){e=(null==e?void 0:e.length)?e:void 0;let o=[];if(null==e)return{tools:void 0,toolChoice:void 0,toolWarnings:o};let r=[];for(let t of e)if("function"===t.type){let e=I(t.inputSchema);o.push(...e.warnings),r.push({type:"function",function:{name:t.name,description:t.description,parameters:e.schema,...null!=t.strict?{strict:t.strict}:{}}})}else o.push({type:"unsupported",feature:`tool type: ${t.type}`});if(null==t)return{tools:r,toolChoice:void 0,toolWarnings:o};let n=t.type;switch(n){case"auto":case"none":case"required":return{tools:r,toolChoice:n,toolWarnings:o};case"tool":return{tools:r,toolChoice:{type:"function",function:{name:t.toolName}},toolWarnings:o};default:throw new a.UnsupportedFunctionalityError({functionality:`tool choice type: ${n}`})}}({tools:m,toolChoice:g});return{args:{...N,tools:P,tool_choice:q},warnings:[...k,...$]}}async doGenerate(e){var t,r,n,i,l,u,d,p;let{args:c,warnings:m}=await this.getArgs(e),{responseHeaders:g,value:h,rawValue:y}=await (0,o.postJsonToApi)({url:this.config.url({path:"/chat/completions",modelId:this.modelId}),headers:(0,o.combineHeaders)(null==(r=(t=this.config).headers)?void 0:r.call(t),e.headers),body:c,failedResponseHandler:s,successfulResponseHandler:(0,o.createJsonResponseHandler)(_),abortSignal:e.abortSignal,fetch:this.config.fetch}),w=h.choices[0];if(null==w)throw new a.InvalidResponseDataError({data:y,message:"Response did not contain any choices."});let z=[],I=null!=w.message.content&&w.message.content.length>0?w.message.content:null==(n=w.message.audio)?void 0:n.transcript;for(let e of(null!=I&&I.length>0&&z.push({type:"text",text:I}),null!=(i=w.message.tool_calls)?i:[]))z.push({type:"tool-call",toolCallId:e.id||(0,o.generateId)(),toolName:e.function.name,input:e.function.arguments});for(let e of null!=(l=w.message.annotations)?l:[])z.push({type:"source",sourceType:"url",id:(0,o.generateId)(),url:e.url_citation.url,title:e.url_citation.title});let x=null==(u=h.usage)?void 0:u.completion_tokens_details,S={openai:{}};return(null==x?void 0:x.accepted_prediction_tokens)!=null&&(S.openai.acceptedPredictionTokens=null==x?void 0:x.accepted_prediction_tokens),(null==x?void 0:x.rejected_prediction_tokens)!=null&&(S.openai.rejectedPredictionTokens=null==x?void 0:x.rejected_prediction_tokens),(null==(d=w.logprobs)?void 0:d.content)!=null&&(S.openai.logprobs=w.logprobs.content),{content:z,finishReason:{unified:b(w.finish_reason),raw:null!=(p=w.finish_reason)?p:void 0},usage:f(h.usage),request:{body:c},response:{...v(h),headers:g,body:y},warnings:m,providerMetadata:S}}async doStream(e){var t,r;let a,n,{args:i,warnings:l}=await this.getArgs(e),u={...i,stream:!0,stream_options:{include_usage:!0}},c=this.config.url({path:"/chat/completions",modelId:this.modelId}),{responseHeaders:m,value:g}=await (0,o.postJsonToApi)({url:c,headers:(0,o.combineHeaders)(null==(r=(t=this.config).headers)?void 0:r.call(t),e.headers),body:u,failedResponseHandler:s,successfulResponseHandler:(0,o.createEventSourceResponseHandler)(w),abortSignal:e.abortSignal,fetch:this.config.fetch}),h=await p({stream:g,getError:e=>"error"in e?e.error:void 0,isOutputChunk:S,url:c,requestBodyValues:u,responseHeaders:m}),y={unified:"other",raw:void 0},_=!1,z=!1,I={openai:{}};return{stream:h.pipeThrough(new TransformStream({start(e){a=new o.StreamingToolCallTracker(e,{generateId:o.generateId,typeValidation:"if-present"}),e.enqueue({type:"stream-start",warnings:l})},transform(t,r){var i,l,s,u,p,c;if(e.includeRawChunks&&r.enqueue({type:"raw",rawValue:t.rawValue}),!t.success){y={unified:"error",raw:void 0},r.enqueue({type:"error",error:t.error});return}let m=t.value;if("error"in m){y={unified:"error",raw:void 0},r.enqueue({type:"error",error:null!=(i=d(m.error))?i:m.error});return}!_&&Object.values(v(m)).some(Boolean)&&(_=!0,r.enqueue({type:"response-metadata",...v(m)})),null!=m.usage&&(n=m.usage,(null==(l=m.usage.completion_tokens_details)?void 0:l.accepted_prediction_tokens)!=null&&(I.openai.acceptedPredictionTokens=null==(s=m.usage.completion_tokens_details)?void 0:s.accepted_prediction_tokens),(null==(u=m.usage.completion_tokens_details)?void 0:u.rejected_prediction_tokens)!=null&&(I.openai.rejectedPredictionTokens=null==(p=m.usage.completion_tokens_details)?void 0:p.rejected_prediction_tokens));let g=m.choices[0];if((null==g?void 0:g.finish_reason)!=null&&(y={unified:b(g.finish_reason),raw:g.finish_reason}),(null==(c=null==g?void 0:g.logprobs)?void 0:c.content)!=null&&(I.openai.logprobs=g.logprobs.content),(null==g?void 0:g.delta)==null)return;let h=g.delta;if(null!=h.content&&(z||(r.enqueue({type:"text-start",id:"0"}),z=!0),r.enqueue({type:"text-delta",id:"0",delta:h.content})),null!=h.tool_calls)for(let e of h.tool_calls)a.processDelta(e);if(null!=h.annotations)for(let e of h.annotations)r.enqueue({type:"source",sourceType:"url",id:(0,o.generateId)(),url:e.url_citation.url,title:e.url_citation.title})},flush(e){z&&e.enqueue({type:"text-end",id:"0"}),a.flush(),e.enqueue({type:"finish",finishReason:y,usage:f(n),...null!=I?{providerMetadata:I}:{}})}})),request:{body:u},response:{headers:m}}}};function S(e){return!("error"in e)&&e.choices.some(e=>{let t=e.delta;return(null==t?void 0:t.content)!=null&&t.content.length>0||(null==t?void 0:t.tool_calls)!=null&&t.tool_calls.length>0||(null==t?void 0:t.annotations)!=null&&t.annotations.length>0})}function k(e){var t,r,a,n;if(null==e)return(0,o.createNullLanguageModelUsage)();let i=null!=(t=e.prompt_tokens)?t:0,l=null!=(r=e.completion_tokens)?r:0;return{inputTokens:{total:null!=(a=e.prompt_tokens)?a:void 0,noCache:i,cacheRead:void 0,cacheWrite:void 0},outputTokens:{total:null!=(n=e.completion_tokens)?n:void 0,text:l,reasoning:void 0},raw:e}}function T(e){switch(e){case"stop":return"stop";case"length":return"length";case"content_filter":return"content-filter";case"function_call":case"tool_calls":return"tool-calls";default:return"other"}}var M=(0,o.lazySchema)(()=>(0,o.zodSchema)(i.z.object({id:i.z.string().nullish(),created:i.z.number().nullish(),model:i.z.string().nullish(),choices:i.z.array(i.z.object({text:i.z.string(),finish_reason:i.z.string(),logprobs:i.z.object({tokens:i.z.array(i.z.string()),token_logprobs:i.z.array(i.z.number()),top_logprobs:i.z.array(i.z.record(i.z.string(),i.z.number())).nullish()}).nullish()})),usage:i.z.object({prompt_tokens:i.z.number(),completion_tokens:i.z.number(),total_tokens:i.z.number()}).nullish()}))),C=(0,o.lazySchema)(()=>(0,o.zodSchema)(i.z.union([i.z.object({id:i.z.string().nullish(),created:i.z.number().nullish(),model:i.z.string().nullish(),choices:i.z.array(i.z.object({text:i.z.string(),finish_reason:i.z.string().nullish(),index:i.z.number(),logprobs:i.z.object({tokens:i.z.array(i.z.string()),token_logprobs:i.z.array(i.z.number()),top_logprobs:i.z.array(i.z.record(i.z.string(),i.z.number())).nullish()}).nullish()})),usage:i.z.object({prompt_tokens:i.z.number(),completion_tokens:i.z.number(),total_tokens:i.z.number()}).nullish()}),l]))),E=(0,o.lazySchema)(()=>(0,o.zodSchema)(i.z.object({echo:i.z.boolean().optional(),logitBias:i.z.record(i.z.string(),i.z.number()).optional(),suffix:i.z.string().optional(),user:i.z.string().optional(),logprobs:i.z.union([i.z.boolean(),i.z.number()]).optional()}))),j=class e{constructor(e,t){this.specificationVersion="v4",this.supportedUrls={},this.modelId=e,this.config=t}get providerOptionsName(){return this.config.provider.split(".")[0].trim()}static[n.WORKFLOW_SERIALIZE](e){return(0,o.serializeModelOptions)({modelId:e.modelId,config:e.config})}static[n.WORKFLOW_DESERIALIZE](t){return new e(t.modelId,t.config)}get provider(){return this.config.provider}async getArgs({prompt:e,maxOutputTokens:t,temperature:r,topP:n,topK:i,frequencyPenalty:l,presencePenalty:s,stopSequences:u,responseFormat:d,tools:p,toolChoice:c,seed:m,providerOptions:g}){let h=[],f={...await (0,o.parseProviderOptions)({provider:"openai",providerOptions:g,schema:E}),...await (0,o.parseProviderOptions)({provider:this.providerOptionsName,providerOptions:g,schema:E})};null!=i&&h.push({type:"unsupported",feature:"topK"}),(null==p?void 0:p.length)&&h.push({type:"unsupported",feature:"tools"}),null!=c&&h.push({type:"unsupported",feature:"toolChoice"}),null!=d&&"text"!==d.type&&h.push({type:"unsupported",feature:"responseFormat",details:"JSON response format is not supported."});let{prompt:y,stopSequences:v}=function({prompt:e,user:t="user",assistant:o="assistant"}){let r="";for(let{role:n,content:i}of("system"===e[0].role&&(r+=`${e[0].content}
1
+ module.exports=[656446,e=>e.a(async(t,o)=>{try{var r=e.i(666680);e.i(347299);var a=e.i(115737),n=e.i(68356),i=e.i(983477),l=e.i(469719),s=e.i(687388),u=e.i(340698),d=e.i(640911),p=e.i(53748),c=e.i(268486),m=e.i(41444),g=e.i(264079),h=t([u]);[u]=h.then?(await h)():h;let S="thursday",{apiKeyName:k,label:T}=g.TEXT_MODEL_PROVIDERS.chatgpt,M=`${T} is not signed in — sign in from Settings › API keys.`,C=l.z.object({access:l.z.string().min(1),refresh:l.z.string().min(1),expires:l.z.number(),accountId:l.z.string().min(1),plan:l.z.string().nullable()}),E=globalThis,j=E.__chatgptRenewal??=(0,c.createKeyedLock)();async function f(e){let t=await fetch("https://auth.openai.com/oauth/token",{method:"POST",headers:{accept:"application/json","content-type":"application/x-www-form-urlencoded"},body:new URLSearchParams({client_id:"app_EMoamEEZ73f0CkXaXp7hrann",...e})}).catch(e=>{d.logger.warn({cause:e},"chatgpt token endpoint unreachable"),(0,p.publicError)("Could not reach ChatGPT's sign-in")}),o=await t.json().catch(()=>null),r=o?.access_token;if(!t.ok||!r){let e=o?.error,r="string"==typeof e?[e,o?.error_description].filter(Boolean).join(": "):e?.message??e?.code??"";(0,p.publicError)(`ChatGPT's sign-in answered ${t.status}${r?`: ${r}`:""}`)}let a=function(e){try{let t=JSON.parse(Buffer.from(e.split(".")[1]??"","base64url").toString("utf8")),o=t["https://api.openai.com/auth"]??{};return{accountId:"string"==typeof o.chatgpt_account_id?o.chatgpt_account_id:null,plan:"string"==typeof o.chatgpt_plan_type?o.chatgpt_plan_type:null,expires:"number"==typeof t.exp?1e3*t.exp:null}}catch{return{accountId:null,plan:null,expires:null}}}(r),n=o?.refresh_token??e.refresh_token;a.accountId&&n||(0,p.publicError)("ChatGPT's sign-in came back without an account");let i=o?.expires_in;return{access:r,refresh:n,expires:"number"==typeof i?Date.now()+1e3*i:a.expires??Date.now(),accountId:a.accountId,plan:a.plan}}async function y(){let e=await (0,u.readConfig)(k);if(!e)return null;try{return C.parse(JSON.parse(e))}catch{return null}}let O=e=>e.expires-s.CHATGPT_SIGN_IN.renewBeforeMs<=Date.now();async function v(){let e=await y();return(e||(0,p.publicError)(M),O(e))?j(k,async()=>{let e=await y();if(e||(0,p.publicError)(M),!O(e))return e;try{let t=await f({grant_type:"refresh_token",refresh_token:e.refresh});return await (0,u.writeConfig)(k,JSON.stringify(t)),t}catch(e){(0,p.publicError)(`Could not renew the ${T} sign-in (${(0,m.errorToString)(e)}). If it keeps failing, sign in again from Settings › API keys.`)}}):e}async function b(){return(await y())?.plan??null}async function _(){let e;if(!await y())return null;try{e=await v()}catch(e){return{refused:(0,m.errorToString)(e)}}let t=await fetch("https://chatgpt.com/backend-api/wham/usage",{headers:{accept:"application/json",authorization:`Bearer ${e.access}`,"chatgpt-account-id":e.accountId,originator:S}}).catch(e=>{d.logger.warn({cause:e},"chatgpt usage unreachable"),(0,p.publicError)("Could not reach ChatGPT")}),o=await t.json().catch(()=>null);if(401===t.status||403===t.status)return{refused:o?.error?.message??o?.detail??`ChatGPT answered ${t.status}`};t.ok||(0,p.publicError)(`ChatGPT answered ${t.status}`);let r=[o?.rate_limit?.primary_window,o?.rate_limit?.secondary_window].filter(e=>"number"==typeof e?.used_percent).sort((e,t)=>(t.used_percent??0)-(e.used_percent??0))[0];r||(0,p.publicError)("ChatGPT did not say how much of the plan is used");let a=Math.round(r.used_percent??0),n=!!o?.rate_limit?.limit_reached,i=r.reset_at?1e3*r.reset_at:r.reset_after_seconds?Date.now()+1e3*r.reset_after_seconds:null;return{plan:o?.plan_type??e.plan,usedPercent:a,resetsAt:i?new Date(i).toISOString():null,spent:n,high:n||a>=s.CHATGPT_USAGE_HIGH}}async function w(e,t){let o=await v(),r=new Headers(t?.headers);if(r.set("authorization",`Bearer ${o.access}`),r.set("chatgpt-account-id",o.accountId),r.set("originator",S),t?.method!=="POST"||"string"!=typeof t.body||!String(e).endsWith("/responses"))return fetch(e,{...t,headers:r});let a=JSON.parse(t.body),n=!0===a.stream;a.prompt_cache_key&&r.set("session-id",a.prompt_cache_key);let i=[];a.input=(a.input??[]).filter(e=>"system"!==e.role&&"developer"!==e.role||(i.push("string"==typeof e.content?e.content:(e.content??[]).map(e=>e.text??"").join("\n")),!1)),a.instructions=[a.instructions,...i].filter(Boolean).join("\n\n")||"You are a helpful assistant.",a.store=!1,a.stream=!0,a.max_output_tokens=void 0,r.set("accept","text/event-stream");let l=await fetch(e,{...t,headers:r,body:JSON.stringify(a)});return 429===l.status?I(l):l.ok?n?l:x(l):z(l)}async function z(e){let t=await e.clone().json().catch(()=>null);if("string"!=typeof t?.detail)return e;let o=e.headers.get("retry-after");return Response.json({error:{message:t.detail}},{status:e.status,headers:o?{"retry-after":o}:{}})}async function I(e){let t=await e.text(),o={};try{o=JSON.parse(t).error??{}}catch{}if(!/usage_limit_reached|usage_not_included/.test(`${o.code} ${o.type}`)){let o=e.headers.get("retry-after");return new Response(t,{status:429,headers:{"content-type":"application/json",...o?{"retry-after":o}:{}}})}let r=o.resets_at?1e3*o.resets_at:o.resets_in_seconds?Date.now()+1e3*o.resets_in_seconds:null,a=o.plan_type?` on the ${o.plan_type} plan`:"",n=r?` It resets in ${(0,i.formatDistanceToNowStrict)(r)}.`:"";return Response.json({error:{message:`${T} usage limit reached${a}.${n}`,code:o.code??o.type}},{status:402})}async function x(e){let t=[],o=null,r=null;for(let a of(await e.text()).replaceAll("\r\n","\n").split("\n\n")){let e,n=a.split("\n").filter(e=>e.startsWith("data:")).map(e=>e.slice(5).trimStart()).join("\n");if(n&&"[DONE]"!==n){try{e=JSON.parse(n)}catch{continue}"response.output_item.done"===e.type?t.push(e.item):"response.completed"===e.type||"response.incomplete"===e.type?o=e.response??{}:"response.failed"===e.type?r=e.response?.error??{message:"The response failed"}:"error"===e.type&&(r={code:e.code,message:e.message})}}return r||!o?Response.json({error:{message:r?.message??"The stream ended before the response finished",code:r?.code}},{status:r?.code==="context_length_exceeded"?400:500}):Response.json({...o,output:o.output?.length?o.output:t})}e.s(["chatGptModel",0,function(e){let t=(0,a.createOpenAI)({baseURL:"https://chatgpt.com/backend-api/codex",apiKey:"signed-in",headers:{"OpenAI-Beta":"responses=experimental"},fetch:w}),o=(0,r.randomUUID)();return(0,n.wrapLanguageModel)({model:t.responses(e),middleware:{transformParams:async({params:e})=>({...e,providerOptions:{...e.providerOptions,openai:{promptCacheKey:o,...e.providerOptions?.openai,store:!1,includeWebSearchSources:!1}}})}})},"chatGptSearch",0,()=>(0,a.createOpenAI)({apiKey:"signed-in"}).tools.webSearch(),"readChatGptPlan",0,b,"readChatGptUsage",0,_]),o()}catch(e){o(e)}},!1),268486,e=>{"use strict";var t=e.i(41444);e.s(["createKeyedLock",0,function(){let e=new Map,o=new Map;return function(r,a){let n=e.get(r);n||(n=(0,t.PromiseChain)(),e.set(r,n)),o.set(r,(o.get(r)??0)+1);let i=()=>{let t=(o.get(r)??1)-1;t>0?o.set(r,t):(o.delete(r),e.delete(r))};return n(a).then(e=>(i(),e),e=>{throw i(),e})}}])},115737,e=>{"use strict";var t,o=e.i(847841),r=e.i(546888),a=e.i(376261),n=e.i(110567),i=e.i(469719),l=i.z.object({error:i.z.object({message:i.z.string(),type:i.z.string().nullish(),param:i.z.any().nullish(),code:i.z.union([i.z.string(),i.z.number()]).nullish()})}),s=(0,o.createJsonErrorResponseHandler)({errorSchema:l,errorToMessage:e=>e.error.message});function u(e){var t,o,r,a,n,i;let l,s=(i=e,null==(l=/^o(\d+)(?:-|$)/.exec(i))?void 0:Number(l[1])),u=function(e){let t=/^gpt-(\d+)(?:\.(\d+))?(?:-(.+))?$/.exec(e);if(null!=t)return{major:Number(t[1]),minor:null==t[2]?void 0:Number(t[2]),variant:t[3]}}(e),d=(null==u?void 0:u.minor)==null&&null!=(o=null==(t=null==u?void 0:u.variant)?void 0:t.startsWith("chat"))&&o,p=null!=(a=null==(r=null==u?void 0:u.variant)?void 0:r.startsWith("nano"))&&a,c=null!=u&&u.major>=6,m="gpt-6-sol"===e||"gpt-6-luna"===e,g=null!=s&&s>=3||null!=u&&u.major>=5&&!d,h=e.startsWith("gpt-4")||null!=u&&u.major>=5&&!p&&!d||null!=s&&s>=3,f=null!=s||null!=u&&u.major>=5&&!d,y=!c&&null!=u&&(u.major>5||5===u.major&&(null!=(n=u.minor)?n:0)>=1);return{supportsFlexProcessing:g,supportsPriorityProcessing:h,supportsConfigurationUpdate:c,supportsAsyncToolCalling:c,supportedReasoningEfforts:m?["none","low","medium","high","xhigh","max"]:c?["low","medium","high","xhigh","max"]:void 0,isReasoningModel:f,systemMessageMode:f?"developer":"system",supportsNonReasoningParameters:y}}function d(e){var t,r;let a=function(e){var t;let o=g(e);if(null==o)return;if("response.failed"===o.type){let e=g(o.response),t=g(null==e?void 0:e.error);return"string"==typeof(null==t?void 0:t.message)?{message:t.message,code:h(t.code),type:"response.failed"}:void 0}let r=null!=(t=g(o.error))?t:o;return"string"==typeof r.message&&(null!=g(o.error)||"string"==typeof r.type||"code"in r||"param"in r)?{message:r.message,code:h(r.code),type:"string"==typeof r.type?r.type:void 0}:void 0}(e);if(null==a)return;let n=function(e){var t,o;let r,a="number"==typeof(r="string"==typeof(t=e.code)&&/^\d{3}$/.test(t)?Number(t):t)&&Number.isInteger(o=r)&&o>=400&&o<=599?r:void 0;if(null!=a)return a;let n=[e.code,e.type].filter(e=>"string"==typeof e||"number"==typeof e).join(" ").toLowerCase();return["insufficient_quota","rate_limit"].some(e=>n.includes(e))?429:n.includes("authentication")?401:n.includes("permission")?403:n.includes("not_found")?404:["invalid","bad_request","context_length"].some(e=>n.includes(e))?400:n.includes("overload")?503:n.includes("timeout")?504:500}(a);return(0,o.createProviderStreamError)({message:a.message,type:null!=(t=a.type)?t:void 0,code:null!=(r=a.code)?r:void 0,statusCode:n,isRetryable:function(e,t){return"insufficient_quota"!==e.code&&"insufficient_quota"!==e.type&&(408===t||409===t||429===t||t>=500)}(a,n),data:e})}async function p({stream:e,getError:t,isOutputChunk:o,isAcceptedChunk:r,acceptedGraceMs:n=50,url:i,requestBodyValues:l,responseHeaders:s}){let[u,g]=e.tee(),h=u.getReader(),f=!1;try{let e=!1;for(;;){let u;if(e){let e=await m(h.read(),n);if(e.timedOut)return g;u=e.value}else u=await h.read();if(u.done)return g;let p=u.value;if(!p.success)return g;let y=t(p.value);if(null!=y)throw f=!0,c(h).catch(()=>{}),c(g.getReader()).catch(()=>{}),function({frame:e,url:t,requestBodyValues:o,responseHeaders:r}){var n,i;let l=d(e);return new a.APICallError({message:null!=(n=null==l?void 0:l.message)?n:"OpenAI stream failed before any output was generated",url:t,requestBodyValues:o,statusCode:null!=(i=null==l?void 0:l.statusCode)?i:500,responseHeaders:r,responseBody:JSON.stringify(e),data:e,isRetryable:null==l?void 0:l.isRetryable})}({frame:y,url:i,requestBodyValues:l,responseHeaders:s});if(o(p.value))return g;e||(null==r?void 0:r(p.value))!==!0||(e=!0)}}finally{f||(h.cancel().catch(()=>{}),h.releaseLock())}}async function c(e){try{for(;!(await e.read()).done;);}catch(e){}finally{e.releaseLock()}}async function m(e,t){let o,r=e.then(e=>({timedOut:!1,value:e}));try{let e=await Promise.race([r,new Promise(e=>{o=setTimeout(()=>e({timedOut:!0}),t)})]);return e.timedOut&&r.catch(()=>{}),e}finally{clearTimeout(o)}}function g(e){return"object"==typeof e&&null!=e?e:void 0}function h(e){return"string"==typeof e||"number"==typeof e?e:void 0}function f(e){var t,r,a,n,i,l,s,u;if(null==e)return(0,o.createNullLanguageModelUsage)();let d=null!=(t=e.prompt_tokens)?t:0,p=null!=(r=e.completion_tokens)?r:0,c=null!=(n=null==(a=e.prompt_tokens_details)?void 0:a.cached_tokens)?n:0,m=null!=(l=null==(i=e.prompt_tokens_details)?void 0:i.cache_write_tokens)?l:void 0,g=null!=(u=null==(s=e.completion_tokens_details)?void 0:s.reasoning_tokens)?u:0;return{inputTokens:{total:d,noCache:d-c-(null!=m?m:0),cacheRead:c,cacheWrite:m},outputTokens:{total:p,text:Math.max(0,p-g),reasoning:g},raw:e}}function y(e){var t;return null==(t=null==e?void 0:e.openai)?void 0:t.promptCacheBreakpoint}function v({id:e,model:t,created:r}){return(0,o.createLanguageModelResponseMetadata)({id:e,model:t,created:r||void 0})}function b(e){switch(e){case"stop":return"stop";case"length":return"length";case"content_filter":return"content-filter";case"function_call":case"tool_calls":return"tool-calls";default:return"other"}}var _=(0,o.lazySchema)(()=>(0,o.zodSchema)(i.z.object({id:i.z.string().nullish(),created:i.z.number().nullish(),model:i.z.string().nullish(),choices:i.z.array(i.z.object({message:i.z.object({role:i.z.literal("assistant").nullish(),content:i.z.string().nullish(),audio:i.z.object({transcript:i.z.string().nullish()}).nullish(),tool_calls:i.z.array(i.z.object({id:i.z.string().nullish(),type:i.z.literal("function"),function:i.z.object({name:i.z.string(),arguments:i.z.string()})})).nullish(),annotations:i.z.array(i.z.object({type:i.z.literal("url_citation"),url_citation:i.z.object({start_index:i.z.number(),end_index:i.z.number(),url:i.z.string(),title:i.z.string()})})).nullish()}),index:i.z.number(),logprobs:i.z.object({content:i.z.array(i.z.object({token:i.z.string(),logprob:i.z.number(),top_logprobs:i.z.array(i.z.object({token:i.z.string(),logprob:i.z.number()}))})).nullish()}).nullish(),finish_reason:i.z.string().nullish()})),usage:i.z.object({prompt_tokens:i.z.number().nullish(),completion_tokens:i.z.number().nullish(),total_tokens:i.z.number().nullish(),prompt_tokens_details:i.z.object({cached_tokens:i.z.number().nullish(),cache_write_tokens:i.z.number().nullish()}).nullish(),completion_tokens_details:i.z.object({reasoning_tokens:i.z.number().nullish(),accepted_prediction_tokens:i.z.number().nullish(),rejected_prediction_tokens:i.z.number().nullish()}).nullish()}).nullish()}))),w=(0,o.lazySchema)(()=>(0,o.zodSchema)(i.z.union([i.z.object({id:i.z.string().nullish(),created:i.z.number().nullish(),model:i.z.string().nullish(),choices:i.z.array(i.z.object({delta:i.z.object({role:i.z.enum(["assistant"]).nullish(),content:i.z.string().nullish(),tool_calls:i.z.array(i.z.object({index:i.z.number(),id:i.z.string().nullish(),type:i.z.literal("function").nullish(),function:i.z.object({name:i.z.string().nullish(),arguments:i.z.string().nullish()})})).nullish(),annotations:i.z.array(i.z.object({type:i.z.literal("url_citation"),url_citation:i.z.object({start_index:i.z.number(),end_index:i.z.number(),url:i.z.string(),title:i.z.string()})})).nullish()}).nullish(),logprobs:i.z.object({content:i.z.array(i.z.object({token:i.z.string(),logprob:i.z.number(),top_logprobs:i.z.array(i.z.object({token:i.z.string(),logprob:i.z.number()}))})).nullish()}).nullish(),finish_reason:i.z.string().nullish(),index:i.z.number()})),usage:i.z.object({prompt_tokens:i.z.number().nullish(),completion_tokens:i.z.number().nullish(),total_tokens:i.z.number().nullish(),prompt_tokens_details:i.z.object({cached_tokens:i.z.number().nullish(),cache_write_tokens:i.z.number().nullish()}).nullish(),completion_tokens_details:i.z.object({reasoning_tokens:i.z.number().nullish(),accepted_prediction_tokens:i.z.number().nullish(),rejected_prediction_tokens:i.z.number().nullish()}).nullish()}).nullish()}),l]))),z=(0,o.lazySchema)(()=>(0,o.zodSchema)(i.z.object({logitBias:i.z.record(i.z.coerce.number(),i.z.number()).optional(),logprobs:i.z.union([i.z.boolean(),i.z.number()]).optional(),parallelToolCalls:i.z.boolean().optional(),user:i.z.string().optional(),reasoningEffort:i.z.enum(["none","minimal","low","medium","high","xhigh","max"]).optional(),maxCompletionTokens:i.z.number().optional(),store:i.z.boolean().optional(),metadata:i.z.record(i.z.string().max(64),i.z.string().max(512)).optional(),prediction:i.z.record(i.z.string(),i.z.any()).optional(),serviceTier:i.z.enum(["auto","flex","priority","fast","ultrafast","default"]).optional(),strictJsonSchema:i.z.boolean().optional(),textVerbosity:i.z.enum(["low","medium","high"]).optional(),promptCacheKey:i.z.string().optional(),promptCacheOptions:i.z.object({mode:i.z.enum(["implicit","explicit"]).optional(),ttl:i.z.literal("30m").optional()}).optional(),promptCacheRetention:i.z.enum(["in_memory","24h"]).optional(),safetyIdentifier:i.z.string().optional(),systemMessageMode:i.z.enum(["system","developer","remove"]).optional(),forceReasoning:i.z.boolean().optional()})));function I(e){let t=!1,o=!1,r=i(e),n=[];return t&&n.push({type:"compatibility",feature:"JSON Schema propertyNames",details:"OpenAI does not support JSON Schema propertyNames. It was removed before sending the schema, so OpenAI will not enforce property-name constraints."}),o&&n.push({type:"compatibility",feature:"JSON Schema pattern with regex lookaround",details:"OpenAI does not support regex lookaround in JSON Schema patterns. The pattern was removed before sending the schema, so OpenAI will not enforce that constraint."}),{schema:r,warnings:n};function i(e){let r=e.propertyNames;if(null!=r){if("boolean"==typeof r||"string"!==r.type)throw new a.UnsupportedFunctionalityError({functionality:"JSON Schema propertyNames that does not use a string schema"});t=!0}let n={...e};for(let e of(delete n.propertyNames,null!=n.pattern&&function(e){let t=!1,o=!1;for(let r=0;r<e.length;r++){let a=e[r];if(t){t=!1;continue}if("\\"===a){t=!0;continue}if("["===a){o=!0;continue}if("]"===a){o=!1;continue}if(!o&&"("===a&&"?"===e[r+1]){let t=e[r+2];if("="===t||"!"===t||"<"===t&&("="===e[r+3]||"!"===e[r+3]))return!0}}return!1}(n.pattern)&&(delete n.pattern,o=!0),null!=n.properties&&(n.properties=l(n.properties)),null!=n.patternProperties&&(n.patternProperties=l(n.patternProperties)),null!=n.additionalProperties&&(n.additionalProperties=s(n.additionalProperties)),null!=n.additionalItems&&(n.additionalItems=s(n.additionalItems)),null!=n.items&&(n.items=Array.isArray(n.items)?n.items.map(s):s(n.items)),null!=n.contains&&(n.contains=s(n.contains)),null!=n.not&&(n.not=s(n.not)),null!=n.allOf&&(n.allOf=n.allOf.map(s)),null!=n.anyOf&&(n.anyOf=n.anyOf.map(s)),null!=n.oneOf&&(n.oneOf=n.oneOf.map(s)),null!=n.definitions&&(n.definitions=l(n.definitions)),null!=n.$defs&&(n.$defs=l(n.$defs)),null!=n.dependencies&&(n.dependencies=Object.fromEntries(Object.entries(n.dependencies).map(([e,t])=>[e,Array.isArray(t)?t:s(t)]))),["if","then","else"])){let t=n[e];null!=t&&(n[e]=s(t))}return n}function l(e){return Object.fromEntries(Object.entries(e).map(([e,t])=>[e,s(t)]))}function s(e){return"boolean"==typeof e?e:i(e)}}var x=class e{constructor(e,t){this.specificationVersion="v4",this.supportedUrls={"image/*":[/^https?:\/\/.*$/]},this.modelId=e,this.config=t}static[n.WORKFLOW_SERIALIZE](e){return(0,o.serializeModelOptions)({modelId:e.modelId,config:e.config})}static[n.WORKFLOW_DESERIALIZE](t){return new e(t.modelId,t.config)}get provider(){return this.config.provider}async getArgs({prompt:e,maxOutputTokens:t,temperature:r,topP:n,topK:i,frequencyPenalty:l,presencePenalty:s,stopSequences:d,responseFormat:p,seed:c,tools:m,toolChoice:g,reasoning:h,providerOptions:f}){var v,b,_,w,x,S;let k=[],T=null!=(v=await (0,o.parseProviderOptions)({provider:"openai",providerOptions:f,schema:z}))?v:{},M=u(this.modelId),C=null!=(b=T.reasoningEffort)?b:(0,o.isCustomReasoning)(h)?h:void 0;null==C||null==M.supportedReasoningEfforts||M.supportedReasoningEfforts.includes(C)||(k.push({type:"unsupported",feature:"reasoningEffort",details:`${this.modelId} only supports the following reasoning efforts: ${M.supportedReasoningEfforts.join(", ")}`}),C=void 0);let E=null!=(_=T.forceReasoning)?_:M.isReasoningModel;null!=i&&k.push({type:"unsupported",feature:"topK"});let{messages:j,warnings:O}=function({prompt:e,systemMessageMode:t="system"}){var r,n,i;let l=[],s=[];for(let{role:u,content:d,providerOptions:p}of e)switch(u){case"system":switch(t){case"system":{let e=y(p);l.push({role:"system",content:null==e?d:[{type:"text",text:d,prompt_cache_breakpoint:e}]});break}case"developer":{let e=y(p);l.push({role:"developer",content:null==e?d:[{type:"text",text:d,prompt_cache_breakpoint:e}]});break}case"remove":s.push({type:"other",message:"system messages are removed for this model"});break;default:throw Error(`Unsupported system message mode: ${t}`)}break;case"user":if(1===d.length&&"text"===d[0].type&&null==y(d[0].providerOptions)){l.push({role:"user",content:d[0].text});break}l.push({role:"user",content:d.map((e,t)=>{var r,n,i;switch(e.type){case"text":{let t=y(e.providerOptions);return{type:"text",text:e.text,...null!=t&&{prompt_cache_breakpoint:t}}}case"file":{let l=y(e.providerOptions);switch(e.data.type){case"reference":return{type:"file",file:{file_id:(0,o.resolveProviderReference)({reference:e.data.reference,provider:"openai"})},...null!=l&&{prompt_cache_breakpoint:l}};case"text":throw new a.UnsupportedFunctionalityError({functionality:"text file parts"});case"url":case"data":{let s=(0,o.getTopLevelMediaType)(e.mediaType);if("image"===s)return{type:"image_url",image_url:{url:"url"===e.data.type?e.data.url.toString():`data:${(0,o.resolveFullMediaType)({part:e})};base64,${(0,o.convertToBase64)(e.data.data)}`,detail:null==(n=null==(r=e.providerOptions)?void 0:r.openai)?void 0:n.imageDetail},...null!=l&&{prompt_cache_breakpoint:l}};if("audio"===s){if("url"===e.data.type)throw new a.UnsupportedFunctionalityError({functionality:"audio file parts with URLs"});let t=(0,o.resolveFullMediaType)({part:e});switch(t){case"audio/wav":return{type:"input_audio",input_audio:{data:(0,o.convertToBase64)(e.data.data),format:"wav"},...null!=l&&{prompt_cache_breakpoint:l}};case"audio/mp3":case"audio/mpeg":return{type:"input_audio",input_audio:{data:(0,o.convertToBase64)(e.data.data),format:"mp3"},...null!=l&&{prompt_cache_breakpoint:l}};default:throw new a.UnsupportedFunctionalityError({functionality:`audio content parts with media type ${t}`})}}{let r=(0,o.resolveFullMediaType)({part:e});if("application/pdf"!==r)throw new a.UnsupportedFunctionalityError({functionality:`file part media type ${r}`});if("url"===e.data.type)throw new a.UnsupportedFunctionalityError({functionality:"PDF file parts with URLs"});return{type:"file",file:{filename:null!=(i=e.filename)?i:`part-${t}.pdf`,file_data:`data:application/pdf;base64,${(0,o.convertToBase64)(e.data.data)}`},...null!=l&&{prompt_cache_breakpoint:l}}}}}}}})});break;case"assistant":{let e="",t=[],o=!1,r=[];for(let a of d)switch(a.type){case"text":{let r=y(a.providerOptions);e+=a.text,t.push({type:"text",text:a.text,...null!=r&&{prompt_cache_breakpoint:r}}),o||(o=null!=r);break}case"tool-call":r.push({id:a.toolCallId,type:"function",function:{name:a.toolName,arguments:JSON.stringify("object"!=typeof(i=a.input)||null===i||Array.isArray(i)?{}:i)}})}l.push({role:"assistant",content:o?t:r.length>0?e||null:e,tool_calls:r.length>0?r:void 0});break}case"tool":for(let e of d){let t;if("tool-approval-response"===e.type)continue;let o=e.output,a=null!=(r="content"===o.type?o.value.map(e=>y(e.providerOptions)).find(e=>null!=e):y(o.providerOptions))?r:y(e.providerOptions);switch(o.type){case"text":case"error-text":t=o.value;break;case"execution-denied":t=null!=(n=o.reason)?n:"Tool call execution denied.";break;case"content":case"json":case"error-json":t=JSON.stringify(o.value)}l.push({role:"tool",tool_call_id:e.toolCallId,content:null==a?t:[{type:"text",text:t,prompt_cache_breakpoint:a}]})}break;default:throw Error(`Unsupported role: ${u}`)}return{messages:l,warnings:s}}({prompt:e,systemMessageMode:null!=(w=T.systemMessageMode)?w:E?"developer":M.systemMessageMode});k.push(...O);let R=null==(x=T.strictJsonSchema)||x,A=(null==p?void 0:p.type)==="json"&&null!=p.schema?I(p.schema):void 0;null!=A&&k.push(...A.warnings);let N={model:this.modelId,logit_bias:T.logitBias,logprobs:!0===T.logprobs||"number"==typeof T.logprobs||void 0,top_logprobs:"number"==typeof T.logprobs?T.logprobs:"boolean"==typeof T.logprobs&&T.logprobs?0:void 0,user:T.user,parallel_tool_calls:T.parallelToolCalls,max_tokens:t,temperature:r,top_p:n,frequency_penalty:l,presence_penalty:s,response_format:(null==p?void 0:p.type)==="json"?null!=A?{type:"json_schema",json_schema:{schema:A.schema,strict:R,name:null!=(S=p.name)?S:"response",description:p.description}}:{type:"json_object"}:void 0,stop:d,seed:c,verbosity:T.textVerbosity,max_completion_tokens:T.maxCompletionTokens,store:T.store,metadata:T.metadata,prediction:T.prediction,reasoning_effort:C,service_tier:T.serviceTier,prompt_cache_key:T.promptCacheKey,prompt_cache_options:T.promptCacheOptions,prompt_cache_retention:T.promptCacheRetention,safety_identifier:T.safetyIdentifier,messages:j};null!=M.supportedReasoningEfforts&&null!=N.prompt_cache_retention&&(N.prompt_cache_retention=void 0,k.push({type:"unsupported",feature:"promptCacheRetention",details:"promptCacheRetention is not supported by GPT-6 and later models; use promptCacheOptions instead"})),E?("none"===C&&M.supportsNonReasoningParameters||(null!=N.temperature&&(N.temperature=void 0,k.push({type:"unsupported",feature:"temperature",details:"temperature is not supported for reasoning models"})),null!=N.top_p&&(N.top_p=void 0,k.push({type:"unsupported",feature:"topP",details:"topP is not supported for reasoning models"})),null!=N.logprobs&&(N.logprobs=void 0,k.push({type:"other",message:"logprobs is not supported for reasoning models"}))),null!=N.frequency_penalty&&(N.frequency_penalty=void 0,k.push({type:"unsupported",feature:"frequencyPenalty",details:"frequencyPenalty is not supported for reasoning models"})),null!=N.presence_penalty&&(N.presence_penalty=void 0,k.push({type:"unsupported",feature:"presencePenalty",details:"presencePenalty is not supported for reasoning models"})),null!=N.logit_bias&&(N.logit_bias=void 0,k.push({type:"other",message:"logitBias is not supported for reasoning models"})),null!=N.top_logprobs&&(N.top_logprobs=void 0,k.push({type:"other",message:"topLogprobs is not supported for reasoning models"})),null!=N.max_tokens&&(null==N.max_completion_tokens&&(N.max_completion_tokens=N.max_tokens),N.max_tokens=void 0)):(this.modelId.startsWith("gpt-4o-search-preview")||this.modelId.startsWith("gpt-4o-mini-search-preview"))&&null!=N.temperature&&(N.temperature=void 0,k.push({type:"unsupported",feature:"temperature",details:"temperature is not supported for the search preview models and has been removed."})),"flex"!==T.serviceTier||M.supportsFlexProcessing||(k.push({type:"unsupported",feature:"serviceTier",details:"flex processing is only available for o3, o4-mini, and gpt-5 models"}),N.service_tier=void 0),"priority"!==T.serviceTier&&"fast"!==T.serviceTier||M.supportsPriorityProcessing||(k.push({type:"unsupported",feature:"serviceTier",details:"priority processing is only available for supported models (gpt-4, gpt-5, gpt-5-mini, o3, o4-mini) and requires Enterprise access. gpt-5-nano is not supported"}),N.service_tier=void 0);let{tools:P,toolChoice:q,toolWarnings:$}=function({tools:e,toolChoice:t}){e=(null==e?void 0:e.length)?e:void 0;let o=[];if(null==e)return{tools:void 0,toolChoice:void 0,toolWarnings:o};let r=[];for(let t of e)if("function"===t.type){let e=I(t.inputSchema);o.push(...e.warnings),r.push({type:"function",function:{name:t.name,description:t.description,parameters:e.schema,...null!=t.strict?{strict:t.strict}:{}}})}else o.push({type:"unsupported",feature:`tool type: ${t.type}`});if(null==t)return{tools:r,toolChoice:void 0,toolWarnings:o};let n=t.type;switch(n){case"auto":case"none":case"required":return{tools:r,toolChoice:n,toolWarnings:o};case"tool":return{tools:r,toolChoice:{type:"function",function:{name:t.toolName}},toolWarnings:o};default:throw new a.UnsupportedFunctionalityError({functionality:`tool choice type: ${n}`})}}({tools:m,toolChoice:g});return{args:{...N,tools:P,tool_choice:q},warnings:[...k,...$]}}async doGenerate(e){var t,r,n,i,l,u,d,p;let{args:c,warnings:m}=await this.getArgs(e),{responseHeaders:g,value:h,rawValue:y}=await (0,o.postJsonToApi)({url:this.config.url({path:"/chat/completions",modelId:this.modelId}),headers:(0,o.combineHeaders)(null==(r=(t=this.config).headers)?void 0:r.call(t),e.headers),body:c,failedResponseHandler:s,successfulResponseHandler:(0,o.createJsonResponseHandler)(_),abortSignal:e.abortSignal,fetch:this.config.fetch}),w=h.choices[0];if(null==w)throw new a.InvalidResponseDataError({data:y,message:"Response did not contain any choices."});let z=[],I=null!=w.message.content&&w.message.content.length>0?w.message.content:null==(n=w.message.audio)?void 0:n.transcript;for(let e of(null!=I&&I.length>0&&z.push({type:"text",text:I}),null!=(i=w.message.tool_calls)?i:[]))z.push({type:"tool-call",toolCallId:e.id||(0,o.generateId)(),toolName:e.function.name,input:e.function.arguments});for(let e of null!=(l=w.message.annotations)?l:[])z.push({type:"source",sourceType:"url",id:(0,o.generateId)(),url:e.url_citation.url,title:e.url_citation.title});let x=null==(u=h.usage)?void 0:u.completion_tokens_details,S={openai:{}};return(null==x?void 0:x.accepted_prediction_tokens)!=null&&(S.openai.acceptedPredictionTokens=null==x?void 0:x.accepted_prediction_tokens),(null==x?void 0:x.rejected_prediction_tokens)!=null&&(S.openai.rejectedPredictionTokens=null==x?void 0:x.rejected_prediction_tokens),(null==(d=w.logprobs)?void 0:d.content)!=null&&(S.openai.logprobs=w.logprobs.content),{content:z,finishReason:{unified:b(w.finish_reason),raw:null!=(p=w.finish_reason)?p:void 0},usage:f(h.usage),request:{body:c},response:{...v(h),headers:g,body:y},warnings:m,providerMetadata:S}}async doStream(e){var t,r;let a,n,{args:i,warnings:l}=await this.getArgs(e),u={...i,stream:!0,stream_options:{include_usage:!0}},c=this.config.url({path:"/chat/completions",modelId:this.modelId}),{responseHeaders:m,value:g}=await (0,o.postJsonToApi)({url:c,headers:(0,o.combineHeaders)(null==(r=(t=this.config).headers)?void 0:r.call(t),e.headers),body:u,failedResponseHandler:s,successfulResponseHandler:(0,o.createEventSourceResponseHandler)(w),abortSignal:e.abortSignal,fetch:this.config.fetch}),h=await p({stream:g,getError:e=>"error"in e?e.error:void 0,isOutputChunk:S,url:c,requestBodyValues:u,responseHeaders:m}),y={unified:"other",raw:void 0},_=!1,z=!1,I={openai:{}};return{stream:h.pipeThrough(new TransformStream({start(e){a=new o.StreamingToolCallTracker(e,{generateId:o.generateId,typeValidation:"if-present"}),e.enqueue({type:"stream-start",warnings:l})},transform(t,r){var i,l,s,u,p,c;if(e.includeRawChunks&&r.enqueue({type:"raw",rawValue:t.rawValue}),!t.success){y={unified:"error",raw:void 0},r.enqueue({type:"error",error:t.error});return}let m=t.value;if("error"in m){y={unified:"error",raw:void 0},r.enqueue({type:"error",error:null!=(i=d(m.error))?i:m.error});return}!_&&Object.values(v(m)).some(Boolean)&&(_=!0,r.enqueue({type:"response-metadata",...v(m)})),null!=m.usage&&(n=m.usage,(null==(l=m.usage.completion_tokens_details)?void 0:l.accepted_prediction_tokens)!=null&&(I.openai.acceptedPredictionTokens=null==(s=m.usage.completion_tokens_details)?void 0:s.accepted_prediction_tokens),(null==(u=m.usage.completion_tokens_details)?void 0:u.rejected_prediction_tokens)!=null&&(I.openai.rejectedPredictionTokens=null==(p=m.usage.completion_tokens_details)?void 0:p.rejected_prediction_tokens));let g=m.choices[0];if((null==g?void 0:g.finish_reason)!=null&&(y={unified:b(g.finish_reason),raw:g.finish_reason}),(null==(c=null==g?void 0:g.logprobs)?void 0:c.content)!=null&&(I.openai.logprobs=g.logprobs.content),(null==g?void 0:g.delta)==null)return;let h=g.delta;if(null!=h.content&&(z||(r.enqueue({type:"text-start",id:"0"}),z=!0),r.enqueue({type:"text-delta",id:"0",delta:h.content})),null!=h.tool_calls)for(let e of h.tool_calls)a.processDelta(e);if(null!=h.annotations)for(let e of h.annotations)r.enqueue({type:"source",sourceType:"url",id:(0,o.generateId)(),url:e.url_citation.url,title:e.url_citation.title})},flush(e){z&&e.enqueue({type:"text-end",id:"0"}),a.flush(),e.enqueue({type:"finish",finishReason:y,usage:f(n),...null!=I?{providerMetadata:I}:{}})}})),request:{body:u},response:{headers:m}}}};function S(e){return!("error"in e)&&e.choices.some(e=>{let t=e.delta;return(null==t?void 0:t.content)!=null&&t.content.length>0||(null==t?void 0:t.tool_calls)!=null&&t.tool_calls.length>0||(null==t?void 0:t.annotations)!=null&&t.annotations.length>0})}function k(e){var t,r,a,n;if(null==e)return(0,o.createNullLanguageModelUsage)();let i=null!=(t=e.prompt_tokens)?t:0,l=null!=(r=e.completion_tokens)?r:0;return{inputTokens:{total:null!=(a=e.prompt_tokens)?a:void 0,noCache:i,cacheRead:void 0,cacheWrite:void 0},outputTokens:{total:null!=(n=e.completion_tokens)?n:void 0,text:l,reasoning:void 0},raw:e}}function T(e){switch(e){case"stop":return"stop";case"length":return"length";case"content_filter":return"content-filter";case"function_call":case"tool_calls":return"tool-calls";default:return"other"}}var M=(0,o.lazySchema)(()=>(0,o.zodSchema)(i.z.object({id:i.z.string().nullish(),created:i.z.number().nullish(),model:i.z.string().nullish(),choices:i.z.array(i.z.object({text:i.z.string(),finish_reason:i.z.string(),logprobs:i.z.object({tokens:i.z.array(i.z.string()),token_logprobs:i.z.array(i.z.number()),top_logprobs:i.z.array(i.z.record(i.z.string(),i.z.number())).nullish()}).nullish()})),usage:i.z.object({prompt_tokens:i.z.number(),completion_tokens:i.z.number(),total_tokens:i.z.number()}).nullish()}))),C=(0,o.lazySchema)(()=>(0,o.zodSchema)(i.z.union([i.z.object({id:i.z.string().nullish(),created:i.z.number().nullish(),model:i.z.string().nullish(),choices:i.z.array(i.z.object({text:i.z.string(),finish_reason:i.z.string().nullish(),index:i.z.number(),logprobs:i.z.object({tokens:i.z.array(i.z.string()),token_logprobs:i.z.array(i.z.number()),top_logprobs:i.z.array(i.z.record(i.z.string(),i.z.number())).nullish()}).nullish()})),usage:i.z.object({prompt_tokens:i.z.number(),completion_tokens:i.z.number(),total_tokens:i.z.number()}).nullish()}),l]))),E=(0,o.lazySchema)(()=>(0,o.zodSchema)(i.z.object({echo:i.z.boolean().optional(),logitBias:i.z.record(i.z.string(),i.z.number()).optional(),suffix:i.z.string().optional(),user:i.z.string().optional(),logprobs:i.z.union([i.z.boolean(),i.z.number()]).optional()}))),j=class e{constructor(e,t){this.specificationVersion="v4",this.supportedUrls={},this.modelId=e,this.config=t}get providerOptionsName(){return this.config.provider.split(".")[0].trim()}static[n.WORKFLOW_SERIALIZE](e){return(0,o.serializeModelOptions)({modelId:e.modelId,config:e.config})}static[n.WORKFLOW_DESERIALIZE](t){return new e(t.modelId,t.config)}get provider(){return this.config.provider}async getArgs({prompt:e,maxOutputTokens:t,temperature:r,topP:n,topK:i,frequencyPenalty:l,presencePenalty:s,stopSequences:u,responseFormat:d,tools:p,toolChoice:c,seed:m,providerOptions:g}){let h=[],f={...await (0,o.parseProviderOptions)({provider:"openai",providerOptions:g,schema:E}),...await (0,o.parseProviderOptions)({provider:this.providerOptionsName,providerOptions:g,schema:E})};null!=i&&h.push({type:"unsupported",feature:"topK"}),(null==p?void 0:p.length)&&h.push({type:"unsupported",feature:"tools"}),null!=c&&h.push({type:"unsupported",feature:"toolChoice"}),null!=d&&"text"!==d.type&&h.push({type:"unsupported",feature:"responseFormat",details:"JSON response format is not supported."});let{prompt:y,stopSequences:v}=function({prompt:e,user:t="user",assistant:o="assistant"}){let r="";for(let{role:n,content:i}of("system"===e[0].role&&(r+=`${e[0].content}
2
2
 
3
3
  `,e=e.slice(1)),e))switch(n){case"system":throw new a.InvalidPromptError({message:"Unexpected system message in prompt: ${content}",prompt:e});case"user":{let e=i.map(e=>{if("text"===e.type)return e.text}).filter(Boolean).join("");r+=`${t}:
4
4
  ${e}
@@ -0,0 +1,3 @@
1
+ module.exports=[450992,(e,o,d)=>{}];
2
+
3
+ //# sourceMappingURL=_next-internal_server_app_api_bot_thread_file_route_actions_0q3be0o.js.map
@@ -0,0 +1,3 @@
1
+ module.exports=[148596,(e,o,d)=>{}];
2
+
3
+ //# sourceMappingURL=_next-internal_server_app_api_llm-model_catalog_%5Bprovider%5D_route_actions_1i0449q.js.map
@@ -0,0 +1,3 @@
1
+ module.exports=[782723,(e,o,d)=>{}];
2
+
3
+ //# sourceMappingURL=_next-internal_server_app_api_llm-model_credits_%5Bprovider%5D_route_actions_0iui9hz.js.map
@@ -0,0 +1,3 @@
1
+ module.exports=[440163,(e,o,d)=>{}];
2
+
3
+ //# sourceMappingURL=_next-internal_server_app_api_running_route_actions_0o1g-aw.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[333925,e=>{"use strict";let s=process.env.THURSDAY_APP_DIR?.trim()||process.cwd(),t=process.env.THURSDAY_HOME?.trim()||process.cwd(),r=process.env.THURSDAY_URL?.trim()||`http://localhost:${process.env.PORT?.trim()||3e3}`,o=`${t}/local.db`,a=`file:${o}`,_=".ai-workspace",E={workspace:_,artifacts:"artifacts",projects:"projects",scratch:"scratch",bots:"bots",output:".output",signIns:".sign-ins",skills:{default:"skills",custom:`${_}/.agents/skills`,own:".agents/skills",runtime:"runtime",seeds:"seed-skills"}},i="artifact";e.s(["APP_DIR",0,s,"APP_NAME",0,"Thursday","APP_URL",0,r,"ARTIFACT_SKILL",0,i,"BOT_MEMORY_LIMITS",0,{files:20,chars:1e4},"BOT_RUN",0,{steps:100,compactAt:5e5,compactHeadroom:.8,summaryWords:{min:600,max:3e3,perTokens:200},participants:12,concurrent:4,turns:120,queuedMessages:200,silenceMs:3e5,overflowShrink:.6,retryMs:1e4,compactFiles:40},"BOT_WORK",0,{open:5,recent:5,said:80,files:2,reads:2,asked:400,readChars:4e3},"BROWSER_CLI",0,{readMs:15e3,loadMs:3e4},"BROWSER_GONE_MS",0,1e4,"BROWSER_VIEWPORT",0,"700x700","CALL_EXEC_TIMEOUT_MS",0,15e3,"CALL_RELAY",0,{quietMs:2e3,perTurn:3,readMs:15e3,chars:600},"CHATGPT_SIGN_IN",0,{waitMs:6e5,renewBeforeMs:3e5},"COMMON_VALIDATE",0,{name:{max:16},shortDescription:{max:60},description:{max:100},prompt:{max:4e3}},"CONNECTED_TOOL_TIMEOUT_MS",0,6e5,"DATA_DIR",0,t,"DB_FILE_NAME",0,a,"DB_PATH",0,o,"DECK",0,{slides:30,shotsMs:9e4},"EXEC_KILL_GRACE_MS",0,5e3,"EXEC_TIMEOUT_MS",0,18e4,"FINISHED_NOTICE",0,{rows:5,shown:1,words:240},"FULL_RESULT_LINES",0,400,"GATEWAY_CATALOG_MS",0,6e5,"GIVEN_FILES",0,{dir:"inbox",maxBytes:0x1900000,perMessage:8},"HISTORY_KEEP",0,{forMs:7776e6,sweepEveryMs:216e5},"INBOX_FINISHED",0,5,"IS_DEV",0,!1,"JOB_FOLDER_WALK",0,500,"LIVE_CALL",0,{startupMs:3e4,closeMs:15e3,transcriptGapMs:1500,transcriptSaveMs:500,appendMs:15e3,backendOutputTokens:4096,reasoningCheckMs:5e3,keyCheckMs:5e3},"LOOK",0,{maxBytes:4194304},"MARKETING_SKILL",0,"marketing","MAX_PINNED_TOOLS",0,10,"MCP_IDLE_MS",0,18e5,"MEMORY_LIMITS",0,{facts:400,factsPerNote:50,descriptionChars:100},"PATHS",0,E,"PROMPT_BUDGET",0,6e3,"PROMPT_LINE",0,{skill:90,toolArgs:30,jobOutcome:160,botMemory:100,threadStatus:200,routineRequest:300,routineOutcome:200},"REACH",0,{pollSeconds:50,retryMs:5e3,idleMs:6e5,messages:40,trimTo:30,oldChars:1e3,files:3,fileBytes:0x2d00000,rateRetries:3,rateWaitMs:3e4,codeDigits:4,held:5,pictures:9,drawMs:6e4,lookMs:2e3},"RECENT_CALL",0,{rows:20,tokens:600},"ROUTINE",0,{tickMs:3e4,max:12,minHours:1,runsShown:5},"SEARCH",0,{sources:3,excerptChars:1200,timeoutMs:3e4},"SIGNAL_PACE_MS",0,150,"SKILLS_FOLDED",0,{design:i,"picture-book":i,"interactive-page":i},"SKILL_FILES_LISTED",0,50,"STUDIO_SERVER",0,"studio","TEXT_CALL",0,{maxSteps:12,model:"text",autoTurns:10},"THREAD_LABEL_REACH",0,20,"THREAD_STATUS_LIMIT",0,10,"TOOL_OUTPUT",0,{max:8e3,head:5500,tail:1500},"TOOL_SEARCH_SCHEMAS",0,8,"TRAVEL_SKILL",0,"travel","WORKSPACE_KEEP",0,{forMs:2592e5,sweepEveryMs:36e5}])}];
1
+ module.exports=[333925,e=>{"use strict";let s=process.env.THURSDAY_APP_DIR?.trim()||process.cwd(),t=process.env.THURSDAY_HOME?.trim()||process.cwd(),r=process.env.THURSDAY_URL?.trim()||`http://localhost:${process.env.PORT?.trim()||3e3}`,o=`${t}/local.db`,a=`file:${o}`,_=".ai-workspace",E={workspace:_,artifacts:"artifacts",projects:"projects",scratch:"scratch",bots:"bots",output:".output",signIns:".sign-ins",skills:{default:"skills",custom:`${_}/.agents/skills`,own:".agents/skills",runtime:"runtime",seeds:"seed-skills"}},i="artifact";e.s(["APP_DIR",0,s,"APP_NAME",0,"Thursday","APP_URL",0,r,"ARTIFACT_SKILL",0,i,"BOT_MEMORY_LIMITS",0,{files:20,chars:1e4},"BOT_RUN",0,{steps:100,compactAt:5e5,compactHeadroom:.8,summaryWords:{min:600,max:3e3,perTokens:200},participants:12,concurrent:4,turns:120,queuedMessages:200,silenceMs:3e5,overflowShrink:.6,retryMs:1e4,compactFiles:40},"BOT_WORK",0,{open:5,recent:5,said:80,files:2,reads:2,asked:400,readChars:4e3},"BROWSER_CLI",0,{readMs:15e3,loadMs:3e4},"BROWSER_GONE_MS",0,1e4,"BROWSER_VIEWPORT",0,"700x700","CALL_EXEC_TIMEOUT_MS",0,15e3,"CALL_RELAY",0,{quietMs:2e3,perTurn:3,readMs:15e3,chars:600},"CATALOG_MS",0,6e5,"CHATGPT_SIGN_IN",0,{waitMs:6e5,renewBeforeMs:3e5},"COMMON_VALIDATE",0,{name:{max:16},shortDescription:{max:60},description:{max:100},prompt:{max:4e3}},"CONNECTED_TOOL_TIMEOUT_MS",0,6e5,"DATA_DIR",0,t,"DB_FILE_NAME",0,a,"DB_PATH",0,o,"DECK",0,{slides:30,shotsMs:9e4},"EXEC_KILL_GRACE_MS",0,5e3,"EXEC_TIMEOUT_MS",0,18e4,"FINISHED_NOTICE",0,{rows:5,shown:1,words:240},"FULL_RESULT_LINES",0,400,"GIVEN_FILES",0,{dir:"inbox",maxBytes:0x1900000,perMessage:8},"HISTORY_KEEP",0,{forMs:7776e6,sweepEveryMs:216e5},"INBOX_FINISHED",0,5,"IS_DEV",0,!1,"JOB_FOLDER_WALK",0,500,"LIVE_CALL",0,{startupMs:3e4,closeMs:15e3,transcriptGapMs:1500,transcriptSaveMs:500,appendMs:15e3,backendOutputTokens:4096,reasoningCheckMs:5e3,keyCheckMs:5e3,openingHoldMs:3e3},"LOOK",0,{maxBytes:4194304},"MARKETING_SKILL",0,"marketing","MAX_PINNED_TOOLS",0,10,"MCP_IDLE_MS",0,18e5,"MEMORY_LIMITS",0,{facts:400,factsPerNote:50,descriptionChars:100},"PATHS",0,E,"PROMPT_BUDGET",0,6e3,"PROMPT_LINE",0,{skill:90,toolArgs:30,jobOutcome:160,botMemory:100,threadStatus:200,routineRequest:300,routineOutcome:200},"REACH",0,{pollSeconds:50,retryMs:5e3,idleMs:6e5,messages:40,trimTo:30,oldChars:1e3,files:3,fileBytes:0x2d00000,rateRetries:3,rateWaitMs:3e4,codeDigits:4,held:5,pictures:9,drawMs:6e4,lookMs:2e3},"RECENT_CALL",0,{rows:20,tokens:600},"ROUTINE",0,{tickMs:3e4,max:12,minHours:1,runsShown:5},"SEARCH",0,{sources:3,excerptChars:1200,timeoutMs:3e4},"SIGNAL_PACE_MS",0,150,"SKILLS_FOLDED",0,{design:i,"picture-book":i,"interactive-page":i},"SKILL_FILES_LISTED",0,50,"STUDIO_SERVER",0,"studio","TEXT_CALL",0,{maxSteps:12,model:"text",autoTurns:10},"THREAD_LABEL_REACH",0,20,"THREAD_STATUS_LIMIT",0,10,"TOOL_OUTPUT",0,{max:8e3,head:5500,tail:1500},"TOOL_SEARCH_SCHEMAS",0,8,"TRAVEL_SKILL",0,"travel","WORKSPACE_KEEP",0,{forMs:2592e5,sweepEveryMs:36e5}])}];
2
2
 
3
3
  //# sourceMappingURL=config_ts_1g4sz5o._.js.map
@@ -1,6 +1,6 @@
1
- module.exports=[742712,e=>e.a(async(t,a)=>{try{var r=e.i(666680),d=e.i(875225),n=e.i(260338),l=e.i(518899),i=e.i(380690),o=e.i(687388),s=e.i(528790),h=e.i(613240),u=e.i(353885),b=e.i(53748),c=e.i(944971),T=e.i(889034),p=t([s]);[s]=p.then?(await p)():p;let B=()=>i.appEvents.emit({type:"threads"}),C=e=>"done"===e||"cancelled"===e,H=(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=>H(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 L=(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,L(e,t))}async function m(e,t){let a=await s.database.transaction(a=>y(a,e,t));return B(),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))}),B()}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=H(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&&!C(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=>!C(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 B(),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)&&B(),a}async function O(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=x(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(x)});return t.length&&B(),t}function x(e){return e.visible?(0,c.tagSpeaker)(e.speaker===T.ROOM_USER?"user":"thursday",e.text):`${e.speaker}:
1
+ module.exports=[742712,e=>e.a(async(t,a)=>{try{var r=e.i(666680),d=e.i(875225),n=e.i(349129),l=e.i(260338),i=e.i(518899),o=e.i(380690),s=e.i(687388),h=e.i(528790),u=e.i(613240),b=e.i(353885),c=e.i(53748),T=e.i(944971),p=e.i(889034),w=t([h]);[h]=w.then?(await w)():w;let H=()=>o.appEvents.emit({type:"threads"}),L=e=>"done"===e||"cancelled"===e,Y=(e,t,a)=>`message:${(0,r.createHash)("sha256").update(JSON.stringify([e,t,a])).digest("hex")}`;async function f(e,t,a){let[r]=await e.select({id:u.threadWorkTable.id}).from(u.threadWorkTable).where((0,d.and)((0,d.eq)(u.threadWorkTable.threadId,t),(0,d.eq)(u.threadWorkTable.state,"external"),(0,d.eq)(u.threadWorkTable.caller,a))).limit(1);return!!r}async function y(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===b.TOOL_NAMES.send_message?[e.toolCallId]:[]):[]),n=r.map(a=>Y(e,t,a)),l=new Map;if(!n.length)return l;let[i,o]=await Promise.all([h.database.select({key:u.threadWorkTable.id,to:u.threadWorkTable.bot}).from(u.threadWorkTable).where((0,d.and)((0,d.eq)(u.threadWorkTable.threadId,e),(0,d.inArray)(u.threadWorkTable.id,n))),h.database.select({key:u.threadDeliveryTable.key,to:u.threadWorkTable.bot}).from(u.threadDeliveryTable).innerJoin(u.threadWorkTable,(0,d.eq)(u.threadWorkTable.id,u.threadDeliveryTable.workId)).where((0,d.and)((0,d.eq)(u.threadDeliveryTable.threadId,e),(0,d.inArray)(u.threadDeliveryTable.key,n)))]),s=new Map([...i,...o].map(e=>[e.key,e.to]));for(let[e,t]of r.entries()){let a=s.get(n[e]);a&&l.set(t,{messageId:n[e],to:a})}return l}async function g(e,t,a){let[r]=await e.select({seq:(0,l.max)(u.threadMessageTable.seq)}).from(u.threadMessageTable).where((0,d.eq)(u.threadMessageTable.threadId,t)),n=(r?.seq??-1)+1;return await e.insert(u.threadMessageTable).values({threadId:t,seq:n,...a}),n}let j=(e,t)=>({bot:e.bot,parent:e.id,role:"user",content:`${t} ${p.RESUME_CHECK}`,note:!0});async function m(e,t){await k(e.threadId,j(e,t))}async function k(e,t){let a=await h.database.transaction(a=>g(a,e,t));return H(),a}async function q(e){return h.database.select().from(u.threadWorkTable).where((0,d.eq)(u.threadWorkTable.threadId,e)).orderBy(u.threadWorkTable.createdAt,u.threadWorkTable.id)}async function I(e,t){let[a]=await h.database.select({budget:i.sql`min(nullif(${u.threadWorkTable.contextBudget}, 0))`}).from(u.threadWorkTable).where((0,d.and)((0,d.eq)(u.threadWorkTable.threadId,e),(0,d.eq)(u.threadWorkTable.bot,t)));return a?.budget??void 0}async function W(e,t){await h.database.transaction(async a=>{await A(a,e),await a.update(u.threadWorkTable).set({contextBudget:t}).where((0,d.eq)(u.threadWorkTable.id,e.id))}),H()}async function A(e,t){let[a]=await e.select().from(u.threadWorkTable).where((0,d.and)((0,d.eq)(u.threadWorkTable.id,t.id),(0,d.eq)(u.threadWorkTable.generation,t.generation),(0,d.eq)(u.threadWorkTable.state,"running")));return a||(0,c.publicError)("This turn is no longer running."),a}async function R(e,t){await e.insert(u.threadDeliveryTable).values(t).onConflictDoNothing();let[a]=await e.select({bot:u.threadWorkTable.bot}).from(u.threadWorkTable).where((0,d.eq)(u.threadWorkTable.id,t.workId));a&&await f(e,t.threadId,a.bot)||await e.update(u.threadWorkTable).set({state:"queued"}).where((0,d.and)((0,d.eq)(u.threadWorkTable.id,t.workId),(0,d.inArray)(u.threadWorkTable.state,["waiting","done"])))}async function v(e,t){let a={...p.RoomMessageSchema.parse(t),id:t.id};"question"===a.kind&&a.to!==p.ROOM_THURSDAY&&(0,c.publicError)("Address user questions to Thursday; use a message to contact another bot."),a.options?.length&&"question"!==a.kind&&(0,c.publicError)("Offer answer choices only with a user question.");let r=await h.database.transaction(async t=>{await A(t,e);let r=Y(e.threadId,e.bot,a.id),[n]=await t.select().from(u.threadWorkTable).where((0,d.eq)(u.threadWorkTable.id,r));if(n)return{messageId:r,to:n.bot};let[l]=await t.select({to:u.threadWorkTable.bot}).from(u.threadDeliveryTable).innerJoin(u.threadWorkTable,(0,d.eq)(u.threadWorkTable.id,u.threadDeliveryTable.workId)).where((0,d.eq)(u.threadDeliveryTable.key,r));if(l)return{messageId:r,to:l.to};a.to===e.bot&&(0,c.publicError)("Continue your own work directly; choose another recipient."),a.to!==p.ROOM_THURSDAY&&a.to===e.caller&&(0,c.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(u.threadWorkTable).where((0,d.eq)(u.threadWorkTable.threadId,e.threadId)),o=i.filter(t=>t.bot===a.to&&t.caller===e.bot&&a.to!==p.ROOM_THURSDAY&&!L(t.state)),h=o.find(e=>"running"===e.state)??o[0];if(h){let n=await f(t,e.threadId,a.to);return await R(t,{key:r,threadId:e.threadId,workId:h.id,speaker:e.bot,text:a.text}),await t.update(u.threadTable).set({wrapped:!1,updatedAt:new Date}).where((0,d.eq)(u.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 b=new Set(i.map(e=>e.bot).filter(e=>e!==p.ROOM_THURSDAY));a.to!==p.ROOM_THURSDAY&&!b.has(a.to)&&b.size>=s.BOT_RUN.participants&&(0,c.publicError)("This thread has reached its participant limit."),i.filter(e=>!L(e.state)).length>=s.BOT_RUN.queuedMessages&&(0,c.publicError)("This thread has reached its pending message limit.");let T=a.to!==p.ROOM_THURSDAY&&await f(t,e.threadId,a.to);return await t.insert(u.threadWorkTable).values({id:r,threadId:e.threadId,bot:a.to,caller:e.bot,parentId:e.id,state:a.to===p.ROOM_THURSDAY?"question"===a.kind?"external":"done":T?"waiting":"queued",result:a.to===p.ROOM_THURSDAY?a.text:null,options:[...new Set(a.options??[])]}),a.to===p.ROOM_THURSDAY?await t.insert(u.threadRelayTable).values({key:r,threadId:e.threadId,bot:e.bot,text:a.text,kind:a.kind,messageId:"question"===a.kind?r:null}):await R(t,{key:r,threadId:e.threadId,workId:r,speaker:e.bot,text:a.text}),await t.update(u.threadTable).set({wrapped:!1,updatedAt:new Date}).where((0,d.eq)(u.threadTable.id,e.threadId)),{messageId:r,to:a.to,...T?{note:`${a.to} is waiting for the user's answer and reads this after it.`}:{}}});return H(),r}async function x(e){let t=!1,a=await h.database.transaction(async a=>{let[r]=await a.select().from(u.threadTable).where((0,d.eq)(u.threadTable.id,e));if(!r||"running"!==r.status)return null;let n=await a.select().from(u.threadWorkTable).where((0,d.eq)(u.threadWorkTable.threadId,e)).orderBy(i.sql`${u.threadWorkTable}.rowid`),l=new Set(n.filter(e=>"external"===e.state).map(e=>e.caller));for(let e of n)"queued"===e.state&&l.has(e.bot)&&(await a.update(u.threadWorkTable).set({state:"waiting"}).where((0,d.eq)(u.threadWorkTable.id,e.id)),e.state="waiting",t=!0);let o=n.filter(e=>"running"===e.state);if(o.length>=s.BOT_RUN.concurrent)return null;let h=n.find(e=>"queued"===e.state&&!o.some(t=>t.bot===e.bot));if(!h)return null;if(r.turns>=s.BOT_RUN.turns)return await a.update(u.threadWorkTable).set({state:"paused"}).where((0,d.and)((0,d.eq)(u.threadWorkTable.threadId,e),(0,d.eq)(u.threadWorkTable.state,"queued"))),null;let[b]=await a.update(u.threadWorkTable).set({state:"running",generation:h.generation+1}).where((0,d.eq)(u.threadWorkTable.id,h.id)).returning();return await a.update(u.threadTable).set({turns:r.turns+1}).where((0,d.eq)(u.threadTable.id,e)),b});return(a||t)&&H(),a}async function O(e){let t=await h.database.transaction(async t=>{await A(t,e);let a=await t.select().from(u.threadDeliveryTable).where((0,d.and)((0,d.eq)(u.threadDeliveryTable.workId,e.id),(0,d.eq)(u.threadDeliveryTable.consumed,!1))).orderBy(u.threadDeliveryTable.id);for(let r of a){let a=D(r);await g(t,e.threadId,{bot:e.bot,parent:e.id,role:"user",content:a,hidden:!r.visible}),await t.update(u.threadDeliveryTable).set({consumed:!0}).where((0,d.eq)(u.threadDeliveryTable.id,r.id))}return a.map(D)});return t.length&&H(),t}function D(e){return e.visible?(0,T.tagSpeaker)(e.speaker===p.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=>!C(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=>C(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())}),B()}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=>!C(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))}),B()}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,L(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"})}),B()}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")))}),B()}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 U(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&&!C(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 B(),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))}),B()}async function $(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}))}e.s(["appendRoomMessage",0,m,"cancelRoom",0,N,"claimRoomWork",0,v,"consumeRoomInbox",0,O,"finishRoomWork",0,D,"listParticipantTranscript",0,$,"listRoomReceipts",0,f,"listRoomWork",0,k,"lowerRoomContextBudget",0,I,"messageKey",0,H,"noteRoomBreak",0,g,"pauseRoom",0,S,"resumeRoom",0,_,"roomContextBudget",0,q,"sendRoomMessage",0,R,"settleRoom",0,M,"tellRoom",0,U]),a()}catch(e){a(e)}},!1),378884,e=>e.a(async(t,a)=>{try{var r=e.i(875225),d=e.i(349129),n=e.i(518899),l=e.i(380690),i=e.i(175936),o=e.i(687388),s=e.i(528790),h=e.i(613240),u=e.i(353885),b=e.i(41444),c=e.i(944971),T=e.i(742712),p=e.i(889034),w=t([s,T]);[s,T]=w.then?(await w)():w;let K=()=>l.appEvents.emit({type:"threads"}),P={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 K(),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)),K()}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))}),K())}async function m(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)),K())}async function k(e){let[t]=await s.database.select(P).from(h.threadTable).where((0,r.eq)(h.threadTable.id,e));if(!t)return null;let[a]=await $([t]);return a??null}async function q(e){let[t]=await s.database.select().from(h.threadTable).where((0,r.eq)(h.threadTable.id,e));return t??null}let F=e=>"running"===e||"waiting"===e;async function I(){let[e,t,a,n]=await Promise.all([s.database.select(P).from(h.threadTable).where((0,r.inArray)(h.threadTable.status,["running","waiting"])).orderBy((0,d.desc)(h.threadTable.updatedAt)),s.database.select(P).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(P).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(P).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 $(l,e=>F(e.status))}async function W(){let e=await s.database.select(P).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 $(e)}async function A(e={}){let t=await s.database.select(P).from(h.threadTable).where(e.before?(0,r.lt)(h.threadTable.updatedAt,e.before):void 0).orderBy((0,d.desc)(h.threadTable.updatedAt)).limit(e.limit??o.PAGE_SIZE);return $(t,e=>F(e.status))}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 O(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 x(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&&K(),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 q(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 U(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}}),K()}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))),K())}async function $(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(Y(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?z(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(Y(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 V=["query","command","prompt","url","path","pattern","request","question","title","name","thread","text"],z=(e,t)=>{let a=e[t];return"string"==typeof a&&a.trim()?a:null};function B(e){let t=z(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 V){let a=z(e,t);if(a)return a}for(let t of Object.keys(e)){let a=z(e,t);if(a)return a}return""}async function L(e,t){for(let a of(await s.database.select({role:h.threadMessageTable.role,content:h.threadMessageTable.content}).from(h.threadMessageTable).where((0,r.and)((0,r.eq)(h.threadMessageTable.threadId,e),(0,r.inArray)(h.threadMessageTable.role,["tool","assistant"])))))if("string"!=typeof a.content){for(let e of a.content)if("tool-result"===e.type&&e.toolCallId===t)return j(e.output,o.FULL_RESULT_LINES,!0)}return null}let G=/https?:\/\/\S+(?: · \d{4}-\d{2}-\d{2})?\s*$/,X=" — ";function Y(e,t,a){let r=a.toolName===u.TOOL_NAMES.web_search,d=j(a.output,r?o.FULL_RESULT_LINES:5),n=d.flatMap(e=>"text"===e.type?[e.text]:[]),l=r?n.filter(e=>G.test(e)):[],i=(l.length?l:n).slice(0,4);return{...e,id:t,kind:"tool-result",callId:a.toolCallId,name:a.toolName,results:i.map(e=>({type:"text",text:l.length?function(e){let t=e.replace(/\s+/g," ").trim(),a=G.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-X.length;return d&&n>1?`${(0,b.clip)(d,n)}${X}${r}`:r}(e):(0,b.clip)(e,200)})),more:n.length>i.length||d.length>n.length||i.some(e=>e.length>200)}}function j(e,t,a=!1){var r;if(null==e)return[];if("string"==typeof e)return J(e,t,a);if("object"!=typeof e)return J(String(e),t,a);switch(e.type){case"text":case"error-text":return J(String(e.value??""),t,a);case"json":case"error-json":return j(e.value,t,a);case"execution-denied":return J("Denied.",t,a);case"content":{if(!Array.isArray(e.value))return[];let r=[];for(let d of e.value){if("text"===d.type&&"string"==typeof d.text){r.push(...J(d.text,t,a));continue}let e=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);e&&r.push({type:"image",src:e})}return r}}return"string"==typeof e.path&&String(e.mediaType??"").startsWith("image/")?[{type:"text",text:e.path},{type:"image",src:i.queryKey.file(e.path)}]:Array.isArray(e.sources)?e.sources.map(e=>String(e?.title??"")).filter(Boolean).slice(0,t).map(e=>({type:"text",text:e})):"string"==typeof e.stdout?J(e.stdout||String(e.stderr??""),t,a):"string"==typeof e.answer?J(e.answer,t,a):J(a?(r=e,Array.isArray(r)?JSON.stringify(r,null,2):Object.entries(r).map(([e,t])=>"string"==typeof t&&t.includes("\n")?`${e}:
4
- ${t}`:`${e}: ${JSON.stringify(t,null,2)}`).join("\n")):JSON.stringify(e),t,a)}function J(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,m,"argumentLine",0,C,"deleteMessages",0,N,"deleteThread",0,x,"findThread",0,q,"findThreadView",0,k,"insertThread",0,f,"listBotWork",0,v,"listCallJobs",0,R,"listInboxThreads",0,I,"listRunningThreadIds",0,D,"listThreadFolders",0,M,"listThreadHistory",0,A,"listThreadOverview",0,W,"listWrittenPaths",0,_,"markSeen",0,g,"readBotAsk",0,O,"readToolResult",0,L,"resolveThread",0,E,"updateThread",0,y,"upsertMessage",0,U,"writtenPathsIn",0,S]),a()}catch(e){a(e)}},!1)];
3
+ ${e.text}`}async function M(e,t){await h.database.transaction(async a=>{await A(a,e);let r=await a.select().from(u.threadWorkTable).where((0,d.eq)(u.threadWorkTable.parentId,e.id)),n=await a.select({id:u.threadDeliveryTable.id}).from(u.threadDeliveryTable).where((0,d.and)((0,d.eq)(u.threadDeliveryTable.workId,e.id),(0,d.eq)(u.threadDeliveryTable.consumed,!1))).limit(1),l=await f(a,e.threadId,e.bot),i=n.length&&!l?"queued":n.length||r.some(e=>!L(e.state))?"waiting":"done";if(await a.update(u.threadWorkTable).set({state:i,result:t}).where((0,d.eq)(u.threadWorkTable.id,e.id)),"done"!==i)return;if(e.parentId){let[r]=await a.select().from(u.threadWorkTable).where((0,d.eq)(u.threadWorkTable.id,e.parentId)),[n]=t?[]:await a.select({id:u.threadDeliveryTable.id}).from(u.threadDeliveryTable).where((0,d.and)((0,d.eq)(u.threadDeliveryTable.workId,e.parentId),(0,d.eq)(u.threadDeliveryTable.speaker,e.bot),(0,d.eq)(u.threadDeliveryTable.consumed,!1))).limit(1);r&&"cancelled"!==r.state&&!n&&await R(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(u.threadTable).where((0,d.eq)(u.threadTable.id,e.threadId)),s=await a.select().from(u.threadWorkTable).where((0,d.eq)(u.threadWorkTable.threadId,e.threadId));o&&e.bot===o.bot&&!e.parentId&&s.every(e=>L(e.state))&&(await a.update(u.threadTable).set({status:t?"done":"waiting",outcome:t||"The room is idle. Send a message to continue.",pending:t?null:{options:[T.THREAD_CONTINUE]},wrapped:!0,endedAt:t?new Date:null,seen:!1,updatedAt:new Date}).where((0,d.eq)(u.threadTable.id,e.threadId)),t&&await a.insert(u.threadRelayTable).values({key:`report:${e.threadId}:${o.generation}`,threadId:e.threadId,bot:e.bot,text:t,kind:"report"}).onConflictDoNothing())}),H()}async function S(e){await h.database.transaction(async t=>{let[a]=await t.select().from(u.threadTable).where((0,d.eq)(u.threadTable.id,e));if(!a||"running"!==a.status)return;let r=await t.select().from(u.threadWorkTable).where((0,d.eq)(u.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(u.threadTable).set({status:"waiting",outcome:n.result,pending:{options:n.options,messageId:n.id,bot:n.caller},updatedAt:new Date}).where((0,d.eq)(u.threadTable.id,e));if(r.some(e=>!L(e.state))||a.wrapped)return void await t.update(u.threadTable).set({status:"waiting",outcome:a.turns>=s.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:[T.THREAD_CONTINUE]},updatedAt:new Date}).where((0,d.eq)(u.threadTable.id,e));let l=crypto.randomUUID();await t.insert(u.threadWorkTable).values({id:l,threadId:e,bot:a.bot,caller:p.ROOM_THURSDAY,state:"queued"}),await R(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(u.threadTable).set({wrapped:!0}).where((0,d.eq)(u.threadTable.id,e))}),H()}async function _(e,t){await h.database.transaction(async a=>{let r=await a.select().from(u.threadWorkTable).where((0,d.eq)(u.threadWorkTable.threadId,e));for(let n of r.filter(e=>"running"===e.state||"queued"===e.state))await a.update(u.threadWorkTable).set({state:"paused",generation:n.generation+1}).where((0,d.eq)(u.threadWorkTable.id,n.id)),await g(a,e,j(n,t));await a.update(u.threadTable).set({status:"waiting",outcome:t,pending:{options:[T.THREAD_CONTINUE]},seen:!1,endedAt:null,updatedAt:new Date}).where((0,d.eq)(u.threadTable.id,e)),await a.insert(u.threadRelayTable).values({key:crypto.randomUUID(),threadId:e,bot:r.find(e=>!e.parentId)?.bot??"Bot",text:t,kind:"interrupted"})}),H()}async function E(e){await h.database.transaction(async t=>{await t.update(u.threadWorkTable).set({state:"queued"}).where((0,d.and)((0,d.eq)(u.threadWorkTable.threadId,e),(0,d.eq)(u.threadWorkTable.state,"paused"))),await t.update(u.threadTable).set({status:"running",generation:i.sql`${u.threadTable.generation} + 1`,turns:0,pending:null,outcome:null,endedAt:null,updatedAt:new Date}).where((0,d.eq)(u.threadTable.id,e)),await t.update(u.threadRelayTable).set({accepted:!0}).where((0,d.and)((0,d.eq)(u.threadRelayTable.threadId,e),(0,d.eq)(u.threadRelayTable.kind,"interrupted")))}),H()}async function $(e,t,a){let r=e.select({workId:u.threadDeliveryTable.workId}).from(u.threadDeliveryTable).where((0,d.and)((0,d.eq)(u.threadDeliveryTable.threadId,t),(0,d.eq)(u.threadDeliveryTable.consumed,!1)));await e.update(u.threadWorkTable).set({state:"queued"}).where((0,d.and)((0,d.eq)(u.threadWorkTable.threadId,t),(0,d.eq)(u.threadWorkTable.bot,a),(0,d.inArray)(u.threadWorkTable.state,["waiting","done"]),(0,d.inArray)(u.threadWorkTable.id,r)))}async function U(e,t,a,r,n,l=!0){let o=await h.database.transaction(async o=>{let[s]=await o.select().from(u.threadTable).where((0,d.eq)(u.threadTable.id,e));s||(0,c.publicError)("No such thread.");let h=await o.select().from(u.threadWorkTable).where((0,d.eq)(u.threadWorkTable.threadId,e)).orderBy(u.threadWorkTable.createdAt),b=h.filter(e=>"external"===e.state),T=n?b.find(e=>e.id===n)??(0,c.publicError)("That question is no longer waiting for an answer."):l?function(e,t){let a=t?e.filter(e=>e.caller===t):e;if(a.length<=1)return a[0];(0,c.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.`)}(b,r):void 0,w=T?.caller??r??s.bot,y=T?h.find(e=>e.id===T.parentId):h.find(e=>e.bot===w&&"running"===e.state)??h.find(e=>e.bot===w&&!L(e.state)&&"external"!==e.state);if(T&&(await o.update(u.threadWorkTable).set({state:"done",result:t}).where((0,d.eq)(u.threadWorkTable.id,T.id)),await o.update(u.threadRelayTable).set({accepted:!0}).where((0,d.eq)(u.threadRelayTable.messageId,T.id))),!y){let t=null;if(w!==s.bot){let a=h.findLast(e=>e.bot===s.bot&&!e.parentId&&"cancelled"!==e.state);a?"done"===a.state&&await o.update(u.threadWorkTable).set({state:"waiting"}).where((0,d.eq)(u.threadWorkTable.id,a.id)):a=(await o.insert(u.threadWorkTable).values({id:crypto.randomUUID(),threadId:e,bot:s.bot,caller:p.ROOM_THURSDAY,state:"waiting"}).returning())[0],t=a.id}y=(await o.insert(u.threadWorkTable).values({id:crypto.randomUUID(),threadId:e,bot:w,caller:t?s.bot:p.ROOM_THURSDAY,parentId:t,state:"queued"}).returning())[0]}T&&await R(o,{key:`answer:${T.id}`,threadId:e,workId:y.id,speaker:"Thread activity",text:`The next message answers your question to the user: “${T.result??""}”`});let g=crypto.randomUUID();return await R(o,{key:g,threadId:e,workId:y.id,speaker:a,text:t,visible:!0}),T&&!await f(o,e,w)&&await $(o,e,w),await o.update(u.threadWorkTable).set({state:"queued"}).where((0,d.and)((0,d.eq)(u.threadWorkTable.threadId,e),(0,d.eq)(u.threadWorkTable.state,"paused"))),await o.update(u.threadTable).set({status:"running",generation:i.sql`${u.threadTable.generation} + 1`,turns:0,wrapped:!1,pending:null,outcome:null,endedAt:null,seen:!1,updatedAt:new Date}).where((0,d.eq)(u.threadTable.id,e)),await o.update(u.threadRelayTable).set({accepted:!0}).where((0,d.and)((0,d.eq)(u.threadRelayTable.threadId,e),(0,d.inArray)(u.threadRelayTable.kind,["interrupted","report"]))),{key:g,to:w,answered:T?{bot:T.caller,question:T.result??""}:null}});return H(),o}async function N(e){await h.database.transaction(async t=>{await t.update(u.threadWorkTable).set({state:"cancelled",generation:i.sql`${u.threadWorkTable.generation} + 1`}).where((0,d.and)((0,d.eq)(u.threadWorkTable.threadId,e),(0,d.inArray)(u.threadWorkTable.state,["queued","running","waiting","external","paused"]))),await t.update(u.threadRelayTable).set({accepted:!0}).where((0,d.eq)(u.threadRelayTable.threadId,e))}),H()}async function B(e,t){let[a]=await h.database.select({bot:u.threadTable.bot}).from(u.threadTable).where((0,d.eq)(u.threadTable.id,e)),r=await h.database.select().from(u.threadMessageTable).where((0,d.and)((0,d.eq)(u.threadMessageTable.threadId,e),(0,d.or)((0,d.eq)(u.threadMessageTable.bot,t),a?.bot===t?i.sql`${u.threadMessageTable.bot} is null AND ${u.threadMessageTable.parent} is null`:void 0))).orderBy(u.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 C(e){return h.database.select({threadId:u.threadRelayTable.threadId,text:u.threadRelayTable.text}).from(u.threadRelayTable).where((0,d.and)((0,d.eq)(u.threadRelayTable.kind,"report"),i.sql`instr(${u.threadRelayTable.text}, ${e}) > 0`)).orderBy((0,n.desc)(u.threadRelayTable.id))}e.s(["appendRoomMessage",0,k,"cancelRoom",0,N,"claimRoomWork",0,x,"consumeRoomInbox",0,O,"finishRoomWork",0,M,"listParticipantTranscript",0,B,"listReportsNaming",0,C,"listRoomReceipts",0,y,"listRoomWork",0,q,"lowerRoomContextBudget",0,W,"messageKey",0,Y,"noteRoomBreak",0,m,"pauseRoom",0,_,"resumeRoom",0,E,"roomContextBudget",0,I,"sendRoomMessage",0,v,"settleRoom",0,S,"tellRoom",0,U]),a()}catch(e){a(e)}},!1),378884,e=>e.a(async(t,a)=>{try{var r=e.i(875225),d=e.i(349129),n=e.i(518899),l=e.i(380690),i=e.i(175936),o=e.i(687388),s=e.i(528790),h=e.i(613240),u=e.i(353885),b=e.i(41444),c=e.i(944971),T=e.i(742712),p=e.i(889034),w=t([s,T]);[s,T]=w.then?(await w)():w;let K=()=>l.appEvents.emit({type:"threads"}),P={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 K(),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)),K()}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))}),K())}async function m(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)),K())}async function k(e){let[t]=await s.database.select(P).from(h.threadTable).where((0,r.eq)(h.threadTable.id,e));if(!t)return null;let[a]=await N([t]);return a??null}async function q(e){let[t]=await s.database.select().from(h.threadTable).where((0,r.eq)(h.threadTable.id,e));return t??null}let F=e=>"running"===e||"waiting"===e;async function I(){let[e,t,a,n]=await Promise.all([s.database.select(P).from(h.threadTable).where((0,r.inArray)(h.threadTable.status,["running","waiting"])).orderBy((0,d.desc)(h.threadTable.updatedAt)),s.database.select(P).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(P).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(P).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 N(l,e=>F(e.status))}async function W(){let e=await s.database.select(P).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 N(e)}async function A(e={}){let t=await s.database.select(P).from(h.threadTable).where(e.before?(0,r.lt)(h.threadTable.updatedAt,e.before):void 0).orderBy((0,d.desc)(h.threadTable.updatedAt)).limit(e.limit??o.PAGE_SIZE);return N(t,e=>F(e.status))}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&&K(),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 q(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}}),K()}async function U(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))),K())}async function N(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(Y(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?z(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(Y(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 V=["query","command","prompt","url","path","pattern","request","question","title","name","thread","text"],z=(e,t)=>{let a=e[t];return"string"==typeof a&&a.trim()?a:null};function B(e){let t=z(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 V){let a=z(e,t);if(a)return a}for(let t of Object.keys(e)){let a=z(e,t);if(a)return a}return""}async function L(e,t){for(let a of(await s.database.select({role:h.threadMessageTable.role,content:h.threadMessageTable.content}).from(h.threadMessageTable).where((0,r.and)((0,r.eq)(h.threadMessageTable.threadId,e),(0,r.inArray)(h.threadMessageTable.role,["tool","assistant"])))))if("string"!=typeof a.content){for(let e of a.content)if("tool-result"===e.type&&e.toolCallId===t)return j(e.output,o.FULL_RESULT_LINES,!0)}return null}let G=/https?:\/\/\S+(?: · \d{4}-\d{2}-\d{2})?\s*$/,X=" — ";function Y(e,t,a){let r=a.toolName===u.TOOL_NAMES.web_search,d=j(a.output,r?o.FULL_RESULT_LINES:5),n=d.flatMap(e=>"text"===e.type?[e.text]:[]),l=r?n.filter(e=>G.test(e)):[],i=(l.length?l:n).slice(0,4);return{...e,id:t,kind:"tool-result",callId:a.toolCallId,name:a.toolName,results:i.map(e=>({type:"text",text:l.length?function(e){let t=e.replace(/\s+/g," ").trim(),a=G.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-X.length;return d&&n>1?`${(0,b.clip)(d,n)}${X}${r}`:r}(e):(0,b.clip)(e,200)})),more:n.length>i.length||d.length>n.length||i.some(e=>e.length>200)}}function j(e,t,a=!1){var r;if(null==e)return[];if("string"==typeof e)return J(e,t,a);if("object"!=typeof e)return J(String(e),t,a);switch(e.type){case"text":case"error-text":return J(String(e.value??""),t,a);case"json":case"error-json":return j(e.value,t,a);case"execution-denied":return J("Denied.",t,a);case"content":{if(!Array.isArray(e.value))return[];let r=[];for(let d of e.value){if("text"===d.type&&"string"==typeof d.text){r.push(...J(d.text,t,a));continue}let e=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);e&&r.push({type:"image",src:e})}return r}}return"string"==typeof e.path&&String(e.mediaType??"").startsWith("image/")?[{type:"text",text:e.path},{type:"image",src:i.queryKey.file(e.path)}]:Array.isArray(e.sources)?e.sources.map(e=>String(e?.title??"")).filter(Boolean).slice(0,t).map(e=>({type:"text",text:e})):"string"==typeof e.stdout?J(e.stdout||String(e.stderr??""),t,a):"string"==typeof e.answer?J(e.answer,t,a):J(a?(r=e,Array.isArray(r)?JSON.stringify(r,null,2):Object.entries(r).map(([e,t])=>"string"==typeof t&&t.includes("\n")?`${e}:
4
+ ${t}`:`${e}: ${JSON.stringify(t,null,2)}`).join("\n")):JSON.stringify(e),t,a)}function J(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,m,"argumentLine",0,C,"deleteMessages",0,U,"deleteThread",0,O,"findThread",0,q,"findThreadView",0,k,"insertThread",0,f,"listBotWork",0,v,"listCallJobs",0,R,"listInboxThreads",0,I,"listRunningThreadIds",0,D,"listThreadFolders",0,M,"listThreadHistory",0,A,"listThreadOverview",0,W,"listWrittenPaths",0,_,"markSeen",0,g,"readBotAsk",0,x,"readToolResult",0,L,"resolveThread",0,E,"updateThread",0,y,"upsertMessage",0,$,"writtenPathsIn",0,S]),a()}catch(e){a(e)}},!1)];
5
5
 
6
6
  //# sourceMappingURL=features_bot_08z387_._.js.map
@@ -1,22 +1,22 @@
1
- module.exports=[265143,e=>e.a(async(t,a)=>{try{e.i(666680);var o=e.i(875225),s=e.i(518899),n=e.i(380690);e.i(687388);var i=e.i(528790),r=e.i(613240),h=e.i(340698);e.i(786025);var d=e.i(944971);e.i(438188);var l=t([i,h]);[i,h]=l.then?(await l)():l;let g=e=>({name:e.name,description:e.description,ownLine:e.ownLine?.line??null,systemPrompt:e.systemPrompt,icon:e.icon,provider:e.provider,model:e.model,disabled:e.disabled,compactAt:e.compactAt,effort:e.effort});async function m(){let e=await i.database.select().from(r.botTable).orderBy(r.botTable.createdAt);return e.length?e.filter(e=>!e.disabled).map(g):[d.DEFAULT_BOT]}async function u(e){let t=await w(e);if(t)return g(t);let a=e.trim().toLowerCase(),[n]=await i.database.select().from(r.botTable).where((0,o.eq)(s.sql`lower(${r.botTable.name})`,a));if(n)return g(n);if(d.DEFAULT_BOT.name.toLowerCase()!==a)return null;let[h]=await i.database.select({name:r.botTable.name}).from(r.botTable).limit(1);return h?null:d.DEFAULT_BOT}async function p(){let[e,t,a]=await Promise.all([i.database.select().from(r.botTable).orderBy(r.botTable.createdAt),i.database.select({botName:r.botMcpToolTable.botName,id:r.mcpToolTable.id,name:r.mcpToolTable.name,serverName:r.mcpToolTable.serverName}).from(r.botMcpToolTable).innerJoin(r.mcpToolTable,(0,o.eq)(r.botMcpToolTable.toolId,r.mcpToolTable.id)),i.database.select({bot:r.threadTable.bot,input:s.sql`coalesce(sum(${r.threadTable.inputTokens}), 0)`,output:s.sql`coalesce(sum(${r.threadTable.outputTokens}), 0)`,lastJobAt:s.sql`max(${r.threadTable.updatedAt})`}).from(r.threadTable).groupBy(r.threadTable.bot)]),n=new Map;for(let{botName:e,...a}of t){let t=n.get(e)??[];t.push(a),n.set(e,t)}let h=new Map(a.map(e=>[e.bot,{input:Number(e.input),output:Number(e.output)}])),d=new Map(a.flatMap(e=>null==e.lastJobAt?[]:[[e.bot,new Date(1e3*Number(e.lastJobAt))]]));return e.map(e=>({...e,tools:n.get(e.name)??[],tokens:h.get(e.name)??{input:0,output:0},lastJobAt:d.get(e.name)??null}))}async function c(){return(0,d.isBotMemoryOn)(await (0,h.readConfig)(d.BOT_MEMORY_KEY))}async function w(e){let[t]=await i.database.select().from(r.botTable).where((0,o.eq)(r.botTable.name,e));return t??null}async function y(e){let t=await w(e);return!t||t.descriptionLocked?null:{line:t.ownLine?.line??null}}async function f(e,t,a){let s=await w(e);if(!s||s.descriptionLocked)return;let h=s.ownLine?.line??null;return h===t||(await i.database.update(r.botTable).set({ownLine:{line:t,reason:a,at:Date.now()}}).where((0,o.eq)(r.botTable.name,s.name)),n.appEvents.emit({type:"bots"})),{was:h}}async function b(){let e=await i.database.select({name:r.botTable.name}).from(r.botTable);return[...new Set([...e.map(e=>e.name),d.DEFAULT_BOT.name])]}e.s(["findAllBots",0,p,"findJobBot",0,u,"listBotNames",0,b,"listJobBots",0,m,"ownLineOf",0,y,"readBotMemoryOn",0,c,"writeOwnLine",0,f]),a()}catch(e){a(e)}},!1),438188,e=>{"use strict";var t=e.i(687388),a=e.i(353885),o=e.i(944971);let s=[{name:o.DEFAULT_BOT.name,description:o.DEFAULT_BOT.description,hint:"Takes whatever nobody else is for",systemPrompt:""},{name:"Analyst",description:"Finds out and answers with sources — what things cost, how numbers moved, which one to pick",hint:"Finds out, cites, and lays it out",systemPrompt:`Questions answered by finding out are yours — what something costs, how a figure moved and why, which to pick, whether to buy now or wait — and the answer is only as good as where it came from.
1
+ module.exports=[265143,e=>e.a(async(t,a)=>{try{e.i(666680);var o=e.i(875225),s=e.i(518899),i=e.i(380690);e.i(687388);var n=e.i(528790),r=e.i(613240),h=e.i(340698);e.i(786025);var d=e.i(944971);e.i(438188);var l=t([n,h]);[n,h]=l.then?(await l)():l;let g=e=>({name:e.name,description:e.description,ownLine:e.ownLine?.line??null,systemPrompt:e.systemPrompt,icon:e.icon,provider:e.provider,model:e.model,disabled:e.disabled,compactAt:e.compactAt,effort:e.effort});async function c(){let e=await n.database.select().from(r.botTable).orderBy(r.botTable.createdAt);return e.length?e.filter(e=>!e.disabled).map(g):[d.DEFAULT_BOT]}async function m(e){let t=await w(e);if(t)return g(t);let a=e.trim().toLowerCase(),[i]=await n.database.select().from(r.botTable).where((0,o.eq)(s.sql`lower(${r.botTable.name})`,a));if(i)return g(i);if(d.DEFAULT_BOT.name.toLowerCase()!==a)return null;let[h]=await n.database.select({name:r.botTable.name}).from(r.botTable).limit(1);return h?null:d.DEFAULT_BOT}async function p(){let[e,t,a]=await Promise.all([n.database.select().from(r.botTable).orderBy(r.botTable.createdAt),n.database.select({botName:r.botMcpToolTable.botName,id:r.mcpToolTable.id,name:r.mcpToolTable.name,serverName:r.mcpToolTable.serverName}).from(r.botMcpToolTable).innerJoin(r.mcpToolTable,(0,o.eq)(r.botMcpToolTable.toolId,r.mcpToolTable.id)),n.database.select({bot:r.threadTable.bot,input:s.sql`coalesce(sum(${r.threadTable.inputTokens}), 0)`,output:s.sql`coalesce(sum(${r.threadTable.outputTokens}), 0)`,lastJobAt:s.sql`max(${r.threadTable.updatedAt})`}).from(r.threadTable).groupBy(r.threadTable.bot)]),i=new Map;for(let{botName:e,...a}of t){let t=i.get(e)??[];t.push(a),i.set(e,t)}let h=new Map(a.map(e=>[e.bot,{input:Number(e.input),output:Number(e.output)}])),d=new Map(a.flatMap(e=>null==e.lastJobAt?[]:[[e.bot,new Date(1e3*Number(e.lastJobAt))]]));return e.map(e=>({...e,tools:i.get(e.name)??[],tokens:h.get(e.name)??{input:0,output:0},lastJobAt:d.get(e.name)??null}))}async function u(){return(0,d.isBotMemoryOn)(await (0,h.readConfig)(d.BOT_MEMORY_KEY))}async function w(e){let[t]=await n.database.select().from(r.botTable).where((0,o.eq)(r.botTable.name,e));return t??null}async function y(e){let t=await w(e);return!t||t.descriptionLocked?null:{line:t.ownLine?.line??null}}async function f(e,t,a){let s=await w(e);if(!s||s.descriptionLocked)return;let h=s.ownLine?.line??null;return h===t||(await n.database.update(r.botTable).set({ownLine:{line:t,reason:a,at:Date.now()}}).where((0,o.eq)(r.botTable.name,s.name)),i.appEvents.emit({type:"bots"})),{was:h}}async function b(){let e=await n.database.select({name:r.botTable.name}).from(r.botTable);return[...new Set([...e.map(e=>e.name),d.DEFAULT_BOT.name])]}e.s(["findAllBots",0,p,"findJobBot",0,m,"listBotNames",0,b,"listJobBots",0,c,"ownLineOf",0,y,"readBotMemoryOn",0,u,"writeOwnLine",0,f]),a()}catch(e){a(e)}},!1),438188,e=>{"use strict";var t=e.i(687388),a=e.i(353885),o=e.i(944971),s=e.i(554199);let i=[{name:o.DEFAULT_BOT.name,description:o.DEFAULT_BOT.description,hint:"Takes whatever nobody else is for",systemPrompt:"",icon:o.DEFAULT_BOT_ICON},{name:"Analyst",description:"Finds out and answers with sources — what things cost, how numbers moved, which one to pick",hint:"Finds out, cites, and lays it out",icon:{color:s.MARK_INK.violet,shape:"squircle"},systemPrompt:`Questions answered by finding out are yours — what something costs, how a figure moved and why, which to pick, whether to buy now or wait — and the answer is only as good as where it came from.
2
2
 
3
3
  **Answer first.** Whoever asked reads your first lines and may stop there, so they hold the answer and the two or three facts behind it. A title says the finding, not the topic. A few facts are your final text and nothing more; more than that is one page in your folder under \`artifacts/\`, every figure with where it came from — or a sheet, when the figures are their own to keep and go on with.
4
4
 
5
5
  **From the source, never from memory.** A number comes from where it is published, a claim from the text that makes it, with the moment it is said; two sources that disagree, a figure you could not confirm, a page you could not read are said beside the answer, not smoothed over. A number you derive shows its arithmetic; an estimate is a range.
6
6
 
7
- **What you keep.** The currency they think in, the sources they trust, what they already own and are weighing — dated, so the next job starts from it.`},{name:"Curator",description:"Keeps them up to date — a morning news brief, a video, podcast, talk or article summed up",hint:"Brings what is worth their time",systemPrompt:`Keeping up is yours — the brief on the topics they follow, and anything long they point you at, a video, a podcast, a talk, an article, a PDF, handed back short — so they spend minutes on what would take them an hour.
7
+ **What you keep.** The currency they think in, the sources they trust, what they already own and are weighing — dated, so the next job starts from it.`},{name:"Curator",description:"Keeps them up to date — a morning news brief, a video, podcast, talk or article summed up",hint:"Brings what is worth their time",icon:{color:s.MARK_INK.emerald,shape:"blob"},systemPrompt:`Keeping up is yours — the brief on the topics they follow, and anything long they point you at, a video, a podcast, a talk, an article, a PDF, handed back short — so they spend minutes on what would take them an hour.
8
8
 
9
9
  **Their time is the point.** Lead with what changed and what matters to them; cut what they would skip. Every point links to where it is said: a story to its publisher, a moment to its timestamp.
10
10
 
11
11
  **Never from memory.** A headline, a quote, a figure comes from the page or the transcript you read, with when. A story you could not open, or a video with no words to read, is said, not summed up from its title.
12
12
 
13
- **What you keep.** The topics they follow and the ones they skip, the sources they trust, how long a brief they read and in which language — dated, so the next brief starts from it.`},{name:"Concierge",description:"Handles trips and errands — flights, stays, bookings, orders and forms, up to the step that pays",hint:"Takes errands to the last step",systemPrompt:`Trips and errands out in the world are yours — a trip planned day by day, flights and stays found and compared, a booking, an order, a reservation, a form filled — each taken as far as it goes before the step that pays or signs, which is theirs. A trip has a skill of your own, \`${t.TRAVEL_SKILL}\`: load it before any step of one.
13
+ **What you keep.** The topics they follow and the ones they skip, the sources they trust, how long a brief they read and in which language — dated, so the next brief starts from it.`},{name:"Concierge",description:"Handles trips and errands — flights, stays, bookings, orders and forms, up to the step that pays",hint:"Takes errands to the last step",icon:{color:s.MARK_INK.sky,shape:"poly"},systemPrompt:`Trips and errands out in the world are yours — a trip planned day by day, flights and stays found and compared, a booking, an order, a reservation, a form filled — each taken as far as it goes before the step that pays or signs, which is theirs. A trip has a skill of your own, \`${t.TRAVEL_SKILL}\`: load it before any step of one.
14
14
 
15
15
  **Real prices, real dates.** A fare, a price, an opening time comes from the page you read, with when; one you could not reach is said, never guessed. Finding them is part of the errand and yours, not a question to hand on. A choice they make by looking — a room, a place, a thing to buy — comes with its picture.
16
16
 
17
17
  **Ready to act.** The answer says what is waiting for them, where, and what it costs, so the one step left is theirs.
18
18
 
19
- **What you keep.** Where they travel from and with whom, the seats and rooms they like, the programs they collect with, where things are sent — dated, so the next errand starts from it.`},{name:"Designer",description:"Makes what gets looked at — design options side by side, slide decks, posters and posts at size",hint:"Draws the options to pick from",systemPrompt:`Anything that has to be looked at is yours — a screen or a page to choose between, a deck to present, a post at the size it will be shown, a poster, a document someone reads. You build it in \`${t.ARTIFACT_SKILL}\` (a canvas of options side by side or anything at its exact size, a document, a picture book): load it before any step. It starts from ready boards and outlines and shoots what you made itself; writing the HTML from nothing instead costs you those and the check. A deck is \`${a.TOOL_NAMES.make_deck}\`, which draws its slides and shoots them itself; a page someone uses rather than reads — a tool, a small app — is in \`${t.ARTIFACT_SKILL}\` too, with steps of its own.
19
+ **What you keep.** Where they travel from and with whom, the seats and rooms they like, the programs they collect with, where things are sent — dated, so the next errand starts from it.`},{name:"Designer",description:"Makes what gets looked at — design options side by side, slide decks, posters and posts at size",hint:"Draws the options to pick from",icon:{paint:"rainbow",shape:"heart"},systemPrompt:`Anything that has to be looked at is yours — a screen or a page to choose between, a deck to present, a post at the size it will be shown, a poster, a document someone reads. You build it in \`${t.ARTIFACT_SKILL}\` (a canvas of options side by side or anything at its exact size, a document, a picture book): load it before any step. It starts from ready boards and outlines and shoots what you made itself; writing the HTML from nothing instead costs you those and the check. A deck is \`${a.TOOL_NAMES.make_deck}\`, which draws its slides and shoots them itself; a page someone uses rather than reads — a tool, a small app — is in \`${t.ARTIFACT_SKILL}\` too, with steps of its own.
20
20
 
21
21
  **Offer a real choice.** Two to four options, each exploring an axis you can name — everything at once against one thing at a time, dense against roomy — never five shades of one. Every option gets an honest case and the thing it costs; mark the one you would carry forward. Once an option is B it stays B, whatever is dropped before it.
22
22
 
@@ -24,14 +24,14 @@ module.exports=[265143,e=>e.a(async(t,a)=>{try{e.i(666680);var o=e.i(875225),s=e
24
24
 
25
25
  **The pictures are how you check your own work.** Look at what was shot, fix what the renderer refuses or the canvas marks as cut, shoot once more: two rounds at most.
26
26
 
27
- **What you keep.** The brand's colours, type and spacing, and the direction they chose, so the next thing you draw starts from it.`},{name:"Tutor",description:"Explains anything simply as a picture book — a picture and a line or two a page, read aloud if asked",hint:"Explains anything like a picture book",systemPrompt:`Explaining is yours — anything someone wants to understand, told so that a person who knows nothing about it follows every step. It ends as a picture book, made with \`${t.ARTIFACT_SKILL}\`, in your folder under \`artifacts/\`: one picture and a line or two a page, as a page to swipe through. A PDF or a video that reads itself aloud is made from the same book when they ask for one; a request that does not say is a page to swipe through, not a question.
27
+ **What you keep.** The brand's colours, type and spacing, and the direction they chose, so the next thing you draw starts from it.`},{name:"Tutor",description:"Explains anything simply as a picture book — a picture and a line or two a page, read aloud if asked",hint:"Explains anything like a picture book",icon:{color:s.MARK_INK.yellow,shape:"blob"},systemPrompt:`Explaining is yours — anything someone wants to understand, told so that a person who knows nothing about it follows every step. It ends as a picture book, made with \`${t.ARTIFACT_SKILL}\`, in your folder under \`artifacts/\`: one picture and a line or two a page, as a page to swipe through. A PDF or a video that reads itself aloud is made from the same book when they ask for one; a request that does not say is a page to swipe through, not a question.
28
28
 
29
29
  **Simple, never wrong.** Read what you explain from where it is stated before the first page. A picture that simplifies still shows how it really works; a comparison that would mislead is left out. A new word comes after the picture that shows it, never before.
30
30
 
31
- **What you keep.** What the user already knows and how they liked being taught — the level, a picture style, how many pages — dated, so the next book starts where they are.`},{name:"Marketer",description:"Marketing — positioning, page copy, launch plans, social posts, emails, an SEO audit",hint:"Works out what to say, to whom, and where",systemPrompt:`Marketing work is yours — positioning, page copy, a launch plan, social posts, emails, an SEO audit — and it ends as the thing itself in your folder under \`artifacts/\`, ready to paste, post or send. \`${t.MARKETING_SKILL}\` is your own skill and holds the method for each of them: load it before any step.
31
+ **What you keep.** What the user already knows and how they liked being taught — the level, a picture style, how many pages — dated, so the next book starts where they are.`},{name:"Marketer",description:"Marketing — positioning, page copy, launch plans, social posts, emails, an SEO audit",hint:"Works out what to say, to whom, and where",icon:{color:s.MARK_INK.red,shape:"poly"},systemPrompt:`Marketing work is yours — positioning, page copy, a launch plan, social posts, emails, an SEO audit — and it ends as the thing itself in your folder under \`artifacts/\`, ready to paste, post or send. \`${t.MARKETING_SKILL}\` is your own skill and holds the method for each of them: load it before any step.
32
32
 
33
33
  **Ground every claim.** Competitors, prices, search terms and what people say about the problem come from pages you opened, with the link beside them. What you could not check is marked as a guess.
34
34
 
35
- **What you keep.** One brief per product — what it is, for whom, against what, in which voice — dated, and every later job starts from it.`}];e.s(["findBotSeed",0,e=>s.find(t=>t.name===e)??null])}];
35
+ **What you keep.** One brief per product — what it is, for whom, against what, in which voice — dated, and every later job starts from it.`}];e.s(["findBotSeed",0,e=>i.find(t=>t.name===e)??null])}];
36
36
 
37
37
  //# sourceMappingURL=features_bot_0zy_q8y._.js.map