@alook/app 0.0.83 → 0.0.85

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 (132) hide show
  1. package/bundled/email-worker/index.js +6 -0
  2. package/bundled/email-worker/wrangler.toml +3 -0
  3. package/bundled/web/.open-next/.build/durable-objects/queue.js +5 -5
  4. package/bundled/web/.open-next/assets/BUILD_ID +1 -1
  5. package/bundled/web/.open-next/assets/_next/static/chunks/0-iq3n0xk3eip.js +3 -0
  6. package/bundled/web/.open-next/assets/_next/static/chunks/0d..9l~-zlc8y.js +60 -0
  7. package/bundled/web/.open-next/assets/_next/static/chunks/0dws~l.0e81v2.css +1 -0
  8. package/bundled/web/.open-next/assets/_next/static/chunks/{0~xam~jpkm~vn.js → 0h4ll.t5at.ac.js} +1 -1
  9. package/bundled/web/.open-next/assets/_next/static/chunks/0h5tl-yh9wijv.js +1 -0
  10. package/bundled/web/.open-next/assets/_next/static/chunks/0ku92fo7c687y.js +3 -0
  11. package/bundled/web/.open-next/assets/_next/static/chunks/0madzro0r0v7m.js +1 -0
  12. package/bundled/web/.open-next/assets/_next/static/chunks/0tvembqw.e82g.js +1 -0
  13. package/bundled/web/.open-next/assets/_next/static/chunks/0yhw7i91nm01l.js +1 -0
  14. package/bundled/web/.open-next/assets/_next/static/chunks/0zz2mxapzj90g.js +63 -0
  15. package/bundled/web/.open-next/cache/{2LHzpkXVRj9NdYjgu2l1G → B9spjQ7Fv9GOPnAmBxyfG}/_global-error.cache +1 -1
  16. package/bundled/web/.open-next/cache/{2LHzpkXVRj9NdYjgu2l1G → B9spjQ7Fv9GOPnAmBxyfG}/_not-found.cache +1 -1
  17. package/bundled/web/.open-next/cache/{2LHzpkXVRj9NdYjgu2l1G → B9spjQ7Fv9GOPnAmBxyfG}/sitemap.xml.cache +1 -1
  18. package/bundled/web/.open-next/cloudflare/cache-assets-manifest.sql +1 -1
  19. package/bundled/web/.open-next/cloudflare/init.js +1 -1
  20. package/bundled/web/.open-next/dynamodb-provider/dynamodb-cache.json +1 -1
  21. package/bundled/web/.open-next/middleware/handler.mjs +4 -4
  22. package/bundled/web/.open-next/server-functions/default/src/web/.next/BUILD_ID +1 -1
  23. package/bundled/web/.open-next/server-functions/default/src/web/.next/build-manifest.json +3 -3
  24. package/bundled/web/.open-next/server-functions/default/src/web/.next/prerender-manifest.json +3 -3
  25. package/bundled/web/.open-next/server-functions/default/src/web/.next/required-server-files.json +1 -1
  26. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/invite/[token]/page_client-reference-manifest.js +1 -1
  27. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/studio/new/page_client-reference-manifest.js +1 -1
  28. 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
  29. 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
  30. 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
  31. 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
  32. 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
  33. 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
  34. 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
  35. 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
  36. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/agents/page_client-reference-manifest.js +1 -1
  37. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/calendar/page_client-reference-manifest.js +1 -1
  38. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/flags/page_client-reference-manifest.js +1 -1
  39. 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
  40. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/home/page_client-reference-manifest.js +1 -1
  41. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/issues/page_client-reference-manifest.js +1 -1
  42. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/runtimes/page_client-reference-manifest.js +1 -1
  43. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/settings/page_client-reference-manifest.js +1 -1
  44. 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
  45. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/threads/page_client-reference-manifest.js +1 -1
  46. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/unread/page_client-reference-manifest.js +1 -1
  47. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/workspaces/page_client-reference-manifest.js +1 -1
  48. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(auth)/sign-in/page_client-reference-manifest.js +1 -1
  49. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  50. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/calendar/[id]/route.js +2 -2
  51. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/calendar/route.js +4 -4
  52. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/page_client-reference-manifest.js +1 -1
  53. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/templates/[id]/page_client-reference-manifest.js +1 -1
  54. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/templates/page_client-reference-manifest.js +1 -1
  55. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__0.1vmoe._.js +5 -5
  56. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__00_g5g4._.js +1 -1
  57. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__027mioa._.js +6 -6
  58. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__02_0idg._.js +1 -1
  59. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__0grx101._.js +1 -1
  60. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__0kc1f.6._.js +1 -1
  61. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__0m_ya4f._.js +1 -1
  62. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__0niqi98._.js +5 -5
  63. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[turbopack]_runtime.js +8 -8
  64. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0-7a9se._.js +1 -1
  65. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_007pf4f._.js +1 -1
  66. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0266t8u._.js +2 -2
  67. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_037ndoa._.js +1 -1
  68. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_04gp_km._.js +1 -1
  69. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_05zp0zn._.js +1 -1
  70. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_091mubc._.js +1 -1
  71. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_09j_99x._.js +2 -2
  72. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0aveiot._.js +2 -2
  73. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0cji8yc._.js +1 -1
  74. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0drn_ol._.js +1 -1
  75. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0exm5_w._.js +2 -2
  76. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0f.tk9k._.js +1 -1
  77. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0g1_3hn._.js +1 -1
  78. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0h3guve._.js +1 -1
  79. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0h_dgb9._.js +1 -1
  80. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0hxvvdy._.js +1 -1
  81. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0ke5r~m._.js +1 -1
  82. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0l0biq~._.js +1 -1
  83. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0oyl16-._.js +1 -1
  84. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0pt9vvp._.js +1 -1
  85. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0w6dw.t._.js +2 -2
  86. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_12gxjds._.js +1 -1
  87. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_13hlohp._.js +1 -1
  88. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/src_0mko5ir._.js +1 -1
  89. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/[root-of-the-server]__03yopx2._.js +3 -0
  90. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/[turbopack]_runtime.js +8 -8
  91. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/_015fu61._.js +3 -0
  92. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/{_0tu039y._.js → _01opi~8._.js} +1 -1
  93. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/{_11h_8jo._.js → _02ui5fr._.js} +1 -1
  94. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/_063q-hj._.js +2 -2
  95. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/_0ktjqeo._.js +3 -0
  96. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/_0sh5zo0._.js +3 -0
  97. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/_0t5o.14._.js +65 -0
  98. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/_12e18r-._.js +2 -2
  99. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/src_web_src_0~23g-y._.js +2 -2
  100. 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 +3 -0
  101. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/src_web_src_app_(app)_w_[slug]_calendar_page_tsx_01geiyd._.js +1 -1
  102. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/middleware-build-manifest.js +3 -3
  103. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/middleware-manifest.json +5 -5
  104. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/server-reference-manifest.js +1 -1
  105. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/server-reference-manifest.json +1 -1
  106. package/bundled/web/.open-next/server-functions/default/src/web/handler.mjs +69 -69
  107. package/bundled/web/.open-next/server-functions/default/src/web/handler.mjs.meta.json +213 -213
  108. package/bundled/web/.open-next/server-functions/default/src/web/index.mjs +4 -4
  109. package/bundled/ws-do/index.js +6 -0
  110. package/dist/cli/index.js +11 -0
  111. package/dist/cli/session-runner.js +11 -0
  112. package/dist/index.js +14 -2
  113. package/package.json +1 -1
  114. package/bundled/web/.open-next/assets/_next/static/chunks/0aedy~23652fn.js +0 -63
  115. package/bundled/web/.open-next/assets/_next/static/chunks/0dbw1te5ym2kd.js +0 -2
  116. package/bundled/web/.open-next/assets/_next/static/chunks/0e32q02m3ewux.js +0 -3
  117. package/bundled/web/.open-next/assets/_next/static/chunks/0e3fj46r9j0os.js +0 -1
  118. package/bundled/web/.open-next/assets/_next/static/chunks/0j2~fioc-ekva.js +0 -59
  119. package/bundled/web/.open-next/assets/_next/static/chunks/0jahw0dpk9vgc.js +0 -3
  120. package/bundled/web/.open-next/assets/_next/static/chunks/0y.7dv.ck31vl.css +0 -1
  121. package/bundled/web/.open-next/assets/_next/static/chunks/10y9irnmfgbfy.js +0 -1
  122. package/bundled/web/.open-next/assets/_next/static/chunks/15lauqmpngfj2.js +0 -1
  123. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/01k0_lucide-react_dist_esm_icons_clock_mjs_05q1~5y._.js +0 -3
  124. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/[root-of-the-server]__0esiqa8._.js +0 -3
  125. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/_0st8pau._.js +0 -3
  126. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/_0xg~7mg._.js +0 -3
  127. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/_0y3mwm6._.js +0 -65
  128. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/_11~t2ti._.js +0 -3
  129. /package/bundled/web/.open-next/assets/_next/static/{2LHzpkXVRj9NdYjgu2l1G → B9spjQ7Fv9GOPnAmBxyfG}/_buildManifest.js +0 -0
  130. /package/bundled/web/.open-next/assets/_next/static/{2LHzpkXVRj9NdYjgu2l1G → B9spjQ7Fv9GOPnAmBxyfG}/_clientMiddlewareManifest.js +0 -0
  131. /package/bundled/web/.open-next/assets/_next/static/{2LHzpkXVRj9NdYjgu2l1G → B9spjQ7Fv9GOPnAmBxyfG}/_ssgManifest.js +0 -0
  132. /package/bundled/web/.open-next/cache/{2LHzpkXVRj9NdYjgu2l1G → B9spjQ7Fv9GOPnAmBxyfG}/robots.txt.cache +0 -0
