@alook/app 0.0.25 → 0.0.27

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/bundled/web/.open-next/.build/durable-objects/queue.js +4 -4
  2. package/bundled/web/.open-next/assets/BUILD_ID +1 -1
  3. package/bundled/web/.open-next/cache/{2OctF2RkN0qz45H0AgmU2 → 9WEyRhiyqbWSPRNw0zGd1}/_global-error.cache +1 -1
  4. package/bundled/web/.open-next/cache/{2OctF2RkN0qz45H0AgmU2 → 9WEyRhiyqbWSPRNw0zGd1}/_not-found.cache +1 -1
  5. package/bundled/web/.open-next/cache/{2OctF2RkN0qz45H0AgmU2 → 9WEyRhiyqbWSPRNw0zGd1}/sitemap.xml.cache +1 -1
  6. package/bundled/web/.open-next/cloudflare/cache-assets-manifest.sql +1 -1
  7. package/bundled/web/.open-next/cloudflare/init.js +1 -1
  8. package/bundled/web/.open-next/dynamodb-provider/dynamodb-cache.json +1 -1
  9. package/bundled/web/.open-next/middleware/handler.mjs +2 -2
  10. package/bundled/web/.open-next/server-functions/default/src/web/.next/BUILD_ID +1 -1
  11. package/bundled/web/.open-next/server-functions/default/src/web/.next/build-manifest.json +3 -3
  12. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0-22391._.js +1 -1
  13. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0.vfmip._.js +1 -1
  14. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_018di6j._.js +1 -1
  15. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_05mkm05._.js +1 -1
  16. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_05t_tvs._.js +1 -1
  17. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_06j7byr._.js +1 -1
  18. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_094sp1w._.js +1 -1
  19. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_09egrjz._.js +1 -1
  20. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_09twg0j._.js +1 -1
  21. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0a_02v1._.js +1 -1
  22. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0av05ao._.js +1 -1
  23. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0dajh_g._.js +1 -1
  24. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0dxfkbl._.js +1 -1
  25. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0edx130._.js +1 -1
  26. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0euvrn9._.js +1 -1
  27. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0h1-_48._.js +1 -1
  28. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0iyza7b._.js +1 -1
  29. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0jo981d._.js +1 -1
  30. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0mvym74._.js +1 -1
  31. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0n.jaqy._.js +1 -1
  32. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0qz~dij._.js +1 -1
  33. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0sf57qo._.js +1 -1
  34. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0xkjukg._.js +1 -1
  35. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0zzdc3u._.js +1 -1
  36. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0~8mo49._.js +1 -1
  37. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0~~ji83._.js +1 -1
  38. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_13_kcb9._.js +1 -1
  39. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/middleware-build-manifest.js +3 -3
  40. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/middleware-manifest.json +1 -1
  41. package/bundled/web/.open-next/server-functions/default/src/web/handler.mjs +14 -14
  42. package/bundled/web/.open-next/server-functions/default/src/web/handler.mjs.meta.json +114 -114
  43. package/bundled/web/.open-next/server-functions/default/src/web/index.mjs +2 -2
  44. package/dist/index.js +23 -1
  45. package/package.json +1 -1
  46. /package/bundled/web/.open-next/assets/_next/static/{2OctF2RkN0qz45H0AgmU2 → 9WEyRhiyqbWSPRNw0zGd1}/_buildManifest.js +0 -0
  47. /package/bundled/web/.open-next/assets/_next/static/{2OctF2RkN0qz45H0AgmU2 → 9WEyRhiyqbWSPRNw0zGd1}/_clientMiddlewareManifest.js +0 -0
  48. /package/bundled/web/.open-next/assets/_next/static/{2OctF2RkN0qz45H0AgmU2 → 9WEyRhiyqbWSPRNw0zGd1}/_ssgManifest.js +0 -0
  49. /package/bundled/web/.open-next/cache/{2OctF2RkN0qz45H0AgmU2 → 9WEyRhiyqbWSPRNw0zGd1}/robots.txt.cache +0 -0
