@alook/app 0.0.117 → 0.0.118

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 (225) hide show
  1. package/bundled/email-worker/index.js +219 -207
  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/018pin4~.wsr7.js +1 -0
  5. package/bundled/web/.open-next/assets/_next/static/chunks/02-xuu3pg.f40.js +63 -0
  6. package/bundled/web/.open-next/assets/_next/static/chunks/028fjo.mmn73u.js +7 -0
  7. package/bundled/web/.open-next/assets/_next/static/chunks/{0tw05tsn2c~1m.js → 02j9o2uuj_oc8.js} +15 -15
  8. package/bundled/web/.open-next/assets/_next/static/chunks/058lb48xc0jj~.js +3 -0
  9. package/bundled/web/.open-next/assets/_next/static/chunks/0d3l0nm-qcu53.js +1 -0
  10. package/bundled/web/.open-next/assets/_next/static/chunks/0fw7efx7cy195.js +62 -0
  11. package/bundled/web/.open-next/assets/_next/static/chunks/0kk1judky0sd5.js +1 -0
  12. package/bundled/web/.open-next/assets/_next/static/chunks/{12bd-kqbplx9m.js → 0nj24~vvlulgh.js} +3 -3
  13. package/bundled/web/.open-next/assets/_next/static/chunks/0p87feis4b6ju.css +1 -0
  14. package/bundled/web/.open-next/assets/_next/static/chunks/0r8zw56k96o0q.js +1 -0
  15. package/bundled/web/.open-next/assets/_next/static/chunks/{042a4jeudcp22.js → 0u64son5-k77n.js} +1 -1
  16. package/bundled/web/.open-next/assets/_next/static/chunks/0xaxg3kh619o8.js +1 -0
  17. package/bundled/web/.open-next/assets/_next/static/chunks/{110sy1mmp9v~7.js → 0~lm_shhgzh8z.js} +1 -1
  18. package/bundled/web/.open-next/assets/_next/static/chunks/0~r1l8ej-9p~h.js +3 -0
  19. package/bundled/web/.open-next/assets/_next/static/chunks/{118ani.qejoy9.js → 12tz.n~x91ghm.js} +1 -1
  20. package/bundled/web/.open-next/cache/{FjNKGEvkF0L0MRIiOb2vT → odmmcsMVYHDGmqyrWQ3kc}/_global-error.cache +1 -1
  21. package/bundled/web/.open-next/cache/{FjNKGEvkF0L0MRIiOb2vT → odmmcsMVYHDGmqyrWQ3kc}/_not-found.cache +1 -1
  22. package/bundled/web/.open-next/cache/{FjNKGEvkF0L0MRIiOb2vT → odmmcsMVYHDGmqyrWQ3kc}/device.cache +1 -1
  23. package/bundled/web/.open-next/cache/{FjNKGEvkF0L0MRIiOb2vT → odmmcsMVYHDGmqyrWQ3kc}/privacy.cache +1 -1
  24. package/bundled/web/.open-next/cache/{FjNKGEvkF0L0MRIiOb2vT → odmmcsMVYHDGmqyrWQ3kc}/sitemap.xml.cache +1 -1
  25. package/bundled/web/.open-next/cloudflare/cache-assets-manifest.sql +1 -1
  26. package/bundled/web/.open-next/cloudflare/init.js +1 -1
  27. package/bundled/web/.open-next/dynamodb-provider/dynamodb-cache.json +1 -1
  28. package/bundled/web/.open-next/middleware/handler.mjs +8 -8
  29. package/bundled/web/.open-next/server-functions/default/src/web/.next/BUILD_ID +1 -1
  30. package/bundled/web/.open-next/server-functions/default/src/web/.next/app-path-routes-manifest.json +1 -2
  31. package/bundled/web/.open-next/server-functions/default/src/web/.next/build-manifest.json +3 -3
  32. package/bundled/web/.open-next/server-functions/default/src/web/.next/prerender-manifest.json +3 -3
  33. package/bundled/web/.open-next/server-functions/default/src/web/.next/routes-manifest.json +8 -17
  34. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/invite/[token]/page_client-reference-manifest.js +1 -1
  35. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/studio/new/page_client-reference-manifest.js +1 -1
  36. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/agents/[id]/activity/page/react-loadable-manifest.json +1 -1
  37. 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
  38. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/agents/[id]/chat/[convId]/page/react-loadable-manifest.json +1 -1
  39. 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
  40. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/agents/[id]/chat/page/react-loadable-manifest.json +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/react-loadable-manifest.json +1 -1
  43. 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
  44. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/agents/[id]/files/page/react-loadable-manifest.json +1 -1
  45. 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
  46. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/agents/[id]/meetings/page/react-loadable-manifest.json +1 -1
  47. 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
  48. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/agents/[id]/page/react-loadable-manifest.json +1 -1
  49. 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
  50. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/agents/new/page/react-loadable-manifest.json +1 -1
  51. 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
  52. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/agents/page/react-loadable-manifest.json +1 -1
  53. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/agents/page_client-reference-manifest.js +1 -1
  54. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/calendar/page/react-loadable-manifest.json +1 -1
  55. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/calendar/page_client-reference-manifest.js +1 -1
  56. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/flags/page/react-loadable-manifest.json +1 -1
  57. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/flags/page_client-reference-manifest.js +1 -1
  58. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/help/email-setup/page/react-loadable-manifest.json +1 -1
  59. 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
  60. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/home/page/react-loadable-manifest.json +1 -1
  61. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/home/page_client-reference-manifest.js +1 -1
  62. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/issues/page/react-loadable-manifest.json +1 -1
  63. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/issues/page_client-reference-manifest.js +1 -1
  64. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/page/react-loadable-manifest.json +1 -1
  65. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/page_client-reference-manifest.js +1 -1
  66. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/runtimes/page/react-loadable-manifest.json +1 -1
  67. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/runtimes/page_client-reference-manifest.js +1 -1
  68. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/settings/page/react-loadable-manifest.json +1 -1
  69. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/settings/page_client-reference-manifest.js +1 -1
  70. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/threads/[traceId]/page/react-loadable-manifest.json +1 -1
  71. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/threads/[traceId]/page_client-reference-manifest.js +1 -1
  72. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/threads/page/react-loadable-manifest.json +1 -1
  73. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/threads/page_client-reference-manifest.js +1 -1
  74. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/unread/page/react-loadable-manifest.json +1 -1
  75. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/unread/page_client-reference-manifest.js +1 -1
  76. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/workspaces/page_client-reference-manifest.js +1 -1
  77. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(auth)/sign-in/page_client-reference-manifest.js +1 -1
  78. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  79. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/agents/[id]/chat-init/route.js +6 -7
  80. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/agents/[id]/whitelist/route.js +7 -8
  81. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/agents/route.js +4 -5
  82. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/conversations/[id]/active-task/route.js +7 -8
  83. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/conversations/[id]/init/route.js +6 -7
  84. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/conversations/[id]/messages/route.js +8 -9
  85. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/{conversations/[id]/buffered-messages/[messageId] → daemon/conversations/[id]/messages}/route.js +8 -8
  86. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/daemon/conversations/[id]/messages/route_client-reference-manifest.js +3 -0
  87. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/daemon/register/route.js +3 -4
  88. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/daemon/sweep/route.js +5 -7
  89. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/daemon/tasks/[taskId]/complete/route.js +6 -8
  90. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/daemon/tasks/[taskId]/fail/route.js +6 -8
  91. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/daemon/tasks/[taskId]/messages/route.js +3 -4
  92. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/daemon/tasks/[taskId]/start/route.js +6 -8
  93. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/daemon/tasks/[taskId]/supersede/route.js +6 -8
  94. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/daemon/tasks/poll/route.js +5 -7
  95. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/email/notify/route.js +2 -2
  96. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/issues/[id]/comments/route.js +7 -8
  97. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/issues/[id]/route.js +7 -8
  98. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/issues/route.js +7 -8
  99. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/studios/route.js +7 -8
  100. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/tasks/[id]/retry/route.js +7 -8
  101. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/device/page_client-reference-manifest.js +1 -1
  102. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/page/react-loadable-manifest.json +2 -2
  103. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/page_client-reference-manifest.js +1 -1
  104. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/privacy/page_client-reference-manifest.js +1 -1
  105. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/templates/[id]/page_client-reference-manifest.js +1 -1
  106. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/templates/page_client-reference-manifest.js +1 -1
  107. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app-paths-manifest.json +1 -2
  108. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/05hd_server_app_api_daemon_conversations_[id]_messages_route_actions_0.iz1u1.js +3 -0
  109. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__0-63.yt._.js +3 -0
  110. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__010~hln._.js +3 -0
  111. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__01pm5bg._.js +58 -70
  112. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__08oq0ro._.js +3 -0
  113. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__0arm85_._.js +3 -0
  114. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__0gp~w40._.js +3 -0
  115. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/{[root-of-the-server]__088o0os._.js → [root-of-the-server]__0hz_j32._.js} +2 -2
  116. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__0i0ukpl._.js +58 -70
  117. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__0j5fdu2._.js +58 -70
  118. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__0syz.lm._.js +3 -0
  119. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/{[root-of-the-server]__0sf_9ve._.js → [root-of-the-server]__0vi97bn._.js} +2 -2
  120. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__0x8e1~2._.js +3 -0
  121. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[turbopack]_runtime.js +38 -43
  122. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0.gkbx8._.js +3 -0
  123. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_00-p7_0._.js +3 -0
  124. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_03gwxos._.js +5 -0
  125. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_06mrt6t._.js +3 -0
  126. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_08xh_f8._.js +1 -1
  127. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0_21cs4._.js +3 -0
  128. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0huk3rm._.js +3 -0
  129. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0jj44iu._.js +3 -3
  130. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0m4uqwa._.js +3 -3
  131. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0mibx4k._.js +3 -3
  132. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0ow_nxn._.js +3 -0
  133. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0r.02hx._.js +3 -0
  134. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0thudj4._.js +3 -0
  135. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0wbaduy._.js +3 -0
  136. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0yzq1gx._.js +3 -0
  137. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0zyolvu._.js +1 -1
  138. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_12-_-5g._.js +3 -0
  139. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_12-v7sn._.js +3 -0
  140. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/src_0wkbw.-._.js +3 -0
  141. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/[root-of-the-server]__04mf.th._.js +54 -66
  142. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/[root-of-the-server]__0e65njz._.js +54 -66
  143. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/[root-of-the-server]__0i8fzgr._.js +1 -1
  144. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/{[root-of-the-server]__10nperb._.js → [root-of-the-server]__0p4syi4._.js} +2 -2
  145. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/[turbopack]_runtime.js +38 -43
  146. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/{_0bti.y.._.js → _00ix2wb._.js} +1 -1
  147. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/_04w2ll1._.js +65 -0
  148. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/_0_.06ux._.js +1 -1
  149. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/{_0iiagkx._.js → _0c0t735._.js} +1 -1
  150. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/_0im0q-g._.js +9 -0
  151. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/_0r_ppn9._.js +1 -1
  152. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/_0vtcof8._.js +2 -2
  153. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/{_0bt_5pi._.js → _13ya7_b._.js} +1 -1
  154. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/{node_modules__pnpm_02vp72~._.js → node_modules__pnpm_00cke3h._.js} +1 -1
  155. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/{node_modules__pnpm_0y6wy4c._.js → node_modules__pnpm_088eule._.js} +1 -1
  156. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/{node_modules__pnpm_0.jtjpe._.js → node_modules__pnpm_0_gg4s6._.js} +1 -1
  157. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/{node_modules__pnpm_0k_ahqs._.js → node_modules__pnpm_0g4.m0t._.js} +1 -1
  158. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/{node_modules__pnpm_0j~49hk._.js → node_modules__pnpm_0lw6_x.._.js} +1 -1
  159. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/{node_modules__pnpm_0t783t_._.js → node_modules__pnpm_0mr.gag._.js} +1 -1
  160. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/{node_modules__pnpm_04xzk.p._.js → node_modules__pnpm_0tuts0b._.js} +1 -1
  161. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/{node_modules__pnpm_0i183cf._.js → node_modules__pnpm_0xykudd._.js} +1 -1
  162. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/src_0liq_10._.js +54 -66
  163. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/src_web_src_0~23g-y._.js +2 -2
  164. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/src_web_src_app_(app)_w_[slug]_agents_[id]_meetings_page_tsx_073~u~-._.js +1 -1
  165. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/src_web_src_lib_api_ts_0uf2r1p._.js +1 -1
  166. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/middleware-build-manifest.js +3 -3
  167. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/middleware-manifest.json +5 -5
  168. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/server-reference-manifest.js +1 -1
  169. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/server-reference-manifest.json +1 -1
  170. package/bundled/web/.open-next/server-functions/default/src/web/handler.mjs +469 -511
  171. package/bundled/web/.open-next/server-functions/default/src/web/handler.mjs.meta.json +983 -799
  172. package/bundled/web/.open-next/server-functions/default/src/web/index.mjs +5 -5
  173. package/bundled/web/migrations/0037_inbox_unread_table.sql +43 -0
  174. package/bundled/web/wrangler.toml +1 -1
  175. package/bundled/ws-do/index.js +174 -174
  176. package/dist/cli/index.js +355 -68
  177. package/dist/cli/session-runner.js +56 -9
  178. package/dist/index.js +23 -2
  179. package/package.json +1 -1
  180. package/bundled/web/.open-next/assets/_next/static/chunks/0_7t-ouonb08v.js +0 -3
  181. package/bundled/web/.open-next/assets/_next/static/chunks/0fme52sqdtk.p.js +0 -3
  182. package/bundled/web/.open-next/assets/_next/static/chunks/0h5tl-yh9wijv.js +0 -1
  183. package/bundled/web/.open-next/assets/_next/static/chunks/0j5gd-ljh6ao_.js +0 -62
  184. package/bundled/web/.open-next/assets/_next/static/chunks/0lus0pm79r-7o.js +0 -7
  185. package/bundled/web/.open-next/assets/_next/static/chunks/0m-e05qz5c6a..js +0 -1
  186. package/bundled/web/.open-next/assets/_next/static/chunks/0s-pai_2464mg.css +0 -1
  187. package/bundled/web/.open-next/assets/_next/static/chunks/0u8cu1dfn9~01.js +0 -63
  188. package/bundled/web/.open-next/assets/_next/static/chunks/0xg02n4bo4.1m.js +0 -1
  189. package/bundled/web/.open-next/assets/_next/static/chunks/18b_fy7re_rp..js +0 -1
  190. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/conversations/[id]/buffered-messages/[messageId]/route_client-reference-manifest.js +0 -3
  191. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/conversations/[id]/buffered-messages/route.js +0 -17
  192. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/conversations/[id]/buffered-messages/route_client-reference-manifest.js +0 -3
  193. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/00~o_app_api_conversations_[id]_buffered-messages_[messageId]_route_actions_0e338dt.js +0 -3
  194. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/05hd_server_app_api_conversations_[id]_buffered-messages_route_actions_0mf5n8a.js +0 -3
  195. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__0d0_qit._.js +0 -3
  196. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_00_9pus._.js +0 -3
  197. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_02.f31i._.js +0 -5
  198. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_025fm6r._.js +0 -3
  199. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_03ju0js._.js +0 -3
  200. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_06imn.m._.js +0 -3
  201. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_07hpwgw._.js +0 -3
  202. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_08y2ta9._.js +0 -3
  203. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0_kfe3c._.js +0 -3
  204. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0ahwrti._.js +0 -3
  205. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0b4pq8.._.js +0 -3
  206. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0d6rwbr._.js +0 -3
  207. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0gqpz7w._.js +0 -3
  208. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0h-fa04._.js +0 -3
  209. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0il0z_b._.js +0 -3
  210. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0l1rr.g._.js +0 -3
  211. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0p_10om._.js +0 -3
  212. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0r04wj_._.js +0 -3
  213. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0ri6_n4._.js +0 -3
  214. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0zk1_mu._.js +0 -3
  215. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0zt3sdk._.js +0 -3
  216. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_102qunz._.js +0 -3
  217. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_12i.jt7._.js +0 -3
  218. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_13lep.0._.js +0 -3
  219. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/src_web_src_lib_services_0yvxfxt._.js +0 -3
  220. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/_0g~0u9h._.js +0 -65
  221. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/_0kv_hld._.js +0 -9
  222. /package/bundled/web/.open-next/assets/_next/static/{FjNKGEvkF0L0MRIiOb2vT → odmmcsMVYHDGmqyrWQ3kc}/_buildManifest.js +0 -0
  223. /package/bundled/web/.open-next/assets/_next/static/{FjNKGEvkF0L0MRIiOb2vT → odmmcsMVYHDGmqyrWQ3kc}/_clientMiddlewareManifest.js +0 -0
  224. /package/bundled/web/.open-next/assets/_next/static/{FjNKGEvkF0L0MRIiOb2vT → odmmcsMVYHDGmqyrWQ3kc}/_ssgManifest.js +0 -0
  225. /package/bundled/web/.open-next/cache/{FjNKGEvkF0L0MRIiOb2vT → odmmcsMVYHDGmqyrWQ3kc}/robots.txt.cache +0 -0
