@alook/app 0.0.65 → 0.0.66

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 (31) hide show
  1. package/bundled/web/.open-next/.build/durable-objects/queue.js +5 -5
  2. package/bundled/web/.open-next/assets/BUILD_ID +1 -1
  3. package/bundled/web/.open-next/cache/{3_EdlLCy1irSUmRkAk1eZ → FHMg7Y3SKvukCWYg90U0U}/_global-error.cache +1 -1
  4. package/bundled/web/.open-next/cache/{3_EdlLCy1irSUmRkAk1eZ → FHMg7Y3SKvukCWYg90U0U}/_not-found.cache +1 -1
  5. package/bundled/web/.open-next/cache/{3_EdlLCy1irSUmRkAk1eZ → FHMg7Y3SKvukCWYg90U0U}/sitemap.xml.cache +1 -1
  6. package/bundled/web/.open-next/cloudflare/cache-assets-manifest.sql +1 -1
  7. package/bundled/web/.open-next/cloudflare/init.js +1 -1
  8. package/bundled/web/.open-next/dynamodb-provider/dynamodb-cache.json +1 -1
  9. package/bundled/web/.open-next/middleware/handler.mjs +3 -3
  10. package/bundled/web/.open-next/server-functions/default/src/web/.next/BUILD_ID +1 -1
  11. package/bundled/web/.open-next/server-functions/default/src/web/.next/build-manifest.json +3 -3
  12. package/bundled/web/.open-next/server-functions/default/src/web/.next/prerender-manifest.json +3 -3
  13. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__0.b.vdv._.js +6 -6
  14. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__0rg.nbz._.js +10 -10
  15. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__0u8xtc8._.js +10 -10
  16. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0c9~wb-._.js +1 -1
  17. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0dp6scf._.js +1 -1
  18. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0gtp8_j._.js +1 -1
  19. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/src_0hsbnq1._.js +1 -1
  20. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/middleware-build-manifest.js +3 -3
  21. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/middleware-manifest.json +5 -5
  22. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/server-reference-manifest.js +1 -1
  23. package/bundled/web/.open-next/server-functions/default/src/web/.next/server/server-reference-manifest.json +1 -1
  24. package/bundled/web/.open-next/server-functions/default/src/web/handler.mjs +31 -31
  25. package/bundled/web/.open-next/server-functions/default/src/web/handler.mjs.meta.json +31 -31
  26. package/bundled/web/.open-next/server-functions/default/src/web/index.mjs +3 -3
  27. package/package.json +1 -1
  28. /package/bundled/web/.open-next/assets/_next/static/{3_EdlLCy1irSUmRkAk1eZ → FHMg7Y3SKvukCWYg90U0U}/_buildManifest.js +0 -0
  29. /package/bundled/web/.open-next/assets/_next/static/{3_EdlLCy1irSUmRkAk1eZ → FHMg7Y3SKvukCWYg90U0U}/_clientMiddlewareManifest.js +0 -0
  30. /package/bundled/web/.open-next/assets/_next/static/{3_EdlLCy1irSUmRkAk1eZ → FHMg7Y3SKvukCWYg90U0U}/_ssgManifest.js +0 -0
  31. /package/bundled/web/.open-next/cache/{3_EdlLCy1irSUmRkAk1eZ → FHMg7Y3SKvukCWYg90U0U}/robots.txt.cache +0 -0
