@alook/app 0.0.141 → 0.0.143

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 (100) hide show
  1. package/bundled/web/.open-next/.build/durable-objects/queue.js +5 -5
  2. package/bundled/web/.open-next/assets/BUILD_ID +1 -1
  3. package/bundled/web/.open-next/assets/_next/static/chunks/1ixdcdkpnwt_p.js +1 -0
  4. package/bundled/web/.open-next/assets/_next/static/chunks/{15gpqusfs36cs.js → 1kj_n-cbedl8a.js} +2 -2
  5. package/bundled/web/.open-next/assets/_next/static/chunks/{0eayyb8dzeuqj.js → 1lwe0daem0j5h.js} +1 -1
  6. package/bundled/web/.open-next/assets/_next/static/chunks/{2jgr6hdohnj5b.js → 2p8ty_tin77ze.js} +1 -1
  7. package/bundled/web/.open-next/assets/_next/static/chunks/{348z6y6iea4gl.js → 2s1nfdub5g-vr.js} +3 -3
  8. package/bundled/web/.open-next/assets/_next/static/chunks/35szcmuxsgm0x.js +1 -0
  9. package/bundled/web/.open-next/assets/_next/static/chunks/{2_5gjqjt8nmq2.js → 3yhuzg7vtzfp5.js} +1 -1
  10. package/bundled/web/.open-next/assets/_next/static/chunks/{14mgvrpz4ar3j.js → 41hz62d13-2ps.js} +1 -1
  11. package/bundled/web/.open-next/cache/{n67RZ-dHYbiPuCBj-CPEs → 9TliiRuyS2VWuTgYBLJbH}/_global-error.cache +1 -1
  12. package/bundled/web/.open-next/cache/{n67RZ-dHYbiPuCBj-CPEs → 9TliiRuyS2VWuTgYBLJbH}/_not-found.cache +1 -1
  13. package/bundled/web/.open-next/cache/{n67RZ-dHYbiPuCBj-CPEs → 9TliiRuyS2VWuTgYBLJbH}/device.cache +1 -1
  14. package/bundled/web/.open-next/cache/{n67RZ-dHYbiPuCBj-CPEs → 9TliiRuyS2VWuTgYBLJbH}/privacy.cache +1 -1
  15. package/bundled/web/.open-next/cache/{n67RZ-dHYbiPuCBj-CPEs → 9TliiRuyS2VWuTgYBLJbH}/sitemap.xml.cache +1 -1
  16. package/bundled/web/.open-next/cloudflare/cache-assets-manifest.sql +1 -1
  17. package/bundled/web/.open-next/cloudflare/init.js +1 -1
  18. package/bundled/web/.open-next/dynamodb-provider/dynamodb-cache.json +1 -1
  19. package/bundled/web/.open-next/middleware/handler.mjs +4 -4
  20. package/bundled/web/.open-next/server-functions/default/src/web/.next/BUILD_ID +1 -1
  21. package/bundled/web/.open-next/server-functions/default/src/web/.next/build-manifest.json +3 -3
  22. package/bundled/web/.open-next/server-functions/default/src/web/.next/prerender-manifest.json +3 -3
  23. package/bundled/web/.open-next/server-functions/default/src/web/.next/required-server-files.json +1 -1
  24. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/invite/[token]/page_client-reference-manifest.js +1 -1
  25. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/studio/new/page_client-reference-manifest.js +1 -1
  26. 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
  27. 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
  28. 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
  29. 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
  30. 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
  31. 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
  32. 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
  33. 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
  34. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/agents/page_client-reference-manifest.js +1 -1
  35. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/calendar/page_client-reference-manifest.js +1 -1
  36. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/flags/page_client-reference-manifest.js +1 -1
  37. 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
  38. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/home/page_client-reference-manifest.js +1 -1
  39. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/issues/page_client-reference-manifest.js +1 -1
  40. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/page_client-reference-manifest.js +1 -1
  41. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/runtimes/page_client-reference-manifest.js +1 -1
  42. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/settings/page_client-reference-manifest.js +1 -1
  43. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/traces/[traceId]/page_client-reference-manifest.js +1 -1
  44. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/traces/page_client-reference-manifest.js +1 -1
  45. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/unread/page_client-reference-manifest.js +1 -1
  46. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/page/react-loadable-manifest.json +1 -1
  47. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/page_client-reference-manifest.js +1 -1
  48. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__01-4zmn._.js +1 -1
  49. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__0bye0tx._.js +1 -1
  50. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__0gkkbf4._.js +1 -1
  51. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__0jrrtm1._.js +1 -1
  52. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__0xdps2u._.js +1 -1
  53. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__1-ug-mf._.js +1 -1
  54. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__12fz1lr._.js +1 -1
  55. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__134-7z_._.js +1 -1
  56. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__155l597._.js +1 -1
  57. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__18lolj4._.js +1 -1
  58. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__1cbaprg._.js +1 -1
  59. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__1jq8zws._.js +1 -1
  60. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__1l-2x7f._.js +1 -1
  61. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__1pmcw25._.js +1 -1
  62. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__1rfzkgk._.js +1 -1
  63. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__1w9__7q._.js +1 -1
  64. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__20s9whj._.js +1 -1
  65. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_03i6uql._.js +1 -1
  66. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0591v0o._.js +1 -1
  67. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_08gc1s_._.js +1 -1
  68. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0lcu68p._.js +1 -1
  69. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0m_ehw8._.js +1 -1
  70. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0p79t7w._.js +1 -1
  71. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0r2vuif._.js +1 -1
  72. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0tzvy_s._.js +1 -1
  73. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_13jq647._.js +3 -3
  74. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_18v5918._.js +1 -1
  75. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_1aztsqf._.js +1 -1
  76. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_1d18okt._.js +1 -1
  77. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_1i4egv6._.js +1 -1
  78. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_1iaevpj._.js +2 -2
  79. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_1kt_xdj._.js +1 -1
  80. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_1njwvhs._.js +1 -1
  81. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/src_1j5rtq8._.js +1 -1
  82. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/_0qgcnj5._.js +1 -1
  83. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/_1wqw0ro._.js +1 -1
  84. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/src_web_src_app_(app)_w_[slug]_agents_[id]_layout_tsx_0ysqmgw._.js +1 -1
  85. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/src_web_src_lib_api_ts_1ffelwp._.js +1 -1
  86. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/middleware-build-manifest.js +3 -3
  87. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/middleware-manifest.json +5 -5
  88. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/server-reference-manifest.js +1 -1
  89. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/server-reference-manifest.json +1 -1
  90. package/bundled/web/.open-next/server-functions/default/src/web/handler.mjs +34 -34
  91. package/bundled/web/.open-next/server-functions/default/src/web/handler.mjs.meta.json +101 -101
  92. package/bundled/web/.open-next/server-functions/default/src/web/index.mjs +4 -4
  93. package/bundled/web/custom-worker.ts +16 -1
  94. package/package.json +1 -1
  95. package/bundled/web/.open-next/assets/_next/static/chunks/2c9n34tpjgbko.js +0 -1
  96. package/bundled/web/.open-next/assets/_next/static/chunks/447gx8byleobi.js +0 -1
  97. /package/bundled/web/.open-next/assets/_next/static/{n67RZ-dHYbiPuCBj-CPEs → 9TliiRuyS2VWuTgYBLJbH}/_buildManifest.js +0 -0
  98. /package/bundled/web/.open-next/assets/_next/static/{n67RZ-dHYbiPuCBj-CPEs → 9TliiRuyS2VWuTgYBLJbH}/_clientMiddlewareManifest.js +0 -0
  99. /package/bundled/web/.open-next/assets/_next/static/{n67RZ-dHYbiPuCBj-CPEs → 9TliiRuyS2VWuTgYBLJbH}/_ssgManifest.js +0 -0
  100. /package/bundled/web/.open-next/cache/{n67RZ-dHYbiPuCBj-CPEs → 9TliiRuyS2VWuTgYBLJbH}/robots.txt.cache +0 -0
