@alook/app 0.0.19 → 0.0.21

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 (99) 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/assets/_next/static/chunks/0.8_rnddefdxb.js +1 -0
  4. package/bundled/web/.open-next/assets/_next/static/chunks/07854mu3ik8bn.js +1 -0
  5. package/bundled/web/.open-next/cache/{JpvpBb9uBBz72TnryVX5l → Q17i96kBFcw4laPueb4qe}/_global-error.cache +1 -1
  6. package/bundled/web/.open-next/cache/{JpvpBb9uBBz72TnryVX5l → Q17i96kBFcw4laPueb4qe}/_not-found.cache +1 -1
  7. package/bundled/web/.open-next/cache/{JpvpBb9uBBz72TnryVX5l → Q17i96kBFcw4laPueb4qe}/sitemap.xml.cache +1 -1
  8. package/bundled/web/.open-next/cloudflare/cache-assets-manifest.sql +1 -1
  9. package/bundled/web/.open-next/cloudflare/init.js +1 -1
  10. package/bundled/web/.open-next/dynamodb-provider/dynamodb-cache.json +1 -1
  11. package/bundled/web/.open-next/middleware/handler.mjs +2 -2
  12. package/bundled/web/.open-next/server-functions/default/src/web/.next/BUILD_ID +1 -1
  13. package/bundled/web/.open-next/server-functions/default/src/web/.next/build-manifest.json +3 -3
  14. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/studio/new/page_client-reference-manifest.js +1 -1
  15. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/agents/[id]/activity/page_client-reference-manifest.js +1 -1
  16. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/agents/[id]/chat/[convId]/page_client-reference-manifest.js +1 -1
  17. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/agents/[id]/chat/page_client-reference-manifest.js +1 -1
  18. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/agents/[id]/email/page_client-reference-manifest.js +1 -1
  19. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/agents/[id]/files/page_client-reference-manifest.js +1 -1
  20. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/agents/[id]/meetings/page_client-reference-manifest.js +1 -1
  21. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/agents/[id]/page_client-reference-manifest.js +1 -1
  22. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/agents/new/page_client-reference-manifest.js +1 -1
  23. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/agents/page_client-reference-manifest.js +1 -1
  24. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/calendar/page_client-reference-manifest.js +1 -1
  25. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/help/email-setup/page_client-reference-manifest.js +1 -1
  26. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/home/page_client-reference-manifest.js +1 -1
  27. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/issues/page_client-reference-manifest.js +1 -1
  28. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/runtimes/page_client-reference-manifest.js +1 -1
  29. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/settings/page_client-reference-manifest.js +1 -1
  30. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/threads/[traceId]/page_client-reference-manifest.js +1 -1
  31. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/threads/page_client-reference-manifest.js +1 -1
  32. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/unread/page_client-reference-manifest.js +1 -1
  33. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/agents/[id]/chat-init/route.js +3 -3
  34. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/agents/[id]/whitelist/route.js +3 -3
  35. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/agents/route.js +3 -3
  36. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/artifacts/upload/route.js +2 -2
  37. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/conversations/[id]/active-task/route.js +3 -3
  38. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/conversations/[id]/buffered-messages/[messageId]/route.js +2 -2
  39. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/conversations/[id]/buffered-messages/route.js +3 -3
  40. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/conversations/[id]/messages/route.js +4 -4
  41. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/daemon/deregister/route.js +2 -2
  42. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/daemon/register/route.js +1 -1
  43. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/daemon/tasks/[taskId]/complete/route.js +5 -5
  44. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/daemon/tasks/[taskId]/fail/route.js +5 -5
  45. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/daemon/tasks/[taskId]/messages/route.js +1 -1
  46. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/daemon/tasks/[taskId]/start/route.js +5 -5
  47. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/daemon/tasks/[taskId]/supersede/route.js +5 -5
  48. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/daemon/tasks/poll/route.js +4 -4
  49. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/daemon/workspace/report/route.js +2 -2
  50. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/email/send/route.js +4 -4
  51. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/issues/[id]/comments/route.js +4 -4
  52. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/issues/[id]/route.js +3 -3
  53. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/issues/route.js +3 -3
  54. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/runtimes/machine/route.js +3 -3
  55. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/runtimes/route.js +3 -3
  56. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/studios/route.js +5 -5
  57. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/tasks/[id]/retry/route.js +3 -3
  58. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__0jqy_f~._.js +1 -1
  59. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0-22391._.js +1 -1
  60. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0.vfmip._.js +1 -1
  61. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_018di6j._.js +1 -1
  62. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_05mkm05._.js +1 -1
  63. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_05t_tvs._.js +1 -1
  64. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_06j7byr._.js +1 -1
  65. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_094sp1w._.js +1 -1
  66. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_09egrjz._.js +1 -1
  67. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_09twg0j._.js +1 -1
  68. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0a_02v1._.js +1 -1
  69. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0av05ao._.js +1 -1
  70. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0dajh_g._.js +2 -2
  71. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0dxfkbl._.js +1 -1
  72. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0edx130._.js +1 -1
  73. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0euvrn9._.js +1 -1
  74. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0h1-_48._.js +1 -1
  75. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0iyza7b._.js +1 -1
  76. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0jo981d._.js +1 -1
  77. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0mvym74._.js +1 -1
  78. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0n.jaqy._.js +1 -1
  79. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0qz~dij._.js +1 -1
  80. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0sf57qo._.js +1 -1
  81. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0xkjukg._.js +1 -1
  82. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0zzdc3u._.js +1 -1
  83. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0~8mo49._.js +1 -1
  84. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0~~ji83._.js +1 -1
  85. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_13_kcb9._.js +1 -1
  86. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/_0vhi1.k._.js +1 -1
  87. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/_0y.08ek._.js +1 -1
  88. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/middleware-build-manifest.js +3 -3
  89. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/middleware-manifest.json +1 -1
  90. package/bundled/web/.open-next/server-functions/default/src/web/handler.mjs +17 -17
  91. package/bundled/web/.open-next/server-functions/default/src/web/handler.mjs.meta.json +163 -163
  92. package/bundled/web/.open-next/server-functions/default/src/web/index.mjs +2 -2
  93. package/package.json +3 -3
  94. package/bundled/web/.open-next/assets/_next/static/chunks/0iq-wdylmm182.js +0 -1
  95. package/bundled/web/.open-next/assets/_next/static/chunks/0~d77nakvw-pm.js +0 -1
  96. /package/bundled/web/.open-next/assets/_next/static/{JpvpBb9uBBz72TnryVX5l → Q17i96kBFcw4laPueb4qe}/_buildManifest.js +0 -0
  97. /package/bundled/web/.open-next/assets/_next/static/{JpvpBb9uBBz72TnryVX5l → Q17i96kBFcw4laPueb4qe}/_clientMiddlewareManifest.js +0 -0
  98. /package/bundled/web/.open-next/assets/_next/static/{JpvpBb9uBBz72TnryVX5l → Q17i96kBFcw4laPueb4qe}/_ssgManifest.js +0 -0
  99. /package/bundled/web/.open-next/cache/{JpvpBb9uBBz72TnryVX5l → Q17i96kBFcw4laPueb4qe}/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 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){try{let{env:a}=(0,t.getCloudflareContext)();if((await a.WS_DO_WORKER.fetch(`http://internal${e}`,{method:"POST",body:r})).ok)return}catch{}try{let t=await fetch(`${a.DEV_WS_DO_URL}${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})}}}])},867955,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 T=e.i(81543),w=e.i(194218),g=e.i(675139),k=e.i(152327),I=e.i(47962),v=e.i(776227),y=e.i(740580),b=e.i(205054),A=e.i(726089);let R=(0,k.withAuth)(async(e,t)=>{let a=await (0,I.withWorkspaceMember)(e,t);if(a instanceof Response)return a;let{env:s}=(0,w.getCloudflareContext)(),r=(0,g.getDb)(s.DB),n=t.params?.id;if(!n)return(0,v.writeError)("task id is required",400);let i=new b.TaskService(r);try{let{oldTask:e,newTask:s}=await i.retryTask(n,a.workspaceId);return(0,A.broadcastToUser)(t.userId,{type:"task.updated",taskId:e.id,agentId:e.agentId,status:"superseded"}).catch(()=>{}),(0,A.broadcastToUser)(t.userId,{type:"task.updated",taskId:s.id,agentId:s.agentId,status:"queued"}).catch(()=>{}),(0,v.writeJSON)((0,y.taskToResponse)(s))}catch(e){return(0,v.writeError)(e instanceof Error?e.message:"Unknown error",400)}});e.s(["POST",0,R],825526);var S=e.i(825526);let E=new t.AppRouteRouteModule({definition:{kind:a.RouteKind.APP_ROUTE,page:"/api/tasks/[id]/retry/route",pathname:"/api/tasks/[id]/retry",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/web/src/app/api/tasks/[id]/retry/route.ts",nextConfigOutput:"standalone",userland: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 w="/api/tasks/[id]/retry/route";w=w.replace(/\/index$/,"")||"/";let g=await E.prepare(e,t,{srcPage:w,multiZoneDraftMode:!1});if(!g)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:A,prerenderManifest:R,routerServerContext:S,isOnDemandRevalidate:x,revalidateOnlyGenerated:N,resolvedPathname:C,clientReferenceManifest:M,serverActionsManifest:O}=g,P=(0,o.normalizeAppPath)(w),q=!!(R.dynamicRoutes[P]||R.routes[C]),U=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&&!A){let e=!!R.routes[C],t=R.dynamicRoutes[P];if(t&&!1===t.fallback&&!e){if(y.adapterPath)return await U();throw new _.NoFallbackError}}let D=null;!q||E.isDev||A||(D="/index"===(D=C)?"/":D);let K=!0===E.isDev||!q,j=q&&!K;O&&M&&(0,i.setManifestsSingleton)({page:w,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,R,F);null==W||W.resetRequestCache(),globalThis.__incrementalCache=W;let Y={params:v,previewProps:R.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}},G=new d.NodeNextRequest(e),J=new d.NodeNextResponse(t),V=l.NextRequestAdapter.fromNodeNextRequest(G,(0,l.signalFromNodeResponse)(t));try{let r,i=async e=>E.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 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} ${w}`)}),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=Y.renderOpts.fetchMetrics;let o=Y.renderOpts.pendingWaitUntil;o&&s.waitUntil&&(s.waitUntil(o),o=void 0);let d=Y.renderOpts.collectedTags;if(!q)return await (0,p.sendResponse)(G,J,n,Y.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!==Y.renderOpts.collectedRevalidate&&!(Y.renderOpts.collectedRevalidate>=f.INFINITE_CACHE)&&Y.renderOpts.collectedRevalidate,s=void 0===Y.renderOpts.collectedExpire||Y.renderOpts.collectedExpire>=f.INFINITE_CACHE?void 0:Y.renderOpts.collectedExpire;return{value:{kind:T.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:w,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:j,isOnDemandRevalidate:x})},!1,S),t}},l=await E.handleResponse({req:e,nextConfig:y,cacheKey:D,routeKind:a.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:R,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)!==T.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"),A&&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)(G,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} ${w}`,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)(G,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],867955)},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)})}}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})}}}])},867955,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 T=e.i(81543),w=e.i(194218),g=e.i(675139),k=e.i(152327),I=e.i(47962),v=e.i(776227),y=e.i(740580),b=e.i(205054),R=e.i(726089);let A=(0,k.withAuth)(async(e,t)=>{let a=await (0,I.withWorkspaceMember)(e,t);if(a instanceof Response)return a;let{env:s}=(0,w.getCloudflareContext)(),r=(0,g.getDb)(s.DB),n=t.params?.id;if(!n)return(0,v.writeError)("task id is required",400);let i=new b.TaskService(r);try{let{oldTask:e,newTask:s}=await i.retryTask(n,a.workspaceId);return(0,R.broadcastToUser)(t.userId,{type:"task.updated",taskId:e.id,agentId:e.agentId,status:"superseded"}).catch(()=>{}),(0,R.broadcastToUser)(t.userId,{type:"task.updated",taskId:s.id,agentId:s.agentId,status:"queued"}).catch(()=>{}),(0,v.writeJSON)((0,y.taskToResponse)(s))}catch(e){return(0,v.writeError)(e instanceof Error?e.message:"Unknown error",400)}});e.s(["POST",0,A],825526);var S=e.i(825526);let E=new t.AppRouteRouteModule({definition:{kind:a.RouteKind.APP_ROUTE,page:"/api/tasks/[id]/retry/route",pathname:"/api/tasks/[id]/retry",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/web/src/app/api/tasks/[id]/retry/route.ts",nextConfigOutput:"standalone",userland: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 w="/api/tasks/[id]/retry/route";w=w.replace(/\/index$/,"")||"/";let g=await E.prepare(e,t,{srcPage:w,multiZoneDraftMode:!1});if(!g)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}=g,P=(0,o.normalizeAppPath)(w),q=!!(A.dynamicRoutes[P]||A.routes[C]),U=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 U();throw new _.NoFallbackError}}let D=null;!q||E.isDev||R||(D="/index"===(D=C)?"/":D);let K=!0===E.isDev||!q,j=q&&!K;O&&M&&(0,i.setManifestsSingleton)({page:w,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 Y={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}},G=new d.NodeNextRequest(e),J=new d.NodeNextResponse(t),V=l.NextRequestAdapter.fromNodeNextRequest(G,(0,l.signalFromNodeResponse)(t));try{let r,i=async e=>E.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 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} ${w}`)}),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=Y.renderOpts.fetchMetrics;let o=Y.renderOpts.pendingWaitUntil;o&&s.waitUntil&&(s.waitUntil(o),o=void 0);let d=Y.renderOpts.collectedTags;if(!q)return await (0,p.sendResponse)(G,J,n,Y.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!==Y.renderOpts.collectedRevalidate&&!(Y.renderOpts.collectedRevalidate>=f.INFINITE_CACHE)&&Y.renderOpts.collectedRevalidate,s=void 0===Y.renderOpts.collectedExpire||Y.renderOpts.collectedExpire>=f.INFINITE_CACHE?void 0:Y.renderOpts.collectedExpire;return{value:{kind:T.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:w,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:j,isOnDemandRevalidate:x})},!1,S),t}},l=await E.handleResponse({req:e,nextConfig:y,cacheKey:D,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)!==T.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)(G,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} ${w}`,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)(G,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],867955)},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=_0xkjukg._.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),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}),c=(0,r.getDb)(d.DB),l=await (0,i.cached)(i.cacheKeys.member(o,n.userId),1800,()=>s.queries.member.getMemberByUserAndWorkspace(c,n.userId,o));return l||n.workspaceId!==o?l?{workspaceId:o,memberRole:l.role}:t.NextResponse.json({error:"workspace not found"},{status:404}):{workspaceId:o,memberRole:"member"}}async function o(e,a){let s=await n(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,n,"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,i=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(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)(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,i){try{let{env:a}=(0,t.getCloudflareContext)();if((await a.WS_DO_WORKER.fetch(`http://internal${e}`,{method:"POST",body:r})).ok)return}catch{}try{let t=await fetch(`${a.DEV_WS_DO_URL}${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:r});t.ok||s.warn("broadcast failed",{...i,status:t.status})}catch(e){s.warn("broadcast error",{...i,err:String(e)})}}async function i(e,t){await r(`/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),s=e.i(799579),r=e.i(726089),i=e.i(740580);let n=t.queries.task,o=t.queries.agent,d=t.queries.message,c=t.queries.conversation,l=t.queries.issue;e.s(["TaskService",0,class{db;constructor(e){this.db=e}async enqueueTask(e,t,s,r,i=a.TASK_TYPES.USER_DM_MESSAGE,d){let c=await o.getAgent(this.db,e,s);if(!c)throw Error("agent not found");if(!c.runtimeId)throw Error("agent has no runtime");if(d?.traceId&&d.parentTaskId&&await 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:c.runtimeId,workspaceId:s,conversationId:t,prompt:r,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 s=await n.findSteerableReplacement(this.db,e,t);if(!s||await n.countRunningTasks(this.db,e,t,s.predecessorId)>=a.maxConcurrentTasks)return null}let s=await n.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 n.claimKillTasks(this.db,e,a,t),r=t-s.length,i=r>0?await n.listPendingTasksByRuntimes(this.db,e,a):[],o=new Set(e),d=new Set,c=[...s];for(let e of i){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)&&(c.push(a),r--)}return c}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,r){let i;try{i=JSON.parse(a)}catch{i={raw:a}}let o=await n.completeTask(this.db,e,t,{result:i,sessionId:r||null});if(!o){let t=await n.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 c=i,l="string"==typeof c?.output?c.output:"";return l&&await d.createMessage(this.db,{conversationId:o.conversationId,role:"assistant",content:l,taskId:e}),await this.reconcileAgentStatus(o.agentId,o.workspaceId),await this.dispatchNextBufferedMessage(o.conversationId,o.workspaceId),o}async failTask(e,t,r){let i=await n.failTask(this.db,e,t,r);if(!i){let t=await n.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 i.type===a.TASK_TYPES.KILL_TASK||(r&&await d.createMessage(this.db,{conversationId:i.conversationId,role:"assistant",content:`Error: ${r}`,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 s=await l.getIssueByConversation(this.db,e.conversationId,e.workspaceId);!s||s.status===t||await l.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 n.supersedeTask(this.db,e,t);if(!a){let t=await n.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 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 s=await n.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 n.getActiveTaskByConversation(this.db,e,t);if(!r)return null;let i=await n.cancelTask(this.db,r.id,t);return i?(("dispatched"===r.status||"running"===r.status)&&await n.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),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 l=await c.getConversation(this.db,e,t);if(!l)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 u=l.userId;try{let s=o.attachmentIds?JSON.parse(o.attachmentIds):[],c=await n.getLatestTaskForConversation(this.db,e),m=c?.traceId??null,p=await this.enqueueTask(l.agentId,e,t,o.content,a.TASK_TYPES.USER_DM_MESSAGE,{contextKey:e,context:s.length>0?{attachment_ids:s}:void 0,traceId:m,parentTaskId:null});return await d.updateMessageTaskId(this.db,o.id,p.id),(0,r.broadcastToUser)(u,{type:"followup.dispatched",conversationId:e,message:(0,i.messageToResponse)(o),task:(0,i.taskToResponse)(p)}).catch(()=>{}),p}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)(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 r 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(r,t,{skipDispatch:!0,reason:a?.reason})}catch(t){s.log.warn("cancelTrace: failed to cancel task",{traceId:e,convId:r,err:t})}}}])},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),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}),c=(0,r.getDb)(d.DB),l=await (0,i.cached)(i.cacheKeys.member(o,n.userId),1800,()=>s.queries.member.getMemberByUserAndWorkspace(c,n.userId,o));return l||n.workspaceId!==o?l?{workspaceId:o,memberRole:l.role}:t.NextResponse.json({error:"workspace not found"},{status:404}):{workspaceId:o,memberRole:"member"}}async function o(e,a){let s=await n(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,n,"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,i=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(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)(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,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:r})).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:r});t.ok||s.warn("broadcast failed",{...i,status:t.status})}catch(e){s.warn("broadcast error",{...i,err:String(e)})}}async function i(e,t){await r(`/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),s=e.i(799579),r=e.i(726089),i=e.i(740580);let n=t.queries.task,o=t.queries.agent,d=t.queries.message,c=t.queries.conversation,l=t.queries.issue;e.s(["TaskService",0,class{db;constructor(e){this.db=e}async enqueueTask(e,t,s,r,i=a.TASK_TYPES.USER_DM_MESSAGE,d){let c=await o.getAgent(this.db,e,s);if(!c)throw Error("agent not found");if(!c.runtimeId)throw Error("agent has no runtime");if(d?.traceId&&d.parentTaskId&&await 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:c.runtimeId,workspaceId:s,conversationId:t,prompt:r,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 s=await n.findSteerableReplacement(this.db,e,t);if(!s||await n.countRunningTasks(this.db,e,t,s.predecessorId)>=a.maxConcurrentTasks)return null}let s=await n.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 n.claimKillTasks(this.db,e,a,t),r=t-s.length,i=r>0?await n.listPendingTasksByRuntimes(this.db,e,a):[],o=new Set(e),d=new Set,c=[...s];for(let e of i){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)&&(c.push(a),r--)}return c}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,r){let i;try{i=JSON.parse(a)}catch{i={raw:a}}let o=await n.completeTask(this.db,e,t,{result:i,sessionId:r||null});if(!o){let t=await n.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 c=i,l="string"==typeof c?.output?c.output:"";return l&&await d.createMessage(this.db,{conversationId:o.conversationId,role:"assistant",content:l,taskId:e}),await this.reconcileAgentStatus(o.agentId,o.workspaceId),await this.dispatchNextBufferedMessage(o.conversationId,o.workspaceId),o}async failTask(e,t,r){let i=await n.failTask(this.db,e,t,r);if(!i){let t=await n.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 i.type===a.TASK_TYPES.KILL_TASK||(r&&await d.createMessage(this.db,{conversationId:i.conversationId,role:"assistant",content:`Error: ${r}`,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 s=await l.getIssueByConversation(this.db,e.conversationId,e.workspaceId);!s||s.status===t||await l.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 n.supersedeTask(this.db,e,t);if(!a){let t=await n.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 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 s=await n.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 n.getActiveTaskByConversation(this.db,e,t);if(!r)return null;let i=await n.cancelTask(this.db,r.id,t);return i?(("dispatched"===r.status||"running"===r.status)&&await n.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),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 l=await c.getConversation(this.db,e,t);if(!l)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 u=l.userId;try{let s=o.attachmentIds?JSON.parse(o.attachmentIds):[],c=await n.getLatestTaskForConversation(this.db,e),m=c?.traceId??null,p=await this.enqueueTask(l.agentId,e,t,o.content,a.TASK_TYPES.USER_DM_MESSAGE,{contextKey:e,context:s.length>0?{attachment_ids:s}:void 0,traceId:m,parentTaskId:null});return await d.updateMessageTaskId(this.db,o.id,p.id),(0,r.broadcastToUser)(u,{type:"followup.dispatched",conversationId:e,message:(0,i.messageToResponse)(o),task:(0,i.taskToResponse)(p)}).catch(()=>{}),p}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)(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 r 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(r,t,{skipDispatch:!0,reason:a?.reason})}catch(t){s.log.warn("cancelTrace: failed to cancel task",{traceId:e,convId:r,err:t})}}}])},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=_0zzdc3u._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[799579,t=>{"use strict";t.i(700598);let e=(0,t.i(726527).createLogger)({service:"web",level:process.env.ALOOK_LOG_LEVEL||"info",pretty:!1});t.s(["log",0,e])},776227,t=>{"use strict";var e=t.i(463421);function a(t,a){return e.NextResponse.json({error:t},{status:a})}async function s(t,s){let r;try{r=await t.json()}catch{return[null,a("invalid request body",400)]}try{return[s.parse(r),null]}catch(a){let t=(a.issues??a.errors??[]).map(t=>`${t.path.join(".")}: ${t.message}`);return[null,e.NextResponse.json({error:"validation error",details:t},{status:400})]}}t.s(["formatTimestamp",0,function(t){return t?("string"==typeof t?new Date(t):t).toISOString().replace(/\.\d{3}Z$/,"Z"):""},"formatTimestampNullable",0,function(t){return t?("string"==typeof t?new Date(t):t).toISOString().replace(/\.\d{3}Z$/,"Z"):null},"parseBody",0,s,"writeError",0,a,"writeJSON",0,function(t,a=200){return e.NextResponse.json(t,{status:a})}])},740580,469187,t=>{"use strict";var e=t.i(776227);t.i(700598);var a=t.i(888247),s=t.i(704024);function r(t){if(!t)return!1;let e=new Date(t.includes("T")||t.includes("Z")||t.includes("+")?t:t+"Z").getTime();return!isNaN(e)&&Date.now()-e<s.OFFLINE_THRESHOLD_MS}t.s(["isOnline",0,r],469187),t.s(["agentLinkToResponse",0,function(t){return{id:t.id,workspace_id:t.workspaceId,source_agent_id:t.sourceAgentId,target_agent_id:t.targetAgentId,instruction:t.instruction,created_at:(0,e.formatTimestamp)(t.createdAt),updated_at:(0,e.formatTimestamp)(t.updatedAt)}},"agentToResponse",0,function(t){let a=t.runtimeConfig;return a||(a={}),{id:t.id,workspace_id:t.workspaceId,runtime_id:t.runtimeId||"",name:t.name,description:t.description,instructions:t.instructions,runtime_mode:t.runtimeMode,runtime_config:a,status:t.status,max_concurrent_tasks:t.maxConcurrentTasks,email_handle:t.emailHandle||null,avatar_url:t.avatarUrl??null,visibility:t.visibility??"private",owner_id:t.ownerId??null,created_at:(0,e.formatTimestamp)(t.createdAt),updated_at:(0,e.formatTimestamp)(t.updatedAt)}},"calendarEventToResponse",0,function(t){let a=(0,e.formatTimestamp)(t.scheduledAt),s=t.occurrenceAt?(0,e.formatTimestamp)(t.occurrenceAt):a;return{id:t.id,agent_id:t.agentId,workspace_id:t.workspaceId,title:t.title,description:t.description??null,scheduled_at:a,occurrence_at:s,collapsed_count:t.collapsedCount??null,repeat_interval:t.repeatInterval??null,repeat_stop_at:(0,e.formatTimestampNullable)(t.repeatStopAt),last_triggered_at:(0,e.formatTimestampNullable)(t.lastTriggeredAt),created_at:(0,e.formatTimestamp)(t.createdAt),updated_at:(0,e.formatTimestamp)(t.updatedAt)}},"channelToResponse",0,function(t){return{id:t.id,workspace_id:t.workspaceId,name:t.name,created_at:(0,e.formatTimestamp)(t.createdAt)}},"conversationToResponse",0,function(t){let a={id:t.id,agent_id:t.agentId,title:t.title,type:t.type??s.TASK_TYPES.USER_DM_MESSAGE,channel:t.channel??"default",created_at:(0,e.formatTimestamp)(t.createdAt)};return void 0!==t.messageCount&&(a.message_count=t.messageCount),a},"emailToResponse",0,function(t){return{id:t.id,agent_id:t.agentId,from_email:t.fromEmail,to_email:t.toEmail,subject:t.subject,r2_key:t.r2Key,is_whitelisted:!!t.isWhitelisted,forwarded:!!t.forwarded,message_id:t.messageId??"",in_reply_to:t.inReplyTo??"",references:t.references??"",html_body:t.htmlBody??"",attachments:JSON.parse(t.attachments||"[]"),status:t.status??"unread",direction:t.direction??"inbound",created_at:(0,e.formatTimestamp)(t.createdAt)}},"inviteToResponse",0,function(t){return{id:t.id,token:t.token,created_by:t.createdBy,used_by:t.usedBy,expires_at:(0,e.formatTimestamp)(t.expiresAt),created_at:(0,e.formatTimestamp)(t.createdAt)}},"issueToResponse",0,function(t){return{id:t.id,workspace_id:t.workspaceId,agent_id:t.agentId,creator_user_id:t.creatorUserId,conversation_id:t.conversationId,latest_task_id:t.latestTaskId??null,title:t.title,description:t.description??"",status:t.status,created_at:(0,e.formatTimestamp)(t.createdAt),updated_at:(0,e.formatTimestamp)(t.updatedAt),completed_at:(0,e.formatTimestampNullable)(t.completedAt)}},"machineTokenToResponse",0,function(t){return{id:t.id,name:t.name,last_used_at:(0,e.formatTimestampNullable)(t.lastUsedAt),created_at:(0,e.formatTimestamp)(t.createdAt)}},"meetingToResponse",0,function(t){return{id:t.id,agent_id:t.agentId,workspace_id:t.workspaceId,title:t.title,meeting_url:t.meetingUrl,status:t.status,from_email:t.fromEmail??null,is_whitelisted:!!t.isWhitelisted,participants:t.participants??[],scheduled_at:(0,e.formatTimestampNullable)(t.scheduledAt),started_at:(0,e.formatTimestampNullable)(t.startedAt),completed_at:(0,e.formatTimestampNullable)(t.completedAt),transcript_r2_key:t.transcriptR2Key??null,summary:t.summary??null,error:t.error??null,worker_session_id:t.workerSessionId??null,created_at:(0,e.formatTimestamp)(t.createdAt),updated_at:(0,e.formatTimestamp)(t.updatedAt)}},"memberToResponse",0,function(t){return{id:t.id,user_id:t.userId,role:t.role,name:t.userName,email:t.userEmail,image:t.userImage,created_at:(0,e.formatTimestamp)(t.createdAt)}},"messageToResponse",0,function(t){let a={id:t.id,conversation_id:t.conversationId,role:t.role,content:t.content,task_id:t.taskId||null,attachment_ids:t.attachmentIds?JSON.parse(t.attachmentIds):null,metadata:t.metadata?JSON.parse(t.metadata):null,created_at:(0,e.formatTimestamp)(t.createdAt)};return t.status&&"active"!==t.status&&(a.status=t.status),a},"runtimeToResponse",0,function(t){let a=t.metadata;a||(a={});let s=t.machineLastSeenAt??null,i=s instanceof Date?s.toISOString():s;return{id:t.id,workspace_id:t.workspaceId,daemon_id:t.daemonId||null,runtime_mode:t.runtimeMode,provider:t.provider,status:r(i)?"online":"offline",device_info:t.deviceInfo,metadata:a,pending_update_version:t.pendingUpdateVersion??null,pending_rescan:!!t.pendingRescan,last_seen_at:(0,e.formatTimestampNullable)(s),created_at:(0,e.formatTimestamp)(t.createdAt),updated_at:(0,e.formatTimestamp)(t.updatedAt)}},"taskMessageToResponse",0,function(t){let e={id:t.id,task_id:t.taskId,seq:t.seq,type:t.type,tool:t.tool,call_id:t.callId||"",content:t.content,output:t.output};return t.input&&(e.input=t.input),e},"taskToActivityResponse",0,function(t){let a=t.prompt.length>120?t.prompt.slice(0,120):t.prompt;return{id:t.id,conversation_id:t.conversationId,type:t.type??s.TASK_TYPES.USER_DM_MESSAGE,status:t.status,prompt:a,created_at:(0,e.formatTimestamp)(t.createdAt),started_at:(0,e.formatTimestampNullable)(t.startedAt),completed_at:(0,e.formatTimestampNullable)(t.completedAt),error:t.error||null}},"taskToResponse",0,function(t){return a.TaskApiBaseSchema.parse({id:t.id,agent_id:t.agentId,runtime_id:t.runtimeId,conversation_id:t.conversationId,workspace_id:t.workspaceId,prompt:t.prompt,type:t.type??s.TASK_TYPES.USER_DM_MESSAGE,context_key:t.contextKey??null,context:t.context??null,status:t.status,priority:t.priority,dispatched_at:(0,e.formatTimestampNullable)(t.dispatchedAt),started_at:(0,e.formatTimestampNullable)(t.startedAt),completed_at:(0,e.formatTimestampNullable)(t.completedAt),result:t.result??null,error:t.error||null,created_at:(0,e.formatTimestamp)(t.createdAt),trace_id:t.traceId??null,parent_task_id:t.parentTaskId??null})},"userToResponse",0,function(t){return{id:t.id,name:t.name,email:t.email,avatar_url:t.avatarUrl??null,created_at:(0,e.formatTimestamp)(t.createdAt),updated_at:(0,e.formatTimestamp)(t.updatedAt)}},"workspaceToResponse",0,function(t){return{id:t.id,name:t.name,slug:t.slug,created_at:(0,e.formatTimestamp)(t.createdAt),updated_at:(0,e.formatTimestamp)(t.updatedAt)}}],740580)},726089,t=>{"use strict";var e=t.i(194218);t.i(700598);var a=t.i(704024);let s=(0,t.i(726527).createLogger)({service:"broadcast"});async function r(t,r,i){try{let{env:a}=(0,e.getCloudflareContext)();if((await a.WS_DO_WORKER.fetch(`http://internal${t}`,{method:"POST",body:r})).ok)return}catch{}try{let e=await fetch(`${a.DEV_WS_DO_URL}${t}`,{method:"POST",headers:{"Content-Type":"application/json"},body:r});e.ok||s.warn("broadcast failed",{...i,status:e.status})}catch(t){s.warn("broadcast error",{...i,err:String(t)})}}async function i(t,e){await r(`/broadcast/user/${t}`,JSON.stringify(e),{userId:t,type:e.type})}t.s(["broadcastToUser",0,i])},205054,t=>{"use strict";t.i(700598);var e=t.i(291109),a=t.i(704024),s=t.i(799579),r=t.i(726089),i=t.i(740580);let n=e.queries.task,d=e.queries.agent,o=e.queries.message,l=e.queries.conversation,c=e.queries.issue;t.s(["TaskService",0,class{db;constructor(t){this.db=t}async enqueueTask(t,e,s,r,i=a.TASK_TYPES.USER_DM_MESSAGE,o){let l=await d.getAgent(this.db,t,s);if(!l)throw Error("agent not found");if(!l.runtimeId)throw Error("agent has no runtime");if(o?.traceId&&o.parentTaskId&&await n.countTasksByTrace(this.db,o.traceId)>=a.MAX_TASKS_PER_TRACE)throw Error(`Trace limit reached (${a.MAX_TASKS_PER_TRACE} tasks). This may indicate an infinite loop between agents.`);return n.createTask(this.db,{agentId:t,runtimeId:l.runtimeId,workspaceId:s,conversationId:e,prompt:r,type:i,contextKey:o?.contextKey??null,priority:0,context:o?.context,traceId:o?.traceId??null,parentTaskId:o?.parentTaskId??null})}async claimTask(t,e){let a=await d.getAgent(this.db,t,e);if(!a)return null;if(await n.countRunningTasks(this.db,t,e)>=a.maxConcurrentTasks){let s=await n.findSteerableReplacement(this.db,t,e);if(!s||await n.countRunningTasks(this.db,t,e,s.predecessorId)>=a.maxConcurrentTasks)return null}let s=await n.claimTask(this.db,t,e);return s?(await d.updateAgentStatus(this.db,t,e,"working"),s):null}async claimTasksForRuntimes(t,e,a){let s=await n.claimKillTasks(this.db,t,a,e),r=e-s.length,i=r>0?await n.listPendingTasksByRuntimes(this.db,t,a):[],d=new Set(t),o=new Set,l=[...s];for(let t of i){if(r<=0)break;let e=`${t.agentId}:${t.workspaceId}`;if(o.has(e))continue;o.add(e);let a=await this.claimTask(t.agentId,t.workspaceId);a&&d.has(a.runtimeId)&&(l.push(a),r--)}return l}async startTask(t,e){let a=await n.startTask(this.db,t,e);if(!a)throw Error("task not in dispatched status");return a}async completeTask(t,e,a,r){let i;try{i=JSON.parse(a)}catch{i={raw:a}}let d=await n.completeTask(this.db,t,e,{result:i,sessionId:r||null});if(!d){let e=await n.getTask(this.db,t),a=e?.status??"unknown";throw s.log.warn(`completeTask failed: task is in '${a}' status`,{taskId:t}),Error(`cannot complete task in '${a}' status`)}let l=i,c="string"==typeof l?.output?l.output:"";return c&&await o.createMessage(this.db,{conversationId:d.conversationId,role:"assistant",content:c,taskId:t}),await this.reconcileAgentStatus(d.agentId,d.workspaceId),await this.dispatchNextBufferedMessage(d.conversationId,d.workspaceId),d}async failTask(t,e,r){let i=await n.failTask(this.db,t,e,r);if(!i){let e=await n.getTask(this.db,t),a=e?.status??"unknown";throw s.log.warn(`failTask failed: task is in '${a}' status`,{taskId:t}),Error(`cannot fail task in '${a}' status`)}return i.type===a.TASK_TYPES.KILL_TASK||(r&&await o.createMessage(this.db,{conversationId:i.conversationId,role:"assistant",content:`Error: ${r}`,taskId:t}),await this.reconcileAgentStatus(i.agentId,i.workspaceId),await this.syncIssueStatusFromTask(i,"failed"),await this.dispatchNextBufferedMessage(i.conversationId,i.workspaceId)),i}async syncIssueStatusFromTask(t,e){if(t.type!==a.TASK_TYPES.ISSUE_EVENT)return;let s=await c.getIssueByConversation(this.db,t.conversationId,t.workspaceId);!s||s.status===e||await c.updateIssue(this.db,s.id,t.workspaceId,{status:e})&&await o.createMessage(this.db,{conversationId:t.conversationId,role:"event",content:`Issue status changed: ${s.status} -> ${e}`,taskId:t.id,metadata:JSON.stringify({issueId:s.id})})}async supersedeTask(t,e){let a=await n.supersedeTask(this.db,t,e);if(!a){let e=await n.getTask(this.db,t),a=e?.status??"unknown";throw s.log.warn(`supersedeTask failed: task is in '${a}' status`,{taskId:t}),Error(`cannot supersede task in '${a}' status`)}return await this.reconcileAgentStatus(a.agentId,a.workspaceId),await this.dispatchNextBufferedMessage(a.conversationId,a.workspaceId),a}async retryTask(t,e){let a=await n.getTask(this.db,t);if(!a||a.workspaceId!==e)throw Error("task not found");if("failed"!==a.status)throw Error("only failed tasks can be retried");let s=await n.markFailedAsSuperseded(this.db,t,e);if(!s)throw Error("failed to mark task as superseded");return{oldTask:s,newTask:await this.enqueueTask(a.agentId,a.conversationId,e,a.prompt,a.type,{contextKey:a.contextKey??null,context:a.context,traceId:a.traceId??null,parentTaskId:a.parentTaskId??null})}}async cancelActiveTask(t,e,s){let r=await n.getActiveTaskByConversation(this.db,t,e);if(!r)return null;let i=await n.cancelTask(this.db,r.id,e);return i?(("dispatched"===r.status||"running"===r.status)&&await n.createTask(this.db,{agentId:r.agentId,runtimeId:r.runtimeId,workspaceId:e,conversationId:t,prompt:"",type:a.TASK_TYPES.KILL_TASK,context:{target_task_id:r.id}}),await o.createMessage(this.db,{conversationId:t,role:"assistant",content:s?.reason??"Task cancelled by user",taskId:r.id}),await this.reconcileAgentStatus(r.agentId,e),s?.skipDispatch||await this.dispatchNextBufferedMessage(t,e),i):null}async reconcileAgentStatus(t,e){let a=await n.countRunningTasks(this.db,t,e);await d.updateAgentStatus(this.db,t,e,a>0?"working":"idle")}async dispatchNextBufferedMessage(t,e){let d=await o.activateNextBufferedMessage(this.db,t);if(!d)return null;let c=await l.getConversation(this.db,t,e);if(!c)return s.log.warn("dispatchNextBufferedMessage: conversation not found",{conversationId:t}),await o.revertToBuffered(this.db,d.id).catch(t=>{s.log.error("dispatchNextBufferedMessage: failed to revert message status",{messageId:d.id,revertErr:t})}),null;let u=c.userId;try{let s=d.attachmentIds?JSON.parse(d.attachmentIds):[],l=await n.getLatestTaskForConversation(this.db,t),p=l?.traceId??null,m=await this.enqueueTask(c.agentId,t,e,d.content,a.TASK_TYPES.USER_DM_MESSAGE,{contextKey:t,context:s.length>0?{attachment_ids:s}:void 0,traceId:p,parentTaskId:null});return await o.updateMessageTaskId(this.db,d.id,m.id),(0,r.broadcastToUser)(u,{type:"followup.dispatched",conversationId:t,message:(0,i.messageToResponse)(d),task:(0,i.taskToResponse)(m)}).catch(()=>{}),m}catch(e){return s.log.warn("dispatchNextBufferedMessage: enqueueTask failed",{conversationId:t,err:e}),await o.revertToBuffered(this.db,d.id).catch(t=>{s.log.error("dispatchNextBufferedMessage: failed to revert message status",{messageId:d.id,revertErr:t})}),(0,r.broadcastToUser)(u,{type:"followup.dispatch_failed",conversationId:t,messageId:d.id,error:e instanceof Error?e.message:"Failed to dispatch follow-up"}).catch(()=>{}),null}}async cancelTrace(t,e,a){for(let r of[...new Set((await n.getTraceTree(this.db,t,e)).filter(t=>["queued","dispatched","running"].includes(t.status)).map(t=>t.conversationId))])try{await this.cancelActiveTask(r,e,{skipDispatch:!0,reason:a?.reason})}catch(e){s.log.warn("cancelTrace: failed to cancel task",{traceId:t,convId:r,err:e})}}}])},388335,t=>{"use strict";t.i(700598);var e=t.i(291109),a=t.i(205054),s=t.i(774078);async function r(t,r){let i=`sweep:${r}`,n=!1;try{if(await (0,s.cached)(i,30,async()=>(n=!0,new Date().toISOString())),!n)return}catch{n=!0}let d=await e.queries.task.failStaleDispatchedTasks(t,r);await e.queries.task.failStaleKillTasks(t,r);let o=[...d,...await e.queries.task.failStaleRunningTasks(t,r)];if(o.length>0){let e=new a.TaskService(t),s=new Set;for(let t of o){let a=`${t.agentId}:${t.workspaceId}`;s.has(a)||(s.add(a),await e.reconcileAgentStatus(t.agentId,t.workspaceId))}let r=new Set;for(let t of o)r.has(t.conversationId)||(r.add(t.conversationId),await e.dispatchNextBufferedMessage(t.conversationId,t.workspaceId))}}t.s(["sweepStaleState",0,r])},801093,t=>{"use strict";t.i(700598);var e=t.i(291109),a=t.i(704024),s=t.i(719436),r=t.i(799579);let{listDueCalendarEvents:i,claimCalendarEvent:n,revertCalendarEventClaim:d,updateCalendarEventSchedule:o,computeNextScheduledAt:l}=e.queries.calendarEvent;async function c(t,u,p=new Date().toISOString()){let m=await i(t,u,p),_=0;for(let i of m){let c=await e.queries.agent.getAgent(t,i.agentId,i.workspaceId);if(!c){r.log.warn("calendar: agent missing, skipping",{id:i.id});continue}if(!c.runtimeId){r.log.warn("calendar: agent has no runtime, skipping",{id:i.id});continue}if(!c.ownerId){r.log.warn("calendar: agent has no owner, skipping",{id:i.id});continue}let u=i.lastTriggeredAt??null;if(await n(t,i.id,i.scheduledAt,p))try{let r=await e.queries.conversation.createConversation(t,{workspaceId:i.workspaceId,agentId:i.agentId,userId:c.ownerId,title:`[Calendar] ${i.title}`.slice(0,120),type:a.TASK_TYPES.CALENDAR_EVENT});if(await e.queries.message.createMessage(t,{conversationId:r.id,role:"event",content:i.title}),await e.queries.task.createTask(t,{agentId:i.agentId,runtimeId:c.runtimeId,workspaceId:i.workspaceId,conversationId:r.id,prompt:i.title,type:a.TASK_TYPES.CALENDAR_EVENT,priority:0,traceId:"tr_"+(0,s.nanoid)(),parentTaskId:null}),i.repeatInterval){let e=l(i.scheduledAt,i.repeatInterval,i.repeatStopAt??null,p,i.exceptions??[]);e&&await o(t,i.id,e)}_++}catch(e){r.log.warn("calendar: post-claim write failed, reverting",{id:i.id,err:String(e)});try{await d(t,i.id,u)}catch(t){r.log.error("calendar: compensating revert failed",{id:i.id,err:String(t)})}}}return _>0&&r.log.info("calendar: promoted due events",{workspaceId:u,enqueued:_}),_}t.s(["promoteDueCalendarEventsForWorkspace",0,c,"repeatStopDateToStopAt",0,function(t){let[e,a,s]=t.split("-").map(Number);if(!e||!a||!s)throw Error(`invalid repeat_stop_date: ${t}`);return new Date(e,a-1,s,23,59,59,999).toISOString()}])},139733,t=>{"use strict";t.s(["semverGte",0,function(t,e){let a=t.split(".").map(Number),s=e.split(".").map(Number);for(let t=0;t<Math.max(a.length,s.length);t++){let e=a[t]??0,r=s[t]??0;if(e>r)break;if(e<r)return!1}return!0}])},967183,t=>{t.v(e=>Promise.all(["server/chunks/0ej8_@better-auth_memory-adapter_dist_index_mjs_10c.8b8._.js"].map(e=>t.l(e))).then(()=>e(205102)))},632019,t=>{t.v(e=>Promise.all(["server/chunks/0cd0_better-auth_dist_adapters_kysely-adapter_index_mjs_0v4jkxi._.js"].map(e=>t.l(e))).then(()=>e(836110)))},246358,t=>{t.v(t=>Promise.resolve().then(()=>t(357762)))},292677,t=>{t.v(e=>Promise.all(["server/chunks/0m4__@better-auth_kysely-adapter_dist_bun-sqlite-dialect-na--YwnN_mjs_0j55.z1._.js"].map(e=>t.l(e))).then(()=>e(52033)))},289217,t=>{t.v(e=>Promise.all(["server/chunks/0m4__@better-auth_kysely-adapter_dist_node-sqlite-dialect_mjs_0wxfd_8._.js"].map(e=>t.l(e))).then(()=>e(670514)))},316246,t=>{t.v(e=>Promise.all(["server/chunks/0m4__@better-auth_kysely-adapter_dist_d1-sqlite-dialect-C2B7YsIT_mjs_0unjrn9._.js"].map(e=>t.l(e))).then(()=>e(917123)))},386211,t=>{t.v(t=>Promise.resolve().then(()=>t(774078)))}];
1
+ module.exports=[799579,t=>{"use strict";t.i(700598);let e=(0,t.i(726527).createLogger)({service:"web",level:process.env.ALOOK_LOG_LEVEL||"info",pretty:!1});t.s(["log",0,e])},776227,t=>{"use strict";var e=t.i(463421);function a(t,a){return e.NextResponse.json({error:t},{status:a})}async function s(t,s){let r;try{r=await t.json()}catch{return[null,a("invalid request body",400)]}try{return[s.parse(r),null]}catch(a){let t=(a.issues??a.errors??[]).map(t=>`${t.path.join(".")}: ${t.message}`);return[null,e.NextResponse.json({error:"validation error",details:t},{status:400})]}}t.s(["formatTimestamp",0,function(t){return t?("string"==typeof t?new Date(t):t).toISOString().replace(/\.\d{3}Z$/,"Z"):""},"formatTimestampNullable",0,function(t){return t?("string"==typeof t?new Date(t):t).toISOString().replace(/\.\d{3}Z$/,"Z"):null},"parseBody",0,s,"writeError",0,a,"writeJSON",0,function(t,a=200){return e.NextResponse.json(t,{status:a})}])},740580,469187,t=>{"use strict";var e=t.i(776227);t.i(700598);var a=t.i(888247),s=t.i(704024);function r(t){if(!t)return!1;let e=new Date(t.includes("T")||t.includes("Z")||t.includes("+")?t:t+"Z").getTime();return!isNaN(e)&&Date.now()-e<s.OFFLINE_THRESHOLD_MS}t.s(["isOnline",0,r],469187),t.s(["agentLinkToResponse",0,function(t){return{id:t.id,workspace_id:t.workspaceId,source_agent_id:t.sourceAgentId,target_agent_id:t.targetAgentId,instruction:t.instruction,created_at:(0,e.formatTimestamp)(t.createdAt),updated_at:(0,e.formatTimestamp)(t.updatedAt)}},"agentToResponse",0,function(t){let a=t.runtimeConfig;return a||(a={}),{id:t.id,workspace_id:t.workspaceId,runtime_id:t.runtimeId||"",name:t.name,description:t.description,instructions:t.instructions,runtime_mode:t.runtimeMode,runtime_config:a,status:t.status,max_concurrent_tasks:t.maxConcurrentTasks,email_handle:t.emailHandle||null,avatar_url:t.avatarUrl??null,visibility:t.visibility??"private",owner_id:t.ownerId??null,created_at:(0,e.formatTimestamp)(t.createdAt),updated_at:(0,e.formatTimestamp)(t.updatedAt)}},"calendarEventToResponse",0,function(t){let a=(0,e.formatTimestamp)(t.scheduledAt),s=t.occurrenceAt?(0,e.formatTimestamp)(t.occurrenceAt):a;return{id:t.id,agent_id:t.agentId,workspace_id:t.workspaceId,title:t.title,description:t.description??null,scheduled_at:a,occurrence_at:s,collapsed_count:t.collapsedCount??null,repeat_interval:t.repeatInterval??null,repeat_stop_at:(0,e.formatTimestampNullable)(t.repeatStopAt),last_triggered_at:(0,e.formatTimestampNullable)(t.lastTriggeredAt),created_at:(0,e.formatTimestamp)(t.createdAt),updated_at:(0,e.formatTimestamp)(t.updatedAt)}},"channelToResponse",0,function(t){return{id:t.id,workspace_id:t.workspaceId,name:t.name,created_at:(0,e.formatTimestamp)(t.createdAt)}},"conversationToResponse",0,function(t){let a={id:t.id,agent_id:t.agentId,title:t.title,type:t.type??s.TASK_TYPES.USER_DM_MESSAGE,channel:t.channel??"default",created_at:(0,e.formatTimestamp)(t.createdAt)};return void 0!==t.messageCount&&(a.message_count=t.messageCount),a},"emailToResponse",0,function(t){return{id:t.id,agent_id:t.agentId,from_email:t.fromEmail,to_email:t.toEmail,subject:t.subject,r2_key:t.r2Key,is_whitelisted:!!t.isWhitelisted,forwarded:!!t.forwarded,message_id:t.messageId??"",in_reply_to:t.inReplyTo??"",references:t.references??"",html_body:t.htmlBody??"",attachments:JSON.parse(t.attachments||"[]"),status:t.status??"unread",direction:t.direction??"inbound",created_at:(0,e.formatTimestamp)(t.createdAt)}},"inviteToResponse",0,function(t){return{id:t.id,token:t.token,created_by:t.createdBy,used_by:t.usedBy,expires_at:(0,e.formatTimestamp)(t.expiresAt),created_at:(0,e.formatTimestamp)(t.createdAt)}},"issueToResponse",0,function(t){return{id:t.id,workspace_id:t.workspaceId,agent_id:t.agentId,creator_user_id:t.creatorUserId,conversation_id:t.conversationId,latest_task_id:t.latestTaskId??null,title:t.title,description:t.description??"",status:t.status,created_at:(0,e.formatTimestamp)(t.createdAt),updated_at:(0,e.formatTimestamp)(t.updatedAt),completed_at:(0,e.formatTimestampNullable)(t.completedAt)}},"machineTokenToResponse",0,function(t){return{id:t.id,name:t.name,last_used_at:(0,e.formatTimestampNullable)(t.lastUsedAt),created_at:(0,e.formatTimestamp)(t.createdAt)}},"meetingToResponse",0,function(t){return{id:t.id,agent_id:t.agentId,workspace_id:t.workspaceId,title:t.title,meeting_url:t.meetingUrl,status:t.status,from_email:t.fromEmail??null,is_whitelisted:!!t.isWhitelisted,participants:t.participants??[],scheduled_at:(0,e.formatTimestampNullable)(t.scheduledAt),started_at:(0,e.formatTimestampNullable)(t.startedAt),completed_at:(0,e.formatTimestampNullable)(t.completedAt),transcript_r2_key:t.transcriptR2Key??null,summary:t.summary??null,error:t.error??null,worker_session_id:t.workerSessionId??null,created_at:(0,e.formatTimestamp)(t.createdAt),updated_at:(0,e.formatTimestamp)(t.updatedAt)}},"memberToResponse",0,function(t){return{id:t.id,user_id:t.userId,role:t.role,name:t.userName,email:t.userEmail,image:t.userImage,created_at:(0,e.formatTimestamp)(t.createdAt)}},"messageToResponse",0,function(t){let a={id:t.id,conversation_id:t.conversationId,role:t.role,content:t.content,task_id:t.taskId||null,attachment_ids:t.attachmentIds?JSON.parse(t.attachmentIds):null,metadata:t.metadata?JSON.parse(t.metadata):null,created_at:(0,e.formatTimestamp)(t.createdAt)};return t.status&&"active"!==t.status&&(a.status=t.status),a},"runtimeToResponse",0,function(t){let a=t.metadata;a||(a={});let s=t.machineLastSeenAt??null,i=s instanceof Date?s.toISOString():s;return{id:t.id,workspace_id:t.workspaceId,daemon_id:t.daemonId||null,runtime_mode:t.runtimeMode,provider:t.provider,status:r(i)?"online":"offline",device_info:t.deviceInfo,metadata:a,pending_update_version:t.pendingUpdateVersion??null,pending_rescan:!!t.pendingRescan,last_seen_at:(0,e.formatTimestampNullable)(s),created_at:(0,e.formatTimestamp)(t.createdAt),updated_at:(0,e.formatTimestamp)(t.updatedAt)}},"taskMessageToResponse",0,function(t){let e={id:t.id,task_id:t.taskId,seq:t.seq,type:t.type,tool:t.tool,call_id:t.callId||"",content:t.content,output:t.output};return t.input&&(e.input=t.input),e},"taskToActivityResponse",0,function(t){let a=t.prompt.length>120?t.prompt.slice(0,120):t.prompt;return{id:t.id,conversation_id:t.conversationId,type:t.type??s.TASK_TYPES.USER_DM_MESSAGE,status:t.status,prompt:a,created_at:(0,e.formatTimestamp)(t.createdAt),started_at:(0,e.formatTimestampNullable)(t.startedAt),completed_at:(0,e.formatTimestampNullable)(t.completedAt),error:t.error||null}},"taskToResponse",0,function(t){return a.TaskApiBaseSchema.parse({id:t.id,agent_id:t.agentId,runtime_id:t.runtimeId,conversation_id:t.conversationId,workspace_id:t.workspaceId,prompt:t.prompt,type:t.type??s.TASK_TYPES.USER_DM_MESSAGE,context_key:t.contextKey??null,context:t.context??null,status:t.status,priority:t.priority,dispatched_at:(0,e.formatTimestampNullable)(t.dispatchedAt),started_at:(0,e.formatTimestampNullable)(t.startedAt),completed_at:(0,e.formatTimestampNullable)(t.completedAt),result:t.result??null,error:t.error||null,created_at:(0,e.formatTimestamp)(t.createdAt),trace_id:t.traceId??null,parent_task_id:t.parentTaskId??null})},"userToResponse",0,function(t){return{id:t.id,name:t.name,email:t.email,avatar_url:t.avatarUrl??null,created_at:(0,e.formatTimestamp)(t.createdAt),updated_at:(0,e.formatTimestamp)(t.updatedAt)}},"workspaceToResponse",0,function(t){return{id:t.id,name:t.name,slug:t.slug,created_at:(0,e.formatTimestamp)(t.createdAt),updated_at:(0,e.formatTimestamp)(t.updatedAt)}}],740580)},726089,t=>{"use strict";var e=t.i(194218);t.i(700598);var a=t.i(704024);let s=(0,t.i(726527).createLogger)({service:"broadcast"});async function r(t,r,i){let n;try{let{env:a}=(0,e.getCloudflareContext)();if(n=a.DEV_WS_DO_URL,(await a.WS_DO_WORKER.fetch(`http://internal${t}`,{method:"POST",body:r})).ok)return}catch{}let d=n||a.DEV_WS_DO_URL;try{let e=await fetch(`${d}${t}`,{method:"POST",headers:{"Content-Type":"application/json"},body:r});e.ok||s.warn("broadcast failed",{...i,status:e.status})}catch(t){s.warn("broadcast error",{...i,err:String(t)})}}async function i(t,e){await r(`/broadcast/user/${t}`,JSON.stringify(e),{userId:t,type:e.type})}t.s(["broadcastToUser",0,i])},205054,t=>{"use strict";t.i(700598);var e=t.i(291109),a=t.i(704024),s=t.i(799579),r=t.i(726089),i=t.i(740580);let n=e.queries.task,d=e.queries.agent,o=e.queries.message,l=e.queries.conversation,c=e.queries.issue;t.s(["TaskService",0,class{db;constructor(t){this.db=t}async enqueueTask(t,e,s,r,i=a.TASK_TYPES.USER_DM_MESSAGE,o){let l=await d.getAgent(this.db,t,s);if(!l)throw Error("agent not found");if(!l.runtimeId)throw Error("agent has no runtime");if(o?.traceId&&o.parentTaskId&&await n.countTasksByTrace(this.db,o.traceId)>=a.MAX_TASKS_PER_TRACE)throw Error(`Trace limit reached (${a.MAX_TASKS_PER_TRACE} tasks). This may indicate an infinite loop between agents.`);return n.createTask(this.db,{agentId:t,runtimeId:l.runtimeId,workspaceId:s,conversationId:e,prompt:r,type:i,contextKey:o?.contextKey??null,priority:0,context:o?.context,traceId:o?.traceId??null,parentTaskId:o?.parentTaskId??null})}async claimTask(t,e){let a=await d.getAgent(this.db,t,e);if(!a)return null;if(await n.countRunningTasks(this.db,t,e)>=a.maxConcurrentTasks){let s=await n.findSteerableReplacement(this.db,t,e);if(!s||await n.countRunningTasks(this.db,t,e,s.predecessorId)>=a.maxConcurrentTasks)return null}let s=await n.claimTask(this.db,t,e);return s?(await d.updateAgentStatus(this.db,t,e,"working"),s):null}async claimTasksForRuntimes(t,e,a){let s=await n.claimKillTasks(this.db,t,a,e),r=e-s.length,i=r>0?await n.listPendingTasksByRuntimes(this.db,t,a):[],d=new Set(t),o=new Set,l=[...s];for(let t of i){if(r<=0)break;let e=`${t.agentId}:${t.workspaceId}`;if(o.has(e))continue;o.add(e);let a=await this.claimTask(t.agentId,t.workspaceId);a&&d.has(a.runtimeId)&&(l.push(a),r--)}return l}async startTask(t,e){let a=await n.startTask(this.db,t,e);if(!a)throw Error("task not in dispatched status");return a}async completeTask(t,e,a,r){let i;try{i=JSON.parse(a)}catch{i={raw:a}}let d=await n.completeTask(this.db,t,e,{result:i,sessionId:r||null});if(!d){let e=await n.getTask(this.db,t),a=e?.status??"unknown";throw s.log.warn(`completeTask failed: task is in '${a}' status`,{taskId:t}),Error(`cannot complete task in '${a}' status`)}let l=i,c="string"==typeof l?.output?l.output:"";return c&&await o.createMessage(this.db,{conversationId:d.conversationId,role:"assistant",content:c,taskId:t}),await this.reconcileAgentStatus(d.agentId,d.workspaceId),await this.dispatchNextBufferedMessage(d.conversationId,d.workspaceId),d}async failTask(t,e,r){let i=await n.failTask(this.db,t,e,r);if(!i){let e=await n.getTask(this.db,t),a=e?.status??"unknown";throw s.log.warn(`failTask failed: task is in '${a}' status`,{taskId:t}),Error(`cannot fail task in '${a}' status`)}return i.type===a.TASK_TYPES.KILL_TASK||(r&&await o.createMessage(this.db,{conversationId:i.conversationId,role:"assistant",content:`Error: ${r}`,taskId:t}),await this.reconcileAgentStatus(i.agentId,i.workspaceId),await this.syncIssueStatusFromTask(i,"failed"),await this.dispatchNextBufferedMessage(i.conversationId,i.workspaceId)),i}async syncIssueStatusFromTask(t,e){if(t.type!==a.TASK_TYPES.ISSUE_EVENT)return;let s=await c.getIssueByConversation(this.db,t.conversationId,t.workspaceId);!s||s.status===e||await c.updateIssue(this.db,s.id,t.workspaceId,{status:e})&&await o.createMessage(this.db,{conversationId:t.conversationId,role:"event",content:`Issue status changed: ${s.status} -> ${e}`,taskId:t.id,metadata:JSON.stringify({issueId:s.id})})}async supersedeTask(t,e){let a=await n.supersedeTask(this.db,t,e);if(!a){let e=await n.getTask(this.db,t),a=e?.status??"unknown";throw s.log.warn(`supersedeTask failed: task is in '${a}' status`,{taskId:t}),Error(`cannot supersede task in '${a}' status`)}return await this.reconcileAgentStatus(a.agentId,a.workspaceId),await this.dispatchNextBufferedMessage(a.conversationId,a.workspaceId),a}async retryTask(t,e){let a=await n.getTask(this.db,t);if(!a||a.workspaceId!==e)throw Error("task not found");if("failed"!==a.status)throw Error("only failed tasks can be retried");let s=await n.markFailedAsSuperseded(this.db,t,e);if(!s)throw Error("failed to mark task as superseded");return{oldTask:s,newTask:await this.enqueueTask(a.agentId,a.conversationId,e,a.prompt,a.type,{contextKey:a.contextKey??null,context:a.context,traceId:a.traceId??null,parentTaskId:a.parentTaskId??null})}}async cancelActiveTask(t,e,s){let r=await n.getActiveTaskByConversation(this.db,t,e);if(!r)return null;let i=await n.cancelTask(this.db,r.id,e);return i?(("dispatched"===r.status||"running"===r.status)&&await n.createTask(this.db,{agentId:r.agentId,runtimeId:r.runtimeId,workspaceId:e,conversationId:t,prompt:"",type:a.TASK_TYPES.KILL_TASK,context:{target_task_id:r.id}}),await o.createMessage(this.db,{conversationId:t,role:"assistant",content:s?.reason??"Task cancelled by user",taskId:r.id}),await this.reconcileAgentStatus(r.agentId,e),s?.skipDispatch||await this.dispatchNextBufferedMessage(t,e),i):null}async reconcileAgentStatus(t,e){let a=await n.countRunningTasks(this.db,t,e);await d.updateAgentStatus(this.db,t,e,a>0?"working":"idle")}async dispatchNextBufferedMessage(t,e){let d=await o.activateNextBufferedMessage(this.db,t);if(!d)return null;let c=await l.getConversation(this.db,t,e);if(!c)return s.log.warn("dispatchNextBufferedMessage: conversation not found",{conversationId:t}),await o.revertToBuffered(this.db,d.id).catch(t=>{s.log.error("dispatchNextBufferedMessage: failed to revert message status",{messageId:d.id,revertErr:t})}),null;let u=c.userId;try{let s=d.attachmentIds?JSON.parse(d.attachmentIds):[],l=await n.getLatestTaskForConversation(this.db,t),p=l?.traceId??null,m=await this.enqueueTask(c.agentId,t,e,d.content,a.TASK_TYPES.USER_DM_MESSAGE,{contextKey:t,context:s.length>0?{attachment_ids:s}:void 0,traceId:p,parentTaskId:null});return await o.updateMessageTaskId(this.db,d.id,m.id),(0,r.broadcastToUser)(u,{type:"followup.dispatched",conversationId:t,message:(0,i.messageToResponse)(d),task:(0,i.taskToResponse)(m)}).catch(()=>{}),m}catch(e){return s.log.warn("dispatchNextBufferedMessage: enqueueTask failed",{conversationId:t,err:e}),await o.revertToBuffered(this.db,d.id).catch(t=>{s.log.error("dispatchNextBufferedMessage: failed to revert message status",{messageId:d.id,revertErr:t})}),(0,r.broadcastToUser)(u,{type:"followup.dispatch_failed",conversationId:t,messageId:d.id,error:e instanceof Error?e.message:"Failed to dispatch follow-up"}).catch(()=>{}),null}}async cancelTrace(t,e,a){for(let r of[...new Set((await n.getTraceTree(this.db,t,e)).filter(t=>["queued","dispatched","running"].includes(t.status)).map(t=>t.conversationId))])try{await this.cancelActiveTask(r,e,{skipDispatch:!0,reason:a?.reason})}catch(e){s.log.warn("cancelTrace: failed to cancel task",{traceId:t,convId:r,err:e})}}}])},388335,t=>{"use strict";t.i(700598);var e=t.i(291109),a=t.i(205054),s=t.i(774078);async function r(t,r){let i=`sweep:${r}`,n=!1;try{if(await (0,s.cached)(i,30,async()=>(n=!0,new Date().toISOString())),!n)return}catch{n=!0}let d=await e.queries.task.failStaleDispatchedTasks(t,r);await e.queries.task.failStaleKillTasks(t,r);let o=[...d,...await e.queries.task.failStaleRunningTasks(t,r)];if(o.length>0){let e=new a.TaskService(t),s=new Set;for(let t of o){let a=`${t.agentId}:${t.workspaceId}`;s.has(a)||(s.add(a),await e.reconcileAgentStatus(t.agentId,t.workspaceId))}let r=new Set;for(let t of o)r.has(t.conversationId)||(r.add(t.conversationId),await e.dispatchNextBufferedMessage(t.conversationId,t.workspaceId))}}t.s(["sweepStaleState",0,r])},801093,t=>{"use strict";t.i(700598);var e=t.i(291109),a=t.i(704024),s=t.i(719436),r=t.i(799579);let{listDueCalendarEvents:i,claimCalendarEvent:n,revertCalendarEventClaim:d,updateCalendarEventSchedule:o,computeNextScheduledAt:l}=e.queries.calendarEvent;async function c(t,u,p=new Date().toISOString()){let m=await i(t,u,p),_=0;for(let i of m){let c=await e.queries.agent.getAgent(t,i.agentId,i.workspaceId);if(!c){r.log.warn("calendar: agent missing, skipping",{id:i.id});continue}if(!c.runtimeId){r.log.warn("calendar: agent has no runtime, skipping",{id:i.id});continue}if(!c.ownerId){r.log.warn("calendar: agent has no owner, skipping",{id:i.id});continue}let u=i.lastTriggeredAt??null;if(await n(t,i.id,i.scheduledAt,p))try{let r=await e.queries.conversation.createConversation(t,{workspaceId:i.workspaceId,agentId:i.agentId,userId:c.ownerId,title:`[Calendar] ${i.title}`.slice(0,120),type:a.TASK_TYPES.CALENDAR_EVENT});if(await e.queries.message.createMessage(t,{conversationId:r.id,role:"event",content:i.title}),await e.queries.task.createTask(t,{agentId:i.agentId,runtimeId:c.runtimeId,workspaceId:i.workspaceId,conversationId:r.id,prompt:i.title,type:a.TASK_TYPES.CALENDAR_EVENT,priority:0,traceId:"tr_"+(0,s.nanoid)(),parentTaskId:null}),i.repeatInterval){let e=l(i.scheduledAt,i.repeatInterval,i.repeatStopAt??null,p,i.exceptions??[]);e&&await o(t,i.id,e)}_++}catch(e){r.log.warn("calendar: post-claim write failed, reverting",{id:i.id,err:String(e)});try{await d(t,i.id,u)}catch(t){r.log.error("calendar: compensating revert failed",{id:i.id,err:String(t)})}}}return _>0&&r.log.info("calendar: promoted due events",{workspaceId:u,enqueued:_}),_}t.s(["promoteDueCalendarEventsForWorkspace",0,c,"repeatStopDateToStopAt",0,function(t){let[e,a,s]=t.split("-").map(Number);if(!e||!a||!s)throw Error(`invalid repeat_stop_date: ${t}`);return new Date(e,a-1,s,23,59,59,999).toISOString()}])},139733,t=>{"use strict";t.s(["semverGte",0,function(t,e){let a=t.split(".").map(Number),s=e.split(".").map(Number);for(let t=0;t<Math.max(a.length,s.length);t++){let e=a[t]??0,r=s[t]??0;if(e>r)break;if(e<r)return!1}return!0}])},967183,t=>{t.v(e=>Promise.all(["server/chunks/0ej8_@better-auth_memory-adapter_dist_index_mjs_10c.8b8._.js"].map(e=>t.l(e))).then(()=>e(205102)))},632019,t=>{t.v(e=>Promise.all(["server/chunks/0cd0_better-auth_dist_adapters_kysely-adapter_index_mjs_0v4jkxi._.js"].map(e=>t.l(e))).then(()=>e(836110)))},246358,t=>{t.v(t=>Promise.resolve().then(()=>t(357762)))},292677,t=>{t.v(e=>Promise.all(["server/chunks/0m4__@better-auth_kysely-adapter_dist_bun-sqlite-dialect-na--YwnN_mjs_0j55.z1._.js"].map(e=>t.l(e))).then(()=>e(52033)))},289217,t=>{t.v(e=>Promise.all(["server/chunks/0m4__@better-auth_kysely-adapter_dist_node-sqlite-dialect_mjs_0wxfd_8._.js"].map(e=>t.l(e))).then(()=>e(670514)))},316246,t=>{t.v(e=>Promise.all(["server/chunks/0m4__@better-auth_kysely-adapter_dist_d1-sqlite-dialect-C2B7YsIT_mjs_0unjrn9._.js"].map(e=>t.l(e))).then(()=>e(917123)))},386211,t=>{t.v(t=>Promise.resolve().then(()=>t(774078)))}];
2
2
 
3
3
  //# sourceMappingURL=_0~8mo49._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[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){try{let{env:a}=(0,t.getCloudflareContext)();if((await a.WS_DO_WORKER.fetch(`http://internal${e}`,{method:"POST",body:n})).ok)return}catch{}try{let t=await fetch(`${a.DEV_WS_DO_URL}${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)}`}])},333192,e=>{"use strict";var t=e.i(80774),a=e.i(404478),r=e.i(732985),n=e.i(481671),i=e.i(638081),o=e.i(204960),s=e.i(924918),l=e.i(363585),d=e.i(906846),u=e.i(359838),c=e.i(383303),p=e.i(234173),h=e.i(270215),v=e.i(830665),w=e.i(944002),m=e.i(193695);e.i(195928);var f=e.i(81543),R=e.i(194218);e.i(700598);var g=e.i(291109),y=e.i(888247),E=e.i(726527),C=e.i(584514),S=e.i(675139),T=e.i(776227),k=e.i(740580),b=e.i(726089),A=e.i(774078);let x=(0,E.createLogger)({service:"machine-tokens/activate"});async function O(e){let t;try{t=await e.json()}catch{return(0,T.writeJSON)({error:"invalid request body"},400)}let a=y.ActivateTokenRequestSchema.safeParse(t);if(!a.success)return(0,T.writeJSON)({error:"invalid payload",details:a.error.flatten()},400);let{token:r,hostname:n,runtimes:i}=a.data,{env:o}=await (0,R.getCloudflareContext)({async:!0}),s=(0,S.getDb)(o.DB),l=await g.queries.machineToken.getMachineTokenByToken(s,r);if(!l)return(0,T.writeJSON)({error:"token not found"},404);if("pending"!==l.status)return(0,T.writeJSON)({error:"token already used"},409);let d=l.workspaceId;if(!d){let e=await g.queries.workspace.listWorkspaces(s,l.userId);if(e.length>0)d=e[0].id;else{let e=await g.queries.workspace.createWorkspace(s,{name:"Personal",slug:(0,C.generateWorkspaceSlug)()});await g.queries.member.createMember(s,{workspaceId:e.id,userId:l.userId,role:"owner"}),d=e.id}}await g.queries.machine.upsertMachine(s,{daemonId:n,workspaceId:d,deviceInfo:n,lastSeenAt:null});let u=[];for(let e of i){let t=await g.queries.runtime.upsertAgentRuntime(s,{workspaceId:d,daemonId:n,runtimeMode:"local",provider:e.type,deviceInfo:n,metadata:{version:e.version}});u.push({...t,machineLastSeenAt:null})}await g.queries.machineToken.activateMachineToken(s,l.id,d),await (0,A.invalidate)(A.cacheKeys.machineToken(r)),await (0,A.invalidate)(A.cacheKeys.runtimeIds(d,n));try{await (0,b.broadcastToUser)(l.userId,{type:"runtime.registered",daemonId:n,hostname:n,workspaceId:d})}catch(e){x.warn("broadcast after activation failed",{userId:l.userId,daemonId:n,err:e instanceof Error?e.message:String(e)})}return(0,T.writeJSON)({daemon_id:n,workspace_id:d,runtimes:u.map(k.runtimeToResponse)})}e.s(["POST",0,O],152656);var I=e.i(152656);let N=new t.AppRouteRouteModule({definition:{kind:a.RouteKind.APP_ROUTE,page:"/api/machine-tokens/activate/route",pathname:"/api/machine-tokens/activate",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/web/src/app/api/machine-tokens/activate/route.ts",nextConfigOutput:"standalone",userland:I,...{}}),{workAsyncStorage:P,workUnitAsyncStorage:_,serverHooks:q}=N;async function M(e,t,r){r.requestMeta&&(0,n.setRequestMeta)(e,r.requestMeta),N.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let R="/api/machine-tokens/activate/route";R=R.replace(/\/index$/,"")||"/";let g=await N.prepare(e,t,{srcPage:R,multiZoneDraftMode:!1});if(!g)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:y,deploymentId:E,params:C,nextConfig:S,parsedUrl:T,isDraftMode:k,prerenderManifest:b,routerServerContext:A,isOnDemandRevalidate:x,revalidateOnlyGenerated:O,resolvedPathname:I,clientReferenceManifest:P,serverActionsManifest:_}=g,q=(0,s.normalizeAppPath)(R),M=!!(b.dynamicRoutes[q]||b.routes[I]),U=async()=>((null==A?void 0:A.render404)?await A.render404(e,t,T,!1):t.end("This page could not be found"),null);if(M&&!k){let e=!!b.routes[I],t=b.dynamicRoutes[q];if(t&&!1===t.fallback&&!e){if(S.adapterPath)return await U();throw new m.NoFallbackError}}let D=null;!M||N.isDev||k||(D="/index"===(D=I)?"/":D);let H=!0===N.isDev||!M,$=M&&!H;_&&P&&(0,o.setManifestsSingleton)({page:R,clientReferenceManifest:P,serverActionsManifest:_});let K=e.method||"GET",W=(0,i.getTracer)(),j=W.getActiveScopeSpan(),L=!!(null==A?void 0:A.isWrappedByNextServer),B=!!(0,n.getRequestMeta)(e,"minimalMode"),F=(0,n.getRequestMeta)(e,"incrementalCache")||await N.getIncrementalCache(e,S,b,B);null==F||F.resetRequestCache(),globalThis.__incrementalCache=F;let J={params:C,previewProps:b.preview,renderOpts:{experimental:{authInterrupts:!!S.experimental.authInterrupts},cacheComponents:!!S.cacheComponents,supportsDynamicResponse:H,incrementalCache:F,cacheLifeProfiles:S.cacheLife,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,r,n)=>N.onRequestError(e,t,r,n,A)},sharedContext:{buildId:y,deploymentId:E}},V=new l.NodeNextRequest(e),G=new l.NodeNextResponse(t),X=d.NextRequestAdapter.fromNodeNextRequest(V,(0,d.signalFromNodeResponse)(t));try{let n,o=async e=>N.handle(X,J).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=W.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=`${K} ${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(`${K} ${R}`)}),s=async n=>{var i,s;let l=async({previousCacheEntry:a})=>{try{if(!B&&x&&O&&!a)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let i=await o(n);e.fetchMetrics=J.renderOpts.fetchMetrics;let s=J.renderOpts.pendingWaitUntil;s&&r.waitUntil&&(r.waitUntil(s),s=void 0);let l=J.renderOpts.collectedTags;if(!M)return await (0,p.sendResponse)(V,G,i,J.renderOpts.pendingWaitUntil),null;{let e=await i.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(i.headers);l&&(t[w.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==J.renderOpts.collectedRevalidate&&!(J.renderOpts.collectedRevalidate>=w.INFINITE_CACHE)&&J.renderOpts.collectedRevalidate,r=void 0===J.renderOpts.collectedExpire||J.renderOpts.collectedExpire>=w.INFINITE_CACHE?void 0:J.renderOpts.collectedExpire;return{value:{kind:f.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:R,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:$,isOnDemandRevalidate:x})},!1,A),t}},d=await N.handleResponse({req:e,nextConfig:S,cacheKey:D,routeKind:a.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:b,isRoutePPREnabled:!1,isOnDemandRevalidate:x,revalidateOnlyGenerated:O,responseGenerator:l,waitUntil:r.waitUntil,isMinimalMode:B});if(!M)return null;if((null==d||null==(i=d.value)?void 0:i.kind)!==f.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==d||null==(s=d.value)?void 0:s.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});B||t.setHeader("x-nextjs-cache",x?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),k&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let u=(0,h.fromNodeOutgoingHttpHeaders)(d.value.headers);return B&&M||u.delete(w.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||t.getHeader("Cache-Control")||u.get("Cache-Control")||u.set("Cache-Control",(0,v.getCacheControlHeader)(d.cacheControl)),await (0,p.sendResponse)(V,G,new Response(d.value.body,{headers:u,status:d.value.status||200})),null};L&&j?await s(j):(n=W.getActiveScopeSpan(),await W.withPropagatedContext(e.headers,()=>W.trace(u.BaseServerSpan.handleRequest,{spanName:`${K} ${R}`,kind:i.SpanKind.SERVER,attributes:{"http.method":K,"http.target":e.url}},s),void 0,!L))}catch(t){if(t instanceof m.NoFallbackError||await N.onRequestError(e,t,{routerKind:"App Router",routePath:q,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:$,isOnDemandRevalidate:x})},!1,A),M)throw t;return await (0,p.sendResponse)(V,G,new Response(null,{status:500})),null}}e.s(["handler",0,M,"patchFetch",0,function(){return(0,r.patchFetch)({workAsyncStorage:P,workUnitAsyncStorage:_})},"routeModule",0,N,"serverHooks",0,q,"workAsyncStorage",0,P,"workUnitAsyncStorage",0,_],333192)}];
1
+ module.exports=[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 o;try{let{env:a}=(0,t.getCloudflareContext)();if(o=a.DEV_WS_DO_URL,(await a.WS_DO_WORKER.fetch(`http://internal${e}`,{method:"POST",body:n})).ok)return}catch{}let s=o||a.DEV_WS_DO_URL;try{let t=await fetch(`${s}${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)}`}])},333192,e=>{"use strict";var t=e.i(80774),a=e.i(404478),r=e.i(732985),n=e.i(481671),i=e.i(638081),o=e.i(204960),s=e.i(924918),l=e.i(363585),d=e.i(906846),u=e.i(359838),c=e.i(383303),p=e.i(234173),h=e.i(270215),v=e.i(830665),w=e.i(944002),m=e.i(193695);e.i(195928);var f=e.i(81543),R=e.i(194218);e.i(700598);var g=e.i(291109),y=e.i(888247),E=e.i(726527),C=e.i(584514),S=e.i(675139),T=e.i(776227),k=e.i(740580),b=e.i(726089),A=e.i(774078);let O=(0,E.createLogger)({service:"machine-tokens/activate"});async function x(e){let t;try{t=await e.json()}catch{return(0,T.writeJSON)({error:"invalid request body"},400)}let a=y.ActivateTokenRequestSchema.safeParse(t);if(!a.success)return(0,T.writeJSON)({error:"invalid payload",details:a.error.flatten()},400);let{token:r,hostname:n,runtimes:i}=a.data,{env:o}=await (0,R.getCloudflareContext)({async:!0}),s=(0,S.getDb)(o.DB),l=await g.queries.machineToken.getMachineTokenByToken(s,r);if(!l)return(0,T.writeJSON)({error:"token not found"},404);if("pending"!==l.status)return(0,T.writeJSON)({error:"token already used"},409);let d=l.workspaceId;if(!d){let e=await g.queries.workspace.listWorkspaces(s,l.userId);if(e.length>0)d=e[0].id;else{let e=await g.queries.workspace.createWorkspace(s,{name:"Personal",slug:(0,C.generateWorkspaceSlug)()});await g.queries.member.createMember(s,{workspaceId:e.id,userId:l.userId,role:"owner"}),d=e.id}}await g.queries.machine.upsertMachine(s,{daemonId:n,workspaceId:d,deviceInfo:n,lastSeenAt:null});let u=[];for(let e of i){let t=await g.queries.runtime.upsertAgentRuntime(s,{workspaceId:d,daemonId:n,runtimeMode:"local",provider:e.type,deviceInfo:n,metadata:{version:e.version}});u.push({...t,machineLastSeenAt:null})}await g.queries.machineToken.activateMachineToken(s,l.id,d),await (0,A.invalidate)(A.cacheKeys.machineToken(r)),await (0,A.invalidate)(A.cacheKeys.runtimeIds(d,n));try{await (0,b.broadcastToUser)(l.userId,{type:"runtime.registered",daemonId:n,hostname:n,workspaceId:d})}catch(e){O.warn("broadcast after activation failed",{userId:l.userId,daemonId:n,err:e instanceof Error?e.message:String(e)})}return(0,T.writeJSON)({daemon_id:n,workspace_id:d,runtimes:u.map(k.runtimeToResponse)})}e.s(["POST",0,x],152656);var _=e.i(152656);let I=new t.AppRouteRouteModule({definition:{kind:a.RouteKind.APP_ROUTE,page:"/api/machine-tokens/activate/route",pathname:"/api/machine-tokens/activate",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/web/src/app/api/machine-tokens/activate/route.ts",nextConfigOutput:"standalone",userland:_,...{}}),{workAsyncStorage:N,workUnitAsyncStorage:P,serverHooks:q}=I;async function D(e,t,r){r.requestMeta&&(0,n.setRequestMeta)(e,r.requestMeta),I.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let R="/api/machine-tokens/activate/route";R=R.replace(/\/index$/,"")||"/";let g=await I.prepare(e,t,{srcPage:R,multiZoneDraftMode:!1});if(!g)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:y,deploymentId:E,params:C,nextConfig:S,parsedUrl:T,isDraftMode:k,prerenderManifest:b,routerServerContext:A,isOnDemandRevalidate:O,revalidateOnlyGenerated:x,resolvedPathname:_,clientReferenceManifest:N,serverActionsManifest:P}=g,q=(0,s.normalizeAppPath)(R),D=!!(b.dynamicRoutes[q]||b.routes[_]),M=async()=>((null==A?void 0:A.render404)?await A.render404(e,t,T,!1):t.end("This page could not be found"),null);if(D&&!k){let e=!!b.routes[_],t=b.dynamicRoutes[q];if(t&&!1===t.fallback&&!e){if(S.adapterPath)return await M();throw new m.NoFallbackError}}let U=null;!D||I.isDev||k||(U="/index"===(U=_)?"/":U);let H=!0===I.isDev||!D,$=D&&!H;P&&N&&(0,o.setManifestsSingleton)({page:R,clientReferenceManifest:N,serverActionsManifest:P});let K=e.method||"GET",W=(0,i.getTracer)(),L=W.getActiveScopeSpan(),j=!!(null==A?void 0:A.isWrappedByNextServer),B=!!(0,n.getRequestMeta)(e,"minimalMode"),F=(0,n.getRequestMeta)(e,"incrementalCache")||await I.getIncrementalCache(e,S,b,B);null==F||F.resetRequestCache(),globalThis.__incrementalCache=F;let J={params:C,previewProps:b.preview,renderOpts:{experimental:{authInterrupts:!!S.experimental.authInterrupts},cacheComponents:!!S.cacheComponents,supportsDynamicResponse:H,incrementalCache:F,cacheLifeProfiles:S.cacheLife,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,r,n)=>I.onRequestError(e,t,r,n,A)},sharedContext:{buildId:y,deploymentId:E}},V=new l.NodeNextRequest(e),G=new l.NodeNextResponse(t),X=d.NextRequestAdapter.fromNodeNextRequest(V,(0,d.signalFromNodeResponse)(t));try{let n,o=async e=>I.handle(X,J).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=W.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=`${K} ${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(`${K} ${R}`)}),s=async n=>{var i,s;let l=async({previousCacheEntry:a})=>{try{if(!B&&O&&x&&!a)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let i=await o(n);e.fetchMetrics=J.renderOpts.fetchMetrics;let s=J.renderOpts.pendingWaitUntil;s&&r.waitUntil&&(r.waitUntil(s),s=void 0);let l=J.renderOpts.collectedTags;if(!D)return await (0,p.sendResponse)(V,G,i,J.renderOpts.pendingWaitUntil),null;{let e=await i.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(i.headers);l&&(t[w.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==J.renderOpts.collectedRevalidate&&!(J.renderOpts.collectedRevalidate>=w.INFINITE_CACHE)&&J.renderOpts.collectedRevalidate,r=void 0===J.renderOpts.collectedExpire||J.renderOpts.collectedExpire>=w.INFINITE_CACHE?void 0:J.renderOpts.collectedExpire;return{value:{kind:f.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 I.onRequestError(e,t,{routerKind:"App Router",routePath:R,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:$,isOnDemandRevalidate:O})},!1,A),t}},d=await I.handleResponse({req:e,nextConfig:S,cacheKey:U,routeKind:a.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:b,isRoutePPREnabled:!1,isOnDemandRevalidate:O,revalidateOnlyGenerated:x,responseGenerator:l,waitUntil:r.waitUntil,isMinimalMode:B});if(!D)return null;if((null==d||null==(i=d.value)?void 0:i.kind)!==f.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==d||null==(s=d.value)?void 0:s.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});B||t.setHeader("x-nextjs-cache",O?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),k&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let u=(0,h.fromNodeOutgoingHttpHeaders)(d.value.headers);return B&&D||u.delete(w.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||t.getHeader("Cache-Control")||u.get("Cache-Control")||u.set("Cache-Control",(0,v.getCacheControlHeader)(d.cacheControl)),await (0,p.sendResponse)(V,G,new Response(d.value.body,{headers:u,status:d.value.status||200})),null};j&&L?await s(L):(n=W.getActiveScopeSpan(),await W.withPropagatedContext(e.headers,()=>W.trace(u.BaseServerSpan.handleRequest,{spanName:`${K} ${R}`,kind:i.SpanKind.SERVER,attributes:{"http.method":K,"http.target":e.url}},s),void 0,!j))}catch(t){if(t instanceof m.NoFallbackError||await I.onRequestError(e,t,{routerKind:"App Router",routePath:q,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:$,isOnDemandRevalidate:O})},!1,A),D)throw t;return await (0,p.sendResponse)(V,G,new Response(null,{status:500})),null}}e.s(["handler",0,D,"patchFetch",0,function(){return(0,r.patchFetch)({workAsyncStorage:N,workUnitAsyncStorage:P})},"routeModule",0,I,"serverHooks",0,q,"workAsyncStorage",0,N,"workUnitAsyncStorage",0,P],333192)}];
2
2
 
3
3
  //# sourceMappingURL=_0~~ji83._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[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,i){try{let{env:a}=(0,t.getCloudflareContext)();if((await a.WS_DO_WORKER.fetch(`http://internal${e}`,{method:"POST",body:r})).ok)return}catch{}try{let t=await fetch(`${a.DEV_WS_DO_URL}${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:r});t.ok||s.warn("broadcast failed",{...i,status:t.status})}catch(e){s.warn("broadcast error",{...i,err:String(e)})}}async function i(e,t){await r(`/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),s=e.i(799579),r=e.i(726089),i=e.i(740580);let n=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,s,r,i=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 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:s,conversationId:t,prompt:r,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 s=await n.findSteerableReplacement(this.db,e,t);if(!s||await n.countRunningTasks(this.db,e,t,s.predecessorId)>=a.maxConcurrentTasks)return null}let s=await n.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 n.claimKillTasks(this.db,e,a,t),r=t-s.length,i=r>0?await n.listPendingTasksByRuntimes(this.db,e,a):[],o=new Set(e),d=new Set,l=[...s];for(let e of i){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 n.startTask(this.db,e,t);if(!a)throw Error("task not in dispatched status");return a}async completeTask(e,t,a,r){let i;try{i=JSON.parse(a)}catch{i={raw:a}}let o=await n.completeTask(this.db,e,t,{result:i,sessionId:r||null});if(!o){let t=await n.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=i,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,r){let i=await n.failTask(this.db,e,t,r);if(!i){let t=await n.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 i.type===a.TASK_TYPES.KILL_TASK||(r&&await d.createMessage(this.db,{conversationId:i.conversationId,role:"assistant",content:`Error: ${r}`,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 s=await c.getIssueByConversation(this.db,e.conversationId,e.workspaceId);!s||s.status===t||await c.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 n.supersedeTask(this.db,e,t);if(!a){let t=await n.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 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 s=await n.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 n.getActiveTaskByConversation(this.db,e,t);if(!r)return null;let i=await n.cancelTask(this.db,r.id,t);return i?(("dispatched"===r.status||"running"===r.status)&&await n.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),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 c=await l.getConversation(this.db,e,t);if(!c)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 u=c.userId;try{let s=o.attachmentIds?JSON.parse(o.attachmentIds):[],l=await n.getLatestTaskForConversation(this.db,e),p=l?.traceId??null,h=await this.enqueueTask(c.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,h.id),(0,r.broadcastToUser)(u,{type:"followup.dispatched",conversationId:e,message:(0,i.messageToResponse)(o),task:(0,i.taskToResponse)(h)}).catch(()=>{}),h}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)(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 r 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(r,t,{skipDispatch:!0,reason:a?.reason})}catch(t){s.log.warn("cancelTrace: failed to cancel task",{traceId:e,convId:r,err:t})}}}])},332432,e=>{"use strict";e.s(["buildEmailMapKey",0,function(e,t){return`email:${e}:${t}`},"extractThreadId",0,function(e,t,a){if(e){let t=e.trim().split(/\s+/)[0];if(t)return t}return t?t.trim():a?a.trim():null}])},531941,e=>{"use strict";var t=e.i(80774),a=e.i(404478),s=e.i(732985),r=e.i(481671),i=e.i(638081),n=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),h=e.i(270215),w=e.i(830665),g=e.i(944002),f=e.i(193695);e.i(195928);var I=e.i(81543),T=e.i(194218);e.i(700598);var k=e.i(291109),m=e.i(704024),E=e.i(332432),v=e.i(888247),y=e.i(719436),S=e.i(675139),b=e.i(776227),R=e.i(205054),A=e.i(726089),_=e.i(740580);async function x(e){let{env:t}=(0,T.getCloudflareContext)(),a=(0,S.getDb)(t.DB),[s,r]=await (0,b.parseBody)(e,v.EmailNotifyRequestSchema);if(r)return r;let i=await k.queries.agent.getAgent(a,s.agentId,s.workspaceId),n=await k.queries.email.createEmail(a,{agentId:s.agentId,workspaceId:s.workspaceId,fromEmail:s.from,toEmail:s.to??"",subject:s.subject,r2Key:s.r2Key,isWhitelisted:s.isWhitelisted,forwarded:s.forwarded,messageId:s.messageId,inReplyTo:s.inReplyTo,references:s.references,direction:"inbound",attachments:s.attachments});if(s.meetingInfo&&i){let e=s.meetingInfo;await k.queries.meetingSession.createMeetingSession(a,{agentId:s.agentId,workspaceId:s.workspaceId,title:e.title||s.subject,meetingUrl:e.meetingUrl,status:s.isWhitelisted?m.MeetingStatus.SCHEDULED:m.MeetingStatus.PENDING,fromEmail:s.from,isWhitelisted:s.isWhitelisted,participants:e.attendees.map(e=>e.email),scheduledAt:e.startTime})}if(s.isWhitelisted&&i&&i.runtimeId&&i.ownerId){let e,t=(0,E.extractThreadId)(s.references,s.inReplyTo,s.messageId),r=t?(0,E.buildEmailMapKey)(i.id,t):null,o=null,d=m.TASK_TYPES.EMAIL_NOTIFICATION;if(r&&(o=await k.queries.conversationMap.findByKey(a,r,s.workspaceId)),o){let t=await k.queries.conversation.getConversation(a,o,s.workspaceId);if(t&&(d=t.type,t.type===m.TASK_TYPES.USER_DM_MESSAGE&&t.userId)){let s=await k.queries.user.getUser(a,t.userId);s&&(e={name:s.name,email:s.email})}}else{let e;if(s.sourceTaskId){let t=await k.queries.task.getTask(a,s.sourceTaskId,s.workspaceId);if(t){let r=await k.queries.conversation.getConversation(a,t.conversationId,s.workspaceId);r&&(e=r.channel)}}o=(await k.queries.conversation.createConversation(a,{workspaceId:i.workspaceId,agentId:i.id,userId:i.ownerId,title:`Email: ${s.subject}`.slice(0,50),type:m.TASK_TYPES.EMAIL_NOTIFICATION,...e&&"default"!==e?{channel:e}:{}})).id,r&&await k.queries.conversationMap.createMapping(a,{key:r,workspaceId:s.workspaceId,conversationId:o})}let l=`New email from ${s.from}: ${s.subject}`,c=JSON.stringify({emailId:n.id}),u=await k.queries.message.createMessage(a,{conversationId:o,role:"event",content:l,metadata:c});d===m.TASK_TYPES.USER_DM_MESSAGE&&(0,A.broadcastToUser)(i.ownerId,{type:"conversation.message",conversationId:o,message:{id:u.id,conversation_id:u.conversationId,role:u.role,content:u.content,task_id:u.taskId,attachment_ids:null,metadata:{emailId:n.id},created_at:u.createdAt}}).catch(()=>{});let p=new R.TaskService(a),h={conversationType:d};e&&(h.dmUser=e);let w=s.traceId||"tr_"+(0,y.nanoid)(),g=s.traceId&&s.sourceTaskId||null,f=await p.enqueueTask(i.id,o,i.workspaceId,l,m.TASK_TYPES.EMAIL_NOTIFICATION,{contextKey:o,context:h,traceId:w,parentTaskId:g});k.queries.message.updateMessageTaskId(a,u.id,f.id).catch(()=>{}),d===m.TASK_TYPES.USER_DM_MESSAGE&&(0,A.broadcastToUser)(i.ownerId,{type:"task.created",conversationId:o,task:(0,_.taskToResponse)(f)}).catch(()=>{})}return i?.ownerId&&(0,A.broadcastToUser)(i.ownerId,{type:"email.received",agentId:s.agentId}).catch(()=>{}),(0,b.writeJSON)({ok:!0})}e.s(["POST",0,x],930700);var C=e.i(930700);let M=new t.AppRouteRouteModule({definition:{kind:a.RouteKind.APP_ROUTE,page:"/api/email/notify/route",pathname:"/api/email/notify",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/web/src/app/api/email/notify/route.ts",nextConfigOutput:"standalone",userland:C,...{}}),{workAsyncStorage:N,workUnitAsyncStorage:q,serverHooks:O}=M;async function P(e,t,s){s.requestMeta&&(0,r.setRequestMeta)(e,s.requestMeta),M.isDev&&(0,r.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let T="/api/email/notify/route";T=T.replace(/\/index$/,"")||"/";let k=await M.prepare(e,t,{srcPage:T,multiZoneDraftMode:!1});if(!k)return t.statusCode=400,t.end("Bad Request"),null==s.waitUntil||s.waitUntil.call(s,Promise.resolve()),null;let{buildId:m,deploymentId:E,params:v,nextConfig:y,parsedUrl:S,isDraftMode:b,prerenderManifest:R,routerServerContext:A,isOnDemandRevalidate:_,revalidateOnlyGenerated:x,resolvedPathname:C,clientReferenceManifest:N,serverActionsManifest:q}=k,O=(0,o.normalizeAppPath)(T),P=!!(R.dynamicRoutes[O]||R.routes[C]),K=async()=>((null==A?void 0:A.render404)?await A.render404(e,t,S,!1):t.end("This page could not be found"),null);if(P&&!b){let e=!!R.routes[C],t=R.dynamicRoutes[O];if(t&&!1===t.fallback&&!e){if(y.adapterPath)return await K();throw new f.NoFallbackError}}let U=null;!P||M.isDev||b||(U="/index"===(U=C)?"/":U);let $=!0===M.isDev||!P,D=P&&!$;q&&N&&(0,n.setManifestsSingleton)({page:T,clientReferenceManifest:N,serverActionsManifest:q});let B=e.method||"GET",L=(0,i.getTracer)(),H=L.getActiveScopeSpan(),F=!!(null==A?void 0:A.isWrappedByNextServer),j=!!(0,r.getRequestMeta)(e,"minimalMode"),W=(0,r.getRequestMeta)(e,"incrementalCache")||await M.getIncrementalCache(e,y,R,j);null==W||W.resetRequestCache(),globalThis.__incrementalCache=W;let Y={params:v,previewProps:R.preview,renderOpts:{experimental:{authInterrupts:!!y.experimental.authInterrupts},cacheComponents:!!y.cacheComponents,supportsDynamicResponse:$,incrementalCache:W,cacheLifeProfiles:y.cacheLife,waitUntil:s.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,s,r)=>M.onRequestError(e,t,s,r,A)},sharedContext:{buildId:m,deploymentId:E}},G=new d.NodeNextRequest(e),J=new d.NodeNextResponse(t),V=l.NextRequestAdapter.fromNodeNextRequest(G,(0,l.signalFromNodeResponse)(t));try{let r,n=async e=>M.handle(V,Y).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=L.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==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 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} ${T}`)}),o=async r=>{var i,o;let d=async({previousCacheEntry:a})=>{try{if(!j&&_&&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(r);e.fetchMetrics=Y.renderOpts.fetchMetrics;let o=Y.renderOpts.pendingWaitUntil;o&&s.waitUntil&&(s.waitUntil(o),o=void 0);let d=Y.renderOpts.collectedTags;if(!P)return await (0,p.sendResponse)(G,J,i,Y.renderOpts.pendingWaitUntil),null;{let e=await i.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(i.headers);d&&(t[g.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>=g.INFINITE_CACHE)&&Y.renderOpts.collectedRevalidate,s=void 0===Y.renderOpts.collectedExpire||Y.renderOpts.collectedExpire>=g.INFINITE_CACHE?void 0:Y.renderOpts.collectedExpire;return{value:{kind:I.CachedRouteKind.APP_ROUTE,status:i.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:s}}}}catch(t){throw(null==a?void 0:a.isStale)&&await M.onRequestError(e,t,{routerKind:"App Router",routePath:T,routeType:"route",revalidateReason:(0,u.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:_})},!1,A),t}},l=await M.handleResponse({req:e,nextConfig:y,cacheKey:U,routeKind:a.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:R,isRoutePPREnabled:!1,isOnDemandRevalidate:_,revalidateOnlyGenerated:x,responseGenerator:d,waitUntil:s.waitUntil,isMinimalMode:j});if(!P)return null;if((null==l||null==(i=l.value)?void 0:i.kind)!==I.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});j||t.setHeader("x-nextjs-cache",_?"REVALIDATED":l.isMiss?"MISS":l.isStale?"STALE":"HIT"),b&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let c=(0,h.fromNodeOutgoingHttpHeaders)(l.value.headers);return j&&P||c.delete(g.NEXT_CACHE_TAGS_HEADER),!l.cacheControl||t.getHeader("Cache-Control")||c.get("Cache-Control")||c.set("Cache-Control",(0,w.getCacheControlHeader)(l.cacheControl)),await (0,p.sendResponse)(G,J,new Response(l.value.body,{headers:c,status:l.value.status||200})),null};F&&H?await o(H):(r=L.getActiveScopeSpan(),await L.withPropagatedContext(e.headers,()=>L.trace(c.BaseServerSpan.handleRequest,{spanName:`${B} ${T}`,kind:i.SpanKind.SERVER,attributes:{"http.method":B,"http.target":e.url}},o),void 0,!F))}catch(t){if(t instanceof f.NoFallbackError||await M.onRequestError(e,t,{routerKind:"App Router",routePath:O,routeType:"route",revalidateReason:(0,u.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:_})},!1,A),P)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,s.patchFetch)({workAsyncStorage:N,workUnitAsyncStorage:q})},"routeModule",0,M,"serverHooks",0,O,"workAsyncStorage",0,N,"workUnitAsyncStorage",0,q],531941)}];
1
+ module.exports=[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,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:r})).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:r});t.ok||s.warn("broadcast failed",{...i,status:t.status})}catch(e){s.warn("broadcast error",{...i,err:String(e)})}}async function i(e,t){await r(`/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),s=e.i(799579),r=e.i(726089),i=e.i(740580);let n=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,s,r,i=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 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:s,conversationId:t,prompt:r,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 s=await n.findSteerableReplacement(this.db,e,t);if(!s||await n.countRunningTasks(this.db,e,t,s.predecessorId)>=a.maxConcurrentTasks)return null}let s=await n.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 n.claimKillTasks(this.db,e,a,t),r=t-s.length,i=r>0?await n.listPendingTasksByRuntimes(this.db,e,a):[],o=new Set(e),d=new Set,l=[...s];for(let e of i){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 n.startTask(this.db,e,t);if(!a)throw Error("task not in dispatched status");return a}async completeTask(e,t,a,r){let i;try{i=JSON.parse(a)}catch{i={raw:a}}let o=await n.completeTask(this.db,e,t,{result:i,sessionId:r||null});if(!o){let t=await n.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=i,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,r){let i=await n.failTask(this.db,e,t,r);if(!i){let t=await n.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 i.type===a.TASK_TYPES.KILL_TASK||(r&&await d.createMessage(this.db,{conversationId:i.conversationId,role:"assistant",content:`Error: ${r}`,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 s=await c.getIssueByConversation(this.db,e.conversationId,e.workspaceId);!s||s.status===t||await c.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 n.supersedeTask(this.db,e,t);if(!a){let t=await n.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 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 s=await n.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 n.getActiveTaskByConversation(this.db,e,t);if(!r)return null;let i=await n.cancelTask(this.db,r.id,t);return i?(("dispatched"===r.status||"running"===r.status)&&await n.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),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 c=await l.getConversation(this.db,e,t);if(!c)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 u=c.userId;try{let s=o.attachmentIds?JSON.parse(o.attachmentIds):[],l=await n.getLatestTaskForConversation(this.db,e),p=l?.traceId??null,h=await this.enqueueTask(c.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,h.id),(0,r.broadcastToUser)(u,{type:"followup.dispatched",conversationId:e,message:(0,i.messageToResponse)(o),task:(0,i.taskToResponse)(h)}).catch(()=>{}),h}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)(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 r 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(r,t,{skipDispatch:!0,reason:a?.reason})}catch(t){s.log.warn("cancelTrace: failed to cancel task",{traceId:e,convId:r,err:t})}}}])},332432,e=>{"use strict";e.s(["buildEmailMapKey",0,function(e,t){return`email:${e}:${t}`},"extractThreadId",0,function(e,t,a){if(e){let t=e.trim().split(/\s+/)[0];if(t)return t}return t?t.trim():a?a.trim():null}])},531941,e=>{"use strict";var t=e.i(80774),a=e.i(404478),s=e.i(732985),r=e.i(481671),i=e.i(638081),n=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),h=e.i(270215),w=e.i(830665),g=e.i(944002),f=e.i(193695);e.i(195928);var I=e.i(81543),T=e.i(194218);e.i(700598);var k=e.i(291109),m=e.i(704024),E=e.i(332432),v=e.i(888247),S=e.i(719436),y=e.i(675139),b=e.i(776227),R=e.i(205054),A=e.i(726089),_=e.i(740580);async function x(e){let{env:t}=(0,T.getCloudflareContext)(),a=(0,y.getDb)(t.DB),[s,r]=await (0,b.parseBody)(e,v.EmailNotifyRequestSchema);if(r)return r;let i=await k.queries.agent.getAgent(a,s.agentId,s.workspaceId),n=await k.queries.email.createEmail(a,{agentId:s.agentId,workspaceId:s.workspaceId,fromEmail:s.from,toEmail:s.to??"",subject:s.subject,r2Key:s.r2Key,isWhitelisted:s.isWhitelisted,forwarded:s.forwarded,messageId:s.messageId,inReplyTo:s.inReplyTo,references:s.references,direction:"inbound",attachments:s.attachments});if(s.meetingInfo&&i){let e=s.meetingInfo;await k.queries.meetingSession.createMeetingSession(a,{agentId:s.agentId,workspaceId:s.workspaceId,title:e.title||s.subject,meetingUrl:e.meetingUrl,status:s.isWhitelisted?m.MeetingStatus.SCHEDULED:m.MeetingStatus.PENDING,fromEmail:s.from,isWhitelisted:s.isWhitelisted,participants:e.attendees.map(e=>e.email),scheduledAt:e.startTime})}if(s.isWhitelisted&&i&&i.runtimeId&&i.ownerId){let e,t=(0,E.extractThreadId)(s.references,s.inReplyTo,s.messageId),r=t?(0,E.buildEmailMapKey)(i.id,t):null,o=null,d=m.TASK_TYPES.EMAIL_NOTIFICATION;if(r&&(o=await k.queries.conversationMap.findByKey(a,r,s.workspaceId)),o){let t=await k.queries.conversation.getConversation(a,o,s.workspaceId);if(t&&(d=t.type,t.type===m.TASK_TYPES.USER_DM_MESSAGE&&t.userId)){let s=await k.queries.user.getUser(a,t.userId);s&&(e={name:s.name,email:s.email})}}else{let e;if(s.sourceTaskId){let t=await k.queries.task.getTask(a,s.sourceTaskId,s.workspaceId);if(t){let r=await k.queries.conversation.getConversation(a,t.conversationId,s.workspaceId);r&&(e=r.channel)}}o=(await k.queries.conversation.createConversation(a,{workspaceId:i.workspaceId,agentId:i.id,userId:i.ownerId,title:`Email: ${s.subject}`.slice(0,50),type:m.TASK_TYPES.EMAIL_NOTIFICATION,...e&&"default"!==e?{channel:e}:{}})).id,r&&await k.queries.conversationMap.createMapping(a,{key:r,workspaceId:s.workspaceId,conversationId:o})}let l=`New email from ${s.from}: ${s.subject}`,c=JSON.stringify({emailId:n.id}),u=await k.queries.message.createMessage(a,{conversationId:o,role:"event",content:l,metadata:c});d===m.TASK_TYPES.USER_DM_MESSAGE&&(0,A.broadcastToUser)(i.ownerId,{type:"conversation.message",conversationId:o,message:{id:u.id,conversation_id:u.conversationId,role:u.role,content:u.content,task_id:u.taskId,attachment_ids:null,metadata:{emailId:n.id},created_at:u.createdAt}}).catch(()=>{});let p=new R.TaskService(a),h={conversationType:d};e&&(h.dmUser=e);let w=s.traceId||"tr_"+(0,S.nanoid)(),g=s.traceId&&s.sourceTaskId||null,f=await p.enqueueTask(i.id,o,i.workspaceId,l,m.TASK_TYPES.EMAIL_NOTIFICATION,{contextKey:o,context:h,traceId:w,parentTaskId:g});k.queries.message.updateMessageTaskId(a,u.id,f.id).catch(()=>{}),d===m.TASK_TYPES.USER_DM_MESSAGE&&(0,A.broadcastToUser)(i.ownerId,{type:"task.created",conversationId:o,task:(0,_.taskToResponse)(f)}).catch(()=>{})}return i?.ownerId&&(0,A.broadcastToUser)(i.ownerId,{type:"email.received",agentId:s.agentId}).catch(()=>{}),(0,b.writeJSON)({ok:!0})}e.s(["POST",0,x],930700);var C=e.i(930700);let M=new t.AppRouteRouteModule({definition:{kind:a.RouteKind.APP_ROUTE,page:"/api/email/notify/route",pathname:"/api/email/notify",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/web/src/app/api/email/notify/route.ts",nextConfigOutput:"standalone",userland:C,...{}}),{workAsyncStorage:N,workUnitAsyncStorage:O,serverHooks:q}=M;async function P(e,t,s){s.requestMeta&&(0,r.setRequestMeta)(e,s.requestMeta),M.isDev&&(0,r.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let T="/api/email/notify/route";T=T.replace(/\/index$/,"")||"/";let k=await M.prepare(e,t,{srcPage:T,multiZoneDraftMode:!1});if(!k)return t.statusCode=400,t.end("Bad Request"),null==s.waitUntil||s.waitUntil.call(s,Promise.resolve()),null;let{buildId:m,deploymentId:E,params:v,nextConfig:S,parsedUrl:y,isDraftMode:b,prerenderManifest:R,routerServerContext:A,isOnDemandRevalidate:_,revalidateOnlyGenerated:x,resolvedPathname:C,clientReferenceManifest:N,serverActionsManifest:O}=k,q=(0,o.normalizeAppPath)(T),P=!!(R.dynamicRoutes[q]||R.routes[C]),K=async()=>((null==A?void 0:A.render404)?await A.render404(e,t,y,!1):t.end("This page could not be found"),null);if(P&&!b){let e=!!R.routes[C],t=R.dynamicRoutes[q];if(t&&!1===t.fallback&&!e){if(S.adapterPath)return await K();throw new f.NoFallbackError}}let U=null;!P||M.isDev||b||(U="/index"===(U=C)?"/":U);let D=!0===M.isDev||!P,$=P&&!D;O&&N&&(0,n.setManifestsSingleton)({page:T,clientReferenceManifest:N,serverActionsManifest:O});let B=e.method||"GET",L=(0,i.getTracer)(),H=L.getActiveScopeSpan(),F=!!(null==A?void 0:A.isWrappedByNextServer),j=!!(0,r.getRequestMeta)(e,"minimalMode"),W=(0,r.getRequestMeta)(e,"incrementalCache")||await M.getIncrementalCache(e,S,R,j);null==W||W.resetRequestCache(),globalThis.__incrementalCache=W;let Y={params:v,previewProps:R.preview,renderOpts:{experimental:{authInterrupts:!!S.experimental.authInterrupts},cacheComponents:!!S.cacheComponents,supportsDynamicResponse:D,incrementalCache:W,cacheLifeProfiles:S.cacheLife,waitUntil:s.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,s,r)=>M.onRequestError(e,t,s,r,A)},sharedContext:{buildId:m,deploymentId:E}},G=new d.NodeNextRequest(e),V=new d.NodeNextResponse(t),J=l.NextRequestAdapter.fromNodeNextRequest(G,(0,l.signalFromNodeResponse)(t));try{let r,n=async e=>M.handle(J,Y).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=L.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==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 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} ${T}`)}),o=async r=>{var i,o;let d=async({previousCacheEntry:a})=>{try{if(!j&&_&&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(r);e.fetchMetrics=Y.renderOpts.fetchMetrics;let o=Y.renderOpts.pendingWaitUntil;o&&s.waitUntil&&(s.waitUntil(o),o=void 0);let d=Y.renderOpts.collectedTags;if(!P)return await (0,p.sendResponse)(G,V,i,Y.renderOpts.pendingWaitUntil),null;{let e=await i.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(i.headers);d&&(t[g.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>=g.INFINITE_CACHE)&&Y.renderOpts.collectedRevalidate,s=void 0===Y.renderOpts.collectedExpire||Y.renderOpts.collectedExpire>=g.INFINITE_CACHE?void 0:Y.renderOpts.collectedExpire;return{value:{kind:I.CachedRouteKind.APP_ROUTE,status:i.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:s}}}}catch(t){throw(null==a?void 0:a.isStale)&&await M.onRequestError(e,t,{routerKind:"App Router",routePath:T,routeType:"route",revalidateReason:(0,u.getRevalidateReason)({isStaticGeneration:$,isOnDemandRevalidate:_})},!1,A),t}},l=await M.handleResponse({req:e,nextConfig:S,cacheKey:U,routeKind:a.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:R,isRoutePPREnabled:!1,isOnDemandRevalidate:_,revalidateOnlyGenerated:x,responseGenerator:d,waitUntil:s.waitUntil,isMinimalMode:j});if(!P)return null;if((null==l||null==(i=l.value)?void 0:i.kind)!==I.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});j||t.setHeader("x-nextjs-cache",_?"REVALIDATED":l.isMiss?"MISS":l.isStale?"STALE":"HIT"),b&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let c=(0,h.fromNodeOutgoingHttpHeaders)(l.value.headers);return j&&P||c.delete(g.NEXT_CACHE_TAGS_HEADER),!l.cacheControl||t.getHeader("Cache-Control")||c.get("Cache-Control")||c.set("Cache-Control",(0,w.getCacheControlHeader)(l.cacheControl)),await (0,p.sendResponse)(G,V,new Response(l.value.body,{headers:c,status:l.value.status||200})),null};F&&H?await o(H):(r=L.getActiveScopeSpan(),await L.withPropagatedContext(e.headers,()=>L.trace(c.BaseServerSpan.handleRequest,{spanName:`${B} ${T}`,kind:i.SpanKind.SERVER,attributes:{"http.method":B,"http.target":e.url}},o),void 0,!F))}catch(t){if(t instanceof f.NoFallbackError||await M.onRequestError(e,t,{routerKind:"App Router",routePath:q,routeType:"route",revalidateReason:(0,u.getRevalidateReason)({isStaticGeneration:$,isOnDemandRevalidate:_})},!1,A),P)throw t;return await (0,p.sendResponse)(G,V,new Response(null,{status:500})),null}}e.s(["handler",0,P,"patchFetch",0,function(){return(0,s.patchFetch)({workAsyncStorage:N,workUnitAsyncStorage:O})},"routeModule",0,M,"serverHooks",0,q,"workAsyncStorage",0,N,"workUnitAsyncStorage",0,O],531941)}];
2
2
 
3
3
  //# sourceMappingURL=_13_kcb9._.js.map