agentroam-runtime-win32-x64 0.2.0-preview.21 → 0.2.0-preview.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (155) hide show
  1. package/manifest.json +1 -1
  2. package/package.json +1 -1
  3. package/runtime/.next/BUILD_ID +1 -1
  4. package/runtime/.next/app-build-manifest.json +6 -6
  5. package/runtime/.next/app-path-routes-manifest.json +1 -1
  6. package/runtime/.next/build-manifest.json +3 -3
  7. package/runtime/.next/prerender-manifest.json +1 -1
  8. package/runtime/.next/required-server-files.json +1 -1
  9. package/runtime/.next/server/app/_not-found/page.js +1 -1
  10. package/runtime/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  11. package/runtime/.next/server/app/_not-found.html +1 -1
  12. package/runtime/.next/server/app/_not-found.rsc +1 -1
  13. package/runtime/.next/server/app/api/agent/abort/route.js +1 -1
  14. package/runtime/.next/server/app/api/agent/answer/route.js +1 -1
  15. package/runtime/.next/server/app/api/agent/harness/status/route.js +1 -1
  16. package/runtime/.next/server/app/api/agent/model/route.js +1 -1
  17. package/runtime/.next/server/app/api/agent/models/route.js +1 -1
  18. package/runtime/.next/server/app/api/agent/run/route.js +1 -1
  19. package/runtime/.next/server/app/api/agent/runtime-health/route.js +1 -1
  20. package/runtime/.next/server/app/api/agent/steer/route.js +1 -1
  21. package/runtime/.next/server/app/api/agent/stream/route.js +2 -2
  22. package/runtime/.next/server/app/api/agent-workspaces/[workspaceId]/sessions/route.js +1 -1
  23. package/runtime/.next/server/app/api/agent-workspaces/route.js +1 -1
  24. package/runtime/.next/server/app/api/auth/verify/route.js +1 -1
  25. package/runtime/.next/server/app/api/business/route.js +1 -1
  26. package/runtime/.next/server/app/api/mcp/connect/route.js +1 -1
  27. package/runtime/.next/server/app/api/mcp/disconnect/route.js +1 -1
  28. package/runtime/.next/server/app/api/mcp/servers/route.js +1 -1
  29. package/runtime/.next/server/app/api/memory/[key]/route.js +1 -1
  30. package/runtime/.next/server/app/api/memory/route.js +1 -1
  31. package/runtime/.next/server/app/api/plugins/load/route.js +1 -1
  32. package/runtime/.next/server/app/api/projects/[id]/route.js +1 -1
  33. package/runtime/.next/server/app/api/projects/check/route.js +1 -1
  34. package/runtime/.next/server/app/api/projects/directories/route.js +1 -1
  35. package/runtime/.next/server/app/api/projects/roots/route.js +1 -1
  36. package/runtime/.next/server/app/api/projects/route.js +1 -1
  37. package/runtime/.next/server/app/api/remote-tools/register/route.js +1 -1
  38. package/runtime/.next/server/app/api/sessions/[id]/changes/route.js +2 -2
  39. package/runtime/.next/server/app/api/sessions/[id]/fork/route.js +1 -1
  40. package/runtime/.next/server/app/api/sessions/[id]/goals/route.js +1 -1
  41. package/runtime/.next/server/app/api/sessions/[id]/handoff/route.js +1 -1
  42. package/runtime/.next/server/app/api/sessions/[id]/query-index/route.js +1 -1
  43. package/runtime/.next/server/app/api/sessions/[id]/release/route.js +1 -1
  44. package/runtime/.next/server/app/api/sessions/[id]/route.js +1 -1
  45. package/runtime/.next/server/app/api/sessions/[id]/tool-result/route.js +1 -1
  46. package/runtime/.next/server/app/api/sessions/route.js +1 -1
  47. package/runtime/.next/server/app/api/settings/route.js +1 -1
  48. package/runtime/.next/server/app/api/skills/route.js +1 -1
  49. package/runtime/.next/server/app/api/tools/route.js +1 -1
  50. package/runtime/.next/server/app/api/update/check/route.js +1 -1
  51. package/runtime/.next/server/app/api/update/install/route.js +1 -1
  52. package/runtime/.next/server/app/api/update/status/route.js +1 -1
  53. package/runtime/.next/server/app/api/web-auth/login/route.js +1 -1
  54. package/runtime/.next/server/app/api/web-auth/logout/route.js +1 -1
  55. package/runtime/.next/server/app/api/web-auth/revoke-all/route.js +1 -1
  56. package/runtime/.next/server/app/api/web-auth/setup/route.js +1 -1
  57. package/runtime/.next/server/app/api/web-auth/status/route.js +1 -1
  58. package/runtime/.next/server/app/api/web-console/bootstrap/route.js +1 -1
  59. package/runtime/.next/server/app/api/web-console/device-state/route.js +1 -1
  60. package/runtime/.next/server/app/api/web-console/history/route.js +1 -1
  61. package/runtime/.next/server/app/api/web-console/preferences/route.js +1 -1
  62. package/runtime/.next/server/app/web/page.js +2 -2
  63. package/runtime/.next/server/app/web/page_client-reference-manifest.js +1 -1
  64. package/runtime/.next/server/app/web.html +1 -1
  65. package/runtime/.next/server/app/web.rsc +3 -3
  66. package/runtime/.next/server/app-paths-manifest.json +19 -19
  67. package/runtime/.next/server/chunks/1322.js +1 -1
  68. package/runtime/.next/server/chunks/2083.js +1 -1
  69. package/runtime/.next/server/chunks/5303.js +1 -1
  70. package/runtime/.next/server/middleware-build-manifest.js +1 -1
  71. package/runtime/.next/server/pages/404.html +1 -1
  72. package/runtime/.next/server/pages/500.html +1 -1
  73. package/runtime/.next/server/pages-manifest.json +1 -1
  74. package/runtime/.next/server/server-reference-manifest.json +1 -1
  75. package/runtime/.next/static/chunks/app/web/{error-9b5f82c29dc27335.js → error-828d278147a0619d.js} +1 -1
  76. package/runtime/.next/static/chunks/app/web/{page-16895961b998f8df.js → page-93b87fd495171494.js} +1 -1
  77. package/runtime/.next/static/chunks/{main-app-e3fd18ce9c4c0d03.js → main-app-07d67f2d4e96ecb8.js} +1 -1
  78. package/runtime/lib/remote-control/remote-authorization.mjs +65 -12
  79. package/runtime/lib/remote-control/webrtc-video.mjs +12 -3
  80. package/runtime/node_modules/.package-lock.json +84 -84
  81. package/runtime/node_modules/@agent/core/dist/domain/browser-live/BrowserLiveRegistry.d.ts +43 -0
  82. package/runtime/node_modules/@agent/core/dist/domain/browser-live/BrowserLiveRegistry.test.d.ts +2 -0
  83. package/runtime/node_modules/@agent/core/dist/domain/browser-live/entities.d.ts +57 -0
  84. package/runtime/node_modules/@agent/core/dist/domain/live-view/live-view-registry.d.ts.map +1 -1
  85. package/runtime/node_modules/@agent/core/dist/index.js +4 -2
  86. package/runtime/node_modules/@agent/core/dist/index.js.map +3 -3
  87. package/runtime/package-lock.json +213 -189
  88. package/runtime/webapp/dist/assets/App-C0GaUX7E.js +381 -0
  89. package/runtime/webapp/dist/assets/{abnfDiagram-VCTEODGH-BNxk5qEZ.js → abnfDiagram-VCTEODGH-DFIVS5-b.js} +1 -1
  90. package/runtime/webapp/dist/assets/{arc-7MQbjMvc.js → arc-BR_jY5YA.js} +1 -1
  91. package/runtime/webapp/dist/assets/{architectureDiagram-5GKGNRK7-Dhg4Rz1D.js → architectureDiagram-5GKGNRK7-B_RjH8A7.js} +1 -1
  92. package/runtime/webapp/dist/assets/{blockDiagram-I7D4REHJ-DeJHr92S.js → blockDiagram-I7D4REHJ-BS7yaS6P.js} +1 -1
  93. package/runtime/webapp/dist/assets/{c4Diagram-7LVT6UL2-RA8xRbEK.js → c4Diagram-7LVT6UL2-CSFzzphk.js} +1 -1
  94. package/runtime/webapp/dist/assets/channel-D_GjJ9-f.js +1 -0
  95. package/runtime/webapp/dist/assets/{chunk-2Q5K7J3B-CzoEDy2v.js → chunk-2Q5K7J3B-lxf-31fr.js} +1 -1
  96. package/runtime/webapp/dist/assets/{chunk-5VM5RSS4-IasmnKPT.js → chunk-5VM5RSS4-CealgGAH.js} +1 -1
  97. package/runtime/webapp/dist/assets/{chunk-F27PBJKO-ClQmWB2a.js → chunk-F27PBJKO-BVUWtnPQ.js} +1 -1
  98. package/runtime/webapp/dist/assets/{chunk-IMKFNOWR-BeWBx5Wn.js → chunk-IMKFNOWR-C9CDXZmG.js} +1 -1
  99. package/runtime/webapp/dist/assets/{chunk-JWPE2WC7-TcEEZ4Dp.js → chunk-JWPE2WC7-CBIKc-82.js} +1 -1
  100. package/runtime/webapp/dist/assets/{chunk-POPQ4Y6H-DuWXzzSb.js → chunk-POPQ4Y6H-H46jF2zC.js} +1 -1
  101. package/runtime/webapp/dist/assets/{chunk-SVP7TREG-D2X9Pa1W.js → chunk-SVP7TREG-BWLkgj_W.js} +1 -1
  102. package/runtime/webapp/dist/assets/{chunk-TICWLB2K-D_-XYQ_R.js → chunk-TICWLB2K-D4lbsBHo.js} +1 -1
  103. package/runtime/webapp/dist/assets/{chunk-XXDRQBXY-B2mHmyk9.js → chunk-XXDRQBXY-DixiVi8X.js} +1 -1
  104. package/runtime/webapp/dist/assets/classDiagram-ZZMXUADV-BbKxNRrL.js +1 -0
  105. package/runtime/webapp/dist/assets/classDiagram-v2-VYDZK3BY-BbKxNRrL.js +1 -0
  106. package/runtime/webapp/dist/assets/{cose-bilkent-JH36ORCC-OmMALi3i.js → cose-bilkent-JH36ORCC-DApgY-7v.js} +1 -1
  107. package/runtime/webapp/dist/assets/{cynefin-OW5HDTMX-BVhxjnGZ.js → cynefin-OW5HDTMX-wPkyEnRo.js} +1 -1
  108. package/runtime/webapp/dist/assets/{cynefinDiagram-5FMLGOSQ-8EafeZWa.js → cynefinDiagram-5FMLGOSQ-BL3nX8zr.js} +1 -1
  109. package/runtime/webapp/dist/assets/{dagre-GXQ25YYZ-BlMjveyN.js → dagre-GXQ25YYZ-C-ST5Gq6.js} +1 -1
  110. package/runtime/webapp/dist/assets/{diagram-S7CK7UJ4-BTgDeYAz.js → diagram-S7CK7UJ4-1Uf0VNoU.js} +1 -1
  111. package/runtime/webapp/dist/assets/{diagram-UQ7AKVKN-9m-QUpEs.js → diagram-UQ7AKVKN-BqQU5Gdv.js} +1 -1
  112. package/runtime/webapp/dist/assets/{diagram-VSXAHHWV-BYWenf8W.js → diagram-VSXAHHWV-C59hTOGw.js} +1 -1
  113. package/runtime/webapp/dist/assets/{diagram-VX7I27RA-DQ-PRQyX.js → diagram-VX7I27RA-9Q55OM5Y.js} +1 -1
  114. package/runtime/webapp/dist/assets/{diagram-Z3DM3KII-BFCpyvaL.js → diagram-Z3DM3KII-CynlxwLb.js} +1 -1
  115. package/runtime/webapp/dist/assets/{ebnfDiagram-PWID7BFC-Ds9oV_wz.js → ebnfDiagram-PWID7BFC-Clg7fTnt.js} +1 -1
  116. package/runtime/webapp/dist/assets/{erDiagram-RLTQ6QDP-ncaaStop.js → erDiagram-RLTQ6QDP-BRtMTjkq.js} +1 -1
  117. package/runtime/webapp/dist/assets/{flowDiagram-HODETNUW-wL7U3M2L.js → flowDiagram-HODETNUW-1NtZ9wGO.js} +1 -1
  118. package/runtime/webapp/dist/assets/{ganttDiagram-EL5Y4UJY-CVZIk8qz.js → ganttDiagram-EL5Y4UJY-BqtMVkoY.js} +1 -1
  119. package/runtime/webapp/dist/assets/{gitGraphDiagram-WWUBYQGX-CGjtUEFY.js → gitGraphDiagram-WWUBYQGX-D-ugp1Bz.js} +1 -1
  120. package/runtime/webapp/dist/assets/{index-CixxJ3A7.js → index-Cg-anTNr.js} +29 -29
  121. package/runtime/webapp/dist/assets/{infoDiagram-27XIBGKW-BqTzY6Bv.js → infoDiagram-27XIBGKW-BbmiUqFV.js} +1 -1
  122. package/runtime/webapp/dist/assets/{ishikawaDiagram-5VMMS53U-9AARy1zU.js → ishikawaDiagram-5VMMS53U-DvsCcWwa.js} +1 -1
  123. package/runtime/webapp/dist/assets/{journeyDiagram-3NMN7TZE-D3w-levY.js → journeyDiagram-3NMN7TZE-yNHLBbVt.js} +1 -1
  124. package/runtime/webapp/dist/assets/{kanban-definition-UXKFOSKX-CNvdBbcg.js → kanban-definition-UXKFOSKX-C17XKWBo.js} +1 -1
  125. package/runtime/webapp/dist/assets/{layout-l0aDluv6.js → layout-Dhqc3tGq.js} +1 -1
  126. package/runtime/webapp/dist/assets/{linear-BlLgYv8s.js → linear-C2_mlhLl.js} +1 -1
  127. package/runtime/webapp/dist/assets/{mermaid.core-UNYsT27K.js → mermaid.core-CjC7QuvE.js} +5 -5
  128. package/runtime/webapp/dist/assets/{mindmap-definition-YA3MSWOX-BiVsBQL9.js → mindmap-definition-YA3MSWOX-D7AKW2qI.js} +1 -1
  129. package/runtime/webapp/dist/assets/{pegDiagram-XKGWAZYB-kr19ZOFB.js → pegDiagram-XKGWAZYB-BAI26fj8.js} +1 -1
  130. package/runtime/webapp/dist/assets/{pieDiagram-E7YTZNPT-BKWCGLlM.js → pieDiagram-E7YTZNPT-C_4G2czx.js} +1 -1
  131. package/runtime/webapp/dist/assets/{quadrantDiagram-AXDQQJYC-B1oUT2Jo.js → quadrantDiagram-AXDQQJYC-BhOZnXFN.js} +1 -1
  132. package/runtime/webapp/dist/assets/{railroadDiagram-O6MQD6OU-HSe2vXxQ.js → railroadDiagram-O6MQD6OU-760zGjdr.js} +1 -1
  133. package/runtime/webapp/dist/assets/{requirementDiagram-BXWQKSXE-Cy8adj_C.js → requirementDiagram-BXWQKSXE-D0-agCrc.js} +1 -1
  134. package/runtime/webapp/dist/assets/{sankeyDiagram-P5KCCOFB-tnBEmP5l.js → sankeyDiagram-P5KCCOFB-CsHjbmcp.js} +1 -1
  135. package/runtime/webapp/dist/assets/{sequenceDiagram-WJ2MYXX4-DvOTKmyz.js → sequenceDiagram-WJ2MYXX4-Ccp7FnLK.js} +1 -1
  136. package/runtime/webapp/dist/assets/{sizeCapture-INFHLROL-Da7A6hqr.js → sizeCapture-INFHLROL-DFCk9Vjd.js} +1 -1
  137. package/runtime/webapp/dist/assets/{stateDiagram-D77RDMKH-BU17k_M-.js → stateDiagram-D77RDMKH-tFA-WlZT.js} +1 -1
  138. package/runtime/webapp/dist/assets/stateDiagram-v2-MP3YSRHH-CA4qjX_b.js +1 -0
  139. package/runtime/webapp/dist/assets/{swimlanes-42K2YHIH-DZZPRxnW.js → swimlanes-42K2YHIH-Bh-owCha.js} +1 -1
  140. package/runtime/webapp/dist/assets/swimlanesDiagram-VR7AAH4N-DrldJDwD.js +8 -0
  141. package/runtime/webapp/dist/assets/{timeline-definition-24CTP7MA-26Xh93Et.js → timeline-definition-24CTP7MA-D5CQ3vgW.js} +1 -1
  142. package/runtime/webapp/dist/assets/{vennDiagram-4TSXK5OY-Q4-BkJH1.js → vennDiagram-4TSXK5OY-1m-k4Zip.js} +1 -1
  143. package/runtime/webapp/dist/assets/{wardleyDiagram-VM6X3IG4-DlUP-PlT.js → wardleyDiagram-VM6X3IG4-C5agAk3M.js} +1 -1
  144. package/runtime/webapp/dist/assets/{web-DWyw2SAG.js → web-CzXjoC1h.js} +1 -1
  145. package/runtime/webapp/dist/assets/{web-ueoOhAeL.js → web-DseRebF6.js} +1 -1
  146. package/runtime/webapp/dist/assets/{xychartDiagram-S5SC5T6Z-BQZRjKtR.js → xychartDiagram-S5SC5T6Z-EEKnPDSd.js} +1 -1
  147. package/runtime/webapp/dist/index.html +1 -1
  148. package/runtime/webapp/dist/assets/App-Cso_5v1O.js +0 -381
  149. package/runtime/webapp/dist/assets/channel-AsHr5ZE0.js +0 -1
  150. package/runtime/webapp/dist/assets/classDiagram-ZZMXUADV-BZj1pbnq.js +0 -1
  151. package/runtime/webapp/dist/assets/classDiagram-v2-VYDZK3BY-BZj1pbnq.js +0 -1
  152. package/runtime/webapp/dist/assets/stateDiagram-v2-MP3YSRHH-BROH63Ny.js +0 -1
  153. package/runtime/webapp/dist/assets/swimlanesDiagram-VR7AAH4N-B4lr9wuD.js +0 -8
  154. /package/runtime/.next/static/{6OR2fRy79-A-DrqiN3FNa → aWNdihGfcWU3x-pPuMP1I}/_buildManifest.js +0 -0
  155. /package/runtime/.next/static/{6OR2fRy79-A-DrqiN3FNa → aWNdihGfcWU3x-pPuMP1I}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- "use strict";(()=>{var e={};e.id=5369,e.ids=[5369,732],e.modules={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")},1282:e=>{e.exports=require("child_process")},2048:e=>{e.exports=require("fs")},9801:e=>{e.exports=require("os")},5315:e=>{e.exports=require("path")},2728:e=>{e.exports=import("@anthropic-ai/claude-agent-sdk")},7718:e=>{e.exports=require("node:child_process")},6005:e=>{e.exports=require("node:crypto")},5673:e=>{e.exports=require("node:events")},7561:e=>{e.exports=require("node:fs")},3977:e=>{e.exports=require("node:fs/promises")},8849:e=>{e.exports=require("node:http")},2286:e=>{e.exports=require("node:https")},2033:e=>{e.exports=require("node:module")},7503:e=>{e.exports=require("node:net")},612:e=>{e.exports=require("node:os")},9411:e=>{e.exports=require("node:path")},1747:e=>{e.exports=require("node:readline")},6915:e=>{e.exports=require("node:string_decoder")},1041:e=>{e.exports=require("node:url")},5881:e=>{e.exports=require("node:util")},1169:(e,t,s)=>{s.a(e,async(e,r)=>{try{s.r(t),s.d(t,{originalPathname:()=>g,patchFetch:()=>c,requestAsyncStorage:()=>h,routeModule:()=>d,serverHooks:()=>p,staticGenerationAsyncStorage:()=>l});var a=s(7786),i=s(5042),n=s(2184),o=s(583),u=e([o]);o=(u.then?(await u)():u)[0];let d=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-release21-20260914/packages/server/app/api/agent/steer/route.ts",nextConfigOutput:"standalone",userland:o}),{requestAsyncStorage:h,staticGenerationAsyncStorage:l,serverHooks:p}=d,g="/api/agent/steer/route";function c(){return(0,n.patchFetch)({serverHooks:p,staticGenerationAsyncStorage:l})}r()}catch(e){r(e)}})},583:(e,t,s)=>{s.a(e,async(e,r)=>{try{s.r(t),s.d(t,{POST:()=>c});var a=s(732),i=s(1890),n=s(4537),o=s(2083),u=e([o]);async function c(e){try{let t=await e.json();if(!t.sessionId||!t.input&&!t.messageId)return i.NextResponse.json({error:"sessionId and input or messageId are required"},{status:400});if((0,o.V_)(t.sessionId)){if(t.messageId)return i.NextResponse.json(await (0,o.NL)().steerMessage(t.sessionId,t.messageId));if(!t.input)return i.NextResponse.json({error:"input is required"},{status:400});let e=await (0,o.NL)().steer(t.sessionId,t.input);return i.NextResponse.json({steered:e})}if(t.messageId)return i.NextResponse.json({steered:!0,state:await (0,a.getCustomerGoalCoordinator)().steer(t.sessionId,t.messageId)});if(!t.input)return i.NextResponse.json({error:"input is required"},{status:400});let s=await n.agentHost.steer(t.input,t.sessionId);return i.NextResponse.json({steered:s})}catch(e){return i.NextResponse.json({error:e instanceof Error?e.message:"Internal error"},{status:(0,o.WW)(e)})}}o=(u.then?(await u)():u)[0],r()}catch(e){r(e)}})},732:(e,t,s)=>{s.d(t,{getCustomerGoalCoordinator:()=>c,U:()=>d});var r=s(1322),a=s(4537);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.E0T)((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.WfK)(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.InG)(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.h1F)(e,t):(0,r.ZC9)(e,t))}updateMessage(e,t,s,a){return this.mutate(e,e=>(0,r.Wog)(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.LJm)(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.LJm)(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.s_d)(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.JXc)(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.E0T)(s.metadata));if(this.persist)this.persist(e,a);else{let t=await this.require(e);await this.store.update(e,{metadata:(0,r.eC7)(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 c(){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.N8n)((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 d(){for(let e of(0,r.N8n)((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())c().resume(e.id)}},1436:(e,t,s)=>{s.d(t,{N:()=>h});var r=s(1322),a=s(7561),i=s(9411);class n{constructor(e){this._acquired=!1,this.lockPath=e.replace(/scheduled_tasks\.json$/,".scheduler.lock")}get acquired(){return this._acquired}tryAcquire(){if(this._acquired)return!0;if((0,a.existsSync)(this.lockPath))try{let e=parseInt((0,a.readFileSync)(this.lockPath,"utf-8").trim(),10);if(!isNaN(e)&&e!==process.pid)try{return process.kill(e,0),!1}catch{}}catch{}try{let e=(0,i.dirname)(this.lockPath);return(0,a.existsSync)(e)||(0,a.mkdirSync)(e,{recursive:!0}),(0,a.writeFileSync)(this.lockPath,String(process.pid),"utf-8"),this._acquired=!0,!0}catch{return!1}}release(){if(this._acquired){try{(0,a.unlinkSync)(this.lockPath)}catch{}this._acquired=!1}}}class o{constructor(e,t,s){this.cronTasks=e,this.onFire=t,this.onTasksChanged=s,this.timer=null,this.watcher=null,this.started=!1,this.lock=new n(e.getFilePath())}start(){if(!this.started){if(!this.lock.tryAcquire()){console.warn("[CronScheduler] Another process holds the scheduler lock — skipping start.");return}this.started=!0,this.timer=setInterval(()=>{this.tick()},1e3),this.startFileWatcher(),console.log(`[CronScheduler] Started (PID=${process.pid})`)}}stop(){this.started&&(this.started=!1,this.timer&&(clearInterval(this.timer),this.timer=null),this.watcher&&(this.watcher.close(),this.watcher=null),this.lock.release(),console.log("[CronScheduler] Stopped."))}startFileWatcher(){let e=this.cronTasks.getFilePath(),t=(0,i.dirname)(e);if(!(0,a.existsSync)(t))try{(0,a.mkdirSync)(t,{recursive:!0})}catch{}try{this.watcher=(0,a.watch)(t,{persistent:!1},(e,t)=>{"scheduled_tasks.json"===t&&this.onTasksChanged(this.cronTasks.load())})}catch(e){console.warn("[CronScheduler] Could not start file watcher:",e)}}async tick(){let e=Date.now(),t=this.cronTasks.load(),s=!1;for(let a of t)a.enabled&&a.nextFireAt&&!(a.nextFireAt>e)&&(this.onFire(a),a.recurring?this.cronTasks.update(a.id,{nextFireAt:(0,r.Ilu)(a.cron,e),lastFiredAt:e}):this.cronTasks.delete(a.id),s=!0);s&&this.onTasksChanged(this.cronTasks.load())}}var u=s(785);class c{constructor(){this.tasks=new r.vo4((0,u.kO)()),this.scheduler=new o(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(4537).then(s.bind(s,4537)),{getCustomerGoalCoordinator:r}=await Promise.all([s.e(4537),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 d=globalThis;function h(){return d.__sharedCronService??=new c}}};var t=require("../../../../webpack-runtime.js");t.C(e);var s=e=>t(t.s=e),r=t.X(0,[8375,6703,6244,1322,4621,2083,4537],()=>s(1169));module.exports=r})();
1
+ "use strict";(()=>{var e={};e.id=5369,e.ids=[5369,732],e.modules={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")},1282:e=>{e.exports=require("child_process")},2048:e=>{e.exports=require("fs")},9801:e=>{e.exports=require("os")},5315:e=>{e.exports=require("path")},2728:e=>{e.exports=import("@anthropic-ai/claude-agent-sdk")},7718:e=>{e.exports=require("node:child_process")},6005:e=>{e.exports=require("node:crypto")},5673:e=>{e.exports=require("node:events")},7561:e=>{e.exports=require("node:fs")},3977:e=>{e.exports=require("node:fs/promises")},8849:e=>{e.exports=require("node:http")},2286:e=>{e.exports=require("node:https")},2033:e=>{e.exports=require("node:module")},7503:e=>{e.exports=require("node:net")},612:e=>{e.exports=require("node:os")},9411:e=>{e.exports=require("node:path")},1747:e=>{e.exports=require("node:readline")},6915:e=>{e.exports=require("node:string_decoder")},1041:e=>{e.exports=require("node:url")},5881:e=>{e.exports=require("node:util")},4390:(e,t,s)=>{s.a(e,async(e,r)=>{try{s.r(t),s.d(t,{originalPathname:()=>g,patchFetch:()=>c,requestAsyncStorage:()=>h,routeModule:()=>d,serverHooks:()=>p,staticGenerationAsyncStorage:()=>l});var a=s(7786),i=s(5042),n=s(2184),o=s(583),u=e([o]);o=(u.then?(await u)():u)[0];let d=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:"/Users/caoqu/team-agent/customer-agent/packages/server/app/api/agent/steer/route.ts",nextConfigOutput:"standalone",userland:o}),{requestAsyncStorage:h,staticGenerationAsyncStorage:l,serverHooks:p}=d,g="/api/agent/steer/route";function c(){return(0,n.patchFetch)({serverHooks:p,staticGenerationAsyncStorage:l})}r()}catch(e){r(e)}})},583:(e,t,s)=>{s.a(e,async(e,r)=>{try{s.r(t),s.d(t,{POST:()=>c});var a=s(732),i=s(1890),n=s(4537),o=s(2083),u=e([o]);async function c(e){try{let t=await e.json();if(!t.sessionId||!t.input&&!t.messageId)return i.NextResponse.json({error:"sessionId and input or messageId are required"},{status:400});if((0,o.V_)(t.sessionId)){if(t.messageId)return i.NextResponse.json(await (0,o.NL)().steerMessage(t.sessionId,t.messageId));if(!t.input)return i.NextResponse.json({error:"input is required"},{status:400});let e=await (0,o.NL)().steer(t.sessionId,t.input);return i.NextResponse.json({steered:e})}if(t.messageId)return i.NextResponse.json({steered:!0,state:await (0,a.getCustomerGoalCoordinator)().steer(t.sessionId,t.messageId)});if(!t.input)return i.NextResponse.json({error:"input is required"},{status:400});let s=await n.agentHost.steer(t.input,t.sessionId);return i.NextResponse.json({steered:s})}catch(e){return i.NextResponse.json({error:e instanceof Error?e.message:"Internal error"},{status:(0,o.WW)(e)})}}o=(u.then?(await u)():u)[0],r()}catch(e){r(e)}})},732:(e,t,s)=>{s.d(t,{getCustomerGoalCoordinator:()=>c,U:()=>d});var r=s(1322),a=s(4537);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.E0T)((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.WfK)(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.InG)(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.h1F)(e,t):(0,r.ZC9)(e,t))}updateMessage(e,t,s,a){return this.mutate(e,e=>(0,r.Wog)(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.LJm)(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.LJm)(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.s_d)(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.JXc)(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.E0T)(s.metadata));if(this.persist)this.persist(e,a);else{let t=await this.require(e);await this.store.update(e,{metadata:(0,r.eC7)(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 c(){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.N8n)((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 d(){for(let e of(0,r.N8n)((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())c().resume(e.id)}},1436:(e,t,s)=>{s.d(t,{N:()=>h});var r=s(1322),a=s(7561),i=s(9411);class n{constructor(e){this._acquired=!1,this.lockPath=e.replace(/scheduled_tasks\.json$/,".scheduler.lock")}get acquired(){return this._acquired}tryAcquire(){if(this._acquired)return!0;if((0,a.existsSync)(this.lockPath))try{let e=parseInt((0,a.readFileSync)(this.lockPath,"utf-8").trim(),10);if(!isNaN(e)&&e!==process.pid)try{return process.kill(e,0),!1}catch{}}catch{}try{let e=(0,i.dirname)(this.lockPath);return(0,a.existsSync)(e)||(0,a.mkdirSync)(e,{recursive:!0}),(0,a.writeFileSync)(this.lockPath,String(process.pid),"utf-8"),this._acquired=!0,!0}catch{return!1}}release(){if(this._acquired){try{(0,a.unlinkSync)(this.lockPath)}catch{}this._acquired=!1}}}class o{constructor(e,t,s){this.cronTasks=e,this.onFire=t,this.onTasksChanged=s,this.timer=null,this.watcher=null,this.started=!1,this.lock=new n(e.getFilePath())}start(){if(!this.started){if(!this.lock.tryAcquire()){console.warn("[CronScheduler] Another process holds the scheduler lock — skipping start.");return}this.started=!0,this.timer=setInterval(()=>{this.tick()},1e3),this.startFileWatcher(),console.log(`[CronScheduler] Started (PID=${process.pid})`)}}stop(){this.started&&(this.started=!1,this.timer&&(clearInterval(this.timer),this.timer=null),this.watcher&&(this.watcher.close(),this.watcher=null),this.lock.release(),console.log("[CronScheduler] Stopped."))}startFileWatcher(){let e=this.cronTasks.getFilePath(),t=(0,i.dirname)(e);if(!(0,a.existsSync)(t))try{(0,a.mkdirSync)(t,{recursive:!0})}catch{}try{this.watcher=(0,a.watch)(t,{persistent:!1},(e,t)=>{"scheduled_tasks.json"===t&&this.onTasksChanged(this.cronTasks.load())})}catch(e){console.warn("[CronScheduler] Could not start file watcher:",e)}}async tick(){let e=Date.now(),t=this.cronTasks.load(),s=!1;for(let a of t)a.enabled&&a.nextFireAt&&!(a.nextFireAt>e)&&(this.onFire(a),a.recurring?this.cronTasks.update(a.id,{nextFireAt:(0,r.Ilu)(a.cron,e),lastFiredAt:e}):this.cronTasks.delete(a.id),s=!0);s&&this.onTasksChanged(this.cronTasks.load())}}var u=s(785);class c{constructor(){this.tasks=new r.vo4((0,u.kO)()),this.scheduler=new o(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(4537).then(s.bind(s,4537)),{getCustomerGoalCoordinator:r}=await Promise.all([s.e(4537),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 d=globalThis;function h(){return d.__sharedCronService??=new c}}};var t=require("../../../../webpack-runtime.js");t.C(e);var s=e=>t(t.s=e),r=t.X(0,[8375,6703,6244,1322,4621,2083,4537],()=>s(4390));module.exports=r})();
@@ -1,4 +1,4 @@
1
- "use strict";(()=>{var e={};e.id=820,e.ids=[820],e.modules={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")},1282:e=>{e.exports=require("child_process")},2048:e=>{e.exports=require("fs")},9801:e=>{e.exports=require("os")},5315:e=>{e.exports=require("path")},2728:e=>{e.exports=import("@anthropic-ai/claude-agent-sdk")},7718:e=>{e.exports=require("node:child_process")},6005:e=>{e.exports=require("node:crypto")},5673:e=>{e.exports=require("node:events")},7561:e=>{e.exports=require("node:fs")},3977:e=>{e.exports=require("node:fs/promises")},8849:e=>{e.exports=require("node:http")},2286:e=>{e.exports=require("node:https")},2033:e=>{e.exports=require("node:module")},7503:e=>{e.exports=require("node:net")},612:e=>{e.exports=require("node:os")},9411:e=>{e.exports=require("node:path")},1747:e=>{e.exports=require("node:readline")},6915:e=>{e.exports=require("node:string_decoder")},1041:e=>{e.exports=require("node:url")},5881:e=>{e.exports=require("node:util")},5457:(e,t,r)=>{r.a(e,async(e,s)=>{try{r.r(t),r.d(t,{originalPathname:()=>g,patchFetch:()=>l,requestAsyncStorage:()=>d,routeModule:()=>u,serverHooks:()=>p,staticGenerationAsyncStorage:()=>h});var n=r(7786),a=r(5042),i=r(2184),o=r(8632),c=e([o]);o=(c.then?(await c)():c)[0];let u=new n.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-release21-20260914/packages/server/app/api/agent/stream/route.ts",nextConfigOutput:"standalone",userland:o}),{requestAsyncStorage:d,staticGenerationAsyncStorage:h,serverHooks:p}=u,g="/api/agent/stream/route";function l(){return(0,i.patchFetch)({serverHooks:p,staticGenerationAsyncStorage:h})}s()}catch(e){s(e)}})},7786:(e,t,r)=>{e.exports=r(517)},8632:(e,t,r)=>{r.a(e,async(e,s)=>{try{r.r(t),r.d(t,{GET:()=>o});var n=r(4537),a=r(2083),i=e([a]);async function o(e){let t=new URL(e.url).searchParams.get("sessionId");if(!t)return new Response("sessionId is required",{status:400});if((0,a.V_)(t))return c(e,t);let r=!1,s=null,i=null,o=new ReadableStream({start(a){let o=new TextEncoder,c=()=>{if(!r){r=!0,s?.(),s=null,i&&e.signal.removeEventListener("abort",i);try{a.close()}catch{}}},l=e=>{if(r)return!1;try{return a.enqueue(o.encode(e)),!0}catch{return c(),!1}};if(!l(": connected\n\n"))return;let u=e.headers.get("last-event-id"),d=Number.parseInt(u??"",10),h=new URL(e.url),p=Number.parseInt(h.searchParams.get("afterEventId")??"",10),g=Number.isSafeInteger(d)?d:Number.isSafeInteger(p)?p:n.agentHost.isSessionRunning(t)?0:n.agentHost.getLatestEventId(t);s=n.agentHost.subscribe(t,(e,t)=>{l(`id: ${t}
1
+ "use strict";(()=>{var e={};e.id=820,e.ids=[820],e.modules={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")},1282:e=>{e.exports=require("child_process")},2048:e=>{e.exports=require("fs")},9801:e=>{e.exports=require("os")},5315:e=>{e.exports=require("path")},2728:e=>{e.exports=import("@anthropic-ai/claude-agent-sdk")},7718:e=>{e.exports=require("node:child_process")},6005:e=>{e.exports=require("node:crypto")},5673:e=>{e.exports=require("node:events")},7561:e=>{e.exports=require("node:fs")},3977:e=>{e.exports=require("node:fs/promises")},8849:e=>{e.exports=require("node:http")},2286:e=>{e.exports=require("node:https")},2033:e=>{e.exports=require("node:module")},7503:e=>{e.exports=require("node:net")},612:e=>{e.exports=require("node:os")},9411:e=>{e.exports=require("node:path")},1747:e=>{e.exports=require("node:readline")},6915:e=>{e.exports=require("node:string_decoder")},1041:e=>{e.exports=require("node:url")},5881:e=>{e.exports=require("node:util")},2190:(e,t,r)=>{r.a(e,async(e,s)=>{try{r.r(t),r.d(t,{originalPathname:()=>g,patchFetch:()=>l,requestAsyncStorage:()=>d,routeModule:()=>u,serverHooks:()=>p,staticGenerationAsyncStorage:()=>h});var n=r(7786),a=r(5042),i=r(2184),o=r(8632),c=e([o]);o=(c.then?(await c)():c)[0];let u=new n.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:"/Users/caoqu/team-agent/customer-agent/packages/server/app/api/agent/stream/route.ts",nextConfigOutput:"standalone",userland:o}),{requestAsyncStorage:d,staticGenerationAsyncStorage:h,serverHooks:p}=u,g="/api/agent/stream/route";function l(){return(0,i.patchFetch)({serverHooks:p,staticGenerationAsyncStorage:h})}s()}catch(e){s(e)}})},7786:(e,t,r)=>{e.exports=r(517)},8632:(e,t,r)=>{r.a(e,async(e,s)=>{try{r.r(t),r.d(t,{GET:()=>o});var n=r(4537),a=r(2083),i=e([a]);async function o(e){let t=new URL(e.url).searchParams.get("sessionId");if(!t)return new Response("sessionId is required",{status:400});if((0,a.V_)(t))return c(e,t);let r=!1,s=null,i=null,o=new ReadableStream({start(a){let o=new TextEncoder,c=()=>{if(!r){r=!0,s?.(),s=null,i&&e.signal.removeEventListener("abort",i);try{a.close()}catch{}}},l=e=>{if(r)return!1;try{return a.enqueue(o.encode(e)),!0}catch{return c(),!1}};if(!l(": connected\n\n"))return;let u=e.headers.get("last-event-id"),d=Number.parseInt(u??"",10),h=new URL(e.url),p=Number.parseInt(h.searchParams.get("afterEventId")??"",10),g=Number.isSafeInteger(d)?d:Number.isSafeInteger(p)?p:n.agentHost.isSessionRunning(t)?0:n.agentHost.getLatestEventId(t);s=n.agentHost.subscribe(t,(e,t)=>{l(`id: ${t}
2
2
  data: ${JSON.stringify(e)}
3
3
 
4
4
  `)&&("done"===e.type||"error"===e.type)&&c()},g),i=c,e.signal.aborted?c():e.signal.addEventListener("abort",i,{once:!0})},cancel(){r=!0,s?.(),s=null,i&&e.signal.removeEventListener("abort",i)}});return new Response(o,{headers:{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"}})}async function c(e,t){let r=!1,s=null,n=null,i=(0,a.NL)(),o=new URL(e.url),c=Number.parseInt(o.searchParams.get("afterSequence")??"",10),l=o.searchParams.get("afterRunId"),u=e.headers.get("last-event-id"),d=new ReadableStream({async start(a){let o=new TextEncoder,d=()=>{if(!r){r=!0,s?.(),s=null,n&&e.signal.removeEventListener("abort",n);try{a.close()}catch{}}},h=e=>{if(r)return!1;try{return a.enqueue(o.encode(e)),!0}catch{return d(),!1}};if(h(": connected\n\n"))try{let r=await i.snapshot(t),a=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),s=Number.parseInt(e.slice(t+1),10);return r&&Number.isSafeInteger(s)?{runId:r,sequence:s}:null}(u),o=Number.isSafeInteger(c)?{runId:l,sequence:c}:null,p=a??o,g=p?p.runId&&p.runId!==r.runId?0:p.sequence:r.snapshotRevision;s=await i.subscribe(t,g,({runId:e,sequence:t,event:r})=>{let s={...r,_nativeRunId:e,_nativeSequence:t};h(`id: ${e}:${t}
@@ -7,4 +7,4 @@ data: ${JSON.stringify(s)}
7
7
  `)&&("done"===r.type||"error"===r.type)&&d()}),n=d,e.signal.aborted?d():e.signal.addEventListener("abort",n,{once:!0})}catch(e){h(`event: error
8
8
  data: ${JSON.stringify({type:"error",message:e instanceof Error?e.message:"Native stream failed"})}
9
9
 
10
- `),d()}},cancel(){r=!0,s?.(),s=null,n&&e.signal.removeEventListener("abort",n)}});return new Response(d,{headers:{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"}})}a=(i.then?(await i)():i)[0],s()}catch(e){s(e)}})},1436:(e,t,r)=>{r.d(t,{N:()=>d});var s=r(1322),n=r(7561),a=r(9411);class i{constructor(e){this._acquired=!1,this.lockPath=e.replace(/scheduled_tasks\.json$/,".scheduler.lock")}get acquired(){return this._acquired}tryAcquire(){if(this._acquired)return!0;if((0,n.existsSync)(this.lockPath))try{let e=parseInt((0,n.readFileSync)(this.lockPath,"utf-8").trim(),10);if(!isNaN(e)&&e!==process.pid)try{return process.kill(e,0),!1}catch{}}catch{}try{let e=(0,a.dirname)(this.lockPath);return(0,n.existsSync)(e)||(0,n.mkdirSync)(e,{recursive:!0}),(0,n.writeFileSync)(this.lockPath,String(process.pid),"utf-8"),this._acquired=!0,!0}catch{return!1}}release(){if(this._acquired){try{(0,n.unlinkSync)(this.lockPath)}catch{}this._acquired=!1}}}class o{constructor(e,t,r){this.cronTasks=e,this.onFire=t,this.onTasksChanged=r,this.timer=null,this.watcher=null,this.started=!1,this.lock=new i(e.getFilePath())}start(){if(!this.started){if(!this.lock.tryAcquire()){console.warn("[CronScheduler] Another process holds the scheduler lock — skipping start.");return}this.started=!0,this.timer=setInterval(()=>{this.tick()},1e3),this.startFileWatcher(),console.log(`[CronScheduler] Started (PID=${process.pid})`)}}stop(){this.started&&(this.started=!1,this.timer&&(clearInterval(this.timer),this.timer=null),this.watcher&&(this.watcher.close(),this.watcher=null),this.lock.release(),console.log("[CronScheduler] Stopped."))}startFileWatcher(){let e=this.cronTasks.getFilePath(),t=(0,a.dirname)(e);if(!(0,n.existsSync)(t))try{(0,n.mkdirSync)(t,{recursive:!0})}catch{}try{this.watcher=(0,n.watch)(t,{persistent:!1},(e,t)=>{"scheduled_tasks.json"===t&&this.onTasksChanged(this.cronTasks.load())})}catch(e){console.warn("[CronScheduler] Could not start file watcher:",e)}}async tick(){let e=Date.now(),t=this.cronTasks.load(),r=!1;for(let n of t)n.enabled&&n.nextFireAt&&!(n.nextFireAt>e)&&(this.onFire(n),n.recurring?this.cronTasks.update(n.id,{nextFireAt:(0,s.Ilu)(n.cron,e),lastFiredAt:e}):this.cronTasks.delete(n.id),r=!0);r&&this.onTasksChanged(this.cronTasks.load())}}var c=r(785);class l{constructor(){this.tasks=new s.vo4((0,c.kO)()),this.scheduler=new o(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(4537).then(r.bind(r,4537)),{getCustomerGoalCoordinator:s}=await Promise.all([r.e(4537),r.e(732)]).then(r.bind(r,732)),n=e.sessionId;n&&await t.getSessionStore().get(n)||(n=(await t.createSession(e.label||"定时任务")).id,this.tasks.update(e.id,{sessionId:n})),await s().enqueue(n,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 u=globalThis;function d(){return u.__sharedCronService??=new l}}};var t=require("../../../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),s=t.X(0,[8375,6244,1322,4621,2083,4537],()=>r(5457));module.exports=s})();
10
+ `),d()}},cancel(){r=!0,s?.(),s=null,n&&e.signal.removeEventListener("abort",n)}});return new Response(d,{headers:{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"}})}a=(i.then?(await i)():i)[0],s()}catch(e){s(e)}})},1436:(e,t,r)=>{r.d(t,{N:()=>d});var s=r(1322),n=r(7561),a=r(9411);class i{constructor(e){this._acquired=!1,this.lockPath=e.replace(/scheduled_tasks\.json$/,".scheduler.lock")}get acquired(){return this._acquired}tryAcquire(){if(this._acquired)return!0;if((0,n.existsSync)(this.lockPath))try{let e=parseInt((0,n.readFileSync)(this.lockPath,"utf-8").trim(),10);if(!isNaN(e)&&e!==process.pid)try{return process.kill(e,0),!1}catch{}}catch{}try{let e=(0,a.dirname)(this.lockPath);return(0,n.existsSync)(e)||(0,n.mkdirSync)(e,{recursive:!0}),(0,n.writeFileSync)(this.lockPath,String(process.pid),"utf-8"),this._acquired=!0,!0}catch{return!1}}release(){if(this._acquired){try{(0,n.unlinkSync)(this.lockPath)}catch{}this._acquired=!1}}}class o{constructor(e,t,r){this.cronTasks=e,this.onFire=t,this.onTasksChanged=r,this.timer=null,this.watcher=null,this.started=!1,this.lock=new i(e.getFilePath())}start(){if(!this.started){if(!this.lock.tryAcquire()){console.warn("[CronScheduler] Another process holds the scheduler lock — skipping start.");return}this.started=!0,this.timer=setInterval(()=>{this.tick()},1e3),this.startFileWatcher(),console.log(`[CronScheduler] Started (PID=${process.pid})`)}}stop(){this.started&&(this.started=!1,this.timer&&(clearInterval(this.timer),this.timer=null),this.watcher&&(this.watcher.close(),this.watcher=null),this.lock.release(),console.log("[CronScheduler] Stopped."))}startFileWatcher(){let e=this.cronTasks.getFilePath(),t=(0,a.dirname)(e);if(!(0,n.existsSync)(t))try{(0,n.mkdirSync)(t,{recursive:!0})}catch{}try{this.watcher=(0,n.watch)(t,{persistent:!1},(e,t)=>{"scheduled_tasks.json"===t&&this.onTasksChanged(this.cronTasks.load())})}catch(e){console.warn("[CronScheduler] Could not start file watcher:",e)}}async tick(){let e=Date.now(),t=this.cronTasks.load(),r=!1;for(let n of t)n.enabled&&n.nextFireAt&&!(n.nextFireAt>e)&&(this.onFire(n),n.recurring?this.cronTasks.update(n.id,{nextFireAt:(0,s.Ilu)(n.cron,e),lastFiredAt:e}):this.cronTasks.delete(n.id),r=!0);r&&this.onTasksChanged(this.cronTasks.load())}}var c=r(785);class l{constructor(){this.tasks=new s.vo4((0,c.kO)()),this.scheduler=new o(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(4537).then(r.bind(r,4537)),{getCustomerGoalCoordinator:s}=await Promise.all([r.e(4537),r.e(732)]).then(r.bind(r,732)),n=e.sessionId;n&&await t.getSessionStore().get(n)||(n=(await t.createSession(e.label||"定时任务")).id,this.tasks.update(e.id,{sessionId:n})),await s().enqueue(n,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 u=globalThis;function d(){return u.__sharedCronService??=new l}}};var t=require("../../../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),s=t.X(0,[8375,6244,1322,4621,2083,4537],()=>r(2190));module.exports=s})();
@@ -1 +1 @@
1
- "use strict";(()=>{var e={};e.id=4612,e.ids=[4612],e.modules={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")},1282:e=>{e.exports=require("child_process")},2048:e=>{e.exports=require("fs")},9801:e=>{e.exports=require("os")},5315:e=>{e.exports=require("path")},2728:e=>{e.exports=import("@anthropic-ai/claude-agent-sdk")},7718:e=>{e.exports=require("node:child_process")},6005:e=>{e.exports=require("node:crypto")},5673:e=>{e.exports=require("node:events")},7561:e=>{e.exports=require("node:fs")},3977:e=>{e.exports=require("node:fs/promises")},8849:e=>{e.exports=require("node:http")},2286:e=>{e.exports=require("node:https")},2033:e=>{e.exports=require("node:module")},7503:e=>{e.exports=require("node:net")},612:e=>{e.exports=require("node:os")},9411:e=>{e.exports=require("node:path")},1747:e=>{e.exports=require("node:readline")},6915:e=>{e.exports=require("node:string_decoder")},1041:e=>{e.exports=require("node:url")},5881:e=>{e.exports=require("node:util")},5930:(e,t,r)=>{r.a(e,async(e,s)=>{try{r.r(t),r.d(t,{originalPathname:()=>g,patchFetch:()=>u,requestAsyncStorage:()=>d,routeModule:()=>l,serverHooks:()=>p,staticGenerationAsyncStorage:()=>h});var a=r(7786),i=r(5042),o=r(2184),n=r(5609),c=e([n]);n=(c.then?(await c)():c)[0];let l=new a.AppRouteRouteModule({definition:{kind:i.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-release21-20260914/packages/server/app/api/agent-workspaces/[workspaceId]/sessions/route.ts",nextConfigOutput:"standalone",userland:n}),{requestAsyncStorage:d,staticGenerationAsyncStorage:h,serverHooks:p}=l,g="/api/agent-workspaces/[workspaceId]/sessions/route";function u(){return(0,o.patchFetch)({serverHooks:p,staticGenerationAsyncStorage:h})}s()}catch(e){s(e)}})},5609:(e,t,r)=>{r.a(e,async(e,s)=>{try{r.r(t),r.d(t,{GET:()=>d});var a=r(1890),i=r(1322),o=r(2557),n=r(4537),c=r(2083),u=r(6405),l=e([c]);async function d(e,t){let r;let s=new URL(e.url),l=(0,u.q)(s.searchParams.get("agentType"));if(!l)return a.NextResponse.json({error:"A valid agentType is required"},{status:400});try{let e=(0,u.M)(s);r={cursor:e.cursor,limit:e.limit,refresh:e.refresh}}catch(e){return a.NextResponse.json({error:e instanceof Error?e.message:"Invalid query"},{status:400})}try{if("customer-agent"!==l)return a.NextResponse.json(await (0,c.NL)().listWorkspaceSessions(l,t.params.workspaceId,r));let e=await n.agentHost.getProjectStore().get(t.params.workspaceId);if(!e)return a.NextResponse.json({error:"Workspace not found"},{status:404});let s=(await n.agentHost.getSessionStore().list(e.id)).map(({messages:t,events:r,...s})=>({...s,agentType:"customer-agent",nativeSessionId:s.id,cwd:e.description,occupancy:n.agentHost.isSessionRunning(s.id)?"owned-by-customer-agent":"available",sourceLabel:"Customer Agent",canResume:!0,canDelete:!n.agentHost.isSessionRunning(s.id),permissionMode:(0,i.NyU)(s.metadata.permissionMode)})).sort((e,t)=>t.updated.localeCompare(e.updated));return a.NextResponse.json((0,o.L)(s,r,s[0]?.updated??e.updated))}catch(e){return a.NextResponse.json({error:e instanceof Error?e.message:"Workspace sessions failed"},{status:(0,c.WW)(e)})}}c=(l.then?(await l)():l)[0],s()}catch(e){s(e)}})},6405:(e,t,r)=>{r.d(t,{M:()=>i,q:()=>a});let s=new Set(["customer-agent","codex","claude-code","opencode"]);function a(e){return e&&s.has(e)?e:null}function i(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}}},1436:(e,t,r)=>{r.d(t,{N:()=>d});var s=r(1322),a=r(7561),i=r(9411);class o{constructor(e){this._acquired=!1,this.lockPath=e.replace(/scheduled_tasks\.json$/,".scheduler.lock")}get acquired(){return this._acquired}tryAcquire(){if(this._acquired)return!0;if((0,a.existsSync)(this.lockPath))try{let e=parseInt((0,a.readFileSync)(this.lockPath,"utf-8").trim(),10);if(!isNaN(e)&&e!==process.pid)try{return process.kill(e,0),!1}catch{}}catch{}try{let e=(0,i.dirname)(this.lockPath);return(0,a.existsSync)(e)||(0,a.mkdirSync)(e,{recursive:!0}),(0,a.writeFileSync)(this.lockPath,String(process.pid),"utf-8"),this._acquired=!0,!0}catch{return!1}}release(){if(this._acquired){try{(0,a.unlinkSync)(this.lockPath)}catch{}this._acquired=!1}}}class n{constructor(e,t,r){this.cronTasks=e,this.onFire=t,this.onTasksChanged=r,this.timer=null,this.watcher=null,this.started=!1,this.lock=new o(e.getFilePath())}start(){if(!this.started){if(!this.lock.tryAcquire()){console.warn("[CronScheduler] Another process holds the scheduler lock — skipping start.");return}this.started=!0,this.timer=setInterval(()=>{this.tick()},1e3),this.startFileWatcher(),console.log(`[CronScheduler] Started (PID=${process.pid})`)}}stop(){this.started&&(this.started=!1,this.timer&&(clearInterval(this.timer),this.timer=null),this.watcher&&(this.watcher.close(),this.watcher=null),this.lock.release(),console.log("[CronScheduler] Stopped."))}startFileWatcher(){let e=this.cronTasks.getFilePath(),t=(0,i.dirname)(e);if(!(0,a.existsSync)(t))try{(0,a.mkdirSync)(t,{recursive:!0})}catch{}try{this.watcher=(0,a.watch)(t,{persistent:!1},(e,t)=>{"scheduled_tasks.json"===t&&this.onTasksChanged(this.cronTasks.load())})}catch(e){console.warn("[CronScheduler] Could not start file watcher:",e)}}async tick(){let e=Date.now(),t=this.cronTasks.load(),r=!1;for(let a of t)a.enabled&&a.nextFireAt&&!(a.nextFireAt>e)&&(this.onFire(a),a.recurring?this.cronTasks.update(a.id,{nextFireAt:(0,s.Ilu)(a.cron,e),lastFiredAt:e}):this.cronTasks.delete(a.id),r=!0);r&&this.onTasksChanged(this.cronTasks.load())}}var c=r(785);class u{constructor(){this.tasks=new s.vo4((0,c.kO)()),this.scheduler=new n(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(4537).then(r.bind(r,4537)),{getCustomerGoalCoordinator:s}=await Promise.all([r.e(4537),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 l=globalThis;function d(){return l.__sharedCronService??=new u}}};var t=require("../../../../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),s=t.X(0,[8375,6703,6244,1322,4621,2083,4537],()=>r(5930));module.exports=s})();
1
+ "use strict";(()=>{var e={};e.id=4612,e.ids=[4612],e.modules={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")},1282:e=>{e.exports=require("child_process")},2048:e=>{e.exports=require("fs")},9801:e=>{e.exports=require("os")},5315:e=>{e.exports=require("path")},2728:e=>{e.exports=import("@anthropic-ai/claude-agent-sdk")},7718:e=>{e.exports=require("node:child_process")},6005:e=>{e.exports=require("node:crypto")},5673:e=>{e.exports=require("node:events")},7561:e=>{e.exports=require("node:fs")},3977:e=>{e.exports=require("node:fs/promises")},8849:e=>{e.exports=require("node:http")},2286:e=>{e.exports=require("node:https")},2033:e=>{e.exports=require("node:module")},7503:e=>{e.exports=require("node:net")},612:e=>{e.exports=require("node:os")},9411:e=>{e.exports=require("node:path")},1747:e=>{e.exports=require("node:readline")},6915:e=>{e.exports=require("node:string_decoder")},1041:e=>{e.exports=require("node:url")},5881:e=>{e.exports=require("node:util")},3841:(e,t,r)=>{r.a(e,async(e,s)=>{try{r.r(t),r.d(t,{originalPathname:()=>g,patchFetch:()=>u,requestAsyncStorage:()=>d,routeModule:()=>l,serverHooks:()=>p,staticGenerationAsyncStorage:()=>h});var a=r(7786),i=r(5042),o=r(2184),n=r(5609),c=e([n]);n=(c.then?(await c)():c)[0];let l=new a.AppRouteRouteModule({definition:{kind:i.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:"/Users/caoqu/team-agent/customer-agent/packages/server/app/api/agent-workspaces/[workspaceId]/sessions/route.ts",nextConfigOutput:"standalone",userland:n}),{requestAsyncStorage:d,staticGenerationAsyncStorage:h,serverHooks:p}=l,g="/api/agent-workspaces/[workspaceId]/sessions/route";function u(){return(0,o.patchFetch)({serverHooks:p,staticGenerationAsyncStorage:h})}s()}catch(e){s(e)}})},5609:(e,t,r)=>{r.a(e,async(e,s)=>{try{r.r(t),r.d(t,{GET:()=>d});var a=r(1890),i=r(1322),o=r(2557),n=r(4537),c=r(2083),u=r(6405),l=e([c]);async function d(e,t){let r;let s=new URL(e.url),l=(0,u.q)(s.searchParams.get("agentType"));if(!l)return a.NextResponse.json({error:"A valid agentType is required"},{status:400});try{let e=(0,u.M)(s);r={cursor:e.cursor,limit:e.limit,refresh:e.refresh}}catch(e){return a.NextResponse.json({error:e instanceof Error?e.message:"Invalid query"},{status:400})}try{if("customer-agent"!==l)return a.NextResponse.json(await (0,c.NL)().listWorkspaceSessions(l,t.params.workspaceId,r));let e=await n.agentHost.getProjectStore().get(t.params.workspaceId);if(!e)return a.NextResponse.json({error:"Workspace not found"},{status:404});let s=(await n.agentHost.getSessionStore().list(e.id)).map(({messages:t,events:r,...s})=>({...s,agentType:"customer-agent",nativeSessionId:s.id,cwd:e.description,occupancy:n.agentHost.isSessionRunning(s.id)?"owned-by-customer-agent":"available",sourceLabel:"Customer Agent",canResume:!0,canDelete:!n.agentHost.isSessionRunning(s.id),permissionMode:(0,i.NyU)(s.metadata.permissionMode)})).sort((e,t)=>t.updated.localeCompare(e.updated));return a.NextResponse.json((0,o.L)(s,r,s[0]?.updated??e.updated))}catch(e){return a.NextResponse.json({error:e instanceof Error?e.message:"Workspace sessions failed"},{status:(0,c.WW)(e)})}}c=(l.then?(await l)():l)[0],s()}catch(e){s(e)}})},6405:(e,t,r)=>{r.d(t,{M:()=>i,q:()=>a});let s=new Set(["customer-agent","codex","claude-code","opencode"]);function a(e){return e&&s.has(e)?e:null}function i(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}}},1436:(e,t,r)=>{r.d(t,{N:()=>d});var s=r(1322),a=r(7561),i=r(9411);class o{constructor(e){this._acquired=!1,this.lockPath=e.replace(/scheduled_tasks\.json$/,".scheduler.lock")}get acquired(){return this._acquired}tryAcquire(){if(this._acquired)return!0;if((0,a.existsSync)(this.lockPath))try{let e=parseInt((0,a.readFileSync)(this.lockPath,"utf-8").trim(),10);if(!isNaN(e)&&e!==process.pid)try{return process.kill(e,0),!1}catch{}}catch{}try{let e=(0,i.dirname)(this.lockPath);return(0,a.existsSync)(e)||(0,a.mkdirSync)(e,{recursive:!0}),(0,a.writeFileSync)(this.lockPath,String(process.pid),"utf-8"),this._acquired=!0,!0}catch{return!1}}release(){if(this._acquired){try{(0,a.unlinkSync)(this.lockPath)}catch{}this._acquired=!1}}}class n{constructor(e,t,r){this.cronTasks=e,this.onFire=t,this.onTasksChanged=r,this.timer=null,this.watcher=null,this.started=!1,this.lock=new o(e.getFilePath())}start(){if(!this.started){if(!this.lock.tryAcquire()){console.warn("[CronScheduler] Another process holds the scheduler lock — skipping start.");return}this.started=!0,this.timer=setInterval(()=>{this.tick()},1e3),this.startFileWatcher(),console.log(`[CronScheduler] Started (PID=${process.pid})`)}}stop(){this.started&&(this.started=!1,this.timer&&(clearInterval(this.timer),this.timer=null),this.watcher&&(this.watcher.close(),this.watcher=null),this.lock.release(),console.log("[CronScheduler] Stopped."))}startFileWatcher(){let e=this.cronTasks.getFilePath(),t=(0,i.dirname)(e);if(!(0,a.existsSync)(t))try{(0,a.mkdirSync)(t,{recursive:!0})}catch{}try{this.watcher=(0,a.watch)(t,{persistent:!1},(e,t)=>{"scheduled_tasks.json"===t&&this.onTasksChanged(this.cronTasks.load())})}catch(e){console.warn("[CronScheduler] Could not start file watcher:",e)}}async tick(){let e=Date.now(),t=this.cronTasks.load(),r=!1;for(let a of t)a.enabled&&a.nextFireAt&&!(a.nextFireAt>e)&&(this.onFire(a),a.recurring?this.cronTasks.update(a.id,{nextFireAt:(0,s.Ilu)(a.cron,e),lastFiredAt:e}):this.cronTasks.delete(a.id),r=!0);r&&this.onTasksChanged(this.cronTasks.load())}}var c=r(785);class u{constructor(){this.tasks=new s.vo4((0,c.kO)()),this.scheduler=new n(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(4537).then(r.bind(r,4537)),{getCustomerGoalCoordinator:s}=await Promise.all([r.e(4537),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 l=globalThis;function d(){return l.__sharedCronService??=new u}}};var t=require("../../../../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),s=t.X(0,[8375,6703,6244,1322,4621,2083,4537],()=>r(3841));module.exports=s})();
@@ -1 +1 @@
1
- "use strict";(()=>{var e={};e.id=8593,e.ids=[8593],e.modules={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")},1282:e=>{e.exports=require("child_process")},2048:e=>{e.exports=require("fs")},9801:e=>{e.exports=require("os")},5315:e=>{e.exports=require("path")},2728:e=>{e.exports=import("@anthropic-ai/claude-agent-sdk")},7718:e=>{e.exports=require("node:child_process")},6005:e=>{e.exports=require("node:crypto")},5673:e=>{e.exports=require("node:events")},7561:e=>{e.exports=require("node:fs")},3977:e=>{e.exports=require("node:fs/promises")},8849:e=>{e.exports=require("node:http")},2286:e=>{e.exports=require("node:https")},2033:e=>{e.exports=require("node:module")},7503:e=>{e.exports=require("node:net")},612:e=>{e.exports=require("node:os")},9411:e=>{e.exports=require("node:path")},1747:e=>{e.exports=require("node:readline")},6915:e=>{e.exports=require("node:string_decoder")},1041:e=>{e.exports=require("node:url")},5881:e=>{e.exports=require("node:util")},3755:(e,t,r)=>{r.a(e,async(e,s)=>{try{r.r(t),r.d(t,{originalPathname:()=>m,patchFetch:()=>u,requestAsyncStorage:()=>h,routeModule:()=>d,serverHooks:()=>p,staticGenerationAsyncStorage:()=>l});var a=r(7786),i=r(5042),o=r(2184),n=r(4214),c=e([n]);n=(c.then?(await c)():c)[0];let d=new a.AppRouteRouteModule({definition:{kind:i.x.APP_ROUTE,page:"/api/agent-workspaces/route",pathname:"/api/agent-workspaces",filename:"route",bundlePath:"app/api/agent-workspaces/route"},resolvedPagePath:"/private/tmp/agentroam-release21-20260914/packages/server/app/api/agent-workspaces/route.ts",nextConfigOutput:"standalone",userland:n}),{requestAsyncStorage:h,staticGenerationAsyncStorage:l,serverHooks:p}=d,m="/api/agent-workspaces/route";function u(){return(0,o.patchFetch)({serverHooks:p,staticGenerationAsyncStorage:l})}s()}catch(e){s(e)}})},6405:(e,t,r)=>{r.d(t,{M:()=>i,q:()=>a});let s=new Set(["customer-agent","codex","claude-code","opencode"]);function a(e){return e&&s.has(e)?e:null}function i(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}}},4214:(e,t,r)=>{r.a(e,async(e,s)=>{try{r.r(t),r.d(t,{GET:()=>h,POST:()=>l});var a=r(1890),i=r(2557),o=r(4537),n=r(2083),c=r(556),u=r(6405),d=e([n]);async function h(e){let t;let r=new URL(e.url),s=(0,u.q)(r.searchParams.get("agentType"));if(!s)return a.NextResponse.json({error:"A valid agentType is required"},{status:400});try{t=(0,u.M)(r)}catch(e){return a.NextResponse.json({error:e instanceof Error?e.message:"Invalid query"},{status:400})}try{if("customer-agent"!==s)return a.NextResponse.json(await (0,n.NL)().listWorkspaces(s,t));let e=(await o.agentHost.getProjectStore().list()).map((e,t)=>({agentType:s,workspaceId:e.id,name:e.name,roots:e.description?[e.description]:[],order:t,updatedAt:e.updated,source:"native"}));return a.NextResponse.json((0,i.L)(e,t,e[0]?.updatedAt??null))}catch(e){return a.NextResponse.json({error:e instanceof Error?e.message:"Workspace discovery failed"},{status:(0,n.WW)(e)})}}async function l(e){let t;try{t=await e.json()}catch{return a.NextResponse.json({error:"A JSON body is required"},{status:400})}let r=(0,u.q)(t.agentType??null);if(!r||!t.path?.trim())return a.NextResponse.json({error:"A valid agentType and path are required"},{status:400});try{let e=c.a.canonicalDirectory(t.path);if("customer-agent"!==r)return a.NextResponse.json(await (0,n.NL)().importWorkspace(r,e,t.name),{status:201});let s=await c.a.list(),i=await c.a.create(e,t.name);return a.NextResponse.json({workspace:{agentType:r,workspaceId:i.id,name:i.name,roots:i.description?[i.description]:[],order:Math.max(0,s.findIndex(e=>e.id===i.id)),updatedAt:i.updated,source:"native"},existing:s.some(e=>e.id===i.id)},{status:201})}catch(t){let e=(0,c.r)(t);if(500!==e.status)return a.NextResponse.json(e.body,{status:e.status});return a.NextResponse.json({error:t instanceof Error?t.message:"Workspace import failed"},{status:(0,n.WW)(t)})}}n=(d.then?(await d)():d)[0],s()}catch(e){s(e)}})},556:(e,t,r)=>{r.d(t,{r:()=>h,a:()=>d});var s=r(612),a=r(1322),i=r(785),o=r(6005),n=r(9411);class c extends Error{constructor(e,t,r){super(e),this.code=t,this.status=r,this.name="WebProjectError"}}class u{constructor(e,t){this.store=e,this.paths=t}list(){return this.store.list()}async get(e){let t=await this.store.get(e);if(!t)throw new c("项目不存在","PROJECT_NOT_FOUND",404);return t}async create(e,t){let r=this.paths.assertDirectory(e);for(let e of(await this.store.list()))try{if(this.paths.assertDirectory(e.description)===r)return e}catch{}let s=new Date().toISOString();return this.store.create({id:(0,o.randomUUID)(),name:t?.trim()||(0,n.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 c("项目名称不能为空","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}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 d=new u(new a.XWE((0,i.kO)()),a.Tpv.fromEnvironment(process.env.AGENT_WEB_ROOTS,(0,s.homedir)()));function h(e){return e instanceof c?{status:e.status,body:{error:e.message,code:e.code}}:e instanceof a.TLe?{status:400,body:{error:e.message,code:e.code}}:{status:500,body:{error:e instanceof Error?e.message:"项目操作失败",code:"PROJECT_OPERATION_FAILED"}}}},1436:(e,t,r)=>{r.d(t,{N:()=>h});var s=r(1322),a=r(7561),i=r(9411);class o{constructor(e){this._acquired=!1,this.lockPath=e.replace(/scheduled_tasks\.json$/,".scheduler.lock")}get acquired(){return this._acquired}tryAcquire(){if(this._acquired)return!0;if((0,a.existsSync)(this.lockPath))try{let e=parseInt((0,a.readFileSync)(this.lockPath,"utf-8").trim(),10);if(!isNaN(e)&&e!==process.pid)try{return process.kill(e,0),!1}catch{}}catch{}try{let e=(0,i.dirname)(this.lockPath);return(0,a.existsSync)(e)||(0,a.mkdirSync)(e,{recursive:!0}),(0,a.writeFileSync)(this.lockPath,String(process.pid),"utf-8"),this._acquired=!0,!0}catch{return!1}}release(){if(this._acquired){try{(0,a.unlinkSync)(this.lockPath)}catch{}this._acquired=!1}}}class n{constructor(e,t,r){this.cronTasks=e,this.onFire=t,this.onTasksChanged=r,this.timer=null,this.watcher=null,this.started=!1,this.lock=new o(e.getFilePath())}start(){if(!this.started){if(!this.lock.tryAcquire()){console.warn("[CronScheduler] Another process holds the scheduler lock — skipping start.");return}this.started=!0,this.timer=setInterval(()=>{this.tick()},1e3),this.startFileWatcher(),console.log(`[CronScheduler] Started (PID=${process.pid})`)}}stop(){this.started&&(this.started=!1,this.timer&&(clearInterval(this.timer),this.timer=null),this.watcher&&(this.watcher.close(),this.watcher=null),this.lock.release(),console.log("[CronScheduler] Stopped."))}startFileWatcher(){let e=this.cronTasks.getFilePath(),t=(0,i.dirname)(e);if(!(0,a.existsSync)(t))try{(0,a.mkdirSync)(t,{recursive:!0})}catch{}try{this.watcher=(0,a.watch)(t,{persistent:!1},(e,t)=>{"scheduled_tasks.json"===t&&this.onTasksChanged(this.cronTasks.load())})}catch(e){console.warn("[CronScheduler] Could not start file watcher:",e)}}async tick(){let e=Date.now(),t=this.cronTasks.load(),r=!1;for(let a of t)a.enabled&&a.nextFireAt&&!(a.nextFireAt>e)&&(this.onFire(a),a.recurring?this.cronTasks.update(a.id,{nextFireAt:(0,s.Ilu)(a.cron,e),lastFiredAt:e}):this.cronTasks.delete(a.id),r=!0);r&&this.onTasksChanged(this.cronTasks.load())}}var c=r(785);class u{constructor(){this.tasks=new s.vo4((0,c.kO)()),this.scheduler=new n(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(4537).then(r.bind(r,4537)),{getCustomerGoalCoordinator:s}=await Promise.all([r.e(4537),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 d=globalThis;function h(){return d.__sharedCronService??=new u}}};var t=require("../../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),s=t.X(0,[8375,6703,6244,1322,4621,2083,4537],()=>r(3755));module.exports=s})();
1
+ "use strict";(()=>{var e={};e.id=8593,e.ids=[8593],e.modules={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")},1282:e=>{e.exports=require("child_process")},2048:e=>{e.exports=require("fs")},9801:e=>{e.exports=require("os")},5315:e=>{e.exports=require("path")},2728:e=>{e.exports=import("@anthropic-ai/claude-agent-sdk")},7718:e=>{e.exports=require("node:child_process")},6005:e=>{e.exports=require("node:crypto")},5673:e=>{e.exports=require("node:events")},7561:e=>{e.exports=require("node:fs")},3977:e=>{e.exports=require("node:fs/promises")},8849:e=>{e.exports=require("node:http")},2286:e=>{e.exports=require("node:https")},2033:e=>{e.exports=require("node:module")},7503:e=>{e.exports=require("node:net")},612:e=>{e.exports=require("node:os")},9411:e=>{e.exports=require("node:path")},1747:e=>{e.exports=require("node:readline")},6915:e=>{e.exports=require("node:string_decoder")},1041:e=>{e.exports=require("node:url")},5881:e=>{e.exports=require("node:util")},5449:(e,t,r)=>{r.a(e,async(e,s)=>{try{r.r(t),r.d(t,{originalPathname:()=>m,patchFetch:()=>u,requestAsyncStorage:()=>h,routeModule:()=>d,serverHooks:()=>p,staticGenerationAsyncStorage:()=>l});var a=r(7786),i=r(5042),o=r(2184),n=r(4214),c=e([n]);n=(c.then?(await c)():c)[0];let d=new a.AppRouteRouteModule({definition:{kind:i.x.APP_ROUTE,page:"/api/agent-workspaces/route",pathname:"/api/agent-workspaces",filename:"route",bundlePath:"app/api/agent-workspaces/route"},resolvedPagePath:"/Users/caoqu/team-agent/customer-agent/packages/server/app/api/agent-workspaces/route.ts",nextConfigOutput:"standalone",userland:n}),{requestAsyncStorage:h,staticGenerationAsyncStorage:l,serverHooks:p}=d,m="/api/agent-workspaces/route";function u(){return(0,o.patchFetch)({serverHooks:p,staticGenerationAsyncStorage:l})}s()}catch(e){s(e)}})},6405:(e,t,r)=>{r.d(t,{M:()=>i,q:()=>a});let s=new Set(["customer-agent","codex","claude-code","opencode"]);function a(e){return e&&s.has(e)?e:null}function i(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}}},4214:(e,t,r)=>{r.a(e,async(e,s)=>{try{r.r(t),r.d(t,{GET:()=>h,POST:()=>l});var a=r(1890),i=r(2557),o=r(4537),n=r(2083),c=r(556),u=r(6405),d=e([n]);async function h(e){let t;let r=new URL(e.url),s=(0,u.q)(r.searchParams.get("agentType"));if(!s)return a.NextResponse.json({error:"A valid agentType is required"},{status:400});try{t=(0,u.M)(r)}catch(e){return a.NextResponse.json({error:e instanceof Error?e.message:"Invalid query"},{status:400})}try{if("customer-agent"!==s)return a.NextResponse.json(await (0,n.NL)().listWorkspaces(s,t));let e=(await o.agentHost.getProjectStore().list()).map((e,t)=>({agentType:s,workspaceId:e.id,name:e.name,roots:e.description?[e.description]:[],order:t,updatedAt:e.updated,source:"native"}));return a.NextResponse.json((0,i.L)(e,t,e[0]?.updatedAt??null))}catch(e){return a.NextResponse.json({error:e instanceof Error?e.message:"Workspace discovery failed"},{status:(0,n.WW)(e)})}}async function l(e){let t;try{t=await e.json()}catch{return a.NextResponse.json({error:"A JSON body is required"},{status:400})}let r=(0,u.q)(t.agentType??null);if(!r||!t.path?.trim())return a.NextResponse.json({error:"A valid agentType and path are required"},{status:400});try{let e=c.a.canonicalDirectory(t.path);if("customer-agent"!==r)return a.NextResponse.json(await (0,n.NL)().importWorkspace(r,e,t.name),{status:201});let s=await c.a.list(),i=await c.a.create(e,t.name);return a.NextResponse.json({workspace:{agentType:r,workspaceId:i.id,name:i.name,roots:i.description?[i.description]:[],order:Math.max(0,s.findIndex(e=>e.id===i.id)),updatedAt:i.updated,source:"native"},existing:s.some(e=>e.id===i.id)},{status:201})}catch(t){let e=(0,c.r)(t);if(500!==e.status)return a.NextResponse.json(e.body,{status:e.status});return a.NextResponse.json({error:t instanceof Error?t.message:"Workspace import failed"},{status:(0,n.WW)(t)})}}n=(d.then?(await d)():d)[0],s()}catch(e){s(e)}})},556:(e,t,r)=>{r.d(t,{r:()=>h,a:()=>d});var s=r(612),a=r(1322),i=r(785),o=r(6005),n=r(9411);class c extends Error{constructor(e,t,r){super(e),this.code=t,this.status=r,this.name="WebProjectError"}}class u{constructor(e,t){this.store=e,this.paths=t}list(){return this.store.list()}async get(e){let t=await this.store.get(e);if(!t)throw new c("项目不存在","PROJECT_NOT_FOUND",404);return t}async create(e,t){let r=this.paths.assertDirectory(e);for(let e of(await this.store.list()))try{if(this.paths.assertDirectory(e.description)===r)return e}catch{}let s=new Date().toISOString();return this.store.create({id:(0,o.randomUUID)(),name:t?.trim()||(0,n.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 c("项目名称不能为空","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}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 d=new u(new a.XWE((0,i.kO)()),a.Tpv.fromEnvironment(process.env.AGENT_WEB_ROOTS,(0,s.homedir)()));function h(e){return e instanceof c?{status:e.status,body:{error:e.message,code:e.code}}:e instanceof a.TLe?{status:400,body:{error:e.message,code:e.code}}:{status:500,body:{error:e instanceof Error?e.message:"项目操作失败",code:"PROJECT_OPERATION_FAILED"}}}},1436:(e,t,r)=>{r.d(t,{N:()=>h});var s=r(1322),a=r(7561),i=r(9411);class o{constructor(e){this._acquired=!1,this.lockPath=e.replace(/scheduled_tasks\.json$/,".scheduler.lock")}get acquired(){return this._acquired}tryAcquire(){if(this._acquired)return!0;if((0,a.existsSync)(this.lockPath))try{let e=parseInt((0,a.readFileSync)(this.lockPath,"utf-8").trim(),10);if(!isNaN(e)&&e!==process.pid)try{return process.kill(e,0),!1}catch{}}catch{}try{let e=(0,i.dirname)(this.lockPath);return(0,a.existsSync)(e)||(0,a.mkdirSync)(e,{recursive:!0}),(0,a.writeFileSync)(this.lockPath,String(process.pid),"utf-8"),this._acquired=!0,!0}catch{return!1}}release(){if(this._acquired){try{(0,a.unlinkSync)(this.lockPath)}catch{}this._acquired=!1}}}class n{constructor(e,t,r){this.cronTasks=e,this.onFire=t,this.onTasksChanged=r,this.timer=null,this.watcher=null,this.started=!1,this.lock=new o(e.getFilePath())}start(){if(!this.started){if(!this.lock.tryAcquire()){console.warn("[CronScheduler] Another process holds the scheduler lock — skipping start.");return}this.started=!0,this.timer=setInterval(()=>{this.tick()},1e3),this.startFileWatcher(),console.log(`[CronScheduler] Started (PID=${process.pid})`)}}stop(){this.started&&(this.started=!1,this.timer&&(clearInterval(this.timer),this.timer=null),this.watcher&&(this.watcher.close(),this.watcher=null),this.lock.release(),console.log("[CronScheduler] Stopped."))}startFileWatcher(){let e=this.cronTasks.getFilePath(),t=(0,i.dirname)(e);if(!(0,a.existsSync)(t))try{(0,a.mkdirSync)(t,{recursive:!0})}catch{}try{this.watcher=(0,a.watch)(t,{persistent:!1},(e,t)=>{"scheduled_tasks.json"===t&&this.onTasksChanged(this.cronTasks.load())})}catch(e){console.warn("[CronScheduler] Could not start file watcher:",e)}}async tick(){let e=Date.now(),t=this.cronTasks.load(),r=!1;for(let a of t)a.enabled&&a.nextFireAt&&!(a.nextFireAt>e)&&(this.onFire(a),a.recurring?this.cronTasks.update(a.id,{nextFireAt:(0,s.Ilu)(a.cron,e),lastFiredAt:e}):this.cronTasks.delete(a.id),r=!0);r&&this.onTasksChanged(this.cronTasks.load())}}var c=r(785);class u{constructor(){this.tasks=new s.vo4((0,c.kO)()),this.scheduler=new n(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(4537).then(r.bind(r,4537)),{getCustomerGoalCoordinator:s}=await Promise.all([r.e(4537),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 d=globalThis;function h(){return d.__sharedCronService??=new u}}};var t=require("../../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),s=t.X(0,[8375,6703,6244,1322,4621,2083,4537],()=>r(5449));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")},9909:(e,t,r)=>{r.r(t),r.d(t,{originalPathname:()=>c,patchFetch:()=>h,requestAsyncStorage:()=>d,routeModule:()=>u,serverHooks:()=>v,staticGenerationAsyncStorage:()=>l});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-release21-20260914/packages/server/app/api/auth/verify/route.ts",nextConfigOutput:"standalone",userland:a}),{requestAsyncStorage:d,staticGenerationAsyncStorage:l,serverHooks:v}=u,c="/api/auth/verify/route";function h(){return(0,n.patchFetch)({serverHooks:v,staticGenerationAsyncStorage:l})}}};var t=require("../../../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),a=t.X(0,[8375,6703],()=>r(9909));module.exports=a})();
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")},3935:(e,t,r)=>{r.r(t),r.d(t,{originalPathname:()=>v,patchFetch:()=>h,requestAsyncStorage:()=>d,routeModule:()=>p,serverHooks:()=>l,staticGenerationAsyncStorage:()=>c});var a={};r.r(a),r.d(a,{GET:()=>u});var s=r(7786),o=r(5042),n=r(2184),i=r(1890);async function u(e){let t=e.headers.get("Authorization"),r=t?.replace("Bearer ",""),a=new URL(e.url).searchParams.get("token"),s=process.env.AGENT_SDK_TOKEN;return s?(r||a)===s?i.NextResponse.json({valid:!0,project:"default"}):i.NextResponse.json({valid:!1},{status:401}):i.NextResponse.json({valid:!0,project:"dev"})}let p=new s.AppRouteRouteModule({definition:{kind:o.x.APP_ROUTE,page:"/api/auth/verify/route",pathname:"/api/auth/verify",filename:"route",bundlePath:"app/api/auth/verify/route"},resolvedPagePath:"/Users/caoqu/team-agent/customer-agent/packages/server/app/api/auth/verify/route.ts",nextConfigOutput:"standalone",userland:a}),{requestAsyncStorage:d,staticGenerationAsyncStorage:c,serverHooks:l}=p,v="/api/auth/verify/route";function h(){return(0,n.patchFetch)({serverHooks:l,staticGenerationAsyncStorage:c})}}};var t=require("../../../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),a=t.X(0,[8375,6703],()=>r(3935));module.exports=a})();
@@ -1 +1 @@
1
- "use strict";(()=>{var e={};e.id=7462,e.ids=[7462],e.modules={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")},9801:e=>{e.exports=require("os")},7718:e=>{e.exports=require("node:child_process")},6005:e=>{e.exports=require("node:crypto")},5673:e=>{e.exports=require("node:events")},7561:e=>{e.exports=require("node:fs")},3977:e=>{e.exports=require("node:fs/promises")},8849:e=>{e.exports=require("node:http")},2286:e=>{e.exports=require("node:https")},2033:e=>{e.exports=require("node:module")},612:e=>{e.exports=require("node:os")},9411:e=>{e.exports=require("node:path")},1747:e=>{e.exports=require("node:readline")},1041:e=>{e.exports=require("node:url")},3027:(e,t,r)=>{r.r(t),r.d(t,{originalPathname:()=>f,patchFetch:()=>m,requestAsyncStorage:()=>p,routeModule:()=>d,serverHooks:()=>g,staticGenerationAsyncStorage:()=>k});var s={};r.r(s),r.d(s,{POST:()=>u,dynamic:()=>h});var i=r(7786),o=r(5042),a=r(2184),n=r(1436),c=r(4621),l=r(9001);let h="force-dynamic";async function u(e){let t=(0,l.o)(e);if(t)return t;try{let{method:t,args:r}=await e.json();if("string"!=typeof t||!Array.isArray(r)||r.length>10)return Response.json({error:"Invalid operation"},{status:400});return Response.json(t.startsWith("cron")?(0,n.N)().call(t,r):await (0,c.i)().call(t,r),{headers:{"cache-control":"no-store"}})}catch(e){return Response.json({error:e instanceof Error?e.message:"Operation failed"},{status:400})}}let d=new i.AppRouteRouteModule({definition:{kind:o.x.APP_ROUTE,page:"/api/business/route",pathname:"/api/business",filename:"route",bundlePath:"app/api/business/route"},resolvedPagePath:"/private/tmp/agentroam-release21-20260914/packages/server/app/api/business/route.ts",nextConfigOutput:"standalone",userland:s}),{requestAsyncStorage:p,staticGenerationAsyncStorage:k,serverHooks:g}=d,f="/api/business/route";function m(){return(0,a.patchFetch)({serverHooks:g,staticGenerationAsyncStorage:k})}},7786:(e,t,r)=>{e.exports=r(517)},1436:(e,t,r)=>{r.d(t,{N:()=>u});var s=r(1322),i=r(7561),o=r(9411);class a{constructor(e){this._acquired=!1,this.lockPath=e.replace(/scheduled_tasks\.json$/,".scheduler.lock")}get acquired(){return this._acquired}tryAcquire(){if(this._acquired)return!0;if((0,i.existsSync)(this.lockPath))try{let e=parseInt((0,i.readFileSync)(this.lockPath,"utf-8").trim(),10);if(!isNaN(e)&&e!==process.pid)try{return process.kill(e,0),!1}catch{}}catch{}try{let e=(0,o.dirname)(this.lockPath);return(0,i.existsSync)(e)||(0,i.mkdirSync)(e,{recursive:!0}),(0,i.writeFileSync)(this.lockPath,String(process.pid),"utf-8"),this._acquired=!0,!0}catch{return!1}}release(){if(this._acquired){try{(0,i.unlinkSync)(this.lockPath)}catch{}this._acquired=!1}}}class n{constructor(e,t,r){this.cronTasks=e,this.onFire=t,this.onTasksChanged=r,this.timer=null,this.watcher=null,this.started=!1,this.lock=new a(e.getFilePath())}start(){if(!this.started){if(!this.lock.tryAcquire()){console.warn("[CronScheduler] Another process holds the scheduler lock — skipping start.");return}this.started=!0,this.timer=setInterval(()=>{this.tick()},1e3),this.startFileWatcher(),console.log(`[CronScheduler] Started (PID=${process.pid})`)}}stop(){this.started&&(this.started=!1,this.timer&&(clearInterval(this.timer),this.timer=null),this.watcher&&(this.watcher.close(),this.watcher=null),this.lock.release(),console.log("[CronScheduler] Stopped."))}startFileWatcher(){let e=this.cronTasks.getFilePath(),t=(0,o.dirname)(e);if(!(0,i.existsSync)(t))try{(0,i.mkdirSync)(t,{recursive:!0})}catch{}try{this.watcher=(0,i.watch)(t,{persistent:!1},(e,t)=>{"scheduled_tasks.json"===t&&this.onTasksChanged(this.cronTasks.load())})}catch(e){console.warn("[CronScheduler] Could not start file watcher:",e)}}async tick(){let e=Date.now(),t=this.cronTasks.load(),r=!1;for(let i of t)i.enabled&&i.nextFireAt&&!(i.nextFireAt>e)&&(this.onFire(i),i.recurring?this.cronTasks.update(i.id,{nextFireAt:(0,s.Ilu)(i.cron,e),lastFiredAt:e}):this.cronTasks.delete(i.id),r=!0);r&&this.onTasksChanged(this.cronTasks.load())}}var c=r(785);class l{constructor(){this.tasks=new s.vo4((0,c.kO)()),this.scheduler=new n(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(4537).then(r.bind(r,4537)),{getCustomerGoalCoordinator:s}=await Promise.all([r.e(4537),r.e(732)]).then(r.bind(r,732)),i=e.sessionId;i&&await t.getSessionStore().get(i)||(i=(await t.createSession(e.label||"定时任务")).id,this.tasks.update(e.id,{sessionId:i})),await s().enqueue(i,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 h=globalThis;function u(){return h.__sharedCronService??=new l}},9001:(e,t,r)=>{r.d(t,{o:()=>i});let s=new Set(["capacitor://localhost","ionic://localhost"]);function i(e){if(!e.headers.get("content-type")?.toLowerCase().startsWith("application/json"))return Response.json({error:"JSON required"},{status:415});let t=e.headers.get("origin");if(!t||s.has(t))return null;let r=new URL(e.url),i="1"===process.env.AGENT_TRUST_TUNNEL_PROXY,o=i?e.headers.get("x-forwarded-host")?.split(",")[0].trim()||e.headers.get("host")||r.host:e.headers.get("host")||r.host,a=i&&e.headers.get("x-forwarded-proto")?.split(",")[0].trim()||r.protocol.slice(0,-1);return t!==`${a}://${o}`?Response.json({error:"Cross-origin write denied"},{status:403}):null}}};var t=require("../../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),s=t.X(0,[8375,1322,4621],()=>r(3027));module.exports=s})();
1
+ "use strict";(()=>{var e={};e.id=7462,e.ids=[7462],e.modules={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")},9801:e=>{e.exports=require("os")},7718:e=>{e.exports=require("node:child_process")},6005:e=>{e.exports=require("node:crypto")},5673:e=>{e.exports=require("node:events")},7561:e=>{e.exports=require("node:fs")},3977:e=>{e.exports=require("node:fs/promises")},8849:e=>{e.exports=require("node:http")},2286:e=>{e.exports=require("node:https")},2033:e=>{e.exports=require("node:module")},612:e=>{e.exports=require("node:os")},9411:e=>{e.exports=require("node:path")},1747:e=>{e.exports=require("node:readline")},1041:e=>{e.exports=require("node:url")},4259:(e,t,r)=>{r.r(t),r.d(t,{originalPathname:()=>f,patchFetch:()=>m,requestAsyncStorage:()=>p,routeModule:()=>d,serverHooks:()=>g,staticGenerationAsyncStorage:()=>k});var s={};r.r(s),r.d(s,{POST:()=>u,dynamic:()=>h});var i=r(7786),o=r(5042),a=r(2184),n=r(1436),c=r(4621),l=r(9001);let h="force-dynamic";async function u(e){let t=(0,l.o)(e);if(t)return t;try{let{method:t,args:r}=await e.json();if("string"!=typeof t||!Array.isArray(r)||r.length>10)return Response.json({error:"Invalid operation"},{status:400});return Response.json(t.startsWith("cron")?(0,n.N)().call(t,r):await (0,c.i)().call(t,r),{headers:{"cache-control":"no-store"}})}catch(e){return Response.json({error:e instanceof Error?e.message:"Operation failed"},{status:400})}}let d=new i.AppRouteRouteModule({definition:{kind:o.x.APP_ROUTE,page:"/api/business/route",pathname:"/api/business",filename:"route",bundlePath:"app/api/business/route"},resolvedPagePath:"/Users/caoqu/team-agent/customer-agent/packages/server/app/api/business/route.ts",nextConfigOutput:"standalone",userland:s}),{requestAsyncStorage:p,staticGenerationAsyncStorage:k,serverHooks:g}=d,f="/api/business/route";function m(){return(0,a.patchFetch)({serverHooks:g,staticGenerationAsyncStorage:k})}},7786:(e,t,r)=>{e.exports=r(517)},1436:(e,t,r)=>{r.d(t,{N:()=>u});var s=r(1322),i=r(7561),o=r(9411);class a{constructor(e){this._acquired=!1,this.lockPath=e.replace(/scheduled_tasks\.json$/,".scheduler.lock")}get acquired(){return this._acquired}tryAcquire(){if(this._acquired)return!0;if((0,i.existsSync)(this.lockPath))try{let e=parseInt((0,i.readFileSync)(this.lockPath,"utf-8").trim(),10);if(!isNaN(e)&&e!==process.pid)try{return process.kill(e,0),!1}catch{}}catch{}try{let e=(0,o.dirname)(this.lockPath);return(0,i.existsSync)(e)||(0,i.mkdirSync)(e,{recursive:!0}),(0,i.writeFileSync)(this.lockPath,String(process.pid),"utf-8"),this._acquired=!0,!0}catch{return!1}}release(){if(this._acquired){try{(0,i.unlinkSync)(this.lockPath)}catch{}this._acquired=!1}}}class n{constructor(e,t,r){this.cronTasks=e,this.onFire=t,this.onTasksChanged=r,this.timer=null,this.watcher=null,this.started=!1,this.lock=new a(e.getFilePath())}start(){if(!this.started){if(!this.lock.tryAcquire()){console.warn("[CronScheduler] Another process holds the scheduler lock — skipping start.");return}this.started=!0,this.timer=setInterval(()=>{this.tick()},1e3),this.startFileWatcher(),console.log(`[CronScheduler] Started (PID=${process.pid})`)}}stop(){this.started&&(this.started=!1,this.timer&&(clearInterval(this.timer),this.timer=null),this.watcher&&(this.watcher.close(),this.watcher=null),this.lock.release(),console.log("[CronScheduler] Stopped."))}startFileWatcher(){let e=this.cronTasks.getFilePath(),t=(0,o.dirname)(e);if(!(0,i.existsSync)(t))try{(0,i.mkdirSync)(t,{recursive:!0})}catch{}try{this.watcher=(0,i.watch)(t,{persistent:!1},(e,t)=>{"scheduled_tasks.json"===t&&this.onTasksChanged(this.cronTasks.load())})}catch(e){console.warn("[CronScheduler] Could not start file watcher:",e)}}async tick(){let e=Date.now(),t=this.cronTasks.load(),r=!1;for(let i of t)i.enabled&&i.nextFireAt&&!(i.nextFireAt>e)&&(this.onFire(i),i.recurring?this.cronTasks.update(i.id,{nextFireAt:(0,s.Ilu)(i.cron,e),lastFiredAt:e}):this.cronTasks.delete(i.id),r=!0);r&&this.onTasksChanged(this.cronTasks.load())}}var c=r(785);class l{constructor(){this.tasks=new s.vo4((0,c.kO)()),this.scheduler=new n(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(4537).then(r.bind(r,4537)),{getCustomerGoalCoordinator:s}=await Promise.all([r.e(4537),r.e(732)]).then(r.bind(r,732)),i=e.sessionId;i&&await t.getSessionStore().get(i)||(i=(await t.createSession(e.label||"定时任务")).id,this.tasks.update(e.id,{sessionId:i})),await s().enqueue(i,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 h=globalThis;function u(){return h.__sharedCronService??=new l}},9001:(e,t,r)=>{r.d(t,{o:()=>i});let s=new Set(["capacitor://localhost","ionic://localhost"]);function i(e){if(!e.headers.get("content-type")?.toLowerCase().startsWith("application/json"))return Response.json({error:"JSON required"},{status:415});let t=e.headers.get("origin");if(!t||s.has(t))return null;let r=new URL(e.url),i="1"===process.env.AGENT_TRUST_TUNNEL_PROXY,o=i?e.headers.get("x-forwarded-host")?.split(",")[0].trim()||e.headers.get("host")||r.host:e.headers.get("host")||r.host,a=i&&e.headers.get("x-forwarded-proto")?.split(",")[0].trim()||r.protocol.slice(0,-1);return t!==`${a}://${o}`?Response.json({error:"Cross-origin write denied"},{status:403}):null}}};var t=require("../../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),s=t.X(0,[8375,1322,4621],()=>r(4259));module.exports=s})();
@@ -1 +1 @@
1
- "use strict";(()=>{var e={};e.id=2210,e.ids=[2210],e.modules={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")},9801:e=>{e.exports=require("os")},7718:e=>{e.exports=require("node:child_process")},6005:e=>{e.exports=require("node:crypto")},5673:e=>{e.exports=require("node:events")},7561:e=>{e.exports=require("node:fs")},3977:e=>{e.exports=require("node:fs/promises")},8849:e=>{e.exports=require("node:http")},2286:e=>{e.exports=require("node:https")},2033:e=>{e.exports=require("node:module")},612:e=>{e.exports=require("node:os")},9411:e=>{e.exports=require("node:path")},1747:e=>{e.exports=require("node:readline")},1041:e=>{e.exports=require("node:url")},3374:(e,r,t)=>{t.r(r),t.d(r,{originalPathname:()=>q,patchFetch:()=>v,requestAsyncStorage:()=>l,routeModule:()=>d,serverHooks:()=>x,staticGenerationAsyncStorage:()=>m});var o={};t.r(o),t.d(o,{POST:()=>c});var n=t(7786),s=t(5042),a=t(2184),i=t(1890),p=t(1322),u=t(4621);async function c(e){try{let r=await e.json();if(!r.id||!r.command)return i.NextResponse.json({error:"id and command are required"},{status:400});let t=new p.KSK;try{await t.connectServer(r);let e=await t.discoverAllTools();return await (0,u.i)().mcp.save(r),await (0,u.i)().mcp.setEnabled(r.id,!0),i.NextResponse.json({status:"connected",tools:Object.fromEntries(e)})}finally{await t.disconnectServer(r.id)}}catch(e){return i.NextResponse.json({error:e instanceof Error?e.message:"Connection failed"},{status:500})}}let d=new n.AppRouteRouteModule({definition:{kind:s.x.APP_ROUTE,page:"/api/mcp/connect/route",pathname:"/api/mcp/connect",filename:"route",bundlePath:"app/api/mcp/connect/route"},resolvedPagePath:"/private/tmp/agentroam-release21-20260914/packages/server/app/api/mcp/connect/route.ts",nextConfigOutput:"standalone",userland:o}),{requestAsyncStorage:l,staticGenerationAsyncStorage:m,serverHooks:x}=d,q="/api/mcp/connect/route";function v(){return(0,a.patchFetch)({serverHooks:x,staticGenerationAsyncStorage:m})}}};var r=require("../../../../webpack-runtime.js");r.C(e);var t=e=>r(r.s=e),o=r.X(0,[8375,6703,1322,4621],()=>t(3374));module.exports=o})();
1
+ "use strict";(()=>{var e={};e.id=2210,e.ids=[2210],e.modules={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")},9801:e=>{e.exports=require("os")},7718:e=>{e.exports=require("node:child_process")},6005:e=>{e.exports=require("node:crypto")},5673:e=>{e.exports=require("node:events")},7561:e=>{e.exports=require("node:fs")},3977:e=>{e.exports=require("node:fs/promises")},8849:e=>{e.exports=require("node:http")},2286:e=>{e.exports=require("node:https")},2033:e=>{e.exports=require("node:module")},612:e=>{e.exports=require("node:os")},9411:e=>{e.exports=require("node:path")},1747:e=>{e.exports=require("node:readline")},1041:e=>{e.exports=require("node:url")},2993:(e,r,t)=>{t.r(r),t.d(r,{originalPathname:()=>q,patchFetch:()=>v,requestAsyncStorage:()=>l,routeModule:()=>d,serverHooks:()=>x,staticGenerationAsyncStorage:()=>m});var o={};t.r(o),t.d(o,{POST:()=>c});var n=t(7786),s=t(5042),a=t(2184),i=t(1890),p=t(1322),u=t(4621);async function c(e){try{let r=await e.json();if(!r.id||!r.command)return i.NextResponse.json({error:"id and command are required"},{status:400});let t=new p.KSK;try{await t.connectServer(r);let e=await t.discoverAllTools();return await (0,u.i)().mcp.save(r),await (0,u.i)().mcp.setEnabled(r.id,!0),i.NextResponse.json({status:"connected",tools:Object.fromEntries(e)})}finally{await t.disconnectServer(r.id)}}catch(e){return i.NextResponse.json({error:e instanceof Error?e.message:"Connection failed"},{status:500})}}let d=new n.AppRouteRouteModule({definition:{kind:s.x.APP_ROUTE,page:"/api/mcp/connect/route",pathname:"/api/mcp/connect",filename:"route",bundlePath:"app/api/mcp/connect/route"},resolvedPagePath:"/Users/caoqu/team-agent/customer-agent/packages/server/app/api/mcp/connect/route.ts",nextConfigOutput:"standalone",userland:o}),{requestAsyncStorage:l,staticGenerationAsyncStorage:m,serverHooks:x}=d,q="/api/mcp/connect/route";function v(){return(0,a.patchFetch)({serverHooks:x,staticGenerationAsyncStorage:m})}}};var r=require("../../../../webpack-runtime.js");r.C(e);var t=e=>r(r.s=e),o=r.X(0,[8375,6703,1322,4621],()=>t(2993));module.exports=o})();
@@ -1 +1 @@
1
- "use strict";(()=>{var e={};e.id=5585,e.ids=[5585],e.modules={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")},9801:e=>{e.exports=require("os")},7718:e=>{e.exports=require("node:child_process")},6005:e=>{e.exports=require("node:crypto")},5673:e=>{e.exports=require("node:events")},7561:e=>{e.exports=require("node:fs")},3977:e=>{e.exports=require("node:fs/promises")},8849:e=>{e.exports=require("node:http")},2286:e=>{e.exports=require("node:https")},2033:e=>{e.exports=require("node:module")},612:e=>{e.exports=require("node:os")},9411:e=>{e.exports=require("node:path")},1747:e=>{e.exports=require("node:readline")},1041:e=>{e.exports=require("node:url")},6940:(e,r,t)=>{t.r(r),t.d(r,{originalPathname:()=>m,patchFetch:()=>q,requestAsyncStorage:()=>c,routeModule:()=>d,serverHooks:()=>l,staticGenerationAsyncStorage:()=>x});var o={};t.r(o),t.d(o,{DELETE:()=>u});var s=t(7786),n=t(5042),p=t(2184),i=t(1890),a=t(4621);async function u(e){let r=new URL(e.url).searchParams.get("serverId");return r?(await (0,a.i)().mcp.setEnabled(r,!1),i.NextResponse.json({status:"disconnected"})):i.NextResponse.json({error:"serverId is required"},{status:400})}let d=new s.AppRouteRouteModule({definition:{kind:n.x.APP_ROUTE,page:"/api/mcp/disconnect/route",pathname:"/api/mcp/disconnect",filename:"route",bundlePath:"app/api/mcp/disconnect/route"},resolvedPagePath:"/private/tmp/agentroam-release21-20260914/packages/server/app/api/mcp/disconnect/route.ts",nextConfigOutput:"standalone",userland:o}),{requestAsyncStorage:c,staticGenerationAsyncStorage:x,serverHooks:l}=d,m="/api/mcp/disconnect/route";function q(){return(0,p.patchFetch)({serverHooks:l,staticGenerationAsyncStorage:x})}}};var r=require("../../../../webpack-runtime.js");r.C(e);var t=e=>r(r.s=e),o=r.X(0,[8375,6703,1322,4621],()=>t(6940));module.exports=o})();
1
+ "use strict";(()=>{var e={};e.id=5585,e.ids=[5585],e.modules={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")},9801:e=>{e.exports=require("os")},7718:e=>{e.exports=require("node:child_process")},6005:e=>{e.exports=require("node:crypto")},5673:e=>{e.exports=require("node:events")},7561:e=>{e.exports=require("node:fs")},3977:e=>{e.exports=require("node:fs/promises")},8849:e=>{e.exports=require("node:http")},2286:e=>{e.exports=require("node:https")},2033:e=>{e.exports=require("node:module")},612:e=>{e.exports=require("node:os")},9411:e=>{e.exports=require("node:path")},1747:e=>{e.exports=require("node:readline")},1041:e=>{e.exports=require("node:url")},867:(e,r,t)=>{t.r(r),t.d(r,{originalPathname:()=>m,patchFetch:()=>q,requestAsyncStorage:()=>c,routeModule:()=>d,serverHooks:()=>l,staticGenerationAsyncStorage:()=>x});var s={};t.r(s),t.d(s,{DELETE:()=>u});var o=t(7786),n=t(5042),i=t(2184),p=t(1890),a=t(4621);async function u(e){let r=new URL(e.url).searchParams.get("serverId");return r?(await (0,a.i)().mcp.setEnabled(r,!1),p.NextResponse.json({status:"disconnected"})):p.NextResponse.json({error:"serverId is required"},{status:400})}let d=new o.AppRouteRouteModule({definition:{kind:n.x.APP_ROUTE,page:"/api/mcp/disconnect/route",pathname:"/api/mcp/disconnect",filename:"route",bundlePath:"app/api/mcp/disconnect/route"},resolvedPagePath:"/Users/caoqu/team-agent/customer-agent/packages/server/app/api/mcp/disconnect/route.ts",nextConfigOutput:"standalone",userland:s}),{requestAsyncStorage:c,staticGenerationAsyncStorage:x,serverHooks:l}=d,m="/api/mcp/disconnect/route";function q(){return(0,i.patchFetch)({serverHooks:l,staticGenerationAsyncStorage:x})}}};var r=require("../../../../webpack-runtime.js");r.C(e);var t=e=>r(r.s=e),s=r.X(0,[8375,6703,1322,4621],()=>t(867));module.exports=s})();
@@ -1 +1 @@
1
- "use strict";(()=>{var e={};e.id=2935,e.ids=[2935],e.modules={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")},9801:e=>{e.exports=require("os")},7718:e=>{e.exports=require("node:child_process")},6005:e=>{e.exports=require("node:crypto")},5673:e=>{e.exports=require("node:events")},7561:e=>{e.exports=require("node:fs")},3977:e=>{e.exports=require("node:fs/promises")},8849:e=>{e.exports=require("node:http")},2286:e=>{e.exports=require("node:https")},2033:e=>{e.exports=require("node:module")},612:e=>{e.exports=require("node:os")},9411:e=>{e.exports=require("node:path")},1747:e=>{e.exports=require("node:readline")},1041:e=>{e.exports=require("node:url")},9132:(e,r,t)=>{t.r(r),t.d(r,{originalPathname:()=>m,patchFetch:()=>q,requestAsyncStorage:()=>c,routeModule:()=>d,serverHooks:()=>l,staticGenerationAsyncStorage:()=>x});var s={};t.r(s),t.d(s,{GET:()=>u});var o=t(7786),p=t(5042),i=t(2184),n=t(1890),a=t(4621);async function u(){let e=await (0,a.i)().mcp.listAll();return n.NextResponse.json(e)}let d=new o.AppRouteRouteModule({definition:{kind:p.x.APP_ROUTE,page:"/api/mcp/servers/route",pathname:"/api/mcp/servers",filename:"route",bundlePath:"app/api/mcp/servers/route"},resolvedPagePath:"/private/tmp/agentroam-release21-20260914/packages/server/app/api/mcp/servers/route.ts",nextConfigOutput:"standalone",userland:s}),{requestAsyncStorage:c,staticGenerationAsyncStorage:x,serverHooks:l}=d,m="/api/mcp/servers/route";function q(){return(0,i.patchFetch)({serverHooks:l,staticGenerationAsyncStorage:x})}}};var r=require("../../../../webpack-runtime.js");r.C(e);var t=e=>r(r.s=e),s=r.X(0,[8375,6703,1322,4621],()=>t(9132));module.exports=s})();
1
+ "use strict";(()=>{var e={};e.id=2935,e.ids=[2935],e.modules={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")},9801:e=>{e.exports=require("os")},7718:e=>{e.exports=require("node:child_process")},6005:e=>{e.exports=require("node:crypto")},5673:e=>{e.exports=require("node:events")},7561:e=>{e.exports=require("node:fs")},3977:e=>{e.exports=require("node:fs/promises")},8849:e=>{e.exports=require("node:http")},2286:e=>{e.exports=require("node:https")},2033:e=>{e.exports=require("node:module")},612:e=>{e.exports=require("node:os")},9411:e=>{e.exports=require("node:path")},1747:e=>{e.exports=require("node:readline")},1041:e=>{e.exports=require("node:url")},7073:(e,r,t)=>{t.r(r),t.d(r,{originalPathname:()=>m,patchFetch:()=>q,requestAsyncStorage:()=>c,routeModule:()=>d,serverHooks:()=>l,staticGenerationAsyncStorage:()=>x});var s={};t.r(s),t.d(s,{GET:()=>a});var o=t(7786),p=t(5042),i=t(2184),n=t(1890),u=t(4621);async function a(){let e=await (0,u.i)().mcp.listAll();return n.NextResponse.json(e)}let d=new o.AppRouteRouteModule({definition:{kind:p.x.APP_ROUTE,page:"/api/mcp/servers/route",pathname:"/api/mcp/servers",filename:"route",bundlePath:"app/api/mcp/servers/route"},resolvedPagePath:"/Users/caoqu/team-agent/customer-agent/packages/server/app/api/mcp/servers/route.ts",nextConfigOutput:"standalone",userland:s}),{requestAsyncStorage:c,staticGenerationAsyncStorage:x,serverHooks:l}=d,m="/api/mcp/servers/route";function q(){return(0,i.patchFetch)({serverHooks:l,staticGenerationAsyncStorage:x})}}};var r=require("../../../../webpack-runtime.js");r.C(e);var t=e=>r(r.s=e),s=r.X(0,[8375,6703,1322,4621],()=>t(7073));module.exports=s})();
@@ -1 +1 @@
1
- "use strict";(()=>{var e={};e.id=6006,e.ids=[6006],e.modules={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")},9801:e=>{e.exports=require("os")},7718:e=>{e.exports=require("node:child_process")},6005:e=>{e.exports=require("node:crypto")},5673:e=>{e.exports=require("node:events")},7561:e=>{e.exports=require("node:fs")},3977:e=>{e.exports=require("node:fs/promises")},8849:e=>{e.exports=require("node:http")},2286:e=>{e.exports=require("node:https")},2033:e=>{e.exports=require("node:module")},612:e=>{e.exports=require("node:os")},9411:e=>{e.exports=require("node:path")},1747:e=>{e.exports=require("node:readline")},1041:e=>{e.exports=require("node:url")},8671:(e,r,t)=>{t.r(r),t.d(r,{originalPathname:()=>q,patchFetch:()=>y,requestAsyncStorage:()=>x,routeModule:()=>m,serverHooks:()=>c,staticGenerationAsyncStorage:()=>l});var o={};t.r(o),t.d(o,{DELETE:()=>d,GET:()=>u});var s=t(7786),n=t(5042),p=t(2184),i=t(1890);let a=(0,t(4621).i)().memory;async function u(e,{params:r}){let t=await a.get(r.key);return t?i.NextResponse.json(t):i.NextResponse.json({error:"Memory not found"},{status:404})}async function d(e,{params:r}){return await a.delete(r.key),i.NextResponse.json({status:"deleted"})}let m=new s.AppRouteRouteModule({definition:{kind:n.x.APP_ROUTE,page:"/api/memory/[key]/route",pathname:"/api/memory/[key]",filename:"route",bundlePath:"app/api/memory/[key]/route"},resolvedPagePath:"/private/tmp/agentroam-release21-20260914/packages/server/app/api/memory/[key]/route.ts",nextConfigOutput:"standalone",userland:o}),{requestAsyncStorage:x,staticGenerationAsyncStorage:l,serverHooks:c}=m,q="/api/memory/[key]/route";function y(){return(0,p.patchFetch)({serverHooks:c,staticGenerationAsyncStorage:l})}}};var r=require("../../../../webpack-runtime.js");r.C(e);var t=e=>r(r.s=e),o=r.X(0,[8375,6703,1322,4621],()=>t(8671));module.exports=o})();
1
+ "use strict";(()=>{var e={};e.id=6006,e.ids=[6006],e.modules={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")},9801:e=>{e.exports=require("os")},7718:e=>{e.exports=require("node:child_process")},6005:e=>{e.exports=require("node:crypto")},5673:e=>{e.exports=require("node:events")},7561:e=>{e.exports=require("node:fs")},3977:e=>{e.exports=require("node:fs/promises")},8849:e=>{e.exports=require("node:http")},2286:e=>{e.exports=require("node:https")},2033:e=>{e.exports=require("node:module")},612:e=>{e.exports=require("node:os")},9411:e=>{e.exports=require("node:path")},1747:e=>{e.exports=require("node:readline")},1041:e=>{e.exports=require("node:url")},8865:(e,r,t)=>{t.r(r),t.d(r,{originalPathname:()=>q,patchFetch:()=>y,requestAsyncStorage:()=>x,routeModule:()=>m,serverHooks:()=>l,staticGenerationAsyncStorage:()=>c});var o={};t.r(o),t.d(o,{DELETE:()=>d,GET:()=>a});var s=t(7786),n=t(5042),p=t(2184),i=t(1890);let u=(0,t(4621).i)().memory;async function a(e,{params:r}){let t=await u.get(r.key);return t?i.NextResponse.json(t):i.NextResponse.json({error:"Memory not found"},{status:404})}async function d(e,{params:r}){return await u.delete(r.key),i.NextResponse.json({status:"deleted"})}let m=new s.AppRouteRouteModule({definition:{kind:n.x.APP_ROUTE,page:"/api/memory/[key]/route",pathname:"/api/memory/[key]",filename:"route",bundlePath:"app/api/memory/[key]/route"},resolvedPagePath:"/Users/caoqu/team-agent/customer-agent/packages/server/app/api/memory/[key]/route.ts",nextConfigOutput:"standalone",userland:o}),{requestAsyncStorage:x,staticGenerationAsyncStorage:c,serverHooks:l}=m,q="/api/memory/[key]/route";function y(){return(0,p.patchFetch)({serverHooks:l,staticGenerationAsyncStorage:c})}}};var r=require("../../../../webpack-runtime.js");r.C(e);var t=e=>r(r.s=e),o=r.X(0,[8375,6703,1322,4621],()=>t(8865));module.exports=o})();
@@ -1 +1 @@
1
- "use strict";(()=>{var e={};e.id=3760,e.ids=[3760],e.modules={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")},9801:e=>{e.exports=require("os")},7718:e=>{e.exports=require("node:child_process")},6005:e=>{e.exports=require("node:crypto")},5673:e=>{e.exports=require("node:events")},7561:e=>{e.exports=require("node:fs")},3977:e=>{e.exports=require("node:fs/promises")},8849:e=>{e.exports=require("node:http")},2286:e=>{e.exports=require("node:https")},2033:e=>{e.exports=require("node:module")},612:e=>{e.exports=require("node:os")},9411:e=>{e.exports=require("node:path")},1747:e=>{e.exports=require("node:readline")},1041:e=>{e.exports=require("node:url")},3591:(e,r,t)=>{t.r(r),t.d(r,{originalPathname:()=>q,patchFetch:()=>h,requestAsyncStorage:()=>x,routeModule:()=>m,serverHooks:()=>l,staticGenerationAsyncStorage:()=>c});var o={};t.r(o),t.d(o,{GET:()=>u,POST:()=>d});var s=t(7786),n=t(5042),a=t(2184),i=t(1890);let p=(0,t(4621).i)().memory;async function u(e){let r=new URL(e.url).searchParams.get("q");if(r){let e=await p.search(r);return i.NextResponse.json(e)}let t=await p.list();return i.NextResponse.json(t)}async function d(e){try{let r=await e.json();if(!r.name||!r.content)return i.NextResponse.json({error:"name and content are required"},{status:400});return await p.set(r),i.NextResponse.json({status:"saved"},{status:201})}catch(e){return i.NextResponse.json({error:e instanceof Error?e.message:"Save failed"},{status:500})}}let m=new s.AppRouteRouteModule({definition:{kind:n.x.APP_ROUTE,page:"/api/memory/route",pathname:"/api/memory",filename:"route",bundlePath:"app/api/memory/route"},resolvedPagePath:"/private/tmp/agentroam-release21-20260914/packages/server/app/api/memory/route.ts",nextConfigOutput:"standalone",userland:o}),{requestAsyncStorage:x,staticGenerationAsyncStorage:c,serverHooks:l}=m,q="/api/memory/route";function h(){return(0,a.patchFetch)({serverHooks:l,staticGenerationAsyncStorage:c})}}};var r=require("../../../webpack-runtime.js");r.C(e);var t=e=>r(r.s=e),o=r.X(0,[8375,6703,1322,4621],()=>t(3591));module.exports=o})();
1
+ "use strict";(()=>{var e={};e.id=3760,e.ids=[3760],e.modules={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")},9801:e=>{e.exports=require("os")},7718:e=>{e.exports=require("node:child_process")},6005:e=>{e.exports=require("node:crypto")},5673:e=>{e.exports=require("node:events")},7561:e=>{e.exports=require("node:fs")},3977:e=>{e.exports=require("node:fs/promises")},8849:e=>{e.exports=require("node:http")},2286:e=>{e.exports=require("node:https")},2033:e=>{e.exports=require("node:module")},612:e=>{e.exports=require("node:os")},9411:e=>{e.exports=require("node:path")},1747:e=>{e.exports=require("node:readline")},1041:e=>{e.exports=require("node:url")},1188:(e,r,t)=>{t.r(r),t.d(r,{originalPathname:()=>q,patchFetch:()=>h,requestAsyncStorage:()=>c,routeModule:()=>m,serverHooks:()=>l,staticGenerationAsyncStorage:()=>x});var o={};t.r(o),t.d(o,{GET:()=>p,POST:()=>d});var s=t(7786),n=t(5042),a=t(2184),i=t(1890);let u=(0,t(4621).i)().memory;async function p(e){let r=new URL(e.url).searchParams.get("q");if(r){let e=await u.search(r);return i.NextResponse.json(e)}let t=await u.list();return i.NextResponse.json(t)}async function d(e){try{let r=await e.json();if(!r.name||!r.content)return i.NextResponse.json({error:"name and content are required"},{status:400});return await u.set(r),i.NextResponse.json({status:"saved"},{status:201})}catch(e){return i.NextResponse.json({error:e instanceof Error?e.message:"Save failed"},{status:500})}}let m=new s.AppRouteRouteModule({definition:{kind:n.x.APP_ROUTE,page:"/api/memory/route",pathname:"/api/memory",filename:"route",bundlePath:"app/api/memory/route"},resolvedPagePath:"/Users/caoqu/team-agent/customer-agent/packages/server/app/api/memory/route.ts",nextConfigOutput:"standalone",userland:o}),{requestAsyncStorage:c,staticGenerationAsyncStorage:x,serverHooks:l}=m,q="/api/memory/route";function h(){return(0,a.patchFetch)({serverHooks:l,staticGenerationAsyncStorage:x})}}};var r=require("../../../webpack-runtime.js");r.C(e);var t=e=>r(r.s=e),o=r.X(0,[8375,6703,1322,4621],()=>t(1188));module.exports=o})();
@@ -1 +1 @@
1
- "use strict";(()=>{var e={};e.id=2538,e.ids=[2538],e.modules={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")},9801:e=>{e.exports=require("os")},7718:e=>{e.exports=require("node:child_process")},6005:e=>{e.exports=require("node:crypto")},5673:e=>{e.exports=require("node:events")},7561:e=>{e.exports=require("node:fs")},3977:e=>{e.exports=require("node:fs/promises")},8849:e=>{e.exports=require("node:http")},2286:e=>{e.exports=require("node:https")},2033:e=>{e.exports=require("node:module")},612:e=>{e.exports=require("node:os")},9411:e=>{e.exports=require("node:path")},1747:e=>{e.exports=require("node:readline")},1041:e=>{e.exports=require("node:url")},8866:(e,t,r)=>{r.r(t),r.d(t,{originalPathname:()=>m,patchFetch:()=>f,requestAsyncStorage:()=>p,routeModule:()=>h,serverHooks:()=>k,staticGenerationAsyncStorage:()=>g});var s={};r.r(s),r.d(s,{POST:()=>d});var i=r(7786),a=r(5042),o=r(2184),n=r(1890),c=r(1322),l=r(4537);let u=new c.Q$d(l.agentHost.getBuilder().getToolRegistry(),l.agentHost.getBuilder().getSkillRegistry(),process.cwd());async function d(e){try{let t=await e.json();if(!t.dirPath)return n.NextResponse.json({error:"dirPath is required"},{status:400});let r=await u.loadPlugin(t.dirPath);return await u.activatePlugin(r.manifest.name),n.NextResponse.json({status:"loaded",plugin:{name:r.manifest.name,version:r.manifest.version,description:r.manifest.description}})}catch(e){return n.NextResponse.json({error:e instanceof Error?e.message:"Plugin load failed"},{status:500})}}let h=new i.AppRouteRouteModule({definition:{kind:a.x.APP_ROUTE,page:"/api/plugins/load/route",pathname:"/api/plugins/load",filename:"route",bundlePath:"app/api/plugins/load/route"},resolvedPagePath:"/private/tmp/agentroam-release21-20260914/packages/server/app/api/plugins/load/route.ts",nextConfigOutput:"standalone",userland:s}),{requestAsyncStorage:p,staticGenerationAsyncStorage:g,serverHooks:k}=h,m="/api/plugins/load/route";function f(){return(0,o.patchFetch)({serverHooks:k,staticGenerationAsyncStorage:g})}},1436:(e,t,r)=>{r.d(t,{N:()=>d});var s=r(1322),i=r(7561),a=r(9411);class o{constructor(e){this._acquired=!1,this.lockPath=e.replace(/scheduled_tasks\.json$/,".scheduler.lock")}get acquired(){return this._acquired}tryAcquire(){if(this._acquired)return!0;if((0,i.existsSync)(this.lockPath))try{let e=parseInt((0,i.readFileSync)(this.lockPath,"utf-8").trim(),10);if(!isNaN(e)&&e!==process.pid)try{return process.kill(e,0),!1}catch{}}catch{}try{let e=(0,a.dirname)(this.lockPath);return(0,i.existsSync)(e)||(0,i.mkdirSync)(e,{recursive:!0}),(0,i.writeFileSync)(this.lockPath,String(process.pid),"utf-8"),this._acquired=!0,!0}catch{return!1}}release(){if(this._acquired){try{(0,i.unlinkSync)(this.lockPath)}catch{}this._acquired=!1}}}class n{constructor(e,t,r){this.cronTasks=e,this.onFire=t,this.onTasksChanged=r,this.timer=null,this.watcher=null,this.started=!1,this.lock=new o(e.getFilePath())}start(){if(!this.started){if(!this.lock.tryAcquire()){console.warn("[CronScheduler] Another process holds the scheduler lock — skipping start.");return}this.started=!0,this.timer=setInterval(()=>{this.tick()},1e3),this.startFileWatcher(),console.log(`[CronScheduler] Started (PID=${process.pid})`)}}stop(){this.started&&(this.started=!1,this.timer&&(clearInterval(this.timer),this.timer=null),this.watcher&&(this.watcher.close(),this.watcher=null),this.lock.release(),console.log("[CronScheduler] Stopped."))}startFileWatcher(){let e=this.cronTasks.getFilePath(),t=(0,a.dirname)(e);if(!(0,i.existsSync)(t))try{(0,i.mkdirSync)(t,{recursive:!0})}catch{}try{this.watcher=(0,i.watch)(t,{persistent:!1},(e,t)=>{"scheduled_tasks.json"===t&&this.onTasksChanged(this.cronTasks.load())})}catch(e){console.warn("[CronScheduler] Could not start file watcher:",e)}}async tick(){let e=Date.now(),t=this.cronTasks.load(),r=!1;for(let i of t)i.enabled&&i.nextFireAt&&!(i.nextFireAt>e)&&(this.onFire(i),i.recurring?this.cronTasks.update(i.id,{nextFireAt:(0,s.Ilu)(i.cron,e),lastFiredAt:e}):this.cronTasks.delete(i.id),r=!0);r&&this.onTasksChanged(this.cronTasks.load())}}var c=r(785);class l{constructor(){this.tasks=new s.vo4((0,c.kO)()),this.scheduler=new n(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(4537).then(r.bind(r,4537)),{getCustomerGoalCoordinator:s}=await Promise.all([r.e(4537),r.e(732)]).then(r.bind(r,732)),i=e.sessionId;i&&await t.getSessionStore().get(i)||(i=(await t.createSession(e.label||"定时任务")).id,this.tasks.update(e.id,{sessionId:i})),await s().enqueue(i,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 u=globalThis;function d(){return u.__sharedCronService??=new l}}};var t=require("../../../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),s=t.X(0,[8375,6703,1322,4621,4537],()=>r(8866));module.exports=s})();
1
+ "use strict";(()=>{var e={};e.id=2538,e.ids=[2538],e.modules={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")},9801:e=>{e.exports=require("os")},7718:e=>{e.exports=require("node:child_process")},6005:e=>{e.exports=require("node:crypto")},5673:e=>{e.exports=require("node:events")},7561:e=>{e.exports=require("node:fs")},3977:e=>{e.exports=require("node:fs/promises")},8849:e=>{e.exports=require("node:http")},2286:e=>{e.exports=require("node:https")},2033:e=>{e.exports=require("node:module")},612:e=>{e.exports=require("node:os")},9411:e=>{e.exports=require("node:path")},1747:e=>{e.exports=require("node:readline")},1041:e=>{e.exports=require("node:url")},8525:(e,t,r)=>{r.r(t),r.d(t,{originalPathname:()=>m,patchFetch:()=>f,requestAsyncStorage:()=>p,routeModule:()=>h,serverHooks:()=>k,staticGenerationAsyncStorage:()=>g});var s={};r.r(s),r.d(s,{POST:()=>d});var i=r(7786),a=r(5042),o=r(2184),n=r(1890),c=r(1322),l=r(4537);let u=new c.Q$d(l.agentHost.getBuilder().getToolRegistry(),l.agentHost.getBuilder().getSkillRegistry(),process.cwd());async function d(e){try{let t=await e.json();if(!t.dirPath)return n.NextResponse.json({error:"dirPath is required"},{status:400});let r=await u.loadPlugin(t.dirPath);return await u.activatePlugin(r.manifest.name),n.NextResponse.json({status:"loaded",plugin:{name:r.manifest.name,version:r.manifest.version,description:r.manifest.description}})}catch(e){return n.NextResponse.json({error:e instanceof Error?e.message:"Plugin load failed"},{status:500})}}let h=new i.AppRouteRouteModule({definition:{kind:a.x.APP_ROUTE,page:"/api/plugins/load/route",pathname:"/api/plugins/load",filename:"route",bundlePath:"app/api/plugins/load/route"},resolvedPagePath:"/Users/caoqu/team-agent/customer-agent/packages/server/app/api/plugins/load/route.ts",nextConfigOutput:"standalone",userland:s}),{requestAsyncStorage:p,staticGenerationAsyncStorage:g,serverHooks:k}=h,m="/api/plugins/load/route";function f(){return(0,o.patchFetch)({serverHooks:k,staticGenerationAsyncStorage:g})}},1436:(e,t,r)=>{r.d(t,{N:()=>d});var s=r(1322),i=r(7561),a=r(9411);class o{constructor(e){this._acquired=!1,this.lockPath=e.replace(/scheduled_tasks\.json$/,".scheduler.lock")}get acquired(){return this._acquired}tryAcquire(){if(this._acquired)return!0;if((0,i.existsSync)(this.lockPath))try{let e=parseInt((0,i.readFileSync)(this.lockPath,"utf-8").trim(),10);if(!isNaN(e)&&e!==process.pid)try{return process.kill(e,0),!1}catch{}}catch{}try{let e=(0,a.dirname)(this.lockPath);return(0,i.existsSync)(e)||(0,i.mkdirSync)(e,{recursive:!0}),(0,i.writeFileSync)(this.lockPath,String(process.pid),"utf-8"),this._acquired=!0,!0}catch{return!1}}release(){if(this._acquired){try{(0,i.unlinkSync)(this.lockPath)}catch{}this._acquired=!1}}}class n{constructor(e,t,r){this.cronTasks=e,this.onFire=t,this.onTasksChanged=r,this.timer=null,this.watcher=null,this.started=!1,this.lock=new o(e.getFilePath())}start(){if(!this.started){if(!this.lock.tryAcquire()){console.warn("[CronScheduler] Another process holds the scheduler lock — skipping start.");return}this.started=!0,this.timer=setInterval(()=>{this.tick()},1e3),this.startFileWatcher(),console.log(`[CronScheduler] Started (PID=${process.pid})`)}}stop(){this.started&&(this.started=!1,this.timer&&(clearInterval(this.timer),this.timer=null),this.watcher&&(this.watcher.close(),this.watcher=null),this.lock.release(),console.log("[CronScheduler] Stopped."))}startFileWatcher(){let e=this.cronTasks.getFilePath(),t=(0,a.dirname)(e);if(!(0,i.existsSync)(t))try{(0,i.mkdirSync)(t,{recursive:!0})}catch{}try{this.watcher=(0,i.watch)(t,{persistent:!1},(e,t)=>{"scheduled_tasks.json"===t&&this.onTasksChanged(this.cronTasks.load())})}catch(e){console.warn("[CronScheduler] Could not start file watcher:",e)}}async tick(){let e=Date.now(),t=this.cronTasks.load(),r=!1;for(let i of t)i.enabled&&i.nextFireAt&&!(i.nextFireAt>e)&&(this.onFire(i),i.recurring?this.cronTasks.update(i.id,{nextFireAt:(0,s.Ilu)(i.cron,e),lastFiredAt:e}):this.cronTasks.delete(i.id),r=!0);r&&this.onTasksChanged(this.cronTasks.load())}}var c=r(785);class l{constructor(){this.tasks=new s.vo4((0,c.kO)()),this.scheduler=new n(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(4537).then(r.bind(r,4537)),{getCustomerGoalCoordinator:s}=await Promise.all([r.e(4537),r.e(732)]).then(r.bind(r,732)),i=e.sessionId;i&&await t.getSessionStore().get(i)||(i=(await t.createSession(e.label||"定时任务")).id,this.tasks.update(e.id,{sessionId:i})),await s().enqueue(i,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 u=globalThis;function d(){return u.__sharedCronService??=new l}}};var t=require("../../../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),s=t.X(0,[8375,6703,1322,4621,4537],()=>r(8525));module.exports=s})();
@@ -1 +1 @@
1
- "use strict";(()=>{var e={};e.id=7361,e.ids=[7361],e.modules={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")},9801:e=>{e.exports=require("os")},7718:e=>{e.exports=require("node:child_process")},6005:e=>{e.exports=require("node:crypto")},5673:e=>{e.exports=require("node:events")},7561:e=>{e.exports=require("node:fs")},3977:e=>{e.exports=require("node:fs/promises")},8849:e=>{e.exports=require("node:http")},2286:e=>{e.exports=require("node:https")},2033:e=>{e.exports=require("node:module")},612:e=>{e.exports=require("node:os")},9411:e=>{e.exports=require("node:path")},1747:e=>{e.exports=require("node:readline")},1041:e=>{e.exports=require("node:url")},6363:(e,t,r)=>{r.r(t),r.d(t,{originalPathname:()=>v,patchFetch:()=>y,requestAsyncStorage:()=>h,routeModule:()=>l,serverHooks:()=>x,staticGenerationAsyncStorage:()=>m});var s={};r.r(s),r.d(s,{DELETE:()=>d,GET:()=>c,PATCH:()=>p});var o=r(7786),n=r(5042),i=r(2184),a=r(1890),u=r(556);async function c(e,{params:t}){try{return a.NextResponse.json(await u.a.get(t.id))}catch(t){let e=(0,u.r)(t);return a.NextResponse.json(e.body,{status:e.status})}}async function p(e,{params:t}){try{let r=await e.json();return a.NextResponse.json(await u.a.rename(t.id,r.name??""))}catch(t){let e=(0,u.r)(t);return a.NextResponse.json(e.body,{status:e.status})}}async function d(e,{params:t}){try{return await u.a.delete(t.id),a.NextResponse.json({deleted:!0,projectId:t.id})}catch(t){let e=(0,u.r)(t);return a.NextResponse.json(e.body,{status:e.status})}}let l=new o.AppRouteRouteModule({definition:{kind:n.x.APP_ROUTE,page:"/api/projects/[id]/route",pathname:"/api/projects/[id]",filename:"route",bundlePath:"app/api/projects/[id]/route"},resolvedPagePath:"/private/tmp/agentroam-release21-20260914/packages/server/app/api/projects/[id]/route.ts",nextConfigOutput:"standalone",userland:s}),{requestAsyncStorage:h,staticGenerationAsyncStorage:m,serverHooks:x}=l,v="/api/projects/[id]/route";function y(){return(0,i.patchFetch)({serverHooks:x,staticGenerationAsyncStorage:m})}},556:(e,t,r)=>{r.d(t,{r:()=>d,a:()=>p});var s=r(612),o=r(1322),n=r(785),i=r(6005),a=r(9411);class u extends Error{constructor(e,t,r){super(e),this.code=t,this.status=r,this.name="WebProjectError"}}class c{constructor(e,t){this.store=e,this.paths=t}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()))try{if(this.paths.assertDirectory(e.description)===r)return e}catch{}let s=new Date().toISOString();return this.store.create({id:(0,i.randomUUID)(),name:t?.trim()||(0,a.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}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 p=new c(new o.XWE((0,n.kO)()),o.Tpv.fromEnvironment(process.env.AGENT_WEB_ROOTS,(0,s.homedir)()));function d(e){return e instanceof u?{status:e.status,body:{error:e.message,code:e.code}}:e instanceof o.TLe?{status:400,body:{error:e.message,code:e.code}}:{status:500,body:{error:e instanceof Error?e.message:"项目操作失败",code:"PROJECT_OPERATION_FAILED"}}}},785:(e,t,r)=>{r.d(t,{kO:()=>n,sr:()=>i});var s=r(9411);let o=function(){let e=process.argv[1];if(e){let t=(0,s.dirname)((0,s.resolve)(e)),r=`${s.sep}node_modules${s.sep}.bin`;return t.endsWith(r)?(0,s.resolve)(t,"..",".."):t}return(0,s.resolve)(process.cwd())}();function n(){return function(e=process.env,t=o){return(0,s.resolve)(e.AGENT_DATA_DIR?.trim()||t)}()}function i(){return function(e=process.env,t=o){return(0,s.resolve)(e.AGENT_WORKING_DIRECTORY?.trim()||t)}(process.env,n())}}};var t=require("../../../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),s=t.X(0,[8375,6703,1322],()=>r(6363));module.exports=s})();
1
+ "use strict";(()=>{var e={};e.id=7361,e.ids=[7361],e.modules={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")},9801:e=>{e.exports=require("os")},7718:e=>{e.exports=require("node:child_process")},6005:e=>{e.exports=require("node:crypto")},5673:e=>{e.exports=require("node:events")},7561:e=>{e.exports=require("node:fs")},3977:e=>{e.exports=require("node:fs/promises")},8849:e=>{e.exports=require("node:http")},2286:e=>{e.exports=require("node:https")},2033:e=>{e.exports=require("node:module")},612:e=>{e.exports=require("node:os")},9411:e=>{e.exports=require("node:path")},1747:e=>{e.exports=require("node:readline")},1041:e=>{e.exports=require("node:url")},9085:(e,t,r)=>{r.r(t),r.d(t,{originalPathname:()=>y,patchFetch:()=>f,requestAsyncStorage:()=>l,routeModule:()=>h,serverHooks:()=>x,staticGenerationAsyncStorage:()=>m});var s={};r.r(s),r.d(s,{DELETE:()=>d,GET:()=>c,PATCH:()=>p});var o=r(7786),n=r(5042),i=r(2184),a=r(1890),u=r(556);async function c(e,{params:t}){try{return a.NextResponse.json(await u.a.get(t.id))}catch(t){let e=(0,u.r)(t);return a.NextResponse.json(e.body,{status:e.status})}}async function p(e,{params:t}){try{let r=await e.json();return a.NextResponse.json(await u.a.rename(t.id,r.name??""))}catch(t){let e=(0,u.r)(t);return a.NextResponse.json(e.body,{status:e.status})}}async function d(e,{params:t}){try{return await u.a.delete(t.id),a.NextResponse.json({deleted:!0,projectId:t.id})}catch(t){let e=(0,u.r)(t);return a.NextResponse.json(e.body,{status:e.status})}}let h=new o.AppRouteRouteModule({definition:{kind:n.x.APP_ROUTE,page:"/api/projects/[id]/route",pathname:"/api/projects/[id]",filename:"route",bundlePath:"app/api/projects/[id]/route"},resolvedPagePath:"/Users/caoqu/team-agent/customer-agent/packages/server/app/api/projects/[id]/route.ts",nextConfigOutput:"standalone",userland:s}),{requestAsyncStorage:l,staticGenerationAsyncStorage:m,serverHooks:x}=h,y="/api/projects/[id]/route";function f(){return(0,i.patchFetch)({serverHooks:x,staticGenerationAsyncStorage:m})}},556:(e,t,r)=>{r.d(t,{r:()=>d,a:()=>p});var s=r(612),o=r(1322),n=r(785),i=r(6005),a=r(9411);class u extends Error{constructor(e,t,r){super(e),this.code=t,this.status=r,this.name="WebProjectError"}}class c{constructor(e,t){this.store=e,this.paths=t}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()))try{if(this.paths.assertDirectory(e.description)===r)return e}catch{}let s=new Date().toISOString();return this.store.create({id:(0,i.randomUUID)(),name:t?.trim()||(0,a.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}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 p=new c(new o.XWE((0,n.kO)()),o.Tpv.fromEnvironment(process.env.AGENT_WEB_ROOTS,(0,s.homedir)()));function d(e){return e instanceof u?{status:e.status,body:{error:e.message,code:e.code}}:e instanceof o.TLe?{status:400,body:{error:e.message,code:e.code}}:{status:500,body:{error:e instanceof Error?e.message:"项目操作失败",code:"PROJECT_OPERATION_FAILED"}}}},785:(e,t,r)=>{r.d(t,{kO:()=>n,sr:()=>i});var s=r(9411);let o=function(){let e=process.argv[1];if(e){let t=(0,s.dirname)((0,s.resolve)(e)),r=`${s.sep}node_modules${s.sep}.bin`;return t.endsWith(r)?(0,s.resolve)(t,"..",".."):t}return(0,s.resolve)(process.cwd())}();function n(){return function(e=process.env,t=o){return(0,s.resolve)(e.AGENT_DATA_DIR?.trim()||t)}()}function i(){return function(e=process.env,t=o){return(0,s.resolve)(e.AGENT_WORKING_DIRECTORY?.trim()||t)}(process.env,n())}}};var t=require("../../../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),s=t.X(0,[8375,6703,1322],()=>r(9085));module.exports=s})();
@@ -1 +1 @@
1
- "use strict";(()=>{var e={};e.id=6315,e.ids=[6315],e.modules={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")},9801:e=>{e.exports=require("os")},7718:e=>{e.exports=require("node:child_process")},6005:e=>{e.exports=require("node:crypto")},5673:e=>{e.exports=require("node:events")},7561:e=>{e.exports=require("node:fs")},3977:e=>{e.exports=require("node:fs/promises")},8849:e=>{e.exports=require("node:http")},2286:e=>{e.exports=require("node:https")},2033:e=>{e.exports=require("node:module")},612:e=>{e.exports=require("node:os")},9411:e=>{e.exports=require("node:path")},1747:e=>{e.exports=require("node:readline")},1041:e=>{e.exports=require("node:url")},4297:(e,r,t)=>{t.r(r),t.d(r,{originalPathname:()=>m,patchFetch:()=>v,requestAsyncStorage:()=>d,routeModule:()=>u,serverHooks:()=>l,staticGenerationAsyncStorage:()=>h});var s={};t.r(s),t.d(s,{GET:()=>p});var o=t(7786),n=t(5042),i=t(2184),a=t(1890),c=t(556);async function p(e){let r=new URL(e.url).searchParams.get("path")??"";return a.NextResponse.json({valid:c.a.check(r)},{headers:{"Cache-Control":"no-store"}})}let u=new o.AppRouteRouteModule({definition:{kind:n.x.APP_ROUTE,page:"/api/projects/check/route",pathname:"/api/projects/check",filename:"route",bundlePath:"app/api/projects/check/route"},resolvedPagePath:"/private/tmp/agentroam-release21-20260914/packages/server/app/api/projects/check/route.ts",nextConfigOutput:"standalone",userland:s}),{requestAsyncStorage:d,staticGenerationAsyncStorage:h,serverHooks:l}=u,m="/api/projects/check/route";function v(){return(0,i.patchFetch)({serverHooks:l,staticGenerationAsyncStorage:h})}},556:(e,r,t)=>{t.d(r,{r:()=>d,a:()=>u});var s=t(612),o=t(1322),n=t(785),i=t(6005),a=t(9411);class c extends Error{constructor(e,r,t){super(e),this.code=r,this.status=t,this.name="WebProjectError"}}class p{constructor(e,r){this.store=e,this.paths=r}list(){return this.store.list()}async get(e){let r=await this.store.get(e);if(!r)throw new c("项目不存在","PROJECT_NOT_FOUND",404);return r}async create(e,r){let t=this.paths.assertDirectory(e);for(let e of(await this.store.list()))try{if(this.paths.assertDirectory(e.description)===t)return e}catch{}let s=new Date().toISOString();return this.store.create({id:(0,i.randomUUID)(),name:r?.trim()||(0,a.basename)(t)||t,description:t,created:s,updated:s})}async rename(e,r){await this.get(e);let t=r.trim();if(!t)throw new c("项目名称不能为空","PROJECT_NAME_REQUIRED",400);return this.store.update(e,{name:t})}async delete(e){await this.get(e),await this.store.delete(e)}roots(){return this.paths.roots}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 u=new p(new o.XWE((0,n.kO)()),o.Tpv.fromEnvironment(process.env.AGENT_WEB_ROOTS,(0,s.homedir)()));function d(e){return e instanceof c?{status:e.status,body:{error:e.message,code:e.code}}:e instanceof o.TLe?{status:400,body:{error:e.message,code:e.code}}:{status:500,body:{error:e instanceof Error?e.message:"项目操作失败",code:"PROJECT_OPERATION_FAILED"}}}},785:(e,r,t)=>{t.d(r,{kO:()=>n,sr:()=>i});var s=t(9411);let o=function(){let e=process.argv[1];if(e){let r=(0,s.dirname)((0,s.resolve)(e)),t=`${s.sep}node_modules${s.sep}.bin`;return r.endsWith(t)?(0,s.resolve)(r,"..",".."):r}return(0,s.resolve)(process.cwd())}();function n(){return function(e=process.env,r=o){return(0,s.resolve)(e.AGENT_DATA_DIR?.trim()||r)}()}function i(){return function(e=process.env,r=o){return(0,s.resolve)(e.AGENT_WORKING_DIRECTORY?.trim()||r)}(process.env,n())}}};var r=require("../../../../webpack-runtime.js");r.C(e);var t=e=>r(r.s=e),s=r.X(0,[8375,6703,1322],()=>t(4297));module.exports=s})();
1
+ "use strict";(()=>{var e={};e.id=6315,e.ids=[6315],e.modules={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")},9801:e=>{e.exports=require("os")},7718:e=>{e.exports=require("node:child_process")},6005:e=>{e.exports=require("node:crypto")},5673:e=>{e.exports=require("node:events")},7561:e=>{e.exports=require("node:fs")},3977:e=>{e.exports=require("node:fs/promises")},8849:e=>{e.exports=require("node:http")},2286:e=>{e.exports=require("node:https")},2033:e=>{e.exports=require("node:module")},612:e=>{e.exports=require("node:os")},9411:e=>{e.exports=require("node:path")},1747:e=>{e.exports=require("node:readline")},1041:e=>{e.exports=require("node:url")},9695:(e,r,t)=>{t.r(r),t.d(r,{originalPathname:()=>m,patchFetch:()=>v,requestAsyncStorage:()=>d,routeModule:()=>p,serverHooks:()=>l,staticGenerationAsyncStorage:()=>h});var s={};t.r(s),t.d(s,{GET:()=>u});var o=t(7786),n=t(5042),i=t(2184),a=t(1890),c=t(556);async function u(e){let r=new URL(e.url).searchParams.get("path")??"";return a.NextResponse.json({valid:c.a.check(r)},{headers:{"Cache-Control":"no-store"}})}let p=new o.AppRouteRouteModule({definition:{kind:n.x.APP_ROUTE,page:"/api/projects/check/route",pathname:"/api/projects/check",filename:"route",bundlePath:"app/api/projects/check/route"},resolvedPagePath:"/Users/caoqu/team-agent/customer-agent/packages/server/app/api/projects/check/route.ts",nextConfigOutput:"standalone",userland:s}),{requestAsyncStorage:d,staticGenerationAsyncStorage:h,serverHooks:l}=p,m="/api/projects/check/route";function v(){return(0,i.patchFetch)({serverHooks:l,staticGenerationAsyncStorage:h})}},556:(e,r,t)=>{t.d(r,{r:()=>d,a:()=>p});var s=t(612),o=t(1322),n=t(785),i=t(6005),a=t(9411);class c extends Error{constructor(e,r,t){super(e),this.code=r,this.status=t,this.name="WebProjectError"}}class u{constructor(e,r){this.store=e,this.paths=r}list(){return this.store.list()}async get(e){let r=await this.store.get(e);if(!r)throw new c("项目不存在","PROJECT_NOT_FOUND",404);return r}async create(e,r){let t=this.paths.assertDirectory(e);for(let e of(await this.store.list()))try{if(this.paths.assertDirectory(e.description)===t)return e}catch{}let s=new Date().toISOString();return this.store.create({id:(0,i.randomUUID)(),name:r?.trim()||(0,a.basename)(t)||t,description:t,created:s,updated:s})}async rename(e,r){await this.get(e);let t=r.trim();if(!t)throw new c("项目名称不能为空","PROJECT_NAME_REQUIRED",400);return this.store.update(e,{name:t})}async delete(e){await this.get(e),await this.store.delete(e)}roots(){return this.paths.roots}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 p=new u(new o.XWE((0,n.kO)()),o.Tpv.fromEnvironment(process.env.AGENT_WEB_ROOTS,(0,s.homedir)()));function d(e){return e instanceof c?{status:e.status,body:{error:e.message,code:e.code}}:e instanceof o.TLe?{status:400,body:{error:e.message,code:e.code}}:{status:500,body:{error:e instanceof Error?e.message:"项目操作失败",code:"PROJECT_OPERATION_FAILED"}}}},785:(e,r,t)=>{t.d(r,{kO:()=>n,sr:()=>i});var s=t(9411);let o=function(){let e=process.argv[1];if(e){let r=(0,s.dirname)((0,s.resolve)(e)),t=`${s.sep}node_modules${s.sep}.bin`;return r.endsWith(t)?(0,s.resolve)(r,"..",".."):r}return(0,s.resolve)(process.cwd())}();function n(){return function(e=process.env,r=o){return(0,s.resolve)(e.AGENT_DATA_DIR?.trim()||r)}()}function i(){return function(e=process.env,r=o){return(0,s.resolve)(e.AGENT_WORKING_DIRECTORY?.trim()||r)}(process.env,n())}}};var r=require("../../../../webpack-runtime.js");r.C(e);var t=e=>r(r.s=e),s=r.X(0,[8375,6703,1322],()=>t(9695));module.exports=s})();
@@ -1 +1 @@
1
- "use strict";(()=>{var e={};e.id=4737,e.ids=[4737],e.modules={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")},9801:e=>{e.exports=require("os")},7718:e=>{e.exports=require("node:child_process")},6005:e=>{e.exports=require("node:crypto")},5673:e=>{e.exports=require("node:events")},7561:e=>{e.exports=require("node:fs")},3977:e=>{e.exports=require("node:fs/promises")},8849:e=>{e.exports=require("node:http")},2286:e=>{e.exports=require("node:https")},2033:e=>{e.exports=require("node:module")},612:e=>{e.exports=require("node:os")},9411:e=>{e.exports=require("node:path")},1747:e=>{e.exports=require("node:readline")},1041:e=>{e.exports=require("node:url")},2893:(e,r,t)=>{t.r(r),t.d(r,{originalPathname:()=>m,patchFetch:()=>v,requestAsyncStorage:()=>d,routeModule:()=>p,serverHooks:()=>l,staticGenerationAsyncStorage:()=>h});var s={};t.r(s),t.d(s,{GET:()=>u});var o=t(7786),i=t(5042),n=t(2184),a=t(1890),c=t(556);async function u(e){try{let r=new URL(e.url).searchParams.get("path")??"";return a.NextResponse.json(c.a.directories(r))}catch(r){let e=(0,c.r)(r);return a.NextResponse.json(e.body,{status:e.status})}}let p=new o.AppRouteRouteModule({definition:{kind:i.x.APP_ROUTE,page:"/api/projects/directories/route",pathname:"/api/projects/directories",filename:"route",bundlePath:"app/api/projects/directories/route"},resolvedPagePath:"/private/tmp/agentroam-release21-20260914/packages/server/app/api/projects/directories/route.ts",nextConfigOutput:"standalone",userland:s}),{requestAsyncStorage:d,staticGenerationAsyncStorage:h,serverHooks:l}=p,m="/api/projects/directories/route";function v(){return(0,n.patchFetch)({serverHooks:l,staticGenerationAsyncStorage:h})}},556:(e,r,t)=>{t.d(r,{r:()=>d,a:()=>p});var s=t(612),o=t(1322),i=t(785),n=t(6005),a=t(9411);class c extends Error{constructor(e,r,t){super(e),this.code=r,this.status=t,this.name="WebProjectError"}}class u{constructor(e,r){this.store=e,this.paths=r}list(){return this.store.list()}async get(e){let r=await this.store.get(e);if(!r)throw new c("项目不存在","PROJECT_NOT_FOUND",404);return r}async create(e,r){let t=this.paths.assertDirectory(e);for(let e of(await this.store.list()))try{if(this.paths.assertDirectory(e.description)===t)return e}catch{}let s=new Date().toISOString();return this.store.create({id:(0,n.randomUUID)(),name:r?.trim()||(0,a.basename)(t)||t,description:t,created:s,updated:s})}async rename(e,r){await this.get(e);let t=r.trim();if(!t)throw new c("项目名称不能为空","PROJECT_NAME_REQUIRED",400);return this.store.update(e,{name:t})}async delete(e){await this.get(e),await this.store.delete(e)}roots(){return this.paths.roots}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 p=new u(new o.XWE((0,i.kO)()),o.Tpv.fromEnvironment(process.env.AGENT_WEB_ROOTS,(0,s.homedir)()));function d(e){return e instanceof c?{status:e.status,body:{error:e.message,code:e.code}}:e instanceof o.TLe?{status:400,body:{error:e.message,code:e.code}}:{status:500,body:{error:e instanceof Error?e.message:"项目操作失败",code:"PROJECT_OPERATION_FAILED"}}}},785:(e,r,t)=>{t.d(r,{kO:()=>i,sr:()=>n});var s=t(9411);let o=function(){let e=process.argv[1];if(e){let r=(0,s.dirname)((0,s.resolve)(e)),t=`${s.sep}node_modules${s.sep}.bin`;return r.endsWith(t)?(0,s.resolve)(r,"..",".."):r}return(0,s.resolve)(process.cwd())}();function i(){return function(e=process.env,r=o){return(0,s.resolve)(e.AGENT_DATA_DIR?.trim()||r)}()}function n(){return function(e=process.env,r=o){return(0,s.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),s=r.X(0,[8375,6703,1322],()=>t(2893));module.exports=s})();
1
+ "use strict";(()=>{var e={};e.id=4737,e.ids=[4737],e.modules={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")},9801:e=>{e.exports=require("os")},7718:e=>{e.exports=require("node:child_process")},6005:e=>{e.exports=require("node:crypto")},5673:e=>{e.exports=require("node:events")},7561:e=>{e.exports=require("node:fs")},3977:e=>{e.exports=require("node:fs/promises")},8849:e=>{e.exports=require("node:http")},2286:e=>{e.exports=require("node:https")},2033:e=>{e.exports=require("node:module")},612:e=>{e.exports=require("node:os")},9411:e=>{e.exports=require("node:path")},1747:e=>{e.exports=require("node:readline")},1041:e=>{e.exports=require("node:url")},5938:(e,r,t)=>{t.r(r),t.d(r,{originalPathname:()=>m,patchFetch:()=>x,requestAsyncStorage:()=>d,routeModule:()=>p,serverHooks:()=>l,staticGenerationAsyncStorage:()=>h});var s={};t.r(s),t.d(s,{GET:()=>u});var o=t(7786),i=t(5042),n=t(2184),a=t(1890),c=t(556);async function u(e){try{let r=new URL(e.url).searchParams.get("path")??"";return a.NextResponse.json(c.a.directories(r))}catch(r){let e=(0,c.r)(r);return a.NextResponse.json(e.body,{status:e.status})}}let p=new o.AppRouteRouteModule({definition:{kind:i.x.APP_ROUTE,page:"/api/projects/directories/route",pathname:"/api/projects/directories",filename:"route",bundlePath:"app/api/projects/directories/route"},resolvedPagePath:"/Users/caoqu/team-agent/customer-agent/packages/server/app/api/projects/directories/route.ts",nextConfigOutput:"standalone",userland:s}),{requestAsyncStorage:d,staticGenerationAsyncStorage:h,serverHooks:l}=p,m="/api/projects/directories/route";function x(){return(0,n.patchFetch)({serverHooks:l,staticGenerationAsyncStorage:h})}},556:(e,r,t)=>{t.d(r,{r:()=>d,a:()=>p});var s=t(612),o=t(1322),i=t(785),n=t(6005),a=t(9411);class c extends Error{constructor(e,r,t){super(e),this.code=r,this.status=t,this.name="WebProjectError"}}class u{constructor(e,r){this.store=e,this.paths=r}list(){return this.store.list()}async get(e){let r=await this.store.get(e);if(!r)throw new c("项目不存在","PROJECT_NOT_FOUND",404);return r}async create(e,r){let t=this.paths.assertDirectory(e);for(let e of(await this.store.list()))try{if(this.paths.assertDirectory(e.description)===t)return e}catch{}let s=new Date().toISOString();return this.store.create({id:(0,n.randomUUID)(),name:r?.trim()||(0,a.basename)(t)||t,description:t,created:s,updated:s})}async rename(e,r){await this.get(e);let t=r.trim();if(!t)throw new c("项目名称不能为空","PROJECT_NAME_REQUIRED",400);return this.store.update(e,{name:t})}async delete(e){await this.get(e),await this.store.delete(e)}roots(){return this.paths.roots}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 p=new u(new o.XWE((0,i.kO)()),o.Tpv.fromEnvironment(process.env.AGENT_WEB_ROOTS,(0,s.homedir)()));function d(e){return e instanceof c?{status:e.status,body:{error:e.message,code:e.code}}:e instanceof o.TLe?{status:400,body:{error:e.message,code:e.code}}:{status:500,body:{error:e instanceof Error?e.message:"项目操作失败",code:"PROJECT_OPERATION_FAILED"}}}},785:(e,r,t)=>{t.d(r,{kO:()=>i,sr:()=>n});var s=t(9411);let o=function(){let e=process.argv[1];if(e){let r=(0,s.dirname)((0,s.resolve)(e)),t=`${s.sep}node_modules${s.sep}.bin`;return r.endsWith(t)?(0,s.resolve)(r,"..",".."):r}return(0,s.resolve)(process.cwd())}();function i(){return function(e=process.env,r=o){return(0,s.resolve)(e.AGENT_DATA_DIR?.trim()||r)}()}function n(){return function(e=process.env,r=o){return(0,s.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),s=r.X(0,[8375,6703,1322],()=>t(5938));module.exports=s})();
@@ -1 +1 @@
1
- "use strict";(()=>{var e={};e.id=1199,e.ids=[1199],e.modules={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")},9801:e=>{e.exports=require("os")},7718:e=>{e.exports=require("node:child_process")},6005:e=>{e.exports=require("node:crypto")},5673:e=>{e.exports=require("node:events")},7561:e=>{e.exports=require("node:fs")},3977:e=>{e.exports=require("node:fs/promises")},8849:e=>{e.exports=require("node:http")},2286:e=>{e.exports=require("node:https")},2033:e=>{e.exports=require("node:module")},612:e=>{e.exports=require("node:os")},9411:e=>{e.exports=require("node:path")},1747:e=>{e.exports=require("node:readline")},1041:e=>{e.exports=require("node:url")},6643:(e,r,t)=>{t.r(r),t.d(r,{originalPathname:()=>m,patchFetch:()=>v,requestAsyncStorage:()=>d,routeModule:()=>c,serverHooks:()=>l,staticGenerationAsyncStorage:()=>h});var s={};t.r(s),t.d(s,{GET:()=>u});var o=t(7786),n=t(5042),i=t(2184),a=t(1890),p=t(556);async function u(){return a.NextResponse.json(p.a.roots(),{headers:{"Cache-Control":"no-store"}})}let c=new o.AppRouteRouteModule({definition:{kind:n.x.APP_ROUTE,page:"/api/projects/roots/route",pathname:"/api/projects/roots",filename:"route",bundlePath:"app/api/projects/roots/route"},resolvedPagePath:"/private/tmp/agentroam-release21-20260914/packages/server/app/api/projects/roots/route.ts",nextConfigOutput:"standalone",userland:s}),{requestAsyncStorage:d,staticGenerationAsyncStorage:h,serverHooks:l}=c,m="/api/projects/roots/route";function v(){return(0,i.patchFetch)({serverHooks:l,staticGenerationAsyncStorage:h})}},556:(e,r,t)=>{t.d(r,{r:()=>d,a:()=>c});var s=t(612),o=t(1322),n=t(785),i=t(6005),a=t(9411);class p extends Error{constructor(e,r,t){super(e),this.code=r,this.status=t,this.name="WebProjectError"}}class u{constructor(e,r){this.store=e,this.paths=r}list(){return this.store.list()}async get(e){let r=await this.store.get(e);if(!r)throw new p("项目不存在","PROJECT_NOT_FOUND",404);return r}async create(e,r){let t=this.paths.assertDirectory(e);for(let e of(await this.store.list()))try{if(this.paths.assertDirectory(e.description)===t)return e}catch{}let s=new Date().toISOString();return this.store.create({id:(0,i.randomUUID)(),name:r?.trim()||(0,a.basename)(t)||t,description:t,created:s,updated:s})}async rename(e,r){await this.get(e);let t=r.trim();if(!t)throw new p("项目名称不能为空","PROJECT_NAME_REQUIRED",400);return this.store.update(e,{name:t})}async delete(e){await this.get(e),await this.store.delete(e)}roots(){return this.paths.roots}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 c=new u(new o.XWE((0,n.kO)()),o.Tpv.fromEnvironment(process.env.AGENT_WEB_ROOTS,(0,s.homedir)()));function d(e){return e instanceof p?{status:e.status,body:{error:e.message,code:e.code}}:e instanceof o.TLe?{status:400,body:{error:e.message,code:e.code}}:{status:500,body:{error:e instanceof Error?e.message:"项目操作失败",code:"PROJECT_OPERATION_FAILED"}}}},785:(e,r,t)=>{t.d(r,{kO:()=>n,sr:()=>i});var s=t(9411);let o=function(){let e=process.argv[1];if(e){let r=(0,s.dirname)((0,s.resolve)(e)),t=`${s.sep}node_modules${s.sep}.bin`;return r.endsWith(t)?(0,s.resolve)(r,"..",".."):r}return(0,s.resolve)(process.cwd())}();function n(){return function(e=process.env,r=o){return(0,s.resolve)(e.AGENT_DATA_DIR?.trim()||r)}()}function i(){return function(e=process.env,r=o){return(0,s.resolve)(e.AGENT_WORKING_DIRECTORY?.trim()||r)}(process.env,n())}}};var r=require("../../../../webpack-runtime.js");r.C(e);var t=e=>r(r.s=e),s=r.X(0,[8375,6703,1322],()=>t(6643));module.exports=s})();
1
+ "use strict";(()=>{var e={};e.id=1199,e.ids=[1199],e.modules={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")},9801:e=>{e.exports=require("os")},7718:e=>{e.exports=require("node:child_process")},6005:e=>{e.exports=require("node:crypto")},5673:e=>{e.exports=require("node:events")},7561:e=>{e.exports=require("node:fs")},3977:e=>{e.exports=require("node:fs/promises")},8849:e=>{e.exports=require("node:http")},2286:e=>{e.exports=require("node:https")},2033:e=>{e.exports=require("node:module")},612:e=>{e.exports=require("node:os")},9411:e=>{e.exports=require("node:path")},1747:e=>{e.exports=require("node:readline")},1041:e=>{e.exports=require("node:url")},4525:(e,r,t)=>{t.r(r),t.d(r,{originalPathname:()=>m,patchFetch:()=>v,requestAsyncStorage:()=>d,routeModule:()=>p,serverHooks:()=>l,staticGenerationAsyncStorage:()=>h});var s={};t.r(s),t.d(s,{GET:()=>c});var o=t(7786),n=t(5042),i=t(2184),a=t(1890),u=t(556);async function c(){return a.NextResponse.json(u.a.roots(),{headers:{"Cache-Control":"no-store"}})}let p=new o.AppRouteRouteModule({definition:{kind:n.x.APP_ROUTE,page:"/api/projects/roots/route",pathname:"/api/projects/roots",filename:"route",bundlePath:"app/api/projects/roots/route"},resolvedPagePath:"/Users/caoqu/team-agent/customer-agent/packages/server/app/api/projects/roots/route.ts",nextConfigOutput:"standalone",userland:s}),{requestAsyncStorage:d,staticGenerationAsyncStorage:h,serverHooks:l}=p,m="/api/projects/roots/route";function v(){return(0,i.patchFetch)({serverHooks:l,staticGenerationAsyncStorage:h})}},556:(e,r,t)=>{t.d(r,{r:()=>d,a:()=>p});var s=t(612),o=t(1322),n=t(785),i=t(6005),a=t(9411);class u extends Error{constructor(e,r,t){super(e),this.code=r,this.status=t,this.name="WebProjectError"}}class c{constructor(e,r){this.store=e,this.paths=r}list(){return this.store.list()}async get(e){let r=await this.store.get(e);if(!r)throw new u("项目不存在","PROJECT_NOT_FOUND",404);return r}async create(e,r){let t=this.paths.assertDirectory(e);for(let e of(await this.store.list()))try{if(this.paths.assertDirectory(e.description)===t)return e}catch{}let s=new Date().toISOString();return this.store.create({id:(0,i.randomUUID)(),name:r?.trim()||(0,a.basename)(t)||t,description:t,created:s,updated:s})}async rename(e,r){await this.get(e);let t=r.trim();if(!t)throw new u("项目名称不能为空","PROJECT_NAME_REQUIRED",400);return this.store.update(e,{name:t})}async delete(e){await this.get(e),await this.store.delete(e)}roots(){return this.paths.roots}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 p=new c(new o.XWE((0,n.kO)()),o.Tpv.fromEnvironment(process.env.AGENT_WEB_ROOTS,(0,s.homedir)()));function d(e){return e instanceof u?{status:e.status,body:{error:e.message,code:e.code}}:e instanceof o.TLe?{status:400,body:{error:e.message,code:e.code}}:{status:500,body:{error:e instanceof Error?e.message:"项目操作失败",code:"PROJECT_OPERATION_FAILED"}}}},785:(e,r,t)=>{t.d(r,{kO:()=>n,sr:()=>i});var s=t(9411);let o=function(){let e=process.argv[1];if(e){let r=(0,s.dirname)((0,s.resolve)(e)),t=`${s.sep}node_modules${s.sep}.bin`;return r.endsWith(t)?(0,s.resolve)(r,"..",".."):r}return(0,s.resolve)(process.cwd())}();function n(){return function(e=process.env,r=o){return(0,s.resolve)(e.AGENT_DATA_DIR?.trim()||r)}()}function i(){return function(e=process.env,r=o){return(0,s.resolve)(e.AGENT_WORKING_DIRECTORY?.trim()||r)}(process.env,n())}}};var r=require("../../../../webpack-runtime.js");r.C(e);var t=e=>r(r.s=e),s=r.X(0,[8375,6703,1322],()=>t(4525));module.exports=s})();
@@ -1 +1 @@
1
- "use strict";(()=>{var e={};e.id=4871,e.ids=[4871],e.modules={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")},9801:e=>{e.exports=require("os")},7718:e=>{e.exports=require("node:child_process")},6005:e=>{e.exports=require("node:crypto")},5673:e=>{e.exports=require("node:events")},7561:e=>{e.exports=require("node:fs")},3977:e=>{e.exports=require("node:fs/promises")},8849:e=>{e.exports=require("node:http")},2286:e=>{e.exports=require("node:https")},2033:e=>{e.exports=require("node:module")},612:e=>{e.exports=require("node:os")},9411:e=>{e.exports=require("node:path")},1747:e=>{e.exports=require("node:readline")},1041:e=>{e.exports=require("node:url")},9814:(e,t,r)=>{r.r(t),r.d(t,{originalPathname:()=>x,patchFetch:()=>v,requestAsyncStorage:()=>h,routeModule:()=>d,serverHooks:()=>m,staticGenerationAsyncStorage:()=>l});var s={};r.r(s),r.d(s,{GET:()=>p,POST:()=>c});var o=r(7786),n=r(5042),a=r(2184),i=r(1890),u=r(556);async function p(){return i.NextResponse.json(await u.a.list())}async function c(e){try{let t=await e.json();return i.NextResponse.json(await u.a.create(t.path??"",t.name),{status:201})}catch(t){let e=(0,u.r)(t);return i.NextResponse.json(e.body,{status:e.status})}}let d=new o.AppRouteRouteModule({definition:{kind:n.x.APP_ROUTE,page:"/api/projects/route",pathname:"/api/projects",filename:"route",bundlePath:"app/api/projects/route"},resolvedPagePath:"/private/tmp/agentroam-release21-20260914/packages/server/app/api/projects/route.ts",nextConfigOutput:"standalone",userland:s}),{requestAsyncStorage:h,staticGenerationAsyncStorage:l,serverHooks:m}=d,x="/api/projects/route";function v(){return(0,a.patchFetch)({serverHooks:m,staticGenerationAsyncStorage:l})}},556:(e,t,r)=>{r.d(t,{r:()=>d,a:()=>c});var s=r(612),o=r(1322),n=r(785),a=r(6005),i=r(9411);class u extends Error{constructor(e,t,r){super(e),this.code=t,this.status=r,this.name="WebProjectError"}}class p{constructor(e,t){this.store=e,this.paths=t}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()))try{if(this.paths.assertDirectory(e.description)===r)return e}catch{}let s=new Date().toISOString();return this.store.create({id:(0,a.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}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 c=new p(new o.XWE((0,n.kO)()),o.Tpv.fromEnvironment(process.env.AGENT_WEB_ROOTS,(0,s.homedir)()));function d(e){return e instanceof u?{status:e.status,body:{error:e.message,code:e.code}}:e instanceof o.TLe?{status:400,body:{error:e.message,code:e.code}}:{status:500,body:{error:e instanceof Error?e.message:"项目操作失败",code:"PROJECT_OPERATION_FAILED"}}}},785:(e,t,r)=>{r.d(t,{kO:()=>n,sr:()=>a});var s=r(9411);let o=function(){let e=process.argv[1];if(e){let t=(0,s.dirname)((0,s.resolve)(e)),r=`${s.sep}node_modules${s.sep}.bin`;return t.endsWith(r)?(0,s.resolve)(t,"..",".."):t}return(0,s.resolve)(process.cwd())}();function n(){return function(e=process.env,t=o){return(0,s.resolve)(e.AGENT_DATA_DIR?.trim()||t)}()}function a(){return function(e=process.env,t=o){return(0,s.resolve)(e.AGENT_WORKING_DIRECTORY?.trim()||t)}(process.env,n())}}};var t=require("../../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),s=t.X(0,[8375,6703,1322],()=>r(9814));module.exports=s})();
1
+ "use strict";(()=>{var e={};e.id=4871,e.ids=[4871],e.modules={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")},9801:e=>{e.exports=require("os")},7718:e=>{e.exports=require("node:child_process")},6005:e=>{e.exports=require("node:crypto")},5673:e=>{e.exports=require("node:events")},7561:e=>{e.exports=require("node:fs")},3977:e=>{e.exports=require("node:fs/promises")},8849:e=>{e.exports=require("node:http")},2286:e=>{e.exports=require("node:https")},2033:e=>{e.exports=require("node:module")},612:e=>{e.exports=require("node:os")},9411:e=>{e.exports=require("node:path")},1747:e=>{e.exports=require("node:readline")},1041:e=>{e.exports=require("node:url")},3103:(e,t,r)=>{r.r(t),r.d(t,{originalPathname:()=>x,patchFetch:()=>v,requestAsyncStorage:()=>h,routeModule:()=>d,serverHooks:()=>m,staticGenerationAsyncStorage:()=>l});var s={};r.r(s),r.d(s,{GET:()=>c,POST:()=>p});var o=r(7786),n=r(5042),a=r(2184),i=r(1890),u=r(556);async function c(){return i.NextResponse.json(await u.a.list())}async function p(e){try{let t=await e.json();return i.NextResponse.json(await u.a.create(t.path??"",t.name),{status:201})}catch(t){let e=(0,u.r)(t);return i.NextResponse.json(e.body,{status:e.status})}}let d=new o.AppRouteRouteModule({definition:{kind:n.x.APP_ROUTE,page:"/api/projects/route",pathname:"/api/projects",filename:"route",bundlePath:"app/api/projects/route"},resolvedPagePath:"/Users/caoqu/team-agent/customer-agent/packages/server/app/api/projects/route.ts",nextConfigOutput:"standalone",userland:s}),{requestAsyncStorage:h,staticGenerationAsyncStorage:l,serverHooks:m}=d,x="/api/projects/route";function v(){return(0,a.patchFetch)({serverHooks:m,staticGenerationAsyncStorage:l})}},556:(e,t,r)=>{r.d(t,{r:()=>d,a:()=>p});var s=r(612),o=r(1322),n=r(785),a=r(6005),i=r(9411);class u extends Error{constructor(e,t,r){super(e),this.code=t,this.status=r,this.name="WebProjectError"}}class c{constructor(e,t){this.store=e,this.paths=t}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()))try{if(this.paths.assertDirectory(e.description)===r)return e}catch{}let s=new Date().toISOString();return this.store.create({id:(0,a.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}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 p=new c(new o.XWE((0,n.kO)()),o.Tpv.fromEnvironment(process.env.AGENT_WEB_ROOTS,(0,s.homedir)()));function d(e){return e instanceof u?{status:e.status,body:{error:e.message,code:e.code}}:e instanceof o.TLe?{status:400,body:{error:e.message,code:e.code}}:{status:500,body:{error:e instanceof Error?e.message:"项目操作失败",code:"PROJECT_OPERATION_FAILED"}}}},785:(e,t,r)=>{r.d(t,{kO:()=>n,sr:()=>a});var s=r(9411);let o=function(){let e=process.argv[1];if(e){let t=(0,s.dirname)((0,s.resolve)(e)),r=`${s.sep}node_modules${s.sep}.bin`;return t.endsWith(r)?(0,s.resolve)(t,"..",".."):t}return(0,s.resolve)(process.cwd())}();function n(){return function(e=process.env,t=o){return(0,s.resolve)(e.AGENT_DATA_DIR?.trim()||t)}()}function a(){return function(e=process.env,t=o){return(0,s.resolve)(e.AGENT_WORKING_DIRECTORY?.trim()||t)}(process.env,n())}}};var t=require("../../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),s=t.X(0,[8375,6703,1322],()=>r(3103));module.exports=s})();
@@ -1 +1 @@
1
- "use strict";(()=>{var e={};e.id=2166,e.ids=[2166],e.modules={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")},9801:e=>{e.exports=require("os")},7718:e=>{e.exports=require("node:child_process")},6005:e=>{e.exports=require("node:crypto")},5673:e=>{e.exports=require("node:events")},7561:e=>{e.exports=require("node:fs")},3977:e=>{e.exports=require("node:fs/promises")},8849:e=>{e.exports=require("node:http")},2286:e=>{e.exports=require("node:https")},2033:e=>{e.exports=require("node:module")},612:e=>{e.exports=require("node:os")},9411:e=>{e.exports=require("node:path")},1747:e=>{e.exports=require("node:readline")},1041:e=>{e.exports=require("node:url")},2378:(e,r,t)=>{t.r(r),t.d(r,{originalPathname:()=>f,patchFetch:()=>g,requestAsyncStorage:()=>d,routeModule:()=>h,serverHooks:()=>m,staticGenerationAsyncStorage:()=>p});var s={};t.r(s),t.d(s,{POST:()=>l});var o=t(7786),i=t(5042),n=t(2184),a=t(1890),c=t(4537);function u(e){return!!e&&"object"==typeof e&&!Array.isArray(e)}async function l(e){let r;try{r=await e.json()}catch{return a.NextResponse.json({error:"Invalid JSON"},{status:400})}let t=function(e){if(!u(e))return{success:!1,error:"Request body must be an object"};if("string"!=typeof e.projectId||0===e.projectId.length)return{success:!1,error:"projectId is required"};if(!Array.isArray(e.tools)||0===e.tools.length)return{success:!1,error:"tools must contain at least one tool"};let r=[];for(let o of e.tools){var t,s;if(!u(o))return{success:!1,error:"tool must be an object"};if("string"!=typeof o.scheme||0===o.scheme.length)return{success:!1,error:"tool.scheme is required"};if("string"!=typeof o.purpose||0===o.purpose.length)return{success:!1,error:"tool.purpose is required"};if("string"!=typeof o.url)return{success:!1,error:"tool.url is required"};try{new URL(o.url)}catch{return{success:!1,error:"tool.url must be a valid URL"}}if(void 0!==o.method&&"POST"!==o.method)return{success:!1,error:"tool.method must be POST"};let e=void 0===o.headers?{}:u(t=o.headers)&&Object.values(t).every(e=>"string"==typeof e)?t:null,i=void 0===o.inputSchema?{}:o.inputSchema,n=void 0===o.outputSchema?{}:o.outputSchema,a=void 0===o.examples?[]:Array.isArray(s=o.examples)&&s.every(u)?s:null,c=void 0===o.auth?{}:o.auth;if(!e)return{success:!1,error:"tool.headers must be a string record"};if(!u(i))return{success:!1,error:"tool.inputSchema must be an object"};if(!u(n))return{success:!1,error:"tool.outputSchema must be an object"};if(!a)return{success:!1,error:"tool.examples must be an array of objects"};if(!u(c))return{success:!1,error:"tool.auth must be an object"};r.push({scheme:o.scheme,purpose:o.purpose,url:o.url,method:"POST",headers:e,inputSchema:i,outputSchema:n,examples:a,auth:c})}return{success:!0,data:{projectId:e.projectId,tools:r}}}(r);if(!t.success)return a.NextResponse.json({error:t.error},{status:400});if(!function(e,r){let t=e.headers.get("authorization");if([process.env.AGENT_REMOTE_TOOLS_REGISTER_TOKEN,process.env.AGENT_SDK_REGISTRATION_TOKEN].filter(e=>!!e).some(e=>t===`Bearer ${e}`))return!0;let s=process.env.AGENT_SDK_TOKEN;return!!s&&t===`Bearer ${s}`&&function(e,r){var t;let s;if(!process.env.AGENT_PROJECT_ID)return!1;let o=e.headers.get("origin");if(!o)return!1;try{s=new URL(o).origin}catch{return!1}let i=(t=r.projectId,process.env.AGENT_PROJECT_ID&&t===process.env.AGENT_PROJECT_ID?process.env.AGENT_SDK_ALLOWED_ORIGIN??process.env.AGENT_BROWSER_ORIGIN??null:null);if(i)try{if(new URL(i).origin!==s)return!1}catch{return!1}else if(process.env.AGENT_PROJECT_ID)return!1;return r.tools.every(e=>{try{return new URL(e.url).origin===s}catch{return!1}})}(e,r)}(e,t.data))return a.NextResponse.json({error:"UNAUTHORIZED"},{status:401});let s=c.agentHost.registerRemoteTools(t.data.projectId,t.data.tools);return a.NextResponse.json({ok:!0,tools:s.map(e=>({scheme:e.scheme,purpose:e.purpose}))})}let h=new o.AppRouteRouteModule({definition:{kind:i.x.APP_ROUTE,page:"/api/remote-tools/register/route",pathname:"/api/remote-tools/register",filename:"route",bundlePath:"app/api/remote-tools/register/route"},resolvedPagePath:"/private/tmp/agentroam-release21-20260914/packages/server/app/api/remote-tools/register/route.ts",nextConfigOutput:"standalone",userland:s}),{requestAsyncStorage:d,staticGenerationAsyncStorage:p,serverHooks:m}=h,f="/api/remote-tools/register/route";function g(){return(0,n.patchFetch)({serverHooks:m,staticGenerationAsyncStorage:p})}},1436:(e,r,t)=>{t.d(r,{N:()=>h});var s=t(1322),o=t(7561),i=t(9411);class n{constructor(e){this._acquired=!1,this.lockPath=e.replace(/scheduled_tasks\.json$/,".scheduler.lock")}get acquired(){return this._acquired}tryAcquire(){if(this._acquired)return!0;if((0,o.existsSync)(this.lockPath))try{let e=parseInt((0,o.readFileSync)(this.lockPath,"utf-8").trim(),10);if(!isNaN(e)&&e!==process.pid)try{return process.kill(e,0),!1}catch{}}catch{}try{let e=(0,i.dirname)(this.lockPath);return(0,o.existsSync)(e)||(0,o.mkdirSync)(e,{recursive:!0}),(0,o.writeFileSync)(this.lockPath,String(process.pid),"utf-8"),this._acquired=!0,!0}catch{return!1}}release(){if(this._acquired){try{(0,o.unlinkSync)(this.lockPath)}catch{}this._acquired=!1}}}class a{constructor(e,r,t){this.cronTasks=e,this.onFire=r,this.onTasksChanged=t,this.timer=null,this.watcher=null,this.started=!1,this.lock=new n(e.getFilePath())}start(){if(!this.started){if(!this.lock.tryAcquire()){console.warn("[CronScheduler] Another process holds the scheduler lock — skipping start.");return}this.started=!0,this.timer=setInterval(()=>{this.tick()},1e3),this.startFileWatcher(),console.log(`[CronScheduler] Started (PID=${process.pid})`)}}stop(){this.started&&(this.started=!1,this.timer&&(clearInterval(this.timer),this.timer=null),this.watcher&&(this.watcher.close(),this.watcher=null),this.lock.release(),console.log("[CronScheduler] Stopped."))}startFileWatcher(){let e=this.cronTasks.getFilePath(),r=(0,i.dirname)(e);if(!(0,o.existsSync)(r))try{(0,o.mkdirSync)(r,{recursive:!0})}catch{}try{this.watcher=(0,o.watch)(r,{persistent:!1},(e,r)=>{"scheduled_tasks.json"===r&&this.onTasksChanged(this.cronTasks.load())})}catch(e){console.warn("[CronScheduler] Could not start file watcher:",e)}}async tick(){let e=Date.now(),r=this.cronTasks.load(),t=!1;for(let o of r)o.enabled&&o.nextFireAt&&!(o.nextFireAt>e)&&(this.onFire(o),o.recurring?this.cronTasks.update(o.id,{nextFireAt:(0,s.Ilu)(o.cron,e),lastFiredAt:e}):this.cronTasks.delete(o.id),t=!0);t&&this.onTasksChanged(this.cronTasks.load())}}var c=t(785);class u{constructor(){this.tasks=new s.vo4((0,c.kO)()),this.scheduler=new a(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(4537).then(t.bind(t,4537)),{getCustomerGoalCoordinator:s}=await Promise.all([t.e(4537),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 l=globalThis;function h(){return l.__sharedCronService??=new u}}};var r=require("../../../../webpack-runtime.js");r.C(e);var t=e=>r(r.s=e),s=r.X(0,[8375,6703,1322,4621,4537],()=>t(2378));module.exports=s})();
1
+ "use strict";(()=>{var e={};e.id=2166,e.ids=[2166],e.modules={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")},9801:e=>{e.exports=require("os")},7718:e=>{e.exports=require("node:child_process")},6005:e=>{e.exports=require("node:crypto")},5673:e=>{e.exports=require("node:events")},7561:e=>{e.exports=require("node:fs")},3977:e=>{e.exports=require("node:fs/promises")},8849:e=>{e.exports=require("node:http")},2286:e=>{e.exports=require("node:https")},2033:e=>{e.exports=require("node:module")},612:e=>{e.exports=require("node:os")},9411:e=>{e.exports=require("node:path")},1747:e=>{e.exports=require("node:readline")},1041:e=>{e.exports=require("node:url")},3974:(e,r,t)=>{t.r(r),t.d(r,{originalPathname:()=>f,patchFetch:()=>g,requestAsyncStorage:()=>d,routeModule:()=>h,serverHooks:()=>m,staticGenerationAsyncStorage:()=>p});var s={};t.r(s),t.d(s,{POST:()=>l});var o=t(7786),i=t(5042),n=t(2184),a=t(1890),c=t(4537);function u(e){return!!e&&"object"==typeof e&&!Array.isArray(e)}async function l(e){let r;try{r=await e.json()}catch{return a.NextResponse.json({error:"Invalid JSON"},{status:400})}let t=function(e){if(!u(e))return{success:!1,error:"Request body must be an object"};if("string"!=typeof e.projectId||0===e.projectId.length)return{success:!1,error:"projectId is required"};if(!Array.isArray(e.tools)||0===e.tools.length)return{success:!1,error:"tools must contain at least one tool"};let r=[];for(let o of e.tools){var t,s;if(!u(o))return{success:!1,error:"tool must be an object"};if("string"!=typeof o.scheme||0===o.scheme.length)return{success:!1,error:"tool.scheme is required"};if("string"!=typeof o.purpose||0===o.purpose.length)return{success:!1,error:"tool.purpose is required"};if("string"!=typeof o.url)return{success:!1,error:"tool.url is required"};try{new URL(o.url)}catch{return{success:!1,error:"tool.url must be a valid URL"}}if(void 0!==o.method&&"POST"!==o.method)return{success:!1,error:"tool.method must be POST"};let e=void 0===o.headers?{}:u(t=o.headers)&&Object.values(t).every(e=>"string"==typeof e)?t:null,i=void 0===o.inputSchema?{}:o.inputSchema,n=void 0===o.outputSchema?{}:o.outputSchema,a=void 0===o.examples?[]:Array.isArray(s=o.examples)&&s.every(u)?s:null,c=void 0===o.auth?{}:o.auth;if(!e)return{success:!1,error:"tool.headers must be a string record"};if(!u(i))return{success:!1,error:"tool.inputSchema must be an object"};if(!u(n))return{success:!1,error:"tool.outputSchema must be an object"};if(!a)return{success:!1,error:"tool.examples must be an array of objects"};if(!u(c))return{success:!1,error:"tool.auth must be an object"};r.push({scheme:o.scheme,purpose:o.purpose,url:o.url,method:"POST",headers:e,inputSchema:i,outputSchema:n,examples:a,auth:c})}return{success:!0,data:{projectId:e.projectId,tools:r}}}(r);if(!t.success)return a.NextResponse.json({error:t.error},{status:400});if(!function(e,r){let t=e.headers.get("authorization");if([process.env.AGENT_REMOTE_TOOLS_REGISTER_TOKEN,process.env.AGENT_SDK_REGISTRATION_TOKEN].filter(e=>!!e).some(e=>t===`Bearer ${e}`))return!0;let s=process.env.AGENT_SDK_TOKEN;return!!s&&t===`Bearer ${s}`&&function(e,r){var t;let s;if(!process.env.AGENT_PROJECT_ID)return!1;let o=e.headers.get("origin");if(!o)return!1;try{s=new URL(o).origin}catch{return!1}let i=(t=r.projectId,process.env.AGENT_PROJECT_ID&&t===process.env.AGENT_PROJECT_ID?process.env.AGENT_SDK_ALLOWED_ORIGIN??process.env.AGENT_BROWSER_ORIGIN??null:null);if(i)try{if(new URL(i).origin!==s)return!1}catch{return!1}else if(process.env.AGENT_PROJECT_ID)return!1;return r.tools.every(e=>{try{return new URL(e.url).origin===s}catch{return!1}})}(e,r)}(e,t.data))return a.NextResponse.json({error:"UNAUTHORIZED"},{status:401});let s=c.agentHost.registerRemoteTools(t.data.projectId,t.data.tools);return a.NextResponse.json({ok:!0,tools:s.map(e=>({scheme:e.scheme,purpose:e.purpose}))})}let h=new o.AppRouteRouteModule({definition:{kind:i.x.APP_ROUTE,page:"/api/remote-tools/register/route",pathname:"/api/remote-tools/register",filename:"route",bundlePath:"app/api/remote-tools/register/route"},resolvedPagePath:"/Users/caoqu/team-agent/customer-agent/packages/server/app/api/remote-tools/register/route.ts",nextConfigOutput:"standalone",userland:s}),{requestAsyncStorage:d,staticGenerationAsyncStorage:p,serverHooks:m}=h,f="/api/remote-tools/register/route";function g(){return(0,n.patchFetch)({serverHooks:m,staticGenerationAsyncStorage:p})}},1436:(e,r,t)=>{t.d(r,{N:()=>h});var s=t(1322),o=t(7561),i=t(9411);class n{constructor(e){this._acquired=!1,this.lockPath=e.replace(/scheduled_tasks\.json$/,".scheduler.lock")}get acquired(){return this._acquired}tryAcquire(){if(this._acquired)return!0;if((0,o.existsSync)(this.lockPath))try{let e=parseInt((0,o.readFileSync)(this.lockPath,"utf-8").trim(),10);if(!isNaN(e)&&e!==process.pid)try{return process.kill(e,0),!1}catch{}}catch{}try{let e=(0,i.dirname)(this.lockPath);return(0,o.existsSync)(e)||(0,o.mkdirSync)(e,{recursive:!0}),(0,o.writeFileSync)(this.lockPath,String(process.pid),"utf-8"),this._acquired=!0,!0}catch{return!1}}release(){if(this._acquired){try{(0,o.unlinkSync)(this.lockPath)}catch{}this._acquired=!1}}}class a{constructor(e,r,t){this.cronTasks=e,this.onFire=r,this.onTasksChanged=t,this.timer=null,this.watcher=null,this.started=!1,this.lock=new n(e.getFilePath())}start(){if(!this.started){if(!this.lock.tryAcquire()){console.warn("[CronScheduler] Another process holds the scheduler lock — skipping start.");return}this.started=!0,this.timer=setInterval(()=>{this.tick()},1e3),this.startFileWatcher(),console.log(`[CronScheduler] Started (PID=${process.pid})`)}}stop(){this.started&&(this.started=!1,this.timer&&(clearInterval(this.timer),this.timer=null),this.watcher&&(this.watcher.close(),this.watcher=null),this.lock.release(),console.log("[CronScheduler] Stopped."))}startFileWatcher(){let e=this.cronTasks.getFilePath(),r=(0,i.dirname)(e);if(!(0,o.existsSync)(r))try{(0,o.mkdirSync)(r,{recursive:!0})}catch{}try{this.watcher=(0,o.watch)(r,{persistent:!1},(e,r)=>{"scheduled_tasks.json"===r&&this.onTasksChanged(this.cronTasks.load())})}catch(e){console.warn("[CronScheduler] Could not start file watcher:",e)}}async tick(){let e=Date.now(),r=this.cronTasks.load(),t=!1;for(let o of r)o.enabled&&o.nextFireAt&&!(o.nextFireAt>e)&&(this.onFire(o),o.recurring?this.cronTasks.update(o.id,{nextFireAt:(0,s.Ilu)(o.cron,e),lastFiredAt:e}):this.cronTasks.delete(o.id),t=!0);t&&this.onTasksChanged(this.cronTasks.load())}}var c=t(785);class u{constructor(){this.tasks=new s.vo4((0,c.kO)()),this.scheduler=new a(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(4537).then(t.bind(t,4537)),{getCustomerGoalCoordinator:s}=await Promise.all([t.e(4537),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 l=globalThis;function h(){return l.__sharedCronService??=new u}}};var r=require("../../../../webpack-runtime.js");r.C(e);var t=e=>r(r.s=e),s=r.X(0,[8375,6703,1322,4621,4537],()=>t(3974));module.exports=s})();