@@ -1,3 +1,3 @@
1
- module.exports=[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=[...new Set(e.filter(e=>e.type!==a.TASK_TYPES.KILL_TASK).map(e=>e.agentId))],[d,l,c]=o.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(o);return[e.filter(e=>s.has(e.id)),t.filter(e=>s.has(e.agentId)),a.filter(e=>s.has(e.agentId))]}):[[],[],[]],u=new Map(d.map(e=>[e.id,e])),h=new Map;for(let e of l){let t=h.get(e.agentId)??[];t.push(e.emailAddress),h.set(e.agentId,t)}let p=new Map;for(let e of c){let t=p.get(e.agentId)??[];t.push(e),p.set(e.agentId,t)}let w=new Map,g=new Map,m=new Map,I=[];for(let o of e){if(o.type===a.TASK_TYPES.KILL_TASK){I.push({...(0,n.taskToResponse)(o),agent:null,sender:null});continue}let e=u.get(o.agentId)??null,d=[];if(e){e.emailHandle&&d.push(`${e.emailHandle}@alook.ai`);let t=h.get(e.id)??[];d.push(...t)}let l=e?.instructions??"";if(e?.ownerId){if(!w.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));w.set(e.ownerId,a?{globalInstruction:a.globalInstruction}:null)}let a=w.get(e.ownerId);a?.globalInstruction&&(l=[a.globalInstruction,l].filter(Boolean).join("\n\n"))}let c=null;if(e?.ownerId){if(!g.has(e.ownerId)){let a=await (0,r.cached)(r.cacheKeys.user(e.ownerId),1800,()=>t.queries.user.getUser(this.db,e.ownerId));g.set(e.ownerId,a?{name:a.name,email:a.email}:null)}c=g.get(e.ownerId)?.name??null}let k=m.get(o.conversationId)??null;o.conversationId&&!m.has(o.conversationId)&&(k=await t.queries.conversation.getConversation(this.db,o.conversationId,i),m.set(o.conversationId,k));let f=k?.channel??"default",T=null;if(o.type===a.TASK_TYPES.USER_DM_MESSAGE&&k?.userId){if(!g.has(k.userId)){let e=await (0,r.cached)(r.cacheKeys.user(k.userId),1800,()=>t.queries.user.getUser(this.db,k.userId));g.set(k.userId,e?{name:e.name,email:e.email}:null)}let a=g.get(k.userId);a&&(T={name:a.name,email:a.email,is_owner:k.userId===e?.ownerId})}let v=(p.get(o.agentId)??[]).map(e=>({name:e.name,email:e.emailHandle?(0,s.toAlookAddress)(e.emailHandle):"",description:e.description,instruction:e.instruction}));I.push({...(0,n.taskToResponse)(o),channel:f,sender:T,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:v}:null})}return I}}])},205054,e=>{"use strict";e.i(700598);var t=e.i(291109),a=e.i(704024),s=e.i(799579),n=e.i(726089),r=e.i(740580),i=e.i(774078),o=e.i(555230);let d=t.queries.task,l=t.queries.agent,c=t.queries.message,u=t.queries.conversation,h=t.queries.issue;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 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: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 l.getAgent(this.db,e,t);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,r=n>0?await d.listPendingTasksByRuntimes(this.db,e,a):[],i=new Set(e),o=new Set,l=[...s],c=[];for(let e of r){if(c.length>=n)break;let t=`${e.agentId}:${e.workspaceId}`;o.has(t)||(o.add(t),c.push(e))}for(let e of(await Promise.all(c.map(e=>this.claimTask(e.agentId,e.workspaceId)))))e&&i.has(e.runtimeId)&&l.push(e);return l}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,i){let o;try{o=JSON.parse(a)}catch{o={raw:a}}let l=await d.completeTask(this.db,e,t,{result:o,sessionId:i||null});if(!l){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`)}let h=o,p="string"==typeof h?.output?h.output:"";if(p){let a=await c.createMessage(this.db,{conversationId:l.conversationId,role:"assistant",content:p,taskId:e});try{let e=await u.getConversation(this.db,l.conversationId,t);e&&(0,n.broadcastToUser)(e.userId,{type:"conversation.message",conversationId:l.conversationId,message:(0,r.messageToResponse)(a)}).catch(()=>{})}catch{}}return await this.reconcileAgentStatus(l.agentId,l.workspaceId),await this.dispatchNextBufferedMessage(l.conversationId,l.workspaceId),l}async failTask(e,t,i){let o=await d.failTask(this.db,e,t,i);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;if(i){let a=await c.createMessage(this.db,{conversationId:o.conversationId,role:"assistant",content:`Error: ${i}`,taskId:e});try{let e=await u.getConversation(this.db,o.conversationId,t);e&&(0,n.broadcastToUser)(e.userId,{type:"conversation.message",conversationId:o.conversationId,message:(0,r.messageToResponse)(a)}).catch(()=>{})}catch{}}return await this.reconcileAgentStatus(o.agentId,o.workspaceId),await this.syncIssueStatusFromTask(o,"failed"),await this.dispatchNextBufferedMessage(o.conversationId,o.workspaceId),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 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 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),await this.dispatchNextBufferedMessage(a.conversationId,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,t,s){let n=await d.getActiveTaskByConversation(this.db,e,t);if(!n)return null;let r=await d.cancelTask(this.db,n.id,t);return r?(("dispatched"===n.status||"running"===n.status)&&await d.createTask(this.db,{agentId:n.agentId,runtimeId:n.runtimeId,workspaceId:t,conversationId:e,prompt:"",type:a.TASK_TYPES.KILL_TASK,context:{target_task_id:n.id}}),await c.createMessage(this.db,{conversationId:e,role:"assistant",content:s?.reason??"Task cancelled by user",taskId:n.id}),await this.reconcileAgentStatus(n.agentId,t),s?.skipDispatch||await this.dispatchNextBufferedMessage(e,t),r):null}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,i.invalidate)(i.cacheKeys.activeTaskCounts(t)).catch(()=>{})}async dispatchNextBufferedMessage(e,t){let i=await c.activateNextBufferedMessage(this.db,e);if(!i)return null;let o=await u.getConversation(this.db,e,t);if(!o)return s.log.warn("dispatchNextBufferedMessage: conversation not found",{conversationId:e}),await c.revertToBuffered(this.db,i.id).catch(e=>{s.log.error("dispatchNextBufferedMessage: failed to revert message status",{messageId:i.id,revertErr:e})}),null;let l=o.userId;try{let s=i.attachmentIds?JSON.parse(i.attachmentIds):[],u=await d.getLatestTaskForConversation(this.db,e),h=u?.traceId??null,p=await this.enqueueTask(o.agentId,e,t,i.content,a.TASK_TYPES.USER_DM_MESSAGE,{contextKey:e,context:s.length>0?{attachment_ids:s}:void 0,traceId:h,parentTaskId:null});return await c.updateMessageTaskId(this.db,i.id,p.id),(0,n.broadcastToUser)(l,{type:"followup.dispatched",conversationId:e,message:(0,r.messageToResponse)(i),task:(0,r.taskToResponse)(p)}).catch(()=>{}),p}catch(t){return s.log.warn("dispatchNextBufferedMessage: enqueueTask failed",{conversationId:e,err:t}),await c.revertToBuffered(this.db,i.id).catch(e=>{s.log.error("dispatchNextBufferedMessage: failed to revert message status",{messageId:i.id,revertErr:e})}),(0,n.broadcastToUser)(l,{type:"followup.dispatch_failed",conversationId:e,messageId:i.id,error:t instanceof Error?t.message:"Failed to dispatch follow-up"}).catch(()=>{}),null}}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,{skipDispatch:!0,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 d.dispatchTaskById(this.db,e.id,a);if(!r)return;let i=new o.TaskPayloadBuilder(this.db),l=await i.buildFullPayloads([r],a);if(0===l.length)return void await d.revertDispatchedToQueued(this.db,e.id,a);try{await (0,n.broadcastToDaemon)(s.daemonId,{type:"daemon.tasks",tasks:l})}catch{await d.revertDispatchedToQueued(this.db,e.id,a)}}}])},754748,e=>e.a(async(t,a)=>{try{var s=e.i(291484),n=e.i(675139),r=e.i(152327),i=e.i(776227),o=e.i(740580),d=e.i(205054),l=e.i(726089),c=e.i(774078),u=t([r]);[r]=u.then?(await u)():u;let h=(0,r.withAuth)(async(e,t)=>{if(!t.workspaceId)return(0,i.writeError)("Forbidden: machine token required",403);let{env:a}=(0,s.getCloudflareContext)(),r=(0,n.getDb)(a.DB),u=t.params?.taskId;if(!u)return(0,i.writeError)("task_id is required",400);let h=new d.TaskService(r);try{let e=await h.supersedeTask(u,t.workspaceId),a=new Date().toISOString().slice(0,10);return(0,c.invalidate)(c.cacheKeys.overviewTaskStats(t.workspaceId,a)).catch(()=>{}),(0,c.invalidateByPrefix)(c.cacheKeys.inboxCountPrefix(t.userId,t.workspaceId)).catch(()=>{}),(0,l.broadcastToUser)(t.userId,{type:"task.updated",taskId:u,agentId:e.agentId,status:"superseded"}).catch(()=>{}),(0,i.writeJSON)((0,o.taskToResponse)(e))}catch(e){return(0,i.writeError)(e instanceof Error?e.message:"Unknown error",400)}});e.s(["POST",0,h]),a()}catch(e){a(e)}},!1),256639,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),d=e.i(204960),l=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),I=e.i(944002),k=e.i(193695);e.i(195928);var f=e.i(81543),T=e.i(754748),v=t([T]);[T]=v.then?(await v)():v;let b=new s.AppRouteRouteModule({definition:{kind:n.RouteKind.APP_ROUTE,page:"/api/daemon/tasks/[taskId]/supersede/route",pathname:"/api/daemon/tasks/[taskId]/supersede",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/web/src/app/api/daemon/tasks/[taskId]/supersede/route.ts",nextConfigOutput:"standalone",userland:T,...{}}),{workAsyncStorage:_,workUnitAsyncStorage:E,serverHooks:S}=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/daemon/tasks/[taskId]/supersede/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:E,isDraftMode:S,prerenderManifest:R,routerServerContext:A,isOnDemandRevalidate:x,revalidateOnlyGenerated:C,resolvedPathname:P,clientReferenceManifest:M,serverActionsManifest:K}=r,q=(0,l.normalizeAppPath)(s),N=!!(R.dynamicRoutes[q]||R.routes[P]),B=async()=>((null==A?void 0:A.render404)?await A.render404(e,t,E,!1):t.end("This page could not be found"),null);if(N&&!S){let e=!!R.routes[P],t=R.dynamicRoutes[q];if(t&&!1===t.fallback&&!e){if(_.adapterPath)return await B();throw new k.NoFallbackError}}let U=null;!N||b.isDev||S||(U=P,U="/index"===U?"/":U);let O=!0===b.isDev||!N,D=N&&!O;K&&M&&(0,d.setManifestsSingleton)({page:s,clientReferenceManifest:M,serverActionsManifest:K});let H=e.method||"GET",$=(0,o.getTracer)(),F=$.getActiveScopeSpan(),j=!!(null==A?void 0:A.isWrappedByNextServer),L=!!(0,i.getRequestMeta)(e,"minimalMode"),Y=(0,i.getRequestMeta)(e,"incrementalCache")||await b.getIncrementalCache(e,_,R,L);null==Y||Y.resetRequestCache(),globalThis.__incrementalCache=Y;let W={params:y,previewProps:R.preview,renderOpts:{experimental:{authInterrupts:!!_.experimental.authInterrupts},cacheComponents:!!_.cacheComponents,supportsDynamicResponse:O,incrementalCache:Y,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,A)},sharedContext:{buildId:T,deploymentId:v}},G=new c.NodeNextRequest(e),X=new c.NodeNextResponse(t),J=u.NextRequestAdapter.fromNodeNextRequest(G,(0,u.signalFromNodeResponse)(t));try{let r,i=async e=>b.handle(J,W).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=$.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=`${H} ${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(`${H} ${s}`)}),d=async r=>{var o,d;let l=async({previousCacheEntry:n})=>{try{if(!L&&x&&C&&!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=W.renderOpts.fetchMetrics;let o=W.renderOpts.pendingWaitUntil;o&&a.waitUntil&&(a.waitUntil(o),o=void 0);let d=W.renderOpts.collectedTags;if(!N)return await (0,w.sendResponse)(G,X,s,W.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,g.toNodeOutgoingHttpHeaders)(s.headers);d&&(t[I.NEXT_CACHE_TAGS_HEADER]=d),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==W.renderOpts.collectedRevalidate&&!(W.renderOpts.collectedRevalidate>=I.INFINITE_CACHE)&&W.renderOpts.collectedRevalidate,n=void 0===W.renderOpts.collectedExpire||W.renderOpts.collectedExpire>=I.INFINITE_CACHE?void 0:W.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:D,isOnDemandRevalidate:x})},!1,A),t}},c=await b.handleResponse({req:e,nextConfig:_,cacheKey:U,routeKind:n.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:R,isRoutePPREnabled:!1,isOnDemandRevalidate:x,revalidateOnlyGenerated:C,responseGenerator:l,waitUntil:a.waitUntil,isMinimalMode:L});if(!N)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==(d=c.value)?void 0:d.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});L||t.setHeader("x-nextjs-cache",x?"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,g.fromNodeOutgoingHttpHeaders)(c.value.headers);return L&&N||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,w.sendResponse)(G,X,new Response(c.value.body,{headers:u,status:c.value.status||200})),null};j&&F?await d(F):(r=$.getActiveScopeSpan(),await $.withPropagatedContext(e.headers,()=>$.trace(h.BaseServerSpan.handleRequest,{spanName:`${H} ${s}`,kind:o.SpanKind.SERVER,attributes:{"http.method":H,"http.target":e.url}},d),void 0,!j))}catch(t){if(t instanceof k.NoFallbackError||await b.onRequestError(e,t,{routerKind:"App Router",routePath:q,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:x})},!1,A),N)throw t;return await (0,w.sendResponse)(G,X,new Response(null,{status:500})),null}}e.s(["handler",0,y,"patchFetch",0,function(){return(0,r.patchFetch)({workAsyncStorage:_,workUnitAsyncStorage:E})},"routeModule",0,b,"serverHooks",0,S,"workAsyncStorage",0,_,"workUnitAsyncStorage",0,E]),a()}catch(e){a(e)}},!1),572758,e=>{e.v(t=>Promise.all(["server/chunks/0yh8_@better-auth_memory-adapter_dist_index_mjs_0u9gr83._.js"].map(t=>e.l(t))).then(()=>t(501816)))},409008,e=>{e.v(t=>Promise.all(["server/chunks/0cae_better-auth_dist_adapters_kysely-adapter_index_mjs_0c-9lzd._.js"].map(t=>e.l(t))).then(()=>t(770021)))},96318,e=>{e.v(t=>Promise.all(["server/chunks/0_yy_@better-auth_kysely-adapter_dist_bun-sqlite-dialect-na--YwnN_mjs_0ua5mwj._.js"].map(t=>e.l(t))).then(()=>t(158195)))},11379,e=>{e.v(t=>Promise.all(["server/chunks/0_yy_@better-auth_kysely-adapter_dist_node-sqlite-dialect_mjs_0evb.r9._.js"].map(t=>e.l(t))).then(()=>t(302822)))},946743,e=>{e.v(t=>Promise.all(["server/chunks/0_yy_@better-auth_kysely-adapter_dist_d1-sqlite-dialect-C2B7YsIT_mjs_0bihzky._.js"].map(t=>e.l(t))).then(()=>t(898679)))}];
1
+ module.exports=[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),d=[...new Set(o.map(e=>e.agentId))],[l,c,u]=d.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(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(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 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,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,d=[];if(e){e.emailHandle&&d.push(`${e.emailHandle}@alook.ai`);let t=p.get(e.id)??[];d.push(...t)}let l=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&&(l=[a.globalInstruction,l].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",T=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&&(T={name:a.name,email:a.email,is_owner:u.userId===e?.ownerId})}let v=(g.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:w,sender:T,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:v}:null})}return f}}])},205054,e=>{"use strict";e.i(700598);var t=e.i(291109),a=e.i(704024),s=e.i(799579),n=e.i(726089),r=e.i(740580),i=e.i(774078),o=e.i(555230);let d=t.queries.task,l=t.queries.agent,c=t.queries.message,u=t.queries.conversation,h=t.queries.issue;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 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: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 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,r=n>0?await d.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 l.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 d.startTask(this.db,e,t);if(!a)throw Error("task not in dispatched status");return a}async completeTask(e,t,a,i){let o;try{o=JSON.parse(a)}catch{o={raw:a}}let l=await d.completeTask(this.db,e,t,{result:o,sessionId:i||null});if(!l){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`)}let h=o,p="string"==typeof h?.output?h.output:"";if(p){let a=await c.createMessage(this.db,{conversationId:l.conversationId,role:"assistant",content:p,taskId:e});try{let e=await u.getConversation(this.db,l.conversationId,t);e&&(0,n.broadcastToUser)(e.userId,{type:"conversation.message",conversationId:l.conversationId,message:(0,r.messageToResponse)(a)}).catch(()=>{})}catch{}}return await this.reconcileAgentStatus(l.agentId,l.workspaceId),await this.dispatchNextBufferedMessage(l.conversationId,l.workspaceId),l}async failTask(e,t,i){let o=await d.failTask(this.db,e,t,i);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;if(i){let a=await c.createMessage(this.db,{conversationId:o.conversationId,role:"assistant",content:`Error: ${i}`,taskId:e});try{let e=await u.getConversation(this.db,o.conversationId,t);e&&(0,n.broadcastToUser)(e.userId,{type:"conversation.message",conversationId:o.conversationId,message:(0,r.messageToResponse)(a)}).catch(()=>{})}catch{}}return await this.reconcileAgentStatus(o.agentId,o.workspaceId),await this.syncIssueStatusFromTask(o,"failed"),await this.dispatchNextBufferedMessage(o.conversationId,o.workspaceId),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 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 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),await this.dispatchNextBufferedMessage(a.conversationId,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,t,s){let n=await d.getActiveTaskByConversation(this.db,e,t);if(!n)return null;let r=await d.cancelTask(this.db,n.id,t);return r?(("dispatched"===n.status||"running"===n.status)&&await d.createTask(this.db,{agentId:n.agentId,runtimeId:n.runtimeId,workspaceId:t,conversationId:e,prompt:"",type:a.TASK_TYPES.KILL_TASK,context:{target_task_id:n.id}}),await c.createMessage(this.db,{conversationId:e,role:"assistant",content:s?.reason??"Task cancelled by user",taskId:n.id}),await this.reconcileAgentStatus(n.agentId,t),s?.skipDispatch||await this.dispatchNextBufferedMessage(e,t),r):null}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,i.invalidate)(i.cacheKeys.activeTaskCounts(t)).catch(()=>{})}async dispatchNextBufferedMessage(e,t){let i=await c.activateNextBufferedMessage(this.db,e);if(!i)return null;let o=await u.getConversation(this.db,e,t);if(!o)return s.log.warn("dispatchNextBufferedMessage: conversation not found",{conversationId:e}),await c.revertToBuffered(this.db,i.id).catch(e=>{s.log.error("dispatchNextBufferedMessage: failed to revert message status",{messageId:i.id,revertErr:e})}),null;let l=o.userId;try{let s=i.attachmentIds?JSON.parse(i.attachmentIds):[],u=await d.getLatestTaskForConversation(this.db,e),h=u?.traceId??null,p=await this.enqueueTask(o.agentId,e,t,i.content,a.TASK_TYPES.USER_DM_MESSAGE,{contextKey:e,context:s.length>0?{attachment_ids:s}:void 0,traceId:h,parentTaskId:null});return await c.updateMessageTaskId(this.db,i.id,p.id),(0,n.broadcastToUser)(l,{type:"followup.dispatched",conversationId:e,message:(0,r.messageToResponse)(i),task:(0,r.taskToResponse)(p)}).catch(()=>{}),p}catch(t){return s.log.warn("dispatchNextBufferedMessage: enqueueTask failed",{conversationId:e,err:t}),await c.revertToBuffered(this.db,i.id).catch(e=>{s.log.error("dispatchNextBufferedMessage: failed to revert message status",{messageId:i.id,revertErr:e})}),(0,n.broadcastToUser)(l,{type:"followup.dispatch_failed",conversationId:e,messageId:i.id,error:t instanceof Error?t.message:"Failed to dispatch follow-up"}).catch(()=>{}),null}}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,{skipDispatch:!0,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 d.dispatchTaskById(this.db,e.id,a);if(!r)return;let i=new o.TaskPayloadBuilder(this.db),l=await i.buildFullPayloads([r],a);if(0===l.length)return void await d.revertDispatchedToQueued(this.db,e.id,a);try{await (0,n.broadcastToDaemon)(s.daemonId,{type:"daemon.tasks",tasks:l})}catch{await d.revertDispatchedToQueued(this.db,e.id,a)}}}])},754748,e=>e.a(async(t,a)=>{try{var s=e.i(291484),n=e.i(675139),r=e.i(152327),i=e.i(776227),o=e.i(740580),d=e.i(205054),l=e.i(726089),c=e.i(774078),u=t([r]);[r]=u.then?(await u)():u;let h=(0,r.withAuth)(async(e,t)=>{if(!t.workspaceId)return(0,i.writeError)("Forbidden: machine token required",403);let{env:a}=(0,s.getCloudflareContext)(),r=(0,n.getDb)(a.DB),u=t.params?.taskId;if(!u)return(0,i.writeError)("task_id is required",400);let h=new d.TaskService(r);try{let e=await h.supersedeTask(u,t.workspaceId),a=new Date().toISOString().slice(0,10);return(0,c.invalidate)(c.cacheKeys.overviewTaskStats(t.workspaceId,a)).catch(()=>{}),(0,c.invalidateInboxCounts)(t.userId,t.workspaceId).catch(()=>{}),(0,l.broadcastToUser)(t.userId,{type:"task.updated",taskId:u,agentId:e.agentId,status:"superseded"}).catch(()=>{}),(0,i.writeJSON)((0,o.taskToResponse)(e))}catch(e){return(0,i.writeError)(e instanceof Error?e.message:"Unknown error",400)}});e.s(["POST",0,h]),a()}catch(e){a(e)}},!1),256639,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),d=e.i(204960),l=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 f=e.i(81543),T=e.i(754748),v=t([T]);[T]=v.then?(await v)():v;let b=new s.AppRouteRouteModule({definition:{kind:n.RouteKind.APP_ROUTE,page:"/api/daemon/tasks/[taskId]/supersede/route",pathname:"/api/daemon/tasks/[taskId]/supersede",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/web/src/app/api/daemon/tasks/[taskId]/supersede/route.ts",nextConfigOutput:"standalone",userland:T,...{}}),{workAsyncStorage:_,workUnitAsyncStorage:S,serverHooks:A}=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/daemon/tasks/[taskId]/supersede/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:S,isDraftMode:A,prerenderManifest:E,routerServerContext:R,isOnDemandRevalidate:x,revalidateOnlyGenerated:C,resolvedPathname:P,clientReferenceManifest:M,serverActionsManifest:q}=r,K=(0,l.normalizeAppPath)(s),N=!!(E.dynamicRoutes[K]||E.routes[P]),B=async()=>((null==R?void 0:R.render404)?await R.render404(e,t,S,!1):t.end("This page could not be found"),null);if(N&&!A){let e=!!E.routes[P],t=E.dynamicRoutes[K];if(t&&!1===t.fallback&&!e){if(_.adapterPath)return await B();throw new k.NoFallbackError}}let U=null;!N||b.isDev||A||(U=P,U="/index"===U?"/":U);let O=!0===b.isDev||!N,D=N&&!O;q&&M&&(0,d.setManifestsSingleton)({page:s,clientReferenceManifest:M,serverActionsManifest:q});let H=e.method||"GET",$=(0,o.getTracer)(),F=$.getActiveScopeSpan(),j=!!(null==R?void 0:R.isWrappedByNextServer),L=!!(0,i.getRequestMeta)(e,"minimalMode"),W=(0,i.getRequestMeta)(e,"incrementalCache")||await b.getIncrementalCache(e,_,E,L);null==W||W.resetRequestCache(),globalThis.__incrementalCache=W;let Y={params:y,previewProps:E.preview,renderOpts:{experimental:{authInterrupts:!!_.experimental.authInterrupts},cacheComponents:!!_.cacheComponents,supportsDynamicResponse:O,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}},G=new c.NodeNextRequest(e),X=new c.NodeNextResponse(t),J=u.NextRequestAdapter.fromNodeNextRequest(G,(0,u.signalFromNodeResponse)(t));try{let r,i=async e=>b.handle(J,Y).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=$.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=`${H} ${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(`${H} ${s}`)}),d=async r=>{var o,d;let l=async({previousCacheEntry:n})=>{try{if(!L&&x&&C&&!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 d=Y.renderOpts.collectedTags;if(!N)return await (0,g.sendResponse)(G,X,s,Y.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,w.toNodeOutgoingHttpHeaders)(s.headers);d&&(t[I.NEXT_CACHE_TAGS_HEADER]=d),!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: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:D,isOnDemandRevalidate:x})},!1,R),t}},c=await b.handleResponse({req:e,nextConfig:_,cacheKey:U,routeKind:n.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:E,isRoutePPREnabled:!1,isOnDemandRevalidate:x,revalidateOnlyGenerated:C,responseGenerator:l,waitUntil:a.waitUntil,isMinimalMode:L});if(!N)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==(d=c.value)?void 0:d.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});L||t.setHeader("x-nextjs-cache",x?"REVALIDATED":c.isMiss?"MISS":c.isStale?"STALE":"HIT"),A&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let u=(0,w.fromNodeOutgoingHttpHeaders)(c.value.headers);return L&&N||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)(G,X,new Response(c.value.body,{headers:u,status:c.value.status||200})),null};j&&F?await d(F):(r=$.getActiveScopeSpan(),await $.withPropagatedContext(e.headers,()=>$.trace(h.BaseServerSpan.handleRequest,{spanName:`${H} ${s}`,kind:o.SpanKind.SERVER,attributes:{"http.method":H,"http.target":e.url}},d),void 0,!j))}catch(t){if(t instanceof k.NoFallbackError||await b.onRequestError(e,t,{routerKind:"App Router",routePath:K,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:x})},!1,R),N)throw t;return await (0,g.sendResponse)(G,X,new Response(null,{status:500})),null}}e.s(["handler",0,y,"patchFetch",0,function(){return(0,r.patchFetch)({workAsyncStorage:_,workUnitAsyncStorage:S})},"routeModule",0,b,"serverHooks",0,A,"workAsyncStorage",0,_,"workUnitAsyncStorage",0,S]),a()}catch(e){a(e)}},!1),572758,e=>{e.v(t=>Promise.all(["server/chunks/0yh8_@better-auth_memory-adapter_dist_index_mjs_0u9gr83._.js"].map(t=>e.l(t))).then(()=>t(501816)))},409008,e=>{e.v(t=>Promise.all(["server/chunks/0cae_better-auth_dist_adapters_kysely-adapter_index_mjs_0c-9lzd._.js"].map(t=>e.l(t))).then(()=>t(770021)))},96318,e=>{e.v(t=>Promise.all(["server/chunks/0_yy_@better-auth_kysely-adapter_dist_bun-sqlite-dialect-na--YwnN_mjs_0ua5mwj._.js"].map(t=>e.l(t))).then(()=>t(158195)))},11379,e=>{e.v(t=>Promise.all(["server/chunks/0_yy_@better-auth_kysely-adapter_dist_node-sqlite-dialect_mjs_0evb.r9._.js"].map(t=>e.l(t))).then(()=>t(302822)))},946743,e=>{e.v(t=>Promise.all(["server/chunks/0_yy_@better-auth_kysely-adapter_dist_d1-sqlite-dialect-C2B7YsIT_mjs_0bihzky._.js"].map(t=>e.l(t))).then(()=>t(898679)))}];
2
2
 
3
3
  //# sourceMappingURL=_12gxjds._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[726089,e=>{"use strict";var t=e.i(291484);e.i(700598);var a=e.i(704024);let s=(0,e.i(726527).createLogger)({service:"broadcast"});async function r(e,r,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:r});if(o.ok)return;s.warn("broadcast service-binding non-ok",{...n,status:o.status})}catch{}let o=i||a.DEV_WS_DO_URL,d=await fetch(`${o}${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:r});if(!d.ok)throw Error(`broadcast failed: ${d.status}`)}function n(e,a,s){let n=r(e,a,s);try{let{ctx:e}=(0,t.getCloudflareContext)();e.waitUntil(n)}catch{}return n}e.s(["broadcastToDaemon",0,function(e,t){return n(`/broadcast/daemon/${e}`,JSON.stringify(t),{daemonId:e,type:t.type})},"broadcastToUser",0,function(e,t){return n(`/broadcast/user/${e}`,JSON.stringify(t),{userId:e,type:t.type})}])},799579,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),r=e.i(740580),n=e.i(774078);e.s(["TaskPayloadBuilder",0,class{db;constructor(e){this.db=e}async buildFullPayloads(e,i){let o=[...new Set(e.filter(e=>e.type!==a.TASK_TYPES.KILL_TASK).map(e=>e.agentId))],[d,l,c]=o.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 s=new Set(o);return[e.filter(e=>s.has(e.id)),t.filter(e=>s.has(e.agentId)),a.filter(e=>s.has(e.agentId))]}):[[],[],[]],u=new Map(d.map(e=>[e.id,e])),h=new Map;for(let e of l){let t=h.get(e.agentId)??[];t.push(e.emailAddress),h.set(e.agentId,t)}let p=new Map;for(let e of c){let t=p.get(e.agentId)??[];t.push(e),p.set(e.agentId,t)}let g=new Map,w=new Map,f=new Map,m=[];for(let o of e){if(o.type===a.TASK_TYPES.KILL_TASK){m.push({...(0,r.taskToResponse)(o),agent:null,sender:null});continue}let e=u.get(o.agentId)??null,d=[];if(e){e.emailHandle&&d.push(`${e.emailHandle}@alook.ai`);let t=h.get(e.id)??[];d.push(...t)}let l=e?.instructions??"";if(e?.ownerId){if(!g.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));g.set(e.ownerId,a?{globalInstruction:a.globalInstruction}:null)}let a=g.get(e.ownerId);a?.globalInstruction&&(l=[a.globalInstruction,l].filter(Boolean).join("\n\n"))}let c=null;if(e?.ownerId){if(!w.has(e.ownerId)){let a=await (0,n.cached)(n.cacheKeys.user(e.ownerId),1800,()=>t.queries.user.getUser(this.db,e.ownerId));w.set(e.ownerId,a?{name:a.name,email:a.email}:null)}c=w.get(e.ownerId)?.name??null}let I=f.get(o.conversationId)??null;o.conversationId&&!f.has(o.conversationId)&&(I=await t.queries.conversation.getConversation(this.db,o.conversationId,i),f.set(o.conversationId,I));let k=I?.channel??"default",T=null;if(o.type===a.TASK_TYPES.USER_DM_MESSAGE&&I?.userId){if(!w.has(I.userId)){let e=await (0,n.cached)(n.cacheKeys.user(I.userId),1800,()=>t.queries.user.getUser(this.db,I.userId));w.set(I.userId,e?{name:e.name,email:e.email}:null)}let a=w.get(I.userId);a&&(T={name:a.name,email:a.email,is_owner:I.userId===e?.ownerId})}let y=(p.get(o.agentId)??[]).map(e=>({name:e.name,email:e.emailHandle?(0,s.toAlookAddress)(e.emailHandle):"",description:e.description,instruction:e.instruction}));m.push({...(0,r.taskToResponse)(o),channel:k,sender:T,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:y}:null})}return m}}])},205054,e=>{"use strict";e.i(700598);var t=e.i(291109),a=e.i(704024),s=e.i(799579),r=e.i(726089),n=e.i(740580),i=e.i(774078),o=e.i(555230);let d=t.queries.task,l=t.queries.agent,c=t.queries.message,u=t.queries.conversation,h=t.queries.issue;e.s(["TaskService",0,class{db;constructor(e){this.db=e}async enqueueTask(e,t,s,r,n=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:r,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(s)).catch(()=>{}),await this.pushTaskToDaemon(u,s).catch(()=>{}),u}async claimTask(e,t){let a=await l.getAgent(this.db,e,t);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),r=t-s.length,n=r>0?await d.listPendingTasksByRuntimes(this.db,e,a):[],i=new Set(e),o=new Set,l=[...s],c=[];for(let e of n){if(c.length>=r)break;let t=`${e.agentId}:${e.workspaceId}`;o.has(t)||(o.add(t),c.push(e))}for(let e of(await Promise.all(c.map(e=>this.claimTask(e.agentId,e.workspaceId)))))e&&i.has(e.runtimeId)&&l.push(e);return l}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,i){let o;try{o=JSON.parse(a)}catch{o={raw:a}}let l=await d.completeTask(this.db,e,t,{result:o,sessionId:i||null});if(!l){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`)}let h=o,p="string"==typeof h?.output?h.output:"";if(p){let a=await c.createMessage(this.db,{conversationId:l.conversationId,role:"assistant",content:p,taskId:e});try{let e=await u.getConversation(this.db,l.conversationId,t);e&&(0,r.broadcastToUser)(e.userId,{type:"conversation.message",conversationId:l.conversationId,message:(0,n.messageToResponse)(a)}).catch(()=>{})}catch{}}return await this.reconcileAgentStatus(l.agentId,l.workspaceId),await this.dispatchNextBufferedMessage(l.conversationId,l.workspaceId),l}async failTask(e,t,i){let o=await d.failTask(this.db,e,t,i);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;if(i){let a=await c.createMessage(this.db,{conversationId:o.conversationId,role:"assistant",content:`Error: ${i}`,taskId:e});try{let e=await u.getConversation(this.db,o.conversationId,t);e&&(0,r.broadcastToUser)(e.userId,{type:"conversation.message",conversationId:o.conversationId,message:(0,n.messageToResponse)(a)}).catch(()=>{})}catch{}}return await this.reconcileAgentStatus(o.agentId,o.workspaceId),await this.syncIssueStatusFromTask(o,"failed"),await this.dispatchNextBufferedMessage(o.conversationId,o.workspaceId),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 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,r.broadcastToUser)(t.userId,{type:"conversation.message",conversationId:e.conversationId,message:(0,n.messageToResponse)(i)}).catch(()=>{})}catch{}}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),await this.dispatchNextBufferedMessage(a.conversationId,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,t,s){let r=await d.getActiveTaskByConversation(this.db,e,t);if(!r)return null;let n=await d.cancelTask(this.db,r.id,t);return n?(("dispatched"===r.status||"running"===r.status)&&await d.createTask(this.db,{agentId:r.agentId,runtimeId:r.runtimeId,workspaceId:t,conversationId:e,prompt:"",type:a.TASK_TYPES.KILL_TASK,context:{target_task_id:r.id}}),await c.createMessage(this.db,{conversationId:e,role:"assistant",content:s?.reason??"Task cancelled by user",taskId:r.id}),await this.reconcileAgentStatus(r.agentId,t),s?.skipDispatch||await this.dispatchNextBufferedMessage(e,t),n):null}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,i.invalidate)(i.cacheKeys.activeTaskCounts(t)).catch(()=>{})}async dispatchNextBufferedMessage(e,t){let i=await c.activateNextBufferedMessage(this.db,e);if(!i)return null;let o=await u.getConversation(this.db,e,t);if(!o)return s.log.warn("dispatchNextBufferedMessage: conversation not found",{conversationId:e}),await c.revertToBuffered(this.db,i.id).catch(e=>{s.log.error("dispatchNextBufferedMessage: failed to revert message status",{messageId:i.id,revertErr:e})}),null;let l=o.userId;try{let s=i.attachmentIds?JSON.parse(i.attachmentIds):[],u=await d.getLatestTaskForConversation(this.db,e),h=u?.traceId??null,p=await this.enqueueTask(o.agentId,e,t,i.content,a.TASK_TYPES.USER_DM_MESSAGE,{contextKey:e,context:s.length>0?{attachment_ids:s}:void 0,traceId:h,parentTaskId:null});return await c.updateMessageTaskId(this.db,i.id,p.id),(0,r.broadcastToUser)(l,{type:"followup.dispatched",conversationId:e,message:(0,n.messageToResponse)(i),task:(0,n.taskToResponse)(p)}).catch(()=>{}),p}catch(t){return s.log.warn("dispatchNextBufferedMessage: enqueueTask failed",{conversationId:e,err:t}),await c.revertToBuffered(this.db,i.id).catch(e=>{s.log.error("dispatchNextBufferedMessage: failed to revert message status",{messageId:i.id,revertErr:e})}),(0,r.broadcastToUser)(l,{type:"followup.dispatch_failed",conversationId:e,messageId:i.id,error:t instanceof Error?t.message:"Failed to dispatch follow-up"}).catch(()=>{}),null}}async cancelTrace(e,t,a){for(let r 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(r,t,{skipDispatch:!0,reason:a?.reason})}catch(t){s.log.warn("cancelTrace: failed to cancel task",{traceId:e,convId:r,err:t})}}async pushTaskToDaemon(e,a){let s=await t.queries.runtime.getAgentRuntime(this.db,e.runtimeId);if(!s)return;let n=await d.dispatchTaskById(this.db,e.id,a);if(!n)return;let i=new o.TaskPayloadBuilder(this.db),l=await i.buildFullPayloads([n],a);if(0===l.length)return void await d.revertDispatchedToQueued(this.db,e.id,a);try{await (0,r.broadcastToDaemon)(s.daemonId,{type:"daemon.tasks",tasks:l})}catch{await d.revertDispatchedToQueued(this.db,e.id,a)}}}])},825526,e=>e.a(async(t,a)=>{try{var s=e.i(291484),r=e.i(675139),n=e.i(152327),i=e.i(47962),o=e.i(776227),d=e.i(740580),l=e.i(205054),c=e.i(726089),u=e.i(774078),h=t([n]);[n]=h.then?(await h)():h;let p=(0,n.withAuth)(async(e,t)=>{let a=await (0,i.withWorkspaceMember)(e,t);if(a instanceof Response)return a;let{env:n}=(0,s.getCloudflareContext)(),h=(0,r.getDb)(n.DB),p=t.params?.id;if(!p)return(0,o.writeError)("task id is required",400);let g=new l.TaskService(h);try{let{oldTask:e,newTask:s}=await g.retryTask(p,a.workspaceId),r=new Date().toISOString().slice(0,10);return(0,u.invalidate)(u.cacheKeys.overviewTaskStats(a.workspaceId,r)).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,d.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),r=e.i(404478),n=e.i(732985),i=e.i(481671),o=e.i(638081),d=e.i(204960),l=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),f=e.i(830665),m=e.i(944002),I=e.i(193695);e.i(195928);var k=e.i(81543),T=e.i(825526),y=t([T]);[T]=y.then?(await y)():y;let b=new s.AppRouteRouteModule({definition:{kind:r.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:T,...{}}),{workAsyncStorage:_,workUnitAsyncStorage:S,serverHooks:E}=b;async function v(e,t,a){a.requestMeta&&(0,i.setRequestMeta)(e,a.requestMeta),b.isDev&&(0,i.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let s="/api/tasks/[id]/retry/route";s=s.replace(/\/index$/,"")||"/";let n=await b.prepare(e,t,{srcPage:s,multiZoneDraftMode:!1});if(!n)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:T,deploymentId:y,params:v,nextConfig:_,parsedUrl:S,isDraftMode:E,prerenderManifest:R,routerServerContext:A,isOnDemandRevalidate:C,revalidateOnlyGenerated:x,resolvedPathname:P,clientReferenceManifest:M,serverActionsManifest:K}=n,N=(0,l.normalizeAppPath)(s),q=!!(R.dynamicRoutes[N]||R.routes[P]),O=async()=>((null==A?void 0:A.render404)?await A.render404(e,t,S,!1):t.end("This page could not be found"),null);if(q&&!E){let e=!!R.routes[P],t=R.dynamicRoutes[N];if(t&&!1===t.fallback&&!e){if(_.adapterPath)return await O();throw new I.NoFallbackError}}let U=null;!q||b.isDev||E||(U=P,U="/index"===U?"/":U);let D=!0===b.isDev||!q,B=q&&!D;K&&M&&(0,d.setManifestsSingleton)({page:s,clientReferenceManifest:M,serverActionsManifest:K});let $=e.method||"GET",L=(0,o.getTracer)(),H=L.getActiveScopeSpan(),j=!!(null==A?void 0:A.isWrappedByNextServer),F=!!(0,i.getRequestMeta)(e,"minimalMode"),W=(0,i.getRequestMeta)(e,"incrementalCache")||await b.getIncrementalCache(e,_,R,F);null==W||W.resetRequestCache(),globalThis.__incrementalCache=W;let Y={params:v,previewProps:R.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,r)=>b.onRequestError(e,t,s,r,A)},sharedContext:{buildId:T,deploymentId:y}},G=new c.NodeNextRequest(e),V=new c.NodeNextResponse(t),J=u.NextRequestAdapter.fromNodeNextRequest(G,(0,u.signalFromNodeResponse)(t));try{let n,i=async e=>b.handle(J,Y).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=L.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 r=a.get("next.route");if(r){let t=`${$} ${r}`;e.setAttributes({"next.route":r,"http.route":r,"next.span_name":t}),e.updateName(t),n&&n!==e&&(n.setAttribute("http.route",r),n.updateName(t))}else e.updateName(`${$} ${s}`)}),d=async n=>{var o,d;let l=async({previousCacheEntry:r})=>{try{if(!F&&C&&x&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await i(n);e.fetchMetrics=Y.renderOpts.fetchMetrics;let o=Y.renderOpts.pendingWaitUntil;o&&a.waitUntil&&(a.waitUntil(o),o=void 0);let d=Y.renderOpts.collectedTags;if(!q)return await (0,g.sendResponse)(G,V,s,Y.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,w.toNodeOutgoingHttpHeaders)(s.headers);d&&(t[m.NEXT_CACHE_TAGS_HEADER]=d),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==Y.renderOpts.collectedRevalidate&&!(Y.renderOpts.collectedRevalidate>=m.INFINITE_CACHE)&&Y.renderOpts.collectedRevalidate,r=void 0===Y.renderOpts.collectedExpire||Y.renderOpts.collectedExpire>=m.INFINITE_CACHE?void 0:Y.renderOpts.collectedExpire;return{value:{kind:k.CachedRouteKind.APP_ROUTE,status:s.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:r}}}}catch(t){throw(null==r?void 0:r.isStale)&&await b.onRequestError(e,t,{routerKind:"App Router",routePath:s,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:B,isOnDemandRevalidate:C})},!1,A),t}},c=await b.handleResponse({req:e,nextConfig:_,cacheKey:U,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:R,isRoutePPREnabled:!1,isOnDemandRevalidate:C,revalidateOnlyGenerated:x,responseGenerator:l,waitUntil:a.waitUntil,isMinimalMode:F});if(!q)return null;if((null==c||null==(o=c.value)?void 0:o.kind)!==k.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==c||null==(d=c.value)?void 0:d.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,w.fromNodeOutgoingHttpHeaders)(c.value.headers);return F&&q||u.delete(m.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)(G,V,new Response(c.value.body,{headers:u,status:c.value.status||200})),null};j&&H?await d(H):(n=L.getActiveScopeSpan(),await L.withPropagatedContext(e.headers,()=>L.trace(h.BaseServerSpan.handleRequest,{spanName:`${$} ${s}`,kind:o.SpanKind.SERVER,attributes:{"http.method":$,"http.target":e.url}},d),void 0,!j))}catch(t){if(t instanceof I.NoFallbackError||await b.onRequestError(e,t,{routerKind:"App Router",routePath:N,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:B,isOnDemandRevalidate:C})},!1,A),q)throw t;return await (0,g.sendResponse)(G,V,new Response(null,{status:500})),null}}e.s(["handler",0,v,"patchFetch",0,function(){return(0,n.patchFetch)({workAsyncStorage:_,workUnitAsyncStorage:S})},"routeModule",0,b,"serverHooks",0,E,"workAsyncStorage",0,_,"workUnitAsyncStorage",0,S]),a()}catch(e){a(e)}},!1),572758,e=>{e.v(t=>Promise.all(["server/chunks/0yh8_@better-auth_memory-adapter_dist_index_mjs_0u9gr83._.js"].map(t=>e.l(t))).then(()=>t(501816)))},409008,e=>{e.v(t=>Promise.all(["server/chunks/0cae_better-auth_dist_adapters_kysely-adapter_index_mjs_0c-9lzd._.js"].map(t=>e.l(t))).then(()=>t(770021)))},96318,e=>{e.v(t=>Promise.all(["server/chunks/0_yy_@better-auth_kysely-adapter_dist_bun-sqlite-dialect-na--YwnN_mjs_0ua5mwj._.js"].map(t=>e.l(t))).then(()=>t(158195)))},11379,e=>{e.v(t=>Promise.all(["server/chunks/0_yy_@better-auth_kysely-adapter_dist_node-sqlite-dialect_mjs_0evb.r9._.js"].map(t=>e.l(t))).then(()=>t(302822)))},946743,e=>{e.v(t=>Promise.all(["server/chunks/0_yy_@better-auth_kysely-adapter_dist_d1-sqlite-dialect-C2B7YsIT_mjs_0bihzky._.js"].map(t=>e.l(t))).then(()=>t(898679)))}];
1
+ module.exports=[726089,e=>{"use strict";var t=e.i(291484);e.i(700598);var a=e.i(704024);let s=(0,e.i(726527).createLogger)({service:"broadcast"});async function r(e,r,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:r});if(o.ok)return;s.warn("broadcast service-binding non-ok",{...n,status:o.status})}catch{}let o=i||a.DEV_WS_DO_URL,d=await fetch(`${o}${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:r});if(!d.ok)throw Error(`broadcast failed: ${d.status}`)}function n(e,a,s){let n=r(e,a,s);try{let{ctx:e}=(0,t.getCloudflareContext)();e.waitUntil(n)}catch{}return n}e.s(["broadcastToDaemon",0,function(e,t){return n(`/broadcast/daemon/${e}`,JSON.stringify(t),{daemonId:e,type:t.type})},"broadcastToUser",0,function(e,t){return n(`/broadcast/user/${e}`,JSON.stringify(t),{userId:e,type:t.type})}])},799579,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),r=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),d=[...new Set(o.map(e=>e.agentId))],[l,c,u]=d.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 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(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 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])),f=new Map,I=new Map,k=[];for(let o of e){if(o.type===a.TASK_TYPES.KILL_TASK){k.push({...(0,r.taskToResponse)(o),agent:null,sender:null});continue}let e=h.get(o.agentId)??null,d=[];if(e){e.emailHandle&&d.push(`${e.emailHandle}@alook.ai`);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,n.cached)(n.cacheKeys.member(i,e.ownerId),600,()=>t.queries.member.getMemberByUserAndWorkspace(this.db,e.ownerId,i));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,n.cached)(n.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,w=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,n.cached)(n.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 y=(g.get(o.agentId)??[]).map(e=>({name:e.name,email:e.emailHandle?(0,s.toAlookAddress)(e.emailHandle):"",description:e.description,instruction:e.instruction}));k.push({...(0,r.taskToResponse)(o),channel:w,sender:T,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:y}:null})}return k}}])},205054,e=>{"use strict";e.i(700598);var t=e.i(291109),a=e.i(704024),s=e.i(799579),r=e.i(726089),n=e.i(740580),i=e.i(774078),o=e.i(555230);let d=t.queries.task,l=t.queries.agent,c=t.queries.message,u=t.queries.conversation,h=t.queries.issue;e.s(["TaskService",0,class{db;constructor(e){this.db=e}async enqueueTask(e,t,s,r,n=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:r,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(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),r=t-s.length,n=r>0?await d.listPendingTasksByRuntimes(this.db,e,a):[],i=new Set(e),o=new Set,c=[...s],u=[];for(let e of n){if(u.length>=r)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 l.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 d.startTask(this.db,e,t);if(!a)throw Error("task not in dispatched status");return a}async completeTask(e,t,a,i){let o;try{o=JSON.parse(a)}catch{o={raw:a}}let l=await d.completeTask(this.db,e,t,{result:o,sessionId:i||null});if(!l){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`)}let h=o,p="string"==typeof h?.output?h.output:"";if(p){let a=await c.createMessage(this.db,{conversationId:l.conversationId,role:"assistant",content:p,taskId:e});try{let e=await u.getConversation(this.db,l.conversationId,t);e&&(0,r.broadcastToUser)(e.userId,{type:"conversation.message",conversationId:l.conversationId,message:(0,n.messageToResponse)(a)}).catch(()=>{})}catch{}}return await this.reconcileAgentStatus(l.agentId,l.workspaceId),await this.dispatchNextBufferedMessage(l.conversationId,l.workspaceId),l}async failTask(e,t,i){let o=await d.failTask(this.db,e,t,i);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;if(i){let a=await c.createMessage(this.db,{conversationId:o.conversationId,role:"assistant",content:`Error: ${i}`,taskId:e});try{let e=await u.getConversation(this.db,o.conversationId,t);e&&(0,r.broadcastToUser)(e.userId,{type:"conversation.message",conversationId:o.conversationId,message:(0,n.messageToResponse)(a)}).catch(()=>{})}catch{}}return await this.reconcileAgentStatus(o.agentId,o.workspaceId),await this.syncIssueStatusFromTask(o,"failed"),await this.dispatchNextBufferedMessage(o.conversationId,o.workspaceId),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 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,r.broadcastToUser)(t.userId,{type:"conversation.message",conversationId:e.conversationId,message:(0,n.messageToResponse)(i)}).catch(()=>{})}catch{}}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),await this.dispatchNextBufferedMessage(a.conversationId,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,t,s){let r=await d.getActiveTaskByConversation(this.db,e,t);if(!r)return null;let n=await d.cancelTask(this.db,r.id,t);return n?(("dispatched"===r.status||"running"===r.status)&&await d.createTask(this.db,{agentId:r.agentId,runtimeId:r.runtimeId,workspaceId:t,conversationId:e,prompt:"",type:a.TASK_TYPES.KILL_TASK,context:{target_task_id:r.id}}),await c.createMessage(this.db,{conversationId:e,role:"assistant",content:s?.reason??"Task cancelled by user",taskId:r.id}),await this.reconcileAgentStatus(r.agentId,t),s?.skipDispatch||await this.dispatchNextBufferedMessage(e,t),n):null}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,i.invalidate)(i.cacheKeys.activeTaskCounts(t)).catch(()=>{})}async dispatchNextBufferedMessage(e,t){let i=await c.activateNextBufferedMessage(this.db,e);if(!i)return null;let o=await u.getConversation(this.db,e,t);if(!o)return s.log.warn("dispatchNextBufferedMessage: conversation not found",{conversationId:e}),await c.revertToBuffered(this.db,i.id).catch(e=>{s.log.error("dispatchNextBufferedMessage: failed to revert message status",{messageId:i.id,revertErr:e})}),null;let l=o.userId;try{let s=i.attachmentIds?JSON.parse(i.attachmentIds):[],u=await d.getLatestTaskForConversation(this.db,e),h=u?.traceId??null,p=await this.enqueueTask(o.agentId,e,t,i.content,a.TASK_TYPES.USER_DM_MESSAGE,{contextKey:e,context:s.length>0?{attachment_ids:s}:void 0,traceId:h,parentTaskId:null});return await c.updateMessageTaskId(this.db,i.id,p.id),(0,r.broadcastToUser)(l,{type:"followup.dispatched",conversationId:e,message:(0,n.messageToResponse)(i),task:(0,n.taskToResponse)(p)}).catch(()=>{}),p}catch(t){return s.log.warn("dispatchNextBufferedMessage: enqueueTask failed",{conversationId:e,err:t}),await c.revertToBuffered(this.db,i.id).catch(e=>{s.log.error("dispatchNextBufferedMessage: failed to revert message status",{messageId:i.id,revertErr:e})}),(0,r.broadcastToUser)(l,{type:"followup.dispatch_failed",conversationId:e,messageId:i.id,error:t instanceof Error?t.message:"Failed to dispatch follow-up"}).catch(()=>{}),null}}async cancelTrace(e,t,a){for(let r 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(r,t,{skipDispatch:!0,reason:a?.reason})}catch(t){s.log.warn("cancelTrace: failed to cancel task",{traceId:e,convId:r,err:t})}}async pushTaskToDaemon(e,a){let s=await t.queries.runtime.getAgentRuntime(this.db,e.runtimeId);if(!s)return;let n=await d.dispatchTaskById(this.db,e.id,a);if(!n)return;let i=new o.TaskPayloadBuilder(this.db),l=await i.buildFullPayloads([n],a);if(0===l.length)return void await d.revertDispatchedToQueued(this.db,e.id,a);try{await (0,r.broadcastToDaemon)(s.daemonId,{type:"daemon.tasks",tasks:l})}catch{await d.revertDispatchedToQueued(this.db,e.id,a)}}}])},825526,e=>e.a(async(t,a)=>{try{var s=e.i(291484),r=e.i(675139),n=e.i(152327),i=e.i(47962),o=e.i(776227),d=e.i(740580),l=e.i(205054),c=e.i(726089),u=e.i(774078),h=t([n]);[n]=h.then?(await h)():h;let p=(0,n.withAuth)(async(e,t)=>{let a=await (0,i.withWorkspaceMember)(e,t);if(a instanceof Response)return a;let{env:n}=(0,s.getCloudflareContext)(),h=(0,r.getDb)(n.DB),p=t.params?.id;if(!p)return(0,o.writeError)("task id is required",400);let g=new l.TaskService(h);try{let{oldTask:e,newTask:s}=await g.retryTask(p,a.workspaceId),r=new Date().toISOString().slice(0,10);return(0,u.invalidate)(u.cacheKeys.overviewTaskStats(a.workspaceId,r)).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,d.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),r=e.i(404478),n=e.i(732985),i=e.i(481671),o=e.i(638081),d=e.i(204960),l=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),f=e.i(944002),I=e.i(193695);e.i(195928);var k=e.i(81543),T=e.i(825526),y=t([T]);[T]=y.then?(await y)():y;let b=new s.AppRouteRouteModule({definition:{kind:r.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:T,...{}}),{workAsyncStorage:_,workUnitAsyncStorage:S,serverHooks:E}=b;async function v(e,t,a){a.requestMeta&&(0,i.setRequestMeta)(e,a.requestMeta),b.isDev&&(0,i.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let s="/api/tasks/[id]/retry/route";s=s.replace(/\/index$/,"")||"/";let n=await b.prepare(e,t,{srcPage:s,multiZoneDraftMode:!1});if(!n)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:T,deploymentId:y,params:v,nextConfig:_,parsedUrl:S,isDraftMode:E,prerenderManifest:R,routerServerContext:A,isOnDemandRevalidate:C,revalidateOnlyGenerated:x,resolvedPathname:P,clientReferenceManifest:M,serverActionsManifest:K}=n,N=(0,l.normalizeAppPath)(s),q=!!(R.dynamicRoutes[N]||R.routes[P]),O=async()=>((null==A?void 0:A.render404)?await A.render404(e,t,S,!1):t.end("This page could not be found"),null);if(q&&!E){let e=!!R.routes[P],t=R.dynamicRoutes[N];if(t&&!1===t.fallback&&!e){if(_.adapterPath)return await O();throw new I.NoFallbackError}}let U=null;!q||b.isDev||E||(U=P,U="/index"===U?"/":U);let B=!0===b.isDev||!q,D=q&&!B;K&&M&&(0,d.setManifestsSingleton)({page:s,clientReferenceManifest:M,serverActionsManifest:K});let $=e.method||"GET",L=(0,o.getTracer)(),H=L.getActiveScopeSpan(),j=!!(null==A?void 0:A.isWrappedByNextServer),F=!!(0,i.getRequestMeta)(e,"minimalMode"),W=(0,i.getRequestMeta)(e,"incrementalCache")||await b.getIncrementalCache(e,_,R,F);null==W||W.resetRequestCache(),globalThis.__incrementalCache=W;let Y={params:v,previewProps:R.preview,renderOpts:{experimental:{authInterrupts:!!_.experimental.authInterrupts},cacheComponents:!!_.cacheComponents,supportsDynamicResponse:B,incrementalCache:W,cacheLifeProfiles:_.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,s,r)=>b.onRequestError(e,t,s,r,A)},sharedContext:{buildId:T,deploymentId:y}},G=new c.NodeNextRequest(e),V=new c.NodeNextResponse(t),J=u.NextRequestAdapter.fromNodeNextRequest(G,(0,u.signalFromNodeResponse)(t));try{let n,i=async e=>b.handle(J,Y).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=L.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 r=a.get("next.route");if(r){let t=`${$} ${r}`;e.setAttributes({"next.route":r,"http.route":r,"next.span_name":t}),e.updateName(t),n&&n!==e&&(n.setAttribute("http.route",r),n.updateName(t))}else e.updateName(`${$} ${s}`)}),d=async n=>{var o,d;let l=async({previousCacheEntry:r})=>{try{if(!F&&C&&x&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await i(n);e.fetchMetrics=Y.renderOpts.fetchMetrics;let o=Y.renderOpts.pendingWaitUntil;o&&a.waitUntil&&(a.waitUntil(o),o=void 0);let d=Y.renderOpts.collectedTags;if(!q)return await (0,g.sendResponse)(G,V,s,Y.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,w.toNodeOutgoingHttpHeaders)(s.headers);d&&(t[f.NEXT_CACHE_TAGS_HEADER]=d),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==Y.renderOpts.collectedRevalidate&&!(Y.renderOpts.collectedRevalidate>=f.INFINITE_CACHE)&&Y.renderOpts.collectedRevalidate,r=void 0===Y.renderOpts.collectedExpire||Y.renderOpts.collectedExpire>=f.INFINITE_CACHE?void 0:Y.renderOpts.collectedExpire;return{value:{kind:k.CachedRouteKind.APP_ROUTE,status:s.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:r}}}}catch(t){throw(null==r?void 0:r.isStale)&&await b.onRequestError(e,t,{routerKind:"App Router",routePath:s,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:C})},!1,A),t}},c=await b.handleResponse({req:e,nextConfig:_,cacheKey:U,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:R,isRoutePPREnabled:!1,isOnDemandRevalidate:C,revalidateOnlyGenerated:x,responseGenerator:l,waitUntil:a.waitUntil,isMinimalMode:F});if(!q)return null;if((null==c||null==(o=c.value)?void 0:o.kind)!==k.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==c||null==(d=c.value)?void 0:d.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,w.fromNodeOutgoingHttpHeaders)(c.value.headers);return F&&q||u.delete(f.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)(G,V,new Response(c.value.body,{headers:u,status:c.value.status||200})),null};j&&H?await d(H):(n=L.getActiveScopeSpan(),await L.withPropagatedContext(e.headers,()=>L.trace(h.BaseServerSpan.handleRequest,{spanName:`${$} ${s}`,kind:o.SpanKind.SERVER,attributes:{"http.method":$,"http.target":e.url}},d),void 0,!j))}catch(t){if(t instanceof I.NoFallbackError||await b.onRequestError(e,t,{routerKind:"App Router",routePath:N,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:C})},!1,A),q)throw t;return await (0,g.sendResponse)(G,V,new Response(null,{status:500})),null}}e.s(["handler",0,v,"patchFetch",0,function(){return(0,n.patchFetch)({workAsyncStorage:_,workUnitAsyncStorage:S})},"routeModule",0,b,"serverHooks",0,E,"workAsyncStorage",0,_,"workUnitAsyncStorage",0,S]),a()}catch(e){a(e)}},!1),572758,e=>{e.v(t=>Promise.all(["server/chunks/0yh8_@better-auth_memory-adapter_dist_index_mjs_0u9gr83._.js"].map(t=>e.l(t))).then(()=>t(501816)))},409008,e=>{e.v(t=>Promise.all(["server/chunks/0cae_better-auth_dist_adapters_kysely-adapter_index_mjs_0c-9lzd._.js"].map(t=>e.l(t))).then(()=>t(770021)))},96318,e=>{e.v(t=>Promise.all(["server/chunks/0_yy_@better-auth_kysely-adapter_dist_bun-sqlite-dialect-na--YwnN_mjs_0ua5mwj._.js"].map(t=>e.l(t))).then(()=>t(158195)))},11379,e=>{e.v(t=>Promise.all(["server/chunks/0_yy_@better-auth_kysely-adapter_dist_node-sqlite-dialect_mjs_0evb.r9._.js"].map(t=>e.l(t))).then(()=>t(302822)))},946743,e=>{e.v(t=>Promise.all(["server/chunks/0_yy_@better-auth_kysely-adapter_dist_d1-sqlite-dialect-C2B7YsIT_mjs_0bihzky._.js"].map(t=>e.l(t))).then(()=>t(898679)))}];
2
2
 
3
3
  //# sourceMappingURL=_13hlohp._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[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,r=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)(r)?"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){let t={id:e.id,task_id:e.taskId,seq:e.seq,type:e.type,tool:e.tool,call_id:e.callId||"",content:e.content,output:e.output};return e.input&&(t.input=e.input),t},"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(291484);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)return;s.warn("broadcast service-binding non-ok",{...r,status:o.status})}catch{}let o=i||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}`)}function r(e,a,s){let r=n(e,a,s);try{let{ctx:e}=(0,t.getCloudflareContext)();e.waitUntil(r)}catch{}return r}e.s(["broadcastToDaemon",0,function(e,t){return r(`/broadcast/daemon/${e}`,JSON.stringify(t),{daemonId:e,type:t.type})},"broadcastToUser",0,function(e,t){return r(`/broadcast/user/${e}`,JSON.stringify(t),{userId:e,type:t.type})}])},799579,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=[...new Set(e.filter(e=>e.type!==a.TASK_TYPES.KILL_TASK).map(e=>e.agentId))],[d,l,c]=o.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(o);return[e.filter(e=>s.has(e.id)),t.filter(e=>s.has(e.agentId)),a.filter(e=>s.has(e.agentId))]}):[[],[],[]],u=new Map(d.map(e=>[e.id,e])),m=new Map;for(let e of l){let t=m.get(e.agentId)??[];t.push(e.emailAddress),m.set(e.agentId,t)}let p=new Map;for(let e of c){let t=p.get(e.agentId)??[];t.push(e),p.set(e.agentId,t)}let f=new Map,h=new Map,g=new Map,T=[];for(let o of e){if(o.type===a.TASK_TYPES.KILL_TASK){T.push({...(0,n.taskToResponse)(o),agent:null,sender:null});continue}let e=u.get(o.agentId)??null,d=[];if(e){e.emailHandle&&d.push(`${e.emailHandle}@alook.ai`);let t=m.get(e.id)??[];d.push(...t)}let l=e?.instructions??"";if(e?.ownerId){if(!f.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));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(!h.has(e.ownerId)){let a=await (0,r.cached)(r.cacheKeys.user(e.ownerId),1800,()=>t.queries.user.getUser(this.db,e.ownerId));h.set(e.ownerId,a?{name:a.name,email:a.email}:null)}c=h.get(e.ownerId)?.name??null}let _=g.get(o.conversationId)??null;o.conversationId&&!g.has(o.conversationId)&&(_=await t.queries.conversation.getConversation(this.db,o.conversationId,i),g.set(o.conversationId,_));let I=_?.channel??"default",w=null;if(o.type===a.TASK_TYPES.USER_DM_MESSAGE&&_?.userId){if(!h.has(_.userId)){let e=await (0,r.cached)(r.cacheKeys.user(_.userId),1800,()=>t.queries.user.getUser(this.db,_.userId));h.set(_.userId,e?{name:e.name,email:e.email}:null)}let a=h.get(_.userId);a&&(w={name:a.name,email:a.email,is_owner:_.userId===e?.ownerId})}let k=(p.get(o.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)(o),channel:I,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 T}}])},205054,e=>{"use strict";e.i(700598);var t=e.i(291109),a=e.i(704024),s=e.i(799579),n=e.i(726089),r=e.i(740580),i=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;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 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: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 l.getAgent(this.db,e,t);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,r=n>0?await d.listPendingTasksByRuntimes(this.db,e,a):[],i=new Set(e),o=new Set,l=[...s],c=[];for(let e of r){if(c.length>=n)break;let t=`${e.agentId}:${e.workspaceId}`;o.has(t)||(o.add(t),c.push(e))}for(let e of(await Promise.all(c.map(e=>this.claimTask(e.agentId,e.workspaceId)))))e&&i.has(e.runtimeId)&&l.push(e);return l}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,i){let o;try{o=JSON.parse(a)}catch{o={raw:a}}let l=await d.completeTask(this.db,e,t,{result:o,sessionId:i||null});if(!l){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`)}let m=o,p="string"==typeof m?.output?m.output:"";if(p){let a=await c.createMessage(this.db,{conversationId:l.conversationId,role:"assistant",content:p,taskId:e});try{let e=await u.getConversation(this.db,l.conversationId,t);e&&(0,n.broadcastToUser)(e.userId,{type:"conversation.message",conversationId:l.conversationId,message:(0,r.messageToResponse)(a)}).catch(()=>{})}catch{}}return await this.reconcileAgentStatus(l.agentId,l.workspaceId),await this.dispatchNextBufferedMessage(l.conversationId,l.workspaceId),l}async failTask(e,t,i){let o=await d.failTask(this.db,e,t,i);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;if(i){let a=await c.createMessage(this.db,{conversationId:o.conversationId,role:"assistant",content:`Error: ${i}`,taskId:e});try{let e=await u.getConversation(this.db,o.conversationId,t);e&&(0,n.broadcastToUser)(e.userId,{type:"conversation.message",conversationId:o.conversationId,message:(0,r.messageToResponse)(a)}).catch(()=>{})}catch{}}return await this.reconcileAgentStatus(o.agentId,o.workspaceId),await this.syncIssueStatusFromTask(o,"failed"),await this.dispatchNextBufferedMessage(o.conversationId,o.workspaceId),o}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 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 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),await this.dispatchNextBufferedMessage(a.conversationId,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,t,s){let n=await d.getActiveTaskByConversation(this.db,e,t);if(!n)return null;let r=await d.cancelTask(this.db,n.id,t);return r?(("dispatched"===n.status||"running"===n.status)&&await d.createTask(this.db,{agentId:n.agentId,runtimeId:n.runtimeId,workspaceId:t,conversationId:e,prompt:"",type:a.TASK_TYPES.KILL_TASK,context:{target_task_id:n.id}}),await c.createMessage(this.db,{conversationId:e,role:"assistant",content:s?.reason??"Task cancelled by user",taskId:n.id}),await this.reconcileAgentStatus(n.agentId,t),s?.skipDispatch||await this.dispatchNextBufferedMessage(e,t),r):null}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,i.invalidate)(i.cacheKeys.activeTaskCounts(t)).catch(()=>{})}async dispatchNextBufferedMessage(e,t){let i=await c.activateNextBufferedMessage(this.db,e);if(!i)return null;let o=await u.getConversation(this.db,e,t);if(!o)return s.log.warn("dispatchNextBufferedMessage: conversation not found",{conversationId:e}),await c.revertToBuffered(this.db,i.id).catch(e=>{s.log.error("dispatchNextBufferedMessage: failed to revert message status",{messageId:i.id,revertErr:e})}),null;let l=o.userId;try{let s=i.attachmentIds?JSON.parse(i.attachmentIds):[],u=await d.getLatestTaskForConversation(this.db,e),m=u?.traceId??null,p=await this.enqueueTask(o.agentId,e,t,i.content,a.TASK_TYPES.USER_DM_MESSAGE,{contextKey:e,context:s.length>0?{attachment_ids:s}:void 0,traceId:m,parentTaskId:null});return await c.updateMessageTaskId(this.db,i.id,p.id),(0,n.broadcastToUser)(l,{type:"followup.dispatched",conversationId:e,message:(0,r.messageToResponse)(i),task:(0,r.taskToResponse)(p)}).catch(()=>{}),p}catch(t){return s.log.warn("dispatchNextBufferedMessage: enqueueTask failed",{conversationId:e,err:t}),await c.revertToBuffered(this.db,i.id).catch(e=>{s.log.error("dispatchNextBufferedMessage: failed to revert message status",{messageId:i.id,revertErr:e})}),(0,n.broadcastToUser)(l,{type:"followup.dispatch_failed",conversationId:e,messageId:i.id,error:t instanceof Error?t.message:"Failed to dispatch follow-up"}).catch(()=>{}),null}}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,{skipDispatch:!0,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 d.dispatchTaskById(this.db,e.id,a);if(!r)return;let i=new o.TaskPayloadBuilder(this.db),l=await i.buildFullPayloads([r],a);if(0===l.length)return void await d.revertDispatchedToQueued(this.db,e.id,a);try{await (0,n.broadcastToDaemon)(s.daemonId,{type:"daemon.tasks",tasks:l})}catch{await d.revertDispatchedToQueued(this.db,e.id,a)}}}])}];
1
+ module.exports=[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,r=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)(r)?"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){let t={id:e.id,task_id:e.taskId,seq:e.seq,type:e.type,tool:e.tool,call_id:e.callId||"",content:e.content,output:e.output};return e.input&&(t.input=e.input),t},"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(291484);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)return;s.warn("broadcast service-binding non-ok",{...r,status:o.status})}catch{}let o=i||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}`)}function r(e,a,s){let r=n(e,a,s);try{let{ctx:e}=(0,t.getCloudflareContext)();e.waitUntil(r)}catch{}return r}e.s(["broadcastToDaemon",0,function(e,t){return r(`/broadcast/daemon/${e}`,JSON.stringify(t),{daemonId:e,type:t.type})},"broadcastToUser",0,function(e,t){return r(`/broadcast/user/${e}`,JSON.stringify(t),{userId:e,type:t.type})}])},799579,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),d=[...new Set(o.map(e=>e.agentId))],[l,c,u]=d.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(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 h=new Map;for(let e of u){let t=h.get(e.agentId)??[];t.push(e),h.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])),T=new Map,w=new Map,I=[];for(let o of e){if(o.type===a.TASK_TYPES.KILL_TASK){I.push({...(0,n.taskToResponse)(o),agent:null,sender:null});continue}let e=m.get(o.agentId)??null,d=[];if(e){e.emailHandle&&d.push(`${e.emailHandle}@alook.ai`);let t=p.get(e.id)??[];d.push(...t)}let l=e?.instructions??"";if(e?.ownerId){if(!T.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));T.set(e.ownerId,a?{globalInstruction:a.globalInstruction}:null)}let a=T.get(e.ownerId);a?.globalInstruction&&(l=[a.globalInstruction,l].filter(Boolean).join("\n\n"))}let c=null;if(e?.ownerId){if(!w.has(e.ownerId)){let a=await (0,r.cached)(r.cacheKeys.user(e.ownerId),1800,()=>t.queries.user.getUser(this.db,e.ownerId));w.set(e.ownerId,a?{name:a.name,email:a.email}:null)}c=w.get(e.ownerId)?.name??null}let u=f.get(o.conversationId)??null,g=u?.channel??"default",_=null;if(o.type===a.TASK_TYPES.USER_DM_MESSAGE&&u?.userId){if(!w.has(u.userId)){let e=await (0,r.cached)(r.cacheKeys.user(u.userId),1800,()=>t.queries.user.getUser(this.db,u.userId));w.set(u.userId,e?{name:e.name,email:e.email}:null)}let a=w.get(u.userId);a&&(_={name:a.name,email:a.email,is_owner:u.userId===e?.ownerId})}let k=(h.get(o.agentId)??[]).map(e=>({name:e.name,email:e.emailHandle?(0,s.toAlookAddress)(e.emailHandle):"",description:e.description,instruction:e.instruction}));I.push({...(0,n.taskToResponse)(o),channel:g,sender:_,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 I}}])},205054,e=>{"use strict";e.i(700598);var t=e.i(291109),a=e.i(704024),s=e.i(799579),n=e.i(726089),r=e.i(740580),i=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;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 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: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 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,r=n>0?await d.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 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&&i.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,i){let o;try{o=JSON.parse(a)}catch{o={raw:a}}let l=await d.completeTask(this.db,e,t,{result:o,sessionId:i||null});if(!l){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`)}let m=o,p="string"==typeof m?.output?m.output:"";if(p){let a=await c.createMessage(this.db,{conversationId:l.conversationId,role:"assistant",content:p,taskId:e});try{let e=await u.getConversation(this.db,l.conversationId,t);e&&(0,n.broadcastToUser)(e.userId,{type:"conversation.message",conversationId:l.conversationId,message:(0,r.messageToResponse)(a)}).catch(()=>{})}catch{}}return await this.reconcileAgentStatus(l.agentId,l.workspaceId),await this.dispatchNextBufferedMessage(l.conversationId,l.workspaceId),l}async failTask(e,t,i){let o=await d.failTask(this.db,e,t,i);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;if(i){let a=await c.createMessage(this.db,{conversationId:o.conversationId,role:"assistant",content:`Error: ${i}`,taskId:e});try{let e=await u.getConversation(this.db,o.conversationId,t);e&&(0,n.broadcastToUser)(e.userId,{type:"conversation.message",conversationId:o.conversationId,message:(0,r.messageToResponse)(a)}).catch(()=>{})}catch{}}return await this.reconcileAgentStatus(o.agentId,o.workspaceId),await this.syncIssueStatusFromTask(o,"failed"),await this.dispatchNextBufferedMessage(o.conversationId,o.workspaceId),o}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 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 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),await this.dispatchNextBufferedMessage(a.conversationId,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,t,s){let n=await d.getActiveTaskByConversation(this.db,e,t);if(!n)return null;let r=await d.cancelTask(this.db,n.id,t);return r?(("dispatched"===n.status||"running"===n.status)&&await d.createTask(this.db,{agentId:n.agentId,runtimeId:n.runtimeId,workspaceId:t,conversationId:e,prompt:"",type:a.TASK_TYPES.KILL_TASK,context:{target_task_id:n.id}}),await c.createMessage(this.db,{conversationId:e,role:"assistant",content:s?.reason??"Task cancelled by user",taskId:n.id}),await this.reconcileAgentStatus(n.agentId,t),s?.skipDispatch||await this.dispatchNextBufferedMessage(e,t),r):null}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,i.invalidate)(i.cacheKeys.activeTaskCounts(t)).catch(()=>{})}async dispatchNextBufferedMessage(e,t){let i=await c.activateNextBufferedMessage(this.db,e);if(!i)return null;let o=await u.getConversation(this.db,e,t);if(!o)return s.log.warn("dispatchNextBufferedMessage: conversation not found",{conversationId:e}),await c.revertToBuffered(this.db,i.id).catch(e=>{s.log.error("dispatchNextBufferedMessage: failed to revert message status",{messageId:i.id,revertErr:e})}),null;let l=o.userId;try{let s=i.attachmentIds?JSON.parse(i.attachmentIds):[],u=await d.getLatestTaskForConversation(this.db,e),m=u?.traceId??null,p=await this.enqueueTask(o.agentId,e,t,i.content,a.TASK_TYPES.USER_DM_MESSAGE,{contextKey:e,context:s.length>0?{attachment_ids:s}:void 0,traceId:m,parentTaskId:null});return await c.updateMessageTaskId(this.db,i.id,p.id),(0,n.broadcastToUser)(l,{type:"followup.dispatched",conversationId:e,message:(0,r.messageToResponse)(i),task:(0,r.taskToResponse)(p)}).catch(()=>{}),p}catch(t){return s.log.warn("dispatchNextBufferedMessage: enqueueTask failed",{conversationId:e,err:t}),await c.revertToBuffered(this.db,i.id).catch(e=>{s.log.error("dispatchNextBufferedMessage: failed to revert message status",{messageId:i.id,revertErr:e})}),(0,n.broadcastToUser)(l,{type:"followup.dispatch_failed",conversationId:e,messageId:i.id,error:t instanceof Error?t.message:"Failed to dispatch follow-up"}).catch(()=>{}),null}}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,{skipDispatch:!0,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 d.dispatchTaskById(this.db,e.id,a);if(!r)return;let i=new o.TaskPayloadBuilder(this.db),l=await i.buildFullPayloads([r],a);if(0===l.length)return void await d.revertDispatchedToQueued(this.db,e.id,a);try{await (0,n.broadcastToDaemon)(s.daemonId,{type:"daemon.tasks",tasks:l})}catch{await d.revertDispatchedToQueued(this.db,e.id,a)}}}])}];
2
2
 
3
3
  //# sourceMappingURL=src_0mko5ir._.js.map
@@ -0,0 +1,3 @@
1
+ module.exports=[750227,(a,b,c)=>{b.exports=a.x("node:path",()=>require("node:path"))},978098,a=>a.a(async(b,c)=>{try{let b=await a.y("@better-auth/core-05fe37db7d6627d8/utils/string");a.n(b),c()}catch(a){c(a)}},!0),414859,a=>a.a(async(b,c)=>{try{let b=await a.y("@better-auth/core-05fe37db7d6627d8/env");a.n(b),c()}catch(a){c(a)}},!0),200861,a=>a.a(async(b,c)=>{try{let b=await a.y("@better-auth/core-05fe37db7d6627d8/error");a.n(b),c()}catch(a){c(a)}},!0),323118,a=>a.a(async(b,c)=>{try{let b=await a.y("@better-auth/core-05fe37db7d6627d8/utils/error-codes");a.n(b),c()}catch(a){c(a)}},!0),135733,a=>{"use strict";var b=a.i(437199);a.s(["useLocalStorage",0,function(a,c){let[d,e]=(0,b.useState)(c);return(0,b.useLayoutEffect)(()=>{try{let b=localStorage.getItem(a);b&&e(JSON.parse(b))}catch{}},[a]),[d,(0,b.useCallback)(b=>{e(c=>{let d=b instanceof Function?b(c):b;try{localStorage.setItem(a,JSON.stringify(d))}catch{}return d})},[a])]}])},520950,a=>{"use strict";var b=a.i(437199);a.s(["useControlled",0,function({controlled:a,default:c,name:d,state:e="value"}){let{current:f}=b.useRef(void 0!==a),[g,h]=b.useState(c),i=b.useCallback(a=>{f||h(a)},[]);return[f?a:g,i]}])},517620,a=>{"use strict";var b=a.i(437199);let c=b.createContext({register:()=>{},unregister:()=>{},subscribeMapChange:()=>()=>{},elementsRef:{current:[]},nextIndexRef:{current:0}});a.s(["CompositeListContext",0,c,"useCompositeListContext",0,function(){return b.useContext(c)}])},705452,a=>{"use strict";var b,c=a.i(437199),d=a.i(901496),e=a.i(517620);let f=((b={})[b.None=0]="None",b[b.GuessFromOrder=1]="GuessFromOrder",b);a.s(["IndexGuessBehavior",0,f,"useCompositeListItem",0,function(a={}){let{label:b,metadata:g,textRef:h,indexGuessBehavior:i,index:j}=a,{register:k,unregister:l,subscribeMapChange:m,elementsRef:n,labelsRef:o,nextIndexRef:p}=(0,e.useCompositeListContext)(),q=c.useRef(-1),[r,s]=c.useState(j??(i===f.GuessFromOrder?()=>{if(-1===q.current){let a=p.current;p.current+=1,q.current=a}return q.current}:-1)),t=c.useRef(null),u=c.useCallback(a=>{if(t.current=a,-1!==r&&null!==a&&(n.current[r]=a,o)){let c=void 0!==b;o.current[r]=c?b:h?.current?.textContent??a.textContent}},[r,n,o,b,h]);return(0,d.useIsoLayoutEffect)(()=>{if(null!=j)return;let a=t.current;if(a)return k(a,g),()=>{l(a)}},[j,k,l,g]),(0,d.useIsoLayoutEffect)(()=>{if(null==j)return m(a=>{let b=t.current?a.get(t.current)?.index:null;null!=b&&s(b)})},[j,m,s]),c.useMemo(()=>({ref:u,index:r}),[r,u])}])},255435,a=>{"use strict";var b=a.i(437199),c=a.i(980403),d=a.i(935469),e=a.i(901496),f=a.i(517620),g=a.i(749314);function h(){return new Map}function i(){return new Set}function j(a,b){let c=a.compareDocumentPosition(b);return c&Node.DOCUMENT_POSITION_FOLLOWING||c&Node.DOCUMENT_POSITION_CONTAINED_BY?-1:c&Node.DOCUMENT_POSITION_PRECEDING||c&Node.DOCUMENT_POSITION_CONTAINS?1:0}a.s(["CompositeList",0,function(a){let{children:k,elementsRef:l,labelsRef:m,onMapChange:n}=a,o=(0,d.useStableCallback)(n),p=b.useRef(0),q=(0,c.useRefWithInit)(i).current,r=(0,c.useRefWithInit)(h).current,[s,t]=b.useState(0),u=b.useRef(s),v=(0,d.useStableCallback)((a,b)=>{r.set(a,b??null),u.current+=1,t(u.current)}),w=(0,d.useStableCallback)(a=>{r.delete(a),u.current+=1,t(u.current)}),x=b.useMemo(()=>{let a=new Map;return Array.from(r.keys()).filter(a=>a.isConnected).sort(j).forEach((b,c)=>{let d=r.get(b)??{};a.set(b,{...d,index:c})}),a},[r,s]);(0,e.useIsoLayoutEffect)(()=>{if("function"!=typeof MutationObserver||0===x.size)return;let a=new MutationObserver(a=>{let b=new Set,c=a=>b.has(a)?b.delete(a):b.add(a);a.forEach(a=>{a.removedNodes.forEach(c),a.addedNodes.forEach(c)}),0===b.size&&(u.current+=1,t(u.current))});return x.forEach((b,c)=>{c.parentElement&&a.observe(c.parentElement,{childList:!0})}),()=>{a.disconnect()}},[x]),(0,e.useIsoLayoutEffect)(()=>{u.current===s&&(l.current.length!==x.size&&(l.current.length=x.size),m&&m.current.length!==x.size&&(m.current.length=x.size),p.current=x.size),o(x)},[o,x,l,m,s]),(0,e.useIsoLayoutEffect)(()=>()=>{l.current=[]},[l]),(0,e.useIsoLayoutEffect)(()=>()=>{m&&(m.current=[])},[m]);let y=(0,d.useStableCallback)(a=>(q.add(a),()=>{q.delete(a)}));(0,e.useIsoLayoutEffect)(()=>{q.forEach(a=>a(x))},[q,x]);let z=b.useMemo(()=>({register:v,unregister:w,subscribeMapChange:y,elementsRef:l,labelsRef:m,nextIndexRef:p}),[v,w,y,l,m,p]);return(0,g.jsx)(f.CompositeListContext.Provider,{value:z,children:k})}])},183189,a=>{"use strict";var b=a.i(437199),c=a.i(147909);let d=b.forwardRef(function(a,b){let{className:d,render:e,orientation:f="horizontal",style:g,...h}=a;return(0,c.useRenderElement)("div",a,{state:{orientation:f},ref:b,props:[{role:"separator","aria-orientation":f},h]})});a.s(["Separator",0,d])},381299,a=>{"use strict";var b=a.i(770881);a.s(["CheckIcon",()=>b.default])},895060,a=>{"use strict";let b=(0,a.i(647651).default)("monitor",[["rect",{width:"20",height:"14",x:"2",y:"3",rx:"2",key:"48i651"}],["line",{x1:"8",x2:"16",y1:"21",y2:"21",key:"1svkeh"}],["line",{x1:"12",x2:"12",y1:"17",y2:"21",key:"vw1qmm"}]]);a.s(["Monitor",0,b],895060)},877014,a=>{"use strict";let b=(0,a.i(647651).default)("refresh-cw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]]);a.s(["RefreshCw",0,b],877014)},552012,a=>{"use strict";let b=(0,a.i(647651).default)("plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);a.s(["Plus",0,b],552012)},415584,a=>{"use strict";let b=(0,a.i(647651).default)("trash-2",[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]]);a.s(["Trash2",0,b],415584)},173542,a=>{"use strict";var b=a.i(437199),c=a.i(556053),d=a.i(574546),e=a.i(705452);a.s(["useCompositeItem",0,function(a={}){let{highlightItemOnHover:f,highlightedIndex:g,onHighlightedIndexChange:h}=(0,d.useCompositeRootContext)(),{ref:i,index:j}=(0,e.useCompositeListItem)(a),k=g===j,l=b.useRef(null),m=(0,c.useMergedRefs)(i,l);return{compositeProps:b.useMemo(()=>({tabIndex:k?0:-1,onFocus(){h(j)},onMouseMove(){let a=l.current;if(!f||!a)return;let b=a.hasAttribute("disabled")||"true"===a.ariaDisabled;k||b||a.focus()}}),[k,h,j,f]),compositeRef:m,index:j}}])},605350,a=>{"use strict";let b=(0,a.i(647651).default)("arrow-up-right",[["path",{d:"M7 7h10v10",key:"1tivn9"}],["path",{d:"M7 17 17 7",key:"1vkiza"}]]);a.s(["ArrowUpRight",0,b],605350)},65410,a=>{"use strict";var b=a.i(749314),c=a.i(437199),d=a.i(207058),e=a.i(752792),f=a.i(506180),g=a.i(7455);a.i(735132);var h=a.i(253260),i=a.i(325848),j=a.i(953528),k=a.i(127026),l=a.i(605350),m=a.i(73270),n=a.i(732254),o=a.i(525132);function p({open:a,onOpenChange:q,agent:r,targetConvId:s,scrollToTaskId:t,scrollToMessageId:u}){let v,w,x,y,z,A,{runtimes:B,activeTaskCounts:C}=(0,e.useAgentContext)(),{slug:D}=(0,f.useWorkspace)(),E=(0,d.useRouter)(),[F,G]=(0,c.useState)(480),H=(0,c.useRef)(!1),I=(0,c.useCallback)(a=>{a.preventDefault(),H.current=!0,a.target.setPointerCapture(a.pointerId)},[]),J=(0,c.useCallback)(a=>{H.current&&G(Math.min(.8*window.innerWidth,Math.max(320,window.innerWidth-a.clientX)))},[]),K=(0,c.useCallback)(()=>{H.current=!1},[]);return(0,b.jsx)(g.Sheet,{open:a,onOpenChange:q,children:(0,b.jsxs)(g.SheetContent,{side:"right",showCloseButton:!1,style:{width:`min(${F}px, 100vw)`,maxWidth:"none"},className:"data-[side=right]:sm:inset-y-2 data-[side=right]:sm:right-2 data-[side=right]:sm:h-auto data-[side=right]:sm:rounded-xl data-[side=right]:sm:border flex flex-col",children:[(0,b.jsx)("div",{onPointerDown:I,onPointerMove:J,onPointerUp:K,className:"hidden sm:block absolute left-0 top-0 bottom-0 w-1.5 cursor-col-resize z-10 hover:bg-primary/20 active:bg-primary/30 transition-colors rounded-l-xl"}),(0,b.jsxs)("div",{className:"absolute top-3 right-3 z-10 flex items-center gap-1",children:[r&&(v=new URLSearchParams,t&&v.set("task",t),u&&v.set("msg",u),s&&v.set("conv",s),w=v.toString(),x=`/w/${D}/agents/${r.id}${w?`?${w}`:""}`,(0,b.jsxs)(o.Tooltip,{children:[(0,b.jsx)(o.TooltipTrigger,{render:(0,b.jsx)("a",{href:x,onClick:a=>{a.metaKey||a.ctrlKey||a.shiftKey||(a.preventDefault(),q(!1),E.push(x))},className:(0,n.buttonVariants)({variant:"ghost",size:"icon-sm"})}),children:(0,b.jsx)(l.ArrowUpRight,{})}),(0,b.jsx)(o.TooltipContent,{children:"Open full page"})]})),(0,b.jsxs)(g.SheetClose,{render:(0,b.jsx)(n.Button,{variant:"ghost",size:"icon-sm"}),children:[(0,b.jsx)(m.XIcon,{}),(0,b.jsx)("span",{className:"sr-only",children:"Close"})]})]}),(0,b.jsx)(g.SheetHeader,{children:(0,b.jsxs)("div",{className:"flex items-center gap-3 pr-16",children:[r&&(y=(0,i.parseAvatarUrl)(r.avatar_url),z=B.find(a=>a.id===r.runtime_id),A=z?.status==="online"&&(C[r.id]??0)>0,y?(0,b.jsx)(h.AnimatedAvatar,{config:y,size:28,className:"shrink-0 rounded-lg",isHovered:!1,isWorking:A}):null),(0,b.jsxs)("div",{className:"flex items-baseline gap-2 min-w-0",children:[(0,b.jsx)(g.SheetTitle,{className:"truncate shrink-0",children:r?.name??"Chat"}),r?.email_handle&&(0,b.jsxs)("span",{className:"text-xs text-muted-foreground truncate",children:[r.email_handle,"@alook.ai"]})]})]})}),!s&&(0,b.jsx)("div",{className:"px-4 pb-2",children:(0,b.jsx)(j.ChannelBar,{})}),r&&(0,b.jsx)("div",{className:"flex-1 overflow-hidden flex flex-col",children:(0,b.jsx)(k.AgentChatView,{agentId:r.id,targetConvId:s,scrollToTaskId:t,scrollToMessageId:u},`${r.id}-${s??""}`)})]})})}let q=(0,c.createContext)(null);a.s(["AgentChatSheetProvider",0,function({children:a}){let g=(0,d.useRouter)(),{agents:h}=(0,e.useAgentContext)(),{slug:i}=(0,f.useWorkspace)(),[j,k]=(0,c.useState)(!1),[l,m]=(0,c.useState)(null),[n,o]=(0,c.useState)(null),[r,s]=(0,c.useState)(null),[t,u]=(0,c.useState)(null),v=l?h.find(a=>a.id===l)??null:null,w=(0,c.useRef)(h);(0,c.useEffect)(()=>{w.current=h});let x=(0,c.useCallback)((a,b)=>{w.current.find(b=>b.id===a)?(m(a),o(b?.conversationId??null),s(b?.taskId??null),u(b?.messageId??null),k(!0)):g.push(`/w/${i}/agents/${a}`)},[g,i]),y=(0,c.useCallback)(a=>{k(a),a||(o(null),s(null),u(null))},[]);return(0,b.jsxs)(q.Provider,{value:{openAgentChat:x},children:[a,(0,b.jsx)(p,{open:j,onOpenChange:y,agent:v,targetConvId:n,scrollToTaskId:r,scrollToMessageId:t})]})},"useAgentChatSheet",0,function(){let a=(0,c.useContext)(q);if(!a)throw Error("useAgentChatSheet must be used within AgentChatSheetProvider");return a}],65410)},109578,a=>{"use strict";let b=(0,a.i(647651).default)("inbox",[["polyline",{points:"22 12 16 12 14 15 10 15 8 12 2 12",key:"o97t9d"}],["path",{d:"M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z",key:"oot6mr"}]]);a.s(["Inbox",0,b],109578)},997445,a=>{"use strict";a.s(["semverGte",0,function(a,b){let c=a.split(".").map(Number),d=b.split(".").map(Number);for(let a=0;a<Math.max(c.length,d.length);a++){let b=c[a]??0,e=d[a]??0;if(b>e)break;if(b<e)return!1}return!0}])},830011,a=>{"use strict";let b=(0,a.i(647651).default)("folder",[["path",{d:"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z",key:"1kt360"}]]);a.s(["Folder",0,b],830011)},388425,a=>{"use strict";let b=(0,a.i(647651).default)("log-out",[["path",{d:"m16 17 5-5-5-5",key:"1bji2h"}],["path",{d:"M21 12H9",key:"dn1m92"}],["path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4",key:"1uf3rs"}]]);a.s(["LogOut",0,b],388425)},567264,a=>{"use strict";var b=a.i(749314);a.s(["GradientBackground",0,function(){return(0,b.jsx)("div",{"aria-hidden":!0,className:"pointer-events-none fixed inset-0 -z-10 overflow-hidden bg-[oklch(0.93_0.015_80)] dark:bg-transparent"})}])},242292,a=>{"use strict";var b=a.i(749314),c=a.i(437199),d=a.i(615640),e=a.i(803268),f=a.i(75118);let g={sm:{icon:28,text:"text-2xl"},lg:{icon:36,text:"text-4xl"}};a.s(["Logo",0,function({size:a="sm",className:h,iconOnly:i=!1}){let{icon:j,text:k}=g[a],{resolvedTheme:l,setTheme:m}=(0,d.useTheme)(),[n,o]=(0,c.useState)(!1),p=(0,c.useRef)(o);return(0,c.useEffect)(()=>{p.current(!0)},[]),(0,b.jsxs)("button",{type:"button",onClick:()=>{m("dark"===l?"light":"dark")},"aria-label":"Toggle theme",className:(0,f.cn)("flex items-center gap-1.5 cursor-pointer select-none transition-opacity hover:opacity-70",h),children:[n?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(e.default,{src:"/alook.svg",alt:"Alook",width:j,height:j,className:"dark:hidden"}),(0,b.jsx)(e.default,{src:"/alook-dark.svg",alt:"Alook",width:j,height:j,className:"hidden dark:block"})]}):(0,b.jsx)("span",{style:{width:j,height:j}}),!i&&(0,b.jsx)("span",{className:(0,f.cn)(k,"font-black tracking-tight"),style:{fontFamily:"var(--font-brand)"},children:"Alook"})]})}])},867561,a=>{"use strict";var b=a.i(749314),c=a.i(60352),d=a.i(75118);a.i(147344),a.i(381299),a.s(["DropdownMenu",0,function({...a}){return(0,b.jsx)(c.Menu.Root,{"data-slot":"dropdown-menu",...a})},"DropdownMenuContent",0,function({align:a="start",alignOffset:e=0,side:f="bottom",sideOffset:g=4,className:h,...i}){return(0,b.jsx)(c.Menu.Portal,{children:(0,b.jsx)(c.Menu.Positioner,{className:"isolate z-50 outline-none",align:a,alignOffset:e,side:f,sideOffset:g,children:(0,b.jsx)(c.Menu.Popup,{"data-slot":"dropdown-menu-content",className:(0,d.cn)("z-50 max-h-(--available-height) w-(--anchor-width) min-w-32 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 outline-none data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:overflow-hidden data-closed:fade-out-0 data-closed:zoom-out-95",h),...i})})})},"DropdownMenuGroup",0,function({...a}){return(0,b.jsx)(c.Menu.Group,{"data-slot":"dropdown-menu-group",...a})},"DropdownMenuItem",0,function({className:a,inset:e,variant:f="default",...g}){return(0,b.jsx)(c.Menu.Item,{"data-slot":"dropdown-menu-item","data-inset":e,"data-variant":f,className:(0,d.cn)("group/dropdown-menu-item relative flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 data-[variant=destructive]:*:[svg]:text-destructive",a),...g})},"DropdownMenuLabel",0,function({className:a,inset:e,...f}){return(0,b.jsx)(c.Menu.GroupLabel,{"data-slot":"dropdown-menu-label","data-inset":e,className:(0,d.cn)("px-1.5 py-1 text-xs font-medium text-muted-foreground data-inset:pl-7",a),...f})},"DropdownMenuSeparator",0,function({className:a,...e}){return(0,b.jsx)(c.Menu.Separator,{"data-slot":"dropdown-menu-separator",className:(0,d.cn)("-mx-1 my-1 h-px bg-border",a),...e})},"DropdownMenuTrigger",0,function({...a}){return(0,b.jsx)(c.Menu.Trigger,{"data-slot":"dropdown-menu-trigger",...a})}],867561)},202058,a=>{a.v(b=>Promise.all(["server/chunks/ssr/0o9c_streamdown_dist_highlighted-body-OFNGDK62_0mcz9ug.js"].map(b=>a.l(b))).then(()=>b(221374)))},223475,a=>{a.v(b=>Promise.all(["server/chunks/ssr/0o9c_streamdown_dist_mermaid-GHXKKRXX_12jj_4x.js"].map(b=>a.l(b))).then(()=>b(830102)))}];
2
+
3
+ //# sourceMappingURL=%5Broot-of-the-server%5D__03yopx2._.js.map
@@ -1020,7 +1020,7 @@ module.exports = (sourcePath)=>({
1020
1020
  case "server/chunks/ssr/_0.to3zl._.js": return require("/home/runner/work/alook/alook/src/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/_0.to3zl._.js");
1021
1021
  case "server/chunks/ssr/_0i15gw5._.js": return require("/home/runner/work/alook/alook/src/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/_0i15gw5._.js");
1022
1022
  case "server/chunks/ssr/_0oxvrpl._.js": return require("/home/runner/work/alook/alook/src/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/_0oxvrpl._.js");
1023
- case "server/chunks/ssr/_11~t2ti._.js": return require("/home/runner/work/alook/alook/src/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/_11~t2ti._.js");
1023
+ case "server/chunks/ssr/_0sh5zo0._.js": return require("/home/runner/work/alook/alook/src/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/_0sh5zo0._.js");
1024
1024
  case "server/chunks/ssr/_13__3im._.js": return require("/home/runner/work/alook/alook/src/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/_13__3im._.js");
1025
1025
  case "server/chunks/ssr/node_modules__pnpm_0qbyc4g._.js": return require("/home/runner/work/alook/alook/src/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/node_modules__pnpm_0qbyc4g._.js");
1026
1026
  case "server/chunks/ssr/src_web__next-internal_server_app_(app)_studio_new_page_actions_0z.bc1d.js": return require("/home/runner/work/alook/alook/src/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/src_web__next-internal_server_app_(app)_studio_new_page_actions_0z.bc1d.js");
@@ -1035,15 +1035,16 @@ module.exports = (sourcePath)=>({
1035
1035
  case "server/chunks/ssr/0o9c_streamdown_dist_highlighted-body-OFNGDK62_0mcz9ug.js": return require("/home/runner/work/alook/alook/src/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/0o9c_streamdown_dist_highlighted-body-OFNGDK62_0mcz9ug.js");
1036
1036
  case "server/chunks/ssr/0o9c_streamdown_dist_mermaid-GHXKKRXX_12jj_4x.js": return require("/home/runner/work/alook/alook/src/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/0o9c_streamdown_dist_mermaid-GHXKKRXX_12jj_4x.js");
1037
1037
  case "server/chunks/ssr/0wfy_marked_lib_marked_esm_0idkrj7.js": return require("/home/runner/work/alook/alook/src/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/0wfy_marked_lib_marked_esm_0idkrj7.js");
1038
+ case "server/chunks/ssr/[root-of-the-server]__03yopx2._.js": return require("/home/runner/work/alook/alook/src/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/[root-of-the-server]__03yopx2._.js");
1038
1039
  case "server/chunks/ssr/[root-of-the-server]__0ekggej._.js": return require("/home/runner/work/alook/alook/src/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/[root-of-the-server]__0ekggej._.js");
1039
- case "server/chunks/ssr/[root-of-the-server]__0esiqa8._.js": return require("/home/runner/work/alook/alook/src/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/[root-of-the-server]__0esiqa8._.js");
1040
1040
  case "server/chunks/ssr/[root-of-the-server]__0~r78hj._.js": return require("/home/runner/work/alook/alook/src/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/[root-of-the-server]__0~r78hj._.js");
1041
+ case "server/chunks/ssr/_015fu61._.js": return require("/home/runner/work/alook/alook/src/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/_015fu61._.js");
1042
+ case "server/chunks/ssr/_01opi~8._.js": return require("/home/runner/work/alook/alook/src/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/_01opi~8._.js");
1041
1043
  case "server/chunks/ssr/_09b8fgg._.js": return require("/home/runner/work/alook/alook/src/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/_09b8fgg._.js");
1042
1044
  case "server/chunks/ssr/_09n89mu._.js": return require("/home/runner/work/alook/alook/src/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/_09n89mu._.js");
1045
+ case "server/chunks/ssr/_0ktjqeo._.js": return require("/home/runner/work/alook/alook/src/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/_0ktjqeo._.js");
1043
1046
  case "server/chunks/ssr/_0nqu5id._.js": return require("/home/runner/work/alook/alook/src/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/_0nqu5id._.js");
1044
- case "server/chunks/ssr/_0st8pau._.js": return require("/home/runner/work/alook/alook/src/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/_0st8pau._.js");
1045
- case "server/chunks/ssr/_0tu039y._.js": return require("/home/runner/work/alook/alook/src/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/_0tu039y._.js");
1046
- case "server/chunks/ssr/_0y3mwm6._.js": return require("/home/runner/work/alook/alook/src/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/_0y3mwm6._.js");
1047
+ case "server/chunks/ssr/_0t5o.14._.js": return require("/home/runner/work/alook/alook/src/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/_0t5o.14._.js");
1047
1048
  case "server/chunks/ssr/_11semex._.js": return require("/home/runner/work/alook/alook/src/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/_11semex._.js");
1048
1049
  case "server/chunks/ssr/src_0liq_10._.js": return require("/home/runner/work/alook/alook/src/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/src_0liq_10._.js");
1049
1050
  case "server/chunks/ssr/src_web_src_0~23g-y._.js": return require("/home/runner/work/alook/alook/src/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/src_web_src_0~23g-y._.js");
@@ -1075,7 +1076,7 @@ module.exports = (sourcePath)=>({
1075
1076
  case "server/chunks/ssr/05hd_server_app_(app)_w_[slug]_agents_[id]_meetings_page_actions_0slm6y3.js": return require("/home/runner/work/alook/alook/src/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/05hd_server_app_(app)_w_[slug]_agents_[id]_meetings_page_actions_0slm6y3.js");
1076
1077
  case "server/chunks/ssr/0b5f_next_dist_esm_build_templates_app-page_0f~tlqa.js": return require("/home/runner/work/alook/alook/src/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/0b5f_next_dist_esm_build_templates_app-page_0f~tlqa.js");
1077
1078
  case "server/chunks/ssr/[root-of-the-server]__03b0ypf._.js": return require("/home/runner/work/alook/alook/src/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/[root-of-the-server]__03b0ypf._.js");
1078
- case "server/chunks/ssr/_0xg~7mg._.js": return require("/home/runner/work/alook/alook/src/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/_0xg~7mg._.js");
1079
+ case "server/chunks/ssr/src_web_src_app_(app)_w_[slug]_agents_[id]_meetings_page_tsx_073~u~-._.js": return require("/home/runner/work/alook/alook/src/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");
1079
1080
  case "server/chunks/ssr/0b5f_next_dist_esm_build_templates_app-page_05w8fcc.js": return require("/home/runner/work/alook/alook/src/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/0b5f_next_dist_esm_build_templates_app-page_05w8fcc.js");
1080
1081
  case "server/chunks/ssr/0ukq_web__next-internal_server_app_(app)_w_[slug]_agents_[id]_page_actions_0h-304p.js": return require("/home/runner/work/alook/alook/src/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/0ukq_web__next-internal_server_app_(app)_w_[slug]_agents_[id]_page_actions_0h-304p.js");
1081
1082
  case "server/chunks/ssr/[root-of-the-server]__007w~v7._.js": return require("/home/runner/work/alook/alook/src/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/[root-of-the-server]__007w~v7._.js");
@@ -1083,14 +1084,13 @@ module.exports = (sourcePath)=>({
1083
1084
  case "server/chunks/ssr/0_ek_driver_js_dist_driver_js_mjs_01pzbxs._.js": return require("/home/runner/work/alook/alook/src/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/0_ek_driver_js_dist_driver_js_mjs_01pzbxs._.js");
1084
1085
  case "server/chunks/ssr/0b5f_next_dist_esm_build_templates_app-page_0vxs0k3.js": return require("/home/runner/work/alook/alook/src/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/0b5f_next_dist_esm_build_templates_app-page_0vxs0k3.js");
1085
1086
  case "server/chunks/ssr/[root-of-the-server]__0c9es6z._.js": return require("/home/runner/work/alook/alook/src/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/[root-of-the-server]__0c9es6z._.js");
1086
- case "server/chunks/ssr/_11h_8jo._.js": return require("/home/runner/work/alook/alook/src/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/_11h_8jo._.js");
1087
+ case "server/chunks/ssr/_02ui5fr._.js": return require("/home/runner/work/alook/alook/src/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/_02ui5fr._.js");
1087
1088
  case "server/chunks/ssr/src_web__next-internal_server_app_(app)_w_[slug]_agents_new_page_actions_0k7.z.s.js": return require("/home/runner/work/alook/alook/src/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/src_web__next-internal_server_app_(app)_w_[slug]_agents_new_page_actions_0k7.z.s.js");
1088
1089
  case "server/chunks/ssr/src_web_src_components_0nj0euq._.js": return require("/home/runner/work/alook/alook/src/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/src_web_src_components_0nj0euq._.js");
1089
1090
  case "server/chunks/ssr/0b5f_next_dist_esm_build_templates_app-page_05hpp1c.js": return require("/home/runner/work/alook/alook/src/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/0b5f_next_dist_esm_build_templates_app-page_05hpp1c.js");
1090
1091
  case "server/chunks/ssr/[root-of-the-server]__0520.yj._.js": return require("/home/runner/work/alook/alook/src/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/[root-of-the-server]__0520.yj._.js");
1091
1092
  case "server/chunks/ssr/src_web__next-internal_server_app_(app)_w_[slug]_agents_page_actions_0rnp-ey.js": return require("/home/runner/work/alook/alook/src/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/src_web__next-internal_server_app_(app)_w_[slug]_agents_page_actions_0rnp-ey.js");
1092
1093
  case "server/chunks/ssr/src_web_src_app_(app)_w_[slug]_agents_page_tsx_0ns8qy4._.js": return require("/home/runner/work/alook/alook/src/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/src_web_src_app_(app)_w_[slug]_agents_page_tsx_0ns8qy4._.js");
1093
- case "server/chunks/ssr/01k0_lucide-react_dist_esm_icons_clock_mjs_05q1~5y._.js": return require("/home/runner/work/alook/alook/src/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/01k0_lucide-react_dist_esm_icons_clock_mjs_05q1~5y._.js");
1094
1094
  case "server/chunks/ssr/0b5f_next_dist_esm_build_templates_app-page_0yg.nir.js": return require("/home/runner/work/alook/alook/src/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/0b5f_next_dist_esm_build_templates_app-page_0yg.nir.js");
1095
1095
  case "server/chunks/ssr/[root-of-the-server]__0t4r72n._.js": return require("/home/runner/work/alook/alook/src/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/[root-of-the-server]__0t4r72n._.js");
1096
1096
  case "server/chunks/ssr/src_web__next-internal_server_app_(app)_w_[slug]_calendar_page_actions_01m4y6k.js": return require("/home/runner/work/alook/alook/src/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/src_web__next-internal_server_app_(app)_w_[slug]_calendar_page_actions_01m4y6k.js");
@@ -0,0 +1,3 @@
1
+ module.exports=[778033,a=>{"use strict";let b=(0,a.i(647651).default)("calendar-off",[["path",{d:"M4.2 4.2A2 2 0 0 0 3 6v14a2 2 0 0 0 2 2h14a2 2 0 0 0 1.82-1.18",key:"16swn3"}],["path",{d:"M21 15.5V6a2 2 0 0 0-2-2H9.5",key:"yhw86o"}],["path",{d:"M16 2v4",key:"4m81vk"}],["path",{d:"M3 10h7",key:"1wap6i"}],["path",{d:"M21 10h-5.5",key:"quycpq"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]]);a.s(["CalendarOff",0,b],778033)},948989,a=>{"use strict";let b=(0,a.i(647651).default)("repeat",[["path",{d:"m17 2 4 4-4 4",key:"nntrym"}],["path",{d:"M3 11v-1a4 4 0 0 1 4-4h14",key:"84bu3i"}],["path",{d:"m7 22-4-4 4-4",key:"1wqhfi"}],["path",{d:"M21 13v1a4 4 0 0 1-4 4H3",key:"1rx37r"}]]);a.s(["Repeat",0,b],948989)},807018,a=>{"use strict";let b=(0,a.i(647651).default)("chevron-left",[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]]);a.s(["ChevronLeft",0,b],807018)},467388,905890,a=>{"use strict";a.s(["CalendarDayPopover",()=>h],467388);var b=a.i(749314),c=a.i(722393),d=a.i(75118),e=a.i(948989);function f(a){let b=["bg-[oklch(0.62_0.13_60)] dark:bg-[oklch(0.72_0.11_60)]","bg-[oklch(0.62_0.12_120)] dark:bg-[oklch(0.72_0.10_120)]","bg-[oklch(0.62_0.12_220)] dark:bg-[oklch(0.72_0.10_220)]","bg-[oklch(0.62_0.13_30)] dark:bg-[oklch(0.72_0.11_30)]","bg-[oklch(0.62_0.12_280)] dark:bg-[oklch(0.72_0.10_280)]","bg-[oklch(0.62_0.12_160)] dark:bg-[oklch(0.72_0.10_160)]"],c=0;for(let b=0;b<a.length;b++)c=31*c+a.charCodeAt(b)|0;return b[Math.abs(c)%b.length]}function g(a){let b=["text-[oklch(0.52_0.14_60)] dark:text-[oklch(0.78_0.11_60)]","text-[oklch(0.52_0.13_120)] dark:text-[oklch(0.78_0.10_120)]","text-[oklch(0.52_0.13_220)] dark:text-[oklch(0.78_0.10_220)]","text-[oklch(0.52_0.14_30)] dark:text-[oklch(0.78_0.11_30)]","text-[oklch(0.52_0.13_280)] dark:text-[oklch(0.78_0.10_280)]","text-[oklch(0.52_0.13_160)] dark:text-[oklch(0.78_0.10_160)]"],c=0;for(let b=0;b<a.length;b++)c=31*c+a.charCodeAt(b)|0;return b[Math.abs(c)%b.length]}function h({events:a,agents:i,date:j,hiddenCount:k,open:l,onOpenChange:m,onSelectEvent:n}){let o=new Map;for(let a of i)o.set(a.id,a.name);let p=[...a].sort((a,b)=>new Date(a.scheduled_at).getTime()-new Date(b.scheduled_at).getTime()),q=j.toLocaleDateString(void 0,{weekday:"short",month:"short",day:"numeric"});return(0,b.jsxs)(c.Popover,{open:l,onOpenChange:m,children:[(0,b.jsxs)(c.PopoverTrigger,{"aria-label":`${k} more event${1===k?"":"s"}`,onClick:a=>a.stopPropagation(),className:"w-full truncate rounded-sm px-1.5 py-0.5 text-left text-[10px] text-muted-foreground hover:bg-accent hover:text-foreground transition-colors",children:["+",k," more"]}),(0,b.jsx)(c.PopoverContent,{className:"w-64",align:"start",children:(0,b.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,b.jsx)("p",{className:"px-1 pb-1 text-[11px] font-medium text-muted-foreground",children:q}),(0,b.jsx)("div",{className:"flex flex-col gap-1",children:p.map(a=>{let c=!!a.repeat_interval;return(0,b.jsxs)("button",{type:"button",onClick:()=>{m(!1),n(a)},className:"flex items-center gap-2 rounded-sm px-1.5 py-1 text-left text-[11px] font-medium text-foreground/85 hover:bg-accent/60 transition-colors",title:`${c?"Recurring · ":""}${a.title}${o.get(a.agent_id)?` — ${o.get(a.agent_id)}`:""}`,children:[c?(0,b.jsx)(e.Repeat,{"aria-hidden":!0,className:(0,d.cn)("size-3 shrink-0",g(a.agent_id))}):(0,b.jsx)("span",{"aria-hidden":!0,className:(0,d.cn)("size-1.5 shrink-0 rounded-full",f(a.agent_id))}),(0,b.jsx)("span",{className:"shrink-0 text-[10px] text-muted-foreground tabular-nums",children:new Date(a.scheduled_at).toLocaleTimeString(void 0,{hour:"2-digit",minute:"2-digit",hour12:!1})}),(0,b.jsx)("span",{className:"truncate",children:a.title})]},`${a.id}@${a.occurrence_at}`)})})]})})]})}a.i(38763),a.s(["agentColor",0,function(a){let b=["bg-[oklch(0.78_0.08_60)] text-[oklch(0.25_0.05_60)]","bg-[oklch(0.80_0.07_120)] text-[oklch(0.25_0.05_120)]","bg-[oklch(0.80_0.06_220)] text-[oklch(0.25_0.05_220)]","bg-[oklch(0.80_0.07_30)] text-[oklch(0.25_0.05_30)]","bg-[oklch(0.80_0.06_280)] text-[oklch(0.25_0.05_280)]","bg-[oklch(0.80_0.07_160)] text-[oklch(0.25_0.05_160)]"],c=0;for(let b=0;b<a.length;b++)c=31*c+a.charCodeAt(b)|0;return b[Math.abs(c)%b.length]},"agentDot",0,f,"agentInk",0,g],905890)},38763,a=>{"use strict";a.s(["CalendarMonthGrid",()=>o,"buildMonthCells",()=>k,"dateKey",()=>l,"sameDay",()=>m,"stepDate",()=>n]);var b=a.i(749314),c=a.i(75118),d=a.i(807018),e=a.i(143984),f=a.i(948989),g=a.i(732254),h=a.i(467388),i=a.i(313404),j=a.i(905890);function k(a,b){let c=new Date(a,b,1).getDay(),d=[];for(let e=0;e<42;e++){let f=new Date(a,b,1-c+e);d.push({date:f,inMonth:f.getMonth()===b})}return d}function l(a){let b=a.getFullYear(),c=String(a.getMonth()+1).padStart(2,"0"),d=String(a.getDate()).padStart(2,"0");return`${b}-${c}-${d}`}function m(a,b){return a.getFullYear()===b.getFullYear()&&a.getMonth()===b.getMonth()&&a.getDate()===b.getDate()}function n(a,b){let c=new Date(a.getFullYear(),a.getMonth(),a.getDate());switch(b){case"ArrowLeft":return c.setDate(c.getDate()-1),c;case"ArrowRight":return c.setDate(c.getDate()+1),c;case"ArrowUp":return c.setDate(c.getDate()-7),c;case"ArrowDown":return c.setDate(c.getDate()+7),c;case"Home":return c.setDate(c.getDate()-c.getDay()),c;case"End":return c.setDate(c.getDate()+(6-c.getDay())),c;case"PageUp":{let a=0===c.getMonth()?c.getFullYear()-1:c.getFullYear(),b=(c.getMonth()-1+12)%12,d=new Date(a,b+1,0).getDate();return c.setFullYear(a,b,Math.min(c.getDate(),d)),c}case"PageDown":{let a=11===c.getMonth()?c.getFullYear()+1:c.getFullYear(),b=(c.getMonth()+1)%12,d=new Date(a,b+1,0).getDate();return c.setFullYear(a,b,Math.min(c.getDate(),d)),c}default:return null}}function o({year:a,month:n,events:p,agents:q,loading:r,focusedDate:s,openPopoverKey:t,onPopoverChange:u,onPrev:v,onNext:w,onJumpToToday:x,onJumpToDate:y,onSelectDay:z,onSelectEvent:A,headerExtras:B}){let C=k(a,n),D=new Date(a,n,1).toLocaleDateString(void 0,{month:"long",year:"numeric"}),E=new Map;for(let a of p){let b=l(new Date(a.scheduled_at));E.has(b)||E.set(b,[]),E.get(b).push(a)}let F=new Map;for(let a of q)F.set(a.id,a.name);let G=new Date,H=function(a,b,c=new Date){return c.getFullYear()===a&&c.getMonth()===b}(a,n,G);return(0,b.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between flex-wrap gap-2",children:[(0,b.jsx)("div",{className:"flex items-center gap-2",children:(0,b.jsx)("h2",{className:"text-sm font-medium tabular-nums",children:D})}),(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[B,(0,b.jsxs)("div",{className:"flex items-center gap-1",children:[(0,b.jsx)("button",{type:"button","aria-label":"Previous month",onClick:v,className:"flex size-9 sm:size-7 items-center justify-center rounded-md text-muted-foreground hover:bg-accent hover:text-foreground transition-colors",children:(0,b.jsx)(d.ChevronLeft,{className:"size-4"})}),(0,b.jsx)(g.Button,{variant:"outline",size:"sm",onClick:x,disabled:H,className:"h-7 px-2.5 text-xs",children:"Today"}),(0,b.jsx)("button",{type:"button","aria-label":"Next month",onClick:w,className:"flex size-9 sm:size-7 items-center justify-center rounded-md text-muted-foreground hover:bg-accent hover:text-foreground transition-colors",children:(0,b.jsx)(e.ChevronRight,{className:"size-4"})})]}),(0,b.jsx)(i.CalendarDatePicker,{value:s,onChange:y,ariaLabel:"Jump to date"})]})]}),(0,b.jsx)("div",{className:"grid grid-cols-7 text-[11px] text-muted-foreground",children:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"].map(a=>(0,b.jsxs)("div",{className:"px-1 sm:px-2 py-1 font-medium",children:[(0,b.jsx)("span",{className:"sm:hidden",children:a[0]}),(0,b.jsx)("span",{className:"hidden sm:inline",children:a})]},a))}),(0,b.jsxs)("div",{className:"relative",children:[r&&(0,b.jsx)("div",{"aria-hidden":!0,className:"pointer-events-none absolute inset-x-0 top-0 z-20 h-0.5 overflow-hidden rounded-t-lg",children:(0,b.jsx)("div",{className:"h-full w-1/3 animate-[calendar-progress_1.2s_ease-in-out_infinite] bg-foreground/40"})}),(0,b.jsx)("div",{role:"grid","aria-label":`Calendar ${D}`,"aria-busy":r||void 0,className:(0,c.cn)("grid grid-cols-7 gap-px rounded-lg border border-border/50 bg-border/40 overflow-hidden transition-opacity",r&&"opacity-70"),"data-testid":"calendar-month-grid",children:C.map((a,d)=>{let e=l(a.date),g=E.get(e)??[],i=m(G,a.date),k=m(s,a.date),n=Math.max(0,g.length-3);return(0,b.jsxs)("div",{role:"gridcell","data-date":e,"data-focused":k?"true":void 0,"aria-current":i?"date":void 0,tabIndex:k?0:-1,onClick:()=>z(a.date),onKeyDown:b=>{("Enter"===b.key||" "===b.key)&&b.target===b.currentTarget&&(b.preventDefault(),z(a.date))},className:(0,c.cn)("group flex min-h-16 sm:min-h-24 flex-col gap-1 p-1 sm:p-2 text-left transition-colors bg-background outline-none cursor-pointer",!a.inMonth&&"bg-muted/40 text-muted-foreground",k&&"ring-2 ring-inset ring-ring/60 relative z-10"),children:[(0,b.jsx)("div",{className:"flex items-center justify-between",children:(0,b.jsx)("span",{className:(0,c.cn)("text-[11px] tabular-nums",i&&"flex size-5 items-center justify-center rounded-full bg-foreground text-background font-medium"),children:a.date.getDate()})}),(0,b.jsxs)("div",{className:"flex flex-col gap-1 [&>:nth-child(3)]:hidden [&>:nth-child(3)]:sm:flex",children:[g.slice(0,3).map(a=>{let d=!!a.repeat_interval;return(0,b.jsxs)("span",{role:"button",tabIndex:-1,onClick:b=>{b.stopPropagation(),A(a)},onKeyDown:b=>{("Enter"===b.key||" "===b.key)&&(b.stopPropagation(),A(a))},className:"flex items-center gap-1.5 rounded-sm px-1 py-0.5 text-[9px] sm:text-[10px] font-medium text-foreground/85 hover:bg-accent/60 transition-colors cursor-pointer",title:`${d?"Recurring · ":""}${a.title}${F.get(a.agent_id)?` — ${F.get(a.agent_id)}`:""}`,children:[d?(0,b.jsx)(f.Repeat,{"aria-hidden":!0,className:(0,c.cn)("size-2.5 shrink-0",(0,j.agentInk)(a.agent_id))}):(0,b.jsx)("span",{"aria-hidden":!0,className:(0,c.cn)("size-1.5 shrink-0 rounded-full",(0,j.agentDot)(a.agent_id))}),(0,b.jsx)("span",{className:"truncate",children:a.title}),null!=a.collapsed_count&&a.collapsed_count>1&&(0,b.jsxs)("span",{className:"shrink-0 text-[9px] text-muted-foreground",children:["×",a.collapsed_count]})]},`${a.id}@${a.occurrence_at}`)}),n>0&&(0,b.jsx)(h.CalendarDayPopover,{date:a.date,hiddenCount:n,events:g,agents:q,open:t===e,onOpenChange:a=>u(a?e:null),onSelectEvent:A})]})]},d)})})]})]})}},313404,a=>{"use strict";a.s(["CalendarDatePicker",()=>j]);var b=a.i(749314),c=a.i(437199),d=a.i(722393),e=a.i(75118),f=a.i(566825),g=a.i(807018),h=a.i(143984),i=a.i(38763);function j({value:a,onChange:l,placeholder:m="Jump to date",min:n,className:o,ariaLabel:p="Pick a date",hideIcon:q=!1,onClear:r}){let[s,t]=(0,c.useState)(!1),u=a??new Date,[v,w]=(0,c.useState)(u.getFullYear()),[x,y]=(0,c.useState)(u.getMonth()),z=(0,i.buildMonthCells)(v,x),A=new Date,B=a=>{n&&a<k(n)||(l(a),t(!1))},C=a?a.toLocaleDateString(void 0,{month:"short",day:"numeric",year:"numeric"}):m;return(0,b.jsxs)(d.Popover,{open:s,onOpenChange:b=>{if(t(b),b){let b=a??new Date;w(b.getFullYear()),y(b.getMonth())}},children:[(0,b.jsxs)(d.PopoverTrigger,{"aria-label":p,className:(0,e.cn)("flex h-7 items-center gap-1.5 rounded-md border border-input bg-transparent px-2 text-xs outline-none transition-colors","hover:bg-accent hover:text-foreground","focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50",a?"text-foreground":"text-muted-foreground",o),children:[!q&&(0,b.jsx)(f.CalendarDays,{className:"size-3.5 opacity-70"}),(0,b.jsx)("span",{className:"hidden sm:inline tabular-nums",children:C})]}),(0,b.jsxs)(d.PopoverContent,{align:"end",className:"w-64 p-3",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between pb-2",children:[(0,b.jsx)("button",{type:"button","aria-label":"Previous month",onClick:()=>{y(a=>0===a?11:a-1),0===x&&w(a=>a-1)},className:"flex size-6 items-center justify-center rounded text-muted-foreground hover:bg-accent hover:text-foreground",children:(0,b.jsx)(g.ChevronLeft,{className:"size-3.5"})}),(0,b.jsx)("span",{className:"text-xs font-medium tabular-nums",children:new Date(v,x,1).toLocaleDateString(void 0,{month:"long",year:"numeric"})}),(0,b.jsx)("button",{type:"button","aria-label":"Next month",onClick:()=>{y(a=>11===a?0:a+1),11===x&&w(a=>a+1)},className:"flex size-6 items-center justify-center rounded text-muted-foreground hover:bg-accent hover:text-foreground",children:(0,b.jsx)(h.ChevronRight,{className:"size-3.5"})})]}),(0,b.jsx)("div",{className:"grid grid-cols-7 pb-1 text-[10px] text-muted-foreground",children:["S","M","T","W","T","F","S"].map((a,c)=>(0,b.jsx)("div",{className:"flex h-6 items-center justify-center font-medium",children:a},c))}),(0,b.jsx)("div",{className:"grid grid-cols-7 gap-0.5",children:z.map((c,d)=>{let f=(0,i.sameDay)(A,c.date),g=!!a&&(0,i.sameDay)(a,c.date),h=!!n&&c.date<k(n);return(0,b.jsx)("button",{type:"button",disabled:h,onClick:()=>B(c.date),"aria-pressed":g,className:(0,e.cn)("flex h-7 w-full items-center justify-center rounded text-[11px] tabular-nums transition-colors outline-none","focus-visible:ring-2 focus-visible:ring-ring/60",!c.inMonth&&"text-muted-foreground/50",c.inMonth&&!g&&"hover:bg-accent",f&&!g&&"text-foreground font-medium ring-1 ring-inset ring-border",g&&"bg-foreground text-background font-medium",h&&"opacity-30 cursor-not-allowed hover:bg-transparent"),children:c.date.getDate()},d)})}),(0,b.jsxs)("div",{className:"flex items-center justify-between gap-3 pt-2 mt-1 border-t border-border/50",children:[r&&a?(0,b.jsx)("button",{type:"button",onClick:()=>{r(),t(!1)},className:"text-[11px] text-muted-foreground hover:text-foreground transition-colors",children:"Clear"}):(0,b.jsx)("span",{"aria-hidden":!0}),(0,b.jsx)("button",{type:"button",onClick:()=>B(new Date),className:"text-[11px] text-muted-foreground hover:text-foreground transition-colors",children:"Today"})]})]})]})}function k(a){return new Date(a.getFullYear(),a.getMonth(),a.getDate())}},622154,a=>{"use strict";var b=a.i(749314),c=a.i(437199),d=a.i(619618),e=a.i(722393),f=a.i(75118);function g(a){return String(a).padStart(2,"0")}function h(a){let b=/^(\d{2}):(\d{2})$/.exec(a);return b?`${b[1]}:${b[2]}`:a}a.s(["CalendarTimePicker",0,function({value:a,onChange:i,className:j,ariaLabel:k="Pick a time",step:l=30,iconOnly:m=!1}){let[n,o]=(0,c.useState)(!1),p=(0,c.useRef)(null),q=function(a){let b=[];for(let c=0;c<1440;c+=a)b.push(`${g(Math.floor(c/60))}:${g(c%60)}`);return b}(l);return(0,c.useEffect)(()=>{if(!n)return;let a=setTimeout(()=>{let a=p.current?.querySelector('[data-selected="true"]');a?.scrollIntoView({block:"center"})},0);return()=>clearTimeout(a)},[n]),(0,b.jsxs)(e.Popover,{open:n,onOpenChange:o,children:[(0,b.jsxs)(e.PopoverTrigger,{"aria-label":k,className:(0,f.cn)(m?"inline-flex size-8 shrink-0 items-center justify-center rounded-lg border border-input bg-transparent text-muted-foreground outline-none transition-colors hover:bg-accent hover:text-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50":"flex h-7 items-center gap-1.5 rounded-md border border-input bg-transparent px-2 text-xs text-foreground outline-none transition-colors hover:bg-accent hover:text-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50",j),children:[(0,b.jsx)(d.Clock,{className:m?"size-3.5":"size-3.5 opacity-70"}),!m&&(0,b.jsx)("span",{className:"tabular-nums",children:h(a)})]}),(0,b.jsx)(e.PopoverContent,{align:"start",className:"w-36 p-1",children:(0,b.jsx)("div",{ref:p,className:"flex max-h-60 flex-col overflow-y-auto scrollbar-none",role:"listbox",children:q.map(c=>{let d=c===a;return(0,b.jsx)("button",{type:"button",role:"option","aria-selected":d,"data-selected":d,onClick:()=>{i(c),o(!1)},className:(0,f.cn)("flex h-7 shrink-0 items-center rounded px-2 text-[11px] tabular-nums transition-colors outline-none","focus-visible:bg-accent",d?"bg-foreground text-background font-medium":"text-foreground hover:bg-accent"),children:h(c)},c)})})})]})}])},316215,a=>{"use strict";let b=/^(\d+)(min|hour|day|week|month)$/;function c(a){let c=b.exec(a);if(!c)return null;let d=parseInt(c[1],10);return d<1?null:{count:d,unit:c[2]}}let d={min:["minute","minutes"],hour:["hour","hours"],day:["day","days"],week:["week","weeks"],month:["month","months"]},e=new Set(["min","hour","day","week","month"]);a.s(["PRESET_INTERVALS",0,[{value:"1hour",label:"Every hour"},{value:"1day",label:"Every day"},{value:"1week",label:"Every week"},{value:"1month",label:"Every month"}],"REPEAT_UNITS",0,["min","hour","day","week","month"],"formatRepeatDisplay",0,function(a){let b=c(a);if(!b)return a;let{count:e,unit:f}=b;return 1===e?`Every ${d[f][0]}`:`Every ${e} ${d[f][1]}`},"formatRepeatInterval",0,function(a,b){return`${a}${b}`},"isValidUnit",0,function(a){return e.has(a)},"parseRepeatInterval",0,c,"unitLabel",0,function(a,b){return 1===b?d[a][0]:d[a][1]}])},276163,a=>{"use strict";var b=a.i(749314),c=a.i(437199),d=a.i(921584),e=a.i(588339),f=a.i(7455),g=a.i(432340),h=a.i(732254),i=a.i(889624),j=a.i(566825),k=a.i(778033),l=a.i(16831),m=a.i(948989),n=a.i(463295),o=a.i(518828),p=a.i(75118),q=a.i(313404),r=a.i(622154),s=a.i(316215);function t(a){return String(a).padStart(2,"0")}function u(a,b){let c=/^(\d{2}):(\d{2})$/.exec(b),d=c?Number(c[1]):a.getHours(),e=c?Number(c[2]):a.getMinutes(),f=new Date(a);return f.setHours(d,e,0,0),f}function v(a){return`${a.getFullYear()}-${t(a.getMonth()+1)}-${t(a.getDate())}`}function w(a){return`${t(a.getHours())}:${t(a.getMinutes())}`}function x(a){return a?.trim()||""}let y="h-7 border-0 bg-transparent px-1.5 text-sm text-foreground hover:bg-accent transition-colors -ml-1.5",z=(0,p.cn)(y,"rounded-md outline-none focus-visible:bg-accent focus-visible:ring-0 appearance-none pr-6");function A({icon:a,children:c}){return(0,b.jsxs)("div",{className:"group flex items-center gap-2",children:[(0,b.jsx)("span",{className:"inline-flex size-6 shrink-0 items-center justify-center text-muted-foreground",children:a}),(0,b.jsx)("div",{className:"flex min-w-0 flex-wrap items-center gap-1",children:c})]})}function B({open:a,onOpenChange:d,onConfirm:e,loading:f,title:i,description:j,confirmLabel:k,loadingLabel:l,confirmVariant:m="default"}){let[n,o]=(0,c.useState)("this");return(0,c.useEffect)(()=>{a&&o("this")},[a]),(0,b.jsx)(g.Dialog,{open:a,onOpenChange:d,children:(0,b.jsxs)(g.DialogContent,{showCloseButton:!1,children:[(0,b.jsxs)(g.DialogHeader,{children:[(0,b.jsx)(g.DialogTitle,{children:i}),(0,b.jsx)(g.DialogDescription,{children:j})]}),(0,b.jsx)("div",{className:"flex flex-col gap-1.5 py-1",children:[{value:"this",label:"This event only"},{value:"following",label:"This and following events"}].map(a=>{let c=n===a.value;return(0,b.jsxs)("button",{type:"button",onClick:()=>o(a.value),className:(0,p.cn)("flex items-center gap-2 rounded-md border px-3 py-2 text-left text-sm transition-colors",c?"border-ring bg-accent/40":"border-border/60 hover:bg-accent/30"),children:[(0,b.jsx)("span",{className:(0,p.cn)("inline-flex size-4 items-center justify-center rounded-full border",c?"border-foreground":"border-border"),"aria-hidden":!0,children:c&&(0,b.jsx)("span",{className:"size-2 rounded-full bg-foreground"})}),(0,b.jsx)("span",{children:a.label})]},a.value)})}),(0,b.jsxs)(g.DialogFooter,{children:[(0,b.jsx)(h.Button,{variant:"outline",size:"sm",onClick:()=>d(!1),disabled:f,children:"Cancel"}),(0,b.jsx)(h.Button,{size:"sm",variant:m,onClick:()=>e(n),disabled:f,children:f?l:k})]})]})})}a.s(["CalendarEventSheet",0,function({open:a,onOpenChange:g,agents:C=[],event:D,calendarEventId:E,workspaceId:F,readonly:G,defaultDate:H,defaultAgentId:I,submitting:J,saving:K,deleting:L,onCreate:M,onUpdate:N,onDelete:O}){let[P,Q]=(0,c.useState)(null),[R,S]=(0,c.useState)(!1),T=(0,c.useRef)(g);(0,c.useEffect)(()=>{T.current=g}),(0,c.useEffect)(()=>{if(!a||!E||D)return;let b=!1;return S(!0),Q(null),(0,e.getCalendarEvent)(E,F??"").then(a=>{b||Q(a)}).catch(()=>{b||(d.toast.error("Calendar event not found"),T.current(!1))}).finally(()=>{b||S(!1)}),()=>{b=!0}},[a,E,F,D]);let U=D??P,V=a=>{g(a),a||setTimeout(()=>Q(null),300)},[W,X]=(0,c.useState)(500),Y=(0,c.useRef)(!1),Z=(0,c.useCallback)(a=>{a.preventDefault(),Y.current=!0,a.target.setPointerCapture(a.pointerId)},[]),$=(0,c.useCallback)(a=>{Y.current&&X(Math.min(.8*window.innerWidth,Math.max(320,window.innerWidth-a.clientX)))},[]),_=(0,c.useCallback)(()=>{Y.current=!1},[]),aa=U?"edit":"create",[ab,ac]=(0,c.useState)(""),[ad,ae]=(0,c.useState)(""),[af,ag]=(0,c.useState)(""),[ah,ai]=(0,c.useState)(new Date),[aj,ak]=(0,c.useState)("09:00"),[al,am]=(0,c.useState)(!1),[an,ao]=(0,c.useState)("1"),[ap,aq]=(0,c.useState)("day"),ar=(0,c.useMemo)(()=>{if(!al)return"";let a=parseInt(an,10);return!a||a<1?"":(0,s.formatRepeatInterval)(a,ap)},[al,an,ap]),[as,at]=(0,c.useState)(null),[au,av]=(0,c.useState)(!1),[aw,ax]=(0,c.useState)(!1),ay=(0,c.useRef)(null),az=(0,c.useRef)(null);(0,c.useEffect)(()=>{if(a)if(U){let a=new Date(U.scheduled_at);ac(U.agent_id),ae(U.title),ag(U.description??""),ai(a),ak(w(a));let b=(0,s.parseRepeatInterval)(U.repeat_interval??"");b?(am(!0),ao(String(b.count)),aq(b.unit)):(am(!1),ao("1"),aq("day")),at(U.repeat_stop_at?new Date(U.repeat_stop_at):null)}else ac(I||C[0]?.id||""),ae(""),ag(""),ai(H??new Date),ak(function(a,b=30){let c=Math.ceil((60*a.getHours()+a.getMinutes()+1)/b)*b,d=Math.floor(c/60)%24;return`${t(d)}:${t(c%60)}`}(new Date)),am(!1),ao("1"),aq("day"),at(null)},[a,U?.id]);let aA=(0,c.useMemo)(()=>{if(!U)return!0;let a=new Date(U.scheduled_at);return ad.trim()!==U.title||x(af)!==x(U.description)||ab!==U.agent_id||ah.getFullYear()!==a.getFullYear()||ah.getMonth()!==a.getMonth()||ah.getDate()!==a.getDate()||aj!==w(a)||ar!==(U.repeat_interval??"")||(as?v(as):null)!==(U.repeat_stop_at?v(new Date(U.repeat_stop_at)):null)},[ab,ad,af,ah,aj,ar,as,U]);function aB(){if(!ab)return"Select an agent";if(!ad.trim())return"Title is required";if(!/^([01]\d|2[0-3]):[0-5]\d$/.test(aj))return"Time must be HH:MM in 24-hour format";if(al){let a=parseInt(an,10);if(!a||a<1)return"Repeat count must be a positive number"}if(as&&!ar)return"Stop date requires a repeat interval";let a=u(ah,aj);if(as){let b=new Date(as);if(b.setHours(23,59,59,999),b<a)return"Stop date must be on or after the first occurrence"}return null}let aC=async a=>{a.preventDefault();let b=aB();if(b)return d.toast.error(b);let c=u(ah,aj),e=af?.trim()||void 0;await M?.({agent_id:ab,title:ad.trim(),description:e,scheduled_at:c.toISOString(),repeat_interval:ar||void 0,repeat_stop_date:as?v(as):void 0})};function aD(){if(!U)return null;let a={},b=u(ah,aj).toISOString(),c=ad.trim();c!==U.title&&(a.title=c);let d=x(af);d!==x(U.description)&&(a.description=""===d?null:d),ab!==U.agent_id&&(a.agent_id=ab),b!==new Date(U.scheduled_at).toISOString()&&(a.scheduled_at=b),ar!==(U.repeat_interval??"")&&(a.repeat_interval=""===ar?null:ar);let e=as?v(as):null;return(e!==(U.repeat_stop_at?v(new Date(U.repeat_stop_at)):null)&&(a.repeat_stop_date=e),void 0===a.title&&void 0===a.description&&void 0===a.agent_id&&void 0===a.scheduled_at&&void 0===a.repeat_interval&&void 0===a.repeat_stop_date)?null:a}let aE=async a=>{U&&await N?.(U,a)},aF=async()=>{if(!U)return;let a=aB();if(a)return d.toast.error(a);let b=aD();if(b){if(U.repeat_interval)return void av(!0);await aE(b)}},aG=async a=>{let b=aD();b&&(b.scope=a,"this"===a&&U?.occurrence_at&&(b.occurrence_at=U.occurrence_at),await aE(b)),av(!1)},aH=a=>{"Enter"===a.key&&a.shiftKey&&(a.preventDefault(),a.stopPropagation(),"create"===aa?az.current?.requestSubmit():aF())},aI=(0,b.jsxs)("kbd",{"aria-hidden":!0,className:"mr-1 hidden sm:inline-flex items-center gap-0.5 font-sans font-medium leading-none opacity-60",children:[(0,b.jsx)("span",{children:"⇧"}),(0,b.jsx)("span",{children:"+"}),(0,b.jsx)("span",{children:"⏎"})]}),aJ="edit"===aa?ad.trim()||"Untitled event":ad.trim()||"New calendar event",aK=(0,c.useRef)(null),aL=a=>{a&&(a.style.height="auto",a.style.height=`${a.scrollHeight}px`)};(0,c.useEffect)(()=>{aL(aK.current)},[ad]);let aM=G?(0,b.jsx)("p",{className:"w-full px-0 py-1 font-news text-xl sm:text-2xl md:text-3xl font-medium leading-[1.2] tracking-tight",children:ad||"Untitled event"}):(0,b.jsx)("textarea",{ref:a=>{aK.current=a,aL(a)},"aria-label":"Event title",value:ad,onChange:a=>{ae(a.target.value),aL(a.target)},onKeyDown:a=>{if("Enter"===a.key&&!a.shiftKey){let b;a.preventDefault(),b=ay.current?.querySelector('[contenteditable="true"]'),b?.focus()}},placeholder:"edit"===aa?"Untitled event":"New event",autoFocus:"create"===aa,rows:1,className:(0,p.cn)("w-full resize-none overflow-hidden rounded-none border-0 bg-transparent px-0 py-1 font-news text-xl sm:text-2xl md:text-3xl font-medium leading-[1.2] tracking-tight","shadow-none outline-none focus-visible:border-0 focus-visible:ring-0 focus-visible:ring-offset-0","placeholder:text-muted-foreground/40 placeholder:font-normal")}),aN=G?(0,b.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,b.jsx)(A,{icon:(0,b.jsx)(j.CalendarDays,{className:"size-3.5"}),children:(0,b.jsx)("span",{className:"text-sm text-foreground",children:ah.toLocaleDateString(void 0,{weekday:"short",year:"numeric",month:"short",day:"numeric"})})}),(0,b.jsx)(A,{icon:(0,b.jsx)(j.CalendarDays,{className:"size-3.5"}),children:(0,b.jsx)("span",{className:"text-sm text-foreground",children:aj})}),(0,b.jsx)(A,{icon:(0,b.jsx)(m.Repeat,{className:"size-3.5"}),children:(0,b.jsx)("span",{className:"text-sm text-foreground",children:al?`Every ${an} ${(0,s.unitLabel)(ap,parseInt(an,10)||1)}`:"Does not repeat"})}),al&&as&&(0,b.jsx)(A,{icon:(0,b.jsx)(k.CalendarOff,{className:"size-3.5"}),children:(0,b.jsxs)("span",{className:"text-sm text-foreground",children:["Until ",as.toLocaleDateString()]})})]}):(0,b.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,b.jsx)(A,{icon:(0,b.jsx)(n.User,{className:"size-3.5"}),children:(0,b.jsxs)("select",{"aria-label":"Agent",value:ab,onChange:a=>ac(a.target.value),className:z,children:[0===C.length&&(0,b.jsx)("option",{value:"",children:"No agents"}),C.map(a=>(0,b.jsx)("option",{value:a.id,children:a.name},a.id))]})}),(0,b.jsx)(A,{icon:(0,b.jsx)(j.CalendarDays,{className:"size-3.5"}),children:(0,b.jsx)(q.CalendarDatePicker,{value:ah,onChange:a=>ai(a),ariaLabel:"Event date",hideIcon:!0,className:y})}),(0,b.jsx)(A,{icon:(0,b.jsx)(r.CalendarTimePicker,{value:aj,onChange:ak,iconOnly:!0,ariaLabel:"Pick time slot",className:"inline-flex size-6 items-center justify-center rounded-md border-0 bg-transparent p-0 text-muted-foreground transition-colors hover:bg-accent hover:text-foreground group-hover:bg-accent group-hover:text-foreground"}),children:(0,b.jsx)("input",{type:"text",inputMode:"numeric",pattern:"([01]\\d|2[0-3]):[0-5]\\d",maxLength:5,value:aj,onChange:a=>ak(a.target.value),placeholder:"HH:MM","aria-label":"Event time (24-hour)",className:"h-7 w-12 border-0 bg-transparent px-0.5 text-sm tabular-nums text-foreground rounded-md outline-none focus-visible:ring-0"})}),(0,b.jsx)(A,{icon:(0,b.jsx)(m.Repeat,{className:"size-3.5"}),children:al?(0,b.jsxs)("div",{className:"-ml-1.5 flex items-center gap-0.5",children:[(0,b.jsx)("span",{className:"px-1 text-sm text-foreground",children:"Every"}),(0,b.jsx)("input",{type:"text",inputMode:"numeric","aria-label":"Repeat count",value:an,onChange:a=>{ao(a.target.value.replace(/[^\d]/g,""))},onBlur:()=>{let a=parseInt(an,10);(!a||a<1)&&ao("1")},maxLength:4,style:{width:`${Math.max(1,an.length)+1.5}ch`},className:"h-7 shrink-0 border-0 bg-transparent px-0 text-center text-sm tabular-nums text-foreground rounded-md outline-none hover:bg-accent focus-visible:bg-accent focus-visible:ring-0 transition-colors"}),(0,b.jsx)("select",{"aria-label":"Repeat unit",value:ap,onChange:a=>{(0,s.isValidUnit)(a.target.value)&&aq(a.target.value)},className:"h-7 border-0 bg-transparent px-1 text-center text-sm text-foreground rounded-md outline-none appearance-none hover:bg-accent focus-visible:bg-accent focus-visible:ring-0 transition-colors",children:s.REPEAT_UNITS.map(a=>(0,b.jsx)("option",{value:a,children:(0,s.unitLabel)(a,parseInt(an,10)||1)},a))}),(0,b.jsx)("button",{type:"button","aria-label":"Remove repeat",onClick:()=>{am(!1),ao("1"),aq("day"),at(null)},className:"inline-flex size-5 shrink-0 items-center justify-center rounded text-muted-foreground transition-colors hover:bg-accent hover:text-foreground",children:(0,b.jsx)(o.X,{className:"size-3"})})]}):(0,b.jsxs)("select",{"aria-label":"Repeat",value:"",onChange:a=>{let b=a.target.value;if(b)if("__custom__"===b)am(!0),ao("1"),aq("day");else{let a=(0,s.parseRepeatInterval)(b);a&&(am(!0),ao(String(a.count)),aq(a.unit))}},className:z,children:[(0,b.jsx)("option",{value:"",children:"Does not repeat"}),s.PRESET_INTERVALS.map(a=>(0,b.jsx)("option",{value:a.value,children:a.label},a.value)),(0,b.jsx)("option",{value:"__custom__",children:"Custom…"})]})}),ar&&(0,b.jsx)(A,{icon:(0,b.jsx)(k.CalendarOff,{className:"size-3.5"}),children:(0,b.jsx)(q.CalendarDatePicker,{value:as,onChange:a=>at(a),onClear:()=>at(null),placeholder:"No end date",min:ah,ariaLabel:"Stop date",hideIcon:!0,className:y})})]}),aO=G?af?(0,b.jsx)("pre",{className:"whitespace-pre-wrap font-sans text-sm",children:af}):null:(0,b.jsx)("div",{ref:ay,children:(0,b.jsx)(i.MarkdownEditor,{contentType:"markdown",value:af,onChange:ag,placeholder:"Add a description…",className:"markdown",minHeight:"edit"===aa?"10rem":"8rem",variant:"seamless",agents:C},U?.id??"new")}),aP=(0,b.jsx)("div",{onPointerDown:Z,onPointerMove:$,onPointerUp:_,className:"hidden sm:block absolute left-0 top-0 bottom-0 w-1.5 cursor-col-resize z-10 hover:bg-primary/20 active:bg-primary/30 transition-colors rounded-l-xl"}),aQ=R?(0,b.jsx)(f.SheetBody,{className:"flex items-center justify-center py-12",children:(0,b.jsx)(l.Loader2,{className:"h-6 w-6 animate-spin text-muted-foreground"})}):(0,b.jsxs)(f.SheetBody,{className:"flex flex-col gap-6 px-4 pt-6 pb-4 sm:px-8 sm:pt-10 sm:pb-6",children:[aM,aN,aO]});return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(f.Sheet,{open:a,onOpenChange:V,children:(0,b.jsxs)(f.SheetContent,{style:{width:`min(${W}px, 100vw)`,maxWidth:"none"},className:"data-[side=right]:sm:inset-y-2 data-[side=right]:sm:right-2 data-[side=right]:sm:h-auto data-[side=right]:sm:rounded-xl data-[side=right]:sm:border",children:[aP,(0,b.jsx)(f.SheetTitle,{className:"sr-only",children:aJ}),G?(0,b.jsx)("div",{className:"flex flex-1 flex-col min-h-0",children:aQ}):"create"===aa?(0,b.jsxs)("form",{ref:az,onSubmit:aC,onKeyDownCapture:aH,className:"flex flex-1 flex-col min-h-0",children:[aQ,(0,b.jsxs)(f.SheetFooter,{children:[(0,b.jsx)(h.Button,{type:"button",variant:"outline",onClick:()=>V(!1),children:"Cancel"}),(0,b.jsx)(h.Button,{type:"submit",disabled:J||!C.length,children:J?"Creating...":(0,b.jsxs)(b.Fragment,{children:[aI,"Create event"]})})]})]}):(0,b.jsxs)("div",{onKeyDownCapture:aH,className:"flex flex-1 flex-col min-h-0",children:[aQ,(0,b.jsxs)(f.SheetFooter,{className:"sm:justify-between",children:[(0,b.jsx)(h.Button,{variant:"destructive",onClick:()=>{if(U){if(U.repeat_interval)return void ax(!0);O?.(U)}},disabled:L||K,children:L?"Deleting...":"Delete"}),(0,b.jsxs)("div",{className:"flex items-center gap-2 sm:justify-end",children:[(0,b.jsx)(h.Button,{variant:"outline",onClick:()=>V(!1),disabled:K,children:"Cancel"}),(0,b.jsx)(h.Button,{onClick:aF,disabled:K||!aA,children:K?"Saving...":(0,b.jsxs)(b.Fragment,{children:[aI,"Save"]})})]})]})]})]})}),(0,b.jsx)(B,{open:au,onOpenChange:av,onConfirm:aG,loading:K,title:"Update recurring event",description:"How should this change apply?",confirmLabel:"Update",loadingLabel:"Saving..."}),(0,b.jsx)(B,{open:aw,onOpenChange:ax,onConfirm:a=>{U&&(O?.(U,{scope:a,occurrence_at:U.occurrence_at??void 0}),ax(!1))},loading:L,title:"Delete recurring event",description:"How much of the series should be removed?",confirmLabel:"Delete",loadingLabel:"Deleting...",confirmVariant:"destructive"})]})}])}];
2
+
3
+ //# sourceMappingURL=_015fu61._.js.map
@@ -1,3 +1,3 @@
1
1
  module.exports=[28429,a=>{"use strict";var b=a.i(236631);a.s(["ChevronDown",()=>b.default])},89286,10773,a=>{"use strict";var b=a.i(437199);let c=b.createContext({disabled:!1});a.s(["FieldItemContext",0,c,"useFieldItemContext",0,function(){return b.useContext(c)}],89286);var d=a.i(485177);let e=b.createContext(void 0);a.s(["useCheckboxGroupContext",0,function(a=!0){let c=b.useContext(e);if(void 0===c&&!a)throw Error((0,d.default)(3));return c}],10773)},76592,a=>{"use strict";var b=a.i(749314),c=a.i(75118);a.s(["Label",0,function({className:a,...d}){return(0,b.jsx)("label",{"data-slot":"label",className:(0,c.cn)("flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",a),...d})}])},390248,a=>{"use strict";a.s(["hasCustomEmailErrors",0,function(a){return!!(a.emailAddress||a.imapHost||a.imapPassword||a.smtpHost||a.smtpPassword)},"hasWorkspaceFormErrors",0,function(a){return!!(a.name||a.slug)},"validateCustomEmailFields",0,function({emailAddress:a,imapHost:b,imapUsername:c,imapPassword:d,smtpHost:e,smtpUsername:f,smtpPassword:g}){let h={};return a.trim()||(h.emailAddress="Email address is required"),b.trim()||(h.imapHost="IMAP host is required"),c.trim()&&d.trim()||(h.imapPassword="IMAP credentials are required"),e.trim()||(h.smtpHost="SMTP host is required"),f.trim()&&g.trim()||(h.smtpPassword="SMTP credentials are required"),h},"validateWorkspaceForm",0,function({name:a,slug:b}){let c={};return a.trim()||(c.name="Workspace name is required"),b.trim()||(c.slug="Workspace slug is required"),c}])},110025,a=>{"use strict";let b=(0,a.i(647651).default)("video",[["path",{d:"m16 13 5.223 3.482a.5.5 0 0 0 .777-.416V7.87a.5.5 0 0 0-.752-.432L16 10.5",key:"ftymec"}],["rect",{x:"2",y:"6",width:"14",height:"12",rx:"2",key:"158x01"}]]);a.s(["Video",0,b],110025)},304377,a=>{"use strict";let b=(0,a.i(647651).default)("history",[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}],["path",{d:"M12 7v5l4 2",key:"1fdv2h"}]]);a.s(["History",0,b],304377)},426619,a=>{"use strict";let b=(0,a.i(647651).default)("folder-open",[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",key:"usdka0"}]]);a.s(["FolderOpen",0,b],426619)},81396,a=>{a.v(a=>Promise.resolve().then(()=>a(588339)))}];
2
2
 
3
- //# sourceMappingURL=_0tu039y._.js.map
3
+ //# sourceMappingURL=_01opi~8._.js.map
@@ -1,3 +1,3 @@
1
1
  module.exports=[28429,a=>{"use strict";var b=a.i(236631);a.s(["ChevronDown",()=>b.default])},89286,10773,a=>{"use strict";var b=a.i(437199);let c=b.createContext({disabled:!1});a.s(["FieldItemContext",0,c,"useFieldItemContext",0,function(){return b.useContext(c)}],89286);var d=a.i(485177);let e=b.createContext(void 0);a.s(["useCheckboxGroupContext",0,function(a=!0){let c=b.useContext(e);if(void 0===c&&!a)throw Error((0,d.default)(3));return c}],10773)},76592,a=>{"use strict";var b=a.i(749314),c=a.i(75118);a.s(["Label",0,function({className:a,...d}){return(0,b.jsx)("label",{"data-slot":"label",className:(0,c.cn)("flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",a),...d})}])},390248,a=>{"use strict";a.s(["hasCustomEmailErrors",0,function(a){return!!(a.emailAddress||a.imapHost||a.imapPassword||a.smtpHost||a.smtpPassword)},"hasWorkspaceFormErrors",0,function(a){return!!(a.name||a.slug)},"validateCustomEmailFields",0,function({emailAddress:a,imapHost:b,imapUsername:c,imapPassword:d,smtpHost:e,smtpUsername:f,smtpPassword:g}){let h={};return a.trim()||(h.emailAddress="Email address is required"),b.trim()||(h.imapHost="IMAP host is required"),c.trim()&&d.trim()||(h.imapPassword="IMAP credentials are required"),e.trim()||(h.smtpHost="SMTP host is required"),f.trim()&&g.trim()||(h.smtpPassword="SMTP credentials are required"),h},"validateWorkspaceForm",0,function({name:a,slug:b}){let c={};return a.trim()||(c.name="Workspace name is required"),b.trim()||(c.slug="Workspace slug is required"),c}])},588709,a=>{"use strict";var b=a.i(749314),c=a.i(437199),d=a.i(207058),e=a.i(752792),f=a.i(506180),g=a.i(732254),h=a.i(224226),i=a.i(137993);a.i(735132);var j=a.i(628508),k=a.i(325848),l=a.i(854445);let m={shape:"circle",eye:"dots",nose:"dot",bg:0};async function n(){let b=await ((a,b=3e3)=>new Promise(c=>{let d=document.querySelector(a);if(d)return void c(d);let e=new MutationObserver(()=>{let b=document.querySelector(a);b&&(e.disconnect(),c(b))});e.observe(document.body,{childList:!0,subtree:!0}),setTimeout(()=>{e.disconnect(),c(null)},b)}))("#agent-name");if(!b||(await new Promise(a=>{requestAnimationFrame(()=>requestAnimationFrame(()=>a()))}),!b.getBoundingClientRect().height))return;let{driver:c}=await a.A(995011);await Promise.resolve({}),c({showProgress:!0,animate:!0,allowClose:!0,overlayClickBehavior:()=>{},overlayColor:"black",overlayOpacity:.4,popoverClass:"agent-tour-popover",steps:[{element:"#agent-name",popover:{title:"Name your agent",description:"Give your agent a name — this is how you'll identify it.",side:"bottom",align:"start"}},{element:"#agent-runtime-select",disableActiveInteraction:!1,popover:{title:"Choose a runtime",description:"Select which machine and provider will run this agent.",side:"bottom",align:"start"}}]}).drive()}function o({runtimes:a,defaultRuntimeId:d="",modelOptions:e,guided:p=!1,onTourReady:q,onSave:r,onCancel:s,saving:t}){let{workspaceId:u}=(0,f.useWorkspace)(),[v,w]=(0,c.useState)(""),[x,y]=(0,c.useState)(""),[z,A]=(0,c.useState)(""),[B,C]=(0,c.useState)(d),[D,E]=(0,c.useState)(""),[F,G]=(0,c.useState)({}),[H,I]=(0,c.useState)(null),J=(0,c.useRef)(null),[K,L]=(0,c.useState)(""),[M,N]=(0,c.useState)(m),O=(0,c.useRef)(!1);(0,c.useEffect)(()=>{O.current||(O.current=!0,N((0,k.randomConfig)()),w((0,l.uniqueNamesGenerator)({dictionaries:[l.names],length:1,style:"capital"})))},[]);let P=(0,c.useCallback)(()=>{w((0,l.uniqueNamesGenerator)({dictionaries:[l.names],length:1,style:"capital"})),G(a=>({...a,name:void 0}))},[]),Q=a.find(a=>a.id===B),R=Q&&e?e[Q.provider]??[]:[],S=(0,h.nameToHandle)(v),T=D||S,U=(0,h.getHandleError)(T),V=(0,c.useRef)(!1);(0,c.useEffect)(()=>{q?.(()=>n())},[q]),(0,c.useEffect)(()=>{p&&!V.current&&(V.current=!0,n())},[p]);let W=async a=>{a.preventDefault();let b=function({name:a,runtimeId:b}){let c={};return a.trim()||(c.name="Name is required"),b||(c.runtimeId="Select an online runtime"),c}({name:v,runtimeId:B});G(b),b.name||b.runtimeId||await r({name:v.trim(),description:x,instructions:z,runtime_id:B,email_handle:D||S||void 0,runtime_config:K?{model:K}:{},custom_email:J.current?.()??H??void 0,avatar_url:(0,k.serializeAvatarConfig)(M)})};return(0,b.jsx)("div",{className:"flex-1 min-h-0 overflow-y-auto thin-scrollbar",children:(0,b.jsxs)("form",{onSubmit:W,noValidate:!0,className:"mx-auto max-w-md flex flex-col gap-5 px-8 pt-8 pb-6",children:[(0,b.jsx)(j.AvatarPickerDialog,{config:M,onChange:N}),(0,b.jsx)(h.GeneralFields,{name:v,setName:a=>{w(a),F.name&&a.trim()&&G(a=>({...a,name:void 0}))},description:x,setDescription:y,instructions:z,setInstructions:A,model:K,setModel:L,runtimeId:B,setRuntimeId:b=>{let c=a.find(a=>a.id===B)?.provider,d=a.find(a=>a.id===b)?.provider;C(b),c&&c!==d&&L(""),F.runtimeId&&b&&G(a=>({...a,runtimeId:void 0}))},runtimes:a,providerModels:R,errors:F,runtimeAsRadio:!0,onShuffle:P,emailHandleSlot:(0,b.jsx)(h.EmailHandleField,{emailHandle:D,setEmailHandle:E,derivedHandle:S}),advancedSection:(0,b.jsx)(i.CustomEmailForm,{workspaceId:u,onDataChange:I,getDataRef:J})}),(0,b.jsxs)("div",{className:"flex items-center gap-2 pt-2",children:[(0,b.jsx)(g.Button,{type:"button",variant:"ghost",size:"sm",onClick:s,children:"Cancel"}),(0,b.jsx)(g.Button,{type:"submit",size:"sm",disabled:t||!!U,children:t?"Creating...":"Create"})]})]})})}var p=a.i(588339),q=a.i(921584),r=a.i(370085),s=a.i(525132);a.s(["default",0,function(){let a=(0,d.useRouter)(),{slug:h,workspaceId:i}=(0,f.useWorkspace)(),{agents:j,runtimes:k,handleCreateAgent:l,getFirstOnlineRuntimeId:m}=(0,e.useAgentContext)(),[n,t]=(0,c.useState)(!1),[u,v]=(0,c.useState)({}),w=(0,c.useRef)(null);(0,c.useEffect)(()=>{(0,p.fetchModelOptions)().then(v).catch(()=>{})},[]);let x=(0,c.useCallback)(a=>{w.current=a},[]);return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 border-b border-border/50 px-3 md:px-5 py-2.5",children:[(0,b.jsx)("h1",{className:"text-sm font-medium",children:"Create Agent"}),(0,b.jsxs)(s.Tooltip,{children:[(0,b.jsx)(s.TooltipTrigger,{render:(0,b.jsx)(g.Button,{variant:"ghost",size:"icon-xs",onClick:()=>w.current?.(),className:"text-muted-foreground"}),children:(0,b.jsx)(r.CircleHelp,{className:"size-3.5"})}),(0,b.jsx)(s.TooltipContent,{children:"Show guided tour"})]})]}),(0,b.jsx)(o,{runtimes:k,defaultRuntimeId:m(),modelOptions:u,guided:0===j.length,onTourReady:x,saving:n,onCancel:()=>a.back(),onSave:async b=>{t(!0);try{let c=await l({name:b.name,description:b.description||void 0,instructions:b.instructions||void 0,runtime_id:b.runtime_id,email_handle:b.email_handle||void 0,runtime_config:b.runtime_config,avatar_url:b.avatar_url});if(c){if(b.custom_email)try{await (0,p.createEmailAccount)(c.id,b.custom_email,i),q.toast.success("Custom email connected")}catch(a){q.toast.error(a instanceof Error?a.message:"Failed to connect custom email")}a.push(`/w/${h}/agents/${c.id}/chat`)}return!!c}finally{t(!1)}}})]})}],588709)},81396,a=>{a.v(a=>Promise.resolve().then(()=>a(588339)))},995011,a=>{a.v(b=>Promise.all(["server/chunks/ssr/0_ek_driver_js_dist_driver_js_mjs_01pzbxs._.js"].map(b=>a.l(b))).then(()=>b(569973)))}];
2
2
 
3
- //# sourceMappingURL=_11h_8jo._.js.map
3
+ //# sourceMappingURL=_02ui5fr._.js.map