@@ -1,5 +1,5 @@
1
- module.exports=[726089,e=>{"use strict";var t=e.i(931720);e.i(700598);var a=e.i(704024);let s=(0,e.i(726527).createLogger)({service:"broadcast"});async function n(e,n,r){let i;try{let{env:a}=(0,t.getCloudflareContext)();i=a.DEV_WS_DO_URL;let o=await a.WS_DO_WORKER.fetch(`http://internal${e}`,{method:"POST",body:n});if(o.ok)try{return{sent:(await o.json()).sent??0}}catch{return{sent:0}}s.warn("broadcast service-binding non-ok",{...r,status:o.status})}catch{}let o=i||a.DEV_WS_DO_URL,l=await fetch(`${o}${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:n});if(!l.ok)throw Error(`broadcast failed: ${l.status}`);try{return{sent:(await l.json()).sent??0}}catch{return{sent:0}}}e.s(["broadcastToDaemon",0,function(e,a){let s=n(`/broadcast/daemon/${e}`,JSON.stringify(a),{daemonId:e,type:a.type});try{let{ctx:e}=(0,t.getCloudflareContext)();e.waitUntil(s.catch(()=>{}))}catch{}return s},"broadcastToUser",0,function(e,a){return function(e,a,s){let r=n(e,a,s);try{let{ctx:e}=(0,t.getCloudflareContext)();e.waitUntil(r.catch(()=>{}))}catch{}return r.then(()=>{})}(`/broadcast/user/${e}`,JSON.stringify(a),{userId:e,type:a.type})}])},511456,e=>{"use strict";e.i(700598);let t=(0,e.i(726527).createLogger)({service:"web",level:process.env.ALOOK_LOG_LEVEL||"info",pretty:!1});e.s(["log",0,t])},555230,e=>{"use strict";e.i(700598);var t=e.i(291109),a=e.i(704024),s=e.i(424166),n=e.i(740580),r=e.i(774078);e.s(["TaskPayloadBuilder",0,class{db;constructor(e){this.db=e}async buildFullPayloads(e,i){let o=e.filter(e=>e.type!==a.TASK_TYPES.KILL_TASK),l=[...new Set(o.map(e=>e.agentId))],[d,u,c]=l.length>0?await Promise.all([(0,r.cached)(r.cacheKeys.allAgents(i),300,()=>t.queries.agent.getAllAgentsForWorkspace(this.db,i)),(0,r.cached)(r.cacheKeys.allEmailAccounts(i),600,()=>t.queries.emailAccount.getAllEmailAccountsForWorkspace(this.db,i)),(0,r.cached)(r.cacheKeys.allColleagues(i),600,()=>t.queries.agentLink.getAllColleaguesForWorkspace(this.db,i)).catch(()=>[])]).then(([e,t,a])=>{let s=new Set(l);return[e.filter(e=>s.has(e.id)),t.filter(e=>s.has(e.agentId)),a.filter(e=>s.has(e.agentId))]}):[[],[],[]],h=new Map(d.map(e=>[e.id,e])),p=new Map;for(let e of u){let t=p.get(e.agentId)??[];t.push(e.emailAddress),p.set(e.agentId,t)}let m=new Map;for(let e of c){let t=m.get(e.agentId)??[];t.push(e),m.set(e.agentId,t)}let w=[...new Set(o.map(e=>e.conversationId).filter(Boolean))],g=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,l=[];if(e){e.emailHandle&&l.push((0,s.toAlookAddress)(e.emailHandle));let t=p.get(e.id)??[];l.push(...t)}let d=e?.instructions??"";if(e?.ownerId){if(!I.has(e.ownerId)){let a=await (0,r.cached)(r.cacheKeys.member(i,e.ownerId),600,()=>t.queries.member.getMemberByUserAndWorkspace(this.db,e.ownerId,i));I.set(e.ownerId,a?{globalInstruction:a.globalInstruction}:null)}let a=I.get(e.ownerId);a?.globalInstruction&&(d=[a.globalInstruction,d].filter(Boolean).join("\n\n"))}let u=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)}u=k.get(e.ownerId)?.name??null}let c=g.get(o.conversationId)??null,w=c?.channel??"default",T=null;if(o.type===a.TASK_TYPES.USER_DM_MESSAGE&&c?.userId){if(!k.has(c.userId)){let e=await (0,r.cached)(r.cacheKeys.user(c.userId),1800,()=>t.queries.user.getUser(this.db,c.userId));k.set(c.userId,e?{name:e.name,email:e.email}:null)}let a=k.get(c.userId);a&&(T={name:a.name,email:a.email,is_owner:c.userId===e?.ownerId})}let y=(m.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:d,name:e.name,runtime_config:e.runtimeConfig||{},email_handle:e.emailHandle||null,email_addresses:l,user_email:null,user_name:u,colleagues:y}:null})}return f}}])},205054,e=>{"use strict";e.i(700598);var t=e.i(291109),a=e.i(704024),s=e.i(511456),n=e.i(726089),r=e.i(740580),i=e.i(774078),o=e.i(555230);let l=t.queries.task,d=t.queries.agent,u=t.queries.message,c=t.queries.conversation,h=t.queries.issue,p=t.queries.inbox;e.s(["TaskService",0,class{db;constructor(e){this.db=e}async enqueueTask(e,t,s,n,r=a.TASK_TYPES.USER_DM_MESSAGE,o){let u=await d.getAgent(this.db,e,s);if(!u)throw Error("agent not found");if(!u.runtimeId)throw Error("agent has no runtime");if(o?.traceId&&o.parentTaskId&&await l.countTasksByTrace(this.db,o.traceId)>=a.MAX_TASKS_PER_TRACE)throw Error(`Trace limit reached (${a.MAX_TASKS_PER_TRACE} tasks). This may indicate an infinite loop between agents.`);let c=await l.createTask(this.db,{agentId:e,runtimeId:u.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(c,s).catch(()=>{}),c}async claimTask(e,t){let a=await d.getAgent(this.db,e,t);return this.claimTaskWithAgent(e,t,a)}async claimTaskWithAgent(e,t,a){if(!a)return null;if(await l.countRunningTasks(this.db,e,t)>=a.maxConcurrentTasks){let s=await l.findSteerableReplacement(this.db,e,t);if(!s||await l.countRunningTasks(this.db,e,t,s.predecessorId)>=a.maxConcurrentTasks)return null}let s=await l.claimTask(this.db,e,t);return s?(await d.updateAgentStatus(this.db,e,t,"working"),s):null}async claimTasksForRuntimes(e,t,a){let s=await l.claimKillTasks(this.db,e,a,t),n=t-s.length,r=n>0?await l.listPendingTasksByRuntimes(this.db,e,a):[],i=new Set(e),o=new Set,u=[...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))}if(0===c.length)return u;let h=[...new Set(c.map(e=>e.agentId))],p=new Map((await d.getAgentsByIds(this.db,h,a)).map(e=>[e.id,e]));for(let e of(await Promise.all(c.map(e=>this.claimTaskWithAgent(e.agentId,e.workspaceId,p.get(e.agentId)??null)))))e&&i.has(e.runtimeId)&&u.push(e);return u}async startTask(e,t){let a=await l.startTask(this.db,e,t);if(!a)throw Error("task not in dispatched status");return a}async completeTask(e,t,a,n){let r;try{r=JSON.parse(a)}catch{r={raw:a}}let i=await l.completeTask(this.db,e,t,{result:r,sessionId:n||null});if(!i){let t=await l.getTask(this.db,e),a=t?.status??"unknown";throw s.log.warn(`completeTask failed: task is in '${a}' status`,{taskId:e}),Error(`cannot complete task in '${a}' status`)}return await this.reconcileAgentStatus(i.agentId,i.workspaceId),this.maybeUpsertUnread(i,t,null).catch(()=>{}),i}async failTask(e,i,o){let d=await l.failTask(this.db,e,i,o);if(!d){let t=await l.getTask(this.db,e),a=t?.status??"unknown";throw s.log.warn(`failTask failed: task is in '${a}' status`,{taskId:e}),Error(`cannot fail task in '${a}' status`)}if(d.type===a.TASK_TYPES.KILL_TASK)return d;let h=null;if(o){let a=null;try{if(d.runtimeId){let e=await t.queries.runtime.getAgentRuntime(this.db,d.runtimeId);a=e?.provider??null}}catch{}let s=await u.createMessage(this.db,{conversationId:d.conversationId,role:"assistant",content:o,taskId:e,metadata:JSON.stringify({error_source:"runtime",provider:a})});h=s?.id??null;try{let e=await c.getConversation(this.db,d.conversationId,i);e&&(0,n.broadcastToUser)(e.userId,{type:"conversation.message",conversationId:d.conversationId,message:(0,r.messageToResponse)(s)}).catch(()=>{})}catch{}}return await this.reconcileAgentStatus(d.agentId,d.workspaceId),await this.syncIssueStatusFromTask(d,"failed"),this.maybeUpsertUnread(d,i,h).catch(()=>{}),d}async syncIssueStatusFromTask(e,t){if(e.type!==a.TASK_TYPES.ISSUE_EVENT)return;let s=await h.getIssueByConversation(this.db,e.conversationId,e.workspaceId);if(!s||s.status===t||!await h.updateIssue(this.db,s.id,e.workspaceId,{status:t}))return;let i=await u.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 c.getConversation(this.db,e.conversationId,e.workspaceId);t&&(0,n.broadcastToUser)(t.userId,{type:"conversation.message",conversationId:e.conversationId,message:(0,r.messageToResponse)(i)}).catch(()=>{})}catch{}}async maybeUpsertUnread(e,t,a){if(!p.isUnreadEligible(e)||!e.completedAt)return;let s=await c.getConversation(this.db,e.conversationId,t);if(!s)return;let n=a??await p.findLatestAssistantMessageId(this.db,e.conversationId);await p.upsertUnreadEntry(this.db,{conversationId:e.conversationId,userId:s.userId,workspaceId:t,agentId:s.agentId,taskId:e.id,taskType:e.type,taskStatus:e.status,taskPrompt:e.prompt,completedAt:e.completedAt,latestMessageId:n})}async supersedeTask(e,t){let a=await l.supersedeTask(this.db,e,t);if(!a){let t=await l.getTask(this.db,e),a=t?.status??"unknown";throw s.log.warn(`supersedeTask failed: task is in '${a}' status`,{taskId:e}),Error(`cannot supersede task in '${a}' status`)}return await this.reconcileAgentStatus(a.agentId,a.workspaceId),a}async retryTask(e,t){let a=await l.getTask(this.db,e);if(!a||a.workspaceId!==t)throw Error("task not found");if("failed"!==a.status)throw Error("only failed tasks can be retried");let s=await l.markFailedAsSuperseded(this.db,e,t);if(!s)throw Error("failed to mark task as superseded");return{oldTask:s,newTask:await this.enqueueTask(a.agentId,a.conversationId,t,a.prompt,a.type,{contextKey:a.contextKey??null,context:a.context,traceId:a.traceId??null,parentTaskId:a.parentTaskId??null})}}async cancelActiveTask(e,r,i){let o=await l.getActiveTaskByConversation(this.db,e,r);if(!o)return null;let d=await l.cancelTask(this.db,o.id,r);if(!d)return null;if("dispatched"===o.status||"running"===o.status){let i=await l.createTask(this.db,{agentId:o.agentId,runtimeId:o.runtimeId,workspaceId:r,conversationId:e,prompt:"",type:a.TASK_TYPES.KILL_TASK,context:{target_task_id:o.id}});await l.dispatchTaskById(this.db,i.id,r);let d=await t.queries.runtime.getAgentRuntime(this.db,o.runtimeId);d&&(0,n.broadcastToDaemon)(d.daemonId,{type:"daemon.kill",workspaceId:r,agentId:o.agentId,taskId:i.id,targetTaskId:o.id}).catch(e=>s.log.warn("daemon.kill broadcast failed, relying on poll fallback",e))}return await u.createMessage(this.db,{conversationId:e,role:"assistant",content:i?.reason??"Task cancelled by you",taskId:o.id,metadata:JSON.stringify({kind:"lifecycle"})}),await this.reconcileAgentStatus(o.agentId,r),d}async reconcileAgentStatus(e,t){let a=await l.countRunningTasks(this.db,e,t);await d.updateAgentStatus(this.db,e,t,a>0?"working":"idle"),(0,i.invalidate)(i.cacheKeys.activeTaskCounts(t)).catch(()=>{})}async cancelTrace(e,t,a){for(let n of[...new Set((await l.getTraceTree(this.db,e,t)).filter(e=>["queued","dispatched","running"].includes(e.status)).map(e=>e.conversationId))])try{await this.cancelActiveTask(n,t,{reason:a?.reason})}catch(t){s.log.warn("cancelTrace: failed to cancel task",{traceId:e,convId:n,err:t})}}async pushTaskToDaemon(e,a){let s=await t.queries.runtime.getAgentRuntime(this.db,e.runtimeId);if(!s)return;let r=await l.dispatchTaskById(this.db,e.id,a);if(!r)return;let i=new o.TaskPayloadBuilder(this.db),d=await i.buildFullPayloads([r],a);if(0===d.length)return void await l.revertDispatchedToQueued(this.db,e.id,a);try{let{sent:t}=await (0,n.broadcastToDaemon)(s.daemonId,{type:"daemon.tasks",tasks:d});0===t&&await l.revertDispatchedToQueued(this.db,e.id,a)}catch{await l.revertDispatchedToQueued(this.db,e.id,a)}}}])},914022,e=>e.a(async(t,a)=>{try{var s=e.i(931720);e.i(700598);var n=e.i(888247),r=e.i(704024),i=e.i(291109),o=e.i(675139),l=e.i(152327),d=e.i(47962),u=e.i(776227),c=e.i(726089),h=e.i(205054),p=e.i(774078),m=t([l]);[l]=m.then?(await m)():m;let w=(0,l.withAuth)(async(e,t)=>{let a=await (0,d.withWorkspaceMember)(e,t);if(a instanceof Response)return a;let{env:n}=(0,s.getCloudflareContext)(),r=(0,o.getDb)(n.DB),l=t.params?.id;if(!l)return(0,u.writeError)("issue id is required",400);if(!await i.queries.issue.getIssue(r,l,a.workspaceId,t.userId))return(0,u.writeError)("issue not found",404);let c=await i.queries.issueComment.listComments(r,l,a.workspaceId);return(0,u.writeJSON)({comments:c.map(i.queries.issueComment.commentToResponse)})}),g=(0,l.withAuth)(async(e,t)=>{let a=await (0,d.withWorkspaceMember)(e,t);if(a instanceof Response)return a;let{env:l}=(0,s.getCloudflareContext)(),m=(0,o.getDb)(l.DB),w=t.params?.id;if(!w)return(0,u.writeError)("issue id is required",400);let g=await i.queries.issue.getIssue(m,w,a.workspaceId,t.userId);if(!g)return(0,u.writeError)("issue not found",404);let I=e.nextUrl.searchParams.get("agentId");if(I&&g.agentId!==I)return(0,u.writeError)("issue does not belong to agent",403);let[k,f]=await (0,u.parseBody)(e,n.CreateIssueCommentBodySchema);if(f)return f;let T=I?"agent":"user",y=I??t.userId,b=await i.queries.issueComment.createComment(m,{issueId:w,workspaceId:a.workspaceId,authorType:T,authorId:y,content:k.content});await i.queries.issue.updateIssue(m,w,a.workspaceId,{});let v=i.queries.issueComment.commentToResponse(b);if((0,c.broadcastToUser)(g.creatorUserId,{type:"issue.comment",issueId:w,comment:v}).catch(()=>{}),"user"===T&&!(0,r.isTerminalIssueStatus)(g.status)&&g.agentId&&g.conversationId&&!await i.queries.task.getActiveTaskByConversation(m,g.conversationId,a.workspaceId)){let e=new h.TaskService(m),t=`${g.title}
1
+ module.exports=[726089,e=>{"use strict";var t=e.i(931720);e.i(700598);var a=e.i(704024);let s=(0,e.i(726527).createLogger)({service:"broadcast"});async function n(e,n,r){let i;try{let{env:a}=(0,t.getCloudflareContext)();i=a.DEV_WS_DO_URL;let o=await a.WS_DO_WORKER.fetch(`http://internal${e}`,{method:"POST",body:n});if(o.ok)try{return{sent:(await o.json()).sent??0}}catch{return{sent:0}}s.warn("broadcast service-binding non-ok",{...r,status:o.status})}catch{}let o=i||a.DEV_WS_DO_URL,l=await fetch(`${o}${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:n});if(!l.ok)throw Error(`broadcast failed: ${l.status}`);try{return{sent:(await l.json()).sent??0}}catch{return{sent:0}}}e.s(["broadcastToDaemon",0,function(e,a){let s=n(`/broadcast/daemon/${e}`,JSON.stringify(a),{daemonId:e,type:a.type});try{let{ctx:e}=(0,t.getCloudflareContext)();e.waitUntil(s.catch(()=>{}))}catch{}return s},"broadcastToUser",0,function(e,a){return function(e,a,s){let r=n(e,a,s);try{let{ctx:e}=(0,t.getCloudflareContext)();e.waitUntil(r.catch(()=>{}))}catch{}return r.then(()=>{})}(`/broadcast/user/${e}`,JSON.stringify(a),{userId:e,type:a.type})}])},511456,e=>{"use strict";e.i(700598);let t=(0,e.i(726527).createLogger)({service:"web",level:process.env.ALOOK_LOG_LEVEL||"info",pretty:!1});e.s(["log",0,t])},555230,e=>{"use strict";e.i(700598);var t=e.i(291109),a=e.i(704024),s=e.i(424166),n=e.i(740580),r=e.i(774078);e.s(["TaskPayloadBuilder",0,class{db;constructor(e){this.db=e}async buildFullPayloads(e,i){let o=e.filter(e=>e.type!==a.TASK_TYPES.KILL_TASK),l=[...new Set(o.map(e=>e.agentId))],[d,u,c]=l.length>0?await Promise.all([t.queries.agent.getAllAgentsForWorkspace(this.db,i),(0,r.cached)(r.cacheKeys.allEmailAccounts(i),600,()=>t.queries.emailAccount.getAllEmailAccountsForWorkspace(this.db,i)),t.queries.agentLink.getAllColleaguesForWorkspace(this.db,i).catch(()=>[])]).then(([e,t,a])=>{let s=new Set(l);return[e.filter(e=>s.has(e.id)),t.filter(e=>s.has(e.agentId)),a.filter(e=>s.has(e.agentId))]}):[[],[],[]],h=new Map(d.map(e=>[e.id,e])),p=new Map;for(let e of u){let t=p.get(e.agentId)??[];t.push(e.emailAddress),p.set(e.agentId,t)}let m=new Map;for(let e of c){let t=m.get(e.agentId)??[];t.push(e),m.set(e.agentId,t)}let w=[...new Set(o.map(e=>e.conversationId).filter(Boolean))],g=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,l=[];if(e){e.emailHandle&&l.push((0,s.toAlookAddress)(e.emailHandle));let t=p.get(e.id)??[];l.push(...t)}let d=e?.instructions??"";if(e?.ownerId){if(!I.has(e.ownerId)){let a=await (0,r.cached)(r.cacheKeys.member(i,e.ownerId),600,()=>t.queries.member.getMemberByUserAndWorkspace(this.db,e.ownerId,i));I.set(e.ownerId,a?{globalInstruction:a.globalInstruction}:null)}let a=I.get(e.ownerId);a?.globalInstruction&&(d=[a.globalInstruction,d].filter(Boolean).join("\n\n"))}let u=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)}u=k.get(e.ownerId)?.name??null}let c=g.get(o.conversationId)??null,w=c?.channel??"default",T=null;if(o.type===a.TASK_TYPES.USER_DM_MESSAGE&&c?.userId){if(!k.has(c.userId)){let e=await (0,r.cached)(r.cacheKeys.user(c.userId),1800,()=>t.queries.user.getUser(this.db,c.userId));k.set(c.userId,e?{name:e.name,email:e.email}:null)}let a=k.get(c.userId);a&&(T={name:a.name,email:a.email,is_owner:c.userId===e?.ownerId})}let y=(m.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:d,name:e.name,runtime_config:e.runtimeConfig||{},email_handle:e.emailHandle||null,email_addresses:l,user_email:null,user_name:u,colleagues:y}:null})}return f}}])},205054,e=>{"use strict";e.i(700598);var t=e.i(291109),a=e.i(704024),s=e.i(511456),n=e.i(726089),r=e.i(740580),i=e.i(774078),o=e.i(555230);let l=t.queries.task,d=t.queries.agent,u=t.queries.message,c=t.queries.conversation,h=t.queries.issue,p=t.queries.inbox;e.s(["TaskService",0,class{db;constructor(e){this.db=e}async enqueueTask(e,t,s,n,r=a.TASK_TYPES.USER_DM_MESSAGE,o){let u=await d.getAgent(this.db,e,s);if(!u)throw Error("agent not found");if(!u.runtimeId)throw Error("agent has no runtime");if(o?.traceId&&o.parentTaskId&&await l.countTasksByTrace(this.db,o.traceId)>=a.MAX_TASKS_PER_TRACE)throw Error(`Trace limit reached (${a.MAX_TASKS_PER_TRACE} tasks). This may indicate an infinite loop between agents.`);let c=await l.createTask(this.db,{agentId:e,runtimeId:u.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(c,s).catch(()=>{}),c}async claimTask(e,t){let a=await d.getAgent(this.db,e,t);return this.claimTaskWithAgent(e,t,a)}async claimTaskWithAgent(e,t,a){if(!a)return null;if(await l.countRunningTasks(this.db,e,t)>=a.maxConcurrentTasks){let s=await l.findSteerableReplacement(this.db,e,t);if(!s||await l.countRunningTasks(this.db,e,t,s.predecessorId)>=a.maxConcurrentTasks)return null}let s=await l.claimTask(this.db,e,t);return s?(await d.updateAgentStatus(this.db,e,t,"working"),s):null}async claimTasksForRuntimes(e,t,a){let s=await l.claimKillTasks(this.db,e,a,t),n=t-s.length,r=n>0?await l.listPendingTasksByRuntimes(this.db,e,a):[],i=new Set(e),o=new Set,u=[...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))}if(0===c.length)return u;let h=[...new Set(c.map(e=>e.agentId))],p=new Map((await d.getAgentsByIds(this.db,h,a)).map(e=>[e.id,e]));for(let e of(await Promise.all(c.map(e=>this.claimTaskWithAgent(e.agentId,e.workspaceId,p.get(e.agentId)??null)))))e&&i.has(e.runtimeId)&&u.push(e);return u}async startTask(e,t){let a=await l.startTask(this.db,e,t);if(!a)throw Error("task not in dispatched status");return a}async completeTask(e,t,a,n){let r;try{r=JSON.parse(a)}catch{r={raw:a}}let i=await l.completeTask(this.db,e,t,{result:r,sessionId:n||null});if(!i){let t=await l.getTask(this.db,e),a=t?.status??"unknown";throw s.log.warn(`completeTask failed: task is in '${a}' status`,{taskId:e}),Error(`cannot complete task in '${a}' status`)}return await this.reconcileAgentStatus(i.agentId,i.workspaceId),this.maybeUpsertUnread(i,t,null).catch(()=>{}),i}async failTask(e,i,o){let d=await l.failTask(this.db,e,i,o);if(!d){let t=await l.getTask(this.db,e),a=t?.status??"unknown";throw s.log.warn(`failTask failed: task is in '${a}' status`,{taskId:e}),Error(`cannot fail task in '${a}' status`)}if(d.type===a.TASK_TYPES.KILL_TASK)return d;let h=null;if(o){let a=null;try{if(d.runtimeId){let e=await t.queries.runtime.getAgentRuntime(this.db,d.runtimeId);a=e?.provider??null}}catch{}let s=await u.createMessage(this.db,{conversationId:d.conversationId,role:"assistant",content:o,taskId:e,metadata:JSON.stringify({error_source:"runtime",provider:a})});h=s?.id??null;try{let e=await c.getConversation(this.db,d.conversationId,i);e&&(0,n.broadcastToUser)(e.userId,{type:"conversation.message",conversationId:d.conversationId,message:(0,r.messageToResponse)(s)}).catch(()=>{})}catch{}}return await this.reconcileAgentStatus(d.agentId,d.workspaceId),await this.syncIssueStatusFromTask(d,"failed"),this.maybeUpsertUnread(d,i,h).catch(()=>{}),d}async syncIssueStatusFromTask(e,t){if(e.type!==a.TASK_TYPES.ISSUE_EVENT)return;let s=await h.getIssueByConversation(this.db,e.conversationId,e.workspaceId);if(!s||s.status===t||!await h.updateIssue(this.db,s.id,e.workspaceId,{status:t}))return;let i=await u.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 c.getConversation(this.db,e.conversationId,e.workspaceId);t&&(0,n.broadcastToUser)(t.userId,{type:"conversation.message",conversationId:e.conversationId,message:(0,r.messageToResponse)(i)}).catch(()=>{})}catch{}}async maybeUpsertUnread(e,t,a){if(!p.isUnreadEligible(e)||!e.completedAt)return;let s=await c.getConversation(this.db,e.conversationId,t);if(!s)return;let n=a??await p.findLatestAssistantMessageId(this.db,e.conversationId);await p.upsertUnreadEntry(this.db,{conversationId:e.conversationId,userId:s.userId,workspaceId:t,agentId:s.agentId,taskId:e.id,taskType:e.type,taskStatus:e.status,taskPrompt:e.prompt,completedAt:e.completedAt,latestMessageId:n})}async supersedeTask(e,t){let a=await l.supersedeTask(this.db,e,t);if(!a){let t=await l.getTask(this.db,e),a=t?.status??"unknown";throw s.log.warn(`supersedeTask failed: task is in '${a}' status`,{taskId:e}),Error(`cannot supersede task in '${a}' status`)}return await this.reconcileAgentStatus(a.agentId,a.workspaceId),a}async retryTask(e,t){let a=await l.getTask(this.db,e);if(!a||a.workspaceId!==t)throw Error("task not found");if("failed"!==a.status)throw Error("only failed tasks can be retried");let s=await l.markFailedAsSuperseded(this.db,e,t);if(!s)throw Error("failed to mark task as superseded");return{oldTask:s,newTask:await this.enqueueTask(a.agentId,a.conversationId,t,a.prompt,a.type,{contextKey:a.contextKey??null,context:a.context,traceId:a.traceId??null,parentTaskId:a.parentTaskId??null})}}async cancelActiveTask(e,r,i){let o=await l.getActiveTaskByConversation(this.db,e,r);if(!o)return null;let d=await l.cancelTask(this.db,o.id,r);if(!d)return null;if("dispatched"===o.status||"running"===o.status){let i=await l.createTask(this.db,{agentId:o.agentId,runtimeId:o.runtimeId,workspaceId:r,conversationId:e,prompt:"",type:a.TASK_TYPES.KILL_TASK,context:{target_task_id:o.id}});await l.dispatchTaskById(this.db,i.id,r);let d=await t.queries.runtime.getAgentRuntime(this.db,o.runtimeId);d&&(0,n.broadcastToDaemon)(d.daemonId,{type:"daemon.kill",workspaceId:r,agentId:o.agentId,taskId:i.id,targetTaskId:o.id}).catch(e=>s.log.warn("daemon.kill broadcast failed, relying on poll fallback",e))}return await u.createMessage(this.db,{conversationId:e,role:"assistant",content:i?.reason??"Task cancelled by you",taskId:o.id,metadata:JSON.stringify({kind:"lifecycle"})}),await this.reconcileAgentStatus(o.agentId,r),d}async reconcileAgentStatus(e,t){let a=await l.countRunningTasks(this.db,e,t);await d.updateAgentStatus(this.db,e,t,a>0?"working":"idle"),(0,i.invalidate)(i.cacheKeys.activeTaskCounts(t)).catch(()=>{})}async cancelTrace(e,t,a){for(let n of[...new Set((await l.getTraceTree(this.db,e,t)).filter(e=>["queued","dispatched","running"].includes(e.status)).map(e=>e.conversationId))])try{await this.cancelActiveTask(n,t,{reason:a?.reason})}catch(t){s.log.warn("cancelTrace: failed to cancel task",{traceId:e,convId:n,err:t})}}async pushTaskToDaemon(e,a){let s=await t.queries.runtime.getAgentRuntime(this.db,e.runtimeId);if(!s)return;let r=await l.dispatchTaskById(this.db,e.id,a);if(!r)return;let i=new o.TaskPayloadBuilder(this.db),d=await i.buildFullPayloads([r],a);if(0===d.length)return void await l.revertDispatchedToQueued(this.db,e.id,a);try{let{sent:t}=await (0,n.broadcastToDaemon)(s.daemonId,{type:"daemon.tasks",tasks:d});0===t&&await l.revertDispatchedToQueued(this.db,e.id,a)}catch{await l.revertDispatchedToQueued(this.db,e.id,a)}}}])},914022,e=>e.a(async(t,a)=>{try{var s=e.i(931720);e.i(700598);var n=e.i(888247),r=e.i(704024),i=e.i(291109),o=e.i(675139),l=e.i(152327),d=e.i(47962),u=e.i(776227),c=e.i(726089),h=e.i(205054),p=e.i(774078),m=t([l]);[l]=m.then?(await m)():m;let w=(0,l.withAuth)(async(e,t)=>{let a=await (0,d.withWorkspaceMember)(e,t);if(a instanceof Response)return a;let{env:n}=(0,s.getCloudflareContext)(),r=(0,o.getDb)(n.DB),l=t.params?.id;if(!l)return(0,u.writeError)("issue id is required",400);if(!await i.queries.issue.getIssue(r,l,a.workspaceId,t.userId))return(0,u.writeError)("issue not found",404);let c=await i.queries.issueComment.listComments(r,l,a.workspaceId);return(0,u.writeJSON)({comments:c.map(i.queries.issueComment.commentToResponse)})}),g=(0,l.withAuth)(async(e,t)=>{let a=await (0,d.withWorkspaceMember)(e,t);if(a instanceof Response)return a;let{env:l}=(0,s.getCloudflareContext)(),m=(0,o.getDb)(l.DB),w=t.params?.id;if(!w)return(0,u.writeError)("issue id is required",400);let g=await i.queries.issue.getIssue(m,w,a.workspaceId,t.userId);if(!g)return(0,u.writeError)("issue not found",404);let I=e.nextUrl.searchParams.get("agentId");if(I&&g.agentId!==I)return(0,u.writeError)("issue does not belong to agent",403);let[k,f]=await (0,u.parseBody)(e,n.CreateIssueCommentBodySchema);if(f)return f;let T=I?"agent":"user",y=I??t.userId,b=await i.queries.issueComment.createComment(m,{issueId:w,workspaceId:a.workspaceId,authorType:T,authorId:y,content:k.content});await i.queries.issue.updateIssue(m,w,a.workspaceId,{});let v=i.queries.issueComment.commentToResponse(b);if((0,c.broadcastToUser)(g.creatorUserId,{type:"issue.comment",issueId:w,comment:v}).catch(()=>{}),"user"===T&&!(0,r.isTerminalIssueStatus)(g.status)&&g.agentId&&g.conversationId&&!await i.queries.task.getActiveTaskByConversation(m,g.conversationId,a.workspaceId)){let e=new h.TaskService(m),t=`${g.title}
2
2
 
3
- User feedback: "${k.content}"`;try{let s=g.latestTaskId?(await i.queries.task.getTask(m,g.latestTaskId,a.workspaceId))?.traceId??null:null,n=await e.enqueueTask(g.agentId,g.conversationId,a.workspaceId,t,r.TASK_TYPES.ISSUE_EVENT,{contextKey:g.conversationId,context:{issue_id:g.id},traceId:s,parentTaskId:null});await i.queries.issue.setLatestTask(m,w,a.workspaceId,n.id);let o=new Date().toISOString().slice(0,10);(0,p.invalidate)(p.cacheKeys.overviewTaskStats(a.workspaceId,o)).catch(()=>{})}catch{}}return(0,u.writeJSON)({comment:v},201)});e.s(["GET",0,w,"POST",0,g]),a()}catch(e){a(e)}},!1),260200,e=>e.a(async(t,a)=>{try{var s=e.i(618117),n=e.i(99200),r=e.i(864055),i=e.i(289578),o=e.i(641783),l=e.i(467635),d=e.i(541774),u=e.i(393982),c=e.i(325959),h=e.i(474834),p=e.i(800989),m=e.i(489409),w=e.i(203050),g=e.i(851100),I=e.i(55434),k=e.i(193695);e.i(163438);var f=e.i(118649),T=e.i(914022),y=t([T]);[T]=y.then?(await y)():y;let v=new s.AppRouteRouteModule({definition:{kind:n.RouteKind.APP_ROUTE,page:"/api/issues/[id]/comments/route",pathname:"/api/issues/[id]/comments",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/web/src/app/api/issues/[id]/comments/route.ts",nextConfigOutput:"standalone",userland:T,...{}}),{workAsyncStorage:_,workUnitAsyncStorage:S,serverHooks:A}=v;async function b(e,t,a){a.requestMeta&&(0,i.setRequestMeta)(e,a.requestMeta),v.isDev&&(0,i.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let s="/api/issues/[id]/comments/route";s=s.replace(/\/index$/,"")||"/";let r=await v.prepare(e,t,{srcPage:s,multiZoneDraftMode:!1});if(!r)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:T,deploymentId:y,params:b,nextConfig:_,parsedUrl:S,isDraftMode:A,prerenderManifest:E,routerServerContext:R,isOnDemandRevalidate:C,revalidateOnlyGenerated:x,resolvedPathname:P,clientReferenceManifest:q,serverActionsManifest:K}=r,U=(0,d.normalizeAppPath)(s),O=!!(E.dynamicRoutes[U]||E.routes[P]),M=async()=>((null==R?void 0:R.render404)?await R.render404(e,t,S,!1):t.end("This page could not be found"),null);if(O&&!A){let e=!!E.routes[P],t=E.dynamicRoutes[U];if(t&&!1===t.fallback&&!e){if(_.adapterPath)return await M();throw new k.NoFallbackError}}let N=null;!O||v.isDev||A||(N=P,N="/index"===N?"/":N);let D=!0===v.isDev||!O,$=O&&!D;K&&q&&(0,l.setManifestsSingleton)({page:s,clientReferenceManifest:q,serverActionsManifest:K});let B=e.method||"GET",L=(0,o.getTracer)(),H=L.getActiveScopeSpan(),j=!!(null==R?void 0:R.isWrappedByNextServer),F=!!(0,i.getRequestMeta)(e,"minimalMode"),W=(0,i.getRequestMeta)(e,"incrementalCache")||await v.getIncrementalCache(e,_,E,F);null==W||W.resetRequestCache(),globalThis.__incrementalCache=W;let J={params:b,previewProps:E.preview,renderOpts:{experimental:{authInterrupts:!!_.experimental.authInterrupts},cacheComponents:!!_.cacheComponents,supportsDynamicResponse:D,incrementalCache:W,cacheLifeProfiles:_.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,s,n)=>v.onRequestError(e,t,s,n,R)},sharedContext:{buildId:T,deploymentId:y}},V=new u.NodeNextRequest(e),Y=new u.NodeNextResponse(t),G=c.NextRequestAdapter.fromNodeNextRequest(V,(0,c.signalFromNodeResponse)(t));try{let r,i=async e=>v.handle(G,J).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 n=a.get("next.route");if(n){let t=`${B} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t),r&&r!==e&&(r.setAttribute("http.route",n),r.updateName(t))}else e.updateName(`${B} ${s}`)}),l=async r=>{var o,l;let d=async({previousCacheEntry:n})=>{try{if(!F&&C&&x&&!n)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await i(r);e.fetchMetrics=J.renderOpts.fetchMetrics;let o=J.renderOpts.pendingWaitUntil;o&&a.waitUntil&&(a.waitUntil(o),o=void 0);let l=J.renderOpts.collectedTags;if(!O)return await (0,m.sendResponse)(V,Y,s,J.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,w.toNodeOutgoingHttpHeaders)(s.headers);l&&(t[I.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==J.renderOpts.collectedRevalidate&&!(J.renderOpts.collectedRevalidate>=I.INFINITE_CACHE)&&J.renderOpts.collectedRevalidate,n=void 0===J.renderOpts.collectedExpire||J.renderOpts.collectedExpire>=I.INFINITE_CACHE?void 0:J.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 v.onRequestError(e,t,{routerKind:"App Router",routePath:s,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:$,isOnDemandRevalidate:C})},!1,R),t}},u=await v.handleResponse({req:e,nextConfig:_,cacheKey:N,routeKind:n.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:E,isRoutePPREnabled:!1,isOnDemandRevalidate:C,revalidateOnlyGenerated:x,responseGenerator:d,waitUntil:a.waitUntil,isMinimalMode:F});if(!O)return null;if((null==u||null==(o=u.value)?void 0:o.kind)!==f.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(l=u.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});F||t.setHeader("x-nextjs-cache",C?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),A&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let c=(0,w.fromNodeOutgoingHttpHeaders)(u.value.headers);return F&&O||c.delete(I.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||c.get("Cache-Control")||c.set("Cache-Control",(0,g.getCacheControlHeader)(u.cacheControl)),await (0,m.sendResponse)(V,Y,new Response(u.value.body,{headers:c,status:u.value.status||200})),null};j&&H?await l(H):(r=L.getActiveScopeSpan(),await L.withPropagatedContext(e.headers,()=>L.trace(h.BaseServerSpan.handleRequest,{spanName:`${B} ${s}`,kind:o.SpanKind.SERVER,attributes:{"http.method":B,"http.target":e.url}},l),void 0,!j))}catch(t){if(t instanceof k.NoFallbackError||await v.onRequestError(e,t,{routerKind:"App Router",routePath:U,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:$,isOnDemandRevalidate:C})},!1,R),O)throw t;return await (0,m.sendResponse)(V,Y,new Response(null,{status:500})),null}}e.s(["handler",0,b,"patchFetch",0,function(){return(0,r.patchFetch)({workAsyncStorage:_,workUnitAsyncStorage:S})},"routeModule",0,v,"serverHooks",0,A,"workAsyncStorage",0,_,"workUnitAsyncStorage",0,S]),a()}catch(e){a(e)}},!1),649967,e=>{e.v(t=>Promise.all(["server/chunks/1cud_@better-auth_memory-adapter_dist_index_mjs_1npfl-v._.js"].map(t=>e.l(t))).then(()=>t(433404)))},706346,e=>{e.v(t=>Promise.all(["server/chunks/12-__better-auth_dist_adapters_kysely-adapter_index_mjs_08059b7._.js"].map(t=>e.l(t))).then(()=>t(943972)))},305762,e=>{e.v(t=>Promise.all(["server/chunks/101m_@better-auth_kysely-adapter_dist_0wrnuhp._.js"].map(t=>e.l(t))).then(()=>t(784506)))},401635,e=>{e.v(t=>Promise.all(["server/chunks/101m_@better-auth_kysely-adapter_dist_1cghpz3._.js"].map(t=>e.l(t))).then(()=>t(333340)))},451312,e=>{e.v(t=>Promise.all(["server/chunks/101m_@better-auth_kysely-adapter_dist_0i747v8._.js"].map(t=>e.l(t))).then(()=>t(178617)))}];
3
+ User feedback: "${k.content}"`;try{let s=g.latestTaskId?(await i.queries.task.getTask(m,g.latestTaskId,a.workspaceId))?.traceId??null:null,n=await e.enqueueTask(g.agentId,g.conversationId,a.workspaceId,t,r.TASK_TYPES.ISSUE_EVENT,{contextKey:g.conversationId,context:{issue_id:g.id},traceId:s,parentTaskId:null});await i.queries.issue.setLatestTask(m,w,a.workspaceId,n.id);let o=new Date().toISOString().slice(0,10);(0,p.invalidate)(p.cacheKeys.overviewTaskStats(a.workspaceId,o)).catch(()=>{})}catch{}}return(0,u.writeJSON)({comment:v},201)});e.s(["GET",0,w,"POST",0,g]),a()}catch(e){a(e)}},!1),260200,e=>e.a(async(t,a)=>{try{var s=e.i(618117),n=e.i(99200),r=e.i(864055),i=e.i(289578),o=e.i(641783),l=e.i(467635),d=e.i(541774),u=e.i(393982),c=e.i(325959),h=e.i(474834),p=e.i(800989),m=e.i(489409),w=e.i(203050),g=e.i(851100),I=e.i(55434),k=e.i(193695);e.i(163438);var f=e.i(118649),T=e.i(914022),y=t([T]);[T]=y.then?(await y)():y;let v=new s.AppRouteRouteModule({definition:{kind:n.RouteKind.APP_ROUTE,page:"/api/issues/[id]/comments/route",pathname:"/api/issues/[id]/comments",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/web/src/app/api/issues/[id]/comments/route.ts",nextConfigOutput:"standalone",userland:T,...{}}),{workAsyncStorage:_,workUnitAsyncStorage:S,serverHooks:A}=v;async function b(e,t,a){a.requestMeta&&(0,i.setRequestMeta)(e,a.requestMeta),v.isDev&&(0,i.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let s="/api/issues/[id]/comments/route";s=s.replace(/\/index$/,"")||"/";let r=await v.prepare(e,t,{srcPage:s,multiZoneDraftMode:!1});if(!r)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:T,deploymentId:y,params:b,nextConfig:_,parsedUrl:S,isDraftMode:A,prerenderManifest:E,routerServerContext:R,isOnDemandRevalidate:C,revalidateOnlyGenerated:x,resolvedPathname:P,clientReferenceManifest:q,serverActionsManifest:U}=r,K=(0,d.normalizeAppPath)(s),O=!!(E.dynamicRoutes[K]||E.routes[P]),M=async()=>((null==R?void 0:R.render404)?await R.render404(e,t,S,!1):t.end("This page could not be found"),null);if(O&&!A){let e=!!E.routes[P],t=E.dynamicRoutes[K];if(t&&!1===t.fallback&&!e){if(_.adapterPath)return await M();throw new k.NoFallbackError}}let N=null;!O||v.isDev||A||(N=P,N="/index"===N?"/":N);let D=!0===v.isDev||!O,$=O&&!D;U&&q&&(0,l.setManifestsSingleton)({page:s,clientReferenceManifest:q,serverActionsManifest:U});let B=e.method||"GET",L=(0,o.getTracer)(),H=L.getActiveScopeSpan(),j=!!(null==R?void 0:R.isWrappedByNextServer),F=!!(0,i.getRequestMeta)(e,"minimalMode"),W=(0,i.getRequestMeta)(e,"incrementalCache")||await v.getIncrementalCache(e,_,E,F);null==W||W.resetRequestCache(),globalThis.__incrementalCache=W;let J={params:b,previewProps:E.preview,renderOpts:{experimental:{authInterrupts:!!_.experimental.authInterrupts},cacheComponents:!!_.cacheComponents,supportsDynamicResponse:D,incrementalCache:W,cacheLifeProfiles:_.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,s,n)=>v.onRequestError(e,t,s,n,R)},sharedContext:{buildId:T,deploymentId:y}},V=new u.NodeNextRequest(e),Y=new u.NodeNextResponse(t),G=c.NextRequestAdapter.fromNodeNextRequest(V,(0,c.signalFromNodeResponse)(t));try{let r,i=async e=>v.handle(G,J).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 n=a.get("next.route");if(n){let t=`${B} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t),r&&r!==e&&(r.setAttribute("http.route",n),r.updateName(t))}else e.updateName(`${B} ${s}`)}),l=async r=>{var o,l;let d=async({previousCacheEntry:n})=>{try{if(!F&&C&&x&&!n)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await i(r);e.fetchMetrics=J.renderOpts.fetchMetrics;let o=J.renderOpts.pendingWaitUntil;o&&a.waitUntil&&(a.waitUntil(o),o=void 0);let l=J.renderOpts.collectedTags;if(!O)return await (0,m.sendResponse)(V,Y,s,J.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,w.toNodeOutgoingHttpHeaders)(s.headers);l&&(t[I.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==J.renderOpts.collectedRevalidate&&!(J.renderOpts.collectedRevalidate>=I.INFINITE_CACHE)&&J.renderOpts.collectedRevalidate,n=void 0===J.renderOpts.collectedExpire||J.renderOpts.collectedExpire>=I.INFINITE_CACHE?void 0:J.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 v.onRequestError(e,t,{routerKind:"App Router",routePath:s,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:$,isOnDemandRevalidate:C})},!1,R),t}},u=await v.handleResponse({req:e,nextConfig:_,cacheKey:N,routeKind:n.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:E,isRoutePPREnabled:!1,isOnDemandRevalidate:C,revalidateOnlyGenerated:x,responseGenerator:d,waitUntil:a.waitUntil,isMinimalMode:F});if(!O)return null;if((null==u||null==(o=u.value)?void 0:o.kind)!==f.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(l=u.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});F||t.setHeader("x-nextjs-cache",C?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),A&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let c=(0,w.fromNodeOutgoingHttpHeaders)(u.value.headers);return F&&O||c.delete(I.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||c.get("Cache-Control")||c.set("Cache-Control",(0,g.getCacheControlHeader)(u.cacheControl)),await (0,m.sendResponse)(V,Y,new Response(u.value.body,{headers:c,status:u.value.status||200})),null};j&&H?await l(H):(r=L.getActiveScopeSpan(),await L.withPropagatedContext(e.headers,()=>L.trace(h.BaseServerSpan.handleRequest,{spanName:`${B} ${s}`,kind:o.SpanKind.SERVER,attributes:{"http.method":B,"http.target":e.url}},l),void 0,!j))}catch(t){if(t instanceof k.NoFallbackError||await v.onRequestError(e,t,{routerKind:"App Router",routePath:K,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:$,isOnDemandRevalidate:C})},!1,R),O)throw t;return await (0,m.sendResponse)(V,Y,new Response(null,{status:500})),null}}e.s(["handler",0,b,"patchFetch",0,function(){return(0,r.patchFetch)({workAsyncStorage:_,workUnitAsyncStorage:S})},"routeModule",0,v,"serverHooks",0,A,"workAsyncStorage",0,_,"workUnitAsyncStorage",0,S]),a()}catch(e){a(e)}},!1),649967,e=>{e.v(t=>Promise.all(["server/chunks/1cud_@better-auth_memory-adapter_dist_index_mjs_1npfl-v._.js"].map(t=>e.l(t))).then(()=>t(433404)))},706346,e=>{e.v(t=>Promise.all(["server/chunks/12-__better-auth_dist_adapters_kysely-adapter_index_mjs_08059b7._.js"].map(t=>e.l(t))).then(()=>t(943972)))},305762,e=>{e.v(t=>Promise.all(["server/chunks/101m_@better-auth_kysely-adapter_dist_0wrnuhp._.js"].map(t=>e.l(t))).then(()=>t(784506)))},401635,e=>{e.v(t=>Promise.all(["server/chunks/101m_@better-auth_kysely-adapter_dist_1cghpz3._.js"].map(t=>e.l(t))).then(()=>t(333340)))},451312,e=>{e.v(t=>Promise.all(["server/chunks/101m_@better-auth_kysely-adapter_dist_0i747v8._.js"].map(t=>e.l(t))).then(()=>t(178617)))}];
4
4
 
