@alook/app 0.0.140 → 0.0.143
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundled/email-worker/index.js +50 -33
- package/bundled/web/.open-next/.build/durable-objects/queue.js +5 -5
- package/bundled/web/.open-next/assets/BUILD_ID +1 -1
- package/bundled/web/.open-next/assets/_next/static/chunks/0hujq4gn1km2d.css +1 -0
- package/bundled/web/.open-next/assets/_next/static/chunks/1ixdcdkpnwt_p.js +1 -0
- package/bundled/web/.open-next/assets/_next/static/chunks/{0pqa0bk3fnq2q.js → 1kj_n-cbedl8a.js} +2 -2
- package/bundled/web/.open-next/assets/_next/static/chunks/1lwe0daem0j5h.js +1 -0
- package/bundled/web/.open-next/assets/_next/static/chunks/1wk6udc50axdg.js +1 -0
- package/bundled/web/.open-next/assets/_next/static/chunks/{1l3nq6kc3fbh-.js → 2aicu2qufs82c.js} +1 -1
- package/bundled/web/.open-next/assets/_next/static/chunks/{1avrt94npx8p3.js → 2p8ty_tin77ze.js} +1 -1
- package/bundled/web/.open-next/assets/_next/static/chunks/{2qc57pol1-1f3.js → 2s1nfdub5g-vr.js} +1 -1
- package/bundled/web/.open-next/assets/_next/static/chunks/35szcmuxsgm0x.js +1 -0
- package/bundled/web/.open-next/assets/_next/static/chunks/{2_5gjqjt8nmq2.js → 3yhuzg7vtzfp5.js} +1 -1
- package/bundled/web/.open-next/assets/_next/static/chunks/{14mgvrpz4ar3j.js → 41hz62d13-2ps.js} +1 -1
- package/bundled/web/.open-next/cache/{WTLpHjXNd0wVnZOUBMJJz → 9TliiRuyS2VWuTgYBLJbH}/_global-error.cache +1 -1
- package/bundled/web/.open-next/cache/{WTLpHjXNd0wVnZOUBMJJz → 9TliiRuyS2VWuTgYBLJbH}/_not-found.cache +1 -1
- package/bundled/web/.open-next/cache/{WTLpHjXNd0wVnZOUBMJJz → 9TliiRuyS2VWuTgYBLJbH}/device.cache +1 -1
- package/bundled/web/.open-next/cache/{WTLpHjXNd0wVnZOUBMJJz → 9TliiRuyS2VWuTgYBLJbH}/privacy.cache +1 -1
- package/bundled/web/.open-next/cache/{WTLpHjXNd0wVnZOUBMJJz → 9TliiRuyS2VWuTgYBLJbH}/sitemap.xml.cache +1 -1
- package/bundled/web/.open-next/cloudflare/cache-assets-manifest.sql +1 -1
- package/bundled/web/.open-next/cloudflare/init.js +1 -1
- package/bundled/web/.open-next/dynamodb-provider/dynamodb-cache.json +1 -1
- package/bundled/web/.open-next/middleware/handler.mjs +5 -5
- package/bundled/web/.open-next/server-functions/default/src/web/.next/BUILD_ID +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/build-manifest.json +3 -3
- package/bundled/web/.open-next/server-functions/default/src/web/.next/prerender-manifest.json +3 -3
- package/bundled/web/.open-next/server-functions/default/src/web/.next/required-server-files.json +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/invite/[token]/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/studio/new/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/agents/[id]/activity/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/agents/[id]/chat/[convId]/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/agents/[id]/chat/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/agents/[id]/email/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/agents/[id]/files/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/agents/[id]/meetings/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/agents/[id]/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/agents/new/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/agents/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/calendar/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/flags/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/help/email-setup/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/home/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/issues/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/runtimes/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/settings/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/traces/[traceId]/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/traces/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/unread/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/workspaces/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(auth)/sign-in/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/daemon/tasks/[taskId]/complete/route.js +2 -2
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/daemon/tasks/[taskId]/fail/route.js +2 -2
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/daemon/tasks/[taskId]/start/route.js +2 -2
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/daemon/tasks/[taskId]/supersede/route.js +2 -2
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/device/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/page/react-loadable-manifest.json +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/privacy/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/templates/[id]/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/templates/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__01-4zmn._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__0aacn1t._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__0aj228b._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__0bye0tx._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__0dvn7u2._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__0gkkbf4._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__0jrrtm1._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__0pn6awg._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__0xdps2u._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__1-ug-mf._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__12fz1lr._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__134-7z_._.js +3 -0
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__155l597._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__18lolj4._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__1cbaprg._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__1diut0w._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__1e9t6i6._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__1jq8zws._.js +3 -0
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__1l-2x7f._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__1pmcw25._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__1rfzkgk._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__1w9__7q._.js +3 -0
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__1xpwaca._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__20s9whj._.js +3 -0
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[turbopack]_runtime.js +16 -16
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_03i6uql._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0591v0o._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_08gc1s_._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0d2x7fl._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0guhu0i._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0lcu68p._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0m_ehw8._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0n8pg0d._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0p79t7w._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0r2vuif._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0tzvy_s._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0v95a0y._.js +11 -10
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_139j3zh._.js +11 -10
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_13jq647._.js +3 -3
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_18v5918._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_1a2lyoh._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_1aztsqf._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_1d18okt._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_1i4egv6._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_1iaevpj._.js +2 -2
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_1kt_xdj._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_1nfaney._.js +11 -10
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_1njwvhs._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/src_1j5rtq8._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/{[root-of-the-server]__1e237f4._.js → [root-of-the-server]__1x1ppqv._.js} +2 -2
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/[turbopack]_runtime.js +16 -16
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/_04ht2b1._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/{_19hsbaa._.js → _09dj89g._.js} +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/_09v4-yk._.js +6 -5
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/_0qgcnj5._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/{_0g_x3qh._.js → _16456wu._.js} +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/{_10-8eci._.js → _1twnk18._.js} +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/_1wqw0ro._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/{node_modules__pnpm_0os8mdu._.js → node_modules__pnpm_00joh18._.js} +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/{node_modules__pnpm_03t1_eh._.js → node_modules__pnpm_06u5s5x._.js} +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/{node_modules__pnpm_0pd1a42._.js → node_modules__pnpm_0_eee0q._.js} +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/{node_modules__pnpm_0b_f_5l._.js → node_modules__pnpm_0_muan4._.js} +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/{node_modules__pnpm_0-sy0jc._.js → node_modules__pnpm_0t9vloz._.js} +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/{node_modules__pnpm_1tajvfi._.js → node_modules__pnpm_121t594._.js} +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/{node_modules__pnpm_0lmr_qu._.js → node_modules__pnpm_12zyy1_._.js} +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/{node_modules__pnpm_0z21f3h._.js → node_modules__pnpm_1m55ws1._.js} +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/src_web_src_0pwl5s4._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/src_web_src_app_(app)_w_[slug]_agents_[id]_layout_tsx_0ysqmgw._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/src_web_src_lib_api_ts_1ffelwp._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/middleware-build-manifest.js +3 -3
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/middleware-manifest.json +5 -5
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/server-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/server-reference-manifest.json +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/handler.mjs +194 -190
- package/bundled/web/.open-next/server-functions/default/src/web/handler.mjs.meta.json +342 -342
- package/bundled/web/.open-next/server-functions/default/src/web/index.mjs +4 -4
- package/bundled/web/custom-worker.ts +16 -1
- package/bundled/web/migrations/0043_machine_owner_id.sql +26 -0
- package/bundled/ws-do/index.js +50 -33
- package/dist/cli/index.js +2 -1
- package/dist/cli/session-runner.js +2 -1
- package/dist/index.js +2 -1
- package/package.json +1 -1
- package/bundled/web/.open-next/assets/_next/static/chunks/0pydx20mmtmb-.js +0 -1
- package/bundled/web/.open-next/assets/_next/static/chunks/11jejnuxkw5-s.js +0 -1
- package/bundled/web/.open-next/assets/_next/static/chunks/29j2dlmefldk5.js +0 -1
- package/bundled/web/.open-next/assets/_next/static/chunks/2usqt49xbpqd2.css +0 -1
- package/bundled/web/.open-next/assets/_next/static/chunks/3pmxar-ugtky1.js +0 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__0dnslqa._.js +0 -3
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__0j4ezcj._.js +0 -3
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__11-5cy7._.js +0 -3
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__1lcw_r4._.js +0 -3
- /package/bundled/web/.open-next/assets/_next/static/{WTLpHjXNd0wVnZOUBMJJz → 9TliiRuyS2VWuTgYBLJbH}/_buildManifest.js +0 -0
- /package/bundled/web/.open-next/assets/_next/static/{WTLpHjXNd0wVnZOUBMJJz → 9TliiRuyS2VWuTgYBLJbH}/_clientMiddlewareManifest.js +0 -0
- /package/bundled/web/.open-next/assets/_next/static/{WTLpHjXNd0wVnZOUBMJJz → 9TliiRuyS2VWuTgYBLJbH}/_ssgManifest.js +0 -0
- /package/bundled/web/.open-next/cache/{WTLpHjXNd0wVnZOUBMJJz → 9TliiRuyS2VWuTgYBLJbH}/robots.txt.cache +0 -0
package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0m_ehw8._.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[726089,e=>{"use strict";var t=e.i(931720);e.i(700598);var a=e.i(704024);let s=(0,e.i(726527).createLogger)({service:"broadcast"});async function n(e,n,r){let i;try{let{env:a}=(0,t.getCloudflareContext)();i=a.DEV_WS_DO_URL;let o=await a.WS_DO_WORKER.fetch(`http://internal${e}`,{method:"POST",body:n});if(o.ok)try{return{sent:(await o.json()).sent??0}}catch{return{sent:0}}s.warn("broadcast service-binding non-ok",{...r,status:o.status})}catch{}let o=i||a.DEV_WS_DO_URL,l=await fetch(`${o}${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:n});if(!l.ok)throw Error(`broadcast failed: ${l.status}`);try{return{sent:(await l.json()).sent??0}}catch{return{sent:0}}}e.s(["broadcastToDaemon",0,function(e,a){let s=n(`/broadcast/daemon/${e}`,JSON.stringify(a),{daemonId:e,type:a.type});try{let{ctx:e}=(0,t.getCloudflareContext)();e.waitUntil(s.catch(()=>{}))}catch{}return s},"broadcastToUser",0,function(e,a){return function(e,a,s){let r=n(e,a,s);try{let{ctx:e}=(0,t.getCloudflareContext)();e.waitUntil(r.catch(()=>{}))}catch{}return r.then(()=>{})}(`/broadcast/user/${e}`,JSON.stringify(a),{userId:e,type:a.type})}])},511456,e=>{"use strict";e.i(700598);let t=(0,e.i(726527).createLogger)({service:"web",level:process.env.ALOOK_LOG_LEVEL||"info",pretty:!1});e.s(["log",0,t])},555230,e=>{"use strict";e.i(700598);var t=e.i(291109),a=e.i(704024),s=e.i(424166),n=e.i(740580),r=e.i(774078);e.s(["TaskPayloadBuilder",0,class{db;constructor(e){this.db=e}async buildFullPayloads(e,i){let o=e.filter(e=>e.type!==a.TASK_TYPES.KILL_TASK),l=[...new Set(o.map(e=>e.agentId))],[d,c,u]=l.length>0?await Promise.all([(0,r.cached)(r.cacheKeys.allAgents(i),300,()=>t.queries.agent.getAllAgentsForWorkspace(this.db,i)),(0,r.cached)(r.cacheKeys.allEmailAccounts(i),600,()=>t.queries.emailAccount.getAllEmailAccountsForWorkspace(this.db,i)),(0,r.cached)(r.cacheKeys.allColleagues(i),600,()=>t.queries.agentLink.getAllColleaguesForWorkspace(this.db,i)).catch(()=>[])]).then(([e,t,a])=>{let s=new Set(l);return[e.filter(e=>s.has(e.id)),t.filter(e=>s.has(e.agentId)),a.filter(e=>s.has(e.agentId))]}):[[],[],[]],h=new Map(d.map(e=>[e.id,e])),p=new Map;for(let e of c){let t=p.get(e.agentId)??[];t.push(e.emailAddress),p.set(e.agentId,t)}let g=new Map;for(let e of u){let t=g.get(e.agentId)??[];t.push(e),g.set(e.agentId,t)}let w=[...new Set(o.map(e=>e.conversationId).filter(Boolean))],m=new Map((w.length>0?await t.queries.conversation.getConversationsByIds(this.db,w,i):[]).map(e=>[e.id,e])),k=new Map,I=new Map,f=[];for(let o of e){if(o.type===a.TASK_TYPES.KILL_TASK){f.push({...(0,n.taskToResponse)(o),agent:null,sender:null});continue}let e=h.get(o.agentId)??null,l=[];if(e){e.emailHandle&&l.push((0,s.toAlookAddress)(e.emailHandle));let t=p.get(e.id)??[];l.push(...t)}let d=e?.instructions??"";if(e?.ownerId){if(!k.has(e.ownerId)){let a=await (0,r.cached)(r.cacheKeys.member(i,e.ownerId),600,()=>t.queries.member.getMemberByUserAndWorkspace(this.db,e.ownerId,i));k.set(e.ownerId,a?{globalInstruction:a.globalInstruction}:null)}let a=k.get(e.ownerId);a?.globalInstruction&&(d=[a.globalInstruction,d].filter(Boolean).join("\n\n"))}let c=null;if(e?.ownerId){if(!I.has(e.ownerId)){let a=await (0,r.cached)(r.cacheKeys.user(e.ownerId),1800,()=>t.queries.user.getUser(this.db,e.ownerId));I.set(e.ownerId,a?{name:a.name,email:a.email}:null)}c=I.get(e.ownerId)?.name??null}let u=m.get(o.conversationId)??null,w=u?.channel??"default",y=null;if(o.type===a.TASK_TYPES.USER_DM_MESSAGE&&u?.userId){if(!I.has(u.userId)){let e=await (0,r.cached)(r.cacheKeys.user(u.userId),1800,()=>t.queries.user.getUser(this.db,u.userId));I.set(u.userId,e?{name:e.name,email:e.email}:null)}let a=I.get(u.userId);a&&(y={name:a.name,email:a.email,is_owner:u.userId===e?.ownerId})}let T=(g.get(o.agentId)??[]).map(e=>({name:e.name,email:e.emailHandle?(0,s.toAlookAddress)(e.emailHandle):"",description:e.description,instruction:e.instruction}));f.push({...(0,n.taskToResponse)(o),channel:w,sender:y,agent:e?{instructions:d,name:e.name,runtime_config:e.runtimeConfig||{},email_handle:e.emailHandle||null,email_addresses:l,user_email:null,user_name:c,colleagues:T}:null})}return f}}])},205054,e=>{"use strict";e.i(700598);var t=e.i(291109),a=e.i(704024),s=e.i(511456),n=e.i(726089),r=e.i(740580),i=e.i(774078),o=e.i(555230);let l=t.queries.task,d=t.queries.agent,c=t.queries.message,u=t.queries.conversation,h=t.queries.issue,p=t.queries.inbox;e.s(["TaskService",0,class{db;constructor(e){this.db=e}async enqueueTask(e,t,s,n,r=a.TASK_TYPES.USER_DM_MESSAGE,o){let c=await d.getAgent(this.db,e,s);if(!c)throw Error("agent not found");if(!c.runtimeId)throw Error("agent has no runtime");if(o?.traceId&&o.parentTaskId&&await l.countTasksByTrace(this.db,o.traceId)>=a.MAX_TASKS_PER_TRACE)throw Error(`Trace limit reached (${a.MAX_TASKS_PER_TRACE} tasks). This may indicate an infinite loop between agents.`);let u=await l.createTask(this.db,{agentId:e,runtimeId:c.runtimeId,workspaceId:s,conversationId:t,prompt:n,type:r,contextKey:o?.contextKey??null,priority:0,context:o?.context,traceId:o?.traceId??null,parentTaskId:o?.parentTaskId??null});return(0,i.invalidate)(i.cacheKeys.activeTaskCounts(s)).catch(()=>{}),await this.pushTaskToDaemon(u,s).catch(()=>{}),u}async claimTask(e,t){let a=await d.getAgent(this.db,e,t);return this.claimTaskWithAgent(e,t,a)}async claimTaskWithAgent(e,t,a){if(!a)return null;if(await l.countRunningTasks(this.db,e,t)>=a.maxConcurrentTasks){let s=await l.findSteerableReplacement(this.db,e,t);if(!s||await l.countRunningTasks(this.db,e,t,s.predecessorId)>=a.maxConcurrentTasks)return null}let s=await l.claimTask(this.db,e,t);return s?(await d.updateAgentStatus(this.db,e,t,"working"),s):null}async claimTasksForRuntimes(e,t,a){let s=await l.claimKillTasks(this.db,e,a,t),n=t-s.length,r=n>0?await l.listPendingTasksByRuntimes(this.db,e,a):[],i=new Set(e),o=new Set,c=[...s],u=[];for(let e of r){if(u.length>=n)break;let t=`${e.agentId}:${e.workspaceId}`;o.has(t)||(o.add(t),u.push(e))}if(0===u.length)return c;let h=[...new Set(u.map(e=>e.agentId))],p=new Map((await d.getAgentsByIds(this.db,h,a)).map(e=>[e.id,e]));for(let e of(await Promise.all(u.map(e=>this.claimTaskWithAgent(e.agentId,e.workspaceId,p.get(e.agentId)??null)))))e&&i.has(e.runtimeId)&&c.push(e);return c}async startTask(e,t){let a=await l.startTask(this.db,e,t);if(!a)throw Error("task not in dispatched status");return a}async completeTask(e,t,a,n){let r;try{r=JSON.parse(a)}catch{r={raw:a}}let i=await l.completeTask(this.db,e,t,{result:r,sessionId:n||null});if(!i){let t=await l.getTask(this.db,e),a=t?.status??"unknown";throw s.log.warn(`completeTask failed: task is in '${a}' status`,{taskId:e}),Error(`cannot complete task in '${a}' status`)}return await this.reconcileAgentStatus(i.agentId,i.workspaceId),this.maybeUpsertUnread(i,t,null).catch(()=>{}),i}async failTask(e,i,o){let d=await l.failTask(this.db,e,i,o);if(!d){let t=await l.getTask(this.db,e),a=t?.status??"unknown";throw s.log.warn(`failTask failed: task is in '${a}' status`,{taskId:e}),Error(`cannot fail task in '${a}' status`)}if(d.type===a.TASK_TYPES.KILL_TASK)return d;let h=null;if(o){let a=null;try{if(d.runtimeId){let e=await t.queries.runtime.getAgentRuntime(this.db,d.runtimeId);a=e?.provider??null}}catch{}let s=await c.createMessage(this.db,{conversationId:d.conversationId,role:"assistant",content:o,taskId:e,metadata:JSON.stringify({error_source:"runtime",provider:a})});h=s?.id??null;try{let e=await u.getConversation(this.db,d.conversationId,i);e&&(0,n.broadcastToUser)(e.userId,{type:"conversation.message",conversationId:d.conversationId,message:(0,r.messageToResponse)(s)}).catch(()=>{})}catch{}}return await this.reconcileAgentStatus(d.agentId,d.workspaceId),await this.syncIssueStatusFromTask(d,"failed"),this.maybeUpsertUnread(d,i,h).catch(()=>{}),d}async syncIssueStatusFromTask(e,t){if(e.type!==a.TASK_TYPES.ISSUE_EVENT)return;let s=await h.getIssueByConversation(this.db,e.conversationId,e.workspaceId);if(!s||s.status===t||!await h.updateIssue(this.db,s.id,e.workspaceId,{status:t}))return;let i=await c.createMessage(this.db,{conversationId:e.conversationId,role:"event",content:`Issue status changed: ${s.status} -> ${t}`,taskId:e.id,metadata:JSON.stringify({issueId:s.id})});try{let t=await u.getConversation(this.db,e.conversationId,e.workspaceId);t&&(0,n.broadcastToUser)(t.userId,{type:"conversation.message",conversationId:e.conversationId,message:(0,r.messageToResponse)(i)}).catch(()=>{})}catch{}}async maybeUpsertUnread(e,t,a){if(!p.isUnreadEligible(e)||!e.completedAt)return;let s=await u.getConversation(this.db,e.conversationId,t);if(!s)return;let n=a??await p.findLatestAssistantMessageId(this.db,e.conversationId);await p.upsertUnreadEntry(this.db,{conversationId:e.conversationId,userId:s.userId,workspaceId:t,agentId:s.agentId,taskId:e.id,taskType:e.type,taskStatus:e.status,taskPrompt:e.prompt,completedAt:e.completedAt,latestMessageId:n})}async supersedeTask(e,t){let a=await l.supersedeTask(this.db,e,t);if(!a){let t=await l.getTask(this.db,e),a=t?.status??"unknown";throw s.log.warn(`supersedeTask failed: task is in '${a}' status`,{taskId:e}),Error(`cannot supersede task in '${a}' status`)}return await this.reconcileAgentStatus(a.agentId,a.workspaceId),a}async retryTask(e,t){let a=await l.getTask(this.db,e);if(!a||a.workspaceId!==t)throw Error("task not found");if("failed"!==a.status)throw Error("only failed tasks can be retried");let s=await l.markFailedAsSuperseded(this.db,e,t);if(!s)throw Error("failed to mark task as superseded");return{oldTask:s,newTask:await this.enqueueTask(a.agentId,a.conversationId,t,a.prompt,a.type,{contextKey:a.contextKey??null,context:a.context,traceId:a.traceId??null,parentTaskId:a.parentTaskId??null})}}async cancelActiveTask(e,r,i){let o=await l.getActiveTaskByConversation(this.db,e,r);if(!o)return null;let d=await l.cancelTask(this.db,o.id,r);if(!d)return null;if("dispatched"===o.status||"running"===o.status){let i=await l.createTask(this.db,{agentId:o.agentId,runtimeId:o.runtimeId,workspaceId:r,conversationId:e,prompt:"",type:a.TASK_TYPES.KILL_TASK,context:{target_task_id:o.id}});await l.dispatchTaskById(this.db,i.id,r);let d=await t.queries.runtime.getAgentRuntime(this.db,o.runtimeId);d&&(0,n.broadcastToDaemon)(d.daemonId,{type:"daemon.kill",workspaceId:r,agentId:o.agentId,taskId:i.id,targetTaskId:o.id}).catch(e=>s.log.warn("daemon.kill broadcast failed, relying on poll fallback",e))}return await c.createMessage(this.db,{conversationId:e,role:"assistant",content:i?.reason??"Task cancelled by you",taskId:o.id,metadata:JSON.stringify({kind:"lifecycle"})}),await this.reconcileAgentStatus(o.agentId,r),d}async reconcileAgentStatus(e,t){let a=await l.countRunningTasks(this.db,e,t);await d.updateAgentStatus(this.db,e,t,a>0?"working":"idle"),(0,i.invalidate)(i.cacheKeys.activeTaskCounts(t)).catch(()=>{})}async cancelTrace(e,t,a){for(let n of[...new Set((await l.getTraceTree(this.db,e,t)).filter(e=>["queued","dispatched","running"].includes(e.status)).map(e=>e.conversationId))])try{await this.cancelActiveTask(n,t,{reason:a?.reason})}catch(t){s.log.warn("cancelTrace: failed to cancel task",{traceId:e,convId:n,err:t})}}async pushTaskToDaemon(e,a){let s=await t.queries.runtime.getAgentRuntime(this.db,e.runtimeId);if(!s)return;let r=await l.dispatchTaskById(this.db,e.id,a);if(!r)return;let i=new o.TaskPayloadBuilder(this.db),d=await i.buildFullPayloads([r],a);if(0===d.length)return void await l.revertDispatchedToQueued(this.db,e.id,a);try{let{sent:t}=await (0,n.broadcastToDaemon)(s.daemonId,{type:"daemon.tasks",tasks:d});0===t&&await l.revertDispatchedToQueued(this.db,e.id,a)}catch{await l.revertDispatchedToQueued(this.db,e.id,a)}}}])},825526,e=>e.a(async(t,a)=>{try{var s=e.i(931720);e.i(700598);var n=e.i(291109),r=e.i(675139),i=e.i(152327),o=e.i(47962),l=e.i(776227),d=e.i(740580),c=e.i(205054),u=e.i(726089),h=e.i(774078),p=t([i]);[i]=p.then?(await p)():p;let g=(0,i.withAuth)(async(e,t)=>{let a=await (0,o.withWorkspaceMember)(e,t);if(a instanceof Response)return a;let{env:i}=(0,s.getCloudflareContext)(),p=(0,r.getDb)(i.DB),g=t.params?.id;if(!g)return(0,l.writeError)("task id is required",400);let w=await n.queries.task.getTask(p,g,a.workspaceId);if(!w||!await n.queries.agent.getAgent(p,w.agentId,a.workspaceId,t.userId))return(0,l.writeError)("not found",404);let m=new c.TaskService(p);try{let{oldTask:e,newTask:s}=await m.retryTask(g,a.workspaceId),n=new Date().toISOString().slice(0,10);return(0,h.invalidate)(h.cacheKeys.overviewTaskStats(a.workspaceId,n)).catch(()=>{}),(0,u.broadcastToUser)(t.userId,{type:"task.updated",taskId:e.id,agentId:e.agentId,status:"superseded"}).catch(()=>{}),(0,u.broadcastToUser)(t.userId,{type:"task.updated",taskId:s.id,agentId:s.agentId,status:"queued"}).catch(()=>{}),(0,l.writeJSON)((0,d.taskToResponse)(s))}catch(e){return(0,l.writeError)(e instanceof Error?e.message:"Unknown error",400)}});e.s(["POST",0,g]),a()}catch(e){a(e)}},!1),624633,e=>e.a(async(t,a)=>{try{var s=e.i(618117),n=e.i(99200),r=e.i(864055),i=e.i(289578),o=e.i(641783),l=e.i(467635),d=e.i(541774),c=e.i(393982),u=e.i(325959),h=e.i(474834),p=e.i(800989),g=e.i(489409),w=e.i(203050),m=e.i(851100),k=e.i(55434),I=e.i(193695);e.i(163438);var f=e.i(118649),y=e.i(825526),T=t([y]);[y]=T.then?(await T)():T;let v=new s.AppRouteRouteModule({definition:{kind:n.RouteKind.APP_ROUTE,page:"/api/tasks/[id]/retry/route",pathname:"/api/tasks/[id]/retry",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/web/src/app/api/tasks/[id]/retry/route.ts",nextConfigOutput:"standalone",userland:y,...{}}),{workAsyncStorage:_,workUnitAsyncStorage:A,serverHooks:S}=v;async function b(e,t,a){a.requestMeta&&(0,i.setRequestMeta)(e,a.requestMeta),v.isDev&&(0,i.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let s="/api/tasks/[id]/retry/route";s=s.replace(/\/index$/,"")||"/";let r=await v.prepare(e,t,{srcPage:s,multiZoneDraftMode:!1});if(!r)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:y,deploymentId:T,params:b,nextConfig:_,parsedUrl:A,isDraftMode:S,prerenderManifest:E,routerServerContext:R,isOnDemandRevalidate:C,revalidateOnlyGenerated:x,resolvedPathname:P,clientReferenceManifest:q,serverActionsManifest:K}=r,U=(0,d.normalizeAppPath)(s),O=!!(E.dynamicRoutes[U]||E.routes[P]),M=async()=>((null==R?void 0:R.render404)?await R.render404(e,t,A,!1):t.end("This page could not be found"),null);if(O&&!S){let e=!!E.routes[P],t=E.dynamicRoutes[U];if(t&&!1===t.fallback&&!e){if(_.adapterPath)return await M();throw new I.NoFallbackError}}let N=null;!O||v.isDev||S||(N=P,N="/index"===N?"/":N);let D=!0===v.isDev||!O,$=O&&!D;K&&q&&(0,l.setManifestsSingleton)({page:s,clientReferenceManifest:q,serverActionsManifest:K});let L=e.method||"GET",H=(0,o.getTracer)(),B=H.getActiveScopeSpan(),j=!!(null==R?void 0:R.isWrappedByNextServer),F=!!(0,i.getRequestMeta)(e,"minimalMode"),W=(0,i.getRequestMeta)(e,"incrementalCache")||await v.getIncrementalCache(e,_,E,F);null==W||W.resetRequestCache(),globalThis.__incrementalCache=W;let J={params:b,previewProps:E.preview,renderOpts:{experimental:{authInterrupts:!!_.experimental.authInterrupts},cacheComponents:!!_.cacheComponents,supportsDynamicResponse:D,incrementalCache:W,cacheLifeProfiles:_.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,s,n)=>v.onRequestError(e,t,s,n,R)},sharedContext:{buildId:y,deploymentId:T}},V=new c.NodeNextRequest(e),Y=new c.NodeNextResponse(t),G=u.NextRequestAdapter.fromNodeNextRequest(V,(0,u.signalFromNodeResponse)(t));try{let r,i=async e=>v.handle(G,J).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=H.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==h.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=a.get("next.route");if(n){let t=`${L} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t),r&&r!==e&&(r.setAttribute("http.route",n),r.updateName(t))}else e.updateName(`${L} ${s}`)}),l=async r=>{var o,l;let d=async({previousCacheEntry:n})=>{try{if(!F&&C&&x&&!n)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await i(r);e.fetchMetrics=J.renderOpts.fetchMetrics;let o=J.renderOpts.pendingWaitUntil;o&&a.waitUntil&&(a.waitUntil(o),o=void 0);let l=J.renderOpts.collectedTags;if(!O)return await (0,g.sendResponse)(V,Y,s,J.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,w.toNodeOutgoingHttpHeaders)(s.headers);l&&(t[k.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==J.renderOpts.collectedRevalidate&&!(J.renderOpts.collectedRevalidate>=k.INFINITE_CACHE)&&J.renderOpts.collectedRevalidate,n=void 0===J.renderOpts.collectedExpire||J.renderOpts.collectedExpire>=k.INFINITE_CACHE?void 0:J.renderOpts.collectedExpire;return{value:{kind:f.CachedRouteKind.APP_ROUTE,status:s.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:n}}}}catch(t){throw(null==n?void 0:n.isStale)&&await v.onRequestError(e,t,{routerKind:"App Router",routePath:s,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:$,isOnDemandRevalidate:C})},!1,R),t}},c=await v.handleResponse({req:e,nextConfig:_,cacheKey:N,routeKind:n.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:E,isRoutePPREnabled:!1,isOnDemandRevalidate:C,revalidateOnlyGenerated:x,responseGenerator:d,waitUntil:a.waitUntil,isMinimalMode:F});if(!O)return null;if((null==c||null==(o=c.value)?void 0:o.kind)!==f.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==c||null==(l=c.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});F||t.setHeader("x-nextjs-cache",C?"REVALIDATED":c.isMiss?"MISS":c.isStale?"STALE":"HIT"),S&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let u=(0,w.fromNodeOutgoingHttpHeaders)(c.value.headers);return F&&O||u.delete(k.NEXT_CACHE_TAGS_HEADER),!c.cacheControl||t.getHeader("Cache-Control")||u.get("Cache-Control")||u.set("Cache-Control",(0,m.getCacheControlHeader)(c.cacheControl)),await (0,g.sendResponse)(V,Y,new Response(c.value.body,{headers:u,status:c.value.status||200})),null};j&&B?await l(B):(r=H.getActiveScopeSpan(),await H.withPropagatedContext(e.headers,()=>H.trace(h.BaseServerSpan.handleRequest,{spanName:`${L} ${s}`,kind:o.SpanKind.SERVER,attributes:{"http.method":L,"http.target":e.url}},l),void 0,!j))}catch(t){if(t instanceof I.NoFallbackError||await v.onRequestError(e,t,{routerKind:"App Router",routePath:U,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:$,isOnDemandRevalidate:C})},!1,R),O)throw t;return await (0,g.sendResponse)(V,Y,new Response(null,{status:500})),null}}e.s(["handler",0,b,"patchFetch",0,function(){return(0,r.patchFetch)({workAsyncStorage:_,workUnitAsyncStorage:A})},"routeModule",0,v,"serverHooks",0,S,"workAsyncStorage",0,_,"workUnitAsyncStorage",0,A]),a()}catch(e){a(e)}},!1),649967,e=>{e.v(t=>Promise.all(["server/chunks/1cud_@better-auth_memory-adapter_dist_index_mjs_1npfl-v._.js"].map(t=>e.l(t))).then(()=>t(433404)))},706346,e=>{e.v(t=>Promise.all(["server/chunks/12-__better-auth_dist_adapters_kysely-adapter_index_mjs_08059b7._.js"].map(t=>e.l(t))).then(()=>t(943972)))},305762,e=>{e.v(t=>Promise.all(["server/chunks/101m_@better-auth_kysely-adapter_dist_0wrnuhp._.js"].map(t=>e.l(t))).then(()=>t(784506)))},401635,e=>{e.v(t=>Promise.all(["server/chunks/101m_@better-auth_kysely-adapter_dist_1cghpz3._.js"].map(t=>e.l(t))).then(()=>t(333340)))},451312,e=>{e.v(t=>Promise.all(["server/chunks/101m_@better-auth_kysely-adapter_dist_0i747v8._.js"].map(t=>e.l(t))).then(()=>t(178617)))}];
|
|
1
|
+
module.exports=[726089,e=>{"use strict";var t=e.i(931720);e.i(700598);var a=e.i(704024);let s=(0,e.i(726527).createLogger)({service:"broadcast"});async function n(e,n,r){let i;try{let{env:a}=(0,t.getCloudflareContext)();i=a.DEV_WS_DO_URL;let o=await a.WS_DO_WORKER.fetch(`http://internal${e}`,{method:"POST",body:n});if(o.ok)try{return{sent:(await o.json()).sent??0}}catch{return{sent:0}}s.warn("broadcast service-binding non-ok",{...r,status:o.status})}catch{}let o=i||a.DEV_WS_DO_URL,l=await fetch(`${o}${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:n});if(!l.ok)throw Error(`broadcast failed: ${l.status}`);try{return{sent:(await l.json()).sent??0}}catch{return{sent:0}}}e.s(["broadcastToDaemon",0,function(e,a){let s=n(`/broadcast/daemon/${e}`,JSON.stringify(a),{daemonId:e,type:a.type});try{let{ctx:e}=(0,t.getCloudflareContext)();e.waitUntil(s.catch(()=>{}))}catch{}return s},"broadcastToUser",0,function(e,a){return function(e,a,s){let r=n(e,a,s);try{let{ctx:e}=(0,t.getCloudflareContext)();e.waitUntil(r.catch(()=>{}))}catch{}return r.then(()=>{})}(`/broadcast/user/${e}`,JSON.stringify(a),{userId:e,type:a.type})}])},511456,e=>{"use strict";e.i(700598);let t=(0,e.i(726527).createLogger)({service:"web",level:process.env.ALOOK_LOG_LEVEL||"info",pretty:!1});e.s(["log",0,t])},555230,e=>{"use strict";e.i(700598);var t=e.i(291109),a=e.i(704024),s=e.i(424166),n=e.i(740580),r=e.i(774078);e.s(["TaskPayloadBuilder",0,class{db;constructor(e){this.db=e}async buildFullPayloads(e,i){let o=e.filter(e=>e.type!==a.TASK_TYPES.KILL_TASK),l=[...new Set(o.map(e=>e.agentId))],[d,c,u]=l.length>0?await Promise.all([t.queries.agent.getAllAgentsForWorkspace(this.db,i),(0,r.cached)(r.cacheKeys.allEmailAccounts(i),600,()=>t.queries.emailAccount.getAllEmailAccountsForWorkspace(this.db,i)),t.queries.agentLink.getAllColleaguesForWorkspace(this.db,i).catch(()=>[])]).then(([e,t,a])=>{let s=new Set(l);return[e.filter(e=>s.has(e.id)),t.filter(e=>s.has(e.agentId)),a.filter(e=>s.has(e.agentId))]}):[[],[],[]],h=new Map(d.map(e=>[e.id,e])),p=new Map;for(let e of c){let t=p.get(e.agentId)??[];t.push(e.emailAddress),p.set(e.agentId,t)}let g=new Map;for(let e of u){let t=g.get(e.agentId)??[];t.push(e),g.set(e.agentId,t)}let w=[...new Set(o.map(e=>e.conversationId).filter(Boolean))],m=new Map((w.length>0?await t.queries.conversation.getConversationsByIds(this.db,w,i):[]).map(e=>[e.id,e])),k=new Map,I=new Map,f=[];for(let o of e){if(o.type===a.TASK_TYPES.KILL_TASK){f.push({...(0,n.taskToResponse)(o),agent:null,sender:null});continue}let e=h.get(o.agentId)??null,l=[];if(e){e.emailHandle&&l.push((0,s.toAlookAddress)(e.emailHandle));let t=p.get(e.id)??[];l.push(...t)}let d=e?.instructions??"";if(e?.ownerId){if(!k.has(e.ownerId)){let a=await (0,r.cached)(r.cacheKeys.member(i,e.ownerId),600,()=>t.queries.member.getMemberByUserAndWorkspace(this.db,e.ownerId,i));k.set(e.ownerId,a?{globalInstruction:a.globalInstruction}:null)}let a=k.get(e.ownerId);a?.globalInstruction&&(d=[a.globalInstruction,d].filter(Boolean).join("\n\n"))}let c=null;if(e?.ownerId){if(!I.has(e.ownerId)){let a=await (0,r.cached)(r.cacheKeys.user(e.ownerId),1800,()=>t.queries.user.getUser(this.db,e.ownerId));I.set(e.ownerId,a?{name:a.name,email:a.email}:null)}c=I.get(e.ownerId)?.name??null}let u=m.get(o.conversationId)??null,w=u?.channel??"default",T=null;if(o.type===a.TASK_TYPES.USER_DM_MESSAGE&&u?.userId){if(!I.has(u.userId)){let e=await (0,r.cached)(r.cacheKeys.user(u.userId),1800,()=>t.queries.user.getUser(this.db,u.userId));I.set(u.userId,e?{name:e.name,email:e.email}:null)}let a=I.get(u.userId);a&&(T={name:a.name,email:a.email,is_owner:u.userId===e?.ownerId})}let y=(g.get(o.agentId)??[]).map(e=>({name:e.name,email:e.emailHandle?(0,s.toAlookAddress)(e.emailHandle):"",description:e.description,instruction:e.instruction}));f.push({...(0,n.taskToResponse)(o),channel:w,sender:T,agent:e?{instructions:d,name:e.name,runtime_config:e.runtimeConfig||{},email_handle:e.emailHandle||null,email_addresses:l,user_email:null,user_name:c,colleagues:y}:null})}return f}}])},205054,e=>{"use strict";e.i(700598);var t=e.i(291109),a=e.i(704024),s=e.i(511456),n=e.i(726089),r=e.i(740580),i=e.i(774078),o=e.i(555230);let l=t.queries.task,d=t.queries.agent,c=t.queries.message,u=t.queries.conversation,h=t.queries.issue,p=t.queries.inbox;e.s(["TaskService",0,class{db;constructor(e){this.db=e}async enqueueTask(e,t,s,n,r=a.TASK_TYPES.USER_DM_MESSAGE,o){let c=await d.getAgent(this.db,e,s);if(!c)throw Error("agent not found");if(!c.runtimeId)throw Error("agent has no runtime");if(o?.traceId&&o.parentTaskId&&await l.countTasksByTrace(this.db,o.traceId)>=a.MAX_TASKS_PER_TRACE)throw Error(`Trace limit reached (${a.MAX_TASKS_PER_TRACE} tasks). This may indicate an infinite loop between agents.`);let u=await l.createTask(this.db,{agentId:e,runtimeId:c.runtimeId,workspaceId:s,conversationId:t,prompt:n,type:r,contextKey:o?.contextKey??null,priority:0,context:o?.context,traceId:o?.traceId??null,parentTaskId:o?.parentTaskId??null});return(0,i.invalidate)(i.cacheKeys.activeTaskCounts(s)).catch(()=>{}),await this.pushTaskToDaemon(u,s).catch(()=>{}),u}async claimTask(e,t){let a=await d.getAgent(this.db,e,t);return this.claimTaskWithAgent(e,t,a)}async claimTaskWithAgent(e,t,a){if(!a)return null;if(await l.countRunningTasks(this.db,e,t)>=a.maxConcurrentTasks){let s=await l.findSteerableReplacement(this.db,e,t);if(!s||await l.countRunningTasks(this.db,e,t,s.predecessorId)>=a.maxConcurrentTasks)return null}let s=await l.claimTask(this.db,e,t);return s?(await d.updateAgentStatus(this.db,e,t,"working"),s):null}async claimTasksForRuntimes(e,t,a){let s=await l.claimKillTasks(this.db,e,a,t),n=t-s.length,r=n>0?await l.listPendingTasksByRuntimes(this.db,e,a):[],i=new Set(e),o=new Set,c=[...s],u=[];for(let e of r){if(u.length>=n)break;let t=`${e.agentId}:${e.workspaceId}`;o.has(t)||(o.add(t),u.push(e))}if(0===u.length)return c;let h=[...new Set(u.map(e=>e.agentId))],p=new Map((await d.getAgentsByIds(this.db,h,a)).map(e=>[e.id,e]));for(let e of(await Promise.all(u.map(e=>this.claimTaskWithAgent(e.agentId,e.workspaceId,p.get(e.agentId)??null)))))e&&i.has(e.runtimeId)&&c.push(e);return c}async startTask(e,t){let a=await l.startTask(this.db,e,t);if(!a)throw Error("task not in dispatched status");return a}async completeTask(e,t,a,n){let r;try{r=JSON.parse(a)}catch{r={raw:a}}let i=await l.completeTask(this.db,e,t,{result:r,sessionId:n||null});if(!i){let t=await l.getTask(this.db,e),a=t?.status??"unknown";throw s.log.warn(`completeTask failed: task is in '${a}' status`,{taskId:e}),Error(`cannot complete task in '${a}' status`)}return await this.reconcileAgentStatus(i.agentId,i.workspaceId),this.maybeUpsertUnread(i,t,null).catch(()=>{}),i}async failTask(e,i,o){let d=await l.failTask(this.db,e,i,o);if(!d){let t=await l.getTask(this.db,e),a=t?.status??"unknown";throw s.log.warn(`failTask failed: task is in '${a}' status`,{taskId:e}),Error(`cannot fail task in '${a}' status`)}if(d.type===a.TASK_TYPES.KILL_TASK)return d;let h=null;if(o){let a=null;try{if(d.runtimeId){let e=await t.queries.runtime.getAgentRuntime(this.db,d.runtimeId);a=e?.provider??null}}catch{}let s=await c.createMessage(this.db,{conversationId:d.conversationId,role:"assistant",content:o,taskId:e,metadata:JSON.stringify({error_source:"runtime",provider:a})});h=s?.id??null;try{let e=await u.getConversation(this.db,d.conversationId,i);e&&(0,n.broadcastToUser)(e.userId,{type:"conversation.message",conversationId:d.conversationId,message:(0,r.messageToResponse)(s)}).catch(()=>{})}catch{}}return await this.reconcileAgentStatus(d.agentId,d.workspaceId),await this.syncIssueStatusFromTask(d,"failed"),this.maybeUpsertUnread(d,i,h).catch(()=>{}),d}async syncIssueStatusFromTask(e,t){if(e.type!==a.TASK_TYPES.ISSUE_EVENT)return;let s=await h.getIssueByConversation(this.db,e.conversationId,e.workspaceId);if(!s||s.status===t||!await h.updateIssue(this.db,s.id,e.workspaceId,{status:t}))return;let i=await c.createMessage(this.db,{conversationId:e.conversationId,role:"event",content:`Issue status changed: ${s.status} -> ${t}`,taskId:e.id,metadata:JSON.stringify({issueId:s.id})});try{let t=await u.getConversation(this.db,e.conversationId,e.workspaceId);t&&(0,n.broadcastToUser)(t.userId,{type:"conversation.message",conversationId:e.conversationId,message:(0,r.messageToResponse)(i)}).catch(()=>{})}catch{}}async maybeUpsertUnread(e,t,a){if(!p.isUnreadEligible(e)||!e.completedAt)return;let s=await u.getConversation(this.db,e.conversationId,t);if(!s)return;let n=a??await p.findLatestAssistantMessageId(this.db,e.conversationId);await p.upsertUnreadEntry(this.db,{conversationId:e.conversationId,userId:s.userId,workspaceId:t,agentId:s.agentId,taskId:e.id,taskType:e.type,taskStatus:e.status,taskPrompt:e.prompt,completedAt:e.completedAt,latestMessageId:n})}async supersedeTask(e,t){let a=await l.supersedeTask(this.db,e,t);if(!a){let t=await l.getTask(this.db,e),a=t?.status??"unknown";throw s.log.warn(`supersedeTask failed: task is in '${a}' status`,{taskId:e}),Error(`cannot supersede task in '${a}' status`)}return await this.reconcileAgentStatus(a.agentId,a.workspaceId),a}async retryTask(e,t){let a=await l.getTask(this.db,e);if(!a||a.workspaceId!==t)throw Error("task not found");if("failed"!==a.status)throw Error("only failed tasks can be retried");let s=await l.markFailedAsSuperseded(this.db,e,t);if(!s)throw Error("failed to mark task as superseded");return{oldTask:s,newTask:await this.enqueueTask(a.agentId,a.conversationId,t,a.prompt,a.type,{contextKey:a.contextKey??null,context:a.context,traceId:a.traceId??null,parentTaskId:a.parentTaskId??null})}}async cancelActiveTask(e,r,i){let o=await l.getActiveTaskByConversation(this.db,e,r);if(!o)return null;let d=await l.cancelTask(this.db,o.id,r);if(!d)return null;if("dispatched"===o.status||"running"===o.status){let i=await l.createTask(this.db,{agentId:o.agentId,runtimeId:o.runtimeId,workspaceId:r,conversationId:e,prompt:"",type:a.TASK_TYPES.KILL_TASK,context:{target_task_id:o.id}});await l.dispatchTaskById(this.db,i.id,r);let d=await t.queries.runtime.getAgentRuntime(this.db,o.runtimeId);d&&(0,n.broadcastToDaemon)(d.daemonId,{type:"daemon.kill",workspaceId:r,agentId:o.agentId,taskId:i.id,targetTaskId:o.id}).catch(e=>s.log.warn("daemon.kill broadcast failed, relying on poll fallback",e))}return await c.createMessage(this.db,{conversationId:e,role:"assistant",content:i?.reason??"Task cancelled by you",taskId:o.id,metadata:JSON.stringify({kind:"lifecycle"})}),await this.reconcileAgentStatus(o.agentId,r),d}async reconcileAgentStatus(e,t){let a=await l.countRunningTasks(this.db,e,t);await d.updateAgentStatus(this.db,e,t,a>0?"working":"idle"),(0,i.invalidate)(i.cacheKeys.activeTaskCounts(t)).catch(()=>{})}async cancelTrace(e,t,a){for(let n of[...new Set((await l.getTraceTree(this.db,e,t)).filter(e=>["queued","dispatched","running"].includes(e.status)).map(e=>e.conversationId))])try{await this.cancelActiveTask(n,t,{reason:a?.reason})}catch(t){s.log.warn("cancelTrace: failed to cancel task",{traceId:e,convId:n,err:t})}}async pushTaskToDaemon(e,a){let s=await t.queries.runtime.getAgentRuntime(this.db,e.runtimeId);if(!s)return;let r=await l.dispatchTaskById(this.db,e.id,a);if(!r)return;let i=new o.TaskPayloadBuilder(this.db),d=await i.buildFullPayloads([r],a);if(0===d.length)return void await l.revertDispatchedToQueued(this.db,e.id,a);try{let{sent:t}=await (0,n.broadcastToDaemon)(s.daemonId,{type:"daemon.tasks",tasks:d});0===t&&await l.revertDispatchedToQueued(this.db,e.id,a)}catch{await l.revertDispatchedToQueued(this.db,e.id,a)}}}])},825526,e=>e.a(async(t,a)=>{try{var s=e.i(931720);e.i(700598);var n=e.i(291109),r=e.i(675139),i=e.i(152327),o=e.i(47962),l=e.i(776227),d=e.i(740580),c=e.i(205054),u=e.i(726089),h=e.i(774078),p=t([i]);[i]=p.then?(await p)():p;let g=(0,i.withAuth)(async(e,t)=>{let a=await (0,o.withWorkspaceMember)(e,t);if(a instanceof Response)return a;let{env:i}=(0,s.getCloudflareContext)(),p=(0,r.getDb)(i.DB),g=t.params?.id;if(!g)return(0,l.writeError)("task id is required",400);let w=await n.queries.task.getTask(p,g,a.workspaceId);if(!w||!await n.queries.agent.getAgent(p,w.agentId,a.workspaceId,t.userId))return(0,l.writeError)("not found",404);let m=new c.TaskService(p);try{let{oldTask:e,newTask:s}=await m.retryTask(g,a.workspaceId),n=new Date().toISOString().slice(0,10);return(0,h.invalidate)(h.cacheKeys.overviewTaskStats(a.workspaceId,n)).catch(()=>{}),(0,u.broadcastToUser)(t.userId,{type:"task.updated",taskId:e.id,agentId:e.agentId,status:"superseded"}).catch(()=>{}),(0,u.broadcastToUser)(t.userId,{type:"task.updated",taskId:s.id,agentId:s.agentId,status:"queued"}).catch(()=>{}),(0,l.writeJSON)((0,d.taskToResponse)(s))}catch(e){return(0,l.writeError)(e instanceof Error?e.message:"Unknown error",400)}});e.s(["POST",0,g]),a()}catch(e){a(e)}},!1),624633,e=>e.a(async(t,a)=>{try{var s=e.i(618117),n=e.i(99200),r=e.i(864055),i=e.i(289578),o=e.i(641783),l=e.i(467635),d=e.i(541774),c=e.i(393982),u=e.i(325959),h=e.i(474834),p=e.i(800989),g=e.i(489409),w=e.i(203050),m=e.i(851100),k=e.i(55434),I=e.i(193695);e.i(163438);var f=e.i(118649),T=e.i(825526),y=t([T]);[T]=y.then?(await y)():y;let v=new s.AppRouteRouteModule({definition:{kind:n.RouteKind.APP_ROUTE,page:"/api/tasks/[id]/retry/route",pathname:"/api/tasks/[id]/retry",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/web/src/app/api/tasks/[id]/retry/route.ts",nextConfigOutput:"standalone",userland:T,...{}}),{workAsyncStorage:_,workUnitAsyncStorage:A,serverHooks:S}=v;async function b(e,t,a){a.requestMeta&&(0,i.setRequestMeta)(e,a.requestMeta),v.isDev&&(0,i.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let s="/api/tasks/[id]/retry/route";s=s.replace(/\/index$/,"")||"/";let r=await v.prepare(e,t,{srcPage:s,multiZoneDraftMode:!1});if(!r)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:T,deploymentId:y,params:b,nextConfig:_,parsedUrl:A,isDraftMode:S,prerenderManifest:E,routerServerContext:R,isOnDemandRevalidate:C,revalidateOnlyGenerated:x,resolvedPathname:P,clientReferenceManifest:q,serverActionsManifest:U}=r,K=(0,d.normalizeAppPath)(s),O=!!(E.dynamicRoutes[K]||E.routes[P]),M=async()=>((null==R?void 0:R.render404)?await R.render404(e,t,A,!1):t.end("This page could not be found"),null);if(O&&!S){let e=!!E.routes[P],t=E.dynamicRoutes[K];if(t&&!1===t.fallback&&!e){if(_.adapterPath)return await M();throw new I.NoFallbackError}}let N=null;!O||v.isDev||S||(N=P,N="/index"===N?"/":N);let D=!0===v.isDev||!O,$=O&&!D;U&&q&&(0,l.setManifestsSingleton)({page:s,clientReferenceManifest:q,serverActionsManifest:U});let L=e.method||"GET",H=(0,o.getTracer)(),B=H.getActiveScopeSpan(),j=!!(null==R?void 0:R.isWrappedByNextServer),F=!!(0,i.getRequestMeta)(e,"minimalMode"),W=(0,i.getRequestMeta)(e,"incrementalCache")||await v.getIncrementalCache(e,_,E,F);null==W||W.resetRequestCache(),globalThis.__incrementalCache=W;let J={params:b,previewProps:E.preview,renderOpts:{experimental:{authInterrupts:!!_.experimental.authInterrupts},cacheComponents:!!_.cacheComponents,supportsDynamicResponse:D,incrementalCache:W,cacheLifeProfiles:_.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,s,n)=>v.onRequestError(e,t,s,n,R)},sharedContext:{buildId:T,deploymentId:y}},V=new c.NodeNextRequest(e),Y=new c.NodeNextResponse(t),G=u.NextRequestAdapter.fromNodeNextRequest(V,(0,u.signalFromNodeResponse)(t));try{let r,i=async e=>v.handle(G,J).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=H.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==h.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=a.get("next.route");if(n){let t=`${L} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t),r&&r!==e&&(r.setAttribute("http.route",n),r.updateName(t))}else e.updateName(`${L} ${s}`)}),l=async r=>{var o,l;let d=async({previousCacheEntry:n})=>{try{if(!F&&C&&x&&!n)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await i(r);e.fetchMetrics=J.renderOpts.fetchMetrics;let o=J.renderOpts.pendingWaitUntil;o&&a.waitUntil&&(a.waitUntil(o),o=void 0);let l=J.renderOpts.collectedTags;if(!O)return await (0,g.sendResponse)(V,Y,s,J.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,w.toNodeOutgoingHttpHeaders)(s.headers);l&&(t[k.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==J.renderOpts.collectedRevalidate&&!(J.renderOpts.collectedRevalidate>=k.INFINITE_CACHE)&&J.renderOpts.collectedRevalidate,n=void 0===J.renderOpts.collectedExpire||J.renderOpts.collectedExpire>=k.INFINITE_CACHE?void 0:J.renderOpts.collectedExpire;return{value:{kind:f.CachedRouteKind.APP_ROUTE,status:s.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:n}}}}catch(t){throw(null==n?void 0:n.isStale)&&await v.onRequestError(e,t,{routerKind:"App Router",routePath:s,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:$,isOnDemandRevalidate:C})},!1,R),t}},c=await v.handleResponse({req:e,nextConfig:_,cacheKey:N,routeKind:n.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:E,isRoutePPREnabled:!1,isOnDemandRevalidate:C,revalidateOnlyGenerated:x,responseGenerator:d,waitUntil:a.waitUntil,isMinimalMode:F});if(!O)return null;if((null==c||null==(o=c.value)?void 0:o.kind)!==f.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==c||null==(l=c.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});F||t.setHeader("x-nextjs-cache",C?"REVALIDATED":c.isMiss?"MISS":c.isStale?"STALE":"HIT"),S&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let u=(0,w.fromNodeOutgoingHttpHeaders)(c.value.headers);return F&&O||u.delete(k.NEXT_CACHE_TAGS_HEADER),!c.cacheControl||t.getHeader("Cache-Control")||u.get("Cache-Control")||u.set("Cache-Control",(0,m.getCacheControlHeader)(c.cacheControl)),await (0,g.sendResponse)(V,Y,new Response(c.value.body,{headers:u,status:c.value.status||200})),null};j&&B?await l(B):(r=H.getActiveScopeSpan(),await H.withPropagatedContext(e.headers,()=>H.trace(h.BaseServerSpan.handleRequest,{spanName:`${L} ${s}`,kind:o.SpanKind.SERVER,attributes:{"http.method":L,"http.target":e.url}},l),void 0,!j))}catch(t){if(t instanceof I.NoFallbackError||await v.onRequestError(e,t,{routerKind:"App Router",routePath:K,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:$,isOnDemandRevalidate:C})},!1,R),O)throw t;return await (0,g.sendResponse)(V,Y,new Response(null,{status:500})),null}}e.s(["handler",0,b,"patchFetch",0,function(){return(0,r.patchFetch)({workAsyncStorage:_,workUnitAsyncStorage:A})},"routeModule",0,v,"serverHooks",0,S,"workAsyncStorage",0,_,"workUnitAsyncStorage",0,A]),a()}catch(e){a(e)}},!1),649967,e=>{e.v(t=>Promise.all(["server/chunks/1cud_@better-auth_memory-adapter_dist_index_mjs_1npfl-v._.js"].map(t=>e.l(t))).then(()=>t(433404)))},706346,e=>{e.v(t=>Promise.all(["server/chunks/12-__better-auth_dist_adapters_kysely-adapter_index_mjs_08059b7._.js"].map(t=>e.l(t))).then(()=>t(943972)))},305762,e=>{e.v(t=>Promise.all(["server/chunks/101m_@better-auth_kysely-adapter_dist_0wrnuhp._.js"].map(t=>e.l(t))).then(()=>t(784506)))},401635,e=>{e.v(t=>Promise.all(["server/chunks/101m_@better-auth_kysely-adapter_dist_1cghpz3._.js"].map(t=>e.l(t))).then(()=>t(333340)))},451312,e=>{e.v(t=>Promise.all(["server/chunks/101m_@better-auth_kysely-adapter_dist_0i747v8._.js"].map(t=>e.l(t))).then(()=>t(178617)))}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=_0m_ehw8._.js.map
|
package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0n8pg0d._.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[897069,e=>{"use strict";var t=e.i(424166);e.s(["parsePromptMentions",0,function(e,a){if(!e||0===a.length)return{enrichedPrompt:e,mentions:[]};let r=a.slice().sort((e,t)=>t.name.length-e.name.length),n=[],s=[];for(let t=0;t<e.length;t++){if("@"!==e[t]||!function(e,t){if(0===t)return!0;let a=e.charCodeAt(t-1);return(!(a>=48)||!(a<=57))&&(!(a>=65)||!(a<=90))&&(!(a>=97)||!(a<=122))&&95!==a}(e,t))continue;let a=t+1;for(let n of r){let r=a+n.name.length;if(!(r>e.length)&&e.slice(a,r).toLowerCase()===n.name.toLowerCase()&&function(e,t){if(t>=e.length)return!0;let a=e.charCodeAt(t);return(!(a>=48)||!(a<=57))&&(!(a>=65)||!(a<=90))&&(!(a>=97)||!(a<=122))&&95!==a}(e,r)){if(s.some(e=>t>=e.start&&t<e.end))break;s.push({start:t,end:r,agent:n});break}}}let i=e;for(let e=s.length-1;e>=0;e--){let a=s[e],r={name:a.agent.name,email:a.agent.emailHandle?(0,t.toAlookAddress)(a.agent.emailHandle):null,description:a.agent.description};if(n.unshift(r),a.agent.emailHandle){let e=`@${a.agent.name} (${(0,t.toAlookAddress)(a.agent.emailHandle)})`;i=i.slice(0,a.start)+e+i.slice(a.end)}else i=i.slice(0,a.start)+`@${a.agent.name}`+i.slice(a.end)}return{enrichedPrompt:i,mentions:n}}])},632577,e=>e.a(async(t,a)=>{try{var r=e.i(931720);e.i(700598);var n=e.i(291109),s=e.i(704024),i=e.i(888247),o=e.i(897069),l=e.i(318172),d=e.i(675139),c=e.i(719436),u=e.i(152327),p=e.i(47962),h=e.i(776227),g=e.i(740580),m=e.i(205054),f=e.i(511456),w=e.i(726089),v=e.i(774078),R=t([u]);[u]=R.then?(await R)():R;let E=(0,u.withAuth)(async(e,t)=>{let a=await (0,p.withWorkspaceMember)(e,t);if(a instanceof Response)return a;let{env:s}=(0,r.getCloudflareContext)(),i=(0,d.getDb)(s.DB),o=t.params?.id;if(!o)return(0,h.writeError)("conversation id is required",400);let l=await n.queries.conversation.getConversation(i,o,a.workspaceId);if(!l||l.userId!==t.userId)return(0,h.writeError)("not found",404);let c=new URL(e.url),u=c.searchParams.get("around_task");if(u){let e=await n.queries.message.listMessagesAroundTask(i,o,u);return(0,h.writeJSON)(e.map(g.messageToResponse))}let m=c.searchParams.get("limit"),f=c.searchParams.get("before")||void 0,w=c.searchParams.get("before_id")||void 0,v=m?Math.min(Math.max(parseInt(m,10)||20,1),100):void 0,{messages:R,has_more:E}=await n.queries.message.listMessages(i,o,{limit:v,before:f,beforeId:w});return(0,h.writeJSON)({messages:R.map(g.messageToResponse),has_more:E})}),y=(0,u.withAuth)(async(e,t)=>{let a,u,R,E=await (0,p.withWorkspaceMember)(e,t);if(E instanceof Response)return E;let{env:y}=(0,r.getCloudflareContext)(),I=(0,d.getDb)(y.DB),C=y.EMAIL_BUCKET,T=t.params?.id;if(!T)return(0,h.writeError)("conversation id is required",400);let A=(e.headers.get("content-type")??"").includes("multipart/form-data"),k=[];if(A){let t;try{t=await e.formData()}catch{return(0,h.writeError)("invalid form data",400)}a=t.get("content")||"";let r=t.get("metadata");if(r)try{u=JSON.parse(r)}catch{}for(let[e,a]of t.entries())"file"===e&&a instanceof File&&k.push(a)}else{let[t,r]=await (0,h.parseBody)(e,i.CreateMessageRequestSchema);if(r)return r;a=t.content,u=t.metadata}if(A&&!a)return(0,h.writeError)("content is required",400);if(k.length>10)return(0,h.writeError)("too many files (max 10)",400);for(let e of k)if(e.size>0xa00000)return(0,h.writeError)(`file "${e.name}" exceeds 10 MB limit`,413);let x=await n.queries.conversation.getConversation(I,T,E.workspaceId);if(!x||x.userId!==t.userId)return(0,h.writeError)("not found",404);let S=[];for(let e of k){let t=e.name.replace(/[/\\]/g,"_").replace(/\.\./g,"_").slice(0,255)||"file",a=e.type||"application/octet-stream",r="art_"+(0,c.nanoid)(),s=`artifacts/${E.workspaceId}/${x.agentId}/${T}/${r}/${t}`;await C.put(s,await e.arrayBuffer(),{httpMetadata:{contentType:a}}),await n.queries.artifact.createArtifact(I,{id:r,conversationId:T,agentId:x.agentId,workspaceId:E.workspaceId,filename:t,contentType:a,size:e.size,r2Key:s,source:"attachment"}),S.push(r)}let q=await n.queries.message.createMessage(I,{conversationId:T,role:"user",content:a,attachmentIds:S.length>0?JSON.stringify(S):null,metadata:u?JSON.stringify(u):null});(0,w.broadcastToUser)(t.userId,{type:"conversation.message",conversationId:T,message:(0,g.messageToResponse)(q)}).catch(()=>{}),x.parentMessageId&&n.queries.message.getActiveMessageCount(I,T).then(e=>{(0,w.broadcastToUser)(t.userId,{type:"thread.reply",conversationId:T,threadConversationId:T,parentMessageId:x.parentMessageId,replyCount:e}).catch(()=>{})}).catch(()=>{}),n.queries.conversation.updateConversationTitle(I,T,(0,l.truncateTitle)(a)).catch(()=>{});let _=a;if(a.includes("@"))try{let e=await n.queries.agent.listAgents(I,E.workspaceId,t.userId),{enrichedPrompt:r,mentions:s}=(0,o.parsePromptMentions)(a,e);if(_=r,s.length>0){let e=new Set;R={mentioned_agents:s.filter(t=>!e.has(t.name)&&(e.add(t.name),!0)).map(e=>({name:e.name,email:e.email,...e.description?{description:e.description}:{}}))}}}catch{}let b=u?.quote,M={message_id:q.id,...S.length>0?{attachment_ids:S}:{},...R,...b?{quoted_message:{message_id:b.messageId,excerpt:b.excerpt}}:{}},P="tr_"+(0,c.nanoid)(),N=new m.TaskService(I);try{let e=await N.enqueueTask(x.agentId,T,E.workspaceId,_,s.TASK_TYPES.USER_DM_MESSAGE,{contextKey:T,context:Object.keys(M).length>0?M:void 0,traceId:P,parentTaskId:null});n.queries.message.updateMessageTaskId(I,q.id,e.id).catch(()=>{});let a=new Date().toISOString().slice(0,10);return(0,v.invalidate)(v.cacheKeys.overviewTaskStats(E.workspaceId,a)).catch(()=>{}),(0,w.broadcastToUser)(t.userId,{type:"task.updated",taskId:e.id,agentId:e.agentId,status:"queued"}).catch(()=>{}),(0,h.writeJSON)({message:(0,g.messageToResponse)(q),task:(0,g.taskToResponse)(e)},201)}catch(e){return f.log.error("enqueueTask error",{err:e}),(0,h.writeJSON)({message:(0,g.messageToResponse)(q),task:null,error:e instanceof Error?e.message:"Unknown error"},500)}});e.s(["GET",0,E,"POST",0,y]),a()}catch(e){a(e)}},!1),6736,e=>e.a(async(t,a)=>{try{var r=e.i(618117),n=e.i(99200),s=e.i(864055),i=e.i(289578),o=e.i(641783),l=e.i(467635),d=e.i(541774),c=e.i(393982),u=e.i(325959),p=e.i(474834),h=e.i(800989),g=e.i(489409),m=e.i(203050),f=e.i(851100),w=e.i(55434),v=e.i(193695);e.i(163438);var R=e.i(118649),E=e.i(632577),y=t([E]);[E]=y.then?(await y)():y;let C=new r.AppRouteRouteModule({definition:{kind:n.RouteKind.APP_ROUTE,page:"/api/conversations/[id]/messages/route",pathname:"/api/conversations/[id]/messages",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/web/src/app/api/conversations/[id]/messages/route.ts",nextConfigOutput:"standalone",userland:E,...{}}),{workAsyncStorage:T,workUnitAsyncStorage:A,serverHooks:k}=C;async function I(e,t,a){a.requestMeta&&(0,i.setRequestMeta)(e,a.requestMeta),C.isDev&&(0,i.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let r="/api/conversations/[id]/messages/route";r=r.replace(/\/index$/,"")||"/";let s=await C.prepare(e,t,{srcPage:r,multiZoneDraftMode:!1});if(!s)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:E,deploymentId:y,params:I,nextConfig:T,parsedUrl:A,isDraftMode:k,prerenderManifest:x,routerServerContext:S,isOnDemandRevalidate:q,revalidateOnlyGenerated:_,resolvedPathname:b,clientReferenceManifest:M,serverActionsManifest:P}=s,N=(0,d.normalizeAppPath)(r),O=!!(x.dynamicRoutes[N]||x.routes[b]),U=async()=>((null==S?void 0:S.render404)?await S.render404(e,t,A,!1):t.end("This page could not be found"),null);if(O&&!k){let e=!!x.routes[b],t=x.dynamicRoutes[N];if(t&&!1===t.fallback&&!e){if(T.adapterPath)return await U();throw new v.NoFallbackError}}let H=null;!O||C.isDev||k||(H=b,H="/index"===H?"/":H);let D=!0===C.isDev||!O,$=O&&!D;P&&M&&(0,l.setManifestsSingleton)({page:r,clientReferenceManifest:M,serverActionsManifest:P});let B=e.method||"GET",K=(0,o.getTracer)(),F=K.getActiveScopeSpan(),L=!!(null==S?void 0:S.isWrappedByNextServer),j=!!(0,i.getRequestMeta)(e,"minimalMode"),J=(0,i.getRequestMeta)(e,"incrementalCache")||await C.getIncrementalCache(e,T,x,j);null==J||J.resetRequestCache(),globalThis.__incrementalCache=J;let G={params:I,previewProps:x.preview,renderOpts:{experimental:{authInterrupts:!!T.experimental.authInterrupts},cacheComponents:!!T.cacheComponents,supportsDynamicResponse:D,incrementalCache:J,cacheLifeProfiles:T.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,r,n)=>C.onRequestError(e,t,r,n,S)},sharedContext:{buildId:E,deploymentId:y}},W=new c.NodeNextRequest(e),z=new c.NodeNextResponse(t),V=u.NextRequestAdapter.fromNodeNextRequest(W,(0,u.signalFromNodeResponse)(t));try{let s,i=async e=>C.handle(V,G).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=K.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==p.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=a.get("next.route");if(n){let t=`${B} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t),s&&s!==e&&(s.setAttribute("http.route",n),s.updateName(t))}else e.updateName(`${B} ${r}`)}),l=async s=>{var o,l;let d=async({previousCacheEntry:n})=>{try{if(!j&&q&&_&&!n)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let r=await i(s);e.fetchMetrics=G.renderOpts.fetchMetrics;let o=G.renderOpts.pendingWaitUntil;o&&a.waitUntil&&(a.waitUntil(o),o=void 0);let l=G.renderOpts.collectedTags;if(!O)return await (0,g.sendResponse)(W,z,r,G.renderOpts.pendingWaitUntil),null;{let e=await r.blob(),t=(0,m.toNodeOutgoingHttpHeaders)(r.headers);l&&(t[w.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==G.renderOpts.collectedRevalidate&&!(G.renderOpts.collectedRevalidate>=w.INFINITE_CACHE)&&G.renderOpts.collectedRevalidate,n=void 0===G.renderOpts.collectedExpire||G.renderOpts.collectedExpire>=w.INFINITE_CACHE?void 0:G.renderOpts.collectedExpire;return{value:{kind:R.CachedRouteKind.APP_ROUTE,status:r.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:n}}}}catch(t){throw(null==n?void 0:n.isStale)&&await C.onRequestError(e,t,{routerKind:"App Router",routePath:r,routeType:"route",revalidateReason:(0,h.getRevalidateReason)({isStaticGeneration:$,isOnDemandRevalidate:q})},!1,S),t}},c=await C.handleResponse({req:e,nextConfig:T,cacheKey:H,routeKind:n.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:x,isRoutePPREnabled:!1,isOnDemandRevalidate:q,revalidateOnlyGenerated:_,responseGenerator:d,waitUntil:a.waitUntil,isMinimalMode:j});if(!O)return null;if((null==c||null==(o=c.value)?void 0:o.kind)!==R.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});j||t.setHeader("x-nextjs-cache",q?"REVALIDATED":c.isMiss?"MISS":c.isStale?"STALE":"HIT"),k&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let u=(0,m.fromNodeOutgoingHttpHeaders)(c.value.headers);return j&&O||u.delete(w.NEXT_CACHE_TAGS_HEADER),!c.cacheControl||t.getHeader("Cache-Control")||u.get("Cache-Control")||u.set("Cache-Control",(0,f.getCacheControlHeader)(c.cacheControl)),await (0,g.sendResponse)(W,z,new Response(c.value.body,{headers:u,status:c.value.status||200})),null};L&&F?await l(F):(s=K.getActiveScopeSpan(),await K.withPropagatedContext(e.headers,()=>K.trace(p.BaseServerSpan.handleRequest,{spanName:`${B} ${r}`,kind:o.SpanKind.SERVER,attributes:{"http.method":B,"http.target":e.url}},l),void 0,!L))}catch(t){if(t instanceof v.NoFallbackError||await C.onRequestError(e,t,{routerKind:"App Router",routePath:N,routeType:"route",revalidateReason:(0,h.getRevalidateReason)({isStaticGeneration:$,isOnDemandRevalidate:q})},!1,S),O)throw t;return await (0,g.sendResponse)(W,z,new Response(null,{status:500})),null}}e.s(["handler",0,I,"patchFetch",0,function(){return(0,s.patchFetch)({workAsyncStorage:T,workUnitAsyncStorage:A})},"routeModule",0,C,"serverHooks",0,k,"workAsyncStorage",0,T,"workUnitAsyncStorage",0,A]),a()}catch(e){a(e)}},!1)];
|
|
1
|
+
module.exports=[897069,e=>{"use strict";var t=e.i(424166);e.s(["parsePromptMentions",0,function(e,a){if(!e||0===a.length)return{enrichedPrompt:e,mentions:[]};let r=a.slice().sort((e,t)=>t.name.length-e.name.length),n=[],s=[];for(let t=0;t<e.length;t++){if("@"!==e[t]||!function(e,t){if(0===t)return!0;let a=e.charCodeAt(t-1);return(!(a>=48)||!(a<=57))&&(!(a>=65)||!(a<=90))&&(!(a>=97)||!(a<=122))&&95!==a}(e,t))continue;let a=t+1;for(let n of r){let r=a+n.name.length;if(!(r>e.length)&&e.slice(a,r).toLowerCase()===n.name.toLowerCase()&&function(e,t){if(t>=e.length)return!0;let a=e.charCodeAt(t);return(!(a>=48)||!(a<=57))&&(!(a>=65)||!(a<=90))&&(!(a>=97)||!(a<=122))&&95!==a}(e,r)){if(s.some(e=>t>=e.start&&t<e.end))break;s.push({start:t,end:r,agent:n});break}}}let i=e;for(let e=s.length-1;e>=0;e--){let a=s[e],r={name:a.agent.name,email:a.agent.emailHandle?(0,t.toAlookAddress)(a.agent.emailHandle):null,description:a.agent.description};if(n.unshift(r),a.agent.emailHandle){let e=`@${a.agent.name} (${(0,t.toAlookAddress)(a.agent.emailHandle)})`;i=i.slice(0,a.start)+e+i.slice(a.end)}else i=i.slice(0,a.start)+`@${a.agent.name}`+i.slice(a.end)}return{enrichedPrompt:i,mentions:n}}])},632577,e=>e.a(async(t,a)=>{try{var r=e.i(931720);e.i(700598);var n=e.i(291109),s=e.i(704024),i=e.i(888247),o=e.i(897069),l=e.i(318172),d=e.i(675139),c=e.i(719436),u=e.i(152327),p=e.i(47962),h=e.i(776227),g=e.i(740580),m=e.i(205054),f=e.i(511456),w=e.i(726089),v=e.i(774078),R=t([u]);[u]=R.then?(await R)():R;let E=(0,u.withAuth)(async(e,t)=>{let a=await (0,p.withWorkspaceMember)(e,t);if(a instanceof Response)return a;let{env:s}=(0,r.getCloudflareContext)(),i=(0,d.getDb)(s.DB),o=t.params?.id;if(!o)return(0,h.writeError)("conversation id is required",400);let l=await n.queries.conversation.getConversation(i,o,a.workspaceId);if(!l||l.userId!==t.userId)return(0,h.writeError)("not found",404);let c=new URL(e.url),u=c.searchParams.get("around_task");if(u){let e=await n.queries.message.listMessagesAroundTask(i,o,u);return(0,h.writeJSON)(e.map(g.messageToResponse))}let m=c.searchParams.get("limit"),f=c.searchParams.get("before")||void 0,w=c.searchParams.get("before_id")||void 0,v=m?Math.min(Math.max(parseInt(m,10)||20,1),100):void 0,{messages:R,has_more:E}=await n.queries.message.listMessages(i,o,{limit:v,before:f,beforeId:w});return(0,h.writeJSON)({messages:R.map(g.messageToResponse),has_more:E})}),y=(0,u.withAuth)(async(e,t)=>{let a,u,R,E=await (0,p.withWorkspaceMember)(e,t);if(E instanceof Response)return E;let{env:y}=(0,r.getCloudflareContext)(),I=(0,d.getDb)(y.DB),C=y.EMAIL_BUCKET,T=t.params?.id;if(!T)return(0,h.writeError)("conversation id is required",400);let A=(e.headers.get("content-type")??"").includes("multipart/form-data"),k=[],x=new Map;if(A){let t;try{t=await e.formData()}catch{return(0,h.writeError)("invalid form data",400)}a=t.get("content")||"";let r=t.get("metadata");if(r)try{u=JSON.parse(r)}catch{}for(let[e,a]of t.entries())"file"===e&&a instanceof File&&k.push(a);for(let[e,a]of t.entries()){let t=e.match(/^thumbnail:(\d+)$/);t&&a instanceof File&&x.set(Number(t[1]),a)}}else{let[t,r]=await (0,h.parseBody)(e,i.CreateMessageRequestSchema);if(r)return r;a=t.content,u=t.metadata}if(A&&!a)return(0,h.writeError)("content is required",400);if(k.length>10)return(0,h.writeError)("too many files (max 10)",400);for(let e of k)if(e.size>0xa00000)return(0,h.writeError)(`file "${e.name}" exceeds 10 MB limit`,413);let S=await n.queries.conversation.getConversation(I,T,E.workspaceId);if(!S||S.userId!==t.userId)return(0,h.writeError)("not found",404);let b=[];for(let e=0;e<k.length;e++){let t,a=k[e],r=a.name.replace(/[/\\]/g,"_").replace(/\.\./g,"_").slice(0,255)||"file",s=a.type||"application/octet-stream",i="art_"+(0,c.nanoid)(),o=`artifacts/${E.workspaceId}/${S.agentId}/${T}/${i}/${r}`;await C.put(o,await a.arrayBuffer(),{httpMetadata:{contentType:s}});let l=x.get(e);l&&l.size<=51200&&(t=`artifacts/${E.workspaceId}/${S.agentId}/${T}/${i}/thumbnail.jpg`,await C.put(t,await l.arrayBuffer(),{httpMetadata:{contentType:"image/jpeg"}})),await n.queries.artifact.createArtifact(I,{id:i,conversationId:T,agentId:S.agentId,workspaceId:E.workspaceId,filename:r,contentType:s,size:a.size,r2Key:o,thumbnailR2Key:t,source:"attachment"}),b.push(i)}let q=await n.queries.message.createMessage(I,{conversationId:T,role:"user",content:a,attachmentIds:b.length>0?JSON.stringify(b):null,metadata:u?JSON.stringify(u):null});(0,w.broadcastToUser)(t.userId,{type:"conversation.message",conversationId:T,message:(0,g.messageToResponse)(q)}).catch(()=>{}),S.parentMessageId&&n.queries.message.getActiveMessageCount(I,T).then(e=>{(0,w.broadcastToUser)(t.userId,{type:"thread.reply",conversationId:T,threadConversationId:T,parentMessageId:S.parentMessageId,replyCount:e}).catch(()=>{})}).catch(()=>{}),n.queries.conversation.updateConversationTitle(I,T,(0,l.truncateTitle)(a)).catch(()=>{});let M=a;if(a.includes("@"))try{let e=await n.queries.agent.listAgents(I,E.workspaceId,t.userId),{enrichedPrompt:r,mentions:s}=(0,o.parsePromptMentions)(a,e);if(M=r,s.length>0){let e=new Set;R={mentioned_agents:s.filter(t=>!e.has(t.name)&&(e.add(t.name),!0)).map(e=>({name:e.name,email:e.email,...e.description?{description:e.description}:{}}))}}}catch{}let _=u?.quote,P={message_id:q.id,...b.length>0?{attachment_ids:b}:{},...R,..._?{quoted_message:{message_id:_.messageId,excerpt:_.excerpt}}:{}},N="tr_"+(0,c.nanoid)(),O=new m.TaskService(I);try{let e=await O.enqueueTask(S.agentId,T,E.workspaceId,M,s.TASK_TYPES.USER_DM_MESSAGE,{contextKey:T,context:Object.keys(P).length>0?P:void 0,traceId:N,parentTaskId:null});n.queries.message.updateMessageTaskId(I,q.id,e.id).catch(()=>{});let a=new Date().toISOString().slice(0,10);return(0,v.invalidate)(v.cacheKeys.overviewTaskStats(E.workspaceId,a)).catch(()=>{}),(0,w.broadcastToUser)(t.userId,{type:"task.updated",taskId:e.id,agentId:e.agentId,status:"queued"}).catch(()=>{}),(0,h.writeJSON)({message:(0,g.messageToResponse)(q),task:(0,g.taskToResponse)(e)},201)}catch(e){return f.log.error("enqueueTask error",{err:e}),(0,h.writeJSON)({message:(0,g.messageToResponse)(q),task:null,error:e instanceof Error?e.message:"Unknown error"},500)}});e.s(["GET",0,E,"POST",0,y]),a()}catch(e){a(e)}},!1),6736,e=>e.a(async(t,a)=>{try{var r=e.i(618117),n=e.i(99200),s=e.i(864055),i=e.i(289578),o=e.i(641783),l=e.i(467635),d=e.i(541774),c=e.i(393982),u=e.i(325959),p=e.i(474834),h=e.i(800989),g=e.i(489409),m=e.i(203050),f=e.i(851100),w=e.i(55434),v=e.i(193695);e.i(163438);var R=e.i(118649),E=e.i(632577),y=t([E]);[E]=y.then?(await y)():y;let C=new r.AppRouteRouteModule({definition:{kind:n.RouteKind.APP_ROUTE,page:"/api/conversations/[id]/messages/route",pathname:"/api/conversations/[id]/messages",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/web/src/app/api/conversations/[id]/messages/route.ts",nextConfigOutput:"standalone",userland:E,...{}}),{workAsyncStorage:T,workUnitAsyncStorage:A,serverHooks:k}=C;async function I(e,t,a){a.requestMeta&&(0,i.setRequestMeta)(e,a.requestMeta),C.isDev&&(0,i.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let r="/api/conversations/[id]/messages/route";r=r.replace(/\/index$/,"")||"/";let s=await C.prepare(e,t,{srcPage:r,multiZoneDraftMode:!1});if(!s)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:E,deploymentId:y,params:I,nextConfig:T,parsedUrl:A,isDraftMode:k,prerenderManifest:x,routerServerContext:S,isOnDemandRevalidate:b,revalidateOnlyGenerated:q,resolvedPathname:M,clientReferenceManifest:_,serverActionsManifest:P}=s,N=(0,d.normalizeAppPath)(r),O=!!(x.dynamicRoutes[N]||x.routes[M]),U=async()=>((null==S?void 0:S.render404)?await S.render404(e,t,A,!1):t.end("This page could not be found"),null);if(O&&!k){let e=!!x.routes[M],t=x.dynamicRoutes[N];if(t&&!1===t.fallback&&!e){if(T.adapterPath)return await U();throw new v.NoFallbackError}}let $=null;!O||C.isDev||k||($=M,$="/index"===$?"/":$);let H=!0===C.isDev||!O,D=O&&!H;P&&_&&(0,l.setManifestsSingleton)({page:r,clientReferenceManifest:_,serverActionsManifest:P});let B=e.method||"GET",K=(0,o.getTracer)(),j=K.getActiveScopeSpan(),F=!!(null==S?void 0:S.isWrappedByNextServer),L=!!(0,i.getRequestMeta)(e,"minimalMode"),J=(0,i.getRequestMeta)(e,"incrementalCache")||await C.getIncrementalCache(e,T,x,L);null==J||J.resetRequestCache(),globalThis.__incrementalCache=J;let z={params:I,previewProps:x.preview,renderOpts:{experimental:{authInterrupts:!!T.experimental.authInterrupts},cacheComponents:!!T.cacheComponents,supportsDynamicResponse:H,incrementalCache:J,cacheLifeProfiles:T.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,r,n)=>C.onRequestError(e,t,r,n,S)},sharedContext:{buildId:E,deploymentId:y}},G=new c.NodeNextRequest(e),W=new c.NodeNextResponse(t),V=u.NextRequestAdapter.fromNodeNextRequest(G,(0,u.signalFromNodeResponse)(t));try{let s,i=async e=>C.handle(V,z).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=K.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==p.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=a.get("next.route");if(n){let t=`${B} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t),s&&s!==e&&(s.setAttribute("http.route",n),s.updateName(t))}else e.updateName(`${B} ${r}`)}),l=async s=>{var o,l;let d=async({previousCacheEntry:n})=>{try{if(!L&&b&&q&&!n)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let r=await i(s);e.fetchMetrics=z.renderOpts.fetchMetrics;let o=z.renderOpts.pendingWaitUntil;o&&a.waitUntil&&(a.waitUntil(o),o=void 0);let l=z.renderOpts.collectedTags;if(!O)return await (0,g.sendResponse)(G,W,r,z.renderOpts.pendingWaitUntil),null;{let e=await r.blob(),t=(0,m.toNodeOutgoingHttpHeaders)(r.headers);l&&(t[w.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==z.renderOpts.collectedRevalidate&&!(z.renderOpts.collectedRevalidate>=w.INFINITE_CACHE)&&z.renderOpts.collectedRevalidate,n=void 0===z.renderOpts.collectedExpire||z.renderOpts.collectedExpire>=w.INFINITE_CACHE?void 0:z.renderOpts.collectedExpire;return{value:{kind:R.CachedRouteKind.APP_ROUTE,status:r.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:n}}}}catch(t){throw(null==n?void 0:n.isStale)&&await C.onRequestError(e,t,{routerKind:"App Router",routePath:r,routeType:"route",revalidateReason:(0,h.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:b})},!1,S),t}},c=await C.handleResponse({req:e,nextConfig:T,cacheKey:$,routeKind:n.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:x,isRoutePPREnabled:!1,isOnDemandRevalidate:b,revalidateOnlyGenerated:q,responseGenerator:d,waitUntil:a.waitUntil,isMinimalMode:L});if(!O)return null;if((null==c||null==(o=c.value)?void 0:o.kind)!==R.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});L||t.setHeader("x-nextjs-cache",b?"REVALIDATED":c.isMiss?"MISS":c.isStale?"STALE":"HIT"),k&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let u=(0,m.fromNodeOutgoingHttpHeaders)(c.value.headers);return L&&O||u.delete(w.NEXT_CACHE_TAGS_HEADER),!c.cacheControl||t.getHeader("Cache-Control")||u.get("Cache-Control")||u.set("Cache-Control",(0,f.getCacheControlHeader)(c.cacheControl)),await (0,g.sendResponse)(G,W,new Response(c.value.body,{headers:u,status:c.value.status||200})),null};F&&j?await l(j):(s=K.getActiveScopeSpan(),await K.withPropagatedContext(e.headers,()=>K.trace(p.BaseServerSpan.handleRequest,{spanName:`${B} ${r}`,kind:o.SpanKind.SERVER,attributes:{"http.method":B,"http.target":e.url}},l),void 0,!F))}catch(t){if(t instanceof v.NoFallbackError||await C.onRequestError(e,t,{routerKind:"App Router",routePath:N,routeType:"route",revalidateReason:(0,h.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:b})},!1,S),O)throw t;return await (0,g.sendResponse)(G,W,new Response(null,{status:500})),null}}e.s(["handler",0,I,"patchFetch",0,function(){return(0,s.patchFetch)({workAsyncStorage:T,workUnitAsyncStorage:A})},"routeModule",0,C,"serverHooks",0,k,"workAsyncStorage",0,T,"workUnitAsyncStorage",0,A]),a()}catch(e){a(e)}},!1)];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=_0n8pg0d._.js.map
|
package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0p79t7w._.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[726089,e=>{"use strict";var t=e.i(931720);e.i(700598);var a=e.i(704024);let s=(0,e.i(726527).createLogger)({service:"broadcast"});async function n(e,n,r){let i;try{let{env:a}=(0,t.getCloudflareContext)();i=a.DEV_WS_DO_URL;let o=await a.WS_DO_WORKER.fetch(`http://internal${e}`,{method:"POST",body:n});if(o.ok)try{return{sent:(await o.json()).sent??0}}catch{return{sent:0}}s.warn("broadcast service-binding non-ok",{...r,status:o.status})}catch{}let o=i||a.DEV_WS_DO_URL,l=await fetch(`${o}${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:n});if(!l.ok)throw Error(`broadcast failed: ${l.status}`);try{return{sent:(await l.json()).sent??0}}catch{return{sent:0}}}e.s(["broadcastToDaemon",0,function(e,a){let s=n(`/broadcast/daemon/${e}`,JSON.stringify(a),{daemonId:e,type:a.type});try{let{ctx:e}=(0,t.getCloudflareContext)();e.waitUntil(s.catch(()=>{}))}catch{}return s},"broadcastToUser",0,function(e,a){return function(e,a,s){let r=n(e,a,s);try{let{ctx:e}=(0,t.getCloudflareContext)();e.waitUntil(r.catch(()=>{}))}catch{}return r.then(()=>{})}(`/broadcast/user/${e}`,JSON.stringify(a),{userId:e,type:a.type})}])},511456,e=>{"use strict";e.i(700598);let t=(0,e.i(726527).createLogger)({service:"web",level:process.env.ALOOK_LOG_LEVEL||"info",pretty:!1});e.s(["log",0,t])},555230,e=>{"use strict";e.i(700598);var t=e.i(291109),a=e.i(704024),s=e.i(424166),n=e.i(740580),r=e.i(774078);e.s(["TaskPayloadBuilder",0,class{db;constructor(e){this.db=e}async buildFullPayloads(e,i){let o=e.filter(e=>e.type!==a.TASK_TYPES.KILL_TASK),l=[...new Set(o.map(e=>e.agentId))],[d,c,u]=l.length>0?await Promise.all([(0,r.cached)(r.cacheKeys.allAgents(i),300,()=>t.queries.agent.getAllAgentsForWorkspace(this.db,i)),(0,r.cached)(r.cacheKeys.allEmailAccounts(i),600,()=>t.queries.emailAccount.getAllEmailAccountsForWorkspace(this.db,i)),(0,r.cached)(r.cacheKeys.allColleagues(i),600,()=>t.queries.agentLink.getAllColleaguesForWorkspace(this.db,i)).catch(()=>[])]).then(([e,t,a])=>{let s=new Set(l);return[e.filter(e=>s.has(e.id)),t.filter(e=>s.has(e.agentId)),a.filter(e=>s.has(e.agentId))]}):[[],[],[]],h=new Map(d.map(e=>[e.id,e])),p=new Map;for(let e of c){let t=p.get(e.agentId)??[];t.push(e.emailAddress),p.set(e.agentId,t)}let w=new Map;for(let e of u){let t=w.get(e.agentId)??[];t.push(e),w.set(e.agentId,t)}let g=[...new Set(o.map(e=>e.conversationId).filter(Boolean))],m=new Map((g.length>0?await t.queries.conversation.getConversationsByIds(this.db,g,i):[]).map(e=>[e.id,e])),k=new Map,I=new Map,f=[];for(let o of e){if(o.type===a.TASK_TYPES.KILL_TASK){f.push({...(0,n.taskToResponse)(o),agent:null,sender:null});continue}let e=h.get(o.agentId)??null,l=[];if(e){e.emailHandle&&l.push((0,s.toAlookAddress)(e.emailHandle));let t=p.get(e.id)??[];l.push(...t)}let d=e?.instructions??"";if(e?.ownerId){if(!k.has(e.ownerId)){let a=await (0,r.cached)(r.cacheKeys.member(i,e.ownerId),600,()=>t.queries.member.getMemberByUserAndWorkspace(this.db,e.ownerId,i));k.set(e.ownerId,a?{globalInstruction:a.globalInstruction}:null)}let a=k.get(e.ownerId);a?.globalInstruction&&(d=[a.globalInstruction,d].filter(Boolean).join("\n\n"))}let c=null;if(e?.ownerId){if(!I.has(e.ownerId)){let a=await (0,r.cached)(r.cacheKeys.user(e.ownerId),1800,()=>t.queries.user.getUser(this.db,e.ownerId));I.set(e.ownerId,a?{name:a.name,email:a.email}:null)}c=I.get(e.ownerId)?.name??null}let u=m.get(o.conversationId)??null,g=u?.channel??"default",T=null;if(o.type===a.TASK_TYPES.USER_DM_MESSAGE&&u?.userId){if(!I.has(u.userId)){let e=await (0,r.cached)(r.cacheKeys.user(u.userId),1800,()=>t.queries.user.getUser(this.db,u.userId));I.set(u.userId,e?{name:e.name,email:e.email}:null)}let a=I.get(u.userId);a&&(T={name:a.name,email:a.email,is_owner:u.userId===e?.ownerId})}let v=(w.get(o.agentId)??[]).map(e=>({name:e.name,email:e.emailHandle?(0,s.toAlookAddress)(e.emailHandle):"",description:e.description,instruction:e.instruction}));f.push({...(0,n.taskToResponse)(o),channel:g,sender:T,agent:e?{instructions:d,name:e.name,runtime_config:e.runtimeConfig||{},email_handle:e.emailHandle||null,email_addresses:l,user_email:null,user_name:c,colleagues:v}:null})}return f}}])},205054,e=>{"use strict";e.i(700598);var t=e.i(291109),a=e.i(704024),s=e.i(511456),n=e.i(726089),r=e.i(740580),i=e.i(774078),o=e.i(555230);let l=t.queries.task,d=t.queries.agent,c=t.queries.message,u=t.queries.conversation,h=t.queries.issue,p=t.queries.inbox;e.s(["TaskService",0,class{db;constructor(e){this.db=e}async enqueueTask(e,t,s,n,r=a.TASK_TYPES.USER_DM_MESSAGE,o){let c=await d.getAgent(this.db,e,s);if(!c)throw Error("agent not found");if(!c.runtimeId)throw Error("agent has no runtime");if(o?.traceId&&o.parentTaskId&&await l.countTasksByTrace(this.db,o.traceId)>=a.MAX_TASKS_PER_TRACE)throw Error(`Trace limit reached (${a.MAX_TASKS_PER_TRACE} tasks). This may indicate an infinite loop between agents.`);let u=await l.createTask(this.db,{agentId:e,runtimeId:c.runtimeId,workspaceId:s,conversationId:t,prompt:n,type:r,contextKey:o?.contextKey??null,priority:0,context:o?.context,traceId:o?.traceId??null,parentTaskId:o?.parentTaskId??null});return(0,i.invalidate)(i.cacheKeys.activeTaskCounts(s)).catch(()=>{}),await this.pushTaskToDaemon(u,s).catch(()=>{}),u}async claimTask(e,t){let a=await d.getAgent(this.db,e,t);return this.claimTaskWithAgent(e,t,a)}async claimTaskWithAgent(e,t,a){if(!a)return null;if(await l.countRunningTasks(this.db,e,t)>=a.maxConcurrentTasks){let s=await l.findSteerableReplacement(this.db,e,t);if(!s||await l.countRunningTasks(this.db,e,t,s.predecessorId)>=a.maxConcurrentTasks)return null}let s=await l.claimTask(this.db,e,t);return s?(await d.updateAgentStatus(this.db,e,t,"working"),s):null}async claimTasksForRuntimes(e,t,a){let s=await l.claimKillTasks(this.db,e,a,t),n=t-s.length,r=n>0?await l.listPendingTasksByRuntimes(this.db,e,a):[],i=new Set(e),o=new Set,c=[...s],u=[];for(let e of r){if(u.length>=n)break;let t=`${e.agentId}:${e.workspaceId}`;o.has(t)||(o.add(t),u.push(e))}if(0===u.length)return c;let h=[...new Set(u.map(e=>e.agentId))],p=new Map((await d.getAgentsByIds(this.db,h,a)).map(e=>[e.id,e]));for(let e of(await Promise.all(u.map(e=>this.claimTaskWithAgent(e.agentId,e.workspaceId,p.get(e.agentId)??null)))))e&&i.has(e.runtimeId)&&c.push(e);return c}async startTask(e,t){let a=await l.startTask(this.db,e,t);if(!a)throw Error("task not in dispatched status");return a}async completeTask(e,t,a,n){let r;try{r=JSON.parse(a)}catch{r={raw:a}}let i=await l.completeTask(this.db,e,t,{result:r,sessionId:n||null});if(!i){let t=await l.getTask(this.db,e),a=t?.status??"unknown";throw s.log.warn(`completeTask failed: task is in '${a}' status`,{taskId:e}),Error(`cannot complete task in '${a}' status`)}return await this.reconcileAgentStatus(i.agentId,i.workspaceId),this.maybeUpsertUnread(i,t,null).catch(()=>{}),i}async failTask(e,i,o){let d=await l.failTask(this.db,e,i,o);if(!d){let t=await l.getTask(this.db,e),a=t?.status??"unknown";throw s.log.warn(`failTask failed: task is in '${a}' status`,{taskId:e}),Error(`cannot fail task in '${a}' status`)}if(d.type===a.TASK_TYPES.KILL_TASK)return d;let h=null;if(o){let a=null;try{if(d.runtimeId){let e=await t.queries.runtime.getAgentRuntime(this.db,d.runtimeId);a=e?.provider??null}}catch{}let s=await c.createMessage(this.db,{conversationId:d.conversationId,role:"assistant",content:o,taskId:e,metadata:JSON.stringify({error_source:"runtime",provider:a})});h=s?.id??null;try{let e=await u.getConversation(this.db,d.conversationId,i);e&&(0,n.broadcastToUser)(e.userId,{type:"conversation.message",conversationId:d.conversationId,message:(0,r.messageToResponse)(s)}).catch(()=>{})}catch{}}return await this.reconcileAgentStatus(d.agentId,d.workspaceId),await this.syncIssueStatusFromTask(d,"failed"),this.maybeUpsertUnread(d,i,h).catch(()=>{}),d}async syncIssueStatusFromTask(e,t){if(e.type!==a.TASK_TYPES.ISSUE_EVENT)return;let s=await h.getIssueByConversation(this.db,e.conversationId,e.workspaceId);if(!s||s.status===t||!await h.updateIssue(this.db,s.id,e.workspaceId,{status:t}))return;let i=await c.createMessage(this.db,{conversationId:e.conversationId,role:"event",content:`Issue status changed: ${s.status} -> ${t}`,taskId:e.id,metadata:JSON.stringify({issueId:s.id})});try{let t=await u.getConversation(this.db,e.conversationId,e.workspaceId);t&&(0,n.broadcastToUser)(t.userId,{type:"conversation.message",conversationId:e.conversationId,message:(0,r.messageToResponse)(i)}).catch(()=>{})}catch{}}async maybeUpsertUnread(e,t,a){if(!p.isUnreadEligible(e)||!e.completedAt)return;let s=await u.getConversation(this.db,e.conversationId,t);if(!s)return;let n=a??await p.findLatestAssistantMessageId(this.db,e.conversationId);await p.upsertUnreadEntry(this.db,{conversationId:e.conversationId,userId:s.userId,workspaceId:t,agentId:s.agentId,taskId:e.id,taskType:e.type,taskStatus:e.status,taskPrompt:e.prompt,completedAt:e.completedAt,latestMessageId:n})}async supersedeTask(e,t){let a=await l.supersedeTask(this.db,e,t);if(!a){let t=await l.getTask(this.db,e),a=t?.status??"unknown";throw s.log.warn(`supersedeTask failed: task is in '${a}' status`,{taskId:e}),Error(`cannot supersede task in '${a}' status`)}return await this.reconcileAgentStatus(a.agentId,a.workspaceId),a}async retryTask(e,t){let a=await l.getTask(this.db,e);if(!a||a.workspaceId!==t)throw Error("task not found");if("failed"!==a.status)throw Error("only failed tasks can be retried");let s=await l.markFailedAsSuperseded(this.db,e,t);if(!s)throw Error("failed to mark task as superseded");return{oldTask:s,newTask:await this.enqueueTask(a.agentId,a.conversationId,t,a.prompt,a.type,{contextKey:a.contextKey??null,context:a.context,traceId:a.traceId??null,parentTaskId:a.parentTaskId??null})}}async cancelActiveTask(e,r,i){let o=await l.getActiveTaskByConversation(this.db,e,r);if(!o)return null;let d=await l.cancelTask(this.db,o.id,r);if(!d)return null;if("dispatched"===o.status||"running"===o.status){let i=await l.createTask(this.db,{agentId:o.agentId,runtimeId:o.runtimeId,workspaceId:r,conversationId:e,prompt:"",type:a.TASK_TYPES.KILL_TASK,context:{target_task_id:o.id}});await l.dispatchTaskById(this.db,i.id,r);let d=await t.queries.runtime.getAgentRuntime(this.db,o.runtimeId);d&&(0,n.broadcastToDaemon)(d.daemonId,{type:"daemon.kill",workspaceId:r,agentId:o.agentId,taskId:i.id,targetTaskId:o.id}).catch(e=>s.log.warn("daemon.kill broadcast failed, relying on poll fallback",e))}return await c.createMessage(this.db,{conversationId:e,role:"assistant",content:i?.reason??"Task cancelled by you",taskId:o.id,metadata:JSON.stringify({kind:"lifecycle"})}),await this.reconcileAgentStatus(o.agentId,r),d}async reconcileAgentStatus(e,t){let a=await l.countRunningTasks(this.db,e,t);await d.updateAgentStatus(this.db,e,t,a>0?"working":"idle"),(0,i.invalidate)(i.cacheKeys.activeTaskCounts(t)).catch(()=>{})}async cancelTrace(e,t,a){for(let n of[...new Set((await l.getTraceTree(this.db,e,t)).filter(e=>["queued","dispatched","running"].includes(e.status)).map(e=>e.conversationId))])try{await this.cancelActiveTask(n,t,{reason:a?.reason})}catch(t){s.log.warn("cancelTrace: failed to cancel task",{traceId:e,convId:n,err:t})}}async pushTaskToDaemon(e,a){let s=await t.queries.runtime.getAgentRuntime(this.db,e.runtimeId);if(!s)return;let r=await l.dispatchTaskById(this.db,e.id,a);if(!r)return;let i=new o.TaskPayloadBuilder(this.db),d=await i.buildFullPayloads([r],a);if(0===d.length)return void await l.revertDispatchedToQueued(this.db,e.id,a);try{let{sent:t}=await (0,n.broadcastToDaemon)(s.daemonId,{type:"daemon.tasks",tasks:d});0===t&&await l.revertDispatchedToQueued(this.db,e.id,a)}catch{await l.revertDispatchedToQueued(this.db,e.id,a)}}}])},258704,e=>e.a(async(t,a)=>{try{var s=e.i(931720);e.i(700598);var n=e.i(291109),r=e.i(675139),i=e.i(152327),o=e.i(47962),l=e.i(776227),d=e.i(740580),c=e.i(205054),u=e.i(726089),h=e.i(774078),p=t([i]);[i]=p.then?(await p)():p;let w=(0,i.withAuth)(async(e,t)=>{let a=await (0,o.withWorkspaceMember)(e,t);if(a instanceof Response)return a;let{env:i}=(0,s.getCloudflareContext)(),c=(0,r.getDb)(i.DB),u=t.params?.id;if(!u)return(0,l.writeError)("conversation id is required",400);let h=await n.queries.conversation.getConversation(c,u,a.workspaceId);if(!h||h.userId!==t.userId)return(0,l.writeError)("not found",404);let p=await n.queries.task.getActiveTaskByConversation(c,u,a.workspaceId);return p?(0,l.writeJSON)((0,d.taskToResponse)(p)):new Response(null,{status:204})}),g=(0,i.withAuth)(async(e,t)=>{let a=await (0,o.withWorkspaceMember)(e,t);if(a instanceof Response)return a;let{env:i}=(0,s.getCloudflareContext)(),p=(0,r.getDb)(i.DB),w=t.params?.id;if(!w)return(0,l.writeError)("conversation id is required",400);let g=await n.queries.conversation.getConversation(p,w,a.workspaceId);if(!g||g.userId!==t.userId)return(0,l.writeError)("not found",404);let m=new c.TaskService(p),k=await m.cancelActiveTask(w,a.workspaceId);if(!k)return(0,l.writeError)("no active task to cancel",404);let I=new Date().toISOString().slice(0,10);return(0,h.invalidate)(h.cacheKeys.overviewTaskStats(a.workspaceId,I)).catch(()=>{}),(0,u.broadcastToUser)(t.userId,{type:"task.updated",taskId:k.id,agentId:k.agentId,status:"cancelled"}).catch(()=>{}),(0,l.writeJSON)((0,d.taskToResponse)(k))});e.s(["DELETE",0,g,"GET",0,w]),a()}catch(e){a(e)}},!1),263990,e=>e.a(async(t,a)=>{try{var s=e.i(618117),n=e.i(99200),r=e.i(864055),i=e.i(289578),o=e.i(641783),l=e.i(467635),d=e.i(541774),c=e.i(393982),u=e.i(325959),h=e.i(474834),p=e.i(800989),w=e.i(489409),g=e.i(203050),m=e.i(851100),k=e.i(55434),I=e.i(193695);e.i(163438);var f=e.i(118649),T=e.i(258704),v=t([T]);[T]=v.then?(await v)():v;let b=new s.AppRouteRouteModule({definition:{kind:n.RouteKind.APP_ROUTE,page:"/api/conversations/[id]/active-task/route",pathname:"/api/conversations/[id]/active-task",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/web/src/app/api/conversations/[id]/active-task/route.ts",nextConfigOutput:"standalone",userland:T,...{}}),{workAsyncStorage:_,workUnitAsyncStorage:A,serverHooks:E}=b;async function y(e,t,a){a.requestMeta&&(0,i.setRequestMeta)(e,a.requestMeta),b.isDev&&(0,i.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let s="/api/conversations/[id]/active-task/route";s=s.replace(/\/index$/,"")||"/";let r=await b.prepare(e,t,{srcPage:s,multiZoneDraftMode:!1});if(!r)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:T,deploymentId:v,params:y,nextConfig:_,parsedUrl:A,isDraftMode:E,prerenderManifest:S,routerServerContext:R,isOnDemandRevalidate:C,revalidateOnlyGenerated:x,resolvedPathname:P,clientReferenceManifest:q,serverActionsManifest:K}=r,O=(0,d.normalizeAppPath)(s),U=!!(S.dynamicRoutes[O]||S.routes[P]),M=async()=>((null==R?void 0:R.render404)?await R.render404(e,t,A,!1):t.end("This page could not be found"),null);if(U&&!E){let e=!!S.routes[P],t=S.dynamicRoutes[O];if(t&&!1===t.fallback&&!e){if(_.adapterPath)return await M();throw new I.NoFallbackError}}let D=null;!U||b.isDev||E||(D=P,D="/index"===D?"/":D);let N=!0===b.isDev||!U,$=U&&!N;K&&q&&(0,l.setManifestsSingleton)({page:s,clientReferenceManifest:q,serverActionsManifest:K});let L=e.method||"GET",B=(0,o.getTracer)(),H=B.getActiveScopeSpan(),j=!!(null==R?void 0:R.isWrappedByNextServer),F=!!(0,i.getRequestMeta)(e,"minimalMode"),W=(0,i.getRequestMeta)(e,"incrementalCache")||await b.getIncrementalCache(e,_,S,F);null==W||W.resetRequestCache(),globalThis.__incrementalCache=W;let J={params:y,previewProps:S.preview,renderOpts:{experimental:{authInterrupts:!!_.experimental.authInterrupts},cacheComponents:!!_.cacheComponents,supportsDynamicResponse:N,incrementalCache:W,cacheLifeProfiles:_.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,s,n)=>b.onRequestError(e,t,s,n,R)},sharedContext:{buildId:T,deploymentId:v}},G=new c.NodeNextRequest(e),V=new c.NodeNextResponse(t),Y=u.NextRequestAdapter.fromNodeNextRequest(G,(0,u.signalFromNodeResponse)(t));try{let r,i=async e=>b.handle(Y,J).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=B.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==h.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=a.get("next.route");if(n){let t=`${L} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t),r&&r!==e&&(r.setAttribute("http.route",n),r.updateName(t))}else e.updateName(`${L} ${s}`)}),l=async r=>{var o,l;let d=async({previousCacheEntry:n})=>{try{if(!F&&C&&x&&!n)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await i(r);e.fetchMetrics=J.renderOpts.fetchMetrics;let o=J.renderOpts.pendingWaitUntil;o&&a.waitUntil&&(a.waitUntil(o),o=void 0);let l=J.renderOpts.collectedTags;if(!U)return await (0,w.sendResponse)(G,V,s,J.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,g.toNodeOutgoingHttpHeaders)(s.headers);l&&(t[k.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==J.renderOpts.collectedRevalidate&&!(J.renderOpts.collectedRevalidate>=k.INFINITE_CACHE)&&J.renderOpts.collectedRevalidate,n=void 0===J.renderOpts.collectedExpire||J.renderOpts.collectedExpire>=k.INFINITE_CACHE?void 0:J.renderOpts.collectedExpire;return{value:{kind:f.CachedRouteKind.APP_ROUTE,status:s.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:n}}}}catch(t){throw(null==n?void 0:n.isStale)&&await b.onRequestError(e,t,{routerKind:"App Router",routePath:s,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:$,isOnDemandRevalidate:C})},!1,R),t}},c=await b.handleResponse({req:e,nextConfig:_,cacheKey:D,routeKind:n.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:S,isRoutePPREnabled:!1,isOnDemandRevalidate:C,revalidateOnlyGenerated:x,responseGenerator:d,waitUntil:a.waitUntil,isMinimalMode:F});if(!U)return null;if((null==c||null==(o=c.value)?void 0:o.kind)!==f.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==c||null==(l=c.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});F||t.setHeader("x-nextjs-cache",C?"REVALIDATED":c.isMiss?"MISS":c.isStale?"STALE":"HIT"),E&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let u=(0,g.fromNodeOutgoingHttpHeaders)(c.value.headers);return F&&U||u.delete(k.NEXT_CACHE_TAGS_HEADER),!c.cacheControl||t.getHeader("Cache-Control")||u.get("Cache-Control")||u.set("Cache-Control",(0,m.getCacheControlHeader)(c.cacheControl)),await (0,w.sendResponse)(G,V,new Response(c.value.body,{headers:u,status:c.value.status||200})),null};j&&H?await l(H):(r=B.getActiveScopeSpan(),await B.withPropagatedContext(e.headers,()=>B.trace(h.BaseServerSpan.handleRequest,{spanName:`${L} ${s}`,kind:o.SpanKind.SERVER,attributes:{"http.method":L,"http.target":e.url}},l),void 0,!j))}catch(t){if(t instanceof I.NoFallbackError||await b.onRequestError(e,t,{routerKind:"App Router",routePath:O,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:$,isOnDemandRevalidate:C})},!1,R),U)throw t;return await (0,w.sendResponse)(G,V,new Response(null,{status:500})),null}}e.s(["handler",0,y,"patchFetch",0,function(){return(0,r.patchFetch)({workAsyncStorage:_,workUnitAsyncStorage:A})},"routeModule",0,b,"serverHooks",0,E,"workAsyncStorage",0,_,"workUnitAsyncStorage",0,A]),a()}catch(e){a(e)}},!1),649967,e=>{e.v(t=>Promise.all(["server/chunks/1cud_@better-auth_memory-adapter_dist_index_mjs_1npfl-v._.js"].map(t=>e.l(t))).then(()=>t(433404)))},706346,e=>{e.v(t=>Promise.all(["server/chunks/12-__better-auth_dist_adapters_kysely-adapter_index_mjs_08059b7._.js"].map(t=>e.l(t))).then(()=>t(943972)))},305762,e=>{e.v(t=>Promise.all(["server/chunks/101m_@better-auth_kysely-adapter_dist_0wrnuhp._.js"].map(t=>e.l(t))).then(()=>t(784506)))},401635,e=>{e.v(t=>Promise.all(["server/chunks/101m_@better-auth_kysely-adapter_dist_1cghpz3._.js"].map(t=>e.l(t))).then(()=>t(333340)))},451312,e=>{e.v(t=>Promise.all(["server/chunks/101m_@better-auth_kysely-adapter_dist_0i747v8._.js"].map(t=>e.l(t))).then(()=>t(178617)))}];
|
|
1
|
+
module.exports=[726089,e=>{"use strict";var t=e.i(931720);e.i(700598);var a=e.i(704024);let s=(0,e.i(726527).createLogger)({service:"broadcast"});async function n(e,n,r){let i;try{let{env:a}=(0,t.getCloudflareContext)();i=a.DEV_WS_DO_URL;let o=await a.WS_DO_WORKER.fetch(`http://internal${e}`,{method:"POST",body:n});if(o.ok)try{return{sent:(await o.json()).sent??0}}catch{return{sent:0}}s.warn("broadcast service-binding non-ok",{...r,status:o.status})}catch{}let o=i||a.DEV_WS_DO_URL,l=await fetch(`${o}${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:n});if(!l.ok)throw Error(`broadcast failed: ${l.status}`);try{return{sent:(await l.json()).sent??0}}catch{return{sent:0}}}e.s(["broadcastToDaemon",0,function(e,a){let s=n(`/broadcast/daemon/${e}`,JSON.stringify(a),{daemonId:e,type:a.type});try{let{ctx:e}=(0,t.getCloudflareContext)();e.waitUntil(s.catch(()=>{}))}catch{}return s},"broadcastToUser",0,function(e,a){return function(e,a,s){let r=n(e,a,s);try{let{ctx:e}=(0,t.getCloudflareContext)();e.waitUntil(r.catch(()=>{}))}catch{}return r.then(()=>{})}(`/broadcast/user/${e}`,JSON.stringify(a),{userId:e,type:a.type})}])},511456,e=>{"use strict";e.i(700598);let t=(0,e.i(726527).createLogger)({service:"web",level:process.env.ALOOK_LOG_LEVEL||"info",pretty:!1});e.s(["log",0,t])},555230,e=>{"use strict";e.i(700598);var t=e.i(291109),a=e.i(704024),s=e.i(424166),n=e.i(740580),r=e.i(774078);e.s(["TaskPayloadBuilder",0,class{db;constructor(e){this.db=e}async buildFullPayloads(e,i){let o=e.filter(e=>e.type!==a.TASK_TYPES.KILL_TASK),l=[...new Set(o.map(e=>e.agentId))],[d,c,u]=l.length>0?await Promise.all([t.queries.agent.getAllAgentsForWorkspace(this.db,i),(0,r.cached)(r.cacheKeys.allEmailAccounts(i),600,()=>t.queries.emailAccount.getAllEmailAccountsForWorkspace(this.db,i)),t.queries.agentLink.getAllColleaguesForWorkspace(this.db,i).catch(()=>[])]).then(([e,t,a])=>{let s=new Set(l);return[e.filter(e=>s.has(e.id)),t.filter(e=>s.has(e.agentId)),a.filter(e=>s.has(e.agentId))]}):[[],[],[]],h=new Map(d.map(e=>[e.id,e])),p=new Map;for(let e of c){let t=p.get(e.agentId)??[];t.push(e.emailAddress),p.set(e.agentId,t)}let w=new Map;for(let e of u){let t=w.get(e.agentId)??[];t.push(e),w.set(e.agentId,t)}let g=[...new Set(o.map(e=>e.conversationId).filter(Boolean))],m=new Map((g.length>0?await t.queries.conversation.getConversationsByIds(this.db,g,i):[]).map(e=>[e.id,e])),k=new Map,I=new Map,f=[];for(let o of e){if(o.type===a.TASK_TYPES.KILL_TASK){f.push({...(0,n.taskToResponse)(o),agent:null,sender:null});continue}let e=h.get(o.agentId)??null,l=[];if(e){e.emailHandle&&l.push((0,s.toAlookAddress)(e.emailHandle));let t=p.get(e.id)??[];l.push(...t)}let d=e?.instructions??"";if(e?.ownerId){if(!k.has(e.ownerId)){let a=await (0,r.cached)(r.cacheKeys.member(i,e.ownerId),600,()=>t.queries.member.getMemberByUserAndWorkspace(this.db,e.ownerId,i));k.set(e.ownerId,a?{globalInstruction:a.globalInstruction}:null)}let a=k.get(e.ownerId);a?.globalInstruction&&(d=[a.globalInstruction,d].filter(Boolean).join("\n\n"))}let c=null;if(e?.ownerId){if(!I.has(e.ownerId)){let a=await (0,r.cached)(r.cacheKeys.user(e.ownerId),1800,()=>t.queries.user.getUser(this.db,e.ownerId));I.set(e.ownerId,a?{name:a.name,email:a.email}:null)}c=I.get(e.ownerId)?.name??null}let u=m.get(o.conversationId)??null,g=u?.channel??"default",T=null;if(o.type===a.TASK_TYPES.USER_DM_MESSAGE&&u?.userId){if(!I.has(u.userId)){let e=await (0,r.cached)(r.cacheKeys.user(u.userId),1800,()=>t.queries.user.getUser(this.db,u.userId));I.set(u.userId,e?{name:e.name,email:e.email}:null)}let a=I.get(u.userId);a&&(T={name:a.name,email:a.email,is_owner:u.userId===e?.ownerId})}let v=(w.get(o.agentId)??[]).map(e=>({name:e.name,email:e.emailHandle?(0,s.toAlookAddress)(e.emailHandle):"",description:e.description,instruction:e.instruction}));f.push({...(0,n.taskToResponse)(o),channel:g,sender:T,agent:e?{instructions:d,name:e.name,runtime_config:e.runtimeConfig||{},email_handle:e.emailHandle||null,email_addresses:l,user_email:null,user_name:c,colleagues:v}:null})}return f}}])},205054,e=>{"use strict";e.i(700598);var t=e.i(291109),a=e.i(704024),s=e.i(511456),n=e.i(726089),r=e.i(740580),i=e.i(774078),o=e.i(555230);let l=t.queries.task,d=t.queries.agent,c=t.queries.message,u=t.queries.conversation,h=t.queries.issue,p=t.queries.inbox;e.s(["TaskService",0,class{db;constructor(e){this.db=e}async enqueueTask(e,t,s,n,r=a.TASK_TYPES.USER_DM_MESSAGE,o){let c=await d.getAgent(this.db,e,s);if(!c)throw Error("agent not found");if(!c.runtimeId)throw Error("agent has no runtime");if(o?.traceId&&o.parentTaskId&&await l.countTasksByTrace(this.db,o.traceId)>=a.MAX_TASKS_PER_TRACE)throw Error(`Trace limit reached (${a.MAX_TASKS_PER_TRACE} tasks). This may indicate an infinite loop between agents.`);let u=await l.createTask(this.db,{agentId:e,runtimeId:c.runtimeId,workspaceId:s,conversationId:t,prompt:n,type:r,contextKey:o?.contextKey??null,priority:0,context:o?.context,traceId:o?.traceId??null,parentTaskId:o?.parentTaskId??null});return(0,i.invalidate)(i.cacheKeys.activeTaskCounts(s)).catch(()=>{}),await this.pushTaskToDaemon(u,s).catch(()=>{}),u}async claimTask(e,t){let a=await d.getAgent(this.db,e,t);return this.claimTaskWithAgent(e,t,a)}async claimTaskWithAgent(e,t,a){if(!a)return null;if(await l.countRunningTasks(this.db,e,t)>=a.maxConcurrentTasks){let s=await l.findSteerableReplacement(this.db,e,t);if(!s||await l.countRunningTasks(this.db,e,t,s.predecessorId)>=a.maxConcurrentTasks)return null}let s=await l.claimTask(this.db,e,t);return s?(await d.updateAgentStatus(this.db,e,t,"working"),s):null}async claimTasksForRuntimes(e,t,a){let s=await l.claimKillTasks(this.db,e,a,t),n=t-s.length,r=n>0?await l.listPendingTasksByRuntimes(this.db,e,a):[],i=new Set(e),o=new Set,c=[...s],u=[];for(let e of r){if(u.length>=n)break;let t=`${e.agentId}:${e.workspaceId}`;o.has(t)||(o.add(t),u.push(e))}if(0===u.length)return c;let h=[...new Set(u.map(e=>e.agentId))],p=new Map((await d.getAgentsByIds(this.db,h,a)).map(e=>[e.id,e]));for(let e of(await Promise.all(u.map(e=>this.claimTaskWithAgent(e.agentId,e.workspaceId,p.get(e.agentId)??null)))))e&&i.has(e.runtimeId)&&c.push(e);return c}async startTask(e,t){let a=await l.startTask(this.db,e,t);if(!a)throw Error("task not in dispatched status");return a}async completeTask(e,t,a,n){let r;try{r=JSON.parse(a)}catch{r={raw:a}}let i=await l.completeTask(this.db,e,t,{result:r,sessionId:n||null});if(!i){let t=await l.getTask(this.db,e),a=t?.status??"unknown";throw s.log.warn(`completeTask failed: task is in '${a}' status`,{taskId:e}),Error(`cannot complete task in '${a}' status`)}return await this.reconcileAgentStatus(i.agentId,i.workspaceId),this.maybeUpsertUnread(i,t,null).catch(()=>{}),i}async failTask(e,i,o){let d=await l.failTask(this.db,e,i,o);if(!d){let t=await l.getTask(this.db,e),a=t?.status??"unknown";throw s.log.warn(`failTask failed: task is in '${a}' status`,{taskId:e}),Error(`cannot fail task in '${a}' status`)}if(d.type===a.TASK_TYPES.KILL_TASK)return d;let h=null;if(o){let a=null;try{if(d.runtimeId){let e=await t.queries.runtime.getAgentRuntime(this.db,d.runtimeId);a=e?.provider??null}}catch{}let s=await c.createMessage(this.db,{conversationId:d.conversationId,role:"assistant",content:o,taskId:e,metadata:JSON.stringify({error_source:"runtime",provider:a})});h=s?.id??null;try{let e=await u.getConversation(this.db,d.conversationId,i);e&&(0,n.broadcastToUser)(e.userId,{type:"conversation.message",conversationId:d.conversationId,message:(0,r.messageToResponse)(s)}).catch(()=>{})}catch{}}return await this.reconcileAgentStatus(d.agentId,d.workspaceId),await this.syncIssueStatusFromTask(d,"failed"),this.maybeUpsertUnread(d,i,h).catch(()=>{}),d}async syncIssueStatusFromTask(e,t){if(e.type!==a.TASK_TYPES.ISSUE_EVENT)return;let s=await h.getIssueByConversation(this.db,e.conversationId,e.workspaceId);if(!s||s.status===t||!await h.updateIssue(this.db,s.id,e.workspaceId,{status:t}))return;let i=await c.createMessage(this.db,{conversationId:e.conversationId,role:"event",content:`Issue status changed: ${s.status} -> ${t}`,taskId:e.id,metadata:JSON.stringify({issueId:s.id})});try{let t=await u.getConversation(this.db,e.conversationId,e.workspaceId);t&&(0,n.broadcastToUser)(t.userId,{type:"conversation.message",conversationId:e.conversationId,message:(0,r.messageToResponse)(i)}).catch(()=>{})}catch{}}async maybeUpsertUnread(e,t,a){if(!p.isUnreadEligible(e)||!e.completedAt)return;let s=await u.getConversation(this.db,e.conversationId,t);if(!s)return;let n=a??await p.findLatestAssistantMessageId(this.db,e.conversationId);await p.upsertUnreadEntry(this.db,{conversationId:e.conversationId,userId:s.userId,workspaceId:t,agentId:s.agentId,taskId:e.id,taskType:e.type,taskStatus:e.status,taskPrompt:e.prompt,completedAt:e.completedAt,latestMessageId:n})}async supersedeTask(e,t){let a=await l.supersedeTask(this.db,e,t);if(!a){let t=await l.getTask(this.db,e),a=t?.status??"unknown";throw s.log.warn(`supersedeTask failed: task is in '${a}' status`,{taskId:e}),Error(`cannot supersede task in '${a}' status`)}return await this.reconcileAgentStatus(a.agentId,a.workspaceId),a}async retryTask(e,t){let a=await l.getTask(this.db,e);if(!a||a.workspaceId!==t)throw Error("task not found");if("failed"!==a.status)throw Error("only failed tasks can be retried");let s=await l.markFailedAsSuperseded(this.db,e,t);if(!s)throw Error("failed to mark task as superseded");return{oldTask:s,newTask:await this.enqueueTask(a.agentId,a.conversationId,t,a.prompt,a.type,{contextKey:a.contextKey??null,context:a.context,traceId:a.traceId??null,parentTaskId:a.parentTaskId??null})}}async cancelActiveTask(e,r,i){let o=await l.getActiveTaskByConversation(this.db,e,r);if(!o)return null;let d=await l.cancelTask(this.db,o.id,r);if(!d)return null;if("dispatched"===o.status||"running"===o.status){let i=await l.createTask(this.db,{agentId:o.agentId,runtimeId:o.runtimeId,workspaceId:r,conversationId:e,prompt:"",type:a.TASK_TYPES.KILL_TASK,context:{target_task_id:o.id}});await l.dispatchTaskById(this.db,i.id,r);let d=await t.queries.runtime.getAgentRuntime(this.db,o.runtimeId);d&&(0,n.broadcastToDaemon)(d.daemonId,{type:"daemon.kill",workspaceId:r,agentId:o.agentId,taskId:i.id,targetTaskId:o.id}).catch(e=>s.log.warn("daemon.kill broadcast failed, relying on poll fallback",e))}return await c.createMessage(this.db,{conversationId:e,role:"assistant",content:i?.reason??"Task cancelled by you",taskId:o.id,metadata:JSON.stringify({kind:"lifecycle"})}),await this.reconcileAgentStatus(o.agentId,r),d}async reconcileAgentStatus(e,t){let a=await l.countRunningTasks(this.db,e,t);await d.updateAgentStatus(this.db,e,t,a>0?"working":"idle"),(0,i.invalidate)(i.cacheKeys.activeTaskCounts(t)).catch(()=>{})}async cancelTrace(e,t,a){for(let n of[...new Set((await l.getTraceTree(this.db,e,t)).filter(e=>["queued","dispatched","running"].includes(e.status)).map(e=>e.conversationId))])try{await this.cancelActiveTask(n,t,{reason:a?.reason})}catch(t){s.log.warn("cancelTrace: failed to cancel task",{traceId:e,convId:n,err:t})}}async pushTaskToDaemon(e,a){let s=await t.queries.runtime.getAgentRuntime(this.db,e.runtimeId);if(!s)return;let r=await l.dispatchTaskById(this.db,e.id,a);if(!r)return;let i=new o.TaskPayloadBuilder(this.db),d=await i.buildFullPayloads([r],a);if(0===d.length)return void await l.revertDispatchedToQueued(this.db,e.id,a);try{let{sent:t}=await (0,n.broadcastToDaemon)(s.daemonId,{type:"daemon.tasks",tasks:d});0===t&&await l.revertDispatchedToQueued(this.db,e.id,a)}catch{await l.revertDispatchedToQueued(this.db,e.id,a)}}}])},258704,e=>e.a(async(t,a)=>{try{var s=e.i(931720);e.i(700598);var n=e.i(291109),r=e.i(675139),i=e.i(152327),o=e.i(47962),l=e.i(776227),d=e.i(740580),c=e.i(205054),u=e.i(726089),h=e.i(774078),p=t([i]);[i]=p.then?(await p)():p;let w=(0,i.withAuth)(async(e,t)=>{let a=await (0,o.withWorkspaceMember)(e,t);if(a instanceof Response)return a;let{env:i}=(0,s.getCloudflareContext)(),c=(0,r.getDb)(i.DB),u=t.params?.id;if(!u)return(0,l.writeError)("conversation id is required",400);let h=await n.queries.conversation.getConversation(c,u,a.workspaceId);if(!h||h.userId!==t.userId)return(0,l.writeError)("not found",404);let p=await n.queries.task.getActiveTaskByConversation(c,u,a.workspaceId);return p?(0,l.writeJSON)((0,d.taskToResponse)(p)):new Response(null,{status:204})}),g=(0,i.withAuth)(async(e,t)=>{let a=await (0,o.withWorkspaceMember)(e,t);if(a instanceof Response)return a;let{env:i}=(0,s.getCloudflareContext)(),p=(0,r.getDb)(i.DB),w=t.params?.id;if(!w)return(0,l.writeError)("conversation id is required",400);let g=await n.queries.conversation.getConversation(p,w,a.workspaceId);if(!g||g.userId!==t.userId)return(0,l.writeError)("not found",404);let m=new c.TaskService(p),k=await m.cancelActiveTask(w,a.workspaceId);if(!k)return(0,l.writeError)("no active task to cancel",404);let I=new Date().toISOString().slice(0,10);return(0,h.invalidate)(h.cacheKeys.overviewTaskStats(a.workspaceId,I)).catch(()=>{}),(0,u.broadcastToUser)(t.userId,{type:"task.updated",taskId:k.id,agentId:k.agentId,status:"cancelled"}).catch(()=>{}),(0,l.writeJSON)((0,d.taskToResponse)(k))});e.s(["DELETE",0,g,"GET",0,w]),a()}catch(e){a(e)}},!1),263990,e=>e.a(async(t,a)=>{try{var s=e.i(618117),n=e.i(99200),r=e.i(864055),i=e.i(289578),o=e.i(641783),l=e.i(467635),d=e.i(541774),c=e.i(393982),u=e.i(325959),h=e.i(474834),p=e.i(800989),w=e.i(489409),g=e.i(203050),m=e.i(851100),k=e.i(55434),I=e.i(193695);e.i(163438);var f=e.i(118649),T=e.i(258704),v=t([T]);[T]=v.then?(await v)():v;let b=new s.AppRouteRouteModule({definition:{kind:n.RouteKind.APP_ROUTE,page:"/api/conversations/[id]/active-task/route",pathname:"/api/conversations/[id]/active-task",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/web/src/app/api/conversations/[id]/active-task/route.ts",nextConfigOutput:"standalone",userland:T,...{}}),{workAsyncStorage:_,workUnitAsyncStorage:A,serverHooks:E}=b;async function y(e,t,a){a.requestMeta&&(0,i.setRequestMeta)(e,a.requestMeta),b.isDev&&(0,i.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let s="/api/conversations/[id]/active-task/route";s=s.replace(/\/index$/,"")||"/";let r=await b.prepare(e,t,{srcPage:s,multiZoneDraftMode:!1});if(!r)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:T,deploymentId:v,params:y,nextConfig:_,parsedUrl:A,isDraftMode:E,prerenderManifest:S,routerServerContext:R,isOnDemandRevalidate:C,revalidateOnlyGenerated:x,resolvedPathname:P,clientReferenceManifest:q,serverActionsManifest:K}=r,O=(0,d.normalizeAppPath)(s),U=!!(S.dynamicRoutes[O]||S.routes[P]),M=async()=>((null==R?void 0:R.render404)?await R.render404(e,t,A,!1):t.end("This page could not be found"),null);if(U&&!E){let e=!!S.routes[P],t=S.dynamicRoutes[O];if(t&&!1===t.fallback&&!e){if(_.adapterPath)return await M();throw new I.NoFallbackError}}let D=null;!U||b.isDev||E||(D=P,D="/index"===D?"/":D);let N=!0===b.isDev||!U,$=U&&!N;K&&q&&(0,l.setManifestsSingleton)({page:s,clientReferenceManifest:q,serverActionsManifest:K});let L=e.method||"GET",B=(0,o.getTracer)(),H=B.getActiveScopeSpan(),j=!!(null==R?void 0:R.isWrappedByNextServer),F=!!(0,i.getRequestMeta)(e,"minimalMode"),W=(0,i.getRequestMeta)(e,"incrementalCache")||await b.getIncrementalCache(e,_,S,F);null==W||W.resetRequestCache(),globalThis.__incrementalCache=W;let J={params:y,previewProps:S.preview,renderOpts:{experimental:{authInterrupts:!!_.experimental.authInterrupts},cacheComponents:!!_.cacheComponents,supportsDynamicResponse:N,incrementalCache:W,cacheLifeProfiles:_.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,s,n)=>b.onRequestError(e,t,s,n,R)},sharedContext:{buildId:T,deploymentId:v}},G=new c.NodeNextRequest(e),V=new c.NodeNextResponse(t),Y=u.NextRequestAdapter.fromNodeNextRequest(G,(0,u.signalFromNodeResponse)(t));try{let r,i=async e=>b.handle(Y,J).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=B.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==h.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=a.get("next.route");if(n){let t=`${L} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t),r&&r!==e&&(r.setAttribute("http.route",n),r.updateName(t))}else e.updateName(`${L} ${s}`)}),l=async r=>{var o,l;let d=async({previousCacheEntry:n})=>{try{if(!F&&C&&x&&!n)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await i(r);e.fetchMetrics=J.renderOpts.fetchMetrics;let o=J.renderOpts.pendingWaitUntil;o&&a.waitUntil&&(a.waitUntil(o),o=void 0);let l=J.renderOpts.collectedTags;if(!U)return await (0,w.sendResponse)(G,V,s,J.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,g.toNodeOutgoingHttpHeaders)(s.headers);l&&(t[k.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==J.renderOpts.collectedRevalidate&&!(J.renderOpts.collectedRevalidate>=k.INFINITE_CACHE)&&J.renderOpts.collectedRevalidate,n=void 0===J.renderOpts.collectedExpire||J.renderOpts.collectedExpire>=k.INFINITE_CACHE?void 0:J.renderOpts.collectedExpire;return{value:{kind:f.CachedRouteKind.APP_ROUTE,status:s.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:n}}}}catch(t){throw(null==n?void 0:n.isStale)&&await b.onRequestError(e,t,{routerKind:"App Router",routePath:s,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:$,isOnDemandRevalidate:C})},!1,R),t}},c=await b.handleResponse({req:e,nextConfig:_,cacheKey:D,routeKind:n.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:S,isRoutePPREnabled:!1,isOnDemandRevalidate:C,revalidateOnlyGenerated:x,responseGenerator:d,waitUntil:a.waitUntil,isMinimalMode:F});if(!U)return null;if((null==c||null==(o=c.value)?void 0:o.kind)!==f.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==c||null==(l=c.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});F||t.setHeader("x-nextjs-cache",C?"REVALIDATED":c.isMiss?"MISS":c.isStale?"STALE":"HIT"),E&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let u=(0,g.fromNodeOutgoingHttpHeaders)(c.value.headers);return F&&U||u.delete(k.NEXT_CACHE_TAGS_HEADER),!c.cacheControl||t.getHeader("Cache-Control")||u.get("Cache-Control")||u.set("Cache-Control",(0,m.getCacheControlHeader)(c.cacheControl)),await (0,w.sendResponse)(G,V,new Response(c.value.body,{headers:u,status:c.value.status||200})),null};j&&H?await l(H):(r=B.getActiveScopeSpan(),await B.withPropagatedContext(e.headers,()=>B.trace(h.BaseServerSpan.handleRequest,{spanName:`${L} ${s}`,kind:o.SpanKind.SERVER,attributes:{"http.method":L,"http.target":e.url}},l),void 0,!j))}catch(t){if(t instanceof I.NoFallbackError||await b.onRequestError(e,t,{routerKind:"App Router",routePath:O,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:$,isOnDemandRevalidate:C})},!1,R),U)throw t;return await (0,w.sendResponse)(G,V,new Response(null,{status:500})),null}}e.s(["handler",0,y,"patchFetch",0,function(){return(0,r.patchFetch)({workAsyncStorage:_,workUnitAsyncStorage:A})},"routeModule",0,b,"serverHooks",0,E,"workAsyncStorage",0,_,"workUnitAsyncStorage",0,A]),a()}catch(e){a(e)}},!1),649967,e=>{e.v(t=>Promise.all(["server/chunks/1cud_@better-auth_memory-adapter_dist_index_mjs_1npfl-v._.js"].map(t=>e.l(t))).then(()=>t(433404)))},706346,e=>{e.v(t=>Promise.all(["server/chunks/12-__better-auth_dist_adapters_kysely-adapter_index_mjs_08059b7._.js"].map(t=>e.l(t))).then(()=>t(943972)))},305762,e=>{e.v(t=>Promise.all(["server/chunks/101m_@better-auth_kysely-adapter_dist_0wrnuhp._.js"].map(t=>e.l(t))).then(()=>t(784506)))},401635,e=>{e.v(t=>Promise.all(["server/chunks/101m_@better-auth_kysely-adapter_dist_1cghpz3._.js"].map(t=>e.l(t))).then(()=>t(333340)))},451312,e=>{e.v(t=>Promise.all(["server/chunks/101m_@better-auth_kysely-adapter_dist_0i747v8._.js"].map(t=>e.l(t))).then(()=>t(178617)))}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=_0p79t7w._.js.map
|
package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0r2vuif._.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[726089,e=>{"use strict";var t=e.i(931720);e.i(700598);var a=e.i(704024);let s=(0,e.i(726527).createLogger)({service:"broadcast"});async function n(e,n,i){let r;try{let{env:a}=(0,t.getCloudflareContext)();r=a.DEV_WS_DO_URL;let o=await a.WS_DO_WORKER.fetch(`http://internal${e}`,{method:"POST",body:n});if(o.ok)try{return{sent:(await o.json()).sent??0}}catch{return{sent:0}}s.warn("broadcast service-binding non-ok",{...i,status:o.status})}catch{}let o=r||a.DEV_WS_DO_URL,l=await fetch(`${o}${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:n});if(!l.ok)throw Error(`broadcast failed: ${l.status}`);try{return{sent:(await l.json()).sent??0}}catch{return{sent:0}}}e.s(["broadcastToDaemon",0,function(e,a){let s=n(`/broadcast/daemon/${e}`,JSON.stringify(a),{daemonId:e,type:a.type});try{let{ctx:e}=(0,t.getCloudflareContext)();e.waitUntil(s.catch(()=>{}))}catch{}return s},"broadcastToUser",0,function(e,a){return function(e,a,s){let i=n(e,a,s);try{let{ctx:e}=(0,t.getCloudflareContext)();e.waitUntil(i.catch(()=>{}))}catch{}return i.then(()=>{})}(`/broadcast/user/${e}`,JSON.stringify(a),{userId:e,type:a.type})}])},511456,e=>{"use strict";e.i(700598);let t=(0,e.i(726527).createLogger)({service:"web",level:process.env.ALOOK_LOG_LEVEL||"info",pretty:!1});e.s(["log",0,t])},555230,e=>{"use strict";e.i(700598);var t=e.i(291109),a=e.i(704024),s=e.i(424166),n=e.i(740580),i=e.i(774078);e.s(["TaskPayloadBuilder",0,class{db;constructor(e){this.db=e}async buildFullPayloads(e,r){let o=e.filter(e=>e.type!==a.TASK_TYPES.KILL_TASK),l=[...new Set(o.map(e=>e.agentId))],[d,c,u]=l.length>0?await Promise.all([(0,i.cached)(i.cacheKeys.allAgents(r),300,()=>t.queries.agent.getAllAgentsForWorkspace(this.db,r)),(0,i.cached)(i.cacheKeys.allEmailAccounts(r),600,()=>t.queries.emailAccount.getAllEmailAccountsForWorkspace(this.db,r)),(0,i.cached)(i.cacheKeys.allColleagues(r),600,()=>t.queries.agentLink.getAllColleaguesForWorkspace(this.db,r)).catch(()=>[])]).then(([e,t,a])=>{let s=new Set(l);return[e.filter(e=>s.has(e.id)),t.filter(e=>s.has(e.agentId)),a.filter(e=>s.has(e.agentId))]}):[[],[],[]],p=new Map(d.map(e=>[e.id,e])),h=new Map;for(let e of c){let t=h.get(e.agentId)??[];t.push(e.emailAddress),h.set(e.agentId,t)}let m=new Map;for(let e of u){let t=m.get(e.agentId)??[];t.push(e),m.set(e.agentId,t)}let w=[...new Set(o.map(e=>e.conversationId).filter(Boolean))],g=new Map((w.length>0?await t.queries.conversation.getConversationsByIds(this.db,w,r):[]).map(e=>[e.id,e])),I=new Map,T=new Map,f=[];for(let o of e){if(o.type===a.TASK_TYPES.KILL_TASK){f.push({...(0,n.taskToResponse)(o),agent:null,sender:null});continue}let e=p.get(o.agentId)??null,l=[];if(e){e.emailHandle&&l.push((0,s.toAlookAddress)(e.emailHandle));let t=h.get(e.id)??[];l.push(...t)}let d=e?.instructions??"";if(e?.ownerId){if(!I.has(e.ownerId)){let a=await (0,i.cached)(i.cacheKeys.member(r,e.ownerId),600,()=>t.queries.member.getMemberByUserAndWorkspace(this.db,e.ownerId,r));I.set(e.ownerId,a?{globalInstruction:a.globalInstruction}:null)}let a=I.get(e.ownerId);a?.globalInstruction&&(d=[a.globalInstruction,d].filter(Boolean).join("\n\n"))}let c=null;if(e?.ownerId){if(!T.has(e.ownerId)){let a=await (0,i.cached)(i.cacheKeys.user(e.ownerId),1800,()=>t.queries.user.getUser(this.db,e.ownerId));T.set(e.ownerId,a?{name:a.name,email:a.email}:null)}c=T.get(e.ownerId)?.name??null}let u=g.get(o.conversationId)??null,w=u?.channel??"default",k=null;if(o.type===a.TASK_TYPES.USER_DM_MESSAGE&&u?.userId){if(!T.has(u.userId)){let e=await (0,i.cached)(i.cacheKeys.user(u.userId),1800,()=>t.queries.user.getUser(this.db,u.userId));T.set(u.userId,e?{name:e.name,email:e.email}:null)}let a=T.get(u.userId);a&&(k={name:a.name,email:a.email,is_owner:u.userId===e?.ownerId})}let y=(m.get(o.agentId)??[]).map(e=>({name:e.name,email:e.emailHandle?(0,s.toAlookAddress)(e.emailHandle):"",description:e.description,instruction:e.instruction}));f.push({...(0,n.taskToResponse)(o),channel:w,sender:k,agent:e?{instructions:d,name:e.name,runtime_config:e.runtimeConfig||{},email_handle:e.emailHandle||null,email_addresses:l,user_email:null,user_name:c,colleagues:y}:null})}return f}}])},205054,e=>{"use strict";e.i(700598);var t=e.i(291109),a=e.i(704024),s=e.i(511456),n=e.i(726089),i=e.i(740580),r=e.i(774078),o=e.i(555230);let l=t.queries.task,d=t.queries.agent,c=t.queries.message,u=t.queries.conversation,p=t.queries.issue,h=t.queries.inbox;e.s(["TaskService",0,class{db;constructor(e){this.db=e}async enqueueTask(e,t,s,n,i=a.TASK_TYPES.USER_DM_MESSAGE,o){let c=await d.getAgent(this.db,e,s);if(!c)throw Error("agent not found");if(!c.runtimeId)throw Error("agent has no runtime");if(o?.traceId&&o.parentTaskId&&await l.countTasksByTrace(this.db,o.traceId)>=a.MAX_TASKS_PER_TRACE)throw Error(`Trace limit reached (${a.MAX_TASKS_PER_TRACE} tasks). This may indicate an infinite loop between agents.`);let u=await l.createTask(this.db,{agentId:e,runtimeId:c.runtimeId,workspaceId:s,conversationId:t,prompt:n,type:i,contextKey:o?.contextKey??null,priority:0,context:o?.context,traceId:o?.traceId??null,parentTaskId:o?.parentTaskId??null});return(0,r.invalidate)(r.cacheKeys.activeTaskCounts(s)).catch(()=>{}),await this.pushTaskToDaemon(u,s).catch(()=>{}),u}async claimTask(e,t){let a=await d.getAgent(this.db,e,t);return this.claimTaskWithAgent(e,t,a)}async claimTaskWithAgent(e,t,a){if(!a)return null;if(await l.countRunningTasks(this.db,e,t)>=a.maxConcurrentTasks){let s=await l.findSteerableReplacement(this.db,e,t);if(!s||await l.countRunningTasks(this.db,e,t,s.predecessorId)>=a.maxConcurrentTasks)return null}let s=await l.claimTask(this.db,e,t);return s?(await d.updateAgentStatus(this.db,e,t,"working"),s):null}async claimTasksForRuntimes(e,t,a){let s=await l.claimKillTasks(this.db,e,a,t),n=t-s.length,i=n>0?await l.listPendingTasksByRuntimes(this.db,e,a):[],r=new Set(e),o=new Set,c=[...s],u=[];for(let e of i){if(u.length>=n)break;let t=`${e.agentId}:${e.workspaceId}`;o.has(t)||(o.add(t),u.push(e))}if(0===u.length)return c;let p=[...new Set(u.map(e=>e.agentId))],h=new Map((await d.getAgentsByIds(this.db,p,a)).map(e=>[e.id,e]));for(let e of(await Promise.all(u.map(e=>this.claimTaskWithAgent(e.agentId,e.workspaceId,h.get(e.agentId)??null)))))e&&r.has(e.runtimeId)&&c.push(e);return c}async startTask(e,t){let a=await l.startTask(this.db,e,t);if(!a)throw Error("task not in dispatched status");return a}async completeTask(e,t,a,n){let i;try{i=JSON.parse(a)}catch{i={raw:a}}let r=await l.completeTask(this.db,e,t,{result:i,sessionId:n||null});if(!r){let t=await l.getTask(this.db,e),a=t?.status??"unknown";throw s.log.warn(`completeTask failed: task is in '${a}' status`,{taskId:e}),Error(`cannot complete task in '${a}' status`)}return await this.reconcileAgentStatus(r.agentId,r.workspaceId),this.maybeUpsertUnread(r,t,null).catch(()=>{}),r}async failTask(e,r,o){let d=await l.failTask(this.db,e,r,o);if(!d){let t=await l.getTask(this.db,e),a=t?.status??"unknown";throw s.log.warn(`failTask failed: task is in '${a}' status`,{taskId:e}),Error(`cannot fail task in '${a}' status`)}if(d.type===a.TASK_TYPES.KILL_TASK)return d;let p=null;if(o){let a=null;try{if(d.runtimeId){let e=await t.queries.runtime.getAgentRuntime(this.db,d.runtimeId);a=e?.provider??null}}catch{}let s=await c.createMessage(this.db,{conversationId:d.conversationId,role:"assistant",content:o,taskId:e,metadata:JSON.stringify({error_source:"runtime",provider:a})});p=s?.id??null;try{let e=await u.getConversation(this.db,d.conversationId,r);e&&(0,n.broadcastToUser)(e.userId,{type:"conversation.message",conversationId:d.conversationId,message:(0,i.messageToResponse)(s)}).catch(()=>{})}catch{}}return await this.reconcileAgentStatus(d.agentId,d.workspaceId),await this.syncIssueStatusFromTask(d,"failed"),this.maybeUpsertUnread(d,r,p).catch(()=>{}),d}async syncIssueStatusFromTask(e,t){if(e.type!==a.TASK_TYPES.ISSUE_EVENT)return;let s=await p.getIssueByConversation(this.db,e.conversationId,e.workspaceId);if(!s||s.status===t||!await p.updateIssue(this.db,s.id,e.workspaceId,{status:t}))return;let r=await c.createMessage(this.db,{conversationId:e.conversationId,role:"event",content:`Issue status changed: ${s.status} -> ${t}`,taskId:e.id,metadata:JSON.stringify({issueId:s.id})});try{let t=await u.getConversation(this.db,e.conversationId,e.workspaceId);t&&(0,n.broadcastToUser)(t.userId,{type:"conversation.message",conversationId:e.conversationId,message:(0,i.messageToResponse)(r)}).catch(()=>{})}catch{}}async maybeUpsertUnread(e,t,a){if(!h.isUnreadEligible(e)||!e.completedAt)return;let s=await u.getConversation(this.db,e.conversationId,t);if(!s)return;let n=a??await h.findLatestAssistantMessageId(this.db,e.conversationId);await h.upsertUnreadEntry(this.db,{conversationId:e.conversationId,userId:s.userId,workspaceId:t,agentId:s.agentId,taskId:e.id,taskType:e.type,taskStatus:e.status,taskPrompt:e.prompt,completedAt:e.completedAt,latestMessageId:n})}async supersedeTask(e,t){let a=await l.supersedeTask(this.db,e,t);if(!a){let t=await l.getTask(this.db,e),a=t?.status??"unknown";throw s.log.warn(`supersedeTask failed: task is in '${a}' status`,{taskId:e}),Error(`cannot supersede task in '${a}' status`)}return await this.reconcileAgentStatus(a.agentId,a.workspaceId),a}async retryTask(e,t){let a=await l.getTask(this.db,e);if(!a||a.workspaceId!==t)throw Error("task not found");if("failed"!==a.status)throw Error("only failed tasks can be retried");let s=await l.markFailedAsSuperseded(this.db,e,t);if(!s)throw Error("failed to mark task as superseded");return{oldTask:s,newTask:await this.enqueueTask(a.agentId,a.conversationId,t,a.prompt,a.type,{contextKey:a.contextKey??null,context:a.context,traceId:a.traceId??null,parentTaskId:a.parentTaskId??null})}}async cancelActiveTask(e,i,r){let o=await l.getActiveTaskByConversation(this.db,e,i);if(!o)return null;let d=await l.cancelTask(this.db,o.id,i);if(!d)return null;if("dispatched"===o.status||"running"===o.status){let r=await l.createTask(this.db,{agentId:o.agentId,runtimeId:o.runtimeId,workspaceId:i,conversationId:e,prompt:"",type:a.TASK_TYPES.KILL_TASK,context:{target_task_id:o.id}});await l.dispatchTaskById(this.db,r.id,i);let d=await t.queries.runtime.getAgentRuntime(this.db,o.runtimeId);d&&(0,n.broadcastToDaemon)(d.daemonId,{type:"daemon.kill",workspaceId:i,agentId:o.agentId,taskId:r.id,targetTaskId:o.id}).catch(e=>s.log.warn("daemon.kill broadcast failed, relying on poll fallback",e))}return await c.createMessage(this.db,{conversationId:e,role:"assistant",content:r?.reason??"Task cancelled by you",taskId:o.id,metadata:JSON.stringify({kind:"lifecycle"})}),await this.reconcileAgentStatus(o.agentId,i),d}async reconcileAgentStatus(e,t){let a=await l.countRunningTasks(this.db,e,t);await d.updateAgentStatus(this.db,e,t,a>0?"working":"idle"),(0,r.invalidate)(r.cacheKeys.activeTaskCounts(t)).catch(()=>{})}async cancelTrace(e,t,a){for(let n of[...new Set((await l.getTraceTree(this.db,e,t)).filter(e=>["queued","dispatched","running"].includes(e.status)).map(e=>e.conversationId))])try{await this.cancelActiveTask(n,t,{reason:a?.reason})}catch(t){s.log.warn("cancelTrace: failed to cancel task",{traceId:e,convId:n,err:t})}}async pushTaskToDaemon(e,a){let s=await t.queries.runtime.getAgentRuntime(this.db,e.runtimeId);if(!s)return;let i=await l.dispatchTaskById(this.db,e.id,a);if(!i)return;let r=new o.TaskPayloadBuilder(this.db),d=await r.buildFullPayloads([i],a);if(0===d.length)return void await l.revertDispatchedToQueued(this.db,e.id,a);try{let{sent:t}=await (0,n.broadcastToDaemon)(s.daemonId,{type:"daemon.tasks",tasks:d});0===t&&await l.revertDispatchedToQueued(this.db,e.id,a)}catch{await l.revertDispatchedToQueued(this.db,e.id,a)}}}])},332432,e=>{"use strict";e.s(["buildEmailMapKey",0,function(e,t){return`email:${e}:${t}`},"extractThreadId",0,function(e,t,a){if(e){let t=e.trim().split(/\s+/)[0];if(t)return t}return t?t.trim():a?a.trim():null}])},598924,e=>{"use strict";e.i(700598);var t=e.i(291109),a=e.i(704024),s=e.i(332432),n=e.i(719436),i=e.i(205054),r=e.i(726089),o=e.i(740580);async function l(e,d,c,u={}){let p,h=c.ownerId,m=(0,s.extractThreadId)(d.references,d.inReplyTo,d.messageId),w=m?(0,s.buildEmailMapKey)(c.id,m):null,g=a.TASK_TYPES.EMAIL_NOTIFICATION,I=null;if(w&&(I=await t.queries.conversationMap.findByKey(e,w,d.workspaceId)),I){let s=await t.queries.conversation.getConversation(e,I,d.workspaceId);if(s&&(g=s.type,s.type===a.TASK_TYPES.USER_DM_MESSAGE&&s.userId)){let a=await t.queries.user.getUser(e,s.userId);a&&(p={name:a.name,email:a.email})}}else{let s;if(u.sourceTaskId){let a=await t.queries.task.getTask(e,u.sourceTaskId,d.workspaceId);if(a){let n=await t.queries.conversation.getConversation(e,a.conversationId,d.workspaceId);n&&(s=n.channel)}}I=(await t.queries.conversation.createConversation(e,{workspaceId:c.workspaceId,agentId:c.id,userId:h,title:`Email: ${d.subject}`.slice(0,50),type:a.TASK_TYPES.EMAIL_NOTIFICATION,...s&&"default"!==s?{channel:s}:{}})).id,w&&await t.queries.conversationMap.createMapping(e,{key:w,workspaceId:d.workspaceId,conversationId:I})}let T=`New email from ${d.fromEmail}: ${d.subject}`,f=u.isInternal&&u.senderConversationId&&u.senderAgentId!==d.agentId?{targetConversationId:u.senderConversationId,targetAgentId:u.senderAgentId}:{},k=JSON.stringify({emailId:d.id,subject:d.subject,from:d.fromEmail,to:d.toEmail,direction:"inbound",...f}),y=await t.queries.message.createMessage(e,{conversationId:I,role:"event",content:T,metadata:k});g===a.TASK_TYPES.USER_DM_MESSAGE&&(0,r.broadcastToUser)(h,{type:"conversation.message",conversationId:I,message:{id:y.id,conversation_id:y.conversationId,role:y.role,content:y.content,task_id:y.taskId,attachment_ids:null,metadata:{emailId:d.id,subject:d.subject,from:d.fromEmail,to:d.toEmail,direction:"inbound"},created_at:y.createdAt}}).catch(()=>{});let v=new i.TaskService(e),b={conversationType:g};p&&(b.dmUser=p),u.isInternal&&(b.isInternal=!0),b.emailId=d.id;let E=u.traceId||"tr_"+(0,n.nanoid)(),_=u.traceId&&u.sourceTaskId||null,A=await v.enqueueTask(c.id,I,c.workspaceId,T,a.TASK_TYPES.EMAIL_NOTIFICATION,{contextKey:I,context:b,traceId:E,parentTaskId:_});return t.queries.message.updateMessageTaskId(e,y.id,A.id).catch(()=>{}),g===a.TASK_TYPES.USER_DM_MESSAGE&&(0,r.broadcastToUser)(h,{type:"task.created",conversationId:I,task:(0,o.taskToResponse)(A)}).catch(()=>{}),{conversationId:I,taskId:A.id}}e.s(["dispatchEmailToAgent",0,l])},830573,e=>e.a(async(t,a)=>{try{var s=e.i(931720);e.i(700598);var n=e.i(291109),i=e.i(675139),r=e.i(152327),o=e.i(47962),l=e.i(776227),d=e.i(740580),c=e.i(726089),u=e.i(774078),p=e.i(598924),h=t([r]);[r]=h.then?(await h)():h;let m=(0,r.withAuth)(async(e,t)=>{let a=await (0,o.withWorkspaceMember)(e,t);if(a instanceof Response)return a;let{env:r}=(0,s.getCloudflareContext)(),h=(0,i.getDb)(r.DB),m=t.params?.id;if(!m)return(0,l.writeError)("email id is required",400);let w=await n.queries.email.getEmailById(h,m,a.workspaceId);if(!w)return(0,l.writeError)("email not found",404);if(w.isWhitelisted)return(0,l.writeError)("email is already trusted",400);if("inbound"!==w.direction)return(0,l.writeError)("only inbound emails can be trusted",400);let g=await n.queries.agent.getAgent(h,w.agentId,a.workspaceId,t.userId);if(!g||!g.runtimeId||!g.ownerId)return(0,l.writeError)("agent not found or has no runtime",404);let I=await n.queries.email.updateEmailWhitelisted(h,m,a.workspaceId,!0);if(!I)return(0,l.writeError)("failed to update email",500);let{conversationId:T}=await (0,p.dispatchEmailToAgent)(h,I,g),f=new Date().toISOString().slice(0,10);return await Promise.all([(0,u.invalidate)(u.cacheKeys.overviewEmailStats(a.workspaceId)),(0,u.invalidate)(u.cacheKeys.overviewTaskStats(a.workspaceId,f))]),g.ownerId&&(0,c.broadcastToUser)(g.ownerId,{type:"email.received",agentId:g.id}).catch(()=>{}),(0,l.writeJSON)({ok:!0,email:(0,d.emailToResponse)(I),conversationId:T})});e.s(["POST",0,m]),a()}catch(e){a(e)}},!1),802741,e=>e.a(async(t,a)=>{try{var s=e.i(618117),n=e.i(99200),i=e.i(864055),r=e.i(289578),o=e.i(641783),l=e.i(467635),d=e.i(541774),c=e.i(393982),u=e.i(325959),p=e.i(474834),h=e.i(800989),m=e.i(489409),w=e.i(203050),g=e.i(851100),I=e.i(55434),T=e.i(193695);e.i(163438);var f=e.i(118649),k=e.i(830573),y=t([k]);[k]=y.then?(await y)():y;let b=new s.AppRouteRouteModule({definition:{kind:n.RouteKind.APP_ROUTE,page:"/api/email/[id]/trust/route",pathname:"/api/email/[id]/trust",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/web/src/app/api/email/[id]/trust/route.ts",nextConfigOutput:"standalone",userland:k,...{}}),{workAsyncStorage:E,workUnitAsyncStorage:_,serverHooks:A}=b;async function v(e,t,a){a.requestMeta&&(0,r.setRequestMeta)(e,a.requestMeta),b.isDev&&(0,r.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let s="/api/email/[id]/trust/route";s=s.replace(/\/index$/,"")||"/";let i=await b.prepare(e,t,{srcPage:s,multiZoneDraftMode:!1});if(!i)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:k,deploymentId:y,params:v,nextConfig:E,parsedUrl:_,isDraftMode:A,prerenderManifest:S,routerServerContext:R,isOnDemandRevalidate:C,revalidateOnlyGenerated:P,resolvedPathname:x,clientReferenceManifest:K,serverActionsManifest:q}=i,M=(0,d.normalizeAppPath)(s),O=!!(S.dynamicRoutes[M]||S.routes[x]),U=async()=>((null==R?void 0:R.render404)?await R.render404(e,t,_,!1):t.end("This page could not be found"),null);if(O&&!A){let e=!!S.routes[x],t=S.dynamicRoutes[M];if(t&&!1===t.fallback&&!e){if(E.adapterPath)return await U();throw new T.NoFallbackError}}let N=null;!O||b.isDev||A||(N=x,N="/index"===N?"/":N);let D=!0===b.isDev||!O,$=O&&!D;q&&K&&(0,l.setManifestsSingleton)({page:s,clientReferenceManifest:K,serverActionsManifest:q});let L=e.method||"GET",j=(0,o.getTracer)(),B=j.getActiveScopeSpan(),H=!!(null==R?void 0:R.isWrappedByNextServer),F=!!(0,r.getRequestMeta)(e,"minimalMode"),W=(0,r.getRequestMeta)(e,"incrementalCache")||await b.getIncrementalCache(e,E,S,F);null==W||W.resetRequestCache(),globalThis.__incrementalCache=W;let Y={params:v,previewProps:S.preview,renderOpts:{experimental:{authInterrupts:!!E.experimental.authInterrupts},cacheComponents:!!E.cacheComponents,supportsDynamicResponse:D,incrementalCache:W,cacheLifeProfiles:E.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,s,n)=>b.onRequestError(e,t,s,n,R)},sharedContext:{buildId:k,deploymentId:y}},G=new c.NodeNextRequest(e),J=new c.NodeNextResponse(t),V=u.NextRequestAdapter.fromNodeNextRequest(G,(0,u.signalFromNodeResponse)(t));try{let i,r=async e=>b.handle(V,Y).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=j.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==p.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=a.get("next.route");if(n){let t=`${L} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t),i&&i!==e&&(i.setAttribute("http.route",n),i.updateName(t))}else e.updateName(`${L} ${s}`)}),l=async i=>{var o,l;let d=async({previousCacheEntry:n})=>{try{if(!F&&C&&P&&!n)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await r(i);e.fetchMetrics=Y.renderOpts.fetchMetrics;let o=Y.renderOpts.pendingWaitUntil;o&&a.waitUntil&&(a.waitUntil(o),o=void 0);let l=Y.renderOpts.collectedTags;if(!O)return await (0,m.sendResponse)(G,J,s,Y.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,w.toNodeOutgoingHttpHeaders)(s.headers);l&&(t[I.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==Y.renderOpts.collectedRevalidate&&!(Y.renderOpts.collectedRevalidate>=I.INFINITE_CACHE)&&Y.renderOpts.collectedRevalidate,n=void 0===Y.renderOpts.collectedExpire||Y.renderOpts.collectedExpire>=I.INFINITE_CACHE?void 0:Y.renderOpts.collectedExpire;return{value:{kind:f.CachedRouteKind.APP_ROUTE,status:s.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:n}}}}catch(t){throw(null==n?void 0:n.isStale)&&await b.onRequestError(e,t,{routerKind:"App Router",routePath:s,routeType:"route",revalidateReason:(0,h.getRevalidateReason)({isStaticGeneration:$,isOnDemandRevalidate:C})},!1,R),t}},c=await b.handleResponse({req:e,nextConfig:E,cacheKey:N,routeKind:n.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:S,isRoutePPREnabled:!1,isOnDemandRevalidate:C,revalidateOnlyGenerated:P,responseGenerator:d,waitUntil:a.waitUntil,isMinimalMode:F});if(!O)return null;if((null==c||null==(o=c.value)?void 0:o.kind)!==f.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==c||null==(l=c.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});F||t.setHeader("x-nextjs-cache",C?"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,w.fromNodeOutgoingHttpHeaders)(c.value.headers);return F&&O||u.delete(I.NEXT_CACHE_TAGS_HEADER),!c.cacheControl||t.getHeader("Cache-Control")||u.get("Cache-Control")||u.set("Cache-Control",(0,g.getCacheControlHeader)(c.cacheControl)),await (0,m.sendResponse)(G,J,new Response(c.value.body,{headers:u,status:c.value.status||200})),null};H&&B?await l(B):(i=j.getActiveScopeSpan(),await j.withPropagatedContext(e.headers,()=>j.trace(p.BaseServerSpan.handleRequest,{spanName:`${L} ${s}`,kind:o.SpanKind.SERVER,attributes:{"http.method":L,"http.target":e.url}},l),void 0,!H))}catch(t){if(t instanceof T.NoFallbackError||await b.onRequestError(e,t,{routerKind:"App Router",routePath:M,routeType:"route",revalidateReason:(0,h.getRevalidateReason)({isStaticGeneration:$,isOnDemandRevalidate:C})},!1,R),O)throw t;return await (0,m.sendResponse)(G,J,new Response(null,{status:500})),null}}e.s(["handler",0,v,"patchFetch",0,function(){return(0,i.patchFetch)({workAsyncStorage:E,workUnitAsyncStorage:_})},"routeModule",0,b,"serverHooks",0,A,"workAsyncStorage",0,E,"workUnitAsyncStorage",0,_]),a()}catch(e){a(e)}},!1),649967,e=>{e.v(t=>Promise.all(["server/chunks/1cud_@better-auth_memory-adapter_dist_index_mjs_1npfl-v._.js"].map(t=>e.l(t))).then(()=>t(433404)))},706346,e=>{e.v(t=>Promise.all(["server/chunks/12-__better-auth_dist_adapters_kysely-adapter_index_mjs_08059b7._.js"].map(t=>e.l(t))).then(()=>t(943972)))},305762,e=>{e.v(t=>Promise.all(["server/chunks/101m_@better-auth_kysely-adapter_dist_0wrnuhp._.js"].map(t=>e.l(t))).then(()=>t(784506)))},401635,e=>{e.v(t=>Promise.all(["server/chunks/101m_@better-auth_kysely-adapter_dist_1cghpz3._.js"].map(t=>e.l(t))).then(()=>t(333340)))},451312,e=>{e.v(t=>Promise.all(["server/chunks/101m_@better-auth_kysely-adapter_dist_0i747v8._.js"].map(t=>e.l(t))).then(()=>t(178617)))}];
|
|
1
|
+
module.exports=[726089,e=>{"use strict";var t=e.i(931720);e.i(700598);var a=e.i(704024);let s=(0,e.i(726527).createLogger)({service:"broadcast"});async function n(e,n,i){let r;try{let{env:a}=(0,t.getCloudflareContext)();r=a.DEV_WS_DO_URL;let o=await a.WS_DO_WORKER.fetch(`http://internal${e}`,{method:"POST",body:n});if(o.ok)try{return{sent:(await o.json()).sent??0}}catch{return{sent:0}}s.warn("broadcast service-binding non-ok",{...i,status:o.status})}catch{}let o=r||a.DEV_WS_DO_URL,d=await fetch(`${o}${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:n});if(!d.ok)throw Error(`broadcast failed: ${d.status}`);try{return{sent:(await d.json()).sent??0}}catch{return{sent:0}}}e.s(["broadcastToDaemon",0,function(e,a){let s=n(`/broadcast/daemon/${e}`,JSON.stringify(a),{daemonId:e,type:a.type});try{let{ctx:e}=(0,t.getCloudflareContext)();e.waitUntil(s.catch(()=>{}))}catch{}return s},"broadcastToUser",0,function(e,a){return function(e,a,s){let i=n(e,a,s);try{let{ctx:e}=(0,t.getCloudflareContext)();e.waitUntil(i.catch(()=>{}))}catch{}return i.then(()=>{})}(`/broadcast/user/${e}`,JSON.stringify(a),{userId:e,type:a.type})}])},511456,e=>{"use strict";e.i(700598);let t=(0,e.i(726527).createLogger)({service:"web",level:process.env.ALOOK_LOG_LEVEL||"info",pretty:!1});e.s(["log",0,t])},555230,e=>{"use strict";e.i(700598);var t=e.i(291109),a=e.i(704024),s=e.i(424166),n=e.i(740580),i=e.i(774078);e.s(["TaskPayloadBuilder",0,class{db;constructor(e){this.db=e}async buildFullPayloads(e,r){let o=e.filter(e=>e.type!==a.TASK_TYPES.KILL_TASK),d=[...new Set(o.map(e=>e.agentId))],[l,c,u]=d.length>0?await Promise.all([t.queries.agent.getAllAgentsForWorkspace(this.db,r),(0,i.cached)(i.cacheKeys.allEmailAccounts(r),600,()=>t.queries.emailAccount.getAllEmailAccountsForWorkspace(this.db,r)),t.queries.agentLink.getAllColleaguesForWorkspace(this.db,r).catch(()=>[])]).then(([e,t,a])=>{let s=new Set(d);return[e.filter(e=>s.has(e.id)),t.filter(e=>s.has(e.agentId)),a.filter(e=>s.has(e.agentId))]}):[[],[],[]],p=new Map(l.map(e=>[e.id,e])),h=new Map;for(let e of c){let t=h.get(e.agentId)??[];t.push(e.emailAddress),h.set(e.agentId,t)}let m=new Map;for(let e of u){let t=m.get(e.agentId)??[];t.push(e),m.set(e.agentId,t)}let w=[...new Set(o.map(e=>e.conversationId).filter(Boolean))],g=new Map((w.length>0?await t.queries.conversation.getConversationsByIds(this.db,w,r):[]).map(e=>[e.id,e])),I=new Map,T=new Map,f=[];for(let o of e){if(o.type===a.TASK_TYPES.KILL_TASK){f.push({...(0,n.taskToResponse)(o),agent:null,sender:null});continue}let e=p.get(o.agentId)??null,d=[];if(e){e.emailHandle&&d.push((0,s.toAlookAddress)(e.emailHandle));let t=h.get(e.id)??[];d.push(...t)}let l=e?.instructions??"";if(e?.ownerId){if(!I.has(e.ownerId)){let a=await (0,i.cached)(i.cacheKeys.member(r,e.ownerId),600,()=>t.queries.member.getMemberByUserAndWorkspace(this.db,e.ownerId,r));I.set(e.ownerId,a?{globalInstruction:a.globalInstruction}:null)}let a=I.get(e.ownerId);a?.globalInstruction&&(l=[a.globalInstruction,l].filter(Boolean).join("\n\n"))}let c=null;if(e?.ownerId){if(!T.has(e.ownerId)){let a=await (0,i.cached)(i.cacheKeys.user(e.ownerId),1800,()=>t.queries.user.getUser(this.db,e.ownerId));T.set(e.ownerId,a?{name:a.name,email:a.email}:null)}c=T.get(e.ownerId)?.name??null}let u=g.get(o.conversationId)??null,w=u?.channel??"default",k=null;if(o.type===a.TASK_TYPES.USER_DM_MESSAGE&&u?.userId){if(!T.has(u.userId)){let e=await (0,i.cached)(i.cacheKeys.user(u.userId),1800,()=>t.queries.user.getUser(this.db,u.userId));T.set(u.userId,e?{name:e.name,email:e.email}:null)}let a=T.get(u.userId);a&&(k={name:a.name,email:a.email,is_owner:u.userId===e?.ownerId})}let y=(m.get(o.agentId)??[]).map(e=>({name:e.name,email:e.emailHandle?(0,s.toAlookAddress)(e.emailHandle):"",description:e.description,instruction:e.instruction}));f.push({...(0,n.taskToResponse)(o),channel:w,sender:k,agent:e?{instructions:l,name:e.name,runtime_config:e.runtimeConfig||{},email_handle:e.emailHandle||null,email_addresses:d,user_email:null,user_name:c,colleagues:y}:null})}return f}}])},205054,e=>{"use strict";e.i(700598);var t=e.i(291109),a=e.i(704024),s=e.i(511456),n=e.i(726089),i=e.i(740580),r=e.i(774078),o=e.i(555230);let d=t.queries.task,l=t.queries.agent,c=t.queries.message,u=t.queries.conversation,p=t.queries.issue,h=t.queries.inbox;e.s(["TaskService",0,class{db;constructor(e){this.db=e}async enqueueTask(e,t,s,n,i=a.TASK_TYPES.USER_DM_MESSAGE,o){let c=await l.getAgent(this.db,e,s);if(!c)throw Error("agent not found");if(!c.runtimeId)throw Error("agent has no runtime");if(o?.traceId&&o.parentTaskId&&await d.countTasksByTrace(this.db,o.traceId)>=a.MAX_TASKS_PER_TRACE)throw Error(`Trace limit reached (${a.MAX_TASKS_PER_TRACE} tasks). This may indicate an infinite loop between agents.`);let u=await d.createTask(this.db,{agentId:e,runtimeId:c.runtimeId,workspaceId:s,conversationId:t,prompt:n,type:i,contextKey:o?.contextKey??null,priority:0,context:o?.context,traceId:o?.traceId??null,parentTaskId:o?.parentTaskId??null});return(0,r.invalidate)(r.cacheKeys.activeTaskCounts(s)).catch(()=>{}),await this.pushTaskToDaemon(u,s).catch(()=>{}),u}async claimTask(e,t){let a=await l.getAgent(this.db,e,t);return this.claimTaskWithAgent(e,t,a)}async claimTaskWithAgent(e,t,a){if(!a)return null;if(await d.countRunningTasks(this.db,e,t)>=a.maxConcurrentTasks){let s=await d.findSteerableReplacement(this.db,e,t);if(!s||await d.countRunningTasks(this.db,e,t,s.predecessorId)>=a.maxConcurrentTasks)return null}let s=await d.claimTask(this.db,e,t);return s?(await l.updateAgentStatus(this.db,e,t,"working"),s):null}async claimTasksForRuntimes(e,t,a){let s=await d.claimKillTasks(this.db,e,a,t),n=t-s.length,i=n>0?await d.listPendingTasksByRuntimes(this.db,e,a):[],r=new Set(e),o=new Set,c=[...s],u=[];for(let e of i){if(u.length>=n)break;let t=`${e.agentId}:${e.workspaceId}`;o.has(t)||(o.add(t),u.push(e))}if(0===u.length)return c;let p=[...new Set(u.map(e=>e.agentId))],h=new Map((await l.getAgentsByIds(this.db,p,a)).map(e=>[e.id,e]));for(let e of(await Promise.all(u.map(e=>this.claimTaskWithAgent(e.agentId,e.workspaceId,h.get(e.agentId)??null)))))e&&r.has(e.runtimeId)&&c.push(e);return c}async startTask(e,t){let a=await d.startTask(this.db,e,t);if(!a)throw Error("task not in dispatched status");return a}async completeTask(e,t,a,n){let i;try{i=JSON.parse(a)}catch{i={raw:a}}let r=await d.completeTask(this.db,e,t,{result:i,sessionId:n||null});if(!r){let t=await d.getTask(this.db,e),a=t?.status??"unknown";throw s.log.warn(`completeTask failed: task is in '${a}' status`,{taskId:e}),Error(`cannot complete task in '${a}' status`)}return await this.reconcileAgentStatus(r.agentId,r.workspaceId),this.maybeUpsertUnread(r,t,null).catch(()=>{}),r}async failTask(e,r,o){let l=await d.failTask(this.db,e,r,o);if(!l){let t=await d.getTask(this.db,e),a=t?.status??"unknown";throw s.log.warn(`failTask failed: task is in '${a}' status`,{taskId:e}),Error(`cannot fail task in '${a}' status`)}if(l.type===a.TASK_TYPES.KILL_TASK)return l;let p=null;if(o){let a=null;try{if(l.runtimeId){let e=await t.queries.runtime.getAgentRuntime(this.db,l.runtimeId);a=e?.provider??null}}catch{}let s=await c.createMessage(this.db,{conversationId:l.conversationId,role:"assistant",content:o,taskId:e,metadata:JSON.stringify({error_source:"runtime",provider:a})});p=s?.id??null;try{let e=await u.getConversation(this.db,l.conversationId,r);e&&(0,n.broadcastToUser)(e.userId,{type:"conversation.message",conversationId:l.conversationId,message:(0,i.messageToResponse)(s)}).catch(()=>{})}catch{}}return await this.reconcileAgentStatus(l.agentId,l.workspaceId),await this.syncIssueStatusFromTask(l,"failed"),this.maybeUpsertUnread(l,r,p).catch(()=>{}),l}async syncIssueStatusFromTask(e,t){if(e.type!==a.TASK_TYPES.ISSUE_EVENT)return;let s=await p.getIssueByConversation(this.db,e.conversationId,e.workspaceId);if(!s||s.status===t||!await p.updateIssue(this.db,s.id,e.workspaceId,{status:t}))return;let r=await c.createMessage(this.db,{conversationId:e.conversationId,role:"event",content:`Issue status changed: ${s.status} -> ${t}`,taskId:e.id,metadata:JSON.stringify({issueId:s.id})});try{let t=await u.getConversation(this.db,e.conversationId,e.workspaceId);t&&(0,n.broadcastToUser)(t.userId,{type:"conversation.message",conversationId:e.conversationId,message:(0,i.messageToResponse)(r)}).catch(()=>{})}catch{}}async maybeUpsertUnread(e,t,a){if(!h.isUnreadEligible(e)||!e.completedAt)return;let s=await u.getConversation(this.db,e.conversationId,t);if(!s)return;let n=a??await h.findLatestAssistantMessageId(this.db,e.conversationId);await h.upsertUnreadEntry(this.db,{conversationId:e.conversationId,userId:s.userId,workspaceId:t,agentId:s.agentId,taskId:e.id,taskType:e.type,taskStatus:e.status,taskPrompt:e.prompt,completedAt:e.completedAt,latestMessageId:n})}async supersedeTask(e,t){let a=await d.supersedeTask(this.db,e,t);if(!a){let t=await d.getTask(this.db,e),a=t?.status??"unknown";throw s.log.warn(`supersedeTask failed: task is in '${a}' status`,{taskId:e}),Error(`cannot supersede task in '${a}' status`)}return await this.reconcileAgentStatus(a.agentId,a.workspaceId),a}async retryTask(e,t){let a=await d.getTask(this.db,e);if(!a||a.workspaceId!==t)throw Error("task not found");if("failed"!==a.status)throw Error("only failed tasks can be retried");let s=await d.markFailedAsSuperseded(this.db,e,t);if(!s)throw Error("failed to mark task as superseded");return{oldTask:s,newTask:await this.enqueueTask(a.agentId,a.conversationId,t,a.prompt,a.type,{contextKey:a.contextKey??null,context:a.context,traceId:a.traceId??null,parentTaskId:a.parentTaskId??null})}}async cancelActiveTask(e,i,r){let o=await d.getActiveTaskByConversation(this.db,e,i);if(!o)return null;let l=await d.cancelTask(this.db,o.id,i);if(!l)return null;if("dispatched"===o.status||"running"===o.status){let r=await d.createTask(this.db,{agentId:o.agentId,runtimeId:o.runtimeId,workspaceId:i,conversationId:e,prompt:"",type:a.TASK_TYPES.KILL_TASK,context:{target_task_id:o.id}});await d.dispatchTaskById(this.db,r.id,i);let l=await t.queries.runtime.getAgentRuntime(this.db,o.runtimeId);l&&(0,n.broadcastToDaemon)(l.daemonId,{type:"daemon.kill",workspaceId:i,agentId:o.agentId,taskId:r.id,targetTaskId:o.id}).catch(e=>s.log.warn("daemon.kill broadcast failed, relying on poll fallback",e))}return await c.createMessage(this.db,{conversationId:e,role:"assistant",content:r?.reason??"Task cancelled by you",taskId:o.id,metadata:JSON.stringify({kind:"lifecycle"})}),await this.reconcileAgentStatus(o.agentId,i),l}async reconcileAgentStatus(e,t){let a=await d.countRunningTasks(this.db,e,t);await l.updateAgentStatus(this.db,e,t,a>0?"working":"idle"),(0,r.invalidate)(r.cacheKeys.activeTaskCounts(t)).catch(()=>{})}async cancelTrace(e,t,a){for(let n of[...new Set((await d.getTraceTree(this.db,e,t)).filter(e=>["queued","dispatched","running"].includes(e.status)).map(e=>e.conversationId))])try{await this.cancelActiveTask(n,t,{reason:a?.reason})}catch(t){s.log.warn("cancelTrace: failed to cancel task",{traceId:e,convId:n,err:t})}}async pushTaskToDaemon(e,a){let s=await t.queries.runtime.getAgentRuntime(this.db,e.runtimeId);if(!s)return;let i=await d.dispatchTaskById(this.db,e.id,a);if(!i)return;let r=new o.TaskPayloadBuilder(this.db),l=await r.buildFullPayloads([i],a);if(0===l.length)return void await d.revertDispatchedToQueued(this.db,e.id,a);try{let{sent:t}=await (0,n.broadcastToDaemon)(s.daemonId,{type:"daemon.tasks",tasks:l});0===t&&await d.revertDispatchedToQueued(this.db,e.id,a)}catch{await d.revertDispatchedToQueued(this.db,e.id,a)}}}])},332432,e=>{"use strict";e.s(["buildEmailMapKey",0,function(e,t){return`email:${e}:${t}`},"extractThreadId",0,function(e,t,a){if(e){let t=e.trim().split(/\s+/)[0];if(t)return t}return t?t.trim():a?a.trim():null}])},598924,e=>{"use strict";e.i(700598);var t=e.i(291109),a=e.i(704024),s=e.i(332432),n=e.i(719436),i=e.i(205054),r=e.i(726089),o=e.i(740580);async function d(e,l,c,u={}){let p,h=c.ownerId,m=(0,s.extractThreadId)(l.references,l.inReplyTo,l.messageId),w=m?(0,s.buildEmailMapKey)(c.id,m):null,g=a.TASK_TYPES.EMAIL_NOTIFICATION,I=null;if(w&&(I=await t.queries.conversationMap.findByKey(e,w,l.workspaceId)),I){let s=await t.queries.conversation.getConversation(e,I,l.workspaceId);if(s&&(g=s.type,s.type===a.TASK_TYPES.USER_DM_MESSAGE&&s.userId)){let a=await t.queries.user.getUser(e,s.userId);a&&(p={name:a.name,email:a.email})}}else{let s;if(u.sourceTaskId){let a=await t.queries.task.getTask(e,u.sourceTaskId,l.workspaceId);if(a){let n=await t.queries.conversation.getConversation(e,a.conversationId,l.workspaceId);n&&(s=n.channel)}}I=(await t.queries.conversation.createConversation(e,{workspaceId:c.workspaceId,agentId:c.id,userId:h,title:`Email: ${l.subject}`.slice(0,50),type:a.TASK_TYPES.EMAIL_NOTIFICATION,...s&&"default"!==s?{channel:s}:{}})).id,w&&await t.queries.conversationMap.createMapping(e,{key:w,workspaceId:l.workspaceId,conversationId:I})}let T=`New email from ${l.fromEmail}: ${l.subject}`,f=u.isInternal&&u.senderConversationId&&u.senderAgentId!==l.agentId?{targetConversationId:u.senderConversationId,targetAgentId:u.senderAgentId}:{},k=JSON.stringify({emailId:l.id,subject:l.subject,from:l.fromEmail,to:l.toEmail,direction:"inbound",...f}),y=await t.queries.message.createMessage(e,{conversationId:I,role:"event",content:T,metadata:k});g===a.TASK_TYPES.USER_DM_MESSAGE&&(0,r.broadcastToUser)(h,{type:"conversation.message",conversationId:I,message:{id:y.id,conversation_id:y.conversationId,role:y.role,content:y.content,task_id:y.taskId,attachment_ids:null,metadata:{emailId:l.id,subject:l.subject,from:l.fromEmail,to:l.toEmail,direction:"inbound"},created_at:y.createdAt}}).catch(()=>{});let v=new i.TaskService(e),b={conversationType:g};p&&(b.dmUser=p),u.isInternal&&(b.isInternal=!0),b.emailId=l.id;let E=u.traceId||"tr_"+(0,n.nanoid)(),_=u.traceId&&u.sourceTaskId||null,S=await v.enqueueTask(c.id,I,c.workspaceId,T,a.TASK_TYPES.EMAIL_NOTIFICATION,{contextKey:I,context:b,traceId:E,parentTaskId:_});return t.queries.message.updateMessageTaskId(e,y.id,S.id).catch(()=>{}),g===a.TASK_TYPES.USER_DM_MESSAGE&&(0,r.broadcastToUser)(h,{type:"task.created",conversationId:I,task:(0,o.taskToResponse)(S)}).catch(()=>{}),{conversationId:I,taskId:S.id}}e.s(["dispatchEmailToAgent",0,d])},830573,e=>e.a(async(t,a)=>{try{var s=e.i(931720);e.i(700598);var n=e.i(291109),i=e.i(675139),r=e.i(152327),o=e.i(47962),d=e.i(776227),l=e.i(740580),c=e.i(726089),u=e.i(774078),p=e.i(598924),h=t([r]);[r]=h.then?(await h)():h;let m=(0,r.withAuth)(async(e,t)=>{let a=await (0,o.withWorkspaceMember)(e,t);if(a instanceof Response)return a;let{env:r}=(0,s.getCloudflareContext)(),h=(0,i.getDb)(r.DB),m=t.params?.id;if(!m)return(0,d.writeError)("email id is required",400);let w=await n.queries.email.getEmailById(h,m,a.workspaceId);if(!w)return(0,d.writeError)("email not found",404);if(w.isWhitelisted)return(0,d.writeError)("email is already trusted",400);if("inbound"!==w.direction)return(0,d.writeError)("only inbound emails can be trusted",400);let g=await n.queries.agent.getAgent(h,w.agentId,a.workspaceId,t.userId);if(!g||!g.runtimeId||!g.ownerId)return(0,d.writeError)("agent not found or has no runtime",404);let I=await n.queries.email.updateEmailWhitelisted(h,m,a.workspaceId,!0);if(!I)return(0,d.writeError)("failed to update email",500);let{conversationId:T}=await (0,p.dispatchEmailToAgent)(h,I,g),f=new Date().toISOString().slice(0,10);return await Promise.all([(0,u.invalidate)(u.cacheKeys.overviewEmailStats(a.workspaceId)),(0,u.invalidate)(u.cacheKeys.overviewTaskStats(a.workspaceId,f))]),g.ownerId&&(0,c.broadcastToUser)(g.ownerId,{type:"email.received",agentId:g.id}).catch(()=>{}),(0,d.writeJSON)({ok:!0,email:(0,l.emailToResponse)(I),conversationId:T})});e.s(["POST",0,m]),a()}catch(e){a(e)}},!1),802741,e=>e.a(async(t,a)=>{try{var s=e.i(618117),n=e.i(99200),i=e.i(864055),r=e.i(289578),o=e.i(641783),d=e.i(467635),l=e.i(541774),c=e.i(393982),u=e.i(325959),p=e.i(474834),h=e.i(800989),m=e.i(489409),w=e.i(203050),g=e.i(851100),I=e.i(55434),T=e.i(193695);e.i(163438);var f=e.i(118649),k=e.i(830573),y=t([k]);[k]=y.then?(await y)():y;let b=new s.AppRouteRouteModule({definition:{kind:n.RouteKind.APP_ROUTE,page:"/api/email/[id]/trust/route",pathname:"/api/email/[id]/trust",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/web/src/app/api/email/[id]/trust/route.ts",nextConfigOutput:"standalone",userland:k,...{}}),{workAsyncStorage:E,workUnitAsyncStorage:_,serverHooks:S}=b;async function v(e,t,a){a.requestMeta&&(0,r.setRequestMeta)(e,a.requestMeta),b.isDev&&(0,r.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let s="/api/email/[id]/trust/route";s=s.replace(/\/index$/,"")||"/";let i=await b.prepare(e,t,{srcPage:s,multiZoneDraftMode:!1});if(!i)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:k,deploymentId:y,params:v,nextConfig:E,parsedUrl:_,isDraftMode:S,prerenderManifest:A,routerServerContext:R,isOnDemandRevalidate:C,revalidateOnlyGenerated:P,resolvedPathname:x,clientReferenceManifest:q,serverActionsManifest:K}=i,M=(0,l.normalizeAppPath)(s),O=!!(A.dynamicRoutes[M]||A.routes[x]),U=async()=>((null==R?void 0:R.render404)?await R.render404(e,t,_,!1):t.end("This page could not be found"),null);if(O&&!S){let e=!!A.routes[x],t=A.dynamicRoutes[M];if(t&&!1===t.fallback&&!e){if(E.adapterPath)return await U();throw new T.NoFallbackError}}let N=null;!O||b.isDev||S||(N=x,N="/index"===N?"/":N);let D=!0===b.isDev||!O,$=O&&!D;K&&q&&(0,d.setManifestsSingleton)({page:s,clientReferenceManifest:q,serverActionsManifest:K});let L=e.method||"GET",j=(0,o.getTracer)(),B=j.getActiveScopeSpan(),H=!!(null==R?void 0:R.isWrappedByNextServer),F=!!(0,r.getRequestMeta)(e,"minimalMode"),W=(0,r.getRequestMeta)(e,"incrementalCache")||await b.getIncrementalCache(e,E,A,F);null==W||W.resetRequestCache(),globalThis.__incrementalCache=W;let Y={params:v,previewProps:A.preview,renderOpts:{experimental:{authInterrupts:!!E.experimental.authInterrupts},cacheComponents:!!E.cacheComponents,supportsDynamicResponse:D,incrementalCache:W,cacheLifeProfiles:E.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,s,n)=>b.onRequestError(e,t,s,n,R)},sharedContext:{buildId:k,deploymentId:y}},G=new c.NodeNextRequest(e),J=new c.NodeNextResponse(t),V=u.NextRequestAdapter.fromNodeNextRequest(G,(0,u.signalFromNodeResponse)(t));try{let i,r=async e=>b.handle(V,Y).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=j.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==p.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=a.get("next.route");if(n){let t=`${L} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t),i&&i!==e&&(i.setAttribute("http.route",n),i.updateName(t))}else e.updateName(`${L} ${s}`)}),d=async i=>{var o,d;let l=async({previousCacheEntry:n})=>{try{if(!F&&C&&P&&!n)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await r(i);e.fetchMetrics=Y.renderOpts.fetchMetrics;let o=Y.renderOpts.pendingWaitUntil;o&&a.waitUntil&&(a.waitUntil(o),o=void 0);let d=Y.renderOpts.collectedTags;if(!O)return await (0,m.sendResponse)(G,J,s,Y.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,w.toNodeOutgoingHttpHeaders)(s.headers);d&&(t[I.NEXT_CACHE_TAGS_HEADER]=d),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==Y.renderOpts.collectedRevalidate&&!(Y.renderOpts.collectedRevalidate>=I.INFINITE_CACHE)&&Y.renderOpts.collectedRevalidate,n=void 0===Y.renderOpts.collectedExpire||Y.renderOpts.collectedExpire>=I.INFINITE_CACHE?void 0:Y.renderOpts.collectedExpire;return{value:{kind:f.CachedRouteKind.APP_ROUTE,status:s.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:n}}}}catch(t){throw(null==n?void 0:n.isStale)&&await b.onRequestError(e,t,{routerKind:"App Router",routePath:s,routeType:"route",revalidateReason:(0,h.getRevalidateReason)({isStaticGeneration:$,isOnDemandRevalidate:C})},!1,R),t}},c=await b.handleResponse({req:e,nextConfig:E,cacheKey:N,routeKind:n.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:A,isRoutePPREnabled:!1,isOnDemandRevalidate:C,revalidateOnlyGenerated:P,responseGenerator:l,waitUntil:a.waitUntil,isMinimalMode:F});if(!O)return null;if((null==c||null==(o=c.value)?void 0:o.kind)!==f.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==c||null==(d=c.value)?void 0:d.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});F||t.setHeader("x-nextjs-cache",C?"REVALIDATED":c.isMiss?"MISS":c.isStale?"STALE":"HIT"),S&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let u=(0,w.fromNodeOutgoingHttpHeaders)(c.value.headers);return F&&O||u.delete(I.NEXT_CACHE_TAGS_HEADER),!c.cacheControl||t.getHeader("Cache-Control")||u.get("Cache-Control")||u.set("Cache-Control",(0,g.getCacheControlHeader)(c.cacheControl)),await (0,m.sendResponse)(G,J,new Response(c.value.body,{headers:u,status:c.value.status||200})),null};H&&B?await d(B):(i=j.getActiveScopeSpan(),await j.withPropagatedContext(e.headers,()=>j.trace(p.BaseServerSpan.handleRequest,{spanName:`${L} ${s}`,kind:o.SpanKind.SERVER,attributes:{"http.method":L,"http.target":e.url}},d),void 0,!H))}catch(t){if(t instanceof T.NoFallbackError||await b.onRequestError(e,t,{routerKind:"App Router",routePath:M,routeType:"route",revalidateReason:(0,h.getRevalidateReason)({isStaticGeneration:$,isOnDemandRevalidate:C})},!1,R),O)throw t;return await (0,m.sendResponse)(G,J,new Response(null,{status:500})),null}}e.s(["handler",0,v,"patchFetch",0,function(){return(0,i.patchFetch)({workAsyncStorage:E,workUnitAsyncStorage:_})},"routeModule",0,b,"serverHooks",0,S,"workAsyncStorage",0,E,"workUnitAsyncStorage",0,_]),a()}catch(e){a(e)}},!1),649967,e=>{e.v(t=>Promise.all(["server/chunks/1cud_@better-auth_memory-adapter_dist_index_mjs_1npfl-v._.js"].map(t=>e.l(t))).then(()=>t(433404)))},706346,e=>{e.v(t=>Promise.all(["server/chunks/12-__better-auth_dist_adapters_kysely-adapter_index_mjs_08059b7._.js"].map(t=>e.l(t))).then(()=>t(943972)))},305762,e=>{e.v(t=>Promise.all(["server/chunks/101m_@better-auth_kysely-adapter_dist_0wrnuhp._.js"].map(t=>e.l(t))).then(()=>t(784506)))},401635,e=>{e.v(t=>Promise.all(["server/chunks/101m_@better-auth_kysely-adapter_dist_1cghpz3._.js"].map(t=>e.l(t))).then(()=>t(333340)))},451312,e=>{e.v(t=>Promise.all(["server/chunks/101m_@better-auth_kysely-adapter_dist_0i747v8._.js"].map(t=>e.l(t))).then(()=>t(178617)))}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=_0r2vuif._.js.map
|
package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0tzvy_s._.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[726089,e=>{"use strict";var t=e.i(931720);e.i(700598);var a=e.i(704024);let s=(0,e.i(726527).createLogger)({service:"broadcast"});async function n(e,n,i){let r;try{let{env:a}=(0,t.getCloudflareContext)();r=a.DEV_WS_DO_URL;let l=await a.WS_DO_WORKER.fetch(`http://internal${e}`,{method:"POST",body:n});if(l.ok)try{return{sent:(await l.json()).sent??0}}catch{return{sent:0}}s.warn("broadcast service-binding non-ok",{...i,status:l.status})}catch{}let l=r||a.DEV_WS_DO_URL,d=await fetch(`${l}${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:n});if(!d.ok)throw Error(`broadcast failed: ${d.status}`);try{return{sent:(await d.json()).sent??0}}catch{return{sent:0}}}e.s(["broadcastToDaemon",0,function(e,a){let s=n(`/broadcast/daemon/${e}`,JSON.stringify(a),{daemonId:e,type:a.type});try{let{ctx:e}=(0,t.getCloudflareContext)();e.waitUntil(s.catch(()=>{}))}catch{}return s},"broadcastToUser",0,function(e,a){return function(e,a,s){let i=n(e,a,s);try{let{ctx:e}=(0,t.getCloudflareContext)();e.waitUntil(i.catch(()=>{}))}catch{}return i.then(()=>{})}(`/broadcast/user/${e}`,JSON.stringify(a),{userId:e,type:a.type})}])},511456,e=>{"use strict";e.i(700598);let t=(0,e.i(726527).createLogger)({service:"web",level:process.env.ALOOK_LOG_LEVEL||"info",pretty:!1});e.s(["log",0,t])},555230,e=>{"use strict";e.i(700598);var t=e.i(291109),a=e.i(704024),s=e.i(424166),n=e.i(740580),i=e.i(774078);e.s(["TaskPayloadBuilder",0,class{db;constructor(e){this.db=e}async buildFullPayloads(e,r){let l=e.filter(e=>e.type!==a.TASK_TYPES.KILL_TASK),d=[...new Set(l.map(e=>e.agentId))],[o,c,u]=d.length>0?await Promise.all([(0,i.cached)(i.cacheKeys.allAgents(r),300,()=>t.queries.agent.getAllAgentsForWorkspace(this.db,r)),(0,i.cached)(i.cacheKeys.allEmailAccounts(r),600,()=>t.queries.emailAccount.getAllEmailAccountsForWorkspace(this.db,r)),(0,i.cached)(i.cacheKeys.allColleagues(r),600,()=>t.queries.agentLink.getAllColleaguesForWorkspace(this.db,r)).catch(()=>[])]).then(([e,t,a])=>{let s=new Set(d);return[e.filter(e=>s.has(e.id)),t.filter(e=>s.has(e.agentId)),a.filter(e=>s.has(e.agentId))]}):[[],[],[]],h=new Map(o.map(e=>[e.id,e])),g=new Map;for(let e of c){let t=g.get(e.agentId)??[];t.push(e.emailAddress),g.set(e.agentId,t)}let m=new Map;for(let e of u){let t=m.get(e.agentId)??[];t.push(e),m.set(e.agentId,t)}let w=[...new Set(l.map(e=>e.conversationId).filter(Boolean))],p=new Map((w.length>0?await t.queries.conversation.getConversationsByIds(this.db,w,r):[]).map(e=>[e.id,e])),I=new Map,k=new Map,T=[];for(let l of e){if(l.type===a.TASK_TYPES.KILL_TASK){T.push({...(0,n.taskToResponse)(l),agent:null,sender:null});continue}let e=h.get(l.agentId)??null,d=[];if(e){e.emailHandle&&d.push((0,s.toAlookAddress)(e.emailHandle));let t=g.get(e.id)??[];d.push(...t)}let o=e?.instructions??"";if(e?.ownerId){if(!I.has(e.ownerId)){let a=await (0,i.cached)(i.cacheKeys.member(r,e.ownerId),600,()=>t.queries.member.getMemberByUserAndWorkspace(this.db,e.ownerId,r));I.set(e.ownerId,a?{globalInstruction:a.globalInstruction}:null)}let a=I.get(e.ownerId);a?.globalInstruction&&(o=[a.globalInstruction,o].filter(Boolean).join("\n\n"))}let c=null;if(e?.ownerId){if(!k.has(e.ownerId)){let a=await (0,i.cached)(i.cacheKeys.user(e.ownerId),1800,()=>t.queries.user.getUser(this.db,e.ownerId));k.set(e.ownerId,a?{name:a.name,email:a.email}:null)}c=k.get(e.ownerId)?.name??null}let u=p.get(l.conversationId)??null,w=u?.channel??"default",f=null;if(l.type===a.TASK_TYPES.USER_DM_MESSAGE&&u?.userId){if(!k.has(u.userId)){let e=await (0,i.cached)(i.cacheKeys.user(u.userId),1800,()=>t.queries.user.getUser(this.db,u.userId));k.set(u.userId,e?{name:e.name,email:e.email}:null)}let a=k.get(u.userId);a&&(f={name:a.name,email:a.email,is_owner:u.userId===e?.ownerId})}let y=(m.get(l.agentId)??[]).map(e=>({name:e.name,email:e.emailHandle?(0,s.toAlookAddress)(e.emailHandle):"",description:e.description,instruction:e.instruction}));T.push({...(0,n.taskToResponse)(l),channel:w,sender:f,agent:e?{instructions:o,name:e.name,runtime_config:e.runtimeConfig||{},email_handle:e.emailHandle||null,email_addresses:d,user_email:null,user_name:c,colleagues:y}:null})}return T}}])},205054,e=>{"use strict";e.i(700598);var t=e.i(291109),a=e.i(704024),s=e.i(511456),n=e.i(726089),i=e.i(740580),r=e.i(774078),l=e.i(555230);let d=t.queries.task,o=t.queries.agent,c=t.queries.message,u=t.queries.conversation,h=t.queries.issue,g=t.queries.inbox;e.s(["TaskService",0,class{db;constructor(e){this.db=e}async enqueueTask(e,t,s,n,i=a.TASK_TYPES.USER_DM_MESSAGE,l){let c=await o.getAgent(this.db,e,s);if(!c)throw Error("agent not found");if(!c.runtimeId)throw Error("agent has no runtime");if(l?.traceId&&l.parentTaskId&&await d.countTasksByTrace(this.db,l.traceId)>=a.MAX_TASKS_PER_TRACE)throw Error(`Trace limit reached (${a.MAX_TASKS_PER_TRACE} tasks). This may indicate an infinite loop between agents.`);let u=await d.createTask(this.db,{agentId:e,runtimeId:c.runtimeId,workspaceId:s,conversationId:t,prompt:n,type:i,contextKey:l?.contextKey??null,priority:0,context:l?.context,traceId:l?.traceId??null,parentTaskId:l?.parentTaskId??null});return(0,r.invalidate)(r.cacheKeys.activeTaskCounts(s)).catch(()=>{}),await this.pushTaskToDaemon(u,s).catch(()=>{}),u}async claimTask(e,t){let a=await o.getAgent(this.db,e,t);return this.claimTaskWithAgent(e,t,a)}async claimTaskWithAgent(e,t,a){if(!a)return null;if(await d.countRunningTasks(this.db,e,t)>=a.maxConcurrentTasks){let s=await d.findSteerableReplacement(this.db,e,t);if(!s||await d.countRunningTasks(this.db,e,t,s.predecessorId)>=a.maxConcurrentTasks)return null}let s=await d.claimTask(this.db,e,t);return s?(await o.updateAgentStatus(this.db,e,t,"working"),s):null}async claimTasksForRuntimes(e,t,a){let s=await d.claimKillTasks(this.db,e,a,t),n=t-s.length,i=n>0?await d.listPendingTasksByRuntimes(this.db,e,a):[],r=new Set(e),l=new Set,c=[...s],u=[];for(let e of i){if(u.length>=n)break;let t=`${e.agentId}:${e.workspaceId}`;l.has(t)||(l.add(t),u.push(e))}if(0===u.length)return c;let h=[...new Set(u.map(e=>e.agentId))],g=new Map((await o.getAgentsByIds(this.db,h,a)).map(e=>[e.id,e]));for(let e of(await Promise.all(u.map(e=>this.claimTaskWithAgent(e.agentId,e.workspaceId,g.get(e.agentId)??null)))))e&&r.has(e.runtimeId)&&c.push(e);return c}async startTask(e,t){let a=await d.startTask(this.db,e,t);if(!a)throw Error("task not in dispatched status");return a}async completeTask(e,t,a,n){let i;try{i=JSON.parse(a)}catch{i={raw:a}}let r=await d.completeTask(this.db,e,t,{result:i,sessionId:n||null});if(!r){let t=await d.getTask(this.db,e),a=t?.status??"unknown";throw s.log.warn(`completeTask failed: task is in '${a}' status`,{taskId:e}),Error(`cannot complete task in '${a}' status`)}return await this.reconcileAgentStatus(r.agentId,r.workspaceId),this.maybeUpsertUnread(r,t,null).catch(()=>{}),r}async failTask(e,r,l){let o=await d.failTask(this.db,e,r,l);if(!o){let t=await d.getTask(this.db,e),a=t?.status??"unknown";throw s.log.warn(`failTask failed: task is in '${a}' status`,{taskId:e}),Error(`cannot fail task in '${a}' status`)}if(o.type===a.TASK_TYPES.KILL_TASK)return o;let h=null;if(l){let a=null;try{if(o.runtimeId){let e=await t.queries.runtime.getAgentRuntime(this.db,o.runtimeId);a=e?.provider??null}}catch{}let s=await c.createMessage(this.db,{conversationId:o.conversationId,role:"assistant",content:l,taskId:e,metadata:JSON.stringify({error_source:"runtime",provider:a})});h=s?.id??null;try{let e=await u.getConversation(this.db,o.conversationId,r);e&&(0,n.broadcastToUser)(e.userId,{type:"conversation.message",conversationId:o.conversationId,message:(0,i.messageToResponse)(s)}).catch(()=>{})}catch{}}return await this.reconcileAgentStatus(o.agentId,o.workspaceId),await this.syncIssueStatusFromTask(o,"failed"),this.maybeUpsertUnread(o,r,h).catch(()=>{}),o}async syncIssueStatusFromTask(e,t){if(e.type!==a.TASK_TYPES.ISSUE_EVENT)return;let s=await h.getIssueByConversation(this.db,e.conversationId,e.workspaceId);if(!s||s.status===t||!await h.updateIssue(this.db,s.id,e.workspaceId,{status:t}))return;let r=await c.createMessage(this.db,{conversationId:e.conversationId,role:"event",content:`Issue status changed: ${s.status} -> ${t}`,taskId:e.id,metadata:JSON.stringify({issueId:s.id})});try{let t=await u.getConversation(this.db,e.conversationId,e.workspaceId);t&&(0,n.broadcastToUser)(t.userId,{type:"conversation.message",conversationId:e.conversationId,message:(0,i.messageToResponse)(r)}).catch(()=>{})}catch{}}async maybeUpsertUnread(e,t,a){if(!g.isUnreadEligible(e)||!e.completedAt)return;let s=await u.getConversation(this.db,e.conversationId,t);if(!s)return;let n=a??await g.findLatestAssistantMessageId(this.db,e.conversationId);await g.upsertUnreadEntry(this.db,{conversationId:e.conversationId,userId:s.userId,workspaceId:t,agentId:s.agentId,taskId:e.id,taskType:e.type,taskStatus:e.status,taskPrompt:e.prompt,completedAt:e.completedAt,latestMessageId:n})}async supersedeTask(e,t){let a=await d.supersedeTask(this.db,e,t);if(!a){let t=await d.getTask(this.db,e),a=t?.status??"unknown";throw s.log.warn(`supersedeTask failed: task is in '${a}' status`,{taskId:e}),Error(`cannot supersede task in '${a}' status`)}return await this.reconcileAgentStatus(a.agentId,a.workspaceId),a}async retryTask(e,t){let a=await d.getTask(this.db,e);if(!a||a.workspaceId!==t)throw Error("task not found");if("failed"!==a.status)throw Error("only failed tasks can be retried");let s=await d.markFailedAsSuperseded(this.db,e,t);if(!s)throw Error("failed to mark task as superseded");return{oldTask:s,newTask:await this.enqueueTask(a.agentId,a.conversationId,t,a.prompt,a.type,{contextKey:a.contextKey??null,context:a.context,traceId:a.traceId??null,parentTaskId:a.parentTaskId??null})}}async cancelActiveTask(e,i,r){let l=await d.getActiveTaskByConversation(this.db,e,i);if(!l)return null;let o=await d.cancelTask(this.db,l.id,i);if(!o)return null;if("dispatched"===l.status||"running"===l.status){let r=await d.createTask(this.db,{agentId:l.agentId,runtimeId:l.runtimeId,workspaceId:i,conversationId:e,prompt:"",type:a.TASK_TYPES.KILL_TASK,context:{target_task_id:l.id}});await d.dispatchTaskById(this.db,r.id,i);let o=await t.queries.runtime.getAgentRuntime(this.db,l.runtimeId);o&&(0,n.broadcastToDaemon)(o.daemonId,{type:"daemon.kill",workspaceId:i,agentId:l.agentId,taskId:r.id,targetTaskId:l.id}).catch(e=>s.log.warn("daemon.kill broadcast failed, relying on poll fallback",e))}return await c.createMessage(this.db,{conversationId:e,role:"assistant",content:r?.reason??"Task cancelled by you",taskId:l.id,metadata:JSON.stringify({kind:"lifecycle"})}),await this.reconcileAgentStatus(l.agentId,i),o}async reconcileAgentStatus(e,t){let a=await d.countRunningTasks(this.db,e,t);await o.updateAgentStatus(this.db,e,t,a>0?"working":"idle"),(0,r.invalidate)(r.cacheKeys.activeTaskCounts(t)).catch(()=>{})}async cancelTrace(e,t,a){for(let n of[...new Set((await d.getTraceTree(this.db,e,t)).filter(e=>["queued","dispatched","running"].includes(e.status)).map(e=>e.conversationId))])try{await this.cancelActiveTask(n,t,{reason:a?.reason})}catch(t){s.log.warn("cancelTrace: failed to cancel task",{traceId:e,convId:n,err:t})}}async pushTaskToDaemon(e,a){let s=await t.queries.runtime.getAgentRuntime(this.db,e.runtimeId);if(!s)return;let i=await d.dispatchTaskById(this.db,e.id,a);if(!i)return;let r=new l.TaskPayloadBuilder(this.db),o=await r.buildFullPayloads([i],a);if(0===o.length)return void await d.revertDispatchedToQueued(this.db,e.id,a);try{let{sent:t}=await (0,n.broadcastToDaemon)(s.daemonId,{type:"daemon.tasks",tasks:o});0===t&&await d.revertDispatchedToQueued(this.db,e.id,a)}catch{await d.revertDispatchedToQueued(this.db,e.id,a)}}}])},291320,e=>{"use strict";e.s(["isUniqueConstraintError",0,function e(t){if(t instanceof Error){if("SQLITE_CONSTRAINT_UNIQUE"===t.code||t.message.includes("UNIQUE"))return!0;if(t.cause)return e(t.cause)}return!1}])},318172,e=>{"use strict";e.s(["truncateTitle",0,function(e,t=50){let a=e.replace(/\s+/g," ").trim();if(a.length<=t)return a;let s=a.slice(0,t),n=s.lastIndexOf(" ");return(n>20?s.slice(0,n):s)+"..."}])},649967,e=>{e.v(t=>Promise.all(["server/chunks/1cud_@better-auth_memory-adapter_dist_index_mjs_1npfl-v._.js"].map(t=>e.l(t))).then(()=>t(433404)))},706346,e=>{e.v(t=>Promise.all(["server/chunks/12-__better-auth_dist_adapters_kysely-adapter_index_mjs_08059b7._.js"].map(t=>e.l(t))).then(()=>t(943972)))},305762,e=>{e.v(t=>Promise.all(["server/chunks/101m_@better-auth_kysely-adapter_dist_0wrnuhp._.js"].map(t=>e.l(t))).then(()=>t(784506)))},401635,e=>{e.v(t=>Promise.all(["server/chunks/101m_@better-auth_kysely-adapter_dist_1cghpz3._.js"].map(t=>e.l(t))).then(()=>t(333340)))},451312,e=>{e.v(t=>Promise.all(["server/chunks/101m_@better-auth_kysely-adapter_dist_0i747v8._.js"].map(t=>e.l(t))).then(()=>t(178617)))}];
|
|
1
|
+
module.exports=[726089,e=>{"use strict";var t=e.i(931720);e.i(700598);var a=e.i(704024);let s=(0,e.i(726527).createLogger)({service:"broadcast"});async function n(e,n,i){let r;try{let{env:a}=(0,t.getCloudflareContext)();r=a.DEV_WS_DO_URL;let l=await a.WS_DO_WORKER.fetch(`http://internal${e}`,{method:"POST",body:n});if(l.ok)try{return{sent:(await l.json()).sent??0}}catch{return{sent:0}}s.warn("broadcast service-binding non-ok",{...i,status:l.status})}catch{}let l=r||a.DEV_WS_DO_URL,d=await fetch(`${l}${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:n});if(!d.ok)throw Error(`broadcast failed: ${d.status}`);try{return{sent:(await d.json()).sent??0}}catch{return{sent:0}}}e.s(["broadcastToDaemon",0,function(e,a){let s=n(`/broadcast/daemon/${e}`,JSON.stringify(a),{daemonId:e,type:a.type});try{let{ctx:e}=(0,t.getCloudflareContext)();e.waitUntil(s.catch(()=>{}))}catch{}return s},"broadcastToUser",0,function(e,a){return function(e,a,s){let i=n(e,a,s);try{let{ctx:e}=(0,t.getCloudflareContext)();e.waitUntil(i.catch(()=>{}))}catch{}return i.then(()=>{})}(`/broadcast/user/${e}`,JSON.stringify(a),{userId:e,type:a.type})}])},511456,e=>{"use strict";e.i(700598);let t=(0,e.i(726527).createLogger)({service:"web",level:process.env.ALOOK_LOG_LEVEL||"info",pretty:!1});e.s(["log",0,t])},555230,e=>{"use strict";e.i(700598);var t=e.i(291109),a=e.i(704024),s=e.i(424166),n=e.i(740580),i=e.i(774078);e.s(["TaskPayloadBuilder",0,class{db;constructor(e){this.db=e}async buildFullPayloads(e,r){let l=e.filter(e=>e.type!==a.TASK_TYPES.KILL_TASK),d=[...new Set(l.map(e=>e.agentId))],[o,c,u]=d.length>0?await Promise.all([t.queries.agent.getAllAgentsForWorkspace(this.db,r),(0,i.cached)(i.cacheKeys.allEmailAccounts(r),600,()=>t.queries.emailAccount.getAllEmailAccountsForWorkspace(this.db,r)),t.queries.agentLink.getAllColleaguesForWorkspace(this.db,r).catch(()=>[])]).then(([e,t,a])=>{let s=new Set(d);return[e.filter(e=>s.has(e.id)),t.filter(e=>s.has(e.agentId)),a.filter(e=>s.has(e.agentId))]}):[[],[],[]],h=new Map(o.map(e=>[e.id,e])),g=new Map;for(let e of c){let t=g.get(e.agentId)??[];t.push(e.emailAddress),g.set(e.agentId,t)}let m=new Map;for(let e of u){let t=m.get(e.agentId)??[];t.push(e),m.set(e.agentId,t)}let w=[...new Set(l.map(e=>e.conversationId).filter(Boolean))],p=new Map((w.length>0?await t.queries.conversation.getConversationsByIds(this.db,w,r):[]).map(e=>[e.id,e])),I=new Map,k=new Map,T=[];for(let l of e){if(l.type===a.TASK_TYPES.KILL_TASK){T.push({...(0,n.taskToResponse)(l),agent:null,sender:null});continue}let e=h.get(l.agentId)??null,d=[];if(e){e.emailHandle&&d.push((0,s.toAlookAddress)(e.emailHandle));let t=g.get(e.id)??[];d.push(...t)}let o=e?.instructions??"";if(e?.ownerId){if(!I.has(e.ownerId)){let a=await (0,i.cached)(i.cacheKeys.member(r,e.ownerId),600,()=>t.queries.member.getMemberByUserAndWorkspace(this.db,e.ownerId,r));I.set(e.ownerId,a?{globalInstruction:a.globalInstruction}:null)}let a=I.get(e.ownerId);a?.globalInstruction&&(o=[a.globalInstruction,o].filter(Boolean).join("\n\n"))}let c=null;if(e?.ownerId){if(!k.has(e.ownerId)){let a=await (0,i.cached)(i.cacheKeys.user(e.ownerId),1800,()=>t.queries.user.getUser(this.db,e.ownerId));k.set(e.ownerId,a?{name:a.name,email:a.email}:null)}c=k.get(e.ownerId)?.name??null}let u=p.get(l.conversationId)??null,w=u?.channel??"default",f=null;if(l.type===a.TASK_TYPES.USER_DM_MESSAGE&&u?.userId){if(!k.has(u.userId)){let e=await (0,i.cached)(i.cacheKeys.user(u.userId),1800,()=>t.queries.user.getUser(this.db,u.userId));k.set(u.userId,e?{name:e.name,email:e.email}:null)}let a=k.get(u.userId);a&&(f={name:a.name,email:a.email,is_owner:u.userId===e?.ownerId})}let y=(m.get(l.agentId)??[]).map(e=>({name:e.name,email:e.emailHandle?(0,s.toAlookAddress)(e.emailHandle):"",description:e.description,instruction:e.instruction}));T.push({...(0,n.taskToResponse)(l),channel:w,sender:f,agent:e?{instructions:o,name:e.name,runtime_config:e.runtimeConfig||{},email_handle:e.emailHandle||null,email_addresses:d,user_email:null,user_name:c,colleagues:y}:null})}return T}}])},205054,e=>{"use strict";e.i(700598);var t=e.i(291109),a=e.i(704024),s=e.i(511456),n=e.i(726089),i=e.i(740580),r=e.i(774078),l=e.i(555230);let d=t.queries.task,o=t.queries.agent,c=t.queries.message,u=t.queries.conversation,h=t.queries.issue,g=t.queries.inbox;e.s(["TaskService",0,class{db;constructor(e){this.db=e}async enqueueTask(e,t,s,n,i=a.TASK_TYPES.USER_DM_MESSAGE,l){let c=await o.getAgent(this.db,e,s);if(!c)throw Error("agent not found");if(!c.runtimeId)throw Error("agent has no runtime");if(l?.traceId&&l.parentTaskId&&await d.countTasksByTrace(this.db,l.traceId)>=a.MAX_TASKS_PER_TRACE)throw Error(`Trace limit reached (${a.MAX_TASKS_PER_TRACE} tasks). This may indicate an infinite loop between agents.`);let u=await d.createTask(this.db,{agentId:e,runtimeId:c.runtimeId,workspaceId:s,conversationId:t,prompt:n,type:i,contextKey:l?.contextKey??null,priority:0,context:l?.context,traceId:l?.traceId??null,parentTaskId:l?.parentTaskId??null});return(0,r.invalidate)(r.cacheKeys.activeTaskCounts(s)).catch(()=>{}),await this.pushTaskToDaemon(u,s).catch(()=>{}),u}async claimTask(e,t){let a=await o.getAgent(this.db,e,t);return this.claimTaskWithAgent(e,t,a)}async claimTaskWithAgent(e,t,a){if(!a)return null;if(await d.countRunningTasks(this.db,e,t)>=a.maxConcurrentTasks){let s=await d.findSteerableReplacement(this.db,e,t);if(!s||await d.countRunningTasks(this.db,e,t,s.predecessorId)>=a.maxConcurrentTasks)return null}let s=await d.claimTask(this.db,e,t);return s?(await o.updateAgentStatus(this.db,e,t,"working"),s):null}async claimTasksForRuntimes(e,t,a){let s=await d.claimKillTasks(this.db,e,a,t),n=t-s.length,i=n>0?await d.listPendingTasksByRuntimes(this.db,e,a):[],r=new Set(e),l=new Set,c=[...s],u=[];for(let e of i){if(u.length>=n)break;let t=`${e.agentId}:${e.workspaceId}`;l.has(t)||(l.add(t),u.push(e))}if(0===u.length)return c;let h=[...new Set(u.map(e=>e.agentId))],g=new Map((await o.getAgentsByIds(this.db,h,a)).map(e=>[e.id,e]));for(let e of(await Promise.all(u.map(e=>this.claimTaskWithAgent(e.agentId,e.workspaceId,g.get(e.agentId)??null)))))e&&r.has(e.runtimeId)&&c.push(e);return c}async startTask(e,t){let a=await d.startTask(this.db,e,t);if(!a)throw Error("task not in dispatched status");return a}async completeTask(e,t,a,n){let i;try{i=JSON.parse(a)}catch{i={raw:a}}let r=await d.completeTask(this.db,e,t,{result:i,sessionId:n||null});if(!r){let t=await d.getTask(this.db,e),a=t?.status??"unknown";throw s.log.warn(`completeTask failed: task is in '${a}' status`,{taskId:e}),Error(`cannot complete task in '${a}' status`)}return await this.reconcileAgentStatus(r.agentId,r.workspaceId),this.maybeUpsertUnread(r,t,null).catch(()=>{}),r}async failTask(e,r,l){let o=await d.failTask(this.db,e,r,l);if(!o){let t=await d.getTask(this.db,e),a=t?.status??"unknown";throw s.log.warn(`failTask failed: task is in '${a}' status`,{taskId:e}),Error(`cannot fail task in '${a}' status`)}if(o.type===a.TASK_TYPES.KILL_TASK)return o;let h=null;if(l){let a=null;try{if(o.runtimeId){let e=await t.queries.runtime.getAgentRuntime(this.db,o.runtimeId);a=e?.provider??null}}catch{}let s=await c.createMessage(this.db,{conversationId:o.conversationId,role:"assistant",content:l,taskId:e,metadata:JSON.stringify({error_source:"runtime",provider:a})});h=s?.id??null;try{let e=await u.getConversation(this.db,o.conversationId,r);e&&(0,n.broadcastToUser)(e.userId,{type:"conversation.message",conversationId:o.conversationId,message:(0,i.messageToResponse)(s)}).catch(()=>{})}catch{}}return await this.reconcileAgentStatus(o.agentId,o.workspaceId),await this.syncIssueStatusFromTask(o,"failed"),this.maybeUpsertUnread(o,r,h).catch(()=>{}),o}async syncIssueStatusFromTask(e,t){if(e.type!==a.TASK_TYPES.ISSUE_EVENT)return;let s=await h.getIssueByConversation(this.db,e.conversationId,e.workspaceId);if(!s||s.status===t||!await h.updateIssue(this.db,s.id,e.workspaceId,{status:t}))return;let r=await c.createMessage(this.db,{conversationId:e.conversationId,role:"event",content:`Issue status changed: ${s.status} -> ${t}`,taskId:e.id,metadata:JSON.stringify({issueId:s.id})});try{let t=await u.getConversation(this.db,e.conversationId,e.workspaceId);t&&(0,n.broadcastToUser)(t.userId,{type:"conversation.message",conversationId:e.conversationId,message:(0,i.messageToResponse)(r)}).catch(()=>{})}catch{}}async maybeUpsertUnread(e,t,a){if(!g.isUnreadEligible(e)||!e.completedAt)return;let s=await u.getConversation(this.db,e.conversationId,t);if(!s)return;let n=a??await g.findLatestAssistantMessageId(this.db,e.conversationId);await g.upsertUnreadEntry(this.db,{conversationId:e.conversationId,userId:s.userId,workspaceId:t,agentId:s.agentId,taskId:e.id,taskType:e.type,taskStatus:e.status,taskPrompt:e.prompt,completedAt:e.completedAt,latestMessageId:n})}async supersedeTask(e,t){let a=await d.supersedeTask(this.db,e,t);if(!a){let t=await d.getTask(this.db,e),a=t?.status??"unknown";throw s.log.warn(`supersedeTask failed: task is in '${a}' status`,{taskId:e}),Error(`cannot supersede task in '${a}' status`)}return await this.reconcileAgentStatus(a.agentId,a.workspaceId),a}async retryTask(e,t){let a=await d.getTask(this.db,e);if(!a||a.workspaceId!==t)throw Error("task not found");if("failed"!==a.status)throw Error("only failed tasks can be retried");let s=await d.markFailedAsSuperseded(this.db,e,t);if(!s)throw Error("failed to mark task as superseded");return{oldTask:s,newTask:await this.enqueueTask(a.agentId,a.conversationId,t,a.prompt,a.type,{contextKey:a.contextKey??null,context:a.context,traceId:a.traceId??null,parentTaskId:a.parentTaskId??null})}}async cancelActiveTask(e,i,r){let l=await d.getActiveTaskByConversation(this.db,e,i);if(!l)return null;let o=await d.cancelTask(this.db,l.id,i);if(!o)return null;if("dispatched"===l.status||"running"===l.status){let r=await d.createTask(this.db,{agentId:l.agentId,runtimeId:l.runtimeId,workspaceId:i,conversationId:e,prompt:"",type:a.TASK_TYPES.KILL_TASK,context:{target_task_id:l.id}});await d.dispatchTaskById(this.db,r.id,i);let o=await t.queries.runtime.getAgentRuntime(this.db,l.runtimeId);o&&(0,n.broadcastToDaemon)(o.daemonId,{type:"daemon.kill",workspaceId:i,agentId:l.agentId,taskId:r.id,targetTaskId:l.id}).catch(e=>s.log.warn("daemon.kill broadcast failed, relying on poll fallback",e))}return await c.createMessage(this.db,{conversationId:e,role:"assistant",content:r?.reason??"Task cancelled by you",taskId:l.id,metadata:JSON.stringify({kind:"lifecycle"})}),await this.reconcileAgentStatus(l.agentId,i),o}async reconcileAgentStatus(e,t){let a=await d.countRunningTasks(this.db,e,t);await o.updateAgentStatus(this.db,e,t,a>0?"working":"idle"),(0,r.invalidate)(r.cacheKeys.activeTaskCounts(t)).catch(()=>{})}async cancelTrace(e,t,a){for(let n of[...new Set((await d.getTraceTree(this.db,e,t)).filter(e=>["queued","dispatched","running"].includes(e.status)).map(e=>e.conversationId))])try{await this.cancelActiveTask(n,t,{reason:a?.reason})}catch(t){s.log.warn("cancelTrace: failed to cancel task",{traceId:e,convId:n,err:t})}}async pushTaskToDaemon(e,a){let s=await t.queries.runtime.getAgentRuntime(this.db,e.runtimeId);if(!s)return;let i=await d.dispatchTaskById(this.db,e.id,a);if(!i)return;let r=new l.TaskPayloadBuilder(this.db),o=await r.buildFullPayloads([i],a);if(0===o.length)return void await d.revertDispatchedToQueued(this.db,e.id,a);try{let{sent:t}=await (0,n.broadcastToDaemon)(s.daemonId,{type:"daemon.tasks",tasks:o});0===t&&await d.revertDispatchedToQueued(this.db,e.id,a)}catch{await d.revertDispatchedToQueued(this.db,e.id,a)}}}])},291320,e=>{"use strict";e.s(["isUniqueConstraintError",0,function e(t){if(t instanceof Error){if("SQLITE_CONSTRAINT_UNIQUE"===t.code||t.message.includes("UNIQUE"))return!0;if(t.cause)return e(t.cause)}return!1}])},318172,e=>{"use strict";e.s(["truncateTitle",0,function(e,t=50){let a=e.replace(/\s+/g," ").trim();if(a.length<=t)return a;let s=a.slice(0,t),n=s.lastIndexOf(" ");return(n>20?s.slice(0,n):s)+"..."}])},649967,e=>{e.v(t=>Promise.all(["server/chunks/1cud_@better-auth_memory-adapter_dist_index_mjs_1npfl-v._.js"].map(t=>e.l(t))).then(()=>t(433404)))},706346,e=>{e.v(t=>Promise.all(["server/chunks/12-__better-auth_dist_adapters_kysely-adapter_index_mjs_08059b7._.js"].map(t=>e.l(t))).then(()=>t(943972)))},305762,e=>{e.v(t=>Promise.all(["server/chunks/101m_@better-auth_kysely-adapter_dist_0wrnuhp._.js"].map(t=>e.l(t))).then(()=>t(784506)))},401635,e=>{e.v(t=>Promise.all(["server/chunks/101m_@better-auth_kysely-adapter_dist_1cghpz3._.js"].map(t=>e.l(t))).then(()=>t(333340)))},451312,e=>{e.v(t=>Promise.all(["server/chunks/101m_@better-auth_kysely-adapter_dist_0i747v8._.js"].map(t=>e.l(t))).then(()=>t(178617)))}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=_0tzvy_s._.js.map
|