agentroam-runtime-darwin-arm64 0.2.0-preview.69 → 0.2.0-preview.70
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/manifest.json +2 -2
- package/package.json +1 -1
- package/runtime/.next/BUILD_ID +1 -1
- package/runtime/.next/app-build-manifest.json +8 -8
- package/runtime/.next/app-path-routes-manifest.json +1 -1
- package/runtime/.next/build-manifest.json +3 -3
- package/runtime/.next/prerender-manifest.json +1 -1
- package/runtime/.next/required-server-files.json +1 -1
- package/runtime/.next/server/app/_not-found/page.js +1 -1
- package/runtime/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/runtime/.next/server/app/_not-found.html +1 -1
- package/runtime/.next/server/app/_not-found.rsc +1 -1
- package/runtime/.next/server/app/api/agent/abort/route.js +1 -1
- package/runtime/.next/server/app/api/agent/answer/route.js +1 -1
- package/runtime/.next/server/app/api/agent/codex-sharing/route.js +1 -1
- package/runtime/.next/server/app/api/agent/harness/status/route.js +1 -1
- package/runtime/.next/server/app/api/agent/model/route.js +1 -1
- package/runtime/.next/server/app/api/agent/models/route.js +1 -1
- package/runtime/.next/server/app/api/agent/run/route.js +1 -1
- package/runtime/.next/server/app/api/agent/runtime-health/route.js +1 -1
- package/runtime/.next/server/app/api/agent/steer/route.js +1 -1
- package/runtime/.next/server/app/api/agent/stream/route.js +2 -2
- package/runtime/.next/server/app/api/agent-workspaces/[workspaceId]/sessions/route.js +1 -1
- package/runtime/.next/server/app/api/agent-workspaces/route.js +1 -1
- package/runtime/.next/server/app/api/auth/verify/route.js +1 -1
- package/runtime/.next/server/app/api/business/route.js +1 -1
- package/runtime/.next/server/app/api/client-logs/route.js +1 -1
- package/runtime/.next/server/app/api/collaboration/route.js +4 -4
- package/runtime/.next/server/app/api/flow/v1/catalog/route.js +1 -1
- package/runtime/.next/server/app/api/flow/v1/runs/[runId]/cancel/route.js +1 -1
- package/runtime/.next/server/app/api/flow/v1/runs/[runId]/events/route.js +2 -2
- package/runtime/.next/server/app/api/flow/v1/runs/route.js +1 -1
- package/runtime/.next/server/app/api/flow-studio/config/route.js +1 -1
- package/runtime/.next/server/app/api/mcp/connect/route.js +1 -1
- package/runtime/.next/server/app/api/mcp/disconnect/route.js +1 -1
- package/runtime/.next/server/app/api/mcp/servers/route.js +1 -1
- package/runtime/.next/server/app/api/memory/[key]/route.js +1 -1
- package/runtime/.next/server/app/api/memory/route.js +1 -1
- package/runtime/.next/server/app/api/plugins/load/route.js +1 -1
- package/runtime/.next/server/app/api/projects/[id]/route.js +1 -1
- package/runtime/.next/server/app/api/projects/check/route.js +1 -1
- package/runtime/.next/server/app/api/projects/directories/route.js +1 -1
- package/runtime/.next/server/app/api/projects/roots/route.js +1 -1
- package/runtime/.next/server/app/api/projects/route.js +1 -1
- package/runtime/.next/server/app/api/push/subscribe/route.js +2 -2
- package/runtime/.next/server/app/api/push/unsubscribe/route.js +2 -2
- package/runtime/.next/server/app/api/push/vapid/route.js +2 -2
- package/runtime/.next/server/app/api/remote-tools/register/route.js +1 -1
- package/runtime/.next/server/app/api/sessions/[id]/background-jobs/[jobId]/route.js +1 -1
- package/runtime/.next/server/app/api/sessions/[id]/background-jobs/[jobId]/stop/route.js +1 -1
- package/runtime/.next/server/app/api/sessions/[id]/background-jobs/route.js +1 -1
- package/runtime/.next/server/app/api/sessions/[id]/changes/route.js +2 -2
- package/runtime/.next/server/app/api/sessions/[id]/fork/route.js +1 -1
- package/runtime/.next/server/app/api/sessions/[id]/fork-at/route.js +1 -1
- package/runtime/.next/server/app/api/sessions/[id]/goals/route.js +1 -1
- package/runtime/.next/server/app/api/sessions/[id]/handoff/route.js +1 -1
- package/runtime/.next/server/app/api/sessions/[id]/native-goal/route.js +1 -1
- package/runtime/.next/server/app/api/sessions/[id]/query-index/route.js +1 -1
- package/runtime/.next/server/app/api/sessions/[id]/release/route.js +1 -1
- package/runtime/.next/server/app/api/sessions/[id]/route.js +1 -1
- package/runtime/.next/server/app/api/sessions/[id]/thread-goal/route.js +1 -1
- package/runtime/.next/server/app/api/sessions/[id]/tool-result/route.js +1 -1
- package/runtime/.next/server/app/api/sessions/route.js +1 -1
- package/runtime/.next/server/app/api/settings/route.js +1 -1
- package/runtime/.next/server/app/api/skills/route.js +1 -1
- package/runtime/.next/server/app/api/tool-policies/[policyId]/route.js +1 -1
- package/runtime/.next/server/app/api/tool-policies/route.js +1 -1
- package/runtime/.next/server/app/api/tools/route.js +1 -1
- package/runtime/.next/server/app/api/update/check/route.js +1 -1
- package/runtime/.next/server/app/api/update/install/route.js +1 -1
- package/runtime/.next/server/app/api/update/status/route.js +1 -1
- package/runtime/.next/server/app/api/web-auth/login/route.js +1 -1
- package/runtime/.next/server/app/api/web-auth/logout/route.js +1 -1
- package/runtime/.next/server/app/api/web-auth/revoke-all/route.js +1 -1
- package/runtime/.next/server/app/api/web-auth/setup/route.js +1 -1
- package/runtime/.next/server/app/api/web-auth/status/route.js +1 -1
- package/runtime/.next/server/app/api/web-console/bootstrap/route.js +1 -1
- package/runtime/.next/server/app/api/web-console/computer-settings/route.js +1 -1
- package/runtime/.next/server/app/api/web-console/computers/route.js +1 -1
- package/runtime/.next/server/app/api/web-console/device-state/route.js +1 -1
- package/runtime/.next/server/app/api/web-console/history/route.js +1 -1
- package/runtime/.next/server/app/api/web-console/preferences/route.js +1 -1
- package/runtime/.next/server/app/web/page.js +2 -2
- package/runtime/.next/server/app/web/page_client-reference-manifest.js +1 -1
- package/runtime/.next/server/app-paths-manifest.json +25 -25
- package/runtime/.next/server/chunks/5303.js +1 -1
- package/runtime/.next/server/middleware-build-manifest.js +1 -1
- package/runtime/.next/server/pages/404.html +1 -1
- package/runtime/.next/server/pages/500.html +1 -1
- package/runtime/.next/server/server-reference-manifest.json +1 -1
- package/runtime/.next/static/chunks/app/web/{error-c3847c5e65100576.js → error-3acef50d100c88cd.js} +1 -1
- package/runtime/.next/static/chunks/app/web/layout-8ec7c101bbab1dc2.js +1 -0
- package/runtime/.next/static/chunks/app/web/page-cd202c384ebf79be.js +1 -0
- package/runtime/.next/static/chunks/{main-app-c797e818a3f2a09f.js → main-app-1722010a0ff567d7.js} +1 -1
- package/runtime/lib/remote-control/remote-authorization.mjs +11 -1
- package/runtime/native/Support.noindex/AgentRoam Remote Desktop.app/Contents/MacOS/agentroam-remote-desktop +0 -0
- package/runtime/native/Support.noindex/AgentRoam Remote Desktop.app/Contents/Resources/agentroam-component.json +1 -1
- package/runtime/native/Support.noindex/AgentRoam Remote Desktop.app/Contents/_CodeSignature/CodeResources +2 -2
- package/runtime/node_modules/.package-lock.json +114 -114
- package/runtime/package-lock.json +131 -131
- package/runtime/server.js +1 -1
- package/runtime/.next/static/chunks/app/web/layout-579afeab60c11faf.js +0 -1
- package/runtime/.next/static/chunks/app/web/page-1586e76a5cff32d5.js +0 -1
- /package/runtime/.next/static/{irWde_R_H09SV2jvfhWC2 → Ow_KjPn75TzR7WqdD4P9x}/_buildManifest.js +0 -0
- /package/runtime/.next/static/{irWde_R_H09SV2jvfhWC2 → Ow_KjPn75TzR7WqdD4P9x}/_ssgManifest.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";(()=>{var e={};e.id=2616,e.ids=[2616],e.modules={8042:e=>{e.exports=require("@agent/computer-use")},1636:e=>{e.exports=require("@agent/core")},2847:e=>{e.exports=require("@agent/native-runtime")},5890:e=>{e.exports=require("better-sqlite3")},399:e=>{e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},517:e=>{e.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},7790:e=>{e.exports=require("assert")},8893:e=>{e.exports=require("buffer")},4770:e=>{e.exports=require("crypto")},2615:e=>{e.exports=require("http")},5240:e=>{e.exports=require("https")},8216:e=>{e.exports=require("net")},9801:e=>{e.exports=require("os")},6162:e=>{e.exports=require("stream")},2452:e=>{e.exports=require("tls")},4175:e=>{e.exports=require("tty")},7360:e=>{e.exports=require("url")},1764:e=>{e.exports=require("util")},7718:e=>{e.exports=require("node:child_process")},6005:e=>{e.exports=require("node:crypto")},7561:e=>{e.exports=require("node:fs")},612:e=>{e.exports=require("node:os")},9411:e=>{e.exports=require("node:path")},7252:(e,t,r)=>{r.r(t),r.d(t,{originalPathname:()=>S,patchFetch:()=>b,requestAsyncStorage:()=>y,routeModule:()=>h,serverHooks:()=>k,staticGenerationAsyncStorage:()=>v});var s={};r.r(s),r.d(s,{POST:()=>x});var o=r(7786),n=r(5042),i=r(2184),a=r(1890),l=r(1636),u=r(2847),d=r(7519),c=r(1614),p=r(535),g=r(1079),m=r(4621),f=r(1982),I=r(8615);async function x(e){try{var t,r;(0,g.j)();let s=await e.json();if(!s.input)return a.NextResponse.json({error:"input is required"},{status:400});if(void 0!==s.agentIds&&(!Array.isArray(s.agentIds)||s.agentIds.length>20||s.agentIds.some(e=>"string"!=typeof e||!e.trim())))return a.NextResponse.json({error:"agentIds must contain at most 20 non-empty IDs"},{status:400});if(void 0!==s.agentId&&void 0!==s.agentIds)return a.NextResponse.json({error:"agentId and agentIds are mutually exclusive"},{status:400});if(void 0!==s.profileId&&("string"!=typeof s.profileId||!s.profileId.trim()||s.profileId.length>200))return a.NextResponse.json({error:"profileId must be a non-empty string"},{status:400});if(s.sessionId&&(0,c.V_)(s.sessionId)){let e=s.sessionId,t=(0,c.NL)(),r=await t.startRun(e,s.input,s.images,"web",{...s.nativeModel?.id?{model:s.nativeModel}:{},...s.nativeReasoningEffort?{reasoningEffort:s.nativeReasoningEffort}:{}});d.agentHost.resetExternalStream(e),d.agentHost.publishExternal(e,{type:"run_admitted",_nativeRunId:r.runId,_nativeSequence:r.snapshotRevision});let o=null,n=!1;return t.subscribe(e,0,({event:t})=>{d.agentHost.publishExternal(e,t),("done"===t.type||"error"===t.type)&&(n=!0,o?.())}).then(e=>{o=e,n&&e()}).catch(t=>{let r=t instanceof u.RuntimeSessionError?t.code:void 0;(0,p.L)().error("native run subscription failed",t,{sessionId:e,code:r}),d.agentHost.publishExternal(e,{type:"error",message:t instanceof Error?t.message:"Native run subscription failed",...r?{code:r}:{}})}),a.NextResponse.json({sessionId:e,streamUrl:`/api/agent/stream?sessionId=${e}`,runId:r.runId,snapshotRevision:r.snapshotRevision})}let o=d.agentHost.getSessionStore(),n={maxIterations:"number"!=typeof(t=s.maxIterations)||!Number.isFinite(t)||t<0?10:Math.trunc(t),maxTokens:"number"==typeof(r=s.maxTokens)&&Number.isFinite(r)?Math.min(2e6,Math.max(8e3,Math.trunc(r))):1e5},i=s.agentId??(s.agentIds?.length===1?s.agentIds[0]:void 0),x=(0,m.i)(),h=new l.StartAgentRunUseCase(o,{getAgent:e=>x.agents.get(e),getSkill:async e=>x.skills.get(e)??(await x.call("listSkills",[])).find(t=>t.name===e)??null,hasModelProfile:e=>(0,f.dp)().read().profiles.some(t=>t.id===e),getToolExecutionPolicy:e=>(0,I.cm)().get(e)},{assertAvailable:e=>{if(d.agentHost.isSessionRunning(e))throw new d.A(e)},start:e=>{let t=d.agentHost.startRun(e.message,e.sessionId,e.images,{...s.model?{model:s.model}:{},...e.modelProfileId?{profileId:e.modelProfileId}:{},...s.reasoningEffort?{reasoningEffort:s.reasoningEffort}:{},...void 0===s.maxIterations?{}:{maxIterations:n.maxIterations},...void 0===s.maxTokens?{}:{maxTokens:n.maxTokens},...s.agentIds?{agentIds:s.agentIds}:e.agent?{agentIds:[e.agent.id]}:{},...e.skill?{activatedSkills:[e.skill.name]}:{},...Object.keys(e.context).length?{context:e.context}:{},toolExecutionPolicy:e.toolExecutionPolicy});return t.completion.catch(t=>{(0,p.L)().error("agent run error",t,{sessionId:e.sessionId}),console.error("Agent run error:",t)}),{sessionId:e.sessionId,runId:t.runId,streamRef:`/api/agent/stream?sessionId=${e.sessionId}`}}}),y=await h.execute({message:s.input,...s.sessionId?{sessionId:s.sessionId}:{},...i?{agentId:i}:{},...s.skillName?{skillName:s.skillName}:{},...s.profileId?{modelProfileId:s.profileId}:{},...s.images?.length?{images:s.images}:{},...s.context?{context:s.context}:{},...s.toolPolicyId?{capabilities:{toolPolicyId:s.toolPolicyId}}:{},session:{...s.projectId?{projectId:s.projectId}:{},...s.title?{title:s.title}:{},...s.metadata?{metadata:s.metadata}:{}},source:s.source??"webapp"});return a.NextResponse.json({sessionId:y.sessionId,streamUrl:y.streamRef,runId:y.runId})}catch(n){(0,p.L)().error("agent run request failed",n,{status:n instanceof u.RuntimeSessionError?n.code:void 0});let e=n instanceof u.RuntimeSessionError?n.code:void 0,t=n instanceof d.A?n.code:void 0,r=n instanceof l.AgentRunError?n.code:void 0,s=e??t??r,o="SESSION_OCCUPIED"===s||"SESSION_ALREADY_RUNNING"===s;return a.NextResponse.json({error:n instanceof Error?n.message:"Internal error",...s?{code:s}:{}},{status:o?409:("AGENT_NOT_FOUND"===r||"SKILL_NOT_FOUND"===r||"MODEL_PROFILE_NOT_FOUND"===r||"TOOL_POLICY_NOT_FOUND"===r?404:"SKILL_NOT_ALLOWED"===r||"TOOL_POLICY_DISABLED"===r?422:r?400:void 0)??500})}}let h=new o.AppRouteRouteModule({definition:{kind:n.x.APP_ROUTE,page:"/api/agent/run/route",pathname:"/api/agent/run",filename:"route",bundlePath:"app/api/agent/run/route"},resolvedPagePath:"/private/tmp/agentroam-preview69-20261030/packages/server/app/api/agent/run/route.ts",nextConfigOutput:"standalone",userland:s}),{requestAsyncStorage:y,staticGenerationAsyncStorage:v,serverHooks:k}=h,S="/api/agent/run/route";function b(){return(0,i.patchFetch)({serverHooks:k,staticGenerationAsyncStorage:v})}},1079:(e,t,r)=>{r.d(t,{j:()=>u});var s=r(7519),o=r(535),n=r(1636),i=r(1982);let a=!1,l=new n.NotificationDeduper;function u(){a||(a=!0,s.agentHost.setGlobalEventObserver(async(e,t,s)=>{try{if(!["ask_user","done","goal_updated","error"].includes(t.type))return;let{getWebPushService:o}=await Promise.all([r.e(6977),r.e(9362)]).then(r.bind(r,9362));if("ask_user"===t.type){o().notifySession({notificationId:`${e}:${t.questionId}:approval`,sessionId:e,kind:"approval",title:"需要你的审批",body:"string"==typeof t.question&&t.question.trim()?t.question.trim().slice(0,160):"会话正在等待确认",url:"/app/"});return}if("done"===t.type){if("goal"===s.source)return;let r=(0,n.resolveTaskNotificationPreferences)((0,i.dp)().read().taskNotifications),a=s.runId?(0,n.createTaskCompletionNotification)({sessionId:e,runId:s.runId,title:"任务已完成",finalText:t.finalText,outcome:"completed",source:"user"},r):null;a&&l.accept(a.notificationId)&&o().notifySession({...a,url:`/app/?session=${encodeURIComponent(e)}`});return}if("goal_updated"===t.type&&"complete"===t.goal.status){let r=(0,n.resolveTaskNotificationPreferences)((0,i.dp)().read().taskNotifications),s=(0,n.createTaskCompletionNotification)({sessionId:e,runId:`goal:${t.goal.createdAt}`,title:"目标已完成",finalText:t.goal.objective,outcome:"completed",source:"goal",goalFinished:!0},r);s&&l.accept(s.notificationId)&&o().notifySession({...s,url:`/app/?session=${encodeURIComponent(e)}`});return}"error"===t.type&&o().notifySession({notificationId:`${e}:${s.runId??"unknown"}:error`,sessionId:e,kind:"error",title:"会话出错",body:"string"==typeof t.message&&t.message.trim()?t.message.trim().slice(0,160):"运行失败",url:"/app/"})}catch(t){(0,o.L)().warn("web push notify failed",{sessionId:e,error:t instanceof Error?t.message:String(t)})}}))}},6361:(e,t,r)=>{r.d(t,{Q:()=>i,e:()=>n});var s=r(1636),o=r(7519);function n(){let e=new s.ToolRegistry;(0,s.registerBuiltinTools)(e);let t=new s.SkillRegistry;for(let r of(e.register(new s.SkillDiscoverTool(t,null)),e.register(new s.SkillLoadTool(t,null)),o.agentHost.getBuilder().getToolRegistry().getAll()))e.register(r);return e.register(new s.DispatchAgentTool(async()=>({status:"failed",agentName:"",subSessionId:"",error:"catalog listing only; dispatch runs inside a Customer Agent session"}))),e.register(new s.SpawnAgentTool(async()=>({status:"failed",agentName:"",subSessionId:"",error:"catalog listing only; spawning runs inside a dynamic Customer Agent session"}))),e.register(new s.WaitAgentTool(async()=>({status:"failed",agentName:"",subSessionId:"",error:"catalog listing only; dispatch runs inside a Customer Agent session"}))),e}function i(){return n().getAll().map(e=>e.name).sort()}},1489:(e,t,r)=>{r.d(t,{N:()=>l});var s=r(1636),o=r(2847),n=r(785);class i{constructor(){this.tasks=new s.CronTasks((0,n.kO)()),this.scheduler=new o.CronScheduler(this.tasks,e=>{this.fire(e).catch(e=>console.error("Scheduled Customer Agent run failed",e))},()=>{}),this.scheduler.start()}async fire(e){let{agentHost:t}=await r.e(7519).then(r.bind(r,7519)),{getCustomerGoalCoordinator:s}=await Promise.all([r.e(7519),r.e(732)]).then(r.bind(r,732)),o=e.sessionId;o&&await t.getSessionStore().get(o)||(o=(await t.createSession(e.label||"定时任务")).id,this.tasks.update(e.id,{sessionId:o})),await s().enqueue(o,e.prompt)}call(e,t){let r=String(t[0]||"");switch(e){case"cronList":return this.tasks.list();case"cronCreate":{if("string"!=typeof t[0]||"string"!=typeof t[1]||!t[1].trim())throw Error("cron and prompt required");let e=t[2]&&"object"==typeof t[2]?t[2]:{};return this.tasks.create({cron:t[0],prompt:t[1],recurring:!1!==e.recurring,enabled:!0,durable:!0,..."string"==typeof e.sessionId?{sessionId:e.sessionId}:{},..."string"==typeof e.label?{label:e.label}:{}})}case"cronPause":return this.tasks.pause(r);case"cronResume":return this.tasks.resume(r);case"cronDelete":return this.tasks.delete(r);case"cronDeleteAll":return this.tasks.deleteAll(),{ok:!0};default:throw Error("Unsupported schedule operation")}}}let a=globalThis;function l(){return a.__sharedCronService??=new i}},8615:(e,t,r)=>{let s;r.d(t,{H5:()=>d,cm:()=>l,jw:()=>u});var o=r(1636),n=r(785),i=r(6361);class a{constructor(e=(0,n.kO)()){this.store=new o.SQLiteToolExecutionPolicyStore(e)}list(){return this.store.list()}get(e){return this.store.get(e)}async summaries(){return(await this.store.list()).filter(e=>e.enabled).map(o.toolExecutionPolicySummary)}save(e,t){let r=(0,o.validateToolExecutionPolicy)(e,{knownTools:t,requireExecutables:!0});return this.store.save(r)}delete(e){return this.store.delete(e)}}function l(){return s??=new a}function u(){return(0,i.Q)()}function d(e){let t=e instanceof o.ToolExecutionPolicyError?422:400;return Response.json({error:e instanceof Error?e.message:"Tool policy request failed",code:e instanceof o.ToolExecutionPolicyError?e.code:"INVALID_TOOL_POLICY"},{status:t})}}};var t=require("../../../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),s=t.X(0,[8375,6703,4621,7519,1614],()=>r(7252));module.exports=s})();
|
|
1
|
+
"use strict";(()=>{var e={};e.id=2616,e.ids=[2616],e.modules={8042:e=>{e.exports=require("@agent/computer-use")},1636:e=>{e.exports=require("@agent/core")},2847:e=>{e.exports=require("@agent/native-runtime")},5890:e=>{e.exports=require("better-sqlite3")},399:e=>{e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},517:e=>{e.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},7790:e=>{e.exports=require("assert")},8893:e=>{e.exports=require("buffer")},4770:e=>{e.exports=require("crypto")},2615:e=>{e.exports=require("http")},5240:e=>{e.exports=require("https")},8216:e=>{e.exports=require("net")},9801:e=>{e.exports=require("os")},6162:e=>{e.exports=require("stream")},2452:e=>{e.exports=require("tls")},4175:e=>{e.exports=require("tty")},7360:e=>{e.exports=require("url")},1764:e=>{e.exports=require("util")},7718:e=>{e.exports=require("node:child_process")},6005:e=>{e.exports=require("node:crypto")},7561:e=>{e.exports=require("node:fs")},612:e=>{e.exports=require("node:os")},9411:e=>{e.exports=require("node:path")},5942:(e,t,r)=>{r.r(t),r.d(t,{originalPathname:()=>S,patchFetch:()=>b,requestAsyncStorage:()=>y,routeModule:()=>h,serverHooks:()=>k,staticGenerationAsyncStorage:()=>v});var s={};r.r(s),r.d(s,{POST:()=>x});var o=r(7786),n=r(5042),i=r(2184),a=r(1890),l=r(1636),u=r(2847),d=r(7519),c=r(1614),p=r(535),g=r(1079),m=r(4621),f=r(1982),I=r(8615);async function x(e){try{var t,r;(0,g.j)();let s=await e.json();if(!s.input)return a.NextResponse.json({error:"input is required"},{status:400});if(void 0!==s.agentIds&&(!Array.isArray(s.agentIds)||s.agentIds.length>20||s.agentIds.some(e=>"string"!=typeof e||!e.trim())))return a.NextResponse.json({error:"agentIds must contain at most 20 non-empty IDs"},{status:400});if(void 0!==s.agentId&&void 0!==s.agentIds)return a.NextResponse.json({error:"agentId and agentIds are mutually exclusive"},{status:400});if(void 0!==s.profileId&&("string"!=typeof s.profileId||!s.profileId.trim()||s.profileId.length>200))return a.NextResponse.json({error:"profileId must be a non-empty string"},{status:400});if(s.sessionId&&(0,c.V_)(s.sessionId)){let e=s.sessionId,t=(0,c.NL)(),r=await t.startRun(e,s.input,s.images,"web",{...s.nativeModel?.id?{model:s.nativeModel}:{},...s.nativeReasoningEffort?{reasoningEffort:s.nativeReasoningEffort}:{}});d.agentHost.resetExternalStream(e),d.agentHost.publishExternal(e,{type:"run_admitted",_nativeRunId:r.runId,_nativeSequence:r.snapshotRevision});let o=null,n=!1;return t.subscribe(e,0,({event:t})=>{d.agentHost.publishExternal(e,t),("done"===t.type||"error"===t.type)&&(n=!0,o?.())}).then(e=>{o=e,n&&e()}).catch(t=>{let r=t instanceof u.RuntimeSessionError?t.code:void 0;(0,p.L)().error("native run subscription failed",t,{sessionId:e,code:r}),d.agentHost.publishExternal(e,{type:"error",message:t instanceof Error?t.message:"Native run subscription failed",...r?{code:r}:{}})}),a.NextResponse.json({sessionId:e,streamUrl:`/api/agent/stream?sessionId=${e}`,runId:r.runId,snapshotRevision:r.snapshotRevision})}let o=d.agentHost.getSessionStore(),n={maxIterations:"number"!=typeof(t=s.maxIterations)||!Number.isFinite(t)||t<0?10:Math.trunc(t),maxTokens:"number"==typeof(r=s.maxTokens)&&Number.isFinite(r)?Math.min(2e6,Math.max(8e3,Math.trunc(r))):1e5},i=s.agentId??(s.agentIds?.length===1?s.agentIds[0]:void 0),x=(0,m.i)(),h=new l.StartAgentRunUseCase(o,{getAgent:e=>x.agents.get(e),getSkill:async e=>x.skills.get(e)??(await x.call("listSkills",[])).find(t=>t.name===e)??null,hasModelProfile:e=>(0,f.dp)().read().profiles.some(t=>t.id===e),getToolExecutionPolicy:e=>(0,I.cm)().get(e)},{assertAvailable:e=>{if(d.agentHost.isSessionRunning(e))throw new d.A(e)},start:e=>{let t=d.agentHost.startRun(e.message,e.sessionId,e.images,{...s.model?{model:s.model}:{},...e.modelProfileId?{profileId:e.modelProfileId}:{},...s.reasoningEffort?{reasoningEffort:s.reasoningEffort}:{},...void 0===s.maxIterations?{}:{maxIterations:n.maxIterations},...void 0===s.maxTokens?{}:{maxTokens:n.maxTokens},...s.agentIds?{agentIds:s.agentIds}:e.agent?{agentIds:[e.agent.id]}:{},...e.skill?{activatedSkills:[e.skill.name]}:{},...Object.keys(e.context).length?{context:e.context}:{},toolExecutionPolicy:e.toolExecutionPolicy});return t.completion.catch(t=>{(0,p.L)().error("agent run error",t,{sessionId:e.sessionId}),console.error("Agent run error:",t)}),{sessionId:e.sessionId,runId:t.runId,streamRef:`/api/agent/stream?sessionId=${e.sessionId}`}}}),y=await h.execute({message:s.input,...s.sessionId?{sessionId:s.sessionId}:{},...i?{agentId:i}:{},...s.skillName?{skillName:s.skillName}:{},...s.profileId?{modelProfileId:s.profileId}:{},...s.images?.length?{images:s.images}:{},...s.context?{context:s.context}:{},...s.toolPolicyId?{capabilities:{toolPolicyId:s.toolPolicyId}}:{},session:{...s.projectId?{projectId:s.projectId}:{},...s.title?{title:s.title}:{},...s.metadata?{metadata:s.metadata}:{}},source:s.source??"webapp"});return a.NextResponse.json({sessionId:y.sessionId,streamUrl:y.streamRef,runId:y.runId})}catch(n){(0,p.L)().error("agent run request failed",n,{status:n instanceof u.RuntimeSessionError?n.code:void 0});let e=n instanceof u.RuntimeSessionError?n.code:void 0,t=n instanceof d.A?n.code:void 0,r=n instanceof l.AgentRunError?n.code:void 0,s=e??t??r,o="SESSION_OCCUPIED"===s||"SESSION_ALREADY_RUNNING"===s;return a.NextResponse.json({error:n instanceof Error?n.message:"Internal error",...s?{code:s}:{}},{status:o?409:("AGENT_NOT_FOUND"===r||"SKILL_NOT_FOUND"===r||"MODEL_PROFILE_NOT_FOUND"===r||"TOOL_POLICY_NOT_FOUND"===r?404:"SKILL_NOT_ALLOWED"===r||"TOOL_POLICY_DISABLED"===r?422:r?400:void 0)??500})}}let h=new o.AppRouteRouteModule({definition:{kind:n.x.APP_ROUTE,page:"/api/agent/run/route",pathname:"/api/agent/run",filename:"route",bundlePath:"app/api/agent/run/route"},resolvedPagePath:"/private/tmp/agentroam-preview70-20261030/packages/server/app/api/agent/run/route.ts",nextConfigOutput:"standalone",userland:s}),{requestAsyncStorage:y,staticGenerationAsyncStorage:v,serverHooks:k}=h,S="/api/agent/run/route";function b(){return(0,i.patchFetch)({serverHooks:k,staticGenerationAsyncStorage:v})}},1079:(e,t,r)=>{r.d(t,{j:()=>u});var s=r(7519),o=r(535),n=r(1636),i=r(1982);let a=!1,l=new n.NotificationDeduper;function u(){a||(a=!0,s.agentHost.setGlobalEventObserver(async(e,t,s)=>{try{if(!["ask_user","done","goal_updated","error"].includes(t.type))return;let{getWebPushService:o}=await Promise.all([r.e(6977),r.e(9362)]).then(r.bind(r,9362));if("ask_user"===t.type){o().notifySession({notificationId:`${e}:${t.questionId}:approval`,sessionId:e,kind:"approval",title:"需要你的审批",body:"string"==typeof t.question&&t.question.trim()?t.question.trim().slice(0,160):"会话正在等待确认",url:"/app/"});return}if("done"===t.type){if("goal"===s.source)return;let r=(0,n.resolveTaskNotificationPreferences)((0,i.dp)().read().taskNotifications),a=s.runId?(0,n.createTaskCompletionNotification)({sessionId:e,runId:s.runId,title:"任务已完成",finalText:t.finalText,outcome:"completed",source:"user"},r):null;a&&l.accept(a.notificationId)&&o().notifySession({...a,url:`/app/?session=${encodeURIComponent(e)}`});return}if("goal_updated"===t.type&&"complete"===t.goal.status){let r=(0,n.resolveTaskNotificationPreferences)((0,i.dp)().read().taskNotifications),s=(0,n.createTaskCompletionNotification)({sessionId:e,runId:`goal:${t.goal.createdAt}`,title:"目标已完成",finalText:t.goal.objective,outcome:"completed",source:"goal",goalFinished:!0},r);s&&l.accept(s.notificationId)&&o().notifySession({...s,url:`/app/?session=${encodeURIComponent(e)}`});return}"error"===t.type&&o().notifySession({notificationId:`${e}:${s.runId??"unknown"}:error`,sessionId:e,kind:"error",title:"会话出错",body:"string"==typeof t.message&&t.message.trim()?t.message.trim().slice(0,160):"运行失败",url:"/app/"})}catch(t){(0,o.L)().warn("web push notify failed",{sessionId:e,error:t instanceof Error?t.message:String(t)})}}))}},6361:(e,t,r)=>{r.d(t,{Q:()=>i,e:()=>n});var s=r(1636),o=r(7519);function n(){let e=new s.ToolRegistry;(0,s.registerBuiltinTools)(e);let t=new s.SkillRegistry;for(let r of(e.register(new s.SkillDiscoverTool(t,null)),e.register(new s.SkillLoadTool(t,null)),o.agentHost.getBuilder().getToolRegistry().getAll()))e.register(r);return e.register(new s.DispatchAgentTool(async()=>({status:"failed",agentName:"",subSessionId:"",error:"catalog listing only; dispatch runs inside a Customer Agent session"}))),e.register(new s.SpawnAgentTool(async()=>({status:"failed",agentName:"",subSessionId:"",error:"catalog listing only; spawning runs inside a dynamic Customer Agent session"}))),e.register(new s.WaitAgentTool(async()=>({status:"failed",agentName:"",subSessionId:"",error:"catalog listing only; dispatch runs inside a Customer Agent session"}))),e}function i(){return n().getAll().map(e=>e.name).sort()}},1489:(e,t,r)=>{r.d(t,{N:()=>l});var s=r(1636),o=r(2847),n=r(785);class i{constructor(){this.tasks=new s.CronTasks((0,n.kO)()),this.scheduler=new o.CronScheduler(this.tasks,e=>{this.fire(e).catch(e=>console.error("Scheduled Customer Agent run failed",e))},()=>{}),this.scheduler.start()}async fire(e){let{agentHost:t}=await r.e(7519).then(r.bind(r,7519)),{getCustomerGoalCoordinator:s}=await Promise.all([r.e(7519),r.e(732)]).then(r.bind(r,732)),o=e.sessionId;o&&await t.getSessionStore().get(o)||(o=(await t.createSession(e.label||"定时任务")).id,this.tasks.update(e.id,{sessionId:o})),await s().enqueue(o,e.prompt)}call(e,t){let r=String(t[0]||"");switch(e){case"cronList":return this.tasks.list();case"cronCreate":{if("string"!=typeof t[0]||"string"!=typeof t[1]||!t[1].trim())throw Error("cron and prompt required");let e=t[2]&&"object"==typeof t[2]?t[2]:{};return this.tasks.create({cron:t[0],prompt:t[1],recurring:!1!==e.recurring,enabled:!0,durable:!0,..."string"==typeof e.sessionId?{sessionId:e.sessionId}:{},..."string"==typeof e.label?{label:e.label}:{}})}case"cronPause":return this.tasks.pause(r);case"cronResume":return this.tasks.resume(r);case"cronDelete":return this.tasks.delete(r);case"cronDeleteAll":return this.tasks.deleteAll(),{ok:!0};default:throw Error("Unsupported schedule operation")}}}let a=globalThis;function l(){return a.__sharedCronService??=new i}},8615:(e,t,r)=>{let s;r.d(t,{H5:()=>d,cm:()=>l,jw:()=>u});var o=r(1636),n=r(785),i=r(6361);class a{constructor(e=(0,n.kO)()){this.store=new o.SQLiteToolExecutionPolicyStore(e)}list(){return this.store.list()}get(e){return this.store.get(e)}async summaries(){return(await this.store.list()).filter(e=>e.enabled).map(o.toolExecutionPolicySummary)}save(e,t){let r=(0,o.validateToolExecutionPolicy)(e,{knownTools:t,requireExecutables:!0});return this.store.save(r)}delete(e){return this.store.delete(e)}}function l(){return s??=new a}function u(){return(0,i.Q)()}function d(e){let t=e instanceof o.ToolExecutionPolicyError?422:400;return Response.json({error:e instanceof Error?e.message:"Tool policy request failed",code:e instanceof o.ToolExecutionPolicyError?e.code:"INVALID_TOOL_POLICY"},{status:t})}}};var t=require("../../../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),s=t.X(0,[8375,6703,4621,7519,1614],()=>r(5942));module.exports=s})();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";(()=>{var e={};e.id=5352,e.ids=[5352],e.modules={1636:e=>{e.exports=require("@agent/core")},2847:e=>{e.exports=require("@agent/native-runtime")},399:e=>{e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},517:e=>{e.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},7718:e=>{e.exports=require("node:child_process")},7561:e=>{e.exports=require("node:fs")},612:e=>{e.exports=require("node:os")},9411:e=>{e.exports=require("node:path")},
|
|
1
|
+
"use strict";(()=>{var e={};e.id=5352,e.ids=[5352],e.modules={1636:e=>{e.exports=require("@agent/core")},2847:e=>{e.exports=require("@agent/native-runtime")},399:e=>{e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},517:e=>{e.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},7718:e=>{e.exports=require("node:child_process")},7561:e=>{e.exports=require("node:fs")},612:e=>{e.exports=require("node:os")},9411:e=>{e.exports=require("node:path")},2942:(e,r,t)=>{t.r(r),t.d(r,{originalPathname:()=>m,patchFetch:()=>h,requestAsyncStorage:()=>c,routeModule:()=>d,serverHooks:()=>v,staticGenerationAsyncStorage:()=>g});var n={};t.r(n),t.d(n,{GET:()=>l,dynamic:()=>p});var o=t(7786),a=t(5042),i=t(2184),s=t(1890),u=t(1614);let p="force-dynamic";async function l(){let e=await (0,u.NL)().health();return s.NextResponse.json([{agentType:"customer-agent",available:!0,label:"Customer Agent"},...e])}let d=new o.AppRouteRouteModule({definition:{kind:a.x.APP_ROUTE,page:"/api/agent/runtime-health/route",pathname:"/api/agent/runtime-health",filename:"route",bundlePath:"app/api/agent/runtime-health/route"},resolvedPagePath:"/private/tmp/agentroam-preview70-20261030/packages/server/app/api/agent/runtime-health/route.ts",nextConfigOutput:"standalone",userland:n}),{requestAsyncStorage:c,staticGenerationAsyncStorage:g,serverHooks:v}=d,m="/api/agent/runtime-health/route";function h(){return(0,i.patchFetch)({serverHooks:v,staticGenerationAsyncStorage:g})}},535:(e,r,t)=>{t.d(r,{L:()=>i});var n=t(1636),o=t(785);let a=!1;function i(){let e=(0,n.getGlobalLogger)();if(e)return e;let r=(0,n.installGlobalLogging)({dir:(0,o.ME)(),source:"server",minLevel:"info",handlers:{exitOnUncaughtException:!1}});return a||(a=!0,r.info("server logger attached",{dir:r.dir,pid:process.pid})),r}},785:(e,r,t)=>{t.d(r,{ME:()=>s,kO:()=>i,sr:()=>u});var n=t(9411);let o=function(){let e=process.argv[1];if(e){let r=(0,n.dirname)((0,n.resolve)(e)),t=`${n.sep}node_modules${n.sep}.bin`;return r.endsWith(t)?(0,n.resolve)(r,"..",".."):r}return(0,n.resolve)(process.cwd())}();function a(e=process.env,r=o){return(0,n.resolve)(e.AGENT_DATA_DIR?.trim()||r)}function i(){return a()}function s(e=process.env,r=a(e)){let t=e.AGENT_LOG_DIR?.trim();if(t)return(0,n.resolve)(t);let o=e.AGENTROAM_DATA_DIR?.trim();return o?(0,n.resolve)(o,"logs"):(0,n.join)(r,".agent-data","logs")}function u(){return function(e=process.env,r=o){return(0,n.resolve)(e.AGENT_WORKING_DIRECTORY?.trim()||r)}(process.env,i())}}};var r=require("../../../../webpack-runtime.js");r.C(e);var t=e=>r(r.s=e),n=r.X(0,[8375,6703,1614],()=>t(2942));module.exports=n})();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";(()=>{var e={};e.id=5369,e.ids=[5369,732],e.modules={8042:e=>{e.exports=require("@agent/computer-use")},1636:e=>{e.exports=require("@agent/core")},2847:e=>{e.exports=require("@agent/native-runtime")},399:e=>{e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},517:e=>{e.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},7718:e=>{e.exports=require("node:child_process")},6005:e=>{e.exports=require("node:crypto")},7561:e=>{e.exports=require("node:fs")},612:e=>{e.exports=require("node:os")},9411:e=>{e.exports=require("node:path")},
|
|
1
|
+
"use strict";(()=>{var e={};e.id=5369,e.ids=[5369,732],e.modules={8042:e=>{e.exports=require("@agent/computer-use")},1636:e=>{e.exports=require("@agent/core")},2847:e=>{e.exports=require("@agent/native-runtime")},399:e=>{e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},517:e=>{e.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},7718:e=>{e.exports=require("node:child_process")},6005:e=>{e.exports=require("node:crypto")},7561:e=>{e.exports=require("node:fs")},612:e=>{e.exports=require("node:os")},9411:e=>{e.exports=require("node:path")},7587:(e,t,s)=>{s.r(t),s.d(t,{originalPathname:()=>w,patchFetch:()=>f,requestAsyncStorage:()=>h,routeModule:()=>p,serverHooks:()=>m,staticGenerationAsyncStorage:()=>g});var r={};s.r(r),s.d(r,{POST:()=>c});var a=s(7786),i=s(5042),n=s(2184),o=s(732),u=s(1890),d=s(7519),l=s(1614);async function c(e){try{let t=await e.json();if(!t.sessionId||!t.input&&!t.messageId)return u.NextResponse.json({error:"sessionId and input or messageId are required"},{status:400});if((0,l.V_)(t.sessionId)){if(t.messageId)return u.NextResponse.json(await (0,l.NL)().steerMessage(t.sessionId,t.messageId));if(!t.input)return u.NextResponse.json({error:"input is required"},{status:400});let e=await (0,l.NL)().steer(t.sessionId,t.input);return u.NextResponse.json({steered:e})}if(t.messageId)return u.NextResponse.json({steered:!0,state:await (0,o.getCustomerGoalCoordinator)().steer(t.sessionId,t.messageId)});if(!t.input)return u.NextResponse.json({error:"input is required"},{status:400});let s=await d.agentHost.steer(t.input,t.sessionId);return u.NextResponse.json({steered:s})}catch(e){return u.NextResponse.json({error:e instanceof Error?e.message:"Internal error"},{status:(0,l.WW)(e)})}}let p=new a.AppRouteRouteModule({definition:{kind:i.x.APP_ROUTE,page:"/api/agent/steer/route",pathname:"/api/agent/steer",filename:"route",bundlePath:"app/api/agent/steer/route"},resolvedPagePath:"/private/tmp/agentroam-preview70-20261030/packages/server/app/api/agent/steer/route.ts",nextConfigOutput:"standalone",userland:r}),{requestAsyncStorage:h,staticGenerationAsyncStorage:g,serverHooks:m}=p,w="/api/agent/steer/route";function f(){return(0,n.patchFetch)({serverHooks:m,staticGenerationAsyncStorage:g})}},732:(e,t,s)=>{s.d(t,{getCustomerGoalCoordinator:()=>d,U:()=>l});var r=s(1636),a=s(7519);class i{constructor(e,t,s,r,a,i){this.store=e,this.busy=t,this.run=s,this.abort=r,this.steerRun=a,this.persist=i,this.tails=new Map,this.draining=new Set}async get(e,t=!0){let s=(0,r.readSessionGoalState)((await this.require(e)).metadata);return t&&this.resume(e),s}async enqueue(e,t,s){let a=await this.mutate(e,a=>(0,r.enqueueSessionGoal)(a,{id:crypto.randomUUID(),sessionId:e,objective:t,sourceMessageId:s,now:Date.now()}));return this.resume(e),a}async enqueueMessage(e,t,s,a){let i=await this.mutate(e,i=>[i.active,...i.queued,...i.history].some(e=>e?.sourceMessageId===s)?i:(0,r.enqueueSessionMessage)(i,{id:crypto.randomUUID(),sessionId:e,objective:t,sourceMessageId:s,messagePayload:a,now:Date.now(),activate:!1}));return this.resume(e),i}reorder(e,t,s=!1){return this.mutate(e,e=>s?(0,r.reorderQueuedSessionMessages)(e,t):(0,r.reorderQueuedSessionGoals)(e,t))}updateMessage(e,t,s,a){return this.mutate(e,e=>(0,r.updateQueuedSessionMessage)(e,t,s,a))}async cancel(e,t){let s=await this.mutate(e,s=>(s.active?.id===t&&this.draining.has(e)&&this.abort(e),(0,r.cancelSessionGoal)(s,t,Date.now())));return this.resume(e),s}async steer(e,t){return this.mutate(e,async s=>{let a=s.queued.find(e=>e.id===t&&"message"===e.kind);if(!a||!this.busy(e))throw Error("没有可引导的运行或排队消息");if(!await this.steerRun(e,a.objective))throw Error("运行已结束,请继续排队");return(0,r.cancelSessionGoal)(s,t,Date.now())})}resume(e){this.draining.has(e)||(this.draining.add(e),this.drain(e).catch(e=>console.error("Customer queue failed",e)).finally(()=>this.draining.delete(e)))}async drain(e){for(;;){let t;let s=await this.get(e,!1);if(!s.active&&!s.queued.length)return;if(this.busy(e)){await new Promise(e=>setTimeout(e,100));continue}let a=(await this.mutate(e,e=>(0,r.promoteNextSessionQueueItem)(e,Date.now()))).active;if(!a)continue;let i="failed";try{i=await this.run(e,a)}catch(e){if(e?.code==="SESSION_ALREADY_RUNNING")continue;t=e instanceof Error?e.message:String(e)}await this.mutate(e,e=>e.active?.id===a.id?(0,r.finishActiveSessionGoal)(e,i,Date.now(),t):e)}}async require(e){let t=await this.store.get(e);if(!t)throw Error("Session not found");return t}async mutate(e,t){let s=(this.tails.get(e)??Promise.resolve()).catch(()=>{}).then(async()=>{let s=await this.require(e),a=await t((0,r.readSessionGoalState)(s.metadata));if(this.persist)this.persist(e,a);else{let t=await this.require(e);await this.store.update(e,{metadata:(0,r.writeSessionGoalState)(t.metadata,a)})}return a});this.tails.set(e,s);try{return await s}finally{this.tails.get(e)===s&&this.tails.delete(e)}}}var n=s(785);let o=globalThis,u=new Set;function d(){return o.__sharedCustomerQueue??=new i(a.agentHost.getSessionStore(),e=>a.agentHost.isSessionRunning(e),async(e,t)=>{u.add(e);try{return await a.agentHost.startRun(t.objective,e,t.messagePayload?.images,{agentIds:t.messagePayload?.agentIds}).completion,(await a.agentHost.getSessionStore().get(e))?.status==="completed"?"completed":"failed"}finally{u.delete(e)}},e=>{u.has(e)&&a.agentHost.abort(e)},(e,t)=>a.agentHost.steer(t,e),(e,t)=>{(0,r.getDatabase)((0,n.kO)()).db.prepare("UPDATE sessions SET metadata = json_set(metadata, '$.goalState', json(?)), updated = ? WHERE id = ?").run(JSON.stringify(t),new Date().toISOString(),e)})}function l(){for(let e of(0,r.getDatabase)((0,n.kO)()).db.prepare("SELECT id FROM sessions WHERE json_extract(metadata, '$.goalState.active') IS NOT NULL OR json_array_length(metadata, '$.goalState.queued') > 0").all())d().resume(e.id)}},1489:(e,t,s)=>{s.d(t,{N:()=>u});var r=s(1636),a=s(2847),i=s(785);class n{constructor(){this.tasks=new r.CronTasks((0,i.kO)()),this.scheduler=new a.CronScheduler(this.tasks,e=>{this.fire(e).catch(e=>console.error("Scheduled Customer Agent run failed",e))},()=>{}),this.scheduler.start()}async fire(e){let{agentHost:t}=await s.e(7519).then(s.bind(s,7519)),{getCustomerGoalCoordinator:r}=await Promise.all([s.e(7519),s.e(732)]).then(s.bind(s,732)),a=e.sessionId;a&&await t.getSessionStore().get(a)||(a=(await t.createSession(e.label||"定时任务")).id,this.tasks.update(e.id,{sessionId:a})),await r().enqueue(a,e.prompt)}call(e,t){let s=String(t[0]||"");switch(e){case"cronList":return this.tasks.list();case"cronCreate":{if("string"!=typeof t[0]||"string"!=typeof t[1]||!t[1].trim())throw Error("cron and prompt required");let e=t[2]&&"object"==typeof t[2]?t[2]:{};return this.tasks.create({cron:t[0],prompt:t[1],recurring:!1!==e.recurring,enabled:!0,durable:!0,..."string"==typeof e.sessionId?{sessionId:e.sessionId}:{},..."string"==typeof e.label?{label:e.label}:{}})}case"cronPause":return this.tasks.pause(s);case"cronResume":return this.tasks.resume(s);case"cronDelete":return this.tasks.delete(s);case"cronDeleteAll":return this.tasks.deleteAll(),{ok:!0};default:throw Error("Unsupported schedule operation")}}}let o=globalThis;function u(){return o.__sharedCronService??=new n}}};var t=require("../../../../webpack-runtime.js");t.C(e);var s=e=>t(t.s=e),r=t.X(0,[8375,6703,4621,7519,1614],()=>s(7587));module.exports=r})();
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";(()=>{var e={};e.id=820,e.ids=[820],e.modules={8042:e=>{e.exports=require("@agent/computer-use")},1636:e=>{e.exports=require("@agent/core")},2847:e=>{e.exports=require("@agent/native-runtime")},5890:e=>{e.exports=require("better-sqlite3")},399:e=>{e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},517:e=>{e.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},7790:e=>{e.exports=require("assert")},8893:e=>{e.exports=require("buffer")},4770:e=>{e.exports=require("crypto")},2615:e=>{e.exports=require("http")},5240:e=>{e.exports=require("https")},8216:e=>{e.exports=require("net")},9801:e=>{e.exports=require("os")},6162:e=>{e.exports=require("stream")},2452:e=>{e.exports=require("tls")},4175:e=>{e.exports=require("tty")},7360:e=>{e.exports=require("url")},1764:e=>{e.exports=require("util")},7718:e=>{e.exports=require("node:child_process")},6005:e=>{e.exports=require("node:crypto")},7561:e=>{e.exports=require("node:fs")},612:e=>{e.exports=require("node:os")},9411:e=>{e.exports=require("node:path")},
|
|
1
|
+
"use strict";(()=>{var e={};e.id=820,e.ids=[820],e.modules={8042:e=>{e.exports=require("@agent/computer-use")},1636:e=>{e.exports=require("@agent/core")},2847:e=>{e.exports=require("@agent/native-runtime")},5890:e=>{e.exports=require("better-sqlite3")},399:e=>{e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},517:e=>{e.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},7790:e=>{e.exports=require("assert")},8893:e=>{e.exports=require("buffer")},4770:e=>{e.exports=require("crypto")},2615:e=>{e.exports=require("http")},5240:e=>{e.exports=require("https")},8216:e=>{e.exports=require("net")},9801:e=>{e.exports=require("os")},6162:e=>{e.exports=require("stream")},2452:e=>{e.exports=require("tls")},4175:e=>{e.exports=require("tty")},7360:e=>{e.exports=require("url")},1764:e=>{e.exports=require("util")},7718:e=>{e.exports=require("node:child_process")},6005:e=>{e.exports=require("node:crypto")},7561:e=>{e.exports=require("node:fs")},612:e=>{e.exports=require("node:os")},9411:e=>{e.exports=require("node:path")},5165:(e,t,r)=>{r.r(t),r.d(t,{originalPathname:()=>h,patchFetch:()=>v,requestAsyncStorage:()=>f,routeModule:()=>d,serverHooks:()=>m,staticGenerationAsyncStorage:()=>g});var n={};r.r(n),r.d(n,{GET:()=>c});var s=r(7786),a=r(5042),o=r(2184),i=r(7519),u=r(1614),l=r(1079);async function c(e){(0,l.j)();let t=new URL(e.url).searchParams.get("sessionId");if(!t)return new Response("sessionId is required",{status:400});if((0,u.V_)(t))return p(e,t);let r=!1,n=null,s=null;return new Response(new ReadableStream({start(a){let o=new TextEncoder,u=()=>{if(!r){r=!0,n?.(),n=null,s&&e.signal.removeEventListener("abort",s);try{a.close()}catch{}}},l=e=>{if(r)return!1;try{return a.enqueue(o.encode(e)),!0}catch{return u(),!1}};if(!l(": connected\n\n"))return;let c=Number.parseInt(e.headers.get("last-event-id")??"",10),p=Number.parseInt(new URL(e.url).searchParams.get("afterEventId")??"",10),d=Number.isSafeInteger(c)?c:Number.isSafeInteger(p)?p:i.agentHost.isSessionRunning(t)?0:i.agentHost.getLatestEventId(t);n=i.agentHost.subscribe(t,(e,t)=>{l(`id: ${t}
|
|
2
2
|
data: ${JSON.stringify(e)}
|
|
3
3
|
|
|
4
4
|
`)&&("done"===e.type||"error"===e.type)&&u()},d),s=u,e.signal.aborted?u():e.signal.addEventListener("abort",s,{once:!0})},cancel(){r=!0,n?.(),n=null,s&&e.signal.removeEventListener("abort",s)}}),{headers:{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"}})}async function p(e,t){let r=!1,n=null,s=null,a=(0,u.NL)(),o=new URL(e.url),i=Number.parseInt(o.searchParams.get("afterSequence")??"",10),l=o.searchParams.get("afterRunId"),c=e.headers.get("last-event-id");return new Response(new ReadableStream({async start(o){let u=new TextEncoder,p=()=>{if(!r){r=!0,n?.(),n=null,s&&e.signal.removeEventListener("abort",s);try{o.close()}catch{}}},d=e=>{if(r)return!1;try{return o.enqueue(u.encode(e)),!0}catch{return p(),!1}};if(d(": connected\n\n"))try{let r=await a.snapshot(t),o=function(e){if(!e)return null;let t=e.lastIndexOf(":");if(t<0){let t=Number.parseInt(e,10);return Number.isSafeInteger(t)?{runId:null,sequence:t}:null}let r=e.slice(0,t),n=Number.parseInt(e.slice(t+1),10);return r&&Number.isSafeInteger(n)?{runId:r,sequence:n}:null}(c),u=Number.isSafeInteger(i)?{runId:l,sequence:i}:null,f=o??u,g=f?f.runId&&f.runId!==r.runId?0:f.sequence:r.snapshotRevision;n=await a.subscribe(t,g,({runId:e,sequence:t,event:r})=>{let n={...r,_nativeRunId:e,_nativeSequence:t};d(`id: ${e}:${t}
|
|
@@ -7,4 +7,4 @@ data: ${JSON.stringify(n)}
|
|
|
7
7
|
`)&&("done"===r.type||"error"===r.type)&&p()}),s=p,e.signal.aborted?p():e.signal.addEventListener("abort",s,{once:!0})}catch(e){d(`event: error
|
|
8
8
|
data: ${JSON.stringify({type:"error",message:e instanceof Error?e.message:"Native stream failed"})}
|
|
9
9
|
|
|
10
|
-
`),p()}},cancel(){r=!0,n?.(),n=null,s&&e.signal.removeEventListener("abort",s)}}),{headers:{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"}})}let d=new s.AppRouteRouteModule({definition:{kind:a.x.APP_ROUTE,page:"/api/agent/stream/route",pathname:"/api/agent/stream",filename:"route",bundlePath:"app/api/agent/stream/route"},resolvedPagePath:"/private/tmp/agentroam-
|
|
10
|
+
`),p()}},cancel(){r=!0,n?.(),n=null,s&&e.signal.removeEventListener("abort",s)}}),{headers:{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"}})}let d=new s.AppRouteRouteModule({definition:{kind:a.x.APP_ROUTE,page:"/api/agent/stream/route",pathname:"/api/agent/stream",filename:"route",bundlePath:"app/api/agent/stream/route"},resolvedPagePath:"/private/tmp/agentroam-preview70-20261030/packages/server/app/api/agent/stream/route.ts",nextConfigOutput:"standalone",userland:n}),{requestAsyncStorage:f,staticGenerationAsyncStorage:g,serverHooks:m}=d,h="/api/agent/stream/route";function v(){return(0,o.patchFetch)({serverHooks:m,staticGenerationAsyncStorage:g})}},7786:(e,t,r)=>{e.exports=r(517)},1079:(e,t,r)=>{r.d(t,{j:()=>l});var n=r(7519),s=r(535),a=r(1636),o=r(1982);let i=!1,u=new a.NotificationDeduper;function l(){i||(i=!0,n.agentHost.setGlobalEventObserver(async(e,t,n)=>{try{if(!["ask_user","done","goal_updated","error"].includes(t.type))return;let{getWebPushService:s}=await Promise.all([r.e(6977),r.e(9362)]).then(r.bind(r,9362));if("ask_user"===t.type){s().notifySession({notificationId:`${e}:${t.questionId}:approval`,sessionId:e,kind:"approval",title:"需要你的审批",body:"string"==typeof t.question&&t.question.trim()?t.question.trim().slice(0,160):"会话正在等待确认",url:"/app/"});return}if("done"===t.type){if("goal"===n.source)return;let r=(0,a.resolveTaskNotificationPreferences)((0,o.dp)().read().taskNotifications),i=n.runId?(0,a.createTaskCompletionNotification)({sessionId:e,runId:n.runId,title:"任务已完成",finalText:t.finalText,outcome:"completed",source:"user"},r):null;i&&u.accept(i.notificationId)&&s().notifySession({...i,url:`/app/?session=${encodeURIComponent(e)}`});return}if("goal_updated"===t.type&&"complete"===t.goal.status){let r=(0,a.resolveTaskNotificationPreferences)((0,o.dp)().read().taskNotifications),n=(0,a.createTaskCompletionNotification)({sessionId:e,runId:`goal:${t.goal.createdAt}`,title:"目标已完成",finalText:t.goal.objective,outcome:"completed",source:"goal",goalFinished:!0},r);n&&u.accept(n.notificationId)&&s().notifySession({...n,url:`/app/?session=${encodeURIComponent(e)}`});return}"error"===t.type&&s().notifySession({notificationId:`${e}:${n.runId??"unknown"}:error`,sessionId:e,kind:"error",title:"会话出错",body:"string"==typeof t.message&&t.message.trim()?t.message.trim().slice(0,160):"运行失败",url:"/app/"})}catch(t){(0,s.L)().warn("web push notify failed",{sessionId:e,error:t instanceof Error?t.message:String(t)})}}))}},1489:(e,t,r)=>{r.d(t,{N:()=>u});var n=r(1636),s=r(2847),a=r(785);class o{constructor(){this.tasks=new n.CronTasks((0,a.kO)()),this.scheduler=new s.CronScheduler(this.tasks,e=>{this.fire(e).catch(e=>console.error("Scheduled Customer Agent run failed",e))},()=>{}),this.scheduler.start()}async fire(e){let{agentHost:t}=await r.e(7519).then(r.bind(r,7519)),{getCustomerGoalCoordinator:n}=await Promise.all([r.e(7519),r.e(732)]).then(r.bind(r,732)),s=e.sessionId;s&&await t.getSessionStore().get(s)||(s=(await t.createSession(e.label||"定时任务")).id,this.tasks.update(e.id,{sessionId:s})),await n().enqueue(s,e.prompt)}call(e,t){let r=String(t[0]||"");switch(e){case"cronList":return this.tasks.list();case"cronCreate":{if("string"!=typeof t[0]||"string"!=typeof t[1]||!t[1].trim())throw Error("cron and prompt required");let e=t[2]&&"object"==typeof t[2]?t[2]:{};return this.tasks.create({cron:t[0],prompt:t[1],recurring:!1!==e.recurring,enabled:!0,durable:!0,..."string"==typeof e.sessionId?{sessionId:e.sessionId}:{},..."string"==typeof e.label?{label:e.label}:{}})}case"cronPause":return this.tasks.pause(r);case"cronResume":return this.tasks.resume(r);case"cronDelete":return this.tasks.delete(r);case"cronDeleteAll":return this.tasks.deleteAll(),{ok:!0};default:throw Error("Unsupported schedule operation")}}}let i=globalThis;function u(){return i.__sharedCronService??=new o}}};var t=require("../../../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),n=t.X(0,[8375,4621,7519,1614],()=>r(5165));module.exports=n})();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";(()=>{var e={};e.id=4612,e.ids=[4612],e.modules={8042:e=>{e.exports=require("@agent/computer-use")},1636:e=>{e.exports=require("@agent/core")},2847:e=>{e.exports=require("@agent/native-runtime")},399:e=>{e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},517:e=>{e.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},7718:e=>{e.exports=require("node:child_process")},6005:e=>{e.exports=require("node:crypto")},7561:e=>{e.exports=require("node:fs")},612:e=>{e.exports=require("node:os")},9411:e=>{e.exports=require("node:path")},
|
|
1
|
+
"use strict";(()=>{var e={};e.id=4612,e.ids=[4612],e.modules={8042:e=>{e.exports=require("@agent/computer-use")},1636:e=>{e.exports=require("@agent/core")},2847:e=>{e.exports=require("@agent/native-runtime")},399:e=>{e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},517:e=>{e.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},7718:e=>{e.exports=require("node:child_process")},6005:e=>{e.exports=require("node:crypto")},7561:e=>{e.exports=require("node:fs")},612:e=>{e.exports=require("node:os")},9411:e=>{e.exports=require("node:path")},3521:(e,r,t)=>{t.r(r),t.d(r,{originalPathname:()=>v,patchFetch:()=>x,requestAsyncStorage:()=>f,routeModule:()=>h,serverHooks:()=>k,staticGenerationAsyncStorage:()=>w});var s={};t.r(s),t.d(s,{GET:()=>m});var o=t(7786),a=t(5042),n=t(2184),i=t(1890),u=t(1636),c=t(2847),p=t(7519),d=t(1614),l=t(355),g=t(6405);async function m(e,r){let t;let s=new URL(e.url),o=(0,g.ql)(s.searchParams.get("agentType"));if(!o)return i.NextResponse.json({error:"A valid agentType is required"},{status:400});try{let e=(0,g.MT)(s);t={cursor:e.cursor,limit:e.limit,refresh:e.refresh}}catch(e){return i.NextResponse.json({error:e instanceof Error?e.message:"Invalid query"},{status:400})}try{let e;if("customer-agent"!==o){let e=await (0,d.NL)().listWorkspaceSessions(o,r.params.workspaceId,t),s=(0,l.v)();return i.NextResponse.json({...e,data:e.data.filter(e=>!s.has(e.id))})}let s="",a=null;if(r.params.workspaceId===g.rK){let[r,t]=await Promise.all([p.agentHost.getProjectStore().list(),p.agentHost.getSessionStore().list()]),s=new Set(r.filter(e=>e.description.trim().length>0).map(e=>e.id));e=t.filter(e=>!s.has(e.projectId))}else{let t=await p.agentHost.getProjectStore().get(r.params.workspaceId);if(!t)return i.NextResponse.json({error:"Workspace not found"},{status:404});if(!t.description.trim())return i.NextResponse.json({error:"该项目没有宿主机目录",code:"PROJECT_PATH_REQUIRED"},{status:400});s=t.description,a=t.updated,e=await p.agentHost.getSessionStore().list(t.id)}let n=e.filter(e=>!e.metadata.collaborationGroupId).map(({messages:e,events:t,...o})=>({...o,projectId:r.params.workspaceId,agentType:"customer-agent",nativeSessionId:o.id,cwd:s,occupancy:p.agentHost.isSessionRunning(o.id)?"owned-by-customer-agent":"available",sourceLabel:"Customer Agent",canResume:!0,canDelete:!p.agentHost.isSessionRunning(o.id),permissionMode:(0,u.normalizeToolPermissionMode)(o.metadata.permissionMode)})).sort((e,r)=>r.updated.localeCompare(e.updated));return i.NextResponse.json((0,c.paginateByOffset)(n,t,n[0]?.updated??a))}catch(e){return i.NextResponse.json({error:e instanceof Error?e.message:"Workspace sessions failed"},{status:(0,d.WW)(e)})}}let h=new o.AppRouteRouteModule({definition:{kind:a.x.APP_ROUTE,page:"/api/agent-workspaces/[workspaceId]/sessions/route",pathname:"/api/agent-workspaces/[workspaceId]/sessions",filename:"route",bundlePath:"app/api/agent-workspaces/[workspaceId]/sessions/route"},resolvedPagePath:"/private/tmp/agentroam-preview70-20261030/packages/server/app/api/agent-workspaces/[workspaceId]/sessions/route.ts",nextConfigOutput:"standalone",userland:s}),{requestAsyncStorage:f,staticGenerationAsyncStorage:w,serverHooks:k}=h,v="/api/agent-workspaces/[workspaceId]/sessions/route";function x(){return(0,n.patchFetch)({serverHooks:k,staticGenerationAsyncStorage:w})}},6885:(e,r,t)=>{t.d(r,{Lr:()=>a,VY:()=>o});let s=["customer-agent","codex","claude-code","opencode","deepseek-harness","qoder","zcode","workbuddy"];function o(e){return"string"==typeof e&&s.some(r=>r===e)}function a(e){return o(e)&&"customer-agent"!==e}s.filter(e=>"customer-agent"!==e)},6405:(e,r,t)=>{t.d(r,{MT:()=>n,ql:()=>a,rK:()=>o});var s=t(6885);let o="customer-agent:recent";function a(e){return(0,s.VY)(e)?e:null}function n(e){let r=e.searchParams.get("limit"),t=null===r?50:Number(r);if(!Number.isInteger(t)||t<1||t>200)throw Error("limit must be an integer between 1 and 200");return{cursor:e.searchParams.get("cursor"),since:e.searchParams.get("since"),refresh:"1"===e.searchParams.get("refresh"),limit:t}}},355:(e,r,t)=>{t.d(r,{v:()=>a});var s=t(1636),o=t(785);function a(){let e=new s.SQLiteCollaborationRepository((0,o.kO)()).memberSessionIds();for(let r of new s.SQLiteSupervisionRepository((0,o.kO)()).internalSessionIds())e.add(r);return e}},1489:(e,r,t)=>{t.d(r,{N:()=>u});var s=t(1636),o=t(2847),a=t(785);class n{constructor(){this.tasks=new s.CronTasks((0,a.kO)()),this.scheduler=new o.CronScheduler(this.tasks,e=>{this.fire(e).catch(e=>console.error("Scheduled Customer Agent run failed",e))},()=>{}),this.scheduler.start()}async fire(e){let{agentHost:r}=await t.e(7519).then(t.bind(t,7519)),{getCustomerGoalCoordinator:s}=await Promise.all([t.e(7519),t.e(732)]).then(t.bind(t,732)),o=e.sessionId;o&&await r.getSessionStore().get(o)||(o=(await r.createSession(e.label||"定时任务")).id,this.tasks.update(e.id,{sessionId:o})),await s().enqueue(o,e.prompt)}call(e,r){let t=String(r[0]||"");switch(e){case"cronList":return this.tasks.list();case"cronCreate":{if("string"!=typeof r[0]||"string"!=typeof r[1]||!r[1].trim())throw Error("cron and prompt required");let e=r[2]&&"object"==typeof r[2]?r[2]:{};return this.tasks.create({cron:r[0],prompt:r[1],recurring:!1!==e.recurring,enabled:!0,durable:!0,..."string"==typeof e.sessionId?{sessionId:e.sessionId}:{},..."string"==typeof e.label?{label:e.label}:{}})}case"cronPause":return this.tasks.pause(t);case"cronResume":return this.tasks.resume(t);case"cronDelete":return this.tasks.delete(t);case"cronDeleteAll":return this.tasks.deleteAll(),{ok:!0};default:throw Error("Unsupported schedule operation")}}}let i=globalThis;function u(){return i.__sharedCronService??=new n}}};var r=require("../../../../../webpack-runtime.js");r.C(e);var t=e=>r(r.s=e),s=r.X(0,[8375,6703,4621,7519,1614],()=>t(3521));module.exports=s})();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";(()=>{var e={};e.id=8593,e.ids=[8593],e.modules={8042:e=>{e.exports=require("@agent/computer-use")},1636:e=>{e.exports=require("@agent/core")},2847:e=>{e.exports=require("@agent/native-runtime")},399:e=>{e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},517:e=>{e.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},7718:e=>{e.exports=require("node:child_process")},6005:e=>{e.exports=require("node:crypto")},7561:e=>{e.exports=require("node:fs")},612:e=>{e.exports=require("node:os")},9411:e=>{e.exports=require("node:path")},
|
|
1
|
+
"use strict";(()=>{var e={};e.id=8593,e.ids=[8593],e.modules={8042:e=>{e.exports=require("@agent/computer-use")},1636:e=>{e.exports=require("@agent/core")},2847:e=>{e.exports=require("@agent/native-runtime")},399:e=>{e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},517:e=>{e.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},7718:e=>{e.exports=require("node:child_process")},6005:e=>{e.exports=require("node:crypto")},7561:e=>{e.exports=require("node:fs")},612:e=>{e.exports=require("node:os")},9411:e=>{e.exports=require("node:path")},9805:(e,t,r)=>{r.r(t),r.d(t,{originalPathname:()=>b,patchFetch:()=>I,requestAsyncStorage:()=>T,routeModule:()=>N,serverHooks:()=>R,staticGenerationAsyncStorage:()=>P});var s={};r.r(s),r.d(s,{DELETE:()=>x,GET:()=>v,POST:()=>E});var a=r(7786),o=r(5042),n=r(2184),i=r(1890),c=r(2847),u=r(7519),d=r(1614),l=r(9142),p=r(6005),h=r(7561),m=r(9411),g=r(785);class f{constructor(e){this.filePath=e}read(){try{return JSON.parse((0,h.readFileSync)(this.filePath,"utf8"))}catch(e){if("ENOENT"===e.code)return[];throw e}}write(e){(0,h.mkdirSync)((0,m.dirname)(this.filePath),{recursive:!0});let t=`${this.filePath}.${(0,p.randomUUID)()}.tmp`;(0,h.writeFileSync)(t,JSON.stringify(e),{mode:384}),(0,h.renameSync)(t,this.filePath)}visible(e){let t=this.read();return e.filter(e=>!t.some(t=>t.agentType===e.agentType&&t.workspaceId===e.workspaceId&&t.roots.length===e.roots.length&&t.roots.every(t=>e.roots.includes(t))))}remove(e){if(0===e.roots.length||e.roots.some(e=>{try{return(0,h.statSync)(e).isDirectory()}catch(t){let e=t.code;if("ENOENT"===e||"ENOTDIR"===e)return!1;throw t}}))throw Object.assign(Error("目录仍然有效,请刷新目录列表"),{status:409});let t=this.read().filter(t=>t.agentType!==e.agentType||t.workspaceId!==e.workspaceId);t.push({agentType:e.agentType,workspaceId:e.workspaceId,roots:e.roots}),this.write(t)}restore(e,t){let r=this.read(),s=r.filter(r=>r.agentType!==e||!r.roots.includes(t));s.length!==r.length&&this.write(s)}}function y(){return new f((0,m.join)((0,g.kO)(),".agent-data","removed-workspaces.json"))}var w=r(6405);async function k(e,t){if("customer-agent"!==e)return(0,d.NL)().listWorkspaces(e,t);let r=(await u.agentHost.getProjectStore().list()).filter(e=>e.description.trim().length>0&&!e.id.startsWith("collaboration-")),s=[{agentType:e,workspaceId:w.rK,name:"最近",roots:[],order:-1,source:"derived",canCreateSession:!1},...r.map((t,r)=>({agentType:e,workspaceId:t.id,name:t.name,roots:t.description?[t.description]:[],order:r,updatedAt:t.updated,source:"native"}))];return(0,c.paginateByOffset)(s,t,r[0]?.updated??null)}async function v(e){let t;let r=new URL(e.url),s=(0,w.ql)(r.searchParams.get("agentType"));if(!s)return i.NextResponse.json({error:"A valid agentType is required"},{status:400});try{t=(0,w.MT)(r)}catch(e){return i.NextResponse.json({error:e instanceof Error?e.message:"Invalid query"},{status:400})}try{let e=await k(s,t);return i.NextResponse.json({...e,data:y().visible(e.data)})}catch(e){return i.NextResponse.json({error:e instanceof Error?e.message:"Workspace discovery failed"},{status:(0,d.WW)(e)})}}async function x(e){let t=new URL(e.url),r=(0,w.ql)(t.searchParams.get("agentType")),s=t.searchParams.get("workspaceId");if(!r||!s)return i.NextResponse.json({error:"A valid agentType and workspaceId are required"},{status:400});try{let e=null;do{let t=await k(r,{cursor:e,limit:200,refresh:!0}),a=t.data.find(e=>e.workspaceId===s);if(a)return y().remove(a),i.NextResponse.json({removed:!0,workspaceId:s});e=t.nextCursor}while(e);return i.NextResponse.json({error:"目录不存在,请刷新目录列表"},{status:404})}catch(e){return i.NextResponse.json({error:e instanceof Error?e.message:"目录删除失败"},{status:e.status??(0,d.WW)(e)})}}async function E(e){let t;try{t=await e.json()}catch{return i.NextResponse.json({error:"A JSON body is required"},{status:400})}let r=(0,w.ql)(t.agentType??null);if(!r||!t.path?.trim())return i.NextResponse.json({error:"A valid agentType and path are required"},{status:400});try{let e=l.a.canonicalDirectory(t.path);if("customer-agent"!==r){let s=await (0,d.NL)().importWorkspace(r,e,t.name);return y().restore(r,e),i.NextResponse.json(s,{status:201})}let s=await l.a.list(),a=await l.a.create(e,t.name);return y().restore(r,e),i.NextResponse.json({workspace:{agentType:r,workspaceId:a.id,name:a.name,roots:a.description?[a.description]:[],order:Math.max(0,s.findIndex(e=>e.id===a.id)),updatedAt:a.updated,source:"native"},existing:s.some(e=>e.id===a.id)},{status:201})}catch(t){let e=(0,l.r)(t);if(500!==e.status)return i.NextResponse.json(e.body,{status:e.status});return i.NextResponse.json({error:t instanceof Error?t.message:"Workspace import failed"},{status:(0,d.WW)(t)})}}let N=new a.AppRouteRouteModule({definition:{kind:o.x.APP_ROUTE,page:"/api/agent-workspaces/route",pathname:"/api/agent-workspaces",filename:"route",bundlePath:"app/api/agent-workspaces/route"},resolvedPagePath:"/private/tmp/agentroam-preview70-20261030/packages/server/app/api/agent-workspaces/route.ts",nextConfigOutput:"standalone",userland:s}),{requestAsyncStorage:T,staticGenerationAsyncStorage:P,serverHooks:R}=N,b="/api/agent-workspaces/route";function I(){return(0,n.patchFetch)({serverHooks:R,staticGenerationAsyncStorage:P})}},6885:(e,t,r)=>{r.d(t,{Lr:()=>o,VY:()=>a});let s=["customer-agent","codex","claude-code","opencode","deepseek-harness","qoder","zcode","workbuddy"];function a(e){return"string"==typeof e&&s.some(t=>t===e)}function o(e){return a(e)&&"customer-agent"!==e}s.filter(e=>"customer-agent"!==e)},6405:(e,t,r)=>{r.d(t,{MT:()=>n,ql:()=>o,rK:()=>a});var s=r(6885);let a="customer-agent:recent";function o(e){return(0,s.VY)(e)?e:null}function n(e){let t=e.searchParams.get("limit"),r=null===t?50:Number(t);if(!Number.isInteger(r)||r<1||r>200)throw Error("limit must be an integer between 1 and 200");return{cursor:e.searchParams.get("cursor"),since:e.searchParams.get("since"),refresh:"1"===e.searchParams.get("refresh"),limit:r}}},9142:(e,t,r)=>{r.d(t,{r:()=>p,a:()=>l});var s=r(612),a=r(1636),o=r(785),n=r(7561),i=r(9411),c=r(6005);class u extends Error{constructor(e,t,r){super(e),this.code=t,this.status=r,this.name="WebProjectError"}}class d{constructor(e,t,r=t.roots[0]){this.store=e,this.paths=t,this.installationDirectory=r}list(){return this.store.list()}async get(e){let t=await this.store.get(e);if(!t)throw new u("项目不存在","PROJECT_NOT_FOUND",404);return t}async create(e,t){let r=this.paths.assertDirectory(e);for(let e of(await this.store.list()))if(!e.id.startsWith("collaboration-"))try{if(this.paths.assertDirectory(e.description)===r)return e}catch{}let s=new Date().toISOString();return this.store.create({id:(0,c.randomUUID)(),name:t?.trim()||(0,i.basename)(r)||r,description:r,created:s,updated:s})}async rename(e,t){await this.get(e);let r=t.trim();if(!r)throw new u("项目名称不能为空","PROJECT_NAME_REQUIRED",400);return this.store.update(e,{name:r})}async delete(e){await this.get(e),await this.store.delete(e)}roots(){return this.paths.roots}pickerLocation(){return{roots:this.paths.roots,initialPath:this.paths.assertDirectory(this.installationDirectory)}}directories(e){return this.paths.listDirectories(e)}check(e){try{return this.paths.assertDirectory(e),!0}catch{return!1}}canonicalDirectory(e){return this.paths.assertDirectory(e)}}let l=new d(new a.SQLiteProjectStore((0,o.kO)()),a.HostPathPolicy.fromEnvironment(process.env.AGENT_WEB_ROOTS,(0,s.homedir)()),function(e,t=process.env,r=(0,s.homedir)()){let a=t.AGENTROAM_DATA_DIR?.trim();if(a)return(0,i.resolve)(a);let o=(0,i.join)(r,".agentroam");try{if((0,n.statSync)(o).isDirectory())return o}catch{}return(0,i.resolve)(e)}((0,o.kO)()));function p(e){return e instanceof u?{status:e.status,body:{error:e.message,code:e.code}}:e instanceof a.HostPathError?{status:400,body:{error:e.message,code:e.code}}:{status:500,body:{error:e instanceof Error?e.message:"项目操作失败",code:"PROJECT_OPERATION_FAILED"}}}},1489:(e,t,r)=>{r.d(t,{N:()=>c});var s=r(1636),a=r(2847),o=r(785);class n{constructor(){this.tasks=new s.CronTasks((0,o.kO)()),this.scheduler=new a.CronScheduler(this.tasks,e=>{this.fire(e).catch(e=>console.error("Scheduled Customer Agent run failed",e))},()=>{}),this.scheduler.start()}async fire(e){let{agentHost:t}=await r.e(7519).then(r.bind(r,7519)),{getCustomerGoalCoordinator:s}=await Promise.all([r.e(7519),r.e(732)]).then(r.bind(r,732)),a=e.sessionId;a&&await t.getSessionStore().get(a)||(a=(await t.createSession(e.label||"定时任务")).id,this.tasks.update(e.id,{sessionId:a})),await s().enqueue(a,e.prompt)}call(e,t){let r=String(t[0]||"");switch(e){case"cronList":return this.tasks.list();case"cronCreate":{if("string"!=typeof t[0]||"string"!=typeof t[1]||!t[1].trim())throw Error("cron and prompt required");let e=t[2]&&"object"==typeof t[2]?t[2]:{};return this.tasks.create({cron:t[0],prompt:t[1],recurring:!1!==e.recurring,enabled:!0,durable:!0,..."string"==typeof e.sessionId?{sessionId:e.sessionId}:{},..."string"==typeof e.label?{label:e.label}:{}})}case"cronPause":return this.tasks.pause(r);case"cronResume":return this.tasks.resume(r);case"cronDelete":return this.tasks.delete(r);case"cronDeleteAll":return this.tasks.deleteAll(),{ok:!0};default:throw Error("Unsupported schedule operation")}}}let i=globalThis;function c(){return i.__sharedCronService??=new n}}};var t=require("../../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),s=t.X(0,[8375,6703,4621,7519,1614],()=>r(9805));module.exports=s})();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";(()=>{var e={};e.id=571,e.ids=[571],e.modules={399:e=>{e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},517:e=>{e.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},
|
|
1
|
+
"use strict";(()=>{var e={};e.id=571,e.ids=[571],e.modules={399:e=>{e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},517:e=>{e.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},8869:(e,t,r)=>{r.r(t),r.d(t,{originalPathname:()=>l,patchFetch:()=>h,requestAsyncStorage:()=>d,routeModule:()=>u,serverHooks:()=>c,staticGenerationAsyncStorage:()=>v});var a={};r.r(a),r.d(a,{GET:()=>p});var o=r(7786),s=r(5042),n=r(2184),i=r(1890);async function p(e){let t=e.headers.get("Authorization"),r=t?.replace("Bearer ",""),a=new URL(e.url).searchParams.get("token"),o=process.env.AGENT_SDK_TOKEN;return o?(r||a)===o?i.NextResponse.json({valid:!0,project:"default"}):i.NextResponse.json({valid:!1},{status:401}):i.NextResponse.json({valid:!0,project:"dev"})}let u=new o.AppRouteRouteModule({definition:{kind:s.x.APP_ROUTE,page:"/api/auth/verify/route",pathname:"/api/auth/verify",filename:"route",bundlePath:"app/api/auth/verify/route"},resolvedPagePath:"/private/tmp/agentroam-preview70-20261030/packages/server/app/api/auth/verify/route.ts",nextConfigOutput:"standalone",userland:a}),{requestAsyncStorage:d,staticGenerationAsyncStorage:v,serverHooks:c}=u,l="/api/auth/verify/route";function h(){return(0,n.patchFetch)({serverHooks:c,staticGenerationAsyncStorage:v})}}};var t=require("../../../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),a=t.X(0,[8375,6703],()=>r(8869));module.exports=a})();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";(()=>{var e={};e.id=7462,e.ids=[7462],e.modules={8042:e=>{e.exports=require("@agent/computer-use")},1636:e=>{e.exports=require("@agent/core")},2847:e=>{e.exports=require("@agent/native-runtime")},399:e=>{e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},517:e=>{e.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},6005:e=>{e.exports=require("node:crypto")},7561:e=>{e.exports=require("node:fs")},612:e=>{e.exports=require("node:os")},9411:e=>{e.exports=require("node:path")},
|
|
1
|
+
"use strict";(()=>{var e={};e.id=7462,e.ids=[7462],e.modules={8042:e=>{e.exports=require("@agent/computer-use")},1636:e=>{e.exports=require("@agent/core")},2847:e=>{e.exports=require("@agent/native-runtime")},399:e=>{e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},517:e=>{e.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},6005:e=>{e.exports=require("node:crypto")},7561:e=>{e.exports=require("node:fs")},612:e=>{e.exports=require("node:os")},9411:e=>{e.exports=require("node:path")},3365:(e,r,t)=>{t.r(r),t.d(r,{originalPathname:()=>m,patchFetch:()=>w,requestAsyncStorage:()=>h,routeModule:()=>d,serverHooks:()=>f,staticGenerationAsyncStorage:()=>g});var s={};t.r(s),t.d(s,{POST:()=>c,dynamic:()=>p});var o=t(7786),n=t(5042),a=t(2184),i=t(1489),u=t(4621),l=t(9001);let p="force-dynamic";async function c(e){let r=(0,l.o)(e);if(r)return r;try{let{method:r,args:t}=await e.json();if("string"!=typeof r||!Array.isArray(t)||t.length>10)return Response.json({error:"Invalid operation"},{status:400});return Response.json(r.startsWith("cron")?(0,i.N)().call(r,t):await (0,u.i)().call(r,t),{headers:{"cache-control":"no-store"}})}catch(e){return Response.json({error:e instanceof Error?e.message:"Operation failed"},{status:400})}}let d=new o.AppRouteRouteModule({definition:{kind:n.x.APP_ROUTE,page:"/api/business/route",pathname:"/api/business",filename:"route",bundlePath:"app/api/business/route"},resolvedPagePath:"/private/tmp/agentroam-preview70-20261030/packages/server/app/api/business/route.ts",nextConfigOutput:"standalone",userland:s}),{requestAsyncStorage:h,staticGenerationAsyncStorage:g,serverHooks:f}=d,m="/api/business/route";function w(){return(0,a.patchFetch)({serverHooks:f,staticGenerationAsyncStorage:g})}},7786:(e,r,t)=>{e.exports=t(517)},1489:(e,r,t)=>{t.d(r,{N:()=>u});var s=t(1636),o=t(2847),n=t(785);class a{constructor(){this.tasks=new s.CronTasks((0,n.kO)()),this.scheduler=new o.CronScheduler(this.tasks,e=>{this.fire(e).catch(e=>console.error("Scheduled Customer Agent run failed",e))},()=>{}),this.scheduler.start()}async fire(e){let{agentHost:r}=await t.e(7519).then(t.bind(t,7519)),{getCustomerGoalCoordinator:s}=await Promise.all([t.e(7519),t.e(732)]).then(t.bind(t,732)),o=e.sessionId;o&&await r.getSessionStore().get(o)||(o=(await r.createSession(e.label||"定时任务")).id,this.tasks.update(e.id,{sessionId:o})),await s().enqueue(o,e.prompt)}call(e,r){let t=String(r[0]||"");switch(e){case"cronList":return this.tasks.list();case"cronCreate":{if("string"!=typeof r[0]||"string"!=typeof r[1]||!r[1].trim())throw Error("cron and prompt required");let e=r[2]&&"object"==typeof r[2]?r[2]:{};return this.tasks.create({cron:r[0],prompt:r[1],recurring:!1!==e.recurring,enabled:!0,durable:!0,..."string"==typeof e.sessionId?{sessionId:e.sessionId}:{},..."string"==typeof e.label?{label:e.label}:{}})}case"cronPause":return this.tasks.pause(t);case"cronResume":return this.tasks.resume(t);case"cronDelete":return this.tasks.delete(t);case"cronDeleteAll":return this.tasks.deleteAll(),{ok:!0};default:throw Error("Unsupported schedule operation")}}}let i=globalThis;function u(){return i.__sharedCronService??=new a}},9001:(e,r,t)=>{t.d(r,{o:()=>o});let s=new Set(["capacitor://localhost","ionic://localhost"]);function o(e){if(!e.headers.get("content-type")?.toLowerCase().startsWith("application/json"))return Response.json({error:"JSON required"},{status:415});let r=e.headers.get("origin");if(!r||s.has(r))return null;let t=new URL(e.url),o="1"===process.env.AGENT_TRUST_TUNNEL_PROXY,n=o?e.headers.get("x-forwarded-host")?.split(",")[0].trim()||e.headers.get("host")||t.host:e.headers.get("host")||t.host,a=o&&e.headers.get("x-forwarded-proto")?.split(",")[0].trim()||t.protocol.slice(0,-1);return r!==`${a}://${n}`?Response.json({error:"Cross-origin write denied"},{status:403}):null}}};var r=require("../../../webpack-runtime.js");r.C(e);var t=e=>r(r.s=e),s=r.X(0,[8375,4621],()=>t(3365));module.exports=s})();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";(()=>{var e={};e.id=9015,e.ids=[9015],e.modules={1636:e=>{e.exports=require("@agent/core")},399:e=>{e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},517:e=>{e.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},9411:e=>{e.exports=require("node:path")},
|
|
1
|
+
"use strict";(()=>{var e={};e.id=9015,e.ids=[9015],e.modules={1636:e=>{e.exports=require("@agent/core")},399:e=>{e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},517:e=>{e.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},9411:e=>{e.exports=require("node:path")},7337:(e,r,t)=>{t.r(r),t.d(r,{originalPathname:()=>m,patchFetch:()=>h,requestAsyncStorage:()=>g,routeModule:()=>d,serverHooks:()=>v,staticGenerationAsyncStorage:()=>f});var n={};t.r(n),t.d(n,{POST:()=>p,dynamic:()=>l});var o=t(7786),s=t(5042),i=t(2184),a=t(535);let l="force-dynamic",u=new Map;function c(e,r){if("string"==typeof e&&0!==e.length)return e.length>r?e.slice(0,r):e}async function p(e){let r;let t=Date.now(),n=function(e){let r=e.headers.get("x-forwarded-for");return r?r.split(",")[0].trim():e.headers.get("x-real-ip")??"unknown"}(e);if(!function(e,r){let t=(u.get(e)??[]).filter(e=>r-e<6e4);if(t.length>=60)return u.set(e,t),!1;if(t.push(r),u.set(e,t),u.size>1e4){for(let[e,t]of u)if(t.every(e=>r-e>=6e4)&&u.delete(e),u.size<=5e3)break}return!0}(n,t))return Response.json({error:"rate limited"},{status:429});try{r=await e.json()}catch{return Response.json({error:"invalid JSON body"},{status:400})}let o=Array.isArray(r?.entries)?r.entries.slice(0,20):[r],s=(0,a.L)(),i=0;for(let e of o){let r;let t=c(e.message,4e3);if(!t)continue;let o="string"==typeof e.level?e.level:"error",a="fatal"===o||"warn"===o?o:"error",l=c(e.source,40),u=e.error,p=u&&"object"==typeof u?{name:c(u.name,200)??"Error",message:c(u.message,4e3)??"",stack:c(u.stack,8e3)}:void 0;if(void 0!==e.data)try{let t=JSON.stringify(e.data);t&&t.length<=2e3&&(r=JSON.parse(t))}catch{r=void 0}s.log(a,t,p,{clientIp:n,clientSource:l??"webapp",data:r}),i++}return Response.json({accepted:i},{headers:{"cache-control":"no-store"}})}let d=new o.AppRouteRouteModule({definition:{kind:s.x.APP_ROUTE,page:"/api/client-logs/route",pathname:"/api/client-logs",filename:"route",bundlePath:"app/api/client-logs/route"},resolvedPagePath:"/private/tmp/agentroam-preview70-20261030/packages/server/app/api/client-logs/route.ts",nextConfigOutput:"standalone",userland:n}),{requestAsyncStorage:g,staticGenerationAsyncStorage:f,serverHooks:v}=d,m="/api/client-logs/route";function h(){return(0,i.patchFetch)({serverHooks:v,staticGenerationAsyncStorage:f})}},7786:(e,r,t)=>{e.exports=t(517)},535:(e,r,t)=>{t.d(r,{L:()=>i});var n=t(1636),o=t(785);let s=!1;function i(){let e=(0,n.getGlobalLogger)();if(e)return e;let r=(0,n.installGlobalLogging)({dir:(0,o.ME)(),source:"server",minLevel:"info",handlers:{exitOnUncaughtException:!1}});return s||(s=!0,r.info("server logger attached",{dir:r.dir,pid:process.pid})),r}},785:(e,r,t)=>{t.d(r,{ME:()=>a,kO:()=>i,sr:()=>l});var n=t(9411);let o=function(){let e=process.argv[1];if(e){let r=(0,n.dirname)((0,n.resolve)(e)),t=`${n.sep}node_modules${n.sep}.bin`;return r.endsWith(t)?(0,n.resolve)(r,"..",".."):r}return(0,n.resolve)(process.cwd())}();function s(e=process.env,r=o){return(0,n.resolve)(e.AGENT_DATA_DIR?.trim()||r)}function i(){return s()}function a(e=process.env,r=s(e)){let t=e.AGENT_LOG_DIR?.trim();if(t)return(0,n.resolve)(t);let o=e.AGENTROAM_DATA_DIR?.trim();return o?(0,n.resolve)(o,"logs"):(0,n.join)(r,".agent-data","logs")}function l(){return function(e=process.env,r=o){return(0,n.resolve)(e.AGENT_WORKING_DIRECTORY?.trim()||r)}(process.env,i())}}};var r=require("../../../webpack-runtime.js");r.C(e);var t=e=>r(r.s=e),n=r.X(0,[8375],()=>t(7337));module.exports=n})();
|