@@ -1,4 +1,4 @@
1
- module.exports=[918622,(e,t,a)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},556704,(e,t,a)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},832319,(e,t,a)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},324725,(e,t,a)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},666680,(e,t,a)=>{t.exports=e.x("node:crypto",()=>require("node:crypto"))},441573,e=>e.a(async(t,a)=>{try{let t=await e.y("better-auth-70f4e3a390e32871");e.n(t),a()}catch(e){a(e)}},!0),759139,e=>e.a(async(t,a)=>{try{let t=await e.y("better-auth-70f4e3a390e32871/plugins");e.n(t),a()}catch(e){a(e)}},!0),193695,(e,t,a)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},726527,e=>{"use strict";let t={debug:0,info:1,warn:2,error:3,silent:4};class a{service;level;pretty;fields;constructor(e,a){this.service=e.service,this.level=t[e.level??"info"],this.pretty=e.pretty??!1,this.fields=a??{}}debug(e,t){this.write("debug",e,t)}info(e,t){this.write("info",e,t)}warn(e,t){this.write("warn",e,t)}error(e,t){this.write("error",e,t)}child(e){let t={...this.fields,...e};return new a({service:this.service,level:this.levelName(),pretty:this.pretty},t)}levelName(){for(let[e,a]of Object.entries(t))if(a===this.level)return e;return"info"}write(e,a,r){let i;if(t[e]<this.level)return;let s={level:e,msg:a,service:this.service,...this.fields,...r,ts:new Date().toISOString()};for(let[e,t]of Object.entries(s))t instanceof Error&&(s[e]={message:t.message,stack:t.stack});if(this.pretty){let e=s.ts.replace("T"," ").replace("Z",""),t=s.level.toUpperCase().padEnd(5),a=Object.entries(s).filter(([e])=>"level"!==e&&"msg"!==e&&"service"!==e&&"ts"!==e).map(([e,t])=>`${e}=${"object"==typeof t?JSON.stringify(t):t}`).join(" ");i=`${e} ${t} [${s.service}] ${s.msg}${a?" "+a:""}`}else i=JSON.stringify(s);"error"===e?console.error(i):console.log(i)}}e.s(["Logger",0,a,"createLogger",0,function(e){return new a(e)}])},866990,e=>{"use strict";e.s(["resolveMode",0,function(e){return("development"!==e.nodeEnv||e.cmdPrefix)&&(!e.serverUrl||e.cmdPrefix)?e.cmdPrefix||e.hostname&&["localhost","127.0.0.1"].includes(e.hostname)?"app":"production":"dev"}])},417188,e=>{"use strict";let t={"sign-in":"Your Alook sign-in code","email-verification":"Verify your Alook email","forget-password":"Reset your Alook password","change-email":"Confirm your new email address"},a={"sign-in":"Sign in to Alook","email-verification":"Verify your email","forget-password":"Reset your password","change-email":"Confirm email change"},r={"sign-in":"Enter this code to sign in to your account.","email-verification":"Enter this code to verify your email address.","forget-password":"Enter this code to reset your password.","change-email":"Enter this code to confirm your new email address."};e.s(["getOtpSubject",0,function(e){return t[e]},"renderOtpEmail",0,function(e,t){let i=a[t],s=r[t];return`<!DOCTYPE html>
1
+ module.exports=[918622,(e,t,a)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},556704,(e,t,a)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},832319,(e,t,a)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},324725,(e,t,a)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},666680,(e,t,a)=>{t.exports=e.x("node:crypto",()=>require("node:crypto"))},441573,e=>e.a(async(t,a)=>{try{let t=await e.y("better-auth-70f4e3a390e32871");e.n(t),a()}catch(e){a(e)}},!0),759139,e=>e.a(async(t,a)=>{try{let t=await e.y("better-auth-70f4e3a390e32871/plugins");e.n(t),a()}catch(e){a(e)}},!0),193695,(e,t,a)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},726527,e=>{"use strict";let t={debug:0,info:1,warn:2,error:3,silent:4};class a{service;level;pretty;fields;constructor(e,a){this.service=e.service,this.level=t[e.level??"info"],this.pretty=e.pretty??!1,this.fields=a??{}}debug(e,t){this.write("debug",e,t)}info(e,t){this.write("info",e,t)}warn(e,t){this.write("warn",e,t)}error(e,t){this.write("error",e,t)}child(e){let t={...this.fields,...e};return new a({service:this.service,level:this.levelName(),pretty:this.pretty},t)}levelName(){for(let[e,a]of Object.entries(t))if(a===this.level)return e;return"info"}write(e,a,r){let i;if(t[e]<this.level)return;let n={level:e,msg:a,service:this.service,...this.fields,...r,ts:new Date().toISOString()};for(let[e,t]of Object.entries(n))t instanceof Error&&(n[e]={message:t.message,stack:t.stack});if(this.pretty){let e=n.ts.replace("T"," ").replace("Z",""),t=n.level.toUpperCase().padEnd(5),a=Object.entries(n).filter(([e])=>"level"!==e&&"msg"!==e&&"service"!==e&&"ts"!==e).map(([e,t])=>`${e}=${"object"==typeof t?JSON.stringify(t):t}`).join(" ");i=`${e} ${t} [${n.service}] ${n.msg}${a?" "+a:""}`}else i=JSON.stringify(n);"error"===e?console.error(i):console.log(i)}}e.s(["Logger",0,a,"createLogger",0,function(e){return new a(e)}])},866990,e=>{"use strict";e.s(["resolveMode",0,function(e){return("development"!==e.nodeEnv||e.cmdPrefix)&&(!e.serverUrl||e.cmdPrefix)?e.cmdPrefix||e.hostname&&["localhost","127.0.0.1"].includes(e.hostname)?"app":"production":"dev"}])},417188,e=>{"use strict";let t={"sign-in":"Your Alook sign-in code","email-verification":"Verify your Alook email","forget-password":"Reset your Alook password","change-email":"Confirm your new email address"},a={"sign-in":"Sign in to Alook","email-verification":"Verify your email","forget-password":"Reset your password","change-email":"Confirm email change"},r={"sign-in":"Enter this code to sign in to your account.","email-verification":"Enter this code to verify your email address.","forget-password":"Enter this code to reset your password.","change-email":"Enter this code to confirm your new email address."};e.s(["getOtpSubject",0,function(e){return t[e]},"renderOtpEmail",0,function(e,t){let i=a[t],n=r[t];return`<!DOCTYPE html>
2
2
  <html lang="en">
3
3
  <head>
4
4
  <meta charset="utf-8">
@@ -12,7 +12,7 @@ module.exports=[918622,(e,t,a)=>{t.exports=e.x("next/dist/compiled/next-server/a
12
12
  <tr><td>
13
13
  <p style="margin:0 0 8px;font-size:14px;font-weight:600;color:#8c7e6f;letter-spacing:0.04em;text-transform:uppercase;">Alook</p>
14
14
  <h1 style="margin:0 0 12px;font-size:22px;font-weight:600;color:#2c2825;line-height:1.3;">${i}</h1>
15
- <p style="margin:0 0 28px;font-size:15px;color:#6b6057;line-height:1.5;">${s}</p>
15
+ <p style="margin:0 0 28px;font-size:15px;color:#6b6057;line-height:1.5;">${n}</p>
16
16
  <div style="background-color:#faf8f6;border:1px solid #ebe7e2;border-radius:6px;padding:20px;text-align:center;margin:0 0 28px;">
17
17
  <span style="font-size:32px;font-weight:700;letter-spacing:0.2em;color:#2c2825;font-family:'SF Mono',SFMono-Regular,Consolas,'Liberation Mono',Menlo,Courier,monospace;">${e}</span>
18
18
  </div>
@@ -22,7 +22,7 @@ module.exports=[918622,(e,t,a)=>{t.exports=e.x("next/dist/compiled/next-server/a
22
22
  </td></tr>
23
23
  </table>
24
24
  </body>
25
- </html>`}])},342573,e=>e.a(async(t,a)=>{try{var r=e.i(441573),i=e.i(759139);e.i(700598);var s=e.i(726527),n=e.i(704024),o=e.i(866990),c=e.i(417188),l=t([r,i]);[r,i]=l.then?(await l)():l;let p=(0,s.createLogger)({service:"auth"});function d(e,t){if(!e)return t;let a=Number.parseInt(e,10);return Number.isFinite(a)&&a>0?a:t}e.s(["createAuth",0,function(e){let t=(0,o.resolveMode)({nodeEnv:e.NODE_ENV??"production"}),a="production"===t,s=d(e.AUTH_OTP_RATE_LIMIT_MAX,5),l=d(e.AUTH_OTP_RATE_LIMIT_WINDOW_SEC,60),u=Math.max(60,l);return(0,r.betterAuth)({baseURL:e.BETTER_AUTH_URL,database:e.DB,secret:e.BETTER_AUTH_SECRET,session:{expiresIn:2592e3,updateAge:86400,cookieCache:{enabled:!0,maxAge:300}},emailAndPassword:{enabled:!a,requireEmailVerification:!1},socialProviders:{github:{clientId:e.GITHUB_CLIENT_ID,clientSecret:e.GITHUB_CLIENT_SECRET},google:{clientId:e.GOOGLE_CLIENT_ID,clientSecret:e.GOOGLE_CLIENT_SECRET}},rateLimit:{enabled:a,customRules:{"/email-otp/send-verification-otp":{window:l,max:s}},customStorage:{get:async t=>{let a=await e.RATE_LIMIT_KV.get(t);return a?JSON.parse(a):void 0},set:async(t,a)=>{await e.RATE_LIMIT_KV.put(t,JSON.stringify(a),{expirationTtl:u})}}},plugins:a?[(0,i.emailOTP)({async sendVerificationOTP({email:t,otp:a,type:r}){p.info("sending OTP email",{to:t,type:r});try{let i,s=JSON.stringify({to:t,subject:(0,c.getOtpSubject)(r),html:(0,c.renderOtpEmail)(a,r)}),o={method:"POST",headers:{"Content-Type":"application/json"},body:s};try{i=await e.EMAIL_WORKER.fetch("http://internal/send/otp",o)}catch{i=await fetch(`${n.DEV_EMAIL_WORKER_URL}/send/otp`,o)}if(!i.ok){let e=await i.text();throw Error(`EMAIL_WORKER /send/otp failed: ${i.status} ${e}`)}p.info("OTP email sent",{to:t,type:r})}catch(e){throw p.error("OTP email failed",{to:t,type:r,err:e}),e}}})]:[]})}]),a()}catch(e){a(e)}},!1),774078,e=>{"use strict";let t;function a(){return t??null}async function r(e,t,r){let i=a();if(i)try{let t=await i.get(e);if(t)return JSON.parse(t)}catch(t){console.warn(`[cache] KV read failed for ${e}:`,t)}let s=await r();return null!=s&&i&&i.put(e,JSON.stringify(s),{expirationTtl:t}).catch(t=>{console.warn(`[cache] KV write failed for ${e}:`,t)}),s}async function i(e,t,r){if(0===e.length)return new Map;let i=a(),s=new Map,n=e;if(i){let t=[];await Promise.all(e.map(async e=>{try{let a=await i.get(e);a&&(s.set(e,JSON.parse(a)),t.push(e))}catch(t){console.warn(`[cache] KV batch read failed for ${e}:`,t)}})),n=e.filter(e=>!t.includes(e))}if(n.length>0)for(let[e,a]of(await r(n)))s.set(e,a),null!=a&&i&&i.put(e,JSON.stringify(a),{expirationTtl:t}).catch(t=>{console.warn(`[cache] KV batch write failed for ${e}:`,t)});return s}async function s(e){let t=a();t&&await t.delete(e).catch(t=>{console.warn(`[cache] KV delete failed for ${e}:`,t)})}async function n(e){let t=a();t&&0!==e.length&&await Promise.all(e.map(e=>t.delete(e).catch(t=>{console.warn(`[cache] KV delete failed for ${e}:`,t)})))}e.s(["bindCacheKV",0,function(e){t=e},"cacheKeys",0,{machineToken:e=>`mt:${e.slice(0,20)}`,machineTokenLastUsed:e=>`mt_lu:${e.slice(0,20)}`,member:(e,t)=>`mem:${e}:${t}`,runtimeIds:(e,t)=>`rt:${e}:${t}`,agent:(e,t)=>`ag:${e}:${t}`,heartbeat:(e,t)=>`hb:${e}:${t}`,user:e=>`usr:${e}`,emailAccountsByAgent:(e,t)=>`ea:${e}:${t}`,colleaguesByAgent:(e,t)=>`col:${e}:${t}`},"cached",0,r,"cachedBatch",0,i,"invalidate",0,s,"invalidateMany",0,n])},291109,e=>{"use strict";e.i(450019);var t=e.i(368789),a=e.i(677855),r=e.i(491465),i=e.i(497657),s=e.i(420587),n=e.i(22033),o=e.i(571158),c=e.i(834809),l=e.i(127060),d=e.i(208560),p=e.i(947101),u=e.i(315576),m=e.i(516313),f=e.i(237209),h=e.i(553223),_=e.i(397614),g=e.i(68438),N=e.i(923566),y=e.i(715172),w=e.i(69974),v=e.i(912701),E=e.i(482420),A=e.i(95634),x=e.i(166485),T=e.i(930980),O=e.i(66643),I=e.i(542885),b=e.i(455090),S=e.i(719436);async function $(e,t,a,r){let i=r?.limit??30,s=r?.before?b.sql`AND t.completed_at < ${r.before}`:b.sql``,n=r?.types?.length?r.types:["user_dm_message"],o=b.sql.join(n.map(e=>b.sql`${e}`),b.sql`, `),c=await e.all(b.sql`
25
+ </html>`}])},342573,e=>e.a(async(t,a)=>{try{var r=e.i(441573),i=e.i(759139);e.i(700598);var n=e.i(726527),s=e.i(704024),o=e.i(866990),c=e.i(417188),l=t([r,i]);[r,i]=l.then?(await l)():l;let u=(0,n.createLogger)({service:"auth"});function d(e,t){if(!e)return t;let a=Number.parseInt(e,10);return Number.isFinite(a)&&a>0?a:t}e.s(["createAuth",0,function(e){let t=(0,o.resolveMode)({nodeEnv:e.NODE_ENV??"production"}),a="production"===t,n=d(e.AUTH_OTP_RATE_LIMIT_MAX,5),l=d(e.AUTH_OTP_RATE_LIMIT_WINDOW_SEC,60),p=Math.max(60,l);return(0,r.betterAuth)({baseURL:e.BETTER_AUTH_URL,database:e.DB,secret:e.BETTER_AUTH_SECRET,session:{expiresIn:2592e3,updateAge:86400,cookieCache:{enabled:!0,maxAge:300}},emailAndPassword:{enabled:!a,requireEmailVerification:!1},socialProviders:{github:{clientId:e.GITHUB_CLIENT_ID,clientSecret:e.GITHUB_CLIENT_SECRET},google:{clientId:e.GOOGLE_CLIENT_ID,clientSecret:e.GOOGLE_CLIENT_SECRET}},rateLimit:{enabled:a,customRules:{"/email-otp/send-verification-otp":{window:l,max:n}},customStorage:{get:async t=>{let a=await e.RATE_LIMIT_KV.get(t);return a?JSON.parse(a):void 0},set:async(t,a)=>{await e.RATE_LIMIT_KV.put(t,JSON.stringify(a),{expirationTtl:p})}}},plugins:a?[(0,i.emailOTP)({async sendVerificationOTP({email:t,otp:a,type:r}){u.info("sending OTP email",{to:t,type:r});try{let i,n=JSON.stringify({to:t,subject:(0,c.getOtpSubject)(r),html:(0,c.renderOtpEmail)(a,r)}),o={method:"POST",headers:{"Content-Type":"application/json"},body:n};try{i=await e.EMAIL_WORKER.fetch("http://internal/send/otp",o)}catch{i=await fetch(`${s.DEV_EMAIL_WORKER_URL}/send/otp`,o)}if(!i.ok){let e=await i.text();throw Error(`EMAIL_WORKER /send/otp failed: ${i.status} ${e}`)}u.info("OTP email sent",{to:t,type:r})}catch(e){throw u.error("OTP email failed",{to:t,type:r,err:e}),e}}})]:[]})}]),a()}catch(e){a(e)}},!1),774078,e=>{"use strict";let t;function a(){return t??null}async function r(e,t,r){let i=a();if(i)try{let t=await i.get(e);if(t)return JSON.parse(t)}catch(t){console.warn(`[cache] KV read failed for ${e}:`,t)}let n=await r();return null!=n&&i&&i.put(e,JSON.stringify(n),{expirationTtl:Math.max(t,60)}).catch(t=>{console.warn(`[cache] KV write failed for ${e}:`,t)}),n}async function i(e,t,r){if(0===e.length)return new Map;let i=a(),n=new Map,s=e;if(i){let t=[];await Promise.all(e.map(async e=>{try{let a=await i.get(e);a&&(n.set(e,JSON.parse(a)),t.push(e))}catch(t){console.warn(`[cache] KV batch read failed for ${e}:`,t)}})),s=e.filter(e=>!t.includes(e))}if(s.length>0)for(let[e,a]of(await r(s)))n.set(e,a),null!=a&&i&&i.put(e,JSON.stringify(a),{expirationTtl:Math.max(t,60)}).catch(t=>{console.warn(`[cache] KV batch write failed for ${e}:`,t)});return n}async function n(e,t,r){let i=a();if(i)try{let a=await i.get(e);if(a&&Date.now()-parseInt(a,10)<1e3*t)return!1}catch{}return await r(),i&&i.put(e,String(Date.now()),{expirationTtl:Math.max(10*t,60)}).catch(()=>{}),!0}async function s(e){let t=a();t&&await t.delete(e).catch(t=>{console.warn(`[cache] KV delete failed for ${e}:`,t)})}async function o(e){let t=a();t&&0!==e.length&&await Promise.all(e.map(e=>t.delete(e).catch(t=>{console.warn(`[cache] KV delete failed for ${e}:`,t)})))}e.s(["bindCacheKV",0,function(e){t=e},"cacheKeys",0,{machineToken:e=>`mt:${e.slice(0,20)}`,machineTokenLastUsed:e=>`mt_lu:${e.slice(0,20)}`,member:(e,t)=>`mem:${e}:${t}`,runtimeIds:(e,t)=>`rt:${e}:${t}`,agent:(e,t)=>`ag:${e}:${t}`,heartbeat:(e,t)=>`hb:${e}:${t}`,user:e=>`usr:${e}`,emailAccountsByAgent:(e,t)=>`ea:${e}:${t}`,colleaguesByAgent:(e,t)=>`col:${e}:${t}`},"cached",0,r,"cachedBatch",0,i,"invalidate",0,s,"invalidateMany",0,o,"throttled",0,n])},291109,e=>{"use strict";e.i(450019);var t=e.i(368789),a=e.i(677855),r=e.i(491465),i=e.i(497657),n=e.i(420587),s=e.i(22033),o=e.i(571158),c=e.i(834809),l=e.i(127060),d=e.i(208560),u=e.i(947101),p=e.i(315576),m=e.i(516313),f=e.i(237209),h=e.i(553223),_=e.i(397614),g=e.i(68438),y=e.i(923566),N=e.i(715172),w=e.i(69974),v=e.i(912701),E=e.i(482420),x=e.i(95634),A=e.i(166485),T=e.i(930980),O=e.i(66643),I=e.i(542885),S=e.i(455090),b=e.i(719436);async function $(e,t,a,r){let i=r?.limit??30,n=r?.before?S.sql`AND t.completed_at < ${r.before}`:S.sql``,s=r?.types?.length?r.types:["user_dm_message"],o=S.sql.join(s.map(e=>S.sql`${e}`),S.sql`, `),c=await e.all(S.sql`
26
26
  SELECT c.id,
27
27
  c.agent_id,
28
28
  c.title,
@@ -72,10 +72,10 @@ module.exports=[918622,(e,t,a)=>{t.exports=e.x("next/dist/compiled/next-server/a
72
72
  AND NOT (type = 'email_notification' AND COALESCE(json_extract(context, '$.isInternal'), 0) = 1)
73
73
  ORDER BY completed_at DESC LIMIT 1
74
74
  )
75
- ${s}
75
+ ${n}
76
76
  ORDER BY t.completed_at DESC
77
77
  LIMIT ${i+1}
78
- `),l=c.length>i;return{items:c.slice(0,i),hasMore:l}}async function D(e,t,a,r){let i=r?.length?r:["user_dm_message"],s=b.sql.join(i.map(e=>b.sql`${e}`),b.sql`, `),n=await e.all(b.sql`
78
+ `),l=c.length>i;return{items:c.slice(0,i),hasMore:l}}async function D(e,t,a,r){let i=r?.length?r:["user_dm_message"],n=S.sql.join(i.map(e=>S.sql`${e}`),S.sql`, `),s=await e.all(S.sql`
79
79
  SELECT COUNT(DISTINCT t.conversation_id) AS count
80
80
  FROM agent_task_queue t
81
81
  INNER JOIN conversation c
@@ -87,16 +87,16 @@ module.exports=[918622,(e,t,a)=>{t.exports=e.x("next/dist/compiled/next-server/a
87
87
  WHERE t.workspace_id = ${a}
88
88
  AND t.parent_task_id IS NULL
89
89
  AND t.trace_id IS NOT NULL
90
- AND t.type IN (${s})
90
+ AND t.type IN (${n})
91
91
  AND t.status IN ('completed', 'failed')
92
92
  AND t.completed_at > COALESCE(crs.last_read_at, '1970-01-01T00:00:00.000Z')
93
93
  AND NOT (t.type = 'email_notification' AND COALESCE(json_extract(t.context, '$.isInternal'), 0) = 1)
94
- `);return n[0]?.count??0}async function k(e,t,a){let r=new Date().toISOString();await e.run(b.sql`
94
+ `);return s[0]?.count??0}async function k(e,t,a){let r=new Date().toISOString();await e.run(S.sql`
95
95
  INSERT INTO conversation_read_state (id, conversation_id, user_id, last_read_at, created_at)
96
- VALUES (${(0,S.nanoid)()}, ${a}, ${t}, ${r}, ${r})
96
+ VALUES (${(0,b.nanoid)()}, ${a}, ${t}, ${r}, ${r})
97
97
  ON CONFLICT (conversation_id, user_id)
98
98
  DO UPDATE SET last_read_at = ${r}
99
- `)}async function L(e,t,a){let r=new Date().toISOString();await e.run(b.sql`
99
+ `)}async function L(e,t,a){let r=new Date().toISOString();await e.run(S.sql`
100
100
  INSERT INTO conversation_read_state (id, conversation_id, user_id, last_read_at, created_at)
101
101
  SELECT lower(hex(randomblob(11))), c.id, ${t}, ${r}, ${r}
102
102
  FROM conversation c
@@ -104,6 +104,6 @@ module.exports=[918622,(e,t,a)=>{t.exports=e.x("next/dist/compiled/next-server/a
104
104
  AND c.workspace_id = ${a}
105
105
  ON CONFLICT (conversation_id, user_id)
106
106
  DO UPDATE SET last_read_at = ${r}
107
- `)}e.s(["getUnreadCount",0,D,"listUnreadConversations",0,$,"markAllConversationsRead",0,L,"markConversationRead",0,k],965939);var R=e.i(965939),C=e.i(441376),M=e.i(281108),j=e.i(449951);e.s(["agent",0,i,"agentAccess",0,y,"agentLink",0,I,"agentPin",0,w,"agentSidebarOrder",0,v,"artifact",0,_,"calendarEvent",0,h,"channel",0,x,"conversation",0,n,"conversationMap",0,O,"email",0,m,"emailAccount",0,g,"inbox",0,R,"issue",0,C,"issueComment",0,M,"machine",0,d,"machineToken",0,p,"meetingSession",0,A,"member",0,r,"message",0,o,"messageFlag",0,j,"overview",0,E,"runtime",0,s,"session",0,f,"task",0,c,"taskMessage",0,l,"user",0,t,"whitelist",0,u,"workspace",0,a,"workspaceFileRequest",0,T,"workspaceInvite",0,N],799279);var q=e.i(799279);e.s(["queries",0,q],291109)},675139,e=>{"use strict";e.i(700598);var t=e.i(20586);async function a(e,t=3){for(let a=0;a<=t;a++)try{return await e()}catch(e){if(a===t)throw e}throw Error("unreachable")}e.s(["getDb",0,function(e){let a=e.withSession("first-primary");return(0,t.createDb)(a)},"withD1Retry",0,a])},152327,e=>e.a(async(t,a)=>{try{var r=e.i(463421),i=e.i(291484);e.i(700598);var s=e.i(291109),n=e.i(675139),o=e.i(342573),c=e.i(774078),l=t([o]);[o]=l.then?(await l)():l,e.s(["withAuth",0,function(e){return async(t,a)=>{let l,d=a?.params?a.params instanceof Promise?await a.params:a.params:void 0,{env:p}=await (0,i.getCloudflareContext)({async:!0});(0,c.bindCacheKV)(p.CACHE_KV??null);let u=t.headers.get("Authorization");if(u?.startsWith("Bearer ")){let a=u.slice(7);if(a.startsWith("al_"))try{let i=(0,n.getDb)(p.DB),o=await (0,c.cached)(c.cacheKeys.machineToken(a),900,()=>s.queries.machineToken.getMachineTokenByToken(i,a));if(!o)return r.NextResponse.json({error:"invalid token"},{status:401});(0,c.cached)(c.cacheKeys.machineTokenLastUsed(a),900,async()=>(await s.queries.machineToken.updateMachineTokenLastUsed(i,o.id),"1")).catch(()=>{});let l={userId:o.userId,email:o.userEmail,workspaceId:o.workspaceId??void 0};return e(t,{...l,params:d})}catch{return r.NextResponse.json({error:"invalid token"},{status:401})}}let m=(0,o.createAuth)(p),f=null;for(let e=0;e<2;e++)try{f=await m.api.getSession({headers:t.headers}),l=void 0;break}catch(e){l=e}if(l)return r.NextResponse.json({error:"session validation failed"},{status:503});if(!f)return r.NextResponse.json({error:"unauthorized"},{status:401});let h={userId:f.user.id,email:f.user.email};return e(t,{...h,params:d})}}]),a()}catch(e){a(e)}},!1)];
107
+ `)}e.s(["getUnreadCount",0,D,"listUnreadConversations",0,$,"markAllConversationsRead",0,L,"markConversationRead",0,k],965939);var R=e.i(965939),C=e.i(441376),M=e.i(281108),j=e.i(449951);e.s(["agent",0,i,"agentAccess",0,N,"agentLink",0,I,"agentPin",0,w,"agentSidebarOrder",0,v,"artifact",0,_,"calendarEvent",0,h,"channel",0,A,"conversation",0,s,"conversationMap",0,O,"email",0,m,"emailAccount",0,g,"inbox",0,R,"issue",0,C,"issueComment",0,M,"machine",0,d,"machineToken",0,u,"meetingSession",0,x,"member",0,r,"message",0,o,"messageFlag",0,j,"overview",0,E,"runtime",0,n,"session",0,f,"task",0,c,"taskMessage",0,l,"user",0,t,"whitelist",0,p,"workspace",0,a,"workspaceFileRequest",0,T,"workspaceInvite",0,y],799279);var q=e.i(799279);e.s(["queries",0,q],291109)},675139,e=>{"use strict";e.i(700598);var t=e.i(20586);async function a(e,t=3){for(let a=0;a<=t;a++)try{return await e()}catch(e){if(a===t)throw e}throw Error("unreachable")}e.s(["getDb",0,function(e){let a=e.withSession("first-primary");return(0,t.createDb)(a)},"withD1Retry",0,a])},152327,e=>e.a(async(t,a)=>{try{var r=e.i(463421),i=e.i(291484);e.i(700598);var n=e.i(291109),s=e.i(675139),o=e.i(342573),c=e.i(774078),l=t([o]);[o]=l.then?(await l)():l,e.s(["withAuth",0,function(e){return async(t,a)=>{let l,d=a?.params?a.params instanceof Promise?await a.params:a.params:void 0,{env:u}=await (0,i.getCloudflareContext)({async:!0});(0,c.bindCacheKV)(u.CACHE_KV??null);let p=t.headers.get("Authorization");if(p?.startsWith("Bearer ")){let a=p.slice(7);if(a.startsWith("al_"))try{let i=(0,s.getDb)(u.DB),o=await (0,c.cached)(c.cacheKeys.machineToken(a),900,()=>n.queries.machineToken.getMachineTokenByToken(i,a));if(!o)return r.NextResponse.json({error:"invalid token"},{status:401});(0,c.cached)(c.cacheKeys.machineTokenLastUsed(a),900,async()=>(await n.queries.machineToken.updateMachineTokenLastUsed(i,o.id),"1")).catch(()=>{});let l={userId:o.userId,email:o.userEmail,workspaceId:o.workspaceId??void 0};return e(t,{...l,params:d})}catch{return r.NextResponse.json({error:"invalid token"},{status:401})}}let m=(0,o.createAuth)(u),f=null;for(let e=0;e<2;e++)try{f=await m.api.getSession({headers:t.headers}),l=void 0;break}catch(e){l=e}if(l)return r.NextResponse.json({error:"session validation failed"},{status:503});if(!f)return r.NextResponse.json({error:"unauthorized"},{status:401});let h={userId:f.user.id,email:f.user.email};return e(t,{...h,params:d})}}]),a()}catch(e){a(e)}},!1)];
108
108
 
109
109
  //# sourceMappingURL=%5Broot-of-the-server%5D__0u8xtc8._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[620276,e=>e.a(async(t,a)=>{try{var n=e.i(291484);e.i(700598);var r=e.i(291109),i=e.i(888247),s=e.i(139733),o=e.i(424166),l=e.i(704024),d=e.i(675139),c=e.i(152327),u=e.i(776227),p=e.i(740580),w=e.i(205054),m=e.i(388335),g=e.i(801093),h=e.i(726089),I=e.i(799579),f=t([c]);[c]=f.then?(await f)():f;let k=(0,c.withAuth)(async(t,a)=>{let c,f,k,R,{env:v}=(0,n.getCloudflareContext)(),_=(0,d.getDb)(v.DB),{cached:y,cachedBatch:S,cacheKeys:E}=await e.A(386211),[A,q]=await (0,u.parseBody)(t,i.PollRequestSchema);if(q)return q;if(!a.workspaceId)return(0,u.writeError)("Forbidden: machine token required",403);let C=await y(E.runtimeIds(a.workspaceId,A.daemon_id),600,()=>r.queries.runtime.getRuntimeIdsByDaemon(_,A.daemon_id,a.workspaceId));if(0===C.length)return(0,u.writeJSON)({tasks:[],evicted:!0});let b=Math.floor((l.OFFLINE_THRESHOLD_MS-l.POLL_INTERVAL_MS)/1e3)-1,x=v.CACHE_KV??null;x&&x.put(E.heartbeat(a.workspaceId,A.daemon_id),new Date().toISOString(),{expirationTtl:15}).catch(()=>{});try{await y(`hb_d1:${a.workspaceId}:${A.daemon_id}`,b,async()=>(await r.queries.machine.upsertMachine(_,{daemonId:A.daemon_id,workspaceId:a.workspaceId,deviceInfo:A.daemon_id}),"1"))}catch(e){I.log.warn("machine upsert failed",{daemonId:A.daemon_id,err:String(e)})}(0,h.broadcastToUser)(a.userId,{type:"runtime.status",daemonId:A.daemon_id,workspaceId:a.workspaceId,status:"online"}).catch(()=>{});try{await (0,m.sweepStaleState)(_,a.workspaceId)}catch(e){I.log.warn("sweep failed",{workspaceId:a.workspaceId,err:String(e)})}try{let e=!1;if(await y(`cal:${a.workspaceId}`,30,async()=>(e=!0,"1")).catch(()=>{e=!0}),e){let e=await (0,g.promoteDueCalendarEventsForWorkspace)(_,a.workspaceId);e>0&&I.log.info("calendar: enqueued",{workspaceId:a.workspaceId,enqueued:e})}}catch(e){I.log.warn("calendar: promote failed",{workspaceId:a.workspaceId,err:String(e)})}let T=new w.TaskService(_),P=await (0,d.withD1Retry)(()=>T.claimTasksForRuntimes(C,A.max_tasks,a.workspaceId)),M=P.filter(e=>"kill_task"!==e.type),N=[...new Set(M.map(e=>e.agentId))],[O,D,U]=N.length>0?await Promise.all([S(N.map(e=>E.agent(a.workspaceId,e)),300,async e=>{let t=e.map(e=>e.split(":").pop()),n=await (0,d.withD1Retry)(()=>r.queries.agent.getAgentsByIds(_,t,a.workspaceId)),i=new Map;for(let e of n)i.set(E.agent(a.workspaceId,e.id),e);return i}).then(e=>[...e.values()]),Promise.all(N.map(e=>y(E.emailAccountsByAgent(a.workspaceId,e),900,()=>r.queries.emailAccount.getEmailAccountsByAgents(_,[e],a.workspaceId)))).then(e=>e.flat()),Promise.all(N.map(e=>y(E.colleaguesByAgent(a.workspaceId,e),300,()=>r.queries.agentLink.getColleaguesForAgents(_,[e],a.workspaceId)).catch(()=>[]))).then(e=>e.flat())]):[[],[],[]],H=new Map(O.map(e=>[e.id,e])),B=new Map;for(let e of D){let t=B.get(e.agentId)??[];t.push(e.emailAddress),B.set(e.agentId,t)}let F=new Map;for(let e of U){let t=F.get(e.agentId)??[];t.push(e),F.set(e.agentId,t)}let $=[],L=new Map,K=new Map,V=new Map;for(let e of P){if("kill_task"===e.type){$.push({...(0,p.taskToResponse)(e),agent:null,sender:null});continue}let t=H.get(e.agentId)??null,n=[];if(t){t.emailHandle&&n.push(`${t.emailHandle}@alook.ai`);let e=B.get(t.id)??[];n.push(...e)}let i=t?.instructions??"";if(t?.ownerId){if(!L.has(t.ownerId)){let a=await y(E.member(e.workspaceId,t.ownerId),600,()=>r.queries.member.getMemberByUserAndWorkspace(_,t.ownerId,e.workspaceId));L.set(t.ownerId,a?{globalInstruction:a.globalInstruction}:null)}let a=L.get(t.ownerId);a?.globalInstruction&&(i=[a.globalInstruction,i].filter(Boolean).join("\n\n"))}let s=null;if(t?.ownerId){if(!K.has(t.ownerId)){let e=await y(E.user(t.ownerId),1800,()=>r.queries.user.getUser(_,t.ownerId));K.set(t.ownerId,e?{name:e.name,email:e.email}:null)}s=K.get(t.ownerId)?.name??null}let l=V.get(e.conversationId)??null;e.conversationId&&!V.has(e.conversationId)&&(l=await r.queries.conversation.getConversation(_,e.conversationId,e.workspaceId),V.set(e.conversationId,l));let d=l?.channel??"default",c=null;if("user_dm_message"===e.type&&l?.userId){if(!K.has(l.userId)){let e=await y(E.user(l.userId),1800,()=>r.queries.user.getUser(_,l.userId));K.set(l.userId,e?{name:e.name,email:e.email}:null)}let e=K.get(l.userId);e&&(c={name:e.name,email:e.email,is_owner:l.userId===t?.ownerId})}let u=(F.get(e.agentId)??[]).map(e=>({name:e.name,email:e.emailHandle?(0,o.toAlookAddress)(e.emailHandle):"",description:e.description,instruction:e.instruction}));$.push({...(0,p.taskToResponse)(e),channel:d,sender:c,agent:t?{instructions:i,name:t.name,runtime_config:t.runtimeConfig||{},email_handle:t.emailHandle||null,email_addresses:n,user_email:a.email||null,user_name:s,colleagues:u}:null})}let j=`misc:${a.workspaceId}:${A.daemon_id}`,W=!1;try{await y(j,30,async()=>(W=!0,"1"))}catch{W=!0}if(W){try{let e=await r.queries.machine.getMachineByDaemon(_,A.daemon_id,a.workspaceId);e?.pendingUpdateVersion&&A.cli_version&&((0,s.semverGte)(A.cli_version,e.pendingUpdateVersion)?(await r.queries.machine.clearPendingUpdateVersion(_,A.daemon_id,a.workspaceId),(0,h.broadcastToUser)(a.userId,{type:"runtime.status",daemonId:A.daemon_id,workspaceId:a.workspaceId,status:"online"}).catch(()=>{})):c={version:e.pendingUpdateVersion}),e?.pendingRescan&&(f=!0,await r.queries.machine.clearPendingRescan(_,A.daemon_id,a.workspaceId))}catch(e){I.log.warn("pending check failed",{daemonId:A.daemon_id,err:String(e)})}try{let e=new Date(Date.now()+3e5),t=new Date().toISOString(),n=await r.queries.meetingSession.listScheduledMeetings(_,a.workspaceId,e.toISOString());if(n.length>0){let e=n.map(e=>e.id),i=await r.queries.meetingSession.claimMeetingSessions(_,e,a.workspaceId,t);if(i.length>0){let e=new Map(n.map(e=>[e.id,e]));k=i.map(t=>{let a=e.get(t.id);return{id:t.id,meeting_url:t.meetingUrl,participants:t.participants,workspace_id:t.workspaceId,agent_id:t.agentId,agent_name:a?.agentName||"",title:a?.title||void 0}})}}}catch(e){I.log.warn("meeting-claim: failed in poll",{err:String(e)})}}try{let e=!1;await y(`expire_fr:${a.workspaceId}`,5,async()=>(e=!0,"1")).catch(()=>{e=!0}),e&&await r.queries.workspaceFileRequest.expireStale(_,a.workspaceId);let t=await r.queries.workspaceFileRequest.getPendingByWorkspace(_,a.workspaceId);t.length>0&&(R=t.map(e=>({id:e.id,agent_id:e.agentId,request_type:e.requestType,path:e.path})),await r.queries.workspaceFileRequest.markDispatched(_,t.map(e=>e.id)))}catch(e){I.log.warn("file-requests: poll failed",{err:String(e)})}return(0,u.writeJSON)({tasks:$,...c&&{pending_update:c},...f&&{pending_rescan:f},...R&&{file_requests:R},...k&&{meetings:k}})});e.s(["POST",0,k]),a()}catch(e){a(e)}},!1),892152,e=>e.a(async(t,a)=>{try{var n=e.i(80774),r=e.i(404478),i=e.i(732985),s=e.i(481671),o=e.i(638081),l=e.i(204960),d=e.i(924918),c=e.i(363585),u=e.i(906846),p=e.i(359838),w=e.i(383303),m=e.i(234173),g=e.i(270215),h=e.i(830665),I=e.i(944002),f=e.i(193695);e.i(195928);var k=e.i(81543),R=e.i(620276),v=t([R]);[R]=v.then?(await v)():v;let y=new n.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/daemon/tasks/poll/route",pathname:"/api/daemon/tasks/poll",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/web/src/app/api/daemon/tasks/poll/route.ts",nextConfigOutput:"standalone",userland:R,...{}}),{workAsyncStorage:S,workUnitAsyncStorage:E,serverHooks:A}=y;async function _(e,t,a){a.requestMeta&&(0,s.setRequestMeta)(e,a.requestMeta),y.isDev&&(0,s.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let n="/api/daemon/tasks/poll/route";n=n.replace(/\/index$/,"")||"/";let i=await y.prepare(e,t,{srcPage:n,multiZoneDraftMode:!1});if(!i)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:R,deploymentId:v,params:_,nextConfig:S,parsedUrl:E,isDraftMode:A,prerenderManifest:q,routerServerContext:C,isOnDemandRevalidate:b,revalidateOnlyGenerated:x,resolvedPathname:T,clientReferenceManifest:P,serverActionsManifest:M}=i,N=(0,d.normalizeAppPath)(n),O=!!(q.dynamicRoutes[N]||q.routes[T]),D=async()=>((null==C?void 0:C.render404)?await C.render404(e,t,E,!1):t.end("This page could not be found"),null);if(O&&!A){let e=!!q.routes[T],t=q.dynamicRoutes[N];if(t&&!1===t.fallback&&!e){if(S.adapterPath)return await D();throw new f.NoFallbackError}}let U=null;!O||y.isDev||A||(U=T,U="/index"===U?"/":U);let H=!0===y.isDev||!O,B=O&&!H;M&&P&&(0,l.setManifestsSingleton)({page:n,clientReferenceManifest:P,serverActionsManifest:M});let F=e.method||"GET",$=(0,o.getTracer)(),L=$.getActiveScopeSpan(),K=!!(null==C?void 0:C.isWrappedByNextServer),V=!!(0,s.getRequestMeta)(e,"minimalMode"),j=(0,s.getRequestMeta)(e,"incrementalCache")||await y.getIncrementalCache(e,S,q,V);null==j||j.resetRequestCache(),globalThis.__incrementalCache=j;let W={params:_,previewProps:q.preview,renderOpts:{experimental:{authInterrupts:!!S.experimental.authInterrupts},cacheComponents:!!S.cacheComponents,supportsDynamicResponse:H,incrementalCache:j,cacheLifeProfiles:S.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,n,r)=>y.onRequestError(e,t,n,r,C)},sharedContext:{buildId:R,deploymentId:v}},G=new c.NodeNextRequest(e),X=new c.NodeNextResponse(t),J=u.NextRequestAdapter.fromNodeNextRequest(G,(0,u.signalFromNodeResponse)(t));try{let i,s=async e=>y.handle(J,W).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=$.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==p.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let r=a.get("next.route");if(r){let t=`${F} ${r}`;e.setAttributes({"next.route":r,"http.route":r,"next.span_name":t}),e.updateName(t),i&&i!==e&&(i.setAttribute("http.route",r),i.updateName(t))}else e.updateName(`${F} ${n}`)}),l=async i=>{var o,l;let d=async({previousCacheEntry:r})=>{try{if(!V&&b&&x&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let n=await s(i);e.fetchMetrics=W.renderOpts.fetchMetrics;let o=W.renderOpts.pendingWaitUntil;o&&a.waitUntil&&(a.waitUntil(o),o=void 0);let l=W.renderOpts.collectedTags;if(!O)return await (0,m.sendResponse)(G,X,n,W.renderOpts.pendingWaitUntil),null;{let e=await n.blob(),t=(0,g.toNodeOutgoingHttpHeaders)(n.headers);l&&(t[I.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==W.renderOpts.collectedRevalidate&&!(W.renderOpts.collectedRevalidate>=I.INFINITE_CACHE)&&W.renderOpts.collectedRevalidate,r=void 0===W.renderOpts.collectedExpire||W.renderOpts.collectedExpire>=I.INFINITE_CACHE?void 0:W.renderOpts.collectedExpire;return{value:{kind:k.CachedRouteKind.APP_ROUTE,status:n.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:r}}}}catch(t){throw(null==r?void 0:r.isStale)&&await y.onRequestError(e,t,{routerKind:"App Router",routePath:n,routeType:"route",revalidateReason:(0,w.getRevalidateReason)({isStaticGeneration:B,isOnDemandRevalidate:b})},!1,C),t}},c=await y.handleResponse({req:e,nextConfig:S,cacheKey:U,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:q,isRoutePPREnabled:!1,isOnDemandRevalidate:b,revalidateOnlyGenerated:x,responseGenerator:d,waitUntil:a.waitUntil,isMinimalMode:V});if(!O)return null;if((null==c||null==(o=c.value)?void 0:o.kind)!==k.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==c||null==(l=c.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});V||t.setHeader("x-nextjs-cache",b?"REVALIDATED":c.isMiss?"MISS":c.isStale?"STALE":"HIT"),A&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let u=(0,g.fromNodeOutgoingHttpHeaders)(c.value.headers);return V&&O||u.delete(I.NEXT_CACHE_TAGS_HEADER),!c.cacheControl||t.getHeader("Cache-Control")||u.get("Cache-Control")||u.set("Cache-Control",(0,h.getCacheControlHeader)(c.cacheControl)),await (0,m.sendResponse)(G,X,new Response(c.value.body,{headers:u,status:c.value.status||200})),null};K&&L?await l(L):(i=$.getActiveScopeSpan(),await $.withPropagatedContext(e.headers,()=>$.trace(p.BaseServerSpan.handleRequest,{spanName:`${F} ${n}`,kind:o.SpanKind.SERVER,attributes:{"http.method":F,"http.target":e.url}},l),void 0,!K))}catch(t){if(t instanceof f.NoFallbackError||await y.onRequestError(e,t,{routerKind:"App Router",routePath:N,routeType:"route",revalidateReason:(0,w.getRevalidateReason)({isStaticGeneration:B,isOnDemandRevalidate:b})},!1,C),O)throw t;return await (0,m.sendResponse)(G,X,new Response(null,{status:500})),null}}e.s(["handler",0,_,"patchFetch",0,function(){return(0,i.patchFetch)({workAsyncStorage:S,workUnitAsyncStorage:E})},"routeModule",0,y,"serverHooks",0,A,"workAsyncStorage",0,S,"workUnitAsyncStorage",0,E]),a()}catch(e){a(e)}},!1)];
1
+ module.exports=[620276,e=>e.a(async(t,a)=>{try{var n=e.i(291484);e.i(700598);var r=e.i(291109),i=e.i(888247),s=e.i(139733),o=e.i(424166),l=e.i(704024),d=e.i(675139),c=e.i(152327),u=e.i(776227),p=e.i(740580),w=e.i(205054),m=e.i(388335),g=e.i(801093),h=e.i(726089),I=e.i(799579),f=t([c]);[c]=f.then?(await f)():f;let k=(0,c.withAuth)(async(t,a)=>{let c,f,k,R,{env:v}=(0,n.getCloudflareContext)(),_=(0,d.getDb)(v.DB),{cached:y,cachedBatch:S,cacheKeys:E,throttled:A}=await e.A(386211),[q,C]=await (0,u.parseBody)(t,i.PollRequestSchema);if(C)return C;if(!a.workspaceId)return(0,u.writeError)("Forbidden: machine token required",403);let b=await y(E.runtimeIds(a.workspaceId,q.daemon_id),600,()=>r.queries.runtime.getRuntimeIdsByDaemon(_,q.daemon_id,a.workspaceId));if(0===b.length)return(0,u.writeJSON)({tasks:[],evicted:!0});let x=Math.floor((l.OFFLINE_THRESHOLD_MS-l.POLL_INTERVAL_MS)/1e3)-1,T=v.CACHE_KV??null;T&&T.put(E.heartbeat(a.workspaceId,q.daemon_id),new Date().toISOString(),{expirationTtl:60}).catch(()=>{});try{await A(`hb_d1:${a.workspaceId}:${q.daemon_id}`,x,async()=>{await r.queries.machine.upsertMachine(_,{daemonId:q.daemon_id,workspaceId:a.workspaceId,deviceInfo:q.daemon_id})})}catch(e){I.log.warn("machine upsert failed",{daemonId:q.daemon_id,err:String(e)})}(0,h.broadcastToUser)(a.userId,{type:"runtime.status",daemonId:q.daemon_id,workspaceId:a.workspaceId,status:"online"}).catch(()=>{});try{await (0,m.sweepStaleState)(_,a.workspaceId)}catch(e){I.log.warn("sweep failed",{workspaceId:a.workspaceId,err:String(e)})}try{await A(`cal:${a.workspaceId}`,30,async()=>{let e=await (0,g.promoteDueCalendarEventsForWorkspace)(_,a.workspaceId);e>0&&I.log.info("calendar: enqueued",{workspaceId:a.workspaceId,enqueued:e})})}catch(e){I.log.warn("calendar: promote failed",{workspaceId:a.workspaceId,err:String(e)})}let P=new w.TaskService(_),M=await (0,d.withD1Retry)(()=>P.claimTasksForRuntimes(b,q.max_tasks,a.workspaceId)),N=M.filter(e=>"kill_task"!==e.type),O=[...new Set(N.map(e=>e.agentId))],[D,U,H]=O.length>0?await Promise.all([S(O.map(e=>E.agent(a.workspaceId,e)),300,async e=>{let t=e.map(e=>e.split(":").pop()),n=await (0,d.withD1Retry)(()=>r.queries.agent.getAgentsByIds(_,t,a.workspaceId)),i=new Map;for(let e of n)i.set(E.agent(a.workspaceId,e.id),e);return i}).then(e=>[...e.values()]),Promise.all(O.map(e=>y(E.emailAccountsByAgent(a.workspaceId,e),900,()=>r.queries.emailAccount.getEmailAccountsByAgents(_,[e],a.workspaceId)))).then(e=>e.flat()),Promise.all(O.map(e=>y(E.colleaguesByAgent(a.workspaceId,e),300,()=>r.queries.agentLink.getColleaguesForAgents(_,[e],a.workspaceId)).catch(()=>[]))).then(e=>e.flat())]):[[],[],[]],B=new Map(D.map(e=>[e.id,e])),F=new Map;for(let e of U){let t=F.get(e.agentId)??[];t.push(e.emailAddress),F.set(e.agentId,t)}let $=new Map;for(let e of H){let t=$.get(e.agentId)??[];t.push(e),$.set(e.agentId,t)}let L=[],K=new Map,V=new Map,j=new Map;for(let e of M){if("kill_task"===e.type){L.push({...(0,p.taskToResponse)(e),agent:null,sender:null});continue}let t=B.get(e.agentId)??null,n=[];if(t){t.emailHandle&&n.push(`${t.emailHandle}@alook.ai`);let e=F.get(t.id)??[];n.push(...e)}let i=t?.instructions??"";if(t?.ownerId){if(!K.has(t.ownerId)){let a=await y(E.member(e.workspaceId,t.ownerId),600,()=>r.queries.member.getMemberByUserAndWorkspace(_,t.ownerId,e.workspaceId));K.set(t.ownerId,a?{globalInstruction:a.globalInstruction}:null)}let a=K.get(t.ownerId);a?.globalInstruction&&(i=[a.globalInstruction,i].filter(Boolean).join("\n\n"))}let s=null;if(t?.ownerId){if(!V.has(t.ownerId)){let e=await y(E.user(t.ownerId),1800,()=>r.queries.user.getUser(_,t.ownerId));V.set(t.ownerId,e?{name:e.name,email:e.email}:null)}s=V.get(t.ownerId)?.name??null}let l=j.get(e.conversationId)??null;e.conversationId&&!j.has(e.conversationId)&&(l=await r.queries.conversation.getConversation(_,e.conversationId,e.workspaceId),j.set(e.conversationId,l));let d=l?.channel??"default",c=null;if("user_dm_message"===e.type&&l?.userId){if(!V.has(l.userId)){let e=await y(E.user(l.userId),1800,()=>r.queries.user.getUser(_,l.userId));V.set(l.userId,e?{name:e.name,email:e.email}:null)}let e=V.get(l.userId);e&&(c={name:e.name,email:e.email,is_owner:l.userId===t?.ownerId})}let u=($.get(e.agentId)??[]).map(e=>({name:e.name,email:e.emailHandle?(0,o.toAlookAddress)(e.emailHandle):"",description:e.description,instruction:e.instruction}));L.push({...(0,p.taskToResponse)(e),channel:d,sender:c,agent:t?{instructions:i,name:t.name,runtime_config:t.runtimeConfig||{},email_handle:t.emailHandle||null,email_addresses:n,user_email:a.email||null,user_name:s,colleagues:u}:null})}let W=`misc:${a.workspaceId}:${q.daemon_id}`,G=!1;try{G=await A(W,30,async()=>{})}catch{G=!0}if(G){try{let e=await r.queries.machine.getMachineByDaemon(_,q.daemon_id,a.workspaceId);e?.pendingUpdateVersion&&q.cli_version&&((0,s.semverGte)(q.cli_version,e.pendingUpdateVersion)?(await r.queries.machine.clearPendingUpdateVersion(_,q.daemon_id,a.workspaceId),(0,h.broadcastToUser)(a.userId,{type:"runtime.status",daemonId:q.daemon_id,workspaceId:a.workspaceId,status:"online"}).catch(()=>{})):c={version:e.pendingUpdateVersion}),e?.pendingRescan&&(f=!0,await r.queries.machine.clearPendingRescan(_,q.daemon_id,a.workspaceId))}catch(e){I.log.warn("pending check failed",{daemonId:q.daemon_id,err:String(e)})}try{let e=new Date(Date.now()+3e5),t=new Date().toISOString(),n=await r.queries.meetingSession.listScheduledMeetings(_,a.workspaceId,e.toISOString());if(n.length>0){let e=n.map(e=>e.id),i=await r.queries.meetingSession.claimMeetingSessions(_,e,a.workspaceId,t);if(i.length>0){let e=new Map(n.map(e=>[e.id,e]));k=i.map(t=>{let a=e.get(t.id);return{id:t.id,meeting_url:t.meetingUrl,participants:t.participants,workspace_id:t.workspaceId,agent_id:t.agentId,agent_name:a?.agentName||"",title:a?.title||void 0}})}}}catch(e){I.log.warn("meeting-claim: failed in poll",{err:String(e)})}}try{await A(`expire_fr:${a.workspaceId}`,5,async()=>{await r.queries.workspaceFileRequest.expireStale(_,a.workspaceId)});let e=await r.queries.workspaceFileRequest.getPendingByWorkspace(_,a.workspaceId);e.length>0&&(R=e.map(e=>({id:e.id,agent_id:e.agentId,request_type:e.requestType,path:e.path})),await r.queries.workspaceFileRequest.markDispatched(_,e.map(e=>e.id)))}catch(e){I.log.warn("file-requests: poll failed",{err:String(e)})}return(0,u.writeJSON)({tasks:L,...c&&{pending_update:c},...f&&{pending_rescan:f},...R&&{file_requests:R},...k&&{meetings:k}})});e.s(["POST",0,k]),a()}catch(e){a(e)}},!1),892152,e=>e.a(async(t,a)=>{try{var n=e.i(80774),r=e.i(404478),i=e.i(732985),s=e.i(481671),o=e.i(638081),l=e.i(204960),d=e.i(924918),c=e.i(363585),u=e.i(906846),p=e.i(359838),w=e.i(383303),m=e.i(234173),g=e.i(270215),h=e.i(830665),I=e.i(944002),f=e.i(193695);e.i(195928);var k=e.i(81543),R=e.i(620276),v=t([R]);[R]=v.then?(await v)():v;let y=new n.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/daemon/tasks/poll/route",pathname:"/api/daemon/tasks/poll",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/web/src/app/api/daemon/tasks/poll/route.ts",nextConfigOutput:"standalone",userland:R,...{}}),{workAsyncStorage:S,workUnitAsyncStorage:E,serverHooks:A}=y;async function _(e,t,a){a.requestMeta&&(0,s.setRequestMeta)(e,a.requestMeta),y.isDev&&(0,s.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let n="/api/daemon/tasks/poll/route";n=n.replace(/\/index$/,"")||"/";let i=await y.prepare(e,t,{srcPage:n,multiZoneDraftMode:!1});if(!i)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:R,deploymentId:v,params:_,nextConfig:S,parsedUrl:E,isDraftMode:A,prerenderManifest:q,routerServerContext:C,isOnDemandRevalidate:b,revalidateOnlyGenerated:x,resolvedPathname:T,clientReferenceManifest:P,serverActionsManifest:M}=i,N=(0,d.normalizeAppPath)(n),O=!!(q.dynamicRoutes[N]||q.routes[T]),D=async()=>((null==C?void 0:C.render404)?await C.render404(e,t,E,!1):t.end("This page could not be found"),null);if(O&&!A){let e=!!q.routes[T],t=q.dynamicRoutes[N];if(t&&!1===t.fallback&&!e){if(S.adapterPath)return await D();throw new f.NoFallbackError}}let U=null;!O||y.isDev||A||(U=T,U="/index"===U?"/":U);let H=!0===y.isDev||!O,B=O&&!H;M&&P&&(0,l.setManifestsSingleton)({page:n,clientReferenceManifest:P,serverActionsManifest:M});let F=e.method||"GET",$=(0,o.getTracer)(),L=$.getActiveScopeSpan(),K=!!(null==C?void 0:C.isWrappedByNextServer),V=!!(0,s.getRequestMeta)(e,"minimalMode"),j=(0,s.getRequestMeta)(e,"incrementalCache")||await y.getIncrementalCache(e,S,q,V);null==j||j.resetRequestCache(),globalThis.__incrementalCache=j;let W={params:_,previewProps:q.preview,renderOpts:{experimental:{authInterrupts:!!S.experimental.authInterrupts},cacheComponents:!!S.cacheComponents,supportsDynamicResponse:H,incrementalCache:j,cacheLifeProfiles:S.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,n,r)=>y.onRequestError(e,t,n,r,C)},sharedContext:{buildId:R,deploymentId:v}},G=new c.NodeNextRequest(e),X=new c.NodeNextResponse(t),J=u.NextRequestAdapter.fromNodeNextRequest(G,(0,u.signalFromNodeResponse)(t));try{let i,s=async e=>y.handle(J,W).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=$.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==p.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let r=a.get("next.route");if(r){let t=`${F} ${r}`;e.setAttributes({"next.route":r,"http.route":r,"next.span_name":t}),e.updateName(t),i&&i!==e&&(i.setAttribute("http.route",r),i.updateName(t))}else e.updateName(`${F} ${n}`)}),l=async i=>{var o,l;let d=async({previousCacheEntry:r})=>{try{if(!V&&b&&x&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let n=await s(i);e.fetchMetrics=W.renderOpts.fetchMetrics;let o=W.renderOpts.pendingWaitUntil;o&&a.waitUntil&&(a.waitUntil(o),o=void 0);let l=W.renderOpts.collectedTags;if(!O)return await (0,m.sendResponse)(G,X,n,W.renderOpts.pendingWaitUntil),null;{let e=await n.blob(),t=(0,g.toNodeOutgoingHttpHeaders)(n.headers);l&&(t[I.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==W.renderOpts.collectedRevalidate&&!(W.renderOpts.collectedRevalidate>=I.INFINITE_CACHE)&&W.renderOpts.collectedRevalidate,r=void 0===W.renderOpts.collectedExpire||W.renderOpts.collectedExpire>=I.INFINITE_CACHE?void 0:W.renderOpts.collectedExpire;return{value:{kind:k.CachedRouteKind.APP_ROUTE,status:n.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:r}}}}catch(t){throw(null==r?void 0:r.isStale)&&await y.onRequestError(e,t,{routerKind:"App Router",routePath:n,routeType:"route",revalidateReason:(0,w.getRevalidateReason)({isStaticGeneration:B,isOnDemandRevalidate:b})},!1,C),t}},c=await y.handleResponse({req:e,nextConfig:S,cacheKey:U,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:q,isRoutePPREnabled:!1,isOnDemandRevalidate:b,revalidateOnlyGenerated:x,responseGenerator:d,waitUntil:a.waitUntil,isMinimalMode:V});if(!O)return null;if((null==c||null==(o=c.value)?void 0:o.kind)!==k.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==c||null==(l=c.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});V||t.setHeader("x-nextjs-cache",b?"REVALIDATED":c.isMiss?"MISS":c.isStale?"STALE":"HIT"),A&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let u=(0,g.fromNodeOutgoingHttpHeaders)(c.value.headers);return V&&O||u.delete(I.NEXT_CACHE_TAGS_HEADER),!c.cacheControl||t.getHeader("Cache-Control")||u.get("Cache-Control")||u.set("Cache-Control",(0,h.getCacheControlHeader)(c.cacheControl)),await (0,m.sendResponse)(G,X,new Response(c.value.body,{headers:u,status:c.value.status||200})),null};K&&L?await l(L):(i=$.getActiveScopeSpan(),await $.withPropagatedContext(e.headers,()=>$.trace(p.BaseServerSpan.handleRequest,{spanName:`${F} ${n}`,kind:o.SpanKind.SERVER,attributes:{"http.method":F,"http.target":e.url}},l),void 0,!K))}catch(t){if(t instanceof f.NoFallbackError||await y.onRequestError(e,t,{routerKind:"App Router",routePath:N,routeType:"route",revalidateReason:(0,w.getRevalidateReason)({isStaticGeneration:B,isOnDemandRevalidate:b})},!1,C),O)throw t;return await (0,m.sendResponse)(G,X,new Response(null,{status:500})),null}}e.s(["handler",0,_,"patchFetch",0,function(){return(0,i.patchFetch)({workAsyncStorage:S,workUnitAsyncStorage:E})},"routeModule",0,y,"serverHooks",0,A,"workAsyncStorage",0,S,"workUnitAsyncStorage",0,E]),a()}catch(e){a(e)}},!1)];
2
2
 
3
3
  //# sourceMappingURL=_0c9~wb-._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[776227,e=>{"use strict";var t=e.i(463421);function a(e,a){return t.NextResponse.json({error:e},{status:a})}async function r(e,r){let s;try{s=await e.json()}catch{return[null,a("invalid request body",400)]}try{return[r.parse(s),null]}catch(a){let e=(a.issues??a.errors??[]).map(e=>`${e.path.join(".")}: ${e.message}`);return[null,t.NextResponse.json({error:"validation error",details:e},{status:400})]}}e.s(["formatTimestamp",0,function(e){return e?("string"==typeof e?new Date(e):e).toISOString().replace(/\.\d{3}Z$/,"Z"):""},"formatTimestampNullable",0,function(e){return e?("string"==typeof e?new Date(e):e).toISOString().replace(/\.\d{3}Z$/,"Z"):null},"parseBody",0,r,"writeError",0,a,"writeJSON",0,function(e,a=200){return t.NextResponse.json(e,{status:a})}])},47962,e=>{"use strict";var t=e.i(463421),a=e.i(291484);e.i(700598);var r=e.i(291109),s=e.i(675139),n=e.i(774078);async function i(e,i){let o=e.nextUrl.searchParams.get("workspace_id")||e.headers.get("X-Workspace-ID")||i.workspaceId;if(!o)return t.NextResponse.json({error:"workspace_id is required"},{status:400});if(!i.userId)return t.NextResponse.json({error:"user not authenticated"},{status:401});let{env:d}=await (0,a.getCloudflareContext)({async:!0}),l=(0,s.getDb)(d.DB),c=await (0,n.cached)(n.cacheKeys.member(o,i.userId),1800,()=>r.queries.member.getMemberByUserAndWorkspace(l,i.userId,o));return c||i.workspaceId!==o?c?{workspaceId:o,memberRole:c.role}:t.NextResponse.json({error:"workspace not found"},{status:404}):{workspaceId:o,memberRole:"member"}}async function o(e,a){let r=await i(e,a);return r instanceof t.NextResponse?r:"owner"!==r.memberRole?t.NextResponse.json({error:"owner access required"},{status:403}):r}e.s(["withWorkspaceMember",0,i,"withWorkspaceOwner",0,o])},469187,e=>{"use strict";var t=e.i(704024);e.s(["isOnline",0,function(e){if(!e)return!1;let a=new Date(e.includes("T")||e.includes("Z")||e.includes("+")?e:e+"Z").getTime();return!isNaN(a)&&Date.now()-a<t.OFFLINE_THRESHOLD_MS}])},740580,e=>{"use strict";var t=e.i(776227);e.i(700598);var a=e.i(888247),r=e.i(469187),s=e.i(704024);e.s(["agentLinkToResponse",0,function(e){return{id:e.id,workspace_id:e.workspaceId,source_agent_id:e.sourceAgentId,target_agent_id:e.targetAgentId,instruction:e.instruction,created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}},"agentToResponse",0,function(e){let a=e.runtimeConfig;return a||(a={}),{id:e.id,workspace_id:e.workspaceId,runtime_id:e.runtimeId||"",name:e.name,description:e.description,instructions:e.instructions,runtime_mode:e.runtimeMode,runtime_config:a,status:e.status,max_concurrent_tasks:e.maxConcurrentTasks,email_handle:e.emailHandle||null,avatar_url:e.avatarUrl??null,visibility:e.visibility??"private",owner_id:e.ownerId??null,created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}},"calendarEventToResponse",0,function(e){let a=(0,t.formatTimestamp)(e.scheduledAt),r=e.occurrenceAt?(0,t.formatTimestamp)(e.occurrenceAt):a;return{id:e.id,agent_id:e.agentId,workspace_id:e.workspaceId,title:e.title,description:e.description??null,scheduled_at:a,occurrence_at:r,collapsed_count:e.collapsedCount??null,repeat_interval:e.repeatInterval??null,repeat_stop_at:(0,t.formatTimestampNullable)(e.repeatStopAt),last_triggered_at:(0,t.formatTimestampNullable)(e.lastTriggeredAt),created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}},"channelToResponse",0,function(e){return{id:e.id,workspace_id:e.workspaceId,name:e.name,created_at:(0,t.formatTimestamp)(e.createdAt)}},"conversationToResponse",0,function(e){let a={id:e.id,agent_id:e.agentId,title:e.title,type:e.type??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:(0,r.isOnline)(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)}}])},726089,e=>{"use strict";var t=e.i(291484);e.i(700598);var a=e.i(704024);let r=(0,e.i(726527).createLogger)({service:"broadcast"});async function s(e,s,n){let i;try{let{env:a}=(0,t.getCloudflareContext)();i=a.DEV_WS_DO_URL;let o=await a.WS_DO_WORKER.fetch(`http://internal${e}`,{method:"POST",body:s});if(o.ok)return;r.warn("broadcast service-binding non-ok",{...n,status:o.status});return}catch{}let o=i||a.DEV_WS_DO_URL;try{let t=await fetch(`${o}${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:s});t.ok||r.warn("broadcast failed",{...n,status:t.status})}catch(e){r.warn("broadcast error",{...n,err:String(e)})}}e.s(["broadcastToUser",0,function(e,a){return function(e,a,r){let n=s(e,a,r);try{let{ctx:e}=(0,t.getCloudflareContext)();e.waitUntil(n)}catch{}return n}(`/broadcast/user/${e}`,JSON.stringify(a),{userId:e,type:a.type})}])},799579,e=>{"use strict";e.i(700598);let t=(0,e.i(726527).createLogger)({service:"web",level:process.env.ALOOK_LOG_LEVEL||"info",pretty:!1});e.s(["log",0,t])},205054,e=>{"use strict";e.i(700598);var t=e.i(291109),a=e.i(704024),r=e.i(799579),s=e.i(726089),n=e.i(740580);let i=t.queries.task,o=t.queries.agent,d=t.queries.message,l=t.queries.conversation,c=t.queries.issue;e.s(["TaskService",0,class{db;constructor(e){this.db=e}async enqueueTask(e,t,r,s,n=a.TASK_TYPES.USER_DM_MESSAGE,d){let l=await o.getAgent(this.db,e,r);if(!l)throw Error("agent not found");if(!l.runtimeId)throw Error("agent has no runtime");if(d?.traceId&&d.parentTaskId&&await i.countTasksByTrace(this.db,d.traceId)>=a.MAX_TASKS_PER_TRACE)throw Error(`Trace limit reached (${a.MAX_TASKS_PER_TRACE} tasks). This may indicate an infinite loop between agents.`);return i.createTask(this.db,{agentId:e,runtimeId:l.runtimeId,workspaceId:r,conversationId:t,prompt:s,type:n,contextKey:d?.contextKey??null,priority:0,context:d?.context,traceId:d?.traceId??null,parentTaskId:d?.parentTaskId??null})}async claimTask(e,t){let a=await o.getAgent(this.db,e,t);if(!a)return null;if(await i.countRunningTasks(this.db,e,t)>=a.maxConcurrentTasks){let r=await i.findSteerableReplacement(this.db,e,t);if(!r||await i.countRunningTasks(this.db,e,t,r.predecessorId)>=a.maxConcurrentTasks)return null}let r=await i.claimTask(this.db,e,t);return r?(await o.updateAgentStatus(this.db,e,t,"working"),r):null}async claimTasksForRuntimes(e,t,a){let r=await i.claimKillTasks(this.db,e,a,t),s=t-r.length,n=s>0?await i.listPendingTasksByRuntimes(this.db,e,a):[],o=new Set(e),d=new Set,l=[...r];for(let e of n){if(s<=0)break;let t=`${e.agentId}:${e.workspaceId}`;if(d.has(t))continue;d.add(t);let a=await this.claimTask(e.agentId,e.workspaceId);a&&o.has(a.runtimeId)&&(l.push(a),s--)}return l}async startTask(e,t){let a=await i.startTask(this.db,e,t);if(!a)throw Error("task not in dispatched status");return a}async completeTask(e,t,a,s){let n;try{n=JSON.parse(a)}catch{n={raw:a}}let o=await i.completeTask(this.db,e,t,{result:n,sessionId:s||null});if(!o){let t=await i.getTask(this.db,e),a=t?.status??"unknown";throw r.log.warn(`completeTask failed: task is in '${a}' status`,{taskId:e}),Error(`cannot complete task in '${a}' status`)}let l=n,c="string"==typeof l?.output?l.output:"";return c&&await d.createMessage(this.db,{conversationId:o.conversationId,role:"assistant",content:c,taskId:e}),await this.reconcileAgentStatus(o.agentId,o.workspaceId),await this.dispatchNextBufferedMessage(o.conversationId,o.workspaceId),o}async failTask(e,t,s){let n=await i.failTask(this.db,e,t,s);if(!n){let t=await i.getTask(this.db,e),a=t?.status??"unknown";throw r.log.warn(`failTask failed: task is in '${a}' status`,{taskId:e}),Error(`cannot fail task in '${a}' status`)}return n.type===a.TASK_TYPES.KILL_TASK||(s&&await d.createMessage(this.db,{conversationId:n.conversationId,role:"assistant",content:`Error: ${s}`,taskId:e}),await this.reconcileAgentStatus(n.agentId,n.workspaceId),await this.syncIssueStatusFromTask(n,"failed"),await this.dispatchNextBufferedMessage(n.conversationId,n.workspaceId)),n}async syncIssueStatusFromTask(e,t){if(e.type!==a.TASK_TYPES.ISSUE_EVENT)return;let r=await c.getIssueByConversation(this.db,e.conversationId,e.workspaceId);if(!r||r.status===t||!await c.updateIssue(this.db,r.id,e.workspaceId,{status:t}))return;let i=await d.createMessage(this.db,{conversationId:e.conversationId,role:"event",content:`Issue status changed: ${r.status} -> ${t}`,taskId:e.id,metadata:JSON.stringify({issueId:r.id})});try{let t=await l.getConversation(this.db,e.conversationId,e.workspaceId);t&&(0,s.broadcastToUser)(t.userId,{type:"conversation.message",conversationId:e.conversationId,message:(0,n.messageToResponse)(i)}).catch(()=>{})}catch{}}async supersedeTask(e,t){let a=await i.supersedeTask(this.db,e,t);if(!a){let t=await i.getTask(this.db,e),a=t?.status??"unknown";throw r.log.warn(`supersedeTask failed: task is in '${a}' status`,{taskId:e}),Error(`cannot supersede task in '${a}' status`)}return await this.reconcileAgentStatus(a.agentId,a.workspaceId),await this.dispatchNextBufferedMessage(a.conversationId,a.workspaceId),a}async retryTask(e,t){let a=await i.getTask(this.db,e);if(!a||a.workspaceId!==t)throw Error("task not found");if("failed"!==a.status)throw Error("only failed tasks can be retried");let r=await i.markFailedAsSuperseded(this.db,e,t);if(!r)throw Error("failed to mark task as superseded");return{oldTask:r,newTask:await this.enqueueTask(a.agentId,a.conversationId,t,a.prompt,a.type,{contextKey:a.contextKey??null,context:a.context,traceId:a.traceId??null,parentTaskId:a.parentTaskId??null})}}async cancelActiveTask(e,t,r){let s=await i.getActiveTaskByConversation(this.db,e,t);if(!s)return null;let n=await i.cancelTask(this.db,s.id,t);return n?(("dispatched"===s.status||"running"===s.status)&&await i.createTask(this.db,{agentId:s.agentId,runtimeId:s.runtimeId,workspaceId:t,conversationId:e,prompt:"",type:a.TASK_TYPES.KILL_TASK,context:{target_task_id:s.id}}),await d.createMessage(this.db,{conversationId:e,role:"assistant",content:r?.reason??"Task cancelled by user",taskId:s.id}),await this.reconcileAgentStatus(s.agentId,t),r?.skipDispatch||await this.dispatchNextBufferedMessage(e,t),n):null}async reconcileAgentStatus(e,t){let a=await i.countRunningTasks(this.db,e,t);await o.updateAgentStatus(this.db,e,t,a>0?"working":"idle")}async dispatchNextBufferedMessage(e,t){let o=await d.activateNextBufferedMessage(this.db,e);if(!o)return null;let c=await l.getConversation(this.db,e,t);if(!c)return r.log.warn("dispatchNextBufferedMessage: conversation not found",{conversationId:e}),await d.revertToBuffered(this.db,o.id).catch(e=>{r.log.error("dispatchNextBufferedMessage: failed to revert message status",{messageId:o.id,revertErr:e})}),null;let u=c.userId;try{let r=o.attachmentIds?JSON.parse(o.attachmentIds):[],l=await i.getLatestTaskForConversation(this.db,e),p=l?.traceId??null,m=await this.enqueueTask(c.agentId,e,t,o.content,a.TASK_TYPES.USER_DM_MESSAGE,{contextKey:e,context:r.length>0?{attachment_ids:r}:void 0,traceId:p,parentTaskId:null});return await d.updateMessageTaskId(this.db,o.id,m.id),(0,s.broadcastToUser)(u,{type:"followup.dispatched",conversationId:e,message:(0,n.messageToResponse)(o),task:(0,n.taskToResponse)(m)}).catch(()=>{}),m}catch(t){return r.log.warn("dispatchNextBufferedMessage: enqueueTask failed",{conversationId:e,err:t}),await d.revertToBuffered(this.db,o.id).catch(e=>{r.log.error("dispatchNextBufferedMessage: failed to revert message status",{messageId:o.id,revertErr:e})}),(0,s.broadcastToUser)(u,{type:"followup.dispatch_failed",conversationId:e,messageId:o.id,error:t instanceof Error?t.message:"Failed to dispatch follow-up"}).catch(()=>{}),null}}async cancelTrace(e,t,a){for(let s of[...new Set((await i.getTraceTree(this.db,e,t)).filter(e=>["queued","dispatched","running"].includes(e.status)).map(e=>e.conversationId))])try{await this.cancelActiveTask(s,t,{skipDispatch:!0,reason:a?.reason})}catch(t){r.log.warn("cancelTrace: failed to cancel task",{traceId:e,convId:s,err:t})}}}])},388335,e=>{"use strict";e.i(700598);var t=e.i(291109),a=e.i(205054),r=e.i(774078);async function s(e,s){let n=`sweep:${s}`,i=!1;try{if(await (0,r.cached)(n,30,async()=>(i=!0,new Date().toISOString())),!i)return}catch{i=!0}let o=await t.queries.task.failStaleDispatchedTasks(e,s);await t.queries.task.failStaleKillTasks(e,s);let d=[...o,...await t.queries.task.failStaleRunningTasks(e,s)];if(d.length>0){let t=new a.TaskService(e),r=new Set;for(let e of d){let a=`${e.agentId}:${e.workspaceId}`;r.has(a)||(r.add(a),await t.reconcileAgentStatus(e.agentId,e.workspaceId))}let s=new Set;for(let e of d)s.has(e.conversationId)||(s.add(e.conversationId),await t.dispatchNextBufferedMessage(e.conversationId,e.workspaceId))}}e.s(["sweepStaleState",0,s])},587860,e=>e.a(async(t,a)=>{try{var r=e.i(291484);e.i(700598);var s=e.i(291109),n=e.i(424166),i=e.i(469187),o=e.i(888247),d=e.i(704024),l=e.i(675139),c=e.i(152327),u=e.i(47962),p=e.i(776227),m=e.i(740580),f=e.i(205054),h=e.i(388335),w=t([c]);[c]=w.then?(await w)():w;let g=(0,c.withAuth)(async(e,t)=>{let a=await (0,u.withWorkspaceMember)(e,t);if(a instanceof Response)return a;let{env:n}=(0,r.getCloudflareContext)(),i=(0,l.getDb)(n.DB);await (0,h.sweepStaleState)(i,a.workspaceId);let o=await s.queries.agent.listAgents(i,a.workspaceId,t.userId);return(0,p.writeJSON)(o.map(m.agentToResponse))}),T=(0,c.withAuth)(async(e,t)=>{let a=await (0,u.withWorkspaceMember)(e,t);if(a instanceof Response)return a;let{env:c}=(0,r.getCloudflareContext)(),h=(0,l.getDb)(c.DB),[w,g]=await (0,p.parseBody)(e,o.CreateAgentRequestSchema);if(g)return g;let T=w.name.trim(),_=w.runtime_id,k=w.max_concurrent_tasks||0;k<=0&&(k=6);let I="string"==typeof w.email_handle?w.email_handle.trim().toLowerCase():"";if(I){if(!(0,n.isValidHandle)(I))return(0,p.writeError)("email_handle must be 4+ alphanumeric/dash characters",400);if(await s.queries.agent.getAgentByHandle(h,I))return(0,p.writeError)("Handle already taken",409)}let y=await s.queries.runtime.getAgentRuntimeForWorkspace(h,_,a.workspaceId);if(!y)return(0,p.writeError)("runtime not found in workspace",404);let v=w.runtime_config,A=v?{..."string"==typeof v.model?{model:v.model}:{}}:null,S=await s.queries.agent.createAgent(h,{workspaceId:a.workspaceId,name:T,description:w.description,instructions:w.instructions,runtimeId:_,runtimeMode:y.runtimeMode,runtimeConfig:A,visibility:"private",maxConcurrentTasks:k,ownerId:t.userId,emailHandle:I||null,avatarUrl:w.avatar_url??null});if(I&&t.email&&await s.queries.whitelist.addWhitelist(h,S.id,a.workspaceId,t.email.toLowerCase()),S.runtimeId&&S.emailHandle&&t.email&&(0,i.isOnline)(y.machineLastSeenAt))try{let e=await s.queries.conversation.createConversation(h,{workspaceId:a.workspaceId,agentId:S.id,userId:t.userId,title:`Welcome: ${t.email}`.slice(0,50),type:d.TASK_TYPES.EMAIL_NOTIFICATION}),r=new f.TaskService(h);await r.enqueueTask(S.id,e.id,a.workspaceId,`You have just been created by your owner (${t.email}). Please send them a welcome email introducing yourself as "${T}". In the email: 1) Introduce yourself warmly — your name, your email address, and what you can help with. 2) Briefly introduce the Alook platform — a personal AI agent platform where agents can handle emails, schedule tasks, and work autonomously. 3) Let them know they can chat with you directly or email you anytime. Be warm, professional, and concise.`,d.TASK_TYPES.EMAIL_NOTIFICATION)}catch{}if((0,i.isOnline)(y.machineLastSeenAt)){let e=new f.TaskService(h);await e.reconcileAgentStatus(S.id,a.workspaceId);let r=await s.queries.agent.getAgent(h,S.id,a.workspaceId,t.userId);if(r)return(0,p.writeJSON)((0,m.agentToResponse)(r),201)}return(0,p.writeJSON)((0,m.agentToResponse)(S),201)});e.s(["GET",0,g,"POST",0,T]),a()}catch(e){a(e)}},!1),672424,e=>e.a(async(t,a)=>{try{var r=e.i(80774),s=e.i(404478),n=e.i(732985),i=e.i(481671),o=e.i(638081),d=e.i(204960),l=e.i(924918),c=e.i(363585),u=e.i(906846),p=e.i(359838),m=e.i(383303),f=e.i(234173),h=e.i(270215),w=e.i(830665),g=e.i(944002),T=e.i(193695);e.i(195928);var _=e.i(81543),k=e.i(587860),I=t([k]);[k]=I.then?(await I)():I;let v=new r.AppRouteRouteModule({definition:{kind:s.RouteKind.APP_ROUTE,page:"/api/agents/route",pathname:"/api/agents",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/web/src/app/api/agents/route.ts",nextConfigOutput:"standalone",userland:k,...{}}),{workAsyncStorage:A,workUnitAsyncStorage:S,serverHooks:b}=v;async function y(e,t,a){a.requestMeta&&(0,i.setRequestMeta)(e,a.requestMeta),v.isDev&&(0,i.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let r="/api/agents/route";r=r.replace(/\/index$/,"")||"/";let n=await v.prepare(e,t,{srcPage:r,multiZoneDraftMode:!1});if(!n)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:k,deploymentId:I,params:y,nextConfig:A,parsedUrl:S,isDraftMode:b,prerenderManifest:R,routerServerContext:E,isOnDemandRevalidate:x,revalidateOnlyGenerated:N,resolvedPathname:C,clientReferenceManifest:O,serverActionsManifest:M}=n,q=(0,l.normalizeAppPath)(r),P=!!(R.dynamicRoutes[q]||R.routes[C]),D=async()=>((null==E?void 0:E.render404)?await E.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[q];if(t&&!1===t.fallback&&!e){if(A.adapterPath)return await D();throw new T.NoFallbackError}}let U=null;!P||v.isDev||b||(U=C,U="/index"===U?"/":U);let K=!0===v.isDev||!P,B=P&&!K;M&&O&&(0,d.setManifestsSingleton)({page:r,clientReferenceManifest:O,serverActionsManifest:M});let $=e.method||"GET",L=(0,o.getTracer)(),H=L.getActiveScopeSpan(),j=!!(null==E?void 0:E.isWrappedByNextServer),F=!!(0,i.getRequestMeta)(e,"minimalMode"),W=(0,i.getRequestMeta)(e,"incrementalCache")||await v.getIncrementalCache(e,A,R,F);null==W||W.resetRequestCache(),globalThis.__incrementalCache=W;let J={params:y,previewProps:R.preview,renderOpts:{experimental:{authInterrupts:!!A.experimental.authInterrupts},cacheComponents:!!A.cacheComponents,supportsDynamicResponse:K,incrementalCache:W,cacheLifeProfiles:A.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,r,s)=>v.onRequestError(e,t,r,s,E)},sharedContext:{buildId:k,deploymentId:I}},Y=new c.NodeNextRequest(e),G=new c.NodeNextResponse(t),V=u.NextRequestAdapter.fromNodeNextRequest(Y,(0,u.signalFromNodeResponse)(t));try{let n,i=async e=>v.handle(V,J).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=L.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==p.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let s=a.get("next.route");if(s){let t=`${$} ${s}`;e.setAttributes({"next.route":s,"http.route":s,"next.span_name":t}),e.updateName(t),n&&n!==e&&(n.setAttribute("http.route",s),n.updateName(t))}else e.updateName(`${$} ${r}`)}),d=async n=>{var o,d;let l=async({previousCacheEntry:s})=>{try{if(!F&&x&&N&&!s)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let r=await i(n);e.fetchMetrics=J.renderOpts.fetchMetrics;let o=J.renderOpts.pendingWaitUntil;o&&a.waitUntil&&(a.waitUntil(o),o=void 0);let d=J.renderOpts.collectedTags;if(!P)return await (0,f.sendResponse)(Y,G,r,J.renderOpts.pendingWaitUntil),null;{let e=await r.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(r.headers);d&&(t[g.NEXT_CACHE_TAGS_HEADER]=d),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==J.renderOpts.collectedRevalidate&&!(J.renderOpts.collectedRevalidate>=g.INFINITE_CACHE)&&J.renderOpts.collectedRevalidate,s=void 0===J.renderOpts.collectedExpire||J.renderOpts.collectedExpire>=g.INFINITE_CACHE?void 0:J.renderOpts.collectedExpire;return{value:{kind:_.CachedRouteKind.APP_ROUTE,status:r.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:s}}}}catch(t){throw(null==s?void 0:s.isStale)&&await v.onRequestError(e,t,{routerKind:"App Router",routePath:r,routeType:"route",revalidateReason:(0,m.getRevalidateReason)({isStaticGeneration:B,isOnDemandRevalidate:x})},!1,E),t}},c=await v.handleResponse({req:e,nextConfig:A,cacheKey:U,routeKind:s.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:R,isRoutePPREnabled:!1,isOnDemandRevalidate:x,revalidateOnlyGenerated:N,responseGenerator:l,waitUntil:a.waitUntil,isMinimalMode:F});if(!P)return null;if((null==c||null==(o=c.value)?void 0:o.kind)!==_.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==c||null==(d=c.value)?void 0:d.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});F||t.setHeader("x-nextjs-cache",x?"REVALIDATED":c.isMiss?"MISS":c.isStale?"STALE":"HIT"),b&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let u=(0,h.fromNodeOutgoingHttpHeaders)(c.value.headers);return F&&P||u.delete(g.NEXT_CACHE_TAGS_HEADER),!c.cacheControl||t.getHeader("Cache-Control")||u.get("Cache-Control")||u.set("Cache-Control",(0,w.getCacheControlHeader)(c.cacheControl)),await (0,f.sendResponse)(Y,G,new Response(c.value.body,{headers:u,status:c.value.status||200})),null};j&&H?await d(H):(n=L.getActiveScopeSpan(),await L.withPropagatedContext(e.headers,()=>L.trace(p.BaseServerSpan.handleRequest,{spanName:`${$} ${r}`,kind:o.SpanKind.SERVER,attributes:{"http.method":$,"http.target":e.url}},d),void 0,!j))}catch(t){if(t instanceof T.NoFallbackError||await v.onRequestError(e,t,{routerKind:"App Router",routePath:q,routeType:"route",revalidateReason:(0,m.getRevalidateReason)({isStaticGeneration:B,isOnDemandRevalidate:x})},!1,E),P)throw t;return await (0,f.sendResponse)(Y,G,new Response(null,{status:500})),null}}e.s(["handler",0,y,"patchFetch",0,function(){return(0,n.patchFetch)({workAsyncStorage:A,workUnitAsyncStorage:S})},"routeModule",0,v,"serverHooks",0,b,"workAsyncStorage",0,A,"workUnitAsyncStorage",0,S]),a()}catch(e){a(e)}},!1)];
1
+ module.exports=[776227,e=>{"use strict";var t=e.i(463421);function a(e,a){return t.NextResponse.json({error:e},{status:a})}async function r(e,r){let s;try{s=await e.json()}catch{return[null,a("invalid request body",400)]}try{return[r.parse(s),null]}catch(a){let e=(a.issues??a.errors??[]).map(e=>`${e.path.join(".")}: ${e.message}`);return[null,t.NextResponse.json({error:"validation error",details:e},{status:400})]}}e.s(["formatTimestamp",0,function(e){return e?("string"==typeof e?new Date(e):e).toISOString().replace(/\.\d{3}Z$/,"Z"):""},"formatTimestampNullable",0,function(e){return e?("string"==typeof e?new Date(e):e).toISOString().replace(/\.\d{3}Z$/,"Z"):null},"parseBody",0,r,"writeError",0,a,"writeJSON",0,function(e,a=200){return t.NextResponse.json(e,{status:a})}])},47962,e=>{"use strict";var t=e.i(463421),a=e.i(291484);e.i(700598);var r=e.i(291109),s=e.i(675139),n=e.i(774078);async function i(e,i){let o=e.nextUrl.searchParams.get("workspace_id")||e.headers.get("X-Workspace-ID")||i.workspaceId;if(!o)return t.NextResponse.json({error:"workspace_id is required"},{status:400});if(!i.userId)return t.NextResponse.json({error:"user not authenticated"},{status:401});let{env:d}=await (0,a.getCloudflareContext)({async:!0}),l=(0,s.getDb)(d.DB),c=await (0,n.cached)(n.cacheKeys.member(o,i.userId),1800,()=>r.queries.member.getMemberByUserAndWorkspace(l,i.userId,o));return c||i.workspaceId!==o?c?{workspaceId:o,memberRole:c.role}:t.NextResponse.json({error:"workspace not found"},{status:404}):{workspaceId:o,memberRole:"member"}}async function o(e,a){let r=await i(e,a);return r instanceof t.NextResponse?r:"owner"!==r.memberRole?t.NextResponse.json({error:"owner access required"},{status:403}):r}e.s(["withWorkspaceMember",0,i,"withWorkspaceOwner",0,o])},469187,e=>{"use strict";var t=e.i(704024);e.s(["isOnline",0,function(e){if(!e)return!1;let a=new Date(e.includes("T")||e.includes("Z")||e.includes("+")?e:e+"Z").getTime();return!isNaN(a)&&Date.now()-a<t.OFFLINE_THRESHOLD_MS}])},740580,e=>{"use strict";var t=e.i(776227);e.i(700598);var a=e.i(888247),r=e.i(469187),s=e.i(704024);e.s(["agentLinkToResponse",0,function(e){return{id:e.id,workspace_id:e.workspaceId,source_agent_id:e.sourceAgentId,target_agent_id:e.targetAgentId,instruction:e.instruction,created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}},"agentToResponse",0,function(e){let a=e.runtimeConfig;return a||(a={}),{id:e.id,workspace_id:e.workspaceId,runtime_id:e.runtimeId||"",name:e.name,description:e.description,instructions:e.instructions,runtime_mode:e.runtimeMode,runtime_config:a,status:e.status,max_concurrent_tasks:e.maxConcurrentTasks,email_handle:e.emailHandle||null,avatar_url:e.avatarUrl??null,visibility:e.visibility??"private",owner_id:e.ownerId??null,created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}},"calendarEventToResponse",0,function(e){let a=(0,t.formatTimestamp)(e.scheduledAt),r=e.occurrenceAt?(0,t.formatTimestamp)(e.occurrenceAt):a;return{id:e.id,agent_id:e.agentId,workspace_id:e.workspaceId,title:e.title,description:e.description??null,scheduled_at:a,occurrence_at:r,collapsed_count:e.collapsedCount??null,repeat_interval:e.repeatInterval??null,repeat_stop_at:(0,t.formatTimestampNullable)(e.repeatStopAt),last_triggered_at:(0,t.formatTimestampNullable)(e.lastTriggeredAt),created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}},"channelToResponse",0,function(e){return{id:e.id,workspace_id:e.workspaceId,name:e.name,created_at:(0,t.formatTimestamp)(e.createdAt)}},"conversationToResponse",0,function(e){let a={id:e.id,agent_id:e.agentId,title:e.title,type:e.type??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:(0,r.isOnline)(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)}}])},726089,e=>{"use strict";var t=e.i(291484);e.i(700598);var a=e.i(704024);let r=(0,e.i(726527).createLogger)({service:"broadcast"});async function s(e,s,n){let i;try{let{env:a}=(0,t.getCloudflareContext)();i=a.DEV_WS_DO_URL;let o=await a.WS_DO_WORKER.fetch(`http://internal${e}`,{method:"POST",body:s});if(o.ok)return;r.warn("broadcast service-binding non-ok",{...n,status:o.status});return}catch{}let o=i||a.DEV_WS_DO_URL;try{let t=await fetch(`${o}${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:s});t.ok||r.warn("broadcast failed",{...n,status:t.status})}catch(e){r.warn("broadcast error",{...n,err:String(e)})}}e.s(["broadcastToUser",0,function(e,a){return function(e,a,r){let n=s(e,a,r);try{let{ctx:e}=(0,t.getCloudflareContext)();e.waitUntil(n)}catch{}return n}(`/broadcast/user/${e}`,JSON.stringify(a),{userId:e,type:a.type})}])},799579,e=>{"use strict";e.i(700598);let t=(0,e.i(726527).createLogger)({service:"web",level:process.env.ALOOK_LOG_LEVEL||"info",pretty:!1});e.s(["log",0,t])},205054,e=>{"use strict";e.i(700598);var t=e.i(291109),a=e.i(704024),r=e.i(799579),s=e.i(726089),n=e.i(740580);let i=t.queries.task,o=t.queries.agent,d=t.queries.message,l=t.queries.conversation,c=t.queries.issue;e.s(["TaskService",0,class{db;constructor(e){this.db=e}async enqueueTask(e,t,r,s,n=a.TASK_TYPES.USER_DM_MESSAGE,d){let l=await o.getAgent(this.db,e,r);if(!l)throw Error("agent not found");if(!l.runtimeId)throw Error("agent has no runtime");if(d?.traceId&&d.parentTaskId&&await i.countTasksByTrace(this.db,d.traceId)>=a.MAX_TASKS_PER_TRACE)throw Error(`Trace limit reached (${a.MAX_TASKS_PER_TRACE} tasks). This may indicate an infinite loop between agents.`);return i.createTask(this.db,{agentId:e,runtimeId:l.runtimeId,workspaceId:r,conversationId:t,prompt:s,type:n,contextKey:d?.contextKey??null,priority:0,context:d?.context,traceId:d?.traceId??null,parentTaskId:d?.parentTaskId??null})}async claimTask(e,t){let a=await o.getAgent(this.db,e,t);if(!a)return null;if(await i.countRunningTasks(this.db,e,t)>=a.maxConcurrentTasks){let r=await i.findSteerableReplacement(this.db,e,t);if(!r||await i.countRunningTasks(this.db,e,t,r.predecessorId)>=a.maxConcurrentTasks)return null}let r=await i.claimTask(this.db,e,t);return r?(await o.updateAgentStatus(this.db,e,t,"working"),r):null}async claimTasksForRuntimes(e,t,a){let r=await i.claimKillTasks(this.db,e,a,t),s=t-r.length,n=s>0?await i.listPendingTasksByRuntimes(this.db,e,a):[],o=new Set(e),d=new Set,l=[...r];for(let e of n){if(s<=0)break;let t=`${e.agentId}:${e.workspaceId}`;if(d.has(t))continue;d.add(t);let a=await this.claimTask(e.agentId,e.workspaceId);a&&o.has(a.runtimeId)&&(l.push(a),s--)}return l}async startTask(e,t){let a=await i.startTask(this.db,e,t);if(!a)throw Error("task not in dispatched status");return a}async completeTask(e,t,a,s){let n;try{n=JSON.parse(a)}catch{n={raw:a}}let o=await i.completeTask(this.db,e,t,{result:n,sessionId:s||null});if(!o){let t=await i.getTask(this.db,e),a=t?.status??"unknown";throw r.log.warn(`completeTask failed: task is in '${a}' status`,{taskId:e}),Error(`cannot complete task in '${a}' status`)}let l=n,c="string"==typeof l?.output?l.output:"";return c&&await d.createMessage(this.db,{conversationId:o.conversationId,role:"assistant",content:c,taskId:e}),await this.reconcileAgentStatus(o.agentId,o.workspaceId),await this.dispatchNextBufferedMessage(o.conversationId,o.workspaceId),o}async failTask(e,t,s){let n=await i.failTask(this.db,e,t,s);if(!n){let t=await i.getTask(this.db,e),a=t?.status??"unknown";throw r.log.warn(`failTask failed: task is in '${a}' status`,{taskId:e}),Error(`cannot fail task in '${a}' status`)}return n.type===a.TASK_TYPES.KILL_TASK||(s&&await d.createMessage(this.db,{conversationId:n.conversationId,role:"assistant",content:`Error: ${s}`,taskId:e}),await this.reconcileAgentStatus(n.agentId,n.workspaceId),await this.syncIssueStatusFromTask(n,"failed"),await this.dispatchNextBufferedMessage(n.conversationId,n.workspaceId)),n}async syncIssueStatusFromTask(e,t){if(e.type!==a.TASK_TYPES.ISSUE_EVENT)return;let r=await c.getIssueByConversation(this.db,e.conversationId,e.workspaceId);if(!r||r.status===t||!await c.updateIssue(this.db,r.id,e.workspaceId,{status:t}))return;let i=await d.createMessage(this.db,{conversationId:e.conversationId,role:"event",content:`Issue status changed: ${r.status} -> ${t}`,taskId:e.id,metadata:JSON.stringify({issueId:r.id})});try{let t=await l.getConversation(this.db,e.conversationId,e.workspaceId);t&&(0,s.broadcastToUser)(t.userId,{type:"conversation.message",conversationId:e.conversationId,message:(0,n.messageToResponse)(i)}).catch(()=>{})}catch{}}async supersedeTask(e,t){let a=await i.supersedeTask(this.db,e,t);if(!a){let t=await i.getTask(this.db,e),a=t?.status??"unknown";throw r.log.warn(`supersedeTask failed: task is in '${a}' status`,{taskId:e}),Error(`cannot supersede task in '${a}' status`)}return await this.reconcileAgentStatus(a.agentId,a.workspaceId),await this.dispatchNextBufferedMessage(a.conversationId,a.workspaceId),a}async retryTask(e,t){let a=await i.getTask(this.db,e);if(!a||a.workspaceId!==t)throw Error("task not found");if("failed"!==a.status)throw Error("only failed tasks can be retried");let r=await i.markFailedAsSuperseded(this.db,e,t);if(!r)throw Error("failed to mark task as superseded");return{oldTask:r,newTask:await this.enqueueTask(a.agentId,a.conversationId,t,a.prompt,a.type,{contextKey:a.contextKey??null,context:a.context,traceId:a.traceId??null,parentTaskId:a.parentTaskId??null})}}async cancelActiveTask(e,t,r){let s=await i.getActiveTaskByConversation(this.db,e,t);if(!s)return null;let n=await i.cancelTask(this.db,s.id,t);return n?(("dispatched"===s.status||"running"===s.status)&&await i.createTask(this.db,{agentId:s.agentId,runtimeId:s.runtimeId,workspaceId:t,conversationId:e,prompt:"",type:a.TASK_TYPES.KILL_TASK,context:{target_task_id:s.id}}),await d.createMessage(this.db,{conversationId:e,role:"assistant",content:r?.reason??"Task cancelled by user",taskId:s.id}),await this.reconcileAgentStatus(s.agentId,t),r?.skipDispatch||await this.dispatchNextBufferedMessage(e,t),n):null}async reconcileAgentStatus(e,t){let a=await i.countRunningTasks(this.db,e,t);await o.updateAgentStatus(this.db,e,t,a>0?"working":"idle")}async dispatchNextBufferedMessage(e,t){let o=await d.activateNextBufferedMessage(this.db,e);if(!o)return null;let c=await l.getConversation(this.db,e,t);if(!c)return r.log.warn("dispatchNextBufferedMessage: conversation not found",{conversationId:e}),await d.revertToBuffered(this.db,o.id).catch(e=>{r.log.error("dispatchNextBufferedMessage: failed to revert message status",{messageId:o.id,revertErr:e})}),null;let u=c.userId;try{let r=o.attachmentIds?JSON.parse(o.attachmentIds):[],l=await i.getLatestTaskForConversation(this.db,e),p=l?.traceId??null,m=await this.enqueueTask(c.agentId,e,t,o.content,a.TASK_TYPES.USER_DM_MESSAGE,{contextKey:e,context:r.length>0?{attachment_ids:r}:void 0,traceId:p,parentTaskId:null});return await d.updateMessageTaskId(this.db,o.id,m.id),(0,s.broadcastToUser)(u,{type:"followup.dispatched",conversationId:e,message:(0,n.messageToResponse)(o),task:(0,n.taskToResponse)(m)}).catch(()=>{}),m}catch(t){return r.log.warn("dispatchNextBufferedMessage: enqueueTask failed",{conversationId:e,err:t}),await d.revertToBuffered(this.db,o.id).catch(e=>{r.log.error("dispatchNextBufferedMessage: failed to revert message status",{messageId:o.id,revertErr:e})}),(0,s.broadcastToUser)(u,{type:"followup.dispatch_failed",conversationId:e,messageId:o.id,error:t instanceof Error?t.message:"Failed to dispatch follow-up"}).catch(()=>{}),null}}async cancelTrace(e,t,a){for(let s of[...new Set((await i.getTraceTree(this.db,e,t)).filter(e=>["queued","dispatched","running"].includes(e.status)).map(e=>e.conversationId))])try{await this.cancelActiveTask(s,t,{skipDispatch:!0,reason:a?.reason})}catch(t){r.log.warn("cancelTrace: failed to cancel task",{traceId:e,convId:s,err:t})}}}])},388335,e=>{"use strict";e.i(700598);var t=e.i(291109),a=e.i(205054),r=e.i(774078);async function s(e,s){let n=`sweep:${s}`,i=!1;try{i=await (0,r.throttled)(n,30,async()=>{})}catch{i=!0}if(!i)return;let o=await t.queries.task.failStaleDispatchedTasks(e,s);await t.queries.task.failStaleKillTasks(e,s);let d=[...o,...await t.queries.task.failStaleRunningTasks(e,s)];if(d.length>0){let t=new a.TaskService(e),r=new Set;for(let e of d){let a=`${e.agentId}:${e.workspaceId}`;r.has(a)||(r.add(a),await t.reconcileAgentStatus(e.agentId,e.workspaceId))}let s=new Set;for(let e of d)s.has(e.conversationId)||(s.add(e.conversationId),await t.dispatchNextBufferedMessage(e.conversationId,e.workspaceId))}}e.s(["sweepStaleState",0,s])},587860,e=>e.a(async(t,a)=>{try{var r=e.i(291484);e.i(700598);var s=e.i(291109),n=e.i(424166),i=e.i(469187),o=e.i(888247),d=e.i(704024),l=e.i(675139),c=e.i(152327),u=e.i(47962),p=e.i(776227),m=e.i(740580),f=e.i(205054),h=e.i(388335),w=t([c]);[c]=w.then?(await w)():w;let g=(0,c.withAuth)(async(e,t)=>{let a=await (0,u.withWorkspaceMember)(e,t);if(a instanceof Response)return a;let{env:n}=(0,r.getCloudflareContext)(),i=(0,l.getDb)(n.DB);await (0,h.sweepStaleState)(i,a.workspaceId);let o=await s.queries.agent.listAgents(i,a.workspaceId,t.userId);return(0,p.writeJSON)(o.map(m.agentToResponse))}),T=(0,c.withAuth)(async(e,t)=>{let a=await (0,u.withWorkspaceMember)(e,t);if(a instanceof Response)return a;let{env:c}=(0,r.getCloudflareContext)(),h=(0,l.getDb)(c.DB),[w,g]=await (0,p.parseBody)(e,o.CreateAgentRequestSchema);if(g)return g;let T=w.name.trim(),_=w.runtime_id,k=w.max_concurrent_tasks||0;k<=0&&(k=6);let I="string"==typeof w.email_handle?w.email_handle.trim().toLowerCase():"";if(I){if(!(0,n.isValidHandle)(I))return(0,p.writeError)("email_handle must be 4+ alphanumeric/dash characters",400);if(await s.queries.agent.getAgentByHandle(h,I))return(0,p.writeError)("Handle already taken",409)}let y=await s.queries.runtime.getAgentRuntimeForWorkspace(h,_,a.workspaceId);if(!y)return(0,p.writeError)("runtime not found in workspace",404);let v=w.runtime_config,A=v?{..."string"==typeof v.model?{model:v.model}:{}}:null,S=await s.queries.agent.createAgent(h,{workspaceId:a.workspaceId,name:T,description:w.description,instructions:w.instructions,runtimeId:_,runtimeMode:y.runtimeMode,runtimeConfig:A,visibility:"private",maxConcurrentTasks:k,ownerId:t.userId,emailHandle:I||null,avatarUrl:w.avatar_url??null});if(I&&t.email&&await s.queries.whitelist.addWhitelist(h,S.id,a.workspaceId,t.email.toLowerCase()),S.runtimeId&&S.emailHandle&&t.email&&(0,i.isOnline)(y.machineLastSeenAt))try{let e=await s.queries.conversation.createConversation(h,{workspaceId:a.workspaceId,agentId:S.id,userId:t.userId,title:`Welcome: ${t.email}`.slice(0,50),type:d.TASK_TYPES.EMAIL_NOTIFICATION}),r=new f.TaskService(h);await r.enqueueTask(S.id,e.id,a.workspaceId,`You have just been created by your owner (${t.email}). Please send them a welcome email introducing yourself as "${T}". In the email: 1) Introduce yourself warmly — your name, your email address, and what you can help with. 2) Briefly introduce the Alook platform — a personal AI agent platform where agents can handle emails, schedule tasks, and work autonomously. 3) Let them know they can chat with you directly or email you anytime. Be warm, professional, and concise.`,d.TASK_TYPES.EMAIL_NOTIFICATION)}catch{}if((0,i.isOnline)(y.machineLastSeenAt)){let e=new f.TaskService(h);await e.reconcileAgentStatus(S.id,a.workspaceId);let r=await s.queries.agent.getAgent(h,S.id,a.workspaceId,t.userId);if(r)return(0,p.writeJSON)((0,m.agentToResponse)(r),201)}return(0,p.writeJSON)((0,m.agentToResponse)(S),201)});e.s(["GET",0,g,"POST",0,T]),a()}catch(e){a(e)}},!1),672424,e=>e.a(async(t,a)=>{try{var r=e.i(80774),s=e.i(404478),n=e.i(732985),i=e.i(481671),o=e.i(638081),d=e.i(204960),l=e.i(924918),c=e.i(363585),u=e.i(906846),p=e.i(359838),m=e.i(383303),f=e.i(234173),h=e.i(270215),w=e.i(830665),g=e.i(944002),T=e.i(193695);e.i(195928);var _=e.i(81543),k=e.i(587860),I=t([k]);[k]=I.then?(await I)():I;let v=new r.AppRouteRouteModule({definition:{kind:s.RouteKind.APP_ROUTE,page:"/api/agents/route",pathname:"/api/agents",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/web/src/app/api/agents/route.ts",nextConfigOutput:"standalone",userland:k,...{}}),{workAsyncStorage:A,workUnitAsyncStorage:S,serverHooks:b}=v;async function y(e,t,a){a.requestMeta&&(0,i.setRequestMeta)(e,a.requestMeta),v.isDev&&(0,i.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let r="/api/agents/route";r=r.replace(/\/index$/,"")||"/";let n=await v.prepare(e,t,{srcPage:r,multiZoneDraftMode:!1});if(!n)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:k,deploymentId:I,params:y,nextConfig:A,parsedUrl:S,isDraftMode:b,prerenderManifest:R,routerServerContext:E,isOnDemandRevalidate:x,revalidateOnlyGenerated:N,resolvedPathname:C,clientReferenceManifest:O,serverActionsManifest:M}=n,q=(0,l.normalizeAppPath)(r),P=!!(R.dynamicRoutes[q]||R.routes[C]),D=async()=>((null==E?void 0:E.render404)?await E.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[q];if(t&&!1===t.fallback&&!e){if(A.adapterPath)return await D();throw new T.NoFallbackError}}let U=null;!P||v.isDev||b||(U=C,U="/index"===U?"/":U);let K=!0===v.isDev||!P,B=P&&!K;M&&O&&(0,d.setManifestsSingleton)({page:r,clientReferenceManifest:O,serverActionsManifest:M});let $=e.method||"GET",L=(0,o.getTracer)(),H=L.getActiveScopeSpan(),j=!!(null==E?void 0:E.isWrappedByNextServer),F=!!(0,i.getRequestMeta)(e,"minimalMode"),W=(0,i.getRequestMeta)(e,"incrementalCache")||await v.getIncrementalCache(e,A,R,F);null==W||W.resetRequestCache(),globalThis.__incrementalCache=W;let J={params:y,previewProps:R.preview,renderOpts:{experimental:{authInterrupts:!!A.experimental.authInterrupts},cacheComponents:!!A.cacheComponents,supportsDynamicResponse:K,incrementalCache:W,cacheLifeProfiles:A.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,r,s)=>v.onRequestError(e,t,r,s,E)},sharedContext:{buildId:k,deploymentId:I}},Y=new c.NodeNextRequest(e),G=new c.NodeNextResponse(t),V=u.NextRequestAdapter.fromNodeNextRequest(Y,(0,u.signalFromNodeResponse)(t));try{let n,i=async e=>v.handle(V,J).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=L.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==p.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let s=a.get("next.route");if(s){let t=`${$} ${s}`;e.setAttributes({"next.route":s,"http.route":s,"next.span_name":t}),e.updateName(t),n&&n!==e&&(n.setAttribute("http.route",s),n.updateName(t))}else e.updateName(`${$} ${r}`)}),d=async n=>{var o,d;let l=async({previousCacheEntry:s})=>{try{if(!F&&x&&N&&!s)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let r=await i(n);e.fetchMetrics=J.renderOpts.fetchMetrics;let o=J.renderOpts.pendingWaitUntil;o&&a.waitUntil&&(a.waitUntil(o),o=void 0);let d=J.renderOpts.collectedTags;if(!P)return await (0,f.sendResponse)(Y,G,r,J.renderOpts.pendingWaitUntil),null;{let e=await r.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(r.headers);d&&(t[g.NEXT_CACHE_TAGS_HEADER]=d),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==J.renderOpts.collectedRevalidate&&!(J.renderOpts.collectedRevalidate>=g.INFINITE_CACHE)&&J.renderOpts.collectedRevalidate,s=void 0===J.renderOpts.collectedExpire||J.renderOpts.collectedExpire>=g.INFINITE_CACHE?void 0:J.renderOpts.collectedExpire;return{value:{kind:_.CachedRouteKind.APP_ROUTE,status:r.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:s}}}}catch(t){throw(null==s?void 0:s.isStale)&&await v.onRequestError(e,t,{routerKind:"App Router",routePath:r,routeType:"route",revalidateReason:(0,m.getRevalidateReason)({isStaticGeneration:B,isOnDemandRevalidate:x})},!1,E),t}},c=await v.handleResponse({req:e,nextConfig:A,cacheKey:U,routeKind:s.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:R,isRoutePPREnabled:!1,isOnDemandRevalidate:x,revalidateOnlyGenerated:N,responseGenerator:l,waitUntil:a.waitUntil,isMinimalMode:F});if(!P)return null;if((null==c||null==(o=c.value)?void 0:o.kind)!==_.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==c||null==(d=c.value)?void 0:d.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});F||t.setHeader("x-nextjs-cache",x?"REVALIDATED":c.isMiss?"MISS":c.isStale?"STALE":"HIT"),b&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let u=(0,h.fromNodeOutgoingHttpHeaders)(c.value.headers);return F&&P||u.delete(g.NEXT_CACHE_TAGS_HEADER),!c.cacheControl||t.getHeader("Cache-Control")||u.get("Cache-Control")||u.set("Cache-Control",(0,w.getCacheControlHeader)(c.cacheControl)),await (0,f.sendResponse)(Y,G,new Response(c.value.body,{headers:u,status:c.value.status||200})),null};j&&H?await d(H):(n=L.getActiveScopeSpan(),await L.withPropagatedContext(e.headers,()=>L.trace(p.BaseServerSpan.handleRequest,{spanName:`${$} ${r}`,kind:o.SpanKind.SERVER,attributes:{"http.method":$,"http.target":e.url}},d),void 0,!j))}catch(t){if(t instanceof T.NoFallbackError||await v.onRequestError(e,t,{routerKind:"App Router",routePath:q,routeType:"route",revalidateReason:(0,m.getRevalidateReason)({isStaticGeneration:B,isOnDemandRevalidate:x})},!1,E),P)throw t;return await (0,f.sendResponse)(Y,G,new Response(null,{status:500})),null}}e.s(["handler",0,y,"patchFetch",0,function(){return(0,n.patchFetch)({workAsyncStorage:A,workUnitAsyncStorage:S})},"routeModule",0,v,"serverHooks",0,b,"workAsyncStorage",0,A,"workUnitAsyncStorage",0,S]),a()}catch(e){a(e)}},!1)];
2
2
 
3
3
  //# sourceMappingURL=_0dp6scf._.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(291484);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),c=await (0,n.cached)(n.cacheKeys.member(o,i.userId),1800,()=>s.queries.member.getMemberByUserAndWorkspace(l,i.userId,o));return c||i.workspaceId!==o?c?{workspaceId:o,memberRole:c.role}:t.NextResponse.json({error:"workspace not found"},{status:404}):{workspaceId:o,memberRole:"member"}}async function o(e,a){let 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])},469187,e=>{"use strict";var t=e.i(704024);e.s(["isOnline",0,function(e){if(!e)return!1;let a=new Date(e.includes("T")||e.includes("Z")||e.includes("+")?e:e+"Z").getTime();return!isNaN(a)&&Date.now()-a<t.OFFLINE_THRESHOLD_MS}])},740580,e=>{"use strict";var t=e.i(776227);e.i(700598);var a=e.i(888247),s=e.i(469187),r=e.i(704024);e.s(["agentLinkToResponse",0,function(e){return{id:e.id,workspace_id:e.workspaceId,source_agent_id:e.sourceAgentId,target_agent_id:e.targetAgentId,instruction:e.instruction,created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}},"agentToResponse",0,function(e){let a=e.runtimeConfig;return a||(a={}),{id:e.id,workspace_id:e.workspaceId,runtime_id:e.runtimeId||"",name:e.name,description:e.description,instructions:e.instructions,runtime_mode:e.runtimeMode,runtime_config:a,status:e.status,max_concurrent_tasks:e.maxConcurrentTasks,email_handle:e.emailHandle||null,avatar_url:e.avatarUrl??null,visibility:e.visibility??"private",owner_id:e.ownerId??null,created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}},"calendarEventToResponse",0,function(e){let a=(0,t.formatTimestamp)(e.scheduledAt),s=e.occurrenceAt?(0,t.formatTimestamp)(e.occurrenceAt):a;return{id:e.id,agent_id:e.agentId,workspace_id:e.workspaceId,title:e.title,description:e.description??null,scheduled_at:a,occurrence_at:s,collapsed_count:e.collapsedCount??null,repeat_interval:e.repeatInterval??null,repeat_stop_at:(0,t.formatTimestampNullable)(e.repeatStopAt),last_triggered_at:(0,t.formatTimestampNullable)(e.lastTriggeredAt),created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}},"channelToResponse",0,function(e){return{id:e.id,workspace_id:e.workspaceId,name:e.name,created_at:(0,t.formatTimestamp)(e.createdAt)}},"conversationToResponse",0,function(e){let a={id:e.id,agent_id:e.agentId,title:e.title,type:e.type??r.TASK_TYPES.USER_DM_MESSAGE,channel:e.channel??"default",created_at:(0,t.formatTimestamp)(e.createdAt)};return void 0!==e.messageCount&&(a.message_count=e.messageCount),a},"emailToResponse",0,function(e){return{id:e.id,agent_id:e.agentId,from_email:e.fromEmail,to_email:e.toEmail,subject:e.subject,r2_key:e.r2Key,is_whitelisted:!!e.isWhitelisted,forwarded:!!e.forwarded,message_id:e.messageId??"",in_reply_to:e.inReplyTo??"",references:e.references??"",html_body:e.htmlBody??"",attachments:JSON.parse(e.attachments||"[]"),status:e.status??"unread",direction:e.direction??"inbound",created_at:(0,t.formatTimestamp)(e.createdAt)}},"inviteToResponse",0,function(e){return{id:e.id,token:e.token,created_by:e.createdBy,used_by:e.usedBy,expires_at:(0,t.formatTimestamp)(e.expiresAt),created_at:(0,t.formatTimestamp)(e.createdAt)}},"issueToResponse",0,function(e){return{id:e.id,workspace_id:e.workspaceId,agent_id:e.agentId,creator_user_id:e.creatorUserId,conversation_id:e.conversationId,latest_task_id:e.latestTaskId??null,title:e.title,description:e.description??"",status:e.status,created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt),completed_at:(0,t.formatTimestampNullable)(e.completedAt)}},"machineTokenToResponse",0,function(e){return{id:e.id,name:e.name,last_used_at:(0,t.formatTimestampNullable)(e.lastUsedAt),created_at:(0,t.formatTimestamp)(e.createdAt)}},"meetingToResponse",0,function(e){return{id:e.id,agent_id:e.agentId,workspace_id:e.workspaceId,title:e.title,meeting_url:e.meetingUrl,status:e.status,from_email:e.fromEmail??null,is_whitelisted:!!e.isWhitelisted,participants:e.participants??[],scheduled_at:(0,t.formatTimestampNullable)(e.scheduledAt),started_at:(0,t.formatTimestampNullable)(e.startedAt),completed_at:(0,t.formatTimestampNullable)(e.completedAt),transcript_r2_key:e.transcriptR2Key??null,summary:e.summary??null,error:e.error??null,worker_session_id:e.workerSessionId??null,created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}},"memberToResponse",0,function(e){return{id:e.id,user_id:e.userId,role:e.role,name:e.userName,email:e.userEmail,image:e.userImage,created_at:(0,t.formatTimestamp)(e.createdAt)}},"messageToResponse",0,function(e){let a={id:e.id,conversation_id:e.conversationId,role:e.role,content:e.content,task_id:e.taskId||null,attachment_ids:e.attachmentIds?JSON.parse(e.attachmentIds):null,metadata:e.metadata?JSON.parse(e.metadata):null,created_at:(0,t.formatTimestamp)(e.createdAt)};return e.status&&"active"!==e.status&&(a.status=e.status),a},"runtimeToResponse",0,function(e){let a=e.metadata;a||(a={});let r=e.machineLastSeenAt??null,n=r instanceof Date?r.toISOString():r;return{id:e.id,workspace_id:e.workspaceId,daemon_id:e.daemonId||null,runtime_mode:e.runtimeMode,provider:e.provider,status:(0,s.isOnline)(n)?"online":"offline",device_info:e.deviceInfo,metadata:a,pending_update_version:e.pendingUpdateVersion??null,pending_rescan:!!e.pendingRescan,last_seen_at:(0,t.formatTimestampNullable)(r),created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}},"taskMessageToResponse",0,function(e){let t={id:e.id,task_id:e.taskId,seq:e.seq,type:e.type,tool:e.tool,call_id:e.callId||"",content:e.content,output:e.output};return e.input&&(t.input=e.input),t},"taskToActivityResponse",0,function(e){let a=e.prompt.length>120?e.prompt.slice(0,120):e.prompt;return{id:e.id,conversation_id:e.conversationId,type:e.type??r.TASK_TYPES.USER_DM_MESSAGE,status:e.status,prompt:a,created_at:(0,t.formatTimestamp)(e.createdAt),started_at:(0,t.formatTimestampNullable)(e.startedAt),completed_at:(0,t.formatTimestampNullable)(e.completedAt),error:e.error||null}},"taskToResponse",0,function(e){return a.TaskApiBaseSchema.parse({id:e.id,agent_id:e.agentId,runtime_id:e.runtimeId,conversation_id:e.conversationId,workspace_id:e.workspaceId,prompt:e.prompt,type:e.type??r.TASK_TYPES.USER_DM_MESSAGE,context_key:e.contextKey??null,context:e.context??null,status:e.status,priority:e.priority,dispatched_at:(0,t.formatTimestampNullable)(e.dispatchedAt),started_at:(0,t.formatTimestampNullable)(e.startedAt),completed_at:(0,t.formatTimestampNullable)(e.completedAt),result:e.result??null,error:e.error||null,created_at:(0,t.formatTimestamp)(e.createdAt),trace_id:e.traceId??null,parent_task_id:e.parentTaskId??null})},"userToResponse",0,function(e){return{id:e.id,name:e.name,email:e.email,avatar_url:e.avatarUrl??null,created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}},"workspaceToResponse",0,function(e){return{id:e.id,name:e.name,slug:e.slug,created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}}])},726089,e=>{"use strict";var t=e.i(291484);e.i(700598);var a=e.i(704024);let s=(0,e.i(726527).createLogger)({service:"broadcast"});async function r(e,r,n){let i;try{let{env:a}=(0,t.getCloudflareContext)();i=a.DEV_WS_DO_URL;let o=await a.WS_DO_WORKER.fetch(`http://internal${e}`,{method:"POST",body:r});if(o.ok)return;s.warn("broadcast service-binding non-ok",{...n,status:o.status});return}catch{}let o=i||a.DEV_WS_DO_URL;try{let t=await fetch(`${o}${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:r});t.ok||s.warn("broadcast failed",{...n,status:t.status})}catch(e){s.warn("broadcast error",{...n,err:String(e)})}}e.s(["broadcastToUser",0,function(e,a){return function(e,a,s){let n=r(e,a,s);try{let{ctx:e}=(0,t.getCloudflareContext)();e.waitUntil(n)}catch{}return n}(`/broadcast/user/${e}`,JSON.stringify(a),{userId:e,type:a.type})}])},799579,e=>{"use strict";e.i(700598);let t=(0,e.i(726527).createLogger)({service:"web",level:process.env.ALOOK_LOG_LEVEL||"info",pretty:!1});e.s(["log",0,t])},205054,e=>{"use strict";e.i(700598);var t=e.i(291109),a=e.i(704024),s=e.i(799579),r=e.i(726089),n=e.i(740580);let i=t.queries.task,o=t.queries.agent,d=t.queries.message,l=t.queries.conversation,c=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,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 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 c.getIssueByConversation(this.db,e.conversationId,e.workspaceId);if(!s||s.status===t||!await c.updateIssue(this.db,s.id,e.workspaceId,{status:t}))return;let i=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})});try{let t=await l.getConversation(this.db,e.conversationId,e.workspaceId);t&&(0,r.broadcastToUser)(t.userId,{type:"conversation.message",conversationId:e.conversationId,message:(0,n.messageToResponse)(i)}).catch(()=>{})}catch{}}async supersedeTask(e,t){let a=await 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 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 i.getLatestTaskForConversation(this.db,e),p=l?.traceId??null,m=await this.enqueueTask(c.agentId,e,t,o.content,a.TASK_TYPES.USER_DM_MESSAGE,{contextKey:e,context: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)(u,{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)(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 i.getTraceTree(this.db,e,t)).filter(e=>["queued","dispatched","running"].includes(e.status)).map(e=>e.conversationId))])try{await this.cancelActiveTask(r,t,{skipDispatch:!0,reason:a?.reason})}catch(t){s.log.warn("cancelTrace: failed to cancel task",{traceId:e,convId:r,err:t})}}}])},388335,e=>{"use strict";e.i(700598);var t=e.i(291109),a=e.i(205054),s=e.i(774078);async function r(e,r){let n=`sweep:${r}`,i=!1;try{if(await (0,s.cached)(n,30,async()=>(i=!0,new Date().toISOString())),!i)return}catch{i=!0}let o=await t.queries.task.failStaleDispatchedTasks(e,r);await t.queries.task.failStaleKillTasks(e,r);let d=[...o,...await t.queries.task.failStaleRunningTasks(e,r)];if(d.length>0){let t=new a.TaskService(e),s=new Set;for(let e of d){let a=`${e.agentId}:${e.workspaceId}`;s.has(a)||(s.add(a),await t.reconcileAgentStatus(e.agentId,e.workspaceId))}let r=new Set;for(let e of d)r.has(e.conversationId)||(r.add(e.conversationId),await t.dispatchNextBufferedMessage(e.conversationId,e.workspaceId))}}e.s(["sweepStaleState",0,r])},450329,e=>e.a(async(t,a)=>{try{var s=e.i(291484);e.i(700598);var r=e.i(291109),n=e.i(726527),i=e.i(675139),o=e.i(152327),d=e.i(47962),l=e.i(776227),c=e.i(740580),u=e.i(388335),p=e.i(774078),m=t([o]);[o]=m.then?(await m)():m;let f=(0,n.createLogger)({service:"api:runtimes"}),h=(0,o.withAuth)(async(e,t)=>{let a=await (0,d.withWorkspaceMember)(e,t);if(a instanceof Response)return a;let{env:n}=(0,s.getCloudflareContext)(),o=(0,i.getDb)(n.DB);try{await (0,u.sweepStaleState)(o,a.workspaceId)}catch(e){f.warn("sweepStaleState failed, continuing",{workspaceId:a.workspaceId,err:String(e)})}let m=await r.queries.runtime.listAgentRuntimes(o,a.workspaceId),h=n.CACHE_KV??null;return h&&await Promise.all(m.map(async e=>{if(e.daemonId){let t=await h.get(p.cacheKeys.heartbeat(a.workspaceId,e.daemonId)).catch(()=>null);t&&(e.machineLastSeenAt=t)}})),(0,l.writeJSON)(m.map(c.runtimeToResponse))});e.s(["GET",0,h]),a()}catch(e){a(e)}},!1),496563,e=>e.a(async(t,a)=>{try{var s=e.i(80774),r=e.i(404478),n=e.i(732985),i=e.i(481671),o=e.i(638081),d=e.i(204960),l=e.i(924918),c=e.i(363585),u=e.i(906846),p=e.i(359838),m=e.i(383303),f=e.i(234173),h=e.i(270215),w=e.i(830665),g=e.i(944002),T=e.i(193695);e.i(195928);var _=e.i(81543),k=e.i(450329),I=t([k]);[k]=I.then?(await I)():I;let y=new s.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/runtimes/route",pathname:"/api/runtimes",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/web/src/app/api/runtimes/route.ts",nextConfigOutput:"standalone",userland:k,...{}}),{workAsyncStorage:S,workUnitAsyncStorage:A,serverHooks:R}=y;async function v(e,t,a){a.requestMeta&&(0,i.setRequestMeta)(e,a.requestMeta),y.isDev&&(0,i.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let s="/api/runtimes/route";s=s.replace(/\/index$/,"")||"/";let n=await y.prepare(e,t,{srcPage:s,multiZoneDraftMode:!1});if(!n)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:k,deploymentId:I,params:v,nextConfig:S,parsedUrl:A,isDraftMode:R,prerenderManifest:b,routerServerContext:E,isOnDemandRevalidate:x,revalidateOnlyGenerated:N,resolvedPathname:C,clientReferenceManifest:M,serverActionsManifest:O}=n,P=(0,l.normalizeAppPath)(s),q=!!(b.dynamicRoutes[P]||b.routes[C]),D=async()=>((null==E?void 0:E.render404)?await E.render404(e,t,A,!1):t.end("This page could not be found"),null);if(q&&!R){let e=!!b.routes[C],t=b.dynamicRoutes[P];if(t&&!1===t.fallback&&!e){if(S.adapterPath)return await D();throw new T.NoFallbackError}}let K=null;!q||y.isDev||R||(K=C,K="/index"===K?"/":K);let U=!0===y.isDev||!q,$=q&&!U;O&&M&&(0,d.setManifestsSingleton)({page:s,clientReferenceManifest:M,serverActionsManifest:O});let B=e.method||"GET",L=(0,o.getTracer)(),H=L.getActiveScopeSpan(),j=!!(null==E?void 0:E.isWrappedByNextServer),F=!!(0,i.getRequestMeta)(e,"minimalMode"),W=(0,i.getRequestMeta)(e,"incrementalCache")||await y.getIncrementalCache(e,S,b,F);null==W||W.resetRequestCache(),globalThis.__incrementalCache=W;let G={params:v,previewProps:b.preview,renderOpts:{experimental:{authInterrupts:!!S.experimental.authInterrupts},cacheComponents:!!S.cacheComponents,supportsDynamicResponse:U,incrementalCache:W,cacheLifeProfiles:S.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,s,r)=>y.onRequestError(e,t,s,r,E)},sharedContext:{buildId:k,deploymentId:I}},J=new c.NodeNextRequest(e),V=new c.NodeNextResponse(t),Y=u.NextRequestAdapter.fromNodeNextRequest(J,(0,u.signalFromNodeResponse)(t));try{let n,i=async e=>y.handle(Y,G).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=L.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==p.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let r=a.get("next.route");if(r){let t=`${B} ${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(`${B} ${s}`)}),d=async n=>{var o,d;let l=async({previousCacheEntry:r})=>{try{if(!F&&x&&N&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await i(n);e.fetchMetrics=G.renderOpts.fetchMetrics;let o=G.renderOpts.pendingWaitUntil;o&&a.waitUntil&&(a.waitUntil(o),o=void 0);let d=G.renderOpts.collectedTags;if(!q)return await (0,f.sendResponse)(J,V,s,G.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(s.headers);d&&(t[g.NEXT_CACHE_TAGS_HEADER]=d),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==G.renderOpts.collectedRevalidate&&!(G.renderOpts.collectedRevalidate>=g.INFINITE_CACHE)&&G.renderOpts.collectedRevalidate,r=void 0===G.renderOpts.collectedExpire||G.renderOpts.collectedExpire>=g.INFINITE_CACHE?void 0:G.renderOpts.collectedExpire;return{value:{kind:_.CachedRouteKind.APP_ROUTE,status:s.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:r}}}}catch(t){throw(null==r?void 0:r.isStale)&&await y.onRequestError(e,t,{routerKind:"App Router",routePath:s,routeType:"route",revalidateReason:(0,m.getRevalidateReason)({isStaticGeneration:$,isOnDemandRevalidate:x})},!1,E),t}},c=await y.handleResponse({req:e,nextConfig:S,cacheKey:K,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:b,isRoutePPREnabled:!1,isOnDemandRevalidate:x,revalidateOnlyGenerated:N,responseGenerator:l,waitUntil:a.waitUntil,isMinimalMode:F});if(!q)return null;if((null==c||null==(o=c.value)?void 0:o.kind)!==_.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==c||null==(d=c.value)?void 0:d.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});F||t.setHeader("x-nextjs-cache",x?"REVALIDATED":c.isMiss?"MISS":c.isStale?"STALE":"HIT"),R&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let u=(0,h.fromNodeOutgoingHttpHeaders)(c.value.headers);return F&&q||u.delete(g.NEXT_CACHE_TAGS_HEADER),!c.cacheControl||t.getHeader("Cache-Control")||u.get("Cache-Control")||u.set("Cache-Control",(0,w.getCacheControlHeader)(c.cacheControl)),await (0,f.sendResponse)(J,V,new Response(c.value.body,{headers:u,status:c.value.status||200})),null};j&&H?await d(H):(n=L.getActiveScopeSpan(),await L.withPropagatedContext(e.headers,()=>L.trace(p.BaseServerSpan.handleRequest,{spanName:`${B} ${s}`,kind:o.SpanKind.SERVER,attributes:{"http.method":B,"http.target":e.url}},d),void 0,!j))}catch(t){if(t instanceof T.NoFallbackError||await y.onRequestError(e,t,{routerKind:"App Router",routePath:P,routeType:"route",revalidateReason:(0,m.getRevalidateReason)({isStaticGeneration:$,isOnDemandRevalidate:x})},!1,E),q)throw t;return await (0,f.sendResponse)(J,V,new Response(null,{status:500})),null}}e.s(["handler",0,v,"patchFetch",0,function(){return(0,n.patchFetch)({workAsyncStorage:S,workUnitAsyncStorage:A})},"routeModule",0,y,"serverHooks",0,R,"workAsyncStorage",0,S,"workUnitAsyncStorage",0,A]),a()}catch(e){a(e)}},!1)];
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(291484);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),c=await (0,n.cached)(n.cacheKeys.member(o,i.userId),1800,()=>s.queries.member.getMemberByUserAndWorkspace(l,i.userId,o));return c||i.workspaceId!==o?c?{workspaceId:o,memberRole:c.role}:t.NextResponse.json({error:"workspace not found"},{status:404}):{workspaceId:o,memberRole:"member"}}async function o(e,a){let 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])},469187,e=>{"use strict";var t=e.i(704024);e.s(["isOnline",0,function(e){if(!e)return!1;let a=new Date(e.includes("T")||e.includes("Z")||e.includes("+")?e:e+"Z").getTime();return!isNaN(a)&&Date.now()-a<t.OFFLINE_THRESHOLD_MS}])},740580,e=>{"use strict";var t=e.i(776227);e.i(700598);var a=e.i(888247),s=e.i(469187),r=e.i(704024);e.s(["agentLinkToResponse",0,function(e){return{id:e.id,workspace_id:e.workspaceId,source_agent_id:e.sourceAgentId,target_agent_id:e.targetAgentId,instruction:e.instruction,created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}},"agentToResponse",0,function(e){let a=e.runtimeConfig;return a||(a={}),{id:e.id,workspace_id:e.workspaceId,runtime_id:e.runtimeId||"",name:e.name,description:e.description,instructions:e.instructions,runtime_mode:e.runtimeMode,runtime_config:a,status:e.status,max_concurrent_tasks:e.maxConcurrentTasks,email_handle:e.emailHandle||null,avatar_url:e.avatarUrl??null,visibility:e.visibility??"private",owner_id:e.ownerId??null,created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}},"calendarEventToResponse",0,function(e){let a=(0,t.formatTimestamp)(e.scheduledAt),s=e.occurrenceAt?(0,t.formatTimestamp)(e.occurrenceAt):a;return{id:e.id,agent_id:e.agentId,workspace_id:e.workspaceId,title:e.title,description:e.description??null,scheduled_at:a,occurrence_at:s,collapsed_count:e.collapsedCount??null,repeat_interval:e.repeatInterval??null,repeat_stop_at:(0,t.formatTimestampNullable)(e.repeatStopAt),last_triggered_at:(0,t.formatTimestampNullable)(e.lastTriggeredAt),created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}},"channelToResponse",0,function(e){return{id:e.id,workspace_id:e.workspaceId,name:e.name,created_at:(0,t.formatTimestamp)(e.createdAt)}},"conversationToResponse",0,function(e){let a={id:e.id,agent_id:e.agentId,title:e.title,type:e.type??r.TASK_TYPES.USER_DM_MESSAGE,channel:e.channel??"default",created_at:(0,t.formatTimestamp)(e.createdAt)};return void 0!==e.messageCount&&(a.message_count=e.messageCount),a},"emailToResponse",0,function(e){return{id:e.id,agent_id:e.agentId,from_email:e.fromEmail,to_email:e.toEmail,subject:e.subject,r2_key:e.r2Key,is_whitelisted:!!e.isWhitelisted,forwarded:!!e.forwarded,message_id:e.messageId??"",in_reply_to:e.inReplyTo??"",references:e.references??"",html_body:e.htmlBody??"",attachments:JSON.parse(e.attachments||"[]"),status:e.status??"unread",direction:e.direction??"inbound",created_at:(0,t.formatTimestamp)(e.createdAt)}},"inviteToResponse",0,function(e){return{id:e.id,token:e.token,created_by:e.createdBy,used_by:e.usedBy,expires_at:(0,t.formatTimestamp)(e.expiresAt),created_at:(0,t.formatTimestamp)(e.createdAt)}},"issueToResponse",0,function(e){return{id:e.id,workspace_id:e.workspaceId,agent_id:e.agentId,creator_user_id:e.creatorUserId,conversation_id:e.conversationId,latest_task_id:e.latestTaskId??null,title:e.title,description:e.description??"",status:e.status,created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt),completed_at:(0,t.formatTimestampNullable)(e.completedAt)}},"machineTokenToResponse",0,function(e){return{id:e.id,name:e.name,last_used_at:(0,t.formatTimestampNullable)(e.lastUsedAt),created_at:(0,t.formatTimestamp)(e.createdAt)}},"meetingToResponse",0,function(e){return{id:e.id,agent_id:e.agentId,workspace_id:e.workspaceId,title:e.title,meeting_url:e.meetingUrl,status:e.status,from_email:e.fromEmail??null,is_whitelisted:!!e.isWhitelisted,participants:e.participants??[],scheduled_at:(0,t.formatTimestampNullable)(e.scheduledAt),started_at:(0,t.formatTimestampNullable)(e.startedAt),completed_at:(0,t.formatTimestampNullable)(e.completedAt),transcript_r2_key:e.transcriptR2Key??null,summary:e.summary??null,error:e.error??null,worker_session_id:e.workerSessionId??null,created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}},"memberToResponse",0,function(e){return{id:e.id,user_id:e.userId,role:e.role,name:e.userName,email:e.userEmail,image:e.userImage,created_at:(0,t.formatTimestamp)(e.createdAt)}},"messageToResponse",0,function(e){let a={id:e.id,conversation_id:e.conversationId,role:e.role,content:e.content,task_id:e.taskId||null,attachment_ids:e.attachmentIds?JSON.parse(e.attachmentIds):null,metadata:e.metadata?JSON.parse(e.metadata):null,created_at:(0,t.formatTimestamp)(e.createdAt)};return e.status&&"active"!==e.status&&(a.status=e.status),a},"runtimeToResponse",0,function(e){let a=e.metadata;a||(a={});let r=e.machineLastSeenAt??null,n=r instanceof Date?r.toISOString():r;return{id:e.id,workspace_id:e.workspaceId,daemon_id:e.daemonId||null,runtime_mode:e.runtimeMode,provider:e.provider,status:(0,s.isOnline)(n)?"online":"offline",device_info:e.deviceInfo,metadata:a,pending_update_version:e.pendingUpdateVersion??null,pending_rescan:!!e.pendingRescan,last_seen_at:(0,t.formatTimestampNullable)(r),created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}},"taskMessageToResponse",0,function(e){let t={id:e.id,task_id:e.taskId,seq:e.seq,type:e.type,tool:e.tool,call_id:e.callId||"",content:e.content,output:e.output};return e.input&&(t.input=e.input),t},"taskToActivityResponse",0,function(e){let a=e.prompt.length>120?e.prompt.slice(0,120):e.prompt;return{id:e.id,conversation_id:e.conversationId,type:e.type??r.TASK_TYPES.USER_DM_MESSAGE,status:e.status,prompt:a,created_at:(0,t.formatTimestamp)(e.createdAt),started_at:(0,t.formatTimestampNullable)(e.startedAt),completed_at:(0,t.formatTimestampNullable)(e.completedAt),error:e.error||null}},"taskToResponse",0,function(e){return a.TaskApiBaseSchema.parse({id:e.id,agent_id:e.agentId,runtime_id:e.runtimeId,conversation_id:e.conversationId,workspace_id:e.workspaceId,prompt:e.prompt,type:e.type??r.TASK_TYPES.USER_DM_MESSAGE,context_key:e.contextKey??null,context:e.context??null,status:e.status,priority:e.priority,dispatched_at:(0,t.formatTimestampNullable)(e.dispatchedAt),started_at:(0,t.formatTimestampNullable)(e.startedAt),completed_at:(0,t.formatTimestampNullable)(e.completedAt),result:e.result??null,error:e.error||null,created_at:(0,t.formatTimestamp)(e.createdAt),trace_id:e.traceId??null,parent_task_id:e.parentTaskId??null})},"userToResponse",0,function(e){return{id:e.id,name:e.name,email:e.email,avatar_url:e.avatarUrl??null,created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}},"workspaceToResponse",0,function(e){return{id:e.id,name:e.name,slug:e.slug,created_at:(0,t.formatTimestamp)(e.createdAt),updated_at:(0,t.formatTimestamp)(e.updatedAt)}}])},726089,e=>{"use strict";var t=e.i(291484);e.i(700598);var a=e.i(704024);let s=(0,e.i(726527).createLogger)({service:"broadcast"});async function r(e,r,n){let i;try{let{env:a}=(0,t.getCloudflareContext)();i=a.DEV_WS_DO_URL;let o=await a.WS_DO_WORKER.fetch(`http://internal${e}`,{method:"POST",body:r});if(o.ok)return;s.warn("broadcast service-binding non-ok",{...n,status:o.status});return}catch{}let o=i||a.DEV_WS_DO_URL;try{let t=await fetch(`${o}${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:r});t.ok||s.warn("broadcast failed",{...n,status:t.status})}catch(e){s.warn("broadcast error",{...n,err:String(e)})}}e.s(["broadcastToUser",0,function(e,a){return function(e,a,s){let n=r(e,a,s);try{let{ctx:e}=(0,t.getCloudflareContext)();e.waitUntil(n)}catch{}return n}(`/broadcast/user/${e}`,JSON.stringify(a),{userId:e,type:a.type})}])},799579,e=>{"use strict";e.i(700598);let t=(0,e.i(726527).createLogger)({service:"web",level:process.env.ALOOK_LOG_LEVEL||"info",pretty:!1});e.s(["log",0,t])},205054,e=>{"use strict";e.i(700598);var t=e.i(291109),a=e.i(704024),s=e.i(799579),r=e.i(726089),n=e.i(740580);let i=t.queries.task,o=t.queries.agent,d=t.queries.message,l=t.queries.conversation,c=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,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 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 c.getIssueByConversation(this.db,e.conversationId,e.workspaceId);if(!s||s.status===t||!await c.updateIssue(this.db,s.id,e.workspaceId,{status:t}))return;let i=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})});try{let t=await l.getConversation(this.db,e.conversationId,e.workspaceId);t&&(0,r.broadcastToUser)(t.userId,{type:"conversation.message",conversationId:e.conversationId,message:(0,n.messageToResponse)(i)}).catch(()=>{})}catch{}}async supersedeTask(e,t){let a=await 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 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 i.getLatestTaskForConversation(this.db,e),p=l?.traceId??null,m=await this.enqueueTask(c.agentId,e,t,o.content,a.TASK_TYPES.USER_DM_MESSAGE,{contextKey:e,context: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)(u,{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)(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 i.getTraceTree(this.db,e,t)).filter(e=>["queued","dispatched","running"].includes(e.status)).map(e=>e.conversationId))])try{await this.cancelActiveTask(r,t,{skipDispatch:!0,reason:a?.reason})}catch(t){s.log.warn("cancelTrace: failed to cancel task",{traceId:e,convId:r,err:t})}}}])},388335,e=>{"use strict";e.i(700598);var t=e.i(291109),a=e.i(205054),s=e.i(774078);async function r(e,r){let n=`sweep:${r}`,i=!1;try{i=await (0,s.throttled)(n,30,async()=>{})}catch{i=!0}if(!i)return;let o=await t.queries.task.failStaleDispatchedTasks(e,r);await t.queries.task.failStaleKillTasks(e,r);let d=[...o,...await t.queries.task.failStaleRunningTasks(e,r)];if(d.length>0){let t=new a.TaskService(e),s=new Set;for(let e of d){let a=`${e.agentId}:${e.workspaceId}`;s.has(a)||(s.add(a),await t.reconcileAgentStatus(e.agentId,e.workspaceId))}let r=new Set;for(let e of d)r.has(e.conversationId)||(r.add(e.conversationId),await t.dispatchNextBufferedMessage(e.conversationId,e.workspaceId))}}e.s(["sweepStaleState",0,r])},450329,e=>e.a(async(t,a)=>{try{var s=e.i(291484);e.i(700598);var r=e.i(291109),n=e.i(726527),i=e.i(675139),o=e.i(152327),d=e.i(47962),l=e.i(776227),c=e.i(740580),u=e.i(388335),p=e.i(774078),m=t([o]);[o]=m.then?(await m)():m;let f=(0,n.createLogger)({service:"api:runtimes"}),h=(0,o.withAuth)(async(e,t)=>{let a=await (0,d.withWorkspaceMember)(e,t);if(a instanceof Response)return a;let{env:n}=(0,s.getCloudflareContext)(),o=(0,i.getDb)(n.DB);try{await (0,u.sweepStaleState)(o,a.workspaceId)}catch(e){f.warn("sweepStaleState failed, continuing",{workspaceId:a.workspaceId,err:String(e)})}let m=await r.queries.runtime.listAgentRuntimes(o,a.workspaceId),h=n.CACHE_KV??null;return h&&await Promise.all(m.map(async e=>{if(e.daemonId){let t=await h.get(p.cacheKeys.heartbeat(a.workspaceId,e.daemonId)).catch(()=>null);t&&(e.machineLastSeenAt=t)}})),(0,l.writeJSON)(m.map(c.runtimeToResponse))});e.s(["GET",0,h]),a()}catch(e){a(e)}},!1),496563,e=>e.a(async(t,a)=>{try{var s=e.i(80774),r=e.i(404478),n=e.i(732985),i=e.i(481671),o=e.i(638081),d=e.i(204960),l=e.i(924918),c=e.i(363585),u=e.i(906846),p=e.i(359838),m=e.i(383303),f=e.i(234173),h=e.i(270215),w=e.i(830665),g=e.i(944002),T=e.i(193695);e.i(195928);var _=e.i(81543),k=e.i(450329),I=t([k]);[k]=I.then?(await I)():I;let y=new s.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/runtimes/route",pathname:"/api/runtimes",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/web/src/app/api/runtimes/route.ts",nextConfigOutput:"standalone",userland:k,...{}}),{workAsyncStorage:A,workUnitAsyncStorage:R,serverHooks:S}=y;async function v(e,t,a){a.requestMeta&&(0,i.setRequestMeta)(e,a.requestMeta),y.isDev&&(0,i.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let s="/api/runtimes/route";s=s.replace(/\/index$/,"")||"/";let n=await y.prepare(e,t,{srcPage:s,multiZoneDraftMode:!1});if(!n)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:k,deploymentId:I,params:v,nextConfig:A,parsedUrl:R,isDraftMode:S,prerenderManifest:b,routerServerContext:E,isOnDemandRevalidate:x,revalidateOnlyGenerated:N,resolvedPathname:C,clientReferenceManifest:M,serverActionsManifest:O}=n,P=(0,l.normalizeAppPath)(s),q=!!(b.dynamicRoutes[P]||b.routes[C]),D=async()=>((null==E?void 0:E.render404)?await E.render404(e,t,R,!1):t.end("This page could not be found"),null);if(q&&!S){let e=!!b.routes[C],t=b.dynamicRoutes[P];if(t&&!1===t.fallback&&!e){if(A.adapterPath)return await D();throw new T.NoFallbackError}}let K=null;!q||y.isDev||S||(K=C,K="/index"===K?"/":K);let U=!0===y.isDev||!q,$=q&&!U;O&&M&&(0,d.setManifestsSingleton)({page:s,clientReferenceManifest:M,serverActionsManifest:O});let B=e.method||"GET",L=(0,o.getTracer)(),H=L.getActiveScopeSpan(),j=!!(null==E?void 0:E.isWrappedByNextServer),F=!!(0,i.getRequestMeta)(e,"minimalMode"),W=(0,i.getRequestMeta)(e,"incrementalCache")||await y.getIncrementalCache(e,A,b,F);null==W||W.resetRequestCache(),globalThis.__incrementalCache=W;let G={params:v,previewProps:b.preview,renderOpts:{experimental:{authInterrupts:!!A.experimental.authInterrupts},cacheComponents:!!A.cacheComponents,supportsDynamicResponse:U,incrementalCache:W,cacheLifeProfiles:A.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,s,r)=>y.onRequestError(e,t,s,r,E)},sharedContext:{buildId:k,deploymentId:I}},J=new c.NodeNextRequest(e),V=new c.NodeNextResponse(t),Y=u.NextRequestAdapter.fromNodeNextRequest(J,(0,u.signalFromNodeResponse)(t));try{let n,i=async e=>y.handle(Y,G).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=L.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==p.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let r=a.get("next.route");if(r){let t=`${B} ${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(`${B} ${s}`)}),d=async n=>{var o,d;let l=async({previousCacheEntry:r})=>{try{if(!F&&x&&N&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await i(n);e.fetchMetrics=G.renderOpts.fetchMetrics;let o=G.renderOpts.pendingWaitUntil;o&&a.waitUntil&&(a.waitUntil(o),o=void 0);let d=G.renderOpts.collectedTags;if(!q)return await (0,f.sendResponse)(J,V,s,G.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(s.headers);d&&(t[g.NEXT_CACHE_TAGS_HEADER]=d),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==G.renderOpts.collectedRevalidate&&!(G.renderOpts.collectedRevalidate>=g.INFINITE_CACHE)&&G.renderOpts.collectedRevalidate,r=void 0===G.renderOpts.collectedExpire||G.renderOpts.collectedExpire>=g.INFINITE_CACHE?void 0:G.renderOpts.collectedExpire;return{value:{kind:_.CachedRouteKind.APP_ROUTE,status:s.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:r}}}}catch(t){throw(null==r?void 0:r.isStale)&&await y.onRequestError(e,t,{routerKind:"App Router",routePath:s,routeType:"route",revalidateReason:(0,m.getRevalidateReason)({isStaticGeneration:$,isOnDemandRevalidate:x})},!1,E),t}},c=await y.handleResponse({req:e,nextConfig:A,cacheKey:K,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:b,isRoutePPREnabled:!1,isOnDemandRevalidate:x,revalidateOnlyGenerated:N,responseGenerator:l,waitUntil:a.waitUntil,isMinimalMode:F});if(!q)return null;if((null==c||null==(o=c.value)?void 0:o.kind)!==_.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==c||null==(d=c.value)?void 0:d.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});F||t.setHeader("x-nextjs-cache",x?"REVALIDATED":c.isMiss?"MISS":c.isStale?"STALE":"HIT"),S&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let u=(0,h.fromNodeOutgoingHttpHeaders)(c.value.headers);return F&&q||u.delete(g.NEXT_CACHE_TAGS_HEADER),!c.cacheControl||t.getHeader("Cache-Control")||u.get("Cache-Control")||u.set("Cache-Control",(0,w.getCacheControlHeader)(c.cacheControl)),await (0,f.sendResponse)(J,V,new Response(c.value.body,{headers:u,status:c.value.status||200})),null};j&&H?await d(H):(n=L.getActiveScopeSpan(),await L.withPropagatedContext(e.headers,()=>L.trace(p.BaseServerSpan.handleRequest,{spanName:`${B} ${s}`,kind:o.SpanKind.SERVER,attributes:{"http.method":B,"http.target":e.url}},d),void 0,!j))}catch(t){if(t instanceof T.NoFallbackError||await y.onRequestError(e,t,{routerKind:"App Router",routePath:P,routeType:"route",revalidateReason:(0,m.getRevalidateReason)({isStaticGeneration:$,isOnDemandRevalidate:x})},!1,E),q)throw t;return await (0,f.sendResponse)(J,V,new Response(null,{status:500})),null}}e.s(["handler",0,v,"patchFetch",0,function(){return(0,n.patchFetch)({workAsyncStorage:A,workUnitAsyncStorage:R})},"routeModule",0,y,"serverHooks",0,S,"workAsyncStorage",0,A,"workUnitAsyncStorage",0,R]),a()}catch(e){a(e)}},!1)];
2
2
 
3
3
  //# sourceMappingURL=_0gtp8_j._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[388335,e=>{"use strict";e.i(700598);var t=e.i(291109),a=e.i(205054),r=e.i(774078);async function i(e,i){let n=`sweep:${i}`,s=!1;try{if(await (0,r.cached)(n,30,async()=>(s=!0,new Date().toISOString())),!s)return}catch{s=!0}let o=await t.queries.task.failStaleDispatchedTasks(e,i);await t.queries.task.failStaleKillTasks(e,i);let d=[...o,...await t.queries.task.failStaleRunningTasks(e,i)];if(d.length>0){let t=new a.TaskService(e),r=new Set;for(let e of d){let a=`${e.agentId}:${e.workspaceId}`;r.has(a)||(r.add(a),await t.reconcileAgentStatus(e.agentId,e.workspaceId))}let i=new Set;for(let e of d)i.has(e.conversationId)||(i.add(e.conversationId),await t.dispatchNextBufferedMessage(e.conversationId,e.workspaceId))}}e.s(["sweepStaleState",0,i])},801093,e=>{"use strict";e.i(700598);var t=e.i(291109),a=e.i(704024),r=e.i(719436),i=e.i(799579);let{listDueCalendarEvents:n,claimCalendarEvent:s,revertCalendarEventClaim:o,updateCalendarEventSchedule:d,computeNextScheduledAt:l}=t.queries.calendarEvent;async function c(e,p,u=new Date().toISOString()){let g=await n(e,p,u),w=0;for(let n of g){let c=await t.queries.agent.getAgent(e,n.agentId,n.workspaceId);if(!c){i.log.warn("calendar: agent missing, skipping",{id:n.id});continue}if(!c.runtimeId){i.log.warn("calendar: agent has no runtime, skipping",{id:n.id});continue}if(!c.ownerId){i.log.warn("calendar: agent has no owner, skipping",{id:n.id});continue}let p=n.lastTriggeredAt??null;if(await s(e,n.id,n.scheduledAt,u))try{let i=await t.queries.conversation.createConversation(e,{workspaceId:n.workspaceId,agentId:n.agentId,userId:c.ownerId,title:`[Calendar] ${n.title}`.slice(0,120),type:a.TASK_TYPES.CALENDAR_EVENT});if(await t.queries.message.createMessage(e,{conversationId:i.id,role:"event",content:n.title}),await t.queries.task.createTask(e,{agentId:n.agentId,runtimeId:c.runtimeId,workspaceId:n.workspaceId,conversationId:i.id,prompt:n.title,type:a.TASK_TYPES.CALENDAR_EVENT,priority:0,traceId:"tr_"+(0,r.nanoid)(),parentTaskId:null}),n.repeatInterval){let t=l(n.scheduledAt,n.repeatInterval,n.repeatStopAt??null,u,n.exceptions??[]);t&&await d(e,n.id,t)}w++}catch(t){i.log.warn("calendar: post-claim write failed, reverting",{id:n.id,err:String(t)});try{await o(e,n.id,p)}catch(e){i.log.error("calendar: compensating revert failed",{id:n.id,err:String(e)})}}}return w>0&&i.log.info("calendar: promoted due events",{workspaceId:p,enqueued:w}),w}e.s(["promoteDueCalendarEventsForWorkspace",0,c,"repeatStopDateToStopAt",0,function(e){let[t,a,r]=e.split("-").map(Number);if(!t||!a||!r)throw Error(`invalid repeat_stop_date: ${e}`);return new Date(t,a-1,r,23,59,59,999).toISOString()}])},139733,e=>{"use strict";e.s(["semverGte",0,function(e,t){let a=e.split(".").map(Number),r=t.split(".").map(Number);for(let e=0;e<Math.max(a.length,r.length);e++){let t=a[e]??0,i=r[e]??0;if(t>i)break;if(t<i)return!1}return!0}])},386211,e=>{e.v(e=>Promise.resolve().then(()=>e(774078)))}];
1
+ module.exports=[388335,e=>{"use strict";e.i(700598);var t=e.i(291109),a=e.i(205054),r=e.i(774078);async function i(e,i){let n=`sweep:${i}`,s=!1;try{s=await (0,r.throttled)(n,30,async()=>{})}catch{s=!0}if(!s)return;let o=await t.queries.task.failStaleDispatchedTasks(e,i);await t.queries.task.failStaleKillTasks(e,i);let l=[...o,...await t.queries.task.failStaleRunningTasks(e,i)];if(l.length>0){let t=new a.TaskService(e),r=new Set;for(let e of l){let a=`${e.agentId}:${e.workspaceId}`;r.has(a)||(r.add(a),await t.reconcileAgentStatus(e.agentId,e.workspaceId))}let i=new Set;for(let e of l)i.has(e.conversationId)||(i.add(e.conversationId),await t.dispatchNextBufferedMessage(e.conversationId,e.workspaceId))}}e.s(["sweepStaleState",0,i])},801093,e=>{"use strict";e.i(700598);var t=e.i(291109),a=e.i(704024),r=e.i(719436),i=e.i(799579);let{listDueCalendarEvents:n,claimCalendarEvent:s,revertCalendarEventClaim:o,updateCalendarEventSchedule:l,computeNextScheduledAt:d}=t.queries.calendarEvent;async function c(e,p,u=new Date().toISOString()){let g=await n(e,p,u),w=0;for(let n of g){let c=await t.queries.agent.getAgent(e,n.agentId,n.workspaceId);if(!c){i.log.warn("calendar: agent missing, skipping",{id:n.id});continue}if(!c.runtimeId){i.log.warn("calendar: agent has no runtime, skipping",{id:n.id});continue}if(!c.ownerId){i.log.warn("calendar: agent has no owner, skipping",{id:n.id});continue}let p=n.lastTriggeredAt??null;if(await s(e,n.id,n.scheduledAt,u))try{let i=await t.queries.conversation.createConversation(e,{workspaceId:n.workspaceId,agentId:n.agentId,userId:c.ownerId,title:`[Calendar] ${n.title}`.slice(0,120),type:a.TASK_TYPES.CALENDAR_EVENT});if(await t.queries.message.createMessage(e,{conversationId:i.id,role:"event",content:n.title}),await t.queries.task.createTask(e,{agentId:n.agentId,runtimeId:c.runtimeId,workspaceId:n.workspaceId,conversationId:i.id,prompt:n.title,type:a.TASK_TYPES.CALENDAR_EVENT,priority:0,traceId:"tr_"+(0,r.nanoid)(),parentTaskId:null}),n.repeatInterval){let t=d(n.scheduledAt,n.repeatInterval,n.repeatStopAt??null,u,n.exceptions??[]);t&&await l(e,n.id,t)}w++}catch(t){i.log.warn("calendar: post-claim write failed, reverting",{id:n.id,err:String(t)});try{await o(e,n.id,p)}catch(e){i.log.error("calendar: compensating revert failed",{id:n.id,err:String(e)})}}}return w>0&&i.log.info("calendar: promoted due events",{workspaceId:p,enqueued:w}),w}e.s(["promoteDueCalendarEventsForWorkspace",0,c,"repeatStopDateToStopAt",0,function(e){let[t,a,r]=e.split("-").map(Number);if(!t||!a||!r)throw Error(`invalid repeat_stop_date: ${e}`);return new Date(t,a-1,r,23,59,59,999).toISOString()}])},139733,e=>{"use strict";e.s(["semverGte",0,function(e,t){let a=e.split(".").map(Number),r=t.split(".").map(Number);for(let e=0;e<Math.max(a.length,r.length);e++){let t=a[e]??0,i=r[e]??0;if(t>i)break;if(t<i)return!1}return!0}])},386211,e=>{e.v(e=>Promise.resolve().then(()=>e(774078)))}];
2
2
 
3
3
  //# sourceMappingURL=src_0hsbnq1._.js.map
@@ -7,9 +7,9 @@ globalThis.__BUILD_MANIFEST = {
7
7
  "static/chunks/03~yq9q893hmn.js"
8
8
  ],
9
9
  "lowPriorityFiles": [
10
- "static/3_EdlLCy1irSUmRkAk1eZ/_buildManifest.js",
11
- "static/3_EdlLCy1irSUmRkAk1eZ/_ssgManifest.js",
12
- "static/3_EdlLCy1irSUmRkAk1eZ/_clientMiddlewareManifest.js"
10
+ "static/FHMg7Y3SKvukCWYg90U0U/_buildManifest.js",
11
+ "static/FHMg7Y3SKvukCWYg90U0U/_ssgManifest.js",
12
+ "static/FHMg7Y3SKvukCWYg90U0U/_clientMiddlewareManifest.js"
13
13
  ],
14
14
  "rootMainFiles": [
15
15
  "static/chunks/002w8zenjl89m.js",
@@ -25,11 +25,11 @@
25
25
  "wasm": [],
26
26
  "assets": [],
27
27
  "env": {
28
- "__NEXT_BUILD_ID": "3_EdlLCy1irSUmRkAk1eZ",
29
- "NEXT_SERVER_ACTIONS_ENCRYPTION_KEY": "wLX0vpcdZ9MSMhCXGwTNBjWGwuVyRDAvQWDmEEGX+6I=",
30
- "__NEXT_PREVIEW_MODE_ID": "4a3f7320f3652b37ea601acd8344a906",
31
- "__NEXT_PREVIEW_MODE_ENCRYPTION_KEY": "47a986585e123947e966a58e72250d8749e9f49da14faa6da2cecf132d6a6f62",
32
- "__NEXT_PREVIEW_MODE_SIGNING_KEY": "be3167c649a020567b449d5b4d82e3dca23795857d04d26740d6d601d973b14f"
28
+ "__NEXT_BUILD_ID": "FHMg7Y3SKvukCWYg90U0U",
29
+ "NEXT_SERVER_ACTIONS_ENCRYPTION_KEY": "V70xVdl/zrhuKaChWzBn5I1BgEAjMn/ByxWuNKl/sOo=",
30
+ "__NEXT_PREVIEW_MODE_ID": "9f80fe1e013ce998cdea0d5997e773a5",
31
+ "__NEXT_PREVIEW_MODE_ENCRYPTION_KEY": "1707e2f9fe5f924df81463dac4f99b365f35179f66a3790521d0d6525a079e8e",
32
+ "__NEXT_PREVIEW_MODE_SIGNING_KEY": "1d1c7b1a001183c0c7397fc610e9f30b35ac486bef0e1868900131f1b2a50301"
33
33
  }
34
34
  }
35
35
  },
@@ -1 +1 @@
1
- self.__RSC_SERVER_MANIFEST="{\n \"node\": {},\n \"edge\": {},\n \"encryptionKey\": \"wLX0vpcdZ9MSMhCXGwTNBjWGwuVyRDAvQWDmEEGX+6I=\"\n}"
1
+ self.__RSC_SERVER_MANIFEST="{\n \"node\": {},\n \"edge\": {},\n \"encryptionKey\": \"V70xVdl/zrhuKaChWzBn5I1BgEAjMn/ByxWuNKl/sOo=\"\n}"
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "node": {},
3
3
  "edge": {},
4
- "encryptionKey": "wLX0vpcdZ9MSMhCXGwTNBjWGwuVyRDAvQWDmEEGX+6I="
4
+ "encryptionKey": "V70xVdl/zrhuKaChWzBn5I1BgEAjMn/ByxWuNKl/sOo="
5
5
  }