@@ -0,0 +1,3 @@
1
+ module.exports=[332432,e=>{"use strict";e.s(["buildEmailMapKey",0,function(e,t){return`email:${e}:${t}`},"extractThreadId",0,function(e,t,a){if(e){let t=e.trim().split(/\s+/)[0];if(t)return t}return t?t.trim():a?a.trim():null}])},531941,e=>{"use strict";var t=e.i(80774),a=e.i(404478),i=e.i(732985),r=e.i(481671),n=e.i(638081),s=e.i(204960),o=e.i(924918),l=e.i(363585),d=e.i(906846),c=e.i(359838),u=e.i(383303),p=e.i(234173),m=e.i(270215),h=e.i(830665),I=e.i(944002),w=e.i(193695);e.i(195928);var g=e.i(81543),f=e.i(170865);e.i(700598);var v=e.i(291109),E=e.i(704024),R=e.i(332432),T=e.i(888247),S=e.i(719436),y=e.i(675139),A=e.i(776227),C=e.i(205054),k=e.i(726089),_=e.i(740580),N=e.i(774078);async function b(e){let{env:t}=(0,f.getCloudflareContext)(),a=(0,y.getDb)(t.DB),[i,r]=await (0,A.parseBody)(e,T.EmailNotifyRequestSchema);if(r)return r;let n=await v.queries.agent.getAgent(a,i.agentId,i.workspaceId),s=await v.queries.email.createEmail(a,{agentId:i.agentId,workspaceId:i.workspaceId,fromEmail:i.from,toEmail:i.to??"",subject:i.subject,r2Key:i.r2Key,isWhitelisted:i.isWhitelisted,forwarded:i.forwarded,messageId:i.messageId,inReplyTo:i.inReplyTo,references:i.references,direction:"inbound",attachments:i.attachments});if(i.meetingInfo&&n){let e=i.meetingInfo;await v.queries.meetingSession.createMeetingSession(a,{agentId:i.agentId,workspaceId:i.workspaceId,title:e.title||i.subject,meetingUrl:e.meetingUrl,status:i.isWhitelisted?E.MeetingStatus.SCHEDULED:E.MeetingStatus.PENDING,fromEmail:i.from,isWhitelisted:i.isWhitelisted,participants:e.attendees.map(e=>e.email),scheduledAt:e.startTime})}if(i.isWhitelisted&&n&&n.runtimeId&&n.ownerId){let e,t=(0,R.extractThreadId)(i.references,i.inReplyTo,i.messageId),r=t?(0,R.buildEmailMapKey)(n.id,t):null,o=null,l=E.TASK_TYPES.EMAIL_NOTIFICATION;if(r&&(o=await v.queries.conversationMap.findByKey(a,r,i.workspaceId)),o){let t=await v.queries.conversation.getConversation(a,o,i.workspaceId);if(t&&(l=t.type,t.type===E.TASK_TYPES.USER_DM_MESSAGE&&t.userId)){let i=await v.queries.user.getUser(a,t.userId);i&&(e={name:i.name,email:i.email})}}else{let e;if(i.sourceTaskId){let t=await v.queries.task.getTask(a,i.sourceTaskId,i.workspaceId);if(t){let r=await v.queries.conversation.getConversation(a,t.conversationId,i.workspaceId);r&&(e=r.channel)}}o=(await v.queries.conversation.createConversation(a,{workspaceId:n.workspaceId,agentId:n.id,userId:n.ownerId,title:`Email: ${i.subject}`.slice(0,50),type:E.TASK_TYPES.EMAIL_NOTIFICATION,...e&&"default"!==e?{channel:e}:{}})).id,r&&await v.queries.conversationMap.createMapping(a,{key:r,workspaceId:i.workspaceId,conversationId:o})}let d=`New email from ${i.from}: ${i.subject}`,c=JSON.stringify({emailId:s.id}),u=await v.queries.message.createMessage(a,{conversationId:o,role:"event",content:d,metadata:c});l===E.TASK_TYPES.USER_DM_MESSAGE&&(0,k.broadcastToUser)(n.ownerId,{type:"conversation.message",conversationId:o,message:{id:u.id,conversation_id:u.conversationId,role:u.role,content:u.content,task_id:u.taskId,attachment_ids:null,metadata:{emailId:s.id},created_at:u.createdAt}}).catch(()=>{});let p=new C.TaskService(a),m={conversationType:l};e&&(m.dmUser=e),i.isInternal&&(m.isInternal=!0),m.emailId=s.id;let h=i.traceId||"tr_"+(0,S.nanoid)(),I=i.traceId&&i.sourceTaskId||null,w=await p.enqueueTask(n.id,o,n.workspaceId,d,E.TASK_TYPES.EMAIL_NOTIFICATION,{contextKey:o,context:m,traceId:h,parentTaskId:I});v.queries.message.updateMessageTaskId(a,u.id,w.id).catch(()=>{}),l===E.TASK_TYPES.USER_DM_MESSAGE&&(0,k.broadcastToUser)(n.ownerId,{type:"task.created",conversationId:o,task:(0,_.taskToResponse)(w)}).catch(()=>{})}let o=new Date().toISOString().slice(0,10);return await Promise.all([(0,N.invalidate)(N.cacheKeys.overviewEmailStats(i.workspaceId)),(0,N.invalidate)(N.cacheKeys.overviewTaskStats(i.workspaceId,o))]),n?.ownerId&&(0,k.broadcastToUser)(n.ownerId,{type:"email.received",agentId:i.agentId}).catch(()=>{}),(0,A.writeJSON)({ok:!0})}e.s(["POST",0,b],930700);var x=e.i(930700);let M=new t.AppRouteRouteModule({definition:{kind:a.RouteKind.APP_ROUTE,page:"/api/email/notify/route",pathname:"/api/email/notify",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/web/src/app/api/email/notify/route.ts",nextConfigOutput:"standalone",userland:x,...{}}),{workAsyncStorage:P,workUnitAsyncStorage:q,serverHooks:O}=M;async function U(e,t,i){i.requestMeta&&(0,r.setRequestMeta)(e,i.requestMeta),M.isDev&&(0,r.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let f="/api/email/notify/route";f=f.replace(/\/index$/,"")||"/";let v=await M.prepare(e,t,{srcPage:f,multiZoneDraftMode:!1});if(!v)return t.statusCode=400,t.end("Bad Request"),null==i.waitUntil||i.waitUntil.call(i,Promise.resolve()),null;let{buildId:E,deploymentId:R,params:T,nextConfig:S,parsedUrl:y,isDraftMode:A,prerenderManifest:C,routerServerContext:k,isOnDemandRevalidate:_,revalidateOnlyGenerated:N,resolvedPathname:b,clientReferenceManifest:x,serverActionsManifest:P}=v,q=(0,o.normalizeAppPath)(f),O=!!(C.dynamicRoutes[q]||C.routes[b]),U=async()=>((null==k?void 0:k.render404)?await k.render404(e,t,y,!1):t.end("This page could not be found"),null);if(O&&!A){let e=!!C.routes[b],t=C.dynamicRoutes[q];if(t&&!1===t.fallback&&!e){if(S.adapterPath)return await U();throw new w.NoFallbackError}}let D=null;!O||M.isDev||A||(D="/index"===(D=b)?"/":D);let K=!0===M.isDev||!O,H=O&&!K;P&&x&&(0,s.setManifestsSingleton)({page:f,clientReferenceManifest:x,serverActionsManifest:P});let $=e.method||"GET",j=(0,n.getTracer)(),F=j.getActiveScopeSpan(),B=!!(null==k?void 0:k.isWrappedByNextServer),L=!!(0,r.getRequestMeta)(e,"minimalMode"),W=(0,r.getRequestMeta)(e,"incrementalCache")||await M.getIncrementalCache(e,S,C,L);null==W||W.resetRequestCache(),globalThis.__incrementalCache=W;let G={params:T,previewProps:C.preview,renderOpts:{experimental:{authInterrupts:!!S.experimental.authInterrupts},cacheComponents:!!S.cacheComponents,supportsDynamicResponse:K,incrementalCache:W,cacheLifeProfiles:S.cacheLife,waitUntil:i.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,i,r)=>M.onRequestError(e,t,i,r,k)},sharedContext:{buildId:E,deploymentId:R}},Y=new l.NodeNextRequest(e),V=new l.NodeNextResponse(t),X=d.NextRequestAdapter.fromNodeNextRequest(Y,(0,d.signalFromNodeResponse)(t));try{let r,s=async e=>M.handle(X,G).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=j.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==c.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let i=a.get("next.route");if(i){let t=`${$} ${i}`;e.setAttributes({"next.route":i,"http.route":i,"next.span_name":t}),e.updateName(t),r&&r!==e&&(r.setAttribute("http.route",i),r.updateName(t))}else e.updateName(`${$} ${f}`)}),o=async r=>{var n,o;let l=async({previousCacheEntry:a})=>{try{if(!L&&_&&N&&!a)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let n=await s(r);e.fetchMetrics=G.renderOpts.fetchMetrics;let o=G.renderOpts.pendingWaitUntil;o&&i.waitUntil&&(i.waitUntil(o),o=void 0);let l=G.renderOpts.collectedTags;if(!O)return await (0,p.sendResponse)(Y,V,n,G.renderOpts.pendingWaitUntil),null;{let e=await n.blob(),t=(0,m.toNodeOutgoingHttpHeaders)(n.headers);l&&(t[I.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==G.renderOpts.collectedRevalidate&&!(G.renderOpts.collectedRevalidate>=I.INFINITE_CACHE)&&G.renderOpts.collectedRevalidate,i=void 0===G.renderOpts.collectedExpire||G.renderOpts.collectedExpire>=I.INFINITE_CACHE?void 0:G.renderOpts.collectedExpire;return{value:{kind:g.CachedRouteKind.APP_ROUTE,status:n.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:i}}}}catch(t){throw(null==a?void 0:a.isStale)&&await M.onRequestError(e,t,{routerKind:"App Router",routePath:f,routeType:"route",revalidateReason:(0,u.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:_})},!1,k),t}},d=await M.handleResponse({req:e,nextConfig:S,cacheKey:D,routeKind:a.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:C,isRoutePPREnabled:!1,isOnDemandRevalidate:_,revalidateOnlyGenerated:N,responseGenerator:l,waitUntil:i.waitUntil,isMinimalMode:L});if(!O)return null;if((null==d||null==(n=d.value)?void 0:n.kind)!==g.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==d||null==(o=d.value)?void 0:o.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});L||t.setHeader("x-nextjs-cache",_?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),A&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let c=(0,m.fromNodeOutgoingHttpHeaders)(d.value.headers);return L&&O||c.delete(I.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||t.getHeader("Cache-Control")||c.get("Cache-Control")||c.set("Cache-Control",(0,h.getCacheControlHeader)(d.cacheControl)),await (0,p.sendResponse)(Y,V,new Response(d.value.body,{headers:c,status:d.value.status||200})),null};B&&F?await o(F):(r=j.getActiveScopeSpan(),await j.withPropagatedContext(e.headers,()=>j.trace(c.BaseServerSpan.handleRequest,{spanName:`${$} ${f}`,kind:n.SpanKind.SERVER,attributes:{"http.method":$,"http.target":e.url}},o),void 0,!B))}catch(t){if(t instanceof w.NoFallbackError||await M.onRequestError(e,t,{routerKind:"App Router",routePath:q,routeType:"route",revalidateReason:(0,u.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:_})},!1,k),O)throw t;return await (0,p.sendResponse)(Y,V,new Response(null,{status:500})),null}}e.s(["handler",0,U,"patchFetch",0,function(){return(0,i.patchFetch)({workAsyncStorage:P,workUnitAsyncStorage:q})},"routeModule",0,M,"serverHooks",0,O,"workAsyncStorage",0,P,"workUnitAsyncStorage",0,q],531941)}];
2
+
3
+ //# sourceMappingURL=_0ow_nxn._.js.map
@@ -0,0 +1,3 @@
1
+ module.exports=[726089,e=>{"use strict";var t=e.i(170865);e.i(700598);var a=e.i(704024);let r=(0,e.i(726527).createLogger)({service:"broadcast"});async function s(e,s,n){let i;try{let{env:a}=(0,t.getCloudflareContext)();i=a.DEV_WS_DO_URL;let o=await a.WS_DO_WORKER.fetch(`http://internal${e}`,{method:"POST",body:s});if(o.ok)try{return{sent:(await o.json()).sent??0}}catch{return{sent:0}}r.warn("broadcast service-binding non-ok",{...n,status:o.status})}catch{}let o=i||a.DEV_WS_DO_URL,l=await fetch(`${o}${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:s});if(!l.ok)throw Error(`broadcast failed: ${l.status}`);try{return{sent:(await l.json()).sent??0}}catch{return{sent:0}}}e.s(["broadcastToDaemon",0,function(e,a){let r=s(`/broadcast/daemon/${e}`,JSON.stringify(a),{daemonId:e,type:a.type});try{let{ctx:e}=(0,t.getCloudflareContext)();e.waitUntil(r.catch(()=>{}))}catch{}return r},"broadcastToUser",0,function(e,a){return function(e,a,r){let n=s(e,a,r);try{let{ctx:e}=(0,t.getCloudflareContext)();e.waitUntil(n.catch(()=>{}))}catch{}return n.then(()=>{})}(`/broadcast/user/${e}`,JSON.stringify(a),{userId:e,type:a.type})}])},511456,e=>{"use strict";e.i(700598);let t=(0,e.i(726527).createLogger)({service:"web",level:process.env.ALOOK_LOG_LEVEL||"info",pretty:!1});e.s(["log",0,t])},555230,e=>{"use strict";e.i(700598);var t=e.i(291109),a=e.i(704024),r=e.i(424166),s=e.i(740580),n=e.i(774078);e.s(["TaskPayloadBuilder",0,class{db;constructor(e){this.db=e}async buildFullPayloads(e,i){let o=e.filter(e=>e.type!==a.TASK_TYPES.KILL_TASK),l=[...new Set(o.map(e=>e.agentId))],[c,d,u]=l.length>0?await Promise.all([(0,n.cached)(n.cacheKeys.allAgents(i),300,()=>t.queries.agent.getAllAgentsForWorkspace(this.db,i)),(0,n.cached)(n.cacheKeys.allEmailAccounts(i),600,()=>t.queries.emailAccount.getAllEmailAccountsForWorkspace(this.db,i)),(0,n.cached)(n.cacheKeys.allColleagues(i),600,()=>t.queries.agentLink.getAllColleaguesForWorkspace(this.db,i)).catch(()=>[])]).then(([e,t,a])=>{let r=new Set(l);return[e.filter(e=>r.has(e.id)),t.filter(e=>r.has(e.agentId)),a.filter(e=>r.has(e.agentId))]}):[[],[],[]],h=new Map(c.map(e=>[e.id,e])),m=new Map;for(let e of d){let t=m.get(e.agentId)??[];t.push(e.emailAddress),m.set(e.agentId,t)}let p=new Map;for(let e of u){let t=p.get(e.agentId)??[];t.push(e),p.set(e.agentId,t)}let g=[...new Set(o.map(e=>e.conversationId).filter(Boolean))],f=new Map((g.length>0?await t.queries.conversation.getConversationsByIds(this.db,g,i):[]).map(e=>[e.id,e])),k=new Map,b=new Map,w=[];for(let o of e){if(o.type===a.TASK_TYPES.KILL_TASK){w.push({...(0,s.taskToResponse)(o),agent:null,sender:null});continue}let e=h.get(o.agentId)??null,l=[];if(e){e.emailHandle&&l.push((0,r.toAlookAddress)(e.emailHandle));let t=m.get(e.id)??[];l.push(...t)}let c=e?.instructions??"";if(e?.ownerId){if(!k.has(e.ownerId)){let a=await (0,n.cached)(n.cacheKeys.member(i,e.ownerId),600,()=>t.queries.member.getMemberByUserAndWorkspace(this.db,e.ownerId,i));k.set(e.ownerId,a?{globalInstruction:a.globalInstruction}:null)}let a=k.get(e.ownerId);a?.globalInstruction&&(c=[a.globalInstruction,c].filter(Boolean).join("\n\n"))}let d=null;if(e?.ownerId){if(!b.has(e.ownerId)){let a=await (0,n.cached)(n.cacheKeys.user(e.ownerId),1800,()=>t.queries.user.getUser(this.db,e.ownerId));b.set(e.ownerId,a?{name:a.name,email:a.email}:null)}d=b.get(e.ownerId)?.name??null}let u=f.get(o.conversationId)??null,g=u?.channel??"default",v=null;if(o.type===a.TASK_TYPES.USER_DM_MESSAGE&&u?.userId){if(!b.has(u.userId)){let e=await (0,n.cached)(n.cacheKeys.user(u.userId),1800,()=>t.queries.user.getUser(this.db,u.userId));b.set(u.userId,e?{name:e.name,email:e.email}:null)}let a=b.get(u.userId);a&&(v={name:a.name,email:a.email,is_owner:u.userId===e?.ownerId})}let I=(p.get(o.agentId)??[]).map(e=>({name:e.name,email:e.emailHandle?(0,r.toAlookAddress)(e.emailHandle):"",description:e.description,instruction:e.instruction}));w.push({...(0,s.taskToResponse)(o),channel:g,sender:v,agent:e?{instructions:c,name:e.name,runtime_config:e.runtimeConfig||{},email_handle:e.emailHandle||null,email_addresses:l,user_email:null,user_name:d,colleagues:I}:null})}return w}}])},205054,e=>{"use strict";e.i(700598);var t=e.i(291109),a=e.i(704024),r=e.i(511456),s=e.i(726089),n=e.i(740580),i=e.i(774078),o=e.i(555230);let l=t.queries.task,c=t.queries.agent,d=t.queries.message,u=t.queries.conversation,h=t.queries.issue,m=t.queries.inbox;e.s(["TaskService",0,class{db;constructor(e){this.db=e}async enqueueTask(e,t,r,s,n=a.TASK_TYPES.USER_DM_MESSAGE,o){let d=await c.getAgent(this.db,e,r);if(!d)throw Error("agent not found");if(!d.runtimeId)throw Error("agent has no runtime");if(o?.traceId&&o.parentTaskId&&await l.countTasksByTrace(this.db,o.traceId)>=a.MAX_TASKS_PER_TRACE)throw Error(`Trace limit reached (${a.MAX_TASKS_PER_TRACE} tasks). This may indicate an infinite loop between agents.`);let u=await l.createTask(this.db,{agentId:e,runtimeId:d.runtimeId,workspaceId:r,conversationId:t,prompt:s,type:n,contextKey:o?.contextKey??null,priority:0,context:o?.context,traceId:o?.traceId??null,parentTaskId:o?.parentTaskId??null});return(0,i.invalidate)(i.cacheKeys.activeTaskCounts(r)).catch(()=>{}),await this.pushTaskToDaemon(u,r).catch(()=>{}),u}async claimTask(e,t){let a=await c.getAgent(this.db,e,t);return this.claimTaskWithAgent(e,t,a)}async claimTaskWithAgent(e,t,a){if(!a)return null;if(await l.countRunningTasks(this.db,e,t)>=a.maxConcurrentTasks){let r=await l.findSteerableReplacement(this.db,e,t);if(!r||await l.countRunningTasks(this.db,e,t,r.predecessorId)>=a.maxConcurrentTasks)return null}let r=await l.claimTask(this.db,e,t);return r?(await c.updateAgentStatus(this.db,e,t,"working"),r):null}async claimTasksForRuntimes(e,t,a){let r=await l.claimKillTasks(this.db,e,a,t),s=t-r.length,n=s>0?await l.listPendingTasksByRuntimes(this.db,e,a):[],i=new Set(e),o=new Set,d=[...r],u=[];for(let e of n){if(u.length>=s)break;let t=`${e.agentId}:${e.workspaceId}`;o.has(t)||(o.add(t),u.push(e))}if(0===u.length)return d;let h=[...new Set(u.map(e=>e.agentId))],m=new Map((await c.getAgentsByIds(this.db,h,a)).map(e=>[e.id,e]));for(let e of(await Promise.all(u.map(e=>this.claimTaskWithAgent(e.agentId,e.workspaceId,m.get(e.agentId)??null)))))e&&i.has(e.runtimeId)&&d.push(e);return d}async startTask(e,t){let a=await l.startTask(this.db,e,t);if(!a)throw Error("task not in dispatched status");return a}async completeTask(e,t,a,s){let n;try{n=JSON.parse(a)}catch{n={raw:a}}let i=await l.completeTask(this.db,e,t,{result:n,sessionId:s||null});if(!i){let t=await l.getTask(this.db,e),a=t?.status??"unknown";throw r.log.warn(`completeTask failed: task is in '${a}' status`,{taskId:e}),Error(`cannot complete task in '${a}' status`)}return await this.reconcileAgentStatus(i.agentId,i.workspaceId),this.maybeUpsertUnread(i,t,null).catch(()=>{}),i}async failTask(e,i,o){let c=await l.failTask(this.db,e,i,o);if(!c){let t=await l.getTask(this.db,e),a=t?.status??"unknown";throw r.log.warn(`failTask failed: task is in '${a}' status`,{taskId:e}),Error(`cannot fail task in '${a}' status`)}if(c.type===a.TASK_TYPES.KILL_TASK)return c;let h=null;if(o){let a=null;try{if(c.runtimeId){let e=await t.queries.runtime.getAgentRuntime(this.db,c.runtimeId);a=e?.provider??null}}catch{}let r=await d.createMessage(this.db,{conversationId:c.conversationId,role:"assistant",content:o,taskId:e,metadata:JSON.stringify({error_source:"runtime",provider:a})});h=r?.id??null;try{let e=await u.getConversation(this.db,c.conversationId,i);e&&(0,s.broadcastToUser)(e.userId,{type:"conversation.message",conversationId:c.conversationId,message:(0,n.messageToResponse)(r)}).catch(()=>{})}catch{}}return await this.reconcileAgentStatus(c.agentId,c.workspaceId),await this.syncIssueStatusFromTask(c,"failed"),this.maybeUpsertUnread(c,i,h).catch(()=>{}),c}async syncIssueStatusFromTask(e,t){if(e.type!==a.TASK_TYPES.ISSUE_EVENT)return;let r=await h.getIssueByConversation(this.db,e.conversationId,e.workspaceId);if(!r||r.status===t||!await h.updateIssue(this.db,r.id,e.workspaceId,{status:t}))return;let i=await d.createMessage(this.db,{conversationId:e.conversationId,role:"event",content:`Issue status changed: ${r.status} -> ${t}`,taskId:e.id,metadata:JSON.stringify({issueId:r.id})});try{let t=await u.getConversation(this.db,e.conversationId,e.workspaceId);t&&(0,s.broadcastToUser)(t.userId,{type:"conversation.message",conversationId:e.conversationId,message:(0,n.messageToResponse)(i)}).catch(()=>{})}catch{}}async maybeUpsertUnread(e,t,a){if(!m.isUnreadEligible(e)||!e.completedAt)return;let r=await u.getConversation(this.db,e.conversationId,t);if(!r)return;let s=a??await m.findLatestAssistantMessageId(this.db,e.conversationId);await m.upsertUnreadEntry(this.db,{conversationId:e.conversationId,userId:r.userId,workspaceId:t,agentId:r.agentId,taskId:e.id,taskType:e.type,taskStatus:e.status,taskPrompt:e.prompt,completedAt:e.completedAt,latestMessageId:s})}async supersedeTask(e,t){let a=await l.supersedeTask(this.db,e,t);if(!a){let t=await l.getTask(this.db,e),a=t?.status??"unknown";throw r.log.warn(`supersedeTask failed: task is in '${a}' status`,{taskId:e}),Error(`cannot supersede task in '${a}' status`)}return await this.reconcileAgentStatus(a.agentId,a.workspaceId),a}async retryTask(e,t){let a=await l.getTask(this.db,e);if(!a||a.workspaceId!==t)throw Error("task not found");if("failed"!==a.status)throw Error("only failed tasks can be retried");let r=await l.markFailedAsSuperseded(this.db,e,t);if(!r)throw Error("failed to mark task as superseded");return{oldTask:r,newTask:await this.enqueueTask(a.agentId,a.conversationId,t,a.prompt,a.type,{contextKey:a.contextKey??null,context:a.context,traceId:a.traceId??null,parentTaskId:a.parentTaskId??null})}}async cancelActiveTask(e,n,i){let o=await l.getActiveTaskByConversation(this.db,e,n);if(!o)return null;let c=await l.cancelTask(this.db,o.id,n);if(!c)return null;if("dispatched"===o.status||"running"===o.status){let i=await l.createTask(this.db,{agentId:o.agentId,runtimeId:o.runtimeId,workspaceId:n,conversationId:e,prompt:"",type:a.TASK_TYPES.KILL_TASK,context:{target_task_id:o.id}});await l.dispatchTaskById(this.db,i.id,n);let c=await t.queries.runtime.getAgentRuntime(this.db,o.runtimeId);c&&(0,s.broadcastToDaemon)(c.daemonId,{type:"daemon.kill",workspaceId:n,agentId:o.agentId,taskId:i.id,targetTaskId:o.id}).catch(e=>r.log.warn("daemon.kill broadcast failed, relying on poll fallback",e))}return await d.createMessage(this.db,{conversationId:e,role:"assistant",content:i?.reason??"Task cancelled by you",taskId:o.id,metadata:JSON.stringify({kind:"lifecycle"})}),await this.reconcileAgentStatus(o.agentId,n),c}async reconcileAgentStatus(e,t){let a=await l.countRunningTasks(this.db,e,t);await c.updateAgentStatus(this.db,e,t,a>0?"working":"idle"),(0,i.invalidate)(i.cacheKeys.activeTaskCounts(t)).catch(()=>{})}async cancelTrace(e,t,a){for(let s of[...new Set((await l.getTraceTree(this.db,e,t)).filter(e=>["queued","dispatched","running"].includes(e.status)).map(e=>e.conversationId))])try{await this.cancelActiveTask(s,t,{reason:a?.reason})}catch(t){r.log.warn("cancelTrace: failed to cancel task",{traceId:e,convId:s,err:t})}}async pushTaskToDaemon(e,a){let r=await t.queries.runtime.getAgentRuntime(this.db,e.runtimeId);if(!r)return;let n=await l.dispatchTaskById(this.db,e.id,a);if(!n)return;let i=new o.TaskPayloadBuilder(this.db),c=await i.buildFullPayloads([n],a);if(0===c.length)return void await l.revertDispatchedToQueued(this.db,e.id,a);try{let{sent:t}=await (0,s.broadcastToDaemon)(r.daemonId,{type:"daemon.tasks",tasks:c});0===t&&await l.revertDispatchedToQueued(this.db,e.id,a)}catch{await l.revertDispatchedToQueued(this.db,e.id,a)}}}])},316308,(e,t,a)=>{"use strict";t.exports=e.r(792908).vendored["react-rsc"].ReactJsxRuntime},16700,e=>{"use strict";var t=e.i(316308);e.i(259747);let a="#27272a",r=[{name:"Purple",value:"#a855f7",gradient:["#c084fc","#a855f7","#7c3aed"],faceColor:"#2e1065"},{name:"Teal",value:"#14b8a6",gradient:["#5eead4","#14b8a6","#0d9488"],faceColor:"#134e4a"},{name:"Orange",value:"#f97316",gradient:["#fdba74","#f97316","#c2410c"],faceColor:"#7c2d12"},{name:"Blue",value:"#3b82f6",gradient:["#93c5fd","#3b82f6","#1d4ed8"],faceColor:"#1e3a5f"},{name:"Pink",value:"#f472b6",gradient:["#fda4af","#f472b6","#be185d"],faceColor:"#831843"},{name:"Yellow",value:"#eab308",gradient:["#fde047","#eab308","#a16207"],faceColor:"#713f12"},{name:"Green",value:"#22c55e",gradient:["#86efac","#22c55e","#15803d"],faceColor:"#14532d"},{name:"Beige",value:"#d6ccb8",gradient:["#e8e0d4","#d6ccb8","#b8a990"],faceColor:"#57534e"},{name:"Red",value:"#ef4444",gradient:["#fca5a5","#ef4444","#991b1b"],faceColor:"#7f1d1d"},{name:"Lake Blue",value:"#6366f1",gradient:["#a5b4fc","#6366f1","#3730a3"],faceColor:"#312e81"},{name:"Gray",value:"#9ca3af",gradient:["#d4d4d8","#9ca3af","#6b7280"],faceColor:"#374151"},{name:"Deep Purple",value:"#8b5cf6",gradient:["#c4b5fd","#8b5cf6","#5b21b6"],faceColor:"#3b0764"}],s=["circle","rounded","hexagon","task","book","mail","calendar","bulb","folder","mountain"],n=["dot","dash","hookL","smile","caret","arrow","oh"],i=(e,r)=>{let s=r??e,n=(r,n=a)=>(0,t.jsxs)("g",{children:[(0,t.jsx)("g",{transform:`translate(${-r}, 0)`,children:e(n)}),(0,t.jsx)("g",{transform:`translate(${r}, 0)`,children:s(n)})]});return n.displayName="EyePair",n},o=Object.keys({dots:{name:"Dots",render:i(e=>(0,t.jsx)("circle",{cx:"0",cy:"0",r:"7",fill:e}))},big:{name:"Big",render:i(e=>(0,t.jsxs)("g",{children:[(0,t.jsx)("circle",{cx:"0",cy:"0",r:"10",fill:e}),(0,t.jsx)("circle",{cx:"2.5",cy:"-3",r:"3.5",fill:"rgba(255,255,255,0.9)"})]}))},rings:{name:"Rings",render:i(e=>(0,t.jsx)("ellipse",{cx:"0",cy:"0",rx:"8.5",ry:"9.5",fill:"none",stroke:e,strokeWidth:"4.5"}))},arches:{name:"Arches",render:i(e=>(0,t.jsx)("path",{d:"M-10 2 Q0 -9 10 2",fill:"none",stroke:e,strokeWidth:"5",strokeLinecap:"round"}))},lines:{name:"Lines",render:i(e=>(0,t.jsx)("path",{d:"M-10 0 Q0 -6 10 0",fill:"none",stroke:e,strokeWidth:"5",strokeLinecap:"round"}))},happy:{name:"Happy",render:i(e=>(0,t.jsx)("path",{d:"M-10 5 Q0 -11 10 5",fill:"none",stroke:e,strokeWidth:"5",strokeLinecap:"round"}))},sleepy:{name:"Sleepy",render:i(e=>(0,t.jsx)("path",{d:"M-10 -2 Q0 8 10 -2",fill:"none",stroke:e,strokeWidth:"5",strokeLinecap:"round"}))},shy:{name:"Shy",render:i(e=>(0,t.jsx)("ellipse",{cx:"0",cy:"0",rx:"8.5",ry:"9.5",fill:e}))},wink:{name:"Wink",render:(e,r=a)=>(0,t.jsxs)("g",{children:[(0,t.jsx)("g",{transform:`translate(${-e}, 0)`,children:(0,t.jsx)("circle",{cx:"0",cy:"0",r:"7",fill:r})}),(0,t.jsx)("g",{transform:`translate(${e}, 0)`,children:(0,t.jsx)("path",{d:"M-10 2 Q0 -9 10 2",fill:"none",stroke:r,strokeWidth:"5",strokeLinecap:"round"})})]})}});function l(e){return e[Math.floor(Math.random()*e.length)]}e.s(["randomConfig",0,function(){return{shape:l(s),eye:l(o),nose:l(n),bg:Math.floor(Math.random()*r.length)}},"serializeAvatarConfig",0,function(e){return"avatar:"+JSON.stringify(e)}])},651011,(e,t,a)=>{"use strict";t.exports=e.r(792908).vendored["react-rsc"].ReactServerDOMTurbopackServer},638451,e=>{"use strict";e.s(["AnimatedAvatar",()=>t]);let t=(0,e.i(651011).registerClientReference)(function(){throw Error("Attempted to call AnimatedAvatar() from the server but AnimatedAvatar is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/web/src/components/avatar/animated-avatar.tsx <module evaluation>","AnimatedAvatar")},11494,e=>{"use strict";e.s(["AnimatedAvatar",()=>t]);let t=(0,e.i(651011).registerClientReference)(function(){throw Error("Attempted to call AnimatedAvatar() from the server but AnimatedAvatar is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/web/src/components/avatar/animated-avatar.tsx","AnimatedAvatar")},789634,e=>{"use strict";e.i(638451);var t=e.i(11494);e.n(t)},404362,e=>{"use strict";e.s(["AvatarPickerDialog",()=>t]);let t=(0,e.i(651011).registerClientReference)(function(){throw Error("Attempted to call AvatarPickerDialog() from the server but AvatarPickerDialog is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/web/src/components/avatar/avatar-picker-dialog.tsx <module evaluation>","AvatarPickerDialog")},660539,e=>{"use strict";e.s(["AvatarPickerDialog",()=>t]);let t=(0,e.i(651011).registerClientReference)(function(){throw Error("Attempted to call AvatarPickerDialog() from the server but AvatarPickerDialog is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/web/src/components/avatar/avatar-picker-dialog.tsx","AvatarPickerDialog")},206501,e=>{"use strict";e.i(404362);var t=e.i(660539);e.n(t)},877008,e=>{"use strict";e.s(["AgentAvatar",()=>t]);let t=(0,e.i(651011).registerClientReference)(function(){throw Error("Attempted to call AgentAvatar() from the server but AgentAvatar is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/web/src/components/avatar/agent-avatar.tsx <module evaluation>","AgentAvatar")},487427,e=>{"use strict";e.s(["AgentAvatar",()=>t]);let t=(0,e.i(651011).registerClientReference)(function(){throw Error("Attempted to call AgentAvatar() from the server but AgentAvatar is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/web/src/components/avatar/agent-avatar.tsx","AgentAvatar")},929119,e=>{"use strict";e.i(877008);var t=e.i(487427);e.n(t)},941775,e=>{"use strict";e.i(16700),e.i(789634),e.i(206501),e.i(929119),e.s([])},56981,e=>{e.v(t=>Promise.all(["server/chunks/07mc_@better-auth_memory-adapter_dist_index_mjs_0736-hy._.js"].map(t=>e.l(t))).then(()=>t(665211)))},534759,e=>{e.v(t=>Promise.all(["server/chunks/0e94_better-auth_dist_adapters_kysely-adapter_index_mjs_0nf4_d_._.js"].map(t=>e.l(t))).then(()=>t(458714)))},394293,e=>{e.v(t=>Promise.all(["server/chunks/11ag_@better-auth_kysely-adapter_dist_bun-sqlite-dialect-na--YwnN_mjs_0vd~ts1._.js"].map(t=>e.l(t))).then(()=>t(359283)))},724281,e=>{e.v(t=>Promise.all(["server/chunks/11ag_@better-auth_kysely-adapter_dist_node-sqlite-dialect_mjs_0z45rqy._.js"].map(t=>e.l(t))).then(()=>t(631543)))},862941,e=>{e.v(t=>Promise.all(["server/chunks/11ag_@better-auth_kysely-adapter_dist_d1-sqlite-dialect-C2B7YsIT_mjs_11aa~n_._.js"].map(t=>e.l(t))).then(()=>t(893029)))}];
2
+
3
+ //# sourceMappingURL=_0r.02hx._.js.map
@@ -0,0 +1,3 @@
1
+ module.exports=[897069,e=>{"use strict";var t=e.i(424166);e.s(["parsePromptMentions",0,function(e,a){if(!e||0===a.length)return{enrichedPrompt:e,mentions:[]};let r=a.slice().sort((e,t)=>t.name.length-e.name.length),n=[],s=[];for(let t=0;t<e.length;t++){if("@"!==e[t]||!function(e,t){if(0===t)return!0;let a=e.charCodeAt(t-1);return(!(a>=48)||!(a<=57))&&(!(a>=65)||!(a<=90))&&(!(a>=97)||!(a<=122))&&95!==a}(e,t))continue;let a=t+1;for(let n of r){let r=a+n.name.length;if(!(r>e.length)&&e.slice(a,r).toLowerCase()===n.name.toLowerCase()&&function(e,t){if(t>=e.length)return!0;let a=e.charCodeAt(t);return(!(a>=48)||!(a<=57))&&(!(a>=65)||!(a<=90))&&(!(a>=97)||!(a<=122))&&95!==a}(e,r)){if(s.some(e=>t>=e.start&&t<e.end))break;s.push({start:t,end:r,agent:n});break}}}let i=e;for(let e=s.length-1;e>=0;e--){let a=s[e],r={name:a.agent.name,email:a.agent.emailHandle?(0,t.toAlookAddress)(a.agent.emailHandle):null,description:a.agent.description};if(n.unshift(r),a.agent.emailHandle){let e=`@${a.agent.name} (${(0,t.toAlookAddress)(a.agent.emailHandle)})`;i=i.slice(0,a.start)+e+i.slice(a.end)}else i=i.slice(0,a.start)+`@${a.agent.name}`+i.slice(a.end)}return{enrichedPrompt:i,mentions:n}}])},632577,e=>e.a(async(t,a)=>{try{var r=e.i(170865);e.i(700598);var n=e.i(291109),s=e.i(704024),i=e.i(888247),o=e.i(897069),l=e.i(318172),d=e.i(675139),c=e.i(719436),u=e.i(152327),p=e.i(47962),h=e.i(776227),g=e.i(740580),m=e.i(205054),f=e.i(511456),w=e.i(726089),v=e.i(774078),R=t([u]);[u]=R.then?(await R)():R;let E=(0,u.withAuth)(async(e,t)=>{let a=await (0,p.withWorkspaceMember)(e,t);if(a instanceof Response)return a;let{env:s}=(0,r.getCloudflareContext)(),i=(0,d.getDb)(s.DB),o=t.params?.id;if(!o)return(0,h.writeError)("conversation id is required",400);if(!await n.queries.conversation.getConversation(i,o,a.workspaceId))return(0,h.writeError)("conversation not found",404);let l=new URL(e.url),c=l.searchParams.get("around_task");if(c){let e=await n.queries.message.listMessagesAroundTask(i,o,c);return(0,h.writeJSON)(e.map(g.messageToResponse))}let u=l.searchParams.get("limit"),m=l.searchParams.get("before")||void 0,f=l.searchParams.get("before_id")||void 0,w=u?Math.min(Math.max(parseInt(u,10)||20,1),100):void 0,{messages:v,has_more:R}=await n.queries.message.listMessages(i,o,{limit:w,before:m,beforeId:f});return(0,h.writeJSON)({messages:v.map(g.messageToResponse),has_more:R})}),C=(0,u.withAuth)(async(e,t)=>{let a,u,R=await (0,p.withWorkspaceMember)(e,t);if(R instanceof Response)return R;let{env:E}=(0,r.getCloudflareContext)(),C=(0,d.getDb)(E.DB),y=E.EMAIL_BUCKET,T=t.params?.id;if(!T)return(0,h.writeError)("conversation id is required",400);let A=(e.headers.get("content-type")??"").includes("multipart/form-data"),I=[];if(A){let t;try{t=await e.formData()}catch{return(0,h.writeError)("invalid form data",400)}for(let[e,r]of(a=t.get("content")||"",t.entries()))"file"===e&&r instanceof File&&I.push(r)}else{let[t,r]=await (0,h.parseBody)(e,i.CreateMessageRequestSchema);if(r)return r;a=t.content}if(A&&!a)return(0,h.writeError)("content is required",400);if(I.length>10)return(0,h.writeError)("too many files (max 10)",400);for(let e of I)if(e.size>0xa00000)return(0,h.writeError)(`file "${e.name}" exceeds 10 MB limit`,413);let k=await n.queries.conversation.getConversation(C,T,R.workspaceId);if(!k)return(0,h.writeError)("conversation not found",404);let x=[];for(let e of I){let t=e.name.replace(/[/\\]/g,"_").replace(/\.\./g,"_").slice(0,255)||"file",a=e.type||"application/octet-stream",r="art_"+(0,c.nanoid)(),s=`artifacts/${R.workspaceId}/${k.agentId}/${T}/${r}/${t}`;await y.put(s,await e.arrayBuffer(),{httpMetadata:{contentType:a}}),await n.queries.artifact.createArtifact(C,{id:r,conversationId:T,agentId:k.agentId,workspaceId:R.workspaceId,filename:t,contentType:a,size:e.size,r2Key:s,source:"attachment"}),x.push(r)}let S=await n.queries.message.createMessage(C,{conversationId:T,role:"user",content:a,attachmentIds:x.length>0?JSON.stringify(x):null});(0,w.broadcastToUser)(t.userId,{type:"conversation.message",conversationId:T,message:(0,g.messageToResponse)(S)}).catch(()=>{}),n.queries.conversation.updateConversationTitle(C,T,(0,l.truncateTitle)(a)).catch(()=>{});let b=a;if(a.includes("@"))try{let e=await n.queries.agent.listAgents(C,R.workspaceId,t.userId),{enrichedPrompt:r,mentions:s}=(0,o.parsePromptMentions)(a,e);if(b=r,s.length>0){let e=new Set;u={mentioned_agents:s.filter(t=>!e.has(t.name)&&(e.add(t.name),!0)).map(e=>({name:e.name,email:e.email,...e.description?{description:e.description}:{}}))}}}catch{}let q={...x.length>0?{attachment_ids:x}:{},...u},P="tr_"+(0,c.nanoid)(),_=new m.TaskService(C);try{let e=await _.enqueueTask(k.agentId,T,R.workspaceId,b,s.TASK_TYPES.USER_DM_MESSAGE,{contextKey:T,context:Object.keys(q).length>0?q:void 0,traceId:P,parentTaskId:null});n.queries.message.updateMessageTaskId(C,S.id,e.id).catch(()=>{});let a=new Date().toISOString().slice(0,10);return(0,v.invalidate)(v.cacheKeys.overviewTaskStats(R.workspaceId,a)).catch(()=>{}),(0,w.broadcastToUser)(t.userId,{type:"task.updated",taskId:e.id,agentId:e.agentId,status:"queued"}).catch(()=>{}),(0,h.writeJSON)({message:(0,g.messageToResponse)(S),task:(0,g.taskToResponse)(e)},201)}catch(e){return f.log.error("enqueueTask error",{err:e}),(0,h.writeJSON)({message:(0,g.messageToResponse)(S),task:null,error:e instanceof Error?e.message:"Unknown error"},500)}});e.s(["GET",0,E,"POST",0,C]),a()}catch(e){a(e)}},!1),506993,e=>e.a(async(t,a)=>{try{var r=e.i(80774),n=e.i(404478),s=e.i(732985),i=e.i(481671),o=e.i(638081),l=e.i(204960),d=e.i(924918),c=e.i(363585),u=e.i(906846),p=e.i(359838),h=e.i(383303),g=e.i(234173),m=e.i(270215),f=e.i(830665),w=e.i(944002),v=e.i(193695);e.i(195928);var R=e.i(81543),E=e.i(632577),C=t([E]);[E]=C.then?(await C)():C;let T=new r.AppRouteRouteModule({definition:{kind:n.RouteKind.APP_ROUTE,page:"/api/conversations/[id]/messages/route",pathname:"/api/conversations/[id]/messages",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/web/src/app/api/conversations/[id]/messages/route.ts",nextConfigOutput:"standalone",userland:E,...{}}),{workAsyncStorage:A,workUnitAsyncStorage:I,serverHooks:k}=T;async function y(e,t,a){a.requestMeta&&(0,i.setRequestMeta)(e,a.requestMeta),T.isDev&&(0,i.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let r="/api/conversations/[id]/messages/route";r=r.replace(/\/index$/,"")||"/";let s=await T.prepare(e,t,{srcPage:r,multiZoneDraftMode:!1});if(!s)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:E,deploymentId:C,params:y,nextConfig:A,parsedUrl:I,isDraftMode:k,prerenderManifest:x,routerServerContext:S,isOnDemandRevalidate:b,revalidateOnlyGenerated:q,resolvedPathname:P,clientReferenceManifest:_,serverActionsManifest:M}=s,N=(0,d.normalizeAppPath)(r),O=!!(x.dynamicRoutes[N]||x.routes[P]),U=async()=>((null==S?void 0:S.render404)?await S.render404(e,t,I,!1):t.end("This page could not be found"),null);if(O&&!k){let e=!!x.routes[P],t=x.dynamicRoutes[N];if(t&&!1===t.fallback&&!e){if(A.adapterPath)return await U();throw new v.NoFallbackError}}let H=null;!O||T.isDev||k||(H=P,H="/index"===H?"/":H);let D=!0===T.isDev||!O,$=O&&!D;M&&_&&(0,l.setManifestsSingleton)({page:r,clientReferenceManifest:_,serverActionsManifest:M});let B=e.method||"GET",K=(0,o.getTracer)(),F=K.getActiveScopeSpan(),L=!!(null==S?void 0:S.isWrappedByNextServer),j=!!(0,i.getRequestMeta)(e,"minimalMode"),G=(0,i.getRequestMeta)(e,"incrementalCache")||await T.getIncrementalCache(e,A,x,j);null==G||G.resetRequestCache(),globalThis.__incrementalCache=G;let J={params:y,previewProps:x.preview,renderOpts:{experimental:{authInterrupts:!!A.experimental.authInterrupts},cacheComponents:!!A.cacheComponents,supportsDynamicResponse:D,incrementalCache:G,cacheLifeProfiles:A.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,r,n)=>T.onRequestError(e,t,r,n,S)},sharedContext:{buildId:E,deploymentId:C}},W=new c.NodeNextRequest(e),z=new c.NodeNextResponse(t),V=u.NextRequestAdapter.fromNodeNextRequest(W,(0,u.signalFromNodeResponse)(t));try{let s,i=async e=>T.handle(V,J).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=K.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==p.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=a.get("next.route");if(n){let t=`${B} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t),s&&s!==e&&(s.setAttribute("http.route",n),s.updateName(t))}else e.updateName(`${B} ${r}`)}),l=async s=>{var o,l;let d=async({previousCacheEntry:n})=>{try{if(!j&&b&&q&&!n)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let r=await i(s);e.fetchMetrics=J.renderOpts.fetchMetrics;let o=J.renderOpts.pendingWaitUntil;o&&a.waitUntil&&(a.waitUntil(o),o=void 0);let l=J.renderOpts.collectedTags;if(!O)return await (0,g.sendResponse)(W,z,r,J.renderOpts.pendingWaitUntil),null;{let e=await r.blob(),t=(0,m.toNodeOutgoingHttpHeaders)(r.headers);l&&(t[w.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==J.renderOpts.collectedRevalidate&&!(J.renderOpts.collectedRevalidate>=w.INFINITE_CACHE)&&J.renderOpts.collectedRevalidate,n=void 0===J.renderOpts.collectedExpire||J.renderOpts.collectedExpire>=w.INFINITE_CACHE?void 0:J.renderOpts.collectedExpire;return{value:{kind:R.CachedRouteKind.APP_ROUTE,status:r.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:n}}}}catch(t){throw(null==n?void 0:n.isStale)&&await T.onRequestError(e,t,{routerKind:"App Router",routePath:r,routeType:"route",revalidateReason:(0,h.getRevalidateReason)({isStaticGeneration:$,isOnDemandRevalidate:b})},!1,S),t}},c=await T.handleResponse({req:e,nextConfig:A,cacheKey:H,routeKind:n.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:x,isRoutePPREnabled:!1,isOnDemandRevalidate:b,revalidateOnlyGenerated:q,responseGenerator:d,waitUntil:a.waitUntil,isMinimalMode:j});if(!O)return null;if((null==c||null==(o=c.value)?void 0:o.kind)!==R.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==c||null==(l=c.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});j||t.setHeader("x-nextjs-cache",b?"REVALIDATED":c.isMiss?"MISS":c.isStale?"STALE":"HIT"),k&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let u=(0,m.fromNodeOutgoingHttpHeaders)(c.value.headers);return j&&O||u.delete(w.NEXT_CACHE_TAGS_HEADER),!c.cacheControl||t.getHeader("Cache-Control")||u.get("Cache-Control")||u.set("Cache-Control",(0,f.getCacheControlHeader)(c.cacheControl)),await (0,g.sendResponse)(W,z,new Response(c.value.body,{headers:u,status:c.value.status||200})),null};L&&F?await l(F):(s=K.getActiveScopeSpan(),await K.withPropagatedContext(e.headers,()=>K.trace(p.BaseServerSpan.handleRequest,{spanName:`${B} ${r}`,kind:o.SpanKind.SERVER,attributes:{"http.method":B,"http.target":e.url}},l),void 0,!L))}catch(t){if(t instanceof v.NoFallbackError||await T.onRequestError(e,t,{routerKind:"App Router",routePath:N,routeType:"route",revalidateReason:(0,h.getRevalidateReason)({isStaticGeneration:$,isOnDemandRevalidate:b})},!1,S),O)throw t;return await (0,g.sendResponse)(W,z,new Response(null,{status:500})),null}}e.s(["handler",0,y,"patchFetch",0,function(){return(0,s.patchFetch)({workAsyncStorage:A,workUnitAsyncStorage:I})},"routeModule",0,T,"serverHooks",0,k,"workAsyncStorage",0,A,"workUnitAsyncStorage",0,I]),a()}catch(e){a(e)}},!1)];
2
+
3
+ //# sourceMappingURL=_0thudj4._.js.map
@@ -0,0 +1,3 @@
1
+ module.exports=[726089,e=>{"use strict";var t=e.i(170865);e.i(700598);var a=e.i(704024);let s=(0,e.i(726527).createLogger)({service:"broadcast"});async function n(e,n,r){let i;try{let{env:a}=(0,t.getCloudflareContext)();i=a.DEV_WS_DO_URL;let o=await a.WS_DO_WORKER.fetch(`http://internal${e}`,{method:"POST",body:n});if(o.ok)try{return{sent:(await o.json()).sent??0}}catch{return{sent:0}}s.warn("broadcast service-binding non-ok",{...r,status:o.status})}catch{}let o=i||a.DEV_WS_DO_URL,l=await fetch(`${o}${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:n});if(!l.ok)throw Error(`broadcast failed: ${l.status}`);try{return{sent:(await l.json()).sent??0}}catch{return{sent:0}}}e.s(["broadcastToDaemon",0,function(e,a){let s=n(`/broadcast/daemon/${e}`,JSON.stringify(a),{daemonId:e,type:a.type});try{let{ctx:e}=(0,t.getCloudflareContext)();e.waitUntil(s.catch(()=>{}))}catch{}return s},"broadcastToUser",0,function(e,a){return function(e,a,s){let r=n(e,a,s);try{let{ctx:e}=(0,t.getCloudflareContext)();e.waitUntil(r.catch(()=>{}))}catch{}return r.then(()=>{})}(`/broadcast/user/${e}`,JSON.stringify(a),{userId:e,type:a.type})}])},511456,e=>{"use strict";e.i(700598);let t=(0,e.i(726527).createLogger)({service:"web",level:process.env.ALOOK_LOG_LEVEL||"info",pretty:!1});e.s(["log",0,t])},555230,e=>{"use strict";e.i(700598);var t=e.i(291109),a=e.i(704024),s=e.i(424166),n=e.i(740580),r=e.i(774078);e.s(["TaskPayloadBuilder",0,class{db;constructor(e){this.db=e}async buildFullPayloads(e,i){let o=e.filter(e=>e.type!==a.TASK_TYPES.KILL_TASK),l=[...new Set(o.map(e=>e.agentId))],[d,c,u]=l.length>0?await Promise.all([(0,r.cached)(r.cacheKeys.allAgents(i),300,()=>t.queries.agent.getAllAgentsForWorkspace(this.db,i)),(0,r.cached)(r.cacheKeys.allEmailAccounts(i),600,()=>t.queries.emailAccount.getAllEmailAccountsForWorkspace(this.db,i)),(0,r.cached)(r.cacheKeys.allColleagues(i),600,()=>t.queries.agentLink.getAllColleaguesForWorkspace(this.db,i)).catch(()=>[])]).then(([e,t,a])=>{let s=new Set(l);return[e.filter(e=>s.has(e.id)),t.filter(e=>s.has(e.agentId)),a.filter(e=>s.has(e.agentId))]}):[[],[],[]],h=new Map(d.map(e=>[e.id,e])),p=new Map;for(let e of c){let t=p.get(e.agentId)??[];t.push(e.emailAddress),p.set(e.agentId,t)}let g=new Map;for(let e of u){let t=g.get(e.agentId)??[];t.push(e),g.set(e.agentId,t)}let w=[...new Set(o.map(e=>e.conversationId).filter(Boolean))],m=new Map((w.length>0?await t.queries.conversation.getConversationsByIds(this.db,w,i):[]).map(e=>[e.id,e])),I=new Map,k=new Map,y=[];for(let o of e){if(o.type===a.TASK_TYPES.KILL_TASK){y.push({...(0,n.taskToResponse)(o),agent:null,sender:null});continue}let e=h.get(o.agentId)??null,l=[];if(e){e.emailHandle&&l.push((0,s.toAlookAddress)(e.emailHandle));let t=p.get(e.id)??[];l.push(...t)}let d=e?.instructions??"";if(e?.ownerId){if(!I.has(e.ownerId)){let a=await (0,r.cached)(r.cacheKeys.member(i,e.ownerId),600,()=>t.queries.member.getMemberByUserAndWorkspace(this.db,e.ownerId,i));I.set(e.ownerId,a?{globalInstruction:a.globalInstruction}:null)}let a=I.get(e.ownerId);a?.globalInstruction&&(d=[a.globalInstruction,d].filter(Boolean).join("\n\n"))}let c=null;if(e?.ownerId){if(!k.has(e.ownerId)){let a=await (0,r.cached)(r.cacheKeys.user(e.ownerId),1800,()=>t.queries.user.getUser(this.db,e.ownerId));k.set(e.ownerId,a?{name:a.name,email:a.email}:null)}c=k.get(e.ownerId)?.name??null}let u=m.get(o.conversationId)??null,w=u?.channel??"default",f=null;if(o.type===a.TASK_TYPES.USER_DM_MESSAGE&&u?.userId){if(!k.has(u.userId)){let e=await (0,r.cached)(r.cacheKeys.user(u.userId),1800,()=>t.queries.user.getUser(this.db,u.userId));k.set(u.userId,e?{name:e.name,email:e.email}:null)}let a=k.get(u.userId);a&&(f={name:a.name,email:a.email,is_owner:u.userId===e?.ownerId})}let T=(g.get(o.agentId)??[]).map(e=>({name:e.name,email:e.emailHandle?(0,s.toAlookAddress)(e.emailHandle):"",description:e.description,instruction:e.instruction}));y.push({...(0,n.taskToResponse)(o),channel:w,sender:f,agent:e?{instructions:d,name:e.name,runtime_config:e.runtimeConfig||{},email_handle:e.emailHandle||null,email_addresses:l,user_email:null,user_name:c,colleagues:T}:null})}return y}}])},205054,e=>{"use strict";e.i(700598);var t=e.i(291109),a=e.i(704024),s=e.i(511456),n=e.i(726089),r=e.i(740580),i=e.i(774078),o=e.i(555230);let l=t.queries.task,d=t.queries.agent,c=t.queries.message,u=t.queries.conversation,h=t.queries.issue,p=t.queries.inbox;e.s(["TaskService",0,class{db;constructor(e){this.db=e}async enqueueTask(e,t,s,n,r=a.TASK_TYPES.USER_DM_MESSAGE,o){let c=await d.getAgent(this.db,e,s);if(!c)throw Error("agent not found");if(!c.runtimeId)throw Error("agent has no runtime");if(o?.traceId&&o.parentTaskId&&await l.countTasksByTrace(this.db,o.traceId)>=a.MAX_TASKS_PER_TRACE)throw Error(`Trace limit reached (${a.MAX_TASKS_PER_TRACE} tasks). This may indicate an infinite loop between agents.`);let u=await l.createTask(this.db,{agentId:e,runtimeId:c.runtimeId,workspaceId:s,conversationId:t,prompt:n,type:r,contextKey:o?.contextKey??null,priority:0,context:o?.context,traceId:o?.traceId??null,parentTaskId:o?.parentTaskId??null});return(0,i.invalidate)(i.cacheKeys.activeTaskCounts(s)).catch(()=>{}),await this.pushTaskToDaemon(u,s).catch(()=>{}),u}async claimTask(e,t){let a=await d.getAgent(this.db,e,t);return this.claimTaskWithAgent(e,t,a)}async claimTaskWithAgent(e,t,a){if(!a)return null;if(await l.countRunningTasks(this.db,e,t)>=a.maxConcurrentTasks){let s=await l.findSteerableReplacement(this.db,e,t);if(!s||await l.countRunningTasks(this.db,e,t,s.predecessorId)>=a.maxConcurrentTasks)return null}let s=await l.claimTask(this.db,e,t);return s?(await d.updateAgentStatus(this.db,e,t,"working"),s):null}async claimTasksForRuntimes(e,t,a){let s=await l.claimKillTasks(this.db,e,a,t),n=t-s.length,r=n>0?await l.listPendingTasksByRuntimes(this.db,e,a):[],i=new Set(e),o=new Set,c=[...s],u=[];for(let e of r){if(u.length>=n)break;let t=`${e.agentId}:${e.workspaceId}`;o.has(t)||(o.add(t),u.push(e))}if(0===u.length)return c;let h=[...new Set(u.map(e=>e.agentId))],p=new Map((await d.getAgentsByIds(this.db,h,a)).map(e=>[e.id,e]));for(let e of(await Promise.all(u.map(e=>this.claimTaskWithAgent(e.agentId,e.workspaceId,p.get(e.agentId)??null)))))e&&i.has(e.runtimeId)&&c.push(e);return c}async startTask(e,t){let a=await l.startTask(this.db,e,t);if(!a)throw Error("task not in dispatched status");return a}async completeTask(e,t,a,n){let r;try{r=JSON.parse(a)}catch{r={raw:a}}let i=await l.completeTask(this.db,e,t,{result:r,sessionId:n||null});if(!i){let t=await l.getTask(this.db,e),a=t?.status??"unknown";throw s.log.warn(`completeTask failed: task is in '${a}' status`,{taskId:e}),Error(`cannot complete task in '${a}' status`)}return await this.reconcileAgentStatus(i.agentId,i.workspaceId),this.maybeUpsertUnread(i,t,null).catch(()=>{}),i}async failTask(e,i,o){let d=await l.failTask(this.db,e,i,o);if(!d){let t=await l.getTask(this.db,e),a=t?.status??"unknown";throw s.log.warn(`failTask failed: task is in '${a}' status`,{taskId:e}),Error(`cannot fail task in '${a}' status`)}if(d.type===a.TASK_TYPES.KILL_TASK)return d;let h=null;if(o){let a=null;try{if(d.runtimeId){let e=await t.queries.runtime.getAgentRuntime(this.db,d.runtimeId);a=e?.provider??null}}catch{}let s=await c.createMessage(this.db,{conversationId:d.conversationId,role:"assistant",content:o,taskId:e,metadata:JSON.stringify({error_source:"runtime",provider:a})});h=s?.id??null;try{let e=await u.getConversation(this.db,d.conversationId,i);e&&(0,n.broadcastToUser)(e.userId,{type:"conversation.message",conversationId:d.conversationId,message:(0,r.messageToResponse)(s)}).catch(()=>{})}catch{}}return await this.reconcileAgentStatus(d.agentId,d.workspaceId),await this.syncIssueStatusFromTask(d,"failed"),this.maybeUpsertUnread(d,i,h).catch(()=>{}),d}async syncIssueStatusFromTask(e,t){if(e.type!==a.TASK_TYPES.ISSUE_EVENT)return;let s=await h.getIssueByConversation(this.db,e.conversationId,e.workspaceId);if(!s||s.status===t||!await h.updateIssue(this.db,s.id,e.workspaceId,{status:t}))return;let i=await c.createMessage(this.db,{conversationId:e.conversationId,role:"event",content:`Issue status changed: ${s.status} -> ${t}`,taskId:e.id,metadata:JSON.stringify({issueId:s.id})});try{let t=await u.getConversation(this.db,e.conversationId,e.workspaceId);t&&(0,n.broadcastToUser)(t.userId,{type:"conversation.message",conversationId:e.conversationId,message:(0,r.messageToResponse)(i)}).catch(()=>{})}catch{}}async maybeUpsertUnread(e,t,a){if(!p.isUnreadEligible(e)||!e.completedAt)return;let s=await u.getConversation(this.db,e.conversationId,t);if(!s)return;let n=a??await p.findLatestAssistantMessageId(this.db,e.conversationId);await p.upsertUnreadEntry(this.db,{conversationId:e.conversationId,userId:s.userId,workspaceId:t,agentId:s.agentId,taskId:e.id,taskType:e.type,taskStatus:e.status,taskPrompt:e.prompt,completedAt:e.completedAt,latestMessageId:n})}async supersedeTask(e,t){let a=await l.supersedeTask(this.db,e,t);if(!a){let t=await l.getTask(this.db,e),a=t?.status??"unknown";throw s.log.warn(`supersedeTask failed: task is in '${a}' status`,{taskId:e}),Error(`cannot supersede task in '${a}' status`)}return await this.reconcileAgentStatus(a.agentId,a.workspaceId),a}async retryTask(e,t){let a=await l.getTask(this.db,e);if(!a||a.workspaceId!==t)throw Error("task not found");if("failed"!==a.status)throw Error("only failed tasks can be retried");let s=await l.markFailedAsSuperseded(this.db,e,t);if(!s)throw Error("failed to mark task as superseded");return{oldTask:s,newTask:await this.enqueueTask(a.agentId,a.conversationId,t,a.prompt,a.type,{contextKey:a.contextKey??null,context:a.context,traceId:a.traceId??null,parentTaskId:a.parentTaskId??null})}}async cancelActiveTask(e,r,i){let o=await l.getActiveTaskByConversation(this.db,e,r);if(!o)return null;let d=await l.cancelTask(this.db,o.id,r);if(!d)return null;if("dispatched"===o.status||"running"===o.status){let i=await l.createTask(this.db,{agentId:o.agentId,runtimeId:o.runtimeId,workspaceId:r,conversationId:e,prompt:"",type:a.TASK_TYPES.KILL_TASK,context:{target_task_id:o.id}});await l.dispatchTaskById(this.db,i.id,r);let d=await t.queries.runtime.getAgentRuntime(this.db,o.runtimeId);d&&(0,n.broadcastToDaemon)(d.daemonId,{type:"daemon.kill",workspaceId:r,agentId:o.agentId,taskId:i.id,targetTaskId:o.id}).catch(e=>s.log.warn("daemon.kill broadcast failed, relying on poll fallback",e))}return await c.createMessage(this.db,{conversationId:e,role:"assistant",content:i?.reason??"Task cancelled by you",taskId:o.id,metadata:JSON.stringify({kind:"lifecycle"})}),await this.reconcileAgentStatus(o.agentId,r),d}async reconcileAgentStatus(e,t){let a=await l.countRunningTasks(this.db,e,t);await d.updateAgentStatus(this.db,e,t,a>0?"working":"idle"),(0,i.invalidate)(i.cacheKeys.activeTaskCounts(t)).catch(()=>{})}async cancelTrace(e,t,a){for(let n of[...new Set((await l.getTraceTree(this.db,e,t)).filter(e=>["queued","dispatched","running"].includes(e.status)).map(e=>e.conversationId))])try{await this.cancelActiveTask(n,t,{reason:a?.reason})}catch(t){s.log.warn("cancelTrace: failed to cancel task",{traceId:e,convId:n,err:t})}}async pushTaskToDaemon(e,a){let s=await t.queries.runtime.getAgentRuntime(this.db,e.runtimeId);if(!s)return;let r=await l.dispatchTaskById(this.db,e.id,a);if(!r)return;let i=new o.TaskPayloadBuilder(this.db),d=await i.buildFullPayloads([r],a);if(0===d.length)return void await l.revertDispatchedToQueued(this.db,e.id,a);try{let{sent:t}=await (0,n.broadcastToDaemon)(s.daemonId,{type:"daemon.tasks",tasks:d});0===t&&await l.revertDispatchedToQueued(this.db,e.id,a)}catch{await l.revertDispatchedToQueued(this.db,e.id,a)}}}])},825526,e=>e.a(async(t,a)=>{try{var s=e.i(170865),n=e.i(675139),r=e.i(152327),i=e.i(47962),o=e.i(776227),l=e.i(740580),d=e.i(205054),c=e.i(726089),u=e.i(774078),h=t([r]);[r]=h.then?(await h)():h;let p=(0,r.withAuth)(async(e,t)=>{let a=await (0,i.withWorkspaceMember)(e,t);if(a instanceof Response)return a;let{env:r}=(0,s.getCloudflareContext)(),h=(0,n.getDb)(r.DB),p=t.params?.id;if(!p)return(0,o.writeError)("task id is required",400);let g=new d.TaskService(h);try{let{oldTask:e,newTask:s}=await g.retryTask(p,a.workspaceId),n=new Date().toISOString().slice(0,10);return(0,u.invalidate)(u.cacheKeys.overviewTaskStats(a.workspaceId,n)).catch(()=>{}),(0,c.broadcastToUser)(t.userId,{type:"task.updated",taskId:e.id,agentId:e.agentId,status:"superseded"}).catch(()=>{}),(0,c.broadcastToUser)(t.userId,{type:"task.updated",taskId:s.id,agentId:s.agentId,status:"queued"}).catch(()=>{}),(0,o.writeJSON)((0,l.taskToResponse)(s))}catch(e){return(0,o.writeError)(e instanceof Error?e.message:"Unknown error",400)}});e.s(["POST",0,p]),a()}catch(e){a(e)}},!1),867955,e=>e.a(async(t,a)=>{try{var s=e.i(80774),n=e.i(404478),r=e.i(732985),i=e.i(481671),o=e.i(638081),l=e.i(204960),d=e.i(924918),c=e.i(363585),u=e.i(906846),h=e.i(359838),p=e.i(383303),g=e.i(234173),w=e.i(270215),m=e.i(830665),I=e.i(944002),k=e.i(193695);e.i(195928);var y=e.i(81543),f=e.i(825526),T=t([f]);[f]=T.then?(await T)():T;let v=new s.AppRouteRouteModule({definition:{kind:n.RouteKind.APP_ROUTE,page:"/api/tasks/[id]/retry/route",pathname:"/api/tasks/[id]/retry",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/web/src/app/api/tasks/[id]/retry/route.ts",nextConfigOutput:"standalone",userland:f,...{}}),{workAsyncStorage:_,workUnitAsyncStorage:A,serverHooks:S}=v;async function b(e,t,a){a.requestMeta&&(0,i.setRequestMeta)(e,a.requestMeta),v.isDev&&(0,i.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let s="/api/tasks/[id]/retry/route";s=s.replace(/\/index$/,"")||"/";let r=await v.prepare(e,t,{srcPage:s,multiZoneDraftMode:!1});if(!r)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:f,deploymentId:T,params:b,nextConfig:_,parsedUrl:A,isDraftMode:S,prerenderManifest:E,routerServerContext:R,isOnDemandRevalidate:C,revalidateOnlyGenerated:x,resolvedPathname:P,clientReferenceManifest:q,serverActionsManifest:K}=r,U=(0,d.normalizeAppPath)(s),O=!!(E.dynamicRoutes[U]||E.routes[P]),M=async()=>((null==R?void 0:R.render404)?await R.render404(e,t,A,!1):t.end("This page could not be found"),null);if(O&&!S){let e=!!E.routes[P],t=E.dynamicRoutes[U];if(t&&!1===t.fallback&&!e){if(_.adapterPath)return await M();throw new k.NoFallbackError}}let N=null;!O||v.isDev||S||(N=P,N="/index"===N?"/":N);let D=!0===v.isDev||!O,$=O&&!D;K&&q&&(0,l.setManifestsSingleton)({page:s,clientReferenceManifest:q,serverActionsManifest:K});let L=e.method||"GET",H=(0,o.getTracer)(),j=H.getActiveScopeSpan(),B=!!(null==R?void 0:R.isWrappedByNextServer),F=!!(0,i.getRequestMeta)(e,"minimalMode"),W=(0,i.getRequestMeta)(e,"incrementalCache")||await v.getIncrementalCache(e,_,E,F);null==W||W.resetRequestCache(),globalThis.__incrementalCache=W;let Y={params:b,previewProps:E.preview,renderOpts:{experimental:{authInterrupts:!!_.experimental.authInterrupts},cacheComponents:!!_.cacheComponents,supportsDynamicResponse:D,incrementalCache:W,cacheLifeProfiles:_.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,s,n)=>v.onRequestError(e,t,s,n,R)},sharedContext:{buildId:f,deploymentId:T}},J=new c.NodeNextRequest(e),V=new c.NodeNextResponse(t),G=u.NextRequestAdapter.fromNodeNextRequest(J,(0,u.signalFromNodeResponse)(t));try{let r,i=async e=>v.handle(G,Y).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=H.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==h.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=a.get("next.route");if(n){let t=`${L} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t),r&&r!==e&&(r.setAttribute("http.route",n),r.updateName(t))}else e.updateName(`${L} ${s}`)}),l=async r=>{var o,l;let d=async({previousCacheEntry:n})=>{try{if(!F&&C&&x&&!n)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await i(r);e.fetchMetrics=Y.renderOpts.fetchMetrics;let o=Y.renderOpts.pendingWaitUntil;o&&a.waitUntil&&(a.waitUntil(o),o=void 0);let l=Y.renderOpts.collectedTags;if(!O)return await (0,g.sendResponse)(J,V,s,Y.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,w.toNodeOutgoingHttpHeaders)(s.headers);l&&(t[I.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==Y.renderOpts.collectedRevalidate&&!(Y.renderOpts.collectedRevalidate>=I.INFINITE_CACHE)&&Y.renderOpts.collectedRevalidate,n=void 0===Y.renderOpts.collectedExpire||Y.renderOpts.collectedExpire>=I.INFINITE_CACHE?void 0:Y.renderOpts.collectedExpire;return{value:{kind:y.CachedRouteKind.APP_ROUTE,status:s.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:n}}}}catch(t){throw(null==n?void 0:n.isStale)&&await v.onRequestError(e,t,{routerKind:"App Router",routePath:s,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:$,isOnDemandRevalidate:C})},!1,R),t}},c=await v.handleResponse({req:e,nextConfig:_,cacheKey:N,routeKind:n.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:E,isRoutePPREnabled:!1,isOnDemandRevalidate:C,revalidateOnlyGenerated:x,responseGenerator:d,waitUntil:a.waitUntil,isMinimalMode:F});if(!O)return null;if((null==c||null==(o=c.value)?void 0:o.kind)!==y.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==c||null==(l=c.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});F||t.setHeader("x-nextjs-cache",C?"REVALIDATED":c.isMiss?"MISS":c.isStale?"STALE":"HIT"),S&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let u=(0,w.fromNodeOutgoingHttpHeaders)(c.value.headers);return F&&O||u.delete(I.NEXT_CACHE_TAGS_HEADER),!c.cacheControl||t.getHeader("Cache-Control")||u.get("Cache-Control")||u.set("Cache-Control",(0,m.getCacheControlHeader)(c.cacheControl)),await (0,g.sendResponse)(J,V,new Response(c.value.body,{headers:u,status:c.value.status||200})),null};B&&j?await l(j):(r=H.getActiveScopeSpan(),await H.withPropagatedContext(e.headers,()=>H.trace(h.BaseServerSpan.handleRequest,{spanName:`${L} ${s}`,kind:o.SpanKind.SERVER,attributes:{"http.method":L,"http.target":e.url}},l),void 0,!B))}catch(t){if(t instanceof k.NoFallbackError||await v.onRequestError(e,t,{routerKind:"App Router",routePath:U,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:$,isOnDemandRevalidate:C})},!1,R),O)throw t;return await (0,g.sendResponse)(J,V,new Response(null,{status:500})),null}}e.s(["handler",0,b,"patchFetch",0,function(){return(0,r.patchFetch)({workAsyncStorage:_,workUnitAsyncStorage:A})},"routeModule",0,v,"serverHooks",0,S,"workAsyncStorage",0,_,"workUnitAsyncStorage",0,A]),a()}catch(e){a(e)}},!1),56981,e=>{e.v(t=>Promise.all(["server/chunks/07mc_@better-auth_memory-adapter_dist_index_mjs_0736-hy._.js"].map(t=>e.l(t))).then(()=>t(665211)))},534759,e=>{e.v(t=>Promise.all(["server/chunks/0e94_better-auth_dist_adapters_kysely-adapter_index_mjs_0nf4_d_._.js"].map(t=>e.l(t))).then(()=>t(458714)))},394293,e=>{e.v(t=>Promise.all(["server/chunks/11ag_@better-auth_kysely-adapter_dist_bun-sqlite-dialect-na--YwnN_mjs_0vd~ts1._.js"].map(t=>e.l(t))).then(()=>t(359283)))},724281,e=>{e.v(t=>Promise.all(["server/chunks/11ag_@better-auth_kysely-adapter_dist_node-sqlite-dialect_mjs_0z45rqy._.js"].map(t=>e.l(t))).then(()=>t(631543)))},862941,e=>{e.v(t=>Promise.all(["server/chunks/11ag_@better-auth_kysely-adapter_dist_d1-sqlite-dialect-C2B7YsIT_mjs_11aa~n_._.js"].map(t=>e.l(t))).then(()=>t(893029)))}];
2
+
3
+ //# sourceMappingURL=_0wbaduy._.js.map
@@ -0,0 +1,3 @@
1
+ module.exports=[726089,e=>{"use strict";var t=e.i(170865);e.i(700598);var a=e.i(704024);let s=(0,e.i(726527).createLogger)({service:"broadcast"});async function n(e,n,r){let i;try{let{env:a}=(0,t.getCloudflareContext)();i=a.DEV_WS_DO_URL;let o=await a.WS_DO_WORKER.fetch(`http://internal${e}`,{method:"POST",body:n});if(o.ok)try{return{sent:(await o.json()).sent??0}}catch{return{sent:0}}s.warn("broadcast service-binding non-ok",{...r,status:o.status})}catch{}let o=i||a.DEV_WS_DO_URL,l=await fetch(`${o}${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:n});if(!l.ok)throw Error(`broadcast failed: ${l.status}`);try{return{sent:(await l.json()).sent??0}}catch{return{sent:0}}}e.s(["broadcastToDaemon",0,function(e,a){let s=n(`/broadcast/daemon/${e}`,JSON.stringify(a),{daemonId:e,type:a.type});try{let{ctx:e}=(0,t.getCloudflareContext)();e.waitUntil(s.catch(()=>{}))}catch{}return s},"broadcastToUser",0,function(e,a){return function(e,a,s){let r=n(e,a,s);try{let{ctx:e}=(0,t.getCloudflareContext)();e.waitUntil(r.catch(()=>{}))}catch{}return r.then(()=>{})}(`/broadcast/user/${e}`,JSON.stringify(a),{userId:e,type:a.type})}])},511456,e=>{"use strict";e.i(700598);let t=(0,e.i(726527).createLogger)({service:"web",level:process.env.ALOOK_LOG_LEVEL||"info",pretty:!1});e.s(["log",0,t])},555230,e=>{"use strict";e.i(700598);var t=e.i(291109),a=e.i(704024),s=e.i(424166),n=e.i(740580),r=e.i(774078);e.s(["TaskPayloadBuilder",0,class{db;constructor(e){this.db=e}async buildFullPayloads(e,i){let o=e.filter(e=>e.type!==a.TASK_TYPES.KILL_TASK),l=[...new Set(o.map(e=>e.agentId))],[d,c,u]=l.length>0?await Promise.all([(0,r.cached)(r.cacheKeys.allAgents(i),300,()=>t.queries.agent.getAllAgentsForWorkspace(this.db,i)),(0,r.cached)(r.cacheKeys.allEmailAccounts(i),600,()=>t.queries.emailAccount.getAllEmailAccountsForWorkspace(this.db,i)),(0,r.cached)(r.cacheKeys.allColleagues(i),600,()=>t.queries.agentLink.getAllColleaguesForWorkspace(this.db,i)).catch(()=>[])]).then(([e,t,a])=>{let s=new Set(l);return[e.filter(e=>s.has(e.id)),t.filter(e=>s.has(e.agentId)),a.filter(e=>s.has(e.agentId))]}):[[],[],[]],h=new Map(d.map(e=>[e.id,e])),p=new Map;for(let e of c){let t=p.get(e.agentId)??[];t.push(e.emailAddress),p.set(e.agentId,t)}let w=new Map;for(let e of u){let t=w.get(e.agentId)??[];t.push(e),w.set(e.agentId,t)}let g=[...new Set(o.map(e=>e.conversationId).filter(Boolean))],m=new Map((g.length>0?await t.queries.conversation.getConversationsByIds(this.db,g,i):[]).map(e=>[e.id,e])),k=new Map,I=new Map,f=[];for(let o of e){if(o.type===a.TASK_TYPES.KILL_TASK){f.push({...(0,n.taskToResponse)(o),agent:null,sender:null});continue}let e=h.get(o.agentId)??null,l=[];if(e){e.emailHandle&&l.push((0,s.toAlookAddress)(e.emailHandle));let t=p.get(e.id)??[];l.push(...t)}let d=e?.instructions??"";if(e?.ownerId){if(!k.has(e.ownerId)){let a=await (0,r.cached)(r.cacheKeys.member(i,e.ownerId),600,()=>t.queries.member.getMemberByUserAndWorkspace(this.db,e.ownerId,i));k.set(e.ownerId,a?{globalInstruction:a.globalInstruction}:null)}let a=k.get(e.ownerId);a?.globalInstruction&&(d=[a.globalInstruction,d].filter(Boolean).join("\n\n"))}let c=null;if(e?.ownerId){if(!I.has(e.ownerId)){let a=await (0,r.cached)(r.cacheKeys.user(e.ownerId),1800,()=>t.queries.user.getUser(this.db,e.ownerId));I.set(e.ownerId,a?{name:a.name,email:a.email}:null)}c=I.get(e.ownerId)?.name??null}let u=m.get(o.conversationId)??null,g=u?.channel??"default",T=null;if(o.type===a.TASK_TYPES.USER_DM_MESSAGE&&u?.userId){if(!I.has(u.userId)){let e=await (0,r.cached)(r.cacheKeys.user(u.userId),1800,()=>t.queries.user.getUser(this.db,u.userId));I.set(u.userId,e?{name:e.name,email:e.email}:null)}let a=I.get(u.userId);a&&(T={name:a.name,email:a.email,is_owner:u.userId===e?.ownerId})}let v=(w.get(o.agentId)??[]).map(e=>({name:e.name,email:e.emailHandle?(0,s.toAlookAddress)(e.emailHandle):"",description:e.description,instruction:e.instruction}));f.push({...(0,n.taskToResponse)(o),channel:g,sender:T,agent:e?{instructions:d,name:e.name,runtime_config:e.runtimeConfig||{},email_handle:e.emailHandle||null,email_addresses:l,user_email:null,user_name:c,colleagues:v}:null})}return f}}])},205054,e=>{"use strict";e.i(700598);var t=e.i(291109),a=e.i(704024),s=e.i(511456),n=e.i(726089),r=e.i(740580),i=e.i(774078),o=e.i(555230);let l=t.queries.task,d=t.queries.agent,c=t.queries.message,u=t.queries.conversation,h=t.queries.issue,p=t.queries.inbox;e.s(["TaskService",0,class{db;constructor(e){this.db=e}async enqueueTask(e,t,s,n,r=a.TASK_TYPES.USER_DM_MESSAGE,o){let c=await d.getAgent(this.db,e,s);if(!c)throw Error("agent not found");if(!c.runtimeId)throw Error("agent has no runtime");if(o?.traceId&&o.parentTaskId&&await l.countTasksByTrace(this.db,o.traceId)>=a.MAX_TASKS_PER_TRACE)throw Error(`Trace limit reached (${a.MAX_TASKS_PER_TRACE} tasks). This may indicate an infinite loop between agents.`);let u=await l.createTask(this.db,{agentId:e,runtimeId:c.runtimeId,workspaceId:s,conversationId:t,prompt:n,type:r,contextKey:o?.contextKey??null,priority:0,context:o?.context,traceId:o?.traceId??null,parentTaskId:o?.parentTaskId??null});return(0,i.invalidate)(i.cacheKeys.activeTaskCounts(s)).catch(()=>{}),await this.pushTaskToDaemon(u,s).catch(()=>{}),u}async claimTask(e,t){let a=await d.getAgent(this.db,e,t);return this.claimTaskWithAgent(e,t,a)}async claimTaskWithAgent(e,t,a){if(!a)return null;if(await l.countRunningTasks(this.db,e,t)>=a.maxConcurrentTasks){let s=await l.findSteerableReplacement(this.db,e,t);if(!s||await l.countRunningTasks(this.db,e,t,s.predecessorId)>=a.maxConcurrentTasks)return null}let s=await l.claimTask(this.db,e,t);return s?(await d.updateAgentStatus(this.db,e,t,"working"),s):null}async claimTasksForRuntimes(e,t,a){let s=await l.claimKillTasks(this.db,e,a,t),n=t-s.length,r=n>0?await l.listPendingTasksByRuntimes(this.db,e,a):[],i=new Set(e),o=new Set,c=[...s],u=[];for(let e of r){if(u.length>=n)break;let t=`${e.agentId}:${e.workspaceId}`;o.has(t)||(o.add(t),u.push(e))}if(0===u.length)return c;let h=[...new Set(u.map(e=>e.agentId))],p=new Map((await d.getAgentsByIds(this.db,h,a)).map(e=>[e.id,e]));for(let e of(await Promise.all(u.map(e=>this.claimTaskWithAgent(e.agentId,e.workspaceId,p.get(e.agentId)??null)))))e&&i.has(e.runtimeId)&&c.push(e);return c}async startTask(e,t){let a=await l.startTask(this.db,e,t);if(!a)throw Error("task not in dispatched status");return a}async completeTask(e,t,a,n){let r;try{r=JSON.parse(a)}catch{r={raw:a}}let i=await l.completeTask(this.db,e,t,{result:r,sessionId:n||null});if(!i){let t=await l.getTask(this.db,e),a=t?.status??"unknown";throw s.log.warn(`completeTask failed: task is in '${a}' status`,{taskId:e}),Error(`cannot complete task in '${a}' status`)}return await this.reconcileAgentStatus(i.agentId,i.workspaceId),this.maybeUpsertUnread(i,t,null).catch(()=>{}),i}async failTask(e,i,o){let d=await l.failTask(this.db,e,i,o);if(!d){let t=await l.getTask(this.db,e),a=t?.status??"unknown";throw s.log.warn(`failTask failed: task is in '${a}' status`,{taskId:e}),Error(`cannot fail task in '${a}' status`)}if(d.type===a.TASK_TYPES.KILL_TASK)return d;let h=null;if(o){let a=null;try{if(d.runtimeId){let e=await t.queries.runtime.getAgentRuntime(this.db,d.runtimeId);a=e?.provider??null}}catch{}let s=await c.createMessage(this.db,{conversationId:d.conversationId,role:"assistant",content:o,taskId:e,metadata:JSON.stringify({error_source:"runtime",provider:a})});h=s?.id??null;try{let e=await u.getConversation(this.db,d.conversationId,i);e&&(0,n.broadcastToUser)(e.userId,{type:"conversation.message",conversationId:d.conversationId,message:(0,r.messageToResponse)(s)}).catch(()=>{})}catch{}}return await this.reconcileAgentStatus(d.agentId,d.workspaceId),await this.syncIssueStatusFromTask(d,"failed"),this.maybeUpsertUnread(d,i,h).catch(()=>{}),d}async syncIssueStatusFromTask(e,t){if(e.type!==a.TASK_TYPES.ISSUE_EVENT)return;let s=await h.getIssueByConversation(this.db,e.conversationId,e.workspaceId);if(!s||s.status===t||!await h.updateIssue(this.db,s.id,e.workspaceId,{status:t}))return;let i=await c.createMessage(this.db,{conversationId:e.conversationId,role:"event",content:`Issue status changed: ${s.status} -> ${t}`,taskId:e.id,metadata:JSON.stringify({issueId:s.id})});try{let t=await u.getConversation(this.db,e.conversationId,e.workspaceId);t&&(0,n.broadcastToUser)(t.userId,{type:"conversation.message",conversationId:e.conversationId,message:(0,r.messageToResponse)(i)}).catch(()=>{})}catch{}}async maybeUpsertUnread(e,t,a){if(!p.isUnreadEligible(e)||!e.completedAt)return;let s=await u.getConversation(this.db,e.conversationId,t);if(!s)return;let n=a??await p.findLatestAssistantMessageId(this.db,e.conversationId);await p.upsertUnreadEntry(this.db,{conversationId:e.conversationId,userId:s.userId,workspaceId:t,agentId:s.agentId,taskId:e.id,taskType:e.type,taskStatus:e.status,taskPrompt:e.prompt,completedAt:e.completedAt,latestMessageId:n})}async supersedeTask(e,t){let a=await l.supersedeTask(this.db,e,t);if(!a){let t=await l.getTask(this.db,e),a=t?.status??"unknown";throw s.log.warn(`supersedeTask failed: task is in '${a}' status`,{taskId:e}),Error(`cannot supersede task in '${a}' status`)}return await this.reconcileAgentStatus(a.agentId,a.workspaceId),a}async retryTask(e,t){let a=await l.getTask(this.db,e);if(!a||a.workspaceId!==t)throw Error("task not found");if("failed"!==a.status)throw Error("only failed tasks can be retried");let s=await l.markFailedAsSuperseded(this.db,e,t);if(!s)throw Error("failed to mark task as superseded");return{oldTask:s,newTask:await this.enqueueTask(a.agentId,a.conversationId,t,a.prompt,a.type,{contextKey:a.contextKey??null,context:a.context,traceId:a.traceId??null,parentTaskId:a.parentTaskId??null})}}async cancelActiveTask(e,r,i){let o=await l.getActiveTaskByConversation(this.db,e,r);if(!o)return null;let d=await l.cancelTask(this.db,o.id,r);if(!d)return null;if("dispatched"===o.status||"running"===o.status){let i=await l.createTask(this.db,{agentId:o.agentId,runtimeId:o.runtimeId,workspaceId:r,conversationId:e,prompt:"",type:a.TASK_TYPES.KILL_TASK,context:{target_task_id:o.id}});await l.dispatchTaskById(this.db,i.id,r);let d=await t.queries.runtime.getAgentRuntime(this.db,o.runtimeId);d&&(0,n.broadcastToDaemon)(d.daemonId,{type:"daemon.kill",workspaceId:r,agentId:o.agentId,taskId:i.id,targetTaskId:o.id}).catch(e=>s.log.warn("daemon.kill broadcast failed, relying on poll fallback",e))}return await c.createMessage(this.db,{conversationId:e,role:"assistant",content:i?.reason??"Task cancelled by you",taskId:o.id,metadata:JSON.stringify({kind:"lifecycle"})}),await this.reconcileAgentStatus(o.agentId,r),d}async reconcileAgentStatus(e,t){let a=await l.countRunningTasks(this.db,e,t);await d.updateAgentStatus(this.db,e,t,a>0?"working":"idle"),(0,i.invalidate)(i.cacheKeys.activeTaskCounts(t)).catch(()=>{})}async cancelTrace(e,t,a){for(let n of[...new Set((await l.getTraceTree(this.db,e,t)).filter(e=>["queued","dispatched","running"].includes(e.status)).map(e=>e.conversationId))])try{await this.cancelActiveTask(n,t,{reason:a?.reason})}catch(t){s.log.warn("cancelTrace: failed to cancel task",{traceId:e,convId:n,err:t})}}async pushTaskToDaemon(e,a){let s=await t.queries.runtime.getAgentRuntime(this.db,e.runtimeId);if(!s)return;let r=await l.dispatchTaskById(this.db,e.id,a);if(!r)return;let i=new o.TaskPayloadBuilder(this.db),d=await i.buildFullPayloads([r],a);if(0===d.length)return void await l.revertDispatchedToQueued(this.db,e.id,a);try{let{sent:t}=await (0,n.broadcastToDaemon)(s.daemonId,{type:"daemon.tasks",tasks:d});0===t&&await l.revertDispatchedToQueued(this.db,e.id,a)}catch{await l.revertDispatchedToQueued(this.db,e.id,a)}}}])},258704,e=>e.a(async(t,a)=>{try{var s=e.i(170865);e.i(700598);var n=e.i(291109),r=e.i(675139),i=e.i(152327),o=e.i(47962),l=e.i(776227),d=e.i(740580),c=e.i(205054),u=e.i(726089),h=e.i(774078),p=t([i]);[i]=p.then?(await p)():p;let w=(0,i.withAuth)(async(e,t)=>{let a=await (0,o.withWorkspaceMember)(e,t);if(a instanceof Response)return a;let{env:i}=(0,s.getCloudflareContext)(),c=(0,r.getDb)(i.DB),u=t.params?.id;if(!u)return(0,l.writeError)("conversation id is required",400);if(!await n.queries.conversation.getConversation(c,u,a.workspaceId))return(0,l.writeError)("conversation not found",404);let h=await n.queries.task.getActiveTaskByConversation(c,u,a.workspaceId);return h?(0,l.writeJSON)((0,d.taskToResponse)(h)):new Response(null,{status:204})}),g=(0,i.withAuth)(async(e,t)=>{let a=await (0,o.withWorkspaceMember)(e,t);if(a instanceof Response)return a;let{env:i}=(0,s.getCloudflareContext)(),p=(0,r.getDb)(i.DB),w=t.params?.id;if(!w)return(0,l.writeError)("conversation id is required",400);if(!await n.queries.conversation.getConversation(p,w,a.workspaceId))return(0,l.writeError)("conversation not found",404);let g=new c.TaskService(p),m=await g.cancelActiveTask(w,a.workspaceId);if(!m)return(0,l.writeError)("no active task to cancel",404);let k=new Date().toISOString().slice(0,10);return(0,h.invalidate)(h.cacheKeys.overviewTaskStats(a.workspaceId,k)).catch(()=>{}),(0,u.broadcastToUser)(t.userId,{type:"task.updated",taskId:m.id,agentId:m.agentId,status:"cancelled"}).catch(()=>{}),(0,l.writeJSON)((0,d.taskToResponse)(m))});e.s(["DELETE",0,g,"GET",0,w]),a()}catch(e){a(e)}},!1),993823,e=>e.a(async(t,a)=>{try{var s=e.i(80774),n=e.i(404478),r=e.i(732985),i=e.i(481671),o=e.i(638081),l=e.i(204960),d=e.i(924918),c=e.i(363585),u=e.i(906846),h=e.i(359838),p=e.i(383303),w=e.i(234173),g=e.i(270215),m=e.i(830665),k=e.i(944002),I=e.i(193695);e.i(195928);var f=e.i(81543),T=e.i(258704),v=t([T]);[T]=v.then?(await v)():v;let b=new s.AppRouteRouteModule({definition:{kind:n.RouteKind.APP_ROUTE,page:"/api/conversations/[id]/active-task/route",pathname:"/api/conversations/[id]/active-task",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/web/src/app/api/conversations/[id]/active-task/route.ts",nextConfigOutput:"standalone",userland:T,...{}}),{workAsyncStorage:_,workUnitAsyncStorage:A,serverHooks:E}=b;async function y(e,t,a){a.requestMeta&&(0,i.setRequestMeta)(e,a.requestMeta),b.isDev&&(0,i.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let s="/api/conversations/[id]/active-task/route";s=s.replace(/\/index$/,"")||"/";let r=await b.prepare(e,t,{srcPage:s,multiZoneDraftMode:!1});if(!r)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:T,deploymentId:v,params:y,nextConfig:_,parsedUrl:A,isDraftMode:E,prerenderManifest:S,routerServerContext:R,isOnDemandRevalidate:C,revalidateOnlyGenerated:x,resolvedPathname:P,clientReferenceManifest:q,serverActionsManifest:K}=r,O=(0,d.normalizeAppPath)(s),U=!!(S.dynamicRoutes[O]||S.routes[P]),M=async()=>((null==R?void 0:R.render404)?await R.render404(e,t,A,!1):t.end("This page could not be found"),null);if(U&&!E){let e=!!S.routes[P],t=S.dynamicRoutes[O];if(t&&!1===t.fallback&&!e){if(_.adapterPath)return await M();throw new I.NoFallbackError}}let N=null;!U||b.isDev||E||(N=P,N="/index"===N?"/":N);let D=!0===b.isDev||!U,$=U&&!D;K&&q&&(0,l.setManifestsSingleton)({page:s,clientReferenceManifest:q,serverActionsManifest:K});let L=e.method||"GET",B=(0,o.getTracer)(),H=B.getActiveScopeSpan(),j=!!(null==R?void 0:R.isWrappedByNextServer),F=!!(0,i.getRequestMeta)(e,"minimalMode"),W=(0,i.getRequestMeta)(e,"incrementalCache")||await b.getIncrementalCache(e,_,S,F);null==W||W.resetRequestCache(),globalThis.__incrementalCache=W;let Y={params:y,previewProps:S.preview,renderOpts:{experimental:{authInterrupts:!!_.experimental.authInterrupts},cacheComponents:!!_.cacheComponents,supportsDynamicResponse:D,incrementalCache:W,cacheLifeProfiles:_.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,s,n)=>b.onRequestError(e,t,s,n,R)},sharedContext:{buildId:T,deploymentId:v}},J=new c.NodeNextRequest(e),G=new c.NodeNextResponse(t),V=u.NextRequestAdapter.fromNodeNextRequest(J,(0,u.signalFromNodeResponse)(t));try{let r,i=async e=>b.handle(V,Y).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=B.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==h.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=a.get("next.route");if(n){let t=`${L} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t),r&&r!==e&&(r.setAttribute("http.route",n),r.updateName(t))}else e.updateName(`${L} ${s}`)}),l=async r=>{var o,l;let d=async({previousCacheEntry:n})=>{try{if(!F&&C&&x&&!n)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await i(r);e.fetchMetrics=Y.renderOpts.fetchMetrics;let o=Y.renderOpts.pendingWaitUntil;o&&a.waitUntil&&(a.waitUntil(o),o=void 0);let l=Y.renderOpts.collectedTags;if(!U)return await (0,w.sendResponse)(J,G,s,Y.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,g.toNodeOutgoingHttpHeaders)(s.headers);l&&(t[k.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==Y.renderOpts.collectedRevalidate&&!(Y.renderOpts.collectedRevalidate>=k.INFINITE_CACHE)&&Y.renderOpts.collectedRevalidate,n=void 0===Y.renderOpts.collectedExpire||Y.renderOpts.collectedExpire>=k.INFINITE_CACHE?void 0:Y.renderOpts.collectedExpire;return{value:{kind:f.CachedRouteKind.APP_ROUTE,status:s.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:n}}}}catch(t){throw(null==n?void 0:n.isStale)&&await b.onRequestError(e,t,{routerKind:"App Router",routePath:s,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:$,isOnDemandRevalidate:C})},!1,R),t}},c=await b.handleResponse({req:e,nextConfig:_,cacheKey:N,routeKind:n.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:S,isRoutePPREnabled:!1,isOnDemandRevalidate:C,revalidateOnlyGenerated:x,responseGenerator:d,waitUntil:a.waitUntil,isMinimalMode:F});if(!U)return null;if((null==c||null==(o=c.value)?void 0:o.kind)!==f.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==c||null==(l=c.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});F||t.setHeader("x-nextjs-cache",C?"REVALIDATED":c.isMiss?"MISS":c.isStale?"STALE":"HIT"),E&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let u=(0,g.fromNodeOutgoingHttpHeaders)(c.value.headers);return F&&U||u.delete(k.NEXT_CACHE_TAGS_HEADER),!c.cacheControl||t.getHeader("Cache-Control")||u.get("Cache-Control")||u.set("Cache-Control",(0,m.getCacheControlHeader)(c.cacheControl)),await (0,w.sendResponse)(J,G,new Response(c.value.body,{headers:u,status:c.value.status||200})),null};j&&H?await l(H):(r=B.getActiveScopeSpan(),await B.withPropagatedContext(e.headers,()=>B.trace(h.BaseServerSpan.handleRequest,{spanName:`${L} ${s}`,kind:o.SpanKind.SERVER,attributes:{"http.method":L,"http.target":e.url}},l),void 0,!j))}catch(t){if(t instanceof I.NoFallbackError||await b.onRequestError(e,t,{routerKind:"App Router",routePath:O,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:$,isOnDemandRevalidate:C})},!1,R),U)throw t;return await (0,w.sendResponse)(J,G,new Response(null,{status:500})),null}}e.s(["handler",0,y,"patchFetch",0,function(){return(0,r.patchFetch)({workAsyncStorage:_,workUnitAsyncStorage:A})},"routeModule",0,b,"serverHooks",0,E,"workAsyncStorage",0,_,"workUnitAsyncStorage",0,A]),a()}catch(e){a(e)}},!1),56981,e=>{e.v(t=>Promise.all(["server/chunks/07mc_@better-auth_memory-adapter_dist_index_mjs_0736-hy._.js"].map(t=>e.l(t))).then(()=>t(665211)))},534759,e=>{e.v(t=>Promise.all(["server/chunks/0e94_better-auth_dist_adapters_kysely-adapter_index_mjs_0nf4_d_._.js"].map(t=>e.l(t))).then(()=>t(458714)))},394293,e=>{e.v(t=>Promise.all(["server/chunks/11ag_@better-auth_kysely-adapter_dist_bun-sqlite-dialect-na--YwnN_mjs_0vd~ts1._.js"].map(t=>e.l(t))).then(()=>t(359283)))},724281,e=>{e.v(t=>Promise.all(["server/chunks/11ag_@better-auth_kysely-adapter_dist_node-sqlite-dialect_mjs_0z45rqy._.js"].map(t=>e.l(t))).then(()=>t(631543)))},862941,e=>{e.v(t=>Promise.all(["server/chunks/11ag_@better-auth_kysely-adapter_dist_d1-sqlite-dialect-C2B7YsIT_mjs_11aa~n_._.js"].map(t=>e.l(t))).then(()=>t(893029)))}];
2
+
3
+ //# sourceMappingURL=_0yzq1gx._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[291320,e=>{"use strict";e.s(["isUniqueConstraintError",0,function e(t){if(t instanceof Error){if("SQLITE_CONSTRAINT_UNIQUE"===t.code||t.message.includes("UNIQUE"))return!0;if(t.cause)return e(t.cause)}return!1}])},229751,e=>e.a(async(t,a)=>{try{var r=e.i(170865);e.i(700598);var n=e.i(291109),i=e.i(888247),s=e.i(291320),o=e.i(675139),l=e.i(152327),u=e.i(47962),d=e.i(776227),c=e.i(740580),p=e.i(774078),h=t([l]);[l]=h.then?(await h)():h;let g=(0,l.withAuth)(async(e,t)=>{let a=await (0,u.withWorkspaceMember)(e,t);if(a instanceof Response)return a;let{env:i}=(0,r.getCloudflareContext)(),s=(0,o.getDb)(i.DB),l=new URL(e.url),h=Math.min(Number(l.searchParams.get("limit"))||200,500),g=Number(l.searchParams.get("offset"))||0;if(0===g&&!l.searchParams.has("limit")){let e=await (0,p.cached)(p.cacheKeys.agentLinks(a.workspaceId),120,async()=>(await n.queries.agentLink.listByWorkspace(s,a.workspaceId,{limit:h,offset:g})).map(c.agentLinkToResponse));return(0,d.writeJSON)(e)}let w=await n.queries.agentLink.listByWorkspace(s,a.workspaceId,{limit:h,offset:g});return(0,d.writeJSON)(w.map(c.agentLinkToResponse))}),w=(0,l.withAuth)(async(e,t)=>{let a=await (0,u.withWorkspaceMember)(e,t);if(a instanceof Response)return a;let{env:l}=(0,r.getCloudflareContext)(),h=(0,o.getDb)(l.DB),[g,w]=await (0,d.parseBody)(e,i.CreateAgentLinkRequestSchema);if(w)return w;if(g.source_agent_id===g.target_agent_id)return(0,d.writeError)("cannot link an agent to itself",400);let[_,m]=await Promise.all([n.queries.agent.getAgent(h,g.source_agent_id,a.workspaceId,t.userId),n.queries.agent.getAgent(h,g.target_agent_id,a.workspaceId,t.userId)]);if(!_)return(0,d.writeError)("source agent not found in workspace",404);if(!m)return(0,d.writeError)("target agent not found in workspace",404);try{let e=await n.queries.agentLink.create(h,{workspaceId:a.workspaceId,sourceAgentId:g.source_agent_id,targetAgentId:g.target_agent_id,instruction:g.instruction});return await Promise.all([(0,p.invalidate)(p.cacheKeys.allColleagues(a.workspaceId)),(0,p.invalidate)(p.cacheKeys.agentLinks(a.workspaceId))]),(0,d.writeJSON)((0,c.agentLinkToResponse)(e),201)}catch(e){if((0,s.isUniqueConstraintError)(e))return(0,d.writeError)("link already exists between these agents",409);throw e}});e.s(["GET",0,g,"POST",0,w]),a()}catch(e){a(e)}},!1),52931,e=>e.a(async(t,a)=>{try{var r=e.i(80774),n=e.i(404478),i=e.i(732985),s=e.i(481671),o=e.i(638081),l=e.i(204960),u=e.i(924918),d=e.i(363585),c=e.i(906846),p=e.i(359838),h=e.i(383303),g=e.i(234173),w=e.i(270215),_=e.i(830665),m=e.i(944002),R=e.i(193695);e.i(195928);var v=e.i(81543),f=e.i(229751),y=t([f]);[f]=y.then?(await y)():y;let E=new r.AppRouteRouteModule({definition:{kind:n.RouteKind.APP_ROUTE,page:"/api/agent-links/route",pathname:"/api/agent-links",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/web/src/app/api/agent-links/route.ts",nextConfigOutput:"standalone",userland:f,...{}}),{workAsyncStorage:C,workUnitAsyncStorage:A,serverHooks:b}=E;async function k(e,t,a){a.requestMeta&&(0,s.setRequestMeta)(e,a.requestMeta),E.isDev&&(0,s.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let r="/api/agent-links/route";r=r.replace(/\/index$/,"")||"/";let i=await E.prepare(e,t,{srcPage:r,multiZoneDraftMode:!1});if(!i)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:f,deploymentId:y,params:k,nextConfig:C,parsedUrl:A,isDraftMode:b,prerenderManifest:x,routerServerContext:N,isOnDemandRevalidate:P,revalidateOnlyGenerated:I,resolvedPathname:T,clientReferenceManifest:q,serverActionsManifest:S}=i,O=(0,u.normalizeAppPath)(r),U=!!(x.dynamicRoutes[O]||x.routes[T]),M=async()=>((null==N?void 0:N.render404)?await N.render404(e,t,A,!1):t.end("This page could not be found"),null);if(U&&!b){let e=!!x.routes[T],t=x.dynamicRoutes[O];if(t&&!1===t.fallback&&!e){if(C.adapterPath)return await M();throw new R.NoFallbackError}}let j=null;!U||E.isDev||b||(j=T,j="/index"===j?"/":j);let D=!0===E.isDev||!U,H=U&&!D;S&&q&&(0,l.setManifestsSingleton)({page:r,clientReferenceManifest:q,serverActionsManifest:S});let L=e.method||"GET",B=(0,o.getTracer)(),K=B.getActiveScopeSpan(),$=!!(null==N?void 0:N.isWrappedByNextServer),F=!!(0,s.getRequestMeta)(e,"minimalMode"),W=(0,s.getRequestMeta)(e,"incrementalCache")||await E.getIncrementalCache(e,C,x,F);null==W||W.resetRequestCache(),globalThis.__incrementalCache=W;let G={params:k,previewProps:x.preview,renderOpts:{experimental:{authInterrupts:!!C.experimental.authInterrupts},cacheComponents:!!C.cacheComponents,supportsDynamicResponse:D,incrementalCache:W,cacheLifeProfiles:C.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,r,n)=>E.onRequestError(e,t,r,n,N)},sharedContext:{buildId:f,deploymentId:y}},J=new d.NodeNextRequest(e),Q=new d.NodeNextResponse(t),V=c.NextRequestAdapter.fromNodeNextRequest(J,(0,c.signalFromNodeResponse)(t));try{let i,s=async e=>E.handle(V,G).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=B.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==p.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=a.get("next.route");if(n){let t=`${L} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t),i&&i!==e&&(i.setAttribute("http.route",n),i.updateName(t))}else e.updateName(`${L} ${r}`)}),l=async i=>{var o,l;let u=async({previousCacheEntry:n})=>{try{if(!F&&P&&I&&!n)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let r=await s(i);e.fetchMetrics=G.renderOpts.fetchMetrics;let o=G.renderOpts.pendingWaitUntil;o&&a.waitUntil&&(a.waitUntil(o),o=void 0);let l=G.renderOpts.collectedTags;if(!U)return await (0,g.sendResponse)(J,Q,r,G.renderOpts.pendingWaitUntil),null;{let e=await r.blob(),t=(0,w.toNodeOutgoingHttpHeaders)(r.headers);l&&(t[m.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==G.renderOpts.collectedRevalidate&&!(G.renderOpts.collectedRevalidate>=m.INFINITE_CACHE)&&G.renderOpts.collectedRevalidate,n=void 0===G.renderOpts.collectedExpire||G.renderOpts.collectedExpire>=m.INFINITE_CACHE?void 0:G.renderOpts.collectedExpire;return{value:{kind:v.CachedRouteKind.APP_ROUTE,status:r.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:n}}}}catch(t){throw(null==n?void 0:n.isStale)&&await E.onRequestError(e,t,{routerKind:"App Router",routePath:r,routeType:"route",revalidateReason:(0,h.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:P})},!1,N),t}},d=await E.handleResponse({req:e,nextConfig:C,cacheKey:j,routeKind:n.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:x,isRoutePPREnabled:!1,isOnDemandRevalidate:P,revalidateOnlyGenerated:I,responseGenerator:u,waitUntil:a.waitUntil,isMinimalMode:F});if(!U)return null;if((null==d||null==(o=d.value)?void 0:o.kind)!==v.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==d||null==(l=d.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});F||t.setHeader("x-nextjs-cache",P?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),b&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let c=(0,w.fromNodeOutgoingHttpHeaders)(d.value.headers);return F&&U||c.delete(m.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||t.getHeader("Cache-Control")||c.get("Cache-Control")||c.set("Cache-Control",(0,_.getCacheControlHeader)(d.cacheControl)),await (0,g.sendResponse)(J,Q,new Response(d.value.body,{headers:c,status:d.value.status||200})),null};$&&K?await l(K):(i=B.getActiveScopeSpan(),await B.withPropagatedContext(e.headers,()=>B.trace(p.BaseServerSpan.handleRequest,{spanName:`${L} ${r}`,kind:o.SpanKind.SERVER,attributes:{"http.method":L,"http.target":e.url}},l),void 0,!$))}catch(t){if(t instanceof R.NoFallbackError||await E.onRequestError(e,t,{routerKind:"App Router",routePath:O,routeType:"route",revalidateReason:(0,h.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:P})},!1,N),U)throw t;return await (0,g.sendResponse)(J,Q,new Response(null,{status:500})),null}}e.s(["handler",0,k,"patchFetch",0,function(){return(0,i.patchFetch)({workAsyncStorage:C,workUnitAsyncStorage:A})},"routeModule",0,E,"serverHooks",0,b,"workAsyncStorage",0,C,"workUnitAsyncStorage",0,A]),a()}catch(e){a(e)}},!1),56981,e=>{e.v(t=>Promise.all(["server/chunks/07mc_@better-auth_memory-adapter_dist_index_mjs_0736-hy._.js"].map(t=>e.l(t))).then(()=>t(665211)))},534759,e=>{e.v(t=>Promise.all(["server/chunks/0e94_better-auth_dist_adapters_kysely-adapter_index_mjs_0nf4_d_._.js"].map(t=>e.l(t))).then(()=>t(458714)))},394293,e=>{e.v(t=>Promise.all(["server/chunks/11ag_@better-auth_kysely-adapter_dist_bun-sqlite-dialect-na--YwnN_mjs_0vd~ts1._.js"].map(t=>e.l(t))).then(()=>t(359283)))},724281,e=>{e.v(t=>Promise.all(["server/chunks/11ag_@better-auth_kysely-adapter_dist_node-sqlite-dialect_mjs_0z45rqy._.js"].map(t=>e.l(t))).then(()=>t(631543)))},862941,e=>{e.v(t=>Promise.all(["server/chunks/11ag_@better-auth_kysely-adapter_dist_d1-sqlite-dialect-C2B7YsIT_mjs_11aa~n_._.js"].map(t=>e.l(t))).then(()=>t(893029)))}];
1
+ module.exports=[291320,e=>{"use strict";e.s(["isUniqueConstraintError",0,function e(t){if(t instanceof Error){if("SQLITE_CONSTRAINT_UNIQUE"===t.code||t.message.includes("UNIQUE"))return!0;if(t.cause)return e(t.cause)}return!1}])},229751,e=>e.a(async(t,a)=>{try{var r=e.i(170865);e.i(700598);var n=e.i(291109),i=e.i(888247),s=e.i(291320),o=e.i(675139),l=e.i(152327),u=e.i(47962),d=e.i(776227),c=e.i(740580),p=e.i(774078),g=t([l]);[l]=g.then?(await g)():g;let h=(0,l.withAuth)(async(e,t)=>{let a=await (0,u.withWorkspaceMember)(e,t);if(a instanceof Response)return a;let{env:i}=(0,r.getCloudflareContext)(),s=(0,o.getDb)(i.DB),l=new URL(e.url),g=Math.min(Number(l.searchParams.get("limit"))||200,500),h=Number(l.searchParams.get("offset"))||0;if(0===h&&!l.searchParams.has("limit")){let e=await (0,p.cached)(p.cacheKeys.agentLinks(a.workspaceId),120,async()=>(await n.queries.agentLink.listByWorkspace(s,a.workspaceId,{limit:g,offset:h})).map(c.agentLinkToResponse));return(0,d.writeJSON)(e)}let w=await n.queries.agentLink.listByWorkspace(s,a.workspaceId,{limit:g,offset:h});return(0,d.writeJSON)(w.map(c.agentLinkToResponse))}),w=(0,l.withAuth)(async(e,t)=>{let a=await (0,u.withWorkspaceMember)(e,t);if(a instanceof Response)return a;let{env:l}=(0,r.getCloudflareContext)(),g=(0,o.getDb)(l.DB),[h,w]=await (0,d.parseBody)(e,i.CreateAgentLinkRequestSchema);if(w)return w;if(h.source_agent_id===h.target_agent_id)return(0,d.writeError)("cannot link an agent to itself",400);let[_,f]=await Promise.all([n.queries.agent.getAgent(g,h.source_agent_id,a.workspaceId,t.userId),n.queries.agent.getAgent(g,h.target_agent_id,a.workspaceId,t.userId)]);if(!_)return(0,d.writeError)("source agent not found in workspace",404);if(!f)return(0,d.writeError)("target agent not found in workspace",404);try{let e=await n.queries.agentLink.create(g,{workspaceId:a.workspaceId,sourceAgentId:h.source_agent_id,targetAgentId:h.target_agent_id,instruction:h.instruction});return await Promise.all([(0,p.invalidate)(p.cacheKeys.allColleagues(a.workspaceId)),(0,p.invalidate)(p.cacheKeys.agentLinks(a.workspaceId))]),(0,d.writeJSON)((0,c.agentLinkToResponse)(e),201)}catch(e){if((0,s.isUniqueConstraintError)(e))return(0,d.writeError)("link already exists between these agents",409);throw e}}),_=(0,l.withAuth)(async(e,t)=>{let a,l,g=await (0,u.withWorkspaceMember)(e,t);if(g instanceof Response)return g;let{env:h}=(0,r.getCloudflareContext)(),w=(0,o.getDb)(h.DB),_=new URL(e.url).searchParams.get("agentId");if(!_)return(0,d.writeError)("agentId query param is required",400);let[f,m]=await (0,d.parseBody)(e,i.UpsertAgentLinkRequestSchema);if(m)return m;if(_===f.target_agent_id)return(0,d.writeError)("cannot link an agent to itself",400);let[R,k]=await Promise.all([n.queries.agent.getAgent(w,_,g.workspaceId,t.userId),n.queries.agent.getAgent(w,f.target_agent_id,g.workspaceId,t.userId)]);if(!R)return(0,d.writeError)("calling agent not found in workspace",404);if(!k)return(0,d.writeError)("target agent not found in workspace",404);try{({row:a,created:l}=await n.queries.agentLink.upsertByPair(w,{workspaceId:g.workspaceId,sourceAgentId:_,targetAgentId:f.target_agent_id,instruction:f.instruction}))}catch(t){if(!(0,s.isUniqueConstraintError)(t))throw t;let e=await n.queries.agentLink.getByPair(w,g.workspaceId,_,f.target_agent_id);if(!e)throw t;a=await n.queries.agentLink.update(w,e.id,g.workspaceId,{instruction:f.instruction}),l=!1}return await Promise.all([(0,p.invalidate)(p.cacheKeys.allColleagues(g.workspaceId)),(0,p.invalidate)(p.cacheKeys.agentLinks(g.workspaceId))]),(0,d.writeJSON)({...(0,c.agentLinkToResponse)(a),created:l},l?201:200)});e.s(["GET",0,h,"POST",0,w,"PUT",0,_]),a()}catch(e){a(e)}},!1),52931,e=>e.a(async(t,a)=>{try{var r=e.i(80774),n=e.i(404478),i=e.i(732985),s=e.i(481671),o=e.i(638081),l=e.i(204960),u=e.i(924918),d=e.i(363585),c=e.i(906846),p=e.i(359838),g=e.i(383303),h=e.i(234173),w=e.i(270215),_=e.i(830665),f=e.i(944002),m=e.i(193695);e.i(195928);var R=e.i(81543),k=e.i(229751),v=t([k]);[k]=v.then?(await v)():v;let E=new r.AppRouteRouteModule({definition:{kind:n.RouteKind.APP_ROUTE,page:"/api/agent-links/route",pathname:"/api/agent-links",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/web/src/app/api/agent-links/route.ts",nextConfigOutput:"standalone",userland:k,...{}}),{workAsyncStorage:C,workUnitAsyncStorage:I,serverHooks:A}=E;async function y(e,t,a){a.requestMeta&&(0,s.setRequestMeta)(e,a.requestMeta),E.isDev&&(0,s.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let r="/api/agent-links/route";r=r.replace(/\/index$/,"")||"/";let i=await E.prepare(e,t,{srcPage:r,multiZoneDraftMode:!1});if(!i)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:k,deploymentId:v,params:y,nextConfig:C,parsedUrl:I,isDraftMode:A,prerenderManifest:P,routerServerContext:b,isOnDemandRevalidate:q,revalidateOnlyGenerated:x,resolvedPathname:N,clientReferenceManifest:T,serverActionsManifest:S}=i,O=(0,u.normalizeAppPath)(r),U=!!(P.dynamicRoutes[O]||P.routes[N]),L=async()=>((null==b?void 0:b.render404)?await b.render404(e,t,I,!1):t.end("This page could not be found"),null);if(U&&!A){let e=!!P.routes[N],t=P.dynamicRoutes[O];if(t&&!1===t.fallback&&!e){if(C.adapterPath)return await L();throw new m.NoFallbackError}}let D=null;!U||E.isDev||A||(D=N,D="/index"===D?"/":D);let M=!0===E.isDev||!U,j=U&&!M;S&&T&&(0,l.setManifestsSingleton)({page:r,clientReferenceManifest:T,serverActionsManifest:S});let H=e.method||"GET",B=(0,o.getTracer)(),K=B.getActiveScopeSpan(),$=!!(null==b?void 0:b.isWrappedByNextServer),F=!!(0,s.getRequestMeta)(e,"minimalMode"),W=(0,s.getRequestMeta)(e,"incrementalCache")||await E.getIncrementalCache(e,C,P,F);null==W||W.resetRequestCache(),globalThis.__incrementalCache=W;let G={params:y,previewProps:P.preview,renderOpts:{experimental:{authInterrupts:!!C.experimental.authInterrupts},cacheComponents:!!C.cacheComponents,supportsDynamicResponse:M,incrementalCache:W,cacheLifeProfiles:C.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,r,n)=>E.onRequestError(e,t,r,n,b)},sharedContext:{buildId:k,deploymentId:v}},J=new d.NodeNextRequest(e),Q=new d.NodeNextResponse(t),V=c.NextRequestAdapter.fromNodeNextRequest(J,(0,c.signalFromNodeResponse)(t));try{let i,s=async e=>E.handle(V,G).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=B.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==p.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=a.get("next.route");if(n){let t=`${H} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t),i&&i!==e&&(i.setAttribute("http.route",n),i.updateName(t))}else e.updateName(`${H} ${r}`)}),l=async i=>{var o,l;let u=async({previousCacheEntry:n})=>{try{if(!F&&q&&x&&!n)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let r=await s(i);e.fetchMetrics=G.renderOpts.fetchMetrics;let o=G.renderOpts.pendingWaitUntil;o&&a.waitUntil&&(a.waitUntil(o),o=void 0);let l=G.renderOpts.collectedTags;if(!U)return await (0,h.sendResponse)(J,Q,r,G.renderOpts.pendingWaitUntil),null;{let e=await r.blob(),t=(0,w.toNodeOutgoingHttpHeaders)(r.headers);l&&(t[f.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==G.renderOpts.collectedRevalidate&&!(G.renderOpts.collectedRevalidate>=f.INFINITE_CACHE)&&G.renderOpts.collectedRevalidate,n=void 0===G.renderOpts.collectedExpire||G.renderOpts.collectedExpire>=f.INFINITE_CACHE?void 0:G.renderOpts.collectedExpire;return{value:{kind:R.CachedRouteKind.APP_ROUTE,status:r.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:n}}}}catch(t){throw(null==n?void 0:n.isStale)&&await E.onRequestError(e,t,{routerKind:"App Router",routePath:r,routeType:"route",revalidateReason:(0,g.getRevalidateReason)({isStaticGeneration:j,isOnDemandRevalidate:q})},!1,b),t}},d=await E.handleResponse({req:e,nextConfig:C,cacheKey:D,routeKind:n.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:P,isRoutePPREnabled:!1,isOnDemandRevalidate:q,revalidateOnlyGenerated:x,responseGenerator:u,waitUntil:a.waitUntil,isMinimalMode:F});if(!U)return null;if((null==d||null==(o=d.value)?void 0:o.kind)!==R.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==d||null==(l=d.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});F||t.setHeader("x-nextjs-cache",q?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),A&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let c=(0,w.fromNodeOutgoingHttpHeaders)(d.value.headers);return F&&U||c.delete(f.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||t.getHeader("Cache-Control")||c.get("Cache-Control")||c.set("Cache-Control",(0,_.getCacheControlHeader)(d.cacheControl)),await (0,h.sendResponse)(J,Q,new Response(d.value.body,{headers:c,status:d.value.status||200})),null};$&&K?await l(K):(i=B.getActiveScopeSpan(),await B.withPropagatedContext(e.headers,()=>B.trace(p.BaseServerSpan.handleRequest,{spanName:`${H} ${r}`,kind:o.SpanKind.SERVER,attributes:{"http.method":H,"http.target":e.url}},l),void 0,!$))}catch(t){if(t instanceof m.NoFallbackError||await E.onRequestError(e,t,{routerKind:"App Router",routePath:O,routeType:"route",revalidateReason:(0,g.getRevalidateReason)({isStaticGeneration:j,isOnDemandRevalidate:q})},!1,b),U)throw t;return await (0,h.sendResponse)(J,Q,new Response(null,{status:500})),null}}e.s(["handler",0,y,"patchFetch",0,function(){return(0,i.patchFetch)({workAsyncStorage:C,workUnitAsyncStorage:I})},"routeModule",0,E,"serverHooks",0,A,"workAsyncStorage",0,C,"workUnitAsyncStorage",0,I]),a()}catch(e){a(e)}},!1),56981,e=>{e.v(t=>Promise.all(["server/chunks/07mc_@better-auth_memory-adapter_dist_index_mjs_0736-hy._.js"].map(t=>e.l(t))).then(()=>t(665211)))},534759,e=>{e.v(t=>Promise.all(["server/chunks/0e94_better-auth_dist_adapters_kysely-adapter_index_mjs_0nf4_d_._.js"].map(t=>e.l(t))).then(()=>t(458714)))},394293,e=>{e.v(t=>Promise.all(["server/chunks/11ag_@better-auth_kysely-adapter_dist_bun-sqlite-dialect-na--YwnN_mjs_0vd~ts1._.js"].map(t=>e.l(t))).then(()=>t(359283)))},724281,e=>{e.v(t=>Promise.all(["server/chunks/11ag_@better-auth_kysely-adapter_dist_node-sqlite-dialect_mjs_0z45rqy._.js"].map(t=>e.l(t))).then(()=>t(631543)))},862941,e=>{e.v(t=>Promise.all(["server/chunks/11ag_@better-auth_kysely-adapter_dist_d1-sqlite-dialect-C2B7YsIT_mjs_11aa~n_._.js"].map(t=>e.l(t))).then(()=>t(893029)))}];
2
2
 
3
3
  //# sourceMappingURL=_0zyolvu._.js.map
@@ -0,0 +1,3 @@
1
+ module.exports=[726089,e=>{"use strict";var t=e.i(170865);e.i(700598);var a=e.i(704024);let s=(0,e.i(726527).createLogger)({service:"broadcast"});async function n(e,n,i){let r;try{let{env:a}=(0,t.getCloudflareContext)();r=a.DEV_WS_DO_URL;let d=await a.WS_DO_WORKER.fetch(`http://internal${e}`,{method:"POST",body:n});if(d.ok)try{return{sent:(await d.json()).sent??0}}catch{return{sent:0}}s.warn("broadcast service-binding non-ok",{...i,status:d.status})}catch{}let d=r||a.DEV_WS_DO_URL,l=await fetch(`${d}${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:n});if(!l.ok)throw Error(`broadcast failed: ${l.status}`);try{return{sent:(await l.json()).sent??0}}catch{return{sent:0}}}e.s(["broadcastToDaemon",0,function(e,a){let s=n(`/broadcast/daemon/${e}`,JSON.stringify(a),{daemonId:e,type:a.type});try{let{ctx:e}=(0,t.getCloudflareContext)();e.waitUntil(s.catch(()=>{}))}catch{}return s},"broadcastToUser",0,function(e,a){return function(e,a,s){let i=n(e,a,s);try{let{ctx:e}=(0,t.getCloudflareContext)();e.waitUntil(i.catch(()=>{}))}catch{}return i.then(()=>{})}(`/broadcast/user/${e}`,JSON.stringify(a),{userId:e,type:a.type})}])},511456,e=>{"use strict";e.i(700598);let t=(0,e.i(726527).createLogger)({service:"web",level:process.env.ALOOK_LOG_LEVEL||"info",pretty:!1});e.s(["log",0,t])},555230,e=>{"use strict";e.i(700598);var t=e.i(291109),a=e.i(704024),s=e.i(424166),n=e.i(740580),i=e.i(774078);e.s(["TaskPayloadBuilder",0,class{db;constructor(e){this.db=e}async buildFullPayloads(e,r){let d=e.filter(e=>e.type!==a.TASK_TYPES.KILL_TASK),l=[...new Set(d.map(e=>e.agentId))],[o,c,u]=l.length>0?await Promise.all([(0,i.cached)(i.cacheKeys.allAgents(r),300,()=>t.queries.agent.getAllAgentsForWorkspace(this.db,r)),(0,i.cached)(i.cacheKeys.allEmailAccounts(r),600,()=>t.queries.emailAccount.getAllEmailAccountsForWorkspace(this.db,r)),(0,i.cached)(i.cacheKeys.allColleagues(r),600,()=>t.queries.agentLink.getAllColleaguesForWorkspace(this.db,r)).catch(()=>[])]).then(([e,t,a])=>{let s=new Set(l);return[e.filter(e=>s.has(e.id)),t.filter(e=>s.has(e.agentId)),a.filter(e=>s.has(e.agentId))]}):[[],[],[]],h=new Map(o.map(e=>[e.id,e])),g=new Map;for(let e of c){let t=g.get(e.agentId)??[];t.push(e.emailAddress),g.set(e.agentId,t)}let m=new Map;for(let e of u){let t=m.get(e.agentId)??[];t.push(e),m.set(e.agentId,t)}let w=[...new Set(d.map(e=>e.conversationId).filter(Boolean))],p=new Map((w.length>0?await t.queries.conversation.getConversationsByIds(this.db,w,r):[]).map(e=>[e.id,e])),I=new Map,k=new Map,T=[];for(let d of e){if(d.type===a.TASK_TYPES.KILL_TASK){T.push({...(0,n.taskToResponse)(d),agent:null,sender:null});continue}let e=h.get(d.agentId)??null,l=[];if(e){e.emailHandle&&l.push((0,s.toAlookAddress)(e.emailHandle));let t=g.get(e.id)??[];l.push(...t)}let o=e?.instructions??"";if(e?.ownerId){if(!I.has(e.ownerId)){let a=await (0,i.cached)(i.cacheKeys.member(r,e.ownerId),600,()=>t.queries.member.getMemberByUserAndWorkspace(this.db,e.ownerId,r));I.set(e.ownerId,a?{globalInstruction:a.globalInstruction}:null)}let a=I.get(e.ownerId);a?.globalInstruction&&(o=[a.globalInstruction,o].filter(Boolean).join("\n\n"))}let c=null;if(e?.ownerId){if(!k.has(e.ownerId)){let a=await (0,i.cached)(i.cacheKeys.user(e.ownerId),1800,()=>t.queries.user.getUser(this.db,e.ownerId));k.set(e.ownerId,a?{name:a.name,email:a.email}:null)}c=k.get(e.ownerId)?.name??null}let u=p.get(d.conversationId)??null,w=u?.channel??"default",y=null;if(d.type===a.TASK_TYPES.USER_DM_MESSAGE&&u?.userId){if(!k.has(u.userId)){let e=await (0,i.cached)(i.cacheKeys.user(u.userId),1800,()=>t.queries.user.getUser(this.db,u.userId));k.set(u.userId,e?{name:e.name,email:e.email}:null)}let a=k.get(u.userId);a&&(y={name:a.name,email:a.email,is_owner:u.userId===e?.ownerId})}let b=(m.get(d.agentId)??[]).map(e=>({name:e.name,email:e.emailHandle?(0,s.toAlookAddress)(e.emailHandle):"",description:e.description,instruction:e.instruction}));T.push({...(0,n.taskToResponse)(d),channel:w,sender:y,agent:e?{instructions:o,name:e.name,runtime_config:e.runtimeConfig||{},email_handle:e.emailHandle||null,email_addresses:l,user_email:null,user_name:c,colleagues:b}:null})}return T}}])},205054,e=>{"use strict";e.i(700598);var t=e.i(291109),a=e.i(704024),s=e.i(511456),n=e.i(726089),i=e.i(740580),r=e.i(774078),d=e.i(555230);let l=t.queries.task,o=t.queries.agent,c=t.queries.message,u=t.queries.conversation,h=t.queries.issue,g=t.queries.inbox;e.s(["TaskService",0,class{db;constructor(e){this.db=e}async enqueueTask(e,t,s,n,i=a.TASK_TYPES.USER_DM_MESSAGE,d){let c=await o.getAgent(this.db,e,s);if(!c)throw Error("agent not found");if(!c.runtimeId)throw Error("agent has no runtime");if(d?.traceId&&d.parentTaskId&&await l.countTasksByTrace(this.db,d.traceId)>=a.MAX_TASKS_PER_TRACE)throw Error(`Trace limit reached (${a.MAX_TASKS_PER_TRACE} tasks). This may indicate an infinite loop between agents.`);let u=await l.createTask(this.db,{agentId:e,runtimeId:c.runtimeId,workspaceId:s,conversationId:t,prompt:n,type:i,contextKey:d?.contextKey??null,priority:0,context:d?.context,traceId:d?.traceId??null,parentTaskId:d?.parentTaskId??null});return(0,r.invalidate)(r.cacheKeys.activeTaskCounts(s)).catch(()=>{}),await this.pushTaskToDaemon(u,s).catch(()=>{}),u}async claimTask(e,t){let a=await o.getAgent(this.db,e,t);return this.claimTaskWithAgent(e,t,a)}async claimTaskWithAgent(e,t,a){if(!a)return null;if(await l.countRunningTasks(this.db,e,t)>=a.maxConcurrentTasks){let s=await l.findSteerableReplacement(this.db,e,t);if(!s||await l.countRunningTasks(this.db,e,t,s.predecessorId)>=a.maxConcurrentTasks)return null}let s=await l.claimTask(this.db,e,t);return s?(await o.updateAgentStatus(this.db,e,t,"working"),s):null}async claimTasksForRuntimes(e,t,a){let s=await l.claimKillTasks(this.db,e,a,t),n=t-s.length,i=n>0?await l.listPendingTasksByRuntimes(this.db,e,a):[],r=new Set(e),d=new Set,c=[...s],u=[];for(let e of i){if(u.length>=n)break;let t=`${e.agentId}:${e.workspaceId}`;d.has(t)||(d.add(t),u.push(e))}if(0===u.length)return c;let h=[...new Set(u.map(e=>e.agentId))],g=new Map((await o.getAgentsByIds(this.db,h,a)).map(e=>[e.id,e]));for(let e of(await Promise.all(u.map(e=>this.claimTaskWithAgent(e.agentId,e.workspaceId,g.get(e.agentId)??null)))))e&&r.has(e.runtimeId)&&c.push(e);return c}async startTask(e,t){let a=await l.startTask(this.db,e,t);if(!a)throw Error("task not in dispatched status");return a}async completeTask(e,t,a,n){let i;try{i=JSON.parse(a)}catch{i={raw:a}}let r=await l.completeTask(this.db,e,t,{result:i,sessionId:n||null});if(!r){let t=await l.getTask(this.db,e),a=t?.status??"unknown";throw s.log.warn(`completeTask failed: task is in '${a}' status`,{taskId:e}),Error(`cannot complete task in '${a}' status`)}return await this.reconcileAgentStatus(r.agentId,r.workspaceId),this.maybeUpsertUnread(r,t,null).catch(()=>{}),r}async failTask(e,r,d){let o=await l.failTask(this.db,e,r,d);if(!o){let t=await l.getTask(this.db,e),a=t?.status??"unknown";throw s.log.warn(`failTask failed: task is in '${a}' status`,{taskId:e}),Error(`cannot fail task in '${a}' status`)}if(o.type===a.TASK_TYPES.KILL_TASK)return o;let h=null;if(d){let a=null;try{if(o.runtimeId){let e=await t.queries.runtime.getAgentRuntime(this.db,o.runtimeId);a=e?.provider??null}}catch{}let s=await c.createMessage(this.db,{conversationId:o.conversationId,role:"assistant",content:d,taskId:e,metadata:JSON.stringify({error_source:"runtime",provider:a})});h=s?.id??null;try{let e=await u.getConversation(this.db,o.conversationId,r);e&&(0,n.broadcastToUser)(e.userId,{type:"conversation.message",conversationId:o.conversationId,message:(0,i.messageToResponse)(s)}).catch(()=>{})}catch{}}return await this.reconcileAgentStatus(o.agentId,o.workspaceId),await this.syncIssueStatusFromTask(o,"failed"),this.maybeUpsertUnread(o,r,h).catch(()=>{}),o}async syncIssueStatusFromTask(e,t){if(e.type!==a.TASK_TYPES.ISSUE_EVENT)return;let s=await h.getIssueByConversation(this.db,e.conversationId,e.workspaceId);if(!s||s.status===t||!await h.updateIssue(this.db,s.id,e.workspaceId,{status:t}))return;let r=await c.createMessage(this.db,{conversationId:e.conversationId,role:"event",content:`Issue status changed: ${s.status} -> ${t}`,taskId:e.id,metadata:JSON.stringify({issueId:s.id})});try{let t=await u.getConversation(this.db,e.conversationId,e.workspaceId);t&&(0,n.broadcastToUser)(t.userId,{type:"conversation.message",conversationId:e.conversationId,message:(0,i.messageToResponse)(r)}).catch(()=>{})}catch{}}async maybeUpsertUnread(e,t,a){if(!g.isUnreadEligible(e)||!e.completedAt)return;let s=await u.getConversation(this.db,e.conversationId,t);if(!s)return;let n=a??await g.findLatestAssistantMessageId(this.db,e.conversationId);await g.upsertUnreadEntry(this.db,{conversationId:e.conversationId,userId:s.userId,workspaceId:t,agentId:s.agentId,taskId:e.id,taskType:e.type,taskStatus:e.status,taskPrompt:e.prompt,completedAt:e.completedAt,latestMessageId:n})}async supersedeTask(e,t){let a=await l.supersedeTask(this.db,e,t);if(!a){let t=await l.getTask(this.db,e),a=t?.status??"unknown";throw s.log.warn(`supersedeTask failed: task is in '${a}' status`,{taskId:e}),Error(`cannot supersede task in '${a}' status`)}return await this.reconcileAgentStatus(a.agentId,a.workspaceId),a}async retryTask(e,t){let a=await l.getTask(this.db,e);if(!a||a.workspaceId!==t)throw Error("task not found");if("failed"!==a.status)throw Error("only failed tasks can be retried");let s=await l.markFailedAsSuperseded(this.db,e,t);if(!s)throw Error("failed to mark task as superseded");return{oldTask:s,newTask:await this.enqueueTask(a.agentId,a.conversationId,t,a.prompt,a.type,{contextKey:a.contextKey??null,context:a.context,traceId:a.traceId??null,parentTaskId:a.parentTaskId??null})}}async cancelActiveTask(e,i,r){let d=await l.getActiveTaskByConversation(this.db,e,i);if(!d)return null;let o=await l.cancelTask(this.db,d.id,i);if(!o)return null;if("dispatched"===d.status||"running"===d.status){let r=await l.createTask(this.db,{agentId:d.agentId,runtimeId:d.runtimeId,workspaceId:i,conversationId:e,prompt:"",type:a.TASK_TYPES.KILL_TASK,context:{target_task_id:d.id}});await l.dispatchTaskById(this.db,r.id,i);let o=await t.queries.runtime.getAgentRuntime(this.db,d.runtimeId);o&&(0,n.broadcastToDaemon)(o.daemonId,{type:"daemon.kill",workspaceId:i,agentId:d.agentId,taskId:r.id,targetTaskId:d.id}).catch(e=>s.log.warn("daemon.kill broadcast failed, relying on poll fallback",e))}return await c.createMessage(this.db,{conversationId:e,role:"assistant",content:r?.reason??"Task cancelled by you",taskId:d.id,metadata:JSON.stringify({kind:"lifecycle"})}),await this.reconcileAgentStatus(d.agentId,i),o}async reconcileAgentStatus(e,t){let a=await l.countRunningTasks(this.db,e,t);await o.updateAgentStatus(this.db,e,t,a>0?"working":"idle"),(0,r.invalidate)(r.cacheKeys.activeTaskCounts(t)).catch(()=>{})}async cancelTrace(e,t,a){for(let n of[...new Set((await l.getTraceTree(this.db,e,t)).filter(e=>["queued","dispatched","running"].includes(e.status)).map(e=>e.conversationId))])try{await this.cancelActiveTask(n,t,{reason:a?.reason})}catch(t){s.log.warn("cancelTrace: failed to cancel task",{traceId:e,convId:n,err:t})}}async pushTaskToDaemon(e,a){let s=await t.queries.runtime.getAgentRuntime(this.db,e.runtimeId);if(!s)return;let i=await l.dispatchTaskById(this.db,e.id,a);if(!i)return;let r=new d.TaskPayloadBuilder(this.db),o=await r.buildFullPayloads([i],a);if(0===o.length)return void await l.revertDispatchedToQueued(this.db,e.id,a);try{let{sent:t}=await (0,n.broadcastToDaemon)(s.daemonId,{type:"daemon.tasks",tasks:o});0===t&&await l.revertDispatchedToQueued(this.db,e.id,a)}catch{await l.revertDispatchedToQueued(this.db,e.id,a)}}}])},56981,e=>{e.v(t=>Promise.all(["server/chunks/07mc_@better-auth_memory-adapter_dist_index_mjs_0736-hy._.js"].map(t=>e.l(t))).then(()=>t(665211)))},534759,e=>{e.v(t=>Promise.all(["server/chunks/0e94_better-auth_dist_adapters_kysely-adapter_index_mjs_0nf4_d_._.js"].map(t=>e.l(t))).then(()=>t(458714)))},394293,e=>{e.v(t=>Promise.all(["server/chunks/11ag_@better-auth_kysely-adapter_dist_bun-sqlite-dialect-na--YwnN_mjs_0vd~ts1._.js"].map(t=>e.l(t))).then(()=>t(359283)))},724281,e=>{e.v(t=>Promise.all(["server/chunks/11ag_@better-auth_kysely-adapter_dist_node-sqlite-dialect_mjs_0z45rqy._.js"].map(t=>e.l(t))).then(()=>t(631543)))},862941,e=>{e.v(t=>Promise.all(["server/chunks/11ag_@better-auth_kysely-adapter_dist_d1-sqlite-dialect-C2B7YsIT_mjs_11aa~n_._.js"].map(t=>e.l(t))).then(()=>t(893029)))}];
2
+
3
+ //# sourceMappingURL=_12-_-5g._.js.map
@@ -0,0 +1,3 @@
1
+ module.exports=[726089,e=>{"use strict";var t=e.i(170865);e.i(700598);var a=e.i(704024);let s=(0,e.i(726527).createLogger)({service:"broadcast"});async function n(e,n,i){let r;try{let{env:a}=(0,t.getCloudflareContext)();r=a.DEV_WS_DO_URL;let l=await a.WS_DO_WORKER.fetch(`http://internal${e}`,{method:"POST",body:n});if(l.ok)try{return{sent:(await l.json()).sent??0}}catch{return{sent:0}}s.warn("broadcast service-binding non-ok",{...i,status:l.status})}catch{}let l=r||a.DEV_WS_DO_URL,d=await fetch(`${l}${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:n});if(!d.ok)throw Error(`broadcast failed: ${d.status}`);try{return{sent:(await d.json()).sent??0}}catch{return{sent:0}}}e.s(["broadcastToDaemon",0,function(e,a){let s=n(`/broadcast/daemon/${e}`,JSON.stringify(a),{daemonId:e,type:a.type});try{let{ctx:e}=(0,t.getCloudflareContext)();e.waitUntil(s.catch(()=>{}))}catch{}return s},"broadcastToUser",0,function(e,a){return function(e,a,s){let i=n(e,a,s);try{let{ctx:e}=(0,t.getCloudflareContext)();e.waitUntil(i.catch(()=>{}))}catch{}return i.then(()=>{})}(`/broadcast/user/${e}`,JSON.stringify(a),{userId:e,type:a.type})}])},511456,e=>{"use strict";e.i(700598);let t=(0,e.i(726527).createLogger)({service:"web",level:process.env.ALOOK_LOG_LEVEL||"info",pretty:!1});e.s(["log",0,t])},555230,e=>{"use strict";e.i(700598);var t=e.i(291109),a=e.i(704024),s=e.i(424166),n=e.i(740580),i=e.i(774078);e.s(["TaskPayloadBuilder",0,class{db;constructor(e){this.db=e}async buildFullPayloads(e,r){let l=e.filter(e=>e.type!==a.TASK_TYPES.KILL_TASK),d=[...new Set(l.map(e=>e.agentId))],[o,c,u]=d.length>0?await Promise.all([(0,i.cached)(i.cacheKeys.allAgents(r),300,()=>t.queries.agent.getAllAgentsForWorkspace(this.db,r)),(0,i.cached)(i.cacheKeys.allEmailAccounts(r),600,()=>t.queries.emailAccount.getAllEmailAccountsForWorkspace(this.db,r)),(0,i.cached)(i.cacheKeys.allColleagues(r),600,()=>t.queries.agentLink.getAllColleaguesForWorkspace(this.db,r)).catch(()=>[])]).then(([e,t,a])=>{let s=new Set(d);return[e.filter(e=>s.has(e.id)),t.filter(e=>s.has(e.agentId)),a.filter(e=>s.has(e.agentId))]}):[[],[],[]],h=new Map(o.map(e=>[e.id,e])),g=new Map;for(let e of c){let t=g.get(e.agentId)??[];t.push(e.emailAddress),g.set(e.agentId,t)}let m=new Map;for(let e of u){let t=m.get(e.agentId)??[];t.push(e),m.set(e.agentId,t)}let w=[...new Set(l.map(e=>e.conversationId).filter(Boolean))],p=new Map((w.length>0?await t.queries.conversation.getConversationsByIds(this.db,w,r):[]).map(e=>[e.id,e])),I=new Map,k=new Map,T=[];for(let l of e){if(l.type===a.TASK_TYPES.KILL_TASK){T.push({...(0,n.taskToResponse)(l),agent:null,sender:null});continue}let e=h.get(l.agentId)??null,d=[];if(e){e.emailHandle&&d.push((0,s.toAlookAddress)(e.emailHandle));let t=g.get(e.id)??[];d.push(...t)}let o=e?.instructions??"";if(e?.ownerId){if(!I.has(e.ownerId)){let a=await (0,i.cached)(i.cacheKeys.member(r,e.ownerId),600,()=>t.queries.member.getMemberByUserAndWorkspace(this.db,e.ownerId,r));I.set(e.ownerId,a?{globalInstruction:a.globalInstruction}:null)}let a=I.get(e.ownerId);a?.globalInstruction&&(o=[a.globalInstruction,o].filter(Boolean).join("\n\n"))}let c=null;if(e?.ownerId){if(!k.has(e.ownerId)){let a=await (0,i.cached)(i.cacheKeys.user(e.ownerId),1800,()=>t.queries.user.getUser(this.db,e.ownerId));k.set(e.ownerId,a?{name:a.name,email:a.email}:null)}c=k.get(e.ownerId)?.name??null}let u=p.get(l.conversationId)??null,w=u?.channel??"default",y=null;if(l.type===a.TASK_TYPES.USER_DM_MESSAGE&&u?.userId){if(!k.has(u.userId)){let e=await (0,i.cached)(i.cacheKeys.user(u.userId),1800,()=>t.queries.user.getUser(this.db,u.userId));k.set(u.userId,e?{name:e.name,email:e.email}:null)}let a=k.get(u.userId);a&&(y={name:a.name,email:a.email,is_owner:u.userId===e?.ownerId})}let f=(m.get(l.agentId)??[]).map(e=>({name:e.name,email:e.emailHandle?(0,s.toAlookAddress)(e.emailHandle):"",description:e.description,instruction:e.instruction}));T.push({...(0,n.taskToResponse)(l),channel:w,sender:y,agent:e?{instructions:o,name:e.name,runtime_config:e.runtimeConfig||{},email_handle:e.emailHandle||null,email_addresses:d,user_email:null,user_name:c,colleagues:f}:null})}return T}}])},205054,e=>{"use strict";e.i(700598);var t=e.i(291109),a=e.i(704024),s=e.i(511456),n=e.i(726089),i=e.i(740580),r=e.i(774078),l=e.i(555230);let d=t.queries.task,o=t.queries.agent,c=t.queries.message,u=t.queries.conversation,h=t.queries.issue,g=t.queries.inbox;e.s(["TaskService",0,class{db;constructor(e){this.db=e}async enqueueTask(e,t,s,n,i=a.TASK_TYPES.USER_DM_MESSAGE,l){let c=await o.getAgent(this.db,e,s);if(!c)throw Error("agent not found");if(!c.runtimeId)throw Error("agent has no runtime");if(l?.traceId&&l.parentTaskId&&await d.countTasksByTrace(this.db,l.traceId)>=a.MAX_TASKS_PER_TRACE)throw Error(`Trace limit reached (${a.MAX_TASKS_PER_TRACE} tasks). This may indicate an infinite loop between agents.`);let u=await d.createTask(this.db,{agentId:e,runtimeId:c.runtimeId,workspaceId:s,conversationId:t,prompt:n,type:i,contextKey:l?.contextKey??null,priority:0,context:l?.context,traceId:l?.traceId??null,parentTaskId:l?.parentTaskId??null});return(0,r.invalidate)(r.cacheKeys.activeTaskCounts(s)).catch(()=>{}),await this.pushTaskToDaemon(u,s).catch(()=>{}),u}async claimTask(e,t){let a=await o.getAgent(this.db,e,t);return this.claimTaskWithAgent(e,t,a)}async claimTaskWithAgent(e,t,a){if(!a)return null;if(await d.countRunningTasks(this.db,e,t)>=a.maxConcurrentTasks){let s=await d.findSteerableReplacement(this.db,e,t);if(!s||await d.countRunningTasks(this.db,e,t,s.predecessorId)>=a.maxConcurrentTasks)return null}let s=await d.claimTask(this.db,e,t);return s?(await o.updateAgentStatus(this.db,e,t,"working"),s):null}async claimTasksForRuntimes(e,t,a){let s=await d.claimKillTasks(this.db,e,a,t),n=t-s.length,i=n>0?await d.listPendingTasksByRuntimes(this.db,e,a):[],r=new Set(e),l=new Set,c=[...s],u=[];for(let e of i){if(u.length>=n)break;let t=`${e.agentId}:${e.workspaceId}`;l.has(t)||(l.add(t),u.push(e))}if(0===u.length)return c;let h=[...new Set(u.map(e=>e.agentId))],g=new Map((await o.getAgentsByIds(this.db,h,a)).map(e=>[e.id,e]));for(let e of(await Promise.all(u.map(e=>this.claimTaskWithAgent(e.agentId,e.workspaceId,g.get(e.agentId)??null)))))e&&r.has(e.runtimeId)&&c.push(e);return c}async startTask(e,t){let a=await d.startTask(this.db,e,t);if(!a)throw Error("task not in dispatched status");return a}async completeTask(e,t,a,n){let i;try{i=JSON.parse(a)}catch{i={raw:a}}let r=await d.completeTask(this.db,e,t,{result:i,sessionId:n||null});if(!r){let t=await d.getTask(this.db,e),a=t?.status??"unknown";throw s.log.warn(`completeTask failed: task is in '${a}' status`,{taskId:e}),Error(`cannot complete task in '${a}' status`)}return await this.reconcileAgentStatus(r.agentId,r.workspaceId),this.maybeUpsertUnread(r,t,null).catch(()=>{}),r}async failTask(e,r,l){let o=await d.failTask(this.db,e,r,l);if(!o){let t=await d.getTask(this.db,e),a=t?.status??"unknown";throw s.log.warn(`failTask failed: task is in '${a}' status`,{taskId:e}),Error(`cannot fail task in '${a}' status`)}if(o.type===a.TASK_TYPES.KILL_TASK)return o;let h=null;if(l){let a=null;try{if(o.runtimeId){let e=await t.queries.runtime.getAgentRuntime(this.db,o.runtimeId);a=e?.provider??null}}catch{}let s=await c.createMessage(this.db,{conversationId:o.conversationId,role:"assistant",content:l,taskId:e,metadata:JSON.stringify({error_source:"runtime",provider:a})});h=s?.id??null;try{let e=await u.getConversation(this.db,o.conversationId,r);e&&(0,n.broadcastToUser)(e.userId,{type:"conversation.message",conversationId:o.conversationId,message:(0,i.messageToResponse)(s)}).catch(()=>{})}catch{}}return await this.reconcileAgentStatus(o.agentId,o.workspaceId),await this.syncIssueStatusFromTask(o,"failed"),this.maybeUpsertUnread(o,r,h).catch(()=>{}),o}async syncIssueStatusFromTask(e,t){if(e.type!==a.TASK_TYPES.ISSUE_EVENT)return;let s=await h.getIssueByConversation(this.db,e.conversationId,e.workspaceId);if(!s||s.status===t||!await h.updateIssue(this.db,s.id,e.workspaceId,{status:t}))return;let r=await c.createMessage(this.db,{conversationId:e.conversationId,role:"event",content:`Issue status changed: ${s.status} -> ${t}`,taskId:e.id,metadata:JSON.stringify({issueId:s.id})});try{let t=await u.getConversation(this.db,e.conversationId,e.workspaceId);t&&(0,n.broadcastToUser)(t.userId,{type:"conversation.message",conversationId:e.conversationId,message:(0,i.messageToResponse)(r)}).catch(()=>{})}catch{}}async maybeUpsertUnread(e,t,a){if(!g.isUnreadEligible(e)||!e.completedAt)return;let s=await u.getConversation(this.db,e.conversationId,t);if(!s)return;let n=a??await g.findLatestAssistantMessageId(this.db,e.conversationId);await g.upsertUnreadEntry(this.db,{conversationId:e.conversationId,userId:s.userId,workspaceId:t,agentId:s.agentId,taskId:e.id,taskType:e.type,taskStatus:e.status,taskPrompt:e.prompt,completedAt:e.completedAt,latestMessageId:n})}async supersedeTask(e,t){let a=await d.supersedeTask(this.db,e,t);if(!a){let t=await d.getTask(this.db,e),a=t?.status??"unknown";throw s.log.warn(`supersedeTask failed: task is in '${a}' status`,{taskId:e}),Error(`cannot supersede task in '${a}' status`)}return await this.reconcileAgentStatus(a.agentId,a.workspaceId),a}async retryTask(e,t){let a=await d.getTask(this.db,e);if(!a||a.workspaceId!==t)throw Error("task not found");if("failed"!==a.status)throw Error("only failed tasks can be retried");let s=await d.markFailedAsSuperseded(this.db,e,t);if(!s)throw Error("failed to mark task as superseded");return{oldTask:s,newTask:await this.enqueueTask(a.agentId,a.conversationId,t,a.prompt,a.type,{contextKey:a.contextKey??null,context:a.context,traceId:a.traceId??null,parentTaskId:a.parentTaskId??null})}}async cancelActiveTask(e,i,r){let l=await d.getActiveTaskByConversation(this.db,e,i);if(!l)return null;let o=await d.cancelTask(this.db,l.id,i);if(!o)return null;if("dispatched"===l.status||"running"===l.status){let r=await d.createTask(this.db,{agentId:l.agentId,runtimeId:l.runtimeId,workspaceId:i,conversationId:e,prompt:"",type:a.TASK_TYPES.KILL_TASK,context:{target_task_id:l.id}});await d.dispatchTaskById(this.db,r.id,i);let o=await t.queries.runtime.getAgentRuntime(this.db,l.runtimeId);o&&(0,n.broadcastToDaemon)(o.daemonId,{type:"daemon.kill",workspaceId:i,agentId:l.agentId,taskId:r.id,targetTaskId:l.id}).catch(e=>s.log.warn("daemon.kill broadcast failed, relying on poll fallback",e))}return await c.createMessage(this.db,{conversationId:e,role:"assistant",content:r?.reason??"Task cancelled by you",taskId:l.id,metadata:JSON.stringify({kind:"lifecycle"})}),await this.reconcileAgentStatus(l.agentId,i),o}async reconcileAgentStatus(e,t){let a=await d.countRunningTasks(this.db,e,t);await o.updateAgentStatus(this.db,e,t,a>0?"working":"idle"),(0,r.invalidate)(r.cacheKeys.activeTaskCounts(t)).catch(()=>{})}async cancelTrace(e,t,a){for(let n of[...new Set((await d.getTraceTree(this.db,e,t)).filter(e=>["queued","dispatched","running"].includes(e.status)).map(e=>e.conversationId))])try{await this.cancelActiveTask(n,t,{reason:a?.reason})}catch(t){s.log.warn("cancelTrace: failed to cancel task",{traceId:e,convId:n,err:t})}}async pushTaskToDaemon(e,a){let s=await t.queries.runtime.getAgentRuntime(this.db,e.runtimeId);if(!s)return;let i=await d.dispatchTaskById(this.db,e.id,a);if(!i)return;let r=new l.TaskPayloadBuilder(this.db),o=await r.buildFullPayloads([i],a);if(0===o.length)return void await d.revertDispatchedToQueued(this.db,e.id,a);try{let{sent:t}=await (0,n.broadcastToDaemon)(s.daemonId,{type:"daemon.tasks",tasks:o});0===t&&await d.revertDispatchedToQueued(this.db,e.id,a)}catch{await d.revertDispatchedToQueued(this.db,e.id,a)}}}])},318172,e=>{"use strict";e.s(["truncateTitle",0,function(e,t=50){let a=e.replace(/\s+/g," ").trim();if(a.length<=t)return a;let s=a.slice(0,t),n=s.lastIndexOf(" ");return(n>20?s.slice(0,n):s)+"..."}])},56981,e=>{e.v(t=>Promise.all(["server/chunks/07mc_@better-auth_memory-adapter_dist_index_mjs_0736-hy._.js"].map(t=>e.l(t))).then(()=>t(665211)))},534759,e=>{e.v(t=>Promise.all(["server/chunks/0e94_better-auth_dist_adapters_kysely-adapter_index_mjs_0nf4_d_._.js"].map(t=>e.l(t))).then(()=>t(458714)))},394293,e=>{e.v(t=>Promise.all(["server/chunks/11ag_@better-auth_kysely-adapter_dist_bun-sqlite-dialect-na--YwnN_mjs_0vd~ts1._.js"].map(t=>e.l(t))).then(()=>t(359283)))},724281,e=>{e.v(t=>Promise.all(["server/chunks/11ag_@better-auth_kysely-adapter_dist_node-sqlite-dialect_mjs_0z45rqy._.js"].map(t=>e.l(t))).then(()=>t(631543)))},862941,e=>{e.v(t=>Promise.all(["server/chunks/11ag_@better-auth_kysely-adapter_dist_d1-sqlite-dialect-C2B7YsIT_mjs_11aa~n_._.js"].map(t=>e.l(t))).then(()=>t(893029)))}];
2
+
3
+ //# sourceMappingURL=_12-v7sn._.js.map
@@ -0,0 +1,3 @@
1
+ module.exports=[511456,e=>{"use strict";e.i(700598);let t=(0,e.i(726527).createLogger)({service:"web",level:process.env.ALOOK_LOG_LEVEL||"info",pretty:!1});e.s(["log",0,t])},776227,e=>{"use strict";var t=e.i(463421);function a(e,a){return t.NextResponse.json({error:e},{status:a})}async function s(e,s){let n;try{n=await e.json()}catch{return[null,a("invalid request body",400)]}try{return[s.parse(n),null]}catch(a){let e=(a.issues??a.errors??[]).map(e=>`${e.path.join(".")}: ${e.message}`);return[null,t.NextResponse.json({error:"validation error",details:e},{status:400})]}}e.s(["formatTimestamp",0,function(e){return e?("string"==typeof e?new Date(e):e).toISOString().replace(/\.\d{3}Z$/,"Z"):""},"formatTimestampNullable",0,function(e){return e?("string"==typeof e?new Date(e):e).toISOString().replace(/\.\d{3}Z$/,"Z"):null},"parseBody",0,s,"writeError",0,a,"writeJSON",0,function(e,a=200){return t.NextResponse.json(e,{status:a})}])},469187,e=>{"use strict";var t=e.i(704024);e.s(["isOnline",0,function(e){if(!e)return!1;let a=new Date(e.includes("T")||e.includes("Z")||e.includes("+")?e:e+"Z").getTime();return!isNaN(a)&&Date.now()-a<t.OFFLINE_THRESHOLD_MS}])},740580,e=>{"use strict";var t=e.i(776227);e.i(700598);var a=e.i(888247),s=e.i(469187),n=e.i(704024);e.s(["agentLinkToResponse",0,function(e){return{id:e.id,workspace_id:e.workspaceId,source_agent_id:e.sourceAgentId,target_agent_id:e.targetAgentId,instruction:e.instruction,created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}},"agentToResponse",0,function(e){let a=e.runtimeConfig;return a||(a={}),{id:e.id,workspace_id:e.workspaceId,runtime_id:e.runtimeId||"",name:e.name,description:e.description,instructions:e.instructions,runtime_mode:e.runtimeMode,runtime_config:a,status:e.status,max_concurrent_tasks:e.maxConcurrentTasks,email_handle:e.emailHandle||null,avatar_url:e.avatarUrl??null,visibility:e.visibility??"private",owner_id:e.ownerId??null,created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}},"calendarEventToResponse",0,function(e){let a=(0,t.formatTimestamp)(e.scheduledAt),s=e.occurrenceAt?(0,t.formatTimestamp)(e.occurrenceAt):a;return{id:e.id,agent_id:e.agentId,workspace_id:e.workspaceId,title:e.title,description:e.description??null,scheduled_at:a,occurrence_at:s,collapsed_count:e.collapsedCount??null,repeat_interval:e.repeatInterval??null,repeat_stop_at:(0,t.formatTimestampNullable)(e.repeatStopAt),last_triggered_at:(0,t.formatTimestampNullable)(e.lastTriggeredAt),created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}},"channelToResponse",0,function(e){return{id:e.id,workspace_id:e.workspaceId,name:e.name,position:e.position??0,created_at:(0,t.formatTimestamp)(e.createdAt)}},"conversationToResponse",0,function(e){let a={id:e.id,agent_id:e.agentId,title:e.title,type:e.type??n.TASK_TYPES.USER_DM_MESSAGE,channel:e.channel??"default",created_at:(0,t.formatTimestamp)(e.createdAt)};return void 0!==e.messageCount&&(a.message_count=e.messageCount),a},"emailToResponse",0,function(e){return{id:e.id,agent_id:e.agentId,from_email:e.fromEmail,to_email:e.toEmail,subject:e.subject,r2_key:e.r2Key,is_whitelisted:!!e.isWhitelisted,forwarded:!!e.forwarded,message_id:e.messageId??"",in_reply_to:e.inReplyTo??"",references:e.references??"",html_body:e.htmlBody??"",attachments:JSON.parse(e.attachments||"[]"),status:e.status??"unread",direction:e.direction??"inbound",created_at:(0,t.formatTimestamp)(e.createdAt)}},"inviteToResponse",0,function(e){return{id:e.id,token:e.token,created_by:e.createdBy,used_by:e.usedBy,expires_at:(0,t.formatTimestamp)(e.expiresAt),created_at:(0,t.formatTimestamp)(e.createdAt)}},"issueToResponse",0,function(e){return{id:e.id,workspace_id:e.workspaceId,agent_id:e.agentId,creator_user_id:e.creatorUserId,conversation_id:e.conversationId,latest_task_id:e.latestTaskId??null,title:e.title,description:e.description??"",status:e.status,created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt),completed_at:(0,t.formatTimestampNullable)(e.completedAt)}},"machineTokenToResponse",0,function(e){return{id:e.id,name:e.name,last_used_at:(0,t.formatTimestampNullable)(e.lastUsedAt),created_at:(0,t.formatTimestamp)(e.createdAt)}},"meetingToResponse",0,function(e){return{id:e.id,agent_id:e.agentId,workspace_id:e.workspaceId,title:e.title,meeting_url:e.meetingUrl,status:e.status,from_email:e.fromEmail??null,is_whitelisted:!!e.isWhitelisted,participants:e.participants??[],scheduled_at:(0,t.formatTimestampNullable)(e.scheduledAt),started_at:(0,t.formatTimestampNullable)(e.startedAt),completed_at:(0,t.formatTimestampNullable)(e.completedAt),transcript_r2_key:e.transcriptR2Key??null,summary:e.summary??null,error:e.error??null,worker_session_id:e.workerSessionId??null,created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}},"memberToResponse",0,function(e){return{id:e.id,user_id:e.userId,role:e.role,name:e.userName,email:e.userEmail,image:e.userImage,created_at:(0,t.formatTimestamp)(e.createdAt)}},"messageToResponse",0,function(e){let a={id:e.id,conversation_id:e.conversationId,role:e.role,content:e.content,task_id:e.taskId||null,attachment_ids:e.attachmentIds?JSON.parse(e.attachmentIds):null,metadata:e.metadata?JSON.parse(e.metadata):null,created_at:(0,t.formatTimestamp)(e.createdAt)};return e.status&&"active"!==e.status&&(a.status=e.status),a},"runtimeToResponse",0,function(e){let a=e.metadata;a||(a={});let n=e.machineLastSeenAt??null,i=n instanceof Date?n.toISOString():n;return{id:e.id,workspace_id:e.workspaceId,daemon_id:e.daemonId||null,runtime_mode:e.runtimeMode,provider:e.provider,status:(0,s.isOnline)(i)?"online":"offline",device_info:e.deviceInfo,metadata:a,pending_update_version:e.pendingUpdateVersion??null,pending_rescan:!!e.pendingRescan,last_seen_at:(0,t.formatTimestampNullable)(n),created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}},"taskMessageToResponse",0,function(e){return{id:e.id,seq:e.seq,type:e.type,content:e.content,output:e.output}},"taskToActivityResponse",0,function(e){let a=e.prompt.length>120?e.prompt.slice(0,120):e.prompt;return{id:e.id,conversation_id:e.conversationId,type:e.type??n.TASK_TYPES.USER_DM_MESSAGE,status:e.status,prompt:a,created_at:(0,t.formatTimestamp)(e.createdAt),started_at:(0,t.formatTimestampNullable)(e.startedAt),completed_at:(0,t.formatTimestampNullable)(e.completedAt),error:e.error||null}},"taskToResponse",0,function(e){return a.TaskApiBaseSchema.parse({id:e.id,agent_id:e.agentId,runtime_id:e.runtimeId,conversation_id:e.conversationId,workspace_id:e.workspaceId,prompt:e.prompt,type:e.type??n.TASK_TYPES.USER_DM_MESSAGE,context_key:e.contextKey??null,context:e.context??null,status:e.status,priority:e.priority,dispatched_at:(0,t.formatTimestampNullable)(e.dispatchedAt),started_at:(0,t.formatTimestampNullable)(e.startedAt),completed_at:(0,t.formatTimestampNullable)(e.completedAt),result:e.result??null,error:e.error||null,created_at:(0,t.formatTimestamp)(e.createdAt),trace_id:e.traceId??null,parent_task_id:e.parentTaskId??null})},"userToResponse",0,function(e){return{id:e.id,name:e.name,email:e.email,avatar_url:e.avatarUrl??null,created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}},"workspaceToResponse",0,function(e){return{id:e.id,name:e.name,slug:e.slug,created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}}])},726089,e=>{"use strict";var t=e.i(170865);e.i(700598);var a=e.i(704024);let s=(0,e.i(726527).createLogger)({service:"broadcast"});async function n(e,n,i){let r;try{let{env:a}=(0,t.getCloudflareContext)();r=a.DEV_WS_DO_URL;let o=await a.WS_DO_WORKER.fetch(`http://internal${e}`,{method:"POST",body:n});if(o.ok)try{return{sent:(await o.json()).sent??0}}catch{return{sent:0}}s.warn("broadcast service-binding non-ok",{...i,status:o.status})}catch{}let o=r||a.DEV_WS_DO_URL,d=await fetch(`${o}${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:n});if(!d.ok)throw Error(`broadcast failed: ${d.status}`);try{return{sent:(await d.json()).sent??0}}catch{return{sent:0}}}e.s(["broadcastToDaemon",0,function(e,a){let s=n(`/broadcast/daemon/${e}`,JSON.stringify(a),{daemonId:e,type:a.type});try{let{ctx:e}=(0,t.getCloudflareContext)();e.waitUntil(s.catch(()=>{}))}catch{}return s},"broadcastToUser",0,function(e,a){return function(e,a,s){let i=n(e,a,s);try{let{ctx:e}=(0,t.getCloudflareContext)();e.waitUntil(i.catch(()=>{}))}catch{}return i.then(()=>{})}(`/broadcast/user/${e}`,JSON.stringify(a),{userId:e,type:a.type})}])},555230,e=>{"use strict";e.i(700598);var t=e.i(291109),a=e.i(704024),s=e.i(424166),n=e.i(740580),i=e.i(774078);e.s(["TaskPayloadBuilder",0,class{db;constructor(e){this.db=e}async buildFullPayloads(e,r){let o=e.filter(e=>e.type!==a.TASK_TYPES.KILL_TASK),d=[...new Set(o.map(e=>e.agentId))],[l,c,u]=d.length>0?await Promise.all([(0,i.cached)(i.cacheKeys.allAgents(r),300,()=>t.queries.agent.getAllAgentsForWorkspace(this.db,r)),(0,i.cached)(i.cacheKeys.allEmailAccounts(r),600,()=>t.queries.emailAccount.getAllEmailAccountsForWorkspace(this.db,r)),(0,i.cached)(i.cacheKeys.allColleagues(r),600,()=>t.queries.agentLink.getAllColleaguesForWorkspace(this.db,r)).catch(()=>[])]).then(([e,t,a])=>{let s=new Set(d);return[e.filter(e=>s.has(e.id)),t.filter(e=>s.has(e.agentId)),a.filter(e=>s.has(e.agentId))]}):[[],[],[]],m=new Map(l.map(e=>[e.id,e])),p=new Map;for(let e of c){let t=p.get(e.agentId)??[];t.push(e.emailAddress),p.set(e.agentId,t)}let g=new Map;for(let e of u){let t=g.get(e.agentId)??[];t.push(e),g.set(e.agentId,t)}let h=[...new Set(o.map(e=>e.conversationId).filter(Boolean))],T=new Map((h.length>0?await t.queries.conversation.getConversationsByIds(this.db,h,r):[]).map(e=>[e.id,e])),f=new Map,I=new Map,_=[];for(let o of e){if(o.type===a.TASK_TYPES.KILL_TASK){_.push({...(0,n.taskToResponse)(o),agent:null,sender:null});continue}let e=m.get(o.agentId)??null,d=[];if(e){e.emailHandle&&d.push((0,s.toAlookAddress)(e.emailHandle));let t=p.get(e.id)??[];d.push(...t)}let l=e?.instructions??"";if(e?.ownerId){if(!f.has(e.ownerId)){let a=await (0,i.cached)(i.cacheKeys.member(r,e.ownerId),600,()=>t.queries.member.getMemberByUserAndWorkspace(this.db,e.ownerId,r));f.set(e.ownerId,a?{globalInstruction:a.globalInstruction}:null)}let a=f.get(e.ownerId);a?.globalInstruction&&(l=[a.globalInstruction,l].filter(Boolean).join("\n\n"))}let c=null;if(e?.ownerId){if(!I.has(e.ownerId)){let a=await (0,i.cached)(i.cacheKeys.user(e.ownerId),1800,()=>t.queries.user.getUser(this.db,e.ownerId));I.set(e.ownerId,a?{name:a.name,email:a.email}:null)}c=I.get(e.ownerId)?.name??null}let u=T.get(o.conversationId)??null,h=u?.channel??"default",w=null;if(o.type===a.TASK_TYPES.USER_DM_MESSAGE&&u?.userId){if(!I.has(u.userId)){let e=await (0,i.cached)(i.cacheKeys.user(u.userId),1800,()=>t.queries.user.getUser(this.db,u.userId));I.set(u.userId,e?{name:e.name,email:e.email}:null)}let a=I.get(u.userId);a&&(w={name:a.name,email:a.email,is_owner:u.userId===e?.ownerId})}let k=(g.get(o.agentId)??[]).map(e=>({name:e.name,email:e.emailHandle?(0,s.toAlookAddress)(e.emailHandle):"",description:e.description,instruction:e.instruction}));_.push({...(0,n.taskToResponse)(o),channel:h,sender:w,agent:e?{instructions:l,name:e.name,runtime_config:e.runtimeConfig||{},email_handle:e.emailHandle||null,email_addresses:d,user_email:null,user_name:c,colleagues:k}:null})}return _}}])},205054,e=>{"use strict";e.i(700598);var t=e.i(291109),a=e.i(704024),s=e.i(511456),n=e.i(726089),i=e.i(740580),r=e.i(774078),o=e.i(555230);let d=t.queries.task,l=t.queries.agent,c=t.queries.message,u=t.queries.conversation,m=t.queries.issue,p=t.queries.inbox;e.s(["TaskService",0,class{db;constructor(e){this.db=e}async enqueueTask(e,t,s,n,i=a.TASK_TYPES.USER_DM_MESSAGE,o){let c=await l.getAgent(this.db,e,s);if(!c)throw Error("agent not found");if(!c.runtimeId)throw Error("agent has no runtime");if(o?.traceId&&o.parentTaskId&&await d.countTasksByTrace(this.db,o.traceId)>=a.MAX_TASKS_PER_TRACE)throw Error(`Trace limit reached (${a.MAX_TASKS_PER_TRACE} tasks). This may indicate an infinite loop between agents.`);let u=await d.createTask(this.db,{agentId:e,runtimeId:c.runtimeId,workspaceId:s,conversationId:t,prompt:n,type:i,contextKey:o?.contextKey??null,priority:0,context:o?.context,traceId:o?.traceId??null,parentTaskId:o?.parentTaskId??null});return(0,r.invalidate)(r.cacheKeys.activeTaskCounts(s)).catch(()=>{}),await this.pushTaskToDaemon(u,s).catch(()=>{}),u}async claimTask(e,t){let a=await l.getAgent(this.db,e,t);return this.claimTaskWithAgent(e,t,a)}async claimTaskWithAgent(e,t,a){if(!a)return null;if(await d.countRunningTasks(this.db,e,t)>=a.maxConcurrentTasks){let s=await d.findSteerableReplacement(this.db,e,t);if(!s||await d.countRunningTasks(this.db,e,t,s.predecessorId)>=a.maxConcurrentTasks)return null}let s=await d.claimTask(this.db,e,t);return s?(await l.updateAgentStatus(this.db,e,t,"working"),s):null}async claimTasksForRuntimes(e,t,a){let s=await d.claimKillTasks(this.db,e,a,t),n=t-s.length,i=n>0?await d.listPendingTasksByRuntimes(this.db,e,a):[],r=new Set(e),o=new Set,c=[...s],u=[];for(let e of i){if(u.length>=n)break;let t=`${e.agentId}:${e.workspaceId}`;o.has(t)||(o.add(t),u.push(e))}if(0===u.length)return c;let m=[...new Set(u.map(e=>e.agentId))],p=new Map((await l.getAgentsByIds(this.db,m,a)).map(e=>[e.id,e]));for(let e of(await Promise.all(u.map(e=>this.claimTaskWithAgent(e.agentId,e.workspaceId,p.get(e.agentId)??null)))))e&&r.has(e.runtimeId)&&c.push(e);return c}async startTask(e,t){let a=await d.startTask(this.db,e,t);if(!a)throw Error("task not in dispatched status");return a}async completeTask(e,t,a,n){let i;try{i=JSON.parse(a)}catch{i={raw:a}}let r=await d.completeTask(this.db,e,t,{result:i,sessionId:n||null});if(!r){let t=await d.getTask(this.db,e),a=t?.status??"unknown";throw s.log.warn(`completeTask failed: task is in '${a}' status`,{taskId:e}),Error(`cannot complete task in '${a}' status`)}return await this.reconcileAgentStatus(r.agentId,r.workspaceId),this.maybeUpsertUnread(r,t,null).catch(()=>{}),r}async failTask(e,r,o){let l=await d.failTask(this.db,e,r,o);if(!l){let t=await d.getTask(this.db,e),a=t?.status??"unknown";throw s.log.warn(`failTask failed: task is in '${a}' status`,{taskId:e}),Error(`cannot fail task in '${a}' status`)}if(l.type===a.TASK_TYPES.KILL_TASK)return l;let m=null;if(o){let a=null;try{if(l.runtimeId){let e=await t.queries.runtime.getAgentRuntime(this.db,l.runtimeId);a=e?.provider??null}}catch{}let s=await c.createMessage(this.db,{conversationId:l.conversationId,role:"assistant",content:o,taskId:e,metadata:JSON.stringify({error_source:"runtime",provider:a})});m=s?.id??null;try{let e=await u.getConversation(this.db,l.conversationId,r);e&&(0,n.broadcastToUser)(e.userId,{type:"conversation.message",conversationId:l.conversationId,message:(0,i.messageToResponse)(s)}).catch(()=>{})}catch{}}return await this.reconcileAgentStatus(l.agentId,l.workspaceId),await this.syncIssueStatusFromTask(l,"failed"),this.maybeUpsertUnread(l,r,m).catch(()=>{}),l}async syncIssueStatusFromTask(e,t){if(e.type!==a.TASK_TYPES.ISSUE_EVENT)return;let s=await m.getIssueByConversation(this.db,e.conversationId,e.workspaceId);if(!s||s.status===t||!await m.updateIssue(this.db,s.id,e.workspaceId,{status:t}))return;let r=await c.createMessage(this.db,{conversationId:e.conversationId,role:"event",content:`Issue status changed: ${s.status} -> ${t}`,taskId:e.id,metadata:JSON.stringify({issueId:s.id})});try{let t=await u.getConversation(this.db,e.conversationId,e.workspaceId);t&&(0,n.broadcastToUser)(t.userId,{type:"conversation.message",conversationId:e.conversationId,message:(0,i.messageToResponse)(r)}).catch(()=>{})}catch{}}async maybeUpsertUnread(e,t,a){if(!p.isUnreadEligible(e)||!e.completedAt)return;let s=await u.getConversation(this.db,e.conversationId,t);if(!s)return;let n=a??await p.findLatestAssistantMessageId(this.db,e.conversationId);await p.upsertUnreadEntry(this.db,{conversationId:e.conversationId,userId:s.userId,workspaceId:t,agentId:s.agentId,taskId:e.id,taskType:e.type,taskStatus:e.status,taskPrompt:e.prompt,completedAt:e.completedAt,latestMessageId:n})}async supersedeTask(e,t){let a=await d.supersedeTask(this.db,e,t);if(!a){let t=await d.getTask(this.db,e),a=t?.status??"unknown";throw s.log.warn(`supersedeTask failed: task is in '${a}' status`,{taskId:e}),Error(`cannot supersede task in '${a}' status`)}return await this.reconcileAgentStatus(a.agentId,a.workspaceId),a}async retryTask(e,t){let a=await d.getTask(this.db,e);if(!a||a.workspaceId!==t)throw Error("task not found");if("failed"!==a.status)throw Error("only failed tasks can be retried");let s=await d.markFailedAsSuperseded(this.db,e,t);if(!s)throw Error("failed to mark task as superseded");return{oldTask:s,newTask:await this.enqueueTask(a.agentId,a.conversationId,t,a.prompt,a.type,{contextKey:a.contextKey??null,context:a.context,traceId:a.traceId??null,parentTaskId:a.parentTaskId??null})}}async cancelActiveTask(e,i,r){let o=await d.getActiveTaskByConversation(this.db,e,i);if(!o)return null;let l=await d.cancelTask(this.db,o.id,i);if(!l)return null;if("dispatched"===o.status||"running"===o.status){let r=await d.createTask(this.db,{agentId:o.agentId,runtimeId:o.runtimeId,workspaceId:i,conversationId:e,prompt:"",type:a.TASK_TYPES.KILL_TASK,context:{target_task_id:o.id}});await d.dispatchTaskById(this.db,r.id,i);let l=await t.queries.runtime.getAgentRuntime(this.db,o.runtimeId);l&&(0,n.broadcastToDaemon)(l.daemonId,{type:"daemon.kill",workspaceId:i,agentId:o.agentId,taskId:r.id,targetTaskId:o.id}).catch(e=>s.log.warn("daemon.kill broadcast failed, relying on poll fallback",e))}return await c.createMessage(this.db,{conversationId:e,role:"assistant",content:r?.reason??"Task cancelled by you",taskId:o.id,metadata:JSON.stringify({kind:"lifecycle"})}),await this.reconcileAgentStatus(o.agentId,i),l}async reconcileAgentStatus(e,t){let a=await d.countRunningTasks(this.db,e,t);await l.updateAgentStatus(this.db,e,t,a>0?"working":"idle"),(0,r.invalidate)(r.cacheKeys.activeTaskCounts(t)).catch(()=>{})}async cancelTrace(e,t,a){for(let n of[...new Set((await d.getTraceTree(this.db,e,t)).filter(e=>["queued","dispatched","running"].includes(e.status)).map(e=>e.conversationId))])try{await this.cancelActiveTask(n,t,{reason:a?.reason})}catch(t){s.log.warn("cancelTrace: failed to cancel task",{traceId:e,convId:n,err:t})}}async pushTaskToDaemon(e,a){let s=await t.queries.runtime.getAgentRuntime(this.db,e.runtimeId);if(!s)return;let i=await d.dispatchTaskById(this.db,e.id,a);if(!i)return;let r=new o.TaskPayloadBuilder(this.db),l=await r.buildFullPayloads([i],a);if(0===l.length)return void await d.revertDispatchedToQueued(this.db,e.id,a);try{let{sent:t}=await (0,n.broadcastToDaemon)(s.daemonId,{type:"daemon.tasks",tasks:l});0===t&&await d.revertDispatchedToQueued(this.db,e.id,a)}catch{await d.revertDispatchedToQueued(this.db,e.id,a)}}}])}];
2
+
3
+ //# sourceMappingURL=src_0wkbw.-._.js.map
@@ -1,78 +1,66 @@
1
- module.exports=[193695,(a,b,c)=>{b.exports=a.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},270163,(a,b,c)=>{b.exports=a.r(918622)},400353,a=>{a.n(a.i(762650))},2254,a=>{a.n(a.i(942392))},541871,a=>{a.n(a.i(351926))},571685,a=>{a.n(a.i(529735))},935145,a=>{a.n(a.i(120656))},694436,a=>{a.n(a.i(491113))},569236,a=>{a.n(a.i(290582))},610124,a=>{a.n(a.i(820345))},11918,a=>{a.n(a.i(632253))},933996,a=>{a.n(a.i(17138))},787141,a=>{a.n(a.i(762319))},244696,a=>{a.n(a.i(242663))},776962,a=>{a.n(a.i(238966))},98882,a=>{a.n(a.i(262517))},640472,a=>{a.n(a.i(870115))},927119,a=>{a.n(a.i(328782))},924282,a=>{a.n(a.i(972641))},394803,a=>{a.n(a.i(150533))},276243,a=>{a.n(a.i(12351))},242179,a=>{a.n(a.i(567469))},204991,a=>{a.n(a.i(808656))},871556,a=>{a.n(a.i(689082))},237022,a=>{a.n(a.i(375142))},324562,a=>{a.n(a.i(837679))},612492,a=>{a.n(a.i(578620))},394364,a=>{a.n(a.i(507278))},201328,a=>{a.n(a.i(188212))},392552,a=>{a.n(a.i(72106))},86273,a=>{a.n(a.i(901655))},288183,a=>{a.n(a.i(211723))},475390,a=>{a.n(a.i(851526))},450819,a=>{a.n(a.i(387111))},918338,a=>{a.n(a.i(17035))},399402,a=>{a.n(a.i(939918))},542168,a=>{"use strict";a.i(846208);var b=a.i(892409),c=a.i(346125),d=a.i(963481),e=a.i(274960),f=a.i(397016),g=a.i(679289),h=a.i(549196),i=a.i(88948),j=a.i(17177),k=a.i(6018),l=a.i(700555),m=a.i(178957),n=a.i(364625),o=a.i(147861),p=a.i(61337),q=a.i(732231),r=a.i(309425),s=a.i(379351),t=a.i(307659),u=a.i(527029),v=a.i(935186),w=a.i(27502),x=a.i(781590),y=a.i(120717),z=a.i(924946),A=a.i(986306),B=a.i(130496),C=a.i(922382),D=a.i(13393),E=a.i(876055);async function F(a,b,c,d){let e=d?.limit??30,f=d?.before?D.sql`AND t.completed_at < ${d.before}`:D.sql``,g=d?.types?.length?d.types:["user_dm_message"],h=D.sql.join(g.map(a=>D.sql`${a}`),D.sql`, `),i=await a.all(D.sql`
2
- SELECT c.id,
3
- c.agent_id,
1
+ module.exports=[193695,(a,b,c)=>{b.exports=a.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},270163,(a,b,c)=>{b.exports=a.r(918622)},400353,a=>{a.n(a.i(762650))},2254,a=>{a.n(a.i(942392))},541871,a=>{a.n(a.i(351926))},571685,a=>{a.n(a.i(529735))},935145,a=>{a.n(a.i(120656))},694436,a=>{a.n(a.i(491113))},569236,a=>{a.n(a.i(290582))},610124,a=>{a.n(a.i(820345))},11918,a=>{a.n(a.i(632253))},933996,a=>{a.n(a.i(17138))},787141,a=>{a.n(a.i(762319))},244696,a=>{a.n(a.i(242663))},776962,a=>{a.n(a.i(238966))},98882,a=>{a.n(a.i(262517))},640472,a=>{a.n(a.i(870115))},927119,a=>{a.n(a.i(328782))},924282,a=>{a.n(a.i(972641))},394803,a=>{a.n(a.i(150533))},276243,a=>{a.n(a.i(12351))},242179,a=>{a.n(a.i(567469))},204991,a=>{a.n(a.i(808656))},871556,a=>{a.n(a.i(689082))},237022,a=>{a.n(a.i(375142))},324562,a=>{a.n(a.i(837679))},612492,a=>{a.n(a.i(578620))},394364,a=>{a.n(a.i(507278))},201328,a=>{a.n(a.i(188212))},392552,a=>{a.n(a.i(72106))},86273,a=>{a.n(a.i(901655))},288183,a=>{a.n(a.i(211723))},475390,a=>{a.n(a.i(851526))},450819,a=>{a.n(a.i(387111))},918338,a=>{a.n(a.i(17035))},399402,a=>{a.n(a.i(939918))},542168,a=>{"use strict";a.i(846208);var b=a.i(892409),c=a.i(346125),d=a.i(963481),e=a.i(274960),f=a.i(397016),g=a.i(679289),h=a.i(549196),i=a.i(88948),j=a.i(17177),k=a.i(6018),l=a.i(700555),m=a.i(178957),n=a.i(364625),o=a.i(147861),p=a.i(61337),q=a.i(732231),r=a.i(309425),s=a.i(379351),t=a.i(307659),u=a.i(527029),v=a.i(935186),w=a.i(27502),x=a.i(781590),y=a.i(120717),z=a.i(924946),A=a.i(986306),B=a.i(130496),C=a.i(922382),D=a.i(13393),E=a.i(876055);let F=["user_dm_message","email_notification","calendar_event"];async function G(a,b){let c=(0,E.nanoid)();await a.run(D.sql`
2
+ INSERT INTO inbox_unread (id, conversation_id, user_id, workspace_id, agent_id, task_id, task_type, task_status, task_prompt, completed_at, latest_message_id)
3
+ VALUES (${c}, ${b.conversationId}, ${b.userId}, ${b.workspaceId}, ${b.agentId}, ${b.taskId}, ${b.taskType}, ${b.taskStatus}, ${b.taskPrompt}, ${b.completedAt}, ${b.latestMessageId})
4
+ ON CONFLICT (conversation_id, user_id) DO UPDATE SET
5
+ agent_id = excluded.agent_id,
6
+ task_id = excluded.task_id,
7
+ task_type = excluded.task_type,
8
+ task_status = excluded.task_status,
9
+ task_prompt = excluded.task_prompt,
10
+ completed_at = excluded.completed_at,
11
+ latest_message_id = excluded.latest_message_id
12
+ WHERE excluded.completed_at >= inbox_unread.completed_at
13
+ `)}async function H(a,b,c,d){await a.run(D.sql`
14
+ UPDATE inbox_unread
15
+ SET latest_message_id = ${d}
16
+ WHERE conversation_id = ${b} AND user_id = ${c}
17
+ `)}async function I(a,b,c){await a.run(D.sql`
18
+ DELETE FROM inbox_unread
19
+ WHERE conversation_id = ${b} AND user_id = ${c}
20
+ `)}async function J(a,b,c){await a.run(D.sql`
21
+ DELETE FROM inbox_unread
22
+ WHERE user_id = ${b} AND workspace_id = ${c}
23
+ `)}async function K(a,b){let c=await a.all(D.sql`
24
+ SELECT id FROM message
25
+ WHERE conversation_id = ${b}
26
+ AND role = 'assistant'
27
+ AND status = 'active'
28
+ ORDER BY created_at DESC
29
+ LIMIT 1
30
+ `);return c[0]?.id??null}async function L(a,b,c,d){let e=d?.limit??30,f=d?.before?D.sql`AND u.completed_at < ${d.before}`:D.sql``,g=d?.types?.length?d.types:["user_dm_message"],h=D.sql.join(g.map(a=>D.sql`${a}`),D.sql`, `),i=await a.all(D.sql`
31
+ SELECT u.conversation_id AS id,
32
+ u.agent_id,
4
33
  c.title,
5
34
  c.channel,
6
- m_latest.content AS latest_response,
7
- t.completed_at AS latest_response_at,
8
- t.prompt AS root_prompt,
35
+ m.content AS latest_response,
36
+ u.completed_at AS latest_response_at,
37
+ u.task_prompt AS root_prompt,
9
38
  a.name AS agent_name,
10
39
  a.avatar_url AS agent_avatar_url,
11
- t.status AS root_task_status,
12
- t.type AS root_task_type
13
- FROM agent_task_queue t
14
- INNER JOIN conversation c
15
- ON c.id = t.conversation_id
16
- AND c.user_id = ${b}
17
- AND c.workspace_id = ${c}
18
- LEFT JOIN conversation_read_state crs
19
- ON crs.conversation_id = c.id AND crs.user_id = ${b}
20
- INNER JOIN message m_latest
21
- ON m_latest.conversation_id = c.id
22
- AND m_latest.role = 'assistant'
23
- AND m_latest.status = 'active'
24
- AND m_latest.id = (
25
- SELECT id FROM message
26
- WHERE conversation_id = c.id
27
- AND role = 'assistant'
28
- AND status = 'active'
29
- ORDER BY created_at DESC LIMIT 1
30
- )
31
- LEFT JOIN agent a
32
- ON a.id = c.agent_id AND a.workspace_id = c.workspace_id
33
- WHERE t.workspace_id = ${c}
34
- AND t.parent_task_id IS NULL
35
- AND t.trace_id IS NOT NULL
36
- AND t.type IN (${h})
37
- AND t.status IN ('completed', 'failed')
38
- AND t.completed_at > COALESCE(crs.last_read_at, '1970-01-01T00:00:00.000Z')
39
- AND NOT (t.type = 'email_notification' AND COALESCE(json_extract(t.context, '$.isInternal'), 0) = 1)
40
- AND t.id = (
41
- SELECT id FROM agent_task_queue
42
- WHERE workspace_id = ${c}
43
- AND conversation_id = c.id
44
- AND parent_task_id IS NULL
45
- AND trace_id IS NOT NULL
46
- AND type IN (${h})
47
- AND status IN ('completed', 'failed')
48
- AND NOT (type = 'email_notification' AND COALESCE(json_extract(context, '$.isInternal'), 0) = 1)
49
- ORDER BY completed_at DESC LIMIT 1
50
- )
40
+ u.task_status AS root_task_status,
41
+ u.task_type AS root_task_type
42
+ FROM inbox_unread u
43
+ INNER JOIN conversation c ON c.id = u.conversation_id
44
+ LEFT JOIN message m ON m.id = u.latest_message_id
45
+ LEFT JOIN agent a ON a.id = u.agent_id AND a.workspace_id = u.workspace_id
46
+ WHERE u.user_id = ${b}
47
+ AND u.workspace_id = ${c}
48
+ AND u.task_type IN (${h})
51
49
  ${f}
52
- ORDER BY t.completed_at DESC
50
+ ORDER BY u.completed_at DESC
53
51
  LIMIT ${e+1}
54
- `),j=i.length>e;return{items:i.slice(0,e),hasMore:j}}async function G(a,b,c,d){let e=d?.length?d:["user_dm_message"],f=D.sql.join(e.map(a=>D.sql`${a}`),D.sql`, `),g=await a.all(D.sql`
55
- SELECT COUNT(DISTINCT t.conversation_id) AS count
56
- FROM agent_task_queue t
57
- INNER JOIN conversation c
58
- ON c.id = t.conversation_id
59
- AND c.user_id = ${b}
60
- AND c.workspace_id = ${c}
61
- LEFT JOIN conversation_read_state crs
62
- ON crs.conversation_id = t.conversation_id AND crs.user_id = ${b}
63
- WHERE t.workspace_id = ${c}
64
- AND t.parent_task_id IS NULL
65
- AND t.trace_id IS NOT NULL
66
- AND t.type IN (${f})
67
- AND t.status IN ('completed', 'failed')
68
- AND t.completed_at > COALESCE(crs.last_read_at, '1970-01-01T00:00:00.000Z')
69
- AND NOT (t.type = 'email_notification' AND COALESCE(json_extract(t.context, '$.isInternal'), 0) = 1)
70
- `);return g[0]?.count??0}async function H(a,b,c){let d=new Date().toISOString();await a.run(D.sql`
52
+ `),j=i.length>e;return{items:i.slice(0,e),hasMore:j}}async function M(a,b,c,d){let e=d?.length?d:["user_dm_message"],f=D.sql.join(e.map(a=>D.sql`${a}`),D.sql`, `),g=await a.all(D.sql`
53
+ SELECT COUNT(*) AS count
54
+ FROM inbox_unread
55
+ WHERE user_id = ${b}
56
+ AND workspace_id = ${c}
57
+ AND task_type IN (${f})
58
+ `);return g[0]?.count??0}async function N(a,b,c){let d=new Date().toISOString();await a.run(D.sql`
71
59
  INSERT INTO conversation_read_state (id, conversation_id, user_id, last_read_at, created_at)
72
60
  VALUES (${(0,E.nanoid)()}, ${c}, ${b}, ${d}, ${d})
73
61
  ON CONFLICT (conversation_id, user_id)
74
62
  DO UPDATE SET last_read_at = ${d}
75
- `)}async function I(a,b,c){let d=new Date().toISOString();await a.run(D.sql`
63
+ `),await I(a,c,b)}async function O(a,b,c){let d=new Date().toISOString();await a.run(D.sql`
76
64
  INSERT INTO conversation_read_state (id, conversation_id, user_id, last_read_at, created_at)
77
65
  SELECT lower(hex(randomblob(11))), c.id, ${b}, ${d}, ${d}
78
66
  FROM conversation c
@@ -80,6 +68,6 @@ module.exports=[193695,(a,b,c)=>{b.exports=a.x("next/dist/shared/lib/no-fallback
80
68
  AND c.workspace_id = ${c}
81
69
  ON CONFLICT (conversation_id, user_id)
82
70
  DO UPDATE SET last_read_at = ${d}
83
- `)}a.s(["getUnreadCount",0,G,"listUnreadConversations",0,F,"markAllConversationsRead",0,I,"markConversationRead",0,H],975036);var J=a.i(975036),K=a.i(328039),L=a.i(855312),M=a.i(79908);a.s(["agent",0,e,"agentAccess",0,t,"agentLink",0,C,"agentPin",0,u,"agentSidebarOrder",0,v,"agentSkill",0,A,"artifact",0,q,"calendarEvent",0,p,"channel",0,y,"conversation",0,g,"conversationMap",0,B,"email",0,n,"emailAccount",0,r,"inbox",0,J,"issue",0,K,"issueComment",0,L,"machine",0,k,"machineToken",0,l,"meetingSession",0,x,"member",0,d,"message",0,h,"messageFlag",0,M,"overview",0,w,"runtime",0,f,"session",0,o,"task",0,i,"taskMessage",0,j,"user",0,b,"whitelist",0,m,"workspace",0,c,"workspaceFileRequest",0,z,"workspaceInvite",0,s],395780);var N=a.i(395780);a.s(["queries",0,N],542168)},696826,a=>{"use strict";a.i(250195);var b=a.i(544979);a.s(["getDb",0,function(a){let c=a.withSession("first-unconstrained");return(0,b.createDb)(c)}])},328692,a=>{"use strict";a.s(["WorkspaceListClient",()=>b]);let b=(0,a.i(265047).registerClientReference)(function(){throw Error("Attempted to call WorkspaceListClient() from the server but WorkspaceListClient is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/web/src/app/(app)/workspaces/client.tsx <module evaluation>","WorkspaceListClient")},106041,a=>{"use strict";a.s(["WorkspaceListClient",()=>b]);let b=(0,a.i(265047).registerClientReference)(function(){throw Error("Attempted to call WorkspaceListClient() from the server but WorkspaceListClient is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/web/src/app/(app)/workspaces/client.tsx","WorkspaceListClient")},51042,a=>{"use strict";a.i(328692);var b=a.i(106041);a.n(b)},49385,a=>a.a(async(b,c)=>{try{var d=a.i(144637);a.i(900104);var e=a.i(672234),f=a.i(467594),g=a.i(689190);a.i(250195);var h=a.i(542168),i=a.i(696826),j=a.i(678327),k=a.i(51042),l=b([j]);async function m({searchParams:a}){let b=await (0,j.requireSession)(),{env:c}=await (0,g.getCloudflareContext)({async:!0}),l=(0,i.getDb)(c.DB),n=await h.queries.workspace.listWorkspaces(l,b.user.id);if(0===n.length){let a=(b.user.email.split("@")[0]||"user").toLowerCase().replace(/[^a-z0-9-]/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,"").slice(0,48),c=a;for(let d=0;d<3;d++)try{let a=await h.queries.workspace.createWorkspace(l,{name:"Personal",slug:c});await h.queries.member.createMember(l,{workspaceId:a.id,userId:b.user.id,role:"owner"}),(0,e.redirect)(`/studio/new?workspace_id=${a.id}`)}catch(b){if((0,f.isRedirectError)(b))throw b;c=`${a}-${Math.random().toString(36).slice(2,8)}`}n=await h.queries.workspace.listWorkspaces(l,b.user.id)}let o=await a;if(1===n.length&&void 0!==o.auto){let a=await h.queries.agent.listAgents(l,n[0].id,b.user.id);0===a.length&&(0,e.redirect)(`/studio/new?workspace_id=${n[0].id}`),(0,e.redirect)(`/w/${n[0].slug}/home`)}return(0,d.jsx)(k.WorkspaceListClient,{workspaces:n})}[j]=l.then?(await l)():l,a.s(["default",0,m]),c()}catch(a){c(a)}},!1),333436,a=>{a.n(a.i(49385))}];
71
+ `),await J(a,b,c)}a.s(["deleteAllUnreadEntries",0,J,"deleteUnreadEntry",0,I,"findLatestAssistantMessageId",0,K,"getUnreadCount",0,M,"isUnreadEligible",0,function(a){return null==a.parentTaskId&&null!=a.traceId&&!!F.includes(a.type)&&("email_notification"!==a.type||a.context?.isInternal!==!0)},"listUnreadConversations",0,L,"markAllConversationsRead",0,O,"markConversationRead",0,N,"updateUnreadLatestMessage",0,H,"upsertUnreadEntry",0,G],975036);var P=a.i(975036),Q=a.i(328039),R=a.i(855312),S=a.i(79908);a.s(["agent",0,e,"agentAccess",0,t,"agentLink",0,C,"agentPin",0,u,"agentSidebarOrder",0,v,"agentSkill",0,A,"artifact",0,q,"calendarEvent",0,p,"channel",0,y,"conversation",0,g,"conversationMap",0,B,"email",0,n,"emailAccount",0,r,"inbox",0,P,"issue",0,Q,"issueComment",0,R,"machine",0,k,"machineToken",0,l,"meetingSession",0,x,"member",0,d,"message",0,h,"messageFlag",0,S,"overview",0,w,"runtime",0,f,"session",0,o,"task",0,i,"taskMessage",0,j,"user",0,b,"whitelist",0,m,"workspace",0,c,"workspaceFileRequest",0,z,"workspaceInvite",0,s],395780);var T=a.i(395780);a.s(["queries",0,T],542168)},696826,a=>{"use strict";a.i(250195);var b=a.i(544979);a.s(["getDb",0,function(a){let c=a.withSession("first-unconstrained");return(0,b.createDb)(c)}])},328692,a=>{"use strict";a.s(["WorkspaceListClient",()=>b]);let b=(0,a.i(265047).registerClientReference)(function(){throw Error("Attempted to call WorkspaceListClient() from the server but WorkspaceListClient is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/web/src/app/(app)/workspaces/client.tsx <module evaluation>","WorkspaceListClient")},106041,a=>{"use strict";a.s(["WorkspaceListClient",()=>b]);let b=(0,a.i(265047).registerClientReference)(function(){throw Error("Attempted to call WorkspaceListClient() from the server but WorkspaceListClient is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/web/src/app/(app)/workspaces/client.tsx","WorkspaceListClient")},51042,a=>{"use strict";a.i(328692);var b=a.i(106041);a.n(b)},49385,a=>a.a(async(b,c)=>{try{var d=a.i(144637);a.i(900104);var e=a.i(672234),f=a.i(467594),g=a.i(689190);a.i(250195);var h=a.i(542168),i=a.i(696826),j=a.i(678327),k=a.i(51042),l=b([j]);async function m({searchParams:a}){let b=await (0,j.requireSession)(),{env:c}=await (0,g.getCloudflareContext)({async:!0}),l=(0,i.getDb)(c.DB),n=await h.queries.workspace.listWorkspaces(l,b.user.id);if(0===n.length){let a=(b.user.email.split("@")[0]||"user").toLowerCase().replace(/[^a-z0-9-]/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,"").slice(0,48),c=a;for(let d=0;d<3;d++)try{let a=await h.queries.workspace.createWorkspace(l,{name:"Personal",slug:c});await h.queries.member.createMember(l,{workspaceId:a.id,userId:b.user.id,role:"owner"}),(0,e.redirect)(`/studio/new?workspace_id=${a.id}`)}catch(b){if((0,f.isRedirectError)(b))throw b;c=`${a}-${Math.random().toString(36).slice(2,8)}`}n=await h.queries.workspace.listWorkspaces(l,b.user.id)}let o=await a;if(1===n.length&&void 0!==o.auto){let a=await h.queries.agent.listAgents(l,n[0].id,b.user.id);0===a.length&&(0,e.redirect)(`/studio/new?workspace_id=${n[0].id}`),(0,e.redirect)(`/w/${n[0].slug}/home`)}return(0,d.jsx)(k.WorkspaceListClient,{workspaces:n})}[j]=l.then?(await l)():l,a.s(["default",0,m]),c()}catch(a){c(a)}},!1),333436,a=>{a.n(a.i(49385))}];
84
72
 
85
73
  //# sourceMappingURL=%5Broot-of-the-server%5D__04mf.th._.js.map