agentroam-runtime-darwin-arm64 0.2.0-preview.7 → 0.2.0-preview.9

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 (237) 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 +12 -12
  5. package/runtime/.next/app-path-routes-manifest.json +1 -1
  6. package/runtime/.next/build-manifest.json +9 -9
  7. package/runtime/.next/prerender-manifest.json +1 -1
  8. package/runtime/.next/react-loadable-manifest.json +2 -2
  9. package/runtime/.next/routes-manifest.json +1 -1
  10. package/runtime/.next/server/app/_not-found/page.js +1 -1
  11. package/runtime/.next/server/app/_not-found/page.js.nft.json +1 -1
  12. package/runtime/.next/server/app/_not-found.html +1 -1
  13. package/runtime/.next/server/app/_not-found.rsc +1 -1
  14. package/runtime/.next/server/app/api/agent/abort/route.js +2 -2
  15. package/runtime/.next/server/app/api/agent/abort/route.js.nft.json +1 -1
  16. package/runtime/.next/server/app/api/agent/answer/route.js +2 -2
  17. package/runtime/.next/server/app/api/agent/answer/route.js.nft.json +1 -1
  18. package/runtime/.next/server/app/api/agent/model/route.js +2 -2
  19. package/runtime/.next/server/app/api/agent/model/route.js.nft.json +1 -1
  20. package/runtime/.next/server/app/api/agent/run/route.js +2 -2
  21. package/runtime/.next/server/app/api/agent/run/route.js.nft.json +1 -1
  22. package/runtime/.next/server/app/api/agent/runtime-health/route.js +1 -1
  23. package/runtime/.next/server/app/api/agent/runtime-health/route.js.nft.json +1 -1
  24. package/runtime/.next/server/app/api/agent/steer/route.js +2 -2
  25. package/runtime/.next/server/app/api/agent/steer/route.js.nft.json +1 -1
  26. package/runtime/.next/server/app/api/agent/stream/route.js +5 -5
  27. package/runtime/.next/server/app/api/agent/stream/route.js.nft.json +1 -1
  28. package/runtime/.next/server/app/api/agent-workspaces/[workspaceId]/sessions/route.js +1 -0
  29. package/runtime/.next/server/app/api/agent-workspaces/[workspaceId]/sessions/route.js.nft.json +1 -0
  30. package/runtime/.next/server/app/api/agent-workspaces/route.js +1 -0
  31. package/runtime/.next/server/app/api/agent-workspaces/route.js.nft.json +1 -0
  32. package/runtime/.next/server/app/api/auth/verify/route.js +1 -1
  33. package/runtime/.next/server/app/api/auth/verify/route.js.nft.json +1 -1
  34. package/runtime/.next/server/app/api/mcp/connect/route.js +2 -2
  35. package/runtime/.next/server/app/api/mcp/connect/route.js.nft.json +1 -1
  36. package/runtime/.next/server/app/api/mcp/disconnect/route.js +1 -1
  37. package/runtime/.next/server/app/api/mcp/disconnect/route.js.nft.json +1 -1
  38. package/runtime/.next/server/app/api/mcp/servers/route.js +1 -1
  39. package/runtime/.next/server/app/api/mcp/servers/route.js.nft.json +1 -1
  40. package/runtime/.next/server/app/api/memory/[key]/route.js +1 -1
  41. package/runtime/.next/server/app/api/memory/[key]/route.js.nft.json +1 -1
  42. package/runtime/.next/server/app/api/memory/route.js +1 -1
  43. package/runtime/.next/server/app/api/memory/route.js.nft.json +1 -1
  44. package/runtime/.next/server/app/api/plugins/load/route.js +2 -2
  45. package/runtime/.next/server/app/api/plugins/load/route.js.nft.json +1 -1
  46. package/runtime/.next/server/app/api/projects/[id]/route.js +1 -1
  47. package/runtime/.next/server/app/api/projects/[id]/route.js.nft.json +1 -1
  48. package/runtime/.next/server/app/api/projects/check/route.js +1 -1
  49. package/runtime/.next/server/app/api/projects/check/route.js.nft.json +1 -1
  50. package/runtime/.next/server/app/api/projects/directories/route.js +1 -1
  51. package/runtime/.next/server/app/api/projects/directories/route.js.nft.json +1 -1
  52. package/runtime/.next/server/app/api/projects/roots/route.js +1 -1
  53. package/runtime/.next/server/app/api/projects/roots/route.js.nft.json +1 -1
  54. package/runtime/.next/server/app/api/projects/route.js +1 -1
  55. package/runtime/.next/server/app/api/projects/route.js.nft.json +1 -1
  56. package/runtime/.next/server/app/api/remote-tools/register/route.js +2 -2
  57. package/runtime/.next/server/app/api/remote-tools/register/route.js.nft.json +1 -1
  58. package/runtime/.next/server/app/api/sessions/[id]/changes/route.js +2 -2
  59. package/runtime/.next/server/app/api/sessions/[id]/changes/route.js.nft.json +1 -1
  60. package/runtime/.next/server/app/api/sessions/[id]/fork/route.js +1 -1
  61. package/runtime/.next/server/app/api/sessions/[id]/fork/route.js.nft.json +1 -1
  62. package/runtime/.next/server/app/api/sessions/[id]/goals/route.js +2 -2
  63. package/runtime/.next/server/app/api/sessions/[id]/goals/route.js.nft.json +1 -1
  64. package/runtime/.next/server/app/api/sessions/[id]/handoff/route.js +1 -1
  65. package/runtime/.next/server/app/api/sessions/[id]/handoff/route.js.nft.json +1 -1
  66. package/runtime/.next/server/app/api/sessions/[id]/route.js +2 -2
  67. package/runtime/.next/server/app/api/sessions/[id]/route.js.nft.json +1 -1
  68. package/runtime/.next/server/app/api/sessions/route.js +2 -2
  69. package/runtime/.next/server/app/api/sessions/route.js.nft.json +1 -1
  70. package/runtime/.next/server/app/api/skills/route.js +2 -2
  71. package/runtime/.next/server/app/api/skills/route.js.nft.json +1 -1
  72. package/runtime/.next/server/app/api/tools/route.js +2 -2
  73. package/runtime/.next/server/app/api/tools/route.js.nft.json +1 -1
  74. package/runtime/.next/server/app/api/web-auth/login/route.js +1 -1
  75. package/runtime/.next/server/app/api/web-auth/login/route.js.nft.json +1 -1
  76. package/runtime/.next/server/app/api/web-auth/logout/route.js +1 -1
  77. package/runtime/.next/server/app/api/web-auth/logout/route.js.nft.json +1 -1
  78. package/runtime/.next/server/app/api/web-auth/revoke-all/route.js +1 -1
  79. package/runtime/.next/server/app/api/web-auth/revoke-all/route.js.nft.json +1 -1
  80. package/runtime/.next/server/app/api/web-auth/setup/route.js +1 -1
  81. package/runtime/.next/server/app/api/web-auth/setup/route.js.nft.json +1 -1
  82. package/runtime/.next/server/app/api/web-auth/status/route.js +1 -1
  83. package/runtime/.next/server/app/api/web-auth/status/route.js.nft.json +1 -1
  84. package/runtime/.next/server/app/api/web-console/bootstrap/route.js +1 -1
  85. package/runtime/.next/server/app/api/web-console/bootstrap/route.js.nft.json +1 -1
  86. package/runtime/.next/server/app/api/web-console/device-state/route.js +1 -1
  87. package/runtime/.next/server/app/api/web-console/device-state/route.js.nft.json +1 -1
  88. package/runtime/.next/server/app/api/web-console/history/route.js +1 -1
  89. package/runtime/.next/server/app/api/web-console/history/route.js.nft.json +1 -1
  90. package/runtime/.next/server/app/api/web-console/preferences/route.js +1 -1
  91. package/runtime/.next/server/app/api/web-console/preferences/route.js.nft.json +1 -1
  92. package/runtime/.next/server/app/web/page.js +2 -2
  93. package/runtime/.next/server/app/web/page.js.nft.json +1 -1
  94. package/runtime/.next/server/app/web/page_client-reference-manifest.js +1 -1
  95. package/runtime/.next/server/app/web.html +1 -1
  96. package/runtime/.next/server/app/web.rsc +2 -2
  97. package/runtime/.next/server/app-paths-manifest.json +18 -16
  98. package/runtime/.next/server/chunks/{322.js → 1322.js} +39 -38
  99. package/runtime/.next/server/chunks/2083.js +177 -0
  100. package/runtime/.next/server/chunks/4214.js +3 -0
  101. package/runtime/.next/server/chunks/5303.js +2 -0
  102. package/runtime/.next/server/chunks/{923.js → 5923.js} +1 -1
  103. package/runtime/.next/server/chunks/6244.js +1 -0
  104. package/runtime/.next/server/chunks/6703.js +12 -0
  105. package/runtime/.next/server/chunks/8375.js +2 -0
  106. package/runtime/.next/server/middleware-build-manifest.js +1 -1
  107. package/runtime/.next/server/middleware-react-loadable-manifest.js +1 -1
  108. package/runtime/.next/server/pages/404.html +1 -1
  109. package/runtime/.next/server/pages/500.html +1 -1
  110. package/runtime/.next/server/pages/_app.js +1 -1
  111. package/runtime/.next/server/pages/_document.js +1 -1
  112. package/runtime/.next/server/pages/_document.js.nft.json +1 -1
  113. package/runtime/.next/server/pages/_error.js +1 -1
  114. package/runtime/.next/server/pages/_error.js.nft.json +1 -1
  115. package/runtime/.next/server/server-reference-manifest.json +1 -1
  116. package/runtime/.next/server/webpack-runtime.js +1 -1
  117. package/runtime/.next/static/chunks/803.c32a9408d3e3bb51.js +1 -0
  118. package/runtime/.next/static/chunks/app/web/{page-c8af455b0fde4d74.js → page-7bce2f13423aa839.js} +1 -1
  119. package/runtime/.next/static/chunks/{main-a03d29ab49823387.js → main-46a4068052b74acf.js} +1 -1
  120. package/runtime/.next/static/chunks/{webpack-22b57460ff31be13.js → webpack-05ad459942a1242f.js} +1 -1
  121. package/runtime/lib/file-preview-service.mjs +159 -0
  122. package/runtime/node_modules/.package-lock.json +85 -11
  123. package/runtime/node_modules/@agent/core/dist/domain/session/SessionTitle.d.ts +9 -0
  124. package/runtime/node_modules/@agent/core/dist/domain/session/SessionTitle.d.ts.map +1 -0
  125. package/runtime/node_modules/@agent/core/dist/domain/session/SessionTitle.test.d.ts +2 -0
  126. package/runtime/node_modules/@agent/core/dist/domain/session/SessionTitle.test.d.ts.map +1 -0
  127. package/runtime/node_modules/@agent/core/dist/domain/session/index.d.ts +1 -0
  128. package/runtime/node_modules/@agent/core/dist/domain/session/index.d.ts.map +1 -1
  129. package/runtime/node_modules/@agent/core/dist/index.js +57 -7
  130. package/runtime/node_modules/@agent/core/dist/index.js.map +7 -6
  131. package/runtime/node_modules/@agent/core/dist/infrastructure/SQLiteDatabase.d.ts +2 -0
  132. package/runtime/node_modules/@agent/core/dist/infrastructure/SQLiteDatabase.d.ts.map +1 -1
  133. package/runtime/node_modules/@agent/core/dist/infrastructure/SQLiteProjectStore.test.d.ts +2 -0
  134. package/runtime/node_modules/@agent/core/dist/infrastructure/SQLiteProjectStore.test.d.ts.map +1 -0
  135. package/runtime/node_modules/@agent/core/dist/infrastructure/SQLiteSessionStore.d.ts +1 -0
  136. package/runtime/node_modules/@agent/core/dist/infrastructure/SQLiteSessionStore.d.ts.map +1 -1
  137. package/runtime/node_modules/@anthropic-ai/claude-agent-sdk/bridge.mjs +82 -87
  138. package/runtime/node_modules/@anthropic-ai/claude-agent-sdk/browser-sdk.js +53 -53
  139. package/runtime/node_modules/@anthropic-ai/claude-agent-sdk/manifest.json +19 -20
  140. package/runtime/node_modules/@anthropic-ai/claude-agent-sdk/manifest.zst.json +23 -24
  141. package/runtime/node_modules/@anthropic-ai/claude-agent-sdk/package.json +10 -10
  142. package/runtime/node_modules/@anthropic-ai/claude-agent-sdk/sdk.mjs +80 -80
  143. package/runtime/node_modules/@opencode-ai/sdk/dist/client.js +53 -0
  144. package/runtime/node_modules/@opencode-ai/sdk/dist/error-interceptor.js +43 -0
  145. package/runtime/node_modules/@opencode-ai/sdk/dist/gen/client/client.gen.js +165 -0
  146. package/runtime/node_modules/@opencode-ai/sdk/dist/gen/client/index.js +5 -0
  147. package/runtime/node_modules/@opencode-ai/sdk/dist/gen/client/types.gen.js +2 -0
  148. package/runtime/node_modules/@opencode-ai/sdk/dist/gen/client/utils.gen.js +226 -0
  149. package/runtime/node_modules/@opencode-ai/sdk/dist/gen/client.gen.js +5 -0
  150. package/runtime/node_modules/@opencode-ai/sdk/dist/gen/core/auth.gen.js +14 -0
  151. package/runtime/node_modules/@opencode-ai/sdk/dist/gen/core/bodySerializer.gen.js +57 -0
  152. package/runtime/node_modules/@opencode-ai/sdk/dist/gen/core/params.gen.js +89 -0
  153. package/runtime/node_modules/@opencode-ai/sdk/dist/gen/core/pathSerializer.gen.js +106 -0
  154. package/runtime/node_modules/@opencode-ai/sdk/dist/gen/core/queryKeySerializer.gen.js +93 -0
  155. package/runtime/node_modules/@opencode-ai/sdk/dist/gen/core/serverSentEvents.gen.js +117 -0
  156. package/runtime/node_modules/@opencode-ai/sdk/dist/gen/core/types.gen.js +2 -0
  157. package/runtime/node_modules/@opencode-ai/sdk/dist/gen/core/utils.gen.js +69 -0
  158. package/runtime/node_modules/@opencode-ai/sdk/dist/gen/sdk.gen.js +881 -0
  159. package/runtime/node_modules/@opencode-ai/sdk/dist/gen/types.gen.js +2 -0
  160. package/runtime/node_modules/@opencode-ai/sdk/dist/index.js +16 -0
  161. package/runtime/node_modules/@opencode-ai/sdk/dist/process.js +33 -0
  162. package/runtime/node_modules/@opencode-ai/sdk/dist/server.js +105 -0
  163. package/runtime/node_modules/@opencode-ai/sdk/dist/v2/client.js +80 -0
  164. package/runtime/node_modules/@opencode-ai/sdk/dist/v2/data.js +22 -0
  165. package/runtime/node_modules/@opencode-ai/sdk/dist/v2/gen/client/client.gen.js +232 -0
  166. package/runtime/node_modules/@opencode-ai/sdk/dist/v2/gen/client/index.js +6 -0
  167. package/runtime/node_modules/@opencode-ai/sdk/dist/v2/gen/client/types.gen.js +2 -0
  168. package/runtime/node_modules/@opencode-ai/sdk/dist/v2/gen/client/utils.gen.js +226 -0
  169. package/runtime/node_modules/@opencode-ai/sdk/dist/v2/gen/client.gen.js +3 -0
  170. package/runtime/node_modules/@opencode-ai/sdk/dist/v2/gen/core/auth.gen.js +14 -0
  171. package/runtime/node_modules/@opencode-ai/sdk/dist/v2/gen/core/bodySerializer.gen.js +57 -0
  172. package/runtime/node_modules/@opencode-ai/sdk/dist/v2/gen/core/params.gen.js +102 -0
  173. package/runtime/node_modules/@opencode-ai/sdk/dist/v2/gen/core/pathSerializer.gen.js +106 -0
  174. package/runtime/node_modules/@opencode-ai/sdk/dist/v2/gen/core/queryKeySerializer.gen.js +93 -0
  175. package/runtime/node_modules/@opencode-ai/sdk/dist/v2/gen/core/serverSentEvents.gen.js +133 -0
  176. package/runtime/node_modules/@opencode-ai/sdk/dist/v2/gen/core/types.gen.js +2 -0
  177. package/runtime/node_modules/@opencode-ai/sdk/dist/v2/gen/core/utils.gen.js +87 -0
  178. package/runtime/node_modules/@opencode-ai/sdk/dist/v2/gen/sdk.gen.js +4456 -0
  179. package/runtime/node_modules/@opencode-ai/sdk/dist/v2/gen/types.gen.js +2 -0
  180. package/runtime/node_modules/@opencode-ai/sdk/dist/v2/index.js +17 -0
  181. package/runtime/node_modules/@opencode-ai/sdk/dist/v2/server.js +105 -0
  182. package/runtime/node_modules/@opencode-ai/sdk/package.json +60 -0
  183. package/runtime/node_modules/cross-spawn/LICENSE +21 -0
  184. package/runtime/node_modules/cross-spawn/README.md +89 -0
  185. package/runtime/node_modules/cross-spawn/index.js +39 -0
  186. package/runtime/node_modules/cross-spawn/lib/enoent.js +59 -0
  187. package/runtime/node_modules/cross-spawn/lib/parse.js +91 -0
  188. package/runtime/node_modules/cross-spawn/lib/util/escape.js +47 -0
  189. package/runtime/node_modules/cross-spawn/lib/util/readShebang.js +23 -0
  190. package/runtime/node_modules/cross-spawn/lib/util/resolveCommand.js +52 -0
  191. package/runtime/node_modules/cross-spawn/package.json +73 -0
  192. package/runtime/node_modules/isexe/LICENSE +15 -0
  193. package/runtime/node_modules/isexe/README.md +51 -0
  194. package/runtime/node_modules/isexe/index.js +57 -0
  195. package/runtime/node_modules/isexe/mode.js +41 -0
  196. package/runtime/node_modules/isexe/package.json +31 -0
  197. package/runtime/node_modules/isexe/test/basic.js +221 -0
  198. package/runtime/node_modules/isexe/windows.js +42 -0
  199. package/runtime/node_modules/path-key/index.js +16 -0
  200. package/runtime/node_modules/path-key/license +9 -0
  201. package/runtime/node_modules/path-key/package.json +39 -0
  202. package/runtime/node_modules/path-key/readme.md +61 -0
  203. package/runtime/node_modules/shebang-command/index.js +19 -0
  204. package/runtime/node_modules/shebang-command/license +9 -0
  205. package/runtime/node_modules/shebang-command/package.json +34 -0
  206. package/runtime/node_modules/shebang-command/readme.md +34 -0
  207. package/runtime/node_modules/shebang-regex/index.js +2 -0
  208. package/runtime/node_modules/shebang-regex/license +9 -0
  209. package/runtime/node_modules/shebang-regex/package.json +35 -0
  210. package/runtime/node_modules/shebang-regex/readme.md +33 -0
  211. package/runtime/node_modules/which/CHANGELOG.md +166 -0
  212. package/runtime/node_modules/which/LICENSE +15 -0
  213. package/runtime/node_modules/which/README.md +54 -0
  214. package/runtime/node_modules/which/bin/node-which +52 -0
  215. package/runtime/node_modules/which/package.json +43 -0
  216. package/runtime/node_modules/which/which.js +125 -0
  217. package/runtime/package-lock.json +47 -43
  218. package/runtime/package.json +2 -1
  219. package/runtime/webapp/dist/assets/App-DhjG0cSw.js +240 -0
  220. package/runtime/webapp/dist/assets/{index-wTH7T_Ah.css → index-BXTtTSvB.css} +1 -1
  221. package/runtime/webapp/dist/assets/{index-BjCuCFYF.js → index-CngFUejN.js} +7 -7
  222. package/runtime/webapp/dist/index.html +2 -2
  223. package/runtime/ws-server.mjs +8 -1
  224. package/runtime/.next/server/app/api/agent/runtime-health.body +0 -1
  225. package/runtime/.next/server/app/api/agent/runtime-health.meta +0 -1
  226. package/runtime/.next/server/chunks/303.js +0 -2
  227. package/runtime/.next/server/chunks/375.js +0 -2
  228. package/runtime/.next/server/chunks/703.js +0 -12
  229. package/runtime/.next/server/chunks/988.js +0 -119
  230. package/runtime/.next/static/chunks/115.95ca5e1861314f5c.js +0 -1
  231. package/runtime/webapp/dist/assets/App-D8mcRu-Q.js +0 -231
  232. /package/runtime/.next/static/chunks/{108-5a2df9f74c5fd4ea.js → 108-bc4a0fe192dfff08.js} +0 -0
  233. /package/runtime/.next/static/chunks/{183-ffe4acb07968be9e.js → 183-d2f78a21998813ba.js} +0 -0
  234. /package/runtime/.next/static/chunks/{3cc391f0-6377b9b71382a170.js → 3cc391f0-d7ec74603652803d.js} +0 -0
  235. /package/runtime/.next/static/chunks/app/_not-found/{page-09f702519672bb02.js → page-4a73d1777b316883.js} +0 -0
  236. /package/runtime/.next/static/{WbNomgtKBalC4rAWPGRjU → pBpxqLpcmaz3BAj7sw5Ya}/_buildManifest.js +0 -0
  237. /package/runtime/.next/static/{WbNomgtKBalC4rAWPGRjU → pBpxqLpcmaz3BAj7sw5Ya}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- "use strict";(()=>{var e={};e.id=871,e.ids=[871],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")},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:()=>f,requestAsyncStorage:()=>h,routeModule:()=>d,serverHooks:()=>m,staticGenerationAsyncStorage:()=>l});var s={};r.r(s),r.d(s,{GET:()=>c,POST:()=>p});var o=r(7786),a=r(5042),n=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:a.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 f(){return(0,n.patchFetch)({serverHooks:m,staticGenerationAsyncStorage:l})}},556:(e,t,r)=>{r.d(t,{r:()=>d,a:()=>p});var s=r(612),o=r(1322),a=r(785),n=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,n.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}}}let p=new c(new o.XW((0,a.kO)()),o.Tp.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.TL?{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(1041),o=r(9411);let a=(0,o.resolve)((0,o.dirname)((0,s.fileURLToPath)("file:///Users/caoqu/team-agent/customer-agent/packages/server/lib/server-data-dir.ts")),"..");function n(){return function(e=process.env,t=a){return(0,o.resolve)(e.AGENT_DATA_DIR?.trim()||t)}()}function i(){return function(e=process.env,t=a){return(0,o.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,[375,703,322],()=>r(3103));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")},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:()=>f,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 f(){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.XW((0,n.kO)()),o.Tp.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.TL?{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
- {"version":1,"files":["../../../../../node_modules/better-sqlite3","../../../../../node_modules/next","../../../../../package.json","../../../../package.json","../../../chunks/322.js","../../../chunks/375.js","../../../chunks/703.js","../../../webpack-runtime.js"]}
1
+ {"version":1,"files":["../../../../../node_modules/better-sqlite3","../../../../../node_modules/next","../../../../../package.json","../../../../package.json","../../../chunks/1322.js","../../../chunks/6703.js","../../../chunks/8375.js","../../../webpack-runtime.js"]}
@@ -1,3 +1,3 @@
1
- "use strict";(()=>{var e={};e.id=166,e.ids=[166],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")},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,t,r)=>{r.r(t),r.d(t,{originalPathname:()=>g,patchFetch:()=>v,requestAsyncStorage:()=>d,routeModule:()=>h,serverHooks:()=>m,staticGenerationAsyncStorage:()=>p});var s={};r.r(s),r.d(s,{POST:()=>c});var o=r(7786),i=r(5042),n=r(2184),a=r(1890),u=r(7186);function l(e){return!!e&&"object"==typeof e&&!Array.isArray(e)}async function c(e){let t;try{t=await e.json()}catch{return a.NextResponse.json({error:"Invalid JSON"},{status:400})}let r=function(e){if(!l(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 t=[];for(let o of e.tools){var r,s;if(!l(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?{}:l(r=o.headers)&&Object.values(r).every(e=>"string"==typeof e)?r: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(l)?s:null,u=void 0===o.auth?{}:o.auth;if(!e)return{success:!1,error:"tool.headers must be a string record"};if(!l(i))return{success:!1,error:"tool.inputSchema must be an object"};if(!l(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(!l(u))return{success:!1,error:"tool.auth must be an object"};t.push({scheme:o.scheme,purpose:o.purpose,url:o.url,method:"POST",headers:e,inputSchema:i,outputSchema:n,examples:a,auth:u})}return{success:!0,data:{projectId:e.projectId,tools:t}}}(t);if(!r.success)return a.NextResponse.json({error:r.error},{status:400});if(!function(e,t){let r=e.headers.get("authorization");if([process.env.AGENT_REMOTE_TOOLS_REGISTER_TOKEN,process.env.AGENT_SDK_REGISTRATION_TOKEN].filter(e=>!!e).some(e=>r===`Bearer ${e}`))return!0;let s=process.env.AGENT_SDK_TOKEN;return!!s&&r===`Bearer ${s}`&&function(e,t){var r;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=(r=t.projectId,process.env.AGENT_PROJECT_ID&&r===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 t.tools.every(e=>{try{return new URL(e.url).origin===s}catch{return!1}})}(e,t)}(e,r.data))return a.NextResponse.json({error:"UNAUTHORIZED"},{status:401});let s=u.f.registerRemoteTools(r.data.projectId,r.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,g="/api/remote-tools/register/route";function v(){return(0,n.patchFetch)({serverHooks:m,staticGenerationAsyncStorage:p})}},7186:(e,t,r)=>{r.d(t,{B:()=>n,f:()=>l});var s=r(1322),o=r(612),i=r(785);class n extends Error{constructor(e,t,r){super(e),this.code=t,this.status=r,this.name="ProjectWorkingDirectoryError"}}class a{constructor(){this.baseDir=(0,i.kO)(),this.workingDirectory=(0,i.sr)(),this.builder=null,this.sessionStore=new s.m6(this.baseDir),this.projectStore=new s.XW(this.baseDir),this.remoteToolStore=new s.rt((0,s.N8)(this.baseDir).db),this.defaultRemoteToolsProjectId=process.env.AGENT_PROJECT_ID??"default",this.activeRun=null,this.activeAgent=null,this.activeRunSessionId=null,this.subscribers=new Map,this.recentEvents=new Map,this.eventCounters=new Map,this.pendingQuestions=new Map,this.toolPermissionGate=new s.XP({resolveMode:async e=>{let t=await this.sessionStore.get(e);return(0,s.Ny)(t?.metadata.permissionMode)},requestApproval:async e=>{let t=await this.createQuestion({question:`Customer Agent 请求权限
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")},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,t,s)=>{s.r(t),s.d(t,{originalPathname:()=>g,patchFetch:()=>f,requestAsyncStorage:()=>d,routeModule:()=>h,serverHooks:()=>m,staticGenerationAsyncStorage:()=>p});var r={};s.r(r),s.d(r,{POST:()=>c});var o=s(7786),i=s(5042),n=s(2184),a=s(1890),u=s(7186);function l(e){return!!e&&"object"==typeof e&&!Array.isArray(e)}async function c(e){let t;try{t=await e.json()}catch{return a.NextResponse.json({error:"Invalid JSON"},{status:400})}let s=function(e){if(!l(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 t=[];for(let o of e.tools){var s,r;if(!l(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?{}:l(s=o.headers)&&Object.values(s).every(e=>"string"==typeof e)?s:null,i=void 0===o.inputSchema?{}:o.inputSchema,n=void 0===o.outputSchema?{}:o.outputSchema,a=void 0===o.examples?[]:Array.isArray(r=o.examples)&&r.every(l)?r:null,u=void 0===o.auth?{}:o.auth;if(!e)return{success:!1,error:"tool.headers must be a string record"};if(!l(i))return{success:!1,error:"tool.inputSchema must be an object"};if(!l(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(!l(u))return{success:!1,error:"tool.auth must be an object"};t.push({scheme:o.scheme,purpose:o.purpose,url:o.url,method:"POST",headers:e,inputSchema:i,outputSchema:n,examples:a,auth:u})}return{success:!0,data:{projectId:e.projectId,tools:t}}}(t);if(!s.success)return a.NextResponse.json({error:s.error},{status:400});if(!function(e,t){let s=e.headers.get("authorization");if([process.env.AGENT_REMOTE_TOOLS_REGISTER_TOKEN,process.env.AGENT_SDK_REGISTRATION_TOKEN].filter(e=>!!e).some(e=>s===`Bearer ${e}`))return!0;let r=process.env.AGENT_SDK_TOKEN;return!!r&&s===`Bearer ${r}`&&function(e,t){var s;let r;if(!process.env.AGENT_PROJECT_ID)return!1;let o=e.headers.get("origin");if(!o)return!1;try{r=new URL(o).origin}catch{return!1}let i=(s=t.projectId,process.env.AGENT_PROJECT_ID&&s===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!==r)return!1}catch{return!1}else if(process.env.AGENT_PROJECT_ID)return!1;return t.tools.every(e=>{try{return new URL(e.url).origin===r}catch{return!1}})}(e,t)}(e,s.data))return a.NextResponse.json({error:"UNAUTHORIZED"},{status:401});let r=u.f.registerRemoteTools(s.data.projectId,s.data.tools);return a.NextResponse.json({ok:!0,tools:r.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:r}),{requestAsyncStorage:d,staticGenerationAsyncStorage:p,serverHooks:m}=h,g="/api/remote-tools/register/route";function f(){return(0,n.patchFetch)({serverHooks:m,staticGenerationAsyncStorage:p})}},7186:(e,t,s)=>{s.d(t,{B:()=>a,f:()=>c});var r=s(1322),o=s(612),i=s(785);let n={jpeg:"jpg",png:"png",gif:"gif",webp:"webp"};class a extends Error{constructor(e,t,s){super(e),this.code=t,this.status=s,this.name="ProjectWorkingDirectoryError"}}class u{constructor(){this.baseDir=(0,i.kO)(),this.workingDirectory=(0,i.sr)(),this.builder=null,this.sessionStore=new r.m6(this.baseDir),this.projectStore=new r.XW(this.baseDir),this.remoteToolStore=new r.rt((0,r.N8)(this.baseDir).db),this.defaultRemoteToolsProjectId=process.env.AGENT_PROJECT_ID??"default",this.activeRun=null,this.activeAgent=null,this.activeRunSessionId=null,this.subscribers=new Map,this.recentEvents=new Map,this.eventCounters=new Map,this.pendingQuestions=new Map,this.toolPermissionGate=new r.XP({resolveMode:async e=>{let t=await this.sessionStore.get(e);return(0,r.Ny)(t?.metadata.permissionMode)},requestApproval:async e=>{let t=await this.createQuestion({question:`Customer Agent 请求权限
2
2
  ${e.summary}
3
- 原因:${e.reason}`,options:[...s.Sf],toolCallId:""},e.sessionId);return(0,s.wM)(t.answer,t.selectedIndices)}});let e=process.env.AGENT_API_KEY,t=process.env.AGENT_MODEL_PROVIDER||"openai",r=process.env.AGENT_MODEL_ID||"gpt-4o",o=process.env.AGENT_BASE_URL||void 0,n=new s.Y4().withSessionStore(this.sessionStore).withWorkingDirectory(this.workingDirectory).withToolPermissionGate(this.toolPermissionGate);n.withRemoteToolStore(this.remoteToolStore,this.defaultRemoteToolsProjectId),e&&n.withModel(t,{apiKey:e,modelId:r,baseUrl:o}),this.builder=n}getBuilder(){return this.builder||(this.builder=new s.Y4().withToolPermissionGate(this.toolPermissionGate)),this.builder}setBuilder(e){e.withRemoteToolStore(this.remoteToolStore,this.defaultRemoteToolsProjectId),e.withWorkingDirectory(this.workingDirectory),e.withToolPermissionGate(this.toolPermissionGate),this.builder=e}getSessionStore(){return this.sessionStore}isSessionRunning(e){return this.activeRunSessionId===e}hasActiveRun(){return null!==this.activeRunSessionId}getProjectStore(){return this.projectStore}async resolveProjectWorkingDirectory(e,t=!1){if(!e)return this.workingDirectory;let r=await this.projectStore.get(e);if(!r)throw new n("项目不存在","PROJECT_NOT_FOUND",404);if(!r.description?.trim()){if(!t)return this.workingDirectory;throw new n("该项目没有宿主机目录","PROJECT_PATH_REQUIRED",400)}try{return s.Tp.fromEnvironment(process.env.AGENT_WEB_ROOTS,(0,o.homedir)()).assertDirectory(r.description)}catch(e){throw new n(e instanceof Error?e.message:"项目目录不可用","PROJECT_PATH_INVALID",400)}}getModelConfig(){return{provider:process.env.AGENT_MODEL_PROVIDER||"openai",modelId:process.env.AGENT_MODEL_ID||"gpt-4o",baseUrl:process.env.AGENT_BASE_URL||""}}getWebAppBuildId(){return globalThis.__webAppBuildId??""}registerRemoteTools(e,t){return this.remoteToolStore.upsertTools(e,t)}getRemoteToolStore(){return this.remoteToolStore}async createSession(e,t=""){let r=new Date().toISOString();return t&&!await this.projectStore.get(t)&&await this.projectStore.create({id:t,name:t,description:"",created:r,updated:r}),this.sessionStore.create({id:crypto.randomUUID(),projectId:t,title:e,status:"idle",messages:[],events:[],created:r,updated:r,metadata:{permissionMode:"full-access"}})}async setSessionPermissionMode(e,t){if(!(0,s.ue)(t))throw Error(`Invalid permission mode: ${String(t)}`);let r=await this.sessionStore.get(e);if(!r)throw Error(`Session not found: ${e}`);return this.toolPermissionGate.clearSession(e),this.sessionStore.update(e,{metadata:{...r.metadata,permissionMode:t}})}getLatestEventId(e){return this.eventCounters.get(e)??0}subscribe(e,t,r=-1){for(let s of this.recentEvents.get(e)??[])if(!(s.id<=r))try{t(s.event,s.id)}catch{}let s=this.subscribers.get(e)??new Set;return s.add(t),this.subscribers.set(e,s),()=>{s.delete(t),0===s.size&&this.subscribers.delete(e)}}emit(e,t){let r=(this.eventCounters.get(e)??0)+1;this.eventCounters.set(e,r);let s=this.recentEvents.get(e);for(let o of(s&&(s.push({id:r,event:t}),s.length>500&&s.splice(0,s.length-500)),this.subscribers.get(e)??[]))try{o(t,r)}catch{}}publishExternal(e,t){this.emit(e,t)}resetExternalStream(e){this.eventCounters.set(e,0),this.recentEvents.set(e,[])}projectMessagesFromEvents(e){let t=[],r=null;for(let s of e){if("text_chunk"===s.type){r||(r={role:"assistant",content:""},t.push(r)),r.content+=s.text;continue}if("tool_call"===s.type){r&&!r.toolCalls?r.toolCalls=[s.toolCall]:t.push({role:"assistant",content:"",toolCalls:[s.toolCall]}),r=null;continue}if("tool_result"===s.type){t.push({role:"tool",content:s.result.content,toolCallId:s.result.toolCallId});continue}if("ask_user"===s.type){t.push({role:"assistant",content:""}),r=null;continue}"done"===s.type&&(r?r.content=s.finalText||r.content:s.finalText?.trim()&&t.push({role:"assistant",content:s.finalText}),r=null)}return t}async run(e,t,r){let o;let i=await this.sessionStore.get(t),n=await this.resolveProjectWorkingDirectory(i?.projectId);await this.sessionStore.addMessage(t,{role:"user",content:e}),this.eventCounters.set(t,0),this.recentEvents.set(t,[]);let a=i?.projectId||this.defaultRemoteToolsProjectId;try{o=await this.getBuilder().withWorkingDirectory(n).withRemoteToolStore(this.remoteToolStore,a).withTool(new s.as(async e=>this.createQuestion(e,t))).build()}catch(r){let e={type:"error",message:r instanceof Error?r.message:"Failed to build agent"};try{await this.sessionStore.addEvent(t,e)}catch{}throw this.emit(t,e),r}finally{this.builder?.withWorkingDirectory(this.workingDirectory).withRemoteToolStore(this.remoteToolStore,this.defaultRemoteToolsProjectId)}this.activeAgent=o,this.activeRunSessionId=t,this.activeRun=o.run(e,t,r);let u=!1;try{for await(let e of this.activeRun)await this.sessionStore.addEvent(t,e),"error"===e.type?(u=!0,await this.sessionStore.update(t,{status:"failed"})):"done"!==e.type||u||(e.finalText.trim()&&await this.sessionStore.addMessage(t,{role:"assistant",content:e.finalText}),await this.sessionStore.update(t,{status:"completed"})),this.emit(t,e)}catch(r){u=!0;let e={type:"error",message:r instanceof Error?r.message:"Agent run failed"};try{await this.sessionStore.addEvent(t,e),await this.sessionStore.update(t,{status:"failed"})}catch{}this.emit(t,e)}finally{this.activeRunSessionId===t&&(this.activeAgent=null,this.activeRunSessionId=null),this.activeRun=null}try{let e=await this.sessionStore.get(t),r=(e?.messages??[]).filter(e=>"user"===e.role),s=this.projectMessagesFromEvents(e?.events??[]);await this.sessionStore.replaceMessages(t,[...r,...s])}catch{}}createQuestion(e,t){let r=crypto.randomUUID();return this.emit(t,{type:"ask_user",questionId:r,question:e.question,options:e.options,multiSelect:e.multiSelect}),new Promise((e,t)=>{let s=setTimeout(()=>{this.pendingQuestions.has(r)&&(this.pendingQuestions.delete(r),t(Error("Question timed out after 5 minutes")))},3e5);this.pendingQuestions.set(r,{resolve:e,reject:t,timer:s})})}answerQuestion(e,t,r){let s=this.pendingQuestions.get(e);return!!s&&(clearTimeout(s.timer),this.pendingQuestions.delete(e),s.resolve({answer:t,selectedIndices:r}),!0)}async steer(e,t){return await this.sessionStore.addMessage(t,{role:"user",content:e,name:"__steer__"}),this.activeRunSessionId===t&&!!this.activeAgent&&(this.emit(t,{type:"thinking",message:`User added: ${e.slice(0,60)}`}),!0)}abort(){for(let[e,t]of(this.activeAgent?.abort(),this.pendingQuestions))clearTimeout(t.timer),t.reject(Error("Agent aborted")),this.pendingQuestions.delete(e)}}let u=globalThis,l=u.__agentHost??new a;u.__agentHost=l},785:(e,t,r)=>{r.d(t,{kO:()=>n,sr:()=>a});var s=r(1041),o=r(9411);let i=(0,o.resolve)((0,o.dirname)((0,s.fileURLToPath)("file:///Users/caoqu/team-agent/customer-agent/packages/server/lib/server-data-dir.ts")),"..");function n(){return function(e=process.env,t=i){return(0,o.resolve)(e.AGENT_DATA_DIR?.trim()||t)}()}function a(){return function(e=process.env,t=i){return(0,o.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,[375,703,322],()=>r(3974));module.exports=s})();
3
+ 原因:${e.reason}`,options:[...r.Sf],toolCallId:""},e.sessionId);return(0,r.wM)(t.answer,t.selectedIndices)}});let e=process.env.AGENT_API_KEY,t=process.env.AGENT_MODEL_PROVIDER||"openai",s=process.env.AGENT_MODEL_ID||"gpt-4o",o=process.env.AGENT_BASE_URL||void 0,n=new r.Y4().withSessionStore(this.sessionStore).withWorkingDirectory(this.workingDirectory).withToolPermissionGate(this.toolPermissionGate);n.withRemoteToolStore(this.remoteToolStore,this.defaultRemoteToolsProjectId),e&&n.withModel(t,{apiKey:e,modelId:s,baseUrl:o}),this.builder=n}getBuilder(){return this.builder||(this.builder=new r.Y4().withToolPermissionGate(this.toolPermissionGate)),this.builder}setBuilder(e){e.withRemoteToolStore(this.remoteToolStore,this.defaultRemoteToolsProjectId),e.withWorkingDirectory(this.workingDirectory),e.withToolPermissionGate(this.toolPermissionGate),this.builder=e}getSessionStore(){return this.sessionStore}isSessionRunning(e){return this.activeRunSessionId===e}hasActiveRun(){return null!==this.activeRunSessionId}getProjectStore(){return this.projectStore}async resolveProjectWorkingDirectory(e,t=!1){if(!e)return this.workingDirectory;let s=await this.projectStore.get(e);if(!s)throw new a("项目不存在","PROJECT_NOT_FOUND",404);if(!s.description?.trim()){if(!t)return this.workingDirectory;throw new a("该项目没有宿主机目录","PROJECT_PATH_REQUIRED",400)}try{return r.Tp.fromEnvironment(process.env.AGENT_WEB_ROOTS,(0,o.homedir)()).assertDirectory(s.description)}catch(e){throw new a(e instanceof Error?e.message:"项目目录不可用","PROJECT_PATH_INVALID",400)}}getModelConfig(){return{provider:process.env.AGENT_MODEL_PROVIDER||"openai",modelId:process.env.AGENT_MODEL_ID||"gpt-4o",baseUrl:process.env.AGENT_BASE_URL||""}}getWebAppBuildId(){return globalThis.__webAppBuildId??""}registerRemoteTools(e,t){return this.remoteToolStore.upsertTools(e,t)}getRemoteToolStore(){return this.remoteToolStore}async createSession(e,t=""){let s=new Date().toISOString();return t&&!await this.projectStore.get(t)&&await this.projectStore.create({id:t,name:t,description:"",created:s,updated:s}),this.sessionStore.create({id:crypto.randomUUID(),projectId:t,title:e,status:"idle",messages:[],events:[],created:s,updated:s,metadata:(0,r.Tu)(e,{permissionMode:"full-access"})})}async setSessionPermissionMode(e,t){if(!(0,r.ue)(t))throw Error(`Invalid permission mode: ${String(t)}`);let s=await this.sessionStore.get(e);if(!s)throw Error(`Session not found: ${e}`);return this.toolPermissionGate.clearSession(e),this.sessionStore.update(e,{metadata:{...s.metadata,permissionMode:t}})}getLatestEventId(e){return this.eventCounters.get(e)??0}subscribe(e,t,s=-1){for(let r of this.recentEvents.get(e)??[])if(!(r.id<=s))try{t(r.event,r.id)}catch{}let r=this.subscribers.get(e)??new Set;return r.add(t),this.subscribers.set(e,r),()=>{r.delete(t),0===r.size&&this.subscribers.delete(e)}}emit(e,t){let s=(this.eventCounters.get(e)??0)+1;this.eventCounters.set(e,s);let r=this.recentEvents.get(e);for(let o of(r&&(r.push({id:s,event:t}),r.length>500&&r.splice(0,r.length-500)),this.subscribers.get(e)??[]))try{o(t,s)}catch{}}publishExternal(e,t){this.emit(e,t)}resetExternalStream(e){this.eventCounters.set(e,0),this.recentEvents.set(e,[])}projectMessagesFromEvents(e){let t=[],s=null;for(let r of e){if("text_chunk"===r.type){s||(s={role:"assistant",content:""},t.push(s)),s.content+=r.text;continue}if("tool_call"===r.type){s&&!s.toolCalls?s.toolCalls=[r.toolCall]:t.push({role:"assistant",content:"",toolCalls:[r.toolCall]}),s=null;continue}if("tool_result"===r.type){t.push({role:"tool",content:r.result.content,toolCallId:r.result.toolCallId});continue}if("ask_user"===r.type){t.push({role:"assistant",content:""}),s=null;continue}"done"===r.type&&(s?s.content=r.finalText||s.content:r.finalText?.trim()&&t.push({role:"assistant",content:r.finalText}),s=null)}return t}async run(e,t,s){let o;let i=await this.sessionStore.get(t),a=await this.resolveProjectWorkingDirectory(i?.projectId);await this.sessionStore.consumePendingAutoTitle(t,e);let u=function(e){let t=[];for(let[s,r]of(e??[]).entries()){let e=/^data:image\/(jpeg|png|gif|webp);base64,/i.exec(r);e&&t.push({type:"image",name:`image-${s+1}.${n[e[1].toLowerCase()]}`,dataUrl:r})}return t.length>0?{attachments:t}:void 0}(s);await this.sessionStore.addMessage(t,{role:"user",content:e,...u?{presentation:u}:{}}),this.eventCounters.set(t,0),this.recentEvents.set(t,[]);let l=i?.projectId||this.defaultRemoteToolsProjectId;try{o=await this.getBuilder().withWorkingDirectory(a).withRemoteToolStore(this.remoteToolStore,l).withTool(new r.as(async e=>this.createQuestion(e,t))).build()}catch(s){let e={type:"error",message:s instanceof Error?s.message:"Failed to build agent"};try{await this.sessionStore.addEvent(t,e)}catch{}throw this.emit(t,e),s}finally{this.builder?.withWorkingDirectory(this.workingDirectory).withRemoteToolStore(this.remoteToolStore,this.defaultRemoteToolsProjectId)}this.activeAgent=o,this.activeRunSessionId=t,this.activeRun=o.run(e,t,s);let c=!1;try{for await(let e of this.activeRun)await this.sessionStore.addEvent(t,e),"error"===e.type?(c=!0,await this.sessionStore.update(t,{status:"failed"})):"done"!==e.type||c||(e.finalText.trim()&&await this.sessionStore.addMessage(t,{role:"assistant",content:e.finalText}),await this.sessionStore.update(t,{status:"completed"})),this.emit(t,e)}catch(s){c=!0;let e={type:"error",message:s instanceof Error?s.message:"Agent run failed"};try{await this.sessionStore.addEvent(t,e),await this.sessionStore.update(t,{status:"failed"})}catch{}this.emit(t,e)}finally{this.activeRunSessionId===t&&(this.activeAgent=null,this.activeRunSessionId=null),this.activeRun=null}try{let e=await this.sessionStore.get(t),s=(e?.messages??[]).filter(e=>"user"===e.role),r=this.projectMessagesFromEvents(e?.events??[]);await this.sessionStore.replaceMessages(t,[...s,...r])}catch{}}createQuestion(e,t){let s=crypto.randomUUID();return this.emit(t,{type:"ask_user",questionId:s,question:e.question,options:e.options,multiSelect:e.multiSelect}),new Promise((e,t)=>{let r=setTimeout(()=>{this.pendingQuestions.has(s)&&(this.pendingQuestions.delete(s),t(Error("Question timed out after 5 minutes")))},3e5);this.pendingQuestions.set(s,{resolve:e,reject:t,timer:r})})}answerQuestion(e,t,s){let r=this.pendingQuestions.get(e);return!!r&&(clearTimeout(r.timer),this.pendingQuestions.delete(e),r.resolve({answer:t,selectedIndices:s}),!0)}async steer(e,t){return await this.sessionStore.addMessage(t,{role:"user",content:e,name:"__steer__"}),this.activeRunSessionId===t&&!!this.activeAgent&&(this.emit(t,{type:"thinking",message:`User added: ${e.slice(0,60)}`}),!0)}abort(){for(let[e,t]of(this.activeAgent?.abort(),this.pendingQuestions))clearTimeout(t.timer),t.reject(Error("Agent aborted")),this.pendingQuestions.delete(e)}}let l=globalThis,c=l.__agentHost??new u;l.__agentHost=c},785:(e,t,s)=>{s.d(t,{kO:()=>i,sr:()=>n});var r=s(9411);let o=function(){let e=process.argv[1];if(e){let t=(0,r.dirname)((0,r.resolve)(e)),s=`${r.sep}node_modules${r.sep}.bin`;return t.endsWith(s)?(0,r.resolve)(t,"..",".."):t}return(0,r.resolve)(process.cwd())}();function i(){return function(e=process.env,t=o){return(0,r.resolve)(e.AGENT_DATA_DIR?.trim()||t)}()}function n(){return function(e=process.env,t=o){return(0,r.resolve)(e.AGENT_WORKING_DIRECTORY?.trim()||t)}(process.env,i())}}};var t=require("../../../../webpack-runtime.js");t.C(e);var s=e=>t(t.s=e),r=t.X(0,[8375,6703,1322],()=>s(3974));module.exports=r})();
@@ -1 +1 @@
1
- {"version":1,"files":["../../../../../../node_modules/better-sqlite3","../../../../../../node_modules/next","../../../../../../package.json","../../../../../package.json","../../../../chunks/322.js","../../../../chunks/375.js","../../../../chunks/703.js","../../../../webpack-runtime.js"]}
1
+ {"version":1,"files":["../../../../../../node_modules/better-sqlite3","../../../../../../node_modules/next","../../../../../../package.json","../../../../../package.json","../../../../chunks/1322.js","../../../../chunks/6703.js","../../../../chunks/8375.js","../../../../webpack-runtime.js"]}
@@ -1,3 +1,3 @@
1
- "use strict";(()=>{var t={};t.id=917,t.ids=[917],t.modules={7728:t=>{t.exports=require("@anthropic-ai/claude-agent-sdk")},5890:t=>{t.exports=require("better-sqlite3")},399:t=>{t.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},517:t=>{t.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},9801:t=>{t.exports=require("os")},7718:t=>{t.exports=require("node:child_process")},6005:t=>{t.exports=require("node:crypto")},5673:t=>{t.exports=require("node:events")},7561:t=>{t.exports=require("node:fs")},3977:t=>{t.exports=require("node:fs/promises")},8849:t=>{t.exports=require("node:http")},2286:t=>{t.exports=require("node:https")},7503:t=>{t.exports=require("node:net")},612:t=>{t.exports=require("node:os")},9411:t=>{t.exports=require("node:path")},1747:t=>{t.exports=require("node:readline")},1041:t=>{t.exports=require("node:url")},5881:t=>{t.exports=require("node:util")},7428:(t,e,i)=>{i.r(e),i.d(e,{originalPathname:()=>tx,patchFetch:()=>tI,requestAsyncStorage:()=>tP,routeModule:()=>tb,serverHooks:()=>tR,staticGenerationAsyncStorage:()=>tD});var s={};i.r(s),i.d(s,{GET:()=>tv,dynamic:()=>tg,runtime:()=>ty});var r=i(7786),n=i(5042),a=i(2184),o=i(3988),h=i(5673),l=i(7561),d=i(3977),c=i(9411);let p=require("node:stream"),u={FILE_TYPE:"files",DIR_TYPE:"directories",FILE_DIR_TYPE:"files_directories",EVERYTHING_TYPE:"all"},f={root:".",fileFilter:t=>!0,directoryFilter:t=>!0,type:u.FILE_TYPE,lstat:!1,depth:2147483648,alwaysStat:!1,highWaterMark:256};Object.freeze(f);let _="READDIRP_RECURSIVE_ERROR",m=new Set(["ENOENT","EPERM","EACCES","ELOOP",_]),w=[u.DIR_TYPE,u.EVERYTHING_TYPE,u.FILE_DIR_TYPE,u.FILE_TYPE],g=new Set([u.DIR_TYPE,u.EVERYTHING_TYPE,u.FILE_DIR_TYPE]),y=new Set([u.EVERYTHING_TYPE,u.FILE_DIR_TYPE,u.FILE_TYPE]),E=t=>m.has(t.code),v="win32"===process.platform,b=t=>!0,P=t=>{if(void 0===t)return b;if("function"==typeof t)return t;if("string"==typeof t){let e=t.trim();return t=>t.basename===e}if(Array.isArray(t)){let e=t.map(t=>t.trim());return t=>e.some(e=>t.basename===e)}return b};class D extends p.Readable{parents;reading;parent;_stat;_maxDepth;_wantsDir;_wantsFile;_wantsEverything;_root;_isDirent;_statsProp;_rdOptions;_fileFilter;_directoryFilter;_relStart;constructor(t={}){super({objectMode:!0,autoDestroy:!0,highWaterMark:t.highWaterMark??f.highWaterMark});let e={...f,...t},i=e.root??f.root,s=e.type??f.type;this._fileFilter=P(e.fileFilter),this._directoryFilter=P(e.directoryFilter);let r=e.lstat?d.lstat:d.stat;v?this._stat=t=>r(t,{bigint:!0}):this._stat=r,this._maxDepth=null!=e.depth&&Number.isSafeInteger(e.depth)?e.depth:f.depth,this._wantsDir=g.has(s),this._wantsFile=y.has(s),this._wantsEverything=s===u.EVERYTHING_TYPE,this._root=(0,c.resolve)(i),this._relStart=this._root.endsWith(c.sep)?this._root.length:this._root.length+1,this._isDirent=!e.alwaysStat,this._statsProp=this._isDirent?"dirent":"stats",this._rdOptions={encoding:"utf8",withFileTypes:this._isDirent};let n={path:this._root,depth:1};n.pending=this._exploreDir(this._root,1),this.parents=[n],this.reading=!1,this.parent=void 0}async _read(t){if(!this.reading){this.reading=!0;try{for(;!this.destroyed&&t>0;){let e=this.parent,i=e&&e.files;if(i&&i.length>0){let{path:s,depth:r}=e,n=i.splice(0,t).map(t=>this._formatEntry(t,s));for(let e of this._isDirent?n:await Promise.all(n)){if(!e)continue;if(this.destroyed)return;let i=this._getEntryType(e);"string"!=typeof i&&(i=await i),"directory"===i&&this._directoryFilter(e)?(r<=this._maxDepth&&this.parents.push({path:e.fullPath,depth:r+1}),this._wantsDir&&(this.push(e),t--)):("file"===i||this._includeAsFile(e))&&this._fileFilter(e)&&this._wantsFile&&(this.push(e),t--)}}else{let t=this.parents.pop();if(!t){this.push(null);break}let e=t.pending??this._exploreDir(t.path,t.depth),i=this.parents[this.parents.length-1];if(i&&!i.pending&&(i.pending=this._exploreDir(i.path,i.depth)),this.parent=await e,this.destroyed)return}}}catch(t){this.destroy(t)}finally{this.reading=!1}}}async _exploreDir(t,e){let i;try{i=await (0,d.readdir)(t,this._rdOptions)}catch(t){this._onError(t)}return{files:i,depth:e,path:t}}_formatEntry(t,e){let i=this._isDirent?t.name:t,s=(0,c.join)(e,i),r={path:s.slice(this._relStart),fullPath:s,basename:i};return this._isDirent?(r.dirent=t,r):this._stat(s).then(t=>(r.stats=t,r),t=>{this._onError(t)})}_onError(t){E(t)&&!this.destroyed?this.emit("warn",t):this.destroy(t)}_getEntryType(t){if(!t||!(this._statsProp in t))return"";let e=t[this._statsProp];return e.isFile()?"file":e.isDirectory()?"directory":e.isSymbolicLink()?this._getSymlinkEntryType(t):""}async _getSymlinkEntryType(t){let e=t.fullPath;try{let t=await (0,d.realpath)(e),i=await (0,d.lstat)(t);if(i.isFile())return"file";if(i.isDirectory()){let i=t.length;if(e.startsWith(t)&&e[i]===c.sep){let i=Error(`Circular symlink detected: "${e}" points to "${t}"`);return i.code=_,this._onError(i),""}return"directory"}}catch(t){this._onError(t)}return""}_includeAsFile(t){let e=t&&t[this._statsProp];return e&&this._wantsEverything&&!e.isDirectory()}}var R=i(612);let x=()=>{},I=process.platform,T="win32"===I,k="darwin"===I,F="linux"===I,W="freebsd"===I,A="OS400"===(0,R.type)(),S={ALL:"all",READY:"ready",ADD:"add",CHANGE:"change",ADD_DIR:"addDir",UNLINK:"unlink",UNLINK_DIR:"unlinkDir",RAW:"raw",ERROR:"error"},C={lstat:d.lstat,stat:d.stat},N="listeners",j="errHandlers",z="rawEmitters",M=[N,j,z],L=new Set(["3dm","3ds","3g2","3gp","7z","a","aac","adp","afdesign","afphoto","afpub","ai","aif","aiff","alz","ape","apk","appimage","ar","arj","asf","au","avi","bak","baml","bh","bin","bk","bmp","btif","bz2","bzip2","cab","caf","cgm","class","cmx","cpio","cr2","cur","dat","dcm","deb","dex","djvu","dll","dmg","dng","doc","docm","docx","dot","dotm","dra","DS_Store","dsk","dts","dtshd","dvb","dwg","dxf","ecelp4800","ecelp7470","ecelp9600","egg","eol","eot","epub","exe","f4v","fbs","fh","fla","flac","flatpak","fli","flv","fpx","fst","fvt","g3","gh","gif","graffle","gz","gzip","h261","h263","h264","icns","ico","ief","img","ipa","iso","jar","jpeg","jpg","jpgv","jpm","jxr","key","ktx","lha","lib","lvp","lz","lzh","lzma","lzo","m3u","m4a","m4v","mar","mdi","mht","mid","midi","mj2","mka","mkv","mmr","mng","mobi","mov","movie","mp3","mp4","mp4a","mpeg","mpg","mpga","mxu","nef","npx","numbers","nupkg","o","odp","ods","odt","oga","ogg","ogv","otf","ott","pages","pbm","pcx","pdb","pdf","pea","pgm","pic","png","pnm","pot","potm","potx","ppa","ppam","ppm","pps","ppsm","ppsx","ppt","pptm","pptx","psd","pya","pyc","pyo","pyv","qt","rar","ras","raw","resources","rgb","rip","rlc","rmf","rmvb","rpm","rtf","rz","s3m","s7z","scpt","sgi","shar","snap","sil","sketch","slk","smv","snk","so","stl","suo","sub","swf","tar","tbz","tbz2","tga","tgz","thmx","tif","tiff","tlz","ttc","ttf","txz","udf","uvh","uvi","uvm","uvp","uvs","uvu","viv","vob","war","wav","wax","wbmp","wdp","weba","webm","webp","whl","wim","wm","wma","wmv","wmx","woff","woff2","wrm","wvx","xbm","xif","xla","xlam","xls","xlsb","xlsm","xlsx","xlt","xltm","xltx","xm","xmind","xpi","xpm","xwd","xz","z","zip","zipx"]),O=t=>L.has(c.extname(t).slice(1).toLowerCase()),H=(t,e)=>{t instanceof Set?t.forEach(e):e(t)},q=(t,e,i)=>{let s=t[e];s instanceof Set||(t[e]=s=new Set([s])),s.add(i)},Y=t=>e=>{let i=t[e];i instanceof Set?i.clear():delete t[e]},U=(t,e,i)=>{let s=t[e];s instanceof Set?s.delete(i):s===i&&delete t[e]},G=t=>t instanceof Set?0===t.size:!t,$=new Map;function V(t,e,i,s,r){try{return(0,l.watch)(t,{persistent:e.persistent},(e,s)=>{i(t),r(e,s,{watchedPath:t}),s&&t!==s&&K(c.resolve(t,s),N,c.join(t,s))})}catch(t){s(t);return}}let K=(t,e,i,s,r)=>{let n=$.get(t);n&&H(n[e],t=>{t(i,s,r)})},X=(t,e,i,s)=>{let r;let{listener:n,errHandler:a,rawEmitter:o}=s,h=$.get(e);if(!i.persistent){if(!(r=V(t,i,n,a,o)))return;return r.close.bind(r)}if(h)q(h,N,n),q(h,j,a),q(h,z,o);else{if(!(r=V(t,i,K.bind(null,e,N),a,K.bind(null,e,z))))return;r.on(S.ERROR,async i=>{let s=K.bind(null,e,j);if(h&&(h.watcherUnusable=!0),T&&"EPERM"===i.code)try{let e=await (0,d.open)(t,"r");await e.close(),s(i)}catch(t){}else s(i)}),h={listeners:n,errHandlers:a,rawEmitters:o,watcher:r},$.set(e,h)}return()=>{U(h,N,n),U(h,j,a),U(h,z,o),G(h.listeners)&&(h.watcher.close(),$.delete(e),M.forEach(Y(h)),h.watcher=void 0,Object.freeze(h))}},B=new Map,J=(t,e,i,s)=>{let{listener:r,rawEmitter:n}=s,a=B.get(e),o=a&&a.options;return o&&(o.persistent<i.persistent||o.interval>i.interval)&&((0,l.unwatchFile)(e),a=void 0),a?(q(a,N,r),q(a,z,n)):(a={listeners:r,rawEmitters:n,options:i,watcher:(0,l.watchFile)(e,i,(i,s)=>{H(a.rawEmitters,t=>{t(S.CHANGE,e,{curr:i,prev:s})});let r=i.mtimeMs;(i.size!==s.size||r>s.mtimeMs||0===r)&&H(a.listeners,e=>e(t,i))})},B.set(e,a)),()=>{U(a,N,r),U(a,z,n),G(a.listeners)&&(B.delete(e),(0,l.unwatchFile)(e),a.options=a.watcher=void 0,Object.freeze(a))}};class Q{fsw;_boundHandleError;constructor(t){this.fsw=t,this._boundHandleError=e=>t._handleError(e)}_watchWithNodeFs(t,e){let i;let s=this.fsw.options,r=c.dirname(t),n=c.basename(t);this.fsw._getWatchedDir(r).add(n);let a=c.resolve(t),o={persistent:s.persistent};if(e||(e=x),s.usePolling){let r=s.interval!==s.binaryInterval;o.interval=r&&O(n)?s.binaryInterval:s.interval,i=J(t,a,o,{listener:e,rawEmitter:this.fsw._emitRaw})}else i=X(t,a,o,{listener:e,errHandler:this._boundHandleError,rawEmitter:this.fsw._emitRaw});return i}_handleFile(t,e,i){if(this.fsw.closed)return;let s=c.dirname(t),r=c.basename(t),n=this.fsw._getWatchedDir(s),a=e;if(n.has(r))return;let o=async(e,i)=>{if(this.fsw._throttle("watch",t,5)){if(i&&0!==i.mtimeMs){if(n.has(r)){let e=i.atimeMs,s=i.mtimeMs;(!e||e<=s||s!==a.mtimeMs)&&this.fsw._emit(S.CHANGE,t,i),a=i}}else try{let i=await (0,d.stat)(t);if(this.fsw.closed)return;let s=i.atimeMs,r=i.mtimeMs;if((!s||s<=r||r!==a.mtimeMs)&&this.fsw._emit(S.CHANGE,t,i),(k||F||W)&&a.ino!==i.ino){this.fsw._closeFile(e),a=i;let s=this._watchWithNodeFs(t,o);s&&this.fsw._addPathCloser(e,s)}else a=i}catch(t){this.fsw._remove(s,r)}}},h=this._watchWithNodeFs(t,o);if(!(i&&this.fsw.options.ignoreInitial)&&this.fsw._isntIgnored(t)){if(!this.fsw._throttle(S.ADD,t,0))return;this.fsw._emit(S.ADD,t,e)}return h}async _handleSymlink(t,e,i,s){if(this.fsw.closed)return;let r=t.fullPath,n=this.fsw._getWatchedDir(e);if(!this.fsw.options.followSymlinks){let e;this.fsw._incrReadyCount();try{e=await (0,d.realpath)(i)}catch(t){return this.fsw._emitReady(),!0}if(this.fsw.closed)return;return n.has(s)?this.fsw._symlinkPaths.get(r)!==e&&(this.fsw._symlinkPaths.set(r,e),this.fsw._emit(S.CHANGE,i,t.stats)):(n.add(s),this.fsw._symlinkPaths.set(r,e),this.fsw._emit(S.ADD,i,t.stats)),this.fsw._emitReady(),!0}if(this.fsw._symlinkPaths.has(r))return!0;this.fsw._symlinkPaths.set(r,!0)}_handleRead(t,e,i,s,r,n,a){t=c.join(t,"");let o=s?`${t}:${s}`:t;if(!(a=this.fsw._throttle("readdir",o,1e3)))return;let h=this.fsw._getWatchedDir(i.path),l=new Set,d=this.fsw._readdirp(t,{fileFilter:t=>i.filterPath(t),directoryFilter:t=>i.filterDir(t)});if(d)return d.on("data",async a=>{if(this.fsw.closed){d=void 0;return}let o=a.path,p=c.join(t,o);if(l.add(o),!(a.stats.isSymbolicLink()&&await this._handleSymlink(a,t,p,o))){if(this.fsw.closed){d=void 0;return}o!==s&&(s||h.has(o))||(this.fsw._incrReadyCount(),p=c.join(r,c.relative(r,p)),this._addToNodeFs(p,e,i,n+1))}}).on(S.ERROR,this._boundHandleError),new Promise((e,o)=>{if(!d)return o();d.once("end",()=>{if(this.fsw.closed){d=void 0;return}let o=!!a&&a.clear();e(void 0),h.getChildren().filter(e=>e!==t&&!l.has(e)).forEach(e=>{this.fsw._remove(t,e)}),d=void 0,o&&this._handleRead(t,!1,i,s,r,n,a)})})}async _handleDir(t,e,i,s,r,n,a){let o,h;let l=this.fsw._getWatchedDir(c.dirname(t)),d=l.has(c.basename(t));i&&this.fsw.options.ignoreInitial||r||d||this.fsw._emit(S.ADD_DIR,t,e),l.add(c.basename(t)),this.fsw._getWatchedDir(t);let p=this.fsw.options.depth;if((null==p||s<=p)&&!this.fsw._symlinkPaths.has(a)){if(!r&&(await this._handleRead(t,i,n,r,t,s,o),this.fsw.closed))return;h=this._watchWithNodeFs(t,(e,i)=>{i&&0===i.mtimeMs||this._handleRead(e,!1,n,r,t,s,o)})}return h}async _addToNodeFs(t,e,i,s,r){let n=this.fsw._emitReady;if(this.fsw._isIgnored(t)||this.fsw.closed)return n(),!1;let a=this.fsw._getWatchHelpers(t);i&&(a.filterPath=t=>i.filterPath(t),a.filterDir=t=>i.filterDir(t));try{let i;let o=await C[a.statMethod](a.watchPath);if(this.fsw.closed)return;if(this.fsw._isIgnored(a.watchPath,o))return n(),!1;let h=this.fsw.options.followSymlinks;if(o.isDirectory()){let n=c.resolve(t),l=h?await (0,d.realpath)(t):t;if(this.fsw.closed||(i=await this._handleDir(a.watchPath,o,e,s,r,a,l),this.fsw.closed))return;n!==l&&void 0!==l&&this.fsw._symlinkPaths.set(n,l)}else if(o.isSymbolicLink()){let r=h?await (0,d.realpath)(t):t;if(this.fsw.closed)return;let n=c.dirname(a.watchPath);if(this.fsw._getWatchedDir(n).add(a.watchPath),this.fsw._emit(S.ADD,a.watchPath,o),i=await this._handleDir(n,o,e,s,t,a,r),this.fsw.closed)return;void 0!==r&&this.fsw._symlinkPaths.set(c.resolve(t),r)}else i=this._handleFile(a.watchPath,o,e);return n(),i&&this.fsw._addPathCloser(t,i),!1}catch(e){if(this.fsw._handleError(e))return n(),t}}}let Z=/\\/g,tt=/\/\//g,te=/\..*\.(sw[px])$|~$|\.subl.*\.tmp/,ti=/^\.[/\\]/;function ts(t){return Array.isArray(t)?t:[t]}let tr=t=>"object"==typeof t&&null!==t&&!(t instanceof RegExp);function tn(t,e,i){let s=function(t){if("string"!=typeof t)throw Error("string expected");t=(t=c.normalize(t)).replace(/\\/g,"/");let e=!1;return t.startsWith("//")&&(e=!0),t=t.replace(tt,"/"),e&&(t="/"+t),t}(e);for(let e=0;e<t.length;e++)if((0,t[e])(s,i))return!0;return!1}let ta=t=>{let e=ts(t).flat();if(!e.every(t=>"string"==typeof t))throw TypeError(`Non-string provided as watch path: ${e}`);return e.map(th)},to=t=>{let e=t.replace(Z,"/"),i=!1;return e.startsWith("//")&&(i=!0),e=e.replace(tt,"/"),i&&(e="/"+e),e},th=t=>to(c.normalize(to(t))),tl=(t="")=>e=>"string"==typeof e?th(c.isAbsolute(e)?e:c.join(t,e)):e,td=(t,e)=>c.isAbsolute(t)?t:c.join(e,t),tc=Object.freeze(new Set);class tp{path;_removeWatcher;items;constructor(t,e){this.path=t,this._removeWatcher=e,this.items=new Set}add(t){let{items:e}=this;e&&"."!==t&&".."!==t&&e.add(t)}async remove(t){let{items:e}=this;if(!e||(e.delete(t),e.size>0))return;let i=this.path;try{await (0,d.readdir)(i)}catch(t){this._removeWatcher&&this._removeWatcher(c.dirname(i),c.basename(i))}}has(t){let{items:e}=this;if(e)return e.has(t)}getChildren(){let{items:t}=this;return t?[...t.values()]:[]}dispose(){this.items.clear(),this.path="",this._removeWatcher=x,this.items=tc,Object.freeze(this)}}class tu{fsw;path;watchPath;fullWatchPath;dirParts;followSymlinks;statMethod;constructor(t,e,i){this.fsw=i;let s=t;this.path=t=t.replace(ti,""),this.watchPath=s,this.fullWatchPath=c.resolve(s),this.dirParts=[],this.dirParts.forEach(t=>{t.length>1&&t.pop()}),this.followSymlinks=e,this.statMethod=e?"stat":"lstat"}entryPath(t){return c.join(this.watchPath,c.relative(this.watchPath,t.fullPath))}filterPath(t){let{stats:e}=t;if(e&&e.isSymbolicLink())return this.filterDir(t);let i=this.entryPath(t);return this.fsw._isntIgnored(i,e)&&this.fsw._hasReadPermissions(e)}filterDir(t){return this.fsw._isntIgnored(this.entryPath(t),t.stats)}}class tf extends h.EventEmitter{closed;options;_closers;_ignoredPaths;_throttled;_streams;_symlinkPaths;_watched;_pendingWrites;_pendingUnlinks;_readyCount;_emitReady;_closePromise;_userIgnored;_readyEmitted;_emitRaw;_boundRemove;_nodeFsHandler;constructor(t={}){super(),this.closed=!1,this._closers=new Map,this._ignoredPaths=new Set,this._throttled=new Map,this._streams=new Set,this._symlinkPaths=new Map,this._watched=new Map,this._pendingWrites=new Map,this._pendingUnlinks=new Map,this._readyCount=0,this._readyEmitted=!1;let e=t.awaitWriteFinish,i={stabilityThreshold:2e3,pollInterval:100},s={persistent:!0,ignoreInitial:!1,ignorePermissionErrors:!1,interval:100,binaryInterval:300,followSymlinks:!0,usePolling:!1,atomic:!0,...t,ignored:t.ignored?ts(t.ignored):ts([]),awaitWriteFinish:!0===e?i:"object"==typeof e&&{...i,...e}};A&&(s.usePolling=!0),void 0===s.atomic&&(s.atomic=!s.usePolling);let r=process.env.CHOKIDAR_USEPOLLING;if(void 0!==r){let t=r.toLowerCase();"false"===t||"0"===t?s.usePolling=!1:"true"===t||"1"===t?s.usePolling=!0:s.usePolling=!!t}let n=process.env.CHOKIDAR_INTERVAL;n&&(s.interval=Number.parseInt(n,10));let a=0;this._emitReady=()=>{++a>=this._readyCount&&(this._emitReady=x,this._readyEmitted=!0,process.nextTick(()=>this.emit(S.READY)))},this._emitRaw=(...t)=>this.emit(S.RAW,...t),this._boundRemove=this._remove.bind(this),this.options=s,this._nodeFsHandler=new Q(this),Object.freeze(s)}_addIgnoredPath(t){if(tr(t)){for(let e of this._ignoredPaths)if(tr(e)&&e.path===t.path&&e.recursive===t.recursive)return}this._ignoredPaths.add(t)}_removeIgnoredPath(t){if(this._ignoredPaths.delete(t),"string"==typeof t)for(let e of this._ignoredPaths)tr(e)&&e.path===t&&this._ignoredPaths.delete(e)}add(t,e,i){let{cwd:s}=this.options;this.closed=!1,this._closePromise=void 0;let r=ta(t);return s&&(r=r.map(t=>td(t,s))),r.forEach(t=>{this._removeIgnoredPath(t)}),this._userIgnored=void 0,this._readyCount||(this._readyCount=0),this._readyCount+=r.length,Promise.all(r.map(async t=>{let s=await this._nodeFsHandler._addToNodeFs(t,!i,void 0,0,e);return s&&this._emitReady(),s})).then(t=>{this.closed||t.forEach(t=>{t&&this.add(c.dirname(t),c.basename(e||t))})}),this}unwatch(t){if(this.closed)return this;let e=ta(t),{cwd:i}=this.options;return e.forEach(t=>{c.isAbsolute(t)||this._closers.has(t)||(i&&(t=c.join(i,t)),t=c.resolve(t)),this._closePath(t),this._addIgnoredPath(t),this._watched.has(t)&&this._addIgnoredPath({path:t,recursive:!0}),this._userIgnored=void 0}),this}close(){if(this._closePromise)return this._closePromise;this.closed=!0,this.removeAllListeners();let t=[];return this._closers.forEach(e=>e.forEach(e=>{let i=e();i instanceof Promise&&t.push(i)})),this._streams.forEach(t=>t.destroy()),this._userIgnored=void 0,this._readyCount=0,this._readyEmitted=!1,this._watched.forEach(t=>t.dispose()),this._closers.clear(),this._watched.clear(),this._streams.clear(),this._symlinkPaths.clear(),this._throttled.clear(),this._closePromise=t.length?Promise.all(t).then(()=>void 0):Promise.resolve(),this._closePromise}getWatched(){let t={};return this._watched.forEach((e,i)=>{t[(this.options.cwd?c.relative(this.options.cwd,i):i)||"."]=e.getChildren().sort()}),t}emitWithAll(t,e){this.emit(t,...e),t!==S.ERROR&&this.emit(S.ALL,t,...e)}async _emit(t,e,i){let s;if(this.closed)return;let r=this.options;T&&(e=c.normalize(e)),r.cwd&&(e=c.relative(r.cwd,e));let n=[e];null!=i&&n.push(i);let a=r.awaitWriteFinish;if(a&&(s=this._pendingWrites.get(e)))return s.lastChange=new Date,this;if(r.atomic){if(t===S.UNLINK)return this._pendingUnlinks.set(e,[t,...n]),setTimeout(()=>{this._pendingUnlinks.forEach((t,e)=>{this.emit(...t),this.emit(S.ALL,...t),this._pendingUnlinks.delete(e)})},"number"==typeof r.atomic?r.atomic:100),this;t===S.ADD&&this._pendingUnlinks.has(e)&&(t=S.CHANGE,this._pendingUnlinks.delete(e))}if(a&&(t===S.ADD||t===S.CHANGE)&&this._readyEmitted)return this._awaitWriteFinish(e,a.stabilityThreshold,t,(e,i)=>{e?(t=S.ERROR,n[0]=e,this.emitWithAll(t,n)):i&&(n.length>1?n[1]=i:n.push(i),this.emitWithAll(t,n))}),this;if(t===S.CHANGE&&!this._throttle(S.CHANGE,e,50))return this;if(r.alwaysStat&&void 0===i&&(t===S.ADD||t===S.ADD_DIR||t===S.CHANGE)){let t;let i=r.cwd?c.join(r.cwd,e):e;try{t=await (0,d.stat)(i)}catch(t){}if(!t||this.closed)return;n.push(t)}return this.emitWithAll(t,n),this}_handleError(t){let e=t&&t.code;return t&&"ENOENT"!==e&&"ENOTDIR"!==e&&(!this.options.ignorePermissionErrors||"EPERM"!==e&&"EACCES"!==e)&&this.emit(S.ERROR,t),t||this.closed}_throttle(t,e,i){let s;this._throttled.has(t)||this._throttled.set(t,new Map);let r=this._throttled.get(t);if(!r)throw Error("invalid throttle");let n=r.get(e);if(n)return n.count++,!1;let a=()=>{let t=r.get(e),i=t?t.count:0;return r.delete(e),clearTimeout(s),t&&clearTimeout(t.timeoutObject),i},o={timeoutObject:s=setTimeout(a,i),clear:a,count:0};return r.set(e,o),o}_incrReadyCount(){return this._readyCount++}_awaitWriteFinish(t,e,i,s){let r;let n=this.options.awaitWriteFinish;if("object"!=typeof n)return;let a=n.pollInterval,o=t;this.options.cwd&&!c.isAbsolute(t)&&(o=c.join(this.options.cwd,t));let h=new Date,d=this._pendingWrites;d.has(t)||(d.set(t,{lastChange:h,cancelWait:()=>(d.delete(t),clearTimeout(r),i)}),r=setTimeout(function i(n){(0,l.stat)(o,(o,h)=>{if(o||!d.has(t)){o&&"ENOENT"!==o.code&&s(o);return}let l=Number(new Date);n&&h.size!==n.size&&(d.get(t).lastChange=l),l-d.get(t).lastChange>=e?(d.delete(t),s(void 0,h)):r=setTimeout(i,a,h)})},a))}_isIgnored(t,e){if(this.options.atomic&&te.test(t))return!0;if(!this._userIgnored){let{cwd:t}=this.options,e=(this.options.ignored||[]).map(tl(t)),i=[...[...this._ignoredPaths].map(tl(t)),...e];this._userIgnored=function(t,e){if(null==t)throw TypeError("anymatch: specify first argument");let i=ts(t).map(t=>"function"==typeof t?t:"string"==typeof t?e=>t===e:t instanceof RegExp?e=>t.test(e):"object"==typeof t&&null!==t?e=>{if(t.path===e)return!0;if(t.recursive){let i=c.relative(t.path,e);return!!i&&!i.startsWith("..")&&!c.isAbsolute(i)}return!1}:()=>!1);return null==e?(t,e)=>tn(i,t,e):tn(i,e)}(i,void 0)}return this._userIgnored(t,e)}_isntIgnored(t,e){return!this._isIgnored(t,e)}_getWatchHelpers(t){return new tu(t,this.options.followSymlinks,this)}_getWatchedDir(t){let e=c.resolve(t);return this._watched.has(e)||this._watched.set(e,new tp(e,this._boundRemove)),this._watched.get(e)}_hasReadPermissions(t){return!!this.options.ignorePermissionErrors||!!(256&Number(t.mode))}_remove(t,e,i){let s=c.join(t,e),r=c.resolve(s);if(i=null!=i?i:this._watched.has(s)||this._watched.has(r),!this._throttle("remove",s,100))return;i||1!==this._watched.size||this.add(t,e,!0),this._getWatchedDir(s).getChildren().forEach(t=>this._remove(s,t));let n=this._getWatchedDir(t),a=n.has(e);n.remove(e),this._symlinkPaths.has(r)&&this._symlinkPaths.delete(r);let o=s;if(this.options.cwd&&(o=c.relative(this.options.cwd,s)),this.options.awaitWriteFinish&&this._pendingWrites.has(o)&&this._pendingWrites.get(o).cancelWait()===S.ADD)return;this._watched.delete(s),this._watched.delete(r);let h=i?S.UNLINK_DIR:S.UNLINK;a&&!this._isIgnored(s)&&this._emit(h,s),this._closePath(s)}_closePath(t){this._closeFile(t);let e=c.dirname(t);this._getWatchedDir(e).remove(c.basename(t))}_closeFile(t){let e=this._closers.get(t);e&&(e.forEach(t=>t()),this._closers.delete(t))}_addPathCloser(t,e){if(!e)return;let i=this._closers.get(t);i||(i=[],this._closers.set(t,i)),i.push(e)}_readdirp(t,e){if(this.closed)return;let i=function(t,e={}){let i=e.entryType||e.type;if("both"===i&&(i=u.FILE_DIR_TYPE),t){if("string"!=typeof t)throw TypeError("readdirp: root argument must be a string. Usage: readdirp(root, options)");if(i&&!w.includes(i))throw Error(`readdirp: Invalid type passed. Use one of ${w.join(", ")}`)}else throw Error("readdirp: root argument is required. Usage: readdirp(root, options)");let s={...e,root:t};return i&&(s.type=i),new D(s)}(t,{type:S.ALL,alwaysStat:!0,lstat:!0,...e,depth:0});return this._streams.add(i),i.once("close",()=>{i=void 0}),i.once("end",()=>{i&&(this._streams.delete(i),i=void 0)}),i}}let t_=t=>(function(t,e={}){let i=new tf(e);return i.add(t),i})(t,{ignoreInitial:!0,persistent:!0});class tm{constructor(t=t_,e=150){this.watchFile=t,this.debounceMs=e,this.entries=new Map}subscribe(t,e,i){let s=`${t}\0${e}`,r=this.entries.get(s);if(!r){let t=this.watchFile(e);r={watcher:t,subscribers:new Set,revision:0,debounceTimer:null},t.on("add",()=>this.schedule(r)),t.on("change",()=>this.schedule(r)),this.entries.set(s,r)}r.subscribers.add(i);let n=!0;return()=>{if(!n)return;n=!1;let t=this.entries.get(s);t&&(t.subscribers.delete(i),0===t.subscribers.size&&this.releaseEntry(s,t))}}async dispose(){let t=[...this.entries.entries()];this.entries.clear(),await Promise.all(t.map(async([,t])=>{t.debounceTimer&&clearTimeout(t.debounceTimer),await t.watcher.close()}))}schedule(t){t.debounceTimer&&clearTimeout(t.debounceTimer),t.debounceTimer=setTimeout(()=>{t.debounceTimer=null,t.revision+=1;let e={type:"session_history_changed",revision:t.revision};for(let i of t.subscribers)try{i(e)}catch{}},this.debounceMs)}releaseEntry(t,e){this.entries.get(t)===e&&this.entries.delete(t),e.debounceTimer&&clearTimeout(e.debounceTimer),e.debounceTimer=null,e.watcher.close()}}let tw=globalThis,tg="force-dynamic",ty="nodejs",tE=new TextEncoder;async function tv(t,{params:e}){if(!(0,o.V_)(e.id))return Response.json({error:"Native session not found"},{status:404});try{let i=await (0,o.NL)().getSessionWatchPath(e.id);if(!i)return Response.json({error:"Native session transcript is unavailable"},{status:404});let s=()=>void 0,r=new ReadableStream({start(r){let n=!1,a=(tw.__nativeSessionChangeMonitor||(tw.__nativeSessionChangeMonitor=new tm),tw.__nativeSessionChangeMonitor).subscribe(e.id,i,t=>{n||r.enqueue(tE.encode(`data: ${JSON.stringify(t)}
1
+ "use strict";(()=>{var t={};t.id=8917,t.ids=[8917],t.modules={5890:t=>{t.exports=require("better-sqlite3")},399:t=>{t.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},517:t=>{t.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},1282:t=>{t.exports=require("child_process")},2048:t=>{t.exports=require("fs")},9801:t=>{t.exports=require("os")},5315:t=>{t.exports=require("path")},2728:t=>{t.exports=import("@anthropic-ai/claude-agent-sdk")},7718:t=>{t.exports=require("node:child_process")},6005:t=>{t.exports=require("node:crypto")},5673:t=>{t.exports=require("node:events")},7561:t=>{t.exports=require("node:fs")},3977:t=>{t.exports=require("node:fs/promises")},8849:t=>{t.exports=require("node:http")},2286:t=>{t.exports=require("node:https")},7503:t=>{t.exports=require("node:net")},612:t=>{t.exports=require("node:os")},9411:t=>{t.exports=require("node:path")},1747:t=>{t.exports=require("node:readline")},6915:t=>{t.exports=require("node:string_decoder")},1041:t=>{t.exports=require("node:url")},5881:t=>{t.exports=require("node:util")},7495:(t,e,s)=>{s.a(t,async(t,i)=>{try{s.r(e),s.d(e,{originalPathname:()=>f,patchFetch:()=>l,requestAsyncStorage:()=>c,routeModule:()=>d,serverHooks:()=>u,staticGenerationAsyncStorage:()=>p});var r=s(7786),a=s(5042),n=s(2184),o=s(9146),h=t([o]);o=(h.then?(await h)():h)[0];let d=new r.AppRouteRouteModule({definition:{kind:a.x.APP_ROUTE,page:"/api/sessions/[id]/changes/route",pathname:"/api/sessions/[id]/changes",filename:"route",bundlePath:"app/api/sessions/[id]/changes/route"},resolvedPagePath:"/Users/caoqu/team-agent/customer-agent/packages/server/app/api/sessions/[id]/changes/route.ts",nextConfigOutput:"standalone",userland:o}),{requestAsyncStorage:c,staticGenerationAsyncStorage:p,serverHooks:u}=d,f="/api/sessions/[id]/changes/route";function l(){return(0,n.patchFetch)({serverHooks:u,staticGenerationAsyncStorage:p})}i()}catch(t){i(t)}})},7786:(t,e,s)=>{t.exports=s(517)},9146:(t,e,s)=>{s.a(t,async(t,i)=>{try{s.r(e),s.d(e,{GET:()=>o,dynamic:()=>h,runtime:()=>l});var r=s(2083),a=s(2147),n=t([r]);r=(n.then?(await n)():n)[0];let h="force-dynamic",l="nodejs",d=new TextEncoder;async function o(t,{params:e}){if(!(0,r.V_)(e.id))return Response.json({error:"Native session not found"},{status:404});try{let s=await (0,r.NL)().getSessionWatchPath(e.id);if(!s)return Response.json({error:"Native session transcript is unavailable"},{status:404});let i=()=>void 0,n=new ReadableStream({start(r){let n=!1,o=(0,a.L)().subscribe(e.id,s,t=>{n||r.enqueue(d.encode(`data: ${JSON.stringify(t)}
2
2
 
3
- `))}),o=setInterval(()=>{n||r.enqueue(tE.encode(": keep-alive\n\n"))},15e3);s=()=>{n||(n=!0,clearInterval(o),a(),t.signal.removeEventListener("abort",s))},t.signal.addEventListener("abort",s,{once:!0}),r.enqueue(tE.encode(": connected\n\n"))},cancel(){s()}});return new Response(r,{headers:{"Cache-Control":"no-cache, no-transform",Connection:"keep-alive","Content-Type":"text/event-stream; charset=utf-8","X-Accel-Buffering":"no"}})}catch(t){return Response.json({error:t instanceof Error?t.message:"Internal error"},{status:(0,o.WW)(t)})}}let tb=new r.AppRouteRouteModule({definition:{kind:n.x.APP_ROUTE,page:"/api/sessions/[id]/changes/route",pathname:"/api/sessions/[id]/changes",filename:"route",bundlePath:"app/api/sessions/[id]/changes/route"},resolvedPagePath:"/Users/caoqu/team-agent/customer-agent/packages/server/app/api/sessions/[id]/changes/route.ts",nextConfigOutput:"standalone",userland:s}),{requestAsyncStorage:tP,staticGenerationAsyncStorage:tD,serverHooks:tR}=tb,tx="/api/sessions/[id]/changes/route";function tI(){return(0,a.patchFetch)({serverHooks:tR,staticGenerationAsyncStorage:tD})}},7786:(t,e,i)=>{t.exports=i(517)}};var e=require("../../../../../webpack-runtime.js");e.C(t);var i=t=>e(e.s=t),s=e.X(0,[375,322,988],()=>i(7428));module.exports=s})();
3
+ `))}),h=setInterval(()=>{n||r.enqueue(d.encode(": keep-alive\n\n"))},15e3);i=()=>{n||(n=!0,clearInterval(h),o(),t.signal.removeEventListener("abort",i))},t.signal.addEventListener("abort",i,{once:!0}),r.enqueue(d.encode(": connected\n\n"))},cancel(){i()}});return new Response(n,{headers:{"Cache-Control":"no-cache, no-transform",Connection:"keep-alive","Content-Type":"text/event-stream; charset=utf-8","X-Accel-Buffering":"no"}})}catch(t){return Response.json({error:t instanceof Error?t.message:"Internal error"},{status:(0,r.WW)(t)})}}i()}catch(t){i(t)}})},2147:(t,e,s)=>{s.d(e,{L:()=>tu});var i=s(5673),r=s(7561),a=s(3977),n=s(9411);let o=require("node:stream"),h={FILE_TYPE:"files",DIR_TYPE:"directories",FILE_DIR_TYPE:"files_directories",EVERYTHING_TYPE:"all"},l={root:".",fileFilter:t=>!0,directoryFilter:t=>!0,type:h.FILE_TYPE,lstat:!1,depth:2147483648,alwaysStat:!1,highWaterMark:256};Object.freeze(l);let d="READDIRP_RECURSIVE_ERROR",c=new Set(["ENOENT","EPERM","EACCES","ELOOP",d]),p=[h.DIR_TYPE,h.EVERYTHING_TYPE,h.FILE_DIR_TYPE,h.FILE_TYPE],u=new Set([h.DIR_TYPE,h.EVERYTHING_TYPE,h.FILE_DIR_TYPE]),f=new Set([h.EVERYTHING_TYPE,h.FILE_DIR_TYPE,h.FILE_TYPE]),_=t=>c.has(t.code),m="win32"===process.platform,w=t=>!0,g=t=>{if(void 0===t)return w;if("function"==typeof t)return t;if("string"==typeof t){let e=t.trim();return t=>t.basename===e}if(Array.isArray(t)){let e=t.map(t=>t.trim());return t=>e.some(e=>t.basename===e)}return w};class y extends o.Readable{parents;reading;parent;_stat;_maxDepth;_wantsDir;_wantsFile;_wantsEverything;_root;_isDirent;_statsProp;_rdOptions;_fileFilter;_directoryFilter;_relStart;constructor(t={}){super({objectMode:!0,autoDestroy:!0,highWaterMark:t.highWaterMark??l.highWaterMark});let e={...l,...t},s=e.root??l.root,i=e.type??l.type;this._fileFilter=g(e.fileFilter),this._directoryFilter=g(e.directoryFilter);let r=e.lstat?a.lstat:a.stat;m?this._stat=t=>r(t,{bigint:!0}):this._stat=r,this._maxDepth=null!=e.depth&&Number.isSafeInteger(e.depth)?e.depth:l.depth,this._wantsDir=u.has(i),this._wantsFile=f.has(i),this._wantsEverything=i===h.EVERYTHING_TYPE,this._root=(0,n.resolve)(s),this._relStart=this._root.endsWith(n.sep)?this._root.length:this._root.length+1,this._isDirent=!e.alwaysStat,this._statsProp=this._isDirent?"dirent":"stats",this._rdOptions={encoding:"utf8",withFileTypes:this._isDirent};let o={path:this._root,depth:1};o.pending=this._exploreDir(this._root,1),this.parents=[o],this.reading=!1,this.parent=void 0}async _read(t){if(!this.reading){this.reading=!0;try{for(;!this.destroyed&&t>0;){let e=this.parent,s=e&&e.files;if(s&&s.length>0){let{path:i,depth:r}=e,a=s.splice(0,t).map(t=>this._formatEntry(t,i));for(let e of this._isDirent?a:await Promise.all(a)){if(!e)continue;if(this.destroyed)return;let s=this._getEntryType(e);"string"!=typeof s&&(s=await s),"directory"===s&&this._directoryFilter(e)?(r<=this._maxDepth&&this.parents.push({path:e.fullPath,depth:r+1}),this._wantsDir&&(this.push(e),t--)):("file"===s||this._includeAsFile(e))&&this._fileFilter(e)&&this._wantsFile&&(this.push(e),t--)}}else{let t=this.parents.pop();if(!t){this.push(null);break}let e=t.pending??this._exploreDir(t.path,t.depth),s=this.parents[this.parents.length-1];if(s&&!s.pending&&(s.pending=this._exploreDir(s.path,s.depth)),this.parent=await e,this.destroyed)return}}}catch(t){this.destroy(t)}finally{this.reading=!1}}}async _exploreDir(t,e){let s;try{s=await (0,a.readdir)(t,this._rdOptions)}catch(t){this._onError(t)}return{files:s,depth:e,path:t}}_formatEntry(t,e){let s=this._isDirent?t.name:t,i=(0,n.join)(e,s),r={path:i.slice(this._relStart),fullPath:i,basename:s};return this._isDirent?(r.dirent=t,r):this._stat(i).then(t=>(r.stats=t,r),t=>{this._onError(t)})}_onError(t){_(t)&&!this.destroyed?this.emit("warn",t):this.destroy(t)}_getEntryType(t){if(!t||!(this._statsProp in t))return"";let e=t[this._statsProp];return e.isFile()?"file":e.isDirectory()?"directory":e.isSymbolicLink()?this._getSymlinkEntryType(t):""}async _getSymlinkEntryType(t){let e=t.fullPath;try{let t=await (0,a.realpath)(e),s=await (0,a.lstat)(t);if(s.isFile())return"file";if(s.isDirectory()){let s=t.length;if(e.startsWith(t)&&e[s]===n.sep){let s=Error(`Circular symlink detected: "${e}" points to "${t}"`);return s.code=d,this._onError(s),""}return"directory"}}catch(t){this._onError(t)}return""}_includeAsFile(t){let e=t&&t[this._statsProp];return e&&this._wantsEverything&&!e.isDirectory()}}var v=s(612);let E=()=>{},b=process.platform,P="win32"===b,D="darwin"===b,R="linux"===b,x="freebsd"===b,I="OS400"===(0,v.type)(),T={ALL:"all",READY:"ready",ADD:"add",CHANGE:"change",ADD_DIR:"addDir",UNLINK:"unlink",UNLINK_DIR:"unlinkDir",RAW:"raw",ERROR:"error"},k={lstat:a.lstat,stat:a.stat},F="listeners",W="errHandlers",A="rawEmitters",S=[F,W,A],C=new Set(["3dm","3ds","3g2","3gp","7z","a","aac","adp","afdesign","afphoto","afpub","ai","aif","aiff","alz","ape","apk","appimage","ar","arj","asf","au","avi","bak","baml","bh","bin","bk","bmp","btif","bz2","bzip2","cab","caf","cgm","class","cmx","cpio","cr2","cur","dat","dcm","deb","dex","djvu","dll","dmg","dng","doc","docm","docx","dot","dotm","dra","DS_Store","dsk","dts","dtshd","dvb","dwg","dxf","ecelp4800","ecelp7470","ecelp9600","egg","eol","eot","epub","exe","f4v","fbs","fh","fla","flac","flatpak","fli","flv","fpx","fst","fvt","g3","gh","gif","graffle","gz","gzip","h261","h263","h264","icns","ico","ief","img","ipa","iso","jar","jpeg","jpg","jpgv","jpm","jxr","key","ktx","lha","lib","lvp","lz","lzh","lzma","lzo","m3u","m4a","m4v","mar","mdi","mht","mid","midi","mj2","mka","mkv","mmr","mng","mobi","mov","movie","mp3","mp4","mp4a","mpeg","mpg","mpga","mxu","nef","npx","numbers","nupkg","o","odp","ods","odt","oga","ogg","ogv","otf","ott","pages","pbm","pcx","pdb","pdf","pea","pgm","pic","png","pnm","pot","potm","potx","ppa","ppam","ppm","pps","ppsm","ppsx","ppt","pptm","pptx","psd","pya","pyc","pyo","pyv","qt","rar","ras","raw","resources","rgb","rip","rlc","rmf","rmvb","rpm","rtf","rz","s3m","s7z","scpt","sgi","shar","snap","sil","sketch","slk","smv","snk","so","stl","suo","sub","swf","tar","tbz","tbz2","tga","tgz","thmx","tif","tiff","tlz","ttc","ttf","txz","udf","uvh","uvi","uvm","uvp","uvs","uvu","viv","vob","war","wav","wax","wbmp","wdp","weba","webm","webp","whl","wim","wm","wma","wmv","wmx","woff","woff2","wrm","wvx","xbm","xif","xla","xlam","xls","xlsb","xlsm","xlsx","xlt","xltm","xltx","xm","xmind","xpi","xpm","xwd","xz","z","zip","zipx"]),N=t=>C.has(n.extname(t).slice(1).toLowerCase()),j=(t,e)=>{t instanceof Set?t.forEach(e):e(t)},z=(t,e,s)=>{let i=t[e];i instanceof Set||(t[e]=i=new Set([i])),i.add(s)},L=t=>e=>{let s=t[e];s instanceof Set?s.clear():delete t[e]},M=(t,e,s)=>{let i=t[e];i instanceof Set?i.delete(s):i===s&&delete t[e]},q=t=>t instanceof Set?0===t.size:!t,O=new Map;function H(t,e,s,i,a){try{return(0,r.watch)(t,{persistent:e.persistent},(e,i)=>{s(t),a(e,i,{watchedPath:t}),i&&t!==i&&Y(n.resolve(t,i),F,n.join(t,i))})}catch(t){i(t);return}}let Y=(t,e,s,i,r)=>{let a=O.get(t);a&&j(a[e],t=>{t(s,i,r)})},U=(t,e,s,i)=>{let r;let{listener:n,errHandler:o,rawEmitter:h}=i,l=O.get(e);if(!s.persistent){if(!(r=H(t,s,n,o,h)))return;return r.close.bind(r)}if(l)z(l,F,n),z(l,W,o),z(l,A,h);else{if(!(r=H(t,s,Y.bind(null,e,F),o,Y.bind(null,e,A))))return;r.on(T.ERROR,async s=>{let i=Y.bind(null,e,W);if(l&&(l.watcherUnusable=!0),P&&"EPERM"===s.code)try{let e=await (0,a.open)(t,"r");await e.close(),i(s)}catch(t){}else i(s)}),l={listeners:n,errHandlers:o,rawEmitters:h,watcher:r},O.set(e,l)}return()=>{M(l,F,n),M(l,W,o),M(l,A,h),q(l.listeners)&&(l.watcher.close(),O.delete(e),S.forEach(L(l)),l.watcher=void 0,Object.freeze(l))}},G=new Map,$=(t,e,s,i)=>{let{listener:a,rawEmitter:n}=i,o=G.get(e),h=o&&o.options;return h&&(h.persistent<s.persistent||h.interval>s.interval)&&((0,r.unwatchFile)(e),o=void 0),o?(z(o,F,a),z(o,A,n)):(o={listeners:a,rawEmitters:n,options:s,watcher:(0,r.watchFile)(e,s,(s,i)=>{j(o.rawEmitters,t=>{t(T.CHANGE,e,{curr:s,prev:i})});let r=s.mtimeMs;(s.size!==i.size||r>i.mtimeMs||0===r)&&j(o.listeners,e=>e(t,s))})},G.set(e,o)),()=>{M(o,F,a),M(o,A,n),q(o.listeners)&&(G.delete(e),(0,r.unwatchFile)(e),o.options=o.watcher=void 0,Object.freeze(o))}};class V{fsw;_boundHandleError;constructor(t){this.fsw=t,this._boundHandleError=e=>t._handleError(e)}_watchWithNodeFs(t,e){let s;let i=this.fsw.options,r=n.dirname(t),a=n.basename(t);this.fsw._getWatchedDir(r).add(a);let o=n.resolve(t),h={persistent:i.persistent};if(e||(e=E),i.usePolling){let r=i.interval!==i.binaryInterval;h.interval=r&&N(a)?i.binaryInterval:i.interval,s=$(t,o,h,{listener:e,rawEmitter:this.fsw._emitRaw})}else s=U(t,o,h,{listener:e,errHandler:this._boundHandleError,rawEmitter:this.fsw._emitRaw});return s}_handleFile(t,e,s){if(this.fsw.closed)return;let i=n.dirname(t),r=n.basename(t),o=this.fsw._getWatchedDir(i),h=e;if(o.has(r))return;let l=async(e,s)=>{if(this.fsw._throttle("watch",t,5)){if(s&&0!==s.mtimeMs){if(o.has(r)){let e=s.atimeMs,i=s.mtimeMs;(!e||e<=i||i!==h.mtimeMs)&&this.fsw._emit(T.CHANGE,t,s),h=s}}else try{let s=await (0,a.stat)(t);if(this.fsw.closed)return;let i=s.atimeMs,r=s.mtimeMs;if((!i||i<=r||r!==h.mtimeMs)&&this.fsw._emit(T.CHANGE,t,s),(D||R||x)&&h.ino!==s.ino){this.fsw._closeFile(e),h=s;let i=this._watchWithNodeFs(t,l);i&&this.fsw._addPathCloser(e,i)}else h=s}catch(t){this.fsw._remove(i,r)}}},d=this._watchWithNodeFs(t,l);if(!(s&&this.fsw.options.ignoreInitial)&&this.fsw._isntIgnored(t)){if(!this.fsw._throttle(T.ADD,t,0))return;this.fsw._emit(T.ADD,t,e)}return d}async _handleSymlink(t,e,s,i){if(this.fsw.closed)return;let r=t.fullPath,n=this.fsw._getWatchedDir(e);if(!this.fsw.options.followSymlinks){let e;this.fsw._incrReadyCount();try{e=await (0,a.realpath)(s)}catch(t){return this.fsw._emitReady(),!0}if(this.fsw.closed)return;return n.has(i)?this.fsw._symlinkPaths.get(r)!==e&&(this.fsw._symlinkPaths.set(r,e),this.fsw._emit(T.CHANGE,s,t.stats)):(n.add(i),this.fsw._symlinkPaths.set(r,e),this.fsw._emit(T.ADD,s,t.stats)),this.fsw._emitReady(),!0}if(this.fsw._symlinkPaths.has(r))return!0;this.fsw._symlinkPaths.set(r,!0)}_handleRead(t,e,s,i,r,a,o){t=n.join(t,"");let h=i?`${t}:${i}`:t;if(!(o=this.fsw._throttle("readdir",h,1e3)))return;let l=this.fsw._getWatchedDir(s.path),d=new Set,c=this.fsw._readdirp(t,{fileFilter:t=>s.filterPath(t),directoryFilter:t=>s.filterDir(t)});if(c)return c.on("data",async o=>{if(this.fsw.closed){c=void 0;return}let h=o.path,p=n.join(t,h);if(d.add(h),!(o.stats.isSymbolicLink()&&await this._handleSymlink(o,t,p,h))){if(this.fsw.closed){c=void 0;return}h!==i&&(i||l.has(h))||(this.fsw._incrReadyCount(),p=n.join(r,n.relative(r,p)),this._addToNodeFs(p,e,s,a+1))}}).on(T.ERROR,this._boundHandleError),new Promise((e,n)=>{if(!c)return n();c.once("end",()=>{if(this.fsw.closed){c=void 0;return}let n=!!o&&o.clear();e(void 0),l.getChildren().filter(e=>e!==t&&!d.has(e)).forEach(e=>{this.fsw._remove(t,e)}),c=void 0,n&&this._handleRead(t,!1,s,i,r,a,o)})})}async _handleDir(t,e,s,i,r,a,o){let h,l;let d=this.fsw._getWatchedDir(n.dirname(t)),c=d.has(n.basename(t));s&&this.fsw.options.ignoreInitial||r||c||this.fsw._emit(T.ADD_DIR,t,e),d.add(n.basename(t)),this.fsw._getWatchedDir(t);let p=this.fsw.options.depth;if((null==p||i<=p)&&!this.fsw._symlinkPaths.has(o)){if(!r&&(await this._handleRead(t,s,a,r,t,i,h),this.fsw.closed))return;l=this._watchWithNodeFs(t,(e,s)=>{s&&0===s.mtimeMs||this._handleRead(e,!1,a,r,t,i,h)})}return l}async _addToNodeFs(t,e,s,i,r){let o=this.fsw._emitReady;if(this.fsw._isIgnored(t)||this.fsw.closed)return o(),!1;let h=this.fsw._getWatchHelpers(t);s&&(h.filterPath=t=>s.filterPath(t),h.filterDir=t=>s.filterDir(t));try{let s;let l=await k[h.statMethod](h.watchPath);if(this.fsw.closed)return;if(this.fsw._isIgnored(h.watchPath,l))return o(),!1;let d=this.fsw.options.followSymlinks;if(l.isDirectory()){let o=n.resolve(t),c=d?await (0,a.realpath)(t):t;if(this.fsw.closed||(s=await this._handleDir(h.watchPath,l,e,i,r,h,c),this.fsw.closed))return;o!==c&&void 0!==c&&this.fsw._symlinkPaths.set(o,c)}else if(l.isSymbolicLink()){let r=d?await (0,a.realpath)(t):t;if(this.fsw.closed)return;let o=n.dirname(h.watchPath);if(this.fsw._getWatchedDir(o).add(h.watchPath),this.fsw._emit(T.ADD,h.watchPath,l),s=await this._handleDir(o,l,e,i,t,h,r),this.fsw.closed)return;void 0!==r&&this.fsw._symlinkPaths.set(n.resolve(t),r)}else s=this._handleFile(h.watchPath,l,e);return o(),s&&this.fsw._addPathCloser(t,s),!1}catch(e){if(this.fsw._handleError(e))return o(),t}}}let K=/\\/g,X=/\/\//g,B=/\..*\.(sw[px])$|~$|\.subl.*\.tmp/,J=/^\.[/\\]/;function Q(t){return Array.isArray(t)?t:[t]}let Z=t=>"object"==typeof t&&null!==t&&!(t instanceof RegExp);function tt(t,e,s){let i=function(t){if("string"!=typeof t)throw Error("string expected");t=(t=n.normalize(t)).replace(/\\/g,"/");let e=!1;return t.startsWith("//")&&(e=!0),t=t.replace(X,"/"),e&&(t="/"+t),t}(e);for(let e=0;e<t.length;e++)if((0,t[e])(i,s))return!0;return!1}let te=t=>{let e=Q(t).flat();if(!e.every(t=>"string"==typeof t))throw TypeError(`Non-string provided as watch path: ${e}`);return e.map(ti)},ts=t=>{let e=t.replace(K,"/"),s=!1;return e.startsWith("//")&&(s=!0),e=e.replace(X,"/"),s&&(e="/"+e),e},ti=t=>ts(n.normalize(ts(t))),tr=(t="")=>e=>"string"==typeof e?ti(n.isAbsolute(e)?e:n.join(t,e)):e,ta=(t,e)=>n.isAbsolute(t)?t:n.join(e,t),tn=Object.freeze(new Set);class to{path;_removeWatcher;items;constructor(t,e){this.path=t,this._removeWatcher=e,this.items=new Set}add(t){let{items:e}=this;e&&"."!==t&&".."!==t&&e.add(t)}async remove(t){let{items:e}=this;if(!e||(e.delete(t),e.size>0))return;let s=this.path;try{await (0,a.readdir)(s)}catch(t){this._removeWatcher&&this._removeWatcher(n.dirname(s),n.basename(s))}}has(t){let{items:e}=this;if(e)return e.has(t)}getChildren(){let{items:t}=this;return t?[...t.values()]:[]}dispose(){this.items.clear(),this.path="",this._removeWatcher=E,this.items=tn,Object.freeze(this)}}class th{fsw;path;watchPath;fullWatchPath;dirParts;followSymlinks;statMethod;constructor(t,e,s){this.fsw=s;let i=t;this.path=t=t.replace(J,""),this.watchPath=i,this.fullWatchPath=n.resolve(i),this.dirParts=[],this.dirParts.forEach(t=>{t.length>1&&t.pop()}),this.followSymlinks=e,this.statMethod=e?"stat":"lstat"}entryPath(t){return n.join(this.watchPath,n.relative(this.watchPath,t.fullPath))}filterPath(t){let{stats:e}=t;if(e&&e.isSymbolicLink())return this.filterDir(t);let s=this.entryPath(t);return this.fsw._isntIgnored(s,e)&&this.fsw._hasReadPermissions(e)}filterDir(t){return this.fsw._isntIgnored(this.entryPath(t),t.stats)}}class tl extends i.EventEmitter{closed;options;_closers;_ignoredPaths;_throttled;_streams;_symlinkPaths;_watched;_pendingWrites;_pendingUnlinks;_readyCount;_emitReady;_closePromise;_userIgnored;_readyEmitted;_emitRaw;_boundRemove;_nodeFsHandler;constructor(t={}){super(),this.closed=!1,this._closers=new Map,this._ignoredPaths=new Set,this._throttled=new Map,this._streams=new Set,this._symlinkPaths=new Map,this._watched=new Map,this._pendingWrites=new Map,this._pendingUnlinks=new Map,this._readyCount=0,this._readyEmitted=!1;let e=t.awaitWriteFinish,s={stabilityThreshold:2e3,pollInterval:100},i={persistent:!0,ignoreInitial:!1,ignorePermissionErrors:!1,interval:100,binaryInterval:300,followSymlinks:!0,usePolling:!1,atomic:!0,...t,ignored:t.ignored?Q(t.ignored):Q([]),awaitWriteFinish:!0===e?s:"object"==typeof e&&{...s,...e}};I&&(i.usePolling=!0),void 0===i.atomic&&(i.atomic=!i.usePolling);let r=process.env.CHOKIDAR_USEPOLLING;if(void 0!==r){let t=r.toLowerCase();"false"===t||"0"===t?i.usePolling=!1:"true"===t||"1"===t?i.usePolling=!0:i.usePolling=!!t}let a=process.env.CHOKIDAR_INTERVAL;a&&(i.interval=Number.parseInt(a,10));let n=0;this._emitReady=()=>{++n>=this._readyCount&&(this._emitReady=E,this._readyEmitted=!0,process.nextTick(()=>this.emit(T.READY)))},this._emitRaw=(...t)=>this.emit(T.RAW,...t),this._boundRemove=this._remove.bind(this),this.options=i,this._nodeFsHandler=new V(this),Object.freeze(i)}_addIgnoredPath(t){if(Z(t)){for(let e of this._ignoredPaths)if(Z(e)&&e.path===t.path&&e.recursive===t.recursive)return}this._ignoredPaths.add(t)}_removeIgnoredPath(t){if(this._ignoredPaths.delete(t),"string"==typeof t)for(let e of this._ignoredPaths)Z(e)&&e.path===t&&this._ignoredPaths.delete(e)}add(t,e,s){let{cwd:i}=this.options;this.closed=!1,this._closePromise=void 0;let r=te(t);return i&&(r=r.map(t=>ta(t,i))),r.forEach(t=>{this._removeIgnoredPath(t)}),this._userIgnored=void 0,this._readyCount||(this._readyCount=0),this._readyCount+=r.length,Promise.all(r.map(async t=>{let i=await this._nodeFsHandler._addToNodeFs(t,!s,void 0,0,e);return i&&this._emitReady(),i})).then(t=>{this.closed||t.forEach(t=>{t&&this.add(n.dirname(t),n.basename(e||t))})}),this}unwatch(t){if(this.closed)return this;let e=te(t),{cwd:s}=this.options;return e.forEach(t=>{n.isAbsolute(t)||this._closers.has(t)||(s&&(t=n.join(s,t)),t=n.resolve(t)),this._closePath(t),this._addIgnoredPath(t),this._watched.has(t)&&this._addIgnoredPath({path:t,recursive:!0}),this._userIgnored=void 0}),this}close(){if(this._closePromise)return this._closePromise;this.closed=!0,this.removeAllListeners();let t=[];return this._closers.forEach(e=>e.forEach(e=>{let s=e();s instanceof Promise&&t.push(s)})),this._streams.forEach(t=>t.destroy()),this._userIgnored=void 0,this._readyCount=0,this._readyEmitted=!1,this._watched.forEach(t=>t.dispose()),this._closers.clear(),this._watched.clear(),this._streams.clear(),this._symlinkPaths.clear(),this._throttled.clear(),this._closePromise=t.length?Promise.all(t).then(()=>void 0):Promise.resolve(),this._closePromise}getWatched(){let t={};return this._watched.forEach((e,s)=>{t[(this.options.cwd?n.relative(this.options.cwd,s):s)||"."]=e.getChildren().sort()}),t}emitWithAll(t,e){this.emit(t,...e),t!==T.ERROR&&this.emit(T.ALL,t,...e)}async _emit(t,e,s){let i;if(this.closed)return;let r=this.options;P&&(e=n.normalize(e)),r.cwd&&(e=n.relative(r.cwd,e));let o=[e];null!=s&&o.push(s);let h=r.awaitWriteFinish;if(h&&(i=this._pendingWrites.get(e)))return i.lastChange=new Date,this;if(r.atomic){if(t===T.UNLINK)return this._pendingUnlinks.set(e,[t,...o]),setTimeout(()=>{this._pendingUnlinks.forEach((t,e)=>{this.emit(...t),this.emit(T.ALL,...t),this._pendingUnlinks.delete(e)})},"number"==typeof r.atomic?r.atomic:100),this;t===T.ADD&&this._pendingUnlinks.has(e)&&(t=T.CHANGE,this._pendingUnlinks.delete(e))}if(h&&(t===T.ADD||t===T.CHANGE)&&this._readyEmitted)return this._awaitWriteFinish(e,h.stabilityThreshold,t,(e,s)=>{e?(t=T.ERROR,o[0]=e,this.emitWithAll(t,o)):s&&(o.length>1?o[1]=s:o.push(s),this.emitWithAll(t,o))}),this;if(t===T.CHANGE&&!this._throttle(T.CHANGE,e,50))return this;if(r.alwaysStat&&void 0===s&&(t===T.ADD||t===T.ADD_DIR||t===T.CHANGE)){let t;let s=r.cwd?n.join(r.cwd,e):e;try{t=await (0,a.stat)(s)}catch(t){}if(!t||this.closed)return;o.push(t)}return this.emitWithAll(t,o),this}_handleError(t){let e=t&&t.code;return t&&"ENOENT"!==e&&"ENOTDIR"!==e&&(!this.options.ignorePermissionErrors||"EPERM"!==e&&"EACCES"!==e)&&this.emit(T.ERROR,t),t||this.closed}_throttle(t,e,s){let i;this._throttled.has(t)||this._throttled.set(t,new Map);let r=this._throttled.get(t);if(!r)throw Error("invalid throttle");let a=r.get(e);if(a)return a.count++,!1;let n=()=>{let t=r.get(e),s=t?t.count:0;return r.delete(e),clearTimeout(i),t&&clearTimeout(t.timeoutObject),s},o={timeoutObject:i=setTimeout(n,s),clear:n,count:0};return r.set(e,o),o}_incrReadyCount(){return this._readyCount++}_awaitWriteFinish(t,e,s,i){let a;let o=this.options.awaitWriteFinish;if("object"!=typeof o)return;let h=o.pollInterval,l=t;this.options.cwd&&!n.isAbsolute(t)&&(l=n.join(this.options.cwd,t));let d=new Date,c=this._pendingWrites;c.has(t)||(c.set(t,{lastChange:d,cancelWait:()=>(c.delete(t),clearTimeout(a),s)}),a=setTimeout(function s(n){(0,r.stat)(l,(r,o)=>{if(r||!c.has(t)){r&&"ENOENT"!==r.code&&i(r);return}let l=Number(new Date);n&&o.size!==n.size&&(c.get(t).lastChange=l),l-c.get(t).lastChange>=e?(c.delete(t),i(void 0,o)):a=setTimeout(s,h,o)})},h))}_isIgnored(t,e){if(this.options.atomic&&B.test(t))return!0;if(!this._userIgnored){let{cwd:t}=this.options,e=(this.options.ignored||[]).map(tr(t)),s=[...[...this._ignoredPaths].map(tr(t)),...e];this._userIgnored=function(t,e){if(null==t)throw TypeError("anymatch: specify first argument");let s=Q(t).map(t=>"function"==typeof t?t:"string"==typeof t?e=>t===e:t instanceof RegExp?e=>t.test(e):"object"==typeof t&&null!==t?e=>{if(t.path===e)return!0;if(t.recursive){let s=n.relative(t.path,e);return!!s&&!s.startsWith("..")&&!n.isAbsolute(s)}return!1}:()=>!1);return null==e?(t,e)=>tt(s,t,e):tt(s,e)}(s,void 0)}return this._userIgnored(t,e)}_isntIgnored(t,e){return!this._isIgnored(t,e)}_getWatchHelpers(t){return new th(t,this.options.followSymlinks,this)}_getWatchedDir(t){let e=n.resolve(t);return this._watched.has(e)||this._watched.set(e,new to(e,this._boundRemove)),this._watched.get(e)}_hasReadPermissions(t){return!!this.options.ignorePermissionErrors||!!(256&Number(t.mode))}_remove(t,e,s){let i=n.join(t,e),r=n.resolve(i);if(s=null!=s?s:this._watched.has(i)||this._watched.has(r),!this._throttle("remove",i,100))return;s||1!==this._watched.size||this.add(t,e,!0),this._getWatchedDir(i).getChildren().forEach(t=>this._remove(i,t));let a=this._getWatchedDir(t),o=a.has(e);a.remove(e),this._symlinkPaths.has(r)&&this._symlinkPaths.delete(r);let h=i;if(this.options.cwd&&(h=n.relative(this.options.cwd,i)),this.options.awaitWriteFinish&&this._pendingWrites.has(h)&&this._pendingWrites.get(h).cancelWait()===T.ADD)return;this._watched.delete(i),this._watched.delete(r);let l=s?T.UNLINK_DIR:T.UNLINK;o&&!this._isIgnored(i)&&this._emit(l,i),this._closePath(i)}_closePath(t){this._closeFile(t);let e=n.dirname(t);this._getWatchedDir(e).remove(n.basename(t))}_closeFile(t){let e=this._closers.get(t);e&&(e.forEach(t=>t()),this._closers.delete(t))}_addPathCloser(t,e){if(!e)return;let s=this._closers.get(t);s||(s=[],this._closers.set(t,s)),s.push(e)}_readdirp(t,e){if(this.closed)return;let s=function(t,e={}){let s=e.entryType||e.type;if("both"===s&&(s=h.FILE_DIR_TYPE),t){if("string"!=typeof t)throw TypeError("readdirp: root argument must be a string. Usage: readdirp(root, options)");if(s&&!p.includes(s))throw Error(`readdirp: Invalid type passed. Use one of ${p.join(", ")}`)}else throw Error("readdirp: root argument is required. Usage: readdirp(root, options)");let i={...e,root:t};return s&&(i.type=s),new y(i)}(t,{type:T.ALL,alwaysStat:!0,lstat:!0,...e,depth:0});return this._streams.add(s),s.once("close",()=>{s=void 0}),s.once("end",()=>{s&&(this._streams.delete(s),s=void 0)}),s}}let td=t=>(function(t,e={}){let s=new tl(e);return s.add(t),s})(t,{ignoreInitial:!0,persistent:!0});class tc{constructor(t=td,e=150){this.watchFile=t,this.debounceMs=e,this.entries=new Map}subscribe(t,e,s){let i=`${t}\0${e}`,r=this.entries.get(i);if(!r){let t=this.watchFile(e);r={watcher:t,subscribers:new Set,revision:0,debounceTimer:null},t.on("add",()=>this.schedule(r)),t.on("change",()=>this.schedule(r)),this.entries.set(i,r)}r.subscribers.add(s);let a=!0;return()=>{if(!a)return;a=!1;let t=this.entries.get(i);t&&(t.subscribers.delete(s),0===t.subscribers.size&&this.releaseEntry(i,t))}}async dispose(){let t=[...this.entries.entries()];this.entries.clear(),await Promise.all(t.map(async([,t])=>{t.debounceTimer&&clearTimeout(t.debounceTimer),await t.watcher.close()}))}schedule(t){t.debounceTimer&&clearTimeout(t.debounceTimer),t.debounceTimer=setTimeout(()=>{t.debounceTimer=null,t.revision+=1;let e={type:"session_history_changed",revision:t.revision};for(let s of t.subscribers)try{s(e)}catch{}},this.debounceMs)}releaseEntry(t,e){this.entries.get(t)===e&&this.entries.delete(t),e.debounceTimer&&clearTimeout(e.debounceTimer),e.debounceTimer=null,e.watcher.close()}}let tp=globalThis;function tu(){return tp.__nativeSessionChangeMonitor||(tp.__nativeSessionChangeMonitor=new tc),tp.__nativeSessionChangeMonitor}}};var e=require("../../../../../webpack-runtime.js");e.C(t);var s=t=>e(e.s=t),i=e.X(0,[8375,6244,1322,2083],()=>s(7495));module.exports=i})();
@@ -1 +1 @@
1
- {"version":1,"files":["../../../../../../../node_modules/@anthropic-ai/claude-agent-sdk","../../../../../../../node_modules/better-sqlite3","../../../../../../../node_modules/next","../../../../../../../package.json","../../../../../../package.json","../../../../../chunks/322.js","../../../../../chunks/375.js","../../../../../chunks/988.js","../../../../../webpack-runtime.js"]}
1
+ {"version":1,"files":["../../../../../../../node_modules/@anthropic-ai/claude-agent-sdk","../../../../../../../node_modules/better-sqlite3","../../../../../../../node_modules/next","../../../../../../../package.json","../../../../../../package.json","../../../../../chunks/1322.js","../../../../../chunks/2083.js","../../../../../chunks/6244.js","../../../../../chunks/8375.js","../../../../../webpack-runtime.js"]}
@@ -1 +1 @@
1
- "use strict";(()=>{var e={};e.id=939,e.ids=[939],e.modules={7728:e=>{e.exports=require("@anthropic-ai/claude-agent-sdk")},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")},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")},1041:e=>{e.exports=require("node:url")},5881:e=>{e.exports=require("node:util")},8207:(e,r,t)=>{t.r(r),t.d(r,{originalPathname:()=>l,patchFetch:()=>f,requestAsyncStorage:()=>x,routeModule:()=>d,serverHooks:()=>q,staticGenerationAsyncStorage:()=>c});var s={};t.r(s),t.d(s,{POST:()=>u});var o=t(7786),i=t(5042),n=t(2184),a=t(1890),p=t(3988);async function u(e,{params:r}){try{let e=await (0,p.NL)().fork(r.id);return a.NextResponse.json(e,{status:201})}catch(e){return a.NextResponse.json({error:e instanceof Error?e.message:"Internal error"},{status:(0,p.WW)(e)})}}let d=new o.AppRouteRouteModule({definition:{kind:i.x.APP_ROUTE,page:"/api/sessions/[id]/fork/route",pathname:"/api/sessions/[id]/fork",filename:"route",bundlePath:"app/api/sessions/[id]/fork/route"},resolvedPagePath:"/Users/caoqu/team-agent/customer-agent/packages/server/app/api/sessions/[id]/fork/route.ts",nextConfigOutput:"standalone",userland:s}),{requestAsyncStorage:x,staticGenerationAsyncStorage:c,serverHooks:q}=d,l="/api/sessions/[id]/fork/route";function f(){return(0,n.patchFetch)({serverHooks:q,staticGenerationAsyncStorage:c})}}};var r=require("../../../../../webpack-runtime.js");r.C(e);var t=e=>r(r.s=e),s=r.X(0,[375,703,322,988],()=>t(8207));module.exports=s})();
1
+ "use strict";(()=>{var e={};e.id=6939,e.ids=[6939],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")},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")},1389:(e,r,t)=>{t.a(e,async(e,s)=>{try{t.r(r),t.d(r,{originalPathname:()=>l,patchFetch:()=>u,requestAsyncStorage:()=>c,routeModule:()=>d,serverHooks:()=>q,staticGenerationAsyncStorage:()=>x});var o=t(7786),i=t(5042),n=t(2184),a=t(145),p=e([a]);a=(p.then?(await p)():p)[0];let d=new o.AppRouteRouteModule({definition:{kind:i.x.APP_ROUTE,page:"/api/sessions/[id]/fork/route",pathname:"/api/sessions/[id]/fork",filename:"route",bundlePath:"app/api/sessions/[id]/fork/route"},resolvedPagePath:"/Users/caoqu/team-agent/customer-agent/packages/server/app/api/sessions/[id]/fork/route.ts",nextConfigOutput:"standalone",userland:a}),{requestAsyncStorage:c,staticGenerationAsyncStorage:x,serverHooks:q}=d,l="/api/sessions/[id]/fork/route";function u(){return(0,n.patchFetch)({serverHooks:q,staticGenerationAsyncStorage:x})}s()}catch(e){s(e)}})},145:(e,r,t)=>{t.a(e,async(e,s)=>{try{t.r(r),t.d(r,{POST:()=>a});var o=t(1890),i=t(2083),n=e([i]);async function a(e,{params:r}){try{let e=await (0,i.NL)().fork(r.id);return o.NextResponse.json(e,{status:201})}catch(e){return o.NextResponse.json({error:e instanceof Error?e.message:"Internal error"},{status:(0,i.WW)(e)})}}i=(n.then?(await n)():n)[0],s()}catch(e){s(e)}})}};var r=require("../../../../../webpack-runtime.js");r.C(e);var t=e=>r(r.s=e),s=r.X(0,[8375,6703,6244,1322,2083],()=>t(1389));module.exports=s})();
@@ -1 +1 @@
1
- {"version":1,"files":["../../../../../../../node_modules/@anthropic-ai/claude-agent-sdk","../../../../../../../node_modules/better-sqlite3","../../../../../../../node_modules/next","../../../../../../../package.json","../../../../../../package.json","../../../../../chunks/322.js","../../../../../chunks/375.js","../../../../../chunks/703.js","../../../../../chunks/988.js","../../../../../webpack-runtime.js"]}
1
+ {"version":1,"files":["../../../../../../../node_modules/@anthropic-ai/claude-agent-sdk","../../../../../../../node_modules/better-sqlite3","../../../../../../../node_modules/next","../../../../../../../package.json","../../../../../../package.json","../../../../../chunks/1322.js","../../../../../chunks/2083.js","../../../../../chunks/6244.js","../../../../../chunks/6703.js","../../../../../chunks/8375.js","../../../../../webpack-runtime.js"]}
@@ -1,3 +1,3 @@
1
- "use strict";(()=>{var e={};e.id=937,e.ids=[937],e.modules={7728:e=>{e.exports=require("@anthropic-ai/claude-agent-sdk")},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")},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")},1041:e=>{e.exports=require("node:url")},5881:e=>{e.exports=require("node:util")},8584:(e,t,s)=>{s.r(t),s.d(t,{originalPathname:()=>_,patchFetch:()=>R,requestAsyncStorage:()=>y,routeModule:()=>S,serverHooks:()=>E,staticGenerationAsyncStorage:()=>T});var r={};s.r(r),s.d(r,{DELETE:()=>f,GET:()=>g,PATCH:()=>w,POST:()=>m});var o=s(7786),i=s(5042),n=s(2184),a=s(1890),l=s(1322),u=s(7186);let d=globalThis,c=new Set;function h(){return d.__customerGoalCoordinator||(d.__customerGoalCoordinator=new l.Y_(u.f.getSessionStore(),async(e,t)=>{for(;u.f.hasActiveRun();)await new Promise(e=>setTimeout(e,250));c.add(e);try{await u.f.run(t,e)}finally{c.delete(e)}let s=await u.f.getSessionStore().get(e);return s?.status==="failed"?{outcome:"failed",reason:"Customer Agent goal run failed"}:{outcome:"completed"}},e=>{c.has(e)&&u.f.abort()})),d.__customerGoalCoordinator}var p=s(3988);async function g(e,{params:t}){try{let e=(0,p.V_)(t.id)?await (0,p.NL)().getGoals(t.id,"web"):await h().get(t.id);return a.NextResponse.json(e)}catch(e){return v(e)}}async function m(e,{params:t}){try{let s=await e.json();if("string"!=typeof s.objective||!s.objective.trim())return a.NextResponse.json({error:"objective is required"},{status:400});if((0,p.V_)(t.id)){let e=await (0,p.NL)().enqueueGoal(t.id,s.objective,"string"==typeof s.sourceMessageId?s.sourceMessageId:void 0,"web");return a.NextResponse.json(e)}let r=await h().enqueue(t.id,s.objective,"string"==typeof s.sourceMessageId?s.sourceMessageId:void 0);return a.NextResponse.json({state:r})}catch(e){return v(e)}}async function w(e,{params:t}){try{let s=await e.json();if(!Array.isArray(s.orderedIds)||!s.orderedIds.every(e=>"string"==typeof e))return a.NextResponse.json({error:"orderedIds must be a string array"},{status:400});let r=(0,p.V_)(t.id)?await (0,p.NL)().reorderGoals(t.id,s.orderedIds):await h().reorder(t.id,s.orderedIds);return a.NextResponse.json(r)}catch(e){return v(e)}}async function f(e,{params:t}){try{let s=new URL(e.url).searchParams.get("goalId");if(!s)return a.NextResponse.json({error:"goalId is required"},{status:400});let r=(0,p.V_)(t.id)?await (0,p.NL)().cancelGoal(t.id,s):await h().cancel(t.id,s);return a.NextResponse.json(r)}catch(e){return v(e)}}function v(e){return a.NextResponse.json({error:e instanceof Error?e.message:"Goal operation failed"},{status:(0,p.WW)(e)})}let S=new o.AppRouteRouteModule({definition:{kind:i.x.APP_ROUTE,page:"/api/sessions/[id]/goals/route",pathname:"/api/sessions/[id]/goals",filename:"route",bundlePath:"app/api/sessions/[id]/goals/route"},resolvedPagePath:"/Users/caoqu/team-agent/customer-agent/packages/server/app/api/sessions/[id]/goals/route.ts",nextConfigOutput:"standalone",userland:r}),{requestAsyncStorage:y,staticGenerationAsyncStorage:T,serverHooks:E}=S,_="/api/sessions/[id]/goals/route";function R(){return(0,n.patchFetch)({serverHooks:E,staticGenerationAsyncStorage:T})}},7186:(e,t,s)=>{s.d(t,{B:()=>n,f:()=>u});var r=s(1322),o=s(612),i=s(785);class n extends Error{constructor(e,t,s){super(e),this.code=t,this.status=s,this.name="ProjectWorkingDirectoryError"}}class a{constructor(){this.baseDir=(0,i.kO)(),this.workingDirectory=(0,i.sr)(),this.builder=null,this.sessionStore=new r.m6(this.baseDir),this.projectStore=new r.XW(this.baseDir),this.remoteToolStore=new r.rt((0,r.N8)(this.baseDir).db),this.defaultRemoteToolsProjectId=process.env.AGENT_PROJECT_ID??"default",this.activeRun=null,this.activeAgent=null,this.activeRunSessionId=null,this.subscribers=new Map,this.recentEvents=new Map,this.eventCounters=new Map,this.pendingQuestions=new Map,this.toolPermissionGate=new r.XP({resolveMode:async e=>{let t=await this.sessionStore.get(e);return(0,r.Ny)(t?.metadata.permissionMode)},requestApproval:async e=>{let t=await this.createQuestion({question:`Customer Agent 请求权限
1
+ "use strict";(()=>{var e={};e.id=5937,e.ids=[5937],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")},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")},2217:(e,t,s)=>{s.a(e,async(e,r)=>{try{s.r(t),s.d(t,{originalPathname:()=>g,patchFetch:()=>u,requestAsyncStorage:()=>c,routeModule:()=>d,serverHooks:()=>p,staticGenerationAsyncStorage:()=>h});var o=s(7786),i=s(5042),n=s(2184),a=s(4799),l=e([a]);a=(l.then?(await l)():l)[0];let d=new o.AppRouteRouteModule({definition:{kind:i.x.APP_ROUTE,page:"/api/sessions/[id]/goals/route",pathname:"/api/sessions/[id]/goals",filename:"route",bundlePath:"app/api/sessions/[id]/goals/route"},resolvedPagePath:"/Users/caoqu/team-agent/customer-agent/packages/server/app/api/sessions/[id]/goals/route.ts",nextConfigOutput:"standalone",userland:a}),{requestAsyncStorage:c,staticGenerationAsyncStorage:h,serverHooks:p}=d,g="/api/sessions/[id]/goals/route";function u(){return(0,n.patchFetch)({serverHooks:p,staticGenerationAsyncStorage:h})}r()}catch(e){r(e)}})},7186:(e,t,s)=>{s.d(t,{B:()=>a,f:()=>d});var r=s(1322),o=s(612),i=s(785);let n={jpeg:"jpg",png:"png",gif:"gif",webp:"webp"};class a extends Error{constructor(e,t,s){super(e),this.code=t,this.status=s,this.name="ProjectWorkingDirectoryError"}}class l{constructor(){this.baseDir=(0,i.kO)(),this.workingDirectory=(0,i.sr)(),this.builder=null,this.sessionStore=new r.m6(this.baseDir),this.projectStore=new r.XW(this.baseDir),this.remoteToolStore=new r.rt((0,r.N8)(this.baseDir).db),this.defaultRemoteToolsProjectId=process.env.AGENT_PROJECT_ID??"default",this.activeRun=null,this.activeAgent=null,this.activeRunSessionId=null,this.subscribers=new Map,this.recentEvents=new Map,this.eventCounters=new Map,this.pendingQuestions=new Map,this.toolPermissionGate=new r.XP({resolveMode:async e=>{let t=await this.sessionStore.get(e);return(0,r.Ny)(t?.metadata.permissionMode)},requestApproval:async e=>{let t=await this.createQuestion({question:`Customer Agent 请求权限
2
2
  ${e.summary}
3
- 原因:${e.reason}`,options:[...r.Sf],toolCallId:""},e.sessionId);return(0,r.wM)(t.answer,t.selectedIndices)}});let e=process.env.AGENT_API_KEY,t=process.env.AGENT_MODEL_PROVIDER||"openai",s=process.env.AGENT_MODEL_ID||"gpt-4o",o=process.env.AGENT_BASE_URL||void 0,n=new r.Y4().withSessionStore(this.sessionStore).withWorkingDirectory(this.workingDirectory).withToolPermissionGate(this.toolPermissionGate);n.withRemoteToolStore(this.remoteToolStore,this.defaultRemoteToolsProjectId),e&&n.withModel(t,{apiKey:e,modelId:s,baseUrl:o}),this.builder=n}getBuilder(){return this.builder||(this.builder=new r.Y4().withToolPermissionGate(this.toolPermissionGate)),this.builder}setBuilder(e){e.withRemoteToolStore(this.remoteToolStore,this.defaultRemoteToolsProjectId),e.withWorkingDirectory(this.workingDirectory),e.withToolPermissionGate(this.toolPermissionGate),this.builder=e}getSessionStore(){return this.sessionStore}isSessionRunning(e){return this.activeRunSessionId===e}hasActiveRun(){return null!==this.activeRunSessionId}getProjectStore(){return this.projectStore}async resolveProjectWorkingDirectory(e,t=!1){if(!e)return this.workingDirectory;let s=await this.projectStore.get(e);if(!s)throw new n("项目不存在","PROJECT_NOT_FOUND",404);if(!s.description?.trim()){if(!t)return this.workingDirectory;throw new n("该项目没有宿主机目录","PROJECT_PATH_REQUIRED",400)}try{return r.Tp.fromEnvironment(process.env.AGENT_WEB_ROOTS,(0,o.homedir)()).assertDirectory(s.description)}catch(e){throw new n(e instanceof Error?e.message:"项目目录不可用","PROJECT_PATH_INVALID",400)}}getModelConfig(){return{provider:process.env.AGENT_MODEL_PROVIDER||"openai",modelId:process.env.AGENT_MODEL_ID||"gpt-4o",baseUrl:process.env.AGENT_BASE_URL||""}}getWebAppBuildId(){return globalThis.__webAppBuildId??""}registerRemoteTools(e,t){return this.remoteToolStore.upsertTools(e,t)}getRemoteToolStore(){return this.remoteToolStore}async createSession(e,t=""){let s=new Date().toISOString();return t&&!await this.projectStore.get(t)&&await this.projectStore.create({id:t,name:t,description:"",created:s,updated:s}),this.sessionStore.create({id:crypto.randomUUID(),projectId:t,title:e,status:"idle",messages:[],events:[],created:s,updated:s,metadata:{permissionMode:"full-access"}})}async setSessionPermissionMode(e,t){if(!(0,r.ue)(t))throw Error(`Invalid permission mode: ${String(t)}`);let s=await this.sessionStore.get(e);if(!s)throw Error(`Session not found: ${e}`);return this.toolPermissionGate.clearSession(e),this.sessionStore.update(e,{metadata:{...s.metadata,permissionMode:t}})}getLatestEventId(e){return this.eventCounters.get(e)??0}subscribe(e,t,s=-1){for(let r of this.recentEvents.get(e)??[])if(!(r.id<=s))try{t(r.event,r.id)}catch{}let r=this.subscribers.get(e)??new Set;return r.add(t),this.subscribers.set(e,r),()=>{r.delete(t),0===r.size&&this.subscribers.delete(e)}}emit(e,t){let s=(this.eventCounters.get(e)??0)+1;this.eventCounters.set(e,s);let r=this.recentEvents.get(e);for(let o of(r&&(r.push({id:s,event:t}),r.length>500&&r.splice(0,r.length-500)),this.subscribers.get(e)??[]))try{o(t,s)}catch{}}publishExternal(e,t){this.emit(e,t)}resetExternalStream(e){this.eventCounters.set(e,0),this.recentEvents.set(e,[])}projectMessagesFromEvents(e){let t=[],s=null;for(let r of e){if("text_chunk"===r.type){s||(s={role:"assistant",content:""},t.push(s)),s.content+=r.text;continue}if("tool_call"===r.type){s&&!s.toolCalls?s.toolCalls=[r.toolCall]:t.push({role:"assistant",content:"",toolCalls:[r.toolCall]}),s=null;continue}if("tool_result"===r.type){t.push({role:"tool",content:r.result.content,toolCallId:r.result.toolCallId});continue}if("ask_user"===r.type){t.push({role:"assistant",content:""}),s=null;continue}"done"===r.type&&(s?s.content=r.finalText||s.content:r.finalText?.trim()&&t.push({role:"assistant",content:r.finalText}),s=null)}return t}async run(e,t,s){let o;let i=await this.sessionStore.get(t),n=await this.resolveProjectWorkingDirectory(i?.projectId);await this.sessionStore.addMessage(t,{role:"user",content:e}),this.eventCounters.set(t,0),this.recentEvents.set(t,[]);let a=i?.projectId||this.defaultRemoteToolsProjectId;try{o=await this.getBuilder().withWorkingDirectory(n).withRemoteToolStore(this.remoteToolStore,a).withTool(new r.as(async e=>this.createQuestion(e,t))).build()}catch(s){let e={type:"error",message:s instanceof Error?s.message:"Failed to build agent"};try{await this.sessionStore.addEvent(t,e)}catch{}throw this.emit(t,e),s}finally{this.builder?.withWorkingDirectory(this.workingDirectory).withRemoteToolStore(this.remoteToolStore,this.defaultRemoteToolsProjectId)}this.activeAgent=o,this.activeRunSessionId=t,this.activeRun=o.run(e,t,s);let l=!1;try{for await(let e of this.activeRun)await this.sessionStore.addEvent(t,e),"error"===e.type?(l=!0,await this.sessionStore.update(t,{status:"failed"})):"done"!==e.type||l||(e.finalText.trim()&&await this.sessionStore.addMessage(t,{role:"assistant",content:e.finalText}),await this.sessionStore.update(t,{status:"completed"})),this.emit(t,e)}catch(s){l=!0;let e={type:"error",message:s instanceof Error?s.message:"Agent run failed"};try{await this.sessionStore.addEvent(t,e),await this.sessionStore.update(t,{status:"failed"})}catch{}this.emit(t,e)}finally{this.activeRunSessionId===t&&(this.activeAgent=null,this.activeRunSessionId=null),this.activeRun=null}try{let e=await this.sessionStore.get(t),s=(e?.messages??[]).filter(e=>"user"===e.role),r=this.projectMessagesFromEvents(e?.events??[]);await this.sessionStore.replaceMessages(t,[...s,...r])}catch{}}createQuestion(e,t){let s=crypto.randomUUID();return this.emit(t,{type:"ask_user",questionId:s,question:e.question,options:e.options,multiSelect:e.multiSelect}),new Promise((e,t)=>{let r=setTimeout(()=>{this.pendingQuestions.has(s)&&(this.pendingQuestions.delete(s),t(Error("Question timed out after 5 minutes")))},3e5);this.pendingQuestions.set(s,{resolve:e,reject:t,timer:r})})}answerQuestion(e,t,s){let r=this.pendingQuestions.get(e);return!!r&&(clearTimeout(r.timer),this.pendingQuestions.delete(e),r.resolve({answer:t,selectedIndices:s}),!0)}async steer(e,t){return await this.sessionStore.addMessage(t,{role:"user",content:e,name:"__steer__"}),this.activeRunSessionId===t&&!!this.activeAgent&&(this.emit(t,{type:"thinking",message:`User added: ${e.slice(0,60)}`}),!0)}abort(){for(let[e,t]of(this.activeAgent?.abort(),this.pendingQuestions))clearTimeout(t.timer),t.reject(Error("Agent aborted")),this.pendingQuestions.delete(e)}}let l=globalThis,u=l.__agentHost??new a;l.__agentHost=u}};var t=require("../../../../../webpack-runtime.js");t.C(e);var s=e=>t(t.s=e),r=t.X(0,[375,703,322,988],()=>s(8584));module.exports=r})();
3
+ 原因:${e.reason}`,options:[...r.Sf],toolCallId:""},e.sessionId);return(0,r.wM)(t.answer,t.selectedIndices)}});let e=process.env.AGENT_API_KEY,t=process.env.AGENT_MODEL_PROVIDER||"openai",s=process.env.AGENT_MODEL_ID||"gpt-4o",o=process.env.AGENT_BASE_URL||void 0,n=new r.Y4().withSessionStore(this.sessionStore).withWorkingDirectory(this.workingDirectory).withToolPermissionGate(this.toolPermissionGate);n.withRemoteToolStore(this.remoteToolStore,this.defaultRemoteToolsProjectId),e&&n.withModel(t,{apiKey:e,modelId:s,baseUrl:o}),this.builder=n}getBuilder(){return this.builder||(this.builder=new r.Y4().withToolPermissionGate(this.toolPermissionGate)),this.builder}setBuilder(e){e.withRemoteToolStore(this.remoteToolStore,this.defaultRemoteToolsProjectId),e.withWorkingDirectory(this.workingDirectory),e.withToolPermissionGate(this.toolPermissionGate),this.builder=e}getSessionStore(){return this.sessionStore}isSessionRunning(e){return this.activeRunSessionId===e}hasActiveRun(){return null!==this.activeRunSessionId}getProjectStore(){return this.projectStore}async resolveProjectWorkingDirectory(e,t=!1){if(!e)return this.workingDirectory;let s=await this.projectStore.get(e);if(!s)throw new a("项目不存在","PROJECT_NOT_FOUND",404);if(!s.description?.trim()){if(!t)return this.workingDirectory;throw new a("该项目没有宿主机目录","PROJECT_PATH_REQUIRED",400)}try{return r.Tp.fromEnvironment(process.env.AGENT_WEB_ROOTS,(0,o.homedir)()).assertDirectory(s.description)}catch(e){throw new a(e instanceof Error?e.message:"项目目录不可用","PROJECT_PATH_INVALID",400)}}getModelConfig(){return{provider:process.env.AGENT_MODEL_PROVIDER||"openai",modelId:process.env.AGENT_MODEL_ID||"gpt-4o",baseUrl:process.env.AGENT_BASE_URL||""}}getWebAppBuildId(){return globalThis.__webAppBuildId??""}registerRemoteTools(e,t){return this.remoteToolStore.upsertTools(e,t)}getRemoteToolStore(){return this.remoteToolStore}async createSession(e,t=""){let s=new Date().toISOString();return t&&!await this.projectStore.get(t)&&await this.projectStore.create({id:t,name:t,description:"",created:s,updated:s}),this.sessionStore.create({id:crypto.randomUUID(),projectId:t,title:e,status:"idle",messages:[],events:[],created:s,updated:s,metadata:(0,r.Tu)(e,{permissionMode:"full-access"})})}async setSessionPermissionMode(e,t){if(!(0,r.ue)(t))throw Error(`Invalid permission mode: ${String(t)}`);let s=await this.sessionStore.get(e);if(!s)throw Error(`Session not found: ${e}`);return this.toolPermissionGate.clearSession(e),this.sessionStore.update(e,{metadata:{...s.metadata,permissionMode:t}})}getLatestEventId(e){return this.eventCounters.get(e)??0}subscribe(e,t,s=-1){for(let r of this.recentEvents.get(e)??[])if(!(r.id<=s))try{t(r.event,r.id)}catch{}let r=this.subscribers.get(e)??new Set;return r.add(t),this.subscribers.set(e,r),()=>{r.delete(t),0===r.size&&this.subscribers.delete(e)}}emit(e,t){let s=(this.eventCounters.get(e)??0)+1;this.eventCounters.set(e,s);let r=this.recentEvents.get(e);for(let o of(r&&(r.push({id:s,event:t}),r.length>500&&r.splice(0,r.length-500)),this.subscribers.get(e)??[]))try{o(t,s)}catch{}}publishExternal(e,t){this.emit(e,t)}resetExternalStream(e){this.eventCounters.set(e,0),this.recentEvents.set(e,[])}projectMessagesFromEvents(e){let t=[],s=null;for(let r of e){if("text_chunk"===r.type){s||(s={role:"assistant",content:""},t.push(s)),s.content+=r.text;continue}if("tool_call"===r.type){s&&!s.toolCalls?s.toolCalls=[r.toolCall]:t.push({role:"assistant",content:"",toolCalls:[r.toolCall]}),s=null;continue}if("tool_result"===r.type){t.push({role:"tool",content:r.result.content,toolCallId:r.result.toolCallId});continue}if("ask_user"===r.type){t.push({role:"assistant",content:""}),s=null;continue}"done"===r.type&&(s?s.content=r.finalText||s.content:r.finalText?.trim()&&t.push({role:"assistant",content:r.finalText}),s=null)}return t}async run(e,t,s){let o;let i=await this.sessionStore.get(t),a=await this.resolveProjectWorkingDirectory(i?.projectId);await this.sessionStore.consumePendingAutoTitle(t,e);let l=function(e){let t=[];for(let[s,r]of(e??[]).entries()){let e=/^data:image\/(jpeg|png|gif|webp);base64,/i.exec(r);e&&t.push({type:"image",name:`image-${s+1}.${n[e[1].toLowerCase()]}`,dataUrl:r})}return t.length>0?{attachments:t}:void 0}(s);await this.sessionStore.addMessage(t,{role:"user",content:e,...l?{presentation:l}:{}}),this.eventCounters.set(t,0),this.recentEvents.set(t,[]);let u=i?.projectId||this.defaultRemoteToolsProjectId;try{o=await this.getBuilder().withWorkingDirectory(a).withRemoteToolStore(this.remoteToolStore,u).withTool(new r.as(async e=>this.createQuestion(e,t))).build()}catch(s){let e={type:"error",message:s instanceof Error?s.message:"Failed to build agent"};try{await this.sessionStore.addEvent(t,e)}catch{}throw this.emit(t,e),s}finally{this.builder?.withWorkingDirectory(this.workingDirectory).withRemoteToolStore(this.remoteToolStore,this.defaultRemoteToolsProjectId)}this.activeAgent=o,this.activeRunSessionId=t,this.activeRun=o.run(e,t,s);let d=!1;try{for await(let e of this.activeRun)await this.sessionStore.addEvent(t,e),"error"===e.type?(d=!0,await this.sessionStore.update(t,{status:"failed"})):"done"!==e.type||d||(e.finalText.trim()&&await this.sessionStore.addMessage(t,{role:"assistant",content:e.finalText}),await this.sessionStore.update(t,{status:"completed"})),this.emit(t,e)}catch(s){d=!0;let e={type:"error",message:s instanceof Error?s.message:"Agent run failed"};try{await this.sessionStore.addEvent(t,e),await this.sessionStore.update(t,{status:"failed"})}catch{}this.emit(t,e)}finally{this.activeRunSessionId===t&&(this.activeAgent=null,this.activeRunSessionId=null),this.activeRun=null}try{let e=await this.sessionStore.get(t),s=(e?.messages??[]).filter(e=>"user"===e.role),r=this.projectMessagesFromEvents(e?.events??[]);await this.sessionStore.replaceMessages(t,[...s,...r])}catch{}}createQuestion(e,t){let s=crypto.randomUUID();return this.emit(t,{type:"ask_user",questionId:s,question:e.question,options:e.options,multiSelect:e.multiSelect}),new Promise((e,t)=>{let r=setTimeout(()=>{this.pendingQuestions.has(s)&&(this.pendingQuestions.delete(s),t(Error("Question timed out after 5 minutes")))},3e5);this.pendingQuestions.set(s,{resolve:e,reject:t,timer:r})})}answerQuestion(e,t,s){let r=this.pendingQuestions.get(e);return!!r&&(clearTimeout(r.timer),this.pendingQuestions.delete(e),r.resolve({answer:t,selectedIndices:s}),!0)}async steer(e,t){return await this.sessionStore.addMessage(t,{role:"user",content:e,name:"__steer__"}),this.activeRunSessionId===t&&!!this.activeAgent&&(this.emit(t,{type:"thinking",message:`User added: ${e.slice(0,60)}`}),!0)}abort(){for(let[e,t]of(this.activeAgent?.abort(),this.pendingQuestions))clearTimeout(t.timer),t.reject(Error("Agent aborted")),this.pendingQuestions.delete(e)}}let u=globalThis,d=u.__agentHost??new l;u.__agentHost=d},4799:(e,t,s)=>{s.a(e,async(e,r)=>{try{s.r(t),s.d(t,{DELETE:()=>c,GET:()=>l,PATCH:()=>d,POST:()=>u});var o=s(1890),i=s(6435),n=s(2083),a=e([n]);async function l(e,{params:t}){try{let e=(0,n.V_)(t.id)?await (0,n.NL)().getGoals(t.id,"web"):await (0,i.f)().get(t.id);return o.NextResponse.json(e)}catch(e){return h(e)}}async function u(e,{params:t}){try{let s=await e.json();if("string"!=typeof s.objective||!s.objective.trim())return o.NextResponse.json({error:"objective is required"},{status:400});if((0,n.V_)(t.id)){let e=await (0,n.NL)().enqueueGoal(t.id,s.objective,"string"==typeof s.sourceMessageId?s.sourceMessageId:void 0,"web");return o.NextResponse.json(e)}let r=await (0,i.f)().enqueue(t.id,s.objective,"string"==typeof s.sourceMessageId?s.sourceMessageId:void 0);return o.NextResponse.json({state:r})}catch(e){return h(e)}}async function d(e,{params:t}){try{let s=await e.json();if(!Array.isArray(s.orderedIds)||!s.orderedIds.every(e=>"string"==typeof e))return o.NextResponse.json({error:"orderedIds must be a string array"},{status:400});let r=(0,n.V_)(t.id)?await (0,n.NL)().reorderGoals(t.id,s.orderedIds):await (0,i.f)().reorder(t.id,s.orderedIds);return o.NextResponse.json(r)}catch(e){return h(e)}}async function c(e,{params:t}){try{let s=new URL(e.url).searchParams.get("goalId");if(!s)return o.NextResponse.json({error:"goalId is required"},{status:400});let r=(0,n.V_)(t.id)?await (0,n.NL)().cancelGoal(t.id,s):await (0,i.f)().cancel(t.id,s);return o.NextResponse.json(r)}catch(e){return h(e)}}function h(e){return o.NextResponse.json({error:e instanceof Error?e.message:"Goal operation failed"},{status:(0,n.WW)(e)})}n=(a.then?(await a)():a)[0],r()}catch(e){r(e)}})},6435:(e,t,s)=>{s.d(t,{f:()=>a});var r=s(1322),o=s(7186);let i=globalThis,n=new Set;function a(){return i.__customerGoalCoordinator||(i.__customerGoalCoordinator=new r.Y_(o.f.getSessionStore(),async(e,t)=>{for(;o.f.hasActiveRun();)await new Promise(e=>setTimeout(e,250));n.add(e);try{await o.f.run(t,e)}finally{n.delete(e)}let s=await o.f.getSessionStore().get(e);return s?.status==="failed"?{outcome:"failed",reason:"Customer Agent goal run failed"}:{outcome:"completed"}},e=>{n.has(e)&&o.f.abort()})),i.__customerGoalCoordinator}}};var t=require("../../../../../webpack-runtime.js");t.C(e);var s=e=>t(t.s=e),r=t.X(0,[8375,6703,6244,1322,2083],()=>s(2217));module.exports=r})();
@@ -1 +1 @@
1
- {"version":1,"files":["../../../../../../../node_modules/@anthropic-ai/claude-agent-sdk","../../../../../../../node_modules/better-sqlite3","../../../../../../../node_modules/next","../../../../../../../package.json","../../../../../../package.json","../../../../../chunks/322.js","../../../../../chunks/375.js","../../../../../chunks/703.js","../../../../../chunks/988.js","../../../../../webpack-runtime.js"]}
1
+ {"version":1,"files":["../../../../../../../node_modules/@anthropic-ai/claude-agent-sdk","../../../../../../../node_modules/better-sqlite3","../../../../../../../node_modules/next","../../../../../../../package.json","../../../../../../package.json","../../../../../chunks/1322.js","../../../../../chunks/2083.js","../../../../../chunks/6244.js","../../../../../chunks/6703.js","../../../../../chunks/8375.js","../../../../../webpack-runtime.js"]}
@@ -1 +1 @@
1
- "use strict";(()=>{var e={};e.id=719,e.ids=[719],e.modules={7728:e=>{e.exports=require("@anthropic-ai/claude-agent-sdk")},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")},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")},1041:e=>{e.exports=require("node:url")},5881:e=>{e.exports=require("node:util")},6466:(e,r,s)=>{s.r(r),s.d(r,{originalPathname:()=>h,patchFetch:()=>l,requestAsyncStorage:()=>x,routeModule:()=>u,serverHooks:()=>f,staticGenerationAsyncStorage:()=>c});var t={};s.r(t),s.d(t,{POST:()=>d});var o=s(7786),n=s(5042),i=s(2184),a=s(1890),p=s(3988);async function d(e,{params:r}){if(!(0,p.V_)(r.id))return a.NextResponse.json({error:"Only native sessions can be handed off"},{status:405});try{let e=await (0,p.NL)().handoff(r.id,"desktop");return a.NextResponse.json(e)}catch(e){return a.NextResponse.json({error:e instanceof Error?e.message:"Native handoff failed"},{status:(0,p.WW)(e)})}}let u=new o.AppRouteRouteModule({definition:{kind:n.x.APP_ROUTE,page:"/api/sessions/[id]/handoff/route",pathname:"/api/sessions/[id]/handoff",filename:"route",bundlePath:"app/api/sessions/[id]/handoff/route"},resolvedPagePath:"/Users/caoqu/team-agent/customer-agent/packages/server/app/api/sessions/[id]/handoff/route.ts",nextConfigOutput:"standalone",userland:t}),{requestAsyncStorage:x,staticGenerationAsyncStorage:c,serverHooks:f}=u,h="/api/sessions/[id]/handoff/route";function l(){return(0,i.patchFetch)({serverHooks:f,staticGenerationAsyncStorage:c})}}};var r=require("../../../../../webpack-runtime.js");r.C(e);var s=e=>r(r.s=e),t=r.X(0,[375,703,322,988],()=>s(6466));module.exports=t})();
1
+ "use strict";(()=>{var e={};e.id=7719,e.ids=[7719],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")},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")},351:(e,r,t)=>{t.a(e,async(e,s)=>{try{t.r(r),t.d(r,{originalPathname:()=>f,patchFetch:()=>d,requestAsyncStorage:()=>c,routeModule:()=>u,serverHooks:()=>h,staticGenerationAsyncStorage:()=>x});var o=t(7786),n=t(5042),i=t(2184),a=t(6461),p=e([a]);a=(p.then?(await p)():p)[0];let u=new o.AppRouteRouteModule({definition:{kind:n.x.APP_ROUTE,page:"/api/sessions/[id]/handoff/route",pathname:"/api/sessions/[id]/handoff",filename:"route",bundlePath:"app/api/sessions/[id]/handoff/route"},resolvedPagePath:"/Users/caoqu/team-agent/customer-agent/packages/server/app/api/sessions/[id]/handoff/route.ts",nextConfigOutput:"standalone",userland:a}),{requestAsyncStorage:c,staticGenerationAsyncStorage:x,serverHooks:h}=u,f="/api/sessions/[id]/handoff/route";function d(){return(0,i.patchFetch)({serverHooks:h,staticGenerationAsyncStorage:x})}s()}catch(e){s(e)}})},6461:(e,r,t)=>{t.a(e,async(e,s)=>{try{t.r(r),t.d(r,{POST:()=>a});var o=t(1890),n=t(2083),i=e([n]);async function a(e,{params:r}){if(!(0,n.V_)(r.id))return o.NextResponse.json({error:"Only native sessions can be handed off"},{status:405});try{let e=await (0,n.NL)().handoff(r.id,"desktop");return o.NextResponse.json(e)}catch(e){return o.NextResponse.json({error:e instanceof Error?e.message:"Native handoff failed"},{status:(0,n.WW)(e)})}}n=(i.then?(await i)():i)[0],s()}catch(e){s(e)}})}};var r=require("../../../../../webpack-runtime.js");r.C(e);var t=e=>r(r.s=e),s=r.X(0,[8375,6703,6244,1322,2083],()=>t(351));module.exports=s})();
@@ -1 +1 @@
1
- {"version":1,"files":["../../../../../../../node_modules/@anthropic-ai/claude-agent-sdk","../../../../../../../node_modules/better-sqlite3","../../../../../../../node_modules/next","../../../../../../../package.json","../../../../../../package.json","../../../../../chunks/322.js","../../../../../chunks/375.js","../../../../../chunks/703.js","../../../../../chunks/988.js","../../../../../webpack-runtime.js"]}
1
+ {"version":1,"files":["../../../../../../../node_modules/@anthropic-ai/claude-agent-sdk","../../../../../../../node_modules/better-sqlite3","../../../../../../../node_modules/next","../../../../../../../package.json","../../../../../../package.json","../../../../../chunks/1322.js","../../../../../chunks/2083.js","../../../../../chunks/6244.js","../../../../../chunks/6703.js","../../../../../chunks/8375.js","../../../../../webpack-runtime.js"]}
@@ -1,3 +1,3 @@
1
- "use strict";(()=>{var e={};e.id=241,e.ids=[241],e.modules={7728:e=>{e.exports=require("@anthropic-ai/claude-agent-sdk")},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")},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")},1041:e=>{e.exports=require("node:url")},5881:e=>{e.exports=require("node:util")},9564:(e,t,s)=>{s.r(t),s.d(t,{originalPathname:()=>S,patchFetch:()=>v,requestAsyncStorage:()=>g,routeModule:()=>m,serverHooks:()=>w,staticGenerationAsyncStorage:()=>f});var o={};s.r(o),s.d(o,{DELETE:()=>p,GET:()=>c,PATCH:()=>h});var r=s(7786),i=s(5042),n=s(2184),a=s(1890),l=s(1322),u=s(7186),d=s(3988);async function c(e,{params:t}){let s=new URL(e.url),o=s.searchParams.get("before"),r=s.searchParams.get("limit"),i=null!==o||null!==r?{before:o||void 0,limit:function(e){if(null===e)return;let t=Number(e);return Number.isFinite(t)?t:void 0}(r)}:void 0;if((0,d.V_)(t.id))try{let e=await (0,d.NL)().get(t.id,i);return a.NextResponse.json(e)}catch(e){return a.NextResponse.json({error:e instanceof Error?e.message:"Internal error"},{status:(0,d.WW)(e)})}let n=await u.f.getSessionStore().get(t.id);if(!n)return a.NextResponse.json({error:"Session not found"},{status:404});let c=!n.messages?.length&&Array.isArray(n.events)&&n.events.length>0?function(e){let t=[],s=null;for(let o of e){let e=o.type;if("text_chunk"===e){s||(s={id:crypto.randomUUID(),role:"assistant",content:"",isStreaming:!0,timestamp:Date.now()},t.push(s)),s.content=`${s.content??""}${o.text??""}`;continue}if("tool_call"===e&&o.toolCall){s={id:crypto.randomUUID(),role:"assistant",content:s?.content??"",toolCalls:[o.toolCall],isStreaming:!1,timestamp:Date.now()},t.push(s),s=null;continue}if("tool_result"===e&&o.result){let e=o.result;t.push({id:crypto.randomUUID(),role:"tool",content:e.content??"",toolCallId:e.toolCallId,timestamp:Date.now()});continue}if("ask_user"===e){t.push({id:crypto.randomUUID(),role:"assistant",content:"",askUser:{questionId:o.questionId,question:o.question??"",options:o.options,multiSelect:o.multiSelect},timestamp:Date.now()});continue}"done"===e&&"string"==typeof o.finalText&&(s?(s.content=o.finalText,s.isStreaming=!1):o.finalText.trim()&&t.push({id:crypto.randomUUID(),role:"assistant",content:o.finalText,timestamp:Date.now()}),s=null)}return t}(n.events):n.messages,h=i?{...n,permissionMode:(0,l.Ny)(n.metadata.permissionMode),...(0,l.MO)(c??[],n.events??[],i)}:{...n,messages:c,permissionMode:(0,l.Ny)(n.metadata.permissionMode)};return a.NextResponse.json(h)}async function h(e,{params:t}){let s=await e.json();if(!(0,l.ue)(s.permissionMode))return a.NextResponse.json({error:"Invalid permission mode"},{status:400});if((0,d.V_)(t.id))try{let e=await (0,d.NL)().setPermissionMode(t.id,s.permissionMode);return a.NextResponse.json(e)}catch(e){return a.NextResponse.json({error:e instanceof Error?e.message:"Unable to update permission mode"},{status:(0,d.WW)(e)})}try{let e=await u.f.setSessionPermissionMode(t.id,s.permissionMode);return a.NextResponse.json({...e,permissionMode:(0,l.Ny)(e.metadata.permissionMode)})}catch(s){let e=s instanceof Error?s.message:"Unable to update permission mode",t=e.startsWith("Session not found")?404:500;return a.NextResponse.json({error:e},{status:t})}}async function p(e,{params:t}){return(0,d.V_)(t.id)?a.NextResponse.json({error:"External runtime sessions cannot be deleted"},{status:405}):(await u.f.getSessionStore().delete(t.id),a.NextResponse.json({status:"deleted"}))}let m=new r.AppRouteRouteModule({definition:{kind:i.x.APP_ROUTE,page:"/api/sessions/[id]/route",pathname:"/api/sessions/[id]",filename:"route",bundlePath:"app/api/sessions/[id]/route"},resolvedPagePath:"/Users/caoqu/team-agent/customer-agent/packages/server/app/api/sessions/[id]/route.ts",nextConfigOutput:"standalone",userland:o}),{requestAsyncStorage:g,staticGenerationAsyncStorage:f,serverHooks:w}=m,S="/api/sessions/[id]/route";function v(){return(0,n.patchFetch)({serverHooks:w,staticGenerationAsyncStorage:f})}},7186:(e,t,s)=>{s.d(t,{B:()=>n,f:()=>u});var o=s(1322),r=s(612),i=s(785);class n extends Error{constructor(e,t,s){super(e),this.code=t,this.status=s,this.name="ProjectWorkingDirectoryError"}}class a{constructor(){this.baseDir=(0,i.kO)(),this.workingDirectory=(0,i.sr)(),this.builder=null,this.sessionStore=new o.m6(this.baseDir),this.projectStore=new o.XW(this.baseDir),this.remoteToolStore=new o.rt((0,o.N8)(this.baseDir).db),this.defaultRemoteToolsProjectId=process.env.AGENT_PROJECT_ID??"default",this.activeRun=null,this.activeAgent=null,this.activeRunSessionId=null,this.subscribers=new Map,this.recentEvents=new Map,this.eventCounters=new Map,this.pendingQuestions=new Map,this.toolPermissionGate=new o.XP({resolveMode:async e=>{let t=await this.sessionStore.get(e);return(0,o.Ny)(t?.metadata.permissionMode)},requestApproval:async e=>{let t=await this.createQuestion({question:`Customer Agent 请求权限
1
+ "use strict";(()=>{var e={};e.id=5241,e.ids=[5241],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")},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")},3205:(e,t,s)=>{s.a(e,async(e,o)=>{try{s.r(t),s.d(t,{originalPathname:()=>m,patchFetch:()=>u,requestAsyncStorage:()=>c,routeModule:()=>d,serverHooks:()=>h,staticGenerationAsyncStorage:()=>p});var r=s(7786),i=s(5042),n=s(2184),a=s(3082),l=e([a]);a=(l.then?(await l)():l)[0];let d=new r.AppRouteRouteModule({definition:{kind:i.x.APP_ROUTE,page:"/api/sessions/[id]/route",pathname:"/api/sessions/[id]",filename:"route",bundlePath:"app/api/sessions/[id]/route"},resolvedPagePath:"/Users/caoqu/team-agent/customer-agent/packages/server/app/api/sessions/[id]/route.ts",nextConfigOutput:"standalone",userland:a}),{requestAsyncStorage:c,staticGenerationAsyncStorage:p,serverHooks:h}=d,m="/api/sessions/[id]/route";function u(){return(0,n.patchFetch)({serverHooks:h,staticGenerationAsyncStorage:p})}o()}catch(e){o(e)}})},7186:(e,t,s)=>{s.d(t,{B:()=>a,f:()=>d});var o=s(1322),r=s(612),i=s(785);let n={jpeg:"jpg",png:"png",gif:"gif",webp:"webp"};class a extends Error{constructor(e,t,s){super(e),this.code=t,this.status=s,this.name="ProjectWorkingDirectoryError"}}class l{constructor(){this.baseDir=(0,i.kO)(),this.workingDirectory=(0,i.sr)(),this.builder=null,this.sessionStore=new o.m6(this.baseDir),this.projectStore=new o.XW(this.baseDir),this.remoteToolStore=new o.rt((0,o.N8)(this.baseDir).db),this.defaultRemoteToolsProjectId=process.env.AGENT_PROJECT_ID??"default",this.activeRun=null,this.activeAgent=null,this.activeRunSessionId=null,this.subscribers=new Map,this.recentEvents=new Map,this.eventCounters=new Map,this.pendingQuestions=new Map,this.toolPermissionGate=new o.XP({resolveMode:async e=>{let t=await this.sessionStore.get(e);return(0,o.Ny)(t?.metadata.permissionMode)},requestApproval:async e=>{let t=await this.createQuestion({question:`Customer Agent 请求权限
2
2
  ${e.summary}
3
- 原因:${e.reason}`,options:[...o.Sf],toolCallId:""},e.sessionId);return(0,o.wM)(t.answer,t.selectedIndices)}});let e=process.env.AGENT_API_KEY,t=process.env.AGENT_MODEL_PROVIDER||"openai",s=process.env.AGENT_MODEL_ID||"gpt-4o",r=process.env.AGENT_BASE_URL||void 0,n=new o.Y4().withSessionStore(this.sessionStore).withWorkingDirectory(this.workingDirectory).withToolPermissionGate(this.toolPermissionGate);n.withRemoteToolStore(this.remoteToolStore,this.defaultRemoteToolsProjectId),e&&n.withModel(t,{apiKey:e,modelId:s,baseUrl:r}),this.builder=n}getBuilder(){return this.builder||(this.builder=new o.Y4().withToolPermissionGate(this.toolPermissionGate)),this.builder}setBuilder(e){e.withRemoteToolStore(this.remoteToolStore,this.defaultRemoteToolsProjectId),e.withWorkingDirectory(this.workingDirectory),e.withToolPermissionGate(this.toolPermissionGate),this.builder=e}getSessionStore(){return this.sessionStore}isSessionRunning(e){return this.activeRunSessionId===e}hasActiveRun(){return null!==this.activeRunSessionId}getProjectStore(){return this.projectStore}async resolveProjectWorkingDirectory(e,t=!1){if(!e)return this.workingDirectory;let s=await this.projectStore.get(e);if(!s)throw new n("项目不存在","PROJECT_NOT_FOUND",404);if(!s.description?.trim()){if(!t)return this.workingDirectory;throw new n("该项目没有宿主机目录","PROJECT_PATH_REQUIRED",400)}try{return o.Tp.fromEnvironment(process.env.AGENT_WEB_ROOTS,(0,r.homedir)()).assertDirectory(s.description)}catch(e){throw new n(e instanceof Error?e.message:"项目目录不可用","PROJECT_PATH_INVALID",400)}}getModelConfig(){return{provider:process.env.AGENT_MODEL_PROVIDER||"openai",modelId:process.env.AGENT_MODEL_ID||"gpt-4o",baseUrl:process.env.AGENT_BASE_URL||""}}getWebAppBuildId(){return globalThis.__webAppBuildId??""}registerRemoteTools(e,t){return this.remoteToolStore.upsertTools(e,t)}getRemoteToolStore(){return this.remoteToolStore}async createSession(e,t=""){let s=new Date().toISOString();return t&&!await this.projectStore.get(t)&&await this.projectStore.create({id:t,name:t,description:"",created:s,updated:s}),this.sessionStore.create({id:crypto.randomUUID(),projectId:t,title:e,status:"idle",messages:[],events:[],created:s,updated:s,metadata:{permissionMode:"full-access"}})}async setSessionPermissionMode(e,t){if(!(0,o.ue)(t))throw Error(`Invalid permission mode: ${String(t)}`);let s=await this.sessionStore.get(e);if(!s)throw Error(`Session not found: ${e}`);return this.toolPermissionGate.clearSession(e),this.sessionStore.update(e,{metadata:{...s.metadata,permissionMode:t}})}getLatestEventId(e){return this.eventCounters.get(e)??0}subscribe(e,t,s=-1){for(let o of this.recentEvents.get(e)??[])if(!(o.id<=s))try{t(o.event,o.id)}catch{}let o=this.subscribers.get(e)??new Set;return o.add(t),this.subscribers.set(e,o),()=>{o.delete(t),0===o.size&&this.subscribers.delete(e)}}emit(e,t){let s=(this.eventCounters.get(e)??0)+1;this.eventCounters.set(e,s);let o=this.recentEvents.get(e);for(let r of(o&&(o.push({id:s,event:t}),o.length>500&&o.splice(0,o.length-500)),this.subscribers.get(e)??[]))try{r(t,s)}catch{}}publishExternal(e,t){this.emit(e,t)}resetExternalStream(e){this.eventCounters.set(e,0),this.recentEvents.set(e,[])}projectMessagesFromEvents(e){let t=[],s=null;for(let o of e){if("text_chunk"===o.type){s||(s={role:"assistant",content:""},t.push(s)),s.content+=o.text;continue}if("tool_call"===o.type){s&&!s.toolCalls?s.toolCalls=[o.toolCall]:t.push({role:"assistant",content:"",toolCalls:[o.toolCall]}),s=null;continue}if("tool_result"===o.type){t.push({role:"tool",content:o.result.content,toolCallId:o.result.toolCallId});continue}if("ask_user"===o.type){t.push({role:"assistant",content:""}),s=null;continue}"done"===o.type&&(s?s.content=o.finalText||s.content:o.finalText?.trim()&&t.push({role:"assistant",content:o.finalText}),s=null)}return t}async run(e,t,s){let r;let i=await this.sessionStore.get(t),n=await this.resolveProjectWorkingDirectory(i?.projectId);await this.sessionStore.addMessage(t,{role:"user",content:e}),this.eventCounters.set(t,0),this.recentEvents.set(t,[]);let a=i?.projectId||this.defaultRemoteToolsProjectId;try{r=await this.getBuilder().withWorkingDirectory(n).withRemoteToolStore(this.remoteToolStore,a).withTool(new o.as(async e=>this.createQuestion(e,t))).build()}catch(s){let e={type:"error",message:s instanceof Error?s.message:"Failed to build agent"};try{await this.sessionStore.addEvent(t,e)}catch{}throw this.emit(t,e),s}finally{this.builder?.withWorkingDirectory(this.workingDirectory).withRemoteToolStore(this.remoteToolStore,this.defaultRemoteToolsProjectId)}this.activeAgent=r,this.activeRunSessionId=t,this.activeRun=r.run(e,t,s);let l=!1;try{for await(let e of this.activeRun)await this.sessionStore.addEvent(t,e),"error"===e.type?(l=!0,await this.sessionStore.update(t,{status:"failed"})):"done"!==e.type||l||(e.finalText.trim()&&await this.sessionStore.addMessage(t,{role:"assistant",content:e.finalText}),await this.sessionStore.update(t,{status:"completed"})),this.emit(t,e)}catch(s){l=!0;let e={type:"error",message:s instanceof Error?s.message:"Agent run failed"};try{await this.sessionStore.addEvent(t,e),await this.sessionStore.update(t,{status:"failed"})}catch{}this.emit(t,e)}finally{this.activeRunSessionId===t&&(this.activeAgent=null,this.activeRunSessionId=null),this.activeRun=null}try{let e=await this.sessionStore.get(t),s=(e?.messages??[]).filter(e=>"user"===e.role),o=this.projectMessagesFromEvents(e?.events??[]);await this.sessionStore.replaceMessages(t,[...s,...o])}catch{}}createQuestion(e,t){let s=crypto.randomUUID();return this.emit(t,{type:"ask_user",questionId:s,question:e.question,options:e.options,multiSelect:e.multiSelect}),new Promise((e,t)=>{let o=setTimeout(()=>{this.pendingQuestions.has(s)&&(this.pendingQuestions.delete(s),t(Error("Question timed out after 5 minutes")))},3e5);this.pendingQuestions.set(s,{resolve:e,reject:t,timer:o})})}answerQuestion(e,t,s){let o=this.pendingQuestions.get(e);return!!o&&(clearTimeout(o.timer),this.pendingQuestions.delete(e),o.resolve({answer:t,selectedIndices:s}),!0)}async steer(e,t){return await this.sessionStore.addMessage(t,{role:"user",content:e,name:"__steer__"}),this.activeRunSessionId===t&&!!this.activeAgent&&(this.emit(t,{type:"thinking",message:`User added: ${e.slice(0,60)}`}),!0)}abort(){for(let[e,t]of(this.activeAgent?.abort(),this.pendingQuestions))clearTimeout(t.timer),t.reject(Error("Agent aborted")),this.pendingQuestions.delete(e)}}let l=globalThis,u=l.__agentHost??new a;l.__agentHost=u}};var t=require("../../../../webpack-runtime.js");t.C(e);var s=e=>t(t.s=e),o=t.X(0,[375,703,322,988],()=>s(9564));module.exports=o})();
3
+ 原因:${e.reason}`,options:[...o.Sf],toolCallId:""},e.sessionId);return(0,o.wM)(t.answer,t.selectedIndices)}});let e=process.env.AGENT_API_KEY,t=process.env.AGENT_MODEL_PROVIDER||"openai",s=process.env.AGENT_MODEL_ID||"gpt-4o",r=process.env.AGENT_BASE_URL||void 0,n=new o.Y4().withSessionStore(this.sessionStore).withWorkingDirectory(this.workingDirectory).withToolPermissionGate(this.toolPermissionGate);n.withRemoteToolStore(this.remoteToolStore,this.defaultRemoteToolsProjectId),e&&n.withModel(t,{apiKey:e,modelId:s,baseUrl:r}),this.builder=n}getBuilder(){return this.builder||(this.builder=new o.Y4().withToolPermissionGate(this.toolPermissionGate)),this.builder}setBuilder(e){e.withRemoteToolStore(this.remoteToolStore,this.defaultRemoteToolsProjectId),e.withWorkingDirectory(this.workingDirectory),e.withToolPermissionGate(this.toolPermissionGate),this.builder=e}getSessionStore(){return this.sessionStore}isSessionRunning(e){return this.activeRunSessionId===e}hasActiveRun(){return null!==this.activeRunSessionId}getProjectStore(){return this.projectStore}async resolveProjectWorkingDirectory(e,t=!1){if(!e)return this.workingDirectory;let s=await this.projectStore.get(e);if(!s)throw new a("项目不存在","PROJECT_NOT_FOUND",404);if(!s.description?.trim()){if(!t)return this.workingDirectory;throw new a("该项目没有宿主机目录","PROJECT_PATH_REQUIRED",400)}try{return o.Tp.fromEnvironment(process.env.AGENT_WEB_ROOTS,(0,r.homedir)()).assertDirectory(s.description)}catch(e){throw new a(e instanceof Error?e.message:"项目目录不可用","PROJECT_PATH_INVALID",400)}}getModelConfig(){return{provider:process.env.AGENT_MODEL_PROVIDER||"openai",modelId:process.env.AGENT_MODEL_ID||"gpt-4o",baseUrl:process.env.AGENT_BASE_URL||""}}getWebAppBuildId(){return globalThis.__webAppBuildId??""}registerRemoteTools(e,t){return this.remoteToolStore.upsertTools(e,t)}getRemoteToolStore(){return this.remoteToolStore}async createSession(e,t=""){let s=new Date().toISOString();return t&&!await this.projectStore.get(t)&&await this.projectStore.create({id:t,name:t,description:"",created:s,updated:s}),this.sessionStore.create({id:crypto.randomUUID(),projectId:t,title:e,status:"idle",messages:[],events:[],created:s,updated:s,metadata:(0,o.Tu)(e,{permissionMode:"full-access"})})}async setSessionPermissionMode(e,t){if(!(0,o.ue)(t))throw Error(`Invalid permission mode: ${String(t)}`);let s=await this.sessionStore.get(e);if(!s)throw Error(`Session not found: ${e}`);return this.toolPermissionGate.clearSession(e),this.sessionStore.update(e,{metadata:{...s.metadata,permissionMode:t}})}getLatestEventId(e){return this.eventCounters.get(e)??0}subscribe(e,t,s=-1){for(let o of this.recentEvents.get(e)??[])if(!(o.id<=s))try{t(o.event,o.id)}catch{}let o=this.subscribers.get(e)??new Set;return o.add(t),this.subscribers.set(e,o),()=>{o.delete(t),0===o.size&&this.subscribers.delete(e)}}emit(e,t){let s=(this.eventCounters.get(e)??0)+1;this.eventCounters.set(e,s);let o=this.recentEvents.get(e);for(let r of(o&&(o.push({id:s,event:t}),o.length>500&&o.splice(0,o.length-500)),this.subscribers.get(e)??[]))try{r(t,s)}catch{}}publishExternal(e,t){this.emit(e,t)}resetExternalStream(e){this.eventCounters.set(e,0),this.recentEvents.set(e,[])}projectMessagesFromEvents(e){let t=[],s=null;for(let o of e){if("text_chunk"===o.type){s||(s={role:"assistant",content:""},t.push(s)),s.content+=o.text;continue}if("tool_call"===o.type){s&&!s.toolCalls?s.toolCalls=[o.toolCall]:t.push({role:"assistant",content:"",toolCalls:[o.toolCall]}),s=null;continue}if("tool_result"===o.type){t.push({role:"tool",content:o.result.content,toolCallId:o.result.toolCallId});continue}if("ask_user"===o.type){t.push({role:"assistant",content:""}),s=null;continue}"done"===o.type&&(s?s.content=o.finalText||s.content:o.finalText?.trim()&&t.push({role:"assistant",content:o.finalText}),s=null)}return t}async run(e,t,s){let r;let i=await this.sessionStore.get(t),a=await this.resolveProjectWorkingDirectory(i?.projectId);await this.sessionStore.consumePendingAutoTitle(t,e);let l=function(e){let t=[];for(let[s,o]of(e??[]).entries()){let e=/^data:image\/(jpeg|png|gif|webp);base64,/i.exec(o);e&&t.push({type:"image",name:`image-${s+1}.${n[e[1].toLowerCase()]}`,dataUrl:o})}return t.length>0?{attachments:t}:void 0}(s);await this.sessionStore.addMessage(t,{role:"user",content:e,...l?{presentation:l}:{}}),this.eventCounters.set(t,0),this.recentEvents.set(t,[]);let u=i?.projectId||this.defaultRemoteToolsProjectId;try{r=await this.getBuilder().withWorkingDirectory(a).withRemoteToolStore(this.remoteToolStore,u).withTool(new o.as(async e=>this.createQuestion(e,t))).build()}catch(s){let e={type:"error",message:s instanceof Error?s.message:"Failed to build agent"};try{await this.sessionStore.addEvent(t,e)}catch{}throw this.emit(t,e),s}finally{this.builder?.withWorkingDirectory(this.workingDirectory).withRemoteToolStore(this.remoteToolStore,this.defaultRemoteToolsProjectId)}this.activeAgent=r,this.activeRunSessionId=t,this.activeRun=r.run(e,t,s);let d=!1;try{for await(let e of this.activeRun)await this.sessionStore.addEvent(t,e),"error"===e.type?(d=!0,await this.sessionStore.update(t,{status:"failed"})):"done"!==e.type||d||(e.finalText.trim()&&await this.sessionStore.addMessage(t,{role:"assistant",content:e.finalText}),await this.sessionStore.update(t,{status:"completed"})),this.emit(t,e)}catch(s){d=!0;let e={type:"error",message:s instanceof Error?s.message:"Agent run failed"};try{await this.sessionStore.addEvent(t,e),await this.sessionStore.update(t,{status:"failed"})}catch{}this.emit(t,e)}finally{this.activeRunSessionId===t&&(this.activeAgent=null,this.activeRunSessionId=null),this.activeRun=null}try{let e=await this.sessionStore.get(t),s=(e?.messages??[]).filter(e=>"user"===e.role),o=this.projectMessagesFromEvents(e?.events??[]);await this.sessionStore.replaceMessages(t,[...s,...o])}catch{}}createQuestion(e,t){let s=crypto.randomUUID();return this.emit(t,{type:"ask_user",questionId:s,question:e.question,options:e.options,multiSelect:e.multiSelect}),new Promise((e,t)=>{let o=setTimeout(()=>{this.pendingQuestions.has(s)&&(this.pendingQuestions.delete(s),t(Error("Question timed out after 5 minutes")))},3e5);this.pendingQuestions.set(s,{resolve:e,reject:t,timer:o})})}answerQuestion(e,t,s){let o=this.pendingQuestions.get(e);return!!o&&(clearTimeout(o.timer),this.pendingQuestions.delete(e),o.resolve({answer:t,selectedIndices:s}),!0)}async steer(e,t){return await this.sessionStore.addMessage(t,{role:"user",content:e,name:"__steer__"}),this.activeRunSessionId===t&&!!this.activeAgent&&(this.emit(t,{type:"thinking",message:`User added: ${e.slice(0,60)}`}),!0)}abort(){for(let[e,t]of(this.activeAgent?.abort(),this.pendingQuestions))clearTimeout(t.timer),t.reject(Error("Agent aborted")),this.pendingQuestions.delete(e)}}let u=globalThis,d=u.__agentHost??new l;u.__agentHost=d},3082:(e,t,s)=>{s.a(e,async(e,o)=>{try{s.r(t),s.d(t,{DELETE:()=>c,GET:()=>u,PATCH:()=>d});var r=s(1890),i=s(1322),n=s(7186),a=s(2083),l=e([a]);async function u(e,{params:t}){let s=new URL(e.url),o=s.searchParams.get("before"),l=s.searchParams.get("limit"),u=null!==o||null!==l?{before:o||void 0,limit:function(e){if(null===e)return;let t=Number(e);return Number.isFinite(t)?t:void 0}(l)}:void 0;if((0,a.V_)(t.id))try{let e=await (0,a.NL)().get(t.id,u);return r.NextResponse.json(e)}catch(e){return r.NextResponse.json({error:e instanceof Error?e.message:"Internal error"},{status:(0,a.WW)(e)})}let d=await n.f.getSessionStore().get(t.id);if(!d)return r.NextResponse.json({error:"Session not found"},{status:404});let c=!d.messages?.length&&Array.isArray(d.events)&&d.events.length>0?function(e){let t=[],s=null;for(let o of e){let e=o.type;if("text_chunk"===e){s||(s={id:crypto.randomUUID(),role:"assistant",content:"",isStreaming:!0,timestamp:Date.now()},t.push(s)),s.content=`${s.content??""}${o.text??""}`;continue}if("tool_call"===e&&o.toolCall){s={id:crypto.randomUUID(),role:"assistant",content:s?.content??"",toolCalls:[o.toolCall],isStreaming:!1,timestamp:Date.now()},t.push(s),s=null;continue}if("tool_result"===e&&o.result){let e=o.result;t.push({id:crypto.randomUUID(),role:"tool",content:e.content??"",toolCallId:e.toolCallId,timestamp:Date.now()});continue}if("ask_user"===e){t.push({id:crypto.randomUUID(),role:"assistant",content:"",askUser:{questionId:o.questionId,question:o.question??"",options:o.options,multiSelect:o.multiSelect},timestamp:Date.now()});continue}"done"===e&&"string"==typeof o.finalText&&(s?(s.content=o.finalText,s.isStreaming=!1):o.finalText.trim()&&t.push({id:crypto.randomUUID(),role:"assistant",content:o.finalText,timestamp:Date.now()}),s=null)}return t}(d.events):d.messages,p=u?{...d,permissionMode:(0,i.Ny)(d.metadata.permissionMode),...(0,i.MO)(c??[],d.events??[],u)}:{...d,messages:c,permissionMode:(0,i.Ny)(d.metadata.permissionMode)};return r.NextResponse.json(p)}async function d(e,{params:t}){let s=await e.json();if(!(0,i.ue)(s.permissionMode))return r.NextResponse.json({error:"Invalid permission mode"},{status:400});if((0,a.V_)(t.id))try{let e=await (0,a.NL)().setPermissionMode(t.id,s.permissionMode);return r.NextResponse.json(e)}catch(e){return r.NextResponse.json({error:e instanceof Error?e.message:"Unable to update permission mode"},{status:(0,a.WW)(e)})}try{let e=await n.f.setSessionPermissionMode(t.id,s.permissionMode);return r.NextResponse.json({...e,permissionMode:(0,i.Ny)(e.metadata.permissionMode)})}catch(s){let e=s instanceof Error?s.message:"Unable to update permission mode",t=e.startsWith("Session not found")?404:500;return r.NextResponse.json({error:e},{status:t})}}async function c(e,{params:t}){if((0,a.V_)(t.id))try{return await (0,a.NL)().delete(t.id),r.NextResponse.json({status:"deleted"})}catch(e){return r.NextResponse.json({error:e instanceof Error?e.message:"Unable to delete session"},{status:(0,a.WW)(e)})}return n.f.isSessionRunning(t.id)?r.NextResponse.json({error:"Session is currently running"},{status:409}):(await n.f.getSessionStore().delete(t.id),r.NextResponse.json({status:"deleted"}))}a=(l.then?(await l)():l)[0],o()}catch(e){o(e)}})}};var t=require("../../../../webpack-runtime.js");t.C(e);var s=e=>t(t.s=e),o=t.X(0,[8375,6703,6244,1322,2083],()=>s(3205));module.exports=o})();
@@ -1 +1 @@
1
- {"version":1,"files":["../../../../../../node_modules/@anthropic-ai/claude-agent-sdk","../../../../../../node_modules/better-sqlite3","../../../../../../node_modules/next","../../../../../../package.json","../../../../../package.json","../../../../chunks/322.js","../../../../chunks/375.js","../../../../chunks/703.js","../../../../chunks/988.js","../../../../webpack-runtime.js"]}
1
+ {"version":1,"files":["../../../../../../node_modules/@anthropic-ai/claude-agent-sdk","../../../../../../node_modules/better-sqlite3","../../../../../../node_modules/next","../../../../../../package.json","../../../../../package.json","../../../../chunks/1322.js","../../../../chunks/2083.js","../../../../chunks/6244.js","../../../../chunks/6703.js","../../../../chunks/8375.js","../../../../webpack-runtime.js"]}
@@ -1,3 +1,3 @@
1
- "use strict";(()=>{var e={};e.id=772,e.ids=[772],e.modules={7728:e=>{e.exports=require("@anthropic-ai/claude-agent-sdk")},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")},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")},1041:e=>{e.exports=require("node:url")},5881:e=>{e.exports=require("node:util")},1880:(e,t,s)=>{s.r(t),s.d(t,{originalPathname:()=>v,patchFetch:()=>S,requestAsyncStorage:()=>m,routeModule:()=>p,serverHooks:()=>w,staticGenerationAsyncStorage:()=>g});var r={};s.r(r),s.d(r,{GET:()=>h,POST:()=>d});var o=s(7786),i=s(5042),n=s(2184),a=s(1890),l=s(1322),u=s(7186),c=s(3988);async function h(e){let t=new URL(e.url),s=t.searchParams.get("projectId")||void 0,r="1"===t.searchParams.get("refresh"),o=await u.f.getSessionStore().list(s),i=(0,c.NL)(),n=o.map(({messages:e,events:t,...s})=>({...s,agentType:"customer-agent",canDelete:!0,permissionMode:(0,l.Ny)(s.metadata.permissionMode)}));try{let e=r?await i.refresh(s):await i.list(s);return a.NextResponse.json([...n,...e])}catch(e){return console.error("Native session discovery failed:",e),a.NextResponse.json(n)}}async function d(e){let t=await e.json(),s=t.agentType??"customer-agent";if("customer-agent"!==s)try{if(!t.projectId)throw new u.B("请选择宿主机项目","PROJECT_PATH_REQUIRED",400);let e=await u.f.resolveProjectWorkingDirectory(t.projectId,!0),r=await (0,c.NL)().create({agentType:s,title:t.title??"新会话",cwd:e});return a.NextResponse.json(r,{status:201})}catch(e){if(e instanceof u.B)return a.NextResponse.json({error:{code:e.code,message:e.message}},{status:e.status});return a.NextResponse.json({error:e instanceof Error?e.message:"Internal error"},{status:(0,c.WW)(e)})}let r=await u.f.createSession(t.title??"Untitled",t.projectId??"");return a.NextResponse.json(r,{status:201})}let p=new o.AppRouteRouteModule({definition:{kind:i.x.APP_ROUTE,page:"/api/sessions/route",pathname:"/api/sessions",filename:"route",bundlePath:"app/api/sessions/route"},resolvedPagePath:"/Users/caoqu/team-agent/customer-agent/packages/server/app/api/sessions/route.ts",nextConfigOutput:"standalone",userland:r}),{requestAsyncStorage:m,staticGenerationAsyncStorage:g,serverHooks:w}=p,v="/api/sessions/route";function S(){return(0,n.patchFetch)({serverHooks:w,staticGenerationAsyncStorage:g})}},7186:(e,t,s)=>{s.d(t,{B:()=>n,f:()=>u});var r=s(1322),o=s(612),i=s(785);class n extends Error{constructor(e,t,s){super(e),this.code=t,this.status=s,this.name="ProjectWorkingDirectoryError"}}class a{constructor(){this.baseDir=(0,i.kO)(),this.workingDirectory=(0,i.sr)(),this.builder=null,this.sessionStore=new r.m6(this.baseDir),this.projectStore=new r.XW(this.baseDir),this.remoteToolStore=new r.rt((0,r.N8)(this.baseDir).db),this.defaultRemoteToolsProjectId=process.env.AGENT_PROJECT_ID??"default",this.activeRun=null,this.activeAgent=null,this.activeRunSessionId=null,this.subscribers=new Map,this.recentEvents=new Map,this.eventCounters=new Map,this.pendingQuestions=new Map,this.toolPermissionGate=new r.XP({resolveMode:async e=>{let t=await this.sessionStore.get(e);return(0,r.Ny)(t?.metadata.permissionMode)},requestApproval:async e=>{let t=await this.createQuestion({question:`Customer Agent 请求权限
1
+ "use strict";(()=>{var e={};e.id=1772,e.ids=[1772],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")},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")},3628:(e,t,s)=>{s.a(e,async(e,r)=>{try{s.r(t),s.d(t,{originalPathname:()=>g,patchFetch:()=>u,requestAsyncStorage:()=>d,routeModule:()=>c,serverHooks:()=>p,staticGenerationAsyncStorage:()=>h});var o=s(7786),i=s(5042),n=s(2184),a=s(5110),l=e([a]);a=(l.then?(await l)():l)[0];let c=new o.AppRouteRouteModule({definition:{kind:i.x.APP_ROUTE,page:"/api/sessions/route",pathname:"/api/sessions",filename:"route",bundlePath:"app/api/sessions/route"},resolvedPagePath:"/Users/caoqu/team-agent/customer-agent/packages/server/app/api/sessions/route.ts",nextConfigOutput:"standalone",userland:a}),{requestAsyncStorage:d,staticGenerationAsyncStorage:h,serverHooks:p}=c,g="/api/sessions/route";function u(){return(0,n.patchFetch)({serverHooks:p,staticGenerationAsyncStorage:h})}r()}catch(e){r(e)}})},7186:(e,t,s)=>{s.d(t,{B:()=>a,f:()=>c});var r=s(1322),o=s(612),i=s(785);let n={jpeg:"jpg",png:"png",gif:"gif",webp:"webp"};class a extends Error{constructor(e,t,s){super(e),this.code=t,this.status=s,this.name="ProjectWorkingDirectoryError"}}class l{constructor(){this.baseDir=(0,i.kO)(),this.workingDirectory=(0,i.sr)(),this.builder=null,this.sessionStore=new r.m6(this.baseDir),this.projectStore=new r.XW(this.baseDir),this.remoteToolStore=new r.rt((0,r.N8)(this.baseDir).db),this.defaultRemoteToolsProjectId=process.env.AGENT_PROJECT_ID??"default",this.activeRun=null,this.activeAgent=null,this.activeRunSessionId=null,this.subscribers=new Map,this.recentEvents=new Map,this.eventCounters=new Map,this.pendingQuestions=new Map,this.toolPermissionGate=new r.XP({resolveMode:async e=>{let t=await this.sessionStore.get(e);return(0,r.Ny)(t?.metadata.permissionMode)},requestApproval:async e=>{let t=await this.createQuestion({question:`Customer Agent 请求权限
2
2
  ${e.summary}
3
- 原因:${e.reason}`,options:[...r.Sf],toolCallId:""},e.sessionId);return(0,r.wM)(t.answer,t.selectedIndices)}});let e=process.env.AGENT_API_KEY,t=process.env.AGENT_MODEL_PROVIDER||"openai",s=process.env.AGENT_MODEL_ID||"gpt-4o",o=process.env.AGENT_BASE_URL||void 0,n=new r.Y4().withSessionStore(this.sessionStore).withWorkingDirectory(this.workingDirectory).withToolPermissionGate(this.toolPermissionGate);n.withRemoteToolStore(this.remoteToolStore,this.defaultRemoteToolsProjectId),e&&n.withModel(t,{apiKey:e,modelId:s,baseUrl:o}),this.builder=n}getBuilder(){return this.builder||(this.builder=new r.Y4().withToolPermissionGate(this.toolPermissionGate)),this.builder}setBuilder(e){e.withRemoteToolStore(this.remoteToolStore,this.defaultRemoteToolsProjectId),e.withWorkingDirectory(this.workingDirectory),e.withToolPermissionGate(this.toolPermissionGate),this.builder=e}getSessionStore(){return this.sessionStore}isSessionRunning(e){return this.activeRunSessionId===e}hasActiveRun(){return null!==this.activeRunSessionId}getProjectStore(){return this.projectStore}async resolveProjectWorkingDirectory(e,t=!1){if(!e)return this.workingDirectory;let s=await this.projectStore.get(e);if(!s)throw new n("项目不存在","PROJECT_NOT_FOUND",404);if(!s.description?.trim()){if(!t)return this.workingDirectory;throw new n("该项目没有宿主机目录","PROJECT_PATH_REQUIRED",400)}try{return r.Tp.fromEnvironment(process.env.AGENT_WEB_ROOTS,(0,o.homedir)()).assertDirectory(s.description)}catch(e){throw new n(e instanceof Error?e.message:"项目目录不可用","PROJECT_PATH_INVALID",400)}}getModelConfig(){return{provider:process.env.AGENT_MODEL_PROVIDER||"openai",modelId:process.env.AGENT_MODEL_ID||"gpt-4o",baseUrl:process.env.AGENT_BASE_URL||""}}getWebAppBuildId(){return globalThis.__webAppBuildId??""}registerRemoteTools(e,t){return this.remoteToolStore.upsertTools(e,t)}getRemoteToolStore(){return this.remoteToolStore}async createSession(e,t=""){let s=new Date().toISOString();return t&&!await this.projectStore.get(t)&&await this.projectStore.create({id:t,name:t,description:"",created:s,updated:s}),this.sessionStore.create({id:crypto.randomUUID(),projectId:t,title:e,status:"idle",messages:[],events:[],created:s,updated:s,metadata:{permissionMode:"full-access"}})}async setSessionPermissionMode(e,t){if(!(0,r.ue)(t))throw Error(`Invalid permission mode: ${String(t)}`);let s=await this.sessionStore.get(e);if(!s)throw Error(`Session not found: ${e}`);return this.toolPermissionGate.clearSession(e),this.sessionStore.update(e,{metadata:{...s.metadata,permissionMode:t}})}getLatestEventId(e){return this.eventCounters.get(e)??0}subscribe(e,t,s=-1){for(let r of this.recentEvents.get(e)??[])if(!(r.id<=s))try{t(r.event,r.id)}catch{}let r=this.subscribers.get(e)??new Set;return r.add(t),this.subscribers.set(e,r),()=>{r.delete(t),0===r.size&&this.subscribers.delete(e)}}emit(e,t){let s=(this.eventCounters.get(e)??0)+1;this.eventCounters.set(e,s);let r=this.recentEvents.get(e);for(let o of(r&&(r.push({id:s,event:t}),r.length>500&&r.splice(0,r.length-500)),this.subscribers.get(e)??[]))try{o(t,s)}catch{}}publishExternal(e,t){this.emit(e,t)}resetExternalStream(e){this.eventCounters.set(e,0),this.recentEvents.set(e,[])}projectMessagesFromEvents(e){let t=[],s=null;for(let r of e){if("text_chunk"===r.type){s||(s={role:"assistant",content:""},t.push(s)),s.content+=r.text;continue}if("tool_call"===r.type){s&&!s.toolCalls?s.toolCalls=[r.toolCall]:t.push({role:"assistant",content:"",toolCalls:[r.toolCall]}),s=null;continue}if("tool_result"===r.type){t.push({role:"tool",content:r.result.content,toolCallId:r.result.toolCallId});continue}if("ask_user"===r.type){t.push({role:"assistant",content:""}),s=null;continue}"done"===r.type&&(s?s.content=r.finalText||s.content:r.finalText?.trim()&&t.push({role:"assistant",content:r.finalText}),s=null)}return t}async run(e,t,s){let o;let i=await this.sessionStore.get(t),n=await this.resolveProjectWorkingDirectory(i?.projectId);await this.sessionStore.addMessage(t,{role:"user",content:e}),this.eventCounters.set(t,0),this.recentEvents.set(t,[]);let a=i?.projectId||this.defaultRemoteToolsProjectId;try{o=await this.getBuilder().withWorkingDirectory(n).withRemoteToolStore(this.remoteToolStore,a).withTool(new r.as(async e=>this.createQuestion(e,t))).build()}catch(s){let e={type:"error",message:s instanceof Error?s.message:"Failed to build agent"};try{await this.sessionStore.addEvent(t,e)}catch{}throw this.emit(t,e),s}finally{this.builder?.withWorkingDirectory(this.workingDirectory).withRemoteToolStore(this.remoteToolStore,this.defaultRemoteToolsProjectId)}this.activeAgent=o,this.activeRunSessionId=t,this.activeRun=o.run(e,t,s);let l=!1;try{for await(let e of this.activeRun)await this.sessionStore.addEvent(t,e),"error"===e.type?(l=!0,await this.sessionStore.update(t,{status:"failed"})):"done"!==e.type||l||(e.finalText.trim()&&await this.sessionStore.addMessage(t,{role:"assistant",content:e.finalText}),await this.sessionStore.update(t,{status:"completed"})),this.emit(t,e)}catch(s){l=!0;let e={type:"error",message:s instanceof Error?s.message:"Agent run failed"};try{await this.sessionStore.addEvent(t,e),await this.sessionStore.update(t,{status:"failed"})}catch{}this.emit(t,e)}finally{this.activeRunSessionId===t&&(this.activeAgent=null,this.activeRunSessionId=null),this.activeRun=null}try{let e=await this.sessionStore.get(t),s=(e?.messages??[]).filter(e=>"user"===e.role),r=this.projectMessagesFromEvents(e?.events??[]);await this.sessionStore.replaceMessages(t,[...s,...r])}catch{}}createQuestion(e,t){let s=crypto.randomUUID();return this.emit(t,{type:"ask_user",questionId:s,question:e.question,options:e.options,multiSelect:e.multiSelect}),new Promise((e,t)=>{let r=setTimeout(()=>{this.pendingQuestions.has(s)&&(this.pendingQuestions.delete(s),t(Error("Question timed out after 5 minutes")))},3e5);this.pendingQuestions.set(s,{resolve:e,reject:t,timer:r})})}answerQuestion(e,t,s){let r=this.pendingQuestions.get(e);return!!r&&(clearTimeout(r.timer),this.pendingQuestions.delete(e),r.resolve({answer:t,selectedIndices:s}),!0)}async steer(e,t){return await this.sessionStore.addMessage(t,{role:"user",content:e,name:"__steer__"}),this.activeRunSessionId===t&&!!this.activeAgent&&(this.emit(t,{type:"thinking",message:`User added: ${e.slice(0,60)}`}),!0)}abort(){for(let[e,t]of(this.activeAgent?.abort(),this.pendingQuestions))clearTimeout(t.timer),t.reject(Error("Agent aborted")),this.pendingQuestions.delete(e)}}let l=globalThis,u=l.__agentHost??new a;l.__agentHost=u}};var t=require("../../../webpack-runtime.js");t.C(e);var s=e=>t(t.s=e),r=t.X(0,[375,703,322,988],()=>s(1880));module.exports=r})();
3
+ 原因:${e.reason}`,options:[...r.Sf],toolCallId:""},e.sessionId);return(0,r.wM)(t.answer,t.selectedIndices)}});let e=process.env.AGENT_API_KEY,t=process.env.AGENT_MODEL_PROVIDER||"openai",s=process.env.AGENT_MODEL_ID||"gpt-4o",o=process.env.AGENT_BASE_URL||void 0,n=new r.Y4().withSessionStore(this.sessionStore).withWorkingDirectory(this.workingDirectory).withToolPermissionGate(this.toolPermissionGate);n.withRemoteToolStore(this.remoteToolStore,this.defaultRemoteToolsProjectId),e&&n.withModel(t,{apiKey:e,modelId:s,baseUrl:o}),this.builder=n}getBuilder(){return this.builder||(this.builder=new r.Y4().withToolPermissionGate(this.toolPermissionGate)),this.builder}setBuilder(e){e.withRemoteToolStore(this.remoteToolStore,this.defaultRemoteToolsProjectId),e.withWorkingDirectory(this.workingDirectory),e.withToolPermissionGate(this.toolPermissionGate),this.builder=e}getSessionStore(){return this.sessionStore}isSessionRunning(e){return this.activeRunSessionId===e}hasActiveRun(){return null!==this.activeRunSessionId}getProjectStore(){return this.projectStore}async resolveProjectWorkingDirectory(e,t=!1){if(!e)return this.workingDirectory;let s=await this.projectStore.get(e);if(!s)throw new a("项目不存在","PROJECT_NOT_FOUND",404);if(!s.description?.trim()){if(!t)return this.workingDirectory;throw new a("该项目没有宿主机目录","PROJECT_PATH_REQUIRED",400)}try{return r.Tp.fromEnvironment(process.env.AGENT_WEB_ROOTS,(0,o.homedir)()).assertDirectory(s.description)}catch(e){throw new a(e instanceof Error?e.message:"项目目录不可用","PROJECT_PATH_INVALID",400)}}getModelConfig(){return{provider:process.env.AGENT_MODEL_PROVIDER||"openai",modelId:process.env.AGENT_MODEL_ID||"gpt-4o",baseUrl:process.env.AGENT_BASE_URL||""}}getWebAppBuildId(){return globalThis.__webAppBuildId??""}registerRemoteTools(e,t){return this.remoteToolStore.upsertTools(e,t)}getRemoteToolStore(){return this.remoteToolStore}async createSession(e,t=""){let s=new Date().toISOString();return t&&!await this.projectStore.get(t)&&await this.projectStore.create({id:t,name:t,description:"",created:s,updated:s}),this.sessionStore.create({id:crypto.randomUUID(),projectId:t,title:e,status:"idle",messages:[],events:[],created:s,updated:s,metadata:(0,r.Tu)(e,{permissionMode:"full-access"})})}async setSessionPermissionMode(e,t){if(!(0,r.ue)(t))throw Error(`Invalid permission mode: ${String(t)}`);let s=await this.sessionStore.get(e);if(!s)throw Error(`Session not found: ${e}`);return this.toolPermissionGate.clearSession(e),this.sessionStore.update(e,{metadata:{...s.metadata,permissionMode:t}})}getLatestEventId(e){return this.eventCounters.get(e)??0}subscribe(e,t,s=-1){for(let r of this.recentEvents.get(e)??[])if(!(r.id<=s))try{t(r.event,r.id)}catch{}let r=this.subscribers.get(e)??new Set;return r.add(t),this.subscribers.set(e,r),()=>{r.delete(t),0===r.size&&this.subscribers.delete(e)}}emit(e,t){let s=(this.eventCounters.get(e)??0)+1;this.eventCounters.set(e,s);let r=this.recentEvents.get(e);for(let o of(r&&(r.push({id:s,event:t}),r.length>500&&r.splice(0,r.length-500)),this.subscribers.get(e)??[]))try{o(t,s)}catch{}}publishExternal(e,t){this.emit(e,t)}resetExternalStream(e){this.eventCounters.set(e,0),this.recentEvents.set(e,[])}projectMessagesFromEvents(e){let t=[],s=null;for(let r of e){if("text_chunk"===r.type){s||(s={role:"assistant",content:""},t.push(s)),s.content+=r.text;continue}if("tool_call"===r.type){s&&!s.toolCalls?s.toolCalls=[r.toolCall]:t.push({role:"assistant",content:"",toolCalls:[r.toolCall]}),s=null;continue}if("tool_result"===r.type){t.push({role:"tool",content:r.result.content,toolCallId:r.result.toolCallId});continue}if("ask_user"===r.type){t.push({role:"assistant",content:""}),s=null;continue}"done"===r.type&&(s?s.content=r.finalText||s.content:r.finalText?.trim()&&t.push({role:"assistant",content:r.finalText}),s=null)}return t}async run(e,t,s){let o;let i=await this.sessionStore.get(t),a=await this.resolveProjectWorkingDirectory(i?.projectId);await this.sessionStore.consumePendingAutoTitle(t,e);let l=function(e){let t=[];for(let[s,r]of(e??[]).entries()){let e=/^data:image\/(jpeg|png|gif|webp);base64,/i.exec(r);e&&t.push({type:"image",name:`image-${s+1}.${n[e[1].toLowerCase()]}`,dataUrl:r})}return t.length>0?{attachments:t}:void 0}(s);await this.sessionStore.addMessage(t,{role:"user",content:e,...l?{presentation:l}:{}}),this.eventCounters.set(t,0),this.recentEvents.set(t,[]);let u=i?.projectId||this.defaultRemoteToolsProjectId;try{o=await this.getBuilder().withWorkingDirectory(a).withRemoteToolStore(this.remoteToolStore,u).withTool(new r.as(async e=>this.createQuestion(e,t))).build()}catch(s){let e={type:"error",message:s instanceof Error?s.message:"Failed to build agent"};try{await this.sessionStore.addEvent(t,e)}catch{}throw this.emit(t,e),s}finally{this.builder?.withWorkingDirectory(this.workingDirectory).withRemoteToolStore(this.remoteToolStore,this.defaultRemoteToolsProjectId)}this.activeAgent=o,this.activeRunSessionId=t,this.activeRun=o.run(e,t,s);let c=!1;try{for await(let e of this.activeRun)await this.sessionStore.addEvent(t,e),"error"===e.type?(c=!0,await this.sessionStore.update(t,{status:"failed"})):"done"!==e.type||c||(e.finalText.trim()&&await this.sessionStore.addMessage(t,{role:"assistant",content:e.finalText}),await this.sessionStore.update(t,{status:"completed"})),this.emit(t,e)}catch(s){c=!0;let e={type:"error",message:s instanceof Error?s.message:"Agent run failed"};try{await this.sessionStore.addEvent(t,e),await this.sessionStore.update(t,{status:"failed"})}catch{}this.emit(t,e)}finally{this.activeRunSessionId===t&&(this.activeAgent=null,this.activeRunSessionId=null),this.activeRun=null}try{let e=await this.sessionStore.get(t),s=(e?.messages??[]).filter(e=>"user"===e.role),r=this.projectMessagesFromEvents(e?.events??[]);await this.sessionStore.replaceMessages(t,[...s,...r])}catch{}}createQuestion(e,t){let s=crypto.randomUUID();return this.emit(t,{type:"ask_user",questionId:s,question:e.question,options:e.options,multiSelect:e.multiSelect}),new Promise((e,t)=>{let r=setTimeout(()=>{this.pendingQuestions.has(s)&&(this.pendingQuestions.delete(s),t(Error("Question timed out after 5 minutes")))},3e5);this.pendingQuestions.set(s,{resolve:e,reject:t,timer:r})})}answerQuestion(e,t,s){let r=this.pendingQuestions.get(e);return!!r&&(clearTimeout(r.timer),this.pendingQuestions.delete(e),r.resolve({answer:t,selectedIndices:s}),!0)}async steer(e,t){return await this.sessionStore.addMessage(t,{role:"user",content:e,name:"__steer__"}),this.activeRunSessionId===t&&!!this.activeAgent&&(this.emit(t,{type:"thinking",message:`User added: ${e.slice(0,60)}`}),!0)}abort(){for(let[e,t]of(this.activeAgent?.abort(),this.pendingQuestions))clearTimeout(t.timer),t.reject(Error("Agent aborted")),this.pendingQuestions.delete(e)}}let u=globalThis,c=u.__agentHost??new l;u.__agentHost=c},5110:(e,t,s)=>{s.a(e,async(e,r)=>{try{s.r(t),s.d(t,{GET:()=>u,POST:()=>c});var o=s(1890),i=s(1322),n=s(7186),a=s(2083),l=e([a]);async function u(e){let t=new URL(e.url),s=t.searchParams.get("projectId")||void 0,r="1"===t.searchParams.get("refresh"),l=await n.f.getSessionStore().list(s),u=(0,a.NL)(),c=l.map(({messages:e,events:t,...s})=>({...s,agentType:"customer-agent",canDelete:!n.f.isSessionRunning(s.id),permissionMode:(0,i.Ny)(s.metadata.permissionMode)}));try{let e=r?await u.refresh(s):await u.list(s);return o.NextResponse.json([...c,...e])}catch(e){return console.error("Native session discovery failed:",e),o.NextResponse.json(c)}}async function c(e){let t=await e.json(),s=t.agentType??"customer-agent";if("customer-agent"!==s)try{if(!t.projectId&&!t.cwd?.trim())throw new n.B("请选择宿主机项目","PROJECT_PATH_REQUIRED",400);let e=t.cwd?.trim()||(t.projectId?await n.f.resolveProjectWorkingDirectory(t.projectId,!0):""),r=await (0,a.NL)().create({agentType:s,title:t.title??"新会话",cwd:e,...t.projectId?{projectId:t.projectId}:{}});return o.NextResponse.json(r,{status:201})}catch(e){if(e instanceof n.B)return o.NextResponse.json({error:{code:e.code,message:e.message}},{status:e.status});return o.NextResponse.json({error:e instanceof Error?e.message:"Internal error"},{status:(0,a.WW)(e)})}let r=await n.f.createSession(t.title??"Untitled",t.projectId??"");return o.NextResponse.json(r,{status:201})}a=(l.then?(await l)():l)[0],r()}catch(e){r(e)}})}};var t=require("../../../webpack-runtime.js");t.C(e);var s=e=>t(t.s=e),r=t.X(0,[8375,6703,6244,1322,2083],()=>s(3628));module.exports=r})();
@@ -1 +1 @@
1
- {"version":1,"files":["../../../../../node_modules/@anthropic-ai/claude-agent-sdk","../../../../../node_modules/better-sqlite3","../../../../../node_modules/next","../../../../../package.json","../../../../package.json","../../../chunks/322.js","../../../chunks/375.js","../../../chunks/703.js","../../../chunks/988.js","../../../webpack-runtime.js"]}
1
+ {"version":1,"files":["../../../../../node_modules/@anthropic-ai/claude-agent-sdk","../../../../../node_modules/better-sqlite3","../../../../../node_modules/next","../../../../../package.json","../../../../package.json","../../../chunks/1322.js","../../../chunks/2083.js","../../../chunks/6244.js","../../../chunks/6703.js","../../../chunks/8375.js","../../../webpack-runtime.js"]}