agentroam-runtime-darwin-arm64 0.2.0-preview.25 → 0.2.0-preview.26

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 (331) 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-path-routes-manifest.json +1 -1
  5. package/runtime/.next/build-manifest.json +4 -4
  6. package/runtime/.next/prerender-manifest.json +1 -1
  7. package/runtime/.next/server/app/_not-found.html +1 -1
  8. package/runtime/.next/server/app/_not-found.rsc +1 -1
  9. package/runtime/.next/server/app/api/agent/abort/route.js +1 -1
  10. package/runtime/.next/server/app/api/agent/answer/route.js +1 -1
  11. package/runtime/.next/server/app/api/agent/models/route.js +1 -1
  12. package/runtime/.next/server/app/api/agent/run/route.js +15 -1
  13. package/runtime/.next/server/app/api/agent/run/route.js.nft.json +1 -1
  14. package/runtime/.next/server/app/api/agent/runtime-health/route.js +1 -1
  15. package/runtime/.next/server/app/api/agent/steer/route.js +1 -1
  16. package/runtime/.next/server/app/api/agent/stream/route.js +18 -4
  17. package/runtime/.next/server/app/api/agent/stream/route.js.nft.json +1 -1
  18. package/runtime/.next/server/app/api/agent-workspaces/[workspaceId]/sessions/route.js +1 -1
  19. package/runtime/.next/server/app/api/agent-workspaces/route.js +1 -1
  20. package/runtime/.next/server/app/api/client-logs/route.js +1 -0
  21. package/runtime/.next/server/app/api/client-logs/route.js.nft.json +1 -0
  22. package/runtime/.next/server/app/api/projects/[id]/route.js +1 -1
  23. package/runtime/.next/server/app/api/projects/check/route.js +1 -1
  24. package/runtime/.next/server/app/api/projects/directories/route.js +1 -1
  25. package/runtime/.next/server/app/api/projects/roots/route.js +1 -1
  26. package/runtime/.next/server/app/api/projects/route.js +1 -1
  27. package/runtime/.next/server/app/api/push/subscribe/route.js +15 -0
  28. package/runtime/.next/server/app/api/push/subscribe/route.js.nft.json +1 -0
  29. package/runtime/.next/server/app/api/push/unsubscribe/route.js +15 -0
  30. package/runtime/.next/server/app/api/push/unsubscribe/route.js.nft.json +1 -0
  31. package/runtime/.next/server/app/api/push/vapid/route.js +15 -0
  32. package/runtime/.next/server/app/api/push/vapid/route.js.nft.json +1 -0
  33. package/runtime/.next/server/app/api/push/vapid.body +1 -0
  34. package/runtime/.next/server/app/api/push/vapid.meta +1 -0
  35. package/runtime/.next/server/app/api/sessions/[id]/changes/route.js +1 -1
  36. package/runtime/.next/server/app/api/sessions/[id]/fork/route.js +1 -1
  37. package/runtime/.next/server/app/api/sessions/[id]/goals/route.js +1 -1
  38. package/runtime/.next/server/app/api/sessions/[id]/handoff/route.js +1 -1
  39. package/runtime/.next/server/app/api/sessions/[id]/query-index/route.js +1 -1
  40. package/runtime/.next/server/app/api/sessions/[id]/release/route.js +1 -1
  41. package/runtime/.next/server/app/api/sessions/[id]/route.js +1 -1
  42. package/runtime/.next/server/app/api/sessions/[id]/thread-goal/route.js +1 -1
  43. package/runtime/.next/server/app/api/sessions/[id]/tool-result/route.js +1 -1
  44. package/runtime/.next/server/app/api/sessions/route.js +1 -1
  45. package/runtime/.next/server/app/api/settings/route.js +1 -1
  46. package/runtime/.next/server/app/api/web-auth/login/route.js +1 -1
  47. package/runtime/.next/server/app/api/web-auth/logout/route.js +1 -1
  48. package/runtime/.next/server/app/api/web-auth/revoke-all/route.js +1 -1
  49. package/runtime/.next/server/app/api/web-auth/setup/route.js +1 -1
  50. package/runtime/.next/server/app/api/web-auth/status/route.js +1 -1
  51. package/runtime/.next/server/app/api/web-console/device-state/route.js +1 -1
  52. package/runtime/.next/server/app/api/web-console/history/route.js +1 -1
  53. package/runtime/.next/server/app/api/web-console/preferences/route.js +1 -1
  54. package/runtime/.next/server/app/web.html +1 -1
  55. package/runtime/.next/server/app/web.rsc +1 -1
  56. package/runtime/.next/server/app-paths-manifest.json +26 -22
  57. package/runtime/.next/server/chunks/1322.js +21 -19
  58. package/runtime/.next/server/chunks/2083.js +6 -6
  59. package/runtime/.next/server/chunks/4537.js +8 -8
  60. package/runtime/.next/server/chunks/4621.js +1 -1
  61. package/runtime/.next/server/middleware-build-manifest.js +1 -1
  62. package/runtime/.next/server/pages/404.html +1 -1
  63. package/runtime/.next/server/pages/500.html +1 -1
  64. package/runtime/.next/server/server-reference-manifest.json +1 -1
  65. package/runtime/.next/static/chunks/{main-e7d473ec98e152ad.js → main-fdf4f4b9a77c6fc2.js} +1 -1
  66. package/runtime/lib/device-pairing-gateway.mjs +7 -0
  67. package/runtime/lib/remote-control/remote-authorization.mjs +20 -2
  68. package/runtime/node_modules/.package-lock.json +182 -14
  69. package/runtime/node_modules/@agent/core/dist/index.js +357 -9
  70. package/runtime/node_modules/@agent/core/dist/index.js.map +4 -3
  71. package/runtime/node_modules/@agent/core/dist/infrastructure/index.d.ts +1 -0
  72. package/runtime/node_modules/@agent/core/dist/infrastructure/index.d.ts.map +1 -1
  73. package/runtime/node_modules/@agent/core/dist/infrastructure/logger/DailyFileLogger.d.ts +136 -0
  74. package/runtime/node_modules/@agent/core/dist/infrastructure/logger/DailyFileLogger.d.ts.map +1 -0
  75. package/runtime/node_modules/@agent/core/dist/infrastructure/logger/DailyFileLogger.test.d.ts +2 -0
  76. package/runtime/node_modules/@agent/core/dist/infrastructure/logger/DailyFileLogger.test.d.ts.map +1 -0
  77. package/runtime/node_modules/@anthropic-ai/claude-agent-sdk/bridge.mjs +84 -83
  78. package/runtime/node_modules/@anthropic-ai/claude-agent-sdk/browser-sdk.js +48 -48
  79. package/runtime/node_modules/@anthropic-ai/claude-agent-sdk/manifest.json +25 -25
  80. package/runtime/node_modules/@anthropic-ai/claude-agent-sdk/manifest.zst.json +29 -29
  81. package/runtime/node_modules/@anthropic-ai/claude-agent-sdk/package.json +10 -10
  82. package/runtime/node_modules/@anthropic-ai/claude-agent-sdk/sdk.mjs +88 -81
  83. package/runtime/node_modules/agent-base/LICENSE +22 -0
  84. package/runtime/node_modules/agent-base/README.md +69 -0
  85. package/runtime/node_modules/agent-base/dist/helpers.js +66 -0
  86. package/runtime/node_modules/agent-base/dist/index.js +178 -0
  87. package/runtime/node_modules/agent-base/package.json +46 -0
  88. package/runtime/node_modules/asn1.js/.eslintrc.js +27 -0
  89. package/runtime/node_modules/asn1.js/LICENSE +21 -0
  90. package/runtime/node_modules/asn1.js/README.md +100 -0
  91. package/runtime/node_modules/asn1.js/lib/asn1/api.js +57 -0
  92. package/runtime/node_modules/asn1.js/lib/asn1/base/buffer.js +153 -0
  93. package/runtime/node_modules/asn1.js/lib/asn1/base/index.js +8 -0
  94. package/runtime/node_modules/asn1.js/lib/asn1/base/node.js +638 -0
  95. package/runtime/node_modules/asn1.js/lib/asn1/base/reporter.js +123 -0
  96. package/runtime/node_modules/asn1.js/lib/asn1/constants/der.js +58 -0
  97. package/runtime/node_modules/asn1.js/lib/asn1/constants/index.js +21 -0
  98. package/runtime/node_modules/asn1.js/lib/asn1/decoders/der.js +335 -0
  99. package/runtime/node_modules/asn1.js/lib/asn1/decoders/index.js +6 -0
  100. package/runtime/node_modules/asn1.js/lib/asn1/decoders/pem.js +51 -0
  101. package/runtime/node_modules/asn1.js/lib/asn1/encoders/der.js +295 -0
  102. package/runtime/node_modules/asn1.js/lib/asn1/encoders/index.js +6 -0
  103. package/runtime/node_modules/asn1.js/lib/asn1/encoders/pem.js +23 -0
  104. package/runtime/node_modules/asn1.js/lib/asn1.js +11 -0
  105. package/runtime/node_modules/asn1.js/package.json +36 -0
  106. package/runtime/node_modules/bn.js/LICENSE +19 -0
  107. package/runtime/node_modules/bn.js/README.md +200 -0
  108. package/runtime/node_modules/bn.js/lib/bn.js +3463 -0
  109. package/runtime/node_modules/bn.js/package.json +36 -0
  110. package/runtime/node_modules/bn.js/util/genCombMulTo.js +65 -0
  111. package/runtime/node_modules/bn.js/util/genCombMulTo10.js +65 -0
  112. package/runtime/node_modules/buffer-equal-constant-time/.travis.yml +4 -0
  113. package/runtime/node_modules/buffer-equal-constant-time/LICENSE.txt +12 -0
  114. package/runtime/node_modules/buffer-equal-constant-time/README.md +50 -0
  115. package/runtime/node_modules/buffer-equal-constant-time/index.js +41 -0
  116. package/runtime/node_modules/buffer-equal-constant-time/package.json +21 -0
  117. package/runtime/node_modules/buffer-equal-constant-time/test.js +42 -0
  118. package/runtime/node_modules/debug/LICENSE +20 -0
  119. package/runtime/node_modules/debug/README.md +481 -0
  120. package/runtime/node_modules/debug/package.json +64 -0
  121. package/runtime/node_modules/debug/src/browser.js +272 -0
  122. package/runtime/node_modules/debug/src/common.js +292 -0
  123. package/runtime/node_modules/debug/src/index.js +10 -0
  124. package/runtime/node_modules/debug/src/node.js +263 -0
  125. package/runtime/node_modules/ecdsa-sig-formatter/CODEOWNERS +1 -0
  126. package/runtime/node_modules/ecdsa-sig-formatter/LICENSE +201 -0
  127. package/runtime/node_modules/ecdsa-sig-formatter/README.md +65 -0
  128. package/runtime/node_modules/ecdsa-sig-formatter/package.json +46 -0
  129. package/runtime/node_modules/ecdsa-sig-formatter/src/ecdsa-sig-formatter.js +187 -0
  130. package/runtime/node_modules/ecdsa-sig-formatter/src/param-bytes-for-alg.js +23 -0
  131. package/runtime/node_modules/http_ece/README.md +27 -0
  132. package/runtime/node_modules/http_ece/ece.js +528 -0
  133. package/runtime/node_modules/http_ece/package.json +27 -0
  134. package/runtime/node_modules/https-proxy-agent/LICENSE +22 -0
  135. package/runtime/node_modules/https-proxy-agent/README.md +70 -0
  136. package/runtime/node_modules/https-proxy-agent/dist/index.js +180 -0
  137. package/runtime/node_modules/https-proxy-agent/dist/parse-proxy-response.js +101 -0
  138. package/runtime/node_modules/https-proxy-agent/package.json +50 -0
  139. package/runtime/node_modules/inherits/LICENSE +16 -0
  140. package/runtime/node_modules/inherits/README.md +42 -0
  141. package/runtime/node_modules/inherits/inherits.js +9 -0
  142. package/runtime/node_modules/inherits/inherits_browser.js +27 -0
  143. package/runtime/node_modules/inherits/package.json +29 -0
  144. package/runtime/node_modules/jwa/LICENSE +17 -0
  145. package/runtime/node_modules/jwa/README.md +150 -0
  146. package/runtime/node_modules/jwa/index.js +266 -0
  147. package/runtime/node_modules/jwa/opslevel.yml +6 -0
  148. package/runtime/node_modules/jwa/package.json +37 -0
  149. package/runtime/node_modules/jws/CHANGELOG.md +56 -0
  150. package/runtime/node_modules/jws/LICENSE +17 -0
  151. package/runtime/node_modules/jws/index.js +22 -0
  152. package/runtime/node_modules/jws/lib/data-stream.js +55 -0
  153. package/runtime/node_modules/jws/lib/sign-stream.js +83 -0
  154. package/runtime/node_modules/jws/lib/tostring.js +10 -0
  155. package/runtime/node_modules/jws/lib/verify-stream.js +125 -0
  156. package/runtime/node_modules/jws/opslevel.yml +6 -0
  157. package/runtime/node_modules/jws/package.json +34 -0
  158. package/runtime/node_modules/jws/readme.md +255 -0
  159. package/runtime/node_modules/mediabunny/dist/bundles/mediabunny.cjs +551 -182
  160. package/runtime/node_modules/mediabunny/dist/bundles/mediabunny.min.cjs +13 -13
  161. package/runtime/node_modules/mediabunny/dist/bundles/mediabunny.min.mjs +13 -13
  162. package/runtime/node_modules/mediabunny/dist/bundles/mediabunny.mjs +551 -182
  163. package/runtime/node_modules/mediabunny/dist/bundles/mediabunny.node.cjs +551 -182
  164. package/runtime/node_modules/mediabunny/dist/modules/src/conversion.js +69 -8
  165. package/runtime/node_modules/mediabunny/dist/modules/src/encode.js +8 -2
  166. package/runtime/node_modules/mediabunny/dist/modules/src/hls/hls-demuxer.js +2 -2
  167. package/runtime/node_modules/mediabunny/dist/modules/src/hls/hls-muxer.js +5 -3
  168. package/runtime/node_modules/mediabunny/dist/modules/src/hls/hls-segmented-input.js +3 -2
  169. package/runtime/node_modules/mediabunny/dist/modules/src/input-track.js +26 -6
  170. package/runtime/node_modules/mediabunny/dist/modules/src/isobmff/isobmff-boxes.js +26 -39
  171. package/runtime/node_modules/mediabunny/dist/modules/src/isobmff/isobmff-demuxer.js +44 -30
  172. package/runtime/node_modules/mediabunny/dist/modules/src/isobmff/isobmff-muxer.js +52 -0
  173. package/runtime/node_modules/mediabunny/dist/modules/src/matroska/ebml.js +2 -0
  174. package/runtime/node_modules/mediabunny/dist/modules/src/matroska/matroska-demuxer.js +40 -3
  175. package/runtime/node_modules/mediabunny/dist/modules/src/matroska/matroska-muxer.js +49 -9
  176. package/runtime/node_modules/mediabunny/dist/modules/src/media-sink.js +15 -4
  177. package/runtime/node_modules/mediabunny/dist/modules/src/media-source.js +62 -41
  178. package/runtime/node_modules/mediabunny/dist/modules/src/misc.js +79 -0
  179. package/runtime/node_modules/mediabunny/dist/modules/src/mpeg-ts/mpeg-ts-demuxer.js +3 -3
  180. package/runtime/node_modules/mediabunny/dist/modules/src/output-format.js +18 -11
  181. package/runtime/node_modules/mediabunny/dist/modules/src/output.js +21 -5
  182. package/runtime/node_modules/mediabunny/dist/modules/src/sample.js +72 -16
  183. package/runtime/node_modules/mediabunny/dist/modules/src/segmented-input.js +2 -2
  184. package/runtime/node_modules/mediabunny/dist/modules/src/source.js +6 -4
  185. package/runtime/node_modules/mediabunny/dist/modules/src/tsconfig.tsbuildinfo +1 -1
  186. package/runtime/node_modules/mediabunny/package.json +1 -1
  187. package/runtime/node_modules/mediabunny/src/conversion.ts +111 -14
  188. package/runtime/node_modules/mediabunny/src/encode.ts +71 -10
  189. package/runtime/node_modules/mediabunny/src/hls/hls-demuxer.ts +3 -3
  190. package/runtime/node_modules/mediabunny/src/hls/hls-muxer.ts +5 -3
  191. package/runtime/node_modules/mediabunny/src/hls/hls-segmented-input.ts +3 -2
  192. package/runtime/node_modules/mediabunny/src/index.ts +1 -0
  193. package/runtime/node_modules/mediabunny/src/input-track.ts +37 -7
  194. package/runtime/node_modules/mediabunny/src/isobmff/isobmff-boxes.ts +36 -45
  195. package/runtime/node_modules/mediabunny/src/isobmff/isobmff-demuxer.ts +51 -38
  196. package/runtime/node_modules/mediabunny/src/isobmff/isobmff-muxer.ts +66 -0
  197. package/runtime/node_modules/mediabunny/src/matroska/ebml.ts +2 -0
  198. package/runtime/node_modules/mediabunny/src/matroska/matroska-demuxer.ts +47 -2
  199. package/runtime/node_modules/mediabunny/src/matroska/matroska-muxer.ts +56 -8
  200. package/runtime/node_modules/mediabunny/src/media-sink.ts +22 -6
  201. package/runtime/node_modules/mediabunny/src/media-source.ts +60 -44
  202. package/runtime/node_modules/mediabunny/src/misc.ts +123 -1
  203. package/runtime/node_modules/mediabunny/src/mpeg-ts/mpeg-ts-demuxer.ts +4 -3
  204. package/runtime/node_modules/mediabunny/src/output-format.ts +20 -13
  205. package/runtime/node_modules/mediabunny/src/output.ts +49 -6
  206. package/runtime/node_modules/mediabunny/src/sample.ts +125 -35
  207. package/runtime/node_modules/mediabunny/src/segmented-input.ts +2 -2
  208. package/runtime/node_modules/mediabunny/src/source.ts +6 -4
  209. package/runtime/node_modules/minimalistic-assert/LICENSE +13 -0
  210. package/runtime/node_modules/minimalistic-assert/index.js +11 -0
  211. package/runtime/node_modules/minimalistic-assert/package.json +19 -0
  212. package/runtime/node_modules/minimalistic-assert/readme.md +4 -0
  213. package/runtime/node_modules/minimist/.eslintrc +29 -0
  214. package/runtime/node_modules/minimist/.github/FUNDING.yml +12 -0
  215. package/runtime/node_modules/minimist/.nycrc +14 -0
  216. package/runtime/node_modules/minimist/CHANGELOG.md +298 -0
  217. package/runtime/node_modules/minimist/LICENSE +18 -0
  218. package/runtime/node_modules/minimist/README.md +121 -0
  219. package/runtime/node_modules/minimist/example/parse.js +4 -0
  220. package/runtime/node_modules/minimist/index.js +263 -0
  221. package/runtime/node_modules/minimist/package.json +75 -0
  222. package/runtime/node_modules/minimist/test/all_bool.js +34 -0
  223. package/runtime/node_modules/minimist/test/bool.js +177 -0
  224. package/runtime/node_modules/minimist/test/dash.js +43 -0
  225. package/runtime/node_modules/minimist/test/default_bool.js +37 -0
  226. package/runtime/node_modules/minimist/test/dotted.js +24 -0
  227. package/runtime/node_modules/minimist/test/kv_short.js +32 -0
  228. package/runtime/node_modules/minimist/test/long.js +33 -0
  229. package/runtime/node_modules/minimist/test/num.js +38 -0
  230. package/runtime/node_modules/minimist/test/parse.js +209 -0
  231. package/runtime/node_modules/minimist/test/parse_modified.js +11 -0
  232. package/runtime/node_modules/minimist/test/proto.js +64 -0
  233. package/runtime/node_modules/minimist/test/short.js +69 -0
  234. package/runtime/node_modules/minimist/test/stop_early.js +17 -0
  235. package/runtime/node_modules/minimist/test/unknown.js +104 -0
  236. package/runtime/node_modules/minimist/test/whitespace.js +10 -0
  237. package/runtime/node_modules/safe-buffer/LICENSE +21 -0
  238. package/runtime/node_modules/safe-buffer/README.md +584 -0
  239. package/runtime/node_modules/safe-buffer/index.js +65 -0
  240. package/runtime/node_modules/safe-buffer/package.json +51 -0
  241. package/runtime/node_modules/safer-buffer/LICENSE +21 -0
  242. package/runtime/node_modules/safer-buffer/Porting-Buffer.md +268 -0
  243. package/runtime/node_modules/safer-buffer/Readme.md +156 -0
  244. package/runtime/node_modules/safer-buffer/dangerous.js +58 -0
  245. package/runtime/node_modules/safer-buffer/package.json +34 -0
  246. package/runtime/node_modules/safer-buffer/safer.js +77 -0
  247. package/runtime/node_modules/safer-buffer/tests.js +406 -0
  248. package/runtime/node_modules/web-push/LICENSE +5 -0
  249. package/runtime/node_modules/web-push/README.md +599 -0
  250. package/runtime/node_modules/web-push/package.json +55 -0
  251. package/runtime/node_modules/web-push/src/cli.js +131 -0
  252. package/runtime/node_modules/web-push/src/encryption-helper.js +62 -0
  253. package/runtime/node_modules/web-push/src/index.js +21 -0
  254. package/runtime/node_modules/web-push/src/urlsafe-base64-helper.js +13 -0
  255. package/runtime/node_modules/web-push/src/vapid-helper.js +255 -0
  256. package/runtime/node_modules/web-push/src/web-push-constants.js +17 -0
  257. package/runtime/node_modules/web-push/src/web-push-error.js +16 -0
  258. package/runtime/node_modules/web-push/src/web-push-lib.js +413 -0
  259. package/runtime/package-lock.json +204 -43
  260. package/runtime/package.json +1 -0
  261. package/runtime/public/pwa/service-worker.js +27 -0
  262. package/runtime/webapp/dist/assets/App-BV4kYZkz.js +401 -0
  263. package/runtime/webapp/dist/assets/{abnfDiagram-VCTEODGH-CT00lYFm.js → abnfDiagram-VCTEODGH-Do5AcuX_.js} +1 -1
  264. package/runtime/webapp/dist/assets/{arc-Fv5QM25j.js → arc-BkMRM5qT.js} +1 -1
  265. package/runtime/webapp/dist/assets/{architectureDiagram-5GKGNRK7-BKWxsS8H.js → architectureDiagram-5GKGNRK7-B5TsBL43.js} +1 -1
  266. package/runtime/webapp/dist/assets/{blockDiagram-I7D4REHJ-CmEumI86.js → blockDiagram-I7D4REHJ-N9bJqBUB.js} +1 -1
  267. package/runtime/webapp/dist/assets/{c4Diagram-7LVT6UL2-CbADRPNr.js → c4Diagram-7LVT6UL2-BxVjL6yS.js} +1 -1
  268. package/runtime/webapp/dist/assets/channel-DnRSB32E.js +1 -0
  269. package/runtime/webapp/dist/assets/{chunk-2Q5K7J3B-DQPIpgN4.js → chunk-2Q5K7J3B-CRlvnk-H.js} +1 -1
  270. package/runtime/webapp/dist/assets/{chunk-5VM5RSS4-Cax2Ysa4.js → chunk-5VM5RSS4-CTfTpmju.js} +1 -1
  271. package/runtime/webapp/dist/assets/{chunk-F27PBJKO-DAfGEmNQ.js → chunk-F27PBJKO-DRIdilcI.js} +1 -1
  272. package/runtime/webapp/dist/assets/{chunk-IMKFNOWR-ClX_f2s5.js → chunk-IMKFNOWR-DbbH1n_L.js} +1 -1
  273. package/runtime/webapp/dist/assets/{chunk-JWPE2WC7-C5tLAiHZ.js → chunk-JWPE2WC7-Dia-9cuw.js} +1 -1
  274. package/runtime/webapp/dist/assets/{chunk-POPQ4Y6H-m1AwR43e.js → chunk-POPQ4Y6H-CIL5fACk.js} +1 -1
  275. package/runtime/webapp/dist/assets/{chunk-SVP7TREG-CFM_BTtZ.js → chunk-SVP7TREG-S-3ji33i.js} +1 -1
  276. package/runtime/webapp/dist/assets/{chunk-TICWLB2K-CSbWv0os.js → chunk-TICWLB2K-BJ_fyq9q.js} +1 -1
  277. package/runtime/webapp/dist/assets/{chunk-XXDRQBXY-DTh78zvB.js → chunk-XXDRQBXY-BblxA1iR.js} +1 -1
  278. package/runtime/webapp/dist/assets/classDiagram-ZZMXUADV-D-wXeWBH.js +1 -0
  279. package/runtime/webapp/dist/assets/classDiagram-v2-VYDZK3BY-D-wXeWBH.js +1 -0
  280. package/runtime/webapp/dist/assets/{cose-bilkent-JH36ORCC-DWo8dbXz.js → cose-bilkent-JH36ORCC-BGwRGiQo.js} +1 -1
  281. package/runtime/webapp/dist/assets/{cynefin-OW5HDTMX-lcJl1pnZ.js → cynefin-OW5HDTMX-DFEzwQRu.js} +1 -1
  282. package/runtime/webapp/dist/assets/{cynefinDiagram-5FMLGOSQ-DwnK5JqN.js → cynefinDiagram-5FMLGOSQ-CzihU8wO.js} +1 -1
  283. package/runtime/webapp/dist/assets/{dagre-GXQ25YYZ-3BBJLkWK.js → dagre-GXQ25YYZ-DJKewYwF.js} +1 -1
  284. package/runtime/webapp/dist/assets/{diagram-S7CK7UJ4-DrN6lPsH.js → diagram-S7CK7UJ4-BNUrI1hE.js} +1 -1
  285. package/runtime/webapp/dist/assets/{diagram-UQ7AKVKN-COA1nA4B.js → diagram-UQ7AKVKN-cw_cw9ua.js} +1 -1
  286. package/runtime/webapp/dist/assets/{diagram-VSXAHHWV-DIdHCL1P.js → diagram-VSXAHHWV-C4T-8Eca.js} +1 -1
  287. package/runtime/webapp/dist/assets/{diagram-VX7I27RA-t1shJPPg.js → diagram-VX7I27RA-MyuLlrpw.js} +1 -1
  288. package/runtime/webapp/dist/assets/{diagram-Z3DM3KII-D-VR6NmP.js → diagram-Z3DM3KII-BzWxssBs.js} +1 -1
  289. package/runtime/webapp/dist/assets/{ebnfDiagram-PWID7BFC-Ce-6exiS.js → ebnfDiagram-PWID7BFC-CjvfkFRI.js} +1 -1
  290. package/runtime/webapp/dist/assets/{erDiagram-RLTQ6QDP-Dtilgs0V.js → erDiagram-RLTQ6QDP-CVWTAwhU.js} +1 -1
  291. package/runtime/webapp/dist/assets/{flowDiagram-HODETNUW-qcOyWGCH.js → flowDiagram-HODETNUW-CT-NnFSy.js} +1 -1
  292. package/runtime/webapp/dist/assets/{ganttDiagram-EL5Y4UJY-r2nLnELD.js → ganttDiagram-EL5Y4UJY-3qfHOqqu.js} +1 -1
  293. package/runtime/webapp/dist/assets/{gitGraphDiagram-WWUBYQGX-P67iGTE1.js → gitGraphDiagram-WWUBYQGX-CPFHC6Vp.js} +1 -1
  294. package/runtime/webapp/dist/assets/{index-H7WqRbZM.css → index-STW1N_Ms.css} +1 -1
  295. package/runtime/webapp/dist/assets/{index-CmYQMaUa.js → index-tLqfv8or.js} +31 -30
  296. package/runtime/webapp/dist/assets/{infoDiagram-27XIBGKW-DV9ddoir.js → infoDiagram-27XIBGKW-Cdsia2Nv.js} +1 -1
  297. package/runtime/webapp/dist/assets/{ishikawaDiagram-5VMMS53U-ByS4OD_b.js → ishikawaDiagram-5VMMS53U-0b21noVS.js} +1 -1
  298. package/runtime/webapp/dist/assets/{journeyDiagram-3NMN7TZE-Sn-eaZrm.js → journeyDiagram-3NMN7TZE-KZX3onG9.js} +1 -1
  299. package/runtime/webapp/dist/assets/{kanban-definition-UXKFOSKX-DWp3q1QB.js → kanban-definition-UXKFOSKX-B4V1PurW.js} +1 -1
  300. package/runtime/webapp/dist/assets/{layout-BjYZFjxx.js → layout-BfWjcmci.js} +1 -1
  301. package/runtime/webapp/dist/assets/{linear-21hgM53h.js → linear-BwHZSu70.js} +1 -1
  302. package/runtime/webapp/dist/assets/{mermaid.core-QMwFoHhS.js → mermaid.core-CS-Qck8A.js} +5 -5
  303. package/runtime/webapp/dist/assets/{mindmap-definition-YA3MSWOX-Cmnvdkj7.js → mindmap-definition-YA3MSWOX-BK0xfb1e.js} +1 -1
  304. package/runtime/webapp/dist/assets/{pegDiagram-XKGWAZYB-BM5-bbOK.js → pegDiagram-XKGWAZYB-B_qjctIX.js} +1 -1
  305. package/runtime/webapp/dist/assets/{pieDiagram-E7YTZNPT-Tfae_ZTv.js → pieDiagram-E7YTZNPT-DugWyRMR.js} +1 -1
  306. package/runtime/webapp/dist/assets/{quadrantDiagram-AXDQQJYC-PLzcXuZy.js → quadrantDiagram-AXDQQJYC-BBt0PqPR.js} +1 -1
  307. package/runtime/webapp/dist/assets/{railroadDiagram-O6MQD6OU-BJDnCUso.js → railroadDiagram-O6MQD6OU-M_FTNokn.js} +1 -1
  308. package/runtime/webapp/dist/assets/{requirementDiagram-BXWQKSXE-BObDx-Im.js → requirementDiagram-BXWQKSXE-D9zuyiF1.js} +1 -1
  309. package/runtime/webapp/dist/assets/{sankeyDiagram-P5KCCOFB-CWXm08jn.js → sankeyDiagram-P5KCCOFB-D3gs7s8w.js} +1 -1
  310. package/runtime/webapp/dist/assets/{sequenceDiagram-WJ2MYXX4-CNi7Y6vE.js → sequenceDiagram-WJ2MYXX4-BOpItJnp.js} +1 -1
  311. package/runtime/webapp/dist/assets/{sizeCapture-INFHLROL-Bfs6AeRE.js → sizeCapture-INFHLROL-TbA5bDD8.js} +1 -1
  312. package/runtime/webapp/dist/assets/{stateDiagram-D77RDMKH-CMCCDGvi.js → stateDiagram-D77RDMKH-iJ3XA-NR.js} +1 -1
  313. package/runtime/webapp/dist/assets/stateDiagram-v2-MP3YSRHH-By07NE3B.js +1 -0
  314. package/runtime/webapp/dist/assets/{swimlanes-42K2YHIH-D1jbx79A.js → swimlanes-42K2YHIH-BqtIE9-u.js} +1 -1
  315. package/runtime/webapp/dist/assets/swimlanesDiagram-VR7AAH4N-C_L079nV.js +8 -0
  316. package/runtime/webapp/dist/assets/{timeline-definition-24CTP7MA-BhcJt_mq.js → timeline-definition-24CTP7MA-BCOCspQ_.js} +1 -1
  317. package/runtime/webapp/dist/assets/{vennDiagram-4TSXK5OY-CoUGHQKb.js → vennDiagram-4TSXK5OY-CO_0QVh_.js} +1 -1
  318. package/runtime/webapp/dist/assets/{wardleyDiagram-VM6X3IG4-DF3Ve4Zs.js → wardleyDiagram-VM6X3IG4-Dy0r-jRc.js} +1 -1
  319. package/runtime/webapp/dist/assets/{web-qEkHTX32.js → web-B3KLX7M6.js} +1 -1
  320. package/runtime/webapp/dist/assets/{web-ClRCAyo6.js → web-Gjp2DwYg.js} +1 -1
  321. package/runtime/webapp/dist/assets/{xychartDiagram-S5SC5T6Z-C8stSAqq.js → xychartDiagram-S5SC5T6Z-up3gC77P.js} +1 -1
  322. package/runtime/webapp/dist/index.html +2 -2
  323. package/runtime/ws-server.mjs +42 -3
  324. package/runtime/webapp/dist/assets/App-788KEWm5.js +0 -401
  325. package/runtime/webapp/dist/assets/channel-BvYO7aeC.js +0 -1
  326. package/runtime/webapp/dist/assets/classDiagram-ZZMXUADV-UMhXPOS0.js +0 -1
  327. package/runtime/webapp/dist/assets/classDiagram-v2-VYDZK3BY-UMhXPOS0.js +0 -1
  328. package/runtime/webapp/dist/assets/stateDiagram-v2-MP3YSRHH-BuQXd4fh.js +0 -1
  329. package/runtime/webapp/dist/assets/swimlanesDiagram-VR7AAH4N-pQcu6qsa.js +0 -8
  330. /package/runtime/.next/static/{IeGvuS5SU2kpDMMRn472c → Pn3xFxbamPRIcU-GaUfkT}/_buildManifest.js +0 -0
  331. /package/runtime/.next/static/{IeGvuS5SU2kpDMMRn472c → Pn3xFxbamPRIcU-GaUfkT}/_ssgManifest.js +0 -0