5
5
  //# sourceMappingURL=_1iaevpj._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[482699,e=>e.a(async(t,a)=>{try{var r=e.i(931720);e.i(700598);var n=e.i(291109),i=e.i(888247),s=e.i(675139),o=e.i(152327),l=e.i(47962),d=e.i(776227),u=e.i(740580),c=e.i(774078),p=t([o]);[o]=p.then?(await p)():p;let h=(0,o.withAuth)(async(e,t)=>{let a=await (0,l.withWorkspaceMember)(e,t);if(a instanceof Response)return a;let{env:i}=(0,r.getCloudflareContext)(),o=(0,s.getDb)(i.DB),c=t.params?.id;if(!c)return(0,d.writeError)("agent id is required",400);let p=await n.queries.agent.getAgent(o,c,a.workspaceId,t.userId);return p?(0,d.writeJSON)((0,u.agentToResponse)(p)):(0,d.writeError)("agent not found",404)}),w=(0,o.withAuth)(async(e,t)=>{let a=await (0,l.withWorkspaceMember)(e,t);if(a instanceof Response)return a;let{env:o}=(0,r.getCloudflareContext)(),p=(0,s.getDb)(o.DB),h=t.params?.id;if(!h)return(0,d.writeError)("agent id is required",400);let[w,g]=await (0,d.parseBody)(e,i.UpdateAgentRequestSchema);if(g)return g;let v={};if(void 0!==w.name&&(v.name=w.name),void 0!==w.description&&(v.description=w.description),void 0!==w.instructions&&(v.instructions=w.instructions),void 0!==w.runtime_id){if(!await n.queries.runtime.getAgentRuntimeForWorkspace(p,w.runtime_id,a.workspaceId,t.userId))return(0,d.writeError)("runtime not found in workspace",400);v.runtimeId=w.runtime_id}if(void 0!==w.runtime_config){let e=w.runtime_config,t={};"string"==typeof e.model&&(t.model=e.model),v.runtimeConfig=t}void 0!==w.visibility&&(v.visibility=w.visibility),void 0!==w.avatar_url&&(v.avatarUrl=w.avatar_url);let m=await n.queries.agent.getAgent(p,h,a.workspaceId,t.userId);if(!m)return(0,d.writeError)("agent not found",404);if(m.ownerId!==t.userId)return(0,d.writeError)("agent owner access required",403);let f=await n.queries.agent.updateAgent(p,h,a.workspaceId,v,t.userId);return f?(await Promise.all([(0,c.invalidate)(c.cacheKeys.agent(a.workspaceId,h)),(0,c.invalidate)(c.cacheKeys.allAgents(a.workspaceId)),(0,c.invalidate)(c.cacheKeys.allHandles(a.workspaceId)),(0,c.invalidate)(c.cacheKeys.allAgentAccess(a.workspaceId)),(0,c.invalidate)(c.cacheKeys.allColleagues(a.workspaceId))]),(0,d.writeJSON)((0,u.agentToResponse)(f))):(0,d.writeError)("agent not found",404)}),g=(0,o.withAuth)(async(e,t)=>{let a=await (0,l.withWorkspaceMember)(e,t);if(a instanceof Response)return a;let{env:i}=(0,r.getCloudflareContext)(),o=(0,s.getDb)(i.DB),u=t.params?.id;if(!u)return(0,d.writeError)("agent id is required",400);let p=await n.queries.agent.getAgent(o,u,a.workspaceId,t.userId);return p?p.ownerId!==t.userId?(0,d.writeError)("agent owner access required",403):await n.queries.agent.deleteAgent(o,u,a.workspaceId,t.userId)?(await Promise.all([(0,c.invalidate)(c.cacheKeys.agent(a.workspaceId,u)),(0,c.invalidate)(c.cacheKeys.allAgents(a.workspaceId)),(0,c.invalidate)(c.cacheKeys.allHandles(a.workspaceId)),(0,c.invalidate)(c.cacheKeys.allAgentAccess(a.workspaceId)),(0,c.invalidate)(c.cacheKeys.allColleagues(a.workspaceId))]),new Response(null,{status:204})):(0,d.writeError)("agent not found",404):(0,d.writeError)("agent not found",404)});e.s(["DELETE",0,g,"GET",0,h,"PATCH",0,w]),a()}catch(e){a(e)}},!1),363488,e=>e.a(async(t,a)=>{try{var r=e.i(618117),n=e.i(99200),i=e.i(864055),s=e.i(289578),o=e.i(641783),l=e.i(467635),d=e.i(541774),u=e.i(393982),c=e.i(325959),p=e.i(474834),h=e.i(800989),w=e.i(489409),g=e.i(203050),v=e.i(851100),m=e.i(55434),f=e.i(193695);e.i(163438);var R=e.i(118649),_=e.i(482699),y=t([_]);[_]=y.then?(await y)():y;let A=new r.AppRouteRouteModule({definition:{kind:n.RouteKind.APP_ROUTE,page:"/api/agents/[id]/route",pathname:"/api/agents/[id]",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/web/src/app/api/agents/[id]/route.ts",nextConfigOutput:"standalone",userland:_,...{}}),{workAsyncStorage:C,workUnitAsyncStorage:k,serverHooks:I}=A;async function E(e,t,a){a.requestMeta&&(0,s.setRequestMeta)(e,a.requestMeta),A.isDev&&(0,s.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let r="/api/agents/[id]/route";r=r.replace(/\/index$/,"")||"/";let i=await A.prepare(e,t,{srcPage:r,multiZoneDraftMode:!1});if(!i)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:_,deploymentId:y,params:E,nextConfig:C,parsedUrl:k,isDraftMode:I,prerenderManifest:b,routerServerContext:x,isOnDemandRevalidate:P,revalidateOnlyGenerated:q,resolvedPathname:T,clientReferenceManifest:N,serverActionsManifest:S}=i,O=(0,d.normalizeAppPath)(r),D=!!(b.dynamicRoutes[O]||b.routes[T]),H=async()=>((null==x?void 0:x.render404)?await x.render404(e,t,k,!1):t.end("This page could not be found"),null);if(D&&!I){let e=!!b.routes[T],t=b.dynamicRoutes[O];if(t&&!1===t.fallback&&!e){if(C.adapterPath)return await H();throw new f.NoFallbackError}}let K=null;!D||A.isDev||I||(K=T,K="/index"===K?"/":K);let M=!0===A.isDev||!D,U=D&&!M;S&&N&&(0,l.setManifestsSingleton)({page:r,clientReferenceManifest:N,serverActionsManifest:S});let j=e.method||"GET",B=(0,o.getTracer)(),F=B.getActiveScopeSpan(),$=!!(null==x?void 0:x.isWrappedByNextServer),W=!!(0,s.getRequestMeta)(e,"minimalMode"),L=(0,s.getRequestMeta)(e,"incrementalCache")||await A.getIncrementalCache(e,C,b,W);null==L||L.resetRequestCache(),globalThis.__incrementalCache=L;let G={params:E,previewProps:b.preview,renderOpts:{experimental:{authInterrupts:!!C.experimental.authInterrupts},cacheComponents:!!C.cacheComponents,supportsDynamicResponse:M,incrementalCache:L,cacheLifeProfiles:C.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,r,n)=>A.onRequestError(e,t,r,n,x)},sharedContext:{buildId:_,deploymentId:y}},V=new u.NodeNextRequest(e),X=new u.NodeNextResponse(t),z=c.NextRequestAdapter.fromNodeNextRequest(V,(0,c.signalFromNodeResponse)(t));try{let i,s=async e=>A.handle(z,G).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=B.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==p.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=a.get("next.route");if(n){let t=`${j} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t),i&&i!==e&&(i.setAttribute("http.route",n),i.updateName(t))}else e.updateName(`${j} ${r}`)}),l=async i=>{var o,l;let d=async({previousCacheEntry:n})=>{try{if(!W&&P&&q&&!n)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let r=await s(i);e.fetchMetrics=G.renderOpts.fetchMetrics;let o=G.renderOpts.pendingWaitUntil;o&&a.waitUntil&&(a.waitUntil(o),o=void 0);let l=G.renderOpts.collectedTags;if(!D)return await (0,w.sendResponse)(V,X,r,G.renderOpts.pendingWaitUntil),null;{let e=await r.blob(),t=(0,g.toNodeOutgoingHttpHeaders)(r.headers);l&&(t[m.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==G.renderOpts.collectedRevalidate&&!(G.renderOpts.collectedRevalidate>=m.INFINITE_CACHE)&&G.renderOpts.collectedRevalidate,n=void 0===G.renderOpts.collectedExpire||G.renderOpts.collectedExpire>=m.INFINITE_CACHE?void 0:G.renderOpts.collectedExpire;return{value:{kind:R.CachedRouteKind.APP_ROUTE,status:r.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:n}}}}catch(t){throw(null==n?void 0:n.isStale)&&await A.onRequestError(e,t,{routerKind:"App Router",routePath:r,routeType:"route",revalidateReason:(0,h.getRevalidateReason)({isStaticGeneration:U,isOnDemandRevalidate:P})},!1,x),t}},u=await A.handleResponse({req:e,nextConfig:C,cacheKey:K,routeKind:n.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:b,isRoutePPREnabled:!1,isOnDemandRevalidate:P,revalidateOnlyGenerated:q,responseGenerator:d,waitUntil:a.waitUntil,isMinimalMode:W});if(!D)return null;if((null==u||null==(o=u.value)?void 0:o.kind)!==R.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(l=u.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});W||t.setHeader("x-nextjs-cache",P?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),I&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let c=(0,g.fromNodeOutgoingHttpHeaders)(u.value.headers);return W&&D||c.delete(m.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||c.get("Cache-Control")||c.set("Cache-Control",(0,v.getCacheControlHeader)(u.cacheControl)),await (0,w.sendResponse)(V,X,new Response(u.value.body,{headers:c,status:u.value.status||200})),null};$&&F?await l(F):(i=B.getActiveScopeSpan(),await B.withPropagatedContext(e.headers,()=>B.trace(p.BaseServerSpan.handleRequest,{spanName:`${j} ${r}`,kind:o.SpanKind.SERVER,attributes:{"http.method":j,"http.target":e.url}},l),void 0,!$))}catch(t){if(t instanceof f.NoFallbackError||await A.onRequestError(e,t,{routerKind:"App Router",routePath:O,routeType:"route",revalidateReason:(0,h.getRevalidateReason)({isStaticGeneration:U,isOnDemandRevalidate:P})},!1,x),D)throw t;return await (0,w.sendResponse)(V,X,new Response(null,{status:500})),null}}e.s(["handler",0,E,"patchFetch",0,function(){return(0,i.patchFetch)({workAsyncStorage:C,workUnitAsyncStorage:k})},"routeModule",0,A,"serverHooks",0,I,"workAsyncStorage",0,C,"workUnitAsyncStorage",0,k]),a()}catch(e){a(e)}},!1),649967,e=>{e.v(t=>Promise.all(["server/chunks/1cud_@better-auth_memory-adapter_dist_index_mjs_1npfl-v._.js"].map(t=>e.l(t))).then(()=>t(433404)))},706346,e=>{e.v(t=>Promise.all(["server/chunks/12-__better-auth_dist_adapters_kysely-adapter_index_mjs_08059b7._.js"].map(t=>e.l(t))).then(()=>t(943972)))},305762,e=>{e.v(t=>Promise.all(["server/chunks/101m_@better-auth_kysely-adapter_dist_0wrnuhp._.js"].map(t=>e.l(t))).then(()=>t(784506)))},401635,e=>{e.v(t=>Promise.all(["server/chunks/101m_@better-auth_kysely-adapter_dist_1cghpz3._.js"].map(t=>e.l(t))).then(()=>t(333340)))},451312,e=>{e.v(t=>Promise.all(["server/chunks/101m_@better-auth_kysely-adapter_dist_0i747v8._.js"].map(t=>e.l(t))).then(()=>t(178617)))}];
