@auto-ai/agent 2.1.168 → 2.1.170

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 (847) hide show
  1. package/.env.example +7 -0
  2. package/dist/safe-a/404/index.html +1 -0
  3. package/dist/safe-a/404.html +1 -0
  4. package/dist/safe-a/_next/static/GEpoLDHgyzXdgHMKRqrNr/_buildManifest.js +14 -0
  5. package/dist/safe-a/_next/static/chunks/00b0744649a5e608.js +1 -0
  6. package/dist/safe-a/_next/static/chunks/00f91b7d88f62204.js +1 -0
  7. package/dist/safe-a/_next/static/chunks/02339beb679bec8d.js +1 -0
  8. package/dist/safe-a/_next/static/chunks/025f9752d60b79ce.js +1 -0
  9. package/dist/safe-a/_next/static/chunks/03039556684e9812.js +1 -0
  10. package/dist/safe-a/_next/static/chunks/03af20498d43b518.js +1 -0
  11. package/dist/safe-a/_next/static/chunks/03c48f22d87b83a9.js +1 -0
  12. package/dist/safe-a/_next/static/chunks/04ed04c00511a337.js +1 -0
  13. package/dist/safe-a/_next/static/chunks/0518cc63903bebac.js +1 -0
  14. package/dist/safe-a/_next/static/chunks/05ac495e860ba7c2.js +1 -0
  15. package/dist/safe-a/_next/static/chunks/06e2cd3fae94aae8.js +1 -0
  16. package/dist/safe-a/_next/static/chunks/0708a65cc3ecf56b.js +1 -0
  17. package/dist/safe-a/_next/static/chunks/078aea2e54474461.js +5 -0
  18. package/dist/safe-a/_next/static/chunks/0835edf516aebfa0.js +1 -0
  19. package/dist/safe-a/_next/static/chunks/08ecdb579e7fd3de.js +1 -0
  20. package/dist/safe-a/_next/static/chunks/093669121f3b7aa1.js +1 -0
  21. package/dist/safe-a/_next/static/chunks/0c19efa935cdd816.js +1 -0
  22. package/dist/safe-a/_next/static/chunks/0e68cace7cf0464c.js +1 -0
  23. package/dist/safe-a/_next/static/chunks/0f93a62e5e2db48b.js +1 -0
  24. package/dist/safe-a/_next/static/chunks/10924447cee18191.js +1 -0
  25. package/dist/safe-a/_next/static/chunks/1116b1064a071974.js +1 -0
  26. package/dist/safe-a/_next/static/chunks/125b77ecc6b4189f.js +1 -0
  27. package/dist/safe-a/_next/static/chunks/12932eb7d288b09b.js +1 -0
  28. package/dist/safe-a/_next/static/chunks/129875fd1b096964.js +1 -0
  29. package/dist/safe-a/_next/static/chunks/1386362cdfd92116.js +1 -0
  30. package/dist/safe-a/_next/static/chunks/18e062f9f23f27c0.js +1 -0
  31. package/dist/safe-a/_next/static/chunks/19a47cfc8ca4c0a7.js +1 -0
  32. package/dist/safe-a/_next/static/chunks/1a91a01fbaf01e7e.js +1 -0
  33. package/dist/safe-a/_next/static/chunks/1aaf9fb00fb53ef9.js +1 -0
  34. package/dist/safe-a/_next/static/chunks/1b739dfdbcce05bd.js +1 -0
  35. package/dist/safe-a/_next/static/chunks/1c1f2b4adafc2442.js +1 -0
  36. package/dist/safe-a/_next/static/chunks/1d0273aae0bc102c.js +1 -0
  37. package/dist/safe-a/_next/static/chunks/1d737ed6e08d2466.js +1 -0
  38. package/dist/safe-a/_next/static/chunks/1df41f8d439107ef.js +1 -0
  39. package/dist/safe-a/_next/static/chunks/1f90e84b5a4dad81.js +1 -0
  40. package/dist/safe-a/_next/static/chunks/1faaa282be969b14.js +1 -0
  41. package/dist/safe-a/_next/static/chunks/217c50478c5ea4d7.js +1 -0
  42. package/dist/safe-a/_next/static/chunks/232cc01daaf29e5d.js +1 -0
  43. package/dist/safe-a/_next/static/chunks/2331e2a388a9bd50.js +1 -0
  44. package/dist/safe-a/_next/static/chunks/23f50ba74d421ab3.js +1 -0
  45. package/dist/safe-a/_next/static/chunks/261bf96e2331ea0a.js +1 -0
  46. package/dist/safe-a/_next/static/chunks/27b3d30516d46fc8.js +1 -0
  47. package/dist/safe-a/_next/static/chunks/2854919e0953bd0d.js +1 -0
  48. package/dist/safe-a/_next/static/chunks/29105a13d179d5b2.js +1 -0
  49. package/dist/safe-a/_next/static/chunks/29403b19d94e37bb.js +1 -0
  50. package/dist/safe-a/_next/static/chunks/29a317486c4ab7d7.js +1 -0
  51. package/dist/safe-a/_next/static/chunks/29cf9e89be8a7f75.js +1 -0
  52. package/dist/safe-a/_next/static/chunks/29f39316c32518a2.js +1 -0
  53. package/dist/safe-a/_next/static/chunks/2a07e0d1ef712b41.js +1 -0
  54. package/dist/safe-a/_next/static/chunks/2b38c2b26760e4cb.js +1 -0
  55. package/dist/safe-a/_next/static/chunks/2bb180b50bafe979.js +1 -0
  56. package/dist/safe-a/_next/static/chunks/2bd512c6acf9ee9b.js +1 -0
  57. package/dist/safe-a/_next/static/chunks/2be2d49054d4606c.js +1 -0
  58. package/dist/safe-a/_next/static/chunks/2c0b2fd9fb2fea66.js +1 -0
  59. package/dist/safe-a/_next/static/chunks/2ccdfcf9ecfa2ea8.js +1 -0
  60. package/dist/safe-a/_next/static/chunks/2ce249001ad95013.js +1 -0
  61. package/dist/safe-a/_next/static/chunks/2ddf153879790e6a.js +1 -0
  62. package/dist/safe-a/_next/static/chunks/2f35f32799fb08ac.js +1 -0
  63. package/dist/safe-a/_next/static/chunks/2fcbd3cabd5261f8.js +1 -0
  64. package/dist/safe-a/_next/static/chunks/30c0274cb379ab0d.js +1 -0
  65. package/dist/safe-a/_next/static/chunks/30f37e8e02339538.js +1 -0
  66. package/dist/safe-a/_next/static/chunks/314748f34f8e81bb.js +1 -0
  67. package/dist/safe-a/_next/static/chunks/333630802bd6f1a6.js +1 -0
  68. package/dist/safe-a/_next/static/chunks/33e878df066811db.js +1 -0
  69. package/dist/safe-a/_next/static/chunks/3422b2c2f9bdf0e0.js +1 -0
  70. package/dist/safe-a/_next/static/chunks/35db6eb7eec8b825.js +1 -0
  71. package/dist/safe-a/_next/static/chunks/36897fabf62bf445.js +1 -0
  72. package/dist/safe-a/_next/static/chunks/37615c61dd14fc8d.js +1 -0
  73. package/dist/safe-a/_next/static/chunks/37f3ea0b3cf40bca.js +1 -0
  74. package/dist/safe-a/_next/static/chunks/38dcdbfb8c6966a9.js +1 -0
  75. package/dist/safe-a/_next/static/chunks/38decd5cd3fe2525.js +1 -0
  76. package/dist/safe-a/_next/static/chunks/3b0acee8a8035ee7.js +1 -0
  77. package/dist/safe-a/_next/static/chunks/3d9ee9c4bc8e29b2.js +1 -0
  78. package/dist/safe-a/_next/static/chunks/3da255bcf22e013d.js +1 -0
  79. package/dist/safe-a/_next/static/chunks/3e45de4a81d1f7a6.js +1 -0
  80. package/dist/safe-a/_next/static/chunks/3ecc6705303560ea.js +1 -0
  81. package/dist/safe-a/_next/static/chunks/3f18c3fa64301e74.js +1 -0
  82. package/dist/safe-a/_next/static/chunks/3fe95be4b92470e2.js +1 -0
  83. package/dist/safe-a/_next/static/chunks/404f44571be80b78.js +1 -0
  84. package/dist/safe-a/_next/static/chunks/405cd8dd7faa6eaf.js +1 -0
  85. package/dist/safe-a/_next/static/chunks/405de186b610394b.js +1 -0
  86. package/dist/safe-a/_next/static/chunks/4064e59727cba9b0.js +1 -0
  87. package/dist/safe-a/_next/static/chunks/435e18828af1d066.js +1 -0
  88. package/dist/safe-a/_next/static/chunks/4385d9dba96b7614.js +1 -0
  89. package/dist/safe-a/_next/static/chunks/44e9e0394b7b6f31.js +1 -0
  90. package/dist/safe-a/_next/static/chunks/46568a8bad984d09.js +1 -0
  91. package/dist/safe-a/_next/static/chunks/47098fcba8e98974.js +1 -0
  92. package/dist/safe-a/_next/static/chunks/472047ea96adfca5.js +1 -0
  93. package/dist/safe-a/_next/static/chunks/473249ae7830085a.js +1 -0
  94. package/dist/safe-a/_next/static/chunks/47c632214f4d3a5c.js +1 -0
  95. package/dist/safe-a/_next/static/chunks/47d485f30e419da8.js +1 -0
  96. package/dist/safe-a/_next/static/chunks/4c19e1ee54dac526.js +1 -0
  97. package/dist/safe-a/_next/static/chunks/4c85c84ca0d7ca5c.js +1 -0
  98. package/dist/safe-a/_next/static/chunks/4c87634b39751c56.js +1 -0
  99. package/dist/safe-a/_next/static/chunks/4cd41b402679f77d.js +1 -0
  100. package/dist/safe-a/_next/static/chunks/4d30478be74fb192.js +1 -0
  101. package/dist/safe-a/_next/static/chunks/4df5dd4e3c591164.js +1 -0
  102. package/dist/safe-a/_next/static/chunks/502779251884e330.js +1 -0
  103. package/dist/safe-a/_next/static/chunks/503bbec2e3179a3c.js +1 -0
  104. package/dist/safe-a/_next/static/chunks/5071381bdd700d6c.js +1 -0
  105. package/dist/safe-a/_next/static/chunks/5076e29ddf662e81.js +1 -0
  106. package/dist/safe-a/_next/static/chunks/50c602f1b79d61a7.js +1 -0
  107. package/dist/safe-a/_next/static/chunks/50cbc92b0512838a.js +1 -0
  108. package/dist/safe-a/_next/static/chunks/50f270f87470ca73.js +1 -0
  109. package/dist/safe-a/_next/static/chunks/5153542043b58066.js +1 -0
  110. package/dist/safe-a/_next/static/chunks/523d30dc7b2f29be.js +1 -0
  111. package/dist/safe-a/_next/static/chunks/5385bf74559eeabd.js +1 -0
  112. package/dist/safe-a/_next/static/chunks/54169c1554845574.js +1 -0
  113. package/dist/safe-a/_next/static/chunks/5452d182bb136a51.js +1 -0
  114. package/dist/safe-a/_next/static/chunks/5474db37e4b450e8.js +1 -0
  115. package/dist/safe-a/_next/static/chunks/547eb82208058c71.js +1 -0
  116. package/dist/safe-a/_next/static/chunks/54a2df4508a1c311.js +1 -0
  117. package/dist/safe-a/_next/static/chunks/55e32e78e4db3889.js +1 -0
  118. package/dist/safe-a/_next/static/chunks/564507763428bfb0.js +1 -0
  119. package/dist/safe-a/_next/static/chunks/568061ca1300bae8.js +5 -0
  120. package/dist/safe-a/_next/static/chunks/569dda34679bca70.js +1 -0
  121. package/dist/safe-a/_next/static/chunks/57bc9169370081d7.js +1 -0
  122. package/dist/safe-a/_next/static/chunks/57e13ec897ff78d6.js +1 -0
  123. package/dist/safe-a/_next/static/chunks/591fe54d06e0a33e.js +1 -0
  124. package/dist/safe-a/_next/static/chunks/592e7a6b713dc645.js +1 -0
  125. package/dist/safe-a/_next/static/chunks/599abea9ac64aaf1.js +1 -0
  126. package/dist/safe-a/_next/static/chunks/5a43f7cd89a42167.js +1 -0
  127. package/dist/safe-a/_next/static/chunks/5ad5a5ee1cc648ae.js +1 -0
  128. package/dist/safe-a/_next/static/chunks/5ae21c9105c6abb4.js +1 -0
  129. package/dist/safe-a/_next/static/chunks/5b8ec6577fda27e2.js +1 -0
  130. package/dist/safe-a/_next/static/chunks/5c076874caf0532e.js +1 -0
  131. package/dist/safe-a/_next/static/chunks/5c2a7e118fa66960.js +1 -0
  132. package/dist/safe-a/_next/static/chunks/5ca0c9bb26daf732.js +1 -0
  133. package/dist/safe-a/_next/static/chunks/5cec026c430f6fc0.js +1 -0
  134. package/dist/safe-a/_next/static/chunks/6349c7cf3b394b81.js +1 -0
  135. package/dist/safe-a/_next/static/chunks/63f33483697b26ca.js +1 -0
  136. package/dist/safe-a/_next/static/chunks/645741ee91707763.js +1 -0
  137. package/dist/safe-a/_next/static/chunks/648649ebbc7565b9.js +1 -0
  138. package/dist/safe-a/_next/static/chunks/65159d9aa3ecc0c9.js +1 -0
  139. package/dist/safe-a/_next/static/chunks/65963496d7fa49bc.js +1 -0
  140. package/dist/safe-a/_next/static/chunks/65ee07c4b6209141.js +1 -0
  141. package/dist/safe-a/_next/static/chunks/66247e9b3cf471f5.js +1 -0
  142. package/dist/safe-a/_next/static/chunks/6818b9385873d081.js +1 -0
  143. package/dist/safe-a/_next/static/chunks/68ca890844b706f0.js +1 -0
  144. package/dist/safe-a/_next/static/chunks/6960a33147147a27.js +1 -0
  145. package/dist/safe-a/_next/static/chunks/6d0bf0ac1fdb7eab.js +1 -0
  146. package/dist/safe-a/_next/static/chunks/6e145bea7acc82b4.js +1 -0
  147. package/dist/safe-a/_next/static/chunks/6e4e92cbcf961542.js +1 -0
  148. package/dist/safe-a/_next/static/chunks/6e663a2e3562125c.js +1 -0
  149. package/dist/safe-a/_next/static/chunks/6ecccb36549d3028.js +1 -0
  150. package/dist/safe-a/_next/static/chunks/6f6140cbad7cdeea.js +1 -0
  151. package/dist/safe-a/_next/static/chunks/6faa53698dc67904.js +1 -0
  152. package/dist/safe-a/_next/static/chunks/6fc97877fbcf3403.js +1 -0
  153. package/dist/safe-a/_next/static/chunks/70b95d96e33a5d63.js +1 -0
  154. package/dist/safe-a/_next/static/chunks/727dc45d24782155.js +1 -0
  155. package/dist/safe-a/_next/static/chunks/738c808ddc82ea44.js +1 -0
  156. package/dist/safe-a/_next/static/chunks/740732a162598c49.js +1 -0
  157. package/dist/safe-a/_next/static/chunks/743fcc76fa73e3f3.js +1 -0
  158. package/dist/safe-a/_next/static/chunks/74d8d2b653f61b70.js +1 -0
  159. package/dist/safe-a/_next/static/chunks/774e554c11c8759a.js +1 -0
  160. package/dist/safe-a/_next/static/chunks/784ee151431c6634.js +1 -0
  161. package/dist/safe-a/_next/static/chunks/78e956ecc59759b3.js +1 -0
  162. package/dist/safe-a/_next/static/chunks/7afa34c1dc058648.js +1 -0
  163. package/dist/safe-a/_next/static/chunks/7b34873e2b22211d.js +1 -0
  164. package/dist/safe-a/_next/static/chunks/7b6898a7f9df6495.js +1 -0
  165. package/dist/safe-a/_next/static/chunks/7bd04dff1e0d3a01.js +1 -0
  166. package/dist/safe-a/_next/static/chunks/7c10191806133cb4.js +1 -0
  167. package/dist/safe-a/_next/static/chunks/7c4b1ab5c0f1b167.js +1 -0
  168. package/dist/safe-a/_next/static/chunks/7cd0d9159e722599.js +1 -0
  169. package/dist/safe-a/_next/static/chunks/7d210744c047b2bb.js +1 -0
  170. package/dist/safe-a/_next/static/chunks/7d7ef3758ed7347b.js +1 -0
  171. package/dist/safe-a/_next/static/chunks/7e5b28d162f1ea9d.js +1 -0
  172. package/dist/safe-a/_next/static/chunks/7ed753f2db91bc38.js +1 -0
  173. package/dist/safe-a/_next/static/chunks/7f167fb0dbc03180.js +1 -0
  174. package/dist/safe-a/_next/static/chunks/7f611b9b215dfcef.js +1 -0
  175. package/dist/safe-a/_next/static/chunks/80bd106b26a076af.js +1 -0
  176. package/dist/safe-a/_next/static/chunks/826c64c8601264b1.js +1 -0
  177. package/dist/safe-a/_next/static/chunks/829196dbf7eddb51.js +1 -0
  178. package/dist/safe-a/_next/static/chunks/82aea21a16d00076.js +1 -0
  179. package/dist/safe-a/_next/static/chunks/82cdf7e6dbe7070d.js +1 -0
  180. package/dist/safe-a/_next/static/chunks/83a80f59afe8f7f4.js +1 -0
  181. package/dist/safe-a/_next/static/chunks/84ac0be00d5a7734.js +1 -0
  182. package/dist/safe-a/_next/static/chunks/868f60fa1a2ff26b.js +1 -0
  183. package/dist/safe-a/_next/static/chunks/86c0a63bf95598a3.js +1 -0
  184. package/dist/safe-a/_next/static/chunks/878dd96f8fcd6bd4.js +1 -0
  185. package/dist/safe-a/_next/static/chunks/87b0002602934525.js +1 -0
  186. package/dist/safe-a/_next/static/chunks/882686dd3b63f9d1.js +1 -0
  187. package/dist/safe-a/_next/static/chunks/88e4cdcdeff36154.js +1 -0
  188. package/dist/safe-a/_next/static/chunks/8aafb8ec5208a445.js +1 -0
  189. package/dist/safe-a/_next/static/chunks/8b1990cf2eb41663.js +1 -0
  190. package/dist/safe-a/_next/static/chunks/8c8b1e40b00409f5.js +1 -0
  191. package/dist/safe-a/_next/static/chunks/8c97e3b556b32001.js +1 -0
  192. package/dist/safe-a/_next/static/chunks/8cee526b3846c40b.js +1 -0
  193. package/dist/safe-a/_next/static/chunks/8e33e395e6224908.js +1 -0
  194. package/dist/safe-a/_next/static/chunks/8ead3da37182ce4c.js +1 -0
  195. package/dist/safe-a/_next/static/chunks/8ebfebffa66b3ca7.js +1 -0
  196. package/dist/safe-a/_next/static/chunks/92116f4ce954ae13.js +1 -0
  197. package/dist/safe-a/_next/static/chunks/93588b2335ca95de.js +1 -0
  198. package/dist/safe-a/_next/static/chunks/948dc342d4746ffc.js +1 -0
  199. package/dist/safe-a/_next/static/chunks/94d40dcd515ca4ad.js +1 -0
  200. package/dist/safe-a/_next/static/chunks/957b35b92a00be9d.js +1 -0
  201. package/dist/safe-a/_next/static/chunks/9583c5cc3861200c.js +1 -0
  202. package/dist/safe-a/_next/static/chunks/95ef412230573b84.js +1 -0
  203. package/dist/safe-a/_next/static/chunks/966730983f55a7c6.js +1 -0
  204. package/dist/safe-a/_next/static/chunks/967dfe61a543e533.js +1 -0
  205. package/dist/safe-a/_next/static/chunks/9721e6d173bcda17.js +1 -0
  206. package/dist/safe-a/_next/static/chunks/97d506a00590396c.js +1 -0
  207. package/dist/safe-a/_next/static/chunks/98eb20270ccd4b41.js +1 -0
  208. package/dist/safe-a/_next/static/chunks/9924bd3807982f9c.js +1 -0
  209. package/dist/safe-a/_next/static/chunks/996147dc11d8e745.js +1 -0
  210. package/dist/safe-a/_next/static/chunks/997894582876b3bb.js +1 -0
  211. package/dist/safe-a/_next/static/chunks/99ce8e2a747001a9.js +1 -0
  212. package/dist/safe-a/_next/static/chunks/9a5e8d11c09774ed.js +1 -0
  213. package/dist/safe-a/_next/static/chunks/9a63abc493c1c840.js +1 -0
  214. package/dist/safe-a/_next/static/chunks/9ae8f05f80dedfa4.js +1 -0
  215. package/dist/safe-a/_next/static/chunks/9b0ac8da8e1c0d7e.js +1 -0
  216. package/dist/safe-a/_next/static/chunks/9b94620a86d2a1c2.js +1 -0
  217. package/dist/safe-a/_next/static/chunks/9bb97d9ab3f6de64.css +4 -0
  218. package/dist/safe-a/_next/static/chunks/9bedfcbe8f9ff43f.js +1 -0
  219. package/dist/safe-a/_next/static/chunks/9d65a2db77bf6c63.js +1 -0
  220. package/dist/safe-a/_next/static/chunks/9d8fff267f5576eb.js +1 -0
  221. package/dist/safe-a/_next/static/chunks/9db0d8129d6b7b5e.js +1 -0
  222. package/dist/safe-a/_next/static/chunks/9de7a5feb6be8bc3.js +1 -0
  223. package/dist/safe-a/_next/static/chunks/9e9339584dbc8172.js +1 -0
  224. package/dist/safe-a/_next/static/chunks/9f7b593a28b4dbe4.js +1 -0
  225. package/dist/safe-a/_next/static/chunks/9f8b67e210121299.js +1 -0
  226. package/dist/safe-a/_next/static/chunks/9fb7ffa11026935c.js +1 -0
  227. package/dist/safe-a/_next/static/chunks/a0256e00bbdc334c.js +1 -0
  228. package/dist/safe-a/_next/static/chunks/a12eeb7c77a7506f.js +1 -0
  229. package/dist/safe-a/_next/static/chunks/a3044be9cf533501.js +1 -0
  230. package/dist/safe-a/_next/static/chunks/a333240ca95e9cf9.js +1 -0
  231. package/dist/safe-a/_next/static/chunks/a367a4ab4b91ce6b.js +1 -0
  232. package/dist/safe-a/_next/static/chunks/a39dba23f5098cde.js +1 -0
  233. package/dist/safe-a/_next/static/chunks/a3af4dcdb725b47f.js +1 -0
  234. package/dist/safe-a/_next/static/chunks/a4ab363af889263f.js +1 -0
  235. package/dist/safe-a/_next/static/chunks/a4b35c64097aeb05.js +1 -0
  236. package/dist/safe-a/_next/static/chunks/a6fda6a41633eb93.js +1 -0
  237. package/dist/safe-a/_next/static/chunks/a78da44a16cc3db3.js +1 -0
  238. package/dist/safe-a/_next/static/chunks/a8696c4a576878ae.js +1 -0
  239. package/dist/safe-a/_next/static/chunks/a9a12415c8875ad5.js +1 -0
  240. package/dist/safe-a/_next/static/chunks/aa34ec2d74f7775c.js +1 -0
  241. package/dist/safe-a/_next/static/chunks/aa8c7d3d99a14fdb.js +1 -0
  242. package/dist/safe-a/_next/static/chunks/ab522ef4566e28db.js +1 -0
  243. package/dist/safe-a/_next/static/chunks/ab91b57996557cd5.js +1 -0
  244. package/dist/safe-a/_next/static/chunks/abd93c4f518b4209.js +1 -0
  245. package/dist/safe-a/_next/static/chunks/abf043c7dd51a07b.js +1 -0
  246. package/dist/safe-a/_next/static/chunks/ac0062f74360e8a1.js +1 -0
  247. package/dist/safe-a/_next/static/chunks/ad22e1613386ba8d.js +1 -0
  248. package/dist/safe-a/_next/static/chunks/ada2807c297fe674.js +1 -0
  249. package/dist/safe-a/_next/static/chunks/ae1404fdd6ec935a.js +1 -0
  250. package/dist/safe-a/_next/static/chunks/ae7e9c73a1d653fd.js +1 -0
  251. package/dist/safe-a/_next/static/chunks/afab34a5bb437673.js +1 -0
  252. package/dist/safe-a/_next/static/chunks/aff6654f4fbc26b0.js +1 -0
  253. package/dist/safe-a/_next/static/chunks/b0f0f19c125de544.js +1 -0
  254. package/dist/safe-a/_next/static/chunks/b4db35dceb9577e1.js +1 -0
  255. package/dist/safe-a/_next/static/chunks/b594aa86704b6429.js +1 -0
  256. package/dist/safe-a/_next/static/chunks/b717d3610f87602f.js +1 -0
  257. package/dist/safe-a/_next/static/chunks/b882523826ac1c83.js +1 -0
  258. package/dist/safe-a/_next/static/chunks/b926ed38d7cc48d8.js +1 -0
  259. package/dist/safe-a/_next/static/chunks/b92da682bccc569b.js +1 -0
  260. package/dist/safe-a/_next/static/chunks/b9b23fa418eacd67.js +1 -0
  261. package/dist/safe-a/_next/static/chunks/bb781f225af4e1f8.js +1 -0
  262. package/dist/safe-a/_next/static/chunks/bbb9a4e020dec46d.js +1 -0
  263. package/dist/safe-a/_next/static/chunks/c013a3a3b1574b7d.js +1 -0
  264. package/dist/safe-a/_next/static/chunks/c0960892f67b4256.js +1 -0
  265. package/dist/safe-a/_next/static/chunks/c158c0ddb31b1058.js +1 -0
  266. package/dist/safe-a/_next/static/chunks/c2e5be103cef6113.js +1 -0
  267. package/dist/safe-a/_next/static/chunks/c3bcc6eb84ed7d30.js +1 -0
  268. package/dist/safe-a/_next/static/chunks/c43f94053172eb84.js +1 -0
  269. package/dist/safe-a/_next/static/chunks/c537d051140acc61.js +1 -0
  270. package/dist/safe-a/_next/static/chunks/c5932397b84e3c27.js +1 -0
  271. package/dist/safe-a/_next/static/chunks/c5b0f8f27c2db9f1.js +1 -0
  272. package/dist/safe-a/_next/static/chunks/c5fd875d1d9fd6c4.js +1 -0
  273. package/dist/safe-a/_next/static/chunks/c81f8c96b5d54dbb.js +1 -0
  274. package/dist/safe-a/_next/static/chunks/c84ea2dc8d3281e6.js +1 -0
  275. package/dist/safe-a/_next/static/chunks/c8b301b059ee1946.js +1 -0
  276. package/dist/safe-a/_next/static/chunks/c9527036b1a95d19.js +1 -0
  277. package/dist/safe-a/_next/static/chunks/ca31fc9ca02421c7.js +1 -0
  278. package/dist/safe-a/_next/static/chunks/cac08e0e891f58d2.js +1 -0
  279. package/dist/safe-a/_next/static/chunks/cb8a82631d87b798.js +1 -0
  280. package/dist/safe-a/_next/static/chunks/ccbe0fe39b523768.js +1 -0
  281. package/dist/safe-a/_next/static/chunks/cd733da27bed8af2.js +1 -0
  282. package/dist/safe-a/_next/static/chunks/cf99b249b986e2bd.js +1 -0
  283. package/dist/safe-a/_next/static/chunks/d0d06ea64246c2e0.js +1 -0
  284. package/dist/safe-a/_next/static/chunks/d0d8ac4e89477172.js +1 -0
  285. package/dist/safe-a/_next/static/chunks/d1372ce458c4a584.js +1 -0
  286. package/dist/safe-a/_next/static/chunks/d147ab3cf51edc42.js +1 -0
  287. package/dist/safe-a/_next/static/chunks/d2bba4dbd6e24f7e.js +1 -0
  288. package/dist/safe-a/_next/static/chunks/d3072ff0f4d0f613.js +1 -0
  289. package/dist/safe-a/_next/static/chunks/d3f94755bb60424c.js +1 -0
  290. package/dist/safe-a/_next/static/chunks/d3fc1847f85d724b.js +1 -0
  291. package/dist/safe-a/_next/static/chunks/d53ff6336a32e4c5.js +1 -0
  292. package/dist/safe-a/_next/static/chunks/d653880800910810.js +1 -0
  293. package/dist/safe-a/_next/static/chunks/d84ed83f568f41c6.js +1 -0
  294. package/dist/safe-a/_next/static/chunks/d9bf3f0f6088ac8c.js +1 -0
  295. package/dist/safe-a/_next/static/chunks/da11b1522a2497e3.js +1 -0
  296. package/dist/safe-a/_next/static/chunks/daaffc256846db90.js +1 -0
  297. package/dist/safe-a/_next/static/chunks/dabd2cc5e900d556.js +1 -0
  298. package/dist/safe-a/_next/static/chunks/dbf36b536a6c59ef.js +1 -0
  299. package/dist/safe-a/_next/static/chunks/dc7f280eee64d574.js +1 -0
  300. package/dist/safe-a/_next/static/chunks/dcdc329f64f1a7a8.js +1 -0
  301. package/dist/safe-a/_next/static/chunks/dd03bb14e8e590f0.js +1 -0
  302. package/dist/safe-a/_next/static/chunks/dda4e994ee3a92e1.js +1 -0
  303. package/dist/safe-a/_next/static/chunks/ddc8a591c8943264.js +1 -0
  304. package/dist/safe-a/_next/static/chunks/de208f3610c12b2c.js +1 -0
  305. package/dist/safe-a/_next/static/chunks/dee1daaeed29e5a2.js +1 -0
  306. package/dist/safe-a/_next/static/chunks/df25d932487a1417.js +1 -0
  307. package/dist/safe-a/_next/static/chunks/dfbd9d8a4137edd6.js +1 -0
  308. package/dist/safe-a/_next/static/chunks/dfe4d8ffc37b96da.js +1 -0
  309. package/dist/safe-a/_next/static/chunks/e07906d264057e7b.js +1 -0
  310. package/dist/safe-a/_next/static/chunks/e1416a0b2152bdbf.js +1 -0
  311. package/dist/safe-a/_next/static/chunks/e1626e173f56ae31.js +1 -0
  312. package/dist/safe-a/_next/static/chunks/e4776ea06fa1720a.js +1 -0
  313. package/dist/safe-a/_next/static/chunks/e632e1b120215697.js +1 -0
  314. package/dist/safe-a/_next/static/chunks/e66819cb4afcfe87.js +1 -0
  315. package/dist/safe-a/_next/static/chunks/e69f953184729bfc.js +1 -0
  316. package/dist/safe-a/_next/static/chunks/e7731336476789d7.js +1 -0
  317. package/dist/safe-a/_next/static/chunks/e79d1db952916e66.js +1 -0
  318. package/dist/safe-a/_next/static/chunks/e7d6284971d07422.js +1 -0
  319. package/dist/safe-a/_next/static/chunks/e7f1683dcd85bf06.js +1 -0
  320. package/dist/safe-a/_next/static/chunks/e814d6bb4f565a59.js +1 -0
  321. package/dist/safe-a/_next/static/chunks/e878ffaf394e2c30.js +1 -0
  322. package/dist/safe-a/_next/static/chunks/e89655c05e6b5b1f.js +1 -0
  323. package/dist/safe-a/_next/static/chunks/eb248f97f593a288.js +1 -0
  324. package/dist/safe-a/_next/static/chunks/eb34cdf40f4c4d62.js +1 -0
  325. package/dist/safe-a/_next/static/chunks/ec048ffab26ebcd6.js +1 -0
  326. package/dist/safe-a/_next/static/chunks/ec24f7a0593636d9.js +1 -0
  327. package/dist/safe-a/_next/static/chunks/ec7ee73b22712e55.js +1 -0
  328. package/dist/safe-a/_next/static/chunks/ed4322c3137a7cbf.js +1 -0
  329. package/dist/safe-a/_next/static/chunks/ede1765e6899133a.js +1 -0
  330. package/dist/safe-a/_next/static/chunks/f05af2c706c87fb5.js +1 -0
  331. package/dist/safe-a/_next/static/chunks/f0a3b313fc0fcace.js +1 -0
  332. package/dist/safe-a/_next/static/chunks/f15c8b2639bebe0f.js +1 -0
  333. package/dist/safe-a/_next/static/chunks/f39ec71d70b31fe1.js +1 -0
  334. package/dist/safe-a/_next/static/chunks/f40b91cb7cc58cf2.js +1 -0
  335. package/dist/safe-a/_next/static/chunks/f5e77b158443344d.js +1 -0
  336. package/dist/safe-a/_next/static/chunks/f75b1e4cbb975714.js +1 -0
  337. package/dist/safe-a/_next/static/chunks/f7ad257814e6e947.js +1 -0
  338. package/dist/safe-a/_next/static/chunks/f7d33f46dfbddf65.js +1 -0
  339. package/dist/safe-a/_next/static/chunks/f8757d2c1a969081.js +1 -0
  340. package/dist/safe-a/_next/static/chunks/fa361913d47fdc14.css +4 -0
  341. package/dist/safe-a/_next/static/chunks/fa951eecdf98ad7f.css +1 -0
  342. package/dist/safe-a/_next/static/chunks/fac51e37e04e662e.js +1 -0
  343. package/dist/safe-a/_next/static/chunks/faf267ae8eaabb78.js +1 -0
  344. package/dist/safe-a/_next/static/chunks/fb7bf2e8cee9c72f.js +1 -0
  345. package/dist/safe-a/_next/static/chunks/fbb5b0d1f5b25465.js +1 -0
  346. package/dist/safe-a/_next/static/chunks/fc3c1b765cc5906d.js +1 -0
  347. package/dist/safe-a/_next/static/chunks/fddfcced721d9669.js +1 -0
  348. package/dist/safe-a/_next/static/chunks/fdf535baa39c0e26.js +1 -0
  349. package/dist/safe-a/_next/static/chunks/fe4fddbf85e1554b.js +1 -0
  350. package/dist/safe-a/_next/static/chunks/fe5cb190c34add83.js +1 -0
  351. package/dist/safe-a/_next/static/chunks/fe840e6cda1c115e.js +1 -0
  352. package/dist/safe-a/_next/static/chunks/turbopack-36509d12126a5bb6.js +3 -0
  353. package/dist/safe-a/_next/static/chunks/turbopack-6a1d2af530d97cf8.js +3 -0
  354. package/dist/safe-a/_next/static/chunks/turbopack-ab23c5c8fb4c9135.js +3 -0
  355. package/dist/safe-a/index.html +2 -0
  356. package/dist/safe-a/index.txt +33 -0
  357. package/dist/safe-a/manage/about/index.html +2 -0
  358. package/dist/safe-a/manage/about/index.txt +34 -0
  359. package/dist/safe-a/manage/env/index.html +2 -0
  360. package/dist/safe-a/manage/env/index.txt +37 -0
  361. package/dist/safe-a/manage/general/index.html +2 -0
  362. package/dist/safe-a/manage/general/index.txt +34 -0
  363. package/dist/safe-a/manage/index.html +2 -0
  364. package/dist/safe-a/manage/index.txt +31 -0
  365. package/dist/safe-a/manage/mcp/index.html +2 -0
  366. package/dist/safe-a/manage/mcp/index.txt +35 -0
  367. package/dist/safe-a/manage/permissions/index.html +2 -0
  368. package/dist/safe-a/manage/permissions/index.txt +34 -0
  369. package/dist/safe-a/manage/skills/index.html +2 -0
  370. package/dist/safe-a/manage/skills/index.txt +35 -0
  371. package/dist/safe-a/manage/task/index.html +2 -0
  372. package/dist/safe-a/manage/task/index.txt +35 -0
  373. package/dist/safe-a/manage/teams/index.html +2 -0
  374. package/dist/safe-a/manage/teams/index.txt +35 -0
  375. package/dist/safe-a/manage/tools/index.html +2 -0
  376. package/dist/safe-a/manage/tools/index.txt +35 -0
  377. package/dist/ws-test/agent-office.html +1295 -0
  378. package/dist/ws-test/ws-test.css +3239 -0
  379. package/dist/ws-test/ws-test.html +780 -0
  380. package/dist/ws-test/ws-test.js +8526 -0
  381. package/lib/launcher-env.js +12 -3
  382. package/package.json +6 -6
  383. package/skills-runtime/deploy-test-env/SKILL.md +1 -1
  384. package/skills-runtime/dev-task-flow/SKILL.md +4 -4
  385. package/skills-runtime/self-test-flow/SKILL.md +2 -2
  386. package/skills-runtime/workflow-hub/SKILL.md +1 -1
  387. package/tools-runtime/code-tool/index.cjs +8 -3
  388. package/tools-runtime/code-tool/src/workspace.ts +13 -7
  389. package/tools-runtime/git-tool/index.cjs +34 -8
  390. package/tools-runtime/git-tool/src/index.ts +1 -1
  391. package/tools-runtime/git-tool/src/workspace.test.ts +9 -9
  392. package/tools-runtime/git-tool/src/workspace.ts +53 -13
  393. package/dist/404/index.html +0 -1
  394. package/dist/404.html +0 -1
  395. package/dist/_next/static/6_8Ppg2OmCO0VcGqmqnxR/_buildManifest.js +0 -14
  396. package/dist/_next/static/chunks/01766c1e2fdff227.js +0 -1
  397. package/dist/_next/static/chunks/04c9439163b67552.js +0 -1
  398. package/dist/_next/static/chunks/05e1926dc5c477b7.js +0 -1
  399. package/dist/_next/static/chunks/06b923aa1177f43f.js +0 -1
  400. package/dist/_next/static/chunks/092c97532613af2a.js +0 -1
  401. package/dist/_next/static/chunks/0a4ab823884025be.css +0 -1
  402. package/dist/_next/static/chunks/0b639ff4f1971d14.js +0 -1
  403. package/dist/_next/static/chunks/0b69dba7f1e63f30.js +0 -1
  404. package/dist/_next/static/chunks/0ce6504fc10ce408.js +0 -1
  405. package/dist/_next/static/chunks/0e1e7d5f7a375308.js +0 -1
  406. package/dist/_next/static/chunks/0e8139882ad093d2.js +0 -1
  407. package/dist/_next/static/chunks/0ea5a62c3f30dc56.js +0 -1
  408. package/dist/_next/static/chunks/0f1810e4c6b0dd0c.js +0 -1
  409. package/dist/_next/static/chunks/0fa097a572705cfa.js +0 -1
  410. package/dist/_next/static/chunks/0fb0d030e8dee231.js +0 -1
  411. package/dist/_next/static/chunks/0fd3876e0d9e8acc.js +0 -1
  412. package/dist/_next/static/chunks/106955e3cc6a6843.js +0 -1
  413. package/dist/_next/static/chunks/1078bc1642db53ad.js +0 -1
  414. package/dist/_next/static/chunks/108a0b77418f1d31.js +0 -1
  415. package/dist/_next/static/chunks/13b54d70a1ee1de7.js +0 -1
  416. package/dist/_next/static/chunks/13f94fc3dda88c90.js +0 -1
  417. package/dist/_next/static/chunks/155374df9f6b4b9a.js +0 -1
  418. package/dist/_next/static/chunks/16ea1d3cf6db8a53.js +0 -1
  419. package/dist/_next/static/chunks/170f7361bd4d33e2.js +0 -1
  420. package/dist/_next/static/chunks/17722e3ac4e00587.js +0 -1
  421. package/dist/_next/static/chunks/179a5dac78ab2cb9.js +0 -1
  422. package/dist/_next/static/chunks/1818d7a661948f6b.js +0 -1
  423. package/dist/_next/static/chunks/18977fe8f51209aa.js +0 -1
  424. package/dist/_next/static/chunks/19584f955475ce91.js +0 -1
  425. package/dist/_next/static/chunks/1974f51c298bce94.js +0 -1
  426. package/dist/_next/static/chunks/19c1491e85e22b3b.js +0 -1
  427. package/dist/_next/static/chunks/19ca17e5015c42a3.js +0 -1
  428. package/dist/_next/static/chunks/1a4b553856a8ffdf.js +0 -1
  429. package/dist/_next/static/chunks/1acf2d9664500f51.js +0 -1
  430. package/dist/_next/static/chunks/1b55c29b8cad4a50.js +0 -1
  431. package/dist/_next/static/chunks/1bb28f71c19fa824.js +0 -1
  432. package/dist/_next/static/chunks/1bfa645704d9149a.js +0 -1
  433. package/dist/_next/static/chunks/1c9321874fea5f0d.js +0 -1
  434. package/dist/_next/static/chunks/1d3e7886be9f671c.js +0 -1
  435. package/dist/_next/static/chunks/1e17456ccebc9cd2.js +0 -1
  436. package/dist/_next/static/chunks/1e43922998a0ed2f.js +0 -1
  437. package/dist/_next/static/chunks/1f3da8a76b11d2aa.js +0 -1
  438. package/dist/_next/static/chunks/1fec17d16aff9eed.js +0 -1
  439. package/dist/_next/static/chunks/2046937bffedf074.js +0 -1
  440. package/dist/_next/static/chunks/219a3413675ba6f1.js +0 -1
  441. package/dist/_next/static/chunks/2326118ef1328bc5.js +0 -1
  442. package/dist/_next/static/chunks/236775e4ec4f8a94.js +0 -1
  443. package/dist/_next/static/chunks/242529c986baeb00.js +0 -1
  444. package/dist/_next/static/chunks/257d36fba79aa4ab.js +0 -1
  445. package/dist/_next/static/chunks/270d7571d2eea071.js +0 -1
  446. package/dist/_next/static/chunks/27c407347ce26b78.js +0 -1
  447. package/dist/_next/static/chunks/27ff2e69b2fd19e5.js +0 -1
  448. package/dist/_next/static/chunks/29676075a0390867.js +0 -1
  449. package/dist/_next/static/chunks/2b18c967f27dd561.js +0 -1
  450. package/dist/_next/static/chunks/2c6d585a97629311.js +0 -1
  451. package/dist/_next/static/chunks/2df3e464b6247e75.js +0 -1
  452. package/dist/_next/static/chunks/2e574acbf68e77ff.js +0 -1
  453. package/dist/_next/static/chunks/2ec6d7ddb4c04987.js +0 -1
  454. package/dist/_next/static/chunks/2f7d30e66e995b02.js +0 -1
  455. package/dist/_next/static/chunks/2fab2306850ac97b.js +0 -1
  456. package/dist/_next/static/chunks/2fcc6298b6dd7a82.js +0 -1
  457. package/dist/_next/static/chunks/303d9c2a2c956f25.js +0 -1
  458. package/dist/_next/static/chunks/32a7ca0a75a897da.js +0 -1
  459. package/dist/_next/static/chunks/32b4d63e10d31351.js +0 -1
  460. package/dist/_next/static/chunks/32b9bdd82a961878.js +0 -1
  461. package/dist/_next/static/chunks/3509a66e019ceae3.js +0 -1
  462. package/dist/_next/static/chunks/3520f1af0a1b7f66.js +0 -1
  463. package/dist/_next/static/chunks/354aaa2e36b75b81.js +0 -1
  464. package/dist/_next/static/chunks/3590c4a4f40cdb5d.js +0 -1
  465. package/dist/_next/static/chunks/35f1637c2feb232d.js +0 -1
  466. package/dist/_next/static/chunks/37bbbf907196a5bf.js +0 -1
  467. package/dist/_next/static/chunks/37cfaa4963ac51f3.js +0 -1
  468. package/dist/_next/static/chunks/3934bd57f459566e.js +0 -1
  469. package/dist/_next/static/chunks/3a947667fddbdd53.js +0 -1
  470. package/dist/_next/static/chunks/3aac5736e5781b46.js +0 -1
  471. package/dist/_next/static/chunks/3ae23df392f9bed8.js +0 -1
  472. package/dist/_next/static/chunks/3ae4e2529aa621fb.js +0 -1
  473. package/dist/_next/static/chunks/3b2bb9f17546ee3e.js +0 -1
  474. package/dist/_next/static/chunks/3bcd531d40d6c019.js +0 -1
  475. package/dist/_next/static/chunks/3c695d1c2efbc749.js +0 -1
  476. package/dist/_next/static/chunks/3d8e9a96a69193d4.js +0 -1
  477. package/dist/_next/static/chunks/3dcb1dcf23e7ab9c.js +0 -1
  478. package/dist/_next/static/chunks/3e2ea3a7fe64826d.js +0 -1
  479. package/dist/_next/static/chunks/3e9c98df7d56e9b2.js +0 -1
  480. package/dist/_next/static/chunks/3ec05a61e93547d3.js +0 -1
  481. package/dist/_next/static/chunks/3f6fe8a1903009ea.js +0 -1
  482. package/dist/_next/static/chunks/3fb4674edcb2d726.js +0 -1
  483. package/dist/_next/static/chunks/3fd03b9ed21b30fc.js +0 -1
  484. package/dist/_next/static/chunks/40268f8e3ff0314e.js +0 -1
  485. package/dist/_next/static/chunks/40cc0252b2f1d855.js +0 -1
  486. package/dist/_next/static/chunks/413a7be096275d7f.js +0 -1
  487. package/dist/_next/static/chunks/459d401d9f9e5b9f.js +0 -1
  488. package/dist/_next/static/chunks/45ab9a1f693d609c.js +0 -1
  489. package/dist/_next/static/chunks/481a2858f7df907d.js +0 -1
  490. package/dist/_next/static/chunks/49df9708d6328c4a.js +0 -1
  491. package/dist/_next/static/chunks/4a340ea4ac145216.js +0 -1
  492. package/dist/_next/static/chunks/4be779bcbd94352d.js +0 -1
  493. package/dist/_next/static/chunks/4c33a1cc6db74105.js +0 -1
  494. package/dist/_next/static/chunks/4d129d4e15c8c424.js +0 -1
  495. package/dist/_next/static/chunks/4df298f5b420f474.js +0 -1
  496. package/dist/_next/static/chunks/4dfbfdff43b8479b.js +0 -1
  497. package/dist/_next/static/chunks/5069ee4aa806b0ea.js +0 -1
  498. package/dist/_next/static/chunks/519049cd74a40910.js +0 -1
  499. package/dist/_next/static/chunks/522518d740397639.js +0 -1
  500. package/dist/_next/static/chunks/52e2164e45febae6.js +0 -1
  501. package/dist/_next/static/chunks/534b5acf573aa491.js +0 -1
  502. package/dist/_next/static/chunks/538cc02e54714b23.js +0 -1
  503. package/dist/_next/static/chunks/53be52c43a14557c.js +0 -1
  504. package/dist/_next/static/chunks/54c43751bf4c4da2.js +0 -1
  505. package/dist/_next/static/chunks/55087cc98e6237f1.js +0 -1
  506. package/dist/_next/static/chunks/55f8de91b4803778.js +0 -1
  507. package/dist/_next/static/chunks/560ca23f77c0e819.js +0 -1
  508. package/dist/_next/static/chunks/57bb853857f3de83.js +0 -1
  509. package/dist/_next/static/chunks/588e6975a7bd6671.js +0 -1
  510. package/dist/_next/static/chunks/5a0b630678282d4f.js +0 -1
  511. package/dist/_next/static/chunks/5a3e355216280144.js +0 -1
  512. package/dist/_next/static/chunks/5a4c198fd41e8ec4.js +0 -1
  513. package/dist/_next/static/chunks/5b916c9dc09e323c.js +0 -1
  514. package/dist/_next/static/chunks/5bad5163b6e015f5.js +0 -1
  515. package/dist/_next/static/chunks/5ccd5a6ac9c2f980.js +0 -1
  516. package/dist/_next/static/chunks/5d5333084191fb10.js +0 -1
  517. package/dist/_next/static/chunks/5d79b7f202080232.js +0 -1
  518. package/dist/_next/static/chunks/5ea79c109cbe8a86.js +0 -1
  519. package/dist/_next/static/chunks/5ee72092303043ef.js +0 -1
  520. package/dist/_next/static/chunks/5fc8a5235ddfa787.js +0 -1
  521. package/dist/_next/static/chunks/61b3d4c00499dd14.js +0 -1
  522. package/dist/_next/static/chunks/61ce261738313b8a.js +0 -1
  523. package/dist/_next/static/chunks/62d925bcc8518b6f.js +0 -1
  524. package/dist/_next/static/chunks/63ec034afca4b5d6.js +0 -1
  525. package/dist/_next/static/chunks/644aa76620718c98.js +0 -1
  526. package/dist/_next/static/chunks/648b653b36802fdc.js +0 -1
  527. package/dist/_next/static/chunks/6522643341a0921c.js +0 -1
  528. package/dist/_next/static/chunks/652e486c20710ca8.js +0 -1
  529. package/dist/_next/static/chunks/65fb49c8a7f59842.js +0 -1
  530. package/dist/_next/static/chunks/65fe0975412ff703.js +0 -1
  531. package/dist/_next/static/chunks/66b30159915524db.js +0 -1
  532. package/dist/_next/static/chunks/66ed07a735eac6e3.js +0 -1
  533. package/dist/_next/static/chunks/6785757cc05fec19.js +0 -1
  534. package/dist/_next/static/chunks/67c9db5577080125.js +0 -1
  535. package/dist/_next/static/chunks/68bd2bd64624e20d.js +0 -1
  536. package/dist/_next/static/chunks/692e7ee14236fefb.js +0 -1
  537. package/dist/_next/static/chunks/69cfdbc51cf2d3c3.js +0 -1
  538. package/dist/_next/static/chunks/6ae709c575c74979.js +0 -1
  539. package/dist/_next/static/chunks/6b652524b5ffdd9e.js +0 -1
  540. package/dist/_next/static/chunks/6b7c3c962a14dc29.js +0 -1
  541. package/dist/_next/static/chunks/6bc7c57f119ad4f6.js +0 -1
  542. package/dist/_next/static/chunks/6c3b2d0be1c633b6.js +0 -1
  543. package/dist/_next/static/chunks/6cc2f7f962cdd082.js +0 -1
  544. package/dist/_next/static/chunks/6d4209e94b1aafe6.js +0 -1
  545. package/dist/_next/static/chunks/6ddf95b168bfbc36.js +0 -1
  546. package/dist/_next/static/chunks/6e61f670898cb297.css +0 -1
  547. package/dist/_next/static/chunks/6f3afa83656eab67.js +0 -1
  548. package/dist/_next/static/chunks/6f4460bd0b8a57af.js +0 -1
  549. package/dist/_next/static/chunks/6fe835d41fdbd638.js +0 -1
  550. package/dist/_next/static/chunks/70459a2a4c45653e.js +0 -1
  551. package/dist/_next/static/chunks/7137c7537c459c31.js +0 -1
  552. package/dist/_next/static/chunks/715c085d7c10eeda.js +0 -1
  553. package/dist/_next/static/chunks/71d3a80bc9d53b07.js +0 -1
  554. package/dist/_next/static/chunks/71e3a90489469c28.js +0 -1
  555. package/dist/_next/static/chunks/72a56bd75075fd83.js +0 -1
  556. package/dist/_next/static/chunks/72ef1696f44fcf61.js +0 -1
  557. package/dist/_next/static/chunks/736441266ceb14e2.js +0 -1
  558. package/dist/_next/static/chunks/73cbf0064096e28c.js +0 -1
  559. package/dist/_next/static/chunks/751de74a23cc9036.js +0 -1
  560. package/dist/_next/static/chunks/756b6c2e620386ff.js +0 -1
  561. package/dist/_next/static/chunks/75a396e1752cd59d.js +0 -1
  562. package/dist/_next/static/chunks/764c541428e1c6eb.js +0 -1
  563. package/dist/_next/static/chunks/789aab39327312c3.js +0 -1
  564. package/dist/_next/static/chunks/79128afded6e01d9.js +0 -1
  565. package/dist/_next/static/chunks/7988d5ea63356e10.js +0 -1
  566. package/dist/_next/static/chunks/7aa69fd5d97b7146.js +0 -1
  567. package/dist/_next/static/chunks/7b9c09d0ce43f1c2.js +0 -1
  568. package/dist/_next/static/chunks/7bdf0e5b41aeb209.css +0 -1
  569. package/dist/_next/static/chunks/7d3bf918bccde738.js +0 -1
  570. package/dist/_next/static/chunks/7dbb8abebf50d816.js +0 -1
  571. package/dist/_next/static/chunks/7def01c245e03b59.js +0 -1
  572. package/dist/_next/static/chunks/7ef348801eff6590.js +0 -1
  573. package/dist/_next/static/chunks/7f6e82ac63db5eff.js +0 -1
  574. package/dist/_next/static/chunks/7fd45fb9cf0995f3.js +0 -1
  575. package/dist/_next/static/chunks/8085c74f26fa2c4e.js +0 -1
  576. package/dist/_next/static/chunks/84185f4bb07ccbd7.js +0 -1
  577. package/dist/_next/static/chunks/85fc05549f7f100c.js +0 -1
  578. package/dist/_next/static/chunks/87e12ecbe9521f9b.js +0 -1
  579. package/dist/_next/static/chunks/886a31720c72a306.css +0 -7
  580. package/dist/_next/static/chunks/88a999988f915988.js +0 -1
  581. package/dist/_next/static/chunks/88bc97899d2ce4e5.js +0 -1
  582. package/dist/_next/static/chunks/8bdc142fad5847ed.js +0 -1
  583. package/dist/_next/static/chunks/8deb0392842e5a01.js +0 -1
  584. package/dist/_next/static/chunks/8f038ff914c4b0df.js +0 -1
  585. package/dist/_next/static/chunks/8f5be275907dd98c.js +0 -1
  586. package/dist/_next/static/chunks/9037530b0f1d5783.js +0 -1
  587. package/dist/_next/static/chunks/9078ad91aa20dca0.js +0 -1
  588. package/dist/_next/static/chunks/92c3617a4e22a464.js +0 -1
  589. package/dist/_next/static/chunks/932d3fcc2596e8d5.js +0 -1
  590. package/dist/_next/static/chunks/937e26e6e01d9ec9.js +0 -1
  591. package/dist/_next/static/chunks/93bfaf233e66b48c.js +0 -1
  592. package/dist/_next/static/chunks/94029062f236cadc.js +0 -1
  593. package/dist/_next/static/chunks/94e88cfda11697d2.js +0 -1
  594. package/dist/_next/static/chunks/95c4d26e469d1d8f.js +0 -1
  595. package/dist/_next/static/chunks/96026b5eb5d2566b.js +0 -1
  596. package/dist/_next/static/chunks/962a27e9c634b823.js +0 -1
  597. package/dist/_next/static/chunks/966fb5830ce1029c.js +0 -1
  598. package/dist/_next/static/chunks/9724567275720686.js +0 -1
  599. package/dist/_next/static/chunks/98e243fb5992a71c.js +0 -1
  600. package/dist/_next/static/chunks/9a7b2a483b109c0a.js +0 -1
  601. package/dist/_next/static/chunks/9b3df6b20a9625d5.js +0 -1
  602. package/dist/_next/static/chunks/9c6c00fa68012026.js +0 -1
  603. package/dist/_next/static/chunks/9cb28a1dacb7ea6d.js +0 -1
  604. package/dist/_next/static/chunks/9ccf7a8bca1730bf.js +0 -1
  605. package/dist/_next/static/chunks/9e96c84b86d1bbf3.js +0 -1
  606. package/dist/_next/static/chunks/9f0ee4783140adf1.js +0 -1
  607. package/dist/_next/static/chunks/9fefea69ec034a63.js +0 -1
  608. package/dist/_next/static/chunks/a1b9abf15c0f7655.js +0 -1
  609. package/dist/_next/static/chunks/a256978ef9393e3e.js +0 -1
  610. package/dist/_next/static/chunks/a37aa474433d29e3.js +0 -1
  611. package/dist/_next/static/chunks/a4776dc3e00e5ab0.js +0 -1
  612. package/dist/_next/static/chunks/a5df6158856685f1.js +0 -1
  613. package/dist/_next/static/chunks/a6737fc58619eae5.js +0 -1
  614. package/dist/_next/static/chunks/a6a98f9278704b6a.js +0 -1
  615. package/dist/_next/static/chunks/a7277c96f3669bea.js +0 -1
  616. package/dist/_next/static/chunks/a9fed5c43d754a96.js +0 -1
  617. package/dist/_next/static/chunks/aa0a4c596151b22b.js +0 -1
  618. package/dist/_next/static/chunks/aa867a1fa8b105e1.js +0 -1
  619. package/dist/_next/static/chunks/ad4ba491cf12423f.js +0 -5
  620. package/dist/_next/static/chunks/ad50a7d15cd9d9d8.js +0 -1
  621. package/dist/_next/static/chunks/af7b0bd1b40ad066.js +0 -1
  622. package/dist/_next/static/chunks/b24e3802454a5567.js +0 -1
  623. package/dist/_next/static/chunks/b29a85c3dae2bb9c.js +0 -1
  624. package/dist/_next/static/chunks/b30f1da4e57f459a.js +0 -1
  625. package/dist/_next/static/chunks/b360c9fc22dbf831.js +0 -1
  626. package/dist/_next/static/chunks/b3e79c76be269ccc.js +0 -1
  627. package/dist/_next/static/chunks/b429be4e16fa1e00.js +0 -1
  628. package/dist/_next/static/chunks/b61ec36c9bbca3e0.js +0 -1
  629. package/dist/_next/static/chunks/b65565677c3e8c0a.js +0 -1
  630. package/dist/_next/static/chunks/b66a17ae6f8aeff3.js +0 -1
  631. package/dist/_next/static/chunks/b66afb4b0be97af8.js +0 -1
  632. package/dist/_next/static/chunks/b69f987a60b05db3.js +0 -1
  633. package/dist/_next/static/chunks/b78822282754a47c.js +0 -1
  634. package/dist/_next/static/chunks/b7f72bcb870dda3b.js +0 -1
  635. package/dist/_next/static/chunks/b92c67520afabac2.js +0 -1
  636. package/dist/_next/static/chunks/bbcf9daa108b22fb.js +0 -1
  637. package/dist/_next/static/chunks/bc7bda699a7ccda1.js +0 -1
  638. package/dist/_next/static/chunks/bd1f33816fa01c16.js +0 -1
  639. package/dist/_next/static/chunks/bd2dcf98c9b362f6.js +0 -1
  640. package/dist/_next/static/chunks/bd984c5404403e7d.js +0 -1
  641. package/dist/_next/static/chunks/bdd88bcfd223f52a.js +0 -1
  642. package/dist/_next/static/chunks/bf2262100cea8c64.js +0 -1
  643. package/dist/_next/static/chunks/bf2c1c402dbcccdf.js +0 -1
  644. package/dist/_next/static/chunks/bfc6ee42cec583d5.js +0 -1
  645. package/dist/_next/static/chunks/c15069059c9d1f53.js +0 -1
  646. package/dist/_next/static/chunks/c1615032cbbf5b56.js +0 -1
  647. package/dist/_next/static/chunks/c242e5c1d3639838.js +0 -1
  648. package/dist/_next/static/chunks/c2546d2b493dd907.js +0 -1
  649. package/dist/_next/static/chunks/c3669d468d3f2b3a.js +0 -1
  650. package/dist/_next/static/chunks/c3b49937059d3d70.js +0 -1
  651. package/dist/_next/static/chunks/c5b5aba98d38ef23.js +0 -1
  652. package/dist/_next/static/chunks/c5be27a596acfa18.js +0 -1
  653. package/dist/_next/static/chunks/c6cc32860b96278f.js +0 -1
  654. package/dist/_next/static/chunks/c725524ea13a50ab.js +0 -1
  655. package/dist/_next/static/chunks/c8942bee3aebddae.js +0 -1
  656. package/dist/_next/static/chunks/c8e45be36912e439.js +0 -1
  657. package/dist/_next/static/chunks/c933951b3113492f.js +0 -1
  658. package/dist/_next/static/chunks/c9813626ba898586.js +0 -1
  659. package/dist/_next/static/chunks/ca2725c2b45709c1.js +0 -1
  660. package/dist/_next/static/chunks/caf4049dc563940e.js +0 -1
  661. package/dist/_next/static/chunks/cafadd69e03e6c4b.js +0 -1
  662. package/dist/_next/static/chunks/cba2741f84ef36ed.js +0 -1
  663. package/dist/_next/static/chunks/cccecf726769787f.js +0 -1
  664. package/dist/_next/static/chunks/cd0e7e3cc303b4e4.js +0 -1
  665. package/dist/_next/static/chunks/cd4556cbed1f8957.js +0 -1
  666. package/dist/_next/static/chunks/cd5eec7d305aa041.js +0 -1
  667. package/dist/_next/static/chunks/d09636e7bcf60ad1.js +0 -1
  668. package/dist/_next/static/chunks/d2d432a9facf4278.js +0 -1
  669. package/dist/_next/static/chunks/d2e37b6d5ff62bcb.js +0 -1
  670. package/dist/_next/static/chunks/d33a24782888b869.js +0 -1
  671. package/dist/_next/static/chunks/d33e49aabd798892.js +0 -1
  672. package/dist/_next/static/chunks/d3990c1e87ef3e23.js +0 -1
  673. package/dist/_next/static/chunks/d433c87b0bc69cda.js +0 -1
  674. package/dist/_next/static/chunks/d47cd27ac08f5429.js +0 -1
  675. package/dist/_next/static/chunks/d55f4f3df263ad3d.js +0 -1
  676. package/dist/_next/static/chunks/d599ef4d0f84a93d.js +0 -1
  677. package/dist/_next/static/chunks/d5e3d29f769997cc.js +0 -1
  678. package/dist/_next/static/chunks/d69b21102305d19e.js +0 -1
  679. package/dist/_next/static/chunks/d715e874b8ee8540.js +0 -1
  680. package/dist/_next/static/chunks/d729414ff836cd53.js +0 -1
  681. package/dist/_next/static/chunks/d77e4439761aa20d.js +0 -1
  682. package/dist/_next/static/chunks/d82740475fc07e98.js +0 -1
  683. package/dist/_next/static/chunks/d842d30dcb0f50a9.js +0 -1
  684. package/dist/_next/static/chunks/d8af8dadd0889c71.js +0 -1
  685. package/dist/_next/static/chunks/d9b92ed2d544fca5.js +0 -1
  686. package/dist/_next/static/chunks/da346aeed70dd39a.js +0 -1
  687. package/dist/_next/static/chunks/dbbd673619a7f82f.js +0 -1
  688. package/dist/_next/static/chunks/dc0bc471de951daf.js +0 -1
  689. package/dist/_next/static/chunks/dc2186b66132ca97.js +0 -1
  690. package/dist/_next/static/chunks/de0ee516f6a1aa07.js +0 -1
  691. package/dist/_next/static/chunks/e04bace22e04d63c.js +0 -1
  692. package/dist/_next/static/chunks/e0c76ff7114dc8dc.js +0 -1
  693. package/dist/_next/static/chunks/e11d4fd8de65621d.js +0 -1
  694. package/dist/_next/static/chunks/e1999bcadd3448e5.js +0 -1
  695. package/dist/_next/static/chunks/e3fe320ec1b8f889.js +0 -1
  696. package/dist/_next/static/chunks/e42498eec0c8d570.js +0 -1
  697. package/dist/_next/static/chunks/e4973ad5c183f17a.js +0 -1
  698. package/dist/_next/static/chunks/e5275dcacbabc3e3.js +0 -1
  699. package/dist/_next/static/chunks/e60ef129113f6e24.js +0 -1
  700. package/dist/_next/static/chunks/e61019aedfdf554e.js +0 -1
  701. package/dist/_next/static/chunks/e6324292aef80338.js +0 -1
  702. package/dist/_next/static/chunks/e7003dbd5d8cb2d1.js +0 -1
  703. package/dist/_next/static/chunks/e7bcbeb465fa49cf.js +0 -1
  704. package/dist/_next/static/chunks/e7f1a043618e43cf.js +0 -1
  705. package/dist/_next/static/chunks/e8105dbb23b8e514.js +0 -1
  706. package/dist/_next/static/chunks/ea12d36cdfbaafa9.js +0 -1
  707. package/dist/_next/static/chunks/ea2a84258a02d5c5.js +0 -1
  708. package/dist/_next/static/chunks/ea36a5ae7c6ce34f.js +0 -1
  709. package/dist/_next/static/chunks/eb2d81df9fe374a8.js +0 -1
  710. package/dist/_next/static/chunks/eb9ae8e95cac1197.js +0 -1
  711. package/dist/_next/static/chunks/ebb0ee69f6a7883e.js +0 -1
  712. package/dist/_next/static/chunks/ebcbb5070eb8e29f.js +0 -1
  713. package/dist/_next/static/chunks/ebcd85ff4a1db0dc.js +0 -5
  714. package/dist/_next/static/chunks/ec7537a65499e7a4.js +0 -1
  715. package/dist/_next/static/chunks/ee79511740d19885.js +0 -1
  716. package/dist/_next/static/chunks/eed0c3ef6a5c3706.js +0 -1
  717. package/dist/_next/static/chunks/ef51763a796dde8b.js +0 -1
  718. package/dist/_next/static/chunks/f0cb9b2226c53ef9.js +0 -1
  719. package/dist/_next/static/chunks/f0d9f0621f8ec46d.js +0 -1
  720. package/dist/_next/static/chunks/f12f45a558c3fed2.js +0 -1
  721. package/dist/_next/static/chunks/f1e5e295d4db5c0f.js +0 -1
  722. package/dist/_next/static/chunks/f1f911d553a62027.js +0 -1
  723. package/dist/_next/static/chunks/f235a8df2f905e6a.js +0 -1
  724. package/dist/_next/static/chunks/f36595b9995a49a9.js +0 -1
  725. package/dist/_next/static/chunks/f42a71992d139302.js +0 -1
  726. package/dist/_next/static/chunks/f42d74f288f2229c.js +0 -1
  727. package/dist/_next/static/chunks/f461a75ec3b0e4e9.js +0 -1
  728. package/dist/_next/static/chunks/f50fd84e477dbaeb.js +0 -1
  729. package/dist/_next/static/chunks/f659a364f48244ea.js +0 -1
  730. package/dist/_next/static/chunks/f813c3d77459119f.js +0 -1
  731. package/dist/_next/static/chunks/f9cb4b70f67c86d8.js +0 -1
  732. package/dist/_next/static/chunks/fa39b9f8bced4bcd.js +0 -1
  733. package/dist/_next/static/chunks/fa5b61b8e7219fe6.js +0 -1
  734. package/dist/_next/static/chunks/facb82117d49a6e1.js +0 -1
  735. package/dist/_next/static/chunks/fb05f79f5e4b514e.js +0 -1
  736. package/dist/_next/static/chunks/fb0f4d868b87961b.js +0 -1
  737. package/dist/_next/static/chunks/fb2f1266493dd820.js +0 -1
  738. package/dist/_next/static/chunks/fc2efa33a196ee45.js +0 -1
  739. package/dist/_next/static/chunks/fd3d43eb8557ee49.js +0 -1
  740. package/dist/_next/static/chunks/fdfce6fa0b958336.js +0 -1
  741. package/dist/_next/static/chunks/ff12eca45020947a.js +0 -1
  742. package/dist/_next/static/chunks/ff6860dcd793aa23.js +0 -1
  743. package/dist/_next/static/chunks/turbopack-3d84668fefd38b4b.js +0 -3
  744. package/dist/_next/static/chunks/turbopack-63952675b1d69124.js +0 -3
  745. package/dist/_next/static/chunks/turbopack-8b41433c9a94981f.js +0 -3
  746. package/dist/_next/static/media/data-loading.be8d921a.png +0 -0
  747. package/dist/_next/static/media/no-data.48c973b9.png +0 -0
  748. package/dist/agent-office.html +0 -1224
  749. package/dist/index.html +0 -2
  750. package/dist/index.txt +0 -33
  751. package/dist/manage/about/index.html +0 -2
  752. package/dist/manage/about/index.txt +0 -35
  753. package/dist/manage/env/index.html +0 -2
  754. package/dist/manage/env/index.txt +0 -38
  755. package/dist/manage/general/index.html +0 -2
  756. package/dist/manage/general/index.txt +0 -35
  757. package/dist/manage/index.html +0 -2
  758. package/dist/manage/index.txt +0 -32
  759. package/dist/manage/mcp/index.html +0 -2
  760. package/dist/manage/mcp/index.txt +0 -36
  761. package/dist/manage/permissions/index.html +0 -2
  762. package/dist/manage/permissions/index.txt +0 -35
  763. package/dist/manage/skills/index.html +0 -2
  764. package/dist/manage/skills/index.txt +0 -36
  765. package/dist/manage/task/index.html +0 -2
  766. package/dist/manage/task/index.txt +0 -36
  767. package/dist/manage/teams/index.html +0 -2
  768. package/dist/manage/teams/index.txt +0 -36
  769. package/dist/manage/tools/index.html +0 -2
  770. package/dist/manage/tools/index.txt +0 -36
  771. package/dist/ws-test.html +0 -10377
  772. /package/dist/{_next/static/6_8Ppg2OmCO0VcGqmqnxR → safe-a/_next/static/GEpoLDHgyzXdgHMKRqrNr}/_clientMiddlewareManifest.json +0 -0
  773. /package/dist/{_next/static/6_8Ppg2OmCO0VcGqmqnxR → safe-a/_next/static/GEpoLDHgyzXdgHMKRqrNr}/_ssgManifest.js +0 -0
  774. /package/dist/{_next → safe-a/_next}/static/chunks/a6dad97d9634a72d.js +0 -0
  775. /package/dist/{_next → safe-a/_next}/static/media/13bf9871fe164e7f-s.f2220059.woff2 +0 -0
  776. /package/dist/{_next → safe-a/_next}/static/media/3fe682a82f50d426-s.23358719.woff2 +0 -0
  777. /package/dist/{_next → safe-a/_next}/static/media/5c285b27cdda1fe8-s.p.a62025f2.woff2 +0 -0
  778. /package/dist/{_next → safe-a/_next}/static/media/70bc3e132a0a741e-s.p.15008bfb.woff2 +0 -0
  779. /package/dist/{_next → safe-a/_next}/static/media/71b036adf157cdcf-s.bd5f4d11.woff2 +0 -0
  780. /package/dist/{_next → safe-a/_next}/static/media/89b21bb081cb7469-s.51c18f09.woff2 +0 -0
  781. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_AMS-Regular.892f691b.ttf +0 -0
  782. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_AMS-Regular.c30af439.woff2 +0 -0
  783. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_AMS-Regular.e6a3cada.woff +0 -0
  784. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Caligraphic-Bold.2f97783e.woff +0 -0
  785. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Caligraphic-Bold.a36b8125.ttf +0 -0
  786. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Caligraphic-Bold.db991531.woff2 +0 -0
  787. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Caligraphic-Regular.2b13f013.woff +0 -0
  788. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Caligraphic-Regular.7c50032c.ttf +0 -0
  789. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Caligraphic-Regular.c20eee08.woff2 +0 -0
  790. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Fraktur-Bold.5fa2f5e4.woff +0 -0
  791. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Fraktur-Bold.d514bd28.woff2 +0 -0
  792. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Fraktur-Bold.e311399d.ttf +0 -0
  793. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Fraktur-Regular.18139813.woff +0 -0
  794. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Fraktur-Regular.2a73476d.ttf +0 -0
  795. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Fraktur-Regular.5d62e468.woff2 +0 -0
  796. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Main-Bold.6d137c77.ttf +0 -0
  797. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Main-Bold.c24b5ba7.woff +0 -0
  798. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Main-Bold.f4e2828d.woff2 +0 -0
  799. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Main-BoldItalic.079b33ae.woff +0 -0
  800. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Main-BoldItalic.c003d3ec.ttf +0 -0
  801. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Main-BoldItalic.f1884480.woff2 +0 -0
  802. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Main-Italic.26a3619b.woff +0 -0
  803. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Main-Italic.61da3e93.ttf +0 -0
  804. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Main-Italic.a3746929.woff2 +0 -0
  805. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Main-Regular.12644167.woff2 +0 -0
  806. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Main-Regular.876b86ad.ttf +0 -0
  807. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Main-Regular.d511f158.woff +0 -0
  808. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Math-BoldItalic.5c6a6a93.woff2 +0 -0
  809. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Math-BoldItalic.ad4dffd5.woff +0 -0
  810. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Math-BoldItalic.e73b3bf0.ttf +0 -0
  811. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Math-Italic.03974bc4.ttf +0 -0
  812. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Math-Italic.1cd2c488.woff +0 -0
  813. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Math-Italic.d8564edb.woff2 +0 -0
  814. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_SansSerif-Bold.a03f9428.woff2 +0 -0
  815. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_SansSerif-Bold.d4608ed5.ttf +0 -0
  816. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_SansSerif-Bold.ff51ef5c.woff +0 -0
  817. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_SansSerif-Italic.8ed740d6.woff +0 -0
  818. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_SansSerif-Italic.9245afda.woff2 +0 -0
  819. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_SansSerif-Italic.c0b22b1e.ttf +0 -0
  820. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_SansSerif-Regular.128c9bc2.woff2 +0 -0
  821. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_SansSerif-Regular.156dbd4e.ttf +0 -0
  822. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_SansSerif-Regular.ee7b0a16.woff +0 -0
  823. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Script-Regular.00d9a561.ttf +0 -0
  824. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Script-Regular.186c7155.woff2 +0 -0
  825. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Script-Regular.afc2fd5a.woff +0 -0
  826. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Size1-Regular.4450ef36.woff2 +0 -0
  827. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Size1-Regular.9aaff96b.ttf +0 -0
  828. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Size1-Regular.e5bf4c74.woff +0 -0
  829. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Size2-Regular.6a97527b.woff2 +0 -0
  830. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Size2-Regular.8fbd32af.woff +0 -0
  831. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Size2-Regular.f11810ed.ttf +0 -0
  832. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Size3-Regular.45ae8eba.woff +0 -0
  833. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Size3-Regular.54b7ce9d.woff2 +0 -0
  834. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Size3-Regular.9812ade2.ttf +0 -0
  835. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Size4-Regular.44a4d487.ttf +0 -0
  836. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Size4-Regular.927fc5b9.woff2 +0 -0
  837. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Size4-Regular.b211e3d3.woff +0 -0
  838. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Typewriter-Regular.68b6c3a9.woff +0 -0
  839. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Typewriter-Regular.a1a7ff52.ttf +0 -0
  840. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Typewriter-Regular.ff99d643.woff2 +0 -0
  841. /package/dist/{_next → safe-a/_next}/static/media/b886574ba42c3409-s.1f4af8e6.woff2 +0 -0
  842. /package/dist/{_next → safe-a/_next}/static/media/c3cb240f9c892514-s.d8e4bce2.woff2 +0 -0
  843. /package/dist/{_next → safe-a/_next}/static/media/c41ca59f1c34ba31-s.p.e20f337c.woff2 +0 -0
  844. /package/dist/{_next → safe-a/_next}/static/media/cc545e633e20c56d-s.f6f1950f.woff2 +0 -0
  845. /package/dist/{favicon.ico → safe-a/favicon.ico} +0 -0
  846. /package/dist/{slash-command-ui-patch.css → safe-a/slash-command-ui-patch.css} +0 -0
  847. /package/dist/{slash-command-ui-patch.js → safe-a/slash-command-ui-patch.js} +0 -0
