@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.
- package/bundled/web/.open-next/.build/durable-objects/queue.js +5 -5
- package/bundled/web/.open-next/assets/BUILD_ID +1 -1
- package/bundled/web/.open-next/assets/_next/static/chunks/1ixdcdkpnwt_p.js +1 -0
- package/bundled/web/.open-next/assets/_next/static/chunks/{15gpqusfs36cs.js → 1kj_n-cbedl8a.js} +2 -2
- package/bundled/web/.open-next/assets/_next/static/chunks/{0eayyb8dzeuqj.js → 1lwe0daem0j5h.js} +1 -1
- package/bundled/web/.open-next/assets/_next/static/chunks/{2jgr6hdohnj5b.js → 2p8ty_tin77ze.js} +1 -1
- package/bundled/web/.open-next/assets/_next/static/chunks/{348z6y6iea4gl.js → 2s1nfdub5g-vr.js} +3 -3
- package/bundled/web/.open-next/assets/_next/static/chunks/35szcmuxsgm0x.js +1 -0
- package/bundled/web/.open-next/assets/_next/static/chunks/{2_5gjqjt8nmq2.js → 3yhuzg7vtzfp5.js} +1 -1
- package/bundled/web/.open-next/assets/_next/static/chunks/{14mgvrpz4ar3j.js → 41hz62d13-2ps.js} +1 -1
- package/bundled/web/.open-next/cache/{n67RZ-dHYbiPuCBj-CPEs → 9TliiRuyS2VWuTgYBLJbH}/_global-error.cache +1 -1
- package/bundled/web/.open-next/cache/{n67RZ-dHYbiPuCBj-CPEs → 9TliiRuyS2VWuTgYBLJbH}/_not-found.cache +1 -1
- package/bundled/web/.open-next/cache/{n67RZ-dHYbiPuCBj-CPEs → 9TliiRuyS2VWuTgYBLJbH}/device.cache +1 -1
- package/bundled/web/.open-next/cache/{n67RZ-dHYbiPuCBj-CPEs → 9TliiRuyS2VWuTgYBLJbH}/privacy.cache +1 -1
- package/bundled/web/.open-next/cache/{n67RZ-dHYbiPuCBj-CPEs → 9TliiRuyS2VWuTgYBLJbH}/sitemap.xml.cache +1 -1
- package/bundled/web/.open-next/cloudflare/cache-assets-manifest.sql +1 -1
- package/bundled/web/.open-next/cloudflare/init.js +1 -1
- package/bundled/web/.open-next/dynamodb-provider/dynamodb-cache.json +1 -1
- package/bundled/web/.open-next/middleware/handler.mjs +4 -4
- package/bundled/web/.open-next/server-functions/default/src/web/.next/BUILD_ID +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/build-manifest.json +3 -3
- package/bundled/web/.open-next/server-functions/default/src/web/.next/prerender-manifest.json +3 -3
- package/bundled/web/.open-next/server-functions/default/src/web/.next/required-server-files.json +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/invite/[token]/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/studio/new/page_client-reference-manifest.js +1 -1
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/agents/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/calendar/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/flags/page_client-reference-manifest.js +1 -1
- 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
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/home/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/issues/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/runtimes/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/settings/page_client-reference-manifest.js +1 -1
- 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
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/traces/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/unread/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/page/react-loadable-manifest.json +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__01-4zmn._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__0bye0tx._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__0gkkbf4._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__0jrrtm1._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__0xdps2u._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__1-ug-mf._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__12fz1lr._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__134-7z_._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__155l597._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__18lolj4._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__1cbaprg._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__1jq8zws._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__1l-2x7f._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__1pmcw25._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__1rfzkgk._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__1w9__7q._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__20s9whj._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_03i6uql._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0591v0o._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_08gc1s_._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0lcu68p._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0m_ehw8._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0p79t7w._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0r2vuif._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0tzvy_s._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_13jq647._.js +3 -3
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_18v5918._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_1aztsqf._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_1d18okt._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_1i4egv6._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_1iaevpj._.js +2 -2
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_1kt_xdj._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_1njwvhs._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/src_1j5rtq8._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/_0qgcnj5._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/_1wqw0ro._.js +1 -1
- 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
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/src_web_src_lib_api_ts_1ffelwp._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/middleware-build-manifest.js +3 -3
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/middleware-manifest.json +5 -5
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/server-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/server-reference-manifest.json +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/handler.mjs +34 -34
- package/bundled/web/.open-next/server-functions/default/src/web/handler.mjs.meta.json +101 -101
- package/bundled/web/.open-next/server-functions/default/src/web/index.mjs +4 -4
- package/bundled/web/custom-worker.ts +16 -1
- package/package.json +1 -1
- package/bundled/web/.open-next/assets/_next/static/chunks/2c9n34tpjgbko.js +0 -1
- package/bundled/web/.open-next/assets/_next/static/chunks/447gx8byleobi.js +0 -1
- /package/bundled/web/.open-next/assets/_next/static/{n67RZ-dHYbiPuCBj-CPEs → 9TliiRuyS2VWuTgYBLJbH}/_buildManifest.js +0 -0
- /package/bundled/web/.open-next/assets/_next/static/{n67RZ-dHYbiPuCBj-CPEs → 9TliiRuyS2VWuTgYBLJbH}/_clientMiddlewareManifest.js +0 -0
- /package/bundled/web/.open-next/assets/_next/static/{n67RZ-dHYbiPuCBj-CPEs → 9TliiRuyS2VWuTgYBLJbH}/_ssgManifest.js +0 -0
- /package/bundled/web/.open-next/cache/{n67RZ-dHYbiPuCBj-CPEs → 9TliiRuyS2VWuTgYBLJbH}/robots.txt.cache +0 -0
package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0tzvy_s._.js
CHANGED
|
@@ -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 l=await a.WS_DO_WORKER.fetch(`http://internal${e}`,{method:"POST",body:n});if(l.ok)try{return{sent:(await l.json()).sent??0}}catch{return{sent:0}}s.warn("broadcast service-binding non-ok",{...i,status:l.status})}catch{}let l=r||a.DEV_WS_DO_URL,d=await fetch(`${l}${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:n});if(!d.ok)throw Error(`broadcast failed: ${d.status}`);try{return{sent:(await d.json()).sent??0}}catch{return{sent:0}}}e.s(["broadcastToDaemon",0,function(e,a){let s=n(`/broadcast/daemon/${e}`,JSON.stringify(a),{daemonId:e,type:a.type});try{let{ctx:e}=(0,t.getCloudflareContext)();e.waitUntil(s.catch(()=>{}))}catch{}return s},"broadcastToUser",0,function(e,a){return function(e,a,s){let i=n(e,a,s);try{let{ctx:e}=(0,t.getCloudflareContext)();e.waitUntil(i.catch(()=>{}))}catch{}return i.then(()=>{})}(`/broadcast/user/${e}`,JSON.stringify(a),{userId:e,type:a.type})}])},511456,e=>{"use strict";e.i(700598);let t=(0,e.i(726527).createLogger)({service:"web",level:process.env.ALOOK_LOG_LEVEL||"info",pretty:!1});e.s(["log",0,t])},555230,e=>{"use strict";e.i(700598);var t=e.i(291109),a=e.i(704024),s=e.i(424166),n=e.i(740580),i=e.i(774078);e.s(["TaskPayloadBuilder",0,class{db;constructor(e){this.db=e}async buildFullPayloads(e,r){let l=e.filter(e=>e.type!==a.TASK_TYPES.KILL_TASK),d=[...new Set(l.map(e=>e.agentId))],[o,c,u]=d.length>0?await Promise.all([(0,i.cached)(i.cacheKeys.allAgents(r),300,()=>t.queries.agent.getAllAgentsForWorkspace(this.db,r)),(0,i.cached)(i.cacheKeys.allEmailAccounts(r),600,()=>t.queries.emailAccount.getAllEmailAccountsForWorkspace(this.db,r)),(0,i.cached)(i.cacheKeys.allColleagues(r),600,()=>t.queries.agentLink.getAllColleaguesForWorkspace(this.db,r)).catch(()=>[])]).then(([e,t,a])=>{let s=new Set(d);return[e.filter(e=>s.has(e.id)),t.filter(e=>s.has(e.agentId)),a.filter(e=>s.has(e.agentId))]}):[[],[],[]],h=new Map(o.map(e=>[e.id,e])),g=new Map;for(let e of c){let t=g.get(e.agentId)??[];t.push(e.emailAddress),g.set(e.agentId,t)}let m=new Map;for(let e of u){let t=m.get(e.agentId)??[];t.push(e),m.set(e.agentId,t)}let w=[...new Set(l.map(e=>e.conversationId).filter(Boolean))],p=new Map((w.length>0?await t.queries.conversation.getConversationsByIds(this.db,w,r):[]).map(e=>[e.id,e])),I=new Map,k=new Map,T=[];for(let l of e){if(l.type===a.TASK_TYPES.KILL_TASK){T.push({...(0,n.taskToResponse)(l),agent:null,sender:null});continue}let e=h.get(l.agentId)??null,d=[];if(e){e.emailHandle&&d.push((0,s.toAlookAddress)(e.emailHandle));let t=g.get(e.id)??[];d.push(...t)}let o=e?.instructions??"";if(e?.ownerId){if(!I.has(e.ownerId)){let a=await (0,i.cached)(i.cacheKeys.member(r,e.ownerId),600,()=>t.queries.member.getMemberByUserAndWorkspace(this.db,e.ownerId,r));I.set(e.ownerId,a?{globalInstruction:a.globalInstruction}:null)}let a=I.get(e.ownerId);a?.globalInstruction&&(o=[a.globalInstruction,o].filter(Boolean).join("\n\n"))}let c=null;if(e?.ownerId){if(!k.has(e.ownerId)){let a=await (0,i.cached)(i.cacheKeys.user(e.ownerId),1800,()=>t.queries.user.getUser(this.db,e.ownerId));k.set(e.ownerId,a?{name:a.name,email:a.email}:null)}c=k.get(e.ownerId)?.name??null}let u=p.get(l.conversationId)??null,w=u?.channel??"default",f=null;if(l.type===a.TASK_TYPES.USER_DM_MESSAGE&&u?.userId){if(!k.has(u.userId)){let e=await (0,i.cached)(i.cacheKeys.user(u.userId),1800,()=>t.queries.user.getUser(this.db,u.userId));k.set(u.userId,e?{name:e.name,email:e.email}:null)}let a=k.get(u.userId);a&&(f={name:a.name,email:a.email,is_owner:u.userId===e?.ownerId})}let y=(m.get(l.agentId)??[]).map(e=>({name:e.name,email:e.emailHandle?(0,s.toAlookAddress)(e.emailHandle):"",description:e.description,instruction:e.instruction}));T.push({...(0,n.taskToResponse)(l),channel:w,sender:f,agent:e?{instructions:o,name:e.name,runtime_config:e.runtimeConfig||{},email_handle:e.emailHandle||null,email_addresses:d,user_email:null,user_name:c,colleagues:y}:null})}return T}}])},205054,e=>{"use strict";e.i(700598);var t=e.i(291109),a=e.i(704024),s=e.i(511456),n=e.i(726089),i=e.i(740580),r=e.i(774078),l=e.i(555230);let d=t.queries.task,o=t.queries.agent,c=t.queries.message,u=t.queries.conversation,h=t.queries.issue,g=t.queries.inbox;e.s(["TaskService",0,class{db;constructor(e){this.db=e}async enqueueTask(e,t,s,n,i=a.TASK_TYPES.USER_DM_MESSAGE,l){let c=await o.getAgent(this.db,e,s);if(!c)throw Error("agent not found");if(!c.runtimeId)throw Error("agent has no runtime");if(l?.traceId&&l.parentTaskId&&await d.countTasksByTrace(this.db,l.traceId)>=a.MAX_TASKS_PER_TRACE)throw Error(`Trace limit reached (${a.MAX_TASKS_PER_TRACE} tasks). This may indicate an infinite loop between agents.`);let u=await d.createTask(this.db,{agentId:e,runtimeId:c.runtimeId,workspaceId:s,conversationId:t,prompt:n,type:i,contextKey:l?.contextKey??null,priority:0,context:l?.context,traceId:l?.traceId??null,parentTaskId:l?.parentTaskId??null});return(0,r.invalidate)(r.cacheKeys.activeTaskCounts(s)).catch(()=>{}),await this.pushTaskToDaemon(u,s).catch(()=>{}),u}async claimTask(e,t){let a=await o.getAgent(this.db,e,t);return this.claimTaskWithAgent(e,t,a)}async claimTaskWithAgent(e,t,a){if(!a)return null;if(await d.countRunningTasks(this.db,e,t)>=a.maxConcurrentTasks){let s=await d.findSteerableReplacement(this.db,e,t);if(!s||await d.countRunningTasks(this.db,e,t,s.predecessorId)>=a.maxConcurrentTasks)return null}let s=await d.claimTask(this.db,e,t);return s?(await o.updateAgentStatus(this.db,e,t,"working"),s):null}async claimTasksForRuntimes(e,t,a){let s=await d.claimKillTasks(this.db,e,a,t),n=t-s.length,i=n>0?await d.listPendingTasksByRuntimes(this.db,e,a):[],r=new Set(e),l=new Set,c=[...s],u=[];for(let e of i){if(u.length>=n)break;let t=`${e.agentId}:${e.workspaceId}`;l.has(t)||(l.add(t),u.push(e))}if(0===u.length)return c;let h=[...new Set(u.map(e=>e.agentId))],g=new Map((await o.getAgentsByIds(this.db,h,a)).map(e=>[e.id,e]));for(let e of(await Promise.all(u.map(e=>this.claimTaskWithAgent(e.agentId,e.workspaceId,g.get(e.agentId)??null)))))e&&r.has(e.runtimeId)&&c.push(e);return c}async startTask(e,t){let a=await d.startTask(this.db,e,t);if(!a)throw Error("task not in dispatched status");return a}async completeTask(e,t,a,n){let i;try{i=JSON.parse(a)}catch{i={raw:a}}let r=await d.completeTask(this.db,e,t,{result:i,sessionId:n||null});if(!r){let t=await d.getTask(this.db,e),a=t?.status??"unknown";throw s.log.warn(`completeTask failed: task is in '${a}' status`,{taskId:e}),Error(`cannot complete task in '${a}' status`)}return await this.reconcileAgentStatus(r.agentId,r.workspaceId),this.maybeUpsertUnread(r,t,null).catch(()=>{}),r}async failTask(e,r,l){let o=await d.failTask(this.db,e,r,l);if(!o){let t=await d.getTask(this.db,e),a=t?.status??"unknown";throw s.log.warn(`failTask failed: task is in '${a}' status`,{taskId:e}),Error(`cannot fail task in '${a}' status`)}if(o.type===a.TASK_TYPES.KILL_TASK)return o;let h=null;if(l){let a=null;try{if(o.runtimeId){let e=await t.queries.runtime.getAgentRuntime(this.db,o.runtimeId);a=e?.provider??null}}catch{}let s=await c.createMessage(this.db,{conversationId:o.conversationId,role:"assistant",content:l,taskId:e,metadata:JSON.stringify({error_source:"runtime",provider:a})});h=s?.id??null;try{let e=await u.getConversation(this.db,o.conversationId,r);e&&(0,n.broadcastToUser)(e.userId,{type:"conversation.message",conversationId:o.conversationId,message:(0,i.messageToResponse)(s)}).catch(()=>{})}catch{}}return await this.reconcileAgentStatus(o.agentId,o.workspaceId),await this.syncIssueStatusFromTask(o,"failed"),this.maybeUpsertUnread(o,r,h).catch(()=>{}),o}async syncIssueStatusFromTask(e,t){if(e.type!==a.TASK_TYPES.ISSUE_EVENT)return;let s=await h.getIssueByConversation(this.db,e.conversationId,e.workspaceId);if(!s||s.status===t||!await h.updateIssue(this.db,s.id,e.workspaceId,{status:t}))return;let r=await c.createMessage(this.db,{conversationId:e.conversationId,role:"event",content:`Issue status changed: ${s.status} -> ${t}`,taskId:e.id,metadata:JSON.stringify({issueId:s.id})});try{let t=await u.getConversation(this.db,e.conversationId,e.workspaceId);t&&(0,n.broadcastToUser)(t.userId,{type:"conversation.message",conversationId:e.conversationId,message:(0,i.messageToResponse)(r)}).catch(()=>{})}catch{}}async maybeUpsertUnread(e,t,a){if(!g.isUnreadEligible(e)||!e.completedAt)return;let s=await u.getConversation(this.db,e.conversationId,t);if(!s)return;let n=a??await g.findLatestAssistantMessageId(this.db,e.conversationId);await g.upsertUnreadEntry(this.db,{conversationId:e.conversationId,userId:s.userId,workspaceId:t,agentId:s.agentId,taskId:e.id,taskType:e.type,taskStatus:e.status,taskPrompt:e.prompt,completedAt:e.completedAt,latestMessageId:n})}async supersedeTask(e,t){let a=await d.supersedeTask(this.db,e,t);if(!a){let t=await d.getTask(this.db,e),a=t?.status??"unknown";throw s.log.warn(`supersedeTask failed: task is in '${a}' status`,{taskId:e}),Error(`cannot supersede task in '${a}' status`)}return await this.reconcileAgentStatus(a.agentId,a.workspaceId),a}async retryTask(e,t){let a=await d.getTask(this.db,e);if(!a||a.workspaceId!==t)throw Error("task not found");if("failed"!==a.status)throw Error("only failed tasks can be retried");let s=await d.markFailedAsSuperseded(this.db,e,t);if(!s)throw Error("failed to mark task as superseded");return{oldTask:s,newTask:await this.enqueueTask(a.agentId,a.conversationId,t,a.prompt,a.type,{contextKey:a.contextKey??null,context:a.context,traceId:a.traceId??null,parentTaskId:a.parentTaskId??null})}}async cancelActiveTask(e,i,r){let l=await d.getActiveTaskByConversation(this.db,e,i);if(!l)return null;let o=await d.cancelTask(this.db,l.id,i);if(!o)return null;if("dispatched"===l.status||"running"===l.status){let r=await d.createTask(this.db,{agentId:l.agentId,runtimeId:l.runtimeId,workspaceId:i,conversationId:e,prompt:"",type:a.TASK_TYPES.KILL_TASK,context:{target_task_id:l.id}});await d.dispatchTaskById(this.db,r.id,i);let o=await t.queries.runtime.getAgentRuntime(this.db,l.runtimeId);o&&(0,n.broadcastToDaemon)(o.daemonId,{type:"daemon.kill",workspaceId:i,agentId:l.agentId,taskId:r.id,targetTaskId:l.id}).catch(e=>s.log.warn("daemon.kill broadcast failed, relying on poll fallback",e))}return await c.createMessage(this.db,{conversationId:e,role:"assistant",content:r?.reason??"Task cancelled by you",taskId:l.id,metadata:JSON.stringify({kind:"lifecycle"})}),await this.reconcileAgentStatus(l.agentId,i),o}async reconcileAgentStatus(e,t){let a=await d.countRunningTasks(this.db,e,t);await o.updateAgentStatus(this.db,e,t,a>0?"working":"idle"),(0,r.invalidate)(r.cacheKeys.activeTaskCounts(t)).catch(()=>{})}async cancelTrace(e,t,a){for(let n of[...new Set((await d.getTraceTree(this.db,e,t)).filter(e=>["queued","dispatched","running"].includes(e.status)).map(e=>e.conversationId))])try{await this.cancelActiveTask(n,t,{reason:a?.reason})}catch(t){s.log.warn("cancelTrace: failed to cancel task",{traceId:e,convId:n,err:t})}}async pushTaskToDaemon(e,a){let s=await t.queries.runtime.getAgentRuntime(this.db,e.runtimeId);if(!s)return;let i=await d.dispatchTaskById(this.db,e.id,a);if(!i)return;let r=new l.TaskPayloadBuilder(this.db),o=await r.buildFullPayloads([i],a);if(0===o.length)return void await d.revertDispatchedToQueued(this.db,e.id,a);try{let{sent:t}=await (0,n.broadcastToDaemon)(s.daemonId,{type:"daemon.tasks",tasks:o});0===t&&await d.revertDispatchedToQueued(this.db,e.id,a)}catch{await d.revertDispatchedToQueued(this.db,e.id,a)}}}])},291320,e=>{"use strict";e.s(["isUniqueConstraintError",0,function e(t){if(t instanceof Error){if("SQLITE_CONSTRAINT_UNIQUE"===t.code||t.message.includes("UNIQUE"))return!0;if(t.cause)return e(t.cause)}return!1}])},318172,e=>{"use strict";e.s(["truncateTitle",0,function(e,t=50){let a=e.replace(/\s+/g," ").trim();if(a.length<=t)return a;let s=a.slice(0,t),n=s.lastIndexOf(" ");return(n>20?s.slice(0,n):s)+"..."}])},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 l=await a.WS_DO_WORKER.fetch(`http://internal${e}`,{method:"POST",body:n});if(l.ok)try{return{sent:(await l.json()).sent??0}}catch{return{sent:0}}s.warn("broadcast service-binding non-ok",{...i,status:l.status})}catch{}let l=r||a.DEV_WS_DO_URL,d=await fetch(`${l}${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:n});if(!d.ok)throw Error(`broadcast failed: ${d.status}`);try{return{sent:(await d.json()).sent??0}}catch{return{sent:0}}}e.s(["broadcastToDaemon",0,function(e,a){let s=n(`/broadcast/daemon/${e}`,JSON.stringify(a),{daemonId:e,type:a.type});try{let{ctx:e}=(0,t.getCloudflareContext)();e.waitUntil(s.catch(()=>{}))}catch{}return s},"broadcastToUser",0,function(e,a){return function(e,a,s){let i=n(e,a,s);try{let{ctx:e}=(0,t.getCloudflareContext)();e.waitUntil(i.catch(()=>{}))}catch{}return i.then(()=>{})}(`/broadcast/user/${e}`,JSON.stringify(a),{userId:e,type:a.type})}])},511456,e=>{"use strict";e.i(700598);let t=(0,e.i(726527).createLogger)({service:"web",level:process.env.ALOOK_LOG_LEVEL||"info",pretty:!1});e.s(["log",0,t])},555230,e=>{"use strict";e.i(700598);var t=e.i(291109),a=e.i(704024),s=e.i(424166),n=e.i(740580),i=e.i(774078);e.s(["TaskPayloadBuilder",0,class{db;constructor(e){this.db=e}async buildFullPayloads(e,r){let l=e.filter(e=>e.type!==a.TASK_TYPES.KILL_TASK),d=[...new Set(l.map(e=>e.agentId))],[o,c,u]=d.length>0?await Promise.all([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(d);return[e.filter(e=>s.has(e.id)),t.filter(e=>s.has(e.agentId)),a.filter(e=>s.has(e.agentId))]}):[[],[],[]],h=new Map(o.map(e=>[e.id,e])),g=new Map;for(let e of c){let t=g.get(e.agentId)??[];t.push(e.emailAddress),g.set(e.agentId,t)}let m=new Map;for(let e of u){let t=m.get(e.agentId)??[];t.push(e),m.set(e.agentId,t)}let w=[...new Set(l.map(e=>e.conversationId).filter(Boolean))],p=new Map((w.length>0?await t.queries.conversation.getConversationsByIds(this.db,w,r):[]).map(e=>[e.id,e])),I=new Map,k=new Map,T=[];for(let l of e){if(l.type===a.TASK_TYPES.KILL_TASK){T.push({...(0,n.taskToResponse)(l),agent:null,sender:null});continue}let e=h.get(l.agentId)??null,d=[];if(e){e.emailHandle&&d.push((0,s.toAlookAddress)(e.emailHandle));let t=g.get(e.id)??[];d.push(...t)}let o=e?.instructions??"";if(e?.ownerId){if(!I.has(e.ownerId)){let a=await (0,i.cached)(i.cacheKeys.member(r,e.ownerId),600,()=>t.queries.member.getMemberByUserAndWorkspace(this.db,e.ownerId,r));I.set(e.ownerId,a?{globalInstruction:a.globalInstruction}:null)}let a=I.get(e.ownerId);a?.globalInstruction&&(o=[a.globalInstruction,o].filter(Boolean).join("\n\n"))}let c=null;if(e?.ownerId){if(!k.has(e.ownerId)){let a=await (0,i.cached)(i.cacheKeys.user(e.ownerId),1800,()=>t.queries.user.getUser(this.db,e.ownerId));k.set(e.ownerId,a?{name:a.name,email:a.email}:null)}c=k.get(e.ownerId)?.name??null}let u=p.get(l.conversationId)??null,w=u?.channel??"default",f=null;if(l.type===a.TASK_TYPES.USER_DM_MESSAGE&&u?.userId){if(!k.has(u.userId)){let e=await (0,i.cached)(i.cacheKeys.user(u.userId),1800,()=>t.queries.user.getUser(this.db,u.userId));k.set(u.userId,e?{name:e.name,email:e.email}:null)}let a=k.get(u.userId);a&&(f={name:a.name,email:a.email,is_owner:u.userId===e?.ownerId})}let y=(m.get(l.agentId)??[]).map(e=>({name:e.name,email:e.emailHandle?(0,s.toAlookAddress)(e.emailHandle):"",description:e.description,instruction:e.instruction}));T.push({...(0,n.taskToResponse)(l),channel:w,sender:f,agent:e?{instructions:o,name:e.name,runtime_config:e.runtimeConfig||{},email_handle:e.emailHandle||null,email_addresses:d,user_email:null,user_name:c,colleagues:y}:null})}return T}}])},205054,e=>{"use strict";e.i(700598);var t=e.i(291109),a=e.i(704024),s=e.i(511456),n=e.i(726089),i=e.i(740580),r=e.i(774078),l=e.i(555230);let d=t.queries.task,o=t.queries.agent,c=t.queries.message,u=t.queries.conversation,h=t.queries.issue,g=t.queries.inbox;e.s(["TaskService",0,class{db;constructor(e){this.db=e}async enqueueTask(e,t,s,n,i=a.TASK_TYPES.USER_DM_MESSAGE,l){let c=await o.getAgent(this.db,e,s);if(!c)throw Error("agent not found");if(!c.runtimeId)throw Error("agent has no runtime");if(l?.traceId&&l.parentTaskId&&await d.countTasksByTrace(this.db,l.traceId)>=a.MAX_TASKS_PER_TRACE)throw Error(`Trace limit reached (${a.MAX_TASKS_PER_TRACE} tasks). This may indicate an infinite loop between agents.`);let u=await d.createTask(this.db,{agentId:e,runtimeId:c.runtimeId,workspaceId:s,conversationId:t,prompt:n,type:i,contextKey:l?.contextKey??null,priority:0,context:l?.context,traceId:l?.traceId??null,parentTaskId:l?.parentTaskId??null});return(0,r.invalidate)(r.cacheKeys.activeTaskCounts(s)).catch(()=>{}),await this.pushTaskToDaemon(u,s).catch(()=>{}),u}async claimTask(e,t){let a=await o.getAgent(this.db,e,t);return this.claimTaskWithAgent(e,t,a)}async claimTaskWithAgent(e,t,a){if(!a)return null;if(await d.countRunningTasks(this.db,e,t)>=a.maxConcurrentTasks){let s=await d.findSteerableReplacement(this.db,e,t);if(!s||await d.countRunningTasks(this.db,e,t,s.predecessorId)>=a.maxConcurrentTasks)return null}let s=await d.claimTask(this.db,e,t);return s?(await o.updateAgentStatus(this.db,e,t,"working"),s):null}async claimTasksForRuntimes(e,t,a){let s=await d.claimKillTasks(this.db,e,a,t),n=t-s.length,i=n>0?await d.listPendingTasksByRuntimes(this.db,e,a):[],r=new Set(e),l=new Set,c=[...s],u=[];for(let e of i){if(u.length>=n)break;let t=`${e.agentId}:${e.workspaceId}`;l.has(t)||(l.add(t),u.push(e))}if(0===u.length)return c;let h=[...new Set(u.map(e=>e.agentId))],g=new Map((await o.getAgentsByIds(this.db,h,a)).map(e=>[e.id,e]));for(let e of(await Promise.all(u.map(e=>this.claimTaskWithAgent(e.agentId,e.workspaceId,g.get(e.agentId)??null)))))e&&r.has(e.runtimeId)&&c.push(e);return c}async startTask(e,t){let a=await d.startTask(this.db,e,t);if(!a)throw Error("task not in dispatched status");return a}async completeTask(e,t,a,n){let i;try{i=JSON.parse(a)}catch{i={raw:a}}let r=await d.completeTask(this.db,e,t,{result:i,sessionId:n||null});if(!r){let t=await d.getTask(this.db,e),a=t?.status??"unknown";throw s.log.warn(`completeTask failed: task is in '${a}' status`,{taskId:e}),Error(`cannot complete task in '${a}' status`)}return await this.reconcileAgentStatus(r.agentId,r.workspaceId),this.maybeUpsertUnread(r,t,null).catch(()=>{}),r}async failTask(e,r,l){let o=await d.failTask(this.db,e,r,l);if(!o){let t=await d.getTask(this.db,e),a=t?.status??"unknown";throw s.log.warn(`failTask failed: task is in '${a}' status`,{taskId:e}),Error(`cannot fail task in '${a}' status`)}if(o.type===a.TASK_TYPES.KILL_TASK)return o;let h=null;if(l){let a=null;try{if(o.runtimeId){let e=await t.queries.runtime.getAgentRuntime(this.db,o.runtimeId);a=e?.provider??null}}catch{}let s=await c.createMessage(this.db,{conversationId:o.conversationId,role:"assistant",content:l,taskId:e,metadata:JSON.stringify({error_source:"runtime",provider:a})});h=s?.id??null;try{let e=await u.getConversation(this.db,o.conversationId,r);e&&(0,n.broadcastToUser)(e.userId,{type:"conversation.message",conversationId:o.conversationId,message:(0,i.messageToResponse)(s)}).catch(()=>{})}catch{}}return await this.reconcileAgentStatus(o.agentId,o.workspaceId),await this.syncIssueStatusFromTask(o,"failed"),this.maybeUpsertUnread(o,r,h).catch(()=>{}),o}async syncIssueStatusFromTask(e,t){if(e.type!==a.TASK_TYPES.ISSUE_EVENT)return;let s=await h.getIssueByConversation(this.db,e.conversationId,e.workspaceId);if(!s||s.status===t||!await h.updateIssue(this.db,s.id,e.workspaceId,{status:t}))return;let r=await c.createMessage(this.db,{conversationId:e.conversationId,role:"event",content:`Issue status changed: ${s.status} -> ${t}`,taskId:e.id,metadata:JSON.stringify({issueId:s.id})});try{let t=await u.getConversation(this.db,e.conversationId,e.workspaceId);t&&(0,n.broadcastToUser)(t.userId,{type:"conversation.message",conversationId:e.conversationId,message:(0,i.messageToResponse)(r)}).catch(()=>{})}catch{}}async maybeUpsertUnread(e,t,a){if(!g.isUnreadEligible(e)||!e.completedAt)return;let s=await u.getConversation(this.db,e.conversationId,t);if(!s)return;let n=a??await g.findLatestAssistantMessageId(this.db,e.conversationId);await g.upsertUnreadEntry(this.db,{conversationId:e.conversationId,userId:s.userId,workspaceId:t,agentId:s.agentId,taskId:e.id,taskType:e.type,taskStatus:e.status,taskPrompt:e.prompt,completedAt:e.completedAt,latestMessageId:n})}async supersedeTask(e,t){let a=await d.supersedeTask(this.db,e,t);if(!a){let t=await d.getTask(this.db,e),a=t?.status??"unknown";throw s.log.warn(`supersedeTask failed: task is in '${a}' status`,{taskId:e}),Error(`cannot supersede task in '${a}' status`)}return await this.reconcileAgentStatus(a.agentId,a.workspaceId),a}async retryTask(e,t){let a=await d.getTask(this.db,e);if(!a||a.workspaceId!==t)throw Error("task not found");if("failed"!==a.status)throw Error("only failed tasks can be retried");let s=await d.markFailedAsSuperseded(this.db,e,t);if(!s)throw Error("failed to mark task as superseded");return{oldTask:s,newTask:await this.enqueueTask(a.agentId,a.conversationId,t,a.prompt,a.type,{contextKey:a.contextKey??null,context:a.context,traceId:a.traceId??null,parentTaskId:a.parentTaskId??null})}}async cancelActiveTask(e,i,r){let l=await d.getActiveTaskByConversation(this.db,e,i);if(!l)return null;let o=await d.cancelTask(this.db,l.id,i);if(!o)return null;if("dispatched"===l.status||"running"===l.status){let r=await d.createTask(this.db,{agentId:l.agentId,runtimeId:l.runtimeId,workspaceId:i,conversationId:e,prompt:"",type:a.TASK_TYPES.KILL_TASK,context:{target_task_id:l.id}});await d.dispatchTaskById(this.db,r.id,i);let o=await t.queries.runtime.getAgentRuntime(this.db,l.runtimeId);o&&(0,n.broadcastToDaemon)(o.daemonId,{type:"daemon.kill",workspaceId:i,agentId:l.agentId,taskId:r.id,targetTaskId:l.id}).catch(e=>s.log.warn("daemon.kill broadcast failed, relying on poll fallback",e))}return await c.createMessage(this.db,{conversationId:e,role:"assistant",content:r?.reason??"Task cancelled by you",taskId:l.id,metadata:JSON.stringify({kind:"lifecycle"})}),await this.reconcileAgentStatus(l.agentId,i),o}async reconcileAgentStatus(e,t){let a=await d.countRunningTasks(this.db,e,t);await o.updateAgentStatus(this.db,e,t,a>0?"working":"idle"),(0,r.invalidate)(r.cacheKeys.activeTaskCounts(t)).catch(()=>{})}async cancelTrace(e,t,a){for(let n of[...new Set((await d.getTraceTree(this.db,e,t)).filter(e=>["queued","dispatched","running"].includes(e.status)).map(e=>e.conversationId))])try{await this.cancelActiveTask(n,t,{reason:a?.reason})}catch(t){s.log.warn("cancelTrace: failed to cancel task",{traceId:e,convId:n,err:t})}}async pushTaskToDaemon(e,a){let s=await t.queries.runtime.getAgentRuntime(this.db,e.runtimeId);if(!s)return;let i=await d.dispatchTaskById(this.db,e.id,a);if(!i)return;let r=new l.TaskPayloadBuilder(this.db),o=await r.buildFullPayloads([i],a);if(0===o.length)return void await d.revertDispatchedToQueued(this.db,e.id,a);try{let{sent:t}=await (0,n.broadcastToDaemon)(s.daemonId,{type:"daemon.tasks",tasks:o});0===t&&await d.revertDispatchedToQueued(this.db,e.id,a)}catch{await d.revertDispatchedToQueued(this.db,e.id,a)}}}])},291320,e=>{"use strict";e.s(["isUniqueConstraintError",0,function e(t){if(t instanceof Error){if("SQLITE_CONSTRAINT_UNIQUE"===t.code||t.message.includes("UNIQUE"))return!0;if(t.cause)return e(t.cause)}return!1}])},318172,e=>{"use strict";e.s(["truncateTitle",0,function(e,t=50){let a=e.replace(/\s+/g," ").trim();if(a.length<=t)return a;let s=a.slice(0,t),n=s.lastIndexOf(" ");return(n>20?s.slice(0,n):s)+"..."}])},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=_0tzvy_s._.js.map
|
package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_13jq647._.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
module.exports=[192142,e=>e.a(async(t,a)=>{try{var r=e.i(931720);e.i(700598);var i=e.i(291109),n=e.i(888247),
|
|
1
|
+
module.exports=[192142,e=>e.a(async(t,a)=>{try{var r=e.i(931720);e.i(700598);var i=e.i(291109),n=e.i(888247),o=e.i(424166),s=e.i(469187),l=e.i(704024),d=e.i(719436),u=e.i(386581),c=e.i(675139),p=e.i(152327),m=e.i(47962),w=e.i(776227),h=e.i(740580);e.i(941775);var g=e.i(16700),y=e.i(205054),f=e.i(774078),k=t([p]);[p]=k.then?(await k)():k;let I=(0,p.withAuth)(async(e,t)=>{let a=await (0,m.withWorkspaceMember)(e,t);if(a instanceof Response)return a;let{env:p}=(0,r.getCloudflareContext)(),k=(0,c.getDb)(p.DB),[I,v]=await (0,w.parseBody)(e,n.CreateStudioRequestSchema);if(v)return v;let R=[...new Set(I.members.map(e=>e.runtime_id))],A=await i.queries.runtime.getAgentRuntimesForWorkspace(k,R,a.workspaceId,t.userId),E=new Map(A.map(e=>[e.id,e]));for(let e of R)if(!E.has(e))return(0,w.writeError)(`runtime ${e} not found in workspace`,404);let C=await i.queries.workspace.getWorkspace(k,a.workspaceId,t.userId);if(!C)return(0,w.writeError)("workspace not found",404);if(I.name&&"owner"===a.memberRole){let e=await i.queries.agent.listAgents(k,a.workspaceId),r=I.name.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"").slice(0,60);if(0===e.length&&r){let e=r,t=await i.queries.workspace.getWorkspaceBySlug(k,r);if(t&&t.id!==a.workspaceId){let t=!1;for(let n=0;n<5;n++){let n=(0,u.uniqueNamesGenerator)({dictionaries:[u.names],length:1,style:"lowerCase"}),o=`${r}-${n}`.slice(0,60),s=await i.queries.workspace.getWorkspaceBySlug(k,o);if(!s||s.id===a.workspaceId){e=o,t=!0;break}}t||(e=`${r}-${(0,d.nanoid)(6)}`)}let n=await i.queries.workspace.updateWorkspace(k,a.workspaceId,{name:I.name.trim(),slug:e});n&&(C=n)}else await i.queries.workspace.updateWorkspace(k,a.workspaceId,{name:I.name.trim()}),C=await i.queries.workspace.getWorkspace(k,a.workspaceId,t.userId)}let S=[],T=await (0,f.cached)(f.cacheKeys.allHandles(a.workspaceId),120,()=>i.queries.agent.getAllHandlesForWorkspace(k,a.workspaceId)),_=new Set(T.map(e=>e.emailHandle).filter(Boolean)),b=new Set;for(let e of I.members){let r=e.name;if(!r)do r=(0,u.uniqueNamesGenerator)({dictionaries:[u.names],length:1,style:"capital"});while(b.has(r))b.add(r);let n=e.email_handle&&(0,o.isValidHandle)(e.email_handle)&&!_.has(e.email_handle)?(_.add(e.email_handle),e.email_handle):function(e,t){let a=t.toLowerCase().replace(/[^a-z0-9-]/g,"").slice(0,30);if((0,o.isValidHandle)(a)&&!e.has(a))return e.add(a),a;for(let t=0;t<5;t++){let t=(0,u.uniqueNamesGenerator)({dictionaries:[u.names],length:1,style:"lowerCase"}),r=`${a}-${t}`.slice(0,30);if((0,o.isValidHandle)(r)&&!e.has(r))return e.add(r),r}let r=`${a}-${(0,d.nanoid)(6)}`;return e.add(r),r}(_,r),s=e.runtime_config,l=s?{..."string"==typeof s.model?{model:s.model}:{}}:null,c=E.get(e.runtime_id),p=await i.queries.agent.createAgent(k,{workspaceId:a.workspaceId,name:r,description:e.description||"",instructions:e.instructions||"",runtimeId:e.runtime_id,runtimeMode:c?.runtimeMode??"local",runtimeConfig:l,visibility:"private",maxConcurrentTasks:6,ownerId:t.userId,emailHandle:n,avatarUrl:e.avatar_url||(0,g.serializeAvatarConfig)((0,g.randomConfig)())});t.email&&await i.queries.whitelist.addWhitelist(k,p.id,a.workspaceId,t.email.toLowerCase()),S.push({id:p.id,role:e.role,name:r,emailHandle:p.emailHandle,runtimeId:p.runtimeId})}let q=S.find(e=>"leader"===e.role),P=S.filter(e=>"leader"!==e.role),x=[];for(let e of P){let t=S.indexOf(e),r=I.members[t];if(r?.relationship)try{let t=await i.queries.agentLink.create(k,{workspaceId:a.workspaceId,sourceAgentId:q.id,targetAgentId:e.id,instruction:r.relationship});x.push(t)}catch{}}let H=new Date().toISOString().slice(0,10);await Promise.all([(0,f.invalidate)(f.cacheKeys.allHandles(a.workspaceId)),(0,f.invalidate)(f.cacheKeys.allAgentAccess(a.workspaceId)),(0,f.invalidate)(f.cacheKeys.allMembers(a.workspaceId)),(0,f.invalidate)(f.cacheKeys.overviewTaskStats(a.workspaceId,H)),(0,f.invalidate)(f.cacheKeys.agentLinks(a.workspaceId))]);try{await i.queries.agentPin.pinAgent(k,{agentId:q.id,workspaceId:a.workspaceId,userId:t.userId}),(0,f.invalidate)(f.cacheKeys.pins(a.workspaceId,t.userId)).catch(()=>{})}catch{}let $=E.get(I.members.find(e=>"leader"===e.role).runtime_id);if(q.emailHandle&&t.email&&$&&(0,s.isOnline)($.machineLastSeenAt))try{let e=S.filter(e=>e.id!==q.id).map(e=>`- ${e.name} (${e.emailHandle?(0,o.toAlookAddress)(e.emailHandle):e.name}), role: ${e.role}`).join("\n"),r=1===S.length?`You have just been created by your owner (${t.email}). Please send them a welcome email introducing yourself as "${q.name}". In the email: 1) Introduce yourself warmly — your name, your email address, and what you can help with. 2) Briefly introduce the Alook platform. 3) Let them know they can chat with you directly or email you anytime. Be warm, professional, and concise.`:`You have just been created as the lead of a new AI studio by your owner (${t.email}). Your teammates are:
|
|
2
2
|
${e}
|
|
3
3
|
|
|
4
|
-
Please send a welcome email to your owner introducing yourself and all your teammates. Include: 1) Your name and email address. 2) Each teammate's name, email, and what they handle. 3) How the team works together — you coordinate and delegate to specialists. 4) Let them know they can email you directly to assign work. Be warm, professional, and concise.`,n=await i.queries.conversation.createConversation(k,{workspaceId:a.workspaceId,agentId:q.id,userId:t.userId,title:`Welcome: ${t.email}`.slice(0,50),type:l.TASK_TYPES.EMAIL_NOTIFICATION}),
|
|
4
|
+
Please send a welcome email to your owner introducing yourself and all your teammates. Include: 1) Your name and email address. 2) Each teammate's name, email, and what they handle. 3) How the team works together — you coordinate and delegate to specialists. 4) Let them know they can email you directly to assign work. Be warm, professional, and concise.`,n=await i.queries.conversation.createConversation(k,{workspaceId:a.workspaceId,agentId:q.id,userId:t.userId,title:`Welcome: ${t.email}`.slice(0,50),type:l.TASK_TYPES.EMAIL_NOTIFICATION}),s=new y.TaskService(k);await s.enqueueTask(q.id,n.id,a.workspaceId,r,l.TASK_TYPES.EMAIL_NOTIFICATION)}catch{}if(q&&$&&(0,s.isOnline)($.machineLastSeenAt))try{let e=S.filter(e=>e.id!==q.id).map(e=>`- ${e.name} (${e.emailHandle?(0,o.toAlookAddress)(e.emailHandle):e.name}), role: ${e.role}`).join("\n"),r=1===S.length?`You have just been created by your owner (${t.email}). Please introduce yourself as "${q.name}" in this chat. 1) Introduce yourself warmly — your name and what you can help with. 2) Briefly introduce the Alook platform. 3) Let them know they can chat with you directly or email you anytime. Be warm, professional, and concise. Reply in the same language as your owner's name or email suggests.`:`You have just been created as the lead of a new AI studio by your owner (${t.email}). Your teammates are:
|
|
5
5
|
${e}
|
|
6
6
|
|
|
7
|
-
Please introduce yourself and all your teammates in this chat. Include: 1) Your name. 2) Each teammate's name and what they handle. 3) How the team works together — you coordinate and delegate to specialists. 4) Let them know they can chat with you directly to assign work. Be warm, professional, and concise. Reply in the same language as your owner's name or email suggests.`,n=await i.queries.conversation.createConversation(k,{workspaceId:a.workspaceId,agentId:q.id,userId:t.userId,title:"Welcome",type:l.TASK_TYPES.USER_DM_MESSAGE}),
|
|
7
|
+
Please introduce yourself and all your teammates in this chat. Include: 1) Your name. 2) Each teammate's name and what they handle. 3) How the team works together — you coordinate and delegate to specialists. 4) Let them know they can chat with you directly to assign work. Be warm, professional, and concise. Reply in the same language as your owner's name or email suggests.`,n=await i.queries.conversation.createConversation(k,{workspaceId:a.workspaceId,agentId:q.id,userId:t.userId,title:"Welcome",type:l.TASK_TYPES.USER_DM_MESSAGE}),s=new y.TaskService(k);await s.enqueueTask(q.id,n.id,a.workspaceId,r,l.TASK_TYPES.USER_DM_MESSAGE)}catch{}let N=await i.queries.agent.listAgents(k,a.workspaceId,t.userId),O=new Set(S.map(e=>e.id)),M=N.filter(e=>O.has(e.id)),K=await i.queries.workspace.getWorkspace(k,a.workspaceId,t.userId);return(0,w.writeJSON)({studio:{name:K?.name||I.name||""},workspace:(0,h.workspaceToResponse)(K||C),leader_agent_id:q.id,agents:M.map(h.agentToResponse),links:x.map(h.agentLinkToResponse)},201)});e.s(["POST",0,I]),a()}catch(e){a(e)}},!1),754982,e=>e.a(async(t,a)=>{try{var r=e.i(618117),i=e.i(99200),n=e.i(864055),o=e.i(289578),s=e.i(641783),l=e.i(467635),d=e.i(541774),u=e.i(393982),c=e.i(325959),p=e.i(474834),m=e.i(800989),w=e.i(489409),h=e.i(203050),g=e.i(851100),y=e.i(55434),f=e.i(193695);e.i(163438);var k=e.i(118649),I=e.i(192142),v=t([I]);[I]=v.then?(await v)():v;let A=new r.AppRouteRouteModule({definition:{kind:i.RouteKind.APP_ROUTE,page:"/api/studios/route",pathname:"/api/studios",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/web/src/app/api/studios/route.ts",nextConfigOutput:"standalone",userland:I,...{}}),{workAsyncStorage:E,workUnitAsyncStorage:C,serverHooks:S}=A;async function R(e,t,a){a.requestMeta&&(0,o.setRequestMeta)(e,a.requestMeta),A.isDev&&(0,o.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let r="/api/studios/route";r=r.replace(/\/index$/,"")||"/";let n=await A.prepare(e,t,{srcPage:r,multiZoneDraftMode:!1});if(!n)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:I,deploymentId:v,params:R,nextConfig:E,parsedUrl:C,isDraftMode:S,prerenderManifest:T,routerServerContext:_,isOnDemandRevalidate:b,revalidateOnlyGenerated:q,resolvedPathname:P,clientReferenceManifest:x,serverActionsManifest:H}=n,$=(0,d.normalizeAppPath)(r),N=!!(T.dynamicRoutes[$]||T.routes[P]),O=async()=>((null==_?void 0:_.render404)?await _.render404(e,t,C,!1):t.end("This page could not be found"),null);if(N&&!S){let e=!!T.routes[P],t=T.dynamicRoutes[$];if(t&&!1===t.fallback&&!e){if(E.adapterPath)return await O();throw new f.NoFallbackError}}let M=null;!N||A.isDev||S||(M=P,M="/index"===M?"/":M);let K=!0===A.isDev||!N,L=N&&!K;H&&x&&(0,l.setManifestsSingleton)({page:r,clientReferenceManifest:x,serverActionsManifest:H});let U=e.method||"GET",D=(0,s.getTracer)(),B=D.getActiveScopeSpan(),W=!!(null==_?void 0:_.isWrappedByNextServer),j=!!(0,o.getRequestMeta)(e,"minimalMode"),F=(0,o.getRequestMeta)(e,"incrementalCache")||await A.getIncrementalCache(e,E,T,j);null==F||F.resetRequestCache(),globalThis.__incrementalCache=F;let Y={params:R,previewProps:T.preview,renderOpts:{experimental:{authInterrupts:!!E.experimental.authInterrupts},cacheComponents:!!E.cacheComponents,supportsDynamicResponse:K,incrementalCache:F,cacheLifeProfiles:E.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,r,i)=>A.onRequestError(e,t,r,i,_)},sharedContext:{buildId:I,deploymentId:v}},G=new u.NodeNextRequest(e),V=new u.NodeNextResponse(t),z=c.NextRequestAdapter.fromNodeNextRequest(G,(0,c.signalFromNodeResponse)(t));try{let n,o=async e=>A.handle(z,Y).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=D.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 i=a.get("next.route");if(i){let t=`${U} ${i}`;e.setAttributes({"next.route":i,"http.route":i,"next.span_name":t}),e.updateName(t),n&&n!==e&&(n.setAttribute("http.route",i),n.updateName(t))}else e.updateName(`${U} ${r}`)}),l=async n=>{var s,l;let d=async({previousCacheEntry:i})=>{try{if(!j&&b&&q&&!i)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let r=await o(n);e.fetchMetrics=Y.renderOpts.fetchMetrics;let s=Y.renderOpts.pendingWaitUntil;s&&a.waitUntil&&(a.waitUntil(s),s=void 0);let l=Y.renderOpts.collectedTags;if(!N)return await (0,w.sendResponse)(G,V,r,Y.renderOpts.pendingWaitUntil),null;{let e=await r.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(r.headers);l&&(t[y.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==Y.renderOpts.collectedRevalidate&&!(Y.renderOpts.collectedRevalidate>=y.INFINITE_CACHE)&&Y.renderOpts.collectedRevalidate,i=void 0===Y.renderOpts.collectedExpire||Y.renderOpts.collectedExpire>=y.INFINITE_CACHE?void 0:Y.renderOpts.collectedExpire;return{value:{kind:k.CachedRouteKind.APP_ROUTE,status:r.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:i}}}}catch(t){throw(null==i?void 0:i.isStale)&&await A.onRequestError(e,t,{routerKind:"App Router",routePath:r,routeType:"route",revalidateReason:(0,m.getRevalidateReason)({isStaticGeneration:L,isOnDemandRevalidate:b})},!1,_),t}},u=await A.handleResponse({req:e,nextConfig:E,cacheKey:M,routeKind:i.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:T,isRoutePPREnabled:!1,isOnDemandRevalidate:b,revalidateOnlyGenerated:q,responseGenerator:d,waitUntil:a.waitUntil,isMinimalMode:j});if(!N)return null;if((null==u||null==(s=u.value)?void 0:s.kind)!==k.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});j||t.setHeader("x-nextjs-cache",b?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),S&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let c=(0,h.fromNodeOutgoingHttpHeaders)(u.value.headers);return j&&N||c.delete(y.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,w.sendResponse)(G,V,new Response(u.value.body,{headers:c,status:u.value.status||200})),null};W&&B?await l(B):(n=D.getActiveScopeSpan(),await D.withPropagatedContext(e.headers,()=>D.trace(p.BaseServerSpan.handleRequest,{spanName:`${U} ${r}`,kind:s.SpanKind.SERVER,attributes:{"http.method":U,"http.target":e.url}},l),void 0,!W))}catch(t){if(t instanceof f.NoFallbackError||await A.onRequestError(e,t,{routerKind:"App Router",routePath:$,routeType:"route",revalidateReason:(0,m.getRevalidateReason)({isStaticGeneration:L,isOnDemandRevalidate:b})},!1,_),N)throw t;return await (0,w.sendResponse)(G,V,new Response(null,{status:500})),null}}e.s(["handler",0,R,"patchFetch",0,function(){return(0,n.patchFetch)({workAsyncStorage:E,workUnitAsyncStorage:C})},"routeModule",0,A,"serverHooks",0,S,"workAsyncStorage",0,E,"workUnitAsyncStorage",0,C]),a()}catch(e){a(e)}},!1)];
|
|
8
8
|
|
|
9
9
|
//# sourceMappingURL=_13jq647._.js.map
|
package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_18v5918._.js
CHANGED
|
@@ -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 o=await a.WS_DO_WORKER.fetch(`http://internal${e}`,{method:"POST",body:n});if(o.ok)try{return{sent:(await o.json()).sent??0}}catch{return{sent:0}}s.warn("broadcast service-binding non-ok",{...i,status:o.status})}catch{}let o=r||a.DEV_WS_DO_URL,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 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 o=e.filter(e=>e.type!==a.TASK_TYPES.KILL_TASK),l=[...new Set(o.map(e=>e.agentId))],[d,c,u]=l.length>0?await Promise.all([(0,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(d.map(e=>[e.id,e])),p=new Map;for(let e of c){let t=p.get(e.agentId)??[];t.push(e.emailAddress),p.set(e.agentId,t)}let w=new Map;for(let e of u){let t=w.get(e.agentId)??[];t.push(e),w.set(e.agentId,t)}let m=[...new Set(o.map(e=>e.conversationId).filter(Boolean))],g=new Map((m.length>0?await t.queries.conversation.getConversationsByIds(this.db,m,r):[]).map(e=>[e.id,e])),I=new Map,f=new Map,k=[];for(let o of e){if(o.type===a.TASK_TYPES.KILL_TASK){k.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,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&&(d=[a.globalInstruction,d].filter(Boolean).join("\n\n"))}let c=null;if(e?.ownerId){if(!f.has(e.ownerId)){let a=await (0,i.cached)(i.cacheKeys.user(e.ownerId),1800,()=>t.queries.user.getUser(this.db,e.ownerId));f.set(e.ownerId,a?{name:a.name,email:a.email}:null)}c=f.get(e.ownerId)?.name??null}let u=g.get(o.conversationId)??null,m=u?.channel??"default",T=null;if(o.type===a.TASK_TYPES.USER_DM_MESSAGE&&u?.userId){if(!f.has(u.userId)){let e=await (0,i.cached)(i.cacheKeys.user(u.userId),1800,()=>t.queries.user.getUser(this.db,u.userId));f.set(u.userId,e?{name:e.name,email:e.email}:null)}let a=f.get(u.userId);a&&(T={name:a.name,email:a.email,is_owner:u.userId===e?.ownerId})}let y=(w.get(o.agentId)??[]).map(e=>({name:e.name,email:e.emailHandle?(0,s.toAlookAddress)(e.emailHandle):"",description:e.description,instruction:e.instruction}));k.push({...(0,n.taskToResponse)(o),channel:m,sender:T,agent:e?{instructions:d,name:e.name,runtime_config:e.runtimeConfig||{},email_handle:e.emailHandle||null,email_addresses:l,user_email:null,user_name:c,colleagues:y}:null})}return k}}])},205054,e=>{"use strict";e.i(700598);var t=e.i(291109),a=e.i(704024),s=e.i(511456),n=e.i(726089),i=e.i(740580),r=e.i(774078),o=e.i(555230);let l=t.queries.task,d=t.queries.agent,c=t.queries.message,u=t.queries.conversation,h=t.queries.issue,p=t.queries.inbox;e.s(["TaskService",0,class{db;constructor(e){this.db=e}async enqueueTask(e,t,s,n,i=a.TASK_TYPES.USER_DM_MESSAGE,o){let c=await d.getAgent(this.db,e,s);if(!c)throw Error("agent not found");if(!c.runtimeId)throw Error("agent has no runtime");if(o?.traceId&&o.parentTaskId&&await l.countTasksByTrace(this.db,o.traceId)>=a.MAX_TASKS_PER_TRACE)throw Error(`Trace limit reached (${a.MAX_TASKS_PER_TRACE} tasks). This may indicate an infinite loop between agents.`);let u=await l.createTask(this.db,{agentId:e,runtimeId:c.runtimeId,workspaceId:s,conversationId:t,prompt:n,type:i,contextKey:o?.contextKey??null,priority:0,context:o?.context,traceId:o?.traceId??null,parentTaskId:o?.parentTaskId??null});return(0,r.invalidate)(r.cacheKeys.activeTaskCounts(s)).catch(()=>{}),await this.pushTaskToDaemon(u,s).catch(()=>{}),u}async claimTask(e,t){let a=await 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,i=n>0?await l.listPendingTasksByRuntimes(this.db,e,a):[],r=new Set(e),o=new Set,c=[...s],u=[];for(let e of i){if(u.length>=n)break;let t=`${e.agentId}:${e.workspaceId}`;o.has(t)||(o.add(t),u.push(e))}if(0===u.length)return c;let h=[...new Set(u.map(e=>e.agentId))],p=new Map((await d.getAgentsByIds(this.db,h,a)).map(e=>[e.id,e]));for(let e of(await Promise.all(u.map(e=>this.claimTaskWithAgent(e.agentId,e.workspaceId,p.get(e.agentId)??null)))))e&&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,o){let d=await l.failTask(this.db,e,r,o);if(!d){let t=await l.getTask(this.db,e),a=t?.status??"unknown";throw s.log.warn(`failTask failed: task is in '${a}' status`,{taskId:e}),Error(`cannot fail task in '${a}' status`)}if(d.type===a.TASK_TYPES.KILL_TASK)return d;let h=null;if(o){let a=null;try{if(d.runtimeId){let e=await t.queries.runtime.getAgentRuntime(this.db,d.runtimeId);a=e?.provider??null}}catch{}let s=await c.createMessage(this.db,{conversationId:d.conversationId,role:"assistant",content:o,taskId:e,metadata:JSON.stringify({error_source:"runtime",provider:a})});h=s?.id??null;try{let e=await u.getConversation(this.db,d.conversationId,r);e&&(0,n.broadcastToUser)(e.userId,{type:"conversation.message",conversationId:d.conversationId,message:(0,i.messageToResponse)(s)}).catch(()=>{})}catch{}}return await this.reconcileAgentStatus(d.agentId,d.workspaceId),await this.syncIssueStatusFromTask(d,"failed"),this.maybeUpsertUnread(d,r,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 r=await c.createMessage(this.db,{conversationId:e.conversationId,role:"event",content:`Issue status changed: ${s.status} -> ${t}`,taskId:e.id,metadata:JSON.stringify({issueId:s.id})});try{let t=await u.getConversation(this.db,e.conversationId,e.workspaceId);t&&(0,n.broadcastToUser)(t.userId,{type:"conversation.message",conversationId:e.conversationId,message:(0,i.messageToResponse)(r)}).catch(()=>{})}catch{}}async maybeUpsertUnread(e,t,a){if(!p.isUnreadEligible(e)||!e.completedAt)return;let s=await u.getConversation(this.db,e.conversationId,t);if(!s)return;let n=a??await p.findLatestAssistantMessageId(this.db,e.conversationId);await p.upsertUnreadEntry(this.db,{conversationId:e.conversationId,userId:s.userId,workspaceId:t,agentId:s.agentId,taskId:e.id,taskType:e.type,taskStatus:e.status,taskPrompt:e.prompt,completedAt:e.completedAt,latestMessageId:n})}async supersedeTask(e,t){let a=await 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 o=await l.getActiveTaskByConversation(this.db,e,i);if(!o)return null;let d=await l.cancelTask(this.db,o.id,i);if(!d)return null;if("dispatched"===o.status||"running"===o.status){let r=await l.createTask(this.db,{agentId:o.agentId,runtimeId:o.runtimeId,workspaceId:i,conversationId:e,prompt:"",type:a.TASK_TYPES.KILL_TASK,context:{target_task_id:o.id}});await l.dispatchTaskById(this.db,r.id,i);let d=await t.queries.runtime.getAgentRuntime(this.db,o.runtimeId);d&&(0,n.broadcastToDaemon)(d.daemonId,{type:"daemon.kill",workspaceId:i,agentId:o.agentId,taskId:r.id,targetTaskId:o.id}).catch(e=>s.log.warn("daemon.kill broadcast failed, relying on poll fallback",e))}return await c.createMessage(this.db,{conversationId:e,role:"assistant",content:r?.reason??"Task cancelled by you",taskId:o.id,metadata:JSON.stringify({kind:"lifecycle"})}),await this.reconcileAgentStatus(o.agentId,i),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,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 o.TaskPayloadBuilder(this.db),d=await r.buildFullPayloads([i],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)}}}])},99293,e=>e.a(async(t,a)=>{try{var s=e.i(931720);e.i(700598);var n=e.i(291109),i=e.i(888247),r=e.i(704024),o=e.i(675139),l=e.i(152327),d=e.i(47962),c=e.i(776227),u=e.i(205054),h=e.i(774078),p=t([l]);[l]=p.then?(await p)():p;let w=(0,l.withAuth)(async(e,t)=>{let a=await (0,d.withWorkspaceMember)(e,t);if(a instanceof Response)return a;let{env:i}=(0,s.getCloudflareContext)(),r=(0,o.getDb)(i.DB),l=t.params?.id;if(!l)return(0,c.writeError)("agent id is required",400);if(!await n.queries.agent.getAgent(r,l,a.workspaceId,t.userId))return(0,c.writeError)("agent not found",404);let u=await n.queries.whitelist.getWhitelist(r,l,a.workspaceId);return(0,c.writeJSON)(u.map(e=>({id:e.id,email:e.email,created_at:(0,c.formatTimestamp)(e.createdAt)})))}),m=(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)(),p=(0,o.getDb)(l.DB),w=t.params?.id;if(!w)return(0,c.writeError)("agent id is required",400);let m=await n.queries.agent.getAgent(p,w,a.workspaceId,t.userId);if(!m)return(0,c.writeError)("agent not found",404);let[g,I]=await (0,c.parseBody)(e,i.AddWhitelistRequestSchema);if(I)return I;let f=g.email.toLowerCase(),k=await n.queries.whitelist.addWhitelist(p,w,a.workspaceId,f);if(!k)return(0,c.writeError)("email already whitelisted",409);if(m.runtimeId&&m.emailHandle&&m.ownerId)try{let e=await n.queries.conversation.createConversation(p,{workspaceId:a.workspaceId,agentId:m.id,userId:m.ownerId,title:`Welcome: ${f}`.slice(0,50),type:r.TASK_TYPES.EMAIL_NOTIFICATION}),s=new u.TaskService(p);await s.enqueueTask(m.id,e.id,a.workspaceId,`Your owner (${t.email}) has added a new contact to your whitelist: ${f}. Please compose and send them a welcome email introducing yourself as "${m.name}". Be warm and professional. Let them know they can reach you at your email address and briefly describe how you can help them.`,r.TASK_TYPES.EMAIL_NOTIFICATION);let i=new Date().toISOString().slice(0,10);(0,h.invalidate)(h.cacheKeys.overviewTaskStats(a.workspaceId,i)).catch(()=>{}),(0,h.invalidate)(h.cacheKeys.activeTaskCounts(a.workspaceId)).catch(()=>{})}catch{}return(0,c.writeJSON)({id:k.id,email:k.email,created_at:(0,c.formatTimestamp)(k.createdAt)},201)});e.s(["GET",0,w,"POST",0,m]),a()}catch(e){a(e)}},!1),47553,e=>e.a(async(t,a)=>{try{var s=e.i(618117),n=e.i(99200),i=e.i(864055),r=e.i(289578),o=e.i(641783),l=e.i(467635),d=e.i(541774),c=e.i(393982),u=e.i(325959),h=e.i(474834),p=e.i(800989),w=e.i(489409),m=e.i(203050),g=e.i(851100),I=e.i(55434),f=e.i(193695);e.i(163438);var k=e.i(118649),T=e.i(99293),y=t([T]);[T]=y.then?(await y)():y;let v=new s.AppRouteRouteModule({definition:{kind:n.RouteKind.APP_ROUTE,page:"/api/agents/[id]/whitelist/route",pathname:"/api/agents/[id]/whitelist",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/web/src/app/api/agents/[id]/whitelist/route.ts",nextConfigOutput:"standalone",userland:T,...{}}),{workAsyncStorage:A,workUnitAsyncStorage:_,serverHooks:S}=v;async function b(e,t,a){a.requestMeta&&(0,r.setRequestMeta)(e,a.requestMeta),v.isDev&&(0,r.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let s="/api/agents/[id]/whitelist/route";s=s.replace(/\/index$/,"")||"/";let i=await v.prepare(e,t,{srcPage:s,multiZoneDraftMode:!1});if(!i)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:A,parsedUrl:_,isDraftMode:S,prerenderManifest:E,routerServerContext:R,isOnDemandRevalidate:C,revalidateOnlyGenerated:P,resolvedPathname:x,clientReferenceManifest:q,serverActionsManifest:K}=i,O=(0,d.normalizeAppPath)(s),N=!!(E.dynamicRoutes[O]||E.routes[x]),M=async()=>((null==R?void 0:R.render404)?await R.render404(e,t,_,!1):t.end("This page could not be found"),null);if(N&&!S){let e=!!E.routes[x],t=E.dynamicRoutes[O];if(t&&!1===t.fallback&&!e){if(A.adapterPath)return await M();throw new f.NoFallbackError}}let U=null;!N||v.isDev||S||(U=x,U="/index"===U?"/":U);let D=!0===v.isDev||!N,$=N&&!D;K&&q&&(0,l.setManifestsSingleton)({page:s,clientReferenceManifest:q,serverActionsManifest:K});let L=e.method||"GET",B=(0,o.getTracer)(),H=B.getActiveScopeSpan(),W=!!(null==R?void 0:R.isWrappedByNextServer),F=!!(0,r.getRequestMeta)(e,"minimalMode"),j=(0,r.getRequestMeta)(e,"incrementalCache")||await v.getIncrementalCache(e,A,E,F);null==j||j.resetRequestCache(),globalThis.__incrementalCache=j;let Y={params:b,previewProps:E.preview,renderOpts:{experimental:{authInterrupts:!!A.experimental.authInterrupts},cacheComponents:!!A.cacheComponents,supportsDynamicResponse:D,incrementalCache:j,cacheLifeProfiles:A.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}},J=new c.NodeNextRequest(e),G=new c.NodeNextResponse(t),V=u.NextRequestAdapter.fromNodeNextRequest(J,(0,u.signalFromNodeResponse)(t));try{let i,r=async e=>v.handle(V,Y).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=B.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==h.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=a.get("next.route");if(n){let t=`${L} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t),i&&i!==e&&(i.setAttribute("http.route",n),i.updateName(t))}else e.updateName(`${L} ${s}`)}),l=async i=>{var o,l;let d=async({previousCacheEntry:n})=>{try{if(!F&&C&&P&&!n)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await r(i);e.fetchMetrics=Y.renderOpts.fetchMetrics;let o=Y.renderOpts.pendingWaitUntil;o&&a.waitUntil&&(a.waitUntil(o),o=void 0);let l=Y.renderOpts.collectedTags;if(!N)return await (0,w.sendResponse)(J,G,s,Y.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,m.toNodeOutgoingHttpHeaders)(s.headers);l&&(t[I.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==Y.renderOpts.collectedRevalidate&&!(Y.renderOpts.collectedRevalidate>=I.INFINITE_CACHE)&&Y.renderOpts.collectedRevalidate,n=void 0===Y.renderOpts.collectedExpire||Y.renderOpts.collectedExpire>=I.INFINITE_CACHE?void 0:Y.renderOpts.collectedExpire;return{value:{kind:k.CachedRouteKind.APP_ROUTE,status:s.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:n}}}}catch(t){throw(null==n?void 0:n.isStale)&&await v.onRequestError(e,t,{routerKind:"App Router",routePath:s,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:$,isOnDemandRevalidate:C})},!1,R),t}},c=await v.handleResponse({req:e,nextConfig:A,cacheKey:U,routeKind:n.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:E,isRoutePPREnabled:!1,isOnDemandRevalidate:C,revalidateOnlyGenerated:P,responseGenerator:d,waitUntil:a.waitUntil,isMinimalMode:F});if(!N)return null;if((null==c||null==(o=c.value)?void 0:o.kind)!==k.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==c||null==(l=c.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});F||t.setHeader("x-nextjs-cache",C?"REVALIDATED":c.isMiss?"MISS":c.isStale?"STALE":"HIT"),S&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let u=(0,m.fromNodeOutgoingHttpHeaders)(c.value.headers);return F&&N||u.delete(I.NEXT_CACHE_TAGS_HEADER),!c.cacheControl||t.getHeader("Cache-Control")||u.get("Cache-Control")||u.set("Cache-Control",(0,g.getCacheControlHeader)(c.cacheControl)),await (0,w.sendResponse)(J,G,new Response(c.value.body,{headers:u,status:c.value.status||200})),null};W&&H?await l(H):(i=B.getActiveScopeSpan(),await B.withPropagatedContext(e.headers,()=>B.trace(h.BaseServerSpan.handleRequest,{spanName:`${L} ${s}`,kind:o.SpanKind.SERVER,attributes:{"http.method":L,"http.target":e.url}},l),void 0,!W))}catch(t){if(t instanceof f.NoFallbackError||await v.onRequestError(e,t,{routerKind:"App Router",routePath:O,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:$,isOnDemandRevalidate:C})},!1,R),N)throw t;return await (0,w.sendResponse)(J,G,new Response(null,{status:500})),null}}e.s(["handler",0,b,"patchFetch",0,function(){return(0,i.patchFetch)({workAsyncStorage:A,workUnitAsyncStorage:_})},"routeModule",0,v,"serverHooks",0,S,"workAsyncStorage",0,A,"workUnitAsyncStorage",0,_]),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=[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 o=await a.WS_DO_WORKER.fetch(`http://internal${e}`,{method:"POST",body:n});if(o.ok)try{return{sent:(await o.json()).sent??0}}catch{return{sent:0}}s.warn("broadcast service-binding non-ok",{...i,status:o.status})}catch{}let o=r||a.DEV_WS_DO_URL,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 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 o=e.filter(e=>e.type!==a.TASK_TYPES.KILL_TASK),l=[...new Set(o.map(e=>e.agentId))],[d,c,u]=l.length>0?await Promise.all([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(d.map(e=>[e.id,e])),p=new Map;for(let e of c){let t=p.get(e.agentId)??[];t.push(e.emailAddress),p.set(e.agentId,t)}let w=new Map;for(let e of u){let t=w.get(e.agentId)??[];t.push(e),w.set(e.agentId,t)}let m=[...new Set(o.map(e=>e.conversationId).filter(Boolean))],g=new Map((m.length>0?await t.queries.conversation.getConversationsByIds(this.db,m,r):[]).map(e=>[e.id,e])),I=new Map,f=new Map,k=[];for(let o of e){if(o.type===a.TASK_TYPES.KILL_TASK){k.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,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&&(d=[a.globalInstruction,d].filter(Boolean).join("\n\n"))}let c=null;if(e?.ownerId){if(!f.has(e.ownerId)){let a=await (0,i.cached)(i.cacheKeys.user(e.ownerId),1800,()=>t.queries.user.getUser(this.db,e.ownerId));f.set(e.ownerId,a?{name:a.name,email:a.email}:null)}c=f.get(e.ownerId)?.name??null}let u=g.get(o.conversationId)??null,m=u?.channel??"default",T=null;if(o.type===a.TASK_TYPES.USER_DM_MESSAGE&&u?.userId){if(!f.has(u.userId)){let e=await (0,i.cached)(i.cacheKeys.user(u.userId),1800,()=>t.queries.user.getUser(this.db,u.userId));f.set(u.userId,e?{name:e.name,email:e.email}:null)}let a=f.get(u.userId);a&&(T={name:a.name,email:a.email,is_owner:u.userId===e?.ownerId})}let y=(w.get(o.agentId)??[]).map(e=>({name:e.name,email:e.emailHandle?(0,s.toAlookAddress)(e.emailHandle):"",description:e.description,instruction:e.instruction}));k.push({...(0,n.taskToResponse)(o),channel:m,sender:T,agent:e?{instructions:d,name:e.name,runtime_config:e.runtimeConfig||{},email_handle:e.emailHandle||null,email_addresses:l,user_email:null,user_name:c,colleagues:y}:null})}return k}}])},205054,e=>{"use strict";e.i(700598);var t=e.i(291109),a=e.i(704024),s=e.i(511456),n=e.i(726089),i=e.i(740580),r=e.i(774078),o=e.i(555230);let l=t.queries.task,d=t.queries.agent,c=t.queries.message,u=t.queries.conversation,h=t.queries.issue,p=t.queries.inbox;e.s(["TaskService",0,class{db;constructor(e){this.db=e}async enqueueTask(e,t,s,n,i=a.TASK_TYPES.USER_DM_MESSAGE,o){let c=await d.getAgent(this.db,e,s);if(!c)throw Error("agent not found");if(!c.runtimeId)throw Error("agent has no runtime");if(o?.traceId&&o.parentTaskId&&await l.countTasksByTrace(this.db,o.traceId)>=a.MAX_TASKS_PER_TRACE)throw Error(`Trace limit reached (${a.MAX_TASKS_PER_TRACE} tasks). This may indicate an infinite loop between agents.`);let u=await l.createTask(this.db,{agentId:e,runtimeId:c.runtimeId,workspaceId:s,conversationId:t,prompt:n,type:i,contextKey:o?.contextKey??null,priority:0,context:o?.context,traceId:o?.traceId??null,parentTaskId:o?.parentTaskId??null});return(0,r.invalidate)(r.cacheKeys.activeTaskCounts(s)).catch(()=>{}),await this.pushTaskToDaemon(u,s).catch(()=>{}),u}async claimTask(e,t){let a=await 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,i=n>0?await l.listPendingTasksByRuntimes(this.db,e,a):[],r=new Set(e),o=new Set,c=[...s],u=[];for(let e of i){if(u.length>=n)break;let t=`${e.agentId}:${e.workspaceId}`;o.has(t)||(o.add(t),u.push(e))}if(0===u.length)return c;let h=[...new Set(u.map(e=>e.agentId))],p=new Map((await d.getAgentsByIds(this.db,h,a)).map(e=>[e.id,e]));for(let e of(await Promise.all(u.map(e=>this.claimTaskWithAgent(e.agentId,e.workspaceId,p.get(e.agentId)??null)))))e&&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,o){let d=await l.failTask(this.db,e,r,o);if(!d){let t=await l.getTask(this.db,e),a=t?.status??"unknown";throw s.log.warn(`failTask failed: task is in '${a}' status`,{taskId:e}),Error(`cannot fail task in '${a}' status`)}if(d.type===a.TASK_TYPES.KILL_TASK)return d;let h=null;if(o){let a=null;try{if(d.runtimeId){let e=await t.queries.runtime.getAgentRuntime(this.db,d.runtimeId);a=e?.provider??null}}catch{}let s=await c.createMessage(this.db,{conversationId:d.conversationId,role:"assistant",content:o,taskId:e,metadata:JSON.stringify({error_source:"runtime",provider:a})});h=s?.id??null;try{let e=await u.getConversation(this.db,d.conversationId,r);e&&(0,n.broadcastToUser)(e.userId,{type:"conversation.message",conversationId:d.conversationId,message:(0,i.messageToResponse)(s)}).catch(()=>{})}catch{}}return await this.reconcileAgentStatus(d.agentId,d.workspaceId),await this.syncIssueStatusFromTask(d,"failed"),this.maybeUpsertUnread(d,r,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 r=await c.createMessage(this.db,{conversationId:e.conversationId,role:"event",content:`Issue status changed: ${s.status} -> ${t}`,taskId:e.id,metadata:JSON.stringify({issueId:s.id})});try{let t=await u.getConversation(this.db,e.conversationId,e.workspaceId);t&&(0,n.broadcastToUser)(t.userId,{type:"conversation.message",conversationId:e.conversationId,message:(0,i.messageToResponse)(r)}).catch(()=>{})}catch{}}async maybeUpsertUnread(e,t,a){if(!p.isUnreadEligible(e)||!e.completedAt)return;let s=await u.getConversation(this.db,e.conversationId,t);if(!s)return;let n=a??await p.findLatestAssistantMessageId(this.db,e.conversationId);await p.upsertUnreadEntry(this.db,{conversationId:e.conversationId,userId:s.userId,workspaceId:t,agentId:s.agentId,taskId:e.id,taskType:e.type,taskStatus:e.status,taskPrompt:e.prompt,completedAt:e.completedAt,latestMessageId:n})}async supersedeTask(e,t){let a=await 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 o=await l.getActiveTaskByConversation(this.db,e,i);if(!o)return null;let d=await l.cancelTask(this.db,o.id,i);if(!d)return null;if("dispatched"===o.status||"running"===o.status){let r=await l.createTask(this.db,{agentId:o.agentId,runtimeId:o.runtimeId,workspaceId:i,conversationId:e,prompt:"",type:a.TASK_TYPES.KILL_TASK,context:{target_task_id:o.id}});await l.dispatchTaskById(this.db,r.id,i);let d=await t.queries.runtime.getAgentRuntime(this.db,o.runtimeId);d&&(0,n.broadcastToDaemon)(d.daemonId,{type:"daemon.kill",workspaceId:i,agentId:o.agentId,taskId:r.id,targetTaskId:o.id}).catch(e=>s.log.warn("daemon.kill broadcast failed, relying on poll fallback",e))}return await c.createMessage(this.db,{conversationId:e,role:"assistant",content:r?.reason??"Task cancelled by you",taskId:o.id,metadata:JSON.stringify({kind:"lifecycle"})}),await this.reconcileAgentStatus(o.agentId,i),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,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 o.TaskPayloadBuilder(this.db),d=await r.buildFullPayloads([i],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)}}}])},99293,e=>e.a(async(t,a)=>{try{var s=e.i(931720);e.i(700598);var n=e.i(291109),i=e.i(888247),r=e.i(704024),o=e.i(675139),l=e.i(152327),d=e.i(47962),c=e.i(776227),u=e.i(205054),h=e.i(774078),p=t([l]);[l]=p.then?(await p)():p;let w=(0,l.withAuth)(async(e,t)=>{let a=await (0,d.withWorkspaceMember)(e,t);if(a instanceof Response)return a;let{env:i}=(0,s.getCloudflareContext)(),r=(0,o.getDb)(i.DB),l=t.params?.id;if(!l)return(0,c.writeError)("agent id is required",400);if(!await n.queries.agent.getAgent(r,l,a.workspaceId,t.userId))return(0,c.writeError)("agent not found",404);let u=await n.queries.whitelist.getWhitelist(r,l,a.workspaceId);return(0,c.writeJSON)(u.map(e=>({id:e.id,email:e.email,created_at:(0,c.formatTimestamp)(e.createdAt)})))}),m=(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)(),p=(0,o.getDb)(l.DB),w=t.params?.id;if(!w)return(0,c.writeError)("agent id is required",400);let m=await n.queries.agent.getAgent(p,w,a.workspaceId,t.userId);if(!m)return(0,c.writeError)("agent not found",404);let[g,I]=await (0,c.parseBody)(e,i.AddWhitelistRequestSchema);if(I)return I;let f=g.email.toLowerCase(),k=await n.queries.whitelist.addWhitelist(p,w,a.workspaceId,f);if(!k)return(0,c.writeError)("email already whitelisted",409);if(m.runtimeId&&m.emailHandle&&m.ownerId)try{let e=await n.queries.conversation.createConversation(p,{workspaceId:a.workspaceId,agentId:m.id,userId:m.ownerId,title:`Welcome: ${f}`.slice(0,50),type:r.TASK_TYPES.EMAIL_NOTIFICATION}),s=new u.TaskService(p);await s.enqueueTask(m.id,e.id,a.workspaceId,`Your owner (${t.email}) has added a new contact to your whitelist: ${f}. Please compose and send them a welcome email introducing yourself as "${m.name}". Be warm and professional. Let them know they can reach you at your email address and briefly describe how you can help them.`,r.TASK_TYPES.EMAIL_NOTIFICATION);let i=new Date().toISOString().slice(0,10);(0,h.invalidate)(h.cacheKeys.overviewTaskStats(a.workspaceId,i)).catch(()=>{}),(0,h.invalidate)(h.cacheKeys.activeTaskCounts(a.workspaceId)).catch(()=>{})}catch{}return(0,c.writeJSON)({id:k.id,email:k.email,created_at:(0,c.formatTimestamp)(k.createdAt)},201)});e.s(["GET",0,w,"POST",0,m]),a()}catch(e){a(e)}},!1),47553,e=>e.a(async(t,a)=>{try{var s=e.i(618117),n=e.i(99200),i=e.i(864055),r=e.i(289578),o=e.i(641783),l=e.i(467635),d=e.i(541774),c=e.i(393982),u=e.i(325959),h=e.i(474834),p=e.i(800989),w=e.i(489409),m=e.i(203050),g=e.i(851100),I=e.i(55434),f=e.i(193695);e.i(163438);var k=e.i(118649),T=e.i(99293),y=t([T]);[T]=y.then?(await y)():y;let v=new s.AppRouteRouteModule({definition:{kind:n.RouteKind.APP_ROUTE,page:"/api/agents/[id]/whitelist/route",pathname:"/api/agents/[id]/whitelist",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/web/src/app/api/agents/[id]/whitelist/route.ts",nextConfigOutput:"standalone",userland:T,...{}}),{workAsyncStorage:A,workUnitAsyncStorage:_,serverHooks:S}=v;async function b(e,t,a){a.requestMeta&&(0,r.setRequestMeta)(e,a.requestMeta),v.isDev&&(0,r.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let s="/api/agents/[id]/whitelist/route";s=s.replace(/\/index$/,"")||"/";let i=await v.prepare(e,t,{srcPage:s,multiZoneDraftMode:!1});if(!i)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:A,parsedUrl:_,isDraftMode:S,prerenderManifest:E,routerServerContext:R,isOnDemandRevalidate:C,revalidateOnlyGenerated:P,resolvedPathname:x,clientReferenceManifest:q,serverActionsManifest:O}=i,K=(0,d.normalizeAppPath)(s),N=!!(E.dynamicRoutes[K]||E.routes[x]),M=async()=>((null==R?void 0:R.render404)?await R.render404(e,t,_,!1):t.end("This page could not be found"),null);if(N&&!S){let e=!!E.routes[x],t=E.dynamicRoutes[K];if(t&&!1===t.fallback&&!e){if(A.adapterPath)return await M();throw new f.NoFallbackError}}let U=null;!N||v.isDev||S||(U=x,U="/index"===U?"/":U);let D=!0===v.isDev||!N,$=N&&!D;O&&q&&(0,l.setManifestsSingleton)({page:s,clientReferenceManifest:q,serverActionsManifest:O});let L=e.method||"GET",B=(0,o.getTracer)(),H=B.getActiveScopeSpan(),W=!!(null==R?void 0:R.isWrappedByNextServer),F=!!(0,r.getRequestMeta)(e,"minimalMode"),j=(0,r.getRequestMeta)(e,"incrementalCache")||await v.getIncrementalCache(e,A,E,F);null==j||j.resetRequestCache(),globalThis.__incrementalCache=j;let Y={params:b,previewProps:E.preview,renderOpts:{experimental:{authInterrupts:!!A.experimental.authInterrupts},cacheComponents:!!A.cacheComponents,supportsDynamicResponse:D,incrementalCache:j,cacheLifeProfiles:A.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}},J=new c.NodeNextRequest(e),G=new c.NodeNextResponse(t),V=u.NextRequestAdapter.fromNodeNextRequest(J,(0,u.signalFromNodeResponse)(t));try{let i,r=async e=>v.handle(V,Y).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=B.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==h.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=a.get("next.route");if(n){let t=`${L} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t),i&&i!==e&&(i.setAttribute("http.route",n),i.updateName(t))}else e.updateName(`${L} ${s}`)}),l=async i=>{var o,l;let d=async({previousCacheEntry:n})=>{try{if(!F&&C&&P&&!n)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await r(i);e.fetchMetrics=Y.renderOpts.fetchMetrics;let o=Y.renderOpts.pendingWaitUntil;o&&a.waitUntil&&(a.waitUntil(o),o=void 0);let l=Y.renderOpts.collectedTags;if(!N)return await (0,w.sendResponse)(J,G,s,Y.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,m.toNodeOutgoingHttpHeaders)(s.headers);l&&(t[I.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==Y.renderOpts.collectedRevalidate&&!(Y.renderOpts.collectedRevalidate>=I.INFINITE_CACHE)&&Y.renderOpts.collectedRevalidate,n=void 0===Y.renderOpts.collectedExpire||Y.renderOpts.collectedExpire>=I.INFINITE_CACHE?void 0:Y.renderOpts.collectedExpire;return{value:{kind:k.CachedRouteKind.APP_ROUTE,status:s.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:n}}}}catch(t){throw(null==n?void 0:n.isStale)&&await v.onRequestError(e,t,{routerKind:"App Router",routePath:s,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:$,isOnDemandRevalidate:C})},!1,R),t}},c=await v.handleResponse({req:e,nextConfig:A,cacheKey:U,routeKind:n.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:E,isRoutePPREnabled:!1,isOnDemandRevalidate:C,revalidateOnlyGenerated:P,responseGenerator:d,waitUntil:a.waitUntil,isMinimalMode:F});if(!N)return null;if((null==c||null==(o=c.value)?void 0:o.kind)!==k.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==c||null==(l=c.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});F||t.setHeader("x-nextjs-cache",C?"REVALIDATED":c.isMiss?"MISS":c.isStale?"STALE":"HIT"),S&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let u=(0,m.fromNodeOutgoingHttpHeaders)(c.value.headers);return F&&N||u.delete(I.NEXT_CACHE_TAGS_HEADER),!c.cacheControl||t.getHeader("Cache-Control")||u.get("Cache-Control")||u.set("Cache-Control",(0,g.getCacheControlHeader)(c.cacheControl)),await (0,w.sendResponse)(J,G,new Response(c.value.body,{headers:u,status:c.value.status||200})),null};W&&H?await l(H):(i=B.getActiveScopeSpan(),await B.withPropagatedContext(e.headers,()=>B.trace(h.BaseServerSpan.handleRequest,{spanName:`${L} ${s}`,kind:o.SpanKind.SERVER,attributes:{"http.method":L,"http.target":e.url}},l),void 0,!W))}catch(t){if(t instanceof f.NoFallbackError||await v.onRequestError(e,t,{routerKind:"App Router",routePath:K,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:$,isOnDemandRevalidate:C})},!1,R),N)throw t;return await (0,w.sendResponse)(J,G,new Response(null,{status:500})),null}}e.s(["handler",0,b,"patchFetch",0,function(){return(0,i.patchFetch)({workAsyncStorage:A,workUnitAsyncStorage:_})},"routeModule",0,v,"serverHooks",0,S,"workAsyncStorage",0,A,"workUnitAsyncStorage",0,_]),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)))}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=_18v5918._.js.map
|
package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_1aztsqf._.js
CHANGED
|
@@ -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 o=await a.WS_DO_WORKER.fetch(`http://internal${e}`,{method:"POST",body:n});if(o.ok)try{return{sent:(await o.json()).sent??0}}catch{return{sent:0}}s.warn("broadcast service-binding non-ok",{...i,status:o.status})}catch{}let o=r||a.DEV_WS_DO_URL,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 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 o=e.filter(e=>e.type!==a.TASK_TYPES.KILL_TASK),l=[...new Set(o.map(e=>e.agentId))],[d,c,u]=l.length>0?await Promise.all([(0,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(d.map(e=>[e.id,e])),p=new Map;for(let e of c){let t=p.get(e.agentId)??[];t.push(e.emailAddress),p.set(e.agentId,t)}let w=new Map;for(let e of u){let t=w.get(e.agentId)??[];t.push(e),w.set(e.agentId,t)}let m=[...new Set(o.map(e=>e.conversationId).filter(Boolean))],g=new Map((m.length>0?await t.queries.conversation.getConversationsByIds(this.db,m,r):[]).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,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&&(d=[a.globalInstruction,d].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=g.get(o.conversationId)??null,m=u?.channel??"default",y=null;if(o.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 T=(w.get(o.agentId)??[]).map(e=>({name:e.name,email:e.emailHandle?(0,s.toAlookAddress)(e.emailHandle):"",description:e.description,instruction:e.instruction}));f.push({...(0,n.taskToResponse)(o),channel:m,sender:y,agent:e?{instructions:d,name:e.name,runtime_config:e.runtimeConfig||{},email_handle:e.emailHandle||null,email_addresses:l,user_email:null,user_name:c,colleagues:T}:null})}return 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),i=e.i(740580),r=e.i(774078),o=e.i(555230);let l=t.queries.task,d=t.queries.agent,c=t.queries.message,u=t.queries.conversation,h=t.queries.issue,p=t.queries.inbox;e.s(["TaskService",0,class{db;constructor(e){this.db=e}async enqueueTask(e,t,s,n,i=a.TASK_TYPES.USER_DM_MESSAGE,o){let c=await d.getAgent(this.db,e,s);if(!c)throw Error("agent not found");if(!c.runtimeId)throw Error("agent has no runtime");if(o?.traceId&&o.parentTaskId&&await l.countTasksByTrace(this.db,o.traceId)>=a.MAX_TASKS_PER_TRACE)throw Error(`Trace limit reached (${a.MAX_TASKS_PER_TRACE} tasks). This may indicate an infinite loop between agents.`);let u=await l.createTask(this.db,{agentId:e,runtimeId:c.runtimeId,workspaceId:s,conversationId:t,prompt:n,type:i,contextKey:o?.contextKey??null,priority:0,context:o?.context,traceId:o?.traceId??null,parentTaskId:o?.parentTaskId??null});return(0,r.invalidate)(r.cacheKeys.activeTaskCounts(s)).catch(()=>{}),await this.pushTaskToDaemon(u,s).catch(()=>{}),u}async claimTask(e,t){let a=await 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,i=n>0?await l.listPendingTasksByRuntimes(this.db,e,a):[],r=new Set(e),o=new Set,c=[...s],u=[];for(let e of i){if(u.length>=n)break;let t=`${e.agentId}:${e.workspaceId}`;o.has(t)||(o.add(t),u.push(e))}if(0===u.length)return c;let h=[...new Set(u.map(e=>e.agentId))],p=new Map((await d.getAgentsByIds(this.db,h,a)).map(e=>[e.id,e]));for(let e of(await Promise.all(u.map(e=>this.claimTaskWithAgent(e.agentId,e.workspaceId,p.get(e.agentId)??null)))))e&&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,o){let d=await l.failTask(this.db,e,r,o);if(!d){let t=await l.getTask(this.db,e),a=t?.status??"unknown";throw s.log.warn(`failTask failed: task is in '${a}' status`,{taskId:e}),Error(`cannot fail task in '${a}' status`)}if(d.type===a.TASK_TYPES.KILL_TASK)return d;let h=null;if(o){let a=null;try{if(d.runtimeId){let e=await t.queries.runtime.getAgentRuntime(this.db,d.runtimeId);a=e?.provider??null}}catch{}let s=await c.createMessage(this.db,{conversationId:d.conversationId,role:"assistant",content:o,taskId:e,metadata:JSON.stringify({error_source:"runtime",provider:a})});h=s?.id??null;try{let e=await u.getConversation(this.db,d.conversationId,r);e&&(0,n.broadcastToUser)(e.userId,{type:"conversation.message",conversationId:d.conversationId,message:(0,i.messageToResponse)(s)}).catch(()=>{})}catch{}}return await this.reconcileAgentStatus(d.agentId,d.workspaceId),await this.syncIssueStatusFromTask(d,"failed"),this.maybeUpsertUnread(d,r,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 r=await c.createMessage(this.db,{conversationId:e.conversationId,role:"event",content:`Issue status changed: ${s.status} -> ${t}`,taskId:e.id,metadata:JSON.stringify({issueId:s.id})});try{let t=await u.getConversation(this.db,e.conversationId,e.workspaceId);t&&(0,n.broadcastToUser)(t.userId,{type:"conversation.message",conversationId:e.conversationId,message:(0,i.messageToResponse)(r)}).catch(()=>{})}catch{}}async maybeUpsertUnread(e,t,a){if(!p.isUnreadEligible(e)||!e.completedAt)return;let s=await u.getConversation(this.db,e.conversationId,t);if(!s)return;let n=a??await p.findLatestAssistantMessageId(this.db,e.conversationId);await p.upsertUnreadEntry(this.db,{conversationId:e.conversationId,userId:s.userId,workspaceId:t,agentId:s.agentId,taskId:e.id,taskType:e.type,taskStatus:e.status,taskPrompt:e.prompt,completedAt:e.completedAt,latestMessageId:n})}async supersedeTask(e,t){let a=await 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 o=await l.getActiveTaskByConversation(this.db,e,i);if(!o)return null;let d=await l.cancelTask(this.db,o.id,i);if(!d)return null;if("dispatched"===o.status||"running"===o.status){let r=await l.createTask(this.db,{agentId:o.agentId,runtimeId:o.runtimeId,workspaceId:i,conversationId:e,prompt:"",type:a.TASK_TYPES.KILL_TASK,context:{target_task_id:o.id}});await l.dispatchTaskById(this.db,r.id,i);let d=await t.queries.runtime.getAgentRuntime(this.db,o.runtimeId);d&&(0,n.broadcastToDaemon)(d.daemonId,{type:"daemon.kill",workspaceId:i,agentId:o.agentId,taskId:r.id,targetTaskId:o.id}).catch(e=>s.log.warn("daemon.kill broadcast failed, relying on poll fallback",e))}return await c.createMessage(this.db,{conversationId:e,role:"assistant",content:r?.reason??"Task cancelled by you",taskId:o.id,metadata:JSON.stringify({kind:"lifecycle"})}),await this.reconcileAgentStatus(o.agentId,i),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,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 o.TaskPayloadBuilder(this.db),d=await r.buildFullPayloads([i],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)}}}])},764083,e=>{"use strict";e.s(["filterVisibleAgents",0,function(e,t,a){let s=new Set(a.filter(e=>e.userId===t).map(e=>e.agentId));return e.filter(e=>"public"===e.visibility||e.ownerId===t||s.has(e.id))}])},587860,e=>e.a(async(t,a)=>{try{var s=e.i(931720);e.i(700598);var n=e.i(291109),i=e.i(424166),r=e.i(469187),o=e.i(888247),l=e.i(704024),d=e.i(675139),c=e.i(152327),u=e.i(47962),h=e.i(776227),p=e.i(740580),w=e.i(205054),m=e.i(774078),g=e.i(764083),I=t([c]);[c]=I.then?(await I)():I;let k=(0,c.withAuth)(async(e,t)=>{let a=await (0,u.withWorkspaceMember)(e,t);if(a instanceof Response)return a;let{env:i}=(0,s.getCloudflareContext)(),r=(0,d.getDb)(i.DB),[o,l]=await Promise.all([(0,m.cached)(m.cacheKeys.allAgents(a.workspaceId),300,()=>n.queries.agent.getAllAgentsForWorkspace(r,a.workspaceId)),(0,m.cached)(m.cacheKeys.allAgentAccess(a.workspaceId),300,()=>n.queries.agentAccess.getAllAgentAccessForWorkspace(r,a.workspaceId))]),c=(0,g.filterVisibleAgents)(o,t.userId,l);return(0,h.writeJSON)(c.map(p.agentToResponse))}),f=(0,c.withAuth)(async(e,t)=>{let a=await (0,u.withWorkspaceMember)(e,t);if(a instanceof Response)return a;let{env:c}=(0,s.getCloudflareContext)(),g=(0,d.getDb)(c.DB),[I,k]=await (0,h.parseBody)(e,o.CreateAgentRequestSchema);if(k)return k;let f=I.name.trim(),y=I.runtime_id,T=I.max_concurrent_tasks||0;T<=0&&(T=6);let v="string"==typeof I.email_handle?I.email_handle.trim().toLowerCase():"";if(v){if(!(0,i.isValidHandle)(v))return(0,h.writeError)("email_handle must be 4+ alphanumeric/dash characters",400);if(await n.queries.agent.getAgentByHandle(g,v))return(0,h.writeError)("Handle already taken",409)}let b=await n.queries.runtime.getAgentRuntimeForWorkspace(g,y,a.workspaceId,t.userId);if(!b)return(0,h.writeError)("runtime not found in workspace",404);let A=I.runtime_config,_=A?{..."string"==typeof A.model?{model:A.model}:{}}:null,S=await n.queries.agent.createAgent(g,{workspaceId:a.workspaceId,name:f,description:I.description,instructions:I.instructions,runtimeId:y,runtimeMode:b.runtimeMode,runtimeConfig:_,visibility:"private",maxConcurrentTasks:T,ownerId:t.userId,emailHandle:v||null,avatarUrl:I.avatar_url??null});if(v&&t.email&&await n.queries.whitelist.addWhitelist(g,S.id,a.workspaceId,t.email.toLowerCase()),await Promise.all([(0,m.invalidate)(m.cacheKeys.allAgents(a.workspaceId)),(0,m.invalidate)(m.cacheKeys.allHandles(a.workspaceId)),(0,m.invalidate)(m.cacheKeys.allAgentAccess(a.workspaceId))]),S.runtimeId&&S.emailHandle&&t.email&&(0,r.isOnline)(b.machineLastSeenAt))try{let e=await n.queries.conversation.createConversation(g,{workspaceId:a.workspaceId,agentId:S.id,userId:t.userId,title:`Welcome: ${t.email}`.slice(0,50),type:l.TASK_TYPES.EMAIL_NOTIFICATION}),s=new w.TaskService(g);await s.enqueueTask(S.id,e.id,a.workspaceId,`You have just been created by your owner (${t.email}). Please send them a welcome email introducing yourself as "${f}". In the email: 1) Introduce yourself warmly — your name, your email address, and what you can help with. 2) Briefly introduce the Alook platform — a personal AI agent platform where agents can handle emails, schedule tasks, and work autonomously. 3) Let them know they can chat with you directly or email you anytime. Be warm, professional, and concise.`,l.TASK_TYPES.EMAIL_NOTIFICATION);let i=new Date().toISOString().slice(0,10);(0,m.invalidate)(m.cacheKeys.overviewTaskStats(a.workspaceId,i)).catch(()=>{}),(0,m.invalidate)(m.cacheKeys.activeTaskCounts(a.workspaceId)).catch(()=>{})}catch{}if((0,r.isOnline)(b.machineLastSeenAt)){let e=new w.TaskService(g);await e.reconcileAgentStatus(S.id,a.workspaceId);let s=await n.queries.agent.getAgent(g,S.id,a.workspaceId,t.userId);if(s)return(0,h.writeJSON)((0,p.agentToResponse)(s),201)}return(0,h.writeJSON)((0,p.agentToResponse)(S),201)});e.s(["GET",0,k,"POST",0,f]),a()}catch(e){a(e)}},!1),906597,e=>e.a(async(t,a)=>{try{var s=e.i(618117),n=e.i(99200),i=e.i(864055),r=e.i(289578),o=e.i(641783),l=e.i(467635),d=e.i(541774),c=e.i(393982),u=e.i(325959),h=e.i(474834),p=e.i(800989),w=e.i(489409),m=e.i(203050),g=e.i(851100),I=e.i(55434),k=e.i(193695);e.i(163438);var f=e.i(118649),y=e.i(587860),T=t([y]);[y]=T.then?(await T)():T;let b=new s.AppRouteRouteModule({definition:{kind:n.RouteKind.APP_ROUTE,page:"/api/agents/route",pathname:"/api/agents",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/web/src/app/api/agents/route.ts",nextConfigOutput:"standalone",userland:y,...{}}),{workAsyncStorage:A,workUnitAsyncStorage:_,serverHooks:S}=b;async function v(e,t,a){a.requestMeta&&(0,r.setRequestMeta)(e,a.requestMeta),b.isDev&&(0,r.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let s="/api/agents/route";s=s.replace(/\/index$/,"")||"/";let i=await b.prepare(e,t,{srcPage:s,multiZoneDraftMode:!1});if(!i)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:y,deploymentId:T,params:v,nextConfig:A,parsedUrl:_,isDraftMode:S,prerenderManifest:E,routerServerContext:R,isOnDemandRevalidate:C,revalidateOnlyGenerated:P,resolvedPathname:x,clientReferenceManifest:K,serverActionsManifest:q}=i,O=(0,d.normalizeAppPath)(s),M=!!(E.dynamicRoutes[O]||E.routes[x]),N=async()=>((null==R?void 0:R.render404)?await R.render404(e,t,_,!1):t.end("This page could not be found"),null);if(M&&!S){let e=!!E.routes[x],t=E.dynamicRoutes[O];if(t&&!1===t.fallback&&!e){if(A.adapterPath)return await N();throw new k.NoFallbackError}}let U=null;!M||b.isDev||S||(U=x,U="/index"===U?"/":U);let D=!0===b.isDev||!M,L=M&&!D;q&&K&&(0,l.setManifestsSingleton)({page:s,clientReferenceManifest:K,serverActionsManifest:q});let $=e.method||"GET",H=(0,o.getTracer)(),B=H.getActiveScopeSpan(),F=!!(null==R?void 0:R.isWrappedByNextServer),W=!!(0,r.getRequestMeta)(e,"minimalMode"),j=(0,r.getRequestMeta)(e,"incrementalCache")||await b.getIncrementalCache(e,A,E,W);null==j||j.resetRequestCache(),globalThis.__incrementalCache=j;let V={params:v,previewProps:E.preview,renderOpts:{experimental:{authInterrupts:!!A.experimental.authInterrupts},cacheComponents:!!A.cacheComponents,supportsDynamicResponse:D,incrementalCache:j,cacheLifeProfiles:A.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,s,n)=>b.onRequestError(e,t,s,n,R)},sharedContext:{buildId:y,deploymentId:T}},Y=new c.NodeNextRequest(e),J=new c.NodeNextResponse(t),G=u.NextRequestAdapter.fromNodeNextRequest(Y,(0,u.signalFromNodeResponse)(t));try{let i,r=async e=>b.handle(G,V).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=H.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==h.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=a.get("next.route");if(n){let t=`${$} ${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(`${$} ${s}`)}),l=async i=>{var o,l;let d=async({previousCacheEntry:n})=>{try{if(!W&&C&&P&&!n)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await r(i);e.fetchMetrics=V.renderOpts.fetchMetrics;let o=V.renderOpts.pendingWaitUntil;o&&a.waitUntil&&(a.waitUntil(o),o=void 0);let l=V.renderOpts.collectedTags;if(!M)return await (0,w.sendResponse)(Y,J,s,V.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,m.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!==V.renderOpts.collectedRevalidate&&!(V.renderOpts.collectedRevalidate>=I.INFINITE_CACHE)&&V.renderOpts.collectedRevalidate,n=void 0===V.renderOpts.collectedExpire||V.renderOpts.collectedExpire>=I.INFINITE_CACHE?void 0:V.renderOpts.collectedExpire;return{value:{kind:f.CachedRouteKind.APP_ROUTE,status:s.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:n}}}}catch(t){throw(null==n?void 0:n.isStale)&&await b.onRequestError(e,t,{routerKind:"App Router",routePath:s,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:L,isOnDemandRevalidate:C})},!1,R),t}},c=await b.handleResponse({req:e,nextConfig:A,cacheKey:U,routeKind:n.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:E,isRoutePPREnabled:!1,isOnDemandRevalidate:C,revalidateOnlyGenerated:P,responseGenerator:d,waitUntil:a.waitUntil,isMinimalMode:W});if(!M)return null;if((null==c||null==(o=c.value)?void 0:o.kind)!==f.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==c||null==(l=c.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});W||t.setHeader("x-nextjs-cache",C?"REVALIDATED":c.isMiss?"MISS":c.isStale?"STALE":"HIT"),S&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let u=(0,m.fromNodeOutgoingHttpHeaders)(c.value.headers);return W&&M||u.delete(I.NEXT_CACHE_TAGS_HEADER),!c.cacheControl||t.getHeader("Cache-Control")||u.get("Cache-Control")||u.set("Cache-Control",(0,g.getCacheControlHeader)(c.cacheControl)),await (0,w.sendResponse)(Y,J,new Response(c.value.body,{headers:u,status:c.value.status||200})),null};F&&B?await l(B):(i=H.getActiveScopeSpan(),await H.withPropagatedContext(e.headers,()=>H.trace(h.BaseServerSpan.handleRequest,{spanName:`${$} ${s}`,kind:o.SpanKind.SERVER,attributes:{"http.method":$,"http.target":e.url}},l),void 0,!F))}catch(t){if(t instanceof k.NoFallbackError||await b.onRequestError(e,t,{routerKind:"App Router",routePath:O,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:L,isOnDemandRevalidate:C})},!1,R),M)throw t;return await (0,w.sendResponse)(Y,J,new Response(null,{status:500})),null}}e.s(["handler",0,v,"patchFetch",0,function(){return(0,i.patchFetch)({workAsyncStorage:A,workUnitAsyncStorage:_})},"routeModule",0,b,"serverHooks",0,S,"workAsyncStorage",0,A,"workUnitAsyncStorage",0,_]),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=[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 o=await a.WS_DO_WORKER.fetch(`http://internal${e}`,{method:"POST",body:n});if(o.ok)try{return{sent:(await o.json()).sent??0}}catch{return{sent:0}}s.warn("broadcast service-binding non-ok",{...i,status:o.status})}catch{}let o=r||a.DEV_WS_DO_URL,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 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 o=e.filter(e=>e.type!==a.TASK_TYPES.KILL_TASK),l=[...new Set(o.map(e=>e.agentId))],[d,c,u]=l.length>0?await Promise.all([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(d.map(e=>[e.id,e])),p=new Map;for(let e of c){let t=p.get(e.agentId)??[];t.push(e.emailAddress),p.set(e.agentId,t)}let w=new Map;for(let e of u){let t=w.get(e.agentId)??[];t.push(e),w.set(e.agentId,t)}let m=[...new Set(o.map(e=>e.conversationId).filter(Boolean))],g=new Map((m.length>0?await t.queries.conversation.getConversationsByIds(this.db,m,r):[]).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,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&&(d=[a.globalInstruction,d].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=g.get(o.conversationId)??null,m=u?.channel??"default",y=null;if(o.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 T=(w.get(o.agentId)??[]).map(e=>({name:e.name,email:e.emailHandle?(0,s.toAlookAddress)(e.emailHandle):"",description:e.description,instruction:e.instruction}));f.push({...(0,n.taskToResponse)(o),channel:m,sender:y,agent:e?{instructions:d,name:e.name,runtime_config:e.runtimeConfig||{},email_handle:e.emailHandle||null,email_addresses:l,user_email:null,user_name:c,colleagues:T}:null})}return 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),i=e.i(740580),r=e.i(774078),o=e.i(555230);let l=t.queries.task,d=t.queries.agent,c=t.queries.message,u=t.queries.conversation,h=t.queries.issue,p=t.queries.inbox;e.s(["TaskService",0,class{db;constructor(e){this.db=e}async enqueueTask(e,t,s,n,i=a.TASK_TYPES.USER_DM_MESSAGE,o){let c=await d.getAgent(this.db,e,s);if(!c)throw Error("agent not found");if(!c.runtimeId)throw Error("agent has no runtime");if(o?.traceId&&o.parentTaskId&&await l.countTasksByTrace(this.db,o.traceId)>=a.MAX_TASKS_PER_TRACE)throw Error(`Trace limit reached (${a.MAX_TASKS_PER_TRACE} tasks). This may indicate an infinite loop between agents.`);let u=await l.createTask(this.db,{agentId:e,runtimeId:c.runtimeId,workspaceId:s,conversationId:t,prompt:n,type:i,contextKey:o?.contextKey??null,priority:0,context:o?.context,traceId:o?.traceId??null,parentTaskId:o?.parentTaskId??null});return(0,r.invalidate)(r.cacheKeys.activeTaskCounts(s)).catch(()=>{}),await this.pushTaskToDaemon(u,s).catch(()=>{}),u}async claimTask(e,t){let a=await 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,i=n>0?await l.listPendingTasksByRuntimes(this.db,e,a):[],r=new Set(e),o=new Set,c=[...s],u=[];for(let e of i){if(u.length>=n)break;let t=`${e.agentId}:${e.workspaceId}`;o.has(t)||(o.add(t),u.push(e))}if(0===u.length)return c;let h=[...new Set(u.map(e=>e.agentId))],p=new Map((await d.getAgentsByIds(this.db,h,a)).map(e=>[e.id,e]));for(let e of(await Promise.all(u.map(e=>this.claimTaskWithAgent(e.agentId,e.workspaceId,p.get(e.agentId)??null)))))e&&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,o){let d=await l.failTask(this.db,e,r,o);if(!d){let t=await l.getTask(this.db,e),a=t?.status??"unknown";throw s.log.warn(`failTask failed: task is in '${a}' status`,{taskId:e}),Error(`cannot fail task in '${a}' status`)}if(d.type===a.TASK_TYPES.KILL_TASK)return d;let h=null;if(o){let a=null;try{if(d.runtimeId){let e=await t.queries.runtime.getAgentRuntime(this.db,d.runtimeId);a=e?.provider??null}}catch{}let s=await c.createMessage(this.db,{conversationId:d.conversationId,role:"assistant",content:o,taskId:e,metadata:JSON.stringify({error_source:"runtime",provider:a})});h=s?.id??null;try{let e=await u.getConversation(this.db,d.conversationId,r);e&&(0,n.broadcastToUser)(e.userId,{type:"conversation.message",conversationId:d.conversationId,message:(0,i.messageToResponse)(s)}).catch(()=>{})}catch{}}return await this.reconcileAgentStatus(d.agentId,d.workspaceId),await this.syncIssueStatusFromTask(d,"failed"),this.maybeUpsertUnread(d,r,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 r=await c.createMessage(this.db,{conversationId:e.conversationId,role:"event",content:`Issue status changed: ${s.status} -> ${t}`,taskId:e.id,metadata:JSON.stringify({issueId:s.id})});try{let t=await u.getConversation(this.db,e.conversationId,e.workspaceId);t&&(0,n.broadcastToUser)(t.userId,{type:"conversation.message",conversationId:e.conversationId,message:(0,i.messageToResponse)(r)}).catch(()=>{})}catch{}}async maybeUpsertUnread(e,t,a){if(!p.isUnreadEligible(e)||!e.completedAt)return;let s=await u.getConversation(this.db,e.conversationId,t);if(!s)return;let n=a??await p.findLatestAssistantMessageId(this.db,e.conversationId);await p.upsertUnreadEntry(this.db,{conversationId:e.conversationId,userId:s.userId,workspaceId:t,agentId:s.agentId,taskId:e.id,taskType:e.type,taskStatus:e.status,taskPrompt:e.prompt,completedAt:e.completedAt,latestMessageId:n})}async supersedeTask(e,t){let a=await 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 o=await l.getActiveTaskByConversation(this.db,e,i);if(!o)return null;let d=await l.cancelTask(this.db,o.id,i);if(!d)return null;if("dispatched"===o.status||"running"===o.status){let r=await l.createTask(this.db,{agentId:o.agentId,runtimeId:o.runtimeId,workspaceId:i,conversationId:e,prompt:"",type:a.TASK_TYPES.KILL_TASK,context:{target_task_id:o.id}});await l.dispatchTaskById(this.db,r.id,i);let d=await t.queries.runtime.getAgentRuntime(this.db,o.runtimeId);d&&(0,n.broadcastToDaemon)(d.daemonId,{type:"daemon.kill",workspaceId:i,agentId:o.agentId,taskId:r.id,targetTaskId:o.id}).catch(e=>s.log.warn("daemon.kill broadcast failed, relying on poll fallback",e))}return await c.createMessage(this.db,{conversationId:e,role:"assistant",content:r?.reason??"Task cancelled by you",taskId:o.id,metadata:JSON.stringify({kind:"lifecycle"})}),await this.reconcileAgentStatus(o.agentId,i),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,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 o.TaskPayloadBuilder(this.db),d=await r.buildFullPayloads([i],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)}}}])},764083,e=>{"use strict";e.s(["filterVisibleAgents",0,function(e,t,a){let s=new Set(a.filter(e=>e.userId===t).map(e=>e.agentId));return e.filter(e=>"public"===e.visibility||e.ownerId===t||s.has(e.id))}])},587860,e=>e.a(async(t,a)=>{try{var s=e.i(931720);e.i(700598);var n=e.i(291109),i=e.i(424166),r=e.i(469187),o=e.i(888247),l=e.i(704024),d=e.i(675139),c=e.i(152327),u=e.i(47962),h=e.i(776227),p=e.i(740580),w=e.i(205054),m=e.i(774078),g=e.i(764083),I=t([c]);[c]=I.then?(await I)():I;let k=(0,c.withAuth)(async(e,t)=>{let a=await (0,u.withWorkspaceMember)(e,t);if(a instanceof Response)return a;let{env:i}=(0,s.getCloudflareContext)(),r=(0,d.getDb)(i.DB),[o,l]=await Promise.all([n.queries.agent.getAllAgentsForWorkspace(r,a.workspaceId),(0,m.cached)(m.cacheKeys.allAgentAccess(a.workspaceId),300,()=>n.queries.agentAccess.getAllAgentAccessForWorkspace(r,a.workspaceId))]),c=(0,g.filterVisibleAgents)(o,t.userId,l);return(0,h.writeJSON)(c.map(p.agentToResponse))}),f=(0,c.withAuth)(async(e,t)=>{let a=await (0,u.withWorkspaceMember)(e,t);if(a instanceof Response)return a;let{env:c}=(0,s.getCloudflareContext)(),g=(0,d.getDb)(c.DB),[I,k]=await (0,h.parseBody)(e,o.CreateAgentRequestSchema);if(k)return k;let f=I.name.trim(),y=I.runtime_id,T=I.max_concurrent_tasks||0;T<=0&&(T=6);let b="string"==typeof I.email_handle?I.email_handle.trim().toLowerCase():"";if(b){if(!(0,i.isValidHandle)(b))return(0,h.writeError)("email_handle must be 4+ alphanumeric/dash characters",400);if(await n.queries.agent.getAgentByHandle(g,b))return(0,h.writeError)("Handle already taken",409)}let v=await n.queries.runtime.getAgentRuntimeForWorkspace(g,y,a.workspaceId,t.userId);if(!v)return(0,h.writeError)("runtime not found in workspace",404);let A=I.runtime_config,_=A?{..."string"==typeof A.model?{model:A.model}:{}}:null,S=await n.queries.agent.createAgent(g,{workspaceId:a.workspaceId,name:f,description:I.description,instructions:I.instructions,runtimeId:y,runtimeMode:v.runtimeMode,runtimeConfig:_,visibility:"private",maxConcurrentTasks:T,ownerId:t.userId,emailHandle:b||null,avatarUrl:I.avatar_url??null});if(b&&t.email&&await n.queries.whitelist.addWhitelist(g,S.id,a.workspaceId,t.email.toLowerCase()),await Promise.all([(0,m.invalidate)(m.cacheKeys.allHandles(a.workspaceId)),(0,m.invalidate)(m.cacheKeys.allAgentAccess(a.workspaceId))]),S.runtimeId&&S.emailHandle&&t.email&&(0,r.isOnline)(v.machineLastSeenAt))try{let e=await n.queries.conversation.createConversation(g,{workspaceId:a.workspaceId,agentId:S.id,userId:t.userId,title:`Welcome: ${t.email}`.slice(0,50),type:l.TASK_TYPES.EMAIL_NOTIFICATION}),s=new w.TaskService(g);await s.enqueueTask(S.id,e.id,a.workspaceId,`You have just been created by your owner (${t.email}). Please send them a welcome email introducing yourself as "${f}". In the email: 1) Introduce yourself warmly — your name, your email address, and what you can help with. 2) Briefly introduce the Alook platform — a personal AI agent platform where agents can handle emails, schedule tasks, and work autonomously. 3) Let them know they can chat with you directly or email you anytime. Be warm, professional, and concise.`,l.TASK_TYPES.EMAIL_NOTIFICATION);let i=new Date().toISOString().slice(0,10);(0,m.invalidate)(m.cacheKeys.overviewTaskStats(a.workspaceId,i)).catch(()=>{}),(0,m.invalidate)(m.cacheKeys.activeTaskCounts(a.workspaceId)).catch(()=>{})}catch{}if((0,r.isOnline)(v.machineLastSeenAt)){let e=new w.TaskService(g);await e.reconcileAgentStatus(S.id,a.workspaceId);let s=await n.queries.agent.getAgent(g,S.id,a.workspaceId,t.userId);if(s)return(0,h.writeJSON)((0,p.agentToResponse)(s),201)}return(0,h.writeJSON)((0,p.agentToResponse)(S),201)});e.s(["GET",0,k,"POST",0,f]),a()}catch(e){a(e)}},!1),906597,e=>e.a(async(t,a)=>{try{var s=e.i(618117),n=e.i(99200),i=e.i(864055),r=e.i(289578),o=e.i(641783),l=e.i(467635),d=e.i(541774),c=e.i(393982),u=e.i(325959),h=e.i(474834),p=e.i(800989),w=e.i(489409),m=e.i(203050),g=e.i(851100),I=e.i(55434),k=e.i(193695);e.i(163438);var f=e.i(118649),y=e.i(587860),T=t([y]);[y]=T.then?(await T)():T;let v=new s.AppRouteRouteModule({definition:{kind:n.RouteKind.APP_ROUTE,page:"/api/agents/route",pathname:"/api/agents",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/web/src/app/api/agents/route.ts",nextConfigOutput:"standalone",userland:y,...{}}),{workAsyncStorage:A,workUnitAsyncStorage:_,serverHooks:S}=v;async function b(e,t,a){a.requestMeta&&(0,r.setRequestMeta)(e,a.requestMeta),v.isDev&&(0,r.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let s="/api/agents/route";s=s.replace(/\/index$/,"")||"/";let i=await v.prepare(e,t,{srcPage:s,multiZoneDraftMode:!1});if(!i)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:y,deploymentId:T,params:b,nextConfig:A,parsedUrl:_,isDraftMode:S,prerenderManifest:E,routerServerContext:R,isOnDemandRevalidate:C,revalidateOnlyGenerated:P,resolvedPathname:x,clientReferenceManifest:q,serverActionsManifest:O}=i,K=(0,d.normalizeAppPath)(s),M=!!(E.dynamicRoutes[K]||E.routes[x]),N=async()=>((null==R?void 0:R.render404)?await R.render404(e,t,_,!1):t.end("This page could not be found"),null);if(M&&!S){let e=!!E.routes[x],t=E.dynamicRoutes[K];if(t&&!1===t.fallback&&!e){if(A.adapterPath)return await N();throw new k.NoFallbackError}}let U=null;!M||v.isDev||S||(U=x,U="/index"===U?"/":U);let D=!0===v.isDev||!M,L=M&&!D;O&&q&&(0,l.setManifestsSingleton)({page:s,clientReferenceManifest:q,serverActionsManifest:O});let $=e.method||"GET",H=(0,o.getTracer)(),B=H.getActiveScopeSpan(),F=!!(null==R?void 0:R.isWrappedByNextServer),W=!!(0,r.getRequestMeta)(e,"minimalMode"),j=(0,r.getRequestMeta)(e,"incrementalCache")||await v.getIncrementalCache(e,A,E,W);null==j||j.resetRequestCache(),globalThis.__incrementalCache=j;let V={params:b,previewProps:E.preview,renderOpts:{experimental:{authInterrupts:!!A.experimental.authInterrupts},cacheComponents:!!A.cacheComponents,supportsDynamicResponse:D,incrementalCache:j,cacheLifeProfiles:A.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:y,deploymentId:T}},Y=new c.NodeNextRequest(e),J=new c.NodeNextResponse(t),G=u.NextRequestAdapter.fromNodeNextRequest(Y,(0,u.signalFromNodeResponse)(t));try{let i,r=async e=>v.handle(G,V).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=H.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==h.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=a.get("next.route");if(n){let t=`${$} ${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(`${$} ${s}`)}),l=async i=>{var o,l;let d=async({previousCacheEntry:n})=>{try{if(!W&&C&&P&&!n)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await r(i);e.fetchMetrics=V.renderOpts.fetchMetrics;let o=V.renderOpts.pendingWaitUntil;o&&a.waitUntil&&(a.waitUntil(o),o=void 0);let l=V.renderOpts.collectedTags;if(!M)return await (0,w.sendResponse)(Y,J,s,V.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,m.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!==V.renderOpts.collectedRevalidate&&!(V.renderOpts.collectedRevalidate>=I.INFINITE_CACHE)&&V.renderOpts.collectedRevalidate,n=void 0===V.renderOpts.collectedExpire||V.renderOpts.collectedExpire>=I.INFINITE_CACHE?void 0:V.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:L,isOnDemandRevalidate:C})},!1,R),t}},c=await v.handleResponse({req:e,nextConfig:A,cacheKey:U,routeKind:n.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:E,isRoutePPREnabled:!1,isOnDemandRevalidate:C,revalidateOnlyGenerated:P,responseGenerator:d,waitUntil:a.waitUntil,isMinimalMode:W});if(!M)return null;if((null==c||null==(o=c.value)?void 0:o.kind)!==f.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==c||null==(l=c.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});W||t.setHeader("x-nextjs-cache",C?"REVALIDATED":c.isMiss?"MISS":c.isStale?"STALE":"HIT"),S&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let u=(0,m.fromNodeOutgoingHttpHeaders)(c.value.headers);return W&&M||u.delete(I.NEXT_CACHE_TAGS_HEADER),!c.cacheControl||t.getHeader("Cache-Control")||u.get("Cache-Control")||u.set("Cache-Control",(0,g.getCacheControlHeader)(c.cacheControl)),await (0,w.sendResponse)(Y,J,new Response(c.value.body,{headers:u,status:c.value.status||200})),null};F&&B?await l(B):(i=H.getActiveScopeSpan(),await H.withPropagatedContext(e.headers,()=>H.trace(h.BaseServerSpan.handleRequest,{spanName:`${$} ${s}`,kind:o.SpanKind.SERVER,attributes:{"http.method":$,"http.target":e.url}},l),void 0,!F))}catch(t){if(t instanceof k.NoFallbackError||await v.onRequestError(e,t,{routerKind:"App Router",routePath:K,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:L,isOnDemandRevalidate:C})},!1,R),M)throw t;return await (0,w.sendResponse)(Y,J,new Response(null,{status:500})),null}}e.s(["handler",0,b,"patchFetch",0,function(){return(0,i.patchFetch)({workAsyncStorage:A,workUnitAsyncStorage:_})},"routeModule",0,v,"serverHooks",0,S,"workAsyncStorage",0,A,"workUnitAsyncStorage",0,_]),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)))}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=_1aztsqf._.js.map
|
package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_1d18okt._.js
CHANGED
|
@@ -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 r=(0,e.i(726527).createLogger)({service:"broadcast"});async function n(e,n,s){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}}r.warn("broadcast service-binding non-ok",{...s,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 r=n(`/broadcast/daemon/${e}`,JSON.stringify(a),{daemonId:e,type:a.type});try{let{ctx:e}=(0,t.getCloudflareContext)();e.waitUntil(r.catch(()=>{}))}catch{}return r},"broadcastToUser",0,function(e,a){return function(e,a,r){let s=n(e,a,r);try{let{ctx:e}=(0,t.getCloudflareContext)();e.waitUntil(s.catch(()=>{}))}catch{}return s.then(()=>{})}(`/broadcast/user/${e}`,JSON.stringify(a),{userId:e,type:a.type})}])},511456,e=>{"use strict";e.i(700598);let t=(0,e.i(726527).createLogger)({service:"web",level:process.env.ALOOK_LOG_LEVEL||"info",pretty:!1});e.s(["log",0,t])},555230,e=>{"use strict";e.i(700598);var t=e.i(291109),a=e.i(704024),r=e.i(424166),n=e.i(740580),s=e.i(774078);e.s(["TaskPayloadBuilder",0,class{db;constructor(e){this.db=e}async buildFullPayloads(e,i){let o=e.filter(e=>e.type!==a.TASK_TYPES.KILL_TASK),l=[...new Set(o.map(e=>e.agentId))],[c,d,u]=l.length>0?await Promise.all([(0,s.cached)(s.cacheKeys.allAgents(i),300,()=>t.queries.agent.getAllAgentsForWorkspace(this.db,i)),(0,s.cached)(s.cacheKeys.allEmailAccounts(i),600,()=>t.queries.emailAccount.getAllEmailAccountsForWorkspace(this.db,i)),(0,s.cached)(s.cacheKeys.allColleagues(i),600,()=>t.queries.agentLink.getAllColleaguesForWorkspace(this.db,i)).catch(()=>[])]).then(([e,t,a])=>{let r=new Set(l);return[e.filter(e=>r.has(e.id)),t.filter(e=>r.has(e.agentId)),a.filter(e=>r.has(e.agentId))]}):[[],[],[]],h=new Map(c.map(e=>[e.id,e])),m=new Map;for(let e of d){let t=m.get(e.agentId)??[];t.push(e.emailAddress),m.set(e.agentId,t)}let p=new Map;for(let e of u){let t=p.get(e.agentId)??[];t.push(e),p.set(e.agentId,t)}let g=[...new Set(o.map(e=>e.conversationId).filter(Boolean))],f=new Map((g.length>0?await t.queries.conversation.getConversationsByIds(this.db,g,i):[]).map(e=>[e.id,e])),k=new Map,b=new Map,w=[];for(let o of e){if(o.type===a.TASK_TYPES.KILL_TASK){w.push({...(0,n.taskToResponse)(o),agent:null,sender:null});continue}let e=h.get(o.agentId)??null,l=[];if(e){e.emailHandle&&l.push((0,r.toAlookAddress)(e.emailHandle));let t=m.get(e.id)??[];l.push(...t)}let c=e?.instructions??"";if(e?.ownerId){if(!k.has(e.ownerId)){let a=await (0,s.cached)(s.cacheKeys.member(i,e.ownerId),600,()=>t.queries.member.getMemberByUserAndWorkspace(this.db,e.ownerId,i));k.set(e.ownerId,a?{globalInstruction:a.globalInstruction}:null)}let a=k.get(e.ownerId);a?.globalInstruction&&(c=[a.globalInstruction,c].filter(Boolean).join("\n\n"))}let d=null;if(e?.ownerId){if(!b.has(e.ownerId)){let a=await (0,s.cached)(s.cacheKeys.user(e.ownerId),1800,()=>t.queries.user.getUser(this.db,e.ownerId));b.set(e.ownerId,a?{name:a.name,email:a.email}:null)}d=b.get(e.ownerId)?.name??null}let u=f.get(o.conversationId)??null,g=u?.channel??"default",v=null;if(o.type===a.TASK_TYPES.USER_DM_MESSAGE&&u?.userId){if(!b.has(u.userId)){let e=await (0,s.cached)(s.cacheKeys.user(u.userId),1800,()=>t.queries.user.getUser(this.db,u.userId));b.set(u.userId,e?{name:e.name,email:e.email}:null)}let a=b.get(u.userId);a&&(v={name:a.name,email:a.email,is_owner:u.userId===e?.ownerId})}let I=(p.get(o.agentId)??[]).map(e=>({name:e.name,email:e.emailHandle?(0,r.toAlookAddress)(e.emailHandle):"",description:e.description,instruction:e.instruction}));w.push({...(0,n.taskToResponse)(o),channel:g,sender:v,agent:e?{instructions:c,name:e.name,runtime_config:e.runtimeConfig||{},email_handle:e.emailHandle||null,email_addresses:l,user_email:null,user_name:d,colleagues:I}:null})}return w}}])},205054,e=>{"use strict";e.i(700598);var t=e.i(291109),a=e.i(704024),r=e.i(511456),n=e.i(726089),s=e.i(740580),i=e.i(774078),o=e.i(555230);let l=t.queries.task,c=t.queries.agent,d=t.queries.message,u=t.queries.conversation,h=t.queries.issue,m=t.queries.inbox;e.s(["TaskService",0,class{db;constructor(e){this.db=e}async enqueueTask(e,t,r,n,s=a.TASK_TYPES.USER_DM_MESSAGE,o){let d=await c.getAgent(this.db,e,r);if(!d)throw Error("agent not found");if(!d.runtimeId)throw Error("agent has no runtime");if(o?.traceId&&o.parentTaskId&&await l.countTasksByTrace(this.db,o.traceId)>=a.MAX_TASKS_PER_TRACE)throw Error(`Trace limit reached (${a.MAX_TASKS_PER_TRACE} tasks). This may indicate an infinite loop between agents.`);let u=await l.createTask(this.db,{agentId:e,runtimeId:d.runtimeId,workspaceId:r,conversationId:t,prompt:n,type:s,contextKey:o?.contextKey??null,priority:0,context:o?.context,traceId:o?.traceId??null,parentTaskId:o?.parentTaskId??null});return(0,i.invalidate)(i.cacheKeys.activeTaskCounts(r)).catch(()=>{}),await this.pushTaskToDaemon(u,r).catch(()=>{}),u}async claimTask(e,t){let a=await c.getAgent(this.db,e,t);return this.claimTaskWithAgent(e,t,a)}async claimTaskWithAgent(e,t,a){if(!a)return null;if(await l.countRunningTasks(this.db,e,t)>=a.maxConcurrentTasks){let r=await l.findSteerableReplacement(this.db,e,t);if(!r||await l.countRunningTasks(this.db,e,t,r.predecessorId)>=a.maxConcurrentTasks)return null}let r=await l.claimTask(this.db,e,t);return r?(await c.updateAgentStatus(this.db,e,t,"working"),r):null}async claimTasksForRuntimes(e,t,a){let r=await l.claimKillTasks(this.db,e,a,t),n=t-r.length,s=n>0?await l.listPendingTasksByRuntimes(this.db,e,a):[],i=new Set(e),o=new Set,d=[...r],u=[];for(let e of s){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 d;let h=[...new Set(u.map(e=>e.agentId))],m=new Map((await c.getAgentsByIds(this.db,h,a)).map(e=>[e.id,e]));for(let e of(await Promise.all(u.map(e=>this.claimTaskWithAgent(e.agentId,e.workspaceId,m.get(e.agentId)??null)))))e&&i.has(e.runtimeId)&&d.push(e);return d}async startTask(e,t){let a=await l.startTask(this.db,e,t);if(!a)throw Error("task not in dispatched status");return a}async completeTask(e,t,a,n){let s;try{s=JSON.parse(a)}catch{s={raw:a}}let i=await l.completeTask(this.db,e,t,{result:s,sessionId:n||null});if(!i){let t=await l.getTask(this.db,e),a=t?.status??"unknown";throw r.log.warn(`completeTask failed: task is in '${a}' status`,{taskId:e}),Error(`cannot complete task in '${a}' status`)}return await this.reconcileAgentStatus(i.agentId,i.workspaceId),this.maybeUpsertUnread(i,t,null).catch(()=>{}),i}async failTask(e,i,o){let c=await l.failTask(this.db,e,i,o);if(!c){let t=await l.getTask(this.db,e),a=t?.status??"unknown";throw r.log.warn(`failTask failed: task is in '${a}' status`,{taskId:e}),Error(`cannot fail task in '${a}' status`)}if(c.type===a.TASK_TYPES.KILL_TASK)return c;let h=null;if(o){let a=null;try{if(c.runtimeId){let e=await t.queries.runtime.getAgentRuntime(this.db,c.runtimeId);a=e?.provider??null}}catch{}let r=await d.createMessage(this.db,{conversationId:c.conversationId,role:"assistant",content:o,taskId:e,metadata:JSON.stringify({error_source:"runtime",provider:a})});h=r?.id??null;try{let e=await u.getConversation(this.db,c.conversationId,i);e&&(0,n.broadcastToUser)(e.userId,{type:"conversation.message",conversationId:c.conversationId,message:(0,s.messageToResponse)(r)}).catch(()=>{})}catch{}}return await this.reconcileAgentStatus(c.agentId,c.workspaceId),await this.syncIssueStatusFromTask(c,"failed"),this.maybeUpsertUnread(c,i,h).catch(()=>{}),c}async syncIssueStatusFromTask(e,t){if(e.type!==a.TASK_TYPES.ISSUE_EVENT)return;let r=await h.getIssueByConversation(this.db,e.conversationId,e.workspaceId);if(!r||r.status===t||!await h.updateIssue(this.db,r.id,e.workspaceId,{status:t}))return;let i=await d.createMessage(this.db,{conversationId:e.conversationId,role:"event",content:`Issue status changed: ${r.status} -> ${t}`,taskId:e.id,metadata:JSON.stringify({issueId:r.id})});try{let t=await u.getConversation(this.db,e.conversationId,e.workspaceId);t&&(0,n.broadcastToUser)(t.userId,{type:"conversation.message",conversationId:e.conversationId,message:(0,s.messageToResponse)(i)}).catch(()=>{})}catch{}}async maybeUpsertUnread(e,t,a){if(!m.isUnreadEligible(e)||!e.completedAt)return;let r=await u.getConversation(this.db,e.conversationId,t);if(!r)return;let n=a??await m.findLatestAssistantMessageId(this.db,e.conversationId);await m.upsertUnreadEntry(this.db,{conversationId:e.conversationId,userId:r.userId,workspaceId:t,agentId:r.agentId,taskId:e.id,taskType:e.type,taskStatus:e.status,taskPrompt:e.prompt,completedAt:e.completedAt,latestMessageId: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 r.log.warn(`supersedeTask failed: task is in '${a}' status`,{taskId:e}),Error(`cannot supersede task in '${a}' status`)}return await this.reconcileAgentStatus(a.agentId,a.workspaceId),a}async retryTask(e,t){let a=await l.getTask(this.db,e);if(!a||a.workspaceId!==t)throw Error("task not found");if("failed"!==a.status)throw Error("only failed tasks can be retried");let r=await l.markFailedAsSuperseded(this.db,e,t);if(!r)throw Error("failed to mark task as superseded");return{oldTask:r,newTask:await this.enqueueTask(a.agentId,a.conversationId,t,a.prompt,a.type,{contextKey:a.contextKey??null,context:a.context,traceId:a.traceId??null,parentTaskId:a.parentTaskId??null})}}async cancelActiveTask(e,s,i){let o=await l.getActiveTaskByConversation(this.db,e,s);if(!o)return null;let c=await l.cancelTask(this.db,o.id,s);if(!c)return null;if("dispatched"===o.status||"running"===o.status){let i=await l.createTask(this.db,{agentId:o.agentId,runtimeId:o.runtimeId,workspaceId:s,conversationId:e,prompt:"",type:a.TASK_TYPES.KILL_TASK,context:{target_task_id:o.id}});await l.dispatchTaskById(this.db,i.id,s);let c=await t.queries.runtime.getAgentRuntime(this.db,o.runtimeId);c&&(0,n.broadcastToDaemon)(c.daemonId,{type:"daemon.kill",workspaceId:s,agentId:o.agentId,taskId:i.id,targetTaskId:o.id}).catch(e=>r.log.warn("daemon.kill broadcast failed, relying on poll fallback",e))}return await d.createMessage(this.db,{conversationId:e,role:"assistant",content:i?.reason??"Task cancelled by you",taskId:o.id,metadata:JSON.stringify({kind:"lifecycle"})}),await this.reconcileAgentStatus(o.agentId,s),c}async reconcileAgentStatus(e,t){let a=await l.countRunningTasks(this.db,e,t);await c.updateAgentStatus(this.db,e,t,a>0?"working":"idle"),(0,i.invalidate)(i.cacheKeys.activeTaskCounts(t)).catch(()=>{})}async cancelTrace(e,t,a){for(let 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){r.log.warn("cancelTrace: failed to cancel task",{traceId:e,convId:n,err:t})}}async pushTaskToDaemon(e,a){let r=await t.queries.runtime.getAgentRuntime(this.db,e.runtimeId);if(!r)return;let s=await l.dispatchTaskById(this.db,e.id,a);if(!s)return;let i=new o.TaskPayloadBuilder(this.db),c=await i.buildFullPayloads([s],a);if(0===c.length)return void await l.revertDispatchedToQueued(this.db,e.id,a);try{let{sent:t}=await (0,n.broadcastToDaemon)(r.daemonId,{type:"daemon.tasks",tasks:c});0===t&&await l.revertDispatchedToQueued(this.db,e.id,a)}catch{await l.revertDispatchedToQueued(this.db,e.id,a)}}}])},497365,(e,t,a)=>{"use strict";t.exports=e.r(766790).vendored["react-rsc"].ReactJsxRuntime},16700,e=>{"use strict";var t=e.i(497365);e.i(251182);let a="#27272a",r=[{name:"Purple",value:"#a855f7",gradient:["#c084fc","#a855f7","#7c3aed"],faceColor:"#2e1065"},{name:"Teal",value:"#14b8a6",gradient:["#5eead4","#14b8a6","#0d9488"],faceColor:"#134e4a"},{name:"Orange",value:"#f97316",gradient:["#fdba74","#f97316","#c2410c"],faceColor:"#7c2d12"},{name:"Blue",value:"#3b82f6",gradient:["#93c5fd","#3b82f6","#1d4ed8"],faceColor:"#1e3a5f"},{name:"Pink",value:"#f472b6",gradient:["#fda4af","#f472b6","#be185d"],faceColor:"#831843"},{name:"Yellow",value:"#eab308",gradient:["#fde047","#eab308","#a16207"],faceColor:"#713f12"},{name:"Green",value:"#22c55e",gradient:["#86efac","#22c55e","#15803d"],faceColor:"#14532d"},{name:"Beige",value:"#d6ccb8",gradient:["#e8e0d4","#d6ccb8","#b8a990"],faceColor:"#57534e"},{name:"Red",value:"#ef4444",gradient:["#fca5a5","#ef4444","#991b1b"],faceColor:"#7f1d1d"},{name:"Lake Blue",value:"#6366f1",gradient:["#a5b4fc","#6366f1","#3730a3"],faceColor:"#312e81"},{name:"Gray",value:"#9ca3af",gradient:["#d4d4d8","#9ca3af","#6b7280"],faceColor:"#374151"},{name:"Deep Purple",value:"#8b5cf6",gradient:["#c4b5fd","#8b5cf6","#5b21b6"],faceColor:"#3b0764"}],n=["circle","rounded","hexagon","task","book","mail","calendar","bulb","folder","mountain"],s=["dot","dash","hookL","smile","caret","arrow","oh"],i=(e,r)=>{let n=r??e,s=(r,s=a)=>(0,t.jsxs)("g",{children:[(0,t.jsx)("g",{transform:`translate(${-r}, 0)`,children:e(s)}),(0,t.jsx)("g",{transform:`translate(${r}, 0)`,children:n(s)})]});return s.displayName="EyePair",s},o=Object.keys({dots:{name:"Dots",render:i(e=>(0,t.jsx)("circle",{cx:"0",cy:"0",r:"7",fill:e}))},big:{name:"Big",render:i(e=>(0,t.jsxs)("g",{children:[(0,t.jsx)("circle",{cx:"0",cy:"0",r:"10",fill:e}),(0,t.jsx)("circle",{cx:"2.5",cy:"-3",r:"3.5",fill:"rgba(255,255,255,0.9)"})]}))},rings:{name:"Rings",render:i(e=>(0,t.jsx)("ellipse",{cx:"0",cy:"0",rx:"8.5",ry:"9.5",fill:"none",stroke:e,strokeWidth:"4.5"}))},arches:{name:"Arches",render:i(e=>(0,t.jsx)("path",{d:"M-10 2 Q0 -9 10 2",fill:"none",stroke:e,strokeWidth:"5",strokeLinecap:"round"}))},lines:{name:"Lines",render:i(e=>(0,t.jsx)("path",{d:"M-10 0 Q0 -6 10 0",fill:"none",stroke:e,strokeWidth:"5",strokeLinecap:"round"}))},happy:{name:"Happy",render:i(e=>(0,t.jsx)("path",{d:"M-10 5 Q0 -11 10 5",fill:"none",stroke:e,strokeWidth:"5",strokeLinecap:"round"}))},sleepy:{name:"Sleepy",render:i(e=>(0,t.jsx)("path",{d:"M-10 -2 Q0 8 10 -2",fill:"none",stroke:e,strokeWidth:"5",strokeLinecap:"round"}))},shy:{name:"Shy",render:i(e=>(0,t.jsx)("ellipse",{cx:"0",cy:"0",rx:"8.5",ry:"9.5",fill:e}))},wink:{name:"Wink",render:(e,r=a)=>(0,t.jsxs)("g",{children:[(0,t.jsx)("g",{transform:`translate(${-e}, 0)`,children:(0,t.jsx)("circle",{cx:"0",cy:"0",r:"7",fill:r})}),(0,t.jsx)("g",{transform:`translate(${e}, 0)`,children:(0,t.jsx)("path",{d:"M-10 2 Q0 -9 10 2",fill:"none",stroke:r,strokeWidth:"5",strokeLinecap:"round"})})]})}});function l(e){return e[Math.floor(Math.random()*e.length)]}e.s(["randomConfig",0,function(){return{shape:l(n),eye:l(o),nose:l(s),bg:Math.floor(Math.random()*r.length)}},"serializeAvatarConfig",0,function(e){return"avatar:"+JSON.stringify(e)}])},29575,(e,t,a)=>{"use strict";t.exports=e.r(766790).vendored["react-rsc"].ReactServerDOMTurbopackServer},638451,e=>{"use strict";e.s(["AnimatedAvatar",()=>t]);let t=(0,e.i(29575).registerClientReference)(function(){throw Error("Attempted to call AnimatedAvatar() from the server but AnimatedAvatar is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/web/src/components/avatar/animated-avatar.tsx <module evaluation>","AnimatedAvatar")},11494,e=>{"use strict";e.s(["AnimatedAvatar",()=>t]);let t=(0,e.i(29575).registerClientReference)(function(){throw Error("Attempted to call AnimatedAvatar() from the server but AnimatedAvatar is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/web/src/components/avatar/animated-avatar.tsx","AnimatedAvatar")},789634,e=>{"use strict";e.i(638451);var t=e.i(11494);e.n(t)},404362,e=>{"use strict";e.s(["AvatarPickerDialog",()=>t]);let t=(0,e.i(29575).registerClientReference)(function(){throw Error("Attempted to call AvatarPickerDialog() from the server but AvatarPickerDialog is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/web/src/components/avatar/avatar-picker-dialog.tsx <module evaluation>","AvatarPickerDialog")},660539,e=>{"use strict";e.s(["AvatarPickerDialog",()=>t]);let t=(0,e.i(29575).registerClientReference)(function(){throw Error("Attempted to call AvatarPickerDialog() from the server but AvatarPickerDialog is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/web/src/components/avatar/avatar-picker-dialog.tsx","AvatarPickerDialog")},206501,e=>{"use strict";e.i(404362);var t=e.i(660539);e.n(t)},877008,e=>{"use strict";e.s(["AgentAvatar",()=>t]);let t=(0,e.i(29575).registerClientReference)(function(){throw Error("Attempted to call AgentAvatar() from the server but AgentAvatar is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/web/src/components/avatar/agent-avatar.tsx <module evaluation>","AgentAvatar")},487427,e=>{"use strict";e.s(["AgentAvatar",()=>t]);let t=(0,e.i(29575).registerClientReference)(function(){throw Error("Attempted to call AgentAvatar() from the server but AgentAvatar is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/web/src/components/avatar/agent-avatar.tsx","AgentAvatar")},929119,e=>{"use strict";e.i(877008);var t=e.i(487427);e.n(t)},941775,e=>{"use strict";e.i(16700),e.i(789634),e.i(206501),e.i(929119),e.s([])},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 r=(0,e.i(726527).createLogger)({service:"broadcast"});async function n(e,n,s){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}}r.warn("broadcast service-binding non-ok",{...s,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 r=n(`/broadcast/daemon/${e}`,JSON.stringify(a),{daemonId:e,type:a.type});try{let{ctx:e}=(0,t.getCloudflareContext)();e.waitUntil(r.catch(()=>{}))}catch{}return r},"broadcastToUser",0,function(e,a){return function(e,a,r){let s=n(e,a,r);try{let{ctx:e}=(0,t.getCloudflareContext)();e.waitUntil(s.catch(()=>{}))}catch{}return s.then(()=>{})}(`/broadcast/user/${e}`,JSON.stringify(a),{userId:e,type:a.type})}])},511456,e=>{"use strict";e.i(700598);let t=(0,e.i(726527).createLogger)({service:"web",level:process.env.ALOOK_LOG_LEVEL||"info",pretty:!1});e.s(["log",0,t])},555230,e=>{"use strict";e.i(700598);var t=e.i(291109),a=e.i(704024),r=e.i(424166),n=e.i(740580),s=e.i(774078);e.s(["TaskPayloadBuilder",0,class{db;constructor(e){this.db=e}async buildFullPayloads(e,i){let o=e.filter(e=>e.type!==a.TASK_TYPES.KILL_TASK),l=[...new Set(o.map(e=>e.agentId))],[c,d,u]=l.length>0?await Promise.all([t.queries.agent.getAllAgentsForWorkspace(this.db,i),(0,s.cached)(s.cacheKeys.allEmailAccounts(i),600,()=>t.queries.emailAccount.getAllEmailAccountsForWorkspace(this.db,i)),t.queries.agentLink.getAllColleaguesForWorkspace(this.db,i).catch(()=>[])]).then(([e,t,a])=>{let r=new Set(l);return[e.filter(e=>r.has(e.id)),t.filter(e=>r.has(e.agentId)),a.filter(e=>r.has(e.agentId))]}):[[],[],[]],h=new Map(c.map(e=>[e.id,e])),m=new Map;for(let e of d){let t=m.get(e.agentId)??[];t.push(e.emailAddress),m.set(e.agentId,t)}let p=new Map;for(let e of u){let t=p.get(e.agentId)??[];t.push(e),p.set(e.agentId,t)}let f=[...new Set(o.map(e=>e.conversationId).filter(Boolean))],g=new Map((f.length>0?await t.queries.conversation.getConversationsByIds(this.db,f,i):[]).map(e=>[e.id,e])),k=new Map,b=new Map,w=[];for(let o of e){if(o.type===a.TASK_TYPES.KILL_TASK){w.push({...(0,n.taskToResponse)(o),agent:null,sender:null});continue}let e=h.get(o.agentId)??null,l=[];if(e){e.emailHandle&&l.push((0,r.toAlookAddress)(e.emailHandle));let t=m.get(e.id)??[];l.push(...t)}let c=e?.instructions??"";if(e?.ownerId){if(!k.has(e.ownerId)){let a=await (0,s.cached)(s.cacheKeys.member(i,e.ownerId),600,()=>t.queries.member.getMemberByUserAndWorkspace(this.db,e.ownerId,i));k.set(e.ownerId,a?{globalInstruction:a.globalInstruction}:null)}let a=k.get(e.ownerId);a?.globalInstruction&&(c=[a.globalInstruction,c].filter(Boolean).join("\n\n"))}let d=null;if(e?.ownerId){if(!b.has(e.ownerId)){let a=await (0,s.cached)(s.cacheKeys.user(e.ownerId),1800,()=>t.queries.user.getUser(this.db,e.ownerId));b.set(e.ownerId,a?{name:a.name,email:a.email}:null)}d=b.get(e.ownerId)?.name??null}let u=g.get(o.conversationId)??null,f=u?.channel??"default",v=null;if(o.type===a.TASK_TYPES.USER_DM_MESSAGE&&u?.userId){if(!b.has(u.userId)){let e=await (0,s.cached)(s.cacheKeys.user(u.userId),1800,()=>t.queries.user.getUser(this.db,u.userId));b.set(u.userId,e?{name:e.name,email:e.email}:null)}let a=b.get(u.userId);a&&(v={name:a.name,email:a.email,is_owner:u.userId===e?.ownerId})}let I=(p.get(o.agentId)??[]).map(e=>({name:e.name,email:e.emailHandle?(0,r.toAlookAddress)(e.emailHandle):"",description:e.description,instruction:e.instruction}));w.push({...(0,n.taskToResponse)(o),channel:f,sender:v,agent:e?{instructions:c,name:e.name,runtime_config:e.runtimeConfig||{},email_handle:e.emailHandle||null,email_addresses:l,user_email:null,user_name:d,colleagues:I}:null})}return w}}])},205054,e=>{"use strict";e.i(700598);var t=e.i(291109),a=e.i(704024),r=e.i(511456),n=e.i(726089),s=e.i(740580),i=e.i(774078),o=e.i(555230);let l=t.queries.task,c=t.queries.agent,d=t.queries.message,u=t.queries.conversation,h=t.queries.issue,m=t.queries.inbox;e.s(["TaskService",0,class{db;constructor(e){this.db=e}async enqueueTask(e,t,r,n,s=a.TASK_TYPES.USER_DM_MESSAGE,o){let d=await c.getAgent(this.db,e,r);if(!d)throw Error("agent not found");if(!d.runtimeId)throw Error("agent has no runtime");if(o?.traceId&&o.parentTaskId&&await l.countTasksByTrace(this.db,o.traceId)>=a.MAX_TASKS_PER_TRACE)throw Error(`Trace limit reached (${a.MAX_TASKS_PER_TRACE} tasks). This may indicate an infinite loop between agents.`);let u=await l.createTask(this.db,{agentId:e,runtimeId:d.runtimeId,workspaceId:r,conversationId:t,prompt:n,type:s,contextKey:o?.contextKey??null,priority:0,context:o?.context,traceId:o?.traceId??null,parentTaskId:o?.parentTaskId??null});return(0,i.invalidate)(i.cacheKeys.activeTaskCounts(r)).catch(()=>{}),await this.pushTaskToDaemon(u,r).catch(()=>{}),u}async claimTask(e,t){let a=await c.getAgent(this.db,e,t);return this.claimTaskWithAgent(e,t,a)}async claimTaskWithAgent(e,t,a){if(!a)return null;if(await l.countRunningTasks(this.db,e,t)>=a.maxConcurrentTasks){let r=await l.findSteerableReplacement(this.db,e,t);if(!r||await l.countRunningTasks(this.db,e,t,r.predecessorId)>=a.maxConcurrentTasks)return null}let r=await l.claimTask(this.db,e,t);return r?(await c.updateAgentStatus(this.db,e,t,"working"),r):null}async claimTasksForRuntimes(e,t,a){let r=await l.claimKillTasks(this.db,e,a,t),n=t-r.length,s=n>0?await l.listPendingTasksByRuntimes(this.db,e,a):[],i=new Set(e),o=new Set,d=[...r],u=[];for(let e of s){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 d;let h=[...new Set(u.map(e=>e.agentId))],m=new Map((await c.getAgentsByIds(this.db,h,a)).map(e=>[e.id,e]));for(let e of(await Promise.all(u.map(e=>this.claimTaskWithAgent(e.agentId,e.workspaceId,m.get(e.agentId)??null)))))e&&i.has(e.runtimeId)&&d.push(e);return d}async startTask(e,t){let a=await l.startTask(this.db,e,t);if(!a)throw Error("task not in dispatched status");return a}async completeTask(e,t,a,n){let s;try{s=JSON.parse(a)}catch{s={raw:a}}let i=await l.completeTask(this.db,e,t,{result:s,sessionId:n||null});if(!i){let t=await l.getTask(this.db,e),a=t?.status??"unknown";throw r.log.warn(`completeTask failed: task is in '${a}' status`,{taskId:e}),Error(`cannot complete task in '${a}' status`)}return await this.reconcileAgentStatus(i.agentId,i.workspaceId),this.maybeUpsertUnread(i,t,null).catch(()=>{}),i}async failTask(e,i,o){let c=await l.failTask(this.db,e,i,o);if(!c){let t=await l.getTask(this.db,e),a=t?.status??"unknown";throw r.log.warn(`failTask failed: task is in '${a}' status`,{taskId:e}),Error(`cannot fail task in '${a}' status`)}if(c.type===a.TASK_TYPES.KILL_TASK)return c;let h=null;if(o){let a=null;try{if(c.runtimeId){let e=await t.queries.runtime.getAgentRuntime(this.db,c.runtimeId);a=e?.provider??null}}catch{}let r=await d.createMessage(this.db,{conversationId:c.conversationId,role:"assistant",content:o,taskId:e,metadata:JSON.stringify({error_source:"runtime",provider:a})});h=r?.id??null;try{let e=await u.getConversation(this.db,c.conversationId,i);e&&(0,n.broadcastToUser)(e.userId,{type:"conversation.message",conversationId:c.conversationId,message:(0,s.messageToResponse)(r)}).catch(()=>{})}catch{}}return await this.reconcileAgentStatus(c.agentId,c.workspaceId),await this.syncIssueStatusFromTask(c,"failed"),this.maybeUpsertUnread(c,i,h).catch(()=>{}),c}async syncIssueStatusFromTask(e,t){if(e.type!==a.TASK_TYPES.ISSUE_EVENT)return;let r=await h.getIssueByConversation(this.db,e.conversationId,e.workspaceId);if(!r||r.status===t||!await h.updateIssue(this.db,r.id,e.workspaceId,{status:t}))return;let i=await d.createMessage(this.db,{conversationId:e.conversationId,role:"event",content:`Issue status changed: ${r.status} -> ${t}`,taskId:e.id,metadata:JSON.stringify({issueId:r.id})});try{let t=await u.getConversation(this.db,e.conversationId,e.workspaceId);t&&(0,n.broadcastToUser)(t.userId,{type:"conversation.message",conversationId:e.conversationId,message:(0,s.messageToResponse)(i)}).catch(()=>{})}catch{}}async maybeUpsertUnread(e,t,a){if(!m.isUnreadEligible(e)||!e.completedAt)return;let r=await u.getConversation(this.db,e.conversationId,t);if(!r)return;let n=a??await m.findLatestAssistantMessageId(this.db,e.conversationId);await m.upsertUnreadEntry(this.db,{conversationId:e.conversationId,userId:r.userId,workspaceId:t,agentId:r.agentId,taskId:e.id,taskType:e.type,taskStatus:e.status,taskPrompt:e.prompt,completedAt:e.completedAt,latestMessageId: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 r.log.warn(`supersedeTask failed: task is in '${a}' status`,{taskId:e}),Error(`cannot supersede task in '${a}' status`)}return await this.reconcileAgentStatus(a.agentId,a.workspaceId),a}async retryTask(e,t){let a=await l.getTask(this.db,e);if(!a||a.workspaceId!==t)throw Error("task not found");if("failed"!==a.status)throw Error("only failed tasks can be retried");let r=await l.markFailedAsSuperseded(this.db,e,t);if(!r)throw Error("failed to mark task as superseded");return{oldTask:r,newTask:await this.enqueueTask(a.agentId,a.conversationId,t,a.prompt,a.type,{contextKey:a.contextKey??null,context:a.context,traceId:a.traceId??null,parentTaskId:a.parentTaskId??null})}}async cancelActiveTask(e,s,i){let o=await l.getActiveTaskByConversation(this.db,e,s);if(!o)return null;let c=await l.cancelTask(this.db,o.id,s);if(!c)return null;if("dispatched"===o.status||"running"===o.status){let i=await l.createTask(this.db,{agentId:o.agentId,runtimeId:o.runtimeId,workspaceId:s,conversationId:e,prompt:"",type:a.TASK_TYPES.KILL_TASK,context:{target_task_id:o.id}});await l.dispatchTaskById(this.db,i.id,s);let c=await t.queries.runtime.getAgentRuntime(this.db,o.runtimeId);c&&(0,n.broadcastToDaemon)(c.daemonId,{type:"daemon.kill",workspaceId:s,agentId:o.agentId,taskId:i.id,targetTaskId:o.id}).catch(e=>r.log.warn("daemon.kill broadcast failed, relying on poll fallback",e))}return await d.createMessage(this.db,{conversationId:e,role:"assistant",content:i?.reason??"Task cancelled by you",taskId:o.id,metadata:JSON.stringify({kind:"lifecycle"})}),await this.reconcileAgentStatus(o.agentId,s),c}async reconcileAgentStatus(e,t){let a=await l.countRunningTasks(this.db,e,t);await c.updateAgentStatus(this.db,e,t,a>0?"working":"idle"),(0,i.invalidate)(i.cacheKeys.activeTaskCounts(t)).catch(()=>{})}async cancelTrace(e,t,a){for(let 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){r.log.warn("cancelTrace: failed to cancel task",{traceId:e,convId:n,err:t})}}async pushTaskToDaemon(e,a){let r=await t.queries.runtime.getAgentRuntime(this.db,e.runtimeId);if(!r)return;let s=await l.dispatchTaskById(this.db,e.id,a);if(!s)return;let i=new o.TaskPayloadBuilder(this.db),c=await i.buildFullPayloads([s],a);if(0===c.length)return void await l.revertDispatchedToQueued(this.db,e.id,a);try{let{sent:t}=await (0,n.broadcastToDaemon)(r.daemonId,{type:"daemon.tasks",tasks:c});0===t&&await l.revertDispatchedToQueued(this.db,e.id,a)}catch{await l.revertDispatchedToQueued(this.db,e.id,a)}}}])},497365,(e,t,a)=>{"use strict";t.exports=e.r(766790).vendored["react-rsc"].ReactJsxRuntime},16700,e=>{"use strict";var t=e.i(497365);e.i(251182);let a="#27272a",r=[{name:"Purple",value:"#a855f7",gradient:["#c084fc","#a855f7","#7c3aed"],faceColor:"#2e1065"},{name:"Teal",value:"#14b8a6",gradient:["#5eead4","#14b8a6","#0d9488"],faceColor:"#134e4a"},{name:"Orange",value:"#f97316",gradient:["#fdba74","#f97316","#c2410c"],faceColor:"#7c2d12"},{name:"Blue",value:"#3b82f6",gradient:["#93c5fd","#3b82f6","#1d4ed8"],faceColor:"#1e3a5f"},{name:"Pink",value:"#f472b6",gradient:["#fda4af","#f472b6","#be185d"],faceColor:"#831843"},{name:"Yellow",value:"#eab308",gradient:["#fde047","#eab308","#a16207"],faceColor:"#713f12"},{name:"Green",value:"#22c55e",gradient:["#86efac","#22c55e","#15803d"],faceColor:"#14532d"},{name:"Beige",value:"#d6ccb8",gradient:["#e8e0d4","#d6ccb8","#b8a990"],faceColor:"#57534e"},{name:"Red",value:"#ef4444",gradient:["#fca5a5","#ef4444","#991b1b"],faceColor:"#7f1d1d"},{name:"Lake Blue",value:"#6366f1",gradient:["#a5b4fc","#6366f1","#3730a3"],faceColor:"#312e81"},{name:"Gray",value:"#9ca3af",gradient:["#d4d4d8","#9ca3af","#6b7280"],faceColor:"#374151"},{name:"Deep Purple",value:"#8b5cf6",gradient:["#c4b5fd","#8b5cf6","#5b21b6"],faceColor:"#3b0764"}],n=["circle","rounded","hexagon","task","book","mail","calendar","bulb","folder","mountain"],s=["dot","dash","hookL","smile","caret","arrow","oh"],i=(e,r)=>{let n=r??e,s=(r,s=a)=>(0,t.jsxs)("g",{children:[(0,t.jsx)("g",{transform:`translate(${-r}, 0)`,children:e(s)}),(0,t.jsx)("g",{transform:`translate(${r}, 0)`,children:n(s)})]});return s.displayName="EyePair",s},o=Object.keys({dots:{name:"Dots",render:i(e=>(0,t.jsx)("circle",{cx:"0",cy:"0",r:"7",fill:e}))},big:{name:"Big",render:i(e=>(0,t.jsxs)("g",{children:[(0,t.jsx)("circle",{cx:"0",cy:"0",r:"10",fill:e}),(0,t.jsx)("circle",{cx:"2.5",cy:"-3",r:"3.5",fill:"rgba(255,255,255,0.9)"})]}))},rings:{name:"Rings",render:i(e=>(0,t.jsx)("ellipse",{cx:"0",cy:"0",rx:"8.5",ry:"9.5",fill:"none",stroke:e,strokeWidth:"4.5"}))},arches:{name:"Arches",render:i(e=>(0,t.jsx)("path",{d:"M-10 2 Q0 -9 10 2",fill:"none",stroke:e,strokeWidth:"5",strokeLinecap:"round"}))},lines:{name:"Lines",render:i(e=>(0,t.jsx)("path",{d:"M-10 0 Q0 -6 10 0",fill:"none",stroke:e,strokeWidth:"5",strokeLinecap:"round"}))},happy:{name:"Happy",render:i(e=>(0,t.jsx)("path",{d:"M-10 5 Q0 -11 10 5",fill:"none",stroke:e,strokeWidth:"5",strokeLinecap:"round"}))},sleepy:{name:"Sleepy",render:i(e=>(0,t.jsx)("path",{d:"M-10 -2 Q0 8 10 -2",fill:"none",stroke:e,strokeWidth:"5",strokeLinecap:"round"}))},shy:{name:"Shy",render:i(e=>(0,t.jsx)("ellipse",{cx:"0",cy:"0",rx:"8.5",ry:"9.5",fill:e}))},wink:{name:"Wink",render:(e,r=a)=>(0,t.jsxs)("g",{children:[(0,t.jsx)("g",{transform:`translate(${-e}, 0)`,children:(0,t.jsx)("circle",{cx:"0",cy:"0",r:"7",fill:r})}),(0,t.jsx)("g",{transform:`translate(${e}, 0)`,children:(0,t.jsx)("path",{d:"M-10 2 Q0 -9 10 2",fill:"none",stroke:r,strokeWidth:"5",strokeLinecap:"round"})})]})}});function l(e){return e[Math.floor(Math.random()*e.length)]}e.s(["randomConfig",0,function(){return{shape:l(n),eye:l(o),nose:l(s),bg:Math.floor(Math.random()*r.length)}},"serializeAvatarConfig",0,function(e){return"avatar:"+JSON.stringify(e)}])},29575,(e,t,a)=>{"use strict";t.exports=e.r(766790).vendored["react-rsc"].ReactServerDOMTurbopackServer},638451,e=>{"use strict";e.s(["AnimatedAvatar",()=>t]);let t=(0,e.i(29575).registerClientReference)(function(){throw Error("Attempted to call AnimatedAvatar() from the server but AnimatedAvatar is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/web/src/components/avatar/animated-avatar.tsx <module evaluation>","AnimatedAvatar")},11494,e=>{"use strict";e.s(["AnimatedAvatar",()=>t]);let t=(0,e.i(29575).registerClientReference)(function(){throw Error("Attempted to call AnimatedAvatar() from the server but AnimatedAvatar is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/web/src/components/avatar/animated-avatar.tsx","AnimatedAvatar")},789634,e=>{"use strict";e.i(638451);var t=e.i(11494);e.n(t)},404362,e=>{"use strict";e.s(["AvatarPickerDialog",()=>t]);let t=(0,e.i(29575).registerClientReference)(function(){throw Error("Attempted to call AvatarPickerDialog() from the server but AvatarPickerDialog is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/web/src/components/avatar/avatar-picker-dialog.tsx <module evaluation>","AvatarPickerDialog")},660539,e=>{"use strict";e.s(["AvatarPickerDialog",()=>t]);let t=(0,e.i(29575).registerClientReference)(function(){throw Error("Attempted to call AvatarPickerDialog() from the server but AvatarPickerDialog is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/web/src/components/avatar/avatar-picker-dialog.tsx","AvatarPickerDialog")},206501,e=>{"use strict";e.i(404362);var t=e.i(660539);e.n(t)},877008,e=>{"use strict";e.s(["AgentAvatar",()=>t]);let t=(0,e.i(29575).registerClientReference)(function(){throw Error("Attempted to call AgentAvatar() from the server but AgentAvatar is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/web/src/components/avatar/agent-avatar.tsx <module evaluation>","AgentAvatar")},487427,e=>{"use strict";e.s(["AgentAvatar",()=>t]);let t=(0,e.i(29575).registerClientReference)(function(){throw Error("Attempted to call AgentAvatar() from the server but AgentAvatar is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/web/src/components/avatar/agent-avatar.tsx","AgentAvatar")},929119,e=>{"use strict";e.i(877008);var t=e.i(487427);e.n(t)},941775,e=>{"use strict";e.i(16700),e.i(789634),e.i(206501),e.i(929119),e.s([])},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=_1d18okt._.js.map
|
package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_1i4egv6._.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[502844,e=>e.a(async(t,a)=>{try{var r=e.i(931720);e.i(700598);var i=e.i(291109),n=e.i(888247),o=e.i(424166),s=e.i(469187),l=e.i(929782),d=e.i(332432),c=e.i(704024),u=e.i(719436),p=e.i(386581),h=e.i(675139),w=e.i(152327),m=e.i(47962),g=e.i(776227),f=e.i(740580),R=e.i(774078),y=e.i(726089);e.i(941775);var v=e.i(16700),I=t([w]);[w]=I.then?(await I)():I;let E=(0,w.withAuth)(async(e,t)=>{let a=await (0,m.withWorkspaceMember)(e,t);if(a instanceof Response)return a;let{env:w}=(0,r.getCloudflareContext)(),I=(0,h.getDb)(w.DB),E=e.nextUrl.searchParams.get("agentId");if(!E)return(0,g.writeError)("agentId query param is required",400);let[A,k]=await (0,g.parseBody)(e,n.RecruitAgentRequestSchema);if(k)return k;let C=await i.queries.agent.getAgent(I,E,a.workspaceId,t.userId);if(!C)return(0,g.writeError)("not found",404);let T=C.runtimeId?await i.queries.runtime.getAgentRuntimeForWorkspace(I,C.runtimeId,a.workspaceId,t.userId):null;if(!T)return(0,g.writeError)("calling agent has no runtime — reassign the agent to your own runtime first",400);let x=A.name?.trim()||(0,p.uniqueNamesGenerator)({dictionaries:[p.names],length:1,style:"capital"}),b=await (0,R.cached)(R.cacheKeys.allHandles(a.workspaceId),120,()=>i.queries.agent.getAllHandlesForWorkspace(I,a.workspaceId)),q=new Set(b.map(e=>e.emailHandle).filter(Boolean)),N=function(e,t){let a=t.toLowerCase().replace(/[^a-z0-9-]/g,"").slice(0,30);if((0,o.isValidHandle)(a)&&!e.has(a))return e.add(a),a;for(let t=0;t<5;t++){let t=(0,p.uniqueNamesGenerator)({dictionaries:[p.names],length:1,style:"lowerCase"}),r=`${a}-${t}`.slice(0,30);if((0,o.isValidHandle)(r)&&!e.has(r))return e.add(r),r}let r=`${a}-${(0,u.nanoid)(6)}`;return e.add(r),r}(q,x),S=A.model?{model:A.model}:null,H=await i.queries.agent.createAgent(I,{workspaceId:a.workspaceId,name:x,description:A.description||"",instructions:A.instructions,runtimeId:C.runtimeId,runtimeMode:T.runtimeMode,runtimeConfig:S,visibility:"private",maxConcurrentTasks:6,ownerId:t.userId,emailHandle:N,avatarUrl:(0,v.serializeAvatarConfig)((0,v.randomConfig)())}),P=await i.queries.agentLink.create(I,{workspaceId:a.workspaceId,sourceAgentId:E,targetAgentId:H.id,instruction:A.relationship});if(C.emailHandle){let e=(0,o.toAlookAddress)(C.emailHandle);await i.queries.whitelist.addWhitelist(I,H.id,a.workspaceId,e)}if(t.email&&await i.queries.whitelist.addWhitelist(I,H.id,a.workspaceId,t.email.toLowerCase()),await Promise.all([(0,R.invalidate)(R.cacheKeys.allAgents(a.workspaceId)),(0,R.invalidate)(R.cacheKeys.allHandles(a.workspaceId)),(0,R.invalidate)(R.cacheKeys.allAgentAccess(a.workspaceId)),(0,R.invalidate)(R.cacheKeys.allColleagues(a.workspaceId)),(0,R.invalidate)(R.cacheKeys.agentLinks(a.workspaceId))]),(0,y.broadcastToUser)(t.userId,{type:"agent.created",agentId:H.id,workspaceId:a.workspaceId,parentAgentId:E}).catch(()=>{}),(0,s.isOnline)(T.machineLastSeenAt)&&C.emailHandle)try{let e=(0,o.toAlookAddress)(C.emailHandle),t=(0,o.toAlookAddress)(N),r="Welcome aboard",n="<p>Hi, I just recruited you. Your instructions are already set. Please reply confirming you're ready to work — tell me your name and email address.</p>",s=`<${(0,u.nanoid)()}@alook.ai>`,p="tr_"+(0,u.nanoid)(),h=(0,l.buildMimeMessage)({from:e,to:t,subject:r,messageId:s,body:n,bodyType:"text/html"}),m=`emails/${(0,u.nanoid)()}/raw`;await w.EMAIL_BUCKET.put(m,h,{httpMetadata:{contentType:"message/rfc822"}});let g=JSON.stringify({agentId:H.id,workspaceId:a.workspaceId,r2Key:m,from:e,to:t,subject:r,isWhitelisted:!0,forwarded:!1,messageId:s,inReplyTo:"",references:"",isInternal:!0,traceId:p}),f={method:"POST",headers:{"Content-Type":"application/json"},body:g};try{await w.WORKER_SELF_REFERENCE.fetch("http://internal/api/email/notify",f)}catch{await fetch(`${c.DEV_WEB_URL}/api/email/notify`,f)}await i.queries.email.createEmail(I,{agentId:E,workspaceId:a.workspaceId,fromEmail:e,toEmail:t,subject:r,r2Key:m,isWhitelisted:!1,forwarded:!1,messageId:s,inReplyTo:"",references:"",htmlBody:n,direction:"outbound",status:"sent"});let R=A.context_key||null;if(R){let e=(0,d.extractThreadId)("","",s);e&&await i.queries.conversationMap.createMapping(I,{key:(0,d.buildEmailMapKey)(E,e),workspaceId:a.workspaceId,conversationId:R})}}catch{}return(0,g.writeJSON)({agent:{...(0,f.agentToResponse)(H),email:(0,o.toAlookAddress)(N)},link:(0,f.agentLinkToResponse)(P)},201)});e.s(["POST",0,E]),a()}catch(e){a(e)}},!1),525882,e=>e.a(async(t,a)=>{try{var r=e.i(618117),i=e.i(99200),n=e.i(864055),o=e.i(289578),s=e.i(641783),l=e.i(467635),d=e.i(541774),c=e.i(393982),u=e.i(325959),p=e.i(474834),h=e.i(800989),w=e.i(489409),m=e.i(203050),g=e.i(851100),f=e.i(55434),R=e.i(193695);e.i(163438);var y=e.i(118649),v=e.i(502844),I=t([v]);[v]=I.then?(await I)():I;let A=new r.AppRouteRouteModule({definition:{kind:i.RouteKind.APP_ROUTE,page:"/api/agents/recruit/route",pathname:"/api/agents/recruit",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/web/src/app/api/agents/recruit/route.ts",nextConfigOutput:"standalone",userland:v,...{}}),{workAsyncStorage:k,workUnitAsyncStorage:C,serverHooks:T}=A;async function E(e,t,a){a.requestMeta&&(0,o.setRequestMeta)(e,a.requestMeta),A.isDev&&(0,o.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let r="/api/agents/recruit/route";r=r.replace(/\/index$/,"")||"/";let n=await A.prepare(e,t,{srcPage:r,multiZoneDraftMode:!1});if(!n)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:v,deploymentId:I,params:E,nextConfig:k,parsedUrl:C,isDraftMode:T,prerenderManifest:x,routerServerContext:b,isOnDemandRevalidate:q,revalidateOnlyGenerated:N,resolvedPathname:S,clientReferenceManifest:H,serverActionsManifest:P}=n,_=(0,d.normalizeAppPath)(r),O=!!(x.dynamicRoutes[_]||x.routes[S]),M=async()=>((null==b?void 0:b.render404)?await b.render404(e,t,C,!1):t.end("This page could not be found"),null);if(O&&!T){let e=!!x.routes[S],t=x.dynamicRoutes[_];if(t&&!1===t.fallback&&!e){if(k.adapterPath)return await M();throw new R.NoFallbackError}}let U=null;!O||A.isDev||T||(U=S,U="/index"===U?"/":U);let K=!0===A.isDev||!O,D=O&&!K;P&&H&&(0,l.setManifestsSingleton)({page:r,clientReferenceManifest:H,serverActionsManifest:P});let $=e.method||"GET",L=(0,s.getTracer)(),W=L.getActiveScopeSpan(),F=!!(null==b?void 0:b.isWrappedByNextServer),B=!!(0,o.getRequestMeta)(e,"minimalMode"),j=(0,o.getRequestMeta)(e,"incrementalCache")||await A.getIncrementalCache(e,k,x,B);null==j||j.resetRequestCache(),globalThis.__incrementalCache=j;let V={params:E,previewProps:x.preview,renderOpts:{experimental:{authInterrupts:!!k.experimental.authInterrupts},cacheComponents:!!k.cacheComponents,supportsDynamicResponse:K,incrementalCache:j,cacheLifeProfiles:k.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,r,i)=>A.onRequestError(e,t,r,i,b)},sharedContext:{buildId:v,deploymentId:I}},G=new c.NodeNextRequest(e),z=new c.NodeNextResponse(t),X=u.NextRequestAdapter.fromNodeNextRequest(G,(0,u.signalFromNodeResponse)(t));try{let n,o=async e=>A.handle(X,V).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")!==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 i=a.get("next.route");if(i){let t=`${$} ${i}`;e.setAttributes({"next.route":i,"http.route":i,"next.span_name":t}),e.updateName(t),n&&n!==e&&(n.setAttribute("http.route",i),n.updateName(t))}else e.updateName(`${$} ${r}`)}),l=async n=>{var s,l;let d=async({previousCacheEntry:i})=>{try{if(!B&&q&&N&&!i)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let r=await o(n);e.fetchMetrics=V.renderOpts.fetchMetrics;let s=V.renderOpts.pendingWaitUntil;s&&a.waitUntil&&(a.waitUntil(s),s=void 0);let l=V.renderOpts.collectedTags;if(!O)return await (0,w.sendResponse)(G,z,r,V.renderOpts.pendingWaitUntil),null;{let e=await r.blob(),t=(0,m.toNodeOutgoingHttpHeaders)(r.headers);l&&(t[f.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==V.renderOpts.collectedRevalidate&&!(V.renderOpts.collectedRevalidate>=f.INFINITE_CACHE)&&V.renderOpts.collectedRevalidate,i=void 0===V.renderOpts.collectedExpire||V.renderOpts.collectedExpire>=f.INFINITE_CACHE?void 0:V.renderOpts.collectedExpire;return{value:{kind:y.CachedRouteKind.APP_ROUTE,status:r.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:i}}}}catch(t){throw(null==i?void 0:i.isStale)&&await A.onRequestError(e,t,{routerKind:"App Router",routePath:r,routeType:"route",revalidateReason:(0,h.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:q})},!1,b),t}},c=await A.handleResponse({req:e,nextConfig:k,cacheKey:U,routeKind:i.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:x,isRoutePPREnabled:!1,isOnDemandRevalidate:q,revalidateOnlyGenerated:N,responseGenerator:d,waitUntil:a.waitUntil,isMinimalMode:B});if(!O)return null;if((null==c||null==(s=c.value)?void 0:s.kind)!==y.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==c||null==(l=c.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});B||t.setHeader("x-nextjs-cache",q?"REVALIDATED":c.isMiss?"MISS":c.isStale?"STALE":"HIT"),T&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let u=(0,m.fromNodeOutgoingHttpHeaders)(c.value.headers);return B&&O||u.delete(f.NEXT_CACHE_TAGS_HEADER),!c.cacheControl||t.getHeader("Cache-Control")||u.get("Cache-Control")||u.set("Cache-Control",(0,g.getCacheControlHeader)(c.cacheControl)),await (0,w.sendResponse)(G,z,new Response(c.value.body,{headers:u,status:c.value.status||200})),null};F&&W?await l(W):(n=L.getActiveScopeSpan(),await L.withPropagatedContext(e.headers,()=>L.trace(p.BaseServerSpan.handleRequest,{spanName:`${$} ${r}`,kind:s.SpanKind.SERVER,attributes:{"http.method":$,"http.target":e.url}},l),void 0,!F))}catch(t){if(t instanceof R.NoFallbackError||await A.onRequestError(e,t,{routerKind:"App Router",routePath:_,routeType:"route",revalidateReason:(0,h.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:q})},!1,b),O)throw t;return await (0,w.sendResponse)(G,z,new Response(null,{status:500})),null}}e.s(["handler",0,E,"patchFetch",0,function(){return(0,n.patchFetch)({workAsyncStorage:k,workUnitAsyncStorage:C})},"routeModule",0,A,"serverHooks",0,T,"workAsyncStorage",0,k,"workUnitAsyncStorage",0,C]),a()}catch(e){a(e)}},!1)];
|
|
1
|
+
module.exports=[502844,e=>e.a(async(t,a)=>{try{var r=e.i(931720);e.i(700598);var i=e.i(291109),n=e.i(888247),o=e.i(424166),s=e.i(469187),l=e.i(929782),d=e.i(332432),u=e.i(704024),c=e.i(719436),p=e.i(386581),h=e.i(675139),w=e.i(152327),m=e.i(47962),g=e.i(776227),f=e.i(740580),R=e.i(774078),y=e.i(726089);e.i(941775);var v=e.i(16700),E=t([w]);[w]=E.then?(await E)():E;let I=(0,w.withAuth)(async(e,t)=>{let a=await (0,m.withWorkspaceMember)(e,t);if(a instanceof Response)return a;let{env:w}=(0,r.getCloudflareContext)(),E=(0,h.getDb)(w.DB),I=e.nextUrl.searchParams.get("agentId");if(!I)return(0,g.writeError)("agentId query param is required",400);let[A,k]=await (0,g.parseBody)(e,n.RecruitAgentRequestSchema);if(k)return k;let C=await i.queries.agent.getAgent(E,I,a.workspaceId,t.userId);if(!C)return(0,g.writeError)("not found",404);let T=C.runtimeId?await i.queries.runtime.getAgentRuntimeForWorkspace(E,C.runtimeId,a.workspaceId,t.userId):null;if(!T)return(0,g.writeError)("calling agent has no runtime — reassign the agent to your own runtime first",400);let x=A.name?.trim()||(0,p.uniqueNamesGenerator)({dictionaries:[p.names],length:1,style:"capital"}),b=await (0,R.cached)(R.cacheKeys.allHandles(a.workspaceId),120,()=>i.queries.agent.getAllHandlesForWorkspace(E,a.workspaceId)),q=new Set(b.map(e=>e.emailHandle).filter(Boolean)),N=function(e,t){let a=t.toLowerCase().replace(/[^a-z0-9-]/g,"").slice(0,30);if((0,o.isValidHandle)(a)&&!e.has(a))return e.add(a),a;for(let t=0;t<5;t++){let t=(0,p.uniqueNamesGenerator)({dictionaries:[p.names],length:1,style:"lowerCase"}),r=`${a}-${t}`.slice(0,30);if((0,o.isValidHandle)(r)&&!e.has(r))return e.add(r),r}let r=`${a}-${(0,c.nanoid)(6)}`;return e.add(r),r}(q,x),S=A.model?{model:A.model}:null,H=await i.queries.agent.createAgent(E,{workspaceId:a.workspaceId,name:x,description:A.description||"",instructions:A.instructions,runtimeId:C.runtimeId,runtimeMode:T.runtimeMode,runtimeConfig:S,visibility:"private",maxConcurrentTasks:6,ownerId:t.userId,emailHandle:N,avatarUrl:(0,v.serializeAvatarConfig)((0,v.randomConfig)())}),P=await i.queries.agentLink.create(E,{workspaceId:a.workspaceId,sourceAgentId:I,targetAgentId:H.id,instruction:A.relationship});if(C.emailHandle){let e=(0,o.toAlookAddress)(C.emailHandle);await i.queries.whitelist.addWhitelist(E,H.id,a.workspaceId,e)}if(t.email&&await i.queries.whitelist.addWhitelist(E,H.id,a.workspaceId,t.email.toLowerCase()),await Promise.all([(0,R.invalidate)(R.cacheKeys.allHandles(a.workspaceId)),(0,R.invalidate)(R.cacheKeys.allAgentAccess(a.workspaceId)),(0,R.invalidate)(R.cacheKeys.agentLinks(a.workspaceId))]),(0,y.broadcastToUser)(t.userId,{type:"agent.created",agentId:H.id,workspaceId:a.workspaceId,parentAgentId:I}).catch(()=>{}),(0,s.isOnline)(T.machineLastSeenAt)&&C.emailHandle)try{let e=(0,o.toAlookAddress)(C.emailHandle),t=(0,o.toAlookAddress)(N),r="Welcome aboard",n="<p>Hi, I just recruited you. Your instructions are already set. Please reply confirming you're ready to work — tell me your name and email address.</p>",s=`<${(0,c.nanoid)()}@alook.ai>`,p="tr_"+(0,c.nanoid)(),h=(0,l.buildMimeMessage)({from:e,to:t,subject:r,messageId:s,body:n,bodyType:"text/html"}),m=`emails/${(0,c.nanoid)()}/raw`;await w.EMAIL_BUCKET.put(m,h,{httpMetadata:{contentType:"message/rfc822"}});let g=JSON.stringify({agentId:H.id,workspaceId:a.workspaceId,r2Key:m,from:e,to:t,subject:r,isWhitelisted:!0,forwarded:!1,messageId:s,inReplyTo:"",references:"",isInternal:!0,traceId:p}),f={method:"POST",headers:{"Content-Type":"application/json"},body:g};try{await w.WORKER_SELF_REFERENCE.fetch("http://internal/api/email/notify",f)}catch{await fetch(`${u.DEV_WEB_URL}/api/email/notify`,f)}await i.queries.email.createEmail(E,{agentId:I,workspaceId:a.workspaceId,fromEmail:e,toEmail:t,subject:r,r2Key:m,isWhitelisted:!1,forwarded:!1,messageId:s,inReplyTo:"",references:"",htmlBody:n,direction:"outbound",status:"sent"});let R=A.context_key||null;if(R){let e=(0,d.extractThreadId)("","",s);e&&await i.queries.conversationMap.createMapping(E,{key:(0,d.buildEmailMapKey)(I,e),workspaceId:a.workspaceId,conversationId:R})}}catch{}return(0,g.writeJSON)({agent:{...(0,f.agentToResponse)(H),email:(0,o.toAlookAddress)(N)},link:(0,f.agentLinkToResponse)(P)},201)});e.s(["POST",0,I]),a()}catch(e){a(e)}},!1),525882,e=>e.a(async(t,a)=>{try{var r=e.i(618117),i=e.i(99200),n=e.i(864055),o=e.i(289578),s=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),m=e.i(203050),g=e.i(851100),f=e.i(55434),R=e.i(193695);e.i(163438);var y=e.i(118649),v=e.i(502844),E=t([v]);[v]=E.then?(await E)():E;let A=new r.AppRouteRouteModule({definition:{kind:i.RouteKind.APP_ROUTE,page:"/api/agents/recruit/route",pathname:"/api/agents/recruit",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/web/src/app/api/agents/recruit/route.ts",nextConfigOutput:"standalone",userland:v,...{}}),{workAsyncStorage:k,workUnitAsyncStorage:C,serverHooks:T}=A;async function I(e,t,a){a.requestMeta&&(0,o.setRequestMeta)(e,a.requestMeta),A.isDev&&(0,o.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let r="/api/agents/recruit/route";r=r.replace(/\/index$/,"")||"/";let n=await A.prepare(e,t,{srcPage:r,multiZoneDraftMode:!1});if(!n)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:v,deploymentId:E,params:I,nextConfig:k,parsedUrl:C,isDraftMode:T,prerenderManifest:x,routerServerContext:b,isOnDemandRevalidate:q,revalidateOnlyGenerated:N,resolvedPathname:S,clientReferenceManifest:H,serverActionsManifest:P}=n,_=(0,d.normalizeAppPath)(r),O=!!(x.dynamicRoutes[_]||x.routes[S]),M=async()=>((null==b?void 0:b.render404)?await b.render404(e,t,C,!1):t.end("This page could not be found"),null);if(O&&!T){let e=!!x.routes[S],t=x.dynamicRoutes[_];if(t&&!1===t.fallback&&!e){if(k.adapterPath)return await M();throw new R.NoFallbackError}}let U=null;!O||A.isDev||T||(U=S,U="/index"===U?"/":U);let D=!0===A.isDev||!O,$=O&&!D;P&&H&&(0,l.setManifestsSingleton)({page:r,clientReferenceManifest:H,serverActionsManifest:P});let K=e.method||"GET",L=(0,s.getTracer)(),W=L.getActiveScopeSpan(),F=!!(null==b?void 0:b.isWrappedByNextServer),B=!!(0,o.getRequestMeta)(e,"minimalMode"),j=(0,o.getRequestMeta)(e,"incrementalCache")||await A.getIncrementalCache(e,k,x,B);null==j||j.resetRequestCache(),globalThis.__incrementalCache=j;let V={params:I,previewProps:x.preview,renderOpts:{experimental:{authInterrupts:!!k.experimental.authInterrupts},cacheComponents:!!k.cacheComponents,supportsDynamicResponse:D,incrementalCache:j,cacheLifeProfiles:k.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,r,i)=>A.onRequestError(e,t,r,i,b)},sharedContext:{buildId:v,deploymentId:E}},G=new u.NodeNextRequest(e),z=new u.NodeNextResponse(t),X=c.NextRequestAdapter.fromNodeNextRequest(G,(0,c.signalFromNodeResponse)(t));try{let n,o=async e=>A.handle(X,V).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")!==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 i=a.get("next.route");if(i){let t=`${K} ${i}`;e.setAttributes({"next.route":i,"http.route":i,"next.span_name":t}),e.updateName(t),n&&n!==e&&(n.setAttribute("http.route",i),n.updateName(t))}else e.updateName(`${K} ${r}`)}),l=async n=>{var s,l;let d=async({previousCacheEntry:i})=>{try{if(!B&&q&&N&&!i)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let r=await o(n);e.fetchMetrics=V.renderOpts.fetchMetrics;let s=V.renderOpts.pendingWaitUntil;s&&a.waitUntil&&(a.waitUntil(s),s=void 0);let l=V.renderOpts.collectedTags;if(!O)return await (0,w.sendResponse)(G,z,r,V.renderOpts.pendingWaitUntil),null;{let e=await r.blob(),t=(0,m.toNodeOutgoingHttpHeaders)(r.headers);l&&(t[f.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==V.renderOpts.collectedRevalidate&&!(V.renderOpts.collectedRevalidate>=f.INFINITE_CACHE)&&V.renderOpts.collectedRevalidate,i=void 0===V.renderOpts.collectedExpire||V.renderOpts.collectedExpire>=f.INFINITE_CACHE?void 0:V.renderOpts.collectedExpire;return{value:{kind:y.CachedRouteKind.APP_ROUTE,status:r.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:i}}}}catch(t){throw(null==i?void 0:i.isStale)&&await A.onRequestError(e,t,{routerKind:"App Router",routePath:r,routeType:"route",revalidateReason:(0,h.getRevalidateReason)({isStaticGeneration:$,isOnDemandRevalidate:q})},!1,b),t}},u=await A.handleResponse({req:e,nextConfig:k,cacheKey:U,routeKind:i.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:x,isRoutePPREnabled:!1,isOnDemandRevalidate:q,revalidateOnlyGenerated:N,responseGenerator:d,waitUntil:a.waitUntil,isMinimalMode:B});if(!O)return null;if((null==u||null==(s=u.value)?void 0:s.kind)!==y.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});B||t.setHeader("x-nextjs-cache",q?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),T&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let c=(0,m.fromNodeOutgoingHttpHeaders)(u.value.headers);return B&&O||c.delete(f.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,w.sendResponse)(G,z,new Response(u.value.body,{headers:c,status:u.value.status||200})),null};F&&W?await l(W):(n=L.getActiveScopeSpan(),await L.withPropagatedContext(e.headers,()=>L.trace(p.BaseServerSpan.handleRequest,{spanName:`${K} ${r}`,kind:s.SpanKind.SERVER,attributes:{"http.method":K,"http.target":e.url}},l),void 0,!F))}catch(t){if(t instanceof R.NoFallbackError||await A.onRequestError(e,t,{routerKind:"App Router",routePath:_,routeType:"route",revalidateReason:(0,h.getRevalidateReason)({isStaticGeneration:$,isOnDemandRevalidate:q})},!1,b),O)throw t;return await (0,w.sendResponse)(G,z,new Response(null,{status:500})),null}}e.s(["handler",0,I,"patchFetch",0,function(){return(0,n.patchFetch)({workAsyncStorage:k,workUnitAsyncStorage:C})},"routeModule",0,A,"serverHooks",0,T,"workAsyncStorage",0,k,"workUnitAsyncStorage",0,C]),a()}catch(e){a(e)}},!1)];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=_1i4egv6._.js.map
|