@alook/app 0.0.124 → 0.0.126

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 (162) hide show
  1. package/bundled/email-worker/index.js +105 -7
  2. package/bundled/web/.open-next/.build/durable-objects/queue.js +5 -5
  3. package/bundled/web/.open-next/assets/BUILD_ID +1 -1
  4. package/bundled/web/.open-next/assets/_next/static/chunks/{1-jzxwxd2yppa.js → 0e5m6elbfa-zc.js} +1 -1
  5. package/bundled/web/.open-next/assets/_next/static/chunks/0w1e74-zrlr_t.js +1 -0
  6. package/bundled/web/.open-next/assets/_next/static/chunks/0ym6b1b5nwlot.js +1 -0
  7. package/bundled/web/.open-next/assets/_next/static/chunks/0zgj-5k527bub.js +3 -0
  8. package/bundled/web/.open-next/assets/_next/static/chunks/{3ktbvokn95fil.js → 17coqn37fn5yf.js} +1 -1
  9. package/bundled/web/.open-next/assets/_next/static/chunks/{2bsr3n9nxv0sc.js → 19j0bml2m-9uo.js} +1 -1
  10. package/bundled/web/.open-next/assets/_next/static/chunks/1j1bygouvxt8w.js +1 -0
  11. package/bundled/web/.open-next/assets/_next/static/chunks/1xsm-ck02gbj9.js +59 -0
  12. package/bundled/web/.open-next/assets/_next/static/chunks/1z9bza2a4pnu7.js +63 -0
  13. package/bundled/web/.open-next/assets/_next/static/chunks/{1-srtubo20rjx.js → 27vz1_55bn5h_.js} +1 -1
  14. package/bundled/web/.open-next/assets/_next/static/chunks/{2wa56n0-zxr-6.js → 29xo03yr3ra6c.js} +1 -1
  15. package/bundled/web/.open-next/assets/_next/static/chunks/2ehyie2v34cpd.js +1 -0
  16. package/bundled/web/.open-next/assets/_next/static/chunks/{1-bjnx7wr9nop.js → 2kbuh-u0kdgqc.js} +1 -1
  17. package/bundled/web/.open-next/assets/_next/static/chunks/{2fgjbyei3irh0.js → 2z5ztdz1g7p07.js} +1 -1
  18. package/bundled/web/.open-next/assets/_next/static/chunks/32v7gw3qbi0rn.js +3 -0
  19. package/bundled/web/.open-next/assets/_next/static/chunks/37v24j51y7kp2.js +1 -0
  20. package/bundled/web/.open-next/assets/_next/static/chunks/{40cggm_5dua8j.js → 3f96j114fbbez.js} +3 -3
  21. package/bundled/web/.open-next/assets/_next/static/chunks/{09xenumhc9uzs.js → 3l4-pv_2z86tp.js} +1 -1
  22. package/bundled/web/.open-next/assets/_next/static/chunks/3tyj3zocw9s7f.css +1 -0
  23. package/bundled/web/.open-next/cache/{LNMccyS5SZzzNBkt0dM4K → DxaidmHIn9LNWpfCVjlN9}/_global-error.cache +1 -1
  24. package/bundled/web/.open-next/cache/{LNMccyS5SZzzNBkt0dM4K → DxaidmHIn9LNWpfCVjlN9}/_not-found.cache +1 -1
  25. package/bundled/web/.open-next/cache/{LNMccyS5SZzzNBkt0dM4K → DxaidmHIn9LNWpfCVjlN9}/device.cache +1 -1
  26. package/bundled/web/.open-next/cache/{LNMccyS5SZzzNBkt0dM4K → DxaidmHIn9LNWpfCVjlN9}/privacy.cache +1 -1
  27. package/bundled/web/.open-next/cache/{LNMccyS5SZzzNBkt0dM4K → DxaidmHIn9LNWpfCVjlN9}/sitemap.xml.cache +1 -1
  28. package/bundled/web/.open-next/cloudflare/cache-assets-manifest.sql +1 -1
  29. package/bundled/web/.open-next/cloudflare/init.js +1 -1
  30. package/bundled/web/.open-next/dynamodb-provider/dynamodb-cache.json +1 -1
  31. package/bundled/web/.open-next/middleware/handler.mjs +7 -7
  32. package/bundled/web/.open-next/server-functions/default/src/web/.next/BUILD_ID +1 -1
  33. package/bundled/web/.open-next/server-functions/default/src/web/.next/app-path-routes-manifest.json +4 -2
  34. package/bundled/web/.open-next/server-functions/default/src/web/.next/build-manifest.json +3 -3
  35. package/bundled/web/.open-next/server-functions/default/src/web/.next/prerender-manifest.json +3 -3
  36. package/bundled/web/.open-next/server-functions/default/src/web/.next/routes-manifest.json +22 -6
  37. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/invite/[token]/page_client-reference-manifest.js +1 -1
  38. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/studio/new/page_client-reference-manifest.js +1 -1
  39. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/agents/[id]/activity/page_client-reference-manifest.js +1 -1
  40. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/agents/[id]/chat/[convId]/page_client-reference-manifest.js +1 -1
  41. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/agents/[id]/chat/page_client-reference-manifest.js +1 -1
  42. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/agents/[id]/email/page_client-reference-manifest.js +1 -1
  43. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/agents/[id]/files/page_client-reference-manifest.js +1 -1
  44. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/agents/[id]/meetings/page_client-reference-manifest.js +1 -1
  45. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/agents/[id]/page_client-reference-manifest.js +1 -1
  46. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/agents/new/page_client-reference-manifest.js +1 -1
  47. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/agents/page_client-reference-manifest.js +1 -1
  48. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/calendar/page_client-reference-manifest.js +1 -1
  49. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/flags/page_client-reference-manifest.js +1 -1
  50. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/help/email-setup/page_client-reference-manifest.js +1 -1
  51. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/home/page_client-reference-manifest.js +1 -1
  52. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/issues/page_client-reference-manifest.js +1 -1
  53. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/page_client-reference-manifest.js +1 -1
  54. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/runtimes/page_client-reference-manifest.js +1 -1
  55. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/settings/page_client-reference-manifest.js +1 -1
  56. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/{threads → traces}/[traceId]/page.js +6 -6
  57. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/traces/[traceId]/page_client-reference-manifest.js +3 -0
  58. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/{threads → traces}/page.js +6 -6
  59. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/traces/page_client-reference-manifest.js +3 -0
  60. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/unread/page_client-reference-manifest.js +1 -1
  61. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/workspaces/page_client-reference-manifest.js +1 -1
  62. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(auth)/sign-in/page_client-reference-manifest.js +1 -1
  63. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  64. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/agents/[id]/threads/route.js +14 -0
  65. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/agents/[id]/threads/route_client-reference-manifest.js +3 -0
  66. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/conversations/[id]/threads/route.js +16 -0
  67. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/conversations/[id]/threads/route_client-reference-manifest.js +3 -0
  68. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/email/notify/route.js +3 -2
  69. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/device/page_client-reference-manifest.js +1 -1
  70. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/page/react-loadable-manifest.json +1 -1
  71. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/page_client-reference-manifest.js +1 -1
  72. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/privacy/page_client-reference-manifest.js +1 -1
  73. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/templates/[id]/page_client-reference-manifest.js +1 -1
  74. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/templates/page_client-reference-manifest.js +1 -1
  75. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app-paths-manifest.json +4 -2
  76. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/0_kl__next-internal_server_app_api_conversations_[id]_threads_route_actions_1snnipi.js +3 -0
  77. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__00tttex._.js +1 -1
  78. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__068ljm8._.js +1 -1
  79. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__07exuq1._.js +1 -1
  80. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__0d82yjz._.js +1 -1
  81. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__0envyr7._.js +1 -1
  82. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__0k5yb3f._.js +3 -0
  83. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__0p9_qnh._.js +1 -1
  84. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__16_glrs._.js +1 -1
  85. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__16u73k9._.js +1 -1
  86. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__1c0s55o._.js +1 -1
  87. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__1ertv1z._.js +1 -1
  88. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__1g69747._.js +1 -1
  89. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__1r94gz3._.js +1 -1
  90. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__1v9hp6s._.js +1 -1
  91. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__1yza8tr._.js +1 -1
  92. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[turbopack]_runtime.js +20 -14
  93. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0i7-4r6._.js +3 -0
  94. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0n8pg0d._.js +1 -1
  95. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0qy7lt2._.js +3 -0
  96. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0v95a0y._.js +6 -6
  97. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_133a7k4._.js +1 -1
  98. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_139j3zh._.js +6 -6
  99. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_1a2lyoh._.js +3 -0
  100. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_1nfaney._.js +6 -6
  101. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/src_1j5rtq8._.js +3 -0
  102. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/src_web__next-internal_server_app_api_agents_[id]_threads_route_actions_0z9gwx3.js +3 -0
  103. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/{0_0k_next_dist_esm_build_templates_app-page_1szp50t.js → 0_0k_next_dist_esm_build_templates_app-page_0om6w08.js} +3 -3
  104. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/{0_0k_next_dist_esm_build_templates_app-page_03qcyrd.js → 0_0k_next_dist_esm_build_templates_app-page_1-1h6nu.js} +3 -3
  105. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/0_kl__next-internal_server_app_(app)_w_[slug]_traces_[traceId]_page_actions_0azi91v.js +3 -0
  106. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/{[root-of-the-server]__0ufxdae._.js → [root-of-the-server]__0d9wg-2._.js} +2 -2
  107. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/{[root-of-the-server]__0rumtkk._.js → [root-of-the-server]__1e5_yd1._.js} +2 -2
  108. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/[root-of-the-server]__1olzajq._.js +3 -0
  109. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/[turbopack]_runtime.js +20 -14
  110. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/_04ht2b1._.js +1 -1
  111. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/{_1dw6wfx._.js → _0934_gu._.js} +2 -2
  112. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/{_1dqb0sa._.js → _0_vr0b8._.js} +2 -2
  113. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/_0aittsu._.js +1 -1
  114. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/_0p54okk._.js +2 -2
  115. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/_0ps6zah._.js +65 -0
  116. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/_1xq5127._.js +1 -1
  117. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/src_web__next-internal_server_app_(app)_w_[slug]_traces_page_actions_0ouyxwm.js +3 -0
  118. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/src_web_src_0pwl5s4._.js +3 -0
  119. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/src_web_src_app_(app)_w_[slug]_agents_[id]_layout_tsx_0ysqmgw._.js +1 -1
  120. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/src_web_src_app_(app)_w_[slug]_home_page_tsx_0-vs82-._.js +1 -1
  121. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/{src_web_src_app_(app)_w_[slug]_threads_[traceId]_page_tsx_00jstix._.js → src_web_src_app_(app)_w_[slug]_traces_[traceId]_page_tsx_1ar14oc._.js} +2 -2
  122. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/src_web_src_app_(app)_w_[slug]_traces_page_tsx_1964ml4._.js +3 -0
  123. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/src_web_src_lib_api_ts_1ffelwp._.js +1 -1
  124. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/middleware-build-manifest.js +3 -3
  125. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/middleware-manifest.json +5 -5
  126. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/next-font-manifest.js +1 -1
  127. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/next-font-manifest.json +2 -2
  128. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/server-reference-manifest.js +1 -1
  129. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/server-reference-manifest.json +1 -1
  130. package/bundled/web/.open-next/server-functions/default/src/web/handler.mjs +60 -58
  131. package/bundled/web/.open-next/server-functions/default/src/web/handler.mjs.meta.json +511 -288
  132. package/bundled/web/.open-next/server-functions/default/src/web/index.mjs +5 -5
  133. package/bundled/web/migrations/0039_add_thread_columns.sql +6 -0
  134. package/bundled/ws-do/index.js +103 -6
  135. package/dist/cli/index.js +15 -0
  136. package/dist/cli/session-runner.js +15 -0
  137. package/dist/index.js +8 -0
  138. package/package.json +1 -1
  139. package/bundled/web/.open-next/assets/_next/static/chunks/0hy07ql5hqe_e.js +0 -1
  140. package/bundled/web/.open-next/assets/_next/static/chunks/0yeu-j3z9iguu.js +0 -1
  141. package/bundled/web/.open-next/assets/_next/static/chunks/17ewotvd7-nyl.js +0 -121
  142. package/bundled/web/.open-next/assets/_next/static/chunks/1ftpvvqesj-9s.js +0 -3
  143. package/bundled/web/.open-next/assets/_next/static/chunks/1ievf6mopw-38.js +0 -1
  144. package/bundled/web/.open-next/assets/_next/static/chunks/1lr1gmh4hbe2o.js +0 -1
  145. package/bundled/web/.open-next/assets/_next/static/chunks/23tr-x-2n25uu.js +0 -1
  146. package/bundled/web/.open-next/assets/_next/static/chunks/2v94k7fybopcq.css +0 -1
  147. package/bundled/web/.open-next/assets/_next/static/chunks/3pk89-bwz664l.js +0 -3
  148. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/threads/[traceId]/page_client-reference-manifest.js +0 -3
  149. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/threads/page_client-reference-manifest.js +0 -3
  150. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_03_h7-u._.js +0 -3
  151. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/0_kl__next-internal_server_app_(app)_w_[slug]_threads_[traceId]_page_actions_0zp36iw.js +0 -3
  152. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/[root-of-the-server]__1efy1ql._.js +0 -3
  153. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/_0pnr14d._.js +0 -65
  154. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/src_web__next-internal_server_app_(app)_w_[slug]_threads_page_actions_0xnqg_4.js +0 -3
  155. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/src_web_src_1sy648u._.js +0 -3
  156. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/src_web_src_app_(app)_w_[slug]_threads_page_tsx_0hy955b._.js +0 -3
  157. /package/bundled/web/.open-next/assets/_next/static/{LNMccyS5SZzzNBkt0dM4K → DxaidmHIn9LNWpfCVjlN9}/_buildManifest.js +0 -0
  158. /package/bundled/web/.open-next/assets/_next/static/{LNMccyS5SZzzNBkt0dM4K → DxaidmHIn9LNWpfCVjlN9}/_clientMiddlewareManifest.js +0 -0
  159. /package/bundled/web/.open-next/assets/_next/static/{LNMccyS5SZzzNBkt0dM4K → DxaidmHIn9LNWpfCVjlN9}/_ssgManifest.js +0 -0
  160. /package/bundled/web/.open-next/cache/{LNMccyS5SZzzNBkt0dM4K → DxaidmHIn9LNWpfCVjlN9}/robots.txt.cache +0 -0
  161. /package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/{threads → traces}/[traceId]/page/react-loadable-manifest.json +0 -0
  162. /package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/{threads → traces}/page/react-loadable-manifest.json +0 -0
package/dist/cli/index.js CHANGED
@@ -14929,6 +14929,11 @@ var RecruitAgentRequestSchema = exports_external.object({
14929
14929
  model: exports_external.string().max(100).optional(),
14930
14930
  context_key: exports_external.string().optional()
14931
14931
  });
14932
+ var CreateThreadRequestSchema = exports_external.object({
14933
+ parent_message_id: exports_external.string().min(1),
14934
+ content: exports_external.string().optional().default(""),
14935
+ attachment_ids: exports_external.array(exports_external.string()).optional()
14936
+ });
14932
14937
  // ../../node_modules/.pnpm/drizzle-orm@0.45.2_@cloudflare+workers-types@4.20260607.1_@opentelemetry+api@1.9.1_@typ_f6afd29ff119cf2708e3cf0d0bb9cbc4/node_modules/drizzle-orm/entity.js
14933
14938
  var entityKind = Symbol.for("drizzle:entityKind");
14934
14939
  var hasOwnEntityKind = Symbol.for("drizzle:hasOwnEntityKind");