@@ -1,1224 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="zh-CN">
3
- <head>
4
- <meta charset="UTF-8" />
5
- <meta name="viewport" content="width=device-width, initial-scale=1" />
6
- <title>Agent 列表</title>
7
- <style>
8
- :root {
9
- color-scheme: light;
10
- --ds-page: #f2f2f7;
11
- --ds-bg: #ffffff;
12
- --ds-border: #e5e5ea;
13
- --ds-text: #1c1c1e;
14
- --ds-muted: #8e8e93;
15
- --ds-accent: #0a84ff;
16
- --ds-accent-hover: #0070e0;
17
- --ds-danger: #ff3b30;
18
- }
19
- * { box-sizing: border-box; }
20
- html, body { height: 100%; margin: 0; }
21
- body {
22
- font-family: 'PingFang SC', 'Microsoft YaHei', ui-sans-serif, system-ui, sans-serif;
23
- background: var(--ds-page);
24
- color: var(--ds-text);
25
- overflow: hidden;
26
- }
27
- #officeApp {
28
- display: flex;
29
- flex-direction: column;
30
- width: 100%;
31
- height: 100%;
32
- }
33
- .office-topbar {
34
- flex-shrink: 0;
35
- display: flex;
36
- align-items: center;
37
- justify-content: space-between;
38
- padding: 14px 20px;
39
- background: var(--ds-bg);
40
- border-bottom: 1px solid var(--ds-border);
41
- }
42
- .office-brand h1 {
43
- margin: 0;
44
- font-size: 1.15rem;
45
- font-weight: 600;
46
- }
47
- .office-brand p {
48
- margin: 0.2rem 0 0;
49
- font-size: 0.82rem;
50
- color: var(--ds-muted);
51
- }
52
- .office-top-actions {
53
- display: flex;
54
- gap: 8px;
55
- }
56
- .office-main {
57
- flex: 1;
58
- display: flex;
59
- min-height: 0;
60
- overflow: hidden;
61
- }
62
- #agentListRoot {
63
- flex: 1;
64
- overflow: auto;
65
- padding: 16px 20px 24px;
66
- min-width: 0;
67
- }
68
- .agent-list {
69
- list-style: none;
70
- margin: 0;
71
- padding: 0;
72
- display: flex;
73
- flex-direction: column;
74
- gap: 10px;
75
- max-width: 720px;
76
- }
77
- .agent-list-empty {
78
- color: var(--ds-muted);
79
- font-size: 0.9rem;
80
- padding: 48px 16px;
81
- text-align: center;
82
- }
83
- .agent-list-item {
84
- display: flex;
85
- align-items: center;
86
- gap: 14px;
87
- width: 100%;
88
- padding: 14px 16px;
89
- border: 1px solid var(--ds-border);
90
- border-radius: 12px;
91
- background: var(--ds-bg);
92
- cursor: pointer;
93
- text-align: left;
94
- font: inherit;
95
- color: inherit;
96
- transition: border-color 0.15s, box-shadow 0.15s;
97
- }
98
- .agent-list-item:hover {
99
- border-color: rgba(10, 132, 255, 0.35);
100
- box-shadow: 0 2px 12px rgba(0, 0, 0, 0.06);
101
- }
102
- .agent-list-item.is-selected {
103
- border-color: var(--ds-accent);
104
- box-shadow: 0 0 0 1px var(--ds-accent);
105
- }
106
- .agent-list-accent {
107
- flex-shrink: 0;
108
- width: 4px;
109
- height: 40px;
110
- border-radius: 2px;
111
- }
112
- .agent-list-body {
113
- flex: 1;
114
- min-width: 0;
115
- display: flex;
116
- flex-direction: column;
117
- gap: 4px;
118
- }
119
- .agent-list-id {
120
- font-size: 1rem;
121
- font-weight: 600;
122
- }
123
- .agent-list-desc {
124
- font-size: 0.82rem;
125
- color: var(--ds-muted);
126
- white-space: nowrap;
127
- overflow: hidden;
128
- text-overflow: ellipsis;
129
- }
130
- .agent-list-team {
131
- font-size: 0.78rem;
132
- color: var(--ds-accent);
133
- white-space: nowrap;
134
- overflow: hidden;
135
- text-overflow: ellipsis;
136
- }
137
- .office-team-section {
138
- margin-bottom: 1rem;
139
- padding-top: 0.25rem;
140
- border-top: 1px solid var(--ds-border);
141
- }
142
- .office-team-section h3 {
143
- margin: 0 0 0.5rem;
144
- font-size: 0.88rem;
145
- font-weight: 600;
146
- }
147
- .office-team-chips {
148
- display: flex;
149
- flex-wrap: wrap;
150
- gap: 6px;
151
- margin-bottom: 0.65rem;
152
- min-height: 28px;
153
- }
154
- .office-team-chip {
155
- display: inline-flex;
156
- align-items: center;
157
- gap: 4px;
158
- padding: 0.2rem 0.45rem 0.2rem 0.55rem;
159
- border-radius: 999px;
160
- background: rgba(10, 132, 255, 0.1);
161
- border: 1px solid rgba(10, 132, 255, 0.25);
162
- font-size: 0.78rem;
163
- }
164
- .office-team-chip button {
165
- border: none;
166
- background: transparent;
167
- color: var(--ds-muted);
168
- cursor: pointer;
169
- font-size: 1rem;
170
- line-height: 1;
171
- padding: 0 2px;
172
- }
173
- .office-team-chip button:hover { color: var(--ds-danger); }
174
- .office-team-empty {
175
- font-size: 0.8rem;
176
- color: var(--ds-muted);
177
- margin: 0 0 0.5rem;
178
- }
179
- .office-team-add {
180
- display: flex;
181
- gap: 8px;
182
- align-items: center;
183
- }
184
- .office-team-add select {
185
- flex: 1;
186
- min-width: 0;
187
- border: 1px solid var(--ds-border);
188
- border-radius: 10px;
189
- padding: 0.45rem 0.55rem;
190
- font: inherit;
191
- }
192
- .agent-list-arrow {
193
- flex-shrink: 0;
194
- color: var(--ds-muted);
195
- font-size: 1.2rem;
196
- line-height: 1;
197
- }
198
- .office-btn {
199
- border: 1px solid var(--ds-border);
200
- background: var(--ds-bg);
201
- color: var(--ds-text);
202
- border-radius: 10px;
203
- padding: 0.45rem 0.85rem;
204
- font-size: 0.85rem;
205
- cursor: pointer;
206
- }
207
- .office-btn:hover { background: #fafafa; }
208
- .office-btn-primary {
209
- background: var(--ds-accent);
210
- border-color: var(--ds-accent);
211
- color: #fff;
212
- }
213
- .office-btn-primary:hover { background: var(--ds-accent-hover); }
214
- .office-btn-danger {
215
- color: var(--ds-danger);
216
- border-color: rgba(255, 59, 48, 0.35);
217
- }
218
- #officePanel {
219
- flex-shrink: 0;
220
- width: min(380px, 42vw);
221
- background: var(--ds-bg);
222
- border-left: 1px solid var(--ds-border);
223
- display: none;
224
- flex-direction: column;
225
- min-height: 0;
226
- }
227
- #officePanel.is-open {
228
- display: flex;
229
- }
230
- .office-panel-head {
231
- display: flex;
232
- align-items: center;
233
- justify-content: space-between;
234
- padding: 1rem 1rem 0.5rem;
235
- border-bottom: 1px solid var(--ds-border);
236
- }
237
- .office-panel-head h2 {
238
- margin: 0;
239
- font-size: 1rem;
240
- }
241
- .office-panel-close {
242
- border: none;
243
- background: transparent;
244
- font-size: 1.4rem;
245
- line-height: 1;
246
- cursor: pointer;
247
- color: var(--ds-muted);
248
- }
249
- .office-panel-body {
250
- padding: 1rem;
251
- overflow: auto;
252
- flex: 1;
253
- min-height: 0;
254
- }
255
- .office-panel-meta {
256
- margin: 0 0 0.75rem;
257
- font-size: 0.8rem;
258
- color: var(--ds-muted);
259
- }
260
- .office-form-row {
261
- display: flex;
262
- flex-direction: column;
263
- gap: 0.35rem;
264
- margin-bottom: 0.85rem;
265
- }
266
- .office-form-row label {
267
- font-size: 0.82rem;
268
- color: var(--ds-muted);
269
- }
270
- .office-form-row input,
271
- .office-form-row textarea {
272
- width: 100%;
273
- border: 1px solid var(--ds-border);
274
- border-radius: 10px;
275
- padding: 0.55rem 0.65rem;
276
- font: inherit;
277
- resize: vertical;
278
- }
279
- .office-form-row textarea { min-height: 72px; }
280
- .office-form-actions {
281
- display: flex;
282
- flex-wrap: wrap;
283
- gap: 8px;
284
- margin-top: 0.5rem;
285
- }
286
- #officeToast {
287
- position: fixed;
288
- left: 50%;
289
- bottom: 28px;
290
- transform: translateX(-50%) translateY(12px);
291
- background: rgba(28, 28, 30, 0.92);
292
- color: #fff;
293
- padding: 0.65rem 1rem;
294
- border-radius: 10px;
295
- font-size: 0.85rem;
296
- opacity: 0;
297
- pointer-events: none;
298
- transition: opacity 0.2s, transform 0.2s;
299
- z-index: 100;
300
- max-width: min(90vw, 420px);
301
- text-align: center;
302
- }
303
- #officeToast.is-visible {
304
- opacity: 1;
305
- transform: translateX(-50%) translateY(0);
306
- }
307
- #officeToast.is-error { background: rgba(192, 57, 43, 0.95); }
308
- @media (max-width: 768px) {
309
- .office-main { flex-direction: column; }
310
- #officePanel {
311
- width: 100%;
312
- border-left: none;
313
- border-top: 1px solid var(--ds-border);
314
- max-height: 50vh;
315
- }
316
- }
317
- </style>
318
- </head>
319
- <body>
320
- <div id="officeApp">
321
- <header class="office-topbar">
322
- <div class="office-brand">
323
- <h1>Agent 列表</h1>
324
- <p id="officeSubtitle">加载中…</p>
325
- </div>
326
- <div class="office-top-actions">
327
- <button type="button" class="office-btn office-btn-primary" id="btnOfficeNewAgent">新建 Agent</button>
328
- </div>
329
- </header>
330
-
331
- <div class="office-main">
332
- <div id="agentListRoot" aria-label="Agent 列表"></div>
333
-
334
- <aside id="officePanel" aria-label="Agent 管理面板">
335
- <div class="office-panel-head">
336
- <h2 id="officePanelTitle">Agent</h2>
337
- <button type="button" class="office-panel-close" id="btnOfficePanelClose" aria-label="关闭">&times;</button>
338
- </div>
339
- <div class="office-panel-body">
340
- <p id="officePanelMeta" class="office-panel-meta"></p>
341
- <form id="officeAgentForm" onsubmit="return false">
342
- <div class="office-form-row">
343
- <label for="officeAgentId">Agent ID</label>
344
- <input id="officeAgentId" type="text" spellcheck="false" placeholder="例如 my-agent" />
345
- </div>
346
- <div class="office-form-row">
347
- <label for="officeAgentWhen">使用时机(whentouse)</label>
348
- <textarea id="officeAgentWhen" spellcheck="false" placeholder="输入该 agent 的使用场景与触发说明"></textarea>
349
- </div>
350
- <div class="office-form-row">
351
- <label for="officeAgentPrompt">agent.md</label>
352
- <textarea id="officeAgentPrompt" spellcheck="false" placeholder="Agent 提示词"></textarea>
353
- </div>
354
- <section class="office-team-section" id="officeTeamSection" hidden>
355
- <h3>绑定队员</h3>
356
- <p id="officeTeamEmpty" class="office-team-empty" hidden>尚未绑定队员</p>
357
- <div id="officeTeamChips" class="office-team-chips"></div>
358
- <div class="office-team-add">
359
- <select id="officeTeamPick" aria-label="选择队员">
360
- <option value="">选择要添加的 Agent…</option>
361
- </select>
362
- <button type="button" class="office-btn office-btn-primary" id="btnOfficeAddTeamMember">添加</button>
363
- </div>
364
- </section>
365
- <div class="office-form-actions">
366
- <button type="button" class="office-btn office-btn-primary" id="btnOfficeSave">保存</button>
367
- <button type="button" class="office-btn office-btn-danger" id="btnOfficeDelete">删除</button>
368
- <button type="button" class="office-btn" id="btnOfficeWorkbench">进入工作台</button>
369
- </div>
370
- </form>
371
- </div>
372
- </aside>
373
- </div>
374
-
375
- <div id="officeToast" role="status" aria-live="polite"></div>
376
- </div>
377
-
378
- <script>
379
- ;(function () {
380
- 'use strict'
381
-
382
- /** 解析 API 基址:支持 ?apiBase= 或当前页面 origin(与 ws-test 一致) */
383
- function httpOriginForApi() {
384
- try {
385
- const fromQuery = new URLSearchParams(window.location.search).get('apiBase')
386
- if (fromQuery && String(fromQuery).trim()) {
387
- return String(fromQuery).trim().replace(/\/$/, '')
388
- }
389
- } catch {
390
- /* ignore */
391
- }
392
- return window.location.origin
393
- }
394
-
395
- /** 构建 GET/POST /api/agents 列表地址(无需 agent 查询参数) */
396
- function buildAgentsListUrl() {
397
- return new URL('/api/agents', httpOriginForApi() + '/').toString()
398
- }
399
-
400
- /** 构建单个 agent 的 REST 地址(由 path 的 id 唯一标识目标) */
401
- function buildAgentItemUrl(id) {
402
- return new URL(
403
- '/api/agents/' + encodeURIComponent(String(id || '').trim()),
404
- httpOriginForApi() + '/',
405
- ).toString()
406
- }
407
-
408
- /** 构建队员管理子资源地址 */
409
- function buildAgentTeamMembersUrl(leaderId) {
410
- return new URL(
411
- '/api/agents/' +
412
- encodeURIComponent(String(leaderId || '').trim()) +
413
- '/team-members',
414
- httpOriginForApi() + '/',
415
- ).toString()
416
- }
417
-
418
- function buildAgentTeamMemberUrl(leaderId, agentType) {
419
- return new URL(
420
- '/api/agents/' +
421
- encodeURIComponent(String(leaderId || '').trim()) +
422
- '/team-members/' +
423
- encodeURIComponent(String(agentType || '').trim()),
424
- httpOriginForApi() + '/',
425
- ).toString()
426
- }
427
-
428
- /**
429
- * 拉取可绑定队员候选:仅 agent-runtime 下已创建的 Agent(与 agent.json.agentTeams 同源)。
430
- * 不使用 /api/agent-teams(那是仓库内置 subagent 类型,不能写入 agentTeams)。
431
- */
432
- async function fetchTeamMemberCatalog(leaderId) {
433
- const leader = String(leaderId || '').trim()
434
- const agents = await fetchAgentsList()
435
- const out = []
436
- for (let i = 0; i < agents.length; i++) {
437
- const row = agents[i]
438
- const id = String(row.id || '').trim()
439
- if (!id || id === leader) continue
440
- out.push({
441
- agentType: id,
442
- whenToUse: typeof row.whentouse === 'string' ? row.whentouse : '',
443
- })
444
- }
445
- out.sort((a, b) => a.agentType.localeCompare(b.agentType))
446
- return out
447
- }
448
-
449
- /** 向 leader 追加一名绑定队员 */
450
- async function addTeamMember(leaderId, agentType) {
451
- const r = await fetch(buildAgentTeamMembersUrl(leaderId), {
452
- method: 'POST',
453
- headers: { 'content-type': 'application/json; charset=utf-8' },
454
- body: JSON.stringify({ agentType: String(agentType || '').trim() }),
455
- })
456
- const body = await r.json().catch(() => ({}))
457
- if (!r.ok) {
458
- throw new Error(body.message || body.error || r.statusText)
459
- }
460
- return body.agent || null
461
- }
462
-
463
- /** 从 leader 移除一名绑定队员 */
464
- async function removeTeamMember(leaderId, agentType) {
465
- const r = await fetch(buildAgentTeamMemberUrl(leaderId, agentType), {
466
- method: 'DELETE',
467
- })
468
- const body = await r.json().catch(() => ({}))
469
- if (!r.ok) {
470
- throw new Error(body.message || body.error || r.statusText)
471
- }
472
- return body.agent || null
473
- }
474
-
475
- /** 校验新建 agent id:字母数字下划线中划线,1~64 */
476
- function isValidAgentIdInput(id) {
477
- return /^[a-zA-Z0-9_-]{1,64}$/.test(String(id || '').trim())
478
- }
479
-
480
- /**
481
- * 基于已有 agent.json 构造 PATCH config,仅更新 whentouse;
482
- * effort 为 null 时不写入,避免覆盖服务端默认值。
483
- */
484
- function buildAgentConfigPatch(baseConfig, whentouse) {
485
- const c = baseConfig && typeof baseConfig === 'object' ? baseConfig : {}
486
- const env = c.env && typeof c.env === 'object' && !Array.isArray(c.env) ? c.env : {}
487
- const patch = {
488
- tools: Array.isArray(c.tools) ? c.tools.map(String) : [],
489
- disallowedTools: Array.isArray(c.disallowedTools)
490
- ? c.disallowedTools.map(String)
491
- : [],
492
- mcpServers: Array.isArray(c.mcpServers) ? c.mcpServers.map(String) : [],
493
- skills: Array.isArray(c.skills) ? c.skills.map(String) : [],
494
- agentTeams: Array.isArray(c.agentTeams) ? c.agentTeams.map(String) : [],
495
- model: typeof c.model === 'string' ? c.model : '',
496
- background: c.background === true,
497
- isolation: typeof c.isolation === 'string' ? c.isolation : '',
498
- whentouse: typeof whentouse === 'string' ? whentouse : '',
499
- env,
500
- }
501
- if (typeof c.effort === 'string' || typeof c.effort === 'number') {
502
- patch.effort = c.effort
503
- }
504
- return patch
505
- }
506
-
507
- /** 拉取 agent 列表 */
508
- async function fetchAgentsList() {
509
- const r = await fetch(buildAgentsListUrl())
510
- const body = await r.json().catch(() => ({}))
511
- if (!r.ok) {
512
- throw new Error(body.message || body.error || r.statusText)
513
- }
514
- return Array.isArray(body.agents) ? body.agents : []
515
- }
516
-
517
- /** 拉取单个 agent 详情(含 config、prompt) */
518
- async function fetchAgentDetail(id) {
519
- const r = await fetch(buildAgentItemUrl(id))
520
- const body = await r.json().catch(() => ({}))
521
- if (!r.ok) {
522
- throw new Error(body.message || body.error || r.statusText)
523
- }
524
- return body.agent || { id }
525
- }
526
-
527
- /** 删除 agent */
528
- async function deleteAgent(id) {
529
- const agentId = String(id || '').trim()
530
- if (!agentId) throw new Error('缺少 agent id')
531
- const tryDelete = async (withAgentQuery) => {
532
- const u = new URL(buildAgentItemUrl(agentId))
533
- if (withAgentQuery) {
534
- u.searchParams.set('agent', agentId)
535
- }
536
- const r = await fetch(u.toString(), { method: 'DELETE' })
537
- const body = await r.json().catch(() => ({}))
538
- return { r, body }
539
- }
540
- let ret = await tryDelete(false)
541
- if (!ret.r.ok) {
542
- const msg = String(ret.body && (ret.body.message || ret.body.error || ''))
543
- // 兼容仍要求 ?agent 的旧服务端;新服务端不会走该分支。
544
- if (ret.r.status === 400 && msg.includes('missing required query parameter: agent')) {
545
- ret = await tryDelete(true)
546
- }
547
- }
548
- if (!ret.r.ok) {
549
- throw new Error(ret.body.message || ret.body.error || ret.r.statusText)
550
- }
551
- }
552
-
553
- /**
554
- * 保存 agent:新建走 POST + PATCH whentouse;编辑走 PATCH prompt + config。
555
- */
556
- async function saveAgent(params) {
557
- const { id, whentouse, prompt, isEdit, baseConfig, contextAgent } = params
558
- if (isEdit) {
559
- const patchRes = await fetch(buildAgentItemUrl(id), {
560
- method: 'PATCH',
561
- headers: { 'content-type': 'application/json; charset=utf-8' },
562
- body: JSON.stringify({
563
- prompt,
564
- config: buildAgentConfigPatch(baseConfig, whentouse),
565
- }),
566
- })
567
- const patchBody = await patchRes.json().catch(() => ({}))
568
- if (!patchRes.ok) {
569
- throw new Error(patchBody.message || patchBody.error || patchRes.statusText)
570
- }
571
- return id
572
- }
573
-
574
- const createRes = await fetch(buildAgentsListUrl(), {
575
- method: 'POST',
576
- headers: { 'content-type': 'application/json; charset=utf-8' },
577
- body: JSON.stringify({ name: id, prompt }),
578
- })
579
- const createBody = await createRes.json().catch(() => ({}))
580
- if (!createRes.ok) {
581
- throw new Error(createBody.message || createBody.error || createRes.statusText)
582
- }
583
-
584
- const cfgBody = await fetchAgentDetail(id)
585
- const baseCfg =
586
- cfgBody.config && typeof cfgBody.config === 'object' ? cfgBody.config : null
587
- const patchRes = await fetch(buildAgentItemUrl(id), {
588
- method: 'PATCH',
589
- headers: { 'content-type': 'application/json; charset=utf-8' },
590
- body: JSON.stringify({
591
- config: buildAgentConfigPatch(baseCfg, whentouse),
592
- }),
593
- })
594
- const patchBody = await patchRes.json().catch(() => ({}))
595
- if (!patchRes.ok) {
596
- throw new Error(patchBody.message || patchBody.error || patchRes.statusText)
597
- }
598
- return id
599
- }
600
-
601
- const AGENT_ACCENT_COLORS = [
602
- '#22d3c5',
603
- '#4da3ff',
604
- '#8b5cf6',
605
- '#e84855',
606
- '#f5c518',
607
- '#c5e84c',
608
- ]
609
-
610
- const KNOWN_ACCENTS = {
611
- dev: '#22d3c5',
612
- edr: '#4da3ff',
613
- qihoo: '#8b5cf6',
614
- }
615
-
616
- /** 根据 agent id 分配列表左侧色带 */
617
- function accentColorForId(id) {
618
- const key = String(id || '').trim().toLowerCase()
619
- if (KNOWN_ACCENTS[key]) return KNOWN_ACCENTS[key]
620
- const s = String(id || 'a')
621
- let h = 0
622
- for (let i = 0; i < s.length; i++) {
623
- h = (h + s.charCodeAt(i) * 17) % AGENT_ACCENT_COLORS.length
624
- }
625
- return AGENT_ACCENT_COLORS[h]
626
- }
627
-
628
- /** 列表页选中状态:仅维护当前 agent id */
629
- class OfficeController {
630
- constructor() {
631
- this.selectedId = null
632
- this.onSelect = null
633
- }
634
-
635
- /** 选中或取消选中,并通知侧栏 UI */
636
- selectAgent(id) {
637
- this.selectedId = id || null
638
- if (this.onSelect) this.onSelect(this.selectedId)
639
- }
640
- }
641
-
642
- function truncateListDesc(text, max) {
643
- const s = String(text || '').replace(/\s+/g, ' ').trim()
644
- if (!s) return '暂无使用说明'
645
- return s.length <= max ? s : s.slice(0, max - 1) + '…'
646
- }
647
-
648
- /** 列表副标题:绑定队员摘要 */
649
- function formatAgentTeamLine(row) {
650
- const members = Array.isArray(row.agentTeamMembers)
651
- ? row.agentTeamMembers
652
- : []
653
- if (!members.length) return ''
654
- const names = members.map((m) => String(m.agentType || '').trim()).filter(Boolean)
655
- const n = names.length
656
- const preview = names.slice(0, 3).join('、')
657
- const suffix = n > 3 ? '…' : ''
658
- return n + ' 名队员 · ' + preview + suffix
659
- }
660
-
661
- /** Agent 列表 DOM 渲染 */
662
- class AgentList {
663
- constructor(container, onPick) {
664
- this.container = container
665
- this.onPick = onPick
666
- }
667
-
668
- render(agents, selectedId) {
669
- if (!this.container) return
670
- this.container.innerHTML = ''
671
-
672
- if (!agents.length) {
673
- const empty = document.createElement('div')
674
- empty.className = 'agent-list-empty'
675
- empty.textContent = '暂无 Agent,点击右上角「新建 Agent」创建'
676
- this.container.appendChild(empty)
677
- return
678
- }
679
-
680
- const ul = document.createElement('ul')
681
- ul.className = 'agent-list'
682
- ul.setAttribute('role', 'list')
683
-
684
- for (let i = 0; i < agents.length; i++) {
685
- const row = agents[i]
686
- const id = String(row.id || '').trim()
687
- if (!id) continue
688
-
689
- const li = document.createElement('li')
690
- const btn = document.createElement('button')
691
- btn.type = 'button'
692
- btn.className =
693
- 'agent-list-item' + (selectedId === id ? ' is-selected' : '')
694
- btn.setAttribute('aria-pressed', selectedId === id ? 'true' : 'false')
695
-
696
- const accent = document.createElement('span')
697
- accent.className = 'agent-list-accent'
698
- accent.style.background = accentColorForId(id)
699
-
700
- const body = document.createElement('span')
701
- body.className = 'agent-list-body'
702
-
703
- const title = document.createElement('span')
704
- title.className = 'agent-list-id'
705
- title.textContent = id
706
-
707
- const desc = document.createElement('span')
708
- desc.className = 'agent-list-desc'
709
- desc.textContent = truncateListDesc(row.whentouse, 80)
710
-
711
- body.appendChild(title)
712
- body.appendChild(desc)
713
-
714
- const teamLine = formatAgentTeamLine(row)
715
- if (teamLine) {
716
- const team = document.createElement('span')
717
- team.className = 'agent-list-team'
718
- team.textContent = teamLine
719
- body.appendChild(team)
720
- }
721
-
722
- const arrow = document.createElement('span')
723
- arrow.className = 'agent-list-arrow'
724
- arrow.textContent = '›'
725
-
726
- btn.appendChild(accent)
727
- btn.appendChild(body)
728
- btn.appendChild(arrow)
729
-
730
- btn.addEventListener('click', () => {
731
- if (this.onPick) this.onPick(id)
732
- })
733
-
734
- li.appendChild(btn)
735
- ul.appendChild(li)
736
- }
737
-
738
- this.container.appendChild(ul)
739
- }
740
- }
741
-
742
- /** 列表 + 侧栏 CRUD 与 URL ?agent= 同步 */
743
- class OfficeUI {
744
- constructor(root, controller, list, hooks) {
745
- this.root = root
746
- this.controller = controller
747
- this.list = list
748
- this.hooks = hooks || {}
749
- this.contextAgent = ''
750
- this.agents = []
751
- this.editingId = null
752
- this.baseConfig = null
753
- this.mode = 'idle'
754
-
755
- this.panelEl = root.querySelector('#officePanel')
756
- this.panelTitleEl = root.querySelector('#officePanelTitle')
757
- this.panelMetaEl = root.querySelector('#officePanelMeta')
758
- this.formEl = root.querySelector('#officeAgentForm')
759
- this.idInput = root.querySelector('#officeAgentId')
760
- this.whenInput = root.querySelector('#officeAgentWhen')
761
- this.promptInput = root.querySelector('#officeAgentPrompt')
762
- this.btnNew = root.querySelector('#btnOfficeNewAgent')
763
- this.btnSave = root.querySelector('#btnOfficeSave')
764
- this.btnDelete = root.querySelector('#btnOfficeDelete')
765
- this.btnWorkbench = root.querySelector('#btnOfficeWorkbench')
766
- this.btnClose = root.querySelector('#btnOfficePanelClose')
767
- this.toastEl = root.querySelector('#officeToast')
768
- this.teamSection = root.querySelector('#officeTeamSection')
769
- this.teamChips = root.querySelector('#officeTeamChips')
770
- this.teamEmpty = root.querySelector('#officeTeamEmpty')
771
- this.teamPick = root.querySelector('#officeTeamPick')
772
- this.btnAddTeamMember = root.querySelector('#btnOfficeAddTeamMember')
773
- this.boundTeamMembers = []
774
-
775
- this.bindEvents()
776
- this.hidePanel()
777
- }
778
-
779
- bindEvents() {
780
- if (this.btnNew) {
781
- this.btnNew.addEventListener('click', () => this.showCreateForm())
782
- }
783
- if (this.btnClose) {
784
- this.btnClose.addEventListener('click', () => {
785
- this.hidePanel()
786
- this.controller.selectAgent(null)
787
- this.clearUrlAgentParam()
788
- })
789
- }
790
- if (this.btnSave) {
791
- this.btnSave.addEventListener('click', () => void this.submitForm())
792
- }
793
- if (this.btnDelete) {
794
- this.btnDelete.addEventListener('click', () => void this.handleDelete())
795
- }
796
- if (this.btnWorkbench) {
797
- this.btnWorkbench.addEventListener('click', () => {
798
- const id =
799
- this.editingId || (this.idInput ? this.idInput.value.trim() : '')
800
- if (!id) return
801
- window.location.href =
802
- '/ws-test.html?agent=' + encodeURIComponent(id)
803
- })
804
- }
805
- if (this.btnAddTeamMember) {
806
- this.btnAddTeamMember.addEventListener('click', () =>
807
- void this.handleAddTeamMember(),
808
- )
809
- }
810
- }
811
-
812
- /** 同步侧栏队员 chips 与下拉候选 */
813
- renderTeamMembers(leaderId, members, catalog) {
814
- if (!this.teamSection) return
815
- const isEdit = this.mode === 'edit' && !!leaderId
816
- this.teamSection.hidden = !isEdit
817
- if (!isEdit) return
818
-
819
- const list = Array.isArray(members) ? members : []
820
- this.boundTeamMembers = list
821
-
822
- if (this.teamEmpty) {
823
- this.teamEmpty.hidden = list.length > 0
824
- }
825
- if (this.teamChips) {
826
- this.teamChips.innerHTML = ''
827
- const boundSet = new Set(
828
- list.map((m) => String(m.agentType || '').trim()).filter(Boolean),
829
- )
830
- for (let i = 0; i < list.length; i++) {
831
- const m = list[i]
832
- const agentType = String(m.agentType || '').trim()
833
- if (!agentType) continue
834
- const chip = document.createElement('span')
835
- chip.className = 'office-team-chip'
836
- chip.title =
837
- typeof m.whentouse === 'string' && m.whentouse.trim()
838
- ? m.whentouse.trim()
839
- : agentType
840
- const label = document.createElement('span')
841
- label.textContent = agentType
842
- const rm = document.createElement('button')
843
- rm.type = 'button'
844
- rm.setAttribute('aria-label', '移除 ' + agentType)
845
- rm.textContent = '×'
846
- rm.addEventListener('click', () =>
847
- void this.handleRemoveTeamMember(agentType),
848
- )
849
- chip.appendChild(label)
850
- chip.appendChild(rm)
851
- this.teamChips.appendChild(chip)
852
- }
853
-
854
- if (this.teamPick) {
855
- this.teamPick.innerHTML =
856
- '<option value="">选择要添加的 Agent…</option>'
857
- const types = Array.isArray(catalog) ? catalog : []
858
- for (let j = 0; j < types.length; j++) {
859
- const t = types[j]
860
- const id = String(t.agentType || '').trim()
861
- if (!id || id === leaderId || boundSet.has(id)) continue
862
- const opt = document.createElement('option')
863
- opt.value = id
864
- const whenRaw =
865
- typeof t.whenToUse === 'string'
866
- ? t.whenToUse
867
- : typeof t.whentouse === 'string'
868
- ? t.whentouse
869
- : ''
870
- const when = whenRaw.trim()
871
- opt.textContent = when ? id + ' — ' + when.slice(0, 40) : id
872
- this.teamPick.appendChild(opt)
873
- }
874
- }
875
- }
876
- }
877
-
878
- async handleAddTeamMember() {
879
- const leaderId = this.editingId
880
- if (!leaderId || !this.teamPick) return
881
- const agentType = this.teamPick.value.trim()
882
- if (!agentType) {
883
- this.showToast('请先选择要添加的队员', true)
884
- return
885
- }
886
- try {
887
- const agent = await addTeamMember(leaderId, agentType)
888
- await this.refreshAgents()
889
- const members =
890
- agent && Array.isArray(agent.agentTeamMembers)
891
- ? agent.agentTeamMembers
892
- : this.boundTeamMembers
893
- this.syncBaseConfigFromTeamAgent(agent)
894
- const catalog = await fetchTeamMemberCatalog(leaderId)
895
- this.renderTeamMembers(leaderId, members, catalog)
896
- this.teamPick.value = ''
897
- this.showToast('已添加队员 ' + agentType)
898
- } catch (e) {
899
- this.showToast('添加队员失败: ' + String(e), true)
900
- }
901
- }
902
-
903
- async handleRemoveTeamMember(agentType) {
904
- const leaderId = this.editingId
905
- if (!leaderId) return
906
- if (
907
- !window.confirm('确定移除队员「' + agentType + '」?')
908
- ) {
909
- return
910
- }
911
- try {
912
- const agent = await removeTeamMember(leaderId, agentType)
913
- await this.refreshAgents()
914
- const members =
915
- agent && Array.isArray(agent.agentTeamMembers)
916
- ? agent.agentTeamMembers
917
- : []
918
- this.syncBaseConfigFromTeamAgent(agent)
919
- const catalog = await fetchTeamMemberCatalog(leaderId)
920
- this.renderTeamMembers(leaderId, members, catalog)
921
- this.showToast('已移除队员')
922
- } catch (e) {
923
- this.showToast('移除队员失败: ' + String(e), true)
924
- }
925
- }
926
-
927
- /** 队员增删后同步 baseConfig,避免点「保存」把 agentTeams 写回旧值 */
928
- syncBaseConfigFromTeamAgent(agentRow) {
929
- if (!agentRow || typeof agentRow !== 'object') return
930
- const teams = Array.isArray(agentRow.agentTeams)
931
- ? agentRow.agentTeams.map(String)
932
- : []
933
- if (this.baseConfig && typeof this.baseConfig === 'object') {
934
- this.baseConfig = { ...this.baseConfig, agentTeams: teams }
935
- return
936
- }
937
- this.baseConfig = {
938
- tools: [],
939
- disallowedTools: [],
940
- mcpServers: [],
941
- skills: [],
942
- agentTeams: teams,
943
- model: '',
944
- background: false,
945
- isolation: '',
946
- whentouse: this.whenInput ? this.whenInput.value : '',
947
- env: {},
948
- }
949
- }
950
-
951
- showToast(msg, isError) {
952
- if (!this.toastEl) return
953
- this.toastEl.textContent = msg
954
- this.toastEl.classList.toggle('is-error', !!isError)
955
- this.toastEl.classList.add('is-visible')
956
- clearTimeout(this._toastTimer)
957
- this._toastTimer = setTimeout(() => {
958
- this.toastEl.classList.remove('is-visible')
959
- }, 3200)
960
- }
961
-
962
- hidePanel() {
963
- if (this.panelEl) this.panelEl.classList.remove('is-open')
964
- this.editingId = null
965
- this.baseConfig = null
966
- this.mode = 'idle'
967
- this.renderTeamMembers('', [], [])
968
- this.list.render(this.agents, null)
969
- }
970
-
971
- showPanelForAgent(id) {
972
- if (!this.panelEl) return
973
- this.panelEl.classList.add('is-open')
974
- this.list.render(this.agents, id)
975
- void this.loadAgentIntoForm(id)
976
- }
977
-
978
- showCreateForm() {
979
- if (!this.panelEl || !this.formEl) return
980
- this.panelEl.classList.add('is-open')
981
- this.mode = 'create'
982
- this.editingId = null
983
- this.baseConfig = null
984
- if (this.panelTitleEl) this.panelTitleEl.textContent = '新建 Agent'
985
- if (this.panelMetaEl) {
986
- this.panelMetaEl.textContent = '创建后可从列表进入工作台'
987
- }
988
- if (this.idInput) {
989
- this.idInput.value = ''
990
- this.idInput.readOnly = false
991
- }
992
- if (this.whenInput) this.whenInput.value = ''
993
- if (this.promptInput) this.promptInput.value = ''
994
- if (this.btnDelete) this.btnDelete.disabled = true
995
- if (this.btnWorkbench) this.btnWorkbench.disabled = true
996
- this.renderTeamMembers('', [], [])
997
- this.list.render(this.agents, null)
998
- }
999
-
1000
- async loadAgentIntoForm(id) {
1001
- const agentId = String(id || '').trim()
1002
- if (!agentId) return
1003
- this.mode = 'edit'
1004
- this.editingId = agentId
1005
- if (this.panelTitleEl) this.panelTitleEl.textContent = 'Agent · ' + agentId
1006
- if (this.panelMetaEl) this.panelMetaEl.textContent = '加载中…'
1007
- if (this.btnDelete) {
1008
- this.btnDelete.disabled = false
1009
- }
1010
- if (this.btnWorkbench) this.btnWorkbench.disabled = false
1011
- try {
1012
- const agent = await fetchAgentDetail(agentId, this.contextAgent)
1013
- this.baseConfig =
1014
- agent.config && typeof agent.config === 'object' ? agent.config : null
1015
- if (this.idInput) {
1016
- this.idInput.value = agentId
1017
- this.idInput.readOnly = true
1018
- }
1019
- const whentouse =
1020
- agent.config && typeof agent.config.whentouse === 'string'
1021
- ? agent.config.whentouse
1022
- : typeof agent.whentouse === 'string'
1023
- ? agent.whentouse
1024
- : ''
1025
- if (this.whenInput) this.whenInput.value = whentouse
1026
- if (this.promptInput) {
1027
- this.promptInput.value =
1028
- typeof agent.prompt === 'string' ? agent.prompt : ''
1029
- }
1030
- const members = Array.isArray(agent.agentTeamMembers)
1031
- ? agent.agentTeamMembers
1032
- : []
1033
- const catalog = await fetchTeamMemberCatalog(agentId)
1034
- this.renderTeamMembers(agentId, members, catalog)
1035
- if (this.baseConfig && typeof this.baseConfig === 'object') {
1036
- this.baseConfig.agentTeams = Array.isArray(agent.agentTeams)
1037
- ? agent.agentTeams.map(String)
1038
- : members.map((m) => String(m.agentType || '')).filter(Boolean)
1039
- }
1040
- if (this.panelMetaEl) {
1041
- const teamHint =
1042
- members.length > 0
1043
- ? ' · ' + members.length + ' 名队员'
1044
- : ''
1045
- this.panelMetaEl.textContent =
1046
- '共 ' +
1047
- String(this.agents.length) +
1048
- ' 个 Agent' +
1049
- teamHint
1050
- }
1051
- } catch (e) {
1052
- if (this.panelMetaEl) this.panelMetaEl.textContent = '加载失败'
1053
- this.renderTeamMembers('', [], [])
1054
- this.showToast('加载 Agent 失败: ' + String(e), true)
1055
- }
1056
- }
1057
-
1058
- async refreshAgents() {
1059
- this.agents = await fetchAgentsList()
1060
- this.list.render(this.agents, this.controller.selectedId)
1061
- if (this.hooks.onAgentsLoaded) this.hooks.onAgentsLoaded(this.agents)
1062
- return this.agents
1063
- }
1064
-
1065
- async submitForm() {
1066
- const isEdit = this.mode === 'edit' && !!this.editingId
1067
- const id = isEdit
1068
- ? this.editingId
1069
- : this.idInput
1070
- ? this.idInput.value.trim()
1071
- : ''
1072
- const whentouse = this.whenInput ? this.whenInput.value : ''
1073
- const prompt = this.promptInput ? this.promptInput.value : ''
1074
- if (!isEdit && !isValidAgentIdInput(id)) {
1075
- this.showToast(
1076
- 'Agent ID 仅支持字母、数字、下划线和中划线,长度 1~64',
1077
- true,
1078
- )
1079
- return
1080
- }
1081
- try {
1082
- await saveAgent({
1083
- id,
1084
- whentouse,
1085
- prompt,
1086
- isEdit,
1087
- baseConfig: this.baseConfig,
1088
- contextAgent: this.contextAgent,
1089
- })
1090
- await this.refreshAgents()
1091
- this.mode = 'edit'
1092
- this.editingId = id
1093
- if (this.idInput) {
1094
- this.idInput.value = id
1095
- this.idInput.readOnly = true
1096
- }
1097
- if (this.btnDelete) {
1098
- this.btnDelete.disabled = false
1099
- }
1100
- if (this.btnWorkbench) this.btnWorkbench.disabled = false
1101
- if (this.panelTitleEl) this.panelTitleEl.textContent = 'Agent · ' + id
1102
- this.controller.selectAgent(id)
1103
- this.syncUrlAgentParam(id)
1104
- if (isEdit) {
1105
- await this.loadAgentIntoForm(id)
1106
- } else {
1107
- this.showPanelForAgent(id)
1108
- }
1109
- this.showToast(isEdit ? '已保存' : '已创建')
1110
- } catch (e) {
1111
- this.showToast((isEdit ? '保存失败: ' : '创建失败: ') + String(e), true)
1112
- }
1113
- }
1114
-
1115
- async handleDelete() {
1116
- const id = this.editingId
1117
- if (!id) return
1118
- if (!window.confirm('确定删除 Agent「' + id + '」?此操作不可恢复。')) {
1119
- return
1120
- }
1121
- try {
1122
- await deleteAgent(id)
1123
- await this.refreshAgents()
1124
- this.hidePanel()
1125
- this.clearUrlAgentParam()
1126
- this.showToast('已删除')
1127
- } catch (e) {
1128
- this.showToast('删除失败: ' + String(e), true)
1129
- }
1130
- }
1131
-
1132
- /** 支持通过 ?agent= 深链打开侧栏 */
1133
- async handleUrlAgentParam() {
1134
- let param = ''
1135
- try {
1136
- param = new URLSearchParams(window.location.search).get('agent') || ''
1137
- } catch {
1138
- return
1139
- }
1140
- const id = String(param).trim()
1141
- if (!id) return
1142
-
1143
- const exists = this.agents.some((a) => String(a.id) === id)
1144
- if (!exists) {
1145
- this.showToast('agent 不存在,请先创建', true)
1146
- this.clearUrlAgentParam()
1147
- return
1148
- }
1149
-
1150
- this.controller.selectAgent(id)
1151
- this.showPanelForAgent(id)
1152
- }
1153
-
1154
- syncUrlAgentParam(id) {
1155
- try {
1156
- const u = new URL(window.location.href)
1157
- u.searchParams.set('agent', id)
1158
- window.history.replaceState(null, '', u.pathname + u.search)
1159
- } catch {
1160
- /* ignore */
1161
- }
1162
- }
1163
-
1164
- clearUrlAgentParam() {
1165
- try {
1166
- const u = new URL(window.location.href)
1167
- u.searchParams.delete('agent')
1168
- const qs = u.searchParams.toString()
1169
- window.history.replaceState(null, '', u.pathname + (qs ? '?' + qs : ''))
1170
- } catch {
1171
- /* ignore */
1172
- }
1173
- }
1174
-
1175
- onSelect(id) {
1176
- if (!id) {
1177
- this.hidePanel()
1178
- this.clearUrlAgentParam()
1179
- return
1180
- }
1181
- this.showPanelForAgent(id)
1182
- this.syncUrlAgentParam(id)
1183
- }
1184
- }
1185
-
1186
- /** Agent 列表页入口 */
1187
- async function main() {
1188
- const app = document.getElementById('officeApp')
1189
- const listRoot = document.getElementById('agentListRoot')
1190
- if (!app || !listRoot) return
1191
-
1192
- const controller = new OfficeController()
1193
- const list = new AgentList(listRoot, (id) => controller.selectAgent(id))
1194
-
1195
- const ui = new OfficeUI(app, controller, list, {
1196
- onAgentsLoaded(agents) {
1197
- const subtitle = document.getElementById('officeSubtitle')
1198
- if (subtitle) {
1199
- subtitle.textContent =
1200
- String(agents.length) + ' 个 Agent · 点击列表项管理'
1201
- }
1202
- list.render(agents, controller.selectedId)
1203
- },
1204
- })
1205
-
1206
- controller.onSelect = (id) => ui.onSelect(id)
1207
-
1208
- try {
1209
- await ui.refreshAgents()
1210
- await ui.handleUrlAgentParam()
1211
- } catch (e) {
1212
- ui.showToast('加载 Agent 失败: ' + String(e), true)
1213
- const subtitle = document.getElementById('officeSubtitle')
1214
- if (subtitle) subtitle.textContent = '加载失败'
1215
- }
1216
- }
1217
-
1218
- main().catch((e) => {
1219
- console.error(e)
1220
- })
1221
- })()
1222
- </script>
1223
- </body>
1224
- </html>