1
+ module.exports=[482699,e=>e.a(async(t,r)=>{try{var a=e.i(931720);e.i(700598);var n=e.i(291109),i=e.i(888247),s=e.i(675139),o=e.i(152327),l=e.i(47962),d=e.i(776227),u=e.i(740580),c=e.i(774078),p=t([o]);[o]=p.then?(await p)():p;let h=(0,o.withAuth)(async(e,t)=>{let r=await (0,l.withWorkspaceMember)(e,t);if(r instanceof Response)return r;let{env:i}=(0,a.getCloudflareContext)(),o=(0,s.getDb)(i.DB),c=t.params?.id;if(!c)return(0,d.writeError)("agent id is required",400);let p=await n.queries.agent.getAgent(o,c,r.workspaceId,t.userId);return p?(0,d.writeJSON)((0,u.agentToResponse)(p)):(0,d.writeError)("agent not found",404)}),w=(0,o.withAuth)(async(e,t)=>{let r=await (0,l.withWorkspaceMember)(e,t);if(r instanceof Response)return r;let{env:o}=(0,a.getCloudflareContext)(),p=(0,s.getDb)(o.DB),h=t.params?.id;if(!h)return(0,d.writeError)("agent id is required",400);let[w,g]=await (0,d.parseBody)(e,i.UpdateAgentRequestSchema);if(g)return g;let v={};if(void 0!==w.name&&(v.name=w.name),void 0!==w.description&&(v.description=w.description),void 0!==w.instructions&&(v.instructions=w.instructions),void 0!==w.runtime_id){if(!await n.queries.runtime.getAgentRuntimeForWorkspace(p,w.runtime_id,r.workspaceId,t.userId))return(0,d.writeError)("runtime not found in workspace",400);v.runtimeId=w.runtime_id}if(void 0!==w.runtime_config){let e=w.runtime_config,t={};"string"==typeof e.model&&(t.model=e.model),v.runtimeConfig=t}void 0!==w.visibility&&(v.visibility=w.visibility),void 0!==w.avatar_url&&(v.avatarUrl=w.avatar_url);let m=await n.queries.agent.getAgent(p,h,r.workspaceId,t.userId);if(!m)return(0,d.writeError)("agent not found",404);if(m.ownerId!==t.userId)return(0,d.writeError)("agent owner access required",403);let f=await n.queries.agent.updateAgent(p,h,r.workspaceId,v,t.userId);return f?(await Promise.all([(0,c.invalidate)(c.cacheKeys.agent(r.workspaceId,h)),(0,c.invalidate)(c.cacheKeys.allHandles(r.workspaceId)),(0,c.invalidate)(c.cacheKeys.allAgentAccess(r.workspaceId))]),(0,d.writeJSON)((0,u.agentToResponse)(f))):(0,d.writeError)("agent not found",404)}),g=(0,o.withAuth)(async(e,t)=>{let r=await (0,l.withWorkspaceMember)(e,t);if(r instanceof Response)return r;let{env:i}=(0,a.getCloudflareContext)(),o=(0,s.getDb)(i.DB),u=t.params?.id;if(!u)return(0,d.writeError)("agent id is required",400);let p=await n.queries.agent.getAgent(o,u,r.workspaceId,t.userId);return p?p.ownerId!==t.userId?(0,d.writeError)("agent owner access required",403):await n.queries.agent.deleteAgent(o,u,r.workspaceId,t.userId)?(await Promise.all([(0,c.invalidate)(c.cacheKeys.agent(r.workspaceId,u)),(0,c.invalidate)(c.cacheKeys.allHandles(r.workspaceId)),(0,c.invalidate)(c.cacheKeys.allAgentAccess(r.workspaceId))]),new Response(null,{status:204})):(0,d.writeError)("agent not found",404):(0,d.writeError)("agent not found",404)});e.s(["DELETE",0,g,"GET",0,h,"PATCH",0,w]),r()}catch(e){r(e)}},!1),363488,e=>e.a(async(t,r)=>{try{var a=e.i(618117),n=e.i(99200),i=e.i(864055),s=e.i(289578),o=e.i(641783),l=e.i(467635),d=e.i(541774),u=e.i(393982),c=e.i(325959),p=e.i(474834),h=e.i(800989),w=e.i(489409),g=e.i(203050),v=e.i(851100),m=e.i(55434),f=e.i(193695);e.i(163438);var R=e.i(118649),_=e.i(482699),E=t([_]);[_]=E.then?(await E)():E;let A=new a.AppRouteRouteModule({definition:{kind:n.RouteKind.APP_ROUTE,page:"/api/agents/[id]/route",pathname:"/api/agents/[id]",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/web/src/app/api/agents/[id]/route.ts",nextConfigOutput:"standalone",userland:_,...{}}),{workAsyncStorage:C,workUnitAsyncStorage:b,serverHooks:k}=A;async function y(e,t,r){r.requestMeta&&(0,s.setRequestMeta)(e,r.requestMeta),A.isDev&&(0,s.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let a="/api/agents/[id]/route";a=a.replace(/\/index$/,"")||"/";let i=await A.prepare(e,t,{srcPage:a,multiZoneDraftMode:!1});if(!i)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:_,deploymentId:E,params:y,nextConfig:C,parsedUrl:b,isDraftMode:k,prerenderManifest:I,routerServerContext:x,isOnDemandRevalidate:P,revalidateOnlyGenerated:q,resolvedPathname:T,clientReferenceManifest:N,serverActionsManifest:S}=i,O=(0,d.normalizeAppPath)(a),D=!!(I.dynamicRoutes[O]||I.routes[T]),H=async()=>((null==x?void 0:x.render404)?await x.render404(e,t,b,!1):t.end("This page could not be found"),null);if(D&&!k){let e=!!I.routes[T],t=I.dynamicRoutes[O];if(t&&!1===t.fallback&&!e){if(C.adapterPath)return await H();throw new f.NoFallbackError}}let M=null;!D||A.isDev||k||(M=T,M="/index"===M?"/":M);let U=!0===A.isDev||!D,j=D&&!U;S&&N&&(0,l.setManifestsSingleton)({page:a,clientReferenceManifest:N,serverActionsManifest:S});let K=e.method||"GET",B=(0,o.getTracer)(),F=B.getActiveScopeSpan(),$=!!(null==x?void 0:x.isWrappedByNextServer),W=!!(0,s.getRequestMeta)(e,"minimalMode"),L=(0,s.getRequestMeta)(e,"incrementalCache")||await A.getIncrementalCache(e,C,I,W);null==L||L.resetRequestCache(),globalThis.__incrementalCache=L;let G={params:y,previewProps:I.preview,renderOpts:{experimental:{authInterrupts:!!C.experimental.authInterrupts},cacheComponents:!!C.cacheComponents,supportsDynamicResponse:U,incrementalCache:L,cacheLifeProfiles:C.cacheLife,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,n)=>A.onRequestError(e,t,a,n,x)},sharedContext:{buildId:_,deploymentId:E}},V=new u.NodeNextRequest(e),X=new u.NodeNextResponse(t),z=c.NextRequestAdapter.fromNodeNextRequest(V,(0,c.signalFromNodeResponse)(t));try{let i,s=async e=>A.handle(z,G).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=B.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==p.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=r.get("next.route");if(n){let t=`${K} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t),i&&i!==e&&(i.setAttribute("http.route",n),i.updateName(t))}else e.updateName(`${K} ${a}`)}),l=async i=>{var o,l;let d=async({previousCacheEntry:n})=>{try{if(!W&&P&&q&&!n)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let a=await s(i);e.fetchMetrics=G.renderOpts.fetchMetrics;let o=G.renderOpts.pendingWaitUntil;o&&r.waitUntil&&(r.waitUntil(o),o=void 0);let l=G.renderOpts.collectedTags;if(!D)return await (0,w.sendResponse)(V,X,a,G.renderOpts.pendingWaitUntil),null;{let e=await a.blob(),t=(0,g.toNodeOutgoingHttpHeaders)(a.headers);l&&(t[m.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==G.renderOpts.collectedRevalidate&&!(G.renderOpts.collectedRevalidate>=m.INFINITE_CACHE)&&G.renderOpts.collectedRevalidate,n=void 0===G.renderOpts.collectedExpire||G.renderOpts.collectedExpire>=m.INFINITE_CACHE?void 0:G.renderOpts.collectedExpire;return{value:{kind:R.CachedRouteKind.APP_ROUTE,status:a.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:n}}}}catch(t){throw(null==n?void 0:n.isStale)&&await A.onRequestError(e,t,{routerKind:"App Router",routePath:a,routeType:"route",revalidateReason:(0,h.getRevalidateReason)({isStaticGeneration:j,isOnDemandRevalidate:P})},!1,x),t}},u=await A.handleResponse({req:e,nextConfig:C,cacheKey:M,routeKind:n.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:I,isRoutePPREnabled:!1,isOnDemandRevalidate:P,revalidateOnlyGenerated:q,responseGenerator:d,waitUntil:r.waitUntil,isMinimalMode:W});if(!D)return null;if((null==u||null==(o=u.value)?void 0:o.kind)!==R.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(l=u.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});W||t.setHeader("x-nextjs-cache",P?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),k&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let c=(0,g.fromNodeOutgoingHttpHeaders)(u.value.headers);return W&&D||c.delete(m.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||c.get("Cache-Control")||c.set("Cache-Control",(0,v.getCacheControlHeader)(u.cacheControl)),await (0,w.sendResponse)(V,X,new Response(u.value.body,{headers:c,status:u.value.status||200})),null};$&&F?await l(F):(i=B.getActiveScopeSpan(),await B.withPropagatedContext(e.headers,()=>B.trace(p.BaseServerSpan.handleRequest,{spanName:`${K} ${a}`,kind:o.SpanKind.SERVER,attributes:{"http.method":K,"http.target":e.url}},l),void 0,!$))}catch(t){if(t instanceof f.NoFallbackError||await A.onRequestError(e,t,{routerKind:"App Router",routePath:O,routeType:"route",revalidateReason:(0,h.getRevalidateReason)({isStaticGeneration:j,isOnDemandRevalidate:P})},!1,x),D)throw t;return await (0,w.sendResponse)(V,X,new Response(null,{status:500})),null}}e.s(["handler",0,y,"patchFetch",0,function(){return(0,i.patchFetch)({workAsyncStorage:C,workUnitAsyncStorage:b})},"routeModule",0,A,"serverHooks",0,k,"workAsyncStorage",0,C,"workUnitAsyncStorage",0,b]),r()}catch(e){r(e)}},!1),649967,e=>{e.v(t=>Promise.all(["server/chunks/1cud_@better-auth_memory-adapter_dist_index_mjs_1npfl-v._.js"].map(t=>e.l(t))).then(()=>t(433404)))},706346,e=>{e.v(t=>Promise.all(["server/chunks/12-__better-auth_dist_adapters_kysely-adapter_index_mjs_08059b7._.js"].map(t=>e.l(t))).then(()=>t(943972)))},305762,e=>{e.v(t=>Promise.all(["server/chunks/101m_@better-auth_kysely-adapter_dist_0wrnuhp._.js"].map(t=>e.l(t))).then(()=>t(784506)))},401635,e=>{e.v(t=>Promise.all(["server/chunks/101m_@better-auth_kysely-adapter_dist_1cghpz3._.js"].map(t=>e.l(t))).then(()=>t(333340)))},451312,e=>{e.v(t=>Promise.all(["server/chunks/101m_@better-auth_kysely-adapter_dist_0i747v8._.js"].map(t=>e.l(t))).then(()=>t(178617)))}];
2
2
 
3
3
  //# sourceMappingURL=_1kt_xdj._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[726089,e=>{"use strict";var t=e.i(931720);e.i(700598);var a=e.i(704024);let s=(0,e.i(726527).createLogger)({service:"broadcast"});async function n(e,n,i){let r;try{let{env:a}=(0,t.getCloudflareContext)();r=a.DEV_WS_DO_URL;let d=await a.WS_DO_WORKER.fetch(`http://internal${e}`,{method:"POST",body:n});if(d.ok)try{return{sent:(await d.json()).sent??0}}catch{return{sent:0}}s.warn("broadcast service-binding non-ok",{...i,status:d.status})}catch{}let d=r||a.DEV_WS_DO_URL,l=await fetch(`${d}${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:n});if(!l.ok)throw Error(`broadcast failed: ${l.status}`);try{return{sent:(await l.json()).sent??0}}catch{return{sent:0}}}e.s(["broadcastToDaemon",0,function(e,a){let s=n(`/broadcast/daemon/${e}`,JSON.stringify(a),{daemonId:e,type:a.type});try{let{ctx:e}=(0,t.getCloudflareContext)();e.waitUntil(s.catch(()=>{}))}catch{}return s},"broadcastToUser",0,function(e,a){return function(e,a,s){let i=n(e,a,s);try{let{ctx:e}=(0,t.getCloudflareContext)();e.waitUntil(i.catch(()=>{}))}catch{}return i.then(()=>{})}(`/broadcast/user/${e}`,JSON.stringify(a),{userId:e,type:a.type})}])},511456,e=>{"use strict";e.i(700598);let t=(0,e.i(726527).createLogger)({service:"web",level:process.env.ALOOK_LOG_LEVEL||"info",pretty:!1});e.s(["log",0,t])},555230,e=>{"use strict";e.i(700598);var t=e.i(291109),a=e.i(704024),s=e.i(424166),n=e.i(740580),i=e.i(774078);e.s(["TaskPayloadBuilder",0,class{db;constructor(e){this.db=e}async buildFullPayloads(e,r){let d=e.filter(e=>e.type!==a.TASK_TYPES.KILL_TASK),l=[...new Set(d.map(e=>e.agentId))],[o,c,u]=l.length>0?await Promise.all([(0,i.cached)(i.cacheKeys.allAgents(r),300,()=>t.queries.agent.getAllAgentsForWorkspace(this.db,r)),(0,i.cached)(i.cacheKeys.allEmailAccounts(r),600,()=>t.queries.emailAccount.getAllEmailAccountsForWorkspace(this.db,r)),(0,i.cached)(i.cacheKeys.allColleagues(r),600,()=>t.queries.agentLink.getAllColleaguesForWorkspace(this.db,r)).catch(()=>[])]).then(([e,t,a])=>{let s=new Set(l);return[e.filter(e=>s.has(e.id)),t.filter(e=>s.has(e.agentId)),a.filter(e=>s.has(e.agentId))]}):[[],[],[]],h=new Map(o.map(e=>[e.id,e])),g=new Map;for(let e of c){let t=g.get(e.agentId)??[];t.push(e.emailAddress),g.set(e.agentId,t)}let m=new Map;for(let e of u){let t=m.get(e.agentId)??[];t.push(e),m.set(e.agentId,t)}let w=[...new Set(d.map(e=>e.conversationId).filter(Boolean))],p=new Map((w.length>0?await t.queries.conversation.getConversationsByIds(this.db,w,r):[]).map(e=>[e.id,e])),I=new Map,k=new Map,T=[];for(let d of e){if(d.type===a.TASK_TYPES.KILL_TASK){T.push({...(0,n.taskToResponse)(d),agent:null,sender:null});continue}let e=h.get(d.agentId)??null,l=[];if(e){e.emailHandle&&l.push((0,s.toAlookAddress)(e.emailHandle));let t=g.get(e.id)??[];l.push(...t)}let o=e?.instructions??"";if(e?.ownerId){if(!I.has(e.ownerId)){let a=await (0,i.cached)(i.cacheKeys.member(r,e.ownerId),600,()=>t.queries.member.getMemberByUserAndWorkspace(this.db,e.ownerId,r));I.set(e.ownerId,a?{globalInstruction:a.globalInstruction}:null)}let a=I.get(e.ownerId);a?.globalInstruction&&(o=[a.globalInstruction,o].filter(Boolean).join("\n\n"))}let c=null;if(e?.ownerId){if(!k.has(e.ownerId)){let a=await (0,i.cached)(i.cacheKeys.user(e.ownerId),1800,()=>t.queries.user.getUser(this.db,e.ownerId));k.set(e.ownerId,a?{name:a.name,email:a.email}:null)}c=k.get(e.ownerId)?.name??null}let u=p.get(d.conversationId)??null,w=u?.channel??"default",y=null;if(d.type===a.TASK_TYPES.USER_DM_MESSAGE&&u?.userId){if(!k.has(u.userId)){let e=await (0,i.cached)(i.cacheKeys.user(u.userId),1800,()=>t.queries.user.getUser(this.db,u.userId));k.set(u.userId,e?{name:e.name,email:e.email}:null)}let a=k.get(u.userId);a&&(y={name:a.name,email:a.email,is_owner:u.userId===e?.ownerId})}let b=(m.get(d.agentId)??[]).map(e=>({name:e.name,email:e.emailHandle?(0,s.toAlookAddress)(e.emailHandle):"",description:e.description,instruction:e.instruction}));T.push({...(0,n.taskToResponse)(d),channel:w,sender:y,agent:e?{instructions:o,name:e.name,runtime_config:e.runtimeConfig||{},email_handle:e.emailHandle||null,email_addresses:l,user_email:null,user_name:c,colleagues:b}:null})}return T}}])},205054,e=>{"use strict";e.i(700598);var t=e.i(291109),a=e.i(704024),s=e.i(511456),n=e.i(726089),i=e.i(740580),r=e.i(774078),d=e.i(555230);let l=t.queries.task,o=t.queries.agent,c=t.queries.message,u=t.queries.conversation,h=t.queries.issue,g=t.queries.inbox;e.s(["TaskService",0,class{db;constructor(e){this.db=e}async enqueueTask(e,t,s,n,i=a.TASK_TYPES.USER_DM_MESSAGE,d){let c=await o.getAgent(this.db,e,s);if(!c)throw Error("agent not found");if(!c.runtimeId)throw Error("agent has no runtime");if(d?.traceId&&d.parentTaskId&&await l.countTasksByTrace(this.db,d.traceId)>=a.MAX_TASKS_PER_TRACE)throw Error(`Trace limit reached (${a.MAX_TASKS_PER_TRACE} tasks). This may indicate an infinite loop between agents.`);let u=await l.createTask(this.db,{agentId:e,runtimeId:c.runtimeId,workspaceId:s,conversationId:t,prompt:n,type:i,contextKey:d?.contextKey??null,priority:0,context:d?.context,traceId:d?.traceId??null,parentTaskId:d?.parentTaskId??null});return(0,r.invalidate)(r.cacheKeys.activeTaskCounts(s)).catch(()=>{}),await this.pushTaskToDaemon(u,s).catch(()=>{}),u}async claimTask(e,t){let a=await o.getAgent(this.db,e,t);return this.claimTaskWithAgent(e,t,a)}async claimTaskWithAgent(e,t,a){if(!a)return null;if(await l.countRunningTasks(this.db,e,t)>=a.maxConcurrentTasks){let s=await l.findSteerableReplacement(this.db,e,t);if(!s||await l.countRunningTasks(this.db,e,t,s.predecessorId)>=a.maxConcurrentTasks)return null}let s=await l.claimTask(this.db,e,t);return s?(await o.updateAgentStatus(this.db,e,t,"working"),s):null}async claimTasksForRuntimes(e,t,a){let s=await l.claimKillTasks(this.db,e,a,t),n=t-s.length,i=n>0?await l.listPendingTasksByRuntimes(this.db,e,a):[],r=new Set(e),d=new Set,c=[...s],u=[];for(let e of i){if(u.length>=n)break;let t=`${e.agentId}:${e.workspaceId}`;d.has(t)||(d.add(t),u.push(e))}if(0===u.length)return c;let h=[...new Set(u.map(e=>e.agentId))],g=new Map((await o.getAgentsByIds(this.db,h,a)).map(e=>[e.id,e]));for(let e of(await Promise.all(u.map(e=>this.claimTaskWithAgent(e.agentId,e.workspaceId,g.get(e.agentId)??null)))))e&&r.has(e.runtimeId)&&c.push(e);return c}async startTask(e,t){let a=await l.startTask(this.db,e,t);if(!a)throw Error("task not in dispatched status");return a}async completeTask(e,t,a,n){let i;try{i=JSON.parse(a)}catch{i={raw:a}}let r=await l.completeTask(this.db,e,t,{result:i,sessionId:n||null});if(!r){let t=await l.getTask(this.db,e),a=t?.status??"unknown";throw s.log.warn(`completeTask failed: task is in '${a}' status`,{taskId:e}),Error(`cannot complete task in '${a}' status`)}return await this.reconcileAgentStatus(r.agentId,r.workspaceId),this.maybeUpsertUnread(r,t,null).catch(()=>{}),r}async failTask(e,r,d){let o=await l.failTask(this.db,e,r,d);if(!o){let t=await l.getTask(this.db,e),a=t?.status??"unknown";throw s.log.warn(`failTask failed: task is in '${a}' status`,{taskId:e}),Error(`cannot fail task in '${a}' status`)}if(o.type===a.TASK_TYPES.KILL_TASK)return o;let h=null;if(d){let a=null;try{if(o.runtimeId){let e=await t.queries.runtime.getAgentRuntime(this.db,o.runtimeId);a=e?.provider??null}}catch{}let s=await c.createMessage(this.db,{conversationId:o.conversationId,role:"assistant",content:d,taskId:e,metadata:JSON.stringify({error_source:"runtime",provider:a})});h=s?.id??null;try{let e=await u.getConversation(this.db,o.conversationId,r);e&&(0,n.broadcastToUser)(e.userId,{type:"conversation.message",conversationId:o.conversationId,message:(0,i.messageToResponse)(s)}).catch(()=>{})}catch{}}return await this.reconcileAgentStatus(o.agentId,o.workspaceId),await this.syncIssueStatusFromTask(o,"failed"),this.maybeUpsertUnread(o,r,h).catch(()=>{}),o}async syncIssueStatusFromTask(e,t){if(e.type!==a.TASK_TYPES.ISSUE_EVENT)return;let s=await h.getIssueByConversation(this.db,e.conversationId,e.workspaceId);if(!s||s.status===t||!await h.updateIssue(this.db,s.id,e.workspaceId,{status:t}))return;let r=await c.createMessage(this.db,{conversationId:e.conversationId,role:"event",content:`Issue status changed: ${s.status} -> ${t}`,taskId:e.id,metadata:JSON.stringify({issueId:s.id})});try{let t=await u.getConversation(this.db,e.conversationId,e.workspaceId);t&&(0,n.broadcastToUser)(t.userId,{type:"conversation.message",conversationId:e.conversationId,message:(0,i.messageToResponse)(r)}).catch(()=>{})}catch{}}async maybeUpsertUnread(e,t,a){if(!g.isUnreadEligible(e)||!e.completedAt)return;let s=await u.getConversation(this.db,e.conversationId,t);if(!s)return;let n=a??await g.findLatestAssistantMessageId(this.db,e.conversationId);await g.upsertUnreadEntry(this.db,{conversationId:e.conversationId,userId:s.userId,workspaceId:t,agentId:s.agentId,taskId:e.id,taskType:e.type,taskStatus:e.status,taskPrompt:e.prompt,completedAt:e.completedAt,latestMessageId:n})}async supersedeTask(e,t){let a=await l.supersedeTask(this.db,e,t);if(!a){let t=await l.getTask(this.db,e),a=t?.status??"unknown";throw s.log.warn(`supersedeTask failed: task is in '${a}' status`,{taskId:e}),Error(`cannot supersede task in '${a}' status`)}return await this.reconcileAgentStatus(a.agentId,a.workspaceId),a}async retryTask(e,t){let a=await l.getTask(this.db,e);if(!a||a.workspaceId!==t)throw Error("task not found");if("failed"!==a.status)throw Error("only failed tasks can be retried");let s=await l.markFailedAsSuperseded(this.db,e,t);if(!s)throw Error("failed to mark task as superseded");return{oldTask:s,newTask:await this.enqueueTask(a.agentId,a.conversationId,t,a.prompt,a.type,{contextKey:a.contextKey??null,context:a.context,traceId:a.traceId??null,parentTaskId:a.parentTaskId??null})}}async cancelActiveTask(e,i,r){let d=await l.getActiveTaskByConversation(this.db,e,i);if(!d)return null;let o=await l.cancelTask(this.db,d.id,i);if(!o)return null;if("dispatched"===d.status||"running"===d.status){let r=await l.createTask(this.db,{agentId:d.agentId,runtimeId:d.runtimeId,workspaceId:i,conversationId:e,prompt:"",type:a.TASK_TYPES.KILL_TASK,context:{target_task_id:d.id}});await l.dispatchTaskById(this.db,r.id,i);let o=await t.queries.runtime.getAgentRuntime(this.db,d.runtimeId);o&&(0,n.broadcastToDaemon)(o.daemonId,{type:"daemon.kill",workspaceId:i,agentId:d.agentId,taskId:r.id,targetTaskId:d.id}).catch(e=>s.log.warn("daemon.kill broadcast failed, relying on poll fallback",e))}return await c.createMessage(this.db,{conversationId:e,role:"assistant",content:r?.reason??"Task cancelled by you",taskId:d.id,metadata:JSON.stringify({kind:"lifecycle"})}),await this.reconcileAgentStatus(d.agentId,i),o}async reconcileAgentStatus(e,t){let a=await l.countRunningTasks(this.db,e,t);await o.updateAgentStatus(this.db,e,t,a>0?"working":"idle"),(0,r.invalidate)(r.cacheKeys.activeTaskCounts(t)).catch(()=>{})}async cancelTrace(e,t,a){for(let n of[...new Set((await l.getTraceTree(this.db,e,t)).filter(e=>["queued","dispatched","running"].includes(e.status)).map(e=>e.conversationId))])try{await this.cancelActiveTask(n,t,{reason:a?.reason})}catch(t){s.log.warn("cancelTrace: failed to cancel task",{traceId:e,convId:n,err:t})}}async pushTaskToDaemon(e,a){let s=await t.queries.runtime.getAgentRuntime(this.db,e.runtimeId);if(!s)return;let i=await l.dispatchTaskById(this.db,e.id,a);if(!i)return;let r=new d.TaskPayloadBuilder(this.db),o=await r.buildFullPayloads([i],a);if(0===o.length)return void await l.revertDispatchedToQueued(this.db,e.id,a);try{let{sent:t}=await (0,n.broadcastToDaemon)(s.daemonId,{type:"daemon.tasks",tasks:o});0===t&&await l.revertDispatchedToQueued(this.db,e.id,a)}catch{await l.revertDispatchedToQueued(this.db,e.id,a)}}}])},649967,e=>{e.v(t=>Promise.all(["server/chunks/1cud_@better-auth_memory-adapter_dist_index_mjs_1npfl-v._.js"].map(t=>e.l(t))).then(()=>t(433404)))},706346,e=>{e.v(t=>Promise.all(["server/chunks/12-__better-auth_dist_adapters_kysely-adapter_index_mjs_08059b7._.js"].map(t=>e.l(t))).then(()=>t(943972)))},305762,e=>{e.v(t=>Promise.all(["server/chunks/101m_@better-auth_kysely-adapter_dist_0wrnuhp._.js"].map(t=>e.l(t))).then(()=>t(784506)))},401635,e=>{e.v(t=>Promise.all(["server/chunks/101m_@better-auth_kysely-adapter_dist_1cghpz3._.js"].map(t=>e.l(t))).then(()=>t(333340)))},451312,e=>{e.v(t=>Promise.all(["server/chunks/101m_@better-auth_kysely-adapter_dist_0i747v8._.js"].map(t=>e.l(t))).then(()=>t(178617)))}];
1
+ module.exports=[726089,e=>{"use strict";var t=e.i(931720);e.i(700598);var a=e.i(704024);let s=(0,e.i(726527).createLogger)({service:"broadcast"});async function n(e,n,i){let r;try{let{env:a}=(0,t.getCloudflareContext)();r=a.DEV_WS_DO_URL;let d=await a.WS_DO_WORKER.fetch(`http://internal${e}`,{method:"POST",body:n});if(d.ok)try{return{sent:(await d.json()).sent??0}}catch{return{sent:0}}s.warn("broadcast service-binding non-ok",{...i,status:d.status})}catch{}let d=r||a.DEV_WS_DO_URL,l=await fetch(`${d}${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:n});if(!l.ok)throw Error(`broadcast failed: ${l.status}`);try{return{sent:(await l.json()).sent??0}}catch{return{sent:0}}}e.s(["broadcastToDaemon",0,function(e,a){let s=n(`/broadcast/daemon/${e}`,JSON.stringify(a),{daemonId:e,type:a.type});try{let{ctx:e}=(0,t.getCloudflareContext)();e.waitUntil(s.catch(()=>{}))}catch{}return s},"broadcastToUser",0,function(e,a){return function(e,a,s){let i=n(e,a,s);try{let{ctx:e}=(0,t.getCloudflareContext)();e.waitUntil(i.catch(()=>{}))}catch{}return i.then(()=>{})}(`/broadcast/user/${e}`,JSON.stringify(a),{userId:e,type:a.type})}])},511456,e=>{"use strict";e.i(700598);let t=(0,e.i(726527).createLogger)({service:"web",level:process.env.ALOOK_LOG_LEVEL||"info",pretty:!1});e.s(["log",0,t])},555230,e=>{"use strict";e.i(700598);var t=e.i(291109),a=e.i(704024),s=e.i(424166),n=e.i(740580),i=e.i(774078);e.s(["TaskPayloadBuilder",0,class{db;constructor(e){this.db=e}async buildFullPayloads(e,r){let d=e.filter(e=>e.type!==a.TASK_TYPES.KILL_TASK),l=[...new Set(d.map(e=>e.agentId))],[o,c,u]=l.length>0?await Promise.all([t.queries.agent.getAllAgentsForWorkspace(this.db,r),(0,i.cached)(i.cacheKeys.allEmailAccounts(r),600,()=>t.queries.emailAccount.getAllEmailAccountsForWorkspace(this.db,r)),t.queries.agentLink.getAllColleaguesForWorkspace(this.db,r).catch(()=>[])]).then(([e,t,a])=>{let s=new Set(l);return[e.filter(e=>s.has(e.id)),t.filter(e=>s.has(e.agentId)),a.filter(e=>s.has(e.agentId))]}):[[],[],[]],h=new Map(o.map(e=>[e.id,e])),m=new Map;for(let e of c){let t=m.get(e.agentId)??[];t.push(e.emailAddress),m.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(d.map(e=>e.conversationId).filter(Boolean))],p=new Map((w.length>0?await t.queries.conversation.getConversationsByIds(this.db,w,r):[]).map(e=>[e.id,e])),I=new Map,k=new Map,T=[];for(let d of e){if(d.type===a.TASK_TYPES.KILL_TASK){T.push({...(0,n.taskToResponse)(d),agent:null,sender:null});continue}let e=h.get(d.agentId)??null,l=[];if(e){e.emailHandle&&l.push((0,s.toAlookAddress)(e.emailHandle));let t=m.get(e.id)??[];l.push(...t)}let o=e?.instructions??"";if(e?.ownerId){if(!I.has(e.ownerId)){let a=await (0,i.cached)(i.cacheKeys.member(r,e.ownerId),600,()=>t.queries.member.getMemberByUserAndWorkspace(this.db,e.ownerId,r));I.set(e.ownerId,a?{globalInstruction:a.globalInstruction}:null)}let a=I.get(e.ownerId);a?.globalInstruction&&(o=[a.globalInstruction,o].filter(Boolean).join("\n\n"))}let c=null;if(e?.ownerId){if(!k.has(e.ownerId)){let a=await (0,i.cached)(i.cacheKeys.user(e.ownerId),1800,()=>t.queries.user.getUser(this.db,e.ownerId));k.set(e.ownerId,a?{name:a.name,email:a.email}:null)}c=k.get(e.ownerId)?.name??null}let u=p.get(d.conversationId)??null,w=u?.channel??"default",y=null;if(d.type===a.TASK_TYPES.USER_DM_MESSAGE&&u?.userId){if(!k.has(u.userId)){let e=await (0,i.cached)(i.cacheKeys.user(u.userId),1800,()=>t.queries.user.getUser(this.db,u.userId));k.set(u.userId,e?{name:e.name,email:e.email}:null)}let a=k.get(u.userId);a&&(y={name:a.name,email:a.email,is_owner:u.userId===e?.ownerId})}let b=(g.get(d.agentId)??[]).map(e=>({name:e.name,email:e.emailHandle?(0,s.toAlookAddress)(e.emailHandle):"",description:e.description,instruction:e.instruction}));T.push({...(0,n.taskToResponse)(d),channel:w,sender:y,agent:e?{instructions:o,name:e.name,runtime_config:e.runtimeConfig||{},email_handle:e.emailHandle||null,email_addresses:l,user_email:null,user_name:c,colleagues:b}:null})}return T}}])},205054,e=>{"use strict";e.i(700598);var t=e.i(291109),a=e.i(704024),s=e.i(511456),n=e.i(726089),i=e.i(740580),r=e.i(774078),d=e.i(555230);let l=t.queries.task,o=t.queries.agent,c=t.queries.message,u=t.queries.conversation,h=t.queries.issue,m=t.queries.inbox;e.s(["TaskService",0,class{db;constructor(e){this.db=e}async enqueueTask(e,t,s,n,i=a.TASK_TYPES.USER_DM_MESSAGE,d){let c=await o.getAgent(this.db,e,s);if(!c)throw Error("agent not found");if(!c.runtimeId)throw Error("agent has no runtime");if(d?.traceId&&d.parentTaskId&&await l.countTasksByTrace(this.db,d.traceId)>=a.MAX_TASKS_PER_TRACE)throw Error(`Trace limit reached (${a.MAX_TASKS_PER_TRACE} tasks). This may indicate an infinite loop between agents.`);let u=await l.createTask(this.db,{agentId:e,runtimeId:c.runtimeId,workspaceId:s,conversationId:t,prompt:n,type:i,contextKey:d?.contextKey??null,priority:0,context:d?.context,traceId:d?.traceId??null,parentTaskId:d?.parentTaskId??null});return(0,r.invalidate)(r.cacheKeys.activeTaskCounts(s)).catch(()=>{}),await this.pushTaskToDaemon(u,s).catch(()=>{}),u}async claimTask(e,t){let a=await o.getAgent(this.db,e,t);return this.claimTaskWithAgent(e,t,a)}async claimTaskWithAgent(e,t,a){if(!a)return null;if(await l.countRunningTasks(this.db,e,t)>=a.maxConcurrentTasks){let s=await l.findSteerableReplacement(this.db,e,t);if(!s||await l.countRunningTasks(this.db,e,t,s.predecessorId)>=a.maxConcurrentTasks)return null}let s=await l.claimTask(this.db,e,t);return s?(await o.updateAgentStatus(this.db,e,t,"working"),s):null}async claimTasksForRuntimes(e,t,a){let s=await l.claimKillTasks(this.db,e,a,t),n=t-s.length,i=n>0?await l.listPendingTasksByRuntimes(this.db,e,a):[],r=new Set(e),d=new Set,c=[...s],u=[];for(let e of i){if(u.length>=n)break;let t=`${e.agentId}:${e.workspaceId}`;d.has(t)||(d.add(t),u.push(e))}if(0===u.length)return c;let h=[...new Set(u.map(e=>e.agentId))],m=new Map((await o.getAgentsByIds(this.db,h,a)).map(e=>[e.id,e]));for(let e of(await Promise.all(u.map(e=>this.claimTaskWithAgent(e.agentId,e.workspaceId,m.get(e.agentId)??null)))))e&&r.has(e.runtimeId)&&c.push(e);return c}async startTask(e,t){let a=await l.startTask(this.db,e,t);if(!a)throw Error("task not in dispatched status");return a}async completeTask(e,t,a,n){let i;try{i=JSON.parse(a)}catch{i={raw:a}}let r=await l.completeTask(this.db,e,t,{result:i,sessionId:n||null});if(!r){let t=await l.getTask(this.db,e),a=t?.status??"unknown";throw s.log.warn(`completeTask failed: task is in '${a}' status`,{taskId:e}),Error(`cannot complete task in '${a}' status`)}return await this.reconcileAgentStatus(r.agentId,r.workspaceId),this.maybeUpsertUnread(r,t,null).catch(()=>{}),r}async failTask(e,r,d){let o=await l.failTask(this.db,e,r,d);if(!o){let t=await l.getTask(this.db,e),a=t?.status??"unknown";throw s.log.warn(`failTask failed: task is in '${a}' status`,{taskId:e}),Error(`cannot fail task in '${a}' status`)}if(o.type===a.TASK_TYPES.KILL_TASK)return o;let h=null;if(d){let a=null;try{if(o.runtimeId){let e=await t.queries.runtime.getAgentRuntime(this.db,o.runtimeId);a=e?.provider??null}}catch{}let s=await c.createMessage(this.db,{conversationId:o.conversationId,role:"assistant",content:d,taskId:e,metadata:JSON.stringify({error_source:"runtime",provider:a})});h=s?.id??null;try{let e=await u.getConversation(this.db,o.conversationId,r);e&&(0,n.broadcastToUser)(e.userId,{type:"conversation.message",conversationId:o.conversationId,message:(0,i.messageToResponse)(s)}).catch(()=>{})}catch{}}return await this.reconcileAgentStatus(o.agentId,o.workspaceId),await this.syncIssueStatusFromTask(o,"failed"),this.maybeUpsertUnread(o,r,h).catch(()=>{}),o}async syncIssueStatusFromTask(e,t){if(e.type!==a.TASK_TYPES.ISSUE_EVENT)return;let s=await h.getIssueByConversation(this.db,e.conversationId,e.workspaceId);if(!s||s.status===t||!await h.updateIssue(this.db,s.id,e.workspaceId,{status:t}))return;let r=await c.createMessage(this.db,{conversationId:e.conversationId,role:"event",content:`Issue status changed: ${s.status} -> ${t}`,taskId:e.id,metadata:JSON.stringify({issueId:s.id})});try{let t=await u.getConversation(this.db,e.conversationId,e.workspaceId);t&&(0,n.broadcastToUser)(t.userId,{type:"conversation.message",conversationId:e.conversationId,message:(0,i.messageToResponse)(r)}).catch(()=>{})}catch{}}async maybeUpsertUnread(e,t,a){if(!m.isUnreadEligible(e)||!e.completedAt)return;let s=await u.getConversation(this.db,e.conversationId,t);if(!s)return;let n=a??await m.findLatestAssistantMessageId(this.db,e.conversationId);await m.upsertUnreadEntry(this.db,{conversationId:e.conversationId,userId:s.userId,workspaceId:t,agentId:s.agentId,taskId:e.id,taskType:e.type,taskStatus:e.status,taskPrompt:e.prompt,completedAt:e.completedAt,latestMessageId:n})}async supersedeTask(e,t){let a=await l.supersedeTask(this.db,e,t);if(!a){let t=await l.getTask(this.db,e),a=t?.status??"unknown";throw s.log.warn(`supersedeTask failed: task is in '${a}' status`,{taskId:e}),Error(`cannot supersede task in '${a}' status`)}return await this.reconcileAgentStatus(a.agentId,a.workspaceId),a}async retryTask(e,t){let a=await l.getTask(this.db,e);if(!a||a.workspaceId!==t)throw Error("task not found");if("failed"!==a.status)throw Error("only failed tasks can be retried");let s=await l.markFailedAsSuperseded(this.db,e,t);if(!s)throw Error("failed to mark task as superseded");return{oldTask:s,newTask:await this.enqueueTask(a.agentId,a.conversationId,t,a.prompt,a.type,{contextKey:a.contextKey??null,context:a.context,traceId:a.traceId??null,parentTaskId:a.parentTaskId??null})}}async cancelActiveTask(e,i,r){let d=await l.getActiveTaskByConversation(this.db,e,i);if(!d)return null;let o=await l.cancelTask(this.db,d.id,i);if(!o)return null;if("dispatched"===d.status||"running"===d.status){let r=await l.createTask(this.db,{agentId:d.agentId,runtimeId:d.runtimeId,workspaceId:i,conversationId:e,prompt:"",type:a.TASK_TYPES.KILL_TASK,context:{target_task_id:d.id}});await l.dispatchTaskById(this.db,r.id,i);let o=await t.queries.runtime.getAgentRuntime(this.db,d.runtimeId);o&&(0,n.broadcastToDaemon)(o.daemonId,{type:"daemon.kill",workspaceId:i,agentId:d.agentId,taskId:r.id,targetTaskId:d.id}).catch(e=>s.log.warn("daemon.kill broadcast failed, relying on poll fallback",e))}return await c.createMessage(this.db,{conversationId:e,role:"assistant",content:r?.reason??"Task cancelled by you",taskId:d.id,metadata:JSON.stringify({kind:"lifecycle"})}),await this.reconcileAgentStatus(d.agentId,i),o}async reconcileAgentStatus(e,t){let a=await l.countRunningTasks(this.db,e,t);await o.updateAgentStatus(this.db,e,t,a>0?"working":"idle"),(0,r.invalidate)(r.cacheKeys.activeTaskCounts(t)).catch(()=>{})}async cancelTrace(e,t,a){for(let n of[...new Set((await l.getTraceTree(this.db,e,t)).filter(e=>["queued","dispatched","running"].includes(e.status)).map(e=>e.conversationId))])try{await this.cancelActiveTask(n,t,{reason:a?.reason})}catch(t){s.log.warn("cancelTrace: failed to cancel task",{traceId:e,convId:n,err:t})}}async pushTaskToDaemon(e,a){let s=await t.queries.runtime.getAgentRuntime(this.db,e.runtimeId);if(!s)return;let i=await l.dispatchTaskById(this.db,e.id,a);if(!i)return;let r=new d.TaskPayloadBuilder(this.db),o=await r.buildFullPayloads([i],a);if(0===o.length)return void await l.revertDispatchedToQueued(this.db,e.id,a);try{let{sent:t}=await (0,n.broadcastToDaemon)(s.daemonId,{type:"daemon.tasks",tasks:o});0===t&&await l.revertDispatchedToQueued(this.db,e.id,a)}catch{await l.revertDispatchedToQueued(this.db,e.id,a)}}}])},649967,e=>{e.v(t=>Promise.all(["server/chunks/1cud_@better-auth_memory-adapter_dist_index_mjs_1npfl-v._.js"].map(t=>e.l(t))).then(()=>t(433404)))},706346,e=>{e.v(t=>Promise.all(["server/chunks/12-__better-auth_dist_adapters_kysely-adapter_index_mjs_08059b7._.js"].map(t=>e.l(t))).then(()=>t(943972)))},305762,e=>{e.v(t=>Promise.all(["server/chunks/101m_@better-auth_kysely-adapter_dist_0wrnuhp._.js"].map(t=>e.l(t))).then(()=>t(784506)))},401635,e=>{e.v(t=>Promise.all(["server/chunks/101m_@better-auth_kysely-adapter_dist_1cghpz3._.js"].map(t=>e.l(t))).then(()=>t(333340)))},451312,e=>{e.v(t=>Promise.all(["server/chunks/101m_@better-auth_kysely-adapter_dist_0i747v8._.js"].map(t=>e.l(t))).then(()=>t(178617)))}];
2
2
 
3
3
  //# sourceMappingURL=_1njwvhs._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[511456,e=>{"use strict";e.i(700598);let t=(0,e.i(726527).createLogger)({service:"web",level:process.env.ALOOK_LOG_LEVEL||"info",pretty:!1});e.s(["log",0,t])},776227,e=>{"use strict";var t=e.i(406102);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 e.parentMessageId&&(a.parent_message_id=e.parentMessageId,a.thread_title=e.threadTitle??""),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,status:e.status,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){return{id:e.id,seq:e.seq,type:e.type,content:e.content,output:e.output}},"taskToActivityResponse",0,function(e){let a=e.prompt.length>120?e.prompt.slice(0,120):e.prompt;return{id:e.id,conversation_id:e.conversationId,type:e.type??n.TASK_TYPES.USER_DM_MESSAGE,status:e.status,prompt:a,created_at:(0,t.formatTimestamp)(e.createdAt),started_at:(0,t.formatTimestampNullable)(e.startedAt),completed_at:(0,t.formatTimestampNullable)(e.completedAt),error:e.error||null}},"taskToResponse",0,function(e){return a.TaskApiBaseSchema.parse({id:e.id,agent_id:e.agentId,runtime_id:e.runtimeId,conversation_id:e.conversationId,workspace_id:e.workspaceId,prompt:e.prompt,type:e.type??n.TASK_TYPES.USER_DM_MESSAGE,context_key:e.contextKey??null,context:e.context??null,status:e.status,priority:e.priority,dispatched_at:(0,t.formatTimestampNullable)(e.dispatchedAt),started_at:(0,t.formatTimestampNullable)(e.startedAt),completed_at:(0,t.formatTimestampNullable)(e.completedAt),result:e.result??null,error:e.error||null,created_at:(0,t.formatTimestamp)(e.createdAt),trace_id:e.traceId??null,parent_task_id:e.parentTaskId??null})},"userToResponse",0,function(e){return{id:e.id,name:e.name,email:e.email,avatar_url:e.avatarUrl??null,created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}},"workspaceToResponse",0,function(e){return{id:e.id,name:e.name,slug:e.slug,onboarded:!!e.onboarded,created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}}])},726089,e=>{"use strict";var t=e.i(931720);e.i(700598);var a=e.i(704024);let s=(0,e.i(726527).createLogger)({service:"broadcast"});async function n(e,n,r){let i;try{let{env:a}=(0,t.getCloudflareContext)();i=a.DEV_WS_DO_URL;let o=await a.WS_DO_WORKER.fetch(`http://internal${e}`,{method:"POST",body:n});if(o.ok)try{return{sent:(await o.json()).sent??0}}catch{return{sent:0}}s.warn("broadcast service-binding non-ok",{...r,status:o.status})}catch{}let o=i||a.DEV_WS_DO_URL,d=await fetch(`${o}${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:n});if(!d.ok)throw Error(`broadcast failed: ${d.status}`);try{return{sent:(await d.json()).sent??0}}catch{return{sent:0}}}e.s(["broadcastToDaemon",0,function(e,a){let s=n(`/broadcast/daemon/${e}`,JSON.stringify(a),{daemonId:e,type:a.type});try{let{ctx:e}=(0,t.getCloudflareContext)();e.waitUntil(s.catch(()=>{}))}catch{}return s},"broadcastToUser",0,function(e,a){return function(e,a,s){let r=n(e,a,s);try{let{ctx:e}=(0,t.getCloudflareContext)();e.waitUntil(r.catch(()=>{}))}catch{}return r.then(()=>{})}(`/broadcast/user/${e}`,JSON.stringify(a),{userId:e,type:a.type})}])},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 g=new Map;for(let e of u){let t=g.get(e.agentId)??[];t.push(e),g.set(e.agentId,t)}let h=[...new Set(o.map(e=>e.conversationId).filter(Boolean))],T=new Map((h.length>0?await t.queries.conversation.getConversationsByIds(this.db,h,i):[]).map(e=>[e.id,e])),f=new Map,I=new Map,_=[];for(let o of e){if(o.type===a.TASK_TYPES.KILL_TASK){_.push({...(0,n.taskToResponse)(o),agent:null,sender:null});continue}let e=m.get(o.agentId)??null,d=[];if(e){e.emailHandle&&d.push((0,s.toAlookAddress)(e.emailHandle));let t=p.get(e.id)??[];d.push(...t)}let l=e?.instructions??"";if(e?.ownerId){if(!f.has(e.ownerId)){let a=await (0,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(!I.has(e.ownerId)){let a=await (0,r.cached)(r.cacheKeys.user(e.ownerId),1800,()=>t.queries.user.getUser(this.db,e.ownerId));I.set(e.ownerId,a?{name:a.name,email:a.email}:null)}c=I.get(e.ownerId)?.name??null}let u=T.get(o.conversationId)??null,h=u?.channel??"default",w=null;if(o.type===a.TASK_TYPES.USER_DM_MESSAGE&&u?.userId){if(!I.has(u.userId)){let e=await (0,r.cached)(r.cacheKeys.user(u.userId),1800,()=>t.queries.user.getUser(this.db,u.userId));I.set(u.userId,e?{name:e.name,email:e.email}:null)}let a=I.get(u.userId);a&&(w={name:a.name,email:a.email,is_owner:u.userId===e?.ownerId})}let k=(g.get(o.agentId)??[]).map(e=>({name:e.name,email:e.emailHandle?(0,s.toAlookAddress)(e.emailHandle):"",description:e.description,instruction:e.instruction}));_.push({...(0,n.taskToResponse)(o),channel:h,sender:w,agent:e?{instructions:l,name:e.name,runtime_config:e.runtimeConfig||{},email_handle:e.emailHandle||null,email_addresses:d,user_email:null,user_name:c,colleagues:k}:null})}return _}}])},205054,e=>{"use strict";e.i(700598);var t=e.i(291109),a=e.i(704024),s=e.i(511456),n=e.i(726089),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,p=t.queries.inbox;e.s(["TaskService",0,class{db;constructor(e){this.db=e}async enqueueTask(e,t,s,n,r=a.TASK_TYPES.USER_DM_MESSAGE,o){let c=await 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,n){let r;try{r=JSON.parse(a)}catch{r={raw:a}}let i=await d.completeTask(this.db,e,t,{result:r,sessionId:n||null});if(!i){let t=await d.getTask(this.db,e),a=t?.status??"unknown";throw s.log.warn(`completeTask failed: task is in '${a}' status`,{taskId:e}),Error(`cannot complete task in '${a}' status`)}return await this.reconcileAgentStatus(i.agentId,i.workspaceId),this.maybeUpsertUnread(i,t,null).catch(()=>{}),i}async failTask(e,i,o){let l=await d.failTask(this.db,e,i,o);if(!l){let t=await d.getTask(this.db,e),a=t?.status??"unknown";throw s.log.warn(`failTask failed: task is in '${a}' status`,{taskId:e}),Error(`cannot fail task in '${a}' status`)}if(l.type===a.TASK_TYPES.KILL_TASK)return l;let m=null;if(o){let a=null;try{if(l.runtimeId){let e=await t.queries.runtime.getAgentRuntime(this.db,l.runtimeId);a=e?.provider??null}}catch{}let s=await c.createMessage(this.db,{conversationId:l.conversationId,role:"assistant",content:o,taskId:e,metadata:JSON.stringify({error_source:"runtime",provider:a})});m=s?.id??null;try{let e=await u.getConversation(this.db,l.conversationId,i);e&&(0,n.broadcastToUser)(e.userId,{type:"conversation.message",conversationId:l.conversationId,message:(0,r.messageToResponse)(s)}).catch(()=>{})}catch{}}return await this.reconcileAgentStatus(l.agentId,l.workspaceId),await this.syncIssueStatusFromTask(l,"failed"),this.maybeUpsertUnread(l,i,m).catch(()=>{}),l}async syncIssueStatusFromTask(e,t){if(e.type!==a.TASK_TYPES.ISSUE_EVENT)return;let s=await m.getIssueByConversation(this.db,e.conversationId,e.workspaceId);if(!s||s.status===t||!await m.updateIssue(this.db,s.id,e.workspaceId,{status:t}))return;let i=await c.createMessage(this.db,{conversationId:e.conversationId,role:"event",content:`Issue status changed: ${s.status} -> ${t}`,taskId:e.id,metadata:JSON.stringify({issueId:s.id})});try{let t=await u.getConversation(this.db,e.conversationId,e.workspaceId);t&&(0,n.broadcastToUser)(t.userId,{type:"conversation.message",conversationId:e.conversationId,message:(0,r.messageToResponse)(i)}).catch(()=>{})}catch{}}async maybeUpsertUnread(e,t,a){if(!p.isUnreadEligible(e)||!e.completedAt)return;let s=await u.getConversation(this.db,e.conversationId,t);if(!s)return;let n=a??await p.findLatestAssistantMessageId(this.db,e.conversationId);await p.upsertUnreadEntry(this.db,{conversationId:e.conversationId,userId:s.userId,workspaceId:t,agentId:s.agentId,taskId:e.id,taskType:e.type,taskStatus:e.status,taskPrompt:e.prompt,completedAt:e.completedAt,latestMessageId:n})}async supersedeTask(e,t){let a=await d.supersedeTask(this.db,e,t);if(!a){let t=await d.getTask(this.db,e),a=t?.status??"unknown";throw s.log.warn(`supersedeTask failed: task is in '${a}' status`,{taskId:e}),Error(`cannot supersede task in '${a}' status`)}return await this.reconcileAgentStatus(a.agentId,a.workspaceId),a}async retryTask(e,t){let a=await d.getTask(this.db,e);if(!a||a.workspaceId!==t)throw Error("task not found");if("failed"!==a.status)throw Error("only failed tasks can be retried");let s=await d.markFailedAsSuperseded(this.db,e,t);if(!s)throw Error("failed to mark task as superseded");return{oldTask:s,newTask:await this.enqueueTask(a.agentId,a.conversationId,t,a.prompt,a.type,{contextKey:a.contextKey??null,context:a.context,traceId:a.traceId??null,parentTaskId:a.parentTaskId??null})}}async cancelActiveTask(e,r,i){let o=await d.getActiveTaskByConversation(this.db,e,r);if(!o)return null;let l=await d.cancelTask(this.db,o.id,r);if(!l)return null;if("dispatched"===o.status||"running"===o.status){let i=await d.createTask(this.db,{agentId:o.agentId,runtimeId:o.runtimeId,workspaceId:r,conversationId:e,prompt:"",type:a.TASK_TYPES.KILL_TASK,context:{target_task_id:o.id}});await d.dispatchTaskById(this.db,i.id,r);let l=await t.queries.runtime.getAgentRuntime(this.db,o.runtimeId);l&&(0,n.broadcastToDaemon)(l.daemonId,{type:"daemon.kill",workspaceId:r,agentId:o.agentId,taskId:i.id,targetTaskId:o.id}).catch(e=>s.log.warn("daemon.kill broadcast failed, relying on poll fallback",e))}return await c.createMessage(this.db,{conversationId:e,role:"assistant",content:i?.reason??"Task cancelled by you",taskId:o.id,metadata:JSON.stringify({kind:"lifecycle"})}),await this.reconcileAgentStatus(o.agentId,r),l}async reconcileAgentStatus(e,t){let a=await d.countRunningTasks(this.db,e,t);await l.updateAgentStatus(this.db,e,t,a>0?"working":"idle"),(0,i.invalidate)(i.cacheKeys.activeTaskCounts(t)).catch(()=>{})}async cancelTrace(e,t,a){for(let n of[...new Set((await d.getTraceTree(this.db,e,t)).filter(e=>["queued","dispatched","running"].includes(e.status)).map(e=>e.conversationId))])try{await this.cancelActiveTask(n,t,{reason:a?.reason})}catch(t){s.log.warn("cancelTrace: failed to cancel task",{traceId:e,convId:n,err:t})}}async pushTaskToDaemon(e,a){let s=await t.queries.runtime.getAgentRuntime(this.db,e.runtimeId);if(!s)return;let 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{let{sent:t}=await (0,n.broadcastToDaemon)(s.daemonId,{type:"daemon.tasks",tasks:l});0===t&&await d.revertDispatchedToQueued(this.db,e.id,a)}catch{await d.revertDispatchedToQueued(this.db,e.id,a)}}}])}];
1
+ module.exports=[511456,t=>{"use strict";t.i(700598);let e=(0,t.i(726527).createLogger)({service:"web",level:process.env.ALOOK_LOG_LEVEL||"info",pretty:!1});t.s(["log",0,e])},776227,t=>{"use strict";var e=t.i(406102);function a(t,a){return e.NextResponse.json({error:t},{status:a})}async function s(t,s){let n;try{n=await t.json()}catch{return[null,a("invalid request body",400)]}try{return[s.parse(n),null]}catch(a){let t=(a.issues??a.errors??[]).map(t=>`${t.path.join(".")}: ${t.message}`);return[null,e.NextResponse.json({error:"validation error",details:t},{status:400})]}}t.s(["formatTimestamp",0,function(t){return t?("string"==typeof t?new Date(t):t).toISOString().replace(/\.\d{3}Z$/,"Z"):""},"formatTimestampNullable",0,function(t){return t?("string"==typeof t?new Date(t):t).toISOString().replace(/\.\d{3}Z$/,"Z"):null},"parseBody",0,s,"writeError",0,a,"writeJSON",0,function(t,a=200){return e.NextResponse.json(t,{status:a})}])},469187,t=>{"use strict";var e=t.i(704024);t.s(["isOnline",0,function(t){if(!t)return!1;let a=new Date(t.includes("T")||t.includes("Z")||t.includes("+")?t:t+"Z").getTime();return!isNaN(a)&&Date.now()-a<e.OFFLINE_THRESHOLD_MS}])},740580,t=>{"use strict";var e=t.i(776227);t.i(700598);var a=t.i(888247),s=t.i(469187),n=t.i(704024);t.s(["agentLinkToResponse",0,function(t){return{id:t.id,workspace_id:t.workspaceId,source_agent_id:t.sourceAgentId,target_agent_id:t.targetAgentId,instruction:t.instruction,created_at:(0,e.formatTimestamp)(t.createdAt),updated_at:(0,e.formatTimestamp)(t.updatedAt)}},"agentToResponse",0,function(t){let a=t.runtimeConfig;return a||(a={}),{id:t.id,workspace_id:t.workspaceId,runtime_id:t.runtimeId||"",name:t.name,description:t.description,instructions:t.instructions,runtime_mode:t.runtimeMode,runtime_config:a,status:t.status,max_concurrent_tasks:t.maxConcurrentTasks,email_handle:t.emailHandle||null,avatar_url:t.avatarUrl??null,visibility:t.visibility??"private",owner_id:t.ownerId??null,created_at:(0,e.formatTimestamp)(t.createdAt),updated_at:(0,e.formatTimestamp)(t.updatedAt)}},"calendarEventToResponse",0,function(t){let a=(0,e.formatTimestamp)(t.scheduledAt),s=t.occurrenceAt?(0,e.formatTimestamp)(t.occurrenceAt):a;return{id:t.id,agent_id:t.agentId,workspace_id:t.workspaceId,title:t.title,description:t.description??null,scheduled_at:a,occurrence_at:s,collapsed_count:t.collapsedCount??null,repeat_interval:t.repeatInterval??null,repeat_stop_at:(0,e.formatTimestampNullable)(t.repeatStopAt),last_triggered_at:(0,e.formatTimestampNullable)(t.lastTriggeredAt),created_at:(0,e.formatTimestamp)(t.createdAt),updated_at:(0,e.formatTimestamp)(t.updatedAt)}},"channelToResponse",0,function(t){return{id:t.id,workspace_id:t.workspaceId,name:t.name,position:t.position??0,created_at:(0,e.formatTimestamp)(t.createdAt)}},"conversationToResponse",0,function(t){let a={id:t.id,agent_id:t.agentId,title:t.title,type:t.type??n.TASK_TYPES.USER_DM_MESSAGE,channel:t.channel??"default",created_at:(0,e.formatTimestamp)(t.createdAt)};return t.parentMessageId&&(a.parent_message_id=t.parentMessageId,a.thread_title=t.threadTitle??""),void 0!==t.messageCount&&(a.message_count=t.messageCount),a},"emailToResponse",0,function(t){return{id:t.id,agent_id:t.agentId,from_email:t.fromEmail,to_email:t.toEmail,subject:t.subject,r2_key:t.r2Key,is_whitelisted:!!t.isWhitelisted,forwarded:!!t.forwarded,message_id:t.messageId??"",in_reply_to:t.inReplyTo??"",references:t.references??"",html_body:t.htmlBody??"",attachments:JSON.parse(t.attachments||"[]"),status:t.status??"unread",direction:t.direction??"inbound",created_at:(0,e.formatTimestamp)(t.createdAt)}},"inviteToResponse",0,function(t){return{id:t.id,token:t.token,created_by:t.createdBy,used_by:t.usedBy,expires_at:(0,e.formatTimestamp)(t.expiresAt),created_at:(0,e.formatTimestamp)(t.createdAt)}},"issueToResponse",0,function(t){return{id:t.id,workspace_id:t.workspaceId,agent_id:t.agentId,creator_user_id:t.creatorUserId,conversation_id:t.conversationId,latest_task_id:t.latestTaskId??null,title:t.title,description:t.description??"",status:t.status,created_at:(0,e.formatTimestamp)(t.createdAt),updated_at:(0,e.formatTimestamp)(t.updatedAt),completed_at:(0,e.formatTimestampNullable)(t.completedAt)}},"machineTokenToResponse",0,function(t){return{id:t.id,name:t.name,status:t.status,last_used_at:(0,e.formatTimestampNullable)(t.lastUsedAt),created_at:(0,e.formatTimestamp)(t.createdAt)}},"meetingToResponse",0,function(t){return{id:t.id,agent_id:t.agentId,workspace_id:t.workspaceId,title:t.title,meeting_url:t.meetingUrl,status:t.status,from_email:t.fromEmail??null,is_whitelisted:!!t.isWhitelisted,participants:t.participants??[],scheduled_at:(0,e.formatTimestampNullable)(t.scheduledAt),started_at:(0,e.formatTimestampNullable)(t.startedAt),completed_at:(0,e.formatTimestampNullable)(t.completedAt),transcript_r2_key:t.transcriptR2Key??null,summary:t.summary??null,error:t.error??null,worker_session_id:t.workerSessionId??null,created_at:(0,e.formatTimestamp)(t.createdAt),updated_at:(0,e.formatTimestamp)(t.updatedAt)}},"memberToResponse",0,function(t){return{id:t.id,user_id:t.userId,role:t.role,name:t.userName,email:t.userEmail,image:t.userImage,created_at:(0,e.formatTimestamp)(t.createdAt)}},"messageToResponse",0,function(t){let a={id:t.id,conversation_id:t.conversationId,role:t.role,content:t.content,task_id:t.taskId||null,attachment_ids:t.attachmentIds?JSON.parse(t.attachmentIds):null,metadata:t.metadata?JSON.parse(t.metadata):null,created_at:(0,e.formatTimestamp)(t.createdAt)};return t.status&&"active"!==t.status&&(a.status=t.status),a},"runtimeToResponse",0,function(t){let a=t.metadata;a||(a={});let n=t.machineLastSeenAt??null,r=n instanceof Date?n.toISOString():n;return{id:t.id,workspace_id:t.workspaceId,daemon_id:t.daemonId||null,runtime_mode:t.runtimeMode,provider:t.provider,status:(0,s.isOnline)(r)?"online":"offline",device_info:t.deviceInfo,metadata:a,pending_update_version:t.pendingUpdateVersion??null,pending_rescan:!!t.pendingRescan,last_seen_at:(0,e.formatTimestampNullable)(n),created_at:(0,e.formatTimestamp)(t.createdAt),updated_at:(0,e.formatTimestamp)(t.updatedAt)}},"taskMessageToResponse",0,function(t){return{id:t.id,seq:t.seq,type:t.type,content:t.content,output:t.output}},"taskToActivityResponse",0,function(t){let a=t.prompt.length>120?t.prompt.slice(0,120):t.prompt;return{id:t.id,conversation_id:t.conversationId,type:t.type??n.TASK_TYPES.USER_DM_MESSAGE,status:t.status,prompt:a,created_at:(0,e.formatTimestamp)(t.createdAt),started_at:(0,e.formatTimestampNullable)(t.startedAt),completed_at:(0,e.formatTimestampNullable)(t.completedAt),error:t.error||null}},"taskToResponse",0,function(t){return a.TaskApiBaseSchema.parse({id:t.id,agent_id:t.agentId,runtime_id:t.runtimeId,conversation_id:t.conversationId,workspace_id:t.workspaceId,prompt:t.prompt,type:t.type??n.TASK_TYPES.USER_DM_MESSAGE,context_key:t.contextKey??null,context:t.context??null,status:t.status,priority:t.priority,dispatched_at:(0,e.formatTimestampNullable)(t.dispatchedAt),started_at:(0,e.formatTimestampNullable)(t.startedAt),completed_at:(0,e.formatTimestampNullable)(t.completedAt),result:t.result??null,error:t.error||null,created_at:(0,e.formatTimestamp)(t.createdAt),trace_id:t.traceId??null,parent_task_id:t.parentTaskId??null})},"userToResponse",0,function(t){return{id:t.id,name:t.name,email:t.email,avatar_url:t.avatarUrl??null,created_at:(0,e.formatTimestamp)(t.createdAt),updated_at:(0,e.formatTimestamp)(t.updatedAt)}},"workspaceToResponse",0,function(t){return{id:t.id,name:t.name,slug:t.slug,onboarded:!!t.onboarded,created_at:(0,e.formatTimestamp)(t.createdAt),updated_at:(0,e.formatTimestamp)(t.updatedAt)}}])},726089,t=>{"use strict";var e=t.i(931720);t.i(700598);var a=t.i(704024);let s=(0,t.i(726527).createLogger)({service:"broadcast"});async function n(t,n,r){let i;try{let{env:a}=(0,e.getCloudflareContext)();i=a.DEV_WS_DO_URL;let o=await a.WS_DO_WORKER.fetch(`http://internal${t}`,{method:"POST",body:n});if(o.ok)try{return{sent:(await o.json()).sent??0}}catch{return{sent:0}}s.warn("broadcast service-binding non-ok",{...r,status:o.status})}catch{}let o=i||a.DEV_WS_DO_URL,d=await fetch(`${o}${t}`,{method:"POST",headers:{"Content-Type":"application/json"},body:n});if(!d.ok)throw Error(`broadcast failed: ${d.status}`);try{return{sent:(await d.json()).sent??0}}catch{return{sent:0}}}t.s(["broadcastToDaemon",0,function(t,a){let s=n(`/broadcast/daemon/${t}`,JSON.stringify(a),{daemonId:t,type:a.type});try{let{ctx:t}=(0,e.getCloudflareContext)();t.waitUntil(s.catch(()=>{}))}catch{}return s},"broadcastToUser",0,function(t,a){return function(t,a,s){let r=n(t,a,s);try{let{ctx:t}=(0,e.getCloudflareContext)();t.waitUntil(r.catch(()=>{}))}catch{}return r.then(()=>{})}(`/broadcast/user/${t}`,JSON.stringify(a),{userId:t,type:a.type})}])},555230,t=>{"use strict";t.i(700598);var e=t.i(291109),a=t.i(704024),s=t.i(424166),n=t.i(740580),r=t.i(774078);t.s(["TaskPayloadBuilder",0,class{db;constructor(t){this.db=t}async buildFullPayloads(t,i){let o=t.filter(t=>t.type!==a.TASK_TYPES.KILL_TASK),d=[...new Set(o.map(t=>t.agentId))],[l,c,u]=d.length>0?await Promise.all([e.queries.agent.getAllAgentsForWorkspace(this.db,i),(0,r.cached)(r.cacheKeys.allEmailAccounts(i),600,()=>e.queries.emailAccount.getAllEmailAccountsForWorkspace(this.db,i)),e.queries.agentLink.getAllColleaguesForWorkspace(this.db,i).catch(()=>[])]).then(([t,e,a])=>{let s=new Set(d);return[t.filter(t=>s.has(t.id)),e.filter(t=>s.has(t.agentId)),a.filter(t=>s.has(t.agentId))]}):[[],[],[]],m=new Map(l.map(t=>[t.id,t])),p=new Map;for(let t of c){let e=p.get(t.agentId)??[];e.push(t.emailAddress),p.set(t.agentId,e)}let g=new Map;for(let t of u){let e=g.get(t.agentId)??[];e.push(t),g.set(t.agentId,e)}let h=[...new Set(o.map(t=>t.conversationId).filter(Boolean))],T=new Map((h.length>0?await e.queries.conversation.getConversationsByIds(this.db,h,i):[]).map(t=>[t.id,t])),f=new Map,I=new Map,_=[];for(let o of t){if(o.type===a.TASK_TYPES.KILL_TASK){_.push({...(0,n.taskToResponse)(o),agent:null,sender:null});continue}let t=m.get(o.agentId)??null,d=[];if(t){t.emailHandle&&d.push((0,s.toAlookAddress)(t.emailHandle));let e=p.get(t.id)??[];d.push(...e)}let l=t?.instructions??"";if(t?.ownerId){if(!f.has(t.ownerId)){let a=await (0,r.cached)(r.cacheKeys.member(i,t.ownerId),600,()=>e.queries.member.getMemberByUserAndWorkspace(this.db,t.ownerId,i));f.set(t.ownerId,a?{globalInstruction:a.globalInstruction}:null)}let a=f.get(t.ownerId);a?.globalInstruction&&(l=[a.globalInstruction,l].filter(Boolean).join("\n\n"))}let c=null;if(t?.ownerId){if(!I.has(t.ownerId)){let a=await (0,r.cached)(r.cacheKeys.user(t.ownerId),1800,()=>e.queries.user.getUser(this.db,t.ownerId));I.set(t.ownerId,a?{name:a.name,email:a.email}:null)}c=I.get(t.ownerId)?.name??null}let u=T.get(o.conversationId)??null,h=u?.channel??"default",w=null;if(o.type===a.TASK_TYPES.USER_DM_MESSAGE&&u?.userId){if(!I.has(u.userId)){let t=await (0,r.cached)(r.cacheKeys.user(u.userId),1800,()=>e.queries.user.getUser(this.db,u.userId));I.set(u.userId,t?{name:t.name,email:t.email}:null)}let a=I.get(u.userId);a&&(w={name:a.name,email:a.email,is_owner:u.userId===t?.ownerId})}let k=(g.get(o.agentId)??[]).map(t=>({name:t.name,email:t.emailHandle?(0,s.toAlookAddress)(t.emailHandle):"",description:t.description,instruction:t.instruction}));_.push({...(0,n.taskToResponse)(o),channel:h,sender:w,agent:t?{instructions:l,name:t.name,runtime_config:t.runtimeConfig||{},email_handle:t.emailHandle||null,email_addresses:d,user_email:null,user_name:c,colleagues:k}:null})}return _}}])},205054,t=>{"use strict";t.i(700598);var e=t.i(291109),a=t.i(704024),s=t.i(511456),n=t.i(726089),r=t.i(740580),i=t.i(774078),o=t.i(555230);let d=e.queries.task,l=e.queries.agent,c=e.queries.message,u=e.queries.conversation,m=e.queries.issue,p=e.queries.inbox;t.s(["TaskService",0,class{db;constructor(t){this.db=t}async enqueueTask(t,e,s,n,r=a.TASK_TYPES.USER_DM_MESSAGE,o){let c=await l.getAgent(this.db,t,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:t,runtimeId:c.runtimeId,workspaceId:s,conversationId:e,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(t,e){let a=await l.getAgent(this.db,t,e);return this.claimTaskWithAgent(t,e,a)}async claimTaskWithAgent(t,e,a){if(!a)return null;if(await d.countRunningTasks(this.db,t,e)>=a.maxConcurrentTasks){let s=await d.findSteerableReplacement(this.db,t,e);if(!s||await d.countRunningTasks(this.db,t,e,s.predecessorId)>=a.maxConcurrentTasks)return null}let s=await d.claimTask(this.db,t,e);return s?(await l.updateAgentStatus(this.db,t,e,"working"),s):null}async claimTasksForRuntimes(t,e,a){let s=await d.claimKillTasks(this.db,t,a,e),n=e-s.length,r=n>0?await d.listPendingTasksByRuntimes(this.db,t,a):[],i=new Set(t),o=new Set,c=[...s],u=[];for(let t of r){if(u.length>=n)break;let e=`${t.agentId}:${t.workspaceId}`;o.has(e)||(o.add(e),u.push(t))}if(0===u.length)return c;let m=[...new Set(u.map(t=>t.agentId))],p=new Map((await l.getAgentsByIds(this.db,m,a)).map(t=>[t.id,t]));for(let t of(await Promise.all(u.map(t=>this.claimTaskWithAgent(t.agentId,t.workspaceId,p.get(t.agentId)??null)))))t&&i.has(t.runtimeId)&&c.push(t);return c}async startTask(t,e){let a=await d.startTask(this.db,t,e);if(!a)throw Error("task not in dispatched status");return a}async completeTask(t,e,a,n){let r;try{r=JSON.parse(a)}catch{r={raw:a}}let i=await d.completeTask(this.db,t,e,{result:r,sessionId:n||null});if(!i){let e=await d.getTask(this.db,t),a=e?.status??"unknown";throw s.log.warn(`completeTask failed: task is in '${a}' status`,{taskId:t}),Error(`cannot complete task in '${a}' status`)}return await this.reconcileAgentStatus(i.agentId,i.workspaceId),this.maybeUpsertUnread(i,e,null).catch(()=>{}),i}async failTask(t,i,o){let l=await d.failTask(this.db,t,i,o);if(!l){let e=await d.getTask(this.db,t),a=e?.status??"unknown";throw s.log.warn(`failTask failed: task is in '${a}' status`,{taskId:t}),Error(`cannot fail task in '${a}' status`)}if(l.type===a.TASK_TYPES.KILL_TASK)return l;let m=null;if(o){let a=null;try{if(l.runtimeId){let t=await e.queries.runtime.getAgentRuntime(this.db,l.runtimeId);a=t?.provider??null}}catch{}let s=await c.createMessage(this.db,{conversationId:l.conversationId,role:"assistant",content:o,taskId:t,metadata:JSON.stringify({error_source:"runtime",provider:a})});m=s?.id??null;try{let t=await u.getConversation(this.db,l.conversationId,i);t&&(0,n.broadcastToUser)(t.userId,{type:"conversation.message",conversationId:l.conversationId,message:(0,r.messageToResponse)(s)}).catch(()=>{})}catch{}}return await this.reconcileAgentStatus(l.agentId,l.workspaceId),await this.syncIssueStatusFromTask(l,"failed"),this.maybeUpsertUnread(l,i,m).catch(()=>{}),l}async syncIssueStatusFromTask(t,e){if(t.type!==a.TASK_TYPES.ISSUE_EVENT)return;let s=await m.getIssueByConversation(this.db,t.conversationId,t.workspaceId);if(!s||s.status===e||!await m.updateIssue(this.db,s.id,t.workspaceId,{status:e}))return;let i=await c.createMessage(this.db,{conversationId:t.conversationId,role:"event",content:`Issue status changed: ${s.status} -> ${e}`,taskId:t.id,metadata:JSON.stringify({issueId:s.id})});try{let e=await u.getConversation(this.db,t.conversationId,t.workspaceId);e&&(0,n.broadcastToUser)(e.userId,{type:"conversation.message",conversationId:t.conversationId,message:(0,r.messageToResponse)(i)}).catch(()=>{})}catch{}}async maybeUpsertUnread(t,e,a){if(!p.isUnreadEligible(t)||!t.completedAt)return;let s=await u.getConversation(this.db,t.conversationId,e);if(!s)return;let n=a??await p.findLatestAssistantMessageId(this.db,t.conversationId);await p.upsertUnreadEntry(this.db,{conversationId:t.conversationId,userId:s.userId,workspaceId:e,agentId:s.agentId,taskId:t.id,taskType:t.type,taskStatus:t.status,taskPrompt:t.prompt,completedAt:t.completedAt,latestMessageId:n})}async supersedeTask(t,e){let a=await d.supersedeTask(this.db,t,e);if(!a){let e=await d.getTask(this.db,t),a=e?.status??"unknown";throw s.log.warn(`supersedeTask failed: task is in '${a}' status`,{taskId:t}),Error(`cannot supersede task in '${a}' status`)}return await this.reconcileAgentStatus(a.agentId,a.workspaceId),a}async retryTask(t,e){let a=await d.getTask(this.db,t);if(!a||a.workspaceId!==e)throw Error("task not found");if("failed"!==a.status)throw Error("only failed tasks can be retried");let s=await d.markFailedAsSuperseded(this.db,t,e);if(!s)throw Error("failed to mark task as superseded");return{oldTask:s,newTask:await this.enqueueTask(a.agentId,a.conversationId,e,a.prompt,a.type,{contextKey:a.contextKey??null,context:a.context,traceId:a.traceId??null,parentTaskId:a.parentTaskId??null})}}async cancelActiveTask(t,r,i){let o=await d.getActiveTaskByConversation(this.db,t,r);if(!o)return null;let l=await d.cancelTask(this.db,o.id,r);if(!l)return null;if("dispatched"===o.status||"running"===o.status){let i=await d.createTask(this.db,{agentId:o.agentId,runtimeId:o.runtimeId,workspaceId:r,conversationId:t,prompt:"",type:a.TASK_TYPES.KILL_TASK,context:{target_task_id:o.id}});await d.dispatchTaskById(this.db,i.id,r);let l=await e.queries.runtime.getAgentRuntime(this.db,o.runtimeId);l&&(0,n.broadcastToDaemon)(l.daemonId,{type:"daemon.kill",workspaceId:r,agentId:o.agentId,taskId:i.id,targetTaskId:o.id}).catch(t=>s.log.warn("daemon.kill broadcast failed, relying on poll fallback",t))}return await c.createMessage(this.db,{conversationId:t,role:"assistant",content:i?.reason??"Task cancelled by you",taskId:o.id,metadata:JSON.stringify({kind:"lifecycle"})}),await this.reconcileAgentStatus(o.agentId,r),l}async reconcileAgentStatus(t,e){let a=await d.countRunningTasks(this.db,t,e);await l.updateAgentStatus(this.db,t,e,a>0?"working":"idle"),(0,i.invalidate)(i.cacheKeys.activeTaskCounts(e)).catch(()=>{})}async cancelTrace(t,e,a){for(let n of[...new Set((await d.getTraceTree(this.db,t,e)).filter(t=>["queued","dispatched","running"].includes(t.status)).map(t=>t.conversationId))])try{await this.cancelActiveTask(n,e,{reason:a?.reason})}catch(e){s.log.warn("cancelTrace: failed to cancel task",{traceId:t,convId:n,err:e})}}async pushTaskToDaemon(t,a){let s=await e.queries.runtime.getAgentRuntime(this.db,t.runtimeId);if(!s)return;let r=await d.dispatchTaskById(this.db,t.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,t.id,a);try{let{sent:e}=await (0,n.broadcastToDaemon)(s.daemonId,{type:"daemon.tasks",tasks:l});0===e&&await d.revertDispatchedToQueued(this.db,t.id,a)}catch{await d.revertDispatchedToQueued(this.db,t.id,a)}}}])}];
2
2
 
3
3
  //# sourceMappingURL=src_1j5rtq8._.js.map