@@ -16495,10 +16500,13 @@ var conversation = sqliteTable("conversation", {
16495
16500
  title: text("title").notNull().default(""),
16496
16501
  type: text("type").notNull().default(TASK_TYPES.USER_DM_MESSAGE),
16497
16502
  channel: text("channel").notNull().default("default"),
16503
+ parentMessageId: text("parent_message_id"),
16504
+ threadTitle: text("thread_title").notNull().default(""),
16498
16505
  createdAt: text("created_at").notNull().$defaultFn(() => new Date().toISOString())
16499
16506
  }, (t) => [
16500
16507
  index("idx_conversation_agent_lookup").on(t.workspaceId, t.agentId, t.userId, t.type, t.channel, t.createdAt),
16501
16508
  index("idx_conversation_ws_user").on(t.workspaceId, t.userId, t.createdAt),
16509
+ index("idx_conversation_thread").on(t.parentMessageId),
16502
16510
  foreignKey({
16503
16511
  columns: [t.agentId, t.workspaceId],
16504
16512
  foreignColumns: [agent.id, agent.workspaceId]
@@ -19736,6 +19744,13 @@ function buildTaskObject(task, attachments) {
19736
19744
  if (ctx?.quoted_message) {
19737
19745
  obj.quoted_message = ctx.quoted_message;
19738
19746
  }
19747
+ if (ctx?.conversation_history || ctx?.root_message) {
19748
+ obj.thread_context = {
19749
+ note: "The user started this thread by replying to the root_message below. The history is the conversation leading up to it.",
19750
+ ...ctx.root_message ? { root_message: ctx.root_message } : {},
19751
+ ...ctx.conversation_history ? { history: ctx.conversation_history } : {}
19752
+ };
19753
+ }
19739
19754
  }
19740
19755
  if (task.type === "email_notification") {
19741
19756
  const ctx = task.context;
@@ -14840,6 +14840,11 @@ var RecruitAgentRequestSchema = exports_external.object({
14840
14840
  model: exports_external.string().max(100).optional(),
14841
14841
  context_key: exports_external.string().optional()
14842
14842
  });
14843
+ var CreateThreadRequestSchema = exports_external.object({
14844
+ parent_message_id: exports_external.string().min(1),
14845
+ content: exports_external.string().optional().default(""),
14846
+ attachment_ids: exports_external.array(exports_external.string()).optional()
14847
+ });
14843
14848
  // ../../node_modules/.pnpm/drizzle-orm@0.45.2_@cloudflare+workers-types@4.20260607.1_@opentelemetry+api@1.9.1_@typ_f6afd29ff119cf2708e3cf0d0bb9cbc4/node_modules/drizzle-orm/entity.js
14844
14849
  var entityKind = Symbol.for("drizzle:entityKind");
14845
14850
  var hasOwnEntityKind = Symbol.for("drizzle:hasOwnEntityKind");
@@ -16406,10 +16411,13 @@ var conversation = sqliteTable("conversation", {
16406
16411
  title: text("title").notNull().default(""),
16407
16412
  type: text("type").notNull().default(TASK_TYPES.USER_DM_MESSAGE),
16408
16413
  channel: text("channel").notNull().default("default"),
16414
+ parentMessageId: text("parent_message_id"),
16415
+ threadTitle: text("thread_title").notNull().default(""),
16409
16416
  createdAt: text("created_at").notNull().$defaultFn(() => new Date().toISOString())
16410
16417
  }, (t) => [
16411
16418
  index("idx_conversation_agent_lookup").on(t.workspaceId, t.agentId, t.userId, t.type, t.channel, t.createdAt),
16412
16419
  index("idx_conversation_ws_user").on(t.workspaceId, t.userId, t.createdAt),
16420
+ index("idx_conversation_thread").on(t.parentMessageId),
16413
16421
  foreignKey({
16414
16422
  columns: [t.agentId, t.workspaceId],
16415
16423
  foreignColumns: [agent.id, agent.workspaceId]
@@ -18855,6 +18863,13 @@ function buildTaskObject(task, attachments) {
18855
18863
  if (ctx?.quoted_message) {
18856
18864
  obj.quoted_message = ctx.quoted_message;
18857
18865
  }
18866
+ if (ctx?.conversation_history || ctx?.root_message) {
18867
+ obj.thread_context = {
18868
+ note: "The user started this thread by replying to the root_message below. The history is the conversation leading up to it.",
18869
+ ...ctx.root_message ? { root_message: ctx.root_message } : {},
18870
+ ...ctx.conversation_history ? { history: ctx.conversation_history } : {}
18871
+ };
18872
+ }
18858
18873
  }
18859
18874
  if (task.type === "email_notification") {
18860
18875
  const ctx = task.context;
package/dist/index.js CHANGED
@@ -15031,6 +15031,11 @@ var RecruitAgentRequestSchema = exports_external.object({
15031
15031
  model: exports_external.string().max(100).optional(),
15032
15032
  context_key: exports_external.string().optional()
15033
15033
  });
15034
+ var CreateThreadRequestSchema = exports_external.object({
15035
+ parent_message_id: exports_external.string().min(1),
15036
+ content: exports_external.string().optional().default(""),
15037
+ attachment_ids: exports_external.array(exports_external.string()).optional()
15038
+ });
15034
15039
  // ../../node_modules/.pnpm/drizzle-orm@0.45.2_@cloudflare+workers-types@4.20260607.1_@opentelemetry+api@1.9.1_@typ_f6afd29ff119cf2708e3cf0d0bb9cbc4/node_modules/drizzle-orm/entity.js
15035
15040
  var entityKind = Symbol.for("drizzle:entityKind");
15036
15041
  var hasOwnEntityKind = Symbol.for("drizzle:hasOwnEntityKind");
@@ -16597,10 +16602,13 @@ var conversation = sqliteTable("conversation", {
16597
16602
  title: text("title").notNull().default(""),
16598
16603
  type: text("type").notNull().default(TASK_TYPES.USER_DM_MESSAGE),
16599
16604
  channel: text("channel").notNull().default("default"),
16605
+ parentMessageId: text("parent_message_id"),
16606
+ threadTitle: text("thread_title").notNull().default(""),
16600
16607
  createdAt: text("created_at").notNull().$defaultFn(() => new Date().toISOString())
16601
16608
  }, (t) => [
16602
16609
  index("idx_conversation_agent_lookup").on(t.workspaceId, t.agentId, t.userId, t.type, t.channel, t.createdAt),
16603
16610
  index("idx_conversation_ws_user").on(t.workspaceId, t.userId, t.createdAt),
16611
+ index("idx_conversation_thread").on(t.parentMessageId),
16604
16612
  foreignKey({
16605
16613
  columns: [t.agentId, t.workspaceId],
16606
16614
  foreignColumns: [agent.id, agent.workspaceId]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alook/app",
3
- "version": "0.0.124",
3
+ "version": "0.0.126",
4
4
  "description": "Run Alook locally — one command, no clone needed",
5
5
  "license": "Apache-2.0",
6
6
  "homepage": "https://github.com/alookai/alook#readme",
@@ -1 +0,0 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,74348,e=>{"use strict";var t=e.i(653772),s=e.i(511043),a=e.i(222862),r=e.i(500324);let n=(0,s.createContext)(null);e.s(["FlagCountProvider",0,function({children:e}){let{workspaceId:l}=(0,r.useWorkspace)(),[i,o]=(0,s.useState)(0),c=(0,s.useCallback)(()=>{(0,a.getFlaggedCount)(l).then(e=>o(e.count)).catch(()=>{})},[l]),d=(0,s.useCallback)(()=>{o(e=>e+1)},[]),u=(0,s.useCallback)(()=>{o(e=>Math.max(0,e-1))},[]);return(0,s.useEffect)(()=>{c()},[c]),(0,t.jsx)(n.Provider,{value:{count:i,refresh:c,increment:d,decrement:u},children:e})},"useFlagCount",0,function(){let e=(0,s.useContext)(n);if(!e)throw Error("useFlagCount must be used within FlagCountProvider");return e}])},49879,594518,844010,e=>{"use strict";var t=e.i(653772),s=e.i(511043),a=e.i(126942),r=e.i(500324),n=e.i(186339),l=e.i(82970),i=e.i(896315),o=e.i(945074);let c={claude:"Claude Code",codex:"Codex",opencode:"OpenCode"},d="the agent runtime";function u({provider:e,message:a,onRetry:r,retrying:n}){let[m,f]=(0,s.useState)(!1),h=n??m,p=async()=>{if(r){f(!0);try{await r()}finally{f(!1)}}};return(0,t.jsxs)("div",{className:"rounded-md border border-destructive/30 bg-destructive/5 p-2 max-w-full overflow-hidden",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsxs)("p",{className:"flex items-center gap-1.5 text-sm font-semibold text-destructive min-w-0",children:[(0,t.jsx)(l.AlertCircle,{className:"size-3.5 shrink-0"}),(0,t.jsxs)("span",{children:["Error from ",e?c[e]??d:d]})]}),r&&(0,t.jsxs)("button",{type:"button",onClick:p,disabled:h,className:"ml-auto shrink-0 text-xs text-muted-foreground hover:text-foreground transition-colors cursor-pointer disabled:opacity-50 flex items-center gap-1",children:[h?(0,t.jsx)(o.Loader2,{className:"size-3 animate-spin"}):(0,t.jsx)(i.RotateCw,{className:"size-3"}),"Retry"]})]}),(0,t.jsx)("p",{className:"mt-1.5 text-sm text-destructive/90 wrap-anywhere whitespace-pre-wrap",children:a}),(0,t.jsx)("p",{className:"mt-1.5 text-xs text-muted-foreground",children:"This came from the agent runtime on your machine, not from Alook."})]})}function m({task:e,messages:a,connectionLost:r,onRetry:n,provider:l}){let i=(0,s.useMemo)(()=>(function(e){let t=[];for(let s of e)"error"===s.type&&t.push({kind:"error",id:s.id||`seq-${s.seq}`,content:s.content||s.output});return t})(a),[a]);return 0!==i.length||"failed"===e.status&&e.error||r?(0,t.jsxs)("div",{className:"space-y-3 min-w-0 max-w-full",children:[i.length>0&&(0,t.jsx)("div",{className:"space-y-1 mt-1",children:i.map(e=>(0,t.jsx)(u,{provider:l,message:e.content},e.id))}),"failed"===e.status&&e.error&&(0,t.jsx)("div",{className:"mt-2",children:(0,t.jsx)(u,{provider:l,message:e.error,onRetry:n})}),r&&(0,t.jsx)("p",{className:"text-sm text-muted-foreground animate-pulse mt-1",children:"Connection lost — retrying..."})]}):null}var f=e.i(222862);function h(e){return e.slice().sort((e,t)=>{let s=e.created_at.localeCompare(t.created_at);return 0!==s?s:e.id.localeCompare(t.id)})}function p(e,t){let s=new Map;for(let t of e)s.set(t.id,t);for(let e of t)s.set(e.id,e);return h([...s.values()])}function g(e){if("artifact"===e.kind)return"agent";if("message"!==e.kind)return null;let t=e.data.role;return"user"===t?"user":"assistant"===t||"event"===t?"agent":null}function x(e){return e.data.created_at}function v(e){let t=(0,s.useRef)(e);return(0,s.useEffect)(()=>{t.current=e},[e]),t}var b=e.i(355578),k=e.i(875494),j=e.i(872937),y=e.i(516266),w=e.i(613349),N=e.i(728886),C=e.i(329686),_=e.i(131890),S=e.i(419412);let M=(0,S.default)("bed-double",[["path",{d:"M2 20v-8a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v8",key:"1k78r4"}],["path",{d:"M4 10V6a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v4",key:"fb3tl2"}],["path",{d:"M12 4v6",key:"1dcgq2"}],["path",{d:"M2 18h20",key:"ajqnye"}]]);var I=e.i(80137),T=e.i(896210);let E=(0,S.default)("message-square-quote",[["path",{d:"M14 14a2 2 0 0 0 2-2V8h-2",key:"1r06pg"}],["path",{d:"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z",key:"18887p"}],["path",{d:"M8 14a2 2 0 0 0 2-2V8H8",key:"1jzu5j"}]]);var A=e.i(966662),R=e.i(267007),z=e.i(692670),D=e.i(280115),$=e.i(275351),L=e.i(205189),P=e.i(74348);function F({skill:e,isSelected:s,onSelect:a}){return(0,t.jsxs)("button",{type:"button","data-slash-item":!0,className:(0,w.cn)("flex w-full flex-col gap-0.5 px-3 py-1.5 text-left text-sm transition-colors",s?"bg-accent text-accent-foreground":"hover:bg-accent/50"),onMouseDown:t=>{t.preventDefault(),a(e)},children:[(0,t.jsxs)("span",{className:"flex w-full items-center gap-2",children:[(0,t.jsxs)("span",{className:"min-w-0 flex-1 truncate font-medium",children:["/",e.name]}),e.isGlobal&&(0,t.jsx)("span",{className:"shrink-0 rounded px-1 py-0.5 text-[10px] font-medium bg-muted text-muted-foreground",children:"Global"})]}),e.description&&(0,t.jsx)("span",{className:"truncate text-xs text-muted-foreground",children:e.description.slice(0,80)})]})}function q({isOpen:e,skills:a,selectedIndex:r,onSelect:n,anchorPos:l}){let i=(0,s.useRef)(null);if((0,s.useEffect)(()=>{if(!i.current)return;let e=i.current.querySelectorAll("[data-slash-item]")[r];e?.scrollIntoView({block:"nearest"})},[r]),!e||0===a.length)return null;let o=Math.max(8,window.innerWidth-280-8),c=Math.min(l.left,o);return(0,D.createPortal)((0,t.jsx)("div",{className:"fixed z-100 w-70 rounded-lg border border-border bg-popover text-popover-foreground shadow-md transition-opacity duration-150",style:{top:l.top-4,left:c,transform:"translateY(-100%)"},children:(0,t.jsx)("div",{ref:i,className:"max-h-60 overflow-y-auto py-1 thin-scrollbar",children:a.map((e,s)=>(0,t.jsx)(F,{skill:e,isSelected:s===r,onSelect:n},e.name))})}),document.body)}var O=e.i(720115),B=e.i(941693),H=e.i(37476),U=e.i(251383);function W(e,t){if(!t)return e;let s=t.toLowerCase(),a=[],r=[];for(let t of e){let e=t.name.toLowerCase();e.startsWith(s)?a.push(t):e.includes(s)&&r.push(t)}return[...a,...r]}var V=e.i(8973);function K(e){return e.replaceAll("&lt;","<").replaceAll("&gt;",">").replaceAll("&amp;","&")}e.i(954194);var X=e.i(439769);let Y={items:[],selectedIndex:0,command:null,rect:null};function G({state:e}){let a=(0,s.useRef)(null),{items:r,selectedIndex:n,command:l,rect:i}=e;if((0,s.useEffect)(()=>{if(!a.current)return;let e=a.current.children[n];e?.scrollIntoView({block:"nearest"})},[n]),!i||0===r.length||!l)return null;let o=Math.max(8,window.innerWidth-256-8),c=Math.min(i.left,o);return(0,D.createPortal)((0,t.jsx)("div",{className:"fixed z-100 w-64 rounded-lg border border-border bg-popover text-popover-foreground shadow-md",style:{top:i.top-4,left:c,transform:"translateY(-100%)"},children:(0,t.jsx)("div",{ref:a,className:"max-h-50 overflow-y-auto py-1 thin-scrollbar",children:r.map((e,s)=>(0,t.jsxs)("button",{type:"button",className:(0,w.cn)("flex w-full items-center gap-2 px-3 py-1.5 text-left text-sm transition-colors",s===n?"bg-accent text-accent-foreground":"hover:bg-accent/50"),onMouseDown:t=>{t.preventDefault(),l({id:e.id,label:e.name})},children:[(0,t.jsx)("span",{className:"truncate font-medium",children:e.name}),e.email_handle&&(0,t.jsx)("span",{className:"truncate text-xs text-muted-foreground",children:(0,X.toAlookAddress)(e.email_handle)})]},e.id))})}),document.body)}function J({hint:e,animate:a}){let[r,n]=(0,s.useState)(e),[l,i]=(0,s.useState)(!0);return(0,s.useEffect)(()=>{if(!a){n(e),i(!0);return}if(e===r)return;i(!1);let t=setTimeout(()=>{n(e),i(!0)},200);return()=>clearTimeout(t)},[e,r,a]),(0,t.jsx)("div",{className:"chat-placeholder-overlay","aria-hidden":"true",children:(0,t.jsx)("span",{className:a?"chat-placeholder-fade":void 0,style:a?{opacity:+!!l}:void 0,children:r})})}let Q=(0,s.forwardRef)(function({value:e,onChange:a,onEditorState:r,onSend:n,onFocus:l,onBlur:i,overlay:o,disabled:c,onMultiLineChange:d,onFiles:u,agents:m,agentLinks:f,currentAgentId:h,slashIsOpen:p,onSlashKeyDown:g},x){let[v,b]=(0,s.useState)(!1),[k,j]=(0,s.useState)(Y),y=(0,s.useRef)(k);(0,s.useEffect)(()=>{y.current=k},[k]);let w=(0,s.useRef)(m),N=(0,s.useRef)(f),C=(0,s.useRef)(h),_=(0,s.useRef)(n),S=(0,s.useRef)(r),M=(0,s.useRef)(a),I=(0,s.useRef)(u),T=(0,s.useRef)(l),E=(0,s.useRef)(i),A=(0,s.useRef)(p),R=(0,s.useRef)(g);(0,s.useEffect)(()=>{w.current=m},[m]),(0,s.useEffect)(()=>{N.current=f},[f]),(0,s.useEffect)(()=>{C.current=h},[h]),(0,s.useEffect)(()=>{_.current=n},[n]),(0,s.useEffect)(()=>{S.current=r},[r]),(0,s.useEffect)(()=>{M.current=a},[a]),(0,s.useEffect)(()=>{I.current=u},[u]),(0,s.useEffect)(()=>{T.current=l},[l]),(0,s.useEffect)(()=>{E.current=i},[i]),(0,s.useEffect)(()=>{A.current=p},[p]),(0,s.useEffect)(()=>{R.current=g},[g]);let z=e=>{S.current(e.getText(),e.state.selection.from-1)},[D]=(0,s.useState)(()=>V.default.extend({markdownName:"mention",renderMarkdown:e=>`@${e.attrs.label??e.attrs.id}`}).configure({HTMLAttributes:{class:"mention-highlight"},renderText:({node:e})=>`@${e.attrs.label??e.attrs.id}`,suggestion:{char:"@",items:({query:e})=>(function(e,t,s,a,r=20){let n=function(e,t){let s=new Set;for(let a of e)a.source_agent_id===t&&s.add(a.target_agent_id),a.target_agent_id===t&&s.add(a.source_agent_id);return s}(t,s),l=[],i=[];for(let t of e)n.has(t.id)?l.push(t):i.push(t);return[...W(l,a),...W(i,a)].slice(0,r)})(w.current,N.current,C.current,e),render:()=>({onStart:e=>{j({items:e.items??[],selectedIndex:0,command:e.command,rect:e.clientRect?.()??null})},onUpdate:e=>{j(t=>({items:e.items??[],selectedIndex:t.selectedIndex<(e.items?.length??0)?t.selectedIndex:0,command:e.command,rect:e.clientRect?.()??null}))},onKeyDown:({event:e})=>{if(e.isComposing)return!1;let t=y.current;if(0===t.items.length)return!1;if("ArrowDown"===e.key)return e.preventDefault(),j(e=>({...e,selectedIndex:(e.selectedIndex+1)%e.items.length})),!0;if("ArrowUp"===e.key)return e.preventDefault(),j(e=>({...e,selectedIndex:(e.selectedIndex-1+e.items.length)%e.items.length})),!0;if("Enter"===e.key){e.preventDefault();let s=t.items[t.selectedIndex];return s&&t.command&&t.command({id:s.id,label:s.name}),j(Y),!0}return"Escape"===e.key&&(j(Y),!0)},onExit:()=>j(Y)})}})),$=(0,O.useEditor)({immediatelyRender:!1,content:e?e.replaceAll("\n","<br>"):void 0,editable:!c,extensions:[B.default.configure({heading:!1,blockquote:!1,codeBlock:!1,horizontalRule:!1,bold:!1,italic:!1,strike:!1,code:!1,link:!1,bulletList:!1,orderedList:!1,listItem:!1,listKeymap:!1}),H.default.configure({placeholder:""}),U.Markdown,D],editorProps:{attributes:{class:"outline-none",enterkeyhint:"send"},handleKeyDown:(e,t)=>(!(y.current.items.length>0)||null===y.current.command)&&(!!(A.current&&R.current({key:t.key,isComposing:t.isComposing,preventDefault:()=>t.preventDefault()}))||"Enter"===t.key&&!t.shiftKey&&!t.isComposing&&!A.current&&(t.preventDefault(),_.current(),!0)),handlePaste:(e,t)=>{let s=t.clipboardData?.items;if(!s)return!1;let a=[];for(let e=0;e<s.length;e++)if("file"===s[e].kind){let t=s[e].getAsFile();t&&a.push(t)}if(a.length>0)return t.preventDefault(),I.current?.(a),!0;let r=t.clipboardData?.getData("text/plain");return!!r&&(t.preventDefault(),e.dispatch(e.state.tr.insertText(r)),!0)},handleDrop:()=>!1},onFocus:()=>{b(!0),T.current?.()},onBlur:()=>{b(!1),E.current?.()},onUpdate:({editor:e})=>{M.current(K(e.getMarkdown())),z(e)},onSelectionUpdate:({editor:e})=>{z(e)}});(0,s.useEffect)(()=>{$?.setEditable(!c)},[$,c]),(0,s.useEffect)(()=>{if(!$)return;let t=(e||"").trim();t!==K($.getMarkdown()||"").trim()&&(t?$.commands.setContent((e||"").replaceAll("\n","<br>"),{emitUpdate:!1}):$.commands.clearContent(),S.current($.getText(),$.state.selection.from-1))},[e,$]);let L=(0,s.useRef)(null);return(0,s.useEffect)(()=>{if(!$||!d)return;let e=L.current?.querySelector(".ProseMirror");if(!e)return;let t=()=>d(e.scrollHeight>32);t();let s=new ResizeObserver(t);return s.observe(e),()=>s.disconnect()},[$,d]),(0,s.useEffect)(()=>{let e=function(e,t){let s=navigator.virtualKeyboard;if(!s)return null;s.overlaysContent=!0;let a=e()?.closest("[data-keyboard-offset]");if(!a)return null;let r=()=>{if(!t){a.style.transform="",a.removeAttribute("data-keyboard-active");return}let{height:e}=s.boundingRect;e>0?(a.style.transform=`translateY(-${e}px)`,a.setAttribute("data-keyboard-active","")):(a.style.transform="",a.removeAttribute("data-keyboard-active"))};return s.addEventListener("geometrychange",r),()=>{s.removeEventListener("geometrychange",r),a.style.transform="",a.removeAttribute("data-keyboard-active"),s.overlaysContent=!1}}(()=>L.current,v);return e||(function(e,t){let s,a=window.visualViewport;if(!a)return null;let{handler:r,cleanup:n}={handler:()=>{t&&(clearTimeout(s),s=setTimeout(()=>{let t=e();if(!t)return;let s=window.visualViewport;if(!s)return void t.scrollIntoView({block:"end",behavior:"smooth"});let a=window.innerHeight-s.height,r=t.closest("[data-keyboard-offset]");if(r&&a>0){let e=r.getBoundingClientRect().bottom-s.height-s.offsetTop;e>0?(r.style.transform=`translateY(-${e}px)`,r.setAttribute("data-keyboard-active","")):(r.style.transform="",r.removeAttribute("data-keyboard-active"))}else r?(r.style.transform="",r.removeAttribute("data-keyboard-active")):t.scrollIntoView({block:"end",behavior:"smooth"})},150))},cleanup:()=>{clearTimeout(s);let t=e();if(!t)return;let a=t.closest("[data-keyboard-offset]");a&&(a.style.transform="",a.removeAttribute("data-keyboard-active"))}};return a.addEventListener("resize",r),a.addEventListener("scroll",r),()=>{a.removeEventListener("resize",r),a.removeEventListener("scroll",r),n()}}(()=>L.current,v)??void 0)},[L,v]),(0,s.useImperativeHandle)(x,()=>({focus:()=>$?.commands.focus(),clear:()=>$?.commands.clearContent(),isEmpty:()=>$?.isEmpty??!0,coordsAtTextIndex:e=>{if(!$)return null;try{let t=$.view.coordsAtPos(e+1);return{top:t.top,left:t.left}}catch{return null}}}),[$]),(0,t.jsxs)("div",{ref:L,className:"chat-composer relative",children:[(0,t.jsx)(O.EditorContent,{editor:$,className:"max-h-44 overflow-y-auto thin-scrollbar pr-2 text-base chat-input-line-height"}),o,(0,t.jsx)(G,{state:k})]})}),Z=["Email the team this week's launch update","Recruit a QA agent to review my PRs","Remind me to follow up with Acme on Thursday","What did we ship last week?","Fix the failing test in the checkout flow"];var ee=e.i(721387),et=e.i(288329),es=e.i(332680),ea=e.i(492451),er=e.i(940931);function en({open:e,onOpenChange:a,emailId:r,workspaceId:l}){let[i,c]=(0,s.useState)(null),[d,u]=(0,s.useState)(null),[m,h]=(0,s.useState)(!1),{width:p,onPointerDown:g,onPointerMove:x,onPointerUp:v}=(0,et.useSheetResize)({defaultWidth:500,minWidth:320,maxWidthRatio:.8}),b=(0,s.useRef)(a);(0,s.useEffect)(()=>{b.current=a}),(0,s.useEffect)(()=>{e&&r&&(h(!0),c(null),u(null),Promise.all([(0,f.getEmail)(r,l),(0,f.getEmailBody)(r,l)]).then(([e,t])=>{c(e),u(t)}).catch(()=>{y.toast.error("Email not found"),b.current(!1)}).finally(()=>h(!1)))},[e,r,l]);let k=e=>{a(e),e||setTimeout(()=>{c(null),u(null)},300)};return(0,t.jsx)(es.Sheet,{open:e,onOpenChange:k,children:(0,t.jsxs)(es.SheetContent,{side:"right",showCloseButton:!1,style:{width:`min(${p}px, 100vw)`,maxWidth:"none"},className:"data-[side=right]:sm:inset-y-2 data-[side=right]:sm:right-2 data-[side=right]:sm:h-auto data-[side=right]:sm:rounded-xl data-[side=right]:sm:border",children:[(0,t.jsx)(et.SheetResizeHandle,{onPointerDown:g,onPointerMove:x,onPointerUp:v}),(0,t.jsx)(es.SheetHeader,{children:(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)(T.Mail,{className:"h-4 w-4 shrink-0 text-muted-foreground"}),(0,t.jsx)(es.SheetTitle,{className:"truncate flex-1",children:m?"Loading...":i?.subject||"Email"}),(0,t.jsx)(n.Button,{variant:"ghost",size:"icon",className:"h-7 w-7",onClick:()=>k(!1),children:(0,t.jsx)(z.X,{className:"h-4 w-4"})})]})}),(0,t.jsx)(es.SheetBody,{className:"flex-1 overflow-y-auto thin-scrollbar",children:m?(0,t.jsx)("div",{className:"flex items-center justify-center py-12",children:(0,t.jsx)(o.Loader2,{className:"h-6 w-6 animate-spin text-muted-foreground"})}):i?(0,t.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,t.jsxs)("div",{className:"text-sm space-y-1 border-b pb-3",children:[(0,t.jsxs)("div",{className:"flex gap-2",children:[(0,t.jsx)("span",{className:"text-muted-foreground shrink-0",children:"From:"}),(0,t.jsx)("span",{className:"truncate",children:i.from_email})]}),(0,t.jsxs)("div",{className:"flex gap-2",children:[(0,t.jsx)("span",{className:"text-muted-foreground shrink-0",children:"To:"}),(0,t.jsx)("span",{className:"truncate",children:i.to_email})]}),(0,t.jsxs)("div",{className:"flex gap-2",children:[(0,t.jsx)("span",{className:"text-muted-foreground shrink-0",children:"Date:"}),(0,t.jsx)("span",{children:new Date(i.created_at).toLocaleString()})]})]}),d?.isHtml?(0,t.jsx)(er.EmailBodyFrame,{html:d.content,className:"max-w-full"}):(0,t.jsx)("pre",{className:"whitespace-pre-wrap text-sm font-mono",children:d?.content}),i.attachments&&i.attachments.length>0&&(0,t.jsxs)("div",{className:"border-t pt-3",children:[(0,t.jsxs)("div",{className:"flex items-center gap-1.5 mb-2 text-xs text-muted-foreground",children:[(0,t.jsx)(A.Paperclip,{className:"size-3"}),i.attachments.length," attachment",i.attachments.length>1?"s":""]}),(0,t.jsx)("div",{className:"flex flex-wrap gap-1.5",children:i.attachments.map((e,s)=>(0,t.jsxs)("a",{href:`/api/email/${i.id}/attachment/${s}?workspace_id=${l}`,target:"_blank",rel:"noopener noreferrer",download:e.filename,className:"flex items-center gap-1.5 rounded-md border border-border/50 bg-muted/50 px-2.5 py-1.5 text-xs hover:bg-muted transition-colors cursor-pointer",children:[(0,t.jsx)(ea.File,{className:"size-3 text-muted-foreground shrink-0"}),(0,t.jsx)("span",{className:"truncate max-w-45",children:e.filename}),(0,t.jsx)("span",{className:"text-muted-foreground shrink-0",children:e.size<1024?`${e.size} B`:e.size<1048576?`${(e.size/1024).toFixed(1)} KB`:`${(e.size/1048576).toFixed(1)} MB`})]},e.key))})]})]}):null})]})})}var el=e.i(781360),ei=e.i(169678),eo=e.i(364079),ec=e.i(219658);e.i(68322);var ed=e.i(522281),eu=e.i(418277),em=e.i(742204);function ef(e,t){if(t>=e.length)return!0;let s=e.charCodeAt(t);return(!(s>=48)||!(s<=57))&&(!(s>=65)||!(s<=90))&&(!(s>=97)||!(s<=122))&&95!==s}function eh(e,t){if(!e||0===t.length||!e.includes("@"))return e;let s=t.slice().sort((e,t)=>t.name.length-e.name.length),a=[];for(let t=0;t<e.length;t++){if("@"!==e[t]||!function(e,t){if(0===t)return!0;let s=e.charCodeAt(t-1);return(!(s>=48)||!(s<=57))&&(!(s>=65)||!(s<=90))&&(!(s>=97)||!(s<=122))&&95!==s}(e,t))continue;let r=t+1;for(let n of s){let s=r+n.name.length;if(s>e.length||e.slice(r,s).toLowerCase()!==n.name.toLowerCase())continue;let l=s,i=e.slice(s).match(/^ \([a-zA-Z0-9-]+@alook\.ai\)/);if(i&&(l=s+i[0].length),(i||ef(e,s))&&(!i||ef(e,l))){if(a.some(e=>t>=e.start&&t<e.end))break;a.push({start:t,end:s,name:n.name,agentId:n.id});break}}}let r=e;for(let e=a.length-1;e>=0;e--){let t=a[e],s=r.slice(t.start,t.end);r=r.slice(0,t.start)+`<mention data-agent-id="${t.agentId}">${s}</mention>`+r.slice(t.end)}return r}e.i(400175);var ep=e.i(819748);let eg=(0,S.default)("flag",[["path",{d:"M4 22V4a1 1 0 0 1 .4-.8A6 6 0 0 1 8 2c3 0 5 2 7.333 2q2 0 3.067-.8A1 1 0 0 1 20 4v10a1 1 0 0 1-.4.8A6 6 0 0 1 16 16c-3 0-5-2-8-2a6 6 0 0 0-4 1.528",key:"1jaruq"}]]);e.s(["Flag",0,eg],594518);var ex=e.i(330746),ev=e.i(353155),eb=e.i(465368);let ek={"1day":"Daily","1week":"Weekly","1month":"Monthly"};function ej({title:e,scheduledAt:s,repeatInterval:a,onClick:r}){let n=s?new Date(s):null,l=n?n.toLocaleDateString("en-US",{weekday:"short"}):null,i=n?n.toLocaleDateString("en-US",{month:"short"}):null,o=n?n.getDate():null,c=n?n.toLocaleTimeString("en-US",{hour:"numeric",minute:"2-digit"}):null;return(0,t.jsxs)("button",{type:"button",onClick:r,disabled:!r,className:"card-grain w-104 max-w-full overflow-hidden rounded-(--radius) border border-(--border) text-left cursor-pointer transition-[transform,box-shadow] duration-300 ease-out hover:-translate-y-0.5 [box-shadow:var(--e1)] hover:[box-shadow:var(--e2)]",children:[(0,t.jsxs)("span",{className:"h-6 bg-(--tc) flex items-center px-3",children:[n?(0,t.jsxs)("span",{className:"text-[0.62rem] font-semibold uppercase tracking-[0.06em] text-white/85",children:[l," ",i," ",o]}):(0,t.jsx)("span",{className:"text-[0.62rem] font-semibold uppercase tracking-[0.06em] text-white/85",children:"Calendar"}),a&&(0,t.jsx)("span",{className:"ml-auto text-[0.52rem] font-semibold uppercase tracking-[0.04em] px-1 py-px rounded-full bg-white/20 text-white/90",children:function(e){if(ek[e])return ek[e];let t=/^(\d+)(hour|day|week|month)s?$/.exec(e);return t?`Every ${t[1]} ${t[2]}${Number(t[1])>1?"s":""}`:e}(a)})]}),(0,t.jsxs)("span",{className:"bg-(--paper) p-3 flex gap-3 items-start",children:[null!=o&&(0,t.jsx)("span",{className:"text-[1.8rem] font-bold leading-none tracking-[-0.02em] opacity-80 min-w-8 text-center shrink-0",children:o}),(0,t.jsxs)("span",{className:"min-w-0 flex-1 flex flex-col",children:[(0,t.jsx)("span",{className:"text-[0.92rem] font-semibold tracking-[-0.01em] leading-[1.3]",children:e}),c&&(0,t.jsx)("span",{className:"text-[0.72rem] text-(--muted-foreground) mt-1 font-mono",children:c})]})]})]})}let ey={created:"Issue created",status_changed:"Issue updated",dispatch_failed:"Dispatch failed"};function ew({title:e,event:s,fromStatus:a,toStatus:r,assigneeName:n,onClick:l}){let i="created"===s?"New":"status_changed"===s?r??"Done":null,o="created"===s&&n?`assigned to ${n}`:"status_changed"===s&&a&&r?`${a} → ${r}`:null;return(0,t.jsxs)("button",{type:"button",onClick:l,disabled:!l,className:"card-grain w-104 max-w-full overflow-hidden rounded-(--radius) border border-(--border) bg-(--paper) text-left flex cursor-pointer transition-[transform,box-shadow] duration-300 ease-out hover:-translate-y-0.5 [box-shadow:var(--e1)] hover:[box-shadow:var(--e2)]",children:[(0,t.jsx)("span",{className:"w-1 bg-(--ti) shrink-0 self-stretch"}),(0,t.jsxs)("span",{className:"flex-1 p-3 min-w-0 flex flex-col gap-1 relative",children:[(0,t.jsx)("span",{className:"text-[0.62rem] font-semibold uppercase tracking-wider text-(--ti) leading-none",children:ey[s]??s}),(0,t.jsx)("span",{className:"text-[0.92rem] font-semibold tracking-[-0.01em] leading-[1.3] line-clamp-2 pr-8",children:e}),o&&(0,t.jsx)("span",{className:"text-[0.75rem] text-(--muted-foreground) leading-[1.2]",children:o}),i&&(0,t.jsx)("span",{className:"absolute top-3 right-3 text-[0.5rem] font-bold uppercase tracking-wider text-(--ti) border-[1.5px] border-(--ti) opacity-45 rotate-[4deg] rounded-[3px] px-1 py-0.5",children:i})]})]})}var eN=e.i(754902),eC=e.i(855351);let e_={mention:["data-agent-id"]},eS=["mention"];function eM(e){return"solo"===e?"single":e}function eI({attachmentIds:e,artifacts:s,onArtifactClick:a}){let r=e.map(e=>s.find(t=>t.id===e)).filter(e=>!!e);return 0===r.length?null:(0,t.jsx)("div",{className:"flex flex-wrap gap-1.5 mt-1.5",children:r.map(e=>(0,t.jsxs)("button",{type:"button",onClick:t=>{t.stopPropagation(),a(e)},className:"inline-flex items-center gap-1 rounded-md bg-primary-foreground/10 border border-primary-foreground/20 px-2 py-0.5 text-xs text-primary-foreground/80 hover:bg-primary-foreground/20 transition-colors cursor-pointer",children:[(0,t.jsx)(I.FileText,{className:"size-3 shrink-0"}),(0,t.jsx)("span",{className:"truncate max-w-37.5",children:e.filename})]},e.id))})}function eT({pendingFiles:e,messageId:s}){let a=e.get(s);return a&&0!==a.length?(0,t.jsx)("div",{className:"flex flex-wrap gap-1.5 mt-1.5",children:a.map((e,s)=>(0,t.jsxs)("span",{className:"inline-flex items-center gap-1 rounded-md bg-primary-foreground/10 border border-primary-foreground/20 px-2 py-0.5 text-xs text-primary-foreground/80",children:[(0,t.jsx)(I.FileText,{className:"size-3 shrink-0"}),(0,t.jsx)("span",{className:"truncate max-w-37.5",children:e.name})]},s))}):null}function eE({groupPosition:e,agentName:s,config:a,forceSpacer:r=!1,children:n}){return(0,t.jsx)(eC.MessageCluster,{avatar:a?(0,t.jsx)(ep.AnimatedAvatar,{config:a,size:eC.AVATAR_SIZE,className:"rounded-md",isHovered:!1}):null,name:s,position:r?"middle":e,children:n})}function eA({actions:e}){return 0===e.length?null:(0,t.jsx)("div",{className:(0,w.cn)("absolute -top-3 right-0 z-10 flex items-center gap-0.5 rounded-lg border bg-card p-0.5 shadow-sm","opacity-0 transition-opacity duration-150 group-hover/msg:opacity-100 focus-within:opacity-100"),children:e.map(e=>(0,t.jsxs)(C.Tooltip,{children:[(0,t.jsx)(C.TooltipTrigger,{render:(0,t.jsx)(n.Button,{variant:"ghost",size:"icon-xs","aria-label":e.label,onClick:t=>{t.stopPropagation(),e.onClick()},className:(0,w.cn)(e.active?"text-foreground":"text-muted-foreground")}),children:e.icon}),(0,t.jsx)(C.TooltipContent,{children:e.label})]},e.key))})}function eR({open:e,onOpenChange:s,actions:a}){return(0,t.jsx)(es.Sheet,{open:e,onOpenChange:s,children:(0,t.jsx)(es.SheetContent,{side:"bottom",showCloseButton:!1,className:"rounded-t-2xl p-2",children:(0,t.jsx)("div",{className:"flex flex-col",children:a.map(e=>(0,t.jsxs)("button",{type:"button",onClick:()=>{e.onClick(),s(!1)},className:(0,w.cn)("flex items-center gap-3 rounded-lg px-3 py-3 text-left text-[0.95rem] active:bg-muted",(e.active,"text-foreground")),children:[(0,t.jsx)("span",{className:"text-muted-foreground",children:e.icon}),e.label]},e.key))})})})}function ez(){return(0,t.jsx)("span",{"aria-hidden":!0,className:"absolute -left-1.5 -top-1.5 z-10 flex size-3.5 items-center justify-center rounded-full border-2 border-background bg-foreground text-background",children:(0,t.jsx)(eg,{className:"size-2 fill-current"})})}let eD=(0,s.memo)(function({msg:e,agents:a,artifacts:r,activeTask:n,activeTaskStreamMsgId:l,taskMessages:i,connectionLost:o,conversationType:c,pendingFilesByMessage:d,onArtifactClick:f,onEmailClick:h,onIssueClick:p,onCalendarEventClick:g,onRetry:x,mentionComponents:v,isFlagged:b,onToggleFlag:k,groupPosition:j="solo",provider:N,agentName:C,agentAvatarConfig:_,isSendFailed:S,onRetrySend:M,onQuote:I}){var T;let A,R,z,D,$,L,P,F,q,O,B,{copy:H,copied:U}=function(e=2e3){let[t,a]=(0,s.useState)(!1),r=(0,s.useRef)(void 0),n=(0,s.useCallback)(async t=>{try{return await navigator.clipboard.writeText(t),a(!0),clearTimeout(r.current),r.current=setTimeout(()=>a(!1),e),!0}catch{return!1}},[e]);return(0,s.useEffect)(()=>()=>clearTimeout(r.current),[]),{copy:n,copied:t}}(),W=!!n&&"assistant"===e.role&&e.task_id===n.id&&e.conversation_id===n.conversation_id&&(null==l||e.id===l)&&i.length>0&&!["completed","cancelled","superseded"].includes(n.status),V=W&&(i.some(e=>"error"===e.type)||"failed"===n.status&&!!n.error||o),K=W&&n?.status==="failed",X="assistant"===e.role&&(e.metadata?.kind==="lifecycle"||"Task cancelled by you"===e.content||"Task cancelled by user"===e.content),Y=function(){let[e,t]=s.useState(!0);return s.useEffect(()=>{if(!window.matchMedia)return;let e=window.matchMedia("(hover: hover) and (pointer: fine)"),s=()=>t(e.matches);return s(),e.addEventListener("change",s),()=>e.removeEventListener("change",s)},[]),e}(),[G,J]=s.default.useState(!1),Q=s.default.useCallback(async()=>{await H(e.content)?y.toast.success("Copied to clipboard"):y.toast.error("Failed to copy")},[H,e.content]),Z="assistant"===e.role||"user"===e.role,ee=[];Z&&ee.push({key:"copy",label:U?"Copied":"Copy",icon:U?(0,t.jsx)(ev.Check,{className:"size-3.5"}):(0,t.jsx)(ex.Copy,{className:"size-3.5"}),onClick:Q}),I&&("assistant"===e.role||"user"===e.role)&&ee.push({key:"quote",label:"Quote",icon:(0,t.jsx)(E,{className:"size-3.5"}),onClick:()=>I(e.id,e.content.slice(0,100))}),"assistant"===e.role&&k&&ee.push({key:"flag",label:b?"Unflag":"Flag",icon:(0,t.jsx)(eg,{className:(0,w.cn)("size-3.5",b&&"fill-current")}),onClick:()=>k(e.id),active:b});let et=function(e,{delay:t=450,moveThreshold:a=10}={}){let r=s.useRef(null),n=s.useRef(null),l=s.useRef(!1),i=s.useRef(e);s.useEffect(()=>{i.current=e});let o=s.useCallback(()=>{r.current&&(clearTimeout(r.current),r.current=null),n.current=null},[]),c=s.useCallback(e=>{"mouse"!==e.pointerType&&(o(),l.current=!1,n.current={x:e.clientX,y:e.clientY},r.current=setTimeout(()=>{l.current=!0,n.current=null,r.current=null,i.current()},t))},[o,t]),d=s.useCallback(e=>{let t=n.current;if(!t)return;let s=Math.abs(e.clientX-t.x),r=Math.abs(e.clientY-t.y);(s>a||r>a)&&o()},[o,a]),u=s.useCallback(e=>{l.current&&(e.preventDefault(),e.stopPropagation(),l.current=!1)},[]);return s.useEffect(()=>o,[o]),{onPointerDown:c,onPointerMove:d,onPointerUp:o,onPointerCancel:o,onPointerLeave:o,onClick:u}}(()=>{ee.length>0&&J(!0)}),es=!Y&&ee.length>0?et:{},ea=!Y&&ee.length>0?(0,t.jsx)(eR,{open:G,onOpenChange:J,actions:ee}):null,er=Y&&ee.length>0?(0,t.jsx)(eA,{actions:ee}):null;return(0,t.jsxs)(s.default.Fragment,{children:[W&&V&&(0,t.jsx)("div",{className:(0,w.cn)("group/msg",b&&"bg-muted/30 rounded-lg px-2 -mx-2"),...K?{"data-quote-source":!0}:{},children:(0,t.jsx)(eE,{groupPosition:j,agentName:C,config:_,children:(0,t.jsxs)("div",{className:"relative min-w-0 w-fit max-w-full",...K?es:{},children:[(0,t.jsx)(m,{task:n,messages:i,connectionLost:o,onRetry:x,provider:N}),K&&er,K&&ea]})})}),"user"===e.role?(A=e.content.match(/^\/(\S+)\s?([\s\S]*)$/),R=A?.[1]??null,z=A?A[2]||"":e.content,(0,t.jsxs)("div",{className:"group/msg flex flex-col items-end","data-message-id":e.id,...e.task_id?{"data-task-id":e.task_id}:{},children:[(D=e.metadata?.quote,($=D?.messageId)?(0,t.jsxs)("button",{type:"button",onClick:()=>{let e=document.querySelector(`[data-message-id="${CSS.escape($)}"]`);e?.scrollIntoView({behavior:"smooth",block:"center"})},className:"max-w-[80%] mb-0.5 flex items-center gap-1.5 rounded-lg bg-muted/60 px-2.5 py-1 text-left",children:[(0,t.jsx)(E,{className:"size-3 shrink-0 text-muted-foreground"}),(0,t.jsx)("span",{className:"text-xs text-muted-foreground truncate",children:D.excerpt})]}):null),(0,t.jsxs)(eN.MessageBubble,{variant:"user",position:eM(j),className:(0,w.cn)("max-w-[80%] relative",S&&"opacity-60"),...es,children:[R&&(0,t.jsxs)("span",{className:"inline-flex items-center rounded px-1.5 py-0.5 text-xs font-medium bg-primary-foreground/15 text-primary-foreground mb-1",children:["/",R]}),z&&(0,t.jsx)("div",{className:"markdown markdown-user",children:(0,t.jsx)(ed.Streamdown,{plugins:{mermaid:eu.mermaid,cjk:em.cjk,math:eu.math},controls:{code:{copy:!0,download:!1},table:{copy:!1,download:!1,fullscreen:!1}},linkSafety:{enabled:!1},allowedTags:e_,literalTagContent:eS,components:v,children:eh(z,a)})}),e.attachment_ids&&e.attachment_ids.length>0&&e.attachment_ids.some(e=>r.some(t=>t.id===e))?(0,t.jsx)(eI,{attachmentIds:e.attachment_ids,artifacts:r,onArtifactClick:f}):(0,t.jsx)(eT,{pendingFiles:d,messageId:e.id}),er]}),ea,S&&(0,t.jsx)("button",{type:"button",onClick:()=>M?.(e.id),className:"mt-1 px-1 text-xs text-destructive hover:underline",children:"Not delivered · tap to retry"})]})):"event"===e.role?(P=e.metadata?.emailId,F=e.metadata?.issueId,q=e.metadata?.calendarEventId,O=P?()=>h(P):F?()=>p(F):q?()=>g(q):void 0,L="email"===(B=function(e,t,s){let a=function(e,t,s){if(e?.issueId)return"issue";if(e?.emailId)return"email";if(e?.calendarEventId)return"calendar";if("issue_event"===s)return"issue";if("email_notification"===s)return"email";if("calendar_event"===s)return"calendar";let a=t.toLowerCase();return a.startsWith("issue ")||a.startsWith("issue:")?"issue":a.includes("email")?"email":"calendar"}(e,t,s);if("email"===a){if(e?.subject)return{type:"email",subject:e.subject,address:"inbound"===e.direction?e.from:e.to,direction:e.direction};let s=/^Email sent to (.+?): ([\s\S]+)$/.exec(t);if(s)return{type:"email",subject:s[2],address:s[1],direction:"outbound"};let a=/^New email from (.+?): ([\s\S]+)$/.exec(t);if(a)return{type:"email",subject:a[2],address:a[1],direction:"inbound"};let r=t.indexOf(": ");return{type:"email",subject:r>-1?t.slice(r+2):t,address:"",direction:"inbound"}}if("issue"===a){if(e?.event)return{type:"issue",title:e.title??t.replace(/^Issue (?:created|opened|status changed):?\s*/i,""),event:e.event,fromStatus:e.fromStatus,toStatus:e.toStatus,agentId:e.agentId};let s=/^Issue status changed: ([\s\S]+?) -> ([\s\S]+)$/.exec(t);if(s)return{type:"issue",title:`${s[1]} → ${s[2]}`,event:"status_changed",fromStatus:s[1],toStatus:s[2]};let a=/^Issue (?:created|opened): ([\s\S]+)$/.exec(t);return a?{type:"issue",title:a[1],event:"created"}:/dispatch failed/i.test(t)?{type:"issue",title:t.replace(/^Issue dispatch failed:?\s*/i,""),event:"dispatch_failed"}:{type:"issue",title:t.replace(/^Issue:?\s*/i,""),event:"created"}}return e?.title?{type:"calendar",title:e.title,scheduledAt:e.scheduledAt,repeatInterval:e.repeatInterval}:{type:"calendar",title:t.replace(/^Calendar event:\s*/i,"")}}(e.metadata,e.content,c)).type?(0,t.jsx)(eb.EmailCard,{subject:B.subject,address:B.address,direction:B.direction,onClick:O}):"calendar"===B.type?(0,t.jsx)(ej,{title:B.title,scheduledAt:B.scheduledAt,repeatInterval:B.repeatInterval,onClick:O}):(0,t.jsx)(ew,{title:B.title,event:B.event,fromStatus:B.fromStatus,toStatus:B.toStatus,assigneeName:B.agentId?a.find(e=>e.id===B.agentId)?.name:void 0,onClick:O}),(0,t.jsx)("div",{"data-message-id":e.id,...e.task_id?{"data-task-id":e.task_id}:{},children:(0,t.jsx)(eE,{groupPosition:j,agentName:C,config:_,children:L})})):X&&e.metadata?.error_source!=="runtime"?(0,t.jsx)("div",{className:"flex justify-center","data-message-id":e.id,...e.task_id?{"data-task-id":e.task_id}:{},children:(0,t.jsx)("span",{className:"text-xs text-muted-foreground/70 text-center px-2 py-1",children:e.content})}):(T={hasTaskStream:W,isRuntimeError:e.metadata?.error_source==="runtime"}).hasTaskStream&&T.isRuntimeError?null:(0,t.jsx)("div",{className:(0,w.cn)("group/msg overflow-x-clip",b&&e.metadata?.error_source==="runtime"&&"bg-muted/30 rounded-lg px-2 -mx-2"),"data-message-id":e.id,"data-quote-source":!0,...e.task_id?{"data-task-id":e.task_id}:{},children:(0,t.jsx)(eE,{groupPosition:j,agentName:C,config:_,children:e.metadata?.error_source==="runtime"?(0,t.jsxs)("div",{className:"relative min-w-0 w-fit max-w-full",...es,children:[(0,t.jsx)(u,{provider:e.metadata.provider??N,message:e.content}),er,ea]}):(0,t.jsxs)("div",{className:"relative min-w-0 w-fit max-w-full",...es,children:[(0,t.jsx)(eN.MessageBubble,{variant:"agent",position:eM(j),className:(0,w.cn)("markdown min-w-0 max-w-full",b&&"shadow-[inset_2px_0_0_var(--foreground)]"),children:(0,t.jsx)(ed.Streamdown,{plugins:{mermaid:eu.mermaid,cjk:em.cjk,math:eu.math},controls:{code:{copy:!0,download:!1},table:{copy:!0,download:!1,fullscreen:!0}},linkSafety:{enabled:!1},allowedTags:e_,literalTagContent:eS,components:v,children:eh(e.content,a)})}),b&&(0,t.jsx)(ez,{}),er,ea]})})})]})});var e$=e.i(157349);let eL=(0,S.default)("menu",[["path",{d:"M4 5h16",key:"1tepv9"}],["path",{d:"M4 12h16",key:"1lakjw"}],["path",{d:"M4 19h16",key:"1djgab"}]]);function eP({open:e}){return(0,t.jsxs)("span",{className:"relative size-4",children:[(0,t.jsx)(eL,{className:(0,w.cn)("size-4 absolute transition-all duration-200",e?"opacity-0 rotate-90 scale-75":"opacity-100 rotate-0 scale-100")}),(0,t.jsx)(z.X,{className:(0,w.cn)("size-4 absolute transition-all duration-200",e?"opacity-100 rotate-0 scale-100":"opacity-0 -rotate-90 scale-75")})]})}var eF=e.i(126366),eq=e.i(309475);function eO({agent:e,isOnline:a,activeTaskCount:r,variant:n="default",isHovered:l}){let[i,o]=(0,s.useState)(!1),c=e.email_handle?(0,X.toAlookAddress)(e.email_handle):null,d=(0,s.useCallback)(async()=>{if(c)try{await navigator.clipboard.writeText(c),o(!0),y.toast.success("Email copied to clipboard"),setTimeout(()=>o(!1),2e3)}catch{y.toast.error("Failed to copy email")}},[c]);if("compact"===n){let s;return(0,t.jsxs)("div",{className:"flex items-center gap-2 p-0",children:[(s=(0,eF.parseAvatarUrl)(e.avatar_url))?(0,t.jsx)(ep.AnimatedAvatar,{config:s,size:32,className:"shrink-0 rounded-xl",isHovered:l??!1,isWorking:!!a&&(r??0)>0}):(0,t.jsx)("div",{className:"flex items-center justify-center size-8 rounded-xl bg-secondary text-secondary-foreground text-xs font-medium shrink-0",children:e.name.charAt(0).toUpperCase()}),(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,t.jsx)("p",{className:"text-sm font-medium truncate max-w-35",children:e.name}),c&&(0,t.jsx)("span",{className:"text-xs text-muted-foreground truncate",children:c})]}),void 0!==a&&(0,t.jsx)("div",{className:"pointer-events-none mt-0.5",children:(0,t.jsx)(eq.AgentStatusBadge,{isOnline:a,taskCount:r??0,agentId:e.id})})]})]})}return(0,t.jsxs)("div",{className:"flex flex-col gap-1.5 p-1",children:[(0,t.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,t.jsx)("p",{className:"text-sm font-medium truncate",children:e.name}),(0,t.jsx)("span",{className:"flex-1"}),void 0!==a&&(0,t.jsxs)("span",{className:"inline-flex items-center gap-1 text-[11px] text-muted-foreground",children:[(0,t.jsx)("span",{className:(0,w.cn)("size-1.5 rounded-full",a?"bg-status-online":"bg-status-offline")}),a?(r??0)>0?"Working":null:"Offline"]})]}),c&&(0,t.jsxs)("div",{className:"flex items-center gap-1",children:[(0,t.jsx)("span",{className:"text-xs text-muted-foreground truncate",children:c}),(0,t.jsx)("button",{type:"button",onClick:e=>{e.stopPropagation(),d()},className:"shrink-0 p-0.5 rounded-sm text-muted-foreground/60 hover:text-foreground transition-colors cursor-pointer",children:i?(0,t.jsx)(ev.Check,{className:"size-3 text-green-500"}):(0,t.jsx)(ex.Copy,{className:"size-3"})})]}),e.description&&(0,t.jsx)("p",{className:"text-xs text-muted-foreground line-clamp-2",children:e.description})]})}e.s(["AgentPreviewCard",0,eO],844010);var eB=e.i(224950);function eH({filename:e,size:s,contentType:a,version:r,hasDuplicates:n,onClick:l}){let i=function(e,t){let s=e.lastIndexOf(".");if(s>-1)return e.slice(s+1).toUpperCase();if(t){let e=t.split("/")[1];if(e)return e.split(";")[0].toUpperCase()}return"FILE"}(e,a);return(0,t.jsxs)("button",{type:"button",onClick:l,disabled:!l,className:"card-grain w-104 max-w-full overflow-hidden rounded-(--radius) border border-(--border) bg-(--paper) text-left grid grid-cols-[44px_1fr] cursor-pointer transition-[transform,box-shadow] duration-300 ease-out hover:-translate-y-0.5 [box-shadow:var(--e1)] hover:[box-shadow:var(--e2)]",children:[(0,t.jsxs)("span",{className:"flex flex-col items-center justify-center border-r border-(--border) bg-[oklch(from_var(--tf)_l_c_h/0.08)] gap-0.5 p-2",children:[(0,t.jsxs)("span",{className:"flex flex-col gap-0.5 w-4.5",children:[(0,t.jsx)("i",{className:"h-[1.5px] rounded-sm bg-(--tf) opacity-[0.28] w-full"}),(0,t.jsx)("i",{className:"h-[1.5px] rounded-sm bg-(--tf) opacity-[0.28] w-[78%]"}),(0,t.jsx)("i",{className:"h-[1.5px] rounded-sm bg-(--tf) opacity-[0.28] w-[55%]"})]}),(0,t.jsx)("span",{className:"font-mono text-[0.44rem] font-semibold uppercase text-(--tf) mt-px tracking-[0.02em]",children:i})]}),(0,t.jsxs)("span",{className:"p-3 min-w-0 flex flex-col justify-center gap-0.5",children:[(0,t.jsxs)("span",{className:"flex items-center gap-1.5 min-w-0",children:[(0,t.jsx)("span",{className:"text-[0.9rem] font-semibold tracking-[-0.01em] truncate",children:e}),n&&null!=r&&(0,t.jsxs)("span",{className:"shrink-0 text-xs text-(--muted-foreground) bg-(--muted) rounded-full px-1.5 py-0.5 font-normal",children:["v",r]})]}),(0,t.jsx)("span",{className:"text-[0.7rem] text-(--muted-foreground) font-mono",children:(0,ee.formatSize)(s)})]})]})}let eU={mention:function(e){let{children:s,...a}=e,{agents:r}=(0,b.useAgentContext)(),n=a["data-agent-id"]??a.dataAgentId,l=n?r.find(e=>e.id===n):void 0;if(!l&&"string"==typeof s){let e=s.startsWith("@")?s.slice(1):s;l=r.find(t=>t.name.toLowerCase()===e.toLowerCase())}return l?(0,t.jsxs)(eB.Popover,{children:[(0,t.jsx)(eB.PopoverTrigger,{openOnHover:!0,delay:300,nativeButton:!1,render:(0,t.jsx)("span",{className:"mention-highlight cursor-pointer"}),children:s}),(0,t.jsx)(eB.PopoverContent,{side:"top",className:"w-fit max-w-80",children:(0,t.jsx)(eO,{agent:l})})]}):(0,t.jsx)("span",{className:"mention-highlight",children:s})},p:({children:e,node:s,...a})=>(0,t.jsx)("div",{"data-md-p":"",...a,children:e})};function eW({agentName:e}){return(0,t.jsxs)("div",{className:"flex items-center gap-3 py-4 select-none","aria-hidden":!0,children:[(0,t.jsx)("div",{className:"flex-1 border-t border-border/40"}),(0,t.jsxs)("span",{className:"text-xs text-muted-foreground/60 whitespace-nowrap",children:[e," took a nap 💤"]}),(0,t.jsx)("div",{className:"flex-1 border-t border-border/40"})]})}function eV({artifact:e,version:s,hasDuplicates:a,onClick:r}){return(0,t.jsx)(eH,{filename:e.filename,size:e.size,contentType:e.content_type??void 0,version:s,hasDuplicates:a,onClick:()=>r(e)})}e.s(["AgentChatView",0,function({agentId:e,targetConvId:l,scrollToTaskId:i,scrollToMessageId:c}){let d,u,S,F=(0,a.useParams)(),O=(0,a.useSearchParams)(),{workspaceId:B,slug:H}=(0,r.useWorkspace)(),{agents:U,runtimes:W,agentLinks:V,activeTaskCounts:K,subscribeWs:X,subscribeReconnect:Y}=(0,b.useAgentContext)(),{refresh:G}=(0,k.useInboxCount)(),{activeChannel:et,loading:es,setAgentId:ea}=(0,j.useChannel)(),er=e??F.id,ed=U.find(e=>e.id===er),eu=ed?.runtime_id?W.find(e=>e.id===ed.runtime_id):null,em=eu?.provider??null,ef=void 0!==i?i:O.get("task"),eh=void 0!==c?c:O.get("msg"),ep=void 0!==l?l:O.get("conv"),[eg,ex]=(0,s.useState)(()=>localStorage.getItem(`chat-draft:${er}:${ep??"default"}`)??""),[ev,eb]=(0,s.useState)(!1),{artifactSheetOpen:ek,setArtifactSheetOpen:ej,selectedArtifact:ey,setSelectedArtifact:ew,emailSheetOpen:eN,setEmailSheetOpen:eC,selectedEmailId:e_,setSelectedEmailId:eS,calendarEventSheetOpen:eM,setCalendarEventSheetOpen:eI,selectedCalendarEventId:eT,setSelectedCalendarEventId:eA,issueSheetOpen:eR,setIssueSheetOpen:ez,selectedIssueId:eL,setSelectedIssueId:eq,issueDetail:eO,setIssueDetail:eH,issueDetailLoading:eK,issueTraceTasks:eX,issueActiveTask:eY,setIssueActiveTask:eG,openIssue:eJ,issueConvId:eQ,issueTaskId:eZ}=function(e){let[t,a]=(0,s.useState)(!1),[r,n]=(0,s.useState)(null),[l,i]=(0,s.useState)(!1),[o,c]=(0,s.useState)(null),[d,u]=(0,s.useState)(!1),[m,h]=(0,s.useState)(null),[p,g]=(0,s.useState)(!1),[x,v]=(0,s.useState)(null),[b,k]=(0,s.useState)(null),[j,w]=(0,s.useState)(!1),[N,C]=(0,s.useState)(null),[_,S]=(0,s.useState)(null),M=(0,s.useCallback)(async t=>{v(t),g(!0),w(!0),C(null),S(null);try{let s=await (0,f.getIssue)(e,t);k(s),s.issue.latest_task_id&&(0,f.getTask)(s.issue.latest_task_id,e).then(e=>S(e)).catch(()=>S(null)),s.issue.trace_id&&(0,f.getTrace)(s.issue.trace_id,e).then(e=>C(e.tasks)).catch(()=>C(null))}catch(e){y.toast.error(e instanceof Error?e.message:"Failed to load issue"),g(!1)}finally{w(!1)}},[e]),I=b?.issue?.conversation_id??null,T=b?.issue?.latest_task_id??null;return{artifactSheetOpen:t,setArtifactSheetOpen:a,selectedArtifact:r,setSelectedArtifact:n,emailSheetOpen:l,setEmailSheetOpen:i,selectedEmailId:o,setSelectedEmailId:c,calendarEventSheetOpen:d,setCalendarEventSheetOpen:u,selectedCalendarEventId:m,setSelectedCalendarEventId:h,issueSheetOpen:p,setIssueSheetOpen:g,selectedIssueId:x,setSelectedIssueId:v,issueDetail:b,setIssueDetail:k,issueDetailLoading:j,issueTraceTasks:N,issueActiveTask:_,setIssueActiveTask:S,openIssue:M,issueConvId:I,issueTaskId:T}}(B),{pendingFiles:e0,setPendingFiles:e1,fileInputRef:e2,addPendingFiles:e5,handleFileSelect:e3,removePendingFile:e4,dragging:e8,handleDragEnter:e6,handleDragLeave:e7,handleDragOver:e9,handleDrop:te}=function(){let[e,t]=(0,s.useState)([]),a=(0,s.useRef)(null),r=(0,s.useCallback)(e=>{let s=[];for(let t of e)t.size>0xa00000?y.toast.error(`"${t.name}" exceeds 10 MB limit`):s.push(t);s.length>0&&t(e=>[...e,...s])},[]),n=(0,s.useCallback)(e=>{let t=e.target.files;t&&(r(Array.from(t)),e.target.value="")},[r]),l=(0,s.useCallback)(e=>{t(t=>t.filter((t,s)=>s!==e))},[]),[i,o]=(0,s.useState)(!1),c=(0,s.useRef)(0),d=(0,s.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),c.current++,e.dataTransfer.types.includes("Files")&&o(!0)},[]),u=(0,s.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),c.current--,0===c.current&&o(!1)},[]),m=(0,s.useCallback)(e=>{e.preventDefault(),e.stopPropagation()},[]),f=(0,s.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),o(!1),c.current=0,r(Array.from(e.dataTransfer.files))},[r]);return{pendingFiles:e,setPendingFiles:t,fileInputRef:a,addPendingFiles:r,handleFileSelect:n,removePendingFile:l,dragging:i,handleDragEnter:d,handleDragLeave:u,handleDragOver:m,handleDrop:f}}(),[tt,ts]=(0,s.useState)(null),[ta]=(0,s.useState)(()=>Date.now()),[tr,tn]=(0,s.useState)(()=>{try{let e=JSON.parse(localStorage.getItem(`chat-draft-meta:${er}:${ep??"default"}`)??"null"),t=e?.quote;return t&&"object"==typeof t&&t.id?t:null}catch{return null}}),[tl,ti]=(0,s.useState)(!1),{flaggedIds:to,setFlaggedIds:tc,handleToggleFlag:td}=function(e){let[t,a]=(0,s.useState)(new Set),r=(0,s.useRef)(t);(0,s.useEffect)(()=>{r.current=t});let{increment:n,decrement:l,refresh:i}=(0,P.useFlagCount)(),o=(0,s.useCallback)(async t=>{let s=r.current.has(t);a(e=>{let a=new Set(e);return s?a.delete(t):a.add(t),a}),s?(l(),(0,f.unflagMessage)(e,t).then(()=>{i()}).catch(()=>{a(e=>new Set(e).add(t)),n()})):(n(),(0,f.flagMessage)(e,t).then(()=>{i()}).catch(()=>{a(e=>{let s=new Set(e);return s.delete(t),s}),l()}))},[e,n,l,i]);return{flaggedIds:t,setFlaggedIds:a,handleToggleFlag:o}}(B);(0,s.useEffect)(()=>{ea(er)},[er,ea]);let tu=(0,s.useRef)(!1),tm=v(eg),tf=v(tr),th=v(e0),tp=(0,s.useRef)(null),tg=(0,s.useRef)(null),{conversation:tx,messages:tv,sending:tb,activeTask:tk,taskMessages:tj,messagesLoading:ty,connectionLost:tw,loadingMore:tN,artifacts:tC,napping:t_,pendingFilesByMessage:tS,failedSends:tM,agentArtifacts:tI,agentName:tT,timeline:tE,groupPositions:tA,activeTaskStreamMsgId:tR,canLoadMore:tz,currentConvHasMessages:tD,scrollRef:t$,composerRef:tL,loadOlderMessages:tP,handleScroll:tF,handleSend:tq,handleRetrySend:tO,handleRetryTask:tB,handleNap:tH}=function(e,t){let{agentId:a,targetConvId:r,scrollToTaskId:n,scrollToMessageId:l,propTargetConvId:i,workspaceId:o,agents:c,activeChannel:d,channelLoading:u,subscribeWs:m,subscribeReconnect:b,refreshInboxCount:k}=e,{setFlaggedIds:j,setPendingFiles:w,setInput:N,setQuotedMessage:C,setActiveSkill:_,clearActiveSkill:S,inputRef:M,quotedMessageRef:I,pendingFilesRef:T,activeSkillRef:E,draftMetaRestoredRef:A}=t,[R,z]=(0,s.useState)(null),[P,F]=(0,s.useState)([]),[q,O]=(0,s.useState)(!1),[B,H]=(0,s.useState)(null),[U,W]=(0,s.useState)([]),[V,K]=(0,s.useState)(!0),[X,Y]=(0,s.useState)(!1),[G,J]=(0,s.useState)(!1),[Q,Z]=(0,s.useState)(!1),[ee,et]=(0,s.useState)([]),[es,ea]=(0,s.useState)([]),[er,en]=(0,s.useState)(!1),[el,ei]=(0,s.useState)([]),[eo,ec]=(0,s.useState)(()=>new Map),[ed,eu]=(0,s.useState)(()=>new Map),{writeToCache:em}=function(e,t){let[a,r]=(0,s.useState)(null),[n,l]=(0,s.useState)(!1),i=(0,s.useRef)(e);return(0,s.useEffect)(()=>{if(i.current=e,!e||!t){r(null),l(!1);return}(0,$.openCacheDB)(t);let s=!1;return(0,$.getCachedMessages)(e,t).then(t=>{s||i.current!==e||(t&&t.length>0?(r(t),l(!0)):(r(null),l(!1)))}),()=>{s=!0}},[e,t]),{cachedMessages:a,isFromCache:n,writeToCache:(0,s.useCallback)(async(e,s,a)=>{i.current&&t&&await (0,$.mergeCachedMessages)(i.current,e,s,t,a)},[t])}}(r??null,o),ef=(0,s.useRef)(em);(0,s.useEffect)(()=>{ef.current=em},[em]);let eh=(0,s.useRef)(!1);(0,s.useEffect)(()=>{R&&!eh.current&&(eh.current=!0,(0,L.trackAgentChatOpened)({agent_id:a,is_first_chat:0===P.length}))},[R,a]);let ep=(0,s.useMemo)(()=>ee.filter(e=>"agent"===e.source),[ee]),eg=(0,s.useMemo)(()=>(function(e,t,s,a){if(!a||0===s.length){let a=[...e.map(e=>({kind:"message",data:e})),...t.map(e=>({kind:"artifact",data:e})),...s.map(e=>({kind:"nap",data:e}))];return a.sort((e,t)=>{let s=e.data.created_at.localeCompare(t.data.created_at);if(0!==s)return s;if("nap"===e.kind||"nap"===t.kind){if("nap"===e.kind&&"nap"!==t.kind)return 1;if("nap"!==e.kind&&"nap"===t.kind)return -1}return e.kind!==t.kind?"message"===e.kind?-1:1:e.data.id.localeCompare(t.data.id)}),a}let r=new Set(s.map(e=>e.id.replace(/^nap-/,""))),n=[...s].sort((e,t)=>e.created_at.localeCompare(t.created_at)),l=s=>[...e.filter(e=>e.conversation_id===s).map(e=>({kind:"message",data:e})),...t.filter(e=>e.conversation_id===s).map(e=>({kind:"artifact",data:e}))].sort((e,t)=>{let s=e.data.created_at.localeCompare(t.data.created_at);return 0!==s?s:e.kind!==t.kind?"message"===e.kind?-1:1:e.data.id.localeCompare(t.data.id)}),i=[];for(let e of n){let t=e.id.replace(/^nap-/,"");i.push(...l(t)),i.push({kind:"nap",data:e})}i.push(...l(a));let o=new Set([...r,a]),c=e.filter(e=>!o.has(e.conversation_id)),d=t.filter(e=>!o.has(e.conversation_id));if(c.length>0||d.length>0){let e=[...c.map(e=>({kind:"message",data:e})),...d.map(e=>({kind:"artifact",data:e}))];e.sort((e,t)=>{let s=e.data.created_at.localeCompare(t.data.created_at);return 0!==s?s:e.kind!==t.kind?"message"===e.kind?-1:1:e.data.id.localeCompare(t.data.id)});let t=i.findIndex(e=>"nap"===e.kind);t>=0?i.splice(t,0,...e):i.push(...e)}return i})(P,ep,el,R?.id),[P,ep,el,R?.id]),ex=(0,s.useMemo)(()=>(function(e){let t=Array(e.length).fill(null),s=(e,t)=>{if(!e||!t)return!1;let s=g(e),a=g(t);if(null===s||s!==a)return!1;let r=x(e),n=x(t);return!r||!n||6e4>Math.abs(new Date(r).getTime()-new Date(n).getTime())};for(let a=0;a<e.length;a++){let r=e[a];if(null===g(r))continue;let n=a>0?e[a-1]:null,l=a<e.length-1?e[a+1]:null,i=s(n,r),o=s(r,l);i&&o?t[a]="middle":i&&!o?t[a]="last":!i&&o?t[a]="first":t[a]="solo"}return t})(eg),[eg]),ev=(0,s.useMemo)(()=>{if(!B)return null;for(let e=P.length-1;e>=0;e--){let t=P[e];if("assistant"===t.role&&t.task_id===B.id)return t.id}return null},[P,B]),eb=(0,s.useRef)(null),ek=(0,s.useRef)(null),ej=(0,s.useRef)(null),ey=(0,s.useRef)(null),ew=(0,s.useRef)(0),eN=(0,s.useRef)(0),eC=(0,s.useRef)(!1),e_=(0,s.useRef)(!1),eS=(0,s.useRef)(!0),eM=(0,s.useRef)(!1),eI=(0,s.useRef)(null),eT=(0,s.useRef)(null),eE=(0,s.useRef)(0),eA=(0,s.useRef)(void 0),eR=(0,s.useRef)(null),ez=(0,s.useRef)({completedKey:null}),eD=(0,s.useRef)(null),e$=(0,s.useCallback)((e,t)=>{eR.current===e&&(0,$.getConvExtras)(e,o).then(s=>{if(s&&eR.current===e)return(0,$.setConvExtras)(e,{artifacts:t,conversation_type:s.conversation_type,conversation_title:s.conversation_title,conversation_channel:s.conversation_channel,conversation_created_at:s.conversation_created_at,hasMoreArtifacts:s.hasMoreArtifacts},o)}).catch(()=>{})},[o]),eL=(0,s.useCallback)(()=>{eS.current=!0,setTimeout(()=>{eb.current?.scrollTo({top:eb.current.scrollHeight,behavior:"smooth"})},50)},[]);(0,s.useEffect)(()=>{var e,t;if(!r&&u)return;let s=(e={workspaceId:o,agentId:a,targetConvId:r,scrollToTaskId:n}).targetConvId?`${e.workspaceId}::${e.agentId}::${e.targetConvId}::${e.scrollToTaskId??""}`:null;if(t=ez.current,s&&t.completedKey===s||(t.completedKey=null,0))return;ek.current&&clearInterval(ek.current),ek.current=null,ey.current=null,eR.current=null;let l=!1;K(!0),eC.current=!1,H(null),W([]),ec(new Map),eu(new Map),ei([]),ea([]),en(!1),eT.current=null,N(localStorage.getItem(`chat-draft:${a}:${r??"default"}`)??"");let i=localStorage.getItem(`chat-draft-meta:${a}:${r??"default"}`);if(i)try{let e=JSON.parse(i),t=e.quote;C(t&&"object"==typeof t&&t.id?t:null),_(e.skill?e.skill:null)}catch{C(null),_(null)}else C(null),_(null);async function c(e){let t=await (0,$.getCacheMeta)(e,o);if(t?.newestMessageId){let s=await (0,$.getCachedMessages)(e,o);if(l)return{painted:!1,cacheMeta:t};if(s&&s.length>0)return F(s),J(t.hasMore),K(!1),await m(e,s),{painted:!0,cacheMeta:t}}return{painted:!1,cacheMeta:t}}async function m(e,t){let s=await (0,$.getConvExtras)(e,o);if(l||!s)return;et(s.artifacts);let r=s.conversation_created_at||t[0]?.created_at||t[t.length-1]?.created_at||"";z(t=>t&&t.id===e?t:{id:e,agent_id:a,title:s.conversation_title,type:s.conversation_type,channel:s.conversation_channel,created_at:r})}return A.current=!0,F([]),async function(){let e=!1;try{let t=null,s=null,i=null;if(r){t=r;let a=await c(t);if(l)return;s=a.cacheMeta,e=a.painted}else{let r=await (0,$.getLastOpenConversation)(a,d,o);if(l)return;if(r?.conversation_id&&r.serverMessageCount>0){let t=await c(r.conversation_id);if(l)return;t.painted&&(e=!0,i=r.conversation_id,s=t.cacheMeta)}try{let r=await (0,f.checkFreshness)({agentId:a,channel:d},o);if(l)return;if(t=r.conversation_id,i&&t!==i){eC.current=!1,eS.current=!0;let a=await c(t);if(l)return;s=a.cacheMeta,e=a.painted,a.painted||(F([]),K(!0),et([]))}else if(!i){let a=await c(t);if(l)return;s=a.cacheMeta,e=a.painted}}catch{}}if(t){eR.current=t;let i=await (0,f.conversationInit)(t,o,{newestMessageId:s?.newestMessageId??void 0,messageCount:s?.serverMessageCount||void 0});if(l)return;if(z(i.conversation),en(i.has_more_conversations),!i.cache_valid&&i.messages){let s=eS.current;F(e=>p(e,i.messages)),eR.current===t&&(0,$.mergeCachedMessages)(t,i.messages,i.has_more_messages,o,i.message_count).catch(()=>{}),J(i.has_more_messages),e&&eC.current&&s&&eL()}else s&&J(s.hasMore);if(eR.current===t&&!r){let e=await (0,$.getCacheMeta)(t,o);if(l)return;(0,$.setLastOpenConversation)(a,d,{conversation_id:t,newestMessageId:e?.newestMessageId??s?.newestMessageId??null,serverMessageCount:i.message_count},o).catch(()=>{})}if(et(i.artifacts),eR.current===t&&(0,$.setConvExtras)(t,{artifacts:i.artifacts,conversation_type:i.conversation.type,conversation_title:i.conversation.title,conversation_channel:i.conversation.channel,conversation_created_at:i.conversation.created_at,hasMoreArtifacts:i.has_more_artifacts},o).catch(()=>{}),j(new Set(i.flagged_message_ids)),i.active_task&&(H(i.active_task),W(i.task_messages),i.task_messages.length>0&&(ew.current=Math.max(...i.task_messages.map(e=>e.seq))),eI.current?.(i.active_task.id,t,ew.current)),n){let e=await (0,f.getTask)(n,o).catch(()=>null);if(l)return;if(e&&!["completed","failed","cancelled","superseded"].includes(e.status)){H(e);let s=await (0,f.getTaskMessages)(n,o).catch(()=>[]);if(l)return;let a=s.filter(e=>"error"===e.type);W(a),s.length>0&&(ew.current=Math.max(...s.map(e=>e.seq))),eI.current?.(e.id,t,ew.current)}}}else{let t=await (0,f.chatInit)(a,o,d);if(l)return;eR.current=t.conversation.id,z(t.conversation);let s=eS.current;F(e=>e.length>0?p(e,t.messages):t.messages),J(t.has_more_messages),et(t.artifacts),en(t.has_more_conversations),(0,$.mergeCachedMessages)(t.conversation.id,t.messages,t.has_more_messages,o).catch(()=>{}),eR.current===t.conversation.id&&(0,$.setConvExtras)(t.conversation.id,{artifacts:t.artifacts,conversation_type:t.conversation.type,conversation_title:t.conversation.title,conversation_channel:t.conversation.channel,conversation_created_at:t.conversation.created_at,hasMoreArtifacts:t.has_more_artifacts},o).catch(()=>{}),(0,$.setLastOpenConversation)(a,d,{conversation_id:t.conversation.id,newestMessageId:t.messages.length>0?t.messages[t.messages.length-1].id:null,serverMessageCount:t.has_more_messages?0:t.messages.length},o).catch(()=>{}),e&&eC.current&&s&&eL(),(0,f.listFlaggedMessageIds)(o,t.conversation.id).then(e=>{l||j(new Set(e.message_ids))}).catch(()=>{}),t.active_task&&(H(t.active_task),t.task_messages.length>0&&(W(t.task_messages),ew.current=Math.max(...t.task_messages.map(e=>e.seq))),["completed","failed","cancelled","superseded"].includes(t.active_task.status)||eI.current?.(t.active_task.id,t.conversation.id,ew.current))}}catch{e?y.toast.error("Couldn't refresh conversation"):y.toast.error("Failed to load conversation")}finally{if(!l){var t;K(!1),t=ez.current,s&&(t.completedKey=s)}}}(),()=>{l=!0}},[a,o,r,n,d,u]);let eP=(0,s.useRef)(k);(0,s.useEffect)(()=>{eP.current=k},[k]);let eF=(0,s.useRef)(null);(0,s.useEffect)(()=>{if(!R?.id||!o||eF.current===R.id)return;eF.current=R.id;let e=setTimeout(()=>{(0,f.markInboxRead)(R.id,o).then(()=>eP.current()).catch(()=>{})},1e3);return()=>{eF.current=null,clearTimeout(e)}},[R?.id,o]),(0,s.useEffect)(()=>{V||!(P.length>0)||eC.current||(eC.current=!0,n||l?(eS.current=!1,eb.current?.scrollTo({top:eb.current.scrollHeight})):i?setTimeout(()=>{let e=eb.current?.querySelectorAll("[data-quote-source]");e&&e.length>0?e[e.length-1].scrollIntoView({behavior:"instant",block:"start"}):eb.current?.scrollTo({top:eb.current.scrollHeight})},50):setTimeout(()=>{eb.current?.scrollTo({top:eb.current.scrollHeight})},50))},[V,P.length,n,l,i]),(0,s.useEffect)(()=>{let e;if(!n||V||!R)return;eS.current=!1,eM.current=!0;let t=!1,s=()=>{if(t)return!1;let s=document.querySelector(`[data-task-id="${CSS.escape(n)}"]`);return!!s&&(s.scrollIntoView({behavior:"smooth",block:"center"}),s.classList.add("task-highlight"),e=setTimeout(()=>{s.classList.remove("task-highlight"),t||(eM.current=!1)},1500),!0)},a=setTimeout(async()=>{if(!t&&!s())try{let e=await (0,f.listMessagesAroundTask)(R.id,o,n);if(t)return;e.length>0?(F(t=>p(t,e)),requestAnimationFrame(()=>{setTimeout(()=>{s()||(eM.current=!1)},100)})):eM.current=!1}catch{t||(eM.current=!1)}},100);return()=>{t=!0,clearTimeout(a),e&&clearTimeout(e)}},[n,V,R,o]),(0,s.useEffect)(()=>{let e;if(!l||n||V||!R)return;eS.current=!1,eM.current=!0;let t=!1,s=setTimeout(()=>{!t&&((()=>{if(t)return!1;let s=document.querySelector(`[data-message-id="${CSS.escape(l)}"]`);return!!s&&(s.scrollIntoView({behavior:"smooth",block:"center"}),s.classList.add("task-highlight"),e=setTimeout(()=>{s.classList.remove("task-highlight"),t||(eM.current=!1)},1500),!0)})()||(eb.current?.scrollTo({top:eb.current.scrollHeight}),eM.current=!1))},100);return()=>{t=!0,clearTimeout(s),e&&clearTimeout(e)}},[l,n,V,R]);let eq=B?.status;(0,s.useEffect)(()=>{eM.current||("running"===eq||"queued"===eq)&&eS.current&&eL()},[U.length,eq,eL]),(0,s.useEffect)(()=>{eM.current||eC.current&&eS.current&&eL()},[ee.length,P.length,eL]);let eO=(0,s.useMemo)(()=>c.find(e=>e.id===a)?.name??"Agent",[c,a]),eB=v(P),eH=v(G),eU=v(es),eW=v(er),eV=v(eO),eK=v(d),eX=(0,s.useCallback)(async(e=!1)=>{if(!R||e_.current)return;e_.current=!0;let t=eB.current,s=eH.current,n=eW.current,l=eV.current,i=eK.current,c=!!r,d=t[0],u=eT.current?.id??R.id,m=s&&d,h=eU.current;if(!c&&!m&&0===h.length&&n){let e=eT.current??{id:R.id,created_at:R.created_at};try{let t=await (0,f.listPreviousConversations)(a,o,{exclude:R.id,before:e.created_at,channel:i});h=t.conversations,ea(t.conversations),en(t.has_more)}catch{en(!1)}}let p=!c&&h.length>0;if(!m&&!p){e_.current=!1;return}Z(!0);let g=eb.current;g&&(g.style.overflowAnchor="none");let x=g?.scrollHeight??0;try{let t=[],s=[],r=20,p=!1,v=[],b=!1;if(m){let e=u===R.id?await (0,$.getCachedMessagesBefore)(u,d.created_at,d.id,20,o):null;if(e)t=e.messages,r-=e.messages.length,p=e.hasMore;else{let e=await (0,f.listMessages)(u,o,{limit:20,before:d.created_at,beforeId:d.id});t=e.messages,r-=e.messages.length,p=e.has_more}b=p}if(!c&&!p&&r>0){if(0===h.length&&n){let e=eT.current??{id:R.id,created_at:R.created_at};try{let t=await (0,f.listPreviousConversations)(a,o,{exclude:R.id,before:e.created_at,channel:i});h=t.conversations,ea(t.conversations),en(t.has_more)}catch{en(!1)}}let e=0,t=0;for(;e<h.length&&r>0&&t<5;){let a=h[e];e++,t++;let n=await (0,f.listMessages)(a.id,o,{limit:r});if(0===n.messages.length){eT.current=a;continue}let i=eT.current?.created_at??R.created_at;v.push({agentName:l,created_at:i,id:`nap-${a.id}`}),s=[...n.messages,...s],r-=n.messages.length,p=n.has_more,eT.current=a}e>0&&ea(t=>t.slice(e))}let k=[...s,...t];if((0,D.flushSync)(()=>{k.length>0?(v.length>0&&ei(e=>{let t=new Set(e.map(e=>e.id)),s=v.filter(e=>!t.has(e.id));return[...e,...s]}),J(p),F(e=>{let t=new Set(e.map(e=>e.id));return[...k.filter(e=>!t.has(e.id)),...e]})):J(!1)}),k.length>0&&R){let e=k.filter(e=>e.conversation_id===R.id);e.length>0&&(0,$.mergeCachedMessages)(R.id,e,b,o).catch(()=>{})}if(e_.current=!1,(0,D.flushSync)(()=>Z(!1)),g)if(e)g.scrollTop=g.scrollHeight;else{let e=g.scrollHeight;g.scrollTop=e-x}}catch{y.toast.error("Failed to load older messages")}finally{e_.current=!1,Z(!1),eb.current&&(eb.current.style.overflowAnchor="")}},[R,o,a,r,eB,eH,eW,eV,eK,eU]),eY=r?G:G||es.length>0||er;(0,s.useEffect)(()=>{R?.id!==eA.current&&(eA.current=R?.id,eE.current=0)},[R?.id]),(0,s.useEffect)(()=>{V||!R||n||r||P.length>=10||!eY||Q||eE.current>=3||(eE.current+=1,eX(!0))},[V,P.length,eY,Q,R,eX,n,r]);let eG=(0,s.useCallback)(()=>{let e=eb.current;e&&(eS.current=e.scrollHeight-e.scrollTop-e.clientHeight<100)},[]),eJ=(0,s.useCallback)((e,t,s)=>{ek.current&&clearInterval(ek.current),ew.current=s??0,eN.current=0,Y(!1),ey.current=e,ek.current=setInterval(async()=>{if(ey.current===e)try{let s=await (0,f.getTask)(e,o),a=ey.current!==e;if(eN.current=0,Y(!1),"completed"===s.status||"failed"===s.status||"cancelled"===s.status||"superseded"===s.status){if(a)return void(0,f.listMessages)(t,o).then(({messages:e})=>{F(t=>p(t,e)),(0,$.mergeCachedMessages)(t,e,null,o).catch(()=>{})}).catch(()=>{});ek.current&&clearInterval(ek.current),ek.current=null,ej.current&&clearTimeout(ej.current),ej.current=setTimeout(()=>{(0,f.markInboxRead)(t,o).then(()=>eP.current()).catch(()=>{})},1e3);let r=!eM.current&&eS.current;try{let[e,a]=await Promise.all([(0,f.listMessages)(t,o),(0,f.listArtifacts)(t,o).catch(()=>null)]);F(t=>p(t,e.messages)),(0,$.mergeCachedMessages)(t,e.messages,null,o).catch(()=>{}),a&&(et(a),e$(t,a)),H(s)}catch{H(s),y.toast.error("Failed to refresh messages")}r&&requestAnimationFrame(()=>{eb.current?.scrollTo({top:eb.current.scrollHeight,behavior:"smooth"})}),setTimeout(async()=>{if(!ek.current)try{let s=await (0,f.getActiveTask)(t,o);if(s&&s.id!==e){let{messages:e}=await (0,f.listMessages)(t,o);F(t=>p(t,e)),(0,$.mergeCachedMessages)(t,e,null,o).catch(()=>{}),H(s),W([]),eI.current?.(s.id,t)}}catch{}},1e3)}else a||H(s)}catch{if(ey.current!==e)return;eN.current+=1,eN.current>=3&&Y(!0),eN.current>=10&&(ek.current&&clearInterval(ek.current),ek.current=null,y.toast.error("Lost connection to agent"))}},3e3)},[o]);(0,s.useEffect)(()=>{eI.current=eJ},[eJ]),(0,s.useEffect)(()=>()=>{ek.current&&clearInterval(ek.current),ej.current&&clearTimeout(ej.current)},[]);let eQ=(0,s.useRef)(null);(0,s.useEffect)(()=>{eQ.current=B?.id??null},[B]),(0,s.useEffect)(()=>m(e=>{if("task.messages"===e.type&&e.taskId===eQ.current){let t=e.messages.filter(e=>e.seq>ew.current);if(t.length>0){let e=t.filter(e=>"error"===e.type);e.length>0&&W(t=>{let s=new Set(t.map(e=>e.seq)),a=e.filter(e=>!s.has(e.seq));return a.length>0?[...t,...a]:t}),ew.current=Math.max(...t.map(e=>e.seq),ew.current)}}if("task.created"===e.type&&e.conversationId===R?.id){(0,f.listMessages)(e.conversationId,o).then(({messages:t})=>{F(e=>p(e,t)),(0,$.mergeCachedMessages)(e.conversationId,t,null,o).catch(()=>{})}).catch(()=>{});let t=e.task;eQ.current=t.id,H(t),W([]),ew.current=0,eI.current?.(t.id,e.conversationId)}if("task.created"===e.type){let t=e.task,s=eK.current;(0,$.getLastOpenConversation)(a,s,o).then(e=>{let r=function(e){let{task:t,agentId:s,activeChannel:a,currentPointerConvId:r}=e;return t.agent_id!==s||(t.channel??"default")!==a||t.conversation_id===r?null:t.conversation_id}({task:t,agentId:a,activeChannel:s,currentPointerConvId:e?.conversation_id??null});if(r)return(0,$.getCacheMeta)(r,o).then(e=>(0,$.setLastOpenConversation)(a,s,{conversation_id:r,newestMessageId:e?.newestMessageId??null,serverMessageCount:e?.messageCount??0},o))}).catch(()=>{})}"conversation.message"===e.type&&(e.conversationId===eR.current&&(0,$.appendCachedMessage)(e.conversationId,e.message,o).catch(()=>{}),e.conversationId===R?.id&&F(t=>{let s=new Date(e.message.created_at).getTime(),a=t.findIndex(t=>t.id.startsWith("temp-")&&t.role===e.message.role&&t.content===e.message.content&&2e3>Math.abs(new Date(t.created_at).getTime()-s));if(-1!==a){let s=t[a].id;ec(e=>{if(!e.has(s))return e;let t=new Map(e);return t.delete(s),t});let r=[...t];return r[a]=e.message,r}return p(t,[e.message])})),"task.updated"===e.type&&e.taskId===eQ.current&&H(t=>t?{...t,status:e.status}:t),"artifact.uploaded"===e.type&&e.conversationId===R?.id&&et(t=>{if(t.some(t=>t.id===e.artifact.id))return t;let s=[...t,e.artifact];return e$(e.conversationId,s),s})}),[m,R?.id,o,a,e$]),(0,s.useEffect)(()=>b(()=>{R?.id&&(0,$.getCacheMeta)(R.id,o).then(e=>{(0,f.conversationInit)(R.id,o,{newestMessageId:e?.newestMessageId??void 0,messageCount:e?.serverMessageCount??void 0}).then(e=>{!e.cache_valid&&e.messages&&(F(t=>p(t,e.messages)),ef.current(e.messages,e.has_more_messages,e.message_count).catch(()=>{}))}).catch(()=>{})})}),[b,R?.id,o]);let eZ=async()=>{let e=M.current.trim();if(!e&&0===T.current.length||q||!R)return;if(!e)return void y.toast.error("Please type a message");let t=e,s=I.current;E.current&&(t=`/${E.current.name} ${t}`);let r=[...T.current];(0,L.trackMessageSent)({agent_id:a,message_length:t.length}),N(""),w([]),C(null),S(),O(!0);let n=`temp-${Date.now()}`,l={id:n,conversation_id:R.id,role:"user",content:t,task_id:null,attachment_ids:null,...s?{metadata:{quote:{messageId:s.id,excerpt:s.excerpt}}}:{},created_at:new Date().toISOString()};r.length>0&&ec(e=>{let t=new Map(e);return t.set(n,r),t}),F(e=>[...e,l]),eL();try{let{message:e,task:a}=await (0,f.sendMessage)(R.id,t,o,r.length>0?r:void 0,s?{quote:{messageId:s.id,excerpt:s.excerpt}}:void 0);if(ec(e=>{if(!e.has(n))return e;let t=new Map(e);return t.delete(n),t}),F(t=>{if(!t.some(e=>e.id===l.id))return t.some(t=>t.id===e.id)?t:h([...t,e]);let s=t.filter(t=>t.id!==l.id&&t.id!==e.id);return h([...s,e])}),(0,$.appendCachedMessage)(R.id,e,o).catch(()=>{}),e.attachment_ids&&e.attachment_ids.length>0){let e=R.id;(0,f.listArtifacts)(e,o).then(t=>{et(t),e$(e,t)}).catch(()=>{})}H(a),W([]),eJ(a.id,R.id)}catch{eu(e=>{let s=new Map(e);return s.set(n,{content:t,files:r}),s})}finally{O(!1),eD.current?.focus()}},e0=(0,s.useCallback)(e=>{let t=ed.get(e);if(!t||!R||q)return;eu(t=>{let s=new Map(t);return s.delete(e),s}),F(t=>t.filter(t=>t.id!==e)),ec(t=>{if(!t.has(e))return t;let s=new Map(t);return s.delete(e),s}),O(!0);let s=`temp-${Date.now()}`,a={id:s,conversation_id:R.id,role:"user",content:t.content,task_id:null,attachment_ids:null,created_at:new Date().toISOString()};t.files.length>0&&ec(e=>{let a=new Map(e);return a.set(s,t.files),a}),F(e=>[...e,a]),(0,f.sendMessage)(R.id,t.content,o,t.files.length>0?t.files:void 0).then(({message:e,task:t})=>{ec(e=>{if(!e.has(s))return e;let t=new Map(e);return t.delete(s),t}),F(t=>h([...t.filter(t=>t.id!==s&&t.id!==e.id),e])),(0,$.appendCachedMessage)(R.id,e,o).catch(()=>{}),H(t),W([]),eJ(t.id,R.id)}).catch(()=>{eu(e=>{let a=new Map(e);return a.set(s,t),a})}).finally(()=>{O(!1)})},[ed,R,q,o,eJ]),e1=(0,s.useCallback)(async()=>{if(!B||!R)return;let e=await (0,f.retryTask)(B.id,o);H(e),W([]),eJ(e.id,R.id)},[B,R,o,eJ]),[e2,e5]=(0,s.useState)(!1),e3=(0,s.useMemo)(()=>!!R&&P.some(e=>e.conversation_id===R.id),[R,P]),e4=async()=>{if(R&&e3&&!e2){e5(!0);try{ek.current&&(clearInterval(ek.current),ek.current=null);let e=await (0,f.createConversation)(a,o,d);ei(t=>[...t,{agentName:eO,created_at:e.created_at,id:`nap-${R.id}`}]),ea(e=>[{id:R.id,created_at:R.created_at},...e]),z(e),H(null),W([]),et([]),w([]),ec(new Map),eu(new Map),ew.current=0,Y(!1),J(!1),eT.current=null,eL()}catch{y.toast.error("Failed to start new conversation")}finally{e5(!1)}}};return{conversation:R,messages:P,sending:q,activeTask:B,taskMessages:U,messagesLoading:V,connectionLost:X,hasMore:G,loadingMore:Q,artifacts:ee,previousConversations:es,hasMoreConversations:er,napMarkers:el,napping:e2,pendingFilesByMessage:eo,failedSends:ed,agentArtifacts:ep,agentName:eO,timeline:eg,groupPositions:ex,activeTaskStreamMsgId:ev,canLoadMore:eY,currentConvHasMessages:e3,scrollRef:eb,composerRef:eD,loadOlderMessages:eX,handleScroll:eG,handleSend:eZ,handleRetrySend:e0,handleRetryTask:e1,handleNap:e4,scrollToBottom:eL}}({agentId:er,targetConvId:ep,scrollToTaskId:ef,scrollToMessageId:eh,propTargetConvId:l,workspaceId:B,agents:U,activeChannel:et,channelLoading:es,subscribeWs:X,subscribeReconnect:Y,refreshInboxCount:G},{setFlaggedIds:tc,setPendingFiles:e1,setInput:ex,setQuotedMessage:tn,setActiveSkill:e=>tg.current?.setActiveSkill(e),clearActiveSkill:()=>tg.current?.clearActiveSkill(),inputRef:tm,quotedMessageRef:tf,pendingFilesRef:th,activeSkillRef:tp,draftMetaRestoredRef:tu}),{versionMap:tU,duplicateFilenames:tW}=(0,s.useMemo)(()=>(0,eo.computeArtifactVersions)(tI),[tI]),tV=(0,s.useMemo)(()=>(0,eF.parseAvatarUrl)(U.find(e=>e.id===er)?.avatar_url??null),[U,er]),tK=(0,s.useMemo)(()=>tT.split(/\s+/)[0]||tT,[tT]),tX=(0,s.useCallback)(e=>{(0,eo.isPreviewable)(e)?(ew(e),ej(!0)):window.open((0,eo.getArtifactUrl)(e.id,B,!0),"_blank")},[B]),tY=(0,s.useCallback)(e=>{(0,eo.isPreviewable)(e)?(ew(e),ej(!0)):window.open((0,eo.getArtifactUrl)(e.id,B,!0),"_blank")},[B]),[tG,tJ]=(0,s.useState)(""),tQ=(0,s.useMemo)(()=>U.filter(e=>e.id!==er),[U,er]),[tZ,t0]=(0,s.useState)([]),t1=(0,s.useRef)(!1);(0,s.useEffect)(()=>{t1.current||(t1.current=!0,(0,f.getAgentSkills)(er,B).then(e=>t0(e.skills)).catch(()=>{}))},[er,B]);let[t2]=(0,s.useState)(()=>{try{let e=JSON.parse(localStorage.getItem(`chat-draft-meta:${er}:${ep??"default"}`)??"null");return e?.skill??null}catch{return null}}),t5=function({input:e,caretIndex:t,skills:a,onInputChange:r,initialActiveSkill:n,getAnchorPos:l,onAfterSelect:i}){let[o,c]=(0,s.useState)(!1),[d,u]=(0,s.useState)(""),[m,f]=(0,s.useState)(0),[h,p]=(0,s.useState)({top:0,left:0}),g=(0,s.useRef)(null),x=(0,s.useMemo)(()=>{if(!o)return[];if(!d)return a;let e=d.toLowerCase(),t=[],s=[];for(let r of a){let a=r.name.toLowerCase();a.startsWith(e)?t.push(r):a.includes(e)&&s.push(r)}return[...t,...s]},[o,d,a]);(0,s.useEffect)(()=>{f(0)},[x.length,d]);let[v,b]=(0,s.useState)(n??null);(0,s.useEffect)(()=>{if(v||null===t)return void c(!1);let s=function(e,t){if(!e.startsWith("/")||0===t)return null;let s=t-1;for(;s>=0&&t-s<=30;){let a=e.charCodeAt(s);if(47===a&&0===s)return{start:0,query:e.slice(1,t)};if(10===a||13===a||32===a)break;s--}return null}(e,t);if(s){g.current=s.start,u(s.query),c(!0);let e=l(s.start);e&&p(e)}else c(!1),g.current=null},[e,t,l,v]);let k=(0,s.useCallback)(e=>{b(e),r(""),c(!1),i?.()},[r,i]),j=(0,s.useCallback)(()=>{b(null)},[]),y=(0,s.useCallback)(e=>!!o&&0!==x.length&&!e.isComposing&&("ArrowDown"===e.key?(e.preventDefault(),f(e=>(e+1)%x.length),!0):"ArrowUp"===e.key?(e.preventDefault(),f(e=>(e-1+x.length)%x.length),!0):"Enter"===e.key||"Tab"===e.key?(e.preventDefault(),k(x[m]),!0):"Escape"===e.key&&(e.preventDefault(),c(!1),!0)),[o,x,m,k]);return{isOpen:o,query:d,selectedIndex:m,anchorPos:h,skills:x,activeSkill:v,handleSlashKeyDown:y,selectSkill:k,clearActiveSkill:j,setActiveSkill:b}}({input:tG,caretIndex:tt,skills:tZ,onInputChange:()=>tL.current?.clear(),initialActiveSkill:t2,getAnchorPos:(0,s.useCallback)(e=>tL.current?.coordsAtTextIndex(e)??null,[]),onAfterSelect:(0,s.useCallback)(()=>{requestAnimationFrame(()=>tL.current?.focus())},[])});(0,s.useLayoutEffect)(()=>{tg.current=t5,tp.current=t5.activeSkill}),(0,s.useEffect)(()=>{0===tZ.length||!t5.activeSkill||tZ.some(e=>e.name===t5.activeSkill.name)||t5.setActiveSkill(null)},[tZ]),(0,s.useEffect)(()=>{let e=`chat-draft:${er}:${ep??"default"}`;eg?localStorage.setItem(e,eg):localStorage.removeItem(e)},[eg,er,ep]),(0,s.useEffect)(()=>{if(!tu.current)return;let e=`chat-draft-meta:${er}:${ep??"default"}`,t={};t5.activeSkill&&(t.skill={name:t5.activeSkill.name,description:t5.activeSkill.description}),tr&&(t.quote=tr),t.skill||t.quote?localStorage.setItem(e,JSON.stringify(t)):localStorage.removeItem(e)},[t5.activeSkill,tr,er,ep]),(0,s.useEffect)(()=>{tb||tL.current?.focus()},[tb]);let{selectionPopup:t3,setSelectionPopup:t4}=function(){let[e,t]=(0,s.useState)(null),a=(0,s.useCallback)(()=>{let e=window.getSelection();if(!e||e.isCollapsed||!e.rangeCount)return void t(null);let s=e.toString().trim();if(!s)return void t(null);let a=e.getRangeAt(0),r=a.commonAncestorContainer instanceof HTMLElement?a.commonAncestorContainer:a.commonAncestorContainer.parentElement,n=r?.closest("[data-quote-source]");if(!n)return void t(null);let l=n.closest("[data-message-id]"),i=l?.getAttribute("data-message-id")??null,o=a.getClientRects(),c=o[o.length-1]||a.getBoundingClientRect();t({text:s,messageId:i,x:c.right,y:c.top-4})},[]);return(0,s.useEffect)(()=>(document.addEventListener("selectionchange",a),()=>document.removeEventListener("selectionchange",a)),[a]),{selectionPopup:e,setSelectionPopup:t}}(),t8=(0,s.useCallback)(()=>{if(t3){let e=t3.text.slice(0,100);tn(t3.messageId?{id:t3.messageId,excerpt:e}:null),t4(null),window.getSelection()?.removeAllRanges(),tL.current?.focus()}},[t3]),t6=(0,s.useCallback)((e,t)=>{tn({id:e,excerpt:t}),tL.current?.focus()},[]);(0,s.useEffect)(()=>{if(eR&&eL)return X(e=>{if("task.updated"===e.type&&eZ&&e.taskId===eZ&&(0,f.getTask)(eZ,B).then(e=>eG(e)).catch(()=>{}),"conversation.message"===e.type&&eQ&&e.conversationId===eQ&&(eH(t=>!t||t.messages.some(t=>t.id===e.message.id)?t:{...t,messages:[...t.messages,e.message]}),"event"===e.message.role&&e.message.content.startsWith("Issue status changed:"))){let t=e.message.content.match(/-> (\w+)/);t&&eH(e=>e?{...e,issue:{...e.issue,status:t[1]}}:e)}"issue.comment"===e.type&&e.issueId===eL&&eH(t=>!t||t.comments.some(t=>t.id===e.comment.id)?t:{...t,comments:[...t.comments,e.comment]})})},[eR,eL,eQ,eZ,B,X]);let[t7,t9]=(0,s.useState)(!1),[se,st]=(0,s.useState)(!1),ss=!!tk&&!["completed","failed","cancelled","superseded"].includes(tk.status),sa=(0,s.useCallback)(async()=>{if(tx?.id&&!se){st(!0);try{await (0,f.cancelActiveTask)(tx.id,B)}catch{y.toast.error("Failed to stop the task")}finally{st(!1)}}},[tx?.id,B,se]),sr=function(e){var t;let a=function(){let[e,t]=(0,s.useState)(!1);return(0,s.useEffect)(()=>{if(!window.matchMedia)return;let e=window.matchMedia("(prefers-reduced-motion: reduce)");t(e.matches);let s=e=>t(e.matches);return e.addEventListener("change",s),()=>e.removeEventListener("change",s)},[]),e}(),[r,n]=(0,s.useState)(()=>(function(e,t=Math.random){return e<=0?0:Math.floor(t()*e)%e})(Z.length)),l=(t={...e,reducedMotion:a}).isEmpty&&!t.isFocused&&!t.isTaskActive&&!t.reducedMotion,i=(0,s.useRef)(r);return i.current=r,(0,s.useEffect)(()=>{if(!l)return;let e=setInterval(()=>{var e,t;n((e=i.current,(t=Z.length)<=0?0:(e+1)%t))},6e3);return()=>clearInterval(e)},[l]),{hint:Z[r]??Z[0],isRotating:l}}({isEmpty:""===eg.trim(),isFocused:ev,isTaskActive:ss});return ty?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("div",{className:"flex-1 overflow-y-auto px-3 md:px-5",children:(0,t.jsxs)("div",{className:"mx-auto max-w-3xl py-6 space-y-6 motion-safe:animate-[fade-up_200ms_ease-out_both]",children:[(0,t.jsxs)("div",{className:"flex justify-start items-start gap-2",children:[(0,t.jsx)(N.Skeleton,{className:"size-7.5 shrink-0 rounded-md"}),(0,t.jsxs)("div",{className:"flex flex-col items-start gap-1 max-w-[86%]",children:[(0,t.jsx)(N.Skeleton,{className:"h-3 w-20 rounded mb-0.5"}),(0,t.jsx)(N.Skeleton,{className:"h-9 w-64 rounded-[1.05rem]"}),(0,t.jsx)(N.Skeleton,{className:"h-9 w-48 rounded-[1.05rem]"})]})]}),(0,t.jsxs)("div",{className:"flex flex-col items-end gap-1",children:[(0,t.jsx)(N.Skeleton,{className:"h-9 w-44 rounded-[1.05rem]"}),(0,t.jsx)(N.Skeleton,{className:"h-9 w-32 rounded-[1.05rem]"})]}),(0,t.jsxs)("div",{className:"flex justify-start items-start gap-2",children:[(0,t.jsx)(N.Skeleton,{className:"size-7.5 shrink-0 rounded-md"}),(0,t.jsxs)("div",{className:"flex flex-col items-start gap-1 max-w-[86%]",children:[(0,t.jsx)(N.Skeleton,{className:"h-3 w-20 rounded mb-0.5"}),(0,t.jsx)(N.Skeleton,{className:"h-9 w-56 rounded-[1.05rem]"})]})]})]})}),(0,t.jsx)("div",{"data-keyboard-offset":!0,className:"relative z-10 px-3 md:px-5 pt-3 pb-[max(1.25rem,env(safe-area-inset-bottom))] md:pb-6",children:(0,t.jsxs)("div",{className:"mx-auto max-w-3xl",children:[(0,t.jsx)("div",{className:"h-5 px-1 mb-2 flex items-center",children:(0,t.jsx)(N.Skeleton,{className:"h-3.5 w-28 rounded"})}),(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)(N.Skeleton,{className:"size-8 shrink-0 rounded-full"}),(0,t.jsx)(N.Skeleton,{className:"h-10 flex-1 rounded-3xl"}),(0,t.jsx)(N.Skeleton,{className:"size-8 shrink-0 rounded-full"})]})]})})]}):ty||tx||0!==tv.length?(0,t.jsxs)(t.Fragment,{children:[t3&&(0,t.jsxs)("button",{type:"button",className:"fixed z-50 flex items-center gap-1 px-2 py-1 rounded-md bg-popover border shadow-md text-xs text-popover-foreground hover:bg-accent transition-colors",style:{left:t3.x,top:t3.y,transform:"translate(-100%, -100%)"},onMouseDown:e=>e.preventDefault(),onClick:t8,children:[(0,t.jsx)(E,{className:"size-3"}),"Quote"]}),(0,t.jsxs)("div",{className:"relative flex-1 min-h-0",children:[(0,t.jsx)("div",{className:"h-full overflow-y-auto overflow-x-hidden px-3 md:px-5 thin-scrollbar",ref:t$,onScroll:tF,onClick:e=>{e.target.closest('[data-streamdown="code-block-actions"] button')&&y.toast.success("Copied to clipboard")},children:(0,t.jsxs)("div",{className:"mx-auto max-w-3xl pt-6 pb-15 min-w-0",children:[tx&&tz&&!tN&&(0,t.jsx)("div",{className:"flex justify-center py-2",children:(0,t.jsx)("button",{onClick:()=>tP(),className:"text-xs text-muted-foreground hover:text-foreground transition-colors",children:"Load earlier messages"})}),tN&&(0,t.jsx)("div",{className:"flex justify-center py-2",children:(0,t.jsx)(o.Loader2,{className:"size-4 animate-spin text-muted-foreground"})}),0===tv.length&&!tk&&(d=U.find(e=>e.id===er),u=d?.created_at&&ta-new Date(d.created_at).getTime()<3e5,S=(K[er]??0)>0,u&&S&&"default"===et?(0,t.jsxs)("div",{className:"flex flex-col items-center justify-center py-20 gap-3 animate-[fade-up_400ms_ease-out_both]",children:[(0,t.jsxs)("div",{className:"relative animate-bounce",children:[(0,t.jsx)(T.Mail,{className:"size-8 text-primary"}),(0,t.jsxs)("span",{className:"absolute -top-1 -right-1 flex size-3",children:[(0,t.jsx)("span",{className:"animate-ping absolute inline-flex size-full rounded-full bg-primary/60"}),(0,t.jsx)("span",{className:"relative inline-flex size-3 rounded-full bg-primary"})]})]}),(0,t.jsx)("p",{className:"text-sm text-muted-foreground text-center max-w-xs",children:"Your agent is sending you a welcome email."}),(0,t.jsx)("p",{className:"text-xs text-muted-foreground/60 text-center max-w-xs",children:"Wait for the email task in the top-left to complete, then check your inbox. Or send a message below to start chatting."})]}):(0,t.jsxs)("p",{className:"text-center text-muted-foreground py-20 text-base animate-[fade-up_400ms_ease-out_both]",children:["Say hi to ",tK,"."]})),tE.map((e,s)=>{let a=tA[s],r="first"===a||"solo"===a||null===a,n=0===s?"":r?"mt-6":"mt-1.5";if("nap"===e.kind)return(0,t.jsx)("div",{className:n,children:(0,t.jsx)(eW,{agentName:tT})},e.data.id);if("artifact"===e.kind){let s=a??"solo",r="first"===s||"solo"===s;return(0,t.jsx)("div",{className:n,children:(0,t.jsx)(eE,{groupPosition:s,agentName:tT,config:tV,forceSpacer:!r,children:(0,t.jsx)(eV,{artifact:e.data,version:tU.get(e.data.id)??1,hasDuplicates:tW.has(e.data.filename),onClick:tX})})},`artifact-${e.data.id}`)}let l=e.data;return(0,t.jsx)("div",{className:n,children:(0,t.jsx)(eD,{msg:l,agents:U,artifacts:tC,activeTask:tk,activeTaskStreamMsgId:tR,taskMessages:tj,connectionLost:tw,conversationType:tx?.type,pendingFilesByMessage:tS,onArtifactClick:tX,onEmailClick:e=>{eS(e),eC(!0)},onCalendarEventClick:e=>{eA(e),eI(!0)},onIssueClick:e=>eJ(e),onRetry:tB,mentionComponents:eU,isFlagged:to.has(l.id),onToggleFlag:"assistant"===l.role?td:void 0,groupPosition:a??"solo",provider:em,agentName:tT,agentAvatarConfig:tV,isSendFailed:tM.has(l.id),onRetrySend:tO,onQuote:t6})},l.id)}),tk&&tk.conversation_id===tx?.id&&null==tR&&!["completed","failed","cancelled","superseded"].includes(tk.status)&&(0,t.jsx)("div",{className:"mt-4",children:(0,t.jsx)(m,{task:tk,messages:tj,connectionLost:tw,provider:em})})]})}),(0,t.jsx)(ec.ScrollToBottomButton,{scrollRef:t$})]}),(0,t.jsx)("div",{"data-keyboard-offset":!0,className:"relative z-10 px-3 md:px-5 pt-3 pb-[max(1.25rem,env(safe-area-inset-bottom))] md:pb-6",children:(0,t.jsxs)("div",{className:"mx-auto max-w-3xl relative",children:[tx&&(0,t.jsx)(e$.PresenceLine,{agentFirstName:tK,taskStatus:ss?tk?.status:null}),(0,t.jsxs)("div",{className:"flex items-end gap-2",children:[!ep&&(0,t.jsxs)(eB.Popover,{open:t7,onOpenChange:t9,children:[(0,t.jsx)(eB.PopoverTrigger,{render:(0,t.jsx)(n.Button,{variant:"ghost",size:"icon-sm",className:"shrink-0 self-end mb-2.5 size-8 rounded-full text-muted-foreground/60 hover:text-foreground transition-colors duration-200"}),children:(0,t.jsx)(eP,{open:t7})}),(0,t.jsxs)(eB.PopoverContent,{side:"top",align:"start",className:"w-auto p-1.5 flex flex-col gap-0.5",children:[(0,t.jsxs)(C.Tooltip,{children:[(0,t.jsx)(C.TooltipTrigger,{render:e=>(0,t.jsx)("span",{...e,className:(0,w.cn)("inline-flex",e.className),children:(0,t.jsxs)(n.Button,{variant:"ghost",size:"sm",onClick:()=>{t9(!1),tH()},disabled:t_||!tx||!tD||ss,className:"w-full justify-start gap-2 rounded-md text-muted-foreground hover:text-foreground",children:[t_?(0,t.jsx)(o.Loader2,{className:"size-3.5 animate-spin"}):(0,t.jsx)(M,{className:"size-3.5"}),(0,t.jsx)("span",{className:"text-xs",children:"Nap"})]})})}),(0,t.jsx)(C.TooltipContent,{side:"right",children:ss?"Wait for the task to finish":tD?"Take a nap and reset the current session":`${tT} is well-rested and ready to go`})]}),(0,t.jsxs)(C.Tooltip,{children:[(0,t.jsx)(C.TooltipTrigger,{render:e=>(0,t.jsx)("span",{...e,className:(0,w.cn)("inline-flex",e.className),children:(0,t.jsxs)(n.Button,{variant:"ghost",size:"sm",onClick:()=>{t9(!1),sa()},disabled:se||!ss,className:"w-full justify-start gap-2 rounded-md text-muted-foreground hover:text-foreground",children:[se?(0,t.jsx)(o.Loader2,{className:"size-3.5 animate-spin"}):(0,t.jsx)(R.Square,{className:"size-3.5"}),(0,t.jsx)("span",{className:"text-xs",children:"Stop"})]})})}),(0,t.jsx)(C.TooltipContent,{side:"right",children:ss?"Stop the running task":"No task running"})]})]})]}),(0,t.jsxs)("div",{className:(0,w.cn)("relative flex-1 min-w-0 flex flex-col rounded-3xl border border-border/50 bg-background/90 transition-[border-radius] duration-200","focus-within:border-ring focus-within:ring-3 focus-within:ring-ring/50",(tl||tr||t5.activeSkill)&&"rounded-2xl",tb&&"opacity-50",e8&&"border-ring ring-3 ring-ring/50"),onDragEnter:e6,onDragLeave:e7,onDragOver:e9,onDrop:te,children:[e8&&(0,t.jsx)("div",{className:(0,w.cn)("absolute inset-0 z-10 flex items-center justify-center bg-background/80 border-2 border-dashed border-ring pointer-events-none",tl||tr||t5.activeSkill?"rounded-2xl":"rounded-3xl"),children:(0,t.jsx)("p",{className:"text-sm text-muted-foreground font-medium",children:"Drop files here"})}),t5.activeSkill&&(0,t.jsxs)("div",{className:"flex items-center gap-2 px-3.5 pt-2.5 pb-1 border-b border-border/50",children:[(0,t.jsxs)("div",{className:"flex-1 min-w-0 flex items-center gap-2",children:[(0,t.jsxs)("span",{className:"shrink-0 text-xs font-medium text-primary",children:["/",t5.activeSkill.name]}),t5.activeSkill.isGlobal&&(0,t.jsx)("span",{className:"text-[10px] font-medium text-muted-foreground bg-muted rounded px-1 py-0.5",children:"Global"}),(0,t.jsx)("span",{className:"text-xs text-muted-foreground truncate",children:t5.activeSkill.description})]}),(0,t.jsx)("button",{type:"button",onClick:t5.clearActiveSkill,className:"shrink-0 p-0.5 rounded-sm hover:bg-muted-foreground/20 transition-colors text-muted-foreground",children:(0,t.jsx)(z.X,{className:"size-3.5"})})]}),tr&&(0,t.jsxs)("div",{className:"flex items-center gap-2 px-3.5 pt-2.5 pb-1 border-b border-border/50",children:[(0,t.jsxs)("div",{className:"flex-1 min-w-0 flex items-start gap-2",children:[(0,t.jsx)(E,{className:"size-3.5 shrink-0 mt-0.5 text-muted-foreground"}),(0,t.jsx)("p",{className:"text-xs text-muted-foreground truncate",children:tr.excerpt})]}),(0,t.jsx)("button",{type:"button",onClick:()=>tn(null),className:"shrink-0 p-0.5 rounded-sm hover:bg-muted-foreground/20 transition-colors text-muted-foreground",children:(0,t.jsx)(z.X,{className:"size-3.5"})})]}),(0,t.jsx)(q,{isOpen:t5.isOpen,skills:t5.skills,selectedIndex:t5.selectedIndex,onSelect:t5.selectSkill,anchorPos:t5.anchorPos}),e0.length>0&&(0,t.jsx)("div",{className:"flex flex-wrap gap-1.5 px-3.5 pt-3 pb-0.5",children:e0.map((e,s)=>(0,t.jsxs)("span",{className:"inline-flex items-center gap-1.5 rounded-md bg-muted px-2 py-1 text-xs text-muted-foreground",children:[(0,t.jsx)(I.FileText,{className:"size-3 shrink-0"}),(0,t.jsx)("span",{className:"truncate max-w-30",children:e.name}),(0,t.jsx)("span",{className:"text-muted-foreground/60",children:(0,ee.formatSize)(e.size)}),(0,t.jsx)("button",{type:"button",onClick:()=>e4(s),className:"ml-0.5 rounded-sm p-0.5 hover:bg-muted-foreground/20 transition-colors",children:(0,t.jsx)(z.X,{className:"size-3"})})]},`${e.name}-${s}`))}),(0,t.jsxs)("div",{className:"relative",children:[(0,t.jsx)("input",{ref:e2,type:"file",multiple:!0,className:"hidden",onChange:e3}),(0,t.jsx)("div",{className:"px-13 py-3",children:(0,t.jsx)(Q,{ref:tL,value:eg,onChange:ex,onEditorState:(e,t)=>{tJ(e),ts(t)},onSend:tq,onFocus:()=>eb(!0),onBlur:()=>eb(!1),overlay:""===eg.trim()?ss?(0,t.jsx)(J,{hint:`Message ${tK}`,animate:!1}):(0,t.jsx)(J,{hint:sr.hint,animate:sr.isRotating}):void 0,disabled:tb,onMultiLineChange:ti,onFiles:e5,agents:tQ,agentLinks:V,currentAgentId:er,slashIsOpen:t5.isOpen,onSlashKeyDown:t5.handleSlashKeyDown})}),(0,t.jsxs)(C.Tooltip,{children:[(0,t.jsx)(C.TooltipTrigger,{render:(0,t.jsx)(n.Button,{variant:"ghost",size:"icon-sm",onPointerDown:e=>e.preventDefault(),onClick:()=>e2.current?.click(),disabled:tb,className:"absolute left-2 bottom-2 size-8 rounded-full text-muted-foreground/60 hover:text-foreground transition-colors duration-200"}),children:(0,t.jsx)(A.Paperclip,{className:"size-3.5"})}),(0,t.jsx)(C.TooltipContent,{side:"top",children:"Attach files"})]}),(0,t.jsxs)(C.Tooltip,{children:[(0,t.jsx)(C.TooltipTrigger,{render:(0,t.jsx)(n.Button,{size:"icon-sm",onClick:tq,disabled:!eg.trim()||tb,className:(0,w.cn)("absolute right-2 bottom-2 size-8 rounded-full bg-primary text-primary-foreground transition-opacity duration-200",!eg.trim()&&"opacity-30")}),children:tb?(0,t.jsx)(o.Loader2,{className:"size-3.5 animate-spin"}):(0,t.jsx)(_.ArrowUp,{className:"size-3.5"})}),(0,t.jsx)(C.TooltipContent,{side:"top",children:"Send"})]})]})]}),!ep&&(0,t.jsx)("div",{className:"hidden md:block shrink-0 self-end mb-2.5 size-8","aria-hidden":"true"})]})]})}),(0,t.jsx)(ee.ArtifactSheet,{open:ek,onOpenChange:e=>{ej(e),e||setTimeout(()=>{ew(null)},300)},artifacts:ey?[ey]:tI,workspaceId:B,initialArtifact:ey,versionMap:tU,duplicateFilenames:tW}),(0,t.jsx)(en,{open:eN,onOpenChange:e=>{eC(e),e||setTimeout(()=>eS(null),300)},emailId:e_,workspaceId:B}),(0,t.jsx)(el.CalendarEventSheet,{readonly:!0,open:eM,onOpenChange:e=>{eI(e),e||setTimeout(()=>eA(null),300)},calendarEventId:eT,workspaceId:B}),(0,t.jsx)(ei.IssueSheet,{open:eR,onOpenChange:e=>{ez(e),e||setTimeout(()=>{eq(null),eH(null),eG(null)},300)},agents:U,issue:eO?.issue??null,detail:eO?{messages:eO.messages,comments:eO.comments,artifacts:eO.artifacts,traceId:eO.issue.trace_id}:null,detailLoading:eK,activeTask:eY,traceTasks:eX,slug:H,workspaceId:B,onUpdate:async(e,t)=>{try{let s=await (0,f.updateIssue)(B,e,t);eH(a=>a&&a.issue.id===e?{...a,issue:{...a.issue,...t,updated_at:s.updated_at}}:a)}catch(e){y.toast.error(e instanceof Error?e.message:"Failed to update issue")}},onStatusChange:async(e,t)=>{try{await (0,f.updateIssue)(B,e,{status:t}),eH(s=>s&&s.issue.id===e?{...s,issue:{...s.issue,status:t}}:s)}catch(e){y.toast.error(e instanceof Error?e.message:"Failed to update status")}},onCommented:()=>{eL&&eJ(eL)},onArtifactClick:tY})]}):(0,t.jsx)("div",{className:"flex flex-1 items-center justify-center text-sm text-muted-foreground",children:"Failed to load conversation"})}],49879)}]);
@@ -1 +0,0 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,590428,e=>{"use strict";var t=e.i(653772),s=e.i(511043),a=e.i(126942),l=e.i(48663),r=e.i(500324),n=e.i(872937),i=e.i(222862),o=e.i(728886),c=e.i(89110),d=e.i(571441),m=e.i(758870);e.i(400175);var u=e.i(126366),x=e.i(186339),h=e.i(329686);let f=[{label:"All",value:"all"},{label:"Active",value:"active"},{label:"Completed",value:"completed"},{label:"Failed",value:"failed"}];function g({status:e}){return(0,t.jsx)("span",{className:`size-1.5 rounded-full shrink-0 ${"completed"===e?"bg-[oklch(0.72_0.19_145)]":"failed"===e?"bg-destructive":"active"===e?"bg-primary animate-pulse":"bg-muted-foreground/40"}`})}function p({name:e,avatarUrl:s,size:a=14}){let l=(0,u.parseAvatarUrl)(s);return l?(0,t.jsx)(u.AvatarRenderer,{config:l,size:a,className:"rounded-full shrink-0"}):(0,t.jsx)("span",{className:"flex items-center justify-center rounded-full bg-secondary text-[8px] font-medium shrink-0",style:{width:a,height:a},children:(e??"?").charAt(0).toUpperCase()})}function j({trace:e,slug:s}){let a=function(e,t){if(!t)return null;let s=Math.max(0,Math.floor((new Date(t).getTime()-new Date(e).getTime())/1e3));if(s>=3600){let e=Math.floor(s/3600),t=Math.floor(s%3600/60);return`${e}h ${t}m`}if(s>=60){let e=Math.floor(s/60);return`${e}m ${s%60}s`}return`${s}s`}(e.started_at,e.completed_at),r="active"===e.status?"Active":"failed"===e.status?"Failed":"Completed";return(0,t.jsx)(l.default,{href:`/w/${s}/threads/${e.trace_id}`,className:"block px-4 py-3 border-b border-border/30 hover:bg-accent/30 transition-colors duration-150 cursor-pointer",children:(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)(p,{name:e.root_agent?.name,avatarUrl:e.root_agent?.avatarUrl,size:32}),(0,t.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 min-w-0",children:[(0,t.jsx)("span",{className:"text-sm text-foreground truncate flex-1 min-w-0",children:e.root_prompt.split("\n")[0]}),(0,t.jsxs)(h.Tooltip,{children:[(0,t.jsx)(h.TooltipTrigger,{render:(0,t.jsx)("span",{className:"text-xs text-muted-foreground shrink-0 ml-2"}),children:function(e){let t=new Date(e),s=Math.floor((new Date().getTime()-t.getTime())/6e4);if(s<1)return"just now";if(s<60)return`${s}m ago`;let a=Math.floor(s/60);if(a<24)return`${a}h ago`;let l=Math.floor(a/24);return l<7?`${l}d ago`:t.toLocaleDateString(void 0,{month:"short",day:"numeric"})}(e.started_at)}),(0,t.jsx)(h.TooltipContent,{children:new Date(e.started_at).toLocaleString()})]})]}),(0,t.jsxs)("div",{className:"flex items-center gap-1.5",children:[e.root_agent?.name&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("span",{className:"text-xs font-medium text-muted-foreground",children:e.root_agent.name}),(0,t.jsx)("span",{className:"text-muted-foreground/40",children:"·"})]}),(0,t.jsxs)("span",{className:"text-xs text-muted-foreground",children:["#",e.channel]}),(0,t.jsx)("span",{className:"text-muted-foreground/40",children:"·"}),(0,t.jsx)(g,{status:e.status}),(0,t.jsx)("span",{className:"text-xs text-muted-foreground",children:r}),a&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("span",{className:"text-muted-foreground/40",children:"·"}),(0,t.jsx)("span",{className:"text-xs text-muted-foreground",children:a})]}),e.helper_agents.length>0&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("span",{className:"text-muted-foreground/40",children:"·"}),(0,t.jsx)("span",{className:"flex items-center",children:e.helper_agents.map((e,s)=>(0,t.jsx)("span",{className:s>0?"-ml-1":"",children:(0,t.jsx)(p,{name:e.name,avatarUrl:e.avatarUrl})},e.id))})]})]})]})]})})}function v({promptWidth:e}){return(0,t.jsxs)("div",{className:"px-4 py-3 border-b border-border/30",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)(o.Skeleton,{className:"h-3.5 w-4 rounded-full shrink-0"}),(0,t.jsx)(o.Skeleton,{className:"h-3.5 rounded",style:{width:e}}),(0,t.jsx)(o.Skeleton,{className:"h-2.5 w-10 rounded shrink-0 ml-auto"})]}),(0,t.jsxs)("div",{className:"flex items-center gap-1.5 mt-1 ml-5.5",children:[(0,t.jsx)(o.Skeleton,{className:"h-2.5 w-20 rounded-full"}),(0,t.jsx)(o.Skeleton,{className:"h-2.5 w-8 rounded"})]})]})}e.s(["default",0,function(){let e=(0,a.useRouter)(),l=(0,a.useSearchParams)(),{slug:o,workspaceId:u}=(0,r.useWorkspace)(),{channels:g}=(0,n.useChannel)(),[N,b]=(0,s.useState)([]),[S,w]=(0,s.useState)(!0),[_,y]=(0,s.useState)(!1),[T,C]=(0,s.useState)(!1),[k,A]=(0,s.useState)([]),$=(0,s.useRef)(null),U=(0,s.useRef)(!1),I=l.get("status")??"active",R=l.get("agentId")??"",M=l.get("channel")??"";(0,s.useEffect)(()=>{(0,i.listAgents)(u).then(A).catch(()=>{})},[u]);let z=(0,s.useCallback)(async()=>{w(!0);try{let e=await (0,i.listTraces)(u,{limit:30,status:"all"===I?void 0:I||void 0,multiAgent:!0,agentId:R||void 0,channel:M||void 0}),t=new Set,s=e.traces.filter(e=>!t.has(e.trace_id)&&(t.add(e.trace_id),!0));b(s),y(e.has_more)}catch{}finally{w(!1)}},[u,I,R,M]);(0,s.useEffect)(()=>{z()},[z]);let D=(0,s.useCallback)(async()=>{if(!U.current&&_&&0!==N.length){U.current=!0,C(!0);try{let e=N[N.length-1],t=await (0,i.listTraces)(u,{limit:30,before:e.started_at,status:"all"===I?void 0:I||void 0,multiAgent:!0,agentId:R||void 0,channel:M||void 0});if(0===t.traces.length)return void y(!1);y(t.has_more),b(e=>{let s=new Set(e.map(e=>e.trace_id)),a=t.traces.filter(e=>!s.has(e.trace_id)&&(s.add(e.trace_id),!0));return[...e,...a]})}finally{U.current=!1,C(!1)}}},[u,N,_,I,R,M]),F=(0,s.useCallback)(()=>{let e=$.current;if(!e)return;let t=e.scrollHeight-e.scrollTop-e.clientHeight<200;!T&&_&&t&&D()},[D,T,_]),W=(0,s.useCallback)((t,s)=>{let a=new URLSearchParams(l.toString());s?a.set(t,s):a.delete(t);let r=`/w/${o}/threads`,n=a.toString();e.replace(n?`${r}?${n}`:r,{scroll:!1})},[e,o,l]);return(0,t.jsxs)("div",{className:"flex flex-col h-full",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between border-b border-border/50 px-3 md:px-5 py-2.5 gap-3",children:[(0,t.jsxs)("div",{className:"flex items-center gap-3 min-w-0",children:[(0,t.jsx)("h1",{className:"text-sm font-medium",children:"Threads"}),(0,t.jsx)("p",{className:"text-xs text-muted-foreground hidden md:block",children:"Execution traces across your agents."})]}),(0,t.jsx)("div",{className:"flex items-center gap-2",children:(0,t.jsxs)(h.Tooltip,{children:[(0,t.jsx)(h.TooltipTrigger,{render:(0,t.jsx)(x.Button,{variant:"ghost",size:"icon-sm",onClick:z,className:"text-muted-foreground"}),children:(0,t.jsx)(m.RefreshCw,{className:"size-3.5"})}),(0,t.jsx)(h.TooltipContent,{children:"Refresh"})]})})]}),(0,t.jsxs)("div",{className:"flex items-center gap-2 px-4 py-2",children:[(0,t.jsxs)(c.Select,{value:I,onValueChange:e=>W("status",e??""),children:[(0,t.jsx)(c.SelectTrigger,{className:"w-35 border-none bg-transparent shadow-none text-xs text-muted-foreground hover:bg-muted hover:text-foreground transition-colors",children:(0,t.jsx)(c.SelectValue,{placeholder:"Status: All"})}),(0,t.jsx)(c.SelectContent,{children:f.map(e=>(0,t.jsx)(c.SelectItem,{value:e.value,children:"All"===e.label?"Status: All":e.label},e.value))})]}),(0,t.jsxs)(c.Select,{value:R,onValueChange:e=>W("agentId",e??""),children:[(0,t.jsx)(c.SelectTrigger,{className:"w-40 border-none bg-transparent shadow-none text-xs text-muted-foreground hover:bg-muted hover:text-foreground transition-colors",children:R?k.find(e=>e.id===R)?.name??R:"Agent: All"}),(0,t.jsxs)(c.SelectContent,{children:[(0,t.jsx)(c.SelectItem,{value:"",children:"Agent: All"}),k.map(e=>(0,t.jsx)(c.SelectItem,{value:e.id,children:(0,t.jsxs)("span",{className:"flex items-center gap-1.5",children:[(0,t.jsx)(p,{name:e.name,avatarUrl:e.avatar_url}),e.name]})},e.id))]})]}),(0,t.jsxs)(c.Select,{value:M,onValueChange:e=>W("channel",e??""),children:[(0,t.jsx)(c.SelectTrigger,{className:"w-40 border-none bg-transparent shadow-none text-xs text-muted-foreground hover:bg-muted hover:text-foreground transition-colors",children:(0,t.jsx)(c.SelectValue,{placeholder:"Channel: All"})}),(0,t.jsxs)(c.SelectContent,{children:[(0,t.jsx)(c.SelectItem,{value:"",children:"Channel: All"}),g.map(e=>(0,t.jsxs)(c.SelectItem,{value:e.name,children:["#",e.name]},e.id))]})]})]}),(0,t.jsx)("div",{ref:$,className:"flex-1 overflow-y-auto thin-scrollbar",onScroll:F,children:S?(0,t.jsxs)("div",{className:"flex flex-col",children:[(0,t.jsx)(v,{promptWidth:"40%"}),(0,t.jsx)(v,{promptWidth:"55%"}),(0,t.jsx)(v,{promptWidth:"48%"})]}):0===N.length?(0,t.jsxs)("div",{className:"flex flex-col items-center justify-center h-full animate-[fade-up_400ms_ease-out_both]",children:[(0,t.jsx)(d.GitBranch,{className:"size-8 text-muted-foreground mb-3"}),(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:"No threads yet"}),(0,t.jsx)("p",{className:"text-xs text-muted-foreground/60 mt-1",children:"Only tasks involving multiple agents appear here."}),(I||R||M)&&(0,t.jsx)("p",{className:"text-xs text-muted-foreground/60 mt-1",children:"Try changing your filter"})]}):(0,t.jsxs)("div",{className:"flex flex-col animate-[fade-up_400ms_ease-out_both]",children:[N.map(e=>(0,t.jsx)(j,{trace:e,slug:o},e.trace_id)),T&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(v,{promptWidth:"48%"}),(0,t.jsx)(v,{promptWidth:"40%"})]})]})})]})}])}]);