@@ -1,10 +1,24 @@
1
- "use strict";(()=>{var e={};e.id=820,e.ids=[820],e.modules={5890:e=>{e.exports=require("better-sqlite3")},399:e=>{e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},517:e=>{e.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},1282:e=>{e.exports=require("child_process")},2048:e=>{e.exports=require("fs")},9801:e=>{e.exports=require("os")},5315:e=>{e.exports=require("path")},2728:e=>{e.exports=import("@anthropic-ai/claude-agent-sdk")},7718:e=>{e.exports=require("node:child_process")},6005:e=>{e.exports=require("node:crypto")},5673:e=>{e.exports=require("node:events")},7561:e=>{e.exports=require("node:fs")},3977:e=>{e.exports=require("node:fs/promises")},8849:e=>{e.exports=require("node:http")},2286:e=>{e.exports=require("node:https")},2033:e=>{e.exports=require("node:module")},7503:e=>{e.exports=require("node:net")},612:e=>{e.exports=require("node:os")},9411:e=>{e.exports=require("node:path")},1747:e=>{e.exports=require("node:readline")},6915:e=>{e.exports=require("node:string_decoder")},1041:e=>{e.exports=require("node:url")},5881:e=>{e.exports=require("node:util")},2190:(e,t,r)=>{r.a(e,async(e,s)=>{try{r.r(t),r.d(t,{originalPathname:()=>g,patchFetch:()=>l,requestAsyncStorage:()=>d,routeModule:()=>u,serverHooks:()=>p,staticGenerationAsyncStorage:()=>h});var n=r(7786),a=r(5042),i=r(2184),o=r(8632),c=e([o]);o=(c.then?(await c)():c)[0];let u=new n.AppRouteRouteModule({definition:{kind:a.x.APP_ROUTE,page:"/api/agent/stream/route",pathname:"/api/agent/stream",filename:"route",bundlePath:"app/api/agent/stream/route"},resolvedPagePath:"/Users/caoqu/team-agent/customer-agent/packages/server/app/api/agent/stream/route.ts",nextConfigOutput:"standalone",userland:o}),{requestAsyncStorage:d,staticGenerationAsyncStorage:h,serverHooks:p}=u,g="/api/agent/stream/route";function l(){return(0,i.patchFetch)({serverHooks:p,staticGenerationAsyncStorage:h})}s()}catch(e){s(e)}})},7786:(e,t,r)=>{e.exports=r(517)},8632:(e,t,r)=>{r.a(e,async(e,s)=>{try{r.r(t),r.d(t,{GET:()=>o});var n=r(4537),a=r(2083),i=e([a]);async function o(e){let t=new URL(e.url).searchParams.get("sessionId");if(!t)return new Response("sessionId is required",{status:400});if((0,a.V_)(t))return c(e,t);let r=!1,s=null,i=null,o=new ReadableStream({start(a){let o=new TextEncoder,c=()=>{if(!r){r=!0,s?.(),s=null,i&&e.signal.removeEventListener("abort",i);try{a.close()}catch{}}},l=e=>{if(r)return!1;try{return a.enqueue(o.encode(e)),!0}catch{return c(),!1}};if(!l(": connected\n\n"))return;let u=e.headers.get("last-event-id"),d=Number.parseInt(u??"",10),h=new URL(e.url),p=Number.parseInt(h.searchParams.get("afterEventId")??"",10),g=Number.isSafeInteger(d)?d:Number.isSafeInteger(p)?p:n.agentHost.isSessionRunning(t)?0:n.agentHost.getLatestEventId(t);s=n.agentHost.subscribe(t,(e,t)=>{l(`id: ${t}
1
+ "use strict";(()=>{var e={};e.id=820,e.ids=[820],e.modules={5890:e=>{e.exports=require("better-sqlite3")},399:e=>{e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},517:e=>{e.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},1282:e=>{e.exports=require("child_process")},2048:e=>{e.exports=require("fs")},9801:e=>{e.exports=require("os")},5315:e=>{e.exports=require("path")},2728:e=>{e.exports=import("@anthropic-ai/claude-agent-sdk")},7718:e=>{e.exports=require("node:child_process")},6005:e=>{e.exports=require("node:crypto")},5673:e=>{e.exports=require("node:events")},7561:e=>{e.exports=require("node:fs")},3977:e=>{e.exports=require("node:fs/promises")},8849:e=>{e.exports=require("node:http")},2286:e=>{e.exports=require("node:https")},2033:e=>{e.exports=require("node:module")},7503:e=>{e.exports=require("node:net")},612:e=>{e.exports=require("node:os")},9411:e=>{e.exports=require("node:path")},1747:e=>{e.exports=require("node:readline")},6915:e=>{e.exports=require("node:string_decoder")},1041:e=>{e.exports=require("node:url")},5881:e=>{e.exports=require("node:util")},2190:(e,t,r)=>{r.a(e,async(e,s)=>{try{r.r(t),r.d(t,{originalPathname:()=>y,patchFetch:()=>l,requestAsyncStorage:()=>d,routeModule:()=>u,serverHooks:()=>p,staticGenerationAsyncStorage:()=>h});var i=r(7786),n=r(5042),a=r(2184),o=r(8632),c=e([o]);o=(c.then?(await c)():c)[0];let u=new i.AppRouteRouteModule({definition:{kind:n.x.APP_ROUTE,page:"/api/agent/stream/route",pathname:"/api/agent/stream",filename:"route",bundlePath:"app/api/agent/stream/route"},resolvedPagePath:"/Users/caoqu/team-agent/customer-agent/packages/server/app/api/agent/stream/route.ts",nextConfigOutput:"standalone",userland:o}),{requestAsyncStorage:d,staticGenerationAsyncStorage:h,serverHooks:p}=u,y="/api/agent/stream/route";function l(){return(0,a.patchFetch)({serverHooks:p,staticGenerationAsyncStorage:h})}s()}catch(e){s(e)}})},7786:(e,t,r)=>{e.exports=r(517)},8632:(e,t,r)=>{r.a(e,async(e,s)=>{try{r.r(t),r.d(t,{GET:()=>c});var i=r(4537),n=r(2083),a=r(1079),o=e([n]);async function c(e){(0,a.j)();let t=new URL(e.url).searchParams.get("sessionId");if(!t)return new Response("sessionId is required",{status:400});if((0,n.V_)(t))return l(e,t);let r=!1,s=null,o=null,c=new ReadableStream({start(n){let a=new TextEncoder,c=()=>{if(!r){r=!0,s?.(),s=null,o&&e.signal.removeEventListener("abort",o);try{n.close()}catch{}}},l=e=>{if(r)return!1;try{return n.enqueue(a.encode(e)),!0}catch{return c(),!1}};if(!l(": connected\n\n"))return;let u=e.headers.get("last-event-id"),d=Number.parseInt(u??"",10),h=new URL(e.url),p=Number.parseInt(h.searchParams.get("afterEventId")??"",10),y=Number.isSafeInteger(d)?d:Number.isSafeInteger(p)?p:i.agentHost.isSessionRunning(t)?0:i.agentHost.getLatestEventId(t);s=i.agentHost.subscribe(t,(e,t)=>{l(`id: ${t}
2
2
  data: ${JSON.stringify(e)}
3
3
 
4
- `)&&("done"===e.type||"error"===e.type)&&c()},g),i=c,e.signal.aborted?c():e.signal.addEventListener("abort",i,{once:!0})},cancel(){r=!0,s?.(),s=null,i&&e.signal.removeEventListener("abort",i)}});return new Response(o,{headers:{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"}})}async function c(e,t){let r=!1,s=null,n=null,i=(0,a.NL)(),o=new URL(e.url),c=Number.parseInt(o.searchParams.get("afterSequence")??"",10),l=o.searchParams.get("afterRunId"),u=e.headers.get("last-event-id"),d=new ReadableStream({async start(a){let o=new TextEncoder,d=()=>{if(!r){r=!0,s?.(),s=null,n&&e.signal.removeEventListener("abort",n);try{a.close()}catch{}}},h=e=>{if(r)return!1;try{return a.enqueue(o.encode(e)),!0}catch{return d(),!1}};if(h(": connected\n\n"))try{let r=await i.snapshot(t),a=function(e){if(!e)return null;let t=e.lastIndexOf(":");if(t<0){let t=Number.parseInt(e,10);return Number.isSafeInteger(t)?{runId:null,sequence:t}:null}let r=e.slice(0,t),s=Number.parseInt(e.slice(t+1),10);return r&&Number.isSafeInteger(s)?{runId:r,sequence:s}:null}(u),o=Number.isSafeInteger(c)?{runId:l,sequence:c}:null,p=a??o,g=p?p.runId&&p.runId!==r.runId?0:p.sequence:r.snapshotRevision;s=await i.subscribe(t,g,({runId:e,sequence:t,event:r})=>{let s={...r,_nativeRunId:e,_nativeSequence:t};h(`id: ${e}:${t}
4
+ `)&&("done"===e.type||"error"===e.type)&&c()},y),o=c,e.signal.aborted?c():e.signal.addEventListener("abort",o,{once:!0})},cancel(){r=!0,s?.(),s=null,o&&e.signal.removeEventListener("abort",o)}});return new Response(c,{headers:{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"}})}async function l(e,t){let r=!1,s=null,i=null,a=(0,n.NL)(),o=new URL(e.url),c=Number.parseInt(o.searchParams.get("afterSequence")??"",10),l=o.searchParams.get("afterRunId"),u=e.headers.get("last-event-id"),d=new ReadableStream({async start(n){let o=new TextEncoder,d=()=>{if(!r){r=!0,s?.(),s=null,i&&e.signal.removeEventListener("abort",i);try{n.close()}catch{}}},h=e=>{if(r)return!1;try{return n.enqueue(o.encode(e)),!0}catch{return d(),!1}};if(h(": connected\n\n"))try{let r=await a.snapshot(t),n=function(e){if(!e)return null;let t=e.lastIndexOf(":");if(t<0){let t=Number.parseInt(e,10);return Number.isSafeInteger(t)?{runId:null,sequence:t}:null}let r=e.slice(0,t),s=Number.parseInt(e.slice(t+1),10);return r&&Number.isSafeInteger(s)?{runId:r,sequence:s}:null}(u),o=Number.isSafeInteger(c)?{runId:l,sequence:c}:null,p=n??o,y=p?p.runId&&p.runId!==r.runId?0:p.sequence:r.snapshotRevision;s=await a.subscribe(t,y,({runId:e,sequence:t,event:r})=>{let s={...r,_nativeRunId:e,_nativeSequence:t};h(`id: ${e}:${t}
5
5
  data: ${JSON.stringify(s)}
6
6
 
7
- `)&&("done"===r.type||"error"===r.type)&&d()}),n=d,e.signal.aborted?d():e.signal.addEventListener("abort",n,{once:!0})}catch(e){h(`event: error
7
+ `)&&("done"===r.type||"error"===r.type)&&d()}),i=d,e.signal.aborted?d():e.signal.addEventListener("abort",i,{once:!0})}catch(e){h(`event: error
8
8
  data: ${JSON.stringify({type:"error",message:e instanceof Error?e.message:"Native stream failed"})}
9
9
 
10
- `),d()}},cancel(){r=!0,s?.(),s=null,n&&e.signal.removeEventListener("abort",n)}});return new Response(d,{headers:{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"}})}a=(i.then?(await i)():i)[0],s()}catch(e){s(e)}})},1436:(e,t,r)=>{r.d(t,{N:()=>d});var s=r(1322),n=r(7561),a=r(9411);class i{constructor(e){this._acquired=!1,this.lockPath=e.replace(/scheduled_tasks\.json$/,".scheduler.lock")}get acquired(){return this._acquired}tryAcquire(){if(this._acquired)return!0;if((0,n.existsSync)(this.lockPath))try{let e=parseInt((0,n.readFileSync)(this.lockPath,"utf-8").trim(),10);if(!isNaN(e)&&e!==process.pid)try{return process.kill(e,0),!1}catch{}}catch{}try{let e=(0,a.dirname)(this.lockPath);return(0,n.existsSync)(e)||(0,n.mkdirSync)(e,{recursive:!0}),(0,n.writeFileSync)(this.lockPath,String(process.pid),"utf-8"),this._acquired=!0,!0}catch{return!1}}release(){if(this._acquired){try{(0,n.unlinkSync)(this.lockPath)}catch{}this._acquired=!1}}}class o{constructor(e,t,r){this.cronTasks=e,this.onFire=t,this.onTasksChanged=r,this.timer=null,this.watcher=null,this.started=!1,this.lock=new i(e.getFilePath())}start(){if(!this.started){if(!this.lock.tryAcquire()){console.warn("[CronScheduler] Another process holds the scheduler lock — skipping start.");return}this.started=!0,this.timer=setInterval(()=>{this.tick()},1e3),this.startFileWatcher(),console.log(`[CronScheduler] Started (PID=${process.pid})`)}}stop(){this.started&&(this.started=!1,this.timer&&(clearInterval(this.timer),this.timer=null),this.watcher&&(this.watcher.close(),this.watcher=null),this.lock.release(),console.log("[CronScheduler] Stopped."))}startFileWatcher(){let e=this.cronTasks.getFilePath(),t=(0,a.dirname)(e);if(!(0,n.existsSync)(t))try{(0,n.mkdirSync)(t,{recursive:!0})}catch{}try{this.watcher=(0,n.watch)(t,{persistent:!1},(e,t)=>{"scheduled_tasks.json"===t&&this.onTasksChanged(this.cronTasks.load())})}catch(e){console.warn("[CronScheduler] Could not start file watcher:",e)}}async tick(){let e=Date.now(),t=this.cronTasks.load(),r=!1;for(let n of t)n.enabled&&n.nextFireAt&&!(n.nextFireAt>e)&&(this.onFire(n),n.recurring?this.cronTasks.update(n.id,{nextFireAt:(0,s.Ilu)(n.cron,e),lastFiredAt:e}):this.cronTasks.delete(n.id),r=!0);r&&this.onTasksChanged(this.cronTasks.load())}}var c=r(785);class l{constructor(){this.tasks=new s.vo4((0,c.kO)()),this.scheduler=new o(this.tasks,e=>{this.fire(e).catch(e=>console.error("Scheduled Customer Agent run failed",e))},()=>{}),this.scheduler.start()}async fire(e){let{agentHost:t}=await r.e(4537).then(r.bind(r,4537)),{getCustomerGoalCoordinator:s}=await Promise.all([r.e(4537),r.e(732)]).then(r.bind(r,732)),n=e.sessionId;n&&await t.getSessionStore().get(n)||(n=(await t.createSession(e.label||"定时任务")).id,this.tasks.update(e.id,{sessionId:n})),await s().enqueue(n,e.prompt)}call(e,t){let r=String(t[0]||"");switch(e){case"cronList":return this.tasks.list();case"cronCreate":{if("string"!=typeof t[0]||"string"!=typeof t[1]||!t[1].trim())throw Error("cron and prompt required");let e=t[2]&&"object"==typeof t[2]?t[2]:{};return this.tasks.create({cron:t[0],prompt:t[1],recurring:!1!==e.recurring,enabled:!0,durable:!0,..."string"==typeof e.sessionId?{sessionId:e.sessionId}:{},..."string"==typeof e.label?{label:e.label}:{}})}case"cronPause":return this.tasks.pause(r);case"cronResume":return this.tasks.resume(r);case"cronDelete":return this.tasks.delete(r);case"cronDeleteAll":return this.tasks.deleteAll(),{ok:!0};default:throw Error("Unsupported schedule operation")}}}let u=globalThis;function d(){return u.__sharedCronService??=new l}}};var t=require("../../../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),s=t.X(0,[8375,6244,1322,4621,2083,4537],()=>r(2190));module.exports=s})();
10
+ `),d()}},cancel(){r=!0,s?.(),s=null,i&&e.signal.removeEventListener("abort",i)}});return new Response(d,{headers:{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"}})}n=(o.then?(await o)():o)[0],s()}catch(e){s(e)}})},1079:(e,t,r)=>{r.d(t,{j:()=>o});var s=r(4537),i=r(3931),n=r(535);let a=!1;function o(){a||(a=!0,s.agentHost.setGlobalEventObserver((e,t)=>{try{if("ask_user"===t.type){(0,i.i)().notifySession({sessionId:e,kind:"approval",title:"需要你的审批",body:"string"==typeof t.question&&t.question.trim()?t.question.trim().slice(0,160):"会话正在等待确认",url:"/app/"});return}if("done"===t.type){(0,i.i)().notifySession({sessionId:e,kind:"done",title:"会话已完成",body:"string"==typeof t.finalText&&t.finalText.trim()?t.finalText.trim().slice(0,160):"运行已结束",url:"/app/"});return}"error"===t.type&&(0,i.i)().notifySession({sessionId:e,kind:"error",title:"会话出错",body:"string"==typeof t.message&&t.message.trim()?t.message.trim().slice(0,160):"运行失败",url:"/app/"})}catch(t){(0,n.L)().warn("web push notify failed",{sessionId:e,error:t instanceof Error?t.message:String(t)})}}))}},1436:(e,t,r)=>{r.d(t,{N:()=>d});var s=r(1322),i=r(7561),n=r(9411);class a{constructor(e){this._acquired=!1,this.lockPath=e.replace(/scheduled_tasks\.json$/,".scheduler.lock")}get acquired(){return this._acquired}tryAcquire(){if(this._acquired)return!0;if((0,i.existsSync)(this.lockPath))try{let e=parseInt((0,i.readFileSync)(this.lockPath,"utf-8").trim(),10);if(!isNaN(e)&&e!==process.pid)try{return process.kill(e,0),!1}catch{}}catch{}try{let e=(0,n.dirname)(this.lockPath);return(0,i.existsSync)(e)||(0,i.mkdirSync)(e,{recursive:!0}),(0,i.writeFileSync)(this.lockPath,String(process.pid),"utf-8"),this._acquired=!0,!0}catch{return!1}}release(){if(this._acquired){try{(0,i.unlinkSync)(this.lockPath)}catch{}this._acquired=!1}}}class o{constructor(e,t,r){this.cronTasks=e,this.onFire=t,this.onTasksChanged=r,this.timer=null,this.watcher=null,this.started=!1,this.lock=new a(e.getFilePath())}start(){if(!this.started){if(!this.lock.tryAcquire()){console.warn("[CronScheduler] Another process holds the scheduler lock — skipping start.");return}this.started=!0,this.timer=setInterval(()=>{this.tick()},1e3),this.startFileWatcher(),console.log(`[CronScheduler] Started (PID=${process.pid})`)}}stop(){this.started&&(this.started=!1,this.timer&&(clearInterval(this.timer),this.timer=null),this.watcher&&(this.watcher.close(),this.watcher=null),this.lock.release(),console.log("[CronScheduler] Stopped."))}startFileWatcher(){let e=this.cronTasks.getFilePath(),t=(0,n.dirname)(e);if(!(0,i.existsSync)(t))try{(0,i.mkdirSync)(t,{recursive:!0})}catch{}try{this.watcher=(0,i.watch)(t,{persistent:!1},(e,t)=>{"scheduled_tasks.json"===t&&this.onTasksChanged(this.cronTasks.load())})}catch(e){console.warn("[CronScheduler] Could not start file watcher:",e)}}async tick(){let e=Date.now(),t=this.cronTasks.load(),r=!1;for(let i of t)i.enabled&&i.nextFireAt&&!(i.nextFireAt>e)&&(this.onFire(i),i.recurring?this.cronTasks.update(i.id,{nextFireAt:(0,s.Ilu)(i.cron,e),lastFiredAt:e}):this.cronTasks.delete(i.id),r=!0);r&&this.onTasksChanged(this.cronTasks.load())}}var c=r(785);class l{constructor(){this.tasks=new s.vo4((0,c.kO)()),this.scheduler=new o(this.tasks,e=>{this.fire(e).catch(e=>console.error("Scheduled Customer Agent run failed",e))},()=>{}),this.scheduler.start()}async fire(e){let{agentHost:t}=await r.e(4537).then(r.bind(r,4537)),{getCustomerGoalCoordinator:s}=await Promise.all([r.e(4537),r.e(732)]).then(r.bind(r,732)),i=e.sessionId;i&&await t.getSessionStore().get(i)||(i=(await t.createSession(e.label||"定时任务")).id,this.tasks.update(e.id,{sessionId:i})),await s().enqueue(i,e.prompt)}call(e,t){let r=String(t[0]||"");switch(e){case"cronList":return this.tasks.list();case"cronCreate":{if("string"!=typeof t[0]||"string"!=typeof t[1]||!t[1].trim())throw Error("cron and prompt required");let e=t[2]&&"object"==typeof t[2]?t[2]:{};return this.tasks.create({cron:t[0],prompt:t[1],recurring:!1!==e.recurring,enabled:!0,durable:!0,..."string"==typeof e.sessionId?{sessionId:e.sessionId}:{},..."string"==typeof e.label?{label:e.label}:{}})}case"cronPause":return this.tasks.pause(r);case"cronResume":return this.tasks.resume(r);case"cronDelete":return this.tasks.delete(r);case"cronDeleteAll":return this.tasks.deleteAll(),{ok:!0};default:throw Error("Unsupported schedule operation")}}}let u=globalThis;function d(){return u.__sharedCronService??=new l}},3931:(e,t,r)=>{r.d(t,{i:()=>h});var s=r(6005),i=r(7561),n=r(9411),a=r(5890);let o=require("web-push"),c=e=>JSON.stringify(e??null);class l{constructor(e,t=Date.now){this.now=t;let r=(0,n.resolve)(e,".agentroam-auth");(0,i.mkdirSync)(r,{recursive:!0,mode:448});let s=(0,n.join)(r,"push.sqlite");this.db=new a(s),(0,i.chmodSync)(s,384),this.db.pragma("busy_timeout = 5000"),this.db.exec(`
11
+ CREATE TABLE IF NOT EXISTS push_keys (id INTEGER PRIMARY KEY CHECK(id=1), public_key TEXT NOT NULL, private_key TEXT NOT NULL);
12
+ CREATE TABLE IF NOT EXISTS push_subscriptions (
13
+ endpoint_hash TEXT PRIMARY KEY,
14
+ endpoint TEXT NOT NULL,
15
+ p256dh TEXT NOT NULL,
16
+ auth TEXT NOT NULL,
17
+ device_id TEXT,
18
+ created INTEGER NOT NULL
19
+ );
20
+ `),this.keys=this.loadKeys(),this.lastNotified=new Map}loadKeys(){let e=this.db.prepare("SELECT public_key, private_key FROM push_keys WHERE id=1").get();if(e)return{publicKey:e.public_key,privateKey:e.private_key};let t=o.generateVAPIDKeys();return this.db.prepare("INSERT INTO push_keys VALUES (1, ?, ?)").run(t.publicKey,t.privateKey),{publicKey:t.publicKey,privateKey:t.privateKey}}getPublicKey(){return this.keys.publicKey}saveSubscription(e,t){let r="string"==typeof t?.endpoint?t.endpoint:"",s=t?.keys?.p256dh,i=t?.keys?.auth;if(!r.startsWith("https://")||"string"!=typeof s||!s||"string"!=typeof i||!i)throw Object.assign(Error("Invalid push subscription"),{status:400});return this.db.prepare(`
21
+ INSERT INTO push_subscriptions (endpoint_hash, endpoint, p256dh, auth, device_id, created)
22
+ VALUES (?, ?, ?, ?, ?, ?)
23
+ ON CONFLICT(endpoint_hash) DO UPDATE SET p256dh=excluded.p256dh, auth=excluded.auth, device_id=excluded.device_id
24
+ `).run(u(r),r,s,i,"string"==typeof e?e:null,this.now()),{ok:!0}}deleteSubscription(e){if("string"!=typeof e||!e)throw Object.assign(Error("Endpoint required"),{status:400});return this.db.prepare("DELETE FROM push_subscriptions WHERE endpoint_hash=?").run(u(e)),{ok:!0}}listSubscriptions(){return this.db.prepare("SELECT endpoint, p256dh, auth, device_id FROM push_subscriptions").all().map(e=>({endpoint:e.endpoint,keys:{p256dh:e.p256dh,auth:e.auth},deviceId:e.device_id}))}notifySession({sessionId:e,kind:t,title:r,body:s,url:i}){let n=`${e}\u001f${t}`,a=this.lastNotified.get(n)||0;if(!(this.now()-a<1500)){if(this.lastNotified.set(n,this.now()),this.lastNotified.size>500)for(let[e,t]of this.lastNotified)this.now()-t>6e4&&this.lastNotified.delete(e);this.sendToAll({title:r,body:s,tag:e,url:i})}}async sendToAll(e){let t=this.listSubscriptions();await Promise.allSettled(t.map(t=>this.send(t,e)))}async send(e,t){try{o.setVapidDetails("mailto:agentroam@localhost",this.keys.publicKey,this.keys.privateKey),await o.sendNotification(e,c(t),{TTL:3600})}catch(r){let t=r?.statusCode;(404===t||410===t)&&this.db.prepare("DELETE FROM push_subscriptions WHERE endpoint_hash=?").run(u(e.endpoint))}}close(){this.db.close()}}function u(e){return(0,s.createHash)("sha256").update(e).digest("hex")}let d=null;function h(e=process.env.AGENT_DATA_DIR?.trim()||process.cwd()){return d??=new l(e)}}};var t=require("../../../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),s=t.X(0,[8375,6244,1322,4621,4537,2083],()=>r(2190));module.exports=s})();
@@ -1 +1 @@
1
- {"version":1,"files":["../../../../../../../../node_modules/.bun/@anthropic-ai+claude-agent-sdk@0.3.259+c37f1ebc82a0b1f5/node_modules/@anthropic-ai/claude-agent-sdk/package.json","../../../../../../../../node_modules/.bun/@anthropic-ai+claude-agent-sdk@0.3.259+c37f1ebc82a0b1f5/node_modules/@anthropic-ai/claude-agent-sdk/sdk.mjs","../../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/lib/binding.js","../../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/lib/database.js","../../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/lib/index.js","../../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/lib/methods/aggregate.js","../../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/lib/methods/backup.js","../../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/lib/methods/explain.js","../../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/lib/methods/function.js","../../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/lib/methods/inspect.js","../../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/lib/methods/pragma.js","../../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/lib/methods/serialize.js","../../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/lib/methods/table.js","../../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/lib/methods/transaction.js","../../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/lib/methods/wrappers.js","../../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/lib/sqlite-error.js","../../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/lib/util.js","../../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/package.json","../../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/prebuilds/darwin-arm64.node","../../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/prebuilds/darwin-x64.node","../../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/prebuilds/linux-arm64.node","../../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/prebuilds/linux-x64.node","../../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/prebuilds/linuxmusl-arm64.node","../../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/prebuilds/linuxmusl-x64.node","../../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/prebuilds/win32-arm64.node","../../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/prebuilds/win32-x64.node","../../../../../../../../node_modules/.bun/next@14.2.35+6dbf9a050bc9aadb/node_modules/next/dist/client/components/action-async-storage-instance.js","../../../../../../../../node_modules/.bun/next@14.2.35+6dbf9a050bc9aadb/node_modules/next/dist/client/components/action-async-storage.external.js","../../../../../../../../node_modules/.bun/next@14.2.35+6dbf9a050bc9aadb/node_modules/next/dist/client/components/async-local-storage.js","../../../../../../../../node_modules/.bun/next@14.2.35+6dbf9a050bc9aadb/node_modules/next/dist/client/components/request-async-storage-instance.js","../../../../../../../../node_modules/.bun/next@14.2.35+6dbf9a050bc9aadb/node_modules/next/dist/client/components/request-async-storage.external.js","../../../../../../../../node_modules/.bun/next@14.2.35+6dbf9a050bc9aadb/node_modules/next/dist/client/components/static-generation-async-storage-instance.js","../../../../../../../../node_modules/.bun/next@14.2.35+6dbf9a050bc9aadb/node_modules/next/dist/client/components/static-generation-async-storage.external.js","../../../../../../../../node_modules/.bun/next@14.2.35+6dbf9a050bc9aadb/node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../../../../../../node_modules/.bun/next@14.2.35+6dbf9a050bc9aadb/node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../../../../../../node_modules/.bun/next@14.2.35+6dbf9a050bc9aadb/node_modules/next/dist/compiled/next-server/app-page.runtime.prod.js","../../../../../../../../node_modules/.bun/next@14.2.35+6dbf9a050bc9aadb/node_modules/next/dist/compiled/next-server/app-route.runtime.prod.js","../../../../../../../../node_modules/.bun/next@14.2.35+6dbf9a050bc9aadb/node_modules/next/dist/server/lib/trace/constants.js","../../../../../../../../node_modules/.bun/next@14.2.35+6dbf9a050bc9aadb/node_modules/next/dist/server/lib/trace/tracer.js","../../../../../../../../node_modules/.bun/next@14.2.35+6dbf9a050bc9aadb/node_modules/next/package.json","../../../../../../../../package.json","../../../../../../../core/package.json","../../../../../../../desktop/package.json","../../../../../../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/4537.js","../../../../chunks/4621.js","../../../../chunks/6244.js","../../../../chunks/732.js","../../../../chunks/8375.js","../../../../webpack-runtime.js"]}
1
+ {"version":1,"files":["../../../../../../../../node_modules/.bun/@anthropic-ai+claude-agent-sdk@0.3.259+c37f1ebc82a0b1f5/node_modules/@anthropic-ai/claude-agent-sdk/package.json","../../../../../../../../node_modules/.bun/@anthropic-ai+claude-agent-sdk@0.3.259+c37f1ebc82a0b1f5/node_modules/@anthropic-ai/claude-agent-sdk/sdk.mjs","../../../../../../../../node_modules/.bun/agent-base@7.1.4/node_modules/agent-base/dist/helpers.js","../../../../../../../../node_modules/.bun/agent-base@7.1.4/node_modules/agent-base/dist/index.js","../../../../../../../../node_modules/.bun/agent-base@7.1.4/node_modules/agent-base/package.json","../../../../../../../../node_modules/.bun/asn1.js@5.4.1/node_modules/asn1.js/lib/asn1.js","../../../../../../../../node_modules/.bun/asn1.js@5.4.1/node_modules/asn1.js/lib/asn1/api.js","../../../../../../../../node_modules/.bun/asn1.js@5.4.1/node_modules/asn1.js/lib/asn1/base/buffer.js","../../../../../../../../node_modules/.bun/asn1.js@5.4.1/node_modules/asn1.js/lib/asn1/base/index.js","../../../../../../../../node_modules/.bun/asn1.js@5.4.1/node_modules/asn1.js/lib/asn1/base/node.js","../../../../../../../../node_modules/.bun/asn1.js@5.4.1/node_modules/asn1.js/lib/asn1/base/reporter.js","../../../../../../../../node_modules/.bun/asn1.js@5.4.1/node_modules/asn1.js/lib/asn1/constants/der.js","../../../../../../../../node_modules/.bun/asn1.js@5.4.1/node_modules/asn1.js/lib/asn1/constants/index.js","../../../../../../../../node_modules/.bun/asn1.js@5.4.1/node_modules/asn1.js/lib/asn1/decoders/der.js","../../../../../../../../node_modules/.bun/asn1.js@5.4.1/node_modules/asn1.js/lib/asn1/decoders/index.js","../../../../../../../../node_modules/.bun/asn1.js@5.4.1/node_modules/asn1.js/lib/asn1/decoders/pem.js","../../../../../../../../node_modules/.bun/asn1.js@5.4.1/node_modules/asn1.js/lib/asn1/encoders/der.js","../../../../../../../../node_modules/.bun/asn1.js@5.4.1/node_modules/asn1.js/lib/asn1/encoders/index.js","../../../../../../../../node_modules/.bun/asn1.js@5.4.1/node_modules/asn1.js/lib/asn1/encoders/pem.js","../../../../../../../../node_modules/.bun/asn1.js@5.4.1/node_modules/asn1.js/package.json","../../../../../../../../node_modules/.bun/asn1.js@5.4.1/node_modules/bn.js","../../../../../../../../node_modules/.bun/asn1.js@5.4.1/node_modules/inherits","../../../../../../../../node_modules/.bun/asn1.js@5.4.1/node_modules/minimalistic-assert","../../../../../../../../node_modules/.bun/asn1.js@5.4.1/node_modules/safer-buffer","../../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/lib/binding.js","../../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/lib/database.js","../../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/lib/index.js","../../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/lib/methods/aggregate.js","../../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/lib/methods/backup.js","../../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/lib/methods/explain.js","../../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/lib/methods/function.js","../../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/lib/methods/inspect.js","../../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/lib/methods/pragma.js","../../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/lib/methods/serialize.js","../../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/lib/methods/table.js","../../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/lib/methods/transaction.js","../../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/lib/methods/wrappers.js","../../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/lib/sqlite-error.js","../../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/lib/util.js","../../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/package.json","../../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/prebuilds/darwin-arm64.node","../../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/prebuilds/darwin-x64.node","../../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/prebuilds/linux-arm64.node","../../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/prebuilds/linux-x64.node","../../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/prebuilds/linuxmusl-arm64.node","../../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/prebuilds/linuxmusl-x64.node","../../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/prebuilds/win32-arm64.node","../../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/prebuilds/win32-x64.node","../../../../../../../../node_modules/.bun/bn.js@4.12.5/node_modules/bn.js/lib/bn.js","../../../../../../../../node_modules/.bun/bn.js@4.12.5/node_modules/bn.js/package.json","../../../../../../../../node_modules/.bun/buffer-equal-constant-time@1.0.1/node_modules/buffer-equal-constant-time/index.js","../../../../../../../../node_modules/.bun/buffer-equal-constant-time@1.0.1/node_modules/buffer-equal-constant-time/package.json","../../../../../../../../node_modules/.bun/debug@4.4.3/node_modules/debug/package.json","../../../../../../../../node_modules/.bun/debug@4.4.3/node_modules/debug/src/browser.js","../../../../../../../../node_modules/.bun/debug@4.4.3/node_modules/debug/src/common.js","../../../../../../../../node_modules/.bun/debug@4.4.3/node_modules/debug/src/index.js","../../../../../../../../node_modules/.bun/debug@4.4.3/node_modules/debug/src/node.js","../../../../../../../../node_modules/.bun/debug@4.4.3/node_modules/ms","../../../../../../../../node_modules/.bun/ecdsa-sig-formatter@1.0.11/node_modules/ecdsa-sig-formatter/package.json","../../../../../../../../node_modules/.bun/ecdsa-sig-formatter@1.0.11/node_modules/ecdsa-sig-formatter/src/ecdsa-sig-formatter.js","../../../../../../../../node_modules/.bun/ecdsa-sig-formatter@1.0.11/node_modules/ecdsa-sig-formatter/src/param-bytes-for-alg.js","../../../../../../../../node_modules/.bun/ecdsa-sig-formatter@1.0.11/node_modules/safe-buffer","../../../../../../../../node_modules/.bun/has-flag@4.0.0/node_modules/has-flag/index.js","../../../../../../../../node_modules/.bun/has-flag@4.0.0/node_modules/has-flag/package.json","../../../../../../../../node_modules/.bun/http_ece@1.2.0/node_modules/http_ece/ece.js","../../../../../../../../node_modules/.bun/http_ece@1.2.0/node_modules/http_ece/package.json","../../../../../../../../node_modules/.bun/https-proxy-agent@7.0.6/node_modules/agent-base","../../../../../../../../node_modules/.bun/https-proxy-agent@7.0.6/node_modules/debug","../../../../../../../../node_modules/.bun/https-proxy-agent@7.0.6/node_modules/https-proxy-agent/dist/index.js","../../../../../../../../node_modules/.bun/https-proxy-agent@7.0.6/node_modules/https-proxy-agent/dist/parse-proxy-response.js","../../../../../../../../node_modules/.bun/https-proxy-agent@7.0.6/node_modules/https-proxy-agent/package.json","../../../../../../../../node_modules/.bun/inherits@2.0.4/node_modules/inherits/inherits.js","../../../../../../../../node_modules/.bun/inherits@2.0.4/node_modules/inherits/inherits_browser.js","../../../../../../../../node_modules/.bun/inherits@2.0.4/node_modules/inherits/package.json","../../../../../../../../node_modules/.bun/jwa@2.0.1/node_modules/buffer-equal-constant-time","../../../../../../../../node_modules/.bun/jwa@2.0.1/node_modules/ecdsa-sig-formatter","../../../../../../../../node_modules/.bun/jwa@2.0.1/node_modules/jwa/index.js","../../../../../../../../node_modules/.bun/jwa@2.0.1/node_modules/jwa/package.json","../../../../../../../../node_modules/.bun/jwa@2.0.1/node_modules/safe-buffer","../../../../../../../../node_modules/.bun/jws@4.0.1/node_modules/jwa","../../../../../../../../node_modules/.bun/jws@4.0.1/node_modules/jws/index.js","../../../../../../../../node_modules/.bun/jws@4.0.1/node_modules/jws/lib/data-stream.js","../../../../../../../../node_modules/.bun/jws@4.0.1/node_modules/jws/lib/sign-stream.js","../../../../../../../../node_modules/.bun/jws@4.0.1/node_modules/jws/lib/tostring.js","../../../../../../../../node_modules/.bun/jws@4.0.1/node_modules/jws/lib/verify-stream.js","../../../../../../../../node_modules/.bun/jws@4.0.1/node_modules/jws/package.json","../../../../../../../../node_modules/.bun/jws@4.0.1/node_modules/safe-buffer","../../../../../../../../node_modules/.bun/minimalistic-assert@1.0.1/node_modules/minimalistic-assert/index.js","../../../../../../../../node_modules/.bun/minimalistic-assert@1.0.1/node_modules/minimalistic-assert/package.json","../../../../../../../../node_modules/.bun/ms@2.1.3/node_modules/ms/index.js","../../../../../../../../node_modules/.bun/ms@2.1.3/node_modules/ms/package.json","../../../../../../../../node_modules/.bun/next@14.2.35+6dbf9a050bc9aadb/node_modules/next/dist/client/components/action-async-storage-instance.js","../../../../../../../../node_modules/.bun/next@14.2.35+6dbf9a050bc9aadb/node_modules/next/dist/client/components/action-async-storage.external.js","../../../../../../../../node_modules/.bun/next@14.2.35+6dbf9a050bc9aadb/node_modules/next/dist/client/components/async-local-storage.js","../../../../../../../../node_modules/.bun/next@14.2.35+6dbf9a050bc9aadb/node_modules/next/dist/client/components/request-async-storage-instance.js","../../../../../../../../node_modules/.bun/next@14.2.35+6dbf9a050bc9aadb/node_modules/next/dist/client/components/request-async-storage.external.js","../../../../../../../../node_modules/.bun/next@14.2.35+6dbf9a050bc9aadb/node_modules/next/dist/client/components/static-generation-async-storage-instance.js","../../../../../../../../node_modules/.bun/next@14.2.35+6dbf9a050bc9aadb/node_modules/next/dist/client/components/static-generation-async-storage.external.js","../../../../../../../../node_modules/.bun/next@14.2.35+6dbf9a050bc9aadb/node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../../../../../../node_modules/.bun/next@14.2.35+6dbf9a050bc9aadb/node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../../../../../../node_modules/.bun/next@14.2.35+6dbf9a050bc9aadb/node_modules/next/dist/compiled/next-server/app-page.runtime.prod.js","../../../../../../../../node_modules/.bun/next@14.2.35+6dbf9a050bc9aadb/node_modules/next/dist/compiled/next-server/app-route.runtime.prod.js","../../../../../../../../node_modules/.bun/next@14.2.35+6dbf9a050bc9aadb/node_modules/next/dist/server/lib/trace/constants.js","../../../../../../../../node_modules/.bun/next@14.2.35+6dbf9a050bc9aadb/node_modules/next/dist/server/lib/trace/tracer.js","../../../../../../../../node_modules/.bun/next@14.2.35+6dbf9a050bc9aadb/node_modules/next/package.json","../../../../../../../../node_modules/.bun/node_modules/supports-color","../../../../../../../../node_modules/.bun/safe-buffer@5.2.1/node_modules/safe-buffer/index.js","../../../../../../../../node_modules/.bun/safe-buffer@5.2.1/node_modules/safe-buffer/package.json","../../../../../../../../node_modules/.bun/safer-buffer@2.1.2/node_modules/safer-buffer/package.json","../../../../../../../../node_modules/.bun/safer-buffer@2.1.2/node_modules/safer-buffer/safer.js","../../../../../../../../node_modules/.bun/supports-color@7.2.0/node_modules/has-flag","../../../../../../../../node_modules/.bun/supports-color@7.2.0/node_modules/supports-color/index.js","../../../../../../../../node_modules/.bun/supports-color@7.2.0/node_modules/supports-color/package.json","../../../../../../../../node_modules/.bun/web-push@3.6.7/node_modules/asn1.js","../../../../../../../../node_modules/.bun/web-push@3.6.7/node_modules/http_ece","../../../../../../../../node_modules/.bun/web-push@3.6.7/node_modules/https-proxy-agent","../../../../../../../../node_modules/.bun/web-push@3.6.7/node_modules/jws","../../../../../../../../node_modules/.bun/web-push@3.6.7/node_modules/web-push/package.json","../../../../../../../../node_modules/.bun/web-push@3.6.7/node_modules/web-push/src/encryption-helper.js","../../../../../../../../node_modules/.bun/web-push@3.6.7/node_modules/web-push/src/index.js","../../../../../../../../node_modules/.bun/web-push@3.6.7/node_modules/web-push/src/urlsafe-base64-helper.js","../../../../../../../../node_modules/.bun/web-push@3.6.7/node_modules/web-push/src/vapid-helper.js","../../../../../../../../node_modules/.bun/web-push@3.6.7/node_modules/web-push/src/web-push-constants.js","../../../../../../../../node_modules/.bun/web-push@3.6.7/node_modules/web-push/src/web-push-error.js","../../../../../../../../node_modules/.bun/web-push@3.6.7/node_modules/web-push/src/web-push-lib.js","../../../../../../../../package.json","../../../../../../../core/package.json","../../../../../../../desktop/package.json","../../../../../../node_modules/@anthropic-ai/claude-agent-sdk","../../../../../../node_modules/better-sqlite3","../../../../../../node_modules/next","../../../../../../node_modules/web-push","../../../../../../package.json","../../../../../package.json","../../../../chunks/1322.js","../../../../chunks/2083.js","../../../../chunks/4537.js","../../../../chunks/4621.js","../../../../chunks/6244.js","../../../../chunks/732.js","../../../../chunks/8375.js","../../../../webpack-runtime.js"]}
@@ -1 +1 @@
1
- "use strict";(()=>{var e={};e.id=4612,e.ids=[4612],e.modules={5890:e=>{e.exports=require("better-sqlite3")},399:e=>{e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},517:e=>{e.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},1282:e=>{e.exports=require("child_process")},2048:e=>{e.exports=require("fs")},9801:e=>{e.exports=require("os")},5315:e=>{e.exports=require("path")},2728:e=>{e.exports=import("@anthropic-ai/claude-agent-sdk")},7718:e=>{e.exports=require("node:child_process")},6005:e=>{e.exports=require("node:crypto")},5673:e=>{e.exports=require("node:events")},7561:e=>{e.exports=require("node:fs")},3977:e=>{e.exports=require("node:fs/promises")},8849:e=>{e.exports=require("node:http")},2286:e=>{e.exports=require("node:https")},2033:e=>{e.exports=require("node:module")},7503:e=>{e.exports=require("node:net")},612:e=>{e.exports=require("node:os")},9411:e=>{e.exports=require("node:path")},1747:e=>{e.exports=require("node:readline")},6915:e=>{e.exports=require("node:string_decoder")},1041:e=>{e.exports=require("node:url")},5881:e=>{e.exports=require("node:util")},3841:(e,t,r)=>{r.a(e,async(e,s)=>{try{r.r(t),r.d(t,{originalPathname:()=>g,patchFetch:()=>u,requestAsyncStorage:()=>d,routeModule:()=>l,serverHooks:()=>p,staticGenerationAsyncStorage:()=>h});var a=r(7786),i=r(5042),o=r(2184),n=r(5609),c=e([n]);n=(c.then?(await c)():c)[0];let l=new a.AppRouteRouteModule({definition:{kind:i.x.APP_ROUTE,page:"/api/agent-workspaces/[workspaceId]/sessions/route",pathname:"/api/agent-workspaces/[workspaceId]/sessions",filename:"route",bundlePath:"app/api/agent-workspaces/[workspaceId]/sessions/route"},resolvedPagePath:"/Users/caoqu/team-agent/customer-agent/packages/server/app/api/agent-workspaces/[workspaceId]/sessions/route.ts",nextConfigOutput:"standalone",userland:n}),{requestAsyncStorage:d,staticGenerationAsyncStorage:h,serverHooks:p}=l,g="/api/agent-workspaces/[workspaceId]/sessions/route";function u(){return(0,o.patchFetch)({serverHooks:p,staticGenerationAsyncStorage:h})}s()}catch(e){s(e)}})},5609:(e,t,r)=>{r.a(e,async(e,s)=>{try{r.r(t),r.d(t,{GET:()=>d});var a=r(1890),i=r(1322),o=r(2557),n=r(4537),c=r(2083),u=r(6405),l=e([c]);async function d(e,t){let r;let s=new URL(e.url),l=(0,u.q)(s.searchParams.get("agentType"));if(!l)return a.NextResponse.json({error:"A valid agentType is required"},{status:400});try{let e=(0,u.M)(s);r={cursor:e.cursor,limit:e.limit,refresh:e.refresh}}catch(e){return a.NextResponse.json({error:e instanceof Error?e.message:"Invalid query"},{status:400})}try{if("customer-agent"!==l)return a.NextResponse.json(await (0,c.NL)().listWorkspaceSessions(l,t.params.workspaceId,r));let e=await n.agentHost.getProjectStore().get(t.params.workspaceId);if(!e)return a.NextResponse.json({error:"Workspace not found"},{status:404});let s=(await n.agentHost.getSessionStore().list(e.id)).map(({messages:t,events:r,...s})=>({...s,agentType:"customer-agent",nativeSessionId:s.id,cwd:e.description,occupancy:n.agentHost.isSessionRunning(s.id)?"owned-by-customer-agent":"available",sourceLabel:"Customer Agent",canResume:!0,canDelete:!n.agentHost.isSessionRunning(s.id),permissionMode:(0,i.NyU)(s.metadata.permissionMode)})).sort((e,t)=>t.updated.localeCompare(e.updated));return a.NextResponse.json((0,o.L)(s,r,s[0]?.updated??e.updated))}catch(e){return a.NextResponse.json({error:e instanceof Error?e.message:"Workspace sessions failed"},{status:(0,c.WW)(e)})}}c=(l.then?(await l)():l)[0],s()}catch(e){s(e)}})},6405:(e,t,r)=>{r.d(t,{M:()=>i,q:()=>a});let s=new Set(["customer-agent","codex","claude-code","opencode"]);function a(e){return e&&s.has(e)?e:null}function i(e){let t=e.searchParams.get("limit"),r=null===t?50:Number(t);if(!Number.isInteger(r)||r<1||r>200)throw Error("limit must be an integer between 1 and 200");return{cursor:e.searchParams.get("cursor"),since:e.searchParams.get("since"),refresh:"1"===e.searchParams.get("refresh"),limit:r}}},1436:(e,t,r)=>{r.d(t,{N:()=>d});var s=r(1322),a=r(7561),i=r(9411);class o{constructor(e){this._acquired=!1,this.lockPath=e.replace(/scheduled_tasks\.json$/,".scheduler.lock")}get acquired(){return this._acquired}tryAcquire(){if(this._acquired)return!0;if((0,a.existsSync)(this.lockPath))try{let e=parseInt((0,a.readFileSync)(this.lockPath,"utf-8").trim(),10);if(!isNaN(e)&&e!==process.pid)try{return process.kill(e,0),!1}catch{}}catch{}try{let e=(0,i.dirname)(this.lockPath);return(0,a.existsSync)(e)||(0,a.mkdirSync)(e,{recursive:!0}),(0,a.writeFileSync)(this.lockPath,String(process.pid),"utf-8"),this._acquired=!0,!0}catch{return!1}}release(){if(this._acquired){try{(0,a.unlinkSync)(this.lockPath)}catch{}this._acquired=!1}}}class n{constructor(e,t,r){this.cronTasks=e,this.onFire=t,this.onTasksChanged=r,this.timer=null,this.watcher=null,this.started=!1,this.lock=new o(e.getFilePath())}start(){if(!this.started){if(!this.lock.tryAcquire()){console.warn("[CronScheduler] Another process holds the scheduler lock — skipping start.");return}this.started=!0,this.timer=setInterval(()=>{this.tick()},1e3),this.startFileWatcher(),console.log(`[CronScheduler] Started (PID=${process.pid})`)}}stop(){this.started&&(this.started=!1,this.timer&&(clearInterval(this.timer),this.timer=null),this.watcher&&(this.watcher.close(),this.watcher=null),this.lock.release(),console.log("[CronScheduler] Stopped."))}startFileWatcher(){let e=this.cronTasks.getFilePath(),t=(0,i.dirname)(e);if(!(0,a.existsSync)(t))try{(0,a.mkdirSync)(t,{recursive:!0})}catch{}try{this.watcher=(0,a.watch)(t,{persistent:!1},(e,t)=>{"scheduled_tasks.json"===t&&this.onTasksChanged(this.cronTasks.load())})}catch(e){console.warn("[CronScheduler] Could not start file watcher:",e)}}async tick(){let e=Date.now(),t=this.cronTasks.load(),r=!1;for(let a of t)a.enabled&&a.nextFireAt&&!(a.nextFireAt>e)&&(this.onFire(a),a.recurring?this.cronTasks.update(a.id,{nextFireAt:(0,s.Ilu)(a.cron,e),lastFiredAt:e}):this.cronTasks.delete(a.id),r=!0);r&&this.onTasksChanged(this.cronTasks.load())}}var c=r(785);class u{constructor(){this.tasks=new s.vo4((0,c.kO)()),this.scheduler=new n(this.tasks,e=>{this.fire(e).catch(e=>console.error("Scheduled Customer Agent run failed",e))},()=>{}),this.scheduler.start()}async fire(e){let{agentHost:t}=await r.e(4537).then(r.bind(r,4537)),{getCustomerGoalCoordinator:s}=await Promise.all([r.e(4537),r.e(732)]).then(r.bind(r,732)),a=e.sessionId;a&&await t.getSessionStore().get(a)||(a=(await t.createSession(e.label||"定时任务")).id,this.tasks.update(e.id,{sessionId:a})),await s().enqueue(a,e.prompt)}call(e,t){let r=String(t[0]||"");switch(e){case"cronList":return this.tasks.list();case"cronCreate":{if("string"!=typeof t[0]||"string"!=typeof t[1]||!t[1].trim())throw Error("cron and prompt required");let e=t[2]&&"object"==typeof t[2]?t[2]:{};return this.tasks.create({cron:t[0],prompt:t[1],recurring:!1!==e.recurring,enabled:!0,durable:!0,..."string"==typeof e.sessionId?{sessionId:e.sessionId}:{},..."string"==typeof e.label?{label:e.label}:{}})}case"cronPause":return this.tasks.pause(r);case"cronResume":return this.tasks.resume(r);case"cronDelete":return this.tasks.delete(r);case"cronDeleteAll":return this.tasks.deleteAll(),{ok:!0};default:throw Error("Unsupported schedule operation")}}}let l=globalThis;function d(){return l.__sharedCronService??=new u}}};var t=require("../../../../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),s=t.X(0,[8375,6703,6244,1322,4621,2083,4537],()=>r(3841));module.exports=s})();
1
+ "use strict";(()=>{var e={};e.id=4612,e.ids=[4612],e.modules={5890:e=>{e.exports=require("better-sqlite3")},399:e=>{e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},517:e=>{e.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},1282:e=>{e.exports=require("child_process")},2048:e=>{e.exports=require("fs")},9801:e=>{e.exports=require("os")},5315:e=>{e.exports=require("path")},2728:e=>{e.exports=import("@anthropic-ai/claude-agent-sdk")},7718:e=>{e.exports=require("node:child_process")},6005:e=>{e.exports=require("node:crypto")},5673:e=>{e.exports=require("node:events")},7561:e=>{e.exports=require("node:fs")},3977:e=>{e.exports=require("node:fs/promises")},8849:e=>{e.exports=require("node:http")},2286:e=>{e.exports=require("node:https")},2033:e=>{e.exports=require("node:module")},7503:e=>{e.exports=require("node:net")},612:e=>{e.exports=require("node:os")},9411:e=>{e.exports=require("node:path")},1747:e=>{e.exports=require("node:readline")},6915:e=>{e.exports=require("node:string_decoder")},1041:e=>{e.exports=require("node:url")},5881:e=>{e.exports=require("node:util")},3841:(e,t,r)=>{r.a(e,async(e,s)=>{try{r.r(t),r.d(t,{originalPathname:()=>g,patchFetch:()=>u,requestAsyncStorage:()=>d,routeModule:()=>l,serverHooks:()=>p,staticGenerationAsyncStorage:()=>h});var a=r(7786),i=r(5042),o=r(2184),n=r(5609),c=e([n]);n=(c.then?(await c)():c)[0];let l=new a.AppRouteRouteModule({definition:{kind:i.x.APP_ROUTE,page:"/api/agent-workspaces/[workspaceId]/sessions/route",pathname:"/api/agent-workspaces/[workspaceId]/sessions",filename:"route",bundlePath:"app/api/agent-workspaces/[workspaceId]/sessions/route"},resolvedPagePath:"/Users/caoqu/team-agent/customer-agent/packages/server/app/api/agent-workspaces/[workspaceId]/sessions/route.ts",nextConfigOutput:"standalone",userland:n}),{requestAsyncStorage:d,staticGenerationAsyncStorage:h,serverHooks:p}=l,g="/api/agent-workspaces/[workspaceId]/sessions/route";function u(){return(0,o.patchFetch)({serverHooks:p,staticGenerationAsyncStorage:h})}s()}catch(e){s(e)}})},5609:(e,t,r)=>{r.a(e,async(e,s)=>{try{r.r(t),r.d(t,{GET:()=>d});var a=r(1890),i=r(1322),o=r(2557),n=r(4537),c=r(2083),u=r(6405),l=e([c]);async function d(e,t){let r;let s=new URL(e.url),l=(0,u.q)(s.searchParams.get("agentType"));if(!l)return a.NextResponse.json({error:"A valid agentType is required"},{status:400});try{let e=(0,u.M)(s);r={cursor:e.cursor,limit:e.limit,refresh:e.refresh}}catch(e){return a.NextResponse.json({error:e instanceof Error?e.message:"Invalid query"},{status:400})}try{if("customer-agent"!==l)return a.NextResponse.json(await (0,c.NL)().listWorkspaceSessions(l,t.params.workspaceId,r));let e=await n.agentHost.getProjectStore().get(t.params.workspaceId);if(!e)return a.NextResponse.json({error:"Workspace not found"},{status:404});let s=(await n.agentHost.getSessionStore().list(e.id)).map(({messages:t,events:r,...s})=>({...s,agentType:"customer-agent",nativeSessionId:s.id,cwd:e.description,occupancy:n.agentHost.isSessionRunning(s.id)?"owned-by-customer-agent":"available",sourceLabel:"Customer Agent",canResume:!0,canDelete:!n.agentHost.isSessionRunning(s.id),permissionMode:(0,i.NyU)(s.metadata.permissionMode)})).sort((e,t)=>t.updated.localeCompare(e.updated));return a.NextResponse.json((0,o.L)(s,r,s[0]?.updated??e.updated))}catch(e){return a.NextResponse.json({error:e instanceof Error?e.message:"Workspace sessions failed"},{status:(0,c.WW)(e)})}}c=(l.then?(await l)():l)[0],s()}catch(e){s(e)}})},6405:(e,t,r)=>{r.d(t,{M:()=>i,q:()=>a});let s=new Set(["customer-agent","codex","claude-code","opencode"]);function a(e){return e&&s.has(e)?e:null}function i(e){let t=e.searchParams.get("limit"),r=null===t?50:Number(t);if(!Number.isInteger(r)||r<1||r>200)throw Error("limit must be an integer between 1 and 200");return{cursor:e.searchParams.get("cursor"),since:e.searchParams.get("since"),refresh:"1"===e.searchParams.get("refresh"),limit:r}}},1436:(e,t,r)=>{r.d(t,{N:()=>d});var s=r(1322),a=r(7561),i=r(9411);class o{constructor(e){this._acquired=!1,this.lockPath=e.replace(/scheduled_tasks\.json$/,".scheduler.lock")}get acquired(){return this._acquired}tryAcquire(){if(this._acquired)return!0;if((0,a.existsSync)(this.lockPath))try{let e=parseInt((0,a.readFileSync)(this.lockPath,"utf-8").trim(),10);if(!isNaN(e)&&e!==process.pid)try{return process.kill(e,0),!1}catch{}}catch{}try{let e=(0,i.dirname)(this.lockPath);return(0,a.existsSync)(e)||(0,a.mkdirSync)(e,{recursive:!0}),(0,a.writeFileSync)(this.lockPath,String(process.pid),"utf-8"),this._acquired=!0,!0}catch{return!1}}release(){if(this._acquired){try{(0,a.unlinkSync)(this.lockPath)}catch{}this._acquired=!1}}}class n{constructor(e,t,r){this.cronTasks=e,this.onFire=t,this.onTasksChanged=r,this.timer=null,this.watcher=null,this.started=!1,this.lock=new o(e.getFilePath())}start(){if(!this.started){if(!this.lock.tryAcquire()){console.warn("[CronScheduler] Another process holds the scheduler lock — skipping start.");return}this.started=!0,this.timer=setInterval(()=>{this.tick()},1e3),this.startFileWatcher(),console.log(`[CronScheduler] Started (PID=${process.pid})`)}}stop(){this.started&&(this.started=!1,this.timer&&(clearInterval(this.timer),this.timer=null),this.watcher&&(this.watcher.close(),this.watcher=null),this.lock.release(),console.log("[CronScheduler] Stopped."))}startFileWatcher(){let e=this.cronTasks.getFilePath(),t=(0,i.dirname)(e);if(!(0,a.existsSync)(t))try{(0,a.mkdirSync)(t,{recursive:!0})}catch{}try{this.watcher=(0,a.watch)(t,{persistent:!1},(e,t)=>{"scheduled_tasks.json"===t&&this.onTasksChanged(this.cronTasks.load())})}catch(e){console.warn("[CronScheduler] Could not start file watcher:",e)}}async tick(){let e=Date.now(),t=this.cronTasks.load(),r=!1;for(let a of t)a.enabled&&a.nextFireAt&&!(a.nextFireAt>e)&&(this.onFire(a),a.recurring?this.cronTasks.update(a.id,{nextFireAt:(0,s.Ilu)(a.cron,e),lastFiredAt:e}):this.cronTasks.delete(a.id),r=!0);r&&this.onTasksChanged(this.cronTasks.load())}}var c=r(785);class u{constructor(){this.tasks=new s.vo4((0,c.kO)()),this.scheduler=new n(this.tasks,e=>{this.fire(e).catch(e=>console.error("Scheduled Customer Agent run failed",e))},()=>{}),this.scheduler.start()}async fire(e){let{agentHost:t}=await r.e(4537).then(r.bind(r,4537)),{getCustomerGoalCoordinator:s}=await Promise.all([r.e(4537),r.e(732)]).then(r.bind(r,732)),a=e.sessionId;a&&await t.getSessionStore().get(a)||(a=(await t.createSession(e.label||"定时任务")).id,this.tasks.update(e.id,{sessionId:a})),await s().enqueue(a,e.prompt)}call(e,t){let r=String(t[0]||"");switch(e){case"cronList":return this.tasks.list();case"cronCreate":{if("string"!=typeof t[0]||"string"!=typeof t[1]||!t[1].trim())throw Error("cron and prompt required");let e=t[2]&&"object"==typeof t[2]?t[2]:{};return this.tasks.create({cron:t[0],prompt:t[1],recurring:!1!==e.recurring,enabled:!0,durable:!0,..."string"==typeof e.sessionId?{sessionId:e.sessionId}:{},..."string"==typeof e.label?{label:e.label}:{}})}case"cronPause":return this.tasks.pause(r);case"cronResume":return this.tasks.resume(r);case"cronDelete":return this.tasks.delete(r);case"cronDeleteAll":return this.tasks.deleteAll(),{ok:!0};default:throw Error("Unsupported schedule operation")}}}let l=globalThis;function d(){return l.__sharedCronService??=new u}}};var t=require("../../../../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),s=t.X(0,[8375,6703,6244,1322,4621,4537,2083],()=>r(3841));module.exports=s})();
@@ -1 +1 @@
1
- "use strict";(()=>{var e={};e.id=8593,e.ids=[8593],e.modules={5890:e=>{e.exports=require("better-sqlite3")},399:e=>{e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},517:e=>{e.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},1282:e=>{e.exports=require("child_process")},2048:e=>{e.exports=require("fs")},9801:e=>{e.exports=require("os")},5315:e=>{e.exports=require("path")},2728:e=>{e.exports=import("@anthropic-ai/claude-agent-sdk")},7718:e=>{e.exports=require("node:child_process")},6005:e=>{e.exports=require("node:crypto")},5673:e=>{e.exports=require("node:events")},7561:e=>{e.exports=require("node:fs")},3977:e=>{e.exports=require("node:fs/promises")},8849:e=>{e.exports=require("node:http")},2286:e=>{e.exports=require("node:https")},2033:e=>{e.exports=require("node:module")},7503:e=>{e.exports=require("node:net")},612:e=>{e.exports=require("node:os")},9411:e=>{e.exports=require("node:path")},1747:e=>{e.exports=require("node:readline")},6915:e=>{e.exports=require("node:string_decoder")},1041:e=>{e.exports=require("node:url")},5881:e=>{e.exports=require("node:util")},5449:(e,t,r)=>{r.a(e,async(e,s)=>{try{r.r(t),r.d(t,{originalPathname:()=>m,patchFetch:()=>u,requestAsyncStorage:()=>h,routeModule:()=>d,serverHooks:()=>p,staticGenerationAsyncStorage:()=>l});var a=r(7786),i=r(5042),o=r(2184),n=r(4214),c=e([n]);n=(c.then?(await c)():c)[0];let d=new a.AppRouteRouteModule({definition:{kind:i.x.APP_ROUTE,page:"/api/agent-workspaces/route",pathname:"/api/agent-workspaces",filename:"route",bundlePath:"app/api/agent-workspaces/route"},resolvedPagePath:"/Users/caoqu/team-agent/customer-agent/packages/server/app/api/agent-workspaces/route.ts",nextConfigOutput:"standalone",userland:n}),{requestAsyncStorage:h,staticGenerationAsyncStorage:l,serverHooks:p}=d,m="/api/agent-workspaces/route";function u(){return(0,o.patchFetch)({serverHooks:p,staticGenerationAsyncStorage:l})}s()}catch(e){s(e)}})},6405:(e,t,r)=>{r.d(t,{M:()=>i,q:()=>a});let s=new Set(["customer-agent","codex","claude-code","opencode"]);function a(e){return e&&s.has(e)?e:null}function i(e){let t=e.searchParams.get("limit"),r=null===t?50:Number(t);if(!Number.isInteger(r)||r<1||r>200)throw Error("limit must be an integer between 1 and 200");return{cursor:e.searchParams.get("cursor"),since:e.searchParams.get("since"),refresh:"1"===e.searchParams.get("refresh"),limit:r}}},4214:(e,t,r)=>{r.a(e,async(e,s)=>{try{r.r(t),r.d(t,{GET:()=>h,POST:()=>l});var a=r(1890),i=r(2557),o=r(4537),n=r(2083),c=r(556),u=r(6405),d=e([n]);async function h(e){let t;let r=new URL(e.url),s=(0,u.q)(r.searchParams.get("agentType"));if(!s)return a.NextResponse.json({error:"A valid agentType is required"},{status:400});try{t=(0,u.M)(r)}catch(e){return a.NextResponse.json({error:e instanceof Error?e.message:"Invalid query"},{status:400})}try{if("customer-agent"!==s)return a.NextResponse.json(await (0,n.NL)().listWorkspaces(s,t));let e=(await o.agentHost.getProjectStore().list()).map((e,t)=>({agentType:s,workspaceId:e.id,name:e.name,roots:e.description?[e.description]:[],order:t,updatedAt:e.updated,source:"native"}));return a.NextResponse.json((0,i.L)(e,t,e[0]?.updatedAt??null))}catch(e){return a.NextResponse.json({error:e instanceof Error?e.message:"Workspace discovery failed"},{status:(0,n.WW)(e)})}}async function l(e){let t;try{t=await e.json()}catch{return a.NextResponse.json({error:"A JSON body is required"},{status:400})}let r=(0,u.q)(t.agentType??null);if(!r||!t.path?.trim())return a.NextResponse.json({error:"A valid agentType and path are required"},{status:400});try{let e=c.a.canonicalDirectory(t.path);if("customer-agent"!==r)return a.NextResponse.json(await (0,n.NL)().importWorkspace(r,e,t.name),{status:201});let s=await c.a.list(),i=await c.a.create(e,t.name);return a.NextResponse.json({workspace:{agentType:r,workspaceId:i.id,name:i.name,roots:i.description?[i.description]:[],order:Math.max(0,s.findIndex(e=>e.id===i.id)),updatedAt:i.updated,source:"native"},existing:s.some(e=>e.id===i.id)},{status:201})}catch(t){let e=(0,c.r)(t);if(500!==e.status)return a.NextResponse.json(e.body,{status:e.status});return a.NextResponse.json({error:t instanceof Error?t.message:"Workspace import failed"},{status:(0,n.WW)(t)})}}n=(d.then?(await d)():d)[0],s()}catch(e){s(e)}})},556:(e,t,r)=>{r.d(t,{r:()=>h,a:()=>d});var s=r(612),a=r(1322),i=r(785),o=r(6005),n=r(9411);class c extends Error{constructor(e,t,r){super(e),this.code=t,this.status=r,this.name="WebProjectError"}}class u{constructor(e,t){this.store=e,this.paths=t}list(){return this.store.list()}async get(e){let t=await this.store.get(e);if(!t)throw new c("项目不存在","PROJECT_NOT_FOUND",404);return t}async create(e,t){let r=this.paths.assertDirectory(e);for(let e of(await this.store.list()))try{if(this.paths.assertDirectory(e.description)===r)return e}catch{}let s=new Date().toISOString();return this.store.create({id:(0,o.randomUUID)(),name:t?.trim()||(0,n.basename)(r)||r,description:r,created:s,updated:s})}async rename(e,t){await this.get(e);let r=t.trim();if(!r)throw new c("项目名称不能为空","PROJECT_NAME_REQUIRED",400);return this.store.update(e,{name:r})}async delete(e){await this.get(e),await this.store.delete(e)}roots(){return this.paths.roots}directories(e){return this.paths.listDirectories(e)}check(e){try{return this.paths.assertDirectory(e),!0}catch{return!1}}canonicalDirectory(e){return this.paths.assertDirectory(e)}}let d=new u(new a.XWE((0,i.kO)()),a.Tpv.fromEnvironment(process.env.AGENT_WEB_ROOTS,(0,s.homedir)()));function h(e){return e instanceof c?{status:e.status,body:{error:e.message,code:e.code}}:e instanceof a.TLe?{status:400,body:{error:e.message,code:e.code}}:{status:500,body:{error:e instanceof Error?e.message:"项目操作失败",code:"PROJECT_OPERATION_FAILED"}}}},1436:(e,t,r)=>{r.d(t,{N:()=>h});var s=r(1322),a=r(7561),i=r(9411);class o{constructor(e){this._acquired=!1,this.lockPath=e.replace(/scheduled_tasks\.json$/,".scheduler.lock")}get acquired(){return this._acquired}tryAcquire(){if(this._acquired)return!0;if((0,a.existsSync)(this.lockPath))try{let e=parseInt((0,a.readFileSync)(this.lockPath,"utf-8").trim(),10);if(!isNaN(e)&&e!==process.pid)try{return process.kill(e,0),!1}catch{}}catch{}try{let e=(0,i.dirname)(this.lockPath);return(0,a.existsSync)(e)||(0,a.mkdirSync)(e,{recursive:!0}),(0,a.writeFileSync)(this.lockPath,String(process.pid),"utf-8"),this._acquired=!0,!0}catch{return!1}}release(){if(this._acquired){try{(0,a.unlinkSync)(this.lockPath)}catch{}this._acquired=!1}}}class n{constructor(e,t,r){this.cronTasks=e,this.onFire=t,this.onTasksChanged=r,this.timer=null,this.watcher=null,this.started=!1,this.lock=new o(e.getFilePath())}start(){if(!this.started){if(!this.lock.tryAcquire()){console.warn("[CronScheduler] Another process holds the scheduler lock — skipping start.");return}this.started=!0,this.timer=setInterval(()=>{this.tick()},1e3),this.startFileWatcher(),console.log(`[CronScheduler] Started (PID=${process.pid})`)}}stop(){this.started&&(this.started=!1,this.timer&&(clearInterval(this.timer),this.timer=null),this.watcher&&(this.watcher.close(),this.watcher=null),this.lock.release(),console.log("[CronScheduler] Stopped."))}startFileWatcher(){let e=this.cronTasks.getFilePath(),t=(0,i.dirname)(e);if(!(0,a.existsSync)(t))try{(0,a.mkdirSync)(t,{recursive:!0})}catch{}try{this.watcher=(0,a.watch)(t,{persistent:!1},(e,t)=>{"scheduled_tasks.json"===t&&this.onTasksChanged(this.cronTasks.load())})}catch(e){console.warn("[CronScheduler] Could not start file watcher:",e)}}async tick(){let e=Date.now(),t=this.cronTasks.load(),r=!1;for(let a of t)a.enabled&&a.nextFireAt&&!(a.nextFireAt>e)&&(this.onFire(a),a.recurring?this.cronTasks.update(a.id,{nextFireAt:(0,s.Ilu)(a.cron,e),lastFiredAt:e}):this.cronTasks.delete(a.id),r=!0);r&&this.onTasksChanged(this.cronTasks.load())}}var c=r(785);class u{constructor(){this.tasks=new s.vo4((0,c.kO)()),this.scheduler=new n(this.tasks,e=>{this.fire(e).catch(e=>console.error("Scheduled Customer Agent run failed",e))},()=>{}),this.scheduler.start()}async fire(e){let{agentHost:t}=await r.e(4537).then(r.bind(r,4537)),{getCustomerGoalCoordinator:s}=await Promise.all([r.e(4537),r.e(732)]).then(r.bind(r,732)),a=e.sessionId;a&&await t.getSessionStore().get(a)||(a=(await t.createSession(e.label||"定时任务")).id,this.tasks.update(e.id,{sessionId:a})),await s().enqueue(a,e.prompt)}call(e,t){let r=String(t[0]||"");switch(e){case"cronList":return this.tasks.list();case"cronCreate":{if("string"!=typeof t[0]||"string"!=typeof t[1]||!t[1].trim())throw Error("cron and prompt required");let e=t[2]&&"object"==typeof t[2]?t[2]:{};return this.tasks.create({cron:t[0],prompt:t[1],recurring:!1!==e.recurring,enabled:!0,durable:!0,..."string"==typeof e.sessionId?{sessionId:e.sessionId}:{},..."string"==typeof e.label?{label:e.label}:{}})}case"cronPause":return this.tasks.pause(r);case"cronResume":return this.tasks.resume(r);case"cronDelete":return this.tasks.delete(r);case"cronDeleteAll":return this.tasks.deleteAll(),{ok:!0};default:throw Error("Unsupported schedule operation")}}}let d=globalThis;function h(){return d.__sharedCronService??=new u}}};var t=require("../../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),s=t.X(0,[8375,6703,6244,1322,4621,2083,4537],()=>r(5449));module.exports=s})();
1
+ "use strict";(()=>{var e={};e.id=8593,e.ids=[8593],e.modules={5890:e=>{e.exports=require("better-sqlite3")},399:e=>{e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},517:e=>{e.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},1282:e=>{e.exports=require("child_process")},2048:e=>{e.exports=require("fs")},9801:e=>{e.exports=require("os")},5315:e=>{e.exports=require("path")},2728:e=>{e.exports=import("@anthropic-ai/claude-agent-sdk")},7718:e=>{e.exports=require("node:child_process")},6005:e=>{e.exports=require("node:crypto")},5673:e=>{e.exports=require("node:events")},7561:e=>{e.exports=require("node:fs")},3977:e=>{e.exports=require("node:fs/promises")},8849:e=>{e.exports=require("node:http")},2286:e=>{e.exports=require("node:https")},2033:e=>{e.exports=require("node:module")},7503:e=>{e.exports=require("node:net")},612:e=>{e.exports=require("node:os")},9411:e=>{e.exports=require("node:path")},1747:e=>{e.exports=require("node:readline")},6915:e=>{e.exports=require("node:string_decoder")},1041:e=>{e.exports=require("node:url")},5881:e=>{e.exports=require("node:util")},5449:(e,t,r)=>{r.a(e,async(e,s)=>{try{r.r(t),r.d(t,{originalPathname:()=>m,patchFetch:()=>u,requestAsyncStorage:()=>h,routeModule:()=>d,serverHooks:()=>p,staticGenerationAsyncStorage:()=>l});var a=r(7786),i=r(5042),o=r(2184),n=r(4214),c=e([n]);n=(c.then?(await c)():c)[0];let d=new a.AppRouteRouteModule({definition:{kind:i.x.APP_ROUTE,page:"/api/agent-workspaces/route",pathname:"/api/agent-workspaces",filename:"route",bundlePath:"app/api/agent-workspaces/route"},resolvedPagePath:"/Users/caoqu/team-agent/customer-agent/packages/server/app/api/agent-workspaces/route.ts",nextConfigOutput:"standalone",userland:n}),{requestAsyncStorage:h,staticGenerationAsyncStorage:l,serverHooks:p}=d,m="/api/agent-workspaces/route";function u(){return(0,o.patchFetch)({serverHooks:p,staticGenerationAsyncStorage:l})}s()}catch(e){s(e)}})},6405:(e,t,r)=>{r.d(t,{M:()=>i,q:()=>a});let s=new Set(["customer-agent","codex","claude-code","opencode"]);function a(e){return e&&s.has(e)?e:null}function i(e){let t=e.searchParams.get("limit"),r=null===t?50:Number(t);if(!Number.isInteger(r)||r<1||r>200)throw Error("limit must be an integer between 1 and 200");return{cursor:e.searchParams.get("cursor"),since:e.searchParams.get("since"),refresh:"1"===e.searchParams.get("refresh"),limit:r}}},4214:(e,t,r)=>{r.a(e,async(e,s)=>{try{r.r(t),r.d(t,{GET:()=>h,POST:()=>l});var a=r(1890),i=r(2557),o=r(4537),n=r(2083),c=r(556),u=r(6405),d=e([n]);async function h(e){let t;let r=new URL(e.url),s=(0,u.q)(r.searchParams.get("agentType"));if(!s)return a.NextResponse.json({error:"A valid agentType is required"},{status:400});try{t=(0,u.M)(r)}catch(e){return a.NextResponse.json({error:e instanceof Error?e.message:"Invalid query"},{status:400})}try{if("customer-agent"!==s)return a.NextResponse.json(await (0,n.NL)().listWorkspaces(s,t));let e=(await o.agentHost.getProjectStore().list()).map((e,t)=>({agentType:s,workspaceId:e.id,name:e.name,roots:e.description?[e.description]:[],order:t,updatedAt:e.updated,source:"native"}));return a.NextResponse.json((0,i.L)(e,t,e[0]?.updatedAt??null))}catch(e){return a.NextResponse.json({error:e instanceof Error?e.message:"Workspace discovery failed"},{status:(0,n.WW)(e)})}}async function l(e){let t;try{t=await e.json()}catch{return a.NextResponse.json({error:"A JSON body is required"},{status:400})}let r=(0,u.q)(t.agentType??null);if(!r||!t.path?.trim())return a.NextResponse.json({error:"A valid agentType and path are required"},{status:400});try{let e=c.a.canonicalDirectory(t.path);if("customer-agent"!==r)return a.NextResponse.json(await (0,n.NL)().importWorkspace(r,e,t.name),{status:201});let s=await c.a.list(),i=await c.a.create(e,t.name);return a.NextResponse.json({workspace:{agentType:r,workspaceId:i.id,name:i.name,roots:i.description?[i.description]:[],order:Math.max(0,s.findIndex(e=>e.id===i.id)),updatedAt:i.updated,source:"native"},existing:s.some(e=>e.id===i.id)},{status:201})}catch(t){let e=(0,c.r)(t);if(500!==e.status)return a.NextResponse.json(e.body,{status:e.status});return a.NextResponse.json({error:t instanceof Error?t.message:"Workspace import failed"},{status:(0,n.WW)(t)})}}n=(d.then?(await d)():d)[0],s()}catch(e){s(e)}})},556:(e,t,r)=>{r.d(t,{r:()=>h,a:()=>d});var s=r(612),a=r(1322),i=r(785),o=r(6005),n=r(9411);class c extends Error{constructor(e,t,r){super(e),this.code=t,this.status=r,this.name="WebProjectError"}}class u{constructor(e,t){this.store=e,this.paths=t}list(){return this.store.list()}async get(e){let t=await this.store.get(e);if(!t)throw new c("项目不存在","PROJECT_NOT_FOUND",404);return t}async create(e,t){let r=this.paths.assertDirectory(e);for(let e of(await this.store.list()))try{if(this.paths.assertDirectory(e.description)===r)return e}catch{}let s=new Date().toISOString();return this.store.create({id:(0,o.randomUUID)(),name:t?.trim()||(0,n.basename)(r)||r,description:r,created:s,updated:s})}async rename(e,t){await this.get(e);let r=t.trim();if(!r)throw new c("项目名称不能为空","PROJECT_NAME_REQUIRED",400);return this.store.update(e,{name:r})}async delete(e){await this.get(e),await this.store.delete(e)}roots(){return this.paths.roots}directories(e){return this.paths.listDirectories(e)}check(e){try{return this.paths.assertDirectory(e),!0}catch{return!1}}canonicalDirectory(e){return this.paths.assertDirectory(e)}}let d=new u(new a.XWE((0,i.kO)()),a.Tpv.fromEnvironment(process.env.AGENT_WEB_ROOTS,(0,s.homedir)()));function h(e){return e instanceof c?{status:e.status,body:{error:e.message,code:e.code}}:e instanceof a.TLe?{status:400,body:{error:e.message,code:e.code}}:{status:500,body:{error:e instanceof Error?e.message:"项目操作失败",code:"PROJECT_OPERATION_FAILED"}}}},1436:(e,t,r)=>{r.d(t,{N:()=>h});var s=r(1322),a=r(7561),i=r(9411);class o{constructor(e){this._acquired=!1,this.lockPath=e.replace(/scheduled_tasks\.json$/,".scheduler.lock")}get acquired(){return this._acquired}tryAcquire(){if(this._acquired)return!0;if((0,a.existsSync)(this.lockPath))try{let e=parseInt((0,a.readFileSync)(this.lockPath,"utf-8").trim(),10);if(!isNaN(e)&&e!==process.pid)try{return process.kill(e,0),!1}catch{}}catch{}try{let e=(0,i.dirname)(this.lockPath);return(0,a.existsSync)(e)||(0,a.mkdirSync)(e,{recursive:!0}),(0,a.writeFileSync)(this.lockPath,String(process.pid),"utf-8"),this._acquired=!0,!0}catch{return!1}}release(){if(this._acquired){try{(0,a.unlinkSync)(this.lockPath)}catch{}this._acquired=!1}}}class n{constructor(e,t,r){this.cronTasks=e,this.onFire=t,this.onTasksChanged=r,this.timer=null,this.watcher=null,this.started=!1,this.lock=new o(e.getFilePath())}start(){if(!this.started){if(!this.lock.tryAcquire()){console.warn("[CronScheduler] Another process holds the scheduler lock — skipping start.");return}this.started=!0,this.timer=setInterval(()=>{this.tick()},1e3),this.startFileWatcher(),console.log(`[CronScheduler] Started (PID=${process.pid})`)}}stop(){this.started&&(this.started=!1,this.timer&&(clearInterval(this.timer),this.timer=null),this.watcher&&(this.watcher.close(),this.watcher=null),this.lock.release(),console.log("[CronScheduler] Stopped."))}startFileWatcher(){let e=this.cronTasks.getFilePath(),t=(0,i.dirname)(e);if(!(0,a.existsSync)(t))try{(0,a.mkdirSync)(t,{recursive:!0})}catch{}try{this.watcher=(0,a.watch)(t,{persistent:!1},(e,t)=>{"scheduled_tasks.json"===t&&this.onTasksChanged(this.cronTasks.load())})}catch(e){console.warn("[CronScheduler] Could not start file watcher:",e)}}async tick(){let e=Date.now(),t=this.cronTasks.load(),r=!1;for(let a of t)a.enabled&&a.nextFireAt&&!(a.nextFireAt>e)&&(this.onFire(a),a.recurring?this.cronTasks.update(a.id,{nextFireAt:(0,s.Ilu)(a.cron,e),lastFiredAt:e}):this.cronTasks.delete(a.id),r=!0);r&&this.onTasksChanged(this.cronTasks.load())}}var c=r(785);class u{constructor(){this.tasks=new s.vo4((0,c.kO)()),this.scheduler=new n(this.tasks,e=>{this.fire(e).catch(e=>console.error("Scheduled Customer Agent run failed",e))},()=>{}),this.scheduler.start()}async fire(e){let{agentHost:t}=await r.e(4537).then(r.bind(r,4537)),{getCustomerGoalCoordinator:s}=await Promise.all([r.e(4537),r.e(732)]).then(r.bind(r,732)),a=e.sessionId;a&&await t.getSessionStore().get(a)||(a=(await t.createSession(e.label||"定时任务")).id,this.tasks.update(e.id,{sessionId:a})),await s().enqueue(a,e.prompt)}call(e,t){let r=String(t[0]||"");switch(e){case"cronList":return this.tasks.list();case"cronCreate":{if("string"!=typeof t[0]||"string"!=typeof t[1]||!t[1].trim())throw Error("cron and prompt required");let e=t[2]&&"object"==typeof t[2]?t[2]:{};return this.tasks.create({cron:t[0],prompt:t[1],recurring:!1!==e.recurring,enabled:!0,durable:!0,..."string"==typeof e.sessionId?{sessionId:e.sessionId}:{},..."string"==typeof e.label?{label:e.label}:{}})}case"cronPause":return this.tasks.pause(r);case"cronResume":return this.tasks.resume(r);case"cronDelete":return this.tasks.delete(r);case"cronDeleteAll":return this.tasks.deleteAll(),{ok:!0};default:throw Error("Unsupported schedule operation")}}}let d=globalThis;function h(){return d.__sharedCronService??=new u}}};var t=require("../../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),s=t.X(0,[8375,6703,6244,1322,4621,4537,2083],()=>r(5449));module.exports=s})();
@@ -0,0 +1 @@
1
+ "use strict";(()=>{var e={};e.id=9015,e.ids=[9015],e.modules={5890:e=>{e.exports=require("better-sqlite3")},399:e=>{e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},517:e=>{e.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},9801:e=>{e.exports=require("os")},7718:e=>{e.exports=require("node:child_process")},6005:e=>{e.exports=require("node:crypto")},5673:e=>{e.exports=require("node:events")},7561:e=>{e.exports=require("node:fs")},3977:e=>{e.exports=require("node:fs/promises")},8849:e=>{e.exports=require("node:http")},2286:e=>{e.exports=require("node:https")},2033:e=>{e.exports=require("node:module")},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")},3263:(e,r,t)=>{t.r(r),t.d(r,{originalPathname:()=>m,patchFetch:()=>x,requestAsyncStorage:()=>f,routeModule:()=>d,serverHooks:()=>v,staticGenerationAsyncStorage:()=>g});var o={};t.r(o),t.d(o,{POST:()=>c,dynamic:()=>u});var n=t(7786),s=t(5042),i=t(2184),a=t(535);let u="force-dynamic",l=new Map;function p(e,r){if("string"==typeof e&&0!==e.length)return e.length>r?e.slice(0,r):e}async function c(e){let r;let t=Date.now(),o=function(e){let r=e.headers.get("x-forwarded-for");return r?r.split(",")[0].trim():e.headers.get("x-real-ip")??"unknown"}(e);if(!function(e,r){let t=(l.get(e)??[]).filter(e=>r-e<6e4);if(t.length>=60)return l.set(e,t),!1;if(t.push(r),l.set(e,t),l.size>1e4){for(let[e,t]of l)if(t.every(e=>r-e>=6e4)&&l.delete(e),l.size<=5e3)break}return!0}(o,t))return Response.json({error:"rate limited"},{status:429});try{r=await e.json()}catch{return Response.json({error:"invalid JSON body"},{status:400})}let n=Array.isArray(r?.entries)?r.entries.slice(0,20):[r],s=(0,a.L)(),i=0;for(let e of n){let r;let t=p(e.message,4e3);if(!t)continue;let n="string"==typeof e.level?e.level:"error",a="fatal"===n||"warn"===n?n:"error",u=p(e.source,40),l=e.error,c=l&&"object"==typeof l?{name:p(l.name,200)??"Error",message:p(l.message,4e3)??"",stack:p(l.stack,8e3)}:void 0;if(void 0!==e.data)try{let t=JSON.stringify(e.data);t&&t.length<=2e3&&(r=JSON.parse(t))}catch{r=void 0}s.log(a,t,c,{clientIp:o,clientSource:u??"webapp",data:r}),i++}return Response.json({accepted:i},{headers:{"cache-control":"no-store"}})}let d=new n.AppRouteRouteModule({definition:{kind:s.x.APP_ROUTE,page:"/api/client-logs/route",pathname:"/api/client-logs",filename:"route",bundlePath:"app/api/client-logs/route"},resolvedPagePath:"/Users/caoqu/team-agent/customer-agent/packages/server/app/api/client-logs/route.ts",nextConfigOutput:"standalone",userland:o}),{requestAsyncStorage:f,staticGenerationAsyncStorage:g,serverHooks:v}=d,m="/api/client-logs/route";function x(){return(0,i.patchFetch)({serverHooks:v,staticGenerationAsyncStorage:g})}},7786:(e,r,t)=>{e.exports=t(517)},535:(e,r,t)=>{t.d(r,{L:()=>i});var o=t(1322),n=t(785);let s=!1;function i(){let e=(0,o.Qfc)();if(e)return e;let r=(0,o.qZ_)({dir:(0,n.ME)(),source:"server",minLevel:"info",handlers:{exitOnUncaughtException:!1}});return s||(s=!0,r.info("server logger attached",{dir:r.dir,pid:process.pid})),r}},785:(e,r,t)=>{t.d(r,{ME:()=>a,kO:()=>i,sr:()=>u});var o=t(9411);let n=function(){let e=process.argv[1];if(e){let r=(0,o.dirname)((0,o.resolve)(e)),t=`${o.sep}node_modules${o.sep}.bin`;return r.endsWith(t)?(0,o.resolve)(r,"..",".."):r}return(0,o.resolve)(process.cwd())}();function s(e=process.env,r=n){return(0,o.resolve)(e.AGENT_DATA_DIR?.trim()||r)}function i(){return s()}function a(e=process.env,r=s(e)){let t=e.AGENT_LOG_DIR?.trim();if(t)return(0,o.resolve)(t);let n=e.AGENTROAM_DATA_DIR?.trim();return n?(0,o.resolve)(n,"logs"):(0,o.join)(r,".agent-data","logs")}function u(){return function(e=process.env,r=n){return(0,o.resolve)(e.AGENT_WORKING_DIRECTORY?.trim()||r)}(process.env,i())}}};var r=require("../../../webpack-runtime.js");r.C(e);var t=e=>r(r.s=e),o=r.X(0,[8375,1322],()=>t(3263));module.exports=o})();
@@ -0,0 +1 @@
1
+ {"version":1,"files":["../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/lib/binding.js","../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/lib/database.js","../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/lib/index.js","../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/lib/methods/aggregate.js","../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/lib/methods/backup.js","../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/lib/methods/explain.js","../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/lib/methods/function.js","../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/lib/methods/inspect.js","../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/lib/methods/pragma.js","../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/lib/methods/serialize.js","../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/lib/methods/table.js","../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/lib/methods/transaction.js","../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/lib/methods/wrappers.js","../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/lib/sqlite-error.js","../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/lib/util.js","../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/package.json","../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/prebuilds/darwin-arm64.node","../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/prebuilds/darwin-x64.node","../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/prebuilds/linux-arm64.node","../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/prebuilds/linux-x64.node","../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/prebuilds/linuxmusl-arm64.node","../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/prebuilds/linuxmusl-x64.node","../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/prebuilds/win32-arm64.node","../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/prebuilds/win32-x64.node","../../../../../../../node_modules/.bun/next@14.2.35+6dbf9a050bc9aadb/node_modules/next/dist/client/components/action-async-storage-instance.js","../../../../../../../node_modules/.bun/next@14.2.35+6dbf9a050bc9aadb/node_modules/next/dist/client/components/action-async-storage.external.js","../../../../../../../node_modules/.bun/next@14.2.35+6dbf9a050bc9aadb/node_modules/next/dist/client/components/async-local-storage.js","../../../../../../../node_modules/.bun/next@14.2.35+6dbf9a050bc9aadb/node_modules/next/dist/client/components/request-async-storage-instance.js","../../../../../../../node_modules/.bun/next@14.2.35+6dbf9a050bc9aadb/node_modules/next/dist/client/components/request-async-storage.external.js","../../../../../../../node_modules/.bun/next@14.2.35+6dbf9a050bc9aadb/node_modules/next/dist/client/components/static-generation-async-storage-instance.js","../../../../../../../node_modules/.bun/next@14.2.35+6dbf9a050bc9aadb/node_modules/next/dist/client/components/static-generation-async-storage.external.js","../../../../../../../node_modules/.bun/next@14.2.35+6dbf9a050bc9aadb/node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../../../../../node_modules/.bun/next@14.2.35+6dbf9a050bc9aadb/node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../../../../../node_modules/.bun/next@14.2.35+6dbf9a050bc9aadb/node_modules/next/dist/compiled/next-server/app-page.runtime.prod.js","../../../../../../../node_modules/.bun/next@14.2.35+6dbf9a050bc9aadb/node_modules/next/dist/compiled/next-server/app-route.runtime.prod.js","../../../../../../../node_modules/.bun/next@14.2.35+6dbf9a050bc9aadb/node_modules/next/dist/server/lib/trace/constants.js","../../../../../../../node_modules/.bun/next@14.2.35+6dbf9a050bc9aadb/node_modules/next/dist/server/lib/trace/tracer.js","../../../../../../../node_modules/.bun/next@14.2.35+6dbf9a050bc9aadb/node_modules/next/package.json","../../../../../../../package.json","../../../../../../core/package.json","../../../../../node_modules/better-sqlite3","../../../../../node_modules/next","../../../../../package.json","../../../../package.json","../../../chunks/1322.js","../../../chunks/8375.js","../../../webpack-runtime.js"]}
@@ -1 +1 @@
1
- "use strict";(()=>{var e={};e.id=7361,e.ids=[7361],e.modules={5890:e=>{e.exports=require("better-sqlite3")},399:e=>{e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},517:e=>{e.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},9801:e=>{e.exports=require("os")},7718:e=>{e.exports=require("node:child_process")},6005:e=>{e.exports=require("node:crypto")},5673:e=>{e.exports=require("node:events")},7561:e=>{e.exports=require("node:fs")},3977:e=>{e.exports=require("node:fs/promises")},8849:e=>{e.exports=require("node:http")},2286:e=>{e.exports=require("node:https")},2033:e=>{e.exports=require("node:module")},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")},9085:(e,t,r)=>{r.r(t),r.d(t,{originalPathname:()=>y,patchFetch:()=>f,requestAsyncStorage:()=>l,routeModule:()=>h,serverHooks:()=>x,staticGenerationAsyncStorage:()=>m});var s={};r.r(s),r.d(s,{DELETE:()=>d,GET:()=>c,PATCH:()=>p});var o=r(7786),n=r(5042),i=r(2184),a=r(1890),u=r(556);async function c(e,{params:t}){try{return a.NextResponse.json(await u.a.get(t.id))}catch(t){let e=(0,u.r)(t);return a.NextResponse.json(e.body,{status:e.status})}}async function p(e,{params:t}){try{let r=await e.json();return a.NextResponse.json(await u.a.rename(t.id,r.name??""))}catch(t){let e=(0,u.r)(t);return a.NextResponse.json(e.body,{status:e.status})}}async function d(e,{params:t}){try{return await u.a.delete(t.id),a.NextResponse.json({deleted:!0,projectId:t.id})}catch(t){let e=(0,u.r)(t);return a.NextResponse.json(e.body,{status:e.status})}}let h=new o.AppRouteRouteModule({definition:{kind:n.x.APP_ROUTE,page:"/api/projects/[id]/route",pathname:"/api/projects/[id]",filename:"route",bundlePath:"app/api/projects/[id]/route"},resolvedPagePath:"/Users/caoqu/team-agent/customer-agent/packages/server/app/api/projects/[id]/route.ts",nextConfigOutput:"standalone",userland:s}),{requestAsyncStorage:l,staticGenerationAsyncStorage:m,serverHooks:x}=h,y="/api/projects/[id]/route";function f(){return(0,i.patchFetch)({serverHooks:x,staticGenerationAsyncStorage:m})}},556:(e,t,r)=>{r.d(t,{r:()=>d,a:()=>p});var s=r(612),o=r(1322),n=r(785),i=r(6005),a=r(9411);class u extends Error{constructor(e,t,r){super(e),this.code=t,this.status=r,this.name="WebProjectError"}}class c{constructor(e,t){this.store=e,this.paths=t}list(){return this.store.list()}async get(e){let t=await this.store.get(e);if(!t)throw new u("项目不存在","PROJECT_NOT_FOUND",404);return t}async create(e,t){let r=this.paths.assertDirectory(e);for(let e of(await this.store.list()))try{if(this.paths.assertDirectory(e.description)===r)return e}catch{}let s=new Date().toISOString();return this.store.create({id:(0,i.randomUUID)(),name:t?.trim()||(0,a.basename)(r)||r,description:r,created:s,updated:s})}async rename(e,t){await this.get(e);let r=t.trim();if(!r)throw new u("项目名称不能为空","PROJECT_NAME_REQUIRED",400);return this.store.update(e,{name:r})}async delete(e){await this.get(e),await this.store.delete(e)}roots(){return this.paths.roots}directories(e){return this.paths.listDirectories(e)}check(e){try{return this.paths.assertDirectory(e),!0}catch{return!1}}canonicalDirectory(e){return this.paths.assertDirectory(e)}}let p=new c(new o.XWE((0,n.kO)()),o.Tpv.fromEnvironment(process.env.AGENT_WEB_ROOTS,(0,s.homedir)()));function d(e){return e instanceof u?{status:e.status,body:{error:e.message,code:e.code}}:e instanceof o.TLe?{status:400,body:{error:e.message,code:e.code}}:{status:500,body:{error:e instanceof Error?e.message:"项目操作失败",code:"PROJECT_OPERATION_FAILED"}}}},785:(e,t,r)=>{r.d(t,{kO:()=>n,sr:()=>i});var s=r(9411);let o=function(){let e=process.argv[1];if(e){let t=(0,s.dirname)((0,s.resolve)(e)),r=`${s.sep}node_modules${s.sep}.bin`;return t.endsWith(r)?(0,s.resolve)(t,"..",".."):t}return(0,s.resolve)(process.cwd())}();function n(){return function(e=process.env,t=o){return(0,s.resolve)(e.AGENT_DATA_DIR?.trim()||t)}()}function i(){return function(e=process.env,t=o){return(0,s.resolve)(e.AGENT_WORKING_DIRECTORY?.trim()||t)}(process.env,n())}}};var t=require("../../../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),s=t.X(0,[8375,6703,1322],()=>r(9085));module.exports=s})();
1
+ "use strict";(()=>{var e={};e.id=7361,e.ids=[7361],e.modules={5890:e=>{e.exports=require("better-sqlite3")},399:e=>{e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},517:e=>{e.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},9801:e=>{e.exports=require("os")},7718:e=>{e.exports=require("node:child_process")},6005:e=>{e.exports=require("node:crypto")},5673:e=>{e.exports=require("node:events")},7561:e=>{e.exports=require("node:fs")},3977:e=>{e.exports=require("node:fs/promises")},8849:e=>{e.exports=require("node:http")},2286:e=>{e.exports=require("node:https")},2033:e=>{e.exports=require("node:module")},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")},9085:(e,t,r)=>{r.r(t),r.d(t,{originalPathname:()=>v,patchFetch:()=>f,requestAsyncStorage:()=>h,routeModule:()=>l,serverHooks:()=>x,staticGenerationAsyncStorage:()=>m});var s={};r.r(s),r.d(s,{DELETE:()=>d,GET:()=>c,PATCH:()=>p});var o=r(7786),n=r(5042),i=r(2184),a=r(1890),u=r(556);async function c(e,{params:t}){try{return a.NextResponse.json(await u.a.get(t.id))}catch(t){let e=(0,u.r)(t);return a.NextResponse.json(e.body,{status:e.status})}}async function p(e,{params:t}){try{let r=await e.json();return a.NextResponse.json(await u.a.rename(t.id,r.name??""))}catch(t){let e=(0,u.r)(t);return a.NextResponse.json(e.body,{status:e.status})}}async function d(e,{params:t}){try{return await u.a.delete(t.id),a.NextResponse.json({deleted:!0,projectId:t.id})}catch(t){let e=(0,u.r)(t);return a.NextResponse.json(e.body,{status:e.status})}}let l=new o.AppRouteRouteModule({definition:{kind:n.x.APP_ROUTE,page:"/api/projects/[id]/route",pathname:"/api/projects/[id]",filename:"route",bundlePath:"app/api/projects/[id]/route"},resolvedPagePath:"/Users/caoqu/team-agent/customer-agent/packages/server/app/api/projects/[id]/route.ts",nextConfigOutput:"standalone",userland:s}),{requestAsyncStorage:h,staticGenerationAsyncStorage:m,serverHooks:x}=l,v="/api/projects/[id]/route";function f(){return(0,i.patchFetch)({serverHooks:x,staticGenerationAsyncStorage:m})}},556:(e,t,r)=>{r.d(t,{r:()=>d,a:()=>p});var s=r(612),o=r(1322),n=r(785),i=r(6005),a=r(9411);class u extends Error{constructor(e,t,r){super(e),this.code=t,this.status=r,this.name="WebProjectError"}}class c{constructor(e,t){this.store=e,this.paths=t}list(){return this.store.list()}async get(e){let t=await this.store.get(e);if(!t)throw new u("项目不存在","PROJECT_NOT_FOUND",404);return t}async create(e,t){let r=this.paths.assertDirectory(e);for(let e of(await this.store.list()))try{if(this.paths.assertDirectory(e.description)===r)return e}catch{}let s=new Date().toISOString();return this.store.create({id:(0,i.randomUUID)(),name:t?.trim()||(0,a.basename)(r)||r,description:r,created:s,updated:s})}async rename(e,t){await this.get(e);let r=t.trim();if(!r)throw new u("项目名称不能为空","PROJECT_NAME_REQUIRED",400);return this.store.update(e,{name:r})}async delete(e){await this.get(e),await this.store.delete(e)}roots(){return this.paths.roots}directories(e){return this.paths.listDirectories(e)}check(e){try{return this.paths.assertDirectory(e),!0}catch{return!1}}canonicalDirectory(e){return this.paths.assertDirectory(e)}}let p=new c(new o.XWE((0,n.kO)()),o.Tpv.fromEnvironment(process.env.AGENT_WEB_ROOTS,(0,s.homedir)()));function d(e){return e instanceof u?{status:e.status,body:{error:e.message,code:e.code}}:e instanceof o.TLe?{status:400,body:{error:e.message,code:e.code}}:{status:500,body:{error:e instanceof Error?e.message:"项目操作失败",code:"PROJECT_OPERATION_FAILED"}}}},785:(e,t,r)=>{r.d(t,{ME:()=>a,kO:()=>i,sr:()=>u});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(e=process.env,t=o){return(0,s.resolve)(e.AGENT_DATA_DIR?.trim()||t)}function i(){return n()}function a(e=process.env,t=n(e)){let r=e.AGENT_LOG_DIR?.trim();if(r)return(0,s.resolve)(r);let o=e.AGENTROAM_DATA_DIR?.trim();return o?(0,s.resolve)(o,"logs"):(0,s.join)(t,".agent-data","logs")}function u(){return function(e=process.env,t=o){return(0,s.resolve)(e.AGENT_WORKING_DIRECTORY?.trim()||t)}(process.env,i())}}};var t=require("../../../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),s=t.X(0,[8375,6703,1322],()=>r(9085));module.exports=s})();
@@ -1 +1 @@
1
- "use strict";(()=>{var e={};e.id=6315,e.ids=[6315],e.modules={5890:e=>{e.exports=require("better-sqlite3")},399:e=>{e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},517:e=>{e.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},9801:e=>{e.exports=require("os")},7718:e=>{e.exports=require("node:child_process")},6005:e=>{e.exports=require("node:crypto")},5673:e=>{e.exports=require("node:events")},7561:e=>{e.exports=require("node:fs")},3977:e=>{e.exports=require("node:fs/promises")},8849:e=>{e.exports=require("node:http")},2286:e=>{e.exports=require("node:https")},2033:e=>{e.exports=require("node:module")},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")},9695:(e,r,t)=>{t.r(r),t.d(r,{originalPathname:()=>m,patchFetch:()=>v,requestAsyncStorage:()=>d,routeModule:()=>p,serverHooks:()=>l,staticGenerationAsyncStorage:()=>h});var s={};t.r(s),t.d(s,{GET:()=>u});var o=t(7786),n=t(5042),i=t(2184),a=t(1890),c=t(556);async function u(e){let r=new URL(e.url).searchParams.get("path")??"";return a.NextResponse.json({valid:c.a.check(r)},{headers:{"Cache-Control":"no-store"}})}let p=new o.AppRouteRouteModule({definition:{kind:n.x.APP_ROUTE,page:"/api/projects/check/route",pathname:"/api/projects/check",filename:"route",bundlePath:"app/api/projects/check/route"},resolvedPagePath:"/Users/caoqu/team-agent/customer-agent/packages/server/app/api/projects/check/route.ts",nextConfigOutput:"standalone",userland:s}),{requestAsyncStorage:d,staticGenerationAsyncStorage:h,serverHooks:l}=p,m="/api/projects/check/route";function v(){return(0,i.patchFetch)({serverHooks:l,staticGenerationAsyncStorage:h})}},556:(e,r,t)=>{t.d(r,{r:()=>d,a:()=>p});var s=t(612),o=t(1322),n=t(785),i=t(6005),a=t(9411);class c extends Error{constructor(e,r,t){super(e),this.code=r,this.status=t,this.name="WebProjectError"}}class u{constructor(e,r){this.store=e,this.paths=r}list(){return this.store.list()}async get(e){let r=await this.store.get(e);if(!r)throw new c("项目不存在","PROJECT_NOT_FOUND",404);return r}async create(e,r){let t=this.paths.assertDirectory(e);for(let e of(await this.store.list()))try{if(this.paths.assertDirectory(e.description)===t)return e}catch{}let s=new Date().toISOString();return this.store.create({id:(0,i.randomUUID)(),name:r?.trim()||(0,a.basename)(t)||t,description:t,created:s,updated:s})}async rename(e,r){await this.get(e);let t=r.trim();if(!t)throw new c("项目名称不能为空","PROJECT_NAME_REQUIRED",400);return this.store.update(e,{name:t})}async delete(e){await this.get(e),await this.store.delete(e)}roots(){return this.paths.roots}directories(e){return this.paths.listDirectories(e)}check(e){try{return this.paths.assertDirectory(e),!0}catch{return!1}}canonicalDirectory(e){return this.paths.assertDirectory(e)}}let p=new u(new o.XWE((0,n.kO)()),o.Tpv.fromEnvironment(process.env.AGENT_WEB_ROOTS,(0,s.homedir)()));function d(e){return e instanceof c?{status:e.status,body:{error:e.message,code:e.code}}:e instanceof o.TLe?{status:400,body:{error:e.message,code:e.code}}:{status:500,body:{error:e instanceof Error?e.message:"项目操作失败",code:"PROJECT_OPERATION_FAILED"}}}},785:(e,r,t)=>{t.d(r,{kO:()=>n,sr:()=>i});var s=t(9411);let o=function(){let e=process.argv[1];if(e){let r=(0,s.dirname)((0,s.resolve)(e)),t=`${s.sep}node_modules${s.sep}.bin`;return r.endsWith(t)?(0,s.resolve)(r,"..",".."):r}return(0,s.resolve)(process.cwd())}();function n(){return function(e=process.env,r=o){return(0,s.resolve)(e.AGENT_DATA_DIR?.trim()||r)}()}function i(){return function(e=process.env,r=o){return(0,s.resolve)(e.AGENT_WORKING_DIRECTORY?.trim()||r)}(process.env,n())}}};var r=require("../../../../webpack-runtime.js");r.C(e);var t=e=>r(r.s=e),s=r.X(0,[8375,6703,1322],()=>t(9695));module.exports=s})();
1
+ "use strict";(()=>{var e={};e.id=6315,e.ids=[6315],e.modules={5890:e=>{e.exports=require("better-sqlite3")},399:e=>{e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},517:e=>{e.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},9801:e=>{e.exports=require("os")},7718:e=>{e.exports=require("node:child_process")},6005:e=>{e.exports=require("node:crypto")},5673:e=>{e.exports=require("node:events")},7561:e=>{e.exports=require("node:fs")},3977:e=>{e.exports=require("node:fs/promises")},8849:e=>{e.exports=require("node:http")},2286:e=>{e.exports=require("node:https")},2033:e=>{e.exports=require("node:module")},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")},9695:(e,r,t)=>{t.r(r),t.d(r,{originalPathname:()=>m,patchFetch:()=>v,requestAsyncStorage:()=>d,routeModule:()=>p,serverHooks:()=>l,staticGenerationAsyncStorage:()=>h});var s={};t.r(s),t.d(s,{GET:()=>u});var o=t(7786),n=t(5042),i=t(2184),a=t(1890),c=t(556);async function u(e){let r=new URL(e.url).searchParams.get("path")??"";return a.NextResponse.json({valid:c.a.check(r)},{headers:{"Cache-Control":"no-store"}})}let p=new o.AppRouteRouteModule({definition:{kind:n.x.APP_ROUTE,page:"/api/projects/check/route",pathname:"/api/projects/check",filename:"route",bundlePath:"app/api/projects/check/route"},resolvedPagePath:"/Users/caoqu/team-agent/customer-agent/packages/server/app/api/projects/check/route.ts",nextConfigOutput:"standalone",userland:s}),{requestAsyncStorage:d,staticGenerationAsyncStorage:h,serverHooks:l}=p,m="/api/projects/check/route";function v(){return(0,i.patchFetch)({serverHooks:l,staticGenerationAsyncStorage:h})}},556:(e,r,t)=>{t.d(r,{r:()=>d,a:()=>p});var s=t(612),o=t(1322),n=t(785),i=t(6005),a=t(9411);class c extends Error{constructor(e,r,t){super(e),this.code=r,this.status=t,this.name="WebProjectError"}}class u{constructor(e,r){this.store=e,this.paths=r}list(){return this.store.list()}async get(e){let r=await this.store.get(e);if(!r)throw new c("项目不存在","PROJECT_NOT_FOUND",404);return r}async create(e,r){let t=this.paths.assertDirectory(e);for(let e of(await this.store.list()))try{if(this.paths.assertDirectory(e.description)===t)return e}catch{}let s=new Date().toISOString();return this.store.create({id:(0,i.randomUUID)(),name:r?.trim()||(0,a.basename)(t)||t,description:t,created:s,updated:s})}async rename(e,r){await this.get(e);let t=r.trim();if(!t)throw new c("项目名称不能为空","PROJECT_NAME_REQUIRED",400);return this.store.update(e,{name:t})}async delete(e){await this.get(e),await this.store.delete(e)}roots(){return this.paths.roots}directories(e){return this.paths.listDirectories(e)}check(e){try{return this.paths.assertDirectory(e),!0}catch{return!1}}canonicalDirectory(e){return this.paths.assertDirectory(e)}}let p=new u(new o.XWE((0,n.kO)()),o.Tpv.fromEnvironment(process.env.AGENT_WEB_ROOTS,(0,s.homedir)()));function d(e){return e instanceof c?{status:e.status,body:{error:e.message,code:e.code}}:e instanceof o.TLe?{status:400,body:{error:e.message,code:e.code}}:{status:500,body:{error:e instanceof Error?e.message:"项目操作失败",code:"PROJECT_OPERATION_FAILED"}}}},785:(e,r,t)=>{t.d(r,{ME:()=>a,kO:()=>i,sr:()=>c});var s=t(9411);let o=function(){let e=process.argv[1];if(e){let r=(0,s.dirname)((0,s.resolve)(e)),t=`${s.sep}node_modules${s.sep}.bin`;return r.endsWith(t)?(0,s.resolve)(r,"..",".."):r}return(0,s.resolve)(process.cwd())}();function n(e=process.env,r=o){return(0,s.resolve)(e.AGENT_DATA_DIR?.trim()||r)}function i(){return n()}function a(e=process.env,r=n(e)){let t=e.AGENT_LOG_DIR?.trim();if(t)return(0,s.resolve)(t);let o=e.AGENTROAM_DATA_DIR?.trim();return o?(0,s.resolve)(o,"logs"):(0,s.join)(r,".agent-data","logs")}function c(){return function(e=process.env,r=o){return(0,s.resolve)(e.AGENT_WORKING_DIRECTORY?.trim()||r)}(process.env,i())}}};var r=require("../../../../webpack-runtime.js");r.C(e);var t=e=>r(r.s=e),s=r.X(0,[8375,6703,1322],()=>t(9695));module.exports=s})();
@@ -1 +1 @@
1
- "use strict";(()=>{var e={};e.id=4737,e.ids=[4737],e.modules={5890:e=>{e.exports=require("better-sqlite3")},399:e=>{e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},517:e=>{e.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},9801:e=>{e.exports=require("os")},7718:e=>{e.exports=require("node:child_process")},6005:e=>{e.exports=require("node:crypto")},5673:e=>{e.exports=require("node:events")},7561:e=>{e.exports=require("node:fs")},3977:e=>{e.exports=require("node:fs/promises")},8849:e=>{e.exports=require("node:http")},2286:e=>{e.exports=require("node:https")},2033:e=>{e.exports=require("node:module")},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")},5938:(e,r,t)=>{t.r(r),t.d(r,{originalPathname:()=>m,patchFetch:()=>x,requestAsyncStorage:()=>d,routeModule:()=>p,serverHooks:()=>l,staticGenerationAsyncStorage:()=>h});var s={};t.r(s),t.d(s,{GET:()=>u});var o=t(7786),i=t(5042),n=t(2184),a=t(1890),c=t(556);async function u(e){try{let r=new URL(e.url).searchParams.get("path")??"";return a.NextResponse.json(c.a.directories(r))}catch(r){let e=(0,c.r)(r);return a.NextResponse.json(e.body,{status:e.status})}}let p=new o.AppRouteRouteModule({definition:{kind:i.x.APP_ROUTE,page:"/api/projects/directories/route",pathname:"/api/projects/directories",filename:"route",bundlePath:"app/api/projects/directories/route"},resolvedPagePath:"/Users/caoqu/team-agent/customer-agent/packages/server/app/api/projects/directories/route.ts",nextConfigOutput:"standalone",userland:s}),{requestAsyncStorage:d,staticGenerationAsyncStorage:h,serverHooks:l}=p,m="/api/projects/directories/route";function x(){return(0,n.patchFetch)({serverHooks:l,staticGenerationAsyncStorage:h})}},556:(e,r,t)=>{t.d(r,{r:()=>d,a:()=>p});var s=t(612),o=t(1322),i=t(785),n=t(6005),a=t(9411);class c extends Error{constructor(e,r,t){super(e),this.code=r,this.status=t,this.name="WebProjectError"}}class u{constructor(e,r){this.store=e,this.paths=r}list(){return this.store.list()}async get(e){let r=await this.store.get(e);if(!r)throw new c("项目不存在","PROJECT_NOT_FOUND",404);return r}async create(e,r){let t=this.paths.assertDirectory(e);for(let e of(await this.store.list()))try{if(this.paths.assertDirectory(e.description)===t)return e}catch{}let s=new Date().toISOString();return this.store.create({id:(0,n.randomUUID)(),name:r?.trim()||(0,a.basename)(t)||t,description:t,created:s,updated:s})}async rename(e,r){await this.get(e);let t=r.trim();if(!t)throw new c("项目名称不能为空","PROJECT_NAME_REQUIRED",400);return this.store.update(e,{name:t})}async delete(e){await this.get(e),await this.store.delete(e)}roots(){return this.paths.roots}directories(e){return this.paths.listDirectories(e)}check(e){try{return this.paths.assertDirectory(e),!0}catch{return!1}}canonicalDirectory(e){return this.paths.assertDirectory(e)}}let p=new u(new o.XWE((0,i.kO)()),o.Tpv.fromEnvironment(process.env.AGENT_WEB_ROOTS,(0,s.homedir)()));function d(e){return e instanceof c?{status:e.status,body:{error:e.message,code:e.code}}:e instanceof o.TLe?{status:400,body:{error:e.message,code:e.code}}:{status:500,body:{error:e instanceof Error?e.message:"项目操作失败",code:"PROJECT_OPERATION_FAILED"}}}},785:(e,r,t)=>{t.d(r,{kO:()=>i,sr:()=>n});var s=t(9411);let o=function(){let e=process.argv[1];if(e){let r=(0,s.dirname)((0,s.resolve)(e)),t=`${s.sep}node_modules${s.sep}.bin`;return r.endsWith(t)?(0,s.resolve)(r,"..",".."):r}return(0,s.resolve)(process.cwd())}();function i(){return function(e=process.env,r=o){return(0,s.resolve)(e.AGENT_DATA_DIR?.trim()||r)}()}function n(){return function(e=process.env,r=o){return(0,s.resolve)(e.AGENT_WORKING_DIRECTORY?.trim()||r)}(process.env,i())}}};var r=require("../../../../webpack-runtime.js");r.C(e);var t=e=>r(r.s=e),s=r.X(0,[8375,6703,1322],()=>t(5938));module.exports=s})();
1
+ "use strict";(()=>{var e={};e.id=4737,e.ids=[4737],e.modules={5890:e=>{e.exports=require("better-sqlite3")},399:e=>{e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},517:e=>{e.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},9801:e=>{e.exports=require("os")},7718:e=>{e.exports=require("node:child_process")},6005:e=>{e.exports=require("node:crypto")},5673:e=>{e.exports=require("node:events")},7561:e=>{e.exports=require("node:fs")},3977:e=>{e.exports=require("node:fs/promises")},8849:e=>{e.exports=require("node:http")},2286:e=>{e.exports=require("node:https")},2033:e=>{e.exports=require("node:module")},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")},5938:(e,r,t)=>{t.r(r),t.d(r,{originalPathname:()=>m,patchFetch:()=>v,requestAsyncStorage:()=>d,routeModule:()=>p,serverHooks:()=>h,staticGenerationAsyncStorage:()=>l});var s={};t.r(s),t.d(s,{GET:()=>u});var o=t(7786),i=t(5042),n=t(2184),a=t(1890),c=t(556);async function u(e){try{let r=new URL(e.url).searchParams.get("path")??"";return a.NextResponse.json(c.a.directories(r))}catch(r){let e=(0,c.r)(r);return a.NextResponse.json(e.body,{status:e.status})}}let p=new o.AppRouteRouteModule({definition:{kind:i.x.APP_ROUTE,page:"/api/projects/directories/route",pathname:"/api/projects/directories",filename:"route",bundlePath:"app/api/projects/directories/route"},resolvedPagePath:"/Users/caoqu/team-agent/customer-agent/packages/server/app/api/projects/directories/route.ts",nextConfigOutput:"standalone",userland:s}),{requestAsyncStorage:d,staticGenerationAsyncStorage:l,serverHooks:h}=p,m="/api/projects/directories/route";function v(){return(0,n.patchFetch)({serverHooks:h,staticGenerationAsyncStorage:l})}},556:(e,r,t)=>{t.d(r,{r:()=>d,a:()=>p});var s=t(612),o=t(1322),i=t(785),n=t(6005),a=t(9411);class c extends Error{constructor(e,r,t){super(e),this.code=r,this.status=t,this.name="WebProjectError"}}class u{constructor(e,r){this.store=e,this.paths=r}list(){return this.store.list()}async get(e){let r=await this.store.get(e);if(!r)throw new c("项目不存在","PROJECT_NOT_FOUND",404);return r}async create(e,r){let t=this.paths.assertDirectory(e);for(let e of(await this.store.list()))try{if(this.paths.assertDirectory(e.description)===t)return e}catch{}let s=new Date().toISOString();return this.store.create({id:(0,n.randomUUID)(),name:r?.trim()||(0,a.basename)(t)||t,description:t,created:s,updated:s})}async rename(e,r){await this.get(e);let t=r.trim();if(!t)throw new c("项目名称不能为空","PROJECT_NAME_REQUIRED",400);return this.store.update(e,{name:t})}async delete(e){await this.get(e),await this.store.delete(e)}roots(){return this.paths.roots}directories(e){return this.paths.listDirectories(e)}check(e){try{return this.paths.assertDirectory(e),!0}catch{return!1}}canonicalDirectory(e){return this.paths.assertDirectory(e)}}let p=new u(new o.XWE((0,i.kO)()),o.Tpv.fromEnvironment(process.env.AGENT_WEB_ROOTS,(0,s.homedir)()));function d(e){return e instanceof c?{status:e.status,body:{error:e.message,code:e.code}}:e instanceof o.TLe?{status:400,body:{error:e.message,code:e.code}}:{status:500,body:{error:e instanceof Error?e.message:"项目操作失败",code:"PROJECT_OPERATION_FAILED"}}}},785:(e,r,t)=>{t.d(r,{ME:()=>a,kO:()=>n,sr:()=>c});var s=t(9411);let o=function(){let e=process.argv[1];if(e){let r=(0,s.dirname)((0,s.resolve)(e)),t=`${s.sep}node_modules${s.sep}.bin`;return r.endsWith(t)?(0,s.resolve)(r,"..",".."):r}return(0,s.resolve)(process.cwd())}();function i(e=process.env,r=o){return(0,s.resolve)(e.AGENT_DATA_DIR?.trim()||r)}function n(){return i()}function a(e=process.env,r=i(e)){let t=e.AGENT_LOG_DIR?.trim();if(t)return(0,s.resolve)(t);let o=e.AGENTROAM_DATA_DIR?.trim();return o?(0,s.resolve)(o,"logs"):(0,s.join)(r,".agent-data","logs")}function c(){return function(e=process.env,r=o){return(0,s.resolve)(e.AGENT_WORKING_DIRECTORY?.trim()||r)}(process.env,n())}}};var r=require("../../../../webpack-runtime.js");r.C(e);var t=e=>r(r.s=e),s=r.X(0,[8375,6703,1322],()=>t(5938));module.exports=s})();
@@ -1 +1 @@
1
- "use strict";(()=>{var e={};e.id=1199,e.ids=[1199],e.modules={5890:e=>{e.exports=require("better-sqlite3")},399:e=>{e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},517:e=>{e.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},9801:e=>{e.exports=require("os")},7718:e=>{e.exports=require("node:child_process")},6005:e=>{e.exports=require("node:crypto")},5673:e=>{e.exports=require("node:events")},7561:e=>{e.exports=require("node:fs")},3977:e=>{e.exports=require("node:fs/promises")},8849:e=>{e.exports=require("node:http")},2286:e=>{e.exports=require("node:https")},2033:e=>{e.exports=require("node:module")},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")},4525:(e,r,t)=>{t.r(r),t.d(r,{originalPathname:()=>m,patchFetch:()=>x,requestAsyncStorage:()=>d,routeModule:()=>p,serverHooks:()=>l,staticGenerationAsyncStorage:()=>h});var s={};t.r(s),t.d(s,{GET:()=>c});var o=t(7786),n=t(5042),i=t(2184),a=t(1890),u=t(556);async function c(){return a.NextResponse.json(u.a.roots(),{headers:{"Cache-Control":"no-store"}})}let p=new o.AppRouteRouteModule({definition:{kind:n.x.APP_ROUTE,page:"/api/projects/roots/route",pathname:"/api/projects/roots",filename:"route",bundlePath:"app/api/projects/roots/route"},resolvedPagePath:"/Users/caoqu/team-agent/customer-agent/packages/server/app/api/projects/roots/route.ts",nextConfigOutput:"standalone",userland:s}),{requestAsyncStorage:d,staticGenerationAsyncStorage:h,serverHooks:l}=p,m="/api/projects/roots/route";function x(){return(0,i.patchFetch)({serverHooks:l,staticGenerationAsyncStorage:h})}},556:(e,r,t)=>{t.d(r,{r:()=>d,a:()=>p});var s=t(612),o=t(1322),n=t(785),i=t(6005),a=t(9411);class u extends Error{constructor(e,r,t){super(e),this.code=r,this.status=t,this.name="WebProjectError"}}class c{constructor(e,r){this.store=e,this.paths=r}list(){return this.store.list()}async get(e){let r=await this.store.get(e);if(!r)throw new u("项目不存在","PROJECT_NOT_FOUND",404);return r}async create(e,r){let t=this.paths.assertDirectory(e);for(let e of(await this.store.list()))try{if(this.paths.assertDirectory(e.description)===t)return e}catch{}let s=new Date().toISOString();return this.store.create({id:(0,i.randomUUID)(),name:r?.trim()||(0,a.basename)(t)||t,description:t,created:s,updated:s})}async rename(e,r){await this.get(e);let t=r.trim();if(!t)throw new u("项目名称不能为空","PROJECT_NAME_REQUIRED",400);return this.store.update(e,{name:t})}async delete(e){await this.get(e),await this.store.delete(e)}roots(){return this.paths.roots}directories(e){return this.paths.listDirectories(e)}check(e){try{return this.paths.assertDirectory(e),!0}catch{return!1}}canonicalDirectory(e){return this.paths.assertDirectory(e)}}let p=new c(new o.XWE((0,n.kO)()),o.Tpv.fromEnvironment(process.env.AGENT_WEB_ROOTS,(0,s.homedir)()));function d(e){return e instanceof u?{status:e.status,body:{error:e.message,code:e.code}}:e instanceof o.TLe?{status:400,body:{error:e.message,code:e.code}}:{status:500,body:{error:e instanceof Error?e.message:"项目操作失败",code:"PROJECT_OPERATION_FAILED"}}}},785:(e,r,t)=>{t.d(r,{kO:()=>n,sr:()=>i});var s=t(9411);let o=function(){let e=process.argv[1];if(e){let r=(0,s.dirname)((0,s.resolve)(e)),t=`${s.sep}node_modules${s.sep}.bin`;return r.endsWith(t)?(0,s.resolve)(r,"..",".."):r}return(0,s.resolve)(process.cwd())}();function n(){return function(e=process.env,r=o){return(0,s.resolve)(e.AGENT_DATA_DIR?.trim()||r)}()}function i(){return function(e=process.env,r=o){return(0,s.resolve)(e.AGENT_WORKING_DIRECTORY?.trim()||r)}(process.env,n())}}};var r=require("../../../../webpack-runtime.js");r.C(e);var t=e=>r(r.s=e),s=r.X(0,[8375,6703,1322],()=>t(4525));module.exports=s})();
1
+ "use strict";(()=>{var e={};e.id=1199,e.ids=[1199],e.modules={5890:e=>{e.exports=require("better-sqlite3")},399:e=>{e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},517:e=>{e.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},9801:e=>{e.exports=require("os")},7718:e=>{e.exports=require("node:child_process")},6005:e=>{e.exports=require("node:crypto")},5673:e=>{e.exports=require("node:events")},7561:e=>{e.exports=require("node:fs")},3977:e=>{e.exports=require("node:fs/promises")},8849:e=>{e.exports=require("node:http")},2286:e=>{e.exports=require("node:https")},2033:e=>{e.exports=require("node:module")},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")},4525:(e,r,t)=>{t.r(r),t.d(r,{originalPathname:()=>m,patchFetch:()=>v,requestAsyncStorage:()=>d,routeModule:()=>p,serverHooks:()=>h,staticGenerationAsyncStorage:()=>l});var s={};t.r(s),t.d(s,{GET:()=>c});var o=t(7786),n=t(5042),i=t(2184),a=t(1890),u=t(556);async function c(){return a.NextResponse.json(u.a.roots(),{headers:{"Cache-Control":"no-store"}})}let p=new o.AppRouteRouteModule({definition:{kind:n.x.APP_ROUTE,page:"/api/projects/roots/route",pathname:"/api/projects/roots",filename:"route",bundlePath:"app/api/projects/roots/route"},resolvedPagePath:"/Users/caoqu/team-agent/customer-agent/packages/server/app/api/projects/roots/route.ts",nextConfigOutput:"standalone",userland:s}),{requestAsyncStorage:d,staticGenerationAsyncStorage:l,serverHooks:h}=p,m="/api/projects/roots/route";function v(){return(0,i.patchFetch)({serverHooks:h,staticGenerationAsyncStorage:l})}},556:(e,r,t)=>{t.d(r,{r:()=>d,a:()=>p});var s=t(612),o=t(1322),n=t(785),i=t(6005),a=t(9411);class u extends Error{constructor(e,r,t){super(e),this.code=r,this.status=t,this.name="WebProjectError"}}class c{constructor(e,r){this.store=e,this.paths=r}list(){return this.store.list()}async get(e){let r=await this.store.get(e);if(!r)throw new u("项目不存在","PROJECT_NOT_FOUND",404);return r}async create(e,r){let t=this.paths.assertDirectory(e);for(let e of(await this.store.list()))try{if(this.paths.assertDirectory(e.description)===t)return e}catch{}let s=new Date().toISOString();return this.store.create({id:(0,i.randomUUID)(),name:r?.trim()||(0,a.basename)(t)||t,description:t,created:s,updated:s})}async rename(e,r){await this.get(e);let t=r.trim();if(!t)throw new u("项目名称不能为空","PROJECT_NAME_REQUIRED",400);return this.store.update(e,{name:t})}async delete(e){await this.get(e),await this.store.delete(e)}roots(){return this.paths.roots}directories(e){return this.paths.listDirectories(e)}check(e){try{return this.paths.assertDirectory(e),!0}catch{return!1}}canonicalDirectory(e){return this.paths.assertDirectory(e)}}let p=new c(new o.XWE((0,n.kO)()),o.Tpv.fromEnvironment(process.env.AGENT_WEB_ROOTS,(0,s.homedir)()));function d(e){return e instanceof u?{status:e.status,body:{error:e.message,code:e.code}}:e instanceof o.TLe?{status:400,body:{error:e.message,code:e.code}}:{status:500,body:{error:e instanceof Error?e.message:"项目操作失败",code:"PROJECT_OPERATION_FAILED"}}}},785:(e,r,t)=>{t.d(r,{ME:()=>a,kO:()=>i,sr:()=>u});var s=t(9411);let o=function(){let e=process.argv[1];if(e){let r=(0,s.dirname)((0,s.resolve)(e)),t=`${s.sep}node_modules${s.sep}.bin`;return r.endsWith(t)?(0,s.resolve)(r,"..",".."):r}return(0,s.resolve)(process.cwd())}();function n(e=process.env,r=o){return(0,s.resolve)(e.AGENT_DATA_DIR?.trim()||r)}function i(){return n()}function a(e=process.env,r=n(e)){let t=e.AGENT_LOG_DIR?.trim();if(t)return(0,s.resolve)(t);let o=e.AGENTROAM_DATA_DIR?.trim();return o?(0,s.resolve)(o,"logs"):(0,s.join)(r,".agent-data","logs")}function u(){return function(e=process.env,r=o){return(0,s.resolve)(e.AGENT_WORKING_DIRECTORY?.trim()||r)}(process.env,i())}}};var r=require("../../../../webpack-runtime.js");r.C(e);var t=e=>r(r.s=e),s=r.X(0,[8375,6703,1322],()=>t(4525));module.exports=s})();
@@ -1 +1 @@
1
- "use strict";(()=>{var e={};e.id=4871,e.ids=[4871],e.modules={5890:e=>{e.exports=require("better-sqlite3")},399:e=>{e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},517:e=>{e.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},9801:e=>{e.exports=require("os")},7718:e=>{e.exports=require("node:child_process")},6005:e=>{e.exports=require("node:crypto")},5673:e=>{e.exports=require("node:events")},7561:e=>{e.exports=require("node:fs")},3977:e=>{e.exports=require("node:fs/promises")},8849:e=>{e.exports=require("node:http")},2286:e=>{e.exports=require("node:https")},2033:e=>{e.exports=require("node:module")},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")},3103:(e,t,r)=>{r.r(t),r.d(t,{originalPathname:()=>x,patchFetch:()=>v,requestAsyncStorage:()=>h,routeModule:()=>d,serverHooks:()=>m,staticGenerationAsyncStorage:()=>l});var s={};r.r(s),r.d(s,{GET:()=>c,POST:()=>p});var o=r(7786),n=r(5042),a=r(2184),i=r(1890),u=r(556);async function c(){return i.NextResponse.json(await u.a.list())}async function p(e){try{let t=await e.json();return i.NextResponse.json(await u.a.create(t.path??"",t.name),{status:201})}catch(t){let e=(0,u.r)(t);return i.NextResponse.json(e.body,{status:e.status})}}let d=new o.AppRouteRouteModule({definition:{kind:n.x.APP_ROUTE,page:"/api/projects/route",pathname:"/api/projects",filename:"route",bundlePath:"app/api/projects/route"},resolvedPagePath:"/Users/caoqu/team-agent/customer-agent/packages/server/app/api/projects/route.ts",nextConfigOutput:"standalone",userland:s}),{requestAsyncStorage:h,staticGenerationAsyncStorage:l,serverHooks:m}=d,x="/api/projects/route";function v(){return(0,a.patchFetch)({serverHooks:m,staticGenerationAsyncStorage:l})}},556:(e,t,r)=>{r.d(t,{r:()=>d,a:()=>p});var s=r(612),o=r(1322),n=r(785),a=r(6005),i=r(9411);class u extends Error{constructor(e,t,r){super(e),this.code=t,this.status=r,this.name="WebProjectError"}}class c{constructor(e,t){this.store=e,this.paths=t}list(){return this.store.list()}async get(e){let t=await this.store.get(e);if(!t)throw new u("项目不存在","PROJECT_NOT_FOUND",404);return t}async create(e,t){let r=this.paths.assertDirectory(e);for(let e of(await this.store.list()))try{if(this.paths.assertDirectory(e.description)===r)return e}catch{}let s=new Date().toISOString();return this.store.create({id:(0,a.randomUUID)(),name:t?.trim()||(0,i.basename)(r)||r,description:r,created:s,updated:s})}async rename(e,t){await this.get(e);let r=t.trim();if(!r)throw new u("项目名称不能为空","PROJECT_NAME_REQUIRED",400);return this.store.update(e,{name:r})}async delete(e){await this.get(e),await this.store.delete(e)}roots(){return this.paths.roots}directories(e){return this.paths.listDirectories(e)}check(e){try{return this.paths.assertDirectory(e),!0}catch{return!1}}canonicalDirectory(e){return this.paths.assertDirectory(e)}}let p=new c(new o.XWE((0,n.kO)()),o.Tpv.fromEnvironment(process.env.AGENT_WEB_ROOTS,(0,s.homedir)()));function d(e){return e instanceof u?{status:e.status,body:{error:e.message,code:e.code}}:e instanceof o.TLe?{status:400,body:{error:e.message,code:e.code}}:{status:500,body:{error:e instanceof Error?e.message:"项目操作失败",code:"PROJECT_OPERATION_FAILED"}}}},785:(e,t,r)=>{r.d(t,{kO:()=>n,sr:()=>a});var s=r(9411);let o=function(){let e=process.argv[1];if(e){let t=(0,s.dirname)((0,s.resolve)(e)),r=`${s.sep}node_modules${s.sep}.bin`;return t.endsWith(r)?(0,s.resolve)(t,"..",".."):t}return(0,s.resolve)(process.cwd())}();function n(){return function(e=process.env,t=o){return(0,s.resolve)(e.AGENT_DATA_DIR?.trim()||t)}()}function a(){return function(e=process.env,t=o){return(0,s.resolve)(e.AGENT_WORKING_DIRECTORY?.trim()||t)}(process.env,n())}}};var t=require("../../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),s=t.X(0,[8375,6703,1322],()=>r(3103));module.exports=s})();
1
+ "use strict";(()=>{var e={};e.id=4871,e.ids=[4871],e.modules={5890:e=>{e.exports=require("better-sqlite3")},399:e=>{e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},517:e=>{e.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},9801:e=>{e.exports=require("os")},7718:e=>{e.exports=require("node:child_process")},6005:e=>{e.exports=require("node:crypto")},5673:e=>{e.exports=require("node:events")},7561:e=>{e.exports=require("node:fs")},3977:e=>{e.exports=require("node:fs/promises")},8849:e=>{e.exports=require("node:http")},2286:e=>{e.exports=require("node:https")},2033:e=>{e.exports=require("node:module")},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")},3103:(e,t,r)=>{r.r(t),r.d(t,{originalPathname:()=>v,patchFetch:()=>x,requestAsyncStorage:()=>l,routeModule:()=>d,serverHooks:()=>m,staticGenerationAsyncStorage:()=>h});var s={};r.r(s),r.d(s,{GET:()=>c,POST:()=>p});var o=r(7786),n=r(5042),i=r(2184),a=r(1890),u=r(556);async function c(){return a.NextResponse.json(await u.a.list())}async function p(e){try{let t=await e.json();return a.NextResponse.json(await u.a.create(t.path??"",t.name),{status:201})}catch(t){let e=(0,u.r)(t);return a.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:l,staticGenerationAsyncStorage:h,serverHooks:m}=d,v="/api/projects/route";function x(){return(0,i.patchFetch)({serverHooks:m,staticGenerationAsyncStorage:h})}},556:(e,t,r)=>{r.d(t,{r:()=>d,a:()=>p});var s=r(612),o=r(1322),n=r(785),i=r(6005),a=r(9411);class u extends Error{constructor(e,t,r){super(e),this.code=t,this.status=r,this.name="WebProjectError"}}class c{constructor(e,t){this.store=e,this.paths=t}list(){return this.store.list()}async get(e){let t=await this.store.get(e);if(!t)throw new u("项目不存在","PROJECT_NOT_FOUND",404);return t}async create(e,t){let r=this.paths.assertDirectory(e);for(let e of(await this.store.list()))try{if(this.paths.assertDirectory(e.description)===r)return e}catch{}let s=new Date().toISOString();return this.store.create({id:(0,i.randomUUID)(),name:t?.trim()||(0,a.basename)(r)||r,description:r,created:s,updated:s})}async rename(e,t){await this.get(e);let r=t.trim();if(!r)throw new u("项目名称不能为空","PROJECT_NAME_REQUIRED",400);return this.store.update(e,{name:r})}async delete(e){await this.get(e),await this.store.delete(e)}roots(){return this.paths.roots}directories(e){return this.paths.listDirectories(e)}check(e){try{return this.paths.assertDirectory(e),!0}catch{return!1}}canonicalDirectory(e){return this.paths.assertDirectory(e)}}let p=new c(new o.XWE((0,n.kO)()),o.Tpv.fromEnvironment(process.env.AGENT_WEB_ROOTS,(0,s.homedir)()));function d(e){return e instanceof u?{status:e.status,body:{error:e.message,code:e.code}}:e instanceof o.TLe?{status:400,body:{error:e.message,code:e.code}}:{status:500,body:{error:e instanceof Error?e.message:"项目操作失败",code:"PROJECT_OPERATION_FAILED"}}}},785:(e,t,r)=>{r.d(t,{ME:()=>a,kO:()=>i,sr:()=>u});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(e=process.env,t=o){return(0,s.resolve)(e.AGENT_DATA_DIR?.trim()||t)}function i(){return n()}function a(e=process.env,t=n(e)){let r=e.AGENT_LOG_DIR?.trim();if(r)return(0,s.resolve)(r);let o=e.AGENTROAM_DATA_DIR?.trim();return o?(0,s.resolve)(o,"logs"):(0,s.join)(t,".agent-data","logs")}function u(){return function(e=process.env,t=o){return(0,s.resolve)(e.AGENT_WORKING_DIRECTORY?.trim()||t)}(process.env,i())}}};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})();
@@ -0,0 +1,15 @@
1
+ "use strict";(()=>{var e={};e.id=3611,e.ids=[3611],e.modules={5890:e=>{e.exports=require("better-sqlite3")},399:e=>{e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},517:e=>{e.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},9801:e=>{e.exports=require("os")},7718:e=>{e.exports=require("node:child_process")},6005:e=>{e.exports=require("node:crypto")},5673:e=>{e.exports=require("node:events")},7561:e=>{e.exports=require("node:fs")},3977:e=>{e.exports=require("node:fs/promises")},8849:e=>{e.exports=require("node:http")},2286:e=>{e.exports=require("node:https")},2033:e=>{e.exports=require("node:module")},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")},4715:(e,t,s)=>{s.r(t),s.d(t,{originalPathname:()=>k,patchFetch:()=>f,requestAsyncStorage:()=>l,routeModule:()=>h,serverHooks:()=>y,staticGenerationAsyncStorage:()=>p});var r={};s.r(r),s.d(r,{POST:()=>d});var i=s(7786),n=s(5042),o=s(2184),a=s(1890),c=s(3931),u=s(1079);async function d(e){try{(0,u.j)();let t=await e.json(),s=e.headers.get("x-agentroam-device-id"),r=(0,c.i)().saveSubscription(s,{endpoint:t?.endpoint,keys:{p256dh:t?.keys?.p256dh,auth:t?.keys?.auth}});return a.NextResponse.json(r)}catch(t){let e=t?.status;return a.NextResponse.json({error:t instanceof Error?t.message:"Unable to save push subscription"},{status:e&&e>=400&&e<500?e:500})}}let h=new i.AppRouteRouteModule({definition:{kind:n.x.APP_ROUTE,page:"/api/push/subscribe/route",pathname:"/api/push/subscribe",filename:"route",bundlePath:"app/api/push/subscribe/route"},resolvedPagePath:"/Users/caoqu/team-agent/customer-agent/packages/server/app/api/push/subscribe/route.ts",nextConfigOutput:"standalone",userland:r}),{requestAsyncStorage:l,staticGenerationAsyncStorage:p,serverHooks:y}=h,k="/api/push/subscribe/route";function f(){return(0,o.patchFetch)({serverHooks:y,staticGenerationAsyncStorage:p})}},1079:(e,t,s)=>{s.d(t,{j:()=>a});var r=s(4537),i=s(3931),n=s(535);let o=!1;function a(){o||(o=!0,r.agentHost.setGlobalEventObserver((e,t)=>{try{if("ask_user"===t.type){(0,i.i)().notifySession({sessionId:e,kind:"approval",title:"需要你的审批",body:"string"==typeof t.question&&t.question.trim()?t.question.trim().slice(0,160):"会话正在等待确认",url:"/app/"});return}if("done"===t.type){(0,i.i)().notifySession({sessionId:e,kind:"done",title:"会话已完成",body:"string"==typeof t.finalText&&t.finalText.trim()?t.finalText.trim().slice(0,160):"运行已结束",url:"/app/"});return}"error"===t.type&&(0,i.i)().notifySession({sessionId:e,kind:"error",title:"会话出错",body:"string"==typeof t.message&&t.message.trim()?t.message.trim().slice(0,160):"运行失败",url:"/app/"})}catch(t){(0,n.L)().warn("web push notify failed",{sessionId:e,error:t instanceof Error?t.message:String(t)})}}))}},1436:(e,t,s)=>{s.d(t,{N:()=>h});var r=s(1322),i=s(7561),n=s(9411);class o{constructor(e){this._acquired=!1,this.lockPath=e.replace(/scheduled_tasks\.json$/,".scheduler.lock")}get acquired(){return this._acquired}tryAcquire(){if(this._acquired)return!0;if((0,i.existsSync)(this.lockPath))try{let e=parseInt((0,i.readFileSync)(this.lockPath,"utf-8").trim(),10);if(!isNaN(e)&&e!==process.pid)try{return process.kill(e,0),!1}catch{}}catch{}try{let e=(0,n.dirname)(this.lockPath);return(0,i.existsSync)(e)||(0,i.mkdirSync)(e,{recursive:!0}),(0,i.writeFileSync)(this.lockPath,String(process.pid),"utf-8"),this._acquired=!0,!0}catch{return!1}}release(){if(this._acquired){try{(0,i.unlinkSync)(this.lockPath)}catch{}this._acquired=!1}}}class a{constructor(e,t,s){this.cronTasks=e,this.onFire=t,this.onTasksChanged=s,this.timer=null,this.watcher=null,this.started=!1,this.lock=new o(e.getFilePath())}start(){if(!this.started){if(!this.lock.tryAcquire()){console.warn("[CronScheduler] Another process holds the scheduler lock — skipping start.");return}this.started=!0,this.timer=setInterval(()=>{this.tick()},1e3),this.startFileWatcher(),console.log(`[CronScheduler] Started (PID=${process.pid})`)}}stop(){this.started&&(this.started=!1,this.timer&&(clearInterval(this.timer),this.timer=null),this.watcher&&(this.watcher.close(),this.watcher=null),this.lock.release(),console.log("[CronScheduler] Stopped."))}startFileWatcher(){let e=this.cronTasks.getFilePath(),t=(0,n.dirname)(e);if(!(0,i.existsSync)(t))try{(0,i.mkdirSync)(t,{recursive:!0})}catch{}try{this.watcher=(0,i.watch)(t,{persistent:!1},(e,t)=>{"scheduled_tasks.json"===t&&this.onTasksChanged(this.cronTasks.load())})}catch(e){console.warn("[CronScheduler] Could not start file watcher:",e)}}async tick(){let e=Date.now(),t=this.cronTasks.load(),s=!1;for(let i of t)i.enabled&&i.nextFireAt&&!(i.nextFireAt>e)&&(this.onFire(i),i.recurring?this.cronTasks.update(i.id,{nextFireAt:(0,r.Ilu)(i.cron,e),lastFiredAt:e}):this.cronTasks.delete(i.id),s=!0);s&&this.onTasksChanged(this.cronTasks.load())}}var c=s(785);class u{constructor(){this.tasks=new r.vo4((0,c.kO)()),this.scheduler=new a(this.tasks,e=>{this.fire(e).catch(e=>console.error("Scheduled Customer Agent run failed",e))},()=>{}),this.scheduler.start()}async fire(e){let{agentHost:t}=await s.e(4537).then(s.bind(s,4537)),{getCustomerGoalCoordinator:r}=await Promise.all([s.e(4537),s.e(732)]).then(s.bind(s,732)),i=e.sessionId;i&&await t.getSessionStore().get(i)||(i=(await t.createSession(e.label||"定时任务")).id,this.tasks.update(e.id,{sessionId:i})),await r().enqueue(i,e.prompt)}call(e,t){let s=String(t[0]||"");switch(e){case"cronList":return this.tasks.list();case"cronCreate":{if("string"!=typeof t[0]||"string"!=typeof t[1]||!t[1].trim())throw Error("cron and prompt required");let e=t[2]&&"object"==typeof t[2]?t[2]:{};return this.tasks.create({cron:t[0],prompt:t[1],recurring:!1!==e.recurring,enabled:!0,durable:!0,..."string"==typeof e.sessionId?{sessionId:e.sessionId}:{},..."string"==typeof e.label?{label:e.label}:{}})}case"cronPause":return this.tasks.pause(s);case"cronResume":return this.tasks.resume(s);case"cronDelete":return this.tasks.delete(s);case"cronDeleteAll":return this.tasks.deleteAll(),{ok:!0};default:throw Error("Unsupported schedule operation")}}}let d=globalThis;function h(){return d.__sharedCronService??=new u}},3931:(e,t,s)=>{s.d(t,{i:()=>l});var r=s(6005),i=s(7561),n=s(9411),o=s(5890);let a=require("web-push"),c=e=>JSON.stringify(e??null);class u{constructor(e,t=Date.now){this.now=t;let s=(0,n.resolve)(e,".agentroam-auth");(0,i.mkdirSync)(s,{recursive:!0,mode:448});let r=(0,n.join)(s,"push.sqlite");this.db=new o(r),(0,i.chmodSync)(r,384),this.db.pragma("busy_timeout = 5000"),this.db.exec(`
2
+ CREATE TABLE IF NOT EXISTS push_keys (id INTEGER PRIMARY KEY CHECK(id=1), public_key TEXT NOT NULL, private_key TEXT NOT NULL);
3
+ CREATE TABLE IF NOT EXISTS push_subscriptions (
4
+ endpoint_hash TEXT PRIMARY KEY,
5
+ endpoint TEXT NOT NULL,
6
+ p256dh TEXT NOT NULL,
7
+ auth TEXT NOT NULL,
8
+ device_id TEXT,
9
+ created INTEGER NOT NULL
10
+ );
11
+ `),this.keys=this.loadKeys(),this.lastNotified=new Map}loadKeys(){let e=this.db.prepare("SELECT public_key, private_key FROM push_keys WHERE id=1").get();if(e)return{publicKey:e.public_key,privateKey:e.private_key};let t=a.generateVAPIDKeys();return this.db.prepare("INSERT INTO push_keys VALUES (1, ?, ?)").run(t.publicKey,t.privateKey),{publicKey:t.publicKey,privateKey:t.privateKey}}getPublicKey(){return this.keys.publicKey}saveSubscription(e,t){let s="string"==typeof t?.endpoint?t.endpoint:"",r=t?.keys?.p256dh,i=t?.keys?.auth;if(!s.startsWith("https://")||"string"!=typeof r||!r||"string"!=typeof i||!i)throw Object.assign(Error("Invalid push subscription"),{status:400});return this.db.prepare(`
12
+ INSERT INTO push_subscriptions (endpoint_hash, endpoint, p256dh, auth, device_id, created)
13
+ VALUES (?, ?, ?, ?, ?, ?)
14
+ ON CONFLICT(endpoint_hash) DO UPDATE SET p256dh=excluded.p256dh, auth=excluded.auth, device_id=excluded.device_id
15
+ `).run(d(s),s,r,i,"string"==typeof e?e:null,this.now()),{ok:!0}}deleteSubscription(e){if("string"!=typeof e||!e)throw Object.assign(Error("Endpoint required"),{status:400});return this.db.prepare("DELETE FROM push_subscriptions WHERE endpoint_hash=?").run(d(e)),{ok:!0}}listSubscriptions(){return this.db.prepare("SELECT endpoint, p256dh, auth, device_id FROM push_subscriptions").all().map(e=>({endpoint:e.endpoint,keys:{p256dh:e.p256dh,auth:e.auth},deviceId:e.device_id}))}notifySession({sessionId:e,kind:t,title:s,body:r,url:i}){let n=`${e}\u001f${t}`,o=this.lastNotified.get(n)||0;if(!(this.now()-o<1500)){if(this.lastNotified.set(n,this.now()),this.lastNotified.size>500)for(let[e,t]of this.lastNotified)this.now()-t>6e4&&this.lastNotified.delete(e);this.sendToAll({title:s,body:r,tag:e,url:i})}}async sendToAll(e){let t=this.listSubscriptions();await Promise.allSettled(t.map(t=>this.send(t,e)))}async send(e,t){try{a.setVapidDetails("mailto:agentroam@localhost",this.keys.publicKey,this.keys.privateKey),await a.sendNotification(e,c(t),{TTL:3600})}catch(s){let t=s?.statusCode;(404===t||410===t)&&this.db.prepare("DELETE FROM push_subscriptions WHERE endpoint_hash=?").run(d(e.endpoint))}}close(){this.db.close()}}function d(e){return(0,r.createHash)("sha256").update(e).digest("hex")}let h=null;function l(e=process.env.AGENT_DATA_DIR?.trim()||process.cwd()){return h??=new u(e)}}};var t=require("../../../../webpack-runtime.js");t.C(e);var s=e=>t(t.s=e),r=t.X(0,[8375,6703,1322,4621,4537],()=>s(4715));module.exports=r})();
@@ -0,0 +1 @@
1
+ {"version":1,"files":["../../../../../../../../node_modules/.bun/agent-base@7.1.4/node_modules/agent-base/dist/helpers.js","../../../../../../../../node_modules/.bun/agent-base@7.1.4/node_modules/agent-base/dist/index.js","../../../../../../../../node_modules/.bun/agent-base@7.1.4/node_modules/agent-base/package.json","../../../../../../../../node_modules/.bun/asn1.js@5.4.1/node_modules/asn1.js/lib/asn1.js","../../../../../../../../node_modules/.bun/asn1.js@5.4.1/node_modules/asn1.js/lib/asn1/api.js","../../../../../../../../node_modules/.bun/asn1.js@5.4.1/node_modules/asn1.js/lib/asn1/base/buffer.js","../../../../../../../../node_modules/.bun/asn1.js@5.4.1/node_modules/asn1.js/lib/asn1/base/index.js","../../../../../../../../node_modules/.bun/asn1.js@5.4.1/node_modules/asn1.js/lib/asn1/base/node.js","../../../../../../../../node_modules/.bun/asn1.js@5.4.1/node_modules/asn1.js/lib/asn1/base/reporter.js","../../../../../../../../node_modules/.bun/asn1.js@5.4.1/node_modules/asn1.js/lib/asn1/constants/der.js","../../../../../../../../node_modules/.bun/asn1.js@5.4.1/node_modules/asn1.js/lib/asn1/constants/index.js","../../../../../../../../node_modules/.bun/asn1.js@5.4.1/node_modules/asn1.js/lib/asn1/decoders/der.js","../../../../../../../../node_modules/.bun/asn1.js@5.4.1/node_modules/asn1.js/lib/asn1/decoders/index.js","../../../../../../../../node_modules/.bun/asn1.js@5.4.1/node_modules/asn1.js/lib/asn1/decoders/pem.js","../../../../../../../../node_modules/.bun/asn1.js@5.4.1/node_modules/asn1.js/lib/asn1/encoders/der.js","../../../../../../../../node_modules/.bun/asn1.js@5.4.1/node_modules/asn1.js/lib/asn1/encoders/index.js","../../../../../../../../node_modules/.bun/asn1.js@5.4.1/node_modules/asn1.js/lib/asn1/encoders/pem.js","../../../../../../../../node_modules/.bun/asn1.js@5.4.1/node_modules/asn1.js/package.json","../../../../../../../../node_modules/.bun/asn1.js@5.4.1/node_modules/bn.js","../../../../../../../../node_modules/.bun/asn1.js@5.4.1/node_modules/inherits","../../../../../../../../node_modules/.bun/asn1.js@5.4.1/node_modules/minimalistic-assert","../../../../../../../../node_modules/.bun/asn1.js@5.4.1/node_modules/safer-buffer","../../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/lib/binding.js","../../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/lib/database.js","../../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/lib/index.js","../../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/lib/methods/aggregate.js","../../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/lib/methods/backup.js","../../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/lib/methods/explain.js","../../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/lib/methods/function.js","../../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/lib/methods/inspect.js","../../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/lib/methods/pragma.js","../../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/lib/methods/serialize.js","../../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/lib/methods/table.js","../../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/lib/methods/transaction.js","../../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/lib/methods/wrappers.js","../../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/lib/sqlite-error.js","../../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/lib/util.js","../../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/package.json","../../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/prebuilds/darwin-arm64.node","../../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/prebuilds/darwin-x64.node","../../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/prebuilds/linux-arm64.node","../../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/prebuilds/linux-x64.node","../../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/prebuilds/linuxmusl-arm64.node","../../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/prebuilds/linuxmusl-x64.node","../../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/prebuilds/win32-arm64.node","../../../../../../../../node_modules/.bun/better-sqlite3@13.0.3/node_modules/better-sqlite3/prebuilds/win32-x64.node","../../../../../../../../node_modules/.bun/bn.js@4.12.5/node_modules/bn.js/lib/bn.js","../../../../../../../../node_modules/.bun/bn.js@4.12.5/node_modules/bn.js/package.json","../../../../../../../../node_modules/.bun/buffer-equal-constant-time@1.0.1/node_modules/buffer-equal-constant-time/index.js","../../../../../../../../node_modules/.bun/buffer-equal-constant-time@1.0.1/node_modules/buffer-equal-constant-time/package.json","../../../../../../../../node_modules/.bun/debug@4.4.3/node_modules/debug/package.json","../../../../../../../../node_modules/.bun/debug@4.4.3/node_modules/debug/src/browser.js","../../../../../../../../node_modules/.bun/debug@4.4.3/node_modules/debug/src/common.js","../../../../../../../../node_modules/.bun/debug@4.4.3/node_modules/debug/src/index.js","../../../../../../../../node_modules/.bun/debug@4.4.3/node_modules/debug/src/node.js","../../../../../../../../node_modules/.bun/debug@4.4.3/node_modules/ms","../../../../../../../../node_modules/.bun/ecdsa-sig-formatter@1.0.11/node_modules/ecdsa-sig-formatter/package.json","../../../../../../../../node_modules/.bun/ecdsa-sig-formatter@1.0.11/node_modules/ecdsa-sig-formatter/src/ecdsa-sig-formatter.js","../../../../../../../../node_modules/.bun/ecdsa-sig-formatter@1.0.11/node_modules/ecdsa-sig-formatter/src/param-bytes-for-alg.js","../../../../../../../../node_modules/.bun/ecdsa-sig-formatter@1.0.11/node_modules/safe-buffer","../../../../../../../../node_modules/.bun/has-flag@4.0.0/node_modules/has-flag/index.js","../../../../../../../../node_modules/.bun/has-flag@4.0.0/node_modules/has-flag/package.json","../../../../../../../../node_modules/.bun/http_ece@1.2.0/node_modules/http_ece/ece.js","../../../../../../../../node_modules/.bun/http_ece@1.2.0/node_modules/http_ece/package.json","../../../../../../../../node_modules/.bun/https-proxy-agent@7.0.6/node_modules/agent-base","../../../../../../../../node_modules/.bun/https-proxy-agent@7.0.6/node_modules/debug","../../../../../../../../node_modules/.bun/https-proxy-agent@7.0.6/node_modules/https-proxy-agent/dist/index.js","../../../../../../../../node_modules/.bun/https-proxy-agent@7.0.6/node_modules/https-proxy-agent/dist/parse-proxy-response.js","../../../../../../../../node_modules/.bun/https-proxy-agent@7.0.6/node_modules/https-proxy-agent/package.json","../../../../../../../../node_modules/.bun/inherits@2.0.4/node_modules/inherits/inherits.js","../../../../../../../../node_modules/.bun/inherits@2.0.4/node_modules/inherits/inherits_browser.js","../../../../../../../../node_modules/.bun/inherits@2.0.4/node_modules/inherits/package.json","../../../../../../../../node_modules/.bun/jwa@2.0.1/node_modules/buffer-equal-constant-time","../../../../../../../../node_modules/.bun/jwa@2.0.1/node_modules/ecdsa-sig-formatter","../../../../../../../../node_modules/.bun/jwa@2.0.1/node_modules/jwa/index.js","../../../../../../../../node_modules/.bun/jwa@2.0.1/node_modules/jwa/package.json","../../../../../../../../node_modules/.bun/jwa@2.0.1/node_modules/safe-buffer","../../../../../../../../node_modules/.bun/jws@4.0.1/node_modules/jwa","../../../../../../../../node_modules/.bun/jws@4.0.1/node_modules/jws/index.js","../../../../../../../../node_modules/.bun/jws@4.0.1/node_modules/jws/lib/data-stream.js","../../../../../../../../node_modules/.bun/jws@4.0.1/node_modules/jws/lib/sign-stream.js","../../../../../../../../node_modules/.bun/jws@4.0.1/node_modules/jws/lib/tostring.js","../../../../../../../../node_modules/.bun/jws@4.0.1/node_modules/jws/lib/verify-stream.js","../../../../../../../../node_modules/.bun/jws@4.0.1/node_modules/jws/package.json","../../../../../../../../node_modules/.bun/jws@4.0.1/node_modules/safe-buffer","../../../../../../../../node_modules/.bun/minimalistic-assert@1.0.1/node_modules/minimalistic-assert/index.js","../../../../../../../../node_modules/.bun/minimalistic-assert@1.0.1/node_modules/minimalistic-assert/package.json","../../../../../../../../node_modules/.bun/ms@2.1.3/node_modules/ms/index.js","../../../../../../../../node_modules/.bun/ms@2.1.3/node_modules/ms/package.json","../../../../../../../../node_modules/.bun/next@14.2.35+6dbf9a050bc9aadb/node_modules/next/dist/client/components/action-async-storage-instance.js","../../../../../../../../node_modules/.bun/next@14.2.35+6dbf9a050bc9aadb/node_modules/next/dist/client/components/action-async-storage.external.js","../../../../../../../../node_modules/.bun/next@14.2.35+6dbf9a050bc9aadb/node_modules/next/dist/client/components/async-local-storage.js","../../../../../../../../node_modules/.bun/next@14.2.35+6dbf9a050bc9aadb/node_modules/next/dist/client/components/request-async-storage-instance.js","../../../../../../../../node_modules/.bun/next@14.2.35+6dbf9a050bc9aadb/node_modules/next/dist/client/components/request-async-storage.external.js","../../../../../../../../node_modules/.bun/next@14.2.35+6dbf9a050bc9aadb/node_modules/next/dist/client/components/static-generation-async-storage-instance.js","../../../../../../../../node_modules/.bun/next@14.2.35+6dbf9a050bc9aadb/node_modules/next/dist/client/components/static-generation-async-storage.external.js","../../../../../../../../node_modules/.bun/next@14.2.35+6dbf9a050bc9aadb/node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../../../../../../node_modules/.bun/next@14.2.35+6dbf9a050bc9aadb/node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../../../../../../node_modules/.bun/next@14.2.35+6dbf9a050bc9aadb/node_modules/next/dist/compiled/next-server/app-page.runtime.prod.js","../../../../../../../../node_modules/.bun/next@14.2.35+6dbf9a050bc9aadb/node_modules/next/dist/compiled/next-server/app-route.runtime.prod.js","../../../../../../../../node_modules/.bun/next@14.2.35+6dbf9a050bc9aadb/node_modules/next/dist/server/lib/trace/constants.js","../../../../../../../../node_modules/.bun/next@14.2.35+6dbf9a050bc9aadb/node_modules/next/dist/server/lib/trace/tracer.js","../../../../../../../../node_modules/.bun/next@14.2.35+6dbf9a050bc9aadb/node_modules/next/package.json","../../../../../../../../node_modules/.bun/node_modules/supports-color","../../../../../../../../node_modules/.bun/safe-buffer@5.2.1/node_modules/safe-buffer/index.js","../../../../../../../../node_modules/.bun/safe-buffer@5.2.1/node_modules/safe-buffer/package.json","../../../../../../../../node_modules/.bun/safer-buffer@2.1.2/node_modules/safer-buffer/package.json","../../../../../../../../node_modules/.bun/safer-buffer@2.1.2/node_modules/safer-buffer/safer.js","../../../../../../../../node_modules/.bun/supports-color@7.2.0/node_modules/has-flag","../../../../../../../../node_modules/.bun/supports-color@7.2.0/node_modules/supports-color/index.js","../../../../../../../../node_modules/.bun/supports-color@7.2.0/node_modules/supports-color/package.json","../../../../../../../../node_modules/.bun/web-push@3.6.7/node_modules/asn1.js","../../../../../../../../node_modules/.bun/web-push@3.6.7/node_modules/http_ece","../../../../../../../../node_modules/.bun/web-push@3.6.7/node_modules/https-proxy-agent","../../../../../../../../node_modules/.bun/web-push@3.6.7/node_modules/jws","../../../../../../../../node_modules/.bun/web-push@3.6.7/node_modules/web-push/package.json","../../../../../../../../node_modules/.bun/web-push@3.6.7/node_modules/web-push/src/encryption-helper.js","../../../../../../../../node_modules/.bun/web-push@3.6.7/node_modules/web-push/src/index.js","../../../../../../../../node_modules/.bun/web-push@3.6.7/node_modules/web-push/src/urlsafe-base64-helper.js","../../../../../../../../node_modules/.bun/web-push@3.6.7/node_modules/web-push/src/vapid-helper.js","../../../../../../../../node_modules/.bun/web-push@3.6.7/node_modules/web-push/src/web-push-constants.js","../../../../../../../../node_modules/.bun/web-push@3.6.7/node_modules/web-push/src/web-push-error.js","../../../../../../../../node_modules/.bun/web-push@3.6.7/node_modules/web-push/src/web-push-lib.js","../../../../../../../../package.json","../../../../../../../core/package.json","../../../../../../../desktop/package.json","../../../../../../node_modules/better-sqlite3","../../../../../../node_modules/next","../../../../../../node_modules/web-push","../../../../../../package.json","../../../../../package.json","../../../../chunks/1322.js","../../../../chunks/4537.js","../../../../chunks/4621.js","../../../../chunks/6703.js","../../../../chunks/732.js","../../../../chunks/8375.js","../../../../webpack-runtime.js"]}
@@ -0,0 +1,15 @@
1
+ "use strict";(()=>{var e={};e.id=6163,e.ids=[6163],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")},6005:e=>{e.exports=require("node:crypto")},7561:e=>{e.exports=require("node:fs")},9411:e=>{e.exports=require("node:path")},6791:(e,t,s)=>{s.r(t),s.d(t,{originalPathname:()=>b,patchFetch:()=>E,requestAsyncStorage:()=>h,routeModule:()=>d,serverHooks:()=>l,staticGenerationAsyncStorage:()=>c});var i={};s.r(i),s.d(i,{POST:()=>u});var r=s(7786),n=s(5042),p=s(2184),o=s(1890),a=s(3931);async function u(e){try{let t=await e.json();return o.NextResponse.json((0,a.i)().deleteSubscription(t?.endpoint))}catch(t){let e=t?.status;return o.NextResponse.json({error:t instanceof Error?t.message:"Unable to remove push subscription"},{status:e&&e>=400&&e<500?e:500})}}let d=new r.AppRouteRouteModule({definition:{kind:n.x.APP_ROUTE,page:"/api/push/unsubscribe/route",pathname:"/api/push/unsubscribe",filename:"route",bundlePath:"app/api/push/unsubscribe/route"},resolvedPagePath:"/Users/caoqu/team-agent/customer-agent/packages/server/app/api/push/unsubscribe/route.ts",nextConfigOutput:"standalone",userland:i}),{requestAsyncStorage:h,staticGenerationAsyncStorage:c,serverHooks:l}=d,b="/api/push/unsubscribe/route";function E(){return(0,p.patchFetch)({serverHooks:l,staticGenerationAsyncStorage:c})}},3931:(e,t,s)=>{s.d(t,{i:()=>c});var i=s(6005),r=s(7561),n=s(9411),p=s(5890);let o=require("web-push"),a=e=>JSON.stringify(e??null);class u{constructor(e,t=Date.now){this.now=t;let s=(0,n.resolve)(e,".agentroam-auth");(0,r.mkdirSync)(s,{recursive:!0,mode:448});let i=(0,n.join)(s,"push.sqlite");this.db=new p(i),(0,r.chmodSync)(i,384),this.db.pragma("busy_timeout = 5000"),this.db.exec(`
2
+ CREATE TABLE IF NOT EXISTS push_keys (id INTEGER PRIMARY KEY CHECK(id=1), public_key TEXT NOT NULL, private_key TEXT NOT NULL);
3
+ CREATE TABLE IF NOT EXISTS push_subscriptions (
4
+ endpoint_hash TEXT PRIMARY KEY,
5
+ endpoint TEXT NOT NULL,
6
+ p256dh TEXT NOT NULL,
7
+ auth TEXT NOT NULL,
8
+ device_id TEXT,
9
+ created INTEGER NOT NULL
10
+ );
11
+ `),this.keys=this.loadKeys(),this.lastNotified=new Map}loadKeys(){let e=this.db.prepare("SELECT public_key, private_key FROM push_keys WHERE id=1").get();if(e)return{publicKey:e.public_key,privateKey:e.private_key};let t=o.generateVAPIDKeys();return this.db.prepare("INSERT INTO push_keys VALUES (1, ?, ?)").run(t.publicKey,t.privateKey),{publicKey:t.publicKey,privateKey:t.privateKey}}getPublicKey(){return this.keys.publicKey}saveSubscription(e,t){let s="string"==typeof t?.endpoint?t.endpoint:"",i=t?.keys?.p256dh,r=t?.keys?.auth;if(!s.startsWith("https://")||"string"!=typeof i||!i||"string"!=typeof r||!r)throw Object.assign(Error("Invalid push subscription"),{status:400});return this.db.prepare(`
12
+ INSERT INTO push_subscriptions (endpoint_hash, endpoint, p256dh, auth, device_id, created)
13
+ VALUES (?, ?, ?, ?, ?, ?)
14
+ ON CONFLICT(endpoint_hash) DO UPDATE SET p256dh=excluded.p256dh, auth=excluded.auth, device_id=excluded.device_id
15
+ `).run(d(s),s,i,r,"string"==typeof e?e:null,this.now()),{ok:!0}}deleteSubscription(e){if("string"!=typeof e||!e)throw Object.assign(Error("Endpoint required"),{status:400});return this.db.prepare("DELETE FROM push_subscriptions WHERE endpoint_hash=?").run(d(e)),{ok:!0}}listSubscriptions(){return this.db.prepare("SELECT endpoint, p256dh, auth, device_id FROM push_subscriptions").all().map(e=>({endpoint:e.endpoint,keys:{p256dh:e.p256dh,auth:e.auth},deviceId:e.device_id}))}notifySession({sessionId:e,kind:t,title:s,body:i,url:r}){let n=`${e}\u001f${t}`,p=this.lastNotified.get(n)||0;if(!(this.now()-p<1500)){if(this.lastNotified.set(n,this.now()),this.lastNotified.size>500)for(let[e,t]of this.lastNotified)this.now()-t>6e4&&this.lastNotified.delete(e);this.sendToAll({title:s,body:i,tag:e,url:r})}}async sendToAll(e){let t=this.listSubscriptions();await Promise.allSettled(t.map(t=>this.send(t,e)))}async send(e,t){try{o.setVapidDetails("mailto:agentroam@localhost",this.keys.publicKey,this.keys.privateKey),await o.sendNotification(e,a(t),{TTL:3600})}catch(s){let t=s?.statusCode;(404===t||410===t)&&this.db.prepare("DELETE FROM push_subscriptions WHERE endpoint_hash=?").run(d(e.endpoint))}}close(){this.db.close()}}function d(e){return(0,i.createHash)("sha256").update(e).digest("hex")}let h=null;function c(e=process.env.AGENT_DATA_DIR?.trim()||process.cwd()){return h??=new u(e)}}};var t=require("../../../../webpack-runtime.js");t.C(e);var s=e=>t(t.s=e),i=t.X(0,[8375,6703],()=>s(6791));module.exports=i})();