@@ -1,3 +1,3 @@
1
- module.exports=[776227,e=>{"use strict";var t=e.i(463421);function a(e,a){return t.NextResponse.json({error:e},{status:a})}async function r(e,r){let s;try{s=await e.json()}catch{return[null,a("invalid request body",400)]}try{return[r.parse(s),null]}catch(a){let e=(a.issues??a.errors??[]).map(e=>`${e.path.join(".")}: ${e.message}`);return[null,t.NextResponse.json({error:"validation error",details:e},{status:400})]}}e.s(["formatTimestamp",0,function(e){return e?("string"==typeof e?new Date(e):e).toISOString().replace(/\.\d{3}Z$/,"Z"):""},"formatTimestampNullable",0,function(e){return e?("string"==typeof e?new Date(e):e).toISOString().replace(/\.\d{3}Z$/,"Z"):null},"parseBody",0,r,"writeError",0,a,"writeJSON",0,function(e,a=200){return t.NextResponse.json(e,{status:a})}])},47962,e=>{"use strict";var t=e.i(463421),a=e.i(194218);e.i(700598);var r=e.i(291109),s=e.i(675139),i=e.i(774078);async function n(e,n){let o=e.nextUrl.searchParams.get("workspace_id")||e.headers.get("X-Workspace-ID")||n.workspaceId;if(!o)return t.NextResponse.json({error:"workspace_id is required"},{status:400});if(!n.userId)return t.NextResponse.json({error:"user not authenticated"},{status:401});let{env:d}=await (0,a.getCloudflareContext)({async:!0}),l=(0,s.getDb)(d.DB),u=await (0,i.cached)(i.cacheKeys.member(o,n.userId),1800,()=>r.queries.member.getMemberByUserAndWorkspace(l,n.userId,o));return u||n.workspaceId!==o?u?{workspaceId:o,memberRole:u.role}:t.NextResponse.json({error:"workspace not found"},{status:404}):{workspaceId:o,memberRole:"member"}}async function o(e,a){let r=await n(e,a);return r instanceof t.NextResponse?r:"owner"!==r.memberRole?t.NextResponse.json({error:"owner access required"},{status:403}):r}e.s(["withWorkspaceMember",0,n,"withWorkspaceOwner",0,o])},740580,469187,e=>{"use strict";var t=e.i(776227);e.i(700598);var a=e.i(888247),r=e.i(704024);function s(e){if(!e)return!1;let t=new Date(e.includes("T")||e.includes("Z")||e.includes("+")?e:e+"Z").getTime();return!isNaN(t)&&Date.now()-t<r.OFFLINE_THRESHOLD_MS}e.s(["isOnline",0,s],469187),e.s(["agentLinkToResponse",0,function(e){return{id:e.id,workspace_id:e.workspaceId,source_agent_id:e.sourceAgentId,target_agent_id:e.targetAgentId,instruction:e.instruction,created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}},"agentToResponse",0,function(e){let a=e.runtimeConfig;return a||(a={}),{id:e.id,workspace_id:e.workspaceId,runtime_id:e.runtimeId||"",name:e.name,description:e.description,instructions:e.instructions,runtime_mode:e.runtimeMode,runtime_config:a,status:e.status,max_concurrent_tasks:e.maxConcurrentTasks,email_handle:e.emailHandle||null,avatar_url:e.avatarUrl??null,visibility:e.visibility??"private",owner_id:e.ownerId??null,created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}},"calendarEventToResponse",0,function(e){let a=(0,t.formatTimestamp)(e.scheduledAt),r=e.occurrenceAt?(0,t.formatTimestamp)(e.occurrenceAt):a;return{id:e.id,agent_id:e.agentId,workspace_id:e.workspaceId,title:e.title,description:e.description??null,scheduled_at:a,occurrence_at:r,collapsed_count:e.collapsedCount??null,repeat_interval:e.repeatInterval??null,repeat_stop_at:(0,t.formatTimestampNullable)(e.repeatStopAt),last_triggered_at:(0,t.formatTimestampNullable)(e.lastTriggeredAt),created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}},"channelToResponse",0,function(e){return{id:e.id,workspace_id:e.workspaceId,name:e.name,created_at:(0,t.formatTimestamp)(e.createdAt)}},"conversationToResponse",0,function(e){let a={id:e.id,agent_id:e.agentId,title:e.title,type:e.type??r.TASK_TYPES.USER_DM_MESSAGE,channel:e.channel??"default",created_at:(0,t.formatTimestamp)(e.createdAt)};return void 0!==e.messageCount&&(a.message_count=e.messageCount),a},"emailToResponse",0,function(e){return{id:e.id,agent_id:e.agentId,from_email:e.fromEmail,to_email:e.toEmail,subject:e.subject,r2_key:e.r2Key,is_whitelisted:!!e.isWhitelisted,forwarded:!!e.forwarded,message_id:e.messageId??"",in_reply_to:e.inReplyTo??"",references:e.references??"",html_body:e.htmlBody??"",attachments:JSON.parse(e.attachments||"[]"),status:e.status??"unread",direction:e.direction??"inbound",created_at:(0,t.formatTimestamp)(e.createdAt)}},"inviteToResponse",0,function(e){return{id:e.id,token:e.token,created_by:e.createdBy,used_by:e.usedBy,expires_at:(0,t.formatTimestamp)(e.expiresAt),created_at:(0,t.formatTimestamp)(e.createdAt)}},"issueToResponse",0,function(e){return{id:e.id,workspace_id:e.workspaceId,agent_id:e.agentId,creator_user_id:e.creatorUserId,conversation_id:e.conversationId,latest_task_id:e.latestTaskId??null,title:e.title,description:e.description??"",status:e.status,created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt),completed_at:(0,t.formatTimestampNullable)(e.completedAt)}},"machineTokenToResponse",0,function(e){return{id:e.id,name:e.name,last_used_at:(0,t.formatTimestampNullable)(e.lastUsedAt),created_at:(0,t.formatTimestamp)(e.createdAt)}},"meetingToResponse",0,function(e){return{id:e.id,agent_id:e.agentId,workspace_id:e.workspaceId,title:e.title,meeting_url:e.meetingUrl,status:e.status,from_email:e.fromEmail??null,is_whitelisted:!!e.isWhitelisted,participants:e.participants??[],scheduled_at:(0,t.formatTimestampNullable)(e.scheduledAt),started_at:(0,t.formatTimestampNullable)(e.startedAt),completed_at:(0,t.formatTimestampNullable)(e.completedAt),transcript_r2_key:e.transcriptR2Key??null,summary:e.summary??null,error:e.error??null,worker_session_id:e.workerSessionId??null,created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}},"memberToResponse",0,function(e){return{id:e.id,user_id:e.userId,role:e.role,name:e.userName,email:e.userEmail,image:e.userImage,created_at:(0,t.formatTimestamp)(e.createdAt)}},"messageToResponse",0,function(e){let a={id:e.id,conversation_id:e.conversationId,role:e.role,content:e.content,task_id:e.taskId||null,attachment_ids:e.attachmentIds?JSON.parse(e.attachmentIds):null,metadata:e.metadata?JSON.parse(e.metadata):null,created_at:(0,t.formatTimestamp)(e.createdAt)};return e.status&&"active"!==e.status&&(a.status=e.status),a},"runtimeToResponse",0,function(e){let a=e.metadata;a||(a={});let r=e.machineLastSeenAt??null,i=r instanceof Date?r.toISOString():r;return{id:e.id,workspace_id:e.workspaceId,daemon_id:e.daemonId||null,runtime_mode:e.runtimeMode,provider:e.provider,status:s(i)?"online":"offline",device_info:e.deviceInfo,metadata:a,pending_update_version:e.pendingUpdateVersion??null,pending_rescan:!!e.pendingRescan,last_seen_at:(0,t.formatTimestampNullable)(r),created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}},"taskMessageToResponse",0,function(e){let t={id:e.id,task_id:e.taskId,seq:e.seq,type:e.type,tool:e.tool,call_id:e.callId||"",content:e.content,output:e.output};return e.input&&(t.input=e.input),t},"taskToActivityResponse",0,function(e){let a=e.prompt.length>120?e.prompt.slice(0,120):e.prompt;return{id:e.id,conversation_id:e.conversationId,type:e.type??r.TASK_TYPES.USER_DM_MESSAGE,status:e.status,prompt:a,created_at:(0,t.formatTimestamp)(e.createdAt),started_at:(0,t.formatTimestampNullable)(e.startedAt),completed_at:(0,t.formatTimestampNullable)(e.completedAt),error:e.error||null}},"taskToResponse",0,function(e){return a.TaskApiBaseSchema.parse({id:e.id,agent_id:e.agentId,runtime_id:e.runtimeId,conversation_id:e.conversationId,workspace_id:e.workspaceId,prompt:e.prompt,type:e.type??r.TASK_TYPES.USER_DM_MESSAGE,context_key:e.contextKey??null,context:e.context??null,status:e.status,priority:e.priority,dispatched_at:(0,t.formatTimestampNullable)(e.dispatchedAt),started_at:(0,t.formatTimestampNullable)(e.startedAt),completed_at:(0,t.formatTimestampNullable)(e.completedAt),result:e.result??null,error:e.error||null,created_at:(0,t.formatTimestamp)(e.createdAt),trace_id:e.traceId??null,parent_task_id:e.parentTaskId??null})},"userToResponse",0,function(e){return{id:e.id,name:e.name,email:e.email,avatar_url:e.avatarUrl??null,created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}},"workspaceToResponse",0,function(e){return{id:e.id,name:e.name,slug:e.slug,created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}}],740580)},726089,e=>{"use strict";var t=e.i(194218);e.i(700598);var a=e.i(704024);let r=(0,e.i(726527).createLogger)({service:"broadcast"});async function s(e,s,i){let n;try{let{env:a}=(0,t.getCloudflareContext)();if(n=a.DEV_WS_DO_URL,(await a.WS_DO_WORKER.fetch(`http://internal${e}`,{method:"POST",body:s})).ok)return}catch{}let o=n||a.DEV_WS_DO_URL;try{let t=await fetch(`${o}${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:s});t.ok||r.warn("broadcast failed",{...i,status:t.status})}catch(e){r.warn("broadcast error",{...i,err:String(e)})}}async function i(e,t){await s(`/broadcast/user/${e}`,JSON.stringify(t),{userId:e,type:t.type})}e.s(["broadcastToUser",0,i])},799579,e=>{"use strict";e.i(700598);let t=(0,e.i(726527).createLogger)({service:"web",level:process.env.ALOOK_LOG_LEVEL||"info",pretty:!1});e.s(["log",0,t])},205054,e=>{"use strict";e.i(700598);var t=e.i(291109),a=e.i(704024),r=e.i(799579),s=e.i(726089),i=e.i(740580);let n=t.queries.task,o=t.queries.agent,d=t.queries.message,l=t.queries.conversation,u=t.queries.issue;e.s(["TaskService",0,class{db;constructor(e){this.db=e}async enqueueTask(e,t,r,s,i=a.TASK_TYPES.USER_DM_MESSAGE,d){let l=await o.getAgent(this.db,e,r);if(!l)throw Error("agent not found");if(!l.runtimeId)throw Error("agent has no runtime");if(d?.traceId&&d.parentTaskId&&await n.countTasksByTrace(this.db,d.traceId)>=a.MAX_TASKS_PER_TRACE)throw Error(`Trace limit reached (${a.MAX_TASKS_PER_TRACE} tasks). This may indicate an infinite loop between agents.`);return n.createTask(this.db,{agentId:e,runtimeId:l.runtimeId,workspaceId:r,conversationId:t,prompt:s,type:i,contextKey:d?.contextKey??null,priority:0,context:d?.context,traceId:d?.traceId??null,parentTaskId:d?.parentTaskId??null})}async claimTask(e,t){let a=await o.getAgent(this.db,e,t);if(!a)return null;if(await n.countRunningTasks(this.db,e,t)>=a.maxConcurrentTasks){let r=await n.findSteerableReplacement(this.db,e,t);if(!r||await n.countRunningTasks(this.db,e,t,r.predecessorId)>=a.maxConcurrentTasks)return null}let r=await n.claimTask(this.db,e,t);return r?(await o.updateAgentStatus(this.db,e,t,"working"),r):null}async claimTasksForRuntimes(e,t,a){let r=await n.claimKillTasks(this.db,e,a,t),s=t-r.length,i=s>0?await n.listPendingTasksByRuntimes(this.db,e,a):[],o=new Set(e),d=new Set,l=[...r];for(let e of i){if(s<=0)break;let t=`${e.agentId}:${e.workspaceId}`;if(d.has(t))continue;d.add(t);let a=await this.claimTask(e.agentId,e.workspaceId);a&&o.has(a.runtimeId)&&(l.push(a),s--)}return l}async startTask(e,t){let a=await n.startTask(this.db,e,t);if(!a)throw Error("task not in dispatched status");return a}async completeTask(e,t,a,s){let i;try{i=JSON.parse(a)}catch{i={raw:a}}let o=await n.completeTask(this.db,e,t,{result:i,sessionId:s||null});if(!o){let t=await n.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`)}let l=i,u="string"==typeof l?.output?l.output:"";return u&&await d.createMessage(this.db,{conversationId:o.conversationId,role:"assistant",content:u,taskId:e}),await this.reconcileAgentStatus(o.agentId,o.workspaceId),await this.dispatchNextBufferedMessage(o.conversationId,o.workspaceId),o}async failTask(e,t,s){let i=await n.failTask(this.db,e,t,s);if(!i){let t=await n.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`)}return i.type===a.TASK_TYPES.KILL_TASK||(s&&await d.createMessage(this.db,{conversationId:i.conversationId,role:"assistant",content:`Error: ${s}`,taskId:e}),await this.reconcileAgentStatus(i.agentId,i.workspaceId),await this.syncIssueStatusFromTask(i,"failed"),await this.dispatchNextBufferedMessage(i.conversationId,i.workspaceId)),i}async syncIssueStatusFromTask(e,t){if(e.type!==a.TASK_TYPES.ISSUE_EVENT)return;let r=await u.getIssueByConversation(this.db,e.conversationId,e.workspaceId);!r||r.status===t||await u.updateIssue(this.db,r.id,e.workspaceId,{status:t})&&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})})}async supersedeTask(e,t){let a=await n.supersedeTask(this.db,e,t);if(!a){let t=await n.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),await this.dispatchNextBufferedMessage(a.conversationId,a.workspaceId),a}async retryTask(e,t){let a=await n.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 n.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,t,r){let s=await n.getActiveTaskByConversation(this.db,e,t);if(!s)return null;let i=await n.cancelTask(this.db,s.id,t);return i?(("dispatched"===s.status||"running"===s.status)&&await n.createTask(this.db,{agentId:s.agentId,runtimeId:s.runtimeId,workspaceId:t,conversationId:e,prompt:"",type:a.TASK_TYPES.KILL_TASK,context:{target_task_id:s.id}}),await d.createMessage(this.db,{conversationId:e,role:"assistant",content:r?.reason??"Task cancelled by user",taskId:s.id}),await this.reconcileAgentStatus(s.agentId,t),r?.skipDispatch||await this.dispatchNextBufferedMessage(e,t),i):null}async reconcileAgentStatus(e,t){let a=await n.countRunningTasks(this.db,e,t);await o.updateAgentStatus(this.db,e,t,a>0?"working":"idle")}async dispatchNextBufferedMessage(e,t){let o=await d.activateNextBufferedMessage(this.db,e);if(!o)return null;let u=await l.getConversation(this.db,e,t);if(!u)return r.log.warn("dispatchNextBufferedMessage: conversation not found",{conversationId:e}),await d.revertToBuffered(this.db,o.id).catch(e=>{r.log.error("dispatchNextBufferedMessage: failed to revert message status",{messageId:o.id,revertErr:e})}),null;let c=u.userId;try{let r=o.attachmentIds?JSON.parse(o.attachmentIds):[],l=await n.getLatestTaskForConversation(this.db,e),p=l?.traceId??null,m=await this.enqueueTask(u.agentId,e,t,o.content,a.TASK_TYPES.USER_DM_MESSAGE,{contextKey:e,context:r.length>0?{attachment_ids:r}:void 0,traceId:p,parentTaskId:null});return await d.updateMessageTaskId(this.db,o.id,m.id),(0,s.broadcastToUser)(c,{type:"followup.dispatched",conversationId:e,message:(0,i.messageToResponse)(o),task:(0,i.taskToResponse)(m)}).catch(()=>{}),m}catch(t){return r.log.warn("dispatchNextBufferedMessage: enqueueTask failed",{conversationId:e,err:t}),await d.revertToBuffered(this.db,o.id).catch(e=>{r.log.error("dispatchNextBufferedMessage: failed to revert message status",{messageId:o.id,revertErr:e})}),(0,s.broadcastToUser)(c,{type:"followup.dispatch_failed",conversationId:e,messageId:o.id,error:t instanceof Error?t.message:"Failed to dispatch follow-up"}).catch(()=>{}),null}}async cancelTrace(e,t,a){for(let s of[...new Set((await n.getTraceTree(this.db,e,t)).filter(e=>["queued","dispatched","running"].includes(e.status)).map(e=>e.conversationId))])try{await this.cancelActiveTask(s,t,{skipDispatch:!0,reason:a?.reason})}catch(t){r.log.warn("cancelTrace: failed to cancel task",{traceId:e,convId:s,err:t})}}}])},829167,e=>{"use strict";var t=e.i(80774),a=e.i(404478),r=e.i(732985),s=e.i(481671),i=e.i(638081),n=e.i(204960),o=e.i(924918),d=e.i(363585),l=e.i(906846),u=e.i(359838),c=e.i(383303),p=e.i(234173),m=e.i(270215),h=e.i(830665),f=e.i(944002),w=e.i(193695);e.i(195928);var _=e.i(81543),g=e.i(194218);e.i(700598);var T=e.i(291109),k=e.i(888247),I=e.i(704024),v=e.i(675139),y=e.i(152327),A=e.i(47962),b=e.i(776227),R=e.i(205054);let S=(0,y.withAuth)(async(e,t)=>{let a=await (0,A.withWorkspaceMember)(e,t);if(a instanceof Response)return a;let{env:r}=(0,g.getCloudflareContext)(),s=(0,v.getDb)(r.DB),i=t.params?.id;if(!i)return(0,b.writeError)("agent id is required",400);if(!await T.queries.agent.getAgent(s,i,a.workspaceId,t.userId))return(0,b.writeError)("agent not found",404);let n=await T.queries.whitelist.getWhitelist(s,i,a.workspaceId);return(0,b.writeJSON)(n.map(e=>({id:e.id,email:e.email,created_at:(0,b.formatTimestamp)(e.createdAt)})))}),E=(0,y.withAuth)(async(e,t)=>{let a=await (0,A.withWorkspaceMember)(e,t);if(a instanceof Response)return a;let{env:r}=(0,g.getCloudflareContext)(),s=(0,v.getDb)(r.DB),i=t.params?.id;if(!i)return(0,b.writeError)("agent id is required",400);let n=await T.queries.agent.getAgent(s,i,a.workspaceId,t.userId);if(!n)return(0,b.writeError)("agent not found",404);let[o,d]=await (0,b.parseBody)(e,k.AddWhitelistRequestSchema);if(d)return d;let l=o.email.toLowerCase(),u=await T.queries.whitelist.addWhitelist(s,i,a.workspaceId,l);if(!u)return(0,b.writeError)("email already whitelisted",409);if(n.runtimeId&&n.emailHandle&&n.ownerId)try{let e=await T.queries.conversation.createConversation(s,{workspaceId:a.workspaceId,agentId:n.id,userId:n.ownerId,title:`Welcome: ${l}`.slice(0,50),type:I.TASK_TYPES.EMAIL_NOTIFICATION}),r=new R.TaskService(s);await r.enqueueTask(n.id,e.id,a.workspaceId,`Your owner (${t.email}) has added a new contact to your whitelist: ${l}. Please compose and send them a welcome email introducing yourself as "${n.name}". Be warm and professional. Let them know they can reach you at your email address and briefly describe how you can help them.`,I.TASK_TYPES.EMAIL_NOTIFICATION)}catch{}return(0,b.writeJSON)({id:u.id,email:u.email,created_at:(0,b.formatTimestamp)(u.createdAt)},201)});e.s(["GET",0,S,"POST",0,E],99293);var x=e.i(99293);let N=new t.AppRouteRouteModule({definition:{kind:a.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:x,...{}}),{workAsyncStorage:C,workUnitAsyncStorage:M,serverHooks:O}=N;async function P(e,t,r){r.requestMeta&&(0,s.setRequestMeta)(e,r.requestMeta),N.isDev&&(0,s.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let g="/api/agents/[id]/whitelist/route";g=g.replace(/\/index$/,"")||"/";let T=await N.prepare(e,t,{srcPage:g,multiZoneDraftMode:!1});if(!T)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:k,deploymentId:I,params:v,nextConfig:y,parsedUrl:A,isDraftMode:b,prerenderManifest:R,routerServerContext:S,isOnDemandRevalidate:E,revalidateOnlyGenerated:x,resolvedPathname:C,clientReferenceManifest:M,serverActionsManifest:O}=T,P=(0,o.normalizeAppPath)(g),q=!!(R.dynamicRoutes[P]||R.routes[C]),D=async()=>((null==S?void 0:S.render404)?await S.render404(e,t,A,!1):t.end("This page could not be found"),null);if(q&&!b){let e=!!R.routes[C],t=R.dynamicRoutes[P];if(t&&!1===t.fallback&&!e){if(y.adapterPath)return await D();throw new w.NoFallbackError}}let K=null;!q||N.isDev||b||(K="/index"===(K=C)?"/":K);let U=!0===N.isDev||!q,B=q&&!U;O&&M&&(0,n.setManifestsSingleton)({page:g,clientReferenceManifest:M,serverActionsManifest:O});let j=e.method||"GET",$=(0,i.getTracer)(),L=$.getActiveScopeSpan(),H=!!(null==S?void 0:S.isWrappedByNextServer),W=!!(0,s.getRequestMeta)(e,"minimalMode"),F=(0,s.getRequestMeta)(e,"incrementalCache")||await N.getIncrementalCache(e,y,R,W);null==F||F.resetRequestCache(),globalThis.__incrementalCache=F;let Y={params:v,previewProps:R.preview,renderOpts:{experimental:{authInterrupts:!!y.experimental.authInterrupts},cacheComponents:!!y.cacheComponents,supportsDynamicResponse:U,incrementalCache:F,cacheLifeProfiles:y.cacheLife,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,r,s)=>N.onRequestError(e,t,r,s,S)},sharedContext:{buildId:k,deploymentId:I}},G=new d.NodeNextRequest(e),J=new d.NodeNextResponse(t),V=l.NextRequestAdapter.fromNodeNextRequest(G,(0,l.signalFromNodeResponse)(t));try{let s,n=async e=>N.handle(V,Y).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=$.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==u.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let r=a.get("next.route");if(r){let t=`${j} ${r}`;e.setAttributes({"next.route":r,"http.route":r,"next.span_name":t}),e.updateName(t),s&&s!==e&&(s.setAttribute("http.route",r),s.updateName(t))}else e.updateName(`${j} ${g}`)}),o=async s=>{var i,o;let d=async({previousCacheEntry:a})=>{try{if(!W&&E&&x&&!a)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let i=await n(s);e.fetchMetrics=Y.renderOpts.fetchMetrics;let o=Y.renderOpts.pendingWaitUntil;o&&r.waitUntil&&(r.waitUntil(o),o=void 0);let d=Y.renderOpts.collectedTags;if(!q)return await (0,p.sendResponse)(G,J,i,Y.renderOpts.pendingWaitUntil),null;{let e=await i.blob(),t=(0,m.toNodeOutgoingHttpHeaders)(i.headers);d&&(t[f.NEXT_CACHE_TAGS_HEADER]=d),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==Y.renderOpts.collectedRevalidate&&!(Y.renderOpts.collectedRevalidate>=f.INFINITE_CACHE)&&Y.renderOpts.collectedRevalidate,r=void 0===Y.renderOpts.collectedExpire||Y.renderOpts.collectedExpire>=f.INFINITE_CACHE?void 0:Y.renderOpts.collectedExpire;return{value:{kind:_.CachedRouteKind.APP_ROUTE,status:i.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:r}}}}catch(t){throw(null==a?void 0:a.isStale)&&await N.onRequestError(e,t,{routerKind:"App Router",routePath:g,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:B,isOnDemandRevalidate:E})},!1,S),t}},l=await N.handleResponse({req:e,nextConfig:y,cacheKey:K,routeKind:a.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:R,isRoutePPREnabled:!1,isOnDemandRevalidate:E,revalidateOnlyGenerated:x,responseGenerator:d,waitUntil:r.waitUntil,isMinimalMode:W});if(!q)return null;if((null==l||null==(i=l.value)?void 0:i.kind)!==_.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==l||null==(o=l.value)?void 0:o.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});W||t.setHeader("x-nextjs-cache",E?"REVALIDATED":l.isMiss?"MISS":l.isStale?"STALE":"HIT"),b&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let u=(0,m.fromNodeOutgoingHttpHeaders)(l.value.headers);return W&&q||u.delete(f.NEXT_CACHE_TAGS_HEADER),!l.cacheControl||t.getHeader("Cache-Control")||u.get("Cache-Control")||u.set("Cache-Control",(0,h.getCacheControlHeader)(l.cacheControl)),await (0,p.sendResponse)(G,J,new Response(l.value.body,{headers:u,status:l.value.status||200})),null};H&&L?await o(L):(s=$.getActiveScopeSpan(),await $.withPropagatedContext(e.headers,()=>$.trace(u.BaseServerSpan.handleRequest,{spanName:`${j} ${g}`,kind:i.SpanKind.SERVER,attributes:{"http.method":j,"http.target":e.url}},o),void 0,!H))}catch(t){if(t instanceof w.NoFallbackError||await N.onRequestError(e,t,{routerKind:"App Router",routePath:P,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:B,isOnDemandRevalidate:E})},!1,S),q)throw t;return await (0,p.sendResponse)(G,J,new Response(null,{status:500})),null}}e.s(["handler",0,P,"patchFetch",0,function(){return(0,r.patchFetch)({workAsyncStorage:C,workUnitAsyncStorage:M})},"routeModule",0,N,"serverHooks",0,O,"workAsyncStorage",0,C,"workUnitAsyncStorage",0,M],829167)},967183,e=>{e.v(t=>Promise.all(["server/chunks/0ej8_@better-auth_memory-adapter_dist_index_mjs_10c.8b8._.js"].map(t=>e.l(t))).then(()=>t(205102)))},632019,e=>{e.v(t=>Promise.all(["server/chunks/0cd0_better-auth_dist_adapters_kysely-adapter_index_mjs_0v4jkxi._.js"].map(t=>e.l(t))).then(()=>t(836110)))},246358,e=>{e.v(e=>Promise.resolve().then(()=>e(357762)))},292677,e=>{e.v(t=>Promise.all(["server/chunks/0m4__@better-auth_kysely-adapter_dist_bun-sqlite-dialect-na--YwnN_mjs_0j55.z1._.js"].map(t=>e.l(t))).then(()=>t(52033)))},289217,e=>{e.v(t=>Promise.all(["server/chunks/0m4__@better-auth_kysely-adapter_dist_node-sqlite-dialect_mjs_0wxfd_8._.js"].map(t=>e.l(t))).then(()=>t(670514)))},316246,e=>{e.v(t=>Promise.all(["server/chunks/0m4__@better-auth_kysely-adapter_dist_d1-sqlite-dialect-C2B7YsIT_mjs_0unjrn9._.js"].map(t=>e.l(t))).then(()=>t(917123)))}];
1
+ module.exports=[776227,e=>{"use strict";var t=e.i(463421);function a(e,a){return t.NextResponse.json({error:e},{status:a})}async function r(e,r){let s;try{s=await e.json()}catch{return[null,a("invalid request body",400)]}try{return[r.parse(s),null]}catch(a){let e=(a.issues??a.errors??[]).map(e=>`${e.path.join(".")}: ${e.message}`);return[null,t.NextResponse.json({error:"validation error",details:e},{status:400})]}}e.s(["formatTimestamp",0,function(e){return e?("string"==typeof e?new Date(e):e).toISOString().replace(/\.\d{3}Z$/,"Z"):""},"formatTimestampNullable",0,function(e){return e?("string"==typeof e?new Date(e):e).toISOString().replace(/\.\d{3}Z$/,"Z"):null},"parseBody",0,r,"writeError",0,a,"writeJSON",0,function(e,a=200){return t.NextResponse.json(e,{status:a})}])},47962,e=>{"use strict";var t=e.i(463421),a=e.i(194218);e.i(700598);var r=e.i(291109),s=e.i(675139),i=e.i(774078);async function n(e,n){let o=e.nextUrl.searchParams.get("workspace_id")||e.headers.get("X-Workspace-ID")||n.workspaceId;if(!o)return t.NextResponse.json({error:"workspace_id is required"},{status:400});if(!n.userId)return t.NextResponse.json({error:"user not authenticated"},{status:401});let{env:d}=await (0,a.getCloudflareContext)({async:!0}),l=(0,s.getDb)(d.DB),u=await (0,i.cached)(i.cacheKeys.member(o,n.userId),1800,()=>r.queries.member.getMemberByUserAndWorkspace(l,n.userId,o));return u||n.workspaceId!==o?u?{workspaceId:o,memberRole:u.role}:t.NextResponse.json({error:"workspace not found"},{status:404}):{workspaceId:o,memberRole:"member"}}async function o(e,a){let r=await n(e,a);return r instanceof t.NextResponse?r:"owner"!==r.memberRole?t.NextResponse.json({error:"owner access required"},{status:403}):r}e.s(["withWorkspaceMember",0,n,"withWorkspaceOwner",0,o])},740580,469187,e=>{"use strict";var t=e.i(776227);e.i(700598);var a=e.i(888247),r=e.i(704024);function s(e){if(!e)return!1;let t=new Date(e.includes("T")||e.includes("Z")||e.includes("+")?e:e+"Z").getTime();return!isNaN(t)&&Date.now()-t<r.OFFLINE_THRESHOLD_MS}e.s(["isOnline",0,s],469187),e.s(["agentLinkToResponse",0,function(e){return{id:e.id,workspace_id:e.workspaceId,source_agent_id:e.sourceAgentId,target_agent_id:e.targetAgentId,instruction:e.instruction,created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}},"agentToResponse",0,function(e){let a=e.runtimeConfig;return a||(a={}),{id:e.id,workspace_id:e.workspaceId,runtime_id:e.runtimeId||"",name:e.name,description:e.description,instructions:e.instructions,runtime_mode:e.runtimeMode,runtime_config:a,status:e.status,max_concurrent_tasks:e.maxConcurrentTasks,email_handle:e.emailHandle||null,avatar_url:e.avatarUrl??null,visibility:e.visibility??"private",owner_id:e.ownerId??null,created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}},"calendarEventToResponse",0,function(e){let a=(0,t.formatTimestamp)(e.scheduledAt),r=e.occurrenceAt?(0,t.formatTimestamp)(e.occurrenceAt):a;return{id:e.id,agent_id:e.agentId,workspace_id:e.workspaceId,title:e.title,description:e.description??null,scheduled_at:a,occurrence_at:r,collapsed_count:e.collapsedCount??null,repeat_interval:e.repeatInterval??null,repeat_stop_at:(0,t.formatTimestampNullable)(e.repeatStopAt),last_triggered_at:(0,t.formatTimestampNullable)(e.lastTriggeredAt),created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}},"channelToResponse",0,function(e){return{id:e.id,workspace_id:e.workspaceId,name:e.name,created_at:(0,t.formatTimestamp)(e.createdAt)}},"conversationToResponse",0,function(e){let a={id:e.id,agent_id:e.agentId,title:e.title,type:e.type??r.TASK_TYPES.USER_DM_MESSAGE,channel:e.channel??"default",created_at:(0,t.formatTimestamp)(e.createdAt)};return void 0!==e.messageCount&&(a.message_count=e.messageCount),a},"emailToResponse",0,function(e){return{id:e.id,agent_id:e.agentId,from_email:e.fromEmail,to_email:e.toEmail,subject:e.subject,r2_key:e.r2Key,is_whitelisted:!!e.isWhitelisted,forwarded:!!e.forwarded,message_id:e.messageId??"",in_reply_to:e.inReplyTo??"",references:e.references??"",html_body:e.htmlBody??"",attachments:JSON.parse(e.attachments||"[]"),status:e.status??"unread",direction:e.direction??"inbound",created_at:(0,t.formatTimestamp)(e.createdAt)}},"inviteToResponse",0,function(e){return{id:e.id,token:e.token,created_by:e.createdBy,used_by:e.usedBy,expires_at:(0,t.formatTimestamp)(e.expiresAt),created_at:(0,t.formatTimestamp)(e.createdAt)}},"issueToResponse",0,function(e){return{id:e.id,workspace_id:e.workspaceId,agent_id:e.agentId,creator_user_id:e.creatorUserId,conversation_id:e.conversationId,latest_task_id:e.latestTaskId??null,title:e.title,description:e.description??"",status:e.status,created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt),completed_at:(0,t.formatTimestampNullable)(e.completedAt)}},"machineTokenToResponse",0,function(e){return{id:e.id,name:e.name,last_used_at:(0,t.formatTimestampNullable)(e.lastUsedAt),created_at:(0,t.formatTimestamp)(e.createdAt)}},"meetingToResponse",0,function(e){return{id:e.id,agent_id:e.agentId,workspace_id:e.workspaceId,title:e.title,meeting_url:e.meetingUrl,status:e.status,from_email:e.fromEmail??null,is_whitelisted:!!e.isWhitelisted,participants:e.participants??[],scheduled_at:(0,t.formatTimestampNullable)(e.scheduledAt),started_at:(0,t.formatTimestampNullable)(e.startedAt),completed_at:(0,t.formatTimestampNullable)(e.completedAt),transcript_r2_key:e.transcriptR2Key??null,summary:e.summary??null,error:e.error??null,worker_session_id:e.workerSessionId??null,created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}},"memberToResponse",0,function(e){return{id:e.id,user_id:e.userId,role:e.role,name:e.userName,email:e.userEmail,image:e.userImage,created_at:(0,t.formatTimestamp)(e.createdAt)}},"messageToResponse",0,function(e){let a={id:e.id,conversation_id:e.conversationId,role:e.role,content:e.content,task_id:e.taskId||null,attachment_ids:e.attachmentIds?JSON.parse(e.attachmentIds):null,metadata:e.metadata?JSON.parse(e.metadata):null,created_at:(0,t.formatTimestamp)(e.createdAt)};return e.status&&"active"!==e.status&&(a.status=e.status),a},"runtimeToResponse",0,function(e){let a=e.metadata;a||(a={});let r=e.machineLastSeenAt??null,i=r instanceof Date?r.toISOString():r;return{id:e.id,workspace_id:e.workspaceId,daemon_id:e.daemonId||null,runtime_mode:e.runtimeMode,provider:e.provider,status:s(i)?"online":"offline",device_info:e.deviceInfo,metadata:a,pending_update_version:e.pendingUpdateVersion??null,pending_rescan:!!e.pendingRescan,last_seen_at:(0,t.formatTimestampNullable)(r),created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}},"taskMessageToResponse",0,function(e){let t={id:e.id,task_id:e.taskId,seq:e.seq,type:e.type,tool:e.tool,call_id:e.callId||"",content:e.content,output:e.output};return e.input&&(t.input=e.input),t},"taskToActivityResponse",0,function(e){let a=e.prompt.length>120?e.prompt.slice(0,120):e.prompt;return{id:e.id,conversation_id:e.conversationId,type:e.type??r.TASK_TYPES.USER_DM_MESSAGE,status:e.status,prompt:a,created_at:(0,t.formatTimestamp)(e.createdAt),started_at:(0,t.formatTimestampNullable)(e.startedAt),completed_at:(0,t.formatTimestampNullable)(e.completedAt),error:e.error||null}},"taskToResponse",0,function(e){return a.TaskApiBaseSchema.parse({id:e.id,agent_id:e.agentId,runtime_id:e.runtimeId,conversation_id:e.conversationId,workspace_id:e.workspaceId,prompt:e.prompt,type:e.type??r.TASK_TYPES.USER_DM_MESSAGE,context_key:e.contextKey??null,context:e.context??null,status:e.status,priority:e.priority,dispatched_at:(0,t.formatTimestampNullable)(e.dispatchedAt),started_at:(0,t.formatTimestampNullable)(e.startedAt),completed_at:(0,t.formatTimestampNullable)(e.completedAt),result:e.result??null,error:e.error||null,created_at:(0,t.formatTimestamp)(e.createdAt),trace_id:e.traceId??null,parent_task_id:e.parentTaskId??null})},"userToResponse",0,function(e){return{id:e.id,name:e.name,email:e.email,avatar_url:e.avatarUrl??null,created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}},"workspaceToResponse",0,function(e){return{id:e.id,name:e.name,slug:e.slug,created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}}],740580)},726089,e=>{"use strict";var t=e.i(194218);e.i(700598);var a=e.i(704024);let r=(0,e.i(726527).createLogger)({service:"broadcast"});async function s(e,s,i){let n;try{let{env:a}=(0,t.getCloudflareContext)();if(n=a.DEV_WS_DO_URL,(await a.WS_DO_WORKER.fetch(`http://internal${e}`,{method:"POST",body:s})).ok)return}catch{}let o=n||a.DEV_WS_DO_URL;try{let t=await fetch(`${o}${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:s});t.ok||r.warn("broadcast failed",{...i,status:t.status})}catch(e){r.warn("broadcast error",{...i,err:String(e)})}}e.s(["broadcastToUser",0,function(e,a){return function(e,a,r){let i=s(e,a,r);try{let{ctx:e}=(0,t.getCloudflareContext)();e.waitUntil(i)}catch{}return i}(`/broadcast/user/${e}`,JSON.stringify(a),{userId:e,type:a.type})}])},799579,e=>{"use strict";e.i(700598);let t=(0,e.i(726527).createLogger)({service:"web",level:process.env.ALOOK_LOG_LEVEL||"info",pretty:!1});e.s(["log",0,t])},205054,e=>{"use strict";e.i(700598);var t=e.i(291109),a=e.i(704024),r=e.i(799579),s=e.i(726089),i=e.i(740580);let n=t.queries.task,o=t.queries.agent,d=t.queries.message,l=t.queries.conversation,u=t.queries.issue;e.s(["TaskService",0,class{db;constructor(e){this.db=e}async enqueueTask(e,t,r,s,i=a.TASK_TYPES.USER_DM_MESSAGE,d){let l=await o.getAgent(this.db,e,r);if(!l)throw Error("agent not found");if(!l.runtimeId)throw Error("agent has no runtime");if(d?.traceId&&d.parentTaskId&&await n.countTasksByTrace(this.db,d.traceId)>=a.MAX_TASKS_PER_TRACE)throw Error(`Trace limit reached (${a.MAX_TASKS_PER_TRACE} tasks). This may indicate an infinite loop between agents.`);return n.createTask(this.db,{agentId:e,runtimeId:l.runtimeId,workspaceId:r,conversationId:t,prompt:s,type:i,contextKey:d?.contextKey??null,priority:0,context:d?.context,traceId:d?.traceId??null,parentTaskId:d?.parentTaskId??null})}async claimTask(e,t){let a=await o.getAgent(this.db,e,t);if(!a)return null;if(await n.countRunningTasks(this.db,e,t)>=a.maxConcurrentTasks){let r=await n.findSteerableReplacement(this.db,e,t);if(!r||await n.countRunningTasks(this.db,e,t,r.predecessorId)>=a.maxConcurrentTasks)return null}let r=await n.claimTask(this.db,e,t);return r?(await o.updateAgentStatus(this.db,e,t,"working"),r):null}async claimTasksForRuntimes(e,t,a){let r=await n.claimKillTasks(this.db,e,a,t),s=t-r.length,i=s>0?await n.listPendingTasksByRuntimes(this.db,e,a):[],o=new Set(e),d=new Set,l=[...r];for(let e of i){if(s<=0)break;let t=`${e.agentId}:${e.workspaceId}`;if(d.has(t))continue;d.add(t);let a=await this.claimTask(e.agentId,e.workspaceId);a&&o.has(a.runtimeId)&&(l.push(a),s--)}return l}async startTask(e,t){let a=await n.startTask(this.db,e,t);if(!a)throw Error("task not in dispatched status");return a}async completeTask(e,t,a,s){let i;try{i=JSON.parse(a)}catch{i={raw:a}}let o=await n.completeTask(this.db,e,t,{result:i,sessionId:s||null});if(!o){let t=await n.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`)}let l=i,u="string"==typeof l?.output?l.output:"";return u&&await d.createMessage(this.db,{conversationId:o.conversationId,role:"assistant",content:u,taskId:e}),await this.reconcileAgentStatus(o.agentId,o.workspaceId),await this.dispatchNextBufferedMessage(o.conversationId,o.workspaceId),o}async failTask(e,t,s){let i=await n.failTask(this.db,e,t,s);if(!i){let t=await n.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`)}return i.type===a.TASK_TYPES.KILL_TASK||(s&&await d.createMessage(this.db,{conversationId:i.conversationId,role:"assistant",content:`Error: ${s}`,taskId:e}),await this.reconcileAgentStatus(i.agentId,i.workspaceId),await this.syncIssueStatusFromTask(i,"failed"),await this.dispatchNextBufferedMessage(i.conversationId,i.workspaceId)),i}async syncIssueStatusFromTask(e,t){if(e.type!==a.TASK_TYPES.ISSUE_EVENT)return;let r=await u.getIssueByConversation(this.db,e.conversationId,e.workspaceId);!r||r.status===t||await u.updateIssue(this.db,r.id,e.workspaceId,{status:t})&&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})})}async supersedeTask(e,t){let a=await n.supersedeTask(this.db,e,t);if(!a){let t=await n.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),await this.dispatchNextBufferedMessage(a.conversationId,a.workspaceId),a}async retryTask(e,t){let a=await n.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 n.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,t,r){let s=await n.getActiveTaskByConversation(this.db,e,t);if(!s)return null;let i=await n.cancelTask(this.db,s.id,t);return i?(("dispatched"===s.status||"running"===s.status)&&await n.createTask(this.db,{agentId:s.agentId,runtimeId:s.runtimeId,workspaceId:t,conversationId:e,prompt:"",type:a.TASK_TYPES.KILL_TASK,context:{target_task_id:s.id}}),await d.createMessage(this.db,{conversationId:e,role:"assistant",content:r?.reason??"Task cancelled by user",taskId:s.id}),await this.reconcileAgentStatus(s.agentId,t),r?.skipDispatch||await this.dispatchNextBufferedMessage(e,t),i):null}async reconcileAgentStatus(e,t){let a=await n.countRunningTasks(this.db,e,t);await o.updateAgentStatus(this.db,e,t,a>0?"working":"idle")}async dispatchNextBufferedMessage(e,t){let o=await d.activateNextBufferedMessage(this.db,e);if(!o)return null;let u=await l.getConversation(this.db,e,t);if(!u)return r.log.warn("dispatchNextBufferedMessage: conversation not found",{conversationId:e}),await d.revertToBuffered(this.db,o.id).catch(e=>{r.log.error("dispatchNextBufferedMessage: failed to revert message status",{messageId:o.id,revertErr:e})}),null;let c=u.userId;try{let r=o.attachmentIds?JSON.parse(o.attachmentIds):[],l=await n.getLatestTaskForConversation(this.db,e),p=l?.traceId??null,m=await this.enqueueTask(u.agentId,e,t,o.content,a.TASK_TYPES.USER_DM_MESSAGE,{contextKey:e,context:r.length>0?{attachment_ids:r}:void 0,traceId:p,parentTaskId:null});return await d.updateMessageTaskId(this.db,o.id,m.id),(0,s.broadcastToUser)(c,{type:"followup.dispatched",conversationId:e,message:(0,i.messageToResponse)(o),task:(0,i.taskToResponse)(m)}).catch(()=>{}),m}catch(t){return r.log.warn("dispatchNextBufferedMessage: enqueueTask failed",{conversationId:e,err:t}),await d.revertToBuffered(this.db,o.id).catch(e=>{r.log.error("dispatchNextBufferedMessage: failed to revert message status",{messageId:o.id,revertErr:e})}),(0,s.broadcastToUser)(c,{type:"followup.dispatch_failed",conversationId:e,messageId:o.id,error:t instanceof Error?t.message:"Failed to dispatch follow-up"}).catch(()=>{}),null}}async cancelTrace(e,t,a){for(let s of[...new Set((await n.getTraceTree(this.db,e,t)).filter(e=>["queued","dispatched","running"].includes(e.status)).map(e=>e.conversationId))])try{await this.cancelActiveTask(s,t,{skipDispatch:!0,reason:a?.reason})}catch(t){r.log.warn("cancelTrace: failed to cancel task",{traceId:e,convId:s,err:t})}}}])},829167,e=>{"use strict";var t=e.i(80774),a=e.i(404478),r=e.i(732985),s=e.i(481671),i=e.i(638081),n=e.i(204960),o=e.i(924918),d=e.i(363585),l=e.i(906846),u=e.i(359838),c=e.i(383303),p=e.i(234173),m=e.i(270215),h=e.i(830665),f=e.i(944002),w=e.i(193695);e.i(195928);var _=e.i(81543),g=e.i(194218);e.i(700598);var T=e.i(291109),k=e.i(888247),I=e.i(704024),v=e.i(675139),y=e.i(152327),A=e.i(47962),b=e.i(776227),R=e.i(205054);let S=(0,y.withAuth)(async(e,t)=>{let a=await (0,A.withWorkspaceMember)(e,t);if(a instanceof Response)return a;let{env:r}=(0,g.getCloudflareContext)(),s=(0,v.getDb)(r.DB),i=t.params?.id;if(!i)return(0,b.writeError)("agent id is required",400);if(!await T.queries.agent.getAgent(s,i,a.workspaceId,t.userId))return(0,b.writeError)("agent not found",404);let n=await T.queries.whitelist.getWhitelist(s,i,a.workspaceId);return(0,b.writeJSON)(n.map(e=>({id:e.id,email:e.email,created_at:(0,b.formatTimestamp)(e.createdAt)})))}),E=(0,y.withAuth)(async(e,t)=>{let a=await (0,A.withWorkspaceMember)(e,t);if(a instanceof Response)return a;let{env:r}=(0,g.getCloudflareContext)(),s=(0,v.getDb)(r.DB),i=t.params?.id;if(!i)return(0,b.writeError)("agent id is required",400);let n=await T.queries.agent.getAgent(s,i,a.workspaceId,t.userId);if(!n)return(0,b.writeError)("agent not found",404);let[o,d]=await (0,b.parseBody)(e,k.AddWhitelistRequestSchema);if(d)return d;let l=o.email.toLowerCase(),u=await T.queries.whitelist.addWhitelist(s,i,a.workspaceId,l);if(!u)return(0,b.writeError)("email already whitelisted",409);if(n.runtimeId&&n.emailHandle&&n.ownerId)try{let e=await T.queries.conversation.createConversation(s,{workspaceId:a.workspaceId,agentId:n.id,userId:n.ownerId,title:`Welcome: ${l}`.slice(0,50),type:I.TASK_TYPES.EMAIL_NOTIFICATION}),r=new R.TaskService(s);await r.enqueueTask(n.id,e.id,a.workspaceId,`Your owner (${t.email}) has added a new contact to your whitelist: ${l}. Please compose and send them a welcome email introducing yourself as "${n.name}". Be warm and professional. Let them know they can reach you at your email address and briefly describe how you can help them.`,I.TASK_TYPES.EMAIL_NOTIFICATION)}catch{}return(0,b.writeJSON)({id:u.id,email:u.email,created_at:(0,b.formatTimestamp)(u.createdAt)},201)});e.s(["GET",0,S,"POST",0,E],99293);var x=e.i(99293);let N=new t.AppRouteRouteModule({definition:{kind:a.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:x,...{}}),{workAsyncStorage:C,workUnitAsyncStorage:M,serverHooks:O}=N;async function P(e,t,r){r.requestMeta&&(0,s.setRequestMeta)(e,r.requestMeta),N.isDev&&(0,s.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let g="/api/agents/[id]/whitelist/route";g=g.replace(/\/index$/,"")||"/";let T=await N.prepare(e,t,{srcPage:g,multiZoneDraftMode:!1});if(!T)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:k,deploymentId:I,params:v,nextConfig:y,parsedUrl:A,isDraftMode:b,prerenderManifest:R,routerServerContext:S,isOnDemandRevalidate:E,revalidateOnlyGenerated:x,resolvedPathname:C,clientReferenceManifest:M,serverActionsManifest:O}=T,P=(0,o.normalizeAppPath)(g),q=!!(R.dynamicRoutes[P]||R.routes[C]),D=async()=>((null==S?void 0:S.render404)?await S.render404(e,t,A,!1):t.end("This page could not be found"),null);if(q&&!b){let e=!!R.routes[C],t=R.dynamicRoutes[P];if(t&&!1===t.fallback&&!e){if(y.adapterPath)return await D();throw new w.NoFallbackError}}let K=null;!q||N.isDev||b||(K="/index"===(K=C)?"/":K);let U=!0===N.isDev||!q,B=q&&!U;O&&M&&(0,n.setManifestsSingleton)({page:g,clientReferenceManifest:M,serverActionsManifest:O});let j=e.method||"GET",$=(0,i.getTracer)(),L=$.getActiveScopeSpan(),H=!!(null==S?void 0:S.isWrappedByNextServer),W=!!(0,s.getRequestMeta)(e,"minimalMode"),F=(0,s.getRequestMeta)(e,"incrementalCache")||await N.getIncrementalCache(e,y,R,W);null==F||F.resetRequestCache(),globalThis.__incrementalCache=F;let Y={params:v,previewProps:R.preview,renderOpts:{experimental:{authInterrupts:!!y.experimental.authInterrupts},cacheComponents:!!y.cacheComponents,supportsDynamicResponse:U,incrementalCache:F,cacheLifeProfiles:y.cacheLife,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,r,s)=>N.onRequestError(e,t,r,s,S)},sharedContext:{buildId:k,deploymentId:I}},G=new d.NodeNextRequest(e),J=new d.NodeNextResponse(t),V=l.NextRequestAdapter.fromNodeNextRequest(G,(0,l.signalFromNodeResponse)(t));try{let s,n=async e=>N.handle(V,Y).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=$.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==u.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let r=a.get("next.route");if(r){let t=`${j} ${r}`;e.setAttributes({"next.route":r,"http.route":r,"next.span_name":t}),e.updateName(t),s&&s!==e&&(s.setAttribute("http.route",r),s.updateName(t))}else e.updateName(`${j} ${g}`)}),o=async s=>{var i,o;let d=async({previousCacheEntry:a})=>{try{if(!W&&E&&x&&!a)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let i=await n(s);e.fetchMetrics=Y.renderOpts.fetchMetrics;let o=Y.renderOpts.pendingWaitUntil;o&&r.waitUntil&&(r.waitUntil(o),o=void 0);let d=Y.renderOpts.collectedTags;if(!q)return await (0,p.sendResponse)(G,J,i,Y.renderOpts.pendingWaitUntil),null;{let e=await i.blob(),t=(0,m.toNodeOutgoingHttpHeaders)(i.headers);d&&(t[f.NEXT_CACHE_TAGS_HEADER]=d),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==Y.renderOpts.collectedRevalidate&&!(Y.renderOpts.collectedRevalidate>=f.INFINITE_CACHE)&&Y.renderOpts.collectedRevalidate,r=void 0===Y.renderOpts.collectedExpire||Y.renderOpts.collectedExpire>=f.INFINITE_CACHE?void 0:Y.renderOpts.collectedExpire;return{value:{kind:_.CachedRouteKind.APP_ROUTE,status:i.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:r}}}}catch(t){throw(null==a?void 0:a.isStale)&&await N.onRequestError(e,t,{routerKind:"App Router",routePath:g,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:B,isOnDemandRevalidate:E})},!1,S),t}},l=await N.handleResponse({req:e,nextConfig:y,cacheKey:K,routeKind:a.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:R,isRoutePPREnabled:!1,isOnDemandRevalidate:E,revalidateOnlyGenerated:x,responseGenerator:d,waitUntil:r.waitUntil,isMinimalMode:W});if(!q)return null;if((null==l||null==(i=l.value)?void 0:i.kind)!==_.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==l||null==(o=l.value)?void 0:o.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});W||t.setHeader("x-nextjs-cache",E?"REVALIDATED":l.isMiss?"MISS":l.isStale?"STALE":"HIT"),b&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let u=(0,m.fromNodeOutgoingHttpHeaders)(l.value.headers);return W&&q||u.delete(f.NEXT_CACHE_TAGS_HEADER),!l.cacheControl||t.getHeader("Cache-Control")||u.get("Cache-Control")||u.set("Cache-Control",(0,h.getCacheControlHeader)(l.cacheControl)),await (0,p.sendResponse)(G,J,new Response(l.value.body,{headers:u,status:l.value.status||200})),null};H&&L?await o(L):(s=$.getActiveScopeSpan(),await $.withPropagatedContext(e.headers,()=>$.trace(u.BaseServerSpan.handleRequest,{spanName:`${j} ${g}`,kind:i.SpanKind.SERVER,attributes:{"http.method":j,"http.target":e.url}},o),void 0,!H))}catch(t){if(t instanceof w.NoFallbackError||await N.onRequestError(e,t,{routerKind:"App Router",routePath:P,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:B,isOnDemandRevalidate:E})},!1,S),q)throw t;return await (0,p.sendResponse)(G,J,new Response(null,{status:500})),null}}e.s(["handler",0,P,"patchFetch",0,function(){return(0,r.patchFetch)({workAsyncStorage:C,workUnitAsyncStorage:M})},"routeModule",0,N,"serverHooks",0,O,"workAsyncStorage",0,C,"workUnitAsyncStorage",0,M],829167)},967183,e=>{e.v(t=>Promise.all(["server/chunks/0ej8_@better-auth_memory-adapter_dist_index_mjs_10c.8b8._.js"].map(t=>e.l(t))).then(()=>t(205102)))},632019,e=>{e.v(t=>Promise.all(["server/chunks/0cd0_better-auth_dist_adapters_kysely-adapter_index_mjs_0v4jkxi._.js"].map(t=>e.l(t))).then(()=>t(836110)))},246358,e=>{e.v(e=>Promise.resolve().then(()=>e(357762)))},292677,e=>{e.v(t=>Promise.all(["server/chunks/0m4__@better-auth_kysely-adapter_dist_bun-sqlite-dialect-na--YwnN_mjs_0j55.z1._.js"].map(t=>e.l(t))).then(()=>t(52033)))},289217,e=>{e.v(t=>Promise.all(["server/chunks/0m4__@better-auth_kysely-adapter_dist_node-sqlite-dialect_mjs_0wxfd_8._.js"].map(t=>e.l(t))).then(()=>t(670514)))},316246,e=>{e.v(t=>Promise.all(["server/chunks/0m4__@better-auth_kysely-adapter_dist_d1-sqlite-dialect-C2B7YsIT_mjs_0unjrn9._.js"].map(t=>e.l(t))).then(()=>t(917123)))}];
2
2
 
3
3
  //# sourceMappingURL=_018di6j._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[776227,e=>{"use strict";var t=e.i(463421);function a(e,a){return t.NextResponse.json({error:e},{status:a})}async function r(e,r){let n;try{n=await e.json()}catch{return[null,a("invalid request body",400)]}try{return[r.parse(n),null]}catch(a){let e=(a.issues??a.errors??[]).map(e=>`${e.path.join(".")}: ${e.message}`);return[null,t.NextResponse.json({error:"validation error",details:e},{status:400})]}}e.s(["formatTimestamp",0,function(e){return e?("string"==typeof e?new Date(e):e).toISOString().replace(/\.\d{3}Z$/,"Z"):""},"formatTimestampNullable",0,function(e){return e?("string"==typeof e?new Date(e):e).toISOString().replace(/\.\d{3}Z$/,"Z"):null},"parseBody",0,r,"writeError",0,a,"writeJSON",0,function(e,a=200){return t.NextResponse.json(e,{status:a})}])},740580,469187,e=>{"use strict";var t=e.i(776227);e.i(700598);var a=e.i(888247),r=e.i(704024);function n(e){if(!e)return!1;let t=new Date(e.includes("T")||e.includes("Z")||e.includes("+")?e:e+"Z").getTime();return!isNaN(t)&&Date.now()-t<r.OFFLINE_THRESHOLD_MS}e.s(["isOnline",0,n],469187),e.s(["agentLinkToResponse",0,function(e){return{id:e.id,workspace_id:e.workspaceId,source_agent_id:e.sourceAgentId,target_agent_id:e.targetAgentId,instruction:e.instruction,created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}},"agentToResponse",0,function(e){let a=e.runtimeConfig;return a||(a={}),{id:e.id,workspace_id:e.workspaceId,runtime_id:e.runtimeId||"",name:e.name,description:e.description,instructions:e.instructions,runtime_mode:e.runtimeMode,runtime_config:a,status:e.status,max_concurrent_tasks:e.maxConcurrentTasks,email_handle:e.emailHandle||null,avatar_url:e.avatarUrl??null,visibility:e.visibility??"private",owner_id:e.ownerId??null,created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}},"calendarEventToResponse",0,function(e){let a=(0,t.formatTimestamp)(e.scheduledAt),r=e.occurrenceAt?(0,t.formatTimestamp)(e.occurrenceAt):a;return{id:e.id,agent_id:e.agentId,workspace_id:e.workspaceId,title:e.title,description:e.description??null,scheduled_at:a,occurrence_at:r,collapsed_count:e.collapsedCount??null,repeat_interval:e.repeatInterval??null,repeat_stop_at:(0,t.formatTimestampNullable)(e.repeatStopAt),last_triggered_at:(0,t.formatTimestampNullable)(e.lastTriggeredAt),created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}},"channelToResponse",0,function(e){return{id:e.id,workspace_id:e.workspaceId,name:e.name,created_at:(0,t.formatTimestamp)(e.createdAt)}},"conversationToResponse",0,function(e){let a={id:e.id,agent_id:e.agentId,title:e.title,type:e.type??r.TASK_TYPES.USER_DM_MESSAGE,channel:e.channel??"default",created_at:(0,t.formatTimestamp)(e.createdAt)};return void 0!==e.messageCount&&(a.message_count=e.messageCount),a},"emailToResponse",0,function(e){return{id:e.id,agent_id:e.agentId,from_email:e.fromEmail,to_email:e.toEmail,subject:e.subject,r2_key:e.r2Key,is_whitelisted:!!e.isWhitelisted,forwarded:!!e.forwarded,message_id:e.messageId??"",in_reply_to:e.inReplyTo??"",references:e.references??"",html_body:e.htmlBody??"",attachments:JSON.parse(e.attachments||"[]"),status:e.status??"unread",direction:e.direction??"inbound",created_at:(0,t.formatTimestamp)(e.createdAt)}},"inviteToResponse",0,function(e){return{id:e.id,token:e.token,created_by:e.createdBy,used_by:e.usedBy,expires_at:(0,t.formatTimestamp)(e.expiresAt),created_at:(0,t.formatTimestamp)(e.createdAt)}},"issueToResponse",0,function(e){return{id:e.id,workspace_id:e.workspaceId,agent_id:e.agentId,creator_user_id:e.creatorUserId,conversation_id:e.conversationId,latest_task_id:e.latestTaskId??null,title:e.title,description:e.description??"",status:e.status,created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt),completed_at:(0,t.formatTimestampNullable)(e.completedAt)}},"machineTokenToResponse",0,function(e){return{id:e.id,name:e.name,last_used_at:(0,t.formatTimestampNullable)(e.lastUsedAt),created_at:(0,t.formatTimestamp)(e.createdAt)}},"meetingToResponse",0,function(e){return{id:e.id,agent_id:e.agentId,workspace_id:e.workspaceId,title:e.title,meeting_url:e.meetingUrl,status:e.status,from_email:e.fromEmail??null,is_whitelisted:!!e.isWhitelisted,participants:e.participants??[],scheduled_at:(0,t.formatTimestampNullable)(e.scheduledAt),started_at:(0,t.formatTimestampNullable)(e.startedAt),completed_at:(0,t.formatTimestampNullable)(e.completedAt),transcript_r2_key:e.transcriptR2Key??null,summary:e.summary??null,error:e.error??null,worker_session_id:e.workerSessionId??null,created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}},"memberToResponse",0,function(e){return{id:e.id,user_id:e.userId,role:e.role,name:e.userName,email:e.userEmail,image:e.userImage,created_at:(0,t.formatTimestamp)(e.createdAt)}},"messageToResponse",0,function(e){let a={id:e.id,conversation_id:e.conversationId,role:e.role,content:e.content,task_id:e.taskId||null,attachment_ids:e.attachmentIds?JSON.parse(e.attachmentIds):null,metadata:e.metadata?JSON.parse(e.metadata):null,created_at:(0,t.formatTimestamp)(e.createdAt)};return e.status&&"active"!==e.status&&(a.status=e.status),a},"runtimeToResponse",0,function(e){let a=e.metadata;a||(a={});let r=e.machineLastSeenAt??null,i=r instanceof Date?r.toISOString():r;return{id:e.id,workspace_id:e.workspaceId,daemon_id:e.daemonId||null,runtime_mode:e.runtimeMode,provider:e.provider,status:n(i)?"online":"offline",device_info:e.deviceInfo,metadata:a,pending_update_version:e.pendingUpdateVersion??null,pending_rescan:!!e.pendingRescan,last_seen_at:(0,t.formatTimestampNullable)(r),created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}},"taskMessageToResponse",0,function(e){let t={id:e.id,task_id:e.taskId,seq:e.seq,type:e.type,tool:e.tool,call_id:e.callId||"",content:e.content,output:e.output};return e.input&&(t.input=e.input),t},"taskToActivityResponse",0,function(e){let a=e.prompt.length>120?e.prompt.slice(0,120):e.prompt;return{id:e.id,conversation_id:e.conversationId,type:e.type??r.TASK_TYPES.USER_DM_MESSAGE,status:e.status,prompt:a,created_at:(0,t.formatTimestamp)(e.createdAt),started_at:(0,t.formatTimestampNullable)(e.startedAt),completed_at:(0,t.formatTimestampNullable)(e.completedAt),error:e.error||null}},"taskToResponse",0,function(e){return a.TaskApiBaseSchema.parse({id:e.id,agent_id:e.agentId,runtime_id:e.runtimeId,conversation_id:e.conversationId,workspace_id:e.workspaceId,prompt:e.prompt,type:e.type??r.TASK_TYPES.USER_DM_MESSAGE,context_key:e.contextKey??null,context:e.context??null,status:e.status,priority:e.priority,dispatched_at:(0,t.formatTimestampNullable)(e.dispatchedAt),started_at:(0,t.formatTimestampNullable)(e.startedAt),completed_at:(0,t.formatTimestampNullable)(e.completedAt),result:e.result??null,error:e.error||null,created_at:(0,t.formatTimestamp)(e.createdAt),trace_id:e.traceId??null,parent_task_id:e.parentTaskId??null})},"userToResponse",0,function(e){return{id:e.id,name:e.name,email:e.email,avatar_url:e.avatarUrl??null,created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}},"workspaceToResponse",0,function(e){return{id:e.id,name:e.name,slug:e.slug,created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}}],740580)},726089,e=>{"use strict";var t=e.i(194218);e.i(700598);var a=e.i(704024);let r=(0,e.i(726527).createLogger)({service:"broadcast"});async function n(e,n,i){let s;try{let{env:a}=(0,t.getCloudflareContext)();if(s=a.DEV_WS_DO_URL,(await a.WS_DO_WORKER.fetch(`http://internal${e}`,{method:"POST",body:n})).ok)return}catch{}let o=s||a.DEV_WS_DO_URL;try{let t=await fetch(`${o}${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:n});t.ok||r.warn("broadcast failed",{...i,status:t.status})}catch(e){r.warn("broadcast error",{...i,err:String(e)})}}async function i(e,t){await n(`/broadcast/user/${e}`,JSON.stringify(t),{userId:e,type:t.type})}e.s(["broadcastToUser",0,i])},584514,e=>{"use strict";var t=e.i(719436);e.s(["generateWorkspaceSlug",0,function(){return`studio-${(0,t.nanoid)(8)}`}])},853961,e=>{"use strict";var t=e.i(80774),a=e.i(404478),r=e.i(732985),n=e.i(481671),i=e.i(638081),s=e.i(204960),o=e.i(924918),d=e.i(363585),l=e.i(906846),u=e.i(359838),c=e.i(383303),p=e.i(234173),m=e.i(270215),_=e.i(830665),f=e.i(944002),h=e.i(193695);e.i(195928);var g=e.i(81543),v=e.i(194218);e.i(700598);var T=e.i(291109),w=e.i(675139),R=e.i(152327),A=e.i(776227),y=e.i(740580),k=e.i(888247),I=e.i(584514),S=e.i(726089),b=e.i(774078);let E=(0,R.withAuth)(async(e,t)=>{let{env:a}=(0,v.getCloudflareContext)(),r=(0,w.getDb)(a.DB),[n,i]=await (0,A.parseBody)(e,k.RegisterDaemonRequestSchema);if(i)return i;let{daemon_id:s,device_name:o,cli_version:d,runtimes:l}=n,u=n.workspace_id;if(!u&&t.workspaceId&&(u=t.workspaceId),!u){let e=await T.queries.workspace.listWorkspaces(r,t.userId);if(e.length>0)u=e[0].id;else{let e=await T.queries.workspace.createWorkspace(r,{name:"Personal",slug:(0,I.generateWorkspaceSlug)()});await T.queries.member.createMember(r,{workspaceId:e.id,userId:t.userId,role:"owner"}),u=e.id}}if(t.workspaceId&&t.workspaceId!==u)return(0,A.writeJSON)({error:"workspace_id does not match token"},403);if(!await T.queries.member.getMemberByUserAndWorkspace(r,t.userId,u))return(0,A.writeJSON)({error:"workspace not found"},404);await T.queries.machine.upsertMachine(r,{daemonId:s,workspaceId:u,deviceInfo:o.trim()});let c=[];for(let e of l){let t=(e.type||e.provider||"unknown").trim(),a=e.runtime_mode||"local",n=o.trim(),i={version:e.version||"",...d?{cli_version:d}:{}},l=await T.queries.runtime.upsertAgentRuntime(r,{workspaceId:u,daemonId:s,runtimeMode:a,provider:t,deviceInfo:n,metadata:i});c.push({...l,machineLastSeenAt:new Date().toISOString()})}return await (0,b.invalidate)(b.cacheKeys.runtimeIds(u,s)),(0,S.broadcastToUser)(t.userId,{type:"runtime.registered",daemonId:s,hostname:o.trim(),workspaceId:u}).catch(()=>{}),(0,A.writeJSON)({runtimes:c.map(y.runtimeToResponse),workspaceId:u})});e.s(["POST",0,E],838742);var N=e.i(838742);let x=new t.AppRouteRouteModule({definition:{kind:a.RouteKind.APP_ROUTE,page:"/api/daemon/register/route",pathname:"/api/daemon/register",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/web/src/app/api/daemon/register/route.ts",nextConfigOutput:"standalone",userland:N,...{}}),{workAsyncStorage:C,workUnitAsyncStorage:O,serverHooks:P}=x;async function q(e,t,r){r.requestMeta&&(0,n.setRequestMeta)(e,r.requestMeta),x.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let v="/api/daemon/register/route";v=v.replace(/\/index$/,"")||"/";let T=await x.prepare(e,t,{srcPage:v,multiZoneDraftMode:!1});if(!T)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:w,deploymentId:R,params:A,nextConfig:y,parsedUrl:k,isDraftMode:I,prerenderManifest:S,routerServerContext:b,isOnDemandRevalidate:E,revalidateOnlyGenerated:N,resolvedPathname:C,clientReferenceManifest:O,serverActionsManifest:P}=T,q=(0,o.normalizeAppPath)(v),D=!!(S.dynamicRoutes[q]||S.routes[C]),U=async()=>((null==b?void 0:b.render404)?await b.render404(e,t,k,!1):t.end("This page could not be found"),null);if(D&&!I){let e=!!S.routes[C],t=S.dynamicRoutes[q];if(t&&!1===t.fallback&&!e){if(y.adapterPath)return await U();throw new h.NoFallbackError}}let j=null;!D||x.isDev||I||(j="/index"===(j=C)?"/":j);let M=!0===x.isDev||!D,H=D&&!M;P&&O&&(0,s.setManifestsSingleton)({page:v,clientReferenceManifest:O,serverActionsManifest:P});let $=e.method||"GET",K=(0,i.getTracer)(),B=K.getActiveScopeSpan(),W=!!(null==b?void 0:b.isWrappedByNextServer),L=!!(0,n.getRequestMeta)(e,"minimalMode"),F=(0,n.getRequestMeta)(e,"incrementalCache")||await x.getIncrementalCache(e,y,S,L);null==F||F.resetRequestCache(),globalThis.__incrementalCache=F;let J={params:A,previewProps:S.preview,renderOpts:{experimental:{authInterrupts:!!y.experimental.authInterrupts},cacheComponents:!!y.cacheComponents,supportsDynamicResponse:M,incrementalCache:F,cacheLifeProfiles:y.cacheLife,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,r,n)=>x.onRequestError(e,t,r,n,b)},sharedContext:{buildId:w,deploymentId:R}},Z=new d.NodeNextRequest(e),G=new d.NodeNextResponse(t),V=l.NextRequestAdapter.fromNodeNextRequest(Z,(0,l.signalFromNodeResponse)(t));try{let n,s=async e=>x.handle(V,J).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=K.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==u.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let r=a.get("next.route");if(r){let t=`${$} ${r}`;e.setAttributes({"next.route":r,"http.route":r,"next.span_name":t}),e.updateName(t),n&&n!==e&&(n.setAttribute("http.route",r),n.updateName(t))}else e.updateName(`${$} ${v}`)}),o=async n=>{var i,o;let d=async({previousCacheEntry:a})=>{try{if(!L&&E&&N&&!a)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let i=await s(n);e.fetchMetrics=J.renderOpts.fetchMetrics;let o=J.renderOpts.pendingWaitUntil;o&&r.waitUntil&&(r.waitUntil(o),o=void 0);let d=J.renderOpts.collectedTags;if(!D)return await (0,p.sendResponse)(Z,G,i,J.renderOpts.pendingWaitUntil),null;{let e=await i.blob(),t=(0,m.toNodeOutgoingHttpHeaders)(i.headers);d&&(t[f.NEXT_CACHE_TAGS_HEADER]=d),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==J.renderOpts.collectedRevalidate&&!(J.renderOpts.collectedRevalidate>=f.INFINITE_CACHE)&&J.renderOpts.collectedRevalidate,r=void 0===J.renderOpts.collectedExpire||J.renderOpts.collectedExpire>=f.INFINITE_CACHE?void 0:J.renderOpts.collectedExpire;return{value:{kind:g.CachedRouteKind.APP_ROUTE,status:i.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:r}}}}catch(t){throw(null==a?void 0:a.isStale)&&await x.onRequestError(e,t,{routerKind:"App Router",routePath:v,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:E})},!1,b),t}},l=await x.handleResponse({req:e,nextConfig:y,cacheKey:j,routeKind:a.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:S,isRoutePPREnabled:!1,isOnDemandRevalidate:E,revalidateOnlyGenerated:N,responseGenerator:d,waitUntil:r.waitUntil,isMinimalMode:L});if(!D)return null;if((null==l||null==(i=l.value)?void 0:i.kind)!==g.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==l||null==(o=l.value)?void 0:o.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});L||t.setHeader("x-nextjs-cache",E?"REVALIDATED":l.isMiss?"MISS":l.isStale?"STALE":"HIT"),I&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let u=(0,m.fromNodeOutgoingHttpHeaders)(l.value.headers);return L&&D||u.delete(f.NEXT_CACHE_TAGS_HEADER),!l.cacheControl||t.getHeader("Cache-Control")||u.get("Cache-Control")||u.set("Cache-Control",(0,_.getCacheControlHeader)(l.cacheControl)),await (0,p.sendResponse)(Z,G,new Response(l.value.body,{headers:u,status:l.value.status||200})),null};W&&B?await o(B):(n=K.getActiveScopeSpan(),await K.withPropagatedContext(e.headers,()=>K.trace(u.BaseServerSpan.handleRequest,{spanName:`${$} ${v}`,kind:i.SpanKind.SERVER,attributes:{"http.method":$,"http.target":e.url}},o),void 0,!W))}catch(t){if(t instanceof h.NoFallbackError||await x.onRequestError(e,t,{routerKind:"App Router",routePath:q,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:E})},!1,b),D)throw t;return await (0,p.sendResponse)(Z,G,new Response(null,{status:500})),null}}e.s(["handler",0,q,"patchFetch",0,function(){return(0,r.patchFetch)({workAsyncStorage:C,workUnitAsyncStorage:O})},"routeModule",0,x,"serverHooks",0,P,"workAsyncStorage",0,C,"workUnitAsyncStorage",0,O],853961)},967183,e=>{e.v(t=>Promise.all(["server/chunks/0ej8_@better-auth_memory-adapter_dist_index_mjs_10c.8b8._.js"].map(t=>e.l(t))).then(()=>t(205102)))},632019,e=>{e.v(t=>Promise.all(["server/chunks/0cd0_better-auth_dist_adapters_kysely-adapter_index_mjs_0v4jkxi._.js"].map(t=>e.l(t))).then(()=>t(836110)))},246358,e=>{e.v(e=>Promise.resolve().then(()=>e(357762)))},292677,e=>{e.v(t=>Promise.all(["server/chunks/0m4__@better-auth_kysely-adapter_dist_bun-sqlite-dialect-na--YwnN_mjs_0j55.z1._.js"].map(t=>e.l(t))).then(()=>t(52033)))},289217,e=>{e.v(t=>Promise.all(["server/chunks/0m4__@better-auth_kysely-adapter_dist_node-sqlite-dialect_mjs_0wxfd_8._.js"].map(t=>e.l(t))).then(()=>t(670514)))},316246,e=>{e.v(t=>Promise.all(["server/chunks/0m4__@better-auth_kysely-adapter_dist_d1-sqlite-dialect-C2B7YsIT_mjs_0unjrn9._.js"].map(t=>e.l(t))).then(()=>t(917123)))}];
1
+ module.exports=[776227,e=>{"use strict";var t=e.i(463421);function a(e,a){return t.NextResponse.json({error:e},{status:a})}async function r(e,r){let n;try{n=await e.json()}catch{return[null,a("invalid request body",400)]}try{return[r.parse(n),null]}catch(a){let e=(a.issues??a.errors??[]).map(e=>`${e.path.join(".")}: ${e.message}`);return[null,t.NextResponse.json({error:"validation error",details:e},{status:400})]}}e.s(["formatTimestamp",0,function(e){return e?("string"==typeof e?new Date(e):e).toISOString().replace(/\.\d{3}Z$/,"Z"):""},"formatTimestampNullable",0,function(e){return e?("string"==typeof e?new Date(e):e).toISOString().replace(/\.\d{3}Z$/,"Z"):null},"parseBody",0,r,"writeError",0,a,"writeJSON",0,function(e,a=200){return t.NextResponse.json(e,{status:a})}])},740580,469187,e=>{"use strict";var t=e.i(776227);e.i(700598);var a=e.i(888247),r=e.i(704024);function n(e){if(!e)return!1;let t=new Date(e.includes("T")||e.includes("Z")||e.includes("+")?e:e+"Z").getTime();return!isNaN(t)&&Date.now()-t<r.OFFLINE_THRESHOLD_MS}e.s(["isOnline",0,n],469187),e.s(["agentLinkToResponse",0,function(e){return{id:e.id,workspace_id:e.workspaceId,source_agent_id:e.sourceAgentId,target_agent_id:e.targetAgentId,instruction:e.instruction,created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}},"agentToResponse",0,function(e){let a=e.runtimeConfig;return a||(a={}),{id:e.id,workspace_id:e.workspaceId,runtime_id:e.runtimeId||"",name:e.name,description:e.description,instructions:e.instructions,runtime_mode:e.runtimeMode,runtime_config:a,status:e.status,max_concurrent_tasks:e.maxConcurrentTasks,email_handle:e.emailHandle||null,avatar_url:e.avatarUrl??null,visibility:e.visibility??"private",owner_id:e.ownerId??null,created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}},"calendarEventToResponse",0,function(e){let a=(0,t.formatTimestamp)(e.scheduledAt),r=e.occurrenceAt?(0,t.formatTimestamp)(e.occurrenceAt):a;return{id:e.id,agent_id:e.agentId,workspace_id:e.workspaceId,title:e.title,description:e.description??null,scheduled_at:a,occurrence_at:r,collapsed_count:e.collapsedCount??null,repeat_interval:e.repeatInterval??null,repeat_stop_at:(0,t.formatTimestampNullable)(e.repeatStopAt),last_triggered_at:(0,t.formatTimestampNullable)(e.lastTriggeredAt),created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}},"channelToResponse",0,function(e){return{id:e.id,workspace_id:e.workspaceId,name:e.name,created_at:(0,t.formatTimestamp)(e.createdAt)}},"conversationToResponse",0,function(e){let a={id:e.id,agent_id:e.agentId,title:e.title,type:e.type??r.TASK_TYPES.USER_DM_MESSAGE,channel:e.channel??"default",created_at:(0,t.formatTimestamp)(e.createdAt)};return void 0!==e.messageCount&&(a.message_count=e.messageCount),a},"emailToResponse",0,function(e){return{id:e.id,agent_id:e.agentId,from_email:e.fromEmail,to_email:e.toEmail,subject:e.subject,r2_key:e.r2Key,is_whitelisted:!!e.isWhitelisted,forwarded:!!e.forwarded,message_id:e.messageId??"",in_reply_to:e.inReplyTo??"",references:e.references??"",html_body:e.htmlBody??"",attachments:JSON.parse(e.attachments||"[]"),status:e.status??"unread",direction:e.direction??"inbound",created_at:(0,t.formatTimestamp)(e.createdAt)}},"inviteToResponse",0,function(e){return{id:e.id,token:e.token,created_by:e.createdBy,used_by:e.usedBy,expires_at:(0,t.formatTimestamp)(e.expiresAt),created_at:(0,t.formatTimestamp)(e.createdAt)}},"issueToResponse",0,function(e){return{id:e.id,workspace_id:e.workspaceId,agent_id:e.agentId,creator_user_id:e.creatorUserId,conversation_id:e.conversationId,latest_task_id:e.latestTaskId??null,title:e.title,description:e.description??"",status:e.status,created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt),completed_at:(0,t.formatTimestampNullable)(e.completedAt)}},"machineTokenToResponse",0,function(e){return{id:e.id,name:e.name,last_used_at:(0,t.formatTimestampNullable)(e.lastUsedAt),created_at:(0,t.formatTimestamp)(e.createdAt)}},"meetingToResponse",0,function(e){return{id:e.id,agent_id:e.agentId,workspace_id:e.workspaceId,title:e.title,meeting_url:e.meetingUrl,status:e.status,from_email:e.fromEmail??null,is_whitelisted:!!e.isWhitelisted,participants:e.participants??[],scheduled_at:(0,t.formatTimestampNullable)(e.scheduledAt),started_at:(0,t.formatTimestampNullable)(e.startedAt),completed_at:(0,t.formatTimestampNullable)(e.completedAt),transcript_r2_key:e.transcriptR2Key??null,summary:e.summary??null,error:e.error??null,worker_session_id:e.workerSessionId??null,created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}},"memberToResponse",0,function(e){return{id:e.id,user_id:e.userId,role:e.role,name:e.userName,email:e.userEmail,image:e.userImage,created_at:(0,t.formatTimestamp)(e.createdAt)}},"messageToResponse",0,function(e){let a={id:e.id,conversation_id:e.conversationId,role:e.role,content:e.content,task_id:e.taskId||null,attachment_ids:e.attachmentIds?JSON.parse(e.attachmentIds):null,metadata:e.metadata?JSON.parse(e.metadata):null,created_at:(0,t.formatTimestamp)(e.createdAt)};return e.status&&"active"!==e.status&&(a.status=e.status),a},"runtimeToResponse",0,function(e){let a=e.metadata;a||(a={});let r=e.machineLastSeenAt??null,i=r instanceof Date?r.toISOString():r;return{id:e.id,workspace_id:e.workspaceId,daemon_id:e.daemonId||null,runtime_mode:e.runtimeMode,provider:e.provider,status:n(i)?"online":"offline",device_info:e.deviceInfo,metadata:a,pending_update_version:e.pendingUpdateVersion??null,pending_rescan:!!e.pendingRescan,last_seen_at:(0,t.formatTimestampNullable)(r),created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}},"taskMessageToResponse",0,function(e){let t={id:e.id,task_id:e.taskId,seq:e.seq,type:e.type,tool:e.tool,call_id:e.callId||"",content:e.content,output:e.output};return e.input&&(t.input=e.input),t},"taskToActivityResponse",0,function(e){let a=e.prompt.length>120?e.prompt.slice(0,120):e.prompt;return{id:e.id,conversation_id:e.conversationId,type:e.type??r.TASK_TYPES.USER_DM_MESSAGE,status:e.status,prompt:a,created_at:(0,t.formatTimestamp)(e.createdAt),started_at:(0,t.formatTimestampNullable)(e.startedAt),completed_at:(0,t.formatTimestampNullable)(e.completedAt),error:e.error||null}},"taskToResponse",0,function(e){return a.TaskApiBaseSchema.parse({id:e.id,agent_id:e.agentId,runtime_id:e.runtimeId,conversation_id:e.conversationId,workspace_id:e.workspaceId,prompt:e.prompt,type:e.type??r.TASK_TYPES.USER_DM_MESSAGE,context_key:e.contextKey??null,context:e.context??null,status:e.status,priority:e.priority,dispatched_at:(0,t.formatTimestampNullable)(e.dispatchedAt),started_at:(0,t.formatTimestampNullable)(e.startedAt),completed_at:(0,t.formatTimestampNullable)(e.completedAt),result:e.result??null,error:e.error||null,created_at:(0,t.formatTimestamp)(e.createdAt),trace_id:e.traceId??null,parent_task_id:e.parentTaskId??null})},"userToResponse",0,function(e){return{id:e.id,name:e.name,email:e.email,avatar_url:e.avatarUrl??null,created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}},"workspaceToResponse",0,function(e){return{id:e.id,name:e.name,slug:e.slug,created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}}],740580)},726089,e=>{"use strict";var t=e.i(194218);e.i(700598);var a=e.i(704024);let r=(0,e.i(726527).createLogger)({service:"broadcast"});async function n(e,n,i){let s;try{let{env:a}=(0,t.getCloudflareContext)();if(s=a.DEV_WS_DO_URL,(await a.WS_DO_WORKER.fetch(`http://internal${e}`,{method:"POST",body:n})).ok)return}catch{}let o=s||a.DEV_WS_DO_URL;try{let t=await fetch(`${o}${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:n});t.ok||r.warn("broadcast failed",{...i,status:t.status})}catch(e){r.warn("broadcast error",{...i,err:String(e)})}}e.s(["broadcastToUser",0,function(e,a){return function(e,a,r){let i=n(e,a,r);try{let{ctx:e}=(0,t.getCloudflareContext)();e.waitUntil(i)}catch{}return i}(`/broadcast/user/${e}`,JSON.stringify(a),{userId:e,type:a.type})}])},584514,e=>{"use strict";var t=e.i(719436);e.s(["generateWorkspaceSlug",0,function(){return`studio-${(0,t.nanoid)(8)}`}])},853961,e=>{"use strict";var t=e.i(80774),a=e.i(404478),r=e.i(732985),n=e.i(481671),i=e.i(638081),s=e.i(204960),o=e.i(924918),d=e.i(363585),l=e.i(906846),u=e.i(359838),c=e.i(383303),p=e.i(234173),m=e.i(270215),_=e.i(830665),f=e.i(944002),h=e.i(193695);e.i(195928);var g=e.i(81543),v=e.i(194218);e.i(700598);var T=e.i(291109),w=e.i(675139),R=e.i(152327),A=e.i(776227),y=e.i(740580),k=e.i(888247),I=e.i(584514),S=e.i(726089),b=e.i(774078);let E=(0,R.withAuth)(async(e,t)=>{let{env:a}=(0,v.getCloudflareContext)(),r=(0,w.getDb)(a.DB),[n,i]=await (0,A.parseBody)(e,k.RegisterDaemonRequestSchema);if(i)return i;let{daemon_id:s,device_name:o,cli_version:d,runtimes:l}=n,u=n.workspace_id;if(!u&&t.workspaceId&&(u=t.workspaceId),!u){let e=await T.queries.workspace.listWorkspaces(r,t.userId);if(e.length>0)u=e[0].id;else{let e=await T.queries.workspace.createWorkspace(r,{name:"Personal",slug:(0,I.generateWorkspaceSlug)()});await T.queries.member.createMember(r,{workspaceId:e.id,userId:t.userId,role:"owner"}),u=e.id}}if(t.workspaceId&&t.workspaceId!==u)return(0,A.writeJSON)({error:"workspace_id does not match token"},403);if(!await T.queries.member.getMemberByUserAndWorkspace(r,t.userId,u))return(0,A.writeJSON)({error:"workspace not found"},404);await T.queries.machine.upsertMachine(r,{daemonId:s,workspaceId:u,deviceInfo:o.trim()});let c=[];for(let e of l){let t=(e.type||e.provider||"unknown").trim(),a=e.runtime_mode||"local",n=o.trim(),i={version:e.version||"",...d?{cli_version:d}:{}},l=await T.queries.runtime.upsertAgentRuntime(r,{workspaceId:u,daemonId:s,runtimeMode:a,provider:t,deviceInfo:n,metadata:i});c.push({...l,machineLastSeenAt:new Date().toISOString()})}return await (0,b.invalidate)(b.cacheKeys.runtimeIds(u,s)),(0,S.broadcastToUser)(t.userId,{type:"runtime.registered",daemonId:s,hostname:o.trim(),workspaceId:u}).catch(()=>{}),(0,A.writeJSON)({runtimes:c.map(y.runtimeToResponse),workspaceId:u})});e.s(["POST",0,E],838742);var N=e.i(838742);let C=new t.AppRouteRouteModule({definition:{kind:a.RouteKind.APP_ROUTE,page:"/api/daemon/register/route",pathname:"/api/daemon/register",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/web/src/app/api/daemon/register/route.ts",nextConfigOutput:"standalone",userland:N,...{}}),{workAsyncStorage:x,workUnitAsyncStorage:O,serverHooks:P}=C;async function q(e,t,r){r.requestMeta&&(0,n.setRequestMeta)(e,r.requestMeta),C.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let v="/api/daemon/register/route";v=v.replace(/\/index$/,"")||"/";let T=await C.prepare(e,t,{srcPage:v,multiZoneDraftMode:!1});if(!T)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:w,deploymentId:R,params:A,nextConfig:y,parsedUrl:k,isDraftMode:I,prerenderManifest:S,routerServerContext:b,isOnDemandRevalidate:E,revalidateOnlyGenerated:N,resolvedPathname:x,clientReferenceManifest:O,serverActionsManifest:P}=T,q=(0,o.normalizeAppPath)(v),D=!!(S.dynamicRoutes[q]||S.routes[x]),U=async()=>((null==b?void 0:b.render404)?await b.render404(e,t,k,!1):t.end("This page could not be found"),null);if(D&&!I){let e=!!S.routes[x],t=S.dynamicRoutes[q];if(t&&!1===t.fallback&&!e){if(y.adapterPath)return await U();throw new h.NoFallbackError}}let j=null;!D||C.isDev||I||(j="/index"===(j=x)?"/":j);let M=!0===C.isDev||!D,H=D&&!M;P&&O&&(0,s.setManifestsSingleton)({page:v,clientReferenceManifest:O,serverActionsManifest:P});let $=e.method||"GET",K=(0,i.getTracer)(),B=K.getActiveScopeSpan(),W=!!(null==b?void 0:b.isWrappedByNextServer),L=!!(0,n.getRequestMeta)(e,"minimalMode"),F=(0,n.getRequestMeta)(e,"incrementalCache")||await C.getIncrementalCache(e,y,S,L);null==F||F.resetRequestCache(),globalThis.__incrementalCache=F;let J={params:A,previewProps:S.preview,renderOpts:{experimental:{authInterrupts:!!y.experimental.authInterrupts},cacheComponents:!!y.cacheComponents,supportsDynamicResponse:M,incrementalCache:F,cacheLifeProfiles:y.cacheLife,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,r,n)=>C.onRequestError(e,t,r,n,b)},sharedContext:{buildId:w,deploymentId:R}},Z=new d.NodeNextRequest(e),G=new d.NodeNextResponse(t),V=l.NextRequestAdapter.fromNodeNextRequest(Z,(0,l.signalFromNodeResponse)(t));try{let n,s=async e=>C.handle(V,J).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=K.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==u.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let r=a.get("next.route");if(r){let t=`${$} ${r}`;e.setAttributes({"next.route":r,"http.route":r,"next.span_name":t}),e.updateName(t),n&&n!==e&&(n.setAttribute("http.route",r),n.updateName(t))}else e.updateName(`${$} ${v}`)}),o=async n=>{var i,o;let d=async({previousCacheEntry:a})=>{try{if(!L&&E&&N&&!a)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let i=await s(n);e.fetchMetrics=J.renderOpts.fetchMetrics;let o=J.renderOpts.pendingWaitUntil;o&&r.waitUntil&&(r.waitUntil(o),o=void 0);let d=J.renderOpts.collectedTags;if(!D)return await (0,p.sendResponse)(Z,G,i,J.renderOpts.pendingWaitUntil),null;{let e=await i.blob(),t=(0,m.toNodeOutgoingHttpHeaders)(i.headers);d&&(t[f.NEXT_CACHE_TAGS_HEADER]=d),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==J.renderOpts.collectedRevalidate&&!(J.renderOpts.collectedRevalidate>=f.INFINITE_CACHE)&&J.renderOpts.collectedRevalidate,r=void 0===J.renderOpts.collectedExpire||J.renderOpts.collectedExpire>=f.INFINITE_CACHE?void 0:J.renderOpts.collectedExpire;return{value:{kind:g.CachedRouteKind.APP_ROUTE,status:i.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:r}}}}catch(t){throw(null==a?void 0:a.isStale)&&await C.onRequestError(e,t,{routerKind:"App Router",routePath:v,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:E})},!1,b),t}},l=await C.handleResponse({req:e,nextConfig:y,cacheKey:j,routeKind:a.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:S,isRoutePPREnabled:!1,isOnDemandRevalidate:E,revalidateOnlyGenerated:N,responseGenerator:d,waitUntil:r.waitUntil,isMinimalMode:L});if(!D)return null;if((null==l||null==(i=l.value)?void 0:i.kind)!==g.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==l||null==(o=l.value)?void 0:o.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});L||t.setHeader("x-nextjs-cache",E?"REVALIDATED":l.isMiss?"MISS":l.isStale?"STALE":"HIT"),I&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let u=(0,m.fromNodeOutgoingHttpHeaders)(l.value.headers);return L&&D||u.delete(f.NEXT_CACHE_TAGS_HEADER),!l.cacheControl||t.getHeader("Cache-Control")||u.get("Cache-Control")||u.set("Cache-Control",(0,_.getCacheControlHeader)(l.cacheControl)),await (0,p.sendResponse)(Z,G,new Response(l.value.body,{headers:u,status:l.value.status||200})),null};W&&B?await o(B):(n=K.getActiveScopeSpan(),await K.withPropagatedContext(e.headers,()=>K.trace(u.BaseServerSpan.handleRequest,{spanName:`${$} ${v}`,kind:i.SpanKind.SERVER,attributes:{"http.method":$,"http.target":e.url}},o),void 0,!W))}catch(t){if(t instanceof h.NoFallbackError||await C.onRequestError(e,t,{routerKind:"App Router",routePath:q,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:E})},!1,b),D)throw t;return await (0,p.sendResponse)(Z,G,new Response(null,{status:500})),null}}e.s(["handler",0,q,"patchFetch",0,function(){return(0,r.patchFetch)({workAsyncStorage:x,workUnitAsyncStorage:O})},"routeModule",0,C,"serverHooks",0,P,"workAsyncStorage",0,x,"workUnitAsyncStorage",0,O],853961)},967183,e=>{e.v(t=>Promise.all(["server/chunks/0ej8_@better-auth_memory-adapter_dist_index_mjs_10c.8b8._.js"].map(t=>e.l(t))).then(()=>t(205102)))},632019,e=>{e.v(t=>Promise.all(["server/chunks/0cd0_better-auth_dist_adapters_kysely-adapter_index_mjs_0v4jkxi._.js"].map(t=>e.l(t))).then(()=>t(836110)))},246358,e=>{e.v(e=>Promise.resolve().then(()=>e(357762)))},292677,e=>{e.v(t=>Promise.all(["server/chunks/0m4__@better-auth_kysely-adapter_dist_bun-sqlite-dialect-na--YwnN_mjs_0j55.z1._.js"].map(t=>e.l(t))).then(()=>t(52033)))},289217,e=>{e.v(t=>Promise.all(["server/chunks/0m4__@better-auth_kysely-adapter_dist_node-sqlite-dialect_mjs_0wxfd_8._.js"].map(t=>e.l(t))).then(()=>t(670514)))},316246,e=>{e.v(t=>Promise.all(["server/chunks/0m4__@better-auth_kysely-adapter_dist_d1-sqlite-dialect-C2B7YsIT_mjs_0unjrn9._.js"].map(t=>e.l(t))).then(()=>t(917123)))}];
2
2
 
3
3
  //# sourceMappingURL=_05mkm05._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[776227,e=>{"use strict";var t=e.i(463421);function a(e,a){return t.NextResponse.json({error:e},{status:a})}async function s(e,s){let r;try{r=await e.json()}catch{return[null,a("invalid request body",400)]}try{return[s.parse(r),null]}catch(a){let e=(a.issues??a.errors??[]).map(e=>`${e.path.join(".")}: ${e.message}`);return[null,t.NextResponse.json({error:"validation error",details:e},{status:400})]}}e.s(["formatTimestamp",0,function(e){return e?("string"==typeof e?new Date(e):e).toISOString().replace(/\.\d{3}Z$/,"Z"):""},"formatTimestampNullable",0,function(e){return e?("string"==typeof e?new Date(e):e).toISOString().replace(/\.\d{3}Z$/,"Z"):null},"parseBody",0,s,"writeError",0,a,"writeJSON",0,function(e,a=200){return t.NextResponse.json(e,{status:a})}])},47962,e=>{"use strict";var t=e.i(463421),a=e.i(194218);e.i(700598);var s=e.i(291109),r=e.i(675139),n=e.i(774078);async function i(e,i){let o=e.nextUrl.searchParams.get("workspace_id")||e.headers.get("X-Workspace-ID")||i.workspaceId;if(!o)return t.NextResponse.json({error:"workspace_id is required"},{status:400});if(!i.userId)return t.NextResponse.json({error:"user not authenticated"},{status:401});let{env:d}=await (0,a.getCloudflareContext)({async:!0}),l=(0,r.getDb)(d.DB),u=await (0,n.cached)(n.cacheKeys.member(o,i.userId),1800,()=>s.queries.member.getMemberByUserAndWorkspace(l,i.userId,o));return u||i.workspaceId!==o?u?{workspaceId:o,memberRole:u.role}:t.NextResponse.json({error:"workspace not found"},{status:404}):{workspaceId:o,memberRole:"member"}}async function o(e,a){let s=await i(e,a);return s instanceof t.NextResponse?s:"owner"!==s.memberRole?t.NextResponse.json({error:"owner access required"},{status:403}):s}e.s(["withWorkspaceMember",0,i,"withWorkspaceOwner",0,o])},740580,469187,e=>{"use strict";var t=e.i(776227);e.i(700598);var a=e.i(888247),s=e.i(704024);function r(e){if(!e)return!1;let t=new Date(e.includes("T")||e.includes("Z")||e.includes("+")?e:e+"Z").getTime();return!isNaN(t)&&Date.now()-t<s.OFFLINE_THRESHOLD_MS}e.s(["isOnline",0,r],469187),e.s(["agentLinkToResponse",0,function(e){return{id:e.id,workspace_id:e.workspaceId,source_agent_id:e.sourceAgentId,target_agent_id:e.targetAgentId,instruction:e.instruction,created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}},"agentToResponse",0,function(e){let a=e.runtimeConfig;return a||(a={}),{id:e.id,workspace_id:e.workspaceId,runtime_id:e.runtimeId||"",name:e.name,description:e.description,instructions:e.instructions,runtime_mode:e.runtimeMode,runtime_config:a,status:e.status,max_concurrent_tasks:e.maxConcurrentTasks,email_handle:e.emailHandle||null,avatar_url:e.avatarUrl??null,visibility:e.visibility??"private",owner_id:e.ownerId??null,created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}},"calendarEventToResponse",0,function(e){let a=(0,t.formatTimestamp)(e.scheduledAt),s=e.occurrenceAt?(0,t.formatTimestamp)(e.occurrenceAt):a;return{id:e.id,agent_id:e.agentId,workspace_id:e.workspaceId,title:e.title,description:e.description??null,scheduled_at:a,occurrence_at:s,collapsed_count:e.collapsedCount??null,repeat_interval:e.repeatInterval??null,repeat_stop_at:(0,t.formatTimestampNullable)(e.repeatStopAt),last_triggered_at:(0,t.formatTimestampNullable)(e.lastTriggeredAt),created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}},"channelToResponse",0,function(e){return{id:e.id,workspace_id:e.workspaceId,name:e.name,created_at:(0,t.formatTimestamp)(e.createdAt)}},"conversationToResponse",0,function(e){let a={id:e.id,agent_id:e.agentId,title:e.title,type:e.type??s.TASK_TYPES.USER_DM_MESSAGE,channel:e.channel??"default",created_at:(0,t.formatTimestamp)(e.createdAt)};return void 0!==e.messageCount&&(a.message_count=e.messageCount),a},"emailToResponse",0,function(e){return{id:e.id,agent_id:e.agentId,from_email:e.fromEmail,to_email:e.toEmail,subject:e.subject,r2_key:e.r2Key,is_whitelisted:!!e.isWhitelisted,forwarded:!!e.forwarded,message_id:e.messageId??"",in_reply_to:e.inReplyTo??"",references:e.references??"",html_body:e.htmlBody??"",attachments:JSON.parse(e.attachments||"[]"),status:e.status??"unread",direction:e.direction??"inbound",created_at:(0,t.formatTimestamp)(e.createdAt)}},"inviteToResponse",0,function(e){return{id:e.id,token:e.token,created_by:e.createdBy,used_by:e.usedBy,expires_at:(0,t.formatTimestamp)(e.expiresAt),created_at:(0,t.formatTimestamp)(e.createdAt)}},"issueToResponse",0,function(e){return{id:e.id,workspace_id:e.workspaceId,agent_id:e.agentId,creator_user_id:e.creatorUserId,conversation_id:e.conversationId,latest_task_id:e.latestTaskId??null,title:e.title,description:e.description??"",status:e.status,created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt),completed_at:(0,t.formatTimestampNullable)(e.completedAt)}},"machineTokenToResponse",0,function(e){return{id:e.id,name:e.name,last_used_at:(0,t.formatTimestampNullable)(e.lastUsedAt),created_at:(0,t.formatTimestamp)(e.createdAt)}},"meetingToResponse",0,function(e){return{id:e.id,agent_id:e.agentId,workspace_id:e.workspaceId,title:e.title,meeting_url:e.meetingUrl,status:e.status,from_email:e.fromEmail??null,is_whitelisted:!!e.isWhitelisted,participants:e.participants??[],scheduled_at:(0,t.formatTimestampNullable)(e.scheduledAt),started_at:(0,t.formatTimestampNullable)(e.startedAt),completed_at:(0,t.formatTimestampNullable)(e.completedAt),transcript_r2_key:e.transcriptR2Key??null,summary:e.summary??null,error:e.error??null,worker_session_id:e.workerSessionId??null,created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}},"memberToResponse",0,function(e){return{id:e.id,user_id:e.userId,role:e.role,name:e.userName,email:e.userEmail,image:e.userImage,created_at:(0,t.formatTimestamp)(e.createdAt)}},"messageToResponse",0,function(e){let a={id:e.id,conversation_id:e.conversationId,role:e.role,content:e.content,task_id:e.taskId||null,attachment_ids:e.attachmentIds?JSON.parse(e.attachmentIds):null,metadata:e.metadata?JSON.parse(e.metadata):null,created_at:(0,t.formatTimestamp)(e.createdAt)};return e.status&&"active"!==e.status&&(a.status=e.status),a},"runtimeToResponse",0,function(e){let a=e.metadata;a||(a={});let s=e.machineLastSeenAt??null,n=s instanceof Date?s.toISOString():s;return{id:e.id,workspace_id:e.workspaceId,daemon_id:e.daemonId||null,runtime_mode:e.runtimeMode,provider:e.provider,status:r(n)?"online":"offline",device_info:e.deviceInfo,metadata:a,pending_update_version:e.pendingUpdateVersion??null,pending_rescan:!!e.pendingRescan,last_seen_at:(0,t.formatTimestampNullable)(s),created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}},"taskMessageToResponse",0,function(e){let t={id:e.id,task_id:e.taskId,seq:e.seq,type:e.type,tool:e.tool,call_id:e.callId||"",content:e.content,output:e.output};return e.input&&(t.input=e.input),t},"taskToActivityResponse",0,function(e){let a=e.prompt.length>120?e.prompt.slice(0,120):e.prompt;return{id:e.id,conversation_id:e.conversationId,type:e.type??s.TASK_TYPES.USER_DM_MESSAGE,status:e.status,prompt:a,created_at:(0,t.formatTimestamp)(e.createdAt),started_at:(0,t.formatTimestampNullable)(e.startedAt),completed_at:(0,t.formatTimestampNullable)(e.completedAt),error:e.error||null}},"taskToResponse",0,function(e){return a.TaskApiBaseSchema.parse({id:e.id,agent_id:e.agentId,runtime_id:e.runtimeId,conversation_id:e.conversationId,workspace_id:e.workspaceId,prompt:e.prompt,type:e.type??s.TASK_TYPES.USER_DM_MESSAGE,context_key:e.contextKey??null,context:e.context??null,status:e.status,priority:e.priority,dispatched_at:(0,t.formatTimestampNullable)(e.dispatchedAt),started_at:(0,t.formatTimestampNullable)(e.startedAt),completed_at:(0,t.formatTimestampNullable)(e.completedAt),result:e.result??null,error:e.error||null,created_at:(0,t.formatTimestamp)(e.createdAt),trace_id:e.traceId??null,parent_task_id:e.parentTaskId??null})},"userToResponse",0,function(e){return{id:e.id,name:e.name,email:e.email,avatar_url:e.avatarUrl??null,created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}},"workspaceToResponse",0,function(e){return{id:e.id,name:e.name,slug:e.slug,created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}}],740580)},726089,e=>{"use strict";var t=e.i(194218);e.i(700598);var a=e.i(704024);let s=(0,e.i(726527).createLogger)({service:"broadcast"});async function r(e,r,n){let i;try{let{env:a}=(0,t.getCloudflareContext)();if(i=a.DEV_WS_DO_URL,(await a.WS_DO_WORKER.fetch(`http://internal${e}`,{method:"POST",body:r})).ok)return}catch{}let o=i||a.DEV_WS_DO_URL;try{let t=await fetch(`${o}${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:r});t.ok||s.warn("broadcast failed",{...n,status:t.status})}catch(e){s.warn("broadcast error",{...n,err:String(e)})}}async function n(e,t){await r(`/broadcast/user/${e}`,JSON.stringify(t),{userId:e,type:t.type})}e.s(["broadcastToUser",0,n])},799579,e=>{"use strict";e.i(700598);let t=(0,e.i(726527).createLogger)({service:"web",level:process.env.ALOOK_LOG_LEVEL||"info",pretty:!1});e.s(["log",0,t])},205054,e=>{"use strict";e.i(700598);var t=e.i(291109),a=e.i(704024),s=e.i(799579),r=e.i(726089),n=e.i(740580);let i=t.queries.task,o=t.queries.agent,d=t.queries.message,l=t.queries.conversation,u=t.queries.issue;e.s(["TaskService",0,class{db;constructor(e){this.db=e}async enqueueTask(e,t,s,r,n=a.TASK_TYPES.USER_DM_MESSAGE,d){let l=await o.getAgent(this.db,e,s);if(!l)throw Error("agent not found");if(!l.runtimeId)throw Error("agent has no runtime");if(d?.traceId&&d.parentTaskId&&await i.countTasksByTrace(this.db,d.traceId)>=a.MAX_TASKS_PER_TRACE)throw Error(`Trace limit reached (${a.MAX_TASKS_PER_TRACE} tasks). This may indicate an infinite loop between agents.`);return i.createTask(this.db,{agentId:e,runtimeId:l.runtimeId,workspaceId:s,conversationId:t,prompt:r,type:n,contextKey:d?.contextKey??null,priority:0,context:d?.context,traceId:d?.traceId??null,parentTaskId:d?.parentTaskId??null})}async claimTask(e,t){let a=await o.getAgent(this.db,e,t);if(!a)return null;if(await i.countRunningTasks(this.db,e,t)>=a.maxConcurrentTasks){let s=await i.findSteerableReplacement(this.db,e,t);if(!s||await i.countRunningTasks(this.db,e,t,s.predecessorId)>=a.maxConcurrentTasks)return null}let s=await i.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 i.claimKillTasks(this.db,e,a,t),r=t-s.length,n=r>0?await i.listPendingTasksByRuntimes(this.db,e,a):[],o=new Set(e),d=new Set,l=[...s];for(let e of n){if(r<=0)break;let t=`${e.agentId}:${e.workspaceId}`;if(d.has(t))continue;d.add(t);let a=await this.claimTask(e.agentId,e.workspaceId);a&&o.has(a.runtimeId)&&(l.push(a),r--)}return l}async startTask(e,t){let a=await i.startTask(this.db,e,t);if(!a)throw Error("task not in dispatched status");return a}async completeTask(e,t,a,r){let n;try{n=JSON.parse(a)}catch{n={raw:a}}let o=await i.completeTask(this.db,e,t,{result:n,sessionId:r||null});if(!o){let t=await i.getTask(this.db,e),a=t?.status??"unknown";throw s.log.warn(`completeTask failed: task is in '${a}' status`,{taskId:e}),Error(`cannot complete task in '${a}' status`)}let l=n,u="string"==typeof l?.output?l.output:"";return u&&await d.createMessage(this.db,{conversationId:o.conversationId,role:"assistant",content:u,taskId:e}),await this.reconcileAgentStatus(o.agentId,o.workspaceId),await this.dispatchNextBufferedMessage(o.conversationId,o.workspaceId),o}async failTask(e,t,r){let n=await i.failTask(this.db,e,t,r);if(!n){let t=await i.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`)}return n.type===a.TASK_TYPES.KILL_TASK||(r&&await d.createMessage(this.db,{conversationId:n.conversationId,role:"assistant",content:`Error: ${r}`,taskId:e}),await this.reconcileAgentStatus(n.agentId,n.workspaceId),await this.syncIssueStatusFromTask(n,"failed"),await this.dispatchNextBufferedMessage(n.conversationId,n.workspaceId)),n}async syncIssueStatusFromTask(e,t){if(e.type!==a.TASK_TYPES.ISSUE_EVENT)return;let s=await u.getIssueByConversation(this.db,e.conversationId,e.workspaceId);!s||s.status===t||await u.updateIssue(this.db,s.id,e.workspaceId,{status:t})&&await d.createMessage(this.db,{conversationId:e.conversationId,role:"event",content:`Issue status changed: ${s.status} -> ${t}`,taskId:e.id,metadata:JSON.stringify({issueId:s.id})})}async supersedeTask(e,t){let a=await i.supersedeTask(this.db,e,t);if(!a){let t=await i.getTask(this.db,e),a=t?.status??"unknown";throw s.log.warn(`supersedeTask failed: task is in '${a}' status`,{taskId:e}),Error(`cannot supersede task in '${a}' status`)}return await this.reconcileAgentStatus(a.agentId,a.workspaceId),await this.dispatchNextBufferedMessage(a.conversationId,a.workspaceId),a}async retryTask(e,t){let a=await i.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 i.markFailedAsSuperseded(this.db,e,t);if(!s)throw Error("failed to mark task as superseded");return{oldTask:s,newTask:await this.enqueueTask(a.agentId,a.conversationId,t,a.prompt,a.type,{contextKey:a.contextKey??null,context:a.context,traceId:a.traceId??null,parentTaskId:a.parentTaskId??null})}}async cancelActiveTask(e,t,s){let r=await i.getActiveTaskByConversation(this.db,e,t);if(!r)return null;let n=await i.cancelTask(this.db,r.id,t);return n?(("dispatched"===r.status||"running"===r.status)&&await i.createTask(this.db,{agentId:r.agentId,runtimeId:r.runtimeId,workspaceId:t,conversationId:e,prompt:"",type:a.TASK_TYPES.KILL_TASK,context:{target_task_id:r.id}}),await d.createMessage(this.db,{conversationId:e,role:"assistant",content:s?.reason??"Task cancelled by user",taskId:r.id}),await this.reconcileAgentStatus(r.agentId,t),s?.skipDispatch||await this.dispatchNextBufferedMessage(e,t),n):null}async reconcileAgentStatus(e,t){let a=await i.countRunningTasks(this.db,e,t);await o.updateAgentStatus(this.db,e,t,a>0?"working":"idle")}async dispatchNextBufferedMessage(e,t){let o=await d.activateNextBufferedMessage(this.db,e);if(!o)return null;let u=await l.getConversation(this.db,e,t);if(!u)return s.log.warn("dispatchNextBufferedMessage: conversation not found",{conversationId:e}),await d.revertToBuffered(this.db,o.id).catch(e=>{s.log.error("dispatchNextBufferedMessage: failed to revert message status",{messageId:o.id,revertErr:e})}),null;let c=u.userId;try{let s=o.attachmentIds?JSON.parse(o.attachmentIds):[],l=await i.getLatestTaskForConversation(this.db,e),p=l?.traceId??null,m=await this.enqueueTask(u.agentId,e,t,o.content,a.TASK_TYPES.USER_DM_MESSAGE,{contextKey:e,context:s.length>0?{attachment_ids:s}:void 0,traceId:p,parentTaskId:null});return await d.updateMessageTaskId(this.db,o.id,m.id),(0,r.broadcastToUser)(c,{type:"followup.dispatched",conversationId:e,message:(0,n.messageToResponse)(o),task:(0,n.taskToResponse)(m)}).catch(()=>{}),m}catch(t){return s.log.warn("dispatchNextBufferedMessage: enqueueTask failed",{conversationId:e,err:t}),await d.revertToBuffered(this.db,o.id).catch(e=>{s.log.error("dispatchNextBufferedMessage: failed to revert message status",{messageId:o.id,revertErr:e})}),(0,r.broadcastToUser)(c,{type:"followup.dispatch_failed",conversationId:e,messageId:o.id,error:t instanceof Error?t.message:"Failed to dispatch follow-up"}).catch(()=>{}),null}}async cancelTrace(e,t,a){for(let r of[...new Set((await i.getTraceTree(this.db,e,t)).filter(e=>["queued","dispatched","running"].includes(e.status)).map(e=>e.conversationId))])try{await this.cancelActiveTask(r,t,{skipDispatch:!0,reason:a?.reason})}catch(t){s.log.warn("cancelTrace: failed to cancel task",{traceId:e,convId:r,err:t})}}}])},388335,e=>{"use strict";e.i(700598);var t=e.i(291109),a=e.i(205054),s=e.i(774078);async function r(e,r){let n=`sweep:${r}`,i=!1;try{if(await (0,s.cached)(n,30,async()=>(i=!0,new Date().toISOString())),!i)return}catch{i=!0}let o=await t.queries.task.failStaleDispatchedTasks(e,r);await t.queries.task.failStaleKillTasks(e,r);let d=[...o,...await t.queries.task.failStaleRunningTasks(e,r)];if(d.length>0){let t=new a.TaskService(e),s=new Set;for(let e of d){let a=`${e.agentId}:${e.workspaceId}`;s.has(a)||(s.add(a),await t.reconcileAgentStatus(e.agentId,e.workspaceId))}let r=new Set;for(let e of d)r.has(e.conversationId)||(r.add(e.conversationId),await t.dispatchNextBufferedMessage(e.conversationId,e.workspaceId))}}e.s(["sweepStaleState",0,r])},496563,e=>{"use strict";var t=e.i(80774),a=e.i(404478),s=e.i(732985),r=e.i(481671),n=e.i(638081),i=e.i(204960),o=e.i(924918),d=e.i(363585),l=e.i(906846),u=e.i(359838),c=e.i(383303),p=e.i(234173),m=e.i(270215),h=e.i(830665),f=e.i(944002),_=e.i(193695);e.i(195928);var w=e.i(81543),g=e.i(194218);e.i(700598);var T=e.i(291109),k=e.i(675139),I=e.i(152327),v=e.i(47962),y=e.i(776227),b=e.i(740580),R=e.i(388335);let A=(0,I.withAuth)(async(e,t)=>{let a=await (0,v.withWorkspaceMember)(e,t);if(a instanceof Response)return a;let{env:s}=(0,g.getCloudflareContext)(),r=(0,k.getDb)(s.DB);await (0,R.sweepStaleState)(r,a.workspaceId);let n=await T.queries.runtime.listAgentRuntimes(r,a.workspaceId);return(0,y.writeJSON)(n.map(b.runtimeToResponse))});e.s(["GET",0,A],450329);var S=e.i(450329);let E=new t.AppRouteRouteModule({definition:{kind:a.RouteKind.APP_ROUTE,page:"/api/runtimes/route",pathname:"/api/runtimes",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/web/src/app/api/runtimes/route.ts",nextConfigOutput:"standalone",userland:S,...{}}),{workAsyncStorage:x,workUnitAsyncStorage:N,serverHooks:C}=E;async function M(e,t,s){s.requestMeta&&(0,r.setRequestMeta)(e,s.requestMeta),E.isDev&&(0,r.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let g="/api/runtimes/route";g=g.replace(/\/index$/,"")||"/";let T=await E.prepare(e,t,{srcPage:g,multiZoneDraftMode:!1});if(!T)return t.statusCode=400,t.end("Bad Request"),null==s.waitUntil||s.waitUntil.call(s,Promise.resolve()),null;let{buildId:k,deploymentId:I,params:v,nextConfig:y,parsedUrl:b,isDraftMode:R,prerenderManifest:A,routerServerContext:S,isOnDemandRevalidate:x,revalidateOnlyGenerated:N,resolvedPathname:C,clientReferenceManifest:M,serverActionsManifest:O}=T,P=(0,o.normalizeAppPath)(g),q=!!(A.dynamicRoutes[P]||A.routes[C]),D=async()=>((null==S?void 0:S.render404)?await S.render404(e,t,b,!1):t.end("This page could not be found"),null);if(q&&!R){let e=!!A.routes[C],t=A.dynamicRoutes[P];if(t&&!1===t.fallback&&!e){if(y.adapterPath)return await D();throw new _.NoFallbackError}}let K=null;!q||E.isDev||R||(K="/index"===(K=C)?"/":K);let U=!0===E.isDev||!q,j=q&&!U;O&&M&&(0,i.setManifestsSingleton)({page:g,clientReferenceManifest:M,serverActionsManifest:O});let B=e.method||"GET",$=(0,n.getTracer)(),L=$.getActiveScopeSpan(),H=!!(null==S?void 0:S.isWrappedByNextServer),F=!!(0,r.getRequestMeta)(e,"minimalMode"),W=(0,r.getRequestMeta)(e,"incrementalCache")||await E.getIncrementalCache(e,y,A,F);null==W||W.resetRequestCache(),globalThis.__incrementalCache=W;let G={params:v,previewProps:A.preview,renderOpts:{experimental:{authInterrupts:!!y.experimental.authInterrupts},cacheComponents:!!y.cacheComponents,supportsDynamicResponse:U,incrementalCache:W,cacheLifeProfiles:y.cacheLife,waitUntil:s.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,s,r)=>E.onRequestError(e,t,s,r,S)},sharedContext:{buildId:k,deploymentId:I}},Y=new d.NodeNextRequest(e),J=new d.NodeNextResponse(t),V=l.NextRequestAdapter.fromNodeNextRequest(Y,(0,l.signalFromNodeResponse)(t));try{let r,i=async e=>E.handle(V,G).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=$.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==u.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 s=a.get("next.route");if(s){let t=`${B} ${s}`;e.setAttributes({"next.route":s,"http.route":s,"next.span_name":t}),e.updateName(t),r&&r!==e&&(r.setAttribute("http.route",s),r.updateName(t))}else e.updateName(`${B} ${g}`)}),o=async r=>{var n,o;let d=async({previousCacheEntry:a})=>{try{if(!F&&x&&N&&!a)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let n=await i(r);e.fetchMetrics=G.renderOpts.fetchMetrics;let o=G.renderOpts.pendingWaitUntil;o&&s.waitUntil&&(s.waitUntil(o),o=void 0);let d=G.renderOpts.collectedTags;if(!q)return await (0,p.sendResponse)(Y,J,n,G.renderOpts.pendingWaitUntil),null;{let e=await n.blob(),t=(0,m.toNodeOutgoingHttpHeaders)(n.headers);d&&(t[f.NEXT_CACHE_TAGS_HEADER]=d),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==G.renderOpts.collectedRevalidate&&!(G.renderOpts.collectedRevalidate>=f.INFINITE_CACHE)&&G.renderOpts.collectedRevalidate,s=void 0===G.renderOpts.collectedExpire||G.renderOpts.collectedExpire>=f.INFINITE_CACHE?void 0:G.renderOpts.collectedExpire;return{value:{kind:w.CachedRouteKind.APP_ROUTE,status:n.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:s}}}}catch(t){throw(null==a?void 0:a.isStale)&&await E.onRequestError(e,t,{routerKind:"App Router",routePath:g,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:j,isOnDemandRevalidate:x})},!1,S),t}},l=await E.handleResponse({req:e,nextConfig:y,cacheKey:K,routeKind:a.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:A,isRoutePPREnabled:!1,isOnDemandRevalidate:x,revalidateOnlyGenerated:N,responseGenerator:d,waitUntil:s.waitUntil,isMinimalMode:F});if(!q)return null;if((null==l||null==(n=l.value)?void 0:n.kind)!==w.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==l||null==(o=l.value)?void 0:o.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});F||t.setHeader("x-nextjs-cache",x?"REVALIDATED":l.isMiss?"MISS":l.isStale?"STALE":"HIT"),R&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let u=(0,m.fromNodeOutgoingHttpHeaders)(l.value.headers);return F&&q||u.delete(f.NEXT_CACHE_TAGS_HEADER),!l.cacheControl||t.getHeader("Cache-Control")||u.get("Cache-Control")||u.set("Cache-Control",(0,h.getCacheControlHeader)(l.cacheControl)),await (0,p.sendResponse)(Y,J,new Response(l.value.body,{headers:u,status:l.value.status||200})),null};H&&L?await o(L):(r=$.getActiveScopeSpan(),await $.withPropagatedContext(e.headers,()=>$.trace(u.BaseServerSpan.handleRequest,{spanName:`${B} ${g}`,kind:n.SpanKind.SERVER,attributes:{"http.method":B,"http.target":e.url}},o),void 0,!H))}catch(t){if(t instanceof _.NoFallbackError||await E.onRequestError(e,t,{routerKind:"App Router",routePath:P,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:j,isOnDemandRevalidate:x})},!1,S),q)throw t;return await (0,p.sendResponse)(Y,J,new Response(null,{status:500})),null}}e.s(["handler",0,M,"patchFetch",0,function(){return(0,s.patchFetch)({workAsyncStorage:x,workUnitAsyncStorage:N})},"routeModule",0,E,"serverHooks",0,C,"workAsyncStorage",0,x,"workUnitAsyncStorage",0,N],496563)},967183,e=>{e.v(t=>Promise.all(["server/chunks/0ej8_@better-auth_memory-adapter_dist_index_mjs_10c.8b8._.js"].map(t=>e.l(t))).then(()=>t(205102)))},632019,e=>{e.v(t=>Promise.all(["server/chunks/0cd0_better-auth_dist_adapters_kysely-adapter_index_mjs_0v4jkxi._.js"].map(t=>e.l(t))).then(()=>t(836110)))},246358,e=>{e.v(e=>Promise.resolve().then(()=>e(357762)))},292677,e=>{e.v(t=>Promise.all(["server/chunks/0m4__@better-auth_kysely-adapter_dist_bun-sqlite-dialect-na--YwnN_mjs_0j55.z1._.js"].map(t=>e.l(t))).then(()=>t(52033)))},289217,e=>{e.v(t=>Promise.all(["server/chunks/0m4__@better-auth_kysely-adapter_dist_node-sqlite-dialect_mjs_0wxfd_8._.js"].map(t=>e.l(t))).then(()=>t(670514)))},316246,e=>{e.v(t=>Promise.all(["server/chunks/0m4__@better-auth_kysely-adapter_dist_d1-sqlite-dialect-C2B7YsIT_mjs_0unjrn9._.js"].map(t=>e.l(t))).then(()=>t(917123)))}];
1
+ module.exports=[776227,e=>{"use strict";var t=e.i(463421);function a(e,a){return t.NextResponse.json({error:e},{status:a})}async function s(e,s){let r;try{r=await e.json()}catch{return[null,a("invalid request body",400)]}try{return[s.parse(r),null]}catch(a){let e=(a.issues??a.errors??[]).map(e=>`${e.path.join(".")}: ${e.message}`);return[null,t.NextResponse.json({error:"validation error",details:e},{status:400})]}}e.s(["formatTimestamp",0,function(e){return e?("string"==typeof e?new Date(e):e).toISOString().replace(/\.\d{3}Z$/,"Z"):""},"formatTimestampNullable",0,function(e){return e?("string"==typeof e?new Date(e):e).toISOString().replace(/\.\d{3}Z$/,"Z"):null},"parseBody",0,s,"writeError",0,a,"writeJSON",0,function(e,a=200){return t.NextResponse.json(e,{status:a})}])},47962,e=>{"use strict";var t=e.i(463421),a=e.i(194218);e.i(700598);var s=e.i(291109),r=e.i(675139),n=e.i(774078);async function i(e,i){let o=e.nextUrl.searchParams.get("workspace_id")||e.headers.get("X-Workspace-ID")||i.workspaceId;if(!o)return t.NextResponse.json({error:"workspace_id is required"},{status:400});if(!i.userId)return t.NextResponse.json({error:"user not authenticated"},{status:401});let{env:d}=await (0,a.getCloudflareContext)({async:!0}),l=(0,r.getDb)(d.DB),u=await (0,n.cached)(n.cacheKeys.member(o,i.userId),1800,()=>s.queries.member.getMemberByUserAndWorkspace(l,i.userId,o));return u||i.workspaceId!==o?u?{workspaceId:o,memberRole:u.role}:t.NextResponse.json({error:"workspace not found"},{status:404}):{workspaceId:o,memberRole:"member"}}async function o(e,a){let s=await i(e,a);return s instanceof t.NextResponse?s:"owner"!==s.memberRole?t.NextResponse.json({error:"owner access required"},{status:403}):s}e.s(["withWorkspaceMember",0,i,"withWorkspaceOwner",0,o])},740580,469187,e=>{"use strict";var t=e.i(776227);e.i(700598);var a=e.i(888247),s=e.i(704024);function r(e){if(!e)return!1;let t=new Date(e.includes("T")||e.includes("Z")||e.includes("+")?e:e+"Z").getTime();return!isNaN(t)&&Date.now()-t<s.OFFLINE_THRESHOLD_MS}e.s(["isOnline",0,r],469187),e.s(["agentLinkToResponse",0,function(e){return{id:e.id,workspace_id:e.workspaceId,source_agent_id:e.sourceAgentId,target_agent_id:e.targetAgentId,instruction:e.instruction,created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}},"agentToResponse",0,function(e){let a=e.runtimeConfig;return a||(a={}),{id:e.id,workspace_id:e.workspaceId,runtime_id:e.runtimeId||"",name:e.name,description:e.description,instructions:e.instructions,runtime_mode:e.runtimeMode,runtime_config:a,status:e.status,max_concurrent_tasks:e.maxConcurrentTasks,email_handle:e.emailHandle||null,avatar_url:e.avatarUrl??null,visibility:e.visibility??"private",owner_id:e.ownerId??null,created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}},"calendarEventToResponse",0,function(e){let a=(0,t.formatTimestamp)(e.scheduledAt),s=e.occurrenceAt?(0,t.formatTimestamp)(e.occurrenceAt):a;return{id:e.id,agent_id:e.agentId,workspace_id:e.workspaceId,title:e.title,description:e.description??null,scheduled_at:a,occurrence_at:s,collapsed_count:e.collapsedCount??null,repeat_interval:e.repeatInterval??null,repeat_stop_at:(0,t.formatTimestampNullable)(e.repeatStopAt),last_triggered_at:(0,t.formatTimestampNullable)(e.lastTriggeredAt),created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}},"channelToResponse",0,function(e){return{id:e.id,workspace_id:e.workspaceId,name:e.name,created_at:(0,t.formatTimestamp)(e.createdAt)}},"conversationToResponse",0,function(e){let a={id:e.id,agent_id:e.agentId,title:e.title,type:e.type??s.TASK_TYPES.USER_DM_MESSAGE,channel:e.channel??"default",created_at:(0,t.formatTimestamp)(e.createdAt)};return void 0!==e.messageCount&&(a.message_count=e.messageCount),a},"emailToResponse",0,function(e){return{id:e.id,agent_id:e.agentId,from_email:e.fromEmail,to_email:e.toEmail,subject:e.subject,r2_key:e.r2Key,is_whitelisted:!!e.isWhitelisted,forwarded:!!e.forwarded,message_id:e.messageId??"",in_reply_to:e.inReplyTo??"",references:e.references??"",html_body:e.htmlBody??"",attachments:JSON.parse(e.attachments||"[]"),status:e.status??"unread",direction:e.direction??"inbound",created_at:(0,t.formatTimestamp)(e.createdAt)}},"inviteToResponse",0,function(e){return{id:e.id,token:e.token,created_by:e.createdBy,used_by:e.usedBy,expires_at:(0,t.formatTimestamp)(e.expiresAt),created_at:(0,t.formatTimestamp)(e.createdAt)}},"issueToResponse",0,function(e){return{id:e.id,workspace_id:e.workspaceId,agent_id:e.agentId,creator_user_id:e.creatorUserId,conversation_id:e.conversationId,latest_task_id:e.latestTaskId??null,title:e.title,description:e.description??"",status:e.status,created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt),completed_at:(0,t.formatTimestampNullable)(e.completedAt)}},"machineTokenToResponse",0,function(e){return{id:e.id,name:e.name,last_used_at:(0,t.formatTimestampNullable)(e.lastUsedAt),created_at:(0,t.formatTimestamp)(e.createdAt)}},"meetingToResponse",0,function(e){return{id:e.id,agent_id:e.agentId,workspace_id:e.workspaceId,title:e.title,meeting_url:e.meetingUrl,status:e.status,from_email:e.fromEmail??null,is_whitelisted:!!e.isWhitelisted,participants:e.participants??[],scheduled_at:(0,t.formatTimestampNullable)(e.scheduledAt),started_at:(0,t.formatTimestampNullable)(e.startedAt),completed_at:(0,t.formatTimestampNullable)(e.completedAt),transcript_r2_key:e.transcriptR2Key??null,summary:e.summary??null,error:e.error??null,worker_session_id:e.workerSessionId??null,created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}},"memberToResponse",0,function(e){return{id:e.id,user_id:e.userId,role:e.role,name:e.userName,email:e.userEmail,image:e.userImage,created_at:(0,t.formatTimestamp)(e.createdAt)}},"messageToResponse",0,function(e){let a={id:e.id,conversation_id:e.conversationId,role:e.role,content:e.content,task_id:e.taskId||null,attachment_ids:e.attachmentIds?JSON.parse(e.attachmentIds):null,metadata:e.metadata?JSON.parse(e.metadata):null,created_at:(0,t.formatTimestamp)(e.createdAt)};return e.status&&"active"!==e.status&&(a.status=e.status),a},"runtimeToResponse",0,function(e){let a=e.metadata;a||(a={});let s=e.machineLastSeenAt??null,n=s instanceof Date?s.toISOString():s;return{id:e.id,workspace_id:e.workspaceId,daemon_id:e.daemonId||null,runtime_mode:e.runtimeMode,provider:e.provider,status:r(n)?"online":"offline",device_info:e.deviceInfo,metadata:a,pending_update_version:e.pendingUpdateVersion??null,pending_rescan:!!e.pendingRescan,last_seen_at:(0,t.formatTimestampNullable)(s),created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}},"taskMessageToResponse",0,function(e){let t={id:e.id,task_id:e.taskId,seq:e.seq,type:e.type,tool:e.tool,call_id:e.callId||"",content:e.content,output:e.output};return e.input&&(t.input=e.input),t},"taskToActivityResponse",0,function(e){let a=e.prompt.length>120?e.prompt.slice(0,120):e.prompt;return{id:e.id,conversation_id:e.conversationId,type:e.type??s.TASK_TYPES.USER_DM_MESSAGE,status:e.status,prompt:a,created_at:(0,t.formatTimestamp)(e.createdAt),started_at:(0,t.formatTimestampNullable)(e.startedAt),completed_at:(0,t.formatTimestampNullable)(e.completedAt),error:e.error||null}},"taskToResponse",0,function(e){return a.TaskApiBaseSchema.parse({id:e.id,agent_id:e.agentId,runtime_id:e.runtimeId,conversation_id:e.conversationId,workspace_id:e.workspaceId,prompt:e.prompt,type:e.type??s.TASK_TYPES.USER_DM_MESSAGE,context_key:e.contextKey??null,context:e.context??null,status:e.status,priority:e.priority,dispatched_at:(0,t.formatTimestampNullable)(e.dispatchedAt),started_at:(0,t.formatTimestampNullable)(e.startedAt),completed_at:(0,t.formatTimestampNullable)(e.completedAt),result:e.result??null,error:e.error||null,created_at:(0,t.formatTimestamp)(e.createdAt),trace_id:e.traceId??null,parent_task_id:e.parentTaskId??null})},"userToResponse",0,function(e){return{id:e.id,name:e.name,email:e.email,avatar_url:e.avatarUrl??null,created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}},"workspaceToResponse",0,function(e){return{id:e.id,name:e.name,slug:e.slug,created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}}],740580)},726089,e=>{"use strict";var t=e.i(194218);e.i(700598);var a=e.i(704024);let s=(0,e.i(726527).createLogger)({service:"broadcast"});async function r(e,r,n){let i;try{let{env:a}=(0,t.getCloudflareContext)();if(i=a.DEV_WS_DO_URL,(await a.WS_DO_WORKER.fetch(`http://internal${e}`,{method:"POST",body:r})).ok)return}catch{}let o=i||a.DEV_WS_DO_URL;try{let t=await fetch(`${o}${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:r});t.ok||s.warn("broadcast failed",{...n,status:t.status})}catch(e){s.warn("broadcast error",{...n,err:String(e)})}}e.s(["broadcastToUser",0,function(e,a){return function(e,a,s){let n=r(e,a,s);try{let{ctx:e}=(0,t.getCloudflareContext)();e.waitUntil(n)}catch{}return n}(`/broadcast/user/${e}`,JSON.stringify(a),{userId:e,type:a.type})}])},799579,e=>{"use strict";e.i(700598);let t=(0,e.i(726527).createLogger)({service:"web",level:process.env.ALOOK_LOG_LEVEL||"info",pretty:!1});e.s(["log",0,t])},205054,e=>{"use strict";e.i(700598);var t=e.i(291109),a=e.i(704024),s=e.i(799579),r=e.i(726089),n=e.i(740580);let i=t.queries.task,o=t.queries.agent,d=t.queries.message,l=t.queries.conversation,u=t.queries.issue;e.s(["TaskService",0,class{db;constructor(e){this.db=e}async enqueueTask(e,t,s,r,n=a.TASK_TYPES.USER_DM_MESSAGE,d){let l=await o.getAgent(this.db,e,s);if(!l)throw Error("agent not found");if(!l.runtimeId)throw Error("agent has no runtime");if(d?.traceId&&d.parentTaskId&&await i.countTasksByTrace(this.db,d.traceId)>=a.MAX_TASKS_PER_TRACE)throw Error(`Trace limit reached (${a.MAX_TASKS_PER_TRACE} tasks). This may indicate an infinite loop between agents.`);return i.createTask(this.db,{agentId:e,runtimeId:l.runtimeId,workspaceId:s,conversationId:t,prompt:r,type:n,contextKey:d?.contextKey??null,priority:0,context:d?.context,traceId:d?.traceId??null,parentTaskId:d?.parentTaskId??null})}async claimTask(e,t){let a=await o.getAgent(this.db,e,t);if(!a)return null;if(await i.countRunningTasks(this.db,e,t)>=a.maxConcurrentTasks){let s=await i.findSteerableReplacement(this.db,e,t);if(!s||await i.countRunningTasks(this.db,e,t,s.predecessorId)>=a.maxConcurrentTasks)return null}let s=await i.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 i.claimKillTasks(this.db,e,a,t),r=t-s.length,n=r>0?await i.listPendingTasksByRuntimes(this.db,e,a):[],o=new Set(e),d=new Set,l=[...s];for(let e of n){if(r<=0)break;let t=`${e.agentId}:${e.workspaceId}`;if(d.has(t))continue;d.add(t);let a=await this.claimTask(e.agentId,e.workspaceId);a&&o.has(a.runtimeId)&&(l.push(a),r--)}return l}async startTask(e,t){let a=await i.startTask(this.db,e,t);if(!a)throw Error("task not in dispatched status");return a}async completeTask(e,t,a,r){let n;try{n=JSON.parse(a)}catch{n={raw:a}}let o=await i.completeTask(this.db,e,t,{result:n,sessionId:r||null});if(!o){let t=await i.getTask(this.db,e),a=t?.status??"unknown";throw s.log.warn(`completeTask failed: task is in '${a}' status`,{taskId:e}),Error(`cannot complete task in '${a}' status`)}let l=n,u="string"==typeof l?.output?l.output:"";return u&&await d.createMessage(this.db,{conversationId:o.conversationId,role:"assistant",content:u,taskId:e}),await this.reconcileAgentStatus(o.agentId,o.workspaceId),await this.dispatchNextBufferedMessage(o.conversationId,o.workspaceId),o}async failTask(e,t,r){let n=await i.failTask(this.db,e,t,r);if(!n){let t=await i.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`)}return n.type===a.TASK_TYPES.KILL_TASK||(r&&await d.createMessage(this.db,{conversationId:n.conversationId,role:"assistant",content:`Error: ${r}`,taskId:e}),await this.reconcileAgentStatus(n.agentId,n.workspaceId),await this.syncIssueStatusFromTask(n,"failed"),await this.dispatchNextBufferedMessage(n.conversationId,n.workspaceId)),n}async syncIssueStatusFromTask(e,t){if(e.type!==a.TASK_TYPES.ISSUE_EVENT)return;let s=await u.getIssueByConversation(this.db,e.conversationId,e.workspaceId);!s||s.status===t||await u.updateIssue(this.db,s.id,e.workspaceId,{status:t})&&await d.createMessage(this.db,{conversationId:e.conversationId,role:"event",content:`Issue status changed: ${s.status} -> ${t}`,taskId:e.id,metadata:JSON.stringify({issueId:s.id})})}async supersedeTask(e,t){let a=await i.supersedeTask(this.db,e,t);if(!a){let t=await i.getTask(this.db,e),a=t?.status??"unknown";throw s.log.warn(`supersedeTask failed: task is in '${a}' status`,{taskId:e}),Error(`cannot supersede task in '${a}' status`)}return await this.reconcileAgentStatus(a.agentId,a.workspaceId),await this.dispatchNextBufferedMessage(a.conversationId,a.workspaceId),a}async retryTask(e,t){let a=await i.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 i.markFailedAsSuperseded(this.db,e,t);if(!s)throw Error("failed to mark task as superseded");return{oldTask:s,newTask:await this.enqueueTask(a.agentId,a.conversationId,t,a.prompt,a.type,{contextKey:a.contextKey??null,context:a.context,traceId:a.traceId??null,parentTaskId:a.parentTaskId??null})}}async cancelActiveTask(e,t,s){let r=await i.getActiveTaskByConversation(this.db,e,t);if(!r)return null;let n=await i.cancelTask(this.db,r.id,t);return n?(("dispatched"===r.status||"running"===r.status)&&await i.createTask(this.db,{agentId:r.agentId,runtimeId:r.runtimeId,workspaceId:t,conversationId:e,prompt:"",type:a.TASK_TYPES.KILL_TASK,context:{target_task_id:r.id}}),await d.createMessage(this.db,{conversationId:e,role:"assistant",content:s?.reason??"Task cancelled by user",taskId:r.id}),await this.reconcileAgentStatus(r.agentId,t),s?.skipDispatch||await this.dispatchNextBufferedMessage(e,t),n):null}async reconcileAgentStatus(e,t){let a=await i.countRunningTasks(this.db,e,t);await o.updateAgentStatus(this.db,e,t,a>0?"working":"idle")}async dispatchNextBufferedMessage(e,t){let o=await d.activateNextBufferedMessage(this.db,e);if(!o)return null;let u=await l.getConversation(this.db,e,t);if(!u)return s.log.warn("dispatchNextBufferedMessage: conversation not found",{conversationId:e}),await d.revertToBuffered(this.db,o.id).catch(e=>{s.log.error("dispatchNextBufferedMessage: failed to revert message status",{messageId:o.id,revertErr:e})}),null;let c=u.userId;try{let s=o.attachmentIds?JSON.parse(o.attachmentIds):[],l=await i.getLatestTaskForConversation(this.db,e),p=l?.traceId??null,m=await this.enqueueTask(u.agentId,e,t,o.content,a.TASK_TYPES.USER_DM_MESSAGE,{contextKey:e,context:s.length>0?{attachment_ids:s}:void 0,traceId:p,parentTaskId:null});return await d.updateMessageTaskId(this.db,o.id,m.id),(0,r.broadcastToUser)(c,{type:"followup.dispatched",conversationId:e,message:(0,n.messageToResponse)(o),task:(0,n.taskToResponse)(m)}).catch(()=>{}),m}catch(t){return s.log.warn("dispatchNextBufferedMessage: enqueueTask failed",{conversationId:e,err:t}),await d.revertToBuffered(this.db,o.id).catch(e=>{s.log.error("dispatchNextBufferedMessage: failed to revert message status",{messageId:o.id,revertErr:e})}),(0,r.broadcastToUser)(c,{type:"followup.dispatch_failed",conversationId:e,messageId:o.id,error:t instanceof Error?t.message:"Failed to dispatch follow-up"}).catch(()=>{}),null}}async cancelTrace(e,t,a){for(let r of[...new Set((await i.getTraceTree(this.db,e,t)).filter(e=>["queued","dispatched","running"].includes(e.status)).map(e=>e.conversationId))])try{await this.cancelActiveTask(r,t,{skipDispatch:!0,reason:a?.reason})}catch(t){s.log.warn("cancelTrace: failed to cancel task",{traceId:e,convId:r,err:t})}}}])},388335,e=>{"use strict";e.i(700598);var t=e.i(291109),a=e.i(205054),s=e.i(774078);async function r(e,r){let n=`sweep:${r}`,i=!1;try{if(await (0,s.cached)(n,30,async()=>(i=!0,new Date().toISOString())),!i)return}catch{i=!0}let o=await t.queries.task.failStaleDispatchedTasks(e,r);await t.queries.task.failStaleKillTasks(e,r);let d=[...o,...await t.queries.task.failStaleRunningTasks(e,r)];if(d.length>0){let t=new a.TaskService(e),s=new Set;for(let e of d){let a=`${e.agentId}:${e.workspaceId}`;s.has(a)||(s.add(a),await t.reconcileAgentStatus(e.agentId,e.workspaceId))}let r=new Set;for(let e of d)r.has(e.conversationId)||(r.add(e.conversationId),await t.dispatchNextBufferedMessage(e.conversationId,e.workspaceId))}}e.s(["sweepStaleState",0,r])},496563,e=>{"use strict";var t=e.i(80774),a=e.i(404478),s=e.i(732985),r=e.i(481671),n=e.i(638081),i=e.i(204960),o=e.i(924918),d=e.i(363585),l=e.i(906846),u=e.i(359838),c=e.i(383303),p=e.i(234173),m=e.i(270215),f=e.i(830665),h=e.i(944002),_=e.i(193695);e.i(195928);var w=e.i(81543),g=e.i(194218);e.i(700598);var T=e.i(291109),k=e.i(675139),I=e.i(152327),v=e.i(47962),y=e.i(776227),b=e.i(740580),R=e.i(388335);let A=(0,I.withAuth)(async(e,t)=>{let a=await (0,v.withWorkspaceMember)(e,t);if(a instanceof Response)return a;let{env:s}=(0,g.getCloudflareContext)(),r=(0,k.getDb)(s.DB);await (0,R.sweepStaleState)(r,a.workspaceId);let n=await T.queries.runtime.listAgentRuntimes(r,a.workspaceId);return(0,y.writeJSON)(n.map(b.runtimeToResponse))});e.s(["GET",0,A],450329);var S=e.i(450329);let E=new t.AppRouteRouteModule({definition:{kind:a.RouteKind.APP_ROUTE,page:"/api/runtimes/route",pathname:"/api/runtimes",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/web/src/app/api/runtimes/route.ts",nextConfigOutput:"standalone",userland:S,...{}}),{workAsyncStorage:x,workUnitAsyncStorage:N,serverHooks:C}=E;async function M(e,t,s){s.requestMeta&&(0,r.setRequestMeta)(e,s.requestMeta),E.isDev&&(0,r.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let g="/api/runtimes/route";g=g.replace(/\/index$/,"")||"/";let T=await E.prepare(e,t,{srcPage:g,multiZoneDraftMode:!1});if(!T)return t.statusCode=400,t.end("Bad Request"),null==s.waitUntil||s.waitUntil.call(s,Promise.resolve()),null;let{buildId:k,deploymentId:I,params:v,nextConfig:y,parsedUrl:b,isDraftMode:R,prerenderManifest:A,routerServerContext:S,isOnDemandRevalidate:x,revalidateOnlyGenerated:N,resolvedPathname:C,clientReferenceManifest:M,serverActionsManifest:O}=T,P=(0,o.normalizeAppPath)(g),q=!!(A.dynamicRoutes[P]||A.routes[C]),D=async()=>((null==S?void 0:S.render404)?await S.render404(e,t,b,!1):t.end("This page could not be found"),null);if(q&&!R){let e=!!A.routes[C],t=A.dynamicRoutes[P];if(t&&!1===t.fallback&&!e){if(y.adapterPath)return await D();throw new _.NoFallbackError}}let U=null;!q||E.isDev||R||(U="/index"===(U=C)?"/":U);let K=!0===E.isDev||!q,j=q&&!K;O&&M&&(0,i.setManifestsSingleton)({page:g,clientReferenceManifest:M,serverActionsManifest:O});let B=e.method||"GET",$=(0,n.getTracer)(),L=$.getActiveScopeSpan(),H=!!(null==S?void 0:S.isWrappedByNextServer),F=!!(0,r.getRequestMeta)(e,"minimalMode"),W=(0,r.getRequestMeta)(e,"incrementalCache")||await E.getIncrementalCache(e,y,A,F);null==W||W.resetRequestCache(),globalThis.__incrementalCache=W;let G={params:v,previewProps:A.preview,renderOpts:{experimental:{authInterrupts:!!y.experimental.authInterrupts},cacheComponents:!!y.cacheComponents,supportsDynamicResponse:K,incrementalCache:W,cacheLifeProfiles:y.cacheLife,waitUntil:s.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,s,r)=>E.onRequestError(e,t,s,r,S)},sharedContext:{buildId:k,deploymentId:I}},Y=new d.NodeNextRequest(e),J=new d.NodeNextResponse(t),V=l.NextRequestAdapter.fromNodeNextRequest(Y,(0,l.signalFromNodeResponse)(t));try{let r,i=async e=>E.handle(V,G).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=$.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==u.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 s=a.get("next.route");if(s){let t=`${B} ${s}`;e.setAttributes({"next.route":s,"http.route":s,"next.span_name":t}),e.updateName(t),r&&r!==e&&(r.setAttribute("http.route",s),r.updateName(t))}else e.updateName(`${B} ${g}`)}),o=async r=>{var n,o;let d=async({previousCacheEntry:a})=>{try{if(!F&&x&&N&&!a)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let n=await i(r);e.fetchMetrics=G.renderOpts.fetchMetrics;let o=G.renderOpts.pendingWaitUntil;o&&s.waitUntil&&(s.waitUntil(o),o=void 0);let d=G.renderOpts.collectedTags;if(!q)return await (0,p.sendResponse)(Y,J,n,G.renderOpts.pendingWaitUntil),null;{let e=await n.blob(),t=(0,m.toNodeOutgoingHttpHeaders)(n.headers);d&&(t[h.NEXT_CACHE_TAGS_HEADER]=d),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==G.renderOpts.collectedRevalidate&&!(G.renderOpts.collectedRevalidate>=h.INFINITE_CACHE)&&G.renderOpts.collectedRevalidate,s=void 0===G.renderOpts.collectedExpire||G.renderOpts.collectedExpire>=h.INFINITE_CACHE?void 0:G.renderOpts.collectedExpire;return{value:{kind:w.CachedRouteKind.APP_ROUTE,status:n.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:s}}}}catch(t){throw(null==a?void 0:a.isStale)&&await E.onRequestError(e,t,{routerKind:"App Router",routePath:g,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:j,isOnDemandRevalidate:x})},!1,S),t}},l=await E.handleResponse({req:e,nextConfig:y,cacheKey:U,routeKind:a.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:A,isRoutePPREnabled:!1,isOnDemandRevalidate:x,revalidateOnlyGenerated:N,responseGenerator:d,waitUntil:s.waitUntil,isMinimalMode:F});if(!q)return null;if((null==l||null==(n=l.value)?void 0:n.kind)!==w.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==l||null==(o=l.value)?void 0:o.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});F||t.setHeader("x-nextjs-cache",x?"REVALIDATED":l.isMiss?"MISS":l.isStale?"STALE":"HIT"),R&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let u=(0,m.fromNodeOutgoingHttpHeaders)(l.value.headers);return F&&q||u.delete(h.NEXT_CACHE_TAGS_HEADER),!l.cacheControl||t.getHeader("Cache-Control")||u.get("Cache-Control")||u.set("Cache-Control",(0,f.getCacheControlHeader)(l.cacheControl)),await (0,p.sendResponse)(Y,J,new Response(l.value.body,{headers:u,status:l.value.status||200})),null};H&&L?await o(L):(r=$.getActiveScopeSpan(),await $.withPropagatedContext(e.headers,()=>$.trace(u.BaseServerSpan.handleRequest,{spanName:`${B} ${g}`,kind:n.SpanKind.SERVER,attributes:{"http.method":B,"http.target":e.url}},o),void 0,!H))}catch(t){if(t instanceof _.NoFallbackError||await E.onRequestError(e,t,{routerKind:"App Router",routePath:P,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:j,isOnDemandRevalidate:x})},!1,S),q)throw t;return await (0,p.sendResponse)(Y,J,new Response(null,{status:500})),null}}e.s(["handler",0,M,"patchFetch",0,function(){return(0,s.patchFetch)({workAsyncStorage:x,workUnitAsyncStorage:N})},"routeModule",0,E,"serverHooks",0,C,"workAsyncStorage",0,x,"workUnitAsyncStorage",0,N],496563)},967183,e=>{e.v(t=>Promise.all(["server/chunks/0ej8_@better-auth_memory-adapter_dist_index_mjs_10c.8b8._.js"].map(t=>e.l(t))).then(()=>t(205102)))},632019,e=>{e.v(t=>Promise.all(["server/chunks/0cd0_better-auth_dist_adapters_kysely-adapter_index_mjs_0v4jkxi._.js"].map(t=>e.l(t))).then(()=>t(836110)))},246358,e=>{e.v(e=>Promise.resolve().then(()=>e(357762)))},292677,e=>{e.v(t=>Promise.all(["server/chunks/0m4__@better-auth_kysely-adapter_dist_bun-sqlite-dialect-na--YwnN_mjs_0j55.z1._.js"].map(t=>e.l(t))).then(()=>t(52033)))},289217,e=>{e.v(t=>Promise.all(["server/chunks/0m4__@better-auth_kysely-adapter_dist_node-sqlite-dialect_mjs_0wxfd_8._.js"].map(t=>e.l(t))).then(()=>t(670514)))},316246,e=>{e.v(t=>Promise.all(["server/chunks/0m4__@better-auth_kysely-adapter_dist_d1-sqlite-dialect-C2B7YsIT_mjs_0unjrn9._.js"].map(t=>e.l(t))).then(()=>t(917123)))}];
2
2
 
3
3
  //# sourceMappingURL=_05t_tvs._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[776227,e=>{"use strict";var t=e.i(463421);function a(e,a){return t.NextResponse.json({error:e},{status:a})}async function r(e,r){let s;try{s=await e.json()}catch{return[null,a("invalid request body",400)]}try{return[r.parse(s),null]}catch(a){let e=(a.issues??a.errors??[]).map(e=>`${e.path.join(".")}: ${e.message}`);return[null,t.NextResponse.json({error:"validation error",details:e},{status:400})]}}e.s(["formatTimestamp",0,function(e){return e?("string"==typeof e?new Date(e):e).toISOString().replace(/\.\d{3}Z$/,"Z"):""},"formatTimestampNullable",0,function(e){return e?("string"==typeof e?new Date(e):e).toISOString().replace(/\.\d{3}Z$/,"Z"):null},"parseBody",0,r,"writeError",0,a,"writeJSON",0,function(e,a=200){return t.NextResponse.json(e,{status:a})}])},47962,e=>{"use strict";var t=e.i(463421),a=e.i(194218);e.i(700598);var r=e.i(291109),s=e.i(675139),n=e.i(774078);async function i(e,i){let o=e.nextUrl.searchParams.get("workspace_id")||e.headers.get("X-Workspace-ID")||i.workspaceId;if(!o)return t.NextResponse.json({error:"workspace_id is required"},{status:400});if(!i.userId)return t.NextResponse.json({error:"user not authenticated"},{status:401});let{env:d}=await (0,a.getCloudflareContext)({async:!0}),l=(0,s.getDb)(d.DB),c=await (0,n.cached)(n.cacheKeys.member(o,i.userId),1800,()=>r.queries.member.getMemberByUserAndWorkspace(l,i.userId,o));return c||i.workspaceId!==o?c?{workspaceId:o,memberRole:c.role}:t.NextResponse.json({error:"workspace not found"},{status:404}):{workspaceId:o,memberRole:"member"}}async function o(e,a){let r=await i(e,a);return r instanceof t.NextResponse?r:"owner"!==r.memberRole?t.NextResponse.json({error:"owner access required"},{status:403}):r}e.s(["withWorkspaceMember",0,i,"withWorkspaceOwner",0,o])},740580,469187,e=>{"use strict";var t=e.i(776227);e.i(700598);var a=e.i(888247),r=e.i(704024);function s(e){if(!e)return!1;let t=new Date(e.includes("T")||e.includes("Z")||e.includes("+")?e:e+"Z").getTime();return!isNaN(t)&&Date.now()-t<r.OFFLINE_THRESHOLD_MS}e.s(["isOnline",0,s],469187),e.s(["agentLinkToResponse",0,function(e){return{id:e.id,workspace_id:e.workspaceId,source_agent_id:e.sourceAgentId,target_agent_id:e.targetAgentId,instruction:e.instruction,created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}},"agentToResponse",0,function(e){let a=e.runtimeConfig;return a||(a={}),{id:e.id,workspace_id:e.workspaceId,runtime_id:e.runtimeId||"",name:e.name,description:e.description,instructions:e.instructions,runtime_mode:e.runtimeMode,runtime_config:a,status:e.status,max_concurrent_tasks:e.maxConcurrentTasks,email_handle:e.emailHandle||null,avatar_url:e.avatarUrl??null,visibility:e.visibility??"private",owner_id:e.ownerId??null,created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}},"calendarEventToResponse",0,function(e){let a=(0,t.formatTimestamp)(e.scheduledAt),r=e.occurrenceAt?(0,t.formatTimestamp)(e.occurrenceAt):a;return{id:e.id,agent_id:e.agentId,workspace_id:e.workspaceId,title:e.title,description:e.description??null,scheduled_at:a,occurrence_at:r,collapsed_count:e.collapsedCount??null,repeat_interval:e.repeatInterval??null,repeat_stop_at:(0,t.formatTimestampNullable)(e.repeatStopAt),last_triggered_at:(0,t.formatTimestampNullable)(e.lastTriggeredAt),created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}},"channelToResponse",0,function(e){return{id:e.id,workspace_id:e.workspaceId,name:e.name,created_at:(0,t.formatTimestamp)(e.createdAt)}},"conversationToResponse",0,function(e){let a={id:e.id,agent_id:e.agentId,title:e.title,type:e.type??r.TASK_TYPES.USER_DM_MESSAGE,channel:e.channel??"default",created_at:(0,t.formatTimestamp)(e.createdAt)};return void 0!==e.messageCount&&(a.message_count=e.messageCount),a},"emailToResponse",0,function(e){return{id:e.id,agent_id:e.agentId,from_email:e.fromEmail,to_email:e.toEmail,subject:e.subject,r2_key:e.r2Key,is_whitelisted:!!e.isWhitelisted,forwarded:!!e.forwarded,message_id:e.messageId??"",in_reply_to:e.inReplyTo??"",references:e.references??"",html_body:e.htmlBody??"",attachments:JSON.parse(e.attachments||"[]"),status:e.status??"unread",direction:e.direction??"inbound",created_at:(0,t.formatTimestamp)(e.createdAt)}},"inviteToResponse",0,function(e){return{id:e.id,token:e.token,created_by:e.createdBy,used_by:e.usedBy,expires_at:(0,t.formatTimestamp)(e.expiresAt),created_at:(0,t.formatTimestamp)(e.createdAt)}},"issueToResponse",0,function(e){return{id:e.id,workspace_id:e.workspaceId,agent_id:e.agentId,creator_user_id:e.creatorUserId,conversation_id:e.conversationId,latest_task_id:e.latestTaskId??null,title:e.title,description:e.description??"",status:e.status,created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt),completed_at:(0,t.formatTimestampNullable)(e.completedAt)}},"machineTokenToResponse",0,function(e){return{id:e.id,name:e.name,last_used_at:(0,t.formatTimestampNullable)(e.lastUsedAt),created_at:(0,t.formatTimestamp)(e.createdAt)}},"meetingToResponse",0,function(e){return{id:e.id,agent_id:e.agentId,workspace_id:e.workspaceId,title:e.title,meeting_url:e.meetingUrl,status:e.status,from_email:e.fromEmail??null,is_whitelisted:!!e.isWhitelisted,participants:e.participants??[],scheduled_at:(0,t.formatTimestampNullable)(e.scheduledAt),started_at:(0,t.formatTimestampNullable)(e.startedAt),completed_at:(0,t.formatTimestampNullable)(e.completedAt),transcript_r2_key:e.transcriptR2Key??null,summary:e.summary??null,error:e.error??null,worker_session_id:e.workerSessionId??null,created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}},"memberToResponse",0,function(e){return{id:e.id,user_id:e.userId,role:e.role,name:e.userName,email:e.userEmail,image:e.userImage,created_at:(0,t.formatTimestamp)(e.createdAt)}},"messageToResponse",0,function(e){let a={id:e.id,conversation_id:e.conversationId,role:e.role,content:e.content,task_id:e.taskId||null,attachment_ids:e.attachmentIds?JSON.parse(e.attachmentIds):null,metadata:e.metadata?JSON.parse(e.metadata):null,created_at:(0,t.formatTimestamp)(e.createdAt)};return e.status&&"active"!==e.status&&(a.status=e.status),a},"runtimeToResponse",0,function(e){let a=e.metadata;a||(a={});let r=e.machineLastSeenAt??null,n=r instanceof Date?r.toISOString():r;return{id:e.id,workspace_id:e.workspaceId,daemon_id:e.daemonId||null,runtime_mode:e.runtimeMode,provider:e.provider,status:s(n)?"online":"offline",device_info:e.deviceInfo,metadata:a,pending_update_version:e.pendingUpdateVersion??null,pending_rescan:!!e.pendingRescan,last_seen_at:(0,t.formatTimestampNullable)(r),created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}},"taskMessageToResponse",0,function(e){let t={id:e.id,task_id:e.taskId,seq:e.seq,type:e.type,tool:e.tool,call_id:e.callId||"",content:e.content,output:e.output};return e.input&&(t.input=e.input),t},"taskToActivityResponse",0,function(e){let a=e.prompt.length>120?e.prompt.slice(0,120):e.prompt;return{id:e.id,conversation_id:e.conversationId,type:e.type??r.TASK_TYPES.USER_DM_MESSAGE,status:e.status,prompt:a,created_at:(0,t.formatTimestamp)(e.createdAt),started_at:(0,t.formatTimestampNullable)(e.startedAt),completed_at:(0,t.formatTimestampNullable)(e.completedAt),error:e.error||null}},"taskToResponse",0,function(e){return a.TaskApiBaseSchema.parse({id:e.id,agent_id:e.agentId,runtime_id:e.runtimeId,conversation_id:e.conversationId,workspace_id:e.workspaceId,prompt:e.prompt,type:e.type??r.TASK_TYPES.USER_DM_MESSAGE,context_key:e.contextKey??null,context:e.context??null,status:e.status,priority:e.priority,dispatched_at:(0,t.formatTimestampNullable)(e.dispatchedAt),started_at:(0,t.formatTimestampNullable)(e.startedAt),completed_at:(0,t.formatTimestampNullable)(e.completedAt),result:e.result??null,error:e.error||null,created_at:(0,t.formatTimestamp)(e.createdAt),trace_id:e.traceId??null,parent_task_id:e.parentTaskId??null})},"userToResponse",0,function(e){return{id:e.id,name:e.name,email:e.email,avatar_url:e.avatarUrl??null,created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}},"workspaceToResponse",0,function(e){return{id:e.id,name:e.name,slug:e.slug,created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}}],740580)},726089,e=>{"use strict";var t=e.i(194218);e.i(700598);var a=e.i(704024);let r=(0,e.i(726527).createLogger)({service:"broadcast"});async function s(e,s,n){let i;try{let{env:a}=(0,t.getCloudflareContext)();if(i=a.DEV_WS_DO_URL,(await a.WS_DO_WORKER.fetch(`http://internal${e}`,{method:"POST",body:s})).ok)return}catch{}let o=i||a.DEV_WS_DO_URL;try{let t=await fetch(`${o}${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:s});t.ok||r.warn("broadcast failed",{...n,status:t.status})}catch(e){r.warn("broadcast error",{...n,err:String(e)})}}async function n(e,t){await s(`/broadcast/user/${e}`,JSON.stringify(t),{userId:e,type:t.type})}e.s(["broadcastToUser",0,n])},799579,e=>{"use strict";e.i(700598);let t=(0,e.i(726527).createLogger)({service:"web",level:process.env.ALOOK_LOG_LEVEL||"info",pretty:!1});e.s(["log",0,t])},205054,e=>{"use strict";e.i(700598);var t=e.i(291109),a=e.i(704024),r=e.i(799579),s=e.i(726089),n=e.i(740580);let i=t.queries.task,o=t.queries.agent,d=t.queries.message,l=t.queries.conversation,c=t.queries.issue;e.s(["TaskService",0,class{db;constructor(e){this.db=e}async enqueueTask(e,t,r,s,n=a.TASK_TYPES.USER_DM_MESSAGE,d){let l=await o.getAgent(this.db,e,r);if(!l)throw Error("agent not found");if(!l.runtimeId)throw Error("agent has no runtime");if(d?.traceId&&d.parentTaskId&&await i.countTasksByTrace(this.db,d.traceId)>=a.MAX_TASKS_PER_TRACE)throw Error(`Trace limit reached (${a.MAX_TASKS_PER_TRACE} tasks). This may indicate an infinite loop between agents.`);return i.createTask(this.db,{agentId:e,runtimeId:l.runtimeId,workspaceId:r,conversationId:t,prompt:s,type:n,contextKey:d?.contextKey??null,priority:0,context:d?.context,traceId:d?.traceId??null,parentTaskId:d?.parentTaskId??null})}async claimTask(e,t){let a=await o.getAgent(this.db,e,t);if(!a)return null;if(await i.countRunningTasks(this.db,e,t)>=a.maxConcurrentTasks){let r=await i.findSteerableReplacement(this.db,e,t);if(!r||await i.countRunningTasks(this.db,e,t,r.predecessorId)>=a.maxConcurrentTasks)return null}let r=await i.claimTask(this.db,e,t);return r?(await o.updateAgentStatus(this.db,e,t,"working"),r):null}async claimTasksForRuntimes(e,t,a){let r=await i.claimKillTasks(this.db,e,a,t),s=t-r.length,n=s>0?await i.listPendingTasksByRuntimes(this.db,e,a):[],o=new Set(e),d=new Set,l=[...r];for(let e of n){if(s<=0)break;let t=`${e.agentId}:${e.workspaceId}`;if(d.has(t))continue;d.add(t);let a=await this.claimTask(e.agentId,e.workspaceId);a&&o.has(a.runtimeId)&&(l.push(a),s--)}return l}async startTask(e,t){let a=await i.startTask(this.db,e,t);if(!a)throw Error("task not in dispatched status");return a}async completeTask(e,t,a,s){let n;try{n=JSON.parse(a)}catch{n={raw:a}}let o=await i.completeTask(this.db,e,t,{result:n,sessionId:s||null});if(!o){let t=await i.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`)}let l=n,c="string"==typeof l?.output?l.output:"";return c&&await d.createMessage(this.db,{conversationId:o.conversationId,role:"assistant",content:c,taskId:e}),await this.reconcileAgentStatus(o.agentId,o.workspaceId),await this.dispatchNextBufferedMessage(o.conversationId,o.workspaceId),o}async failTask(e,t,s){let n=await i.failTask(this.db,e,t,s);if(!n){let t=await i.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`)}return n.type===a.TASK_TYPES.KILL_TASK||(s&&await d.createMessage(this.db,{conversationId:n.conversationId,role:"assistant",content:`Error: ${s}`,taskId:e}),await this.reconcileAgentStatus(n.agentId,n.workspaceId),await this.syncIssueStatusFromTask(n,"failed"),await this.dispatchNextBufferedMessage(n.conversationId,n.workspaceId)),n}async syncIssueStatusFromTask(e,t){if(e.type!==a.TASK_TYPES.ISSUE_EVENT)return;let r=await c.getIssueByConversation(this.db,e.conversationId,e.workspaceId);!r||r.status===t||await c.updateIssue(this.db,r.id,e.workspaceId,{status:t})&&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})})}async supersedeTask(e,t){let a=await i.supersedeTask(this.db,e,t);if(!a){let t=await i.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),await this.dispatchNextBufferedMessage(a.conversationId,a.workspaceId),a}async retryTask(e,t){let a=await i.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 i.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,t,r){let s=await i.getActiveTaskByConversation(this.db,e,t);if(!s)return null;let n=await i.cancelTask(this.db,s.id,t);return n?(("dispatched"===s.status||"running"===s.status)&&await i.createTask(this.db,{agentId:s.agentId,runtimeId:s.runtimeId,workspaceId:t,conversationId:e,prompt:"",type:a.TASK_TYPES.KILL_TASK,context:{target_task_id:s.id}}),await d.createMessage(this.db,{conversationId:e,role:"assistant",content:r?.reason??"Task cancelled by user",taskId:s.id}),await this.reconcileAgentStatus(s.agentId,t),r?.skipDispatch||await this.dispatchNextBufferedMessage(e,t),n):null}async reconcileAgentStatus(e,t){let a=await i.countRunningTasks(this.db,e,t);await o.updateAgentStatus(this.db,e,t,a>0?"working":"idle")}async dispatchNextBufferedMessage(e,t){let o=await d.activateNextBufferedMessage(this.db,e);if(!o)return null;let c=await l.getConversation(this.db,e,t);if(!c)return r.log.warn("dispatchNextBufferedMessage: conversation not found",{conversationId:e}),await d.revertToBuffered(this.db,o.id).catch(e=>{r.log.error("dispatchNextBufferedMessage: failed to revert message status",{messageId:o.id,revertErr:e})}),null;let u=c.userId;try{let r=o.attachmentIds?JSON.parse(o.attachmentIds):[],l=await i.getLatestTaskForConversation(this.db,e),p=l?.traceId??null,m=await this.enqueueTask(c.agentId,e,t,o.content,a.TASK_TYPES.USER_DM_MESSAGE,{contextKey:e,context:r.length>0?{attachment_ids:r}:void 0,traceId:p,parentTaskId:null});return await d.updateMessageTaskId(this.db,o.id,m.id),(0,s.broadcastToUser)(u,{type:"followup.dispatched",conversationId:e,message:(0,n.messageToResponse)(o),task:(0,n.taskToResponse)(m)}).catch(()=>{}),m}catch(t){return r.log.warn("dispatchNextBufferedMessage: enqueueTask failed",{conversationId:e,err:t}),await d.revertToBuffered(this.db,o.id).catch(e=>{r.log.error("dispatchNextBufferedMessage: failed to revert message status",{messageId:o.id,revertErr:e})}),(0,s.broadcastToUser)(u,{type:"followup.dispatch_failed",conversationId:e,messageId:o.id,error:t instanceof Error?t.message:"Failed to dispatch follow-up"}).catch(()=>{}),null}}async cancelTrace(e,t,a){for(let s of[...new Set((await i.getTraceTree(this.db,e,t)).filter(e=>["queued","dispatched","running"].includes(e.status)).map(e=>e.conversationId))])try{await this.cancelActiveTask(s,t,{skipDispatch:!0,reason:a?.reason})}catch(t){r.log.warn("cancelTrace: failed to cancel task",{traceId:e,convId:s,err:t})}}}])},897069,e=>{"use strict";var t=e.i(424166);e.s(["parsePromptMentions",0,function(e,a){if(!e||0===a.length)return{enrichedPrompt:e,mentions:[]};let r=a.slice().sort((e,t)=>t.name.length-e.name.length),s=[],n=[];for(let t=0;t<e.length;t++){if("@"!==e[t]||!function(e,t){if(0===t)return!0;let a=e.charCodeAt(t-1);return(!(a>=48)||!(a<=57))&&(!(a>=65)||!(a<=90))&&(!(a>=97)||!(a<=122))&&95!==a}(e,t))continue;let a=t+1;for(let s of r){let r=a+s.name.length;if(!(r>e.length)&&e.slice(a,r).toLowerCase()===s.name.toLowerCase()&&function(e,t){if(t>=e.length)return!0;let a=e.charCodeAt(t);return(!(a>=48)||!(a<=57))&&(!(a>=65)||!(a<=90))&&(!(a>=97)||!(a<=122))&&95!==a}(e,r)){if(n.some(e=>t>=e.start&&t<e.end))break;n.push({start:t,end:r,agent:s});break}}}let i=e;for(let e=n.length-1;e>=0;e--){let a=n[e],r={name:a.agent.name,email:a.agent.emailHandle?(0,t.toAlookAddress)(a.agent.emailHandle):null,description:a.agent.description};if(s.unshift(r),a.agent.emailHandle){let e=`@${a.agent.name} (${(0,t.toAlookAddress)(a.agent.emailHandle)})`;i=i.slice(0,a.start)+e+i.slice(a.end)}else i=i.slice(0,a.start)+`@${a.agent.name}`+i.slice(a.end)}return{enrichedPrompt:i,mentions:s}}])},517479,e=>{"use strict";var t=e.i(80774),a=e.i(404478),r=e.i(732985),s=e.i(481671),n=e.i(638081),i=e.i(204960),o=e.i(924918),d=e.i(363585),l=e.i(906846),c=e.i(359838),u=e.i(383303),p=e.i(234173),m=e.i(270215),f=e.i(830665),h=e.i(944002),g=e.i(193695);e.i(195928);var w=e.i(81543),_=e.i(194218);e.i(700598);var T=e.i(291109),k=e.i(888247),v=e.i(897069),I=e.i(675139),y=e.i(719436),b=e.i(152327),A=e.i(47962),R=e.i(776227),E=e.i(740580),S=e.i(726089),x=e.i(205054);let N=(0,b.withAuth)(async(e,t)=>{let a=await (0,A.withWorkspaceMember)(e,t);if(a instanceof Response)return a;let{env:r}=(0,_.getCloudflareContext)(),s=(0,I.getDb)(r.DB),n=t.params?.id;if(!n)return(0,R.writeError)("conversation id is required",400);if(!await T.queries.conversation.getConversation(s,n,a.workspaceId))return(0,R.writeError)("conversation not found",404);let i=await T.queries.message.listBufferedMessages(s,n);return(0,R.writeJSON)(i.map(E.messageToResponse))}),C=(0,b.withAuth)(async(e,t)=>{let a,r=await (0,A.withWorkspaceMember)(e,t);if(r instanceof Response)return r;let{env:s}=(0,_.getCloudflareContext)(),n=(0,I.getDb)(s.DB),i=s.EMAIL_BUCKET,o=t.params?.id;if(!o)return(0,R.writeError)("conversation id is required",400);let d=await T.queries.conversation.getConversation(n,o,r.workspaceId);if(!d)return(0,R.writeError)("conversation not found",404);if(await T.queries.message.countBufferedMessages(n,o)>=20)return(0,R.writeError)("maximum 20 buffered messages reached",429);let l=(e.headers.get("content-type")??"").includes("multipart/form-data"),c=[];if(l){let t;try{t=await e.formData()}catch{return(0,R.writeError)("invalid form data",400)}for(let[e,r]of(a=(t.get("content")??"").trim(),t.entries()))"file"===e&&r instanceof File&&c.push(r);if(!a)return(0,R.writeError)("content is required",400)}else{let[t,r]=await (0,R.parseBody)(e,k.CreateBufferedMessageRequestSchema);if(r)return r;a=t.content}if(c.length>10)return(0,R.writeError)("too many files (max 10)",400);for(let e of c)if(e.size>0xa00000)return(0,R.writeError)(`file "${e.name}" exceeds 10 MB limit`,413);let u=[];for(let e of c){let t=e.name.replace(/[/\\]/g,"_").replace(/\.\./g,"_").slice(0,255)||"file",a=e.type||"application/octet-stream",s="art_"+(0,y.nanoid)(),l=`artifacts/${r.workspaceId}/${d.agentId}/${o}/${s}/${t}`;await i.put(l,await e.arrayBuffer(),{httpMetadata:{contentType:a}}),await T.queries.artifact.createArtifact(n,{id:s,conversationId:o,agentId:d.agentId,workspaceId:r.workspaceId,filename:t,contentType:a,size:e.size,r2Key:l,source:"attachment"}),u.push(s)}let p=a;if(a.includes("@"))try{let e=await T.queries.agent.listAgents(n,r.workspaceId,t.userId),{enrichedPrompt:s}=(0,v.parsePromptMentions)(a,e);p=s}catch{}let m=await T.queries.message.createBufferedMessage(n,{conversationId:o,content:p,attachmentIds:u.length>0?JSON.stringify(u):null});return(0,S.broadcastToUser)(t.userId,{type:"followup.created",conversationId:o,message:(0,E.messageToResponse)(m)}).catch(()=>{}),await T.queries.task.getActiveTaskByConversation(n,o,r.workspaceId)||new x.TaskService(n).dispatchNextBufferedMessage(o,r.workspaceId).catch(()=>{}),(0,R.writeJSON)({message:(0,E.messageToResponse)(m)},201)}),M=(0,b.withAuth)(async(e,t)=>{let a=await (0,A.withWorkspaceMember)(e,t);if(a instanceof Response)return a;let{env:r}=(0,_.getCloudflareContext)(),s=(0,I.getDb)(r.DB),n=t.params?.id;if(!n)return(0,R.writeError)("conversation id is required",400);if(!await T.queries.conversation.getConversation(s,n,a.workspaceId))return(0,R.writeError)("conversation not found",404);for(let e of(await T.queries.message.deleteAllBufferedMessages(s,n)))(0,S.broadcastToUser)(t.userId,{type:"followup.deleted",conversationId:n,messageId:e.id}).catch(()=>{});return new Response(null,{status:204})});e.s(["DELETE",0,M,"GET",0,N,"POST",0,C],400368);var q=e.i(400368);let O=new t.AppRouteRouteModule({definition:{kind:a.RouteKind.APP_ROUTE,page:"/api/conversations/[id]/buffered-messages/route",pathname:"/api/conversations/[id]/buffered-messages",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/web/src/app/api/conversations/[id]/buffered-messages/route.ts",nextConfigOutput:"standalone",userland:q,...{}}),{workAsyncStorage:P,workUnitAsyncStorage:B,serverHooks:D}=O;async function U(e,t,r){r.requestMeta&&(0,s.setRequestMeta)(e,r.requestMeta),O.isDev&&(0,s.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let _="/api/conversations/[id]/buffered-messages/route";_=_.replace(/\/index$/,"")||"/";let T=await O.prepare(e,t,{srcPage:_,multiZoneDraftMode:!1});if(!T)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:k,deploymentId:v,params:I,nextConfig:y,parsedUrl:b,isDraftMode:A,prerenderManifest:R,routerServerContext:E,isOnDemandRevalidate:S,revalidateOnlyGenerated:x,resolvedPathname:N,clientReferenceManifest:C,serverActionsManifest:M}=T,q=(0,o.normalizeAppPath)(_),P=!!(R.dynamicRoutes[q]||R.routes[N]),B=async()=>((null==E?void 0:E.render404)?await E.render404(e,t,b,!1):t.end("This page could not be found"),null);if(P&&!A){let e=!!R.routes[N],t=R.dynamicRoutes[q];if(t&&!1===t.fallback&&!e){if(y.adapterPath)return await B();throw new g.NoFallbackError}}let D=null;!P||O.isDev||A||(D="/index"===(D=N)?"/":D);let U=!0===O.isDev||!P,$=P&&!U;M&&C&&(0,i.setManifestsSingleton)({page:_,clientReferenceManifest:C,serverActionsManifest:M});let K=e.method||"GET",j=(0,n.getTracer)(),L=j.getActiveScopeSpan(),H=!!(null==E?void 0:E.isWrappedByNextServer),F=!!(0,s.getRequestMeta)(e,"minimalMode"),W=(0,s.getRequestMeta)(e,"incrementalCache")||await O.getIncrementalCache(e,y,R,F);null==W||W.resetRequestCache(),globalThis.__incrementalCache=W;let J={params:I,previewProps:R.preview,renderOpts:{experimental:{authInterrupts:!!y.experimental.authInterrupts},cacheComponents:!!y.cacheComponents,supportsDynamicResponse:U,incrementalCache:W,cacheLifeProfiles:y.cacheLife,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,r,s)=>O.onRequestError(e,t,r,s,E)},sharedContext:{buildId:k,deploymentId:v}},G=new d.NodeNextRequest(e),Y=new d.NodeNextResponse(t),V=l.NextRequestAdapter.fromNodeNextRequest(G,(0,l.signalFromNodeResponse)(t));try{let s,i=async e=>O.handle(V,J).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=j.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==c.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let r=a.get("next.route");if(r){let t=`${K} ${r}`;e.setAttributes({"next.route":r,"http.route":r,"next.span_name":t}),e.updateName(t),s&&s!==e&&(s.setAttribute("http.route",r),s.updateName(t))}else e.updateName(`${K} ${_}`)}),o=async s=>{var n,o;let d=async({previousCacheEntry:a})=>{try{if(!F&&S&&x&&!a)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let n=await i(s);e.fetchMetrics=J.renderOpts.fetchMetrics;let o=J.renderOpts.pendingWaitUntil;o&&r.waitUntil&&(r.waitUntil(o),o=void 0);let d=J.renderOpts.collectedTags;if(!P)return await (0,p.sendResponse)(G,Y,n,J.renderOpts.pendingWaitUntil),null;{let e=await n.blob(),t=(0,m.toNodeOutgoingHttpHeaders)(n.headers);d&&(t[h.NEXT_CACHE_TAGS_HEADER]=d),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==J.renderOpts.collectedRevalidate&&!(J.renderOpts.collectedRevalidate>=h.INFINITE_CACHE)&&J.renderOpts.collectedRevalidate,r=void 0===J.renderOpts.collectedExpire||J.renderOpts.collectedExpire>=h.INFINITE_CACHE?void 0:J.renderOpts.collectedExpire;return{value:{kind:w.CachedRouteKind.APP_ROUTE,status:n.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:r}}}}catch(t){throw(null==a?void 0:a.isStale)&&await O.onRequestError(e,t,{routerKind:"App Router",routePath:_,routeType:"route",revalidateReason:(0,u.getRevalidateReason)({isStaticGeneration:$,isOnDemandRevalidate:S})},!1,E),t}},l=await O.handleResponse({req:e,nextConfig:y,cacheKey:D,routeKind:a.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:R,isRoutePPREnabled:!1,isOnDemandRevalidate:S,revalidateOnlyGenerated:x,responseGenerator:d,waitUntil:r.waitUntil,isMinimalMode:F});if(!P)return null;if((null==l||null==(n=l.value)?void 0:n.kind)!==w.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==l||null==(o=l.value)?void 0:o.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});F||t.setHeader("x-nextjs-cache",S?"REVALIDATED":l.isMiss?"MISS":l.isStale?"STALE":"HIT"),A&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let c=(0,m.fromNodeOutgoingHttpHeaders)(l.value.headers);return F&&P||c.delete(h.NEXT_CACHE_TAGS_HEADER),!l.cacheControl||t.getHeader("Cache-Control")||c.get("Cache-Control")||c.set("Cache-Control",(0,f.getCacheControlHeader)(l.cacheControl)),await (0,p.sendResponse)(G,Y,new Response(l.value.body,{headers:c,status:l.value.status||200})),null};H&&L?await o(L):(s=j.getActiveScopeSpan(),await j.withPropagatedContext(e.headers,()=>j.trace(c.BaseServerSpan.handleRequest,{spanName:`${K} ${_}`,kind:n.SpanKind.SERVER,attributes:{"http.method":K,"http.target":e.url}},o),void 0,!H))}catch(t){if(t instanceof g.NoFallbackError||await O.onRequestError(e,t,{routerKind:"App Router",routePath:q,routeType:"route",revalidateReason:(0,u.getRevalidateReason)({isStaticGeneration:$,isOnDemandRevalidate:S})},!1,E),P)throw t;return await (0,p.sendResponse)(G,Y,new Response(null,{status:500})),null}}e.s(["handler",0,U,"patchFetch",0,function(){return(0,r.patchFetch)({workAsyncStorage:P,workUnitAsyncStorage:B})},"routeModule",0,O,"serverHooks",0,D,"workAsyncStorage",0,P,"workUnitAsyncStorage",0,B],517479)},967183,e=>{e.v(t=>Promise.all(["server/chunks/0ej8_@better-auth_memory-adapter_dist_index_mjs_10c.8b8._.js"].map(t=>e.l(t))).then(()=>t(205102)))},632019,e=>{e.v(t=>Promise.all(["server/chunks/0cd0_better-auth_dist_adapters_kysely-adapter_index_mjs_0v4jkxi._.js"].map(t=>e.l(t))).then(()=>t(836110)))},246358,e=>{e.v(e=>Promise.resolve().then(()=>e(357762)))},292677,e=>{e.v(t=>Promise.all(["server/chunks/0m4__@better-auth_kysely-adapter_dist_bun-sqlite-dialect-na--YwnN_mjs_0j55.z1._.js"].map(t=>e.l(t))).then(()=>t(52033)))},289217,e=>{e.v(t=>Promise.all(["server/chunks/0m4__@better-auth_kysely-adapter_dist_node-sqlite-dialect_mjs_0wxfd_8._.js"].map(t=>e.l(t))).then(()=>t(670514)))},316246,e=>{e.v(t=>Promise.all(["server/chunks/0m4__@better-auth_kysely-adapter_dist_d1-sqlite-dialect-C2B7YsIT_mjs_0unjrn9._.js"].map(t=>e.l(t))).then(()=>t(917123)))}];
1
+ module.exports=[776227,e=>{"use strict";var t=e.i(463421);function a(e,a){return t.NextResponse.json({error:e},{status:a})}async function r(e,r){let s;try{s=await e.json()}catch{return[null,a("invalid request body",400)]}try{return[r.parse(s),null]}catch(a){let e=(a.issues??a.errors??[]).map(e=>`${e.path.join(".")}: ${e.message}`);return[null,t.NextResponse.json({error:"validation error",details:e},{status:400})]}}e.s(["formatTimestamp",0,function(e){return e?("string"==typeof e?new Date(e):e).toISOString().replace(/\.\d{3}Z$/,"Z"):""},"formatTimestampNullable",0,function(e){return e?("string"==typeof e?new Date(e):e).toISOString().replace(/\.\d{3}Z$/,"Z"):null},"parseBody",0,r,"writeError",0,a,"writeJSON",0,function(e,a=200){return t.NextResponse.json(e,{status:a})}])},47962,e=>{"use strict";var t=e.i(463421),a=e.i(194218);e.i(700598);var r=e.i(291109),s=e.i(675139),n=e.i(774078);async function i(e,i){let o=e.nextUrl.searchParams.get("workspace_id")||e.headers.get("X-Workspace-ID")||i.workspaceId;if(!o)return t.NextResponse.json({error:"workspace_id is required"},{status:400});if(!i.userId)return t.NextResponse.json({error:"user not authenticated"},{status:401});let{env:d}=await (0,a.getCloudflareContext)({async:!0}),l=(0,s.getDb)(d.DB),c=await (0,n.cached)(n.cacheKeys.member(o,i.userId),1800,()=>r.queries.member.getMemberByUserAndWorkspace(l,i.userId,o));return c||i.workspaceId!==o?c?{workspaceId:o,memberRole:c.role}:t.NextResponse.json({error:"workspace not found"},{status:404}):{workspaceId:o,memberRole:"member"}}async function o(e,a){let r=await i(e,a);return r instanceof t.NextResponse?r:"owner"!==r.memberRole?t.NextResponse.json({error:"owner access required"},{status:403}):r}e.s(["withWorkspaceMember",0,i,"withWorkspaceOwner",0,o])},740580,469187,e=>{"use strict";var t=e.i(776227);e.i(700598);var a=e.i(888247),r=e.i(704024);function s(e){if(!e)return!1;let t=new Date(e.includes("T")||e.includes("Z")||e.includes("+")?e:e+"Z").getTime();return!isNaN(t)&&Date.now()-t<r.OFFLINE_THRESHOLD_MS}e.s(["isOnline",0,s],469187),e.s(["agentLinkToResponse",0,function(e){return{id:e.id,workspace_id:e.workspaceId,source_agent_id:e.sourceAgentId,target_agent_id:e.targetAgentId,instruction:e.instruction,created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}},"agentToResponse",0,function(e){let a=e.runtimeConfig;return a||(a={}),{id:e.id,workspace_id:e.workspaceId,runtime_id:e.runtimeId||"",name:e.name,description:e.description,instructions:e.instructions,runtime_mode:e.runtimeMode,runtime_config:a,status:e.status,max_concurrent_tasks:e.maxConcurrentTasks,email_handle:e.emailHandle||null,avatar_url:e.avatarUrl??null,visibility:e.visibility??"private",owner_id:e.ownerId??null,created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}},"calendarEventToResponse",0,function(e){let a=(0,t.formatTimestamp)(e.scheduledAt),r=e.occurrenceAt?(0,t.formatTimestamp)(e.occurrenceAt):a;return{id:e.id,agent_id:e.agentId,workspace_id:e.workspaceId,title:e.title,description:e.description??null,scheduled_at:a,occurrence_at:r,collapsed_count:e.collapsedCount??null,repeat_interval:e.repeatInterval??null,repeat_stop_at:(0,t.formatTimestampNullable)(e.repeatStopAt),last_triggered_at:(0,t.formatTimestampNullable)(e.lastTriggeredAt),created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}},"channelToResponse",0,function(e){return{id:e.id,workspace_id:e.workspaceId,name:e.name,created_at:(0,t.formatTimestamp)(e.createdAt)}},"conversationToResponse",0,function(e){let a={id:e.id,agent_id:e.agentId,title:e.title,type:e.type??r.TASK_TYPES.USER_DM_MESSAGE,channel:e.channel??"default",created_at:(0,t.formatTimestamp)(e.createdAt)};return void 0!==e.messageCount&&(a.message_count=e.messageCount),a},"emailToResponse",0,function(e){return{id:e.id,agent_id:e.agentId,from_email:e.fromEmail,to_email:e.toEmail,subject:e.subject,r2_key:e.r2Key,is_whitelisted:!!e.isWhitelisted,forwarded:!!e.forwarded,message_id:e.messageId??"",in_reply_to:e.inReplyTo??"",references:e.references??"",html_body:e.htmlBody??"",attachments:JSON.parse(e.attachments||"[]"),status:e.status??"unread",direction:e.direction??"inbound",created_at:(0,t.formatTimestamp)(e.createdAt)}},"inviteToResponse",0,function(e){return{id:e.id,token:e.token,created_by:e.createdBy,used_by:e.usedBy,expires_at:(0,t.formatTimestamp)(e.expiresAt),created_at:(0,t.formatTimestamp)(e.createdAt)}},"issueToResponse",0,function(e){return{id:e.id,workspace_id:e.workspaceId,agent_id:e.agentId,creator_user_id:e.creatorUserId,conversation_id:e.conversationId,latest_task_id:e.latestTaskId??null,title:e.title,description:e.description??"",status:e.status,created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt),completed_at:(0,t.formatTimestampNullable)(e.completedAt)}},"machineTokenToResponse",0,function(e){return{id:e.id,name:e.name,last_used_at:(0,t.formatTimestampNullable)(e.lastUsedAt),created_at:(0,t.formatTimestamp)(e.createdAt)}},"meetingToResponse",0,function(e){return{id:e.id,agent_id:e.agentId,workspace_id:e.workspaceId,title:e.title,meeting_url:e.meetingUrl,status:e.status,from_email:e.fromEmail??null,is_whitelisted:!!e.isWhitelisted,participants:e.participants??[],scheduled_at:(0,t.formatTimestampNullable)(e.scheduledAt),started_at:(0,t.formatTimestampNullable)(e.startedAt),completed_at:(0,t.formatTimestampNullable)(e.completedAt),transcript_r2_key:e.transcriptR2Key??null,summary:e.summary??null,error:e.error??null,worker_session_id:e.workerSessionId??null,created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}},"memberToResponse",0,function(e){return{id:e.id,user_id:e.userId,role:e.role,name:e.userName,email:e.userEmail,image:e.userImage,created_at:(0,t.formatTimestamp)(e.createdAt)}},"messageToResponse",0,function(e){let a={id:e.id,conversation_id:e.conversationId,role:e.role,content:e.content,task_id:e.taskId||null,attachment_ids:e.attachmentIds?JSON.parse(e.attachmentIds):null,metadata:e.metadata?JSON.parse(e.metadata):null,created_at:(0,t.formatTimestamp)(e.createdAt)};return e.status&&"active"!==e.status&&(a.status=e.status),a},"runtimeToResponse",0,function(e){let a=e.metadata;a||(a={});let r=e.machineLastSeenAt??null,n=r instanceof Date?r.toISOString():r;return{id:e.id,workspace_id:e.workspaceId,daemon_id:e.daemonId||null,runtime_mode:e.runtimeMode,provider:e.provider,status:s(n)?"online":"offline",device_info:e.deviceInfo,metadata:a,pending_update_version:e.pendingUpdateVersion??null,pending_rescan:!!e.pendingRescan,last_seen_at:(0,t.formatTimestampNullable)(r),created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}},"taskMessageToResponse",0,function(e){let t={id:e.id,task_id:e.taskId,seq:e.seq,type:e.type,tool:e.tool,call_id:e.callId||"",content:e.content,output:e.output};return e.input&&(t.input=e.input),t},"taskToActivityResponse",0,function(e){let a=e.prompt.length>120?e.prompt.slice(0,120):e.prompt;return{id:e.id,conversation_id:e.conversationId,type:e.type??r.TASK_TYPES.USER_DM_MESSAGE,status:e.status,prompt:a,created_at:(0,t.formatTimestamp)(e.createdAt),started_at:(0,t.formatTimestampNullable)(e.startedAt),completed_at:(0,t.formatTimestampNullable)(e.completedAt),error:e.error||null}},"taskToResponse",0,function(e){return a.TaskApiBaseSchema.parse({id:e.id,agent_id:e.agentId,runtime_id:e.runtimeId,conversation_id:e.conversationId,workspace_id:e.workspaceId,prompt:e.prompt,type:e.type??r.TASK_TYPES.USER_DM_MESSAGE,context_key:e.contextKey??null,context:e.context??null,status:e.status,priority:e.priority,dispatched_at:(0,t.formatTimestampNullable)(e.dispatchedAt),started_at:(0,t.formatTimestampNullable)(e.startedAt),completed_at:(0,t.formatTimestampNullable)(e.completedAt),result:e.result??null,error:e.error||null,created_at:(0,t.formatTimestamp)(e.createdAt),trace_id:e.traceId??null,parent_task_id:e.parentTaskId??null})},"userToResponse",0,function(e){return{id:e.id,name:e.name,email:e.email,avatar_url:e.avatarUrl??null,created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}},"workspaceToResponse",0,function(e){return{id:e.id,name:e.name,slug:e.slug,created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}}],740580)},726089,e=>{"use strict";var t=e.i(194218);e.i(700598);var a=e.i(704024);let r=(0,e.i(726527).createLogger)({service:"broadcast"});async function s(e,s,n){let i;try{let{env:a}=(0,t.getCloudflareContext)();if(i=a.DEV_WS_DO_URL,(await a.WS_DO_WORKER.fetch(`http://internal${e}`,{method:"POST",body:s})).ok)return}catch{}let o=i||a.DEV_WS_DO_URL;try{let t=await fetch(`${o}${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:s});t.ok||r.warn("broadcast failed",{...n,status:t.status})}catch(e){r.warn("broadcast error",{...n,err:String(e)})}}e.s(["broadcastToUser",0,function(e,a){return function(e,a,r){let n=s(e,a,r);try{let{ctx:e}=(0,t.getCloudflareContext)();e.waitUntil(n)}catch{}return n}(`/broadcast/user/${e}`,JSON.stringify(a),{userId:e,type:a.type})}])},799579,e=>{"use strict";e.i(700598);let t=(0,e.i(726527).createLogger)({service:"web",level:process.env.ALOOK_LOG_LEVEL||"info",pretty:!1});e.s(["log",0,t])},205054,e=>{"use strict";e.i(700598);var t=e.i(291109),a=e.i(704024),r=e.i(799579),s=e.i(726089),n=e.i(740580);let i=t.queries.task,o=t.queries.agent,d=t.queries.message,l=t.queries.conversation,c=t.queries.issue;e.s(["TaskService",0,class{db;constructor(e){this.db=e}async enqueueTask(e,t,r,s,n=a.TASK_TYPES.USER_DM_MESSAGE,d){let l=await o.getAgent(this.db,e,r);if(!l)throw Error("agent not found");if(!l.runtimeId)throw Error("agent has no runtime");if(d?.traceId&&d.parentTaskId&&await i.countTasksByTrace(this.db,d.traceId)>=a.MAX_TASKS_PER_TRACE)throw Error(`Trace limit reached (${a.MAX_TASKS_PER_TRACE} tasks). This may indicate an infinite loop between agents.`);return i.createTask(this.db,{agentId:e,runtimeId:l.runtimeId,workspaceId:r,conversationId:t,prompt:s,type:n,contextKey:d?.contextKey??null,priority:0,context:d?.context,traceId:d?.traceId??null,parentTaskId:d?.parentTaskId??null})}async claimTask(e,t){let a=await o.getAgent(this.db,e,t);if(!a)return null;if(await i.countRunningTasks(this.db,e,t)>=a.maxConcurrentTasks){let r=await i.findSteerableReplacement(this.db,e,t);if(!r||await i.countRunningTasks(this.db,e,t,r.predecessorId)>=a.maxConcurrentTasks)return null}let r=await i.claimTask(this.db,e,t);return r?(await o.updateAgentStatus(this.db,e,t,"working"),r):null}async claimTasksForRuntimes(e,t,a){let r=await i.claimKillTasks(this.db,e,a,t),s=t-r.length,n=s>0?await i.listPendingTasksByRuntimes(this.db,e,a):[],o=new Set(e),d=new Set,l=[...r];for(let e of n){if(s<=0)break;let t=`${e.agentId}:${e.workspaceId}`;if(d.has(t))continue;d.add(t);let a=await this.claimTask(e.agentId,e.workspaceId);a&&o.has(a.runtimeId)&&(l.push(a),s--)}return l}async startTask(e,t){let a=await i.startTask(this.db,e,t);if(!a)throw Error("task not in dispatched status");return a}async completeTask(e,t,a,s){let n;try{n=JSON.parse(a)}catch{n={raw:a}}let o=await i.completeTask(this.db,e,t,{result:n,sessionId:s||null});if(!o){let t=await i.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`)}let l=n,c="string"==typeof l?.output?l.output:"";return c&&await d.createMessage(this.db,{conversationId:o.conversationId,role:"assistant",content:c,taskId:e}),await this.reconcileAgentStatus(o.agentId,o.workspaceId),await this.dispatchNextBufferedMessage(o.conversationId,o.workspaceId),o}async failTask(e,t,s){let n=await i.failTask(this.db,e,t,s);if(!n){let t=await i.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`)}return n.type===a.TASK_TYPES.KILL_TASK||(s&&await d.createMessage(this.db,{conversationId:n.conversationId,role:"assistant",content:`Error: ${s}`,taskId:e}),await this.reconcileAgentStatus(n.agentId,n.workspaceId),await this.syncIssueStatusFromTask(n,"failed"),await this.dispatchNextBufferedMessage(n.conversationId,n.workspaceId)),n}async syncIssueStatusFromTask(e,t){if(e.type!==a.TASK_TYPES.ISSUE_EVENT)return;let r=await c.getIssueByConversation(this.db,e.conversationId,e.workspaceId);!r||r.status===t||await c.updateIssue(this.db,r.id,e.workspaceId,{status:t})&&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})})}async supersedeTask(e,t){let a=await i.supersedeTask(this.db,e,t);if(!a){let t=await i.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),await this.dispatchNextBufferedMessage(a.conversationId,a.workspaceId),a}async retryTask(e,t){let a=await i.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 i.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,t,r){let s=await i.getActiveTaskByConversation(this.db,e,t);if(!s)return null;let n=await i.cancelTask(this.db,s.id,t);return n?(("dispatched"===s.status||"running"===s.status)&&await i.createTask(this.db,{agentId:s.agentId,runtimeId:s.runtimeId,workspaceId:t,conversationId:e,prompt:"",type:a.TASK_TYPES.KILL_TASK,context:{target_task_id:s.id}}),await d.createMessage(this.db,{conversationId:e,role:"assistant",content:r?.reason??"Task cancelled by user",taskId:s.id}),await this.reconcileAgentStatus(s.agentId,t),r?.skipDispatch||await this.dispatchNextBufferedMessage(e,t),n):null}async reconcileAgentStatus(e,t){let a=await i.countRunningTasks(this.db,e,t);await o.updateAgentStatus(this.db,e,t,a>0?"working":"idle")}async dispatchNextBufferedMessage(e,t){let o=await d.activateNextBufferedMessage(this.db,e);if(!o)return null;let c=await l.getConversation(this.db,e,t);if(!c)return r.log.warn("dispatchNextBufferedMessage: conversation not found",{conversationId:e}),await d.revertToBuffered(this.db,o.id).catch(e=>{r.log.error("dispatchNextBufferedMessage: failed to revert message status",{messageId:o.id,revertErr:e})}),null;let u=c.userId;try{let r=o.attachmentIds?JSON.parse(o.attachmentIds):[],l=await i.getLatestTaskForConversation(this.db,e),p=l?.traceId??null,m=await this.enqueueTask(c.agentId,e,t,o.content,a.TASK_TYPES.USER_DM_MESSAGE,{contextKey:e,context:r.length>0?{attachment_ids:r}:void 0,traceId:p,parentTaskId:null});return await d.updateMessageTaskId(this.db,o.id,m.id),(0,s.broadcastToUser)(u,{type:"followup.dispatched",conversationId:e,message:(0,n.messageToResponse)(o),task:(0,n.taskToResponse)(m)}).catch(()=>{}),m}catch(t){return r.log.warn("dispatchNextBufferedMessage: enqueueTask failed",{conversationId:e,err:t}),await d.revertToBuffered(this.db,o.id).catch(e=>{r.log.error("dispatchNextBufferedMessage: failed to revert message status",{messageId:o.id,revertErr:e})}),(0,s.broadcastToUser)(u,{type:"followup.dispatch_failed",conversationId:e,messageId:o.id,error:t instanceof Error?t.message:"Failed to dispatch follow-up"}).catch(()=>{}),null}}async cancelTrace(e,t,a){for(let s of[...new Set((await i.getTraceTree(this.db,e,t)).filter(e=>["queued","dispatched","running"].includes(e.status)).map(e=>e.conversationId))])try{await this.cancelActiveTask(s,t,{skipDispatch:!0,reason:a?.reason})}catch(t){r.log.warn("cancelTrace: failed to cancel task",{traceId:e,convId:s,err:t})}}}])},897069,e=>{"use strict";var t=e.i(424166);e.s(["parsePromptMentions",0,function(e,a){if(!e||0===a.length)return{enrichedPrompt:e,mentions:[]};let r=a.slice().sort((e,t)=>t.name.length-e.name.length),s=[],n=[];for(let t=0;t<e.length;t++){if("@"!==e[t]||!function(e,t){if(0===t)return!0;let a=e.charCodeAt(t-1);return(!(a>=48)||!(a<=57))&&(!(a>=65)||!(a<=90))&&(!(a>=97)||!(a<=122))&&95!==a}(e,t))continue;let a=t+1;for(let s of r){let r=a+s.name.length;if(!(r>e.length)&&e.slice(a,r).toLowerCase()===s.name.toLowerCase()&&function(e,t){if(t>=e.length)return!0;let a=e.charCodeAt(t);return(!(a>=48)||!(a<=57))&&(!(a>=65)||!(a<=90))&&(!(a>=97)||!(a<=122))&&95!==a}(e,r)){if(n.some(e=>t>=e.start&&t<e.end))break;n.push({start:t,end:r,agent:s});break}}}let i=e;for(let e=n.length-1;e>=0;e--){let a=n[e],r={name:a.agent.name,email:a.agent.emailHandle?(0,t.toAlookAddress)(a.agent.emailHandle):null,description:a.agent.description};if(s.unshift(r),a.agent.emailHandle){let e=`@${a.agent.name} (${(0,t.toAlookAddress)(a.agent.emailHandle)})`;i=i.slice(0,a.start)+e+i.slice(a.end)}else i=i.slice(0,a.start)+`@${a.agent.name}`+i.slice(a.end)}return{enrichedPrompt:i,mentions:s}}])},517479,e=>{"use strict";var t=e.i(80774),a=e.i(404478),r=e.i(732985),s=e.i(481671),n=e.i(638081),i=e.i(204960),o=e.i(924918),d=e.i(363585),l=e.i(906846),c=e.i(359838),u=e.i(383303),p=e.i(234173),m=e.i(270215),f=e.i(830665),h=e.i(944002),g=e.i(193695);e.i(195928);var w=e.i(81543),_=e.i(194218);e.i(700598);var T=e.i(291109),k=e.i(888247),v=e.i(897069),I=e.i(675139),y=e.i(719436),b=e.i(152327),A=e.i(47962),R=e.i(776227),E=e.i(740580),S=e.i(726089),x=e.i(205054);let N=(0,b.withAuth)(async(e,t)=>{let a=await (0,A.withWorkspaceMember)(e,t);if(a instanceof Response)return a;let{env:r}=(0,_.getCloudflareContext)(),s=(0,I.getDb)(r.DB),n=t.params?.id;if(!n)return(0,R.writeError)("conversation id is required",400);if(!await T.queries.conversation.getConversation(s,n,a.workspaceId))return(0,R.writeError)("conversation not found",404);let i=await T.queries.message.listBufferedMessages(s,n);return(0,R.writeJSON)(i.map(E.messageToResponse))}),C=(0,b.withAuth)(async(e,t)=>{let a,r=await (0,A.withWorkspaceMember)(e,t);if(r instanceof Response)return r;let{env:s}=(0,_.getCloudflareContext)(),n=(0,I.getDb)(s.DB),i=s.EMAIL_BUCKET,o=t.params?.id;if(!o)return(0,R.writeError)("conversation id is required",400);let d=await T.queries.conversation.getConversation(n,o,r.workspaceId);if(!d)return(0,R.writeError)("conversation not found",404);if(await T.queries.message.countBufferedMessages(n,o)>=20)return(0,R.writeError)("maximum 20 buffered messages reached",429);let l=(e.headers.get("content-type")??"").includes("multipart/form-data"),c=[];if(l){let t;try{t=await e.formData()}catch{return(0,R.writeError)("invalid form data",400)}for(let[e,r]of(a=(t.get("content")??"").trim(),t.entries()))"file"===e&&r instanceof File&&c.push(r);if(!a)return(0,R.writeError)("content is required",400)}else{let[t,r]=await (0,R.parseBody)(e,k.CreateBufferedMessageRequestSchema);if(r)return r;a=t.content}if(c.length>10)return(0,R.writeError)("too many files (max 10)",400);for(let e of c)if(e.size>0xa00000)return(0,R.writeError)(`file "${e.name}" exceeds 10 MB limit`,413);let u=[];for(let e of c){let t=e.name.replace(/[/\\]/g,"_").replace(/\.\./g,"_").slice(0,255)||"file",a=e.type||"application/octet-stream",s="art_"+(0,y.nanoid)(),l=`artifacts/${r.workspaceId}/${d.agentId}/${o}/${s}/${t}`;await i.put(l,await e.arrayBuffer(),{httpMetadata:{contentType:a}}),await T.queries.artifact.createArtifact(n,{id:s,conversationId:o,agentId:d.agentId,workspaceId:r.workspaceId,filename:t,contentType:a,size:e.size,r2Key:l,source:"attachment"}),u.push(s)}let p=a;if(a.includes("@"))try{let e=await T.queries.agent.listAgents(n,r.workspaceId,t.userId),{enrichedPrompt:s}=(0,v.parsePromptMentions)(a,e);p=s}catch{}let m=await T.queries.message.createBufferedMessage(n,{conversationId:o,content:p,attachmentIds:u.length>0?JSON.stringify(u):null});return(0,S.broadcastToUser)(t.userId,{type:"followup.created",conversationId:o,message:(0,E.messageToResponse)(m)}).catch(()=>{}),await T.queries.task.getActiveTaskByConversation(n,o,r.workspaceId)||new x.TaskService(n).dispatchNextBufferedMessage(o,r.workspaceId).catch(()=>{}),(0,R.writeJSON)({message:(0,E.messageToResponse)(m)},201)}),M=(0,b.withAuth)(async(e,t)=>{let a=await (0,A.withWorkspaceMember)(e,t);if(a instanceof Response)return a;let{env:r}=(0,_.getCloudflareContext)(),s=(0,I.getDb)(r.DB),n=t.params?.id;if(!n)return(0,R.writeError)("conversation id is required",400);if(!await T.queries.conversation.getConversation(s,n,a.workspaceId))return(0,R.writeError)("conversation not found",404);for(let e of(await T.queries.message.deleteAllBufferedMessages(s,n)))(0,S.broadcastToUser)(t.userId,{type:"followup.deleted",conversationId:n,messageId:e.id}).catch(()=>{});return new Response(null,{status:204})});e.s(["DELETE",0,M,"GET",0,N,"POST",0,C],400368);var q=e.i(400368);let O=new t.AppRouteRouteModule({definition:{kind:a.RouteKind.APP_ROUTE,page:"/api/conversations/[id]/buffered-messages/route",pathname:"/api/conversations/[id]/buffered-messages",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/web/src/app/api/conversations/[id]/buffered-messages/route.ts",nextConfigOutput:"standalone",userland:q,...{}}),{workAsyncStorage:P,workUnitAsyncStorage:B,serverHooks:D}=O;async function U(e,t,r){r.requestMeta&&(0,s.setRequestMeta)(e,r.requestMeta),O.isDev&&(0,s.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let _="/api/conversations/[id]/buffered-messages/route";_=_.replace(/\/index$/,"")||"/";let T=await O.prepare(e,t,{srcPage:_,multiZoneDraftMode:!1});if(!T)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:k,deploymentId:v,params:I,nextConfig:y,parsedUrl:b,isDraftMode:A,prerenderManifest:R,routerServerContext:E,isOnDemandRevalidate:S,revalidateOnlyGenerated:x,resolvedPathname:N,clientReferenceManifest:C,serverActionsManifest:M}=T,q=(0,o.normalizeAppPath)(_),P=!!(R.dynamicRoutes[q]||R.routes[N]),B=async()=>((null==E?void 0:E.render404)?await E.render404(e,t,b,!1):t.end("This page could not be found"),null);if(P&&!A){let e=!!R.routes[N],t=R.dynamicRoutes[q];if(t&&!1===t.fallback&&!e){if(y.adapterPath)return await B();throw new g.NoFallbackError}}let D=null;!P||O.isDev||A||(D="/index"===(D=N)?"/":D);let U=!0===O.isDev||!P,$=P&&!U;M&&C&&(0,i.setManifestsSingleton)({page:_,clientReferenceManifest:C,serverActionsManifest:M});let K=e.method||"GET",j=(0,n.getTracer)(),L=j.getActiveScopeSpan(),H=!!(null==E?void 0:E.isWrappedByNextServer),F=!!(0,s.getRequestMeta)(e,"minimalMode"),W=(0,s.getRequestMeta)(e,"incrementalCache")||await O.getIncrementalCache(e,y,R,F);null==W||W.resetRequestCache(),globalThis.__incrementalCache=W;let J={params:I,previewProps:R.preview,renderOpts:{experimental:{authInterrupts:!!y.experimental.authInterrupts},cacheComponents:!!y.cacheComponents,supportsDynamicResponse:U,incrementalCache:W,cacheLifeProfiles:y.cacheLife,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,r,s)=>O.onRequestError(e,t,r,s,E)},sharedContext:{buildId:k,deploymentId:v}},G=new d.NodeNextRequest(e),Y=new d.NodeNextResponse(t),V=l.NextRequestAdapter.fromNodeNextRequest(G,(0,l.signalFromNodeResponse)(t));try{let s,i=async e=>O.handle(V,J).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=j.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==c.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let r=a.get("next.route");if(r){let t=`${K} ${r}`;e.setAttributes({"next.route":r,"http.route":r,"next.span_name":t}),e.updateName(t),s&&s!==e&&(s.setAttribute("http.route",r),s.updateName(t))}else e.updateName(`${K} ${_}`)}),o=async s=>{var n,o;let d=async({previousCacheEntry:a})=>{try{if(!F&&S&&x&&!a)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let n=await i(s);e.fetchMetrics=J.renderOpts.fetchMetrics;let o=J.renderOpts.pendingWaitUntil;o&&r.waitUntil&&(r.waitUntil(o),o=void 0);let d=J.renderOpts.collectedTags;if(!P)return await (0,p.sendResponse)(G,Y,n,J.renderOpts.pendingWaitUntil),null;{let e=await n.blob(),t=(0,m.toNodeOutgoingHttpHeaders)(n.headers);d&&(t[h.NEXT_CACHE_TAGS_HEADER]=d),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==J.renderOpts.collectedRevalidate&&!(J.renderOpts.collectedRevalidate>=h.INFINITE_CACHE)&&J.renderOpts.collectedRevalidate,r=void 0===J.renderOpts.collectedExpire||J.renderOpts.collectedExpire>=h.INFINITE_CACHE?void 0:J.renderOpts.collectedExpire;return{value:{kind:w.CachedRouteKind.APP_ROUTE,status:n.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:r}}}}catch(t){throw(null==a?void 0:a.isStale)&&await O.onRequestError(e,t,{routerKind:"App Router",routePath:_,routeType:"route",revalidateReason:(0,u.getRevalidateReason)({isStaticGeneration:$,isOnDemandRevalidate:S})},!1,E),t}},l=await O.handleResponse({req:e,nextConfig:y,cacheKey:D,routeKind:a.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:R,isRoutePPREnabled:!1,isOnDemandRevalidate:S,revalidateOnlyGenerated:x,responseGenerator:d,waitUntil:r.waitUntil,isMinimalMode:F});if(!P)return null;if((null==l||null==(n=l.value)?void 0:n.kind)!==w.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==l||null==(o=l.value)?void 0:o.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});F||t.setHeader("x-nextjs-cache",S?"REVALIDATED":l.isMiss?"MISS":l.isStale?"STALE":"HIT"),A&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let c=(0,m.fromNodeOutgoingHttpHeaders)(l.value.headers);return F&&P||c.delete(h.NEXT_CACHE_TAGS_HEADER),!l.cacheControl||t.getHeader("Cache-Control")||c.get("Cache-Control")||c.set("Cache-Control",(0,f.getCacheControlHeader)(l.cacheControl)),await (0,p.sendResponse)(G,Y,new Response(l.value.body,{headers:c,status:l.value.status||200})),null};H&&L?await o(L):(s=j.getActiveScopeSpan(),await j.withPropagatedContext(e.headers,()=>j.trace(c.BaseServerSpan.handleRequest,{spanName:`${K} ${_}`,kind:n.SpanKind.SERVER,attributes:{"http.method":K,"http.target":e.url}},o),void 0,!H))}catch(t){if(t instanceof g.NoFallbackError||await O.onRequestError(e,t,{routerKind:"App Router",routePath:q,routeType:"route",revalidateReason:(0,u.getRevalidateReason)({isStaticGeneration:$,isOnDemandRevalidate:S})},!1,E),P)throw t;return await (0,p.sendResponse)(G,Y,new Response(null,{status:500})),null}}e.s(["handler",0,U,"patchFetch",0,function(){return(0,r.patchFetch)({workAsyncStorage:P,workUnitAsyncStorage:B})},"routeModule",0,O,"serverHooks",0,D,"workAsyncStorage",0,P,"workUnitAsyncStorage",0,B],517479)},967183,e=>{e.v(t=>Promise.all(["server/chunks/0ej8_@better-auth_memory-adapter_dist_index_mjs_10c.8b8._.js"].map(t=>e.l(t))).then(()=>t(205102)))},632019,e=>{e.v(t=>Promise.all(["server/chunks/0cd0_better-auth_dist_adapters_kysely-adapter_index_mjs_0v4jkxi._.js"].map(t=>e.l(t))).then(()=>t(836110)))},246358,e=>{e.v(e=>Promise.resolve().then(()=>e(357762)))},292677,e=>{e.v(t=>Promise.all(["server/chunks/0m4__@better-auth_kysely-adapter_dist_bun-sqlite-dialect-na--YwnN_mjs_0j55.z1._.js"].map(t=>e.l(t))).then(()=>t(52033)))},289217,e=>{e.v(t=>Promise.all(["server/chunks/0m4__@better-auth_kysely-adapter_dist_node-sqlite-dialect_mjs_0wxfd_8._.js"].map(t=>e.l(t))).then(()=>t(670514)))},316246,e=>{e.v(t=>Promise.all(["server/chunks/0m4__@better-auth_kysely-adapter_dist_d1-sqlite-dialect-C2B7YsIT_mjs_0unjrn9._.js"].map(t=>e.l(t))).then(()=>t(917123)))}];
2
2
 
3
3
  //# sourceMappingURL=_06j7byr._.js.map