@auto-ai/agent 2.1.206 → 2.1.209

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 (504) hide show
  1. package/.env.example +7 -0
  2. package/dist/safe-a/404/index.html +1 -1
  3. package/dist/safe-a/404.html +1 -1
  4. package/dist/safe-a/_next/static/{1fsL4ESu163u3sXFc_243 → Y4PlJTxK6TQphwzXXWsHY}/_buildManifest.js +1 -1
  5. package/dist/safe-a/_next/static/chunks/{0e8139882ad093d2.js → 00b0744649a5e608.js} +1 -1
  6. package/dist/safe-a/_next/static/chunks/00f91b7d88f62204.js +1 -0
  7. package/dist/safe-a/_next/static/chunks/{3bcd531d40d6c019.js → 02339beb679bec8d.js} +1 -1
  8. package/dist/safe-a/_next/static/chunks/{f0cb9b2226c53ef9.js → 025f9752d60b79ce.js} +1 -1
  9. package/dist/safe-a/_next/static/chunks/{1a4b553856a8ffdf.js → 03039556684e9812.js} +1 -1
  10. package/dist/safe-a/_next/static/chunks/{27ff2e69b2fd19e5.js → 03af20498d43b518.js} +1 -1
  11. package/dist/safe-a/_next/static/chunks/03d9139a7df67167.js +1 -0
  12. package/dist/safe-a/_next/static/chunks/{ff12eca45020947a.js → 04ed04c00511a337.js} +1 -1
  13. package/dist/safe-a/_next/static/chunks/{9037530b0f1d5783.js → 0518cc63903bebac.js} +1 -1
  14. package/dist/safe-a/_next/static/chunks/{ea2a84258a02d5c5.js → 05ac495e860ba7c2.js} +1 -1
  15. package/dist/safe-a/_next/static/chunks/0699439b4e026cf9.js +5 -0
  16. package/dist/safe-a/_next/static/chunks/{e96518d9cb5cbe1e.js → 06a64fef342a5832.js} +1 -1
  17. package/dist/safe-a/_next/static/chunks/{32b4d63e10d31351.js → 06e2cd3fae94aae8.js} +1 -1
  18. package/dist/safe-a/_next/static/chunks/{af7b0bd1b40ad066.js → 0708a65cc3ecf56b.js} +1 -1
  19. package/dist/safe-a/_next/static/chunks/{966fb5830ce1029c.js → 093669121f3b7aa1.js} +1 -1
  20. package/dist/safe-a/_next/static/chunks/{55087cc98e6237f1.js → 0c19efa935cdd816.js} +1 -1
  21. package/dist/safe-a/_next/static/chunks/0d0a0fd8bc7c5154.js +1 -0
  22. package/dist/safe-a/_next/static/chunks/{e7bcbeb465fa49cf.js → 0d7d0d2beb29f175.js} +1 -1
  23. package/dist/safe-a/_next/static/chunks/{d599ef4d0f84a93d.js → 0e68cace7cf0464c.js} +1 -1
  24. package/dist/safe-a/_next/static/chunks/{73cbf0064096e28c.js → 0f93a62e5e2db48b.js} +1 -1
  25. package/dist/safe-a/_next/static/chunks/1116b1064a071974.js +1 -0
  26. package/dist/safe-a/_next/static/chunks/{16ea1d3cf6db8a53.js → 12932eb7d288b09b.js} +1 -1
  27. package/dist/safe-a/_next/static/chunks/{b360c9fc22dbf831.js → 129875fd1b096964.js} +1 -1
  28. package/dist/safe-a/_next/static/chunks/{facb82117d49a6e1.js → 1386362cdfd92116.js} +1 -1
  29. package/dist/safe-a/_next/static/chunks/{2df3e464b6247e75.js → 1409701c73ffe517.js} +1 -1
  30. package/dist/safe-a/_next/static/chunks/{d5e3d29f769997cc.js → 18570009118a0e76.js} +1 -1
  31. package/dist/safe-a/_next/static/chunks/{fb0f4d868b87961b.js → 18e062f9f23f27c0.js} +1 -1
  32. package/dist/safe-a/_next/static/chunks/19023abd5e1bf1d1.js +1 -0
  33. package/dist/safe-a/_next/static/chunks/{413a7be096275d7f.js → 19a47cfc8ca4c0a7.js} +1 -1
  34. package/dist/safe-a/_next/static/chunks/1a900b3c5a00d59b.js +1 -0
  35. package/dist/safe-a/_next/static/chunks/{d729414ff836cd53.js → 1a91a01fbaf01e7e.js} +1 -1
  36. package/dist/safe-a/_next/static/chunks/{6ae709c575c74979.js → 1aaf9fb00fb53ef9.js} +1 -1
  37. package/dist/safe-a/_next/static/chunks/1b739dfdbcce05bd.js +1 -0
  38. package/dist/safe-a/_next/static/chunks/1d0273aae0bc102c.js +1 -0
  39. package/dist/safe-a/_next/static/chunks/{6522643341a0921c.js → 1d737ed6e08d2466.js} +1 -1
  40. package/dist/safe-a/_next/static/chunks/1df41f8d439107ef.js +1 -0
  41. package/dist/safe-a/_next/static/chunks/{5a3e355216280144.js → 1f90e84b5a4dad81.js} +1 -1
  42. package/dist/safe-a/_next/static/chunks/1faaa282be969b14.js +1 -0
  43. package/dist/safe-a/_next/static/chunks/{a6a98f9278704b6a.js → 217c50478c5ea4d7.js} +1 -1
  44. package/dist/safe-a/_next/static/chunks/{e3fe320ec1b8f889.js → 232cc01daaf29e5d.js} +1 -1
  45. package/dist/safe-a/_next/static/chunks/{a5df6158856685f1.js → 2331e2a388a9bd50.js} +1 -1
  46. package/dist/safe-a/_next/static/chunks/{170f7361bd4d33e2.js → 23f50ba74d421ab3.js} +1 -1
  47. package/dist/safe-a/_next/static/chunks/{cd0e7e3cc303b4e4.js → 261bf96e2331ea0a.js} +1 -1
  48. package/dist/safe-a/_next/static/chunks/{f36595b9995a49a9.js → 27b3d30516d46fc8.js} +1 -1
  49. package/dist/safe-a/_next/static/chunks/27d9a47efb23fd17.js +1 -0
  50. package/dist/safe-a/_next/static/chunks/{fa39b9f8bced4bcd.js → 2854919e0953bd0d.js} +1 -1
  51. package/dist/safe-a/_next/static/chunks/29105a13d179d5b2.js +1 -0
  52. package/dist/safe-a/_next/static/chunks/29403b19d94e37bb.js +1 -0
  53. package/dist/safe-a/_next/static/chunks/{3934bd57f459566e.js → 29a317486c4ab7d7.js} +1 -1
  54. package/dist/safe-a/_next/static/chunks/{6cc2f7f962cdd082.js → 29cf9e89be8a7f75.js} +1 -1
  55. package/dist/safe-a/_next/static/chunks/29f39316c32518a2.js +1 -0
  56. package/dist/safe-a/_next/static/chunks/2a07e0d1ef712b41.js +1 -0
  57. package/dist/safe-a/_next/static/chunks/2b38c2b26760e4cb.js +1 -0
  58. package/dist/safe-a/_next/static/chunks/2bb180b50bafe979.js +1 -0
  59. package/dist/safe-a/_next/static/chunks/{1e43922998a0ed2f.js → 2bd512c6acf9ee9b.js} +1 -1
  60. package/dist/safe-a/_next/static/chunks/{2c6d585a97629311.js → 2be2d49054d4606c.js} +1 -1
  61. package/dist/safe-a/_next/static/chunks/{6c3b2d0be1c633b6.js → 2c0b2fd9fb2fea66.js} +1 -1
  62. package/dist/safe-a/_next/static/chunks/{35f1637c2feb232d.js → 2ccdfcf9ecfa2ea8.js} +1 -1
  63. package/dist/safe-a/_next/static/chunks/2ce249001ad95013.js +1 -0
  64. package/dist/safe-a/_next/static/chunks/{cd5eec7d305aa041.js → 2f104b4be1990722.js} +1 -1
  65. package/dist/safe-a/_next/static/chunks/{7f6e82ac63db5eff.js → 2f35f32799fb08ac.js} +1 -1
  66. package/dist/safe-a/_next/static/chunks/{eb9ae8e95cac1197.js → 30c0274cb379ab0d.js} +1 -1
  67. package/dist/safe-a/_next/static/chunks/{3b2bb9f17546ee3e.js → 30f37e8e02339538.js} +1 -1
  68. package/dist/safe-a/_next/static/chunks/{7dd32128bdee61f7.js → 31c93ba513dea5e7.js} +1 -1
  69. package/dist/safe-a/_next/static/chunks/{d82740475fc07e98.js → 333630802bd6f1a6.js} +1 -1
  70. package/dist/safe-a/_next/static/chunks/33e878df066811db.js +1 -0
  71. package/dist/safe-a/_next/static/chunks/{94029062f236cadc.js → 3422b2c2f9bdf0e0.js} +1 -1
  72. package/dist/safe-a/_next/static/chunks/{f235a8df2f905e6a.js → 36897fabf62bf445.js} +1 -1
  73. package/dist/safe-a/_next/static/chunks/37615c61dd14fc8d.js +1 -0
  74. package/dist/safe-a/_next/static/chunks/37e4ac5f3654a688.js +1 -0
  75. package/dist/safe-a/_next/static/chunks/{b66afb4b0be97af8.js → 37f3ea0b3cf40bca.js} +1 -1
  76. package/dist/safe-a/_next/static/chunks/38d88de54642e44e.js +1 -0
  77. package/dist/safe-a/_next/static/chunks/{9f0ee4783140adf1.js → 38dcdbfb8c6966a9.js} +1 -1
  78. package/dist/safe-a/_next/static/chunks/38decd5cd3fe2525.js +1 -0
  79. package/dist/safe-a/_next/static/chunks/{bbaef90b0ce43019.js → 38e76abda882c1a8.js} +1 -1
  80. package/dist/safe-a/_next/static/chunks/39fc6ad79e44f4df.js +1 -0
  81. package/dist/safe-a/_next/static/chunks/{f1f911d553a62027.js → 3b0acee8a8035ee7.js} +1 -1
  82. package/dist/safe-a/_next/static/chunks/{fb2f1266493dd820.js → 3d9ee9c4bc8e29b2.js} +1 -1
  83. package/dist/safe-a/_next/static/chunks/{3ec05a61e93547d3.js → 3da255bcf22e013d.js} +1 -1
  84. package/dist/safe-a/_next/static/chunks/{6d4209e94b1aafe6.js → 3e45de4a81d1f7a6.js} +1 -1
  85. package/dist/safe-a/_next/static/chunks/3ecc6705303560ea.js +1 -0
  86. package/dist/safe-a/_next/static/chunks/3efccd72f964d9d3.js +1 -0
  87. package/dist/safe-a/_next/static/chunks/{1078bc1642db53ad.js → 3f18c3fa64301e74.js} +1 -1
  88. package/dist/safe-a/_next/static/chunks/{cfd9aff2dcf3adb9.js → 3f74431cdf49e5e1.js} +1 -1
  89. package/dist/safe-a/_next/static/chunks/3fe95be4b92470e2.js +1 -0
  90. package/dist/safe-a/_next/static/chunks/{ef51763a796dde8b.js → 404f44571be80b78.js} +1 -1
  91. package/dist/safe-a/_next/static/chunks/{b65565677c3e8c0a.js → 405cd8dd7faa6eaf.js} +1 -1
  92. package/dist/safe-a/_next/static/chunks/4064e59727cba9b0.js +1 -0
  93. package/dist/safe-a/_next/static/chunks/{bbcf9daa108b22fb.js → 43392297dd43555d.js} +1 -1
  94. package/dist/safe-a/_next/static/chunks/{459d401d9f9e5b9f.js → 435e18828af1d066.js} +1 -1
  95. package/dist/safe-a/_next/static/chunks/44e9e0394b7b6f31.js +1 -0
  96. package/dist/safe-a/_next/static/chunks/{9cb28a1dacb7ea6d.js → 46568a8bad984d09.js} +1 -1
  97. package/dist/safe-a/_next/static/chunks/{caf4049dc563940e.js → 47098fcba8e98974.js} +1 -1
  98. package/dist/safe-a/_next/static/chunks/{3e9c98df7d56e9b2.js → 472047ea96adfca5.js} +1 -1
  99. package/dist/safe-a/_next/static/chunks/{e04bace22e04d63c.js → 473249ae7830085a.js} +1 -1
  100. package/dist/safe-a/_next/static/chunks/{cccecf726769787f.js → 47d485f30e419da8.js} +1 -1
  101. package/dist/safe-a/_next/static/chunks/4ae2c56fab8c060d.js +1 -0
  102. package/dist/safe-a/_next/static/chunks/{f659a364f48244ea.js → 4c19e1ee54dac526.js} +1 -1
  103. package/dist/safe-a/_next/static/chunks/{c2546d2b493dd907.js → 4c87634b39751c56.js} +1 -1
  104. package/dist/safe-a/_next/static/chunks/4ca36e3fb45c2e71.js +1 -0
  105. package/dist/safe-a/_next/static/chunks/4cd41b402679f77d.js +1 -0
  106. package/dist/safe-a/_next/static/chunks/4d97363bb1a6633d.js +1 -0
  107. package/dist/safe-a/_next/static/chunks/{fa5b61b8e7219fe6.js → 4df5dd4e3c591164.js} +1 -1
  108. package/dist/safe-a/_next/static/chunks/{32b9bdd82a961878.js → 4f55f5dfceddc1fe.js} +1 -1
  109. package/dist/safe-a/_next/static/chunks/{d8af8dadd0889c71.js → 502779251884e330.js} +1 -1
  110. package/dist/safe-a/_next/static/chunks/{62d925bcc8518b6f.js → 503bbec2e3179a3c.js} +1 -1
  111. package/dist/safe-a/_next/static/chunks/{736441266ceb14e2.js → 5076e29ddf662e81.js} +1 -1
  112. package/dist/safe-a/_next/static/chunks/{d9b92ed2d544fca5.js → 50c602f1b79d61a7.js} +1 -1
  113. package/dist/safe-a/_next/static/chunks/{e4973ad5c183f17a.js → 50cbc92b0512838a.js} +1 -1
  114. package/dist/safe-a/_next/static/chunks/50f270f87470ca73.js +1 -0
  115. package/dist/safe-a/_next/static/chunks/5385bf74559eeabd.js +1 -0
  116. package/dist/safe-a/_next/static/chunks/54169c1554845574.js +1 -0
  117. package/dist/safe-a/_next/static/chunks/{644aa76620718c98.js → 547eb82208058c71.js} +1 -1
  118. package/dist/safe-a/_next/static/chunks/{13f94fc3dda88c90.js → 54a2df4508a1c311.js} +1 -1
  119. package/dist/safe-a/_next/static/chunks/54ce15edde8ce98c.js +1 -0
  120. package/dist/safe-a/_next/static/chunks/{95c4d26e469d1d8f.js → 55e32e78e4db3889.js} +1 -1
  121. package/dist/safe-a/_next/static/chunks/{d09636e7bcf60ad1.js → 564507763428bfb0.js} +1 -1
  122. package/dist/safe-a/_next/static/chunks/{560ca23f77c0e819.js → 569dda34679bca70.js} +1 -1
  123. package/dist/safe-a/_next/static/chunks/{cba2741f84ef36ed.js → 57bc9169370081d7.js} +1 -1
  124. package/dist/safe-a/_next/static/chunks/{19584f955475ce91.js → 57e13ec897ff78d6.js} +1 -1
  125. package/dist/safe-a/_next/static/chunks/{27c407347ce26b78.js → 591fe54d06e0a33e.js} +1 -1
  126. package/dist/safe-a/_next/static/chunks/592e7a6b713dc645.js +1 -0
  127. package/dist/safe-a/_next/static/chunks/599abea9ac64aaf1.js +1 -0
  128. package/dist/safe-a/_next/static/chunks/{c5b5aba98d38ef23.js → 5a43f7cd89a42167.js} +1 -1
  129. package/dist/safe-a/_next/static/chunks/{ee79511740d19885.js → 5ad5a5ee1cc648ae.js} +1 -1
  130. package/dist/safe-a/_next/static/chunks/5ae21c9105c6abb4.js +1 -0
  131. package/dist/safe-a/_next/static/chunks/{71e3a90489469c28.js → 5c076874caf0532e.js} +1 -1
  132. package/dist/safe-a/_next/static/chunks/{55f8de91b4803778.js → 5c2a7e118fa66960.js} +1 -1
  133. package/dist/safe-a/_next/static/chunks/{75a396e1752cd59d.js → 5ca0c9bb26daf732.js} +1 -1
  134. package/dist/safe-a/_next/static/chunks/{c933951b3113492f.js → 5e4225518ccc365e.js} +1 -1
  135. package/dist/safe-a/_next/static/chunks/{70459a2a4c45653e.js → 6349c7cf3b394b81.js} +1 -1
  136. package/dist/safe-a/_next/static/chunks/{5a4c198fd41e8ec4.js → 63f33483697b26ca.js} +1 -1
  137. package/dist/safe-a/_next/static/chunks/{6b7c3c962a14dc29.js → 645741ee91707763.js} +1 -1
  138. package/dist/safe-a/_next/static/chunks/{5a0b630678282d4f.js → 648649ebbc7565b9.js} +1 -1
  139. package/dist/safe-a/_next/static/chunks/{a37aa474433d29e3.js → 65159d9aa3ecc0c9.js} +1 -1
  140. package/dist/safe-a/_next/static/chunks/{588e6975a7bd6671.js → 65963496d7fa49bc.js} +1 -1
  141. package/dist/safe-a/_next/static/chunks/{3ae4e2529aa621fb.js → 65ee07c4b6209141.js} +1 -1
  142. package/dist/safe-a/_next/static/chunks/{2fab2306850ac97b.js → 66247e9b3cf471f5.js} +1 -1
  143. package/dist/safe-a/_next/static/chunks/{8deb0392842e5a01.js → 6818b9385873d081.js} +1 -1
  144. package/dist/safe-a/_next/static/chunks/68255bcd6345edfd.js +1 -0
  145. package/dist/safe-a/_next/static/chunks/68f27d4f860d8f88.js +1 -0
  146. package/dist/safe-a/_next/static/chunks/6960a33147147a27.js +1 -0
  147. package/dist/safe-a/_next/static/chunks/{648b653b36802fdc.js → 6d0bf0ac1fdb7eab.js} +1 -1
  148. package/dist/safe-a/_next/static/chunks/{57bb853857f3de83.js → 6e145bea7acc82b4.js} +1 -1
  149. package/dist/safe-a/_next/static/chunks/{c6cc32860b96278f.js → 6e4e92cbcf961542.js} +1 -1
  150. package/dist/safe-a/_next/static/chunks/{aa0a4c596151b22b.js → 6e663a2e3562125c.js} +1 -1
  151. package/dist/safe-a/_next/static/chunks/{a7277c96f3669bea.js → 6ecccb36549d3028.js} +1 -1
  152. package/dist/safe-a/_next/static/chunks/6f6140cbad7cdeea.js +1 -0
  153. package/dist/safe-a/_next/static/chunks/6faa53698dc67904.js +1 -0
  154. package/dist/safe-a/_next/static/chunks/{bf2262100cea8c64.js → 6fc97877fbcf3403.js} +1 -1
  155. package/dist/safe-a/_next/static/chunks/{0fa097a572705cfa.js → 70b95d96e33a5d63.js} +1 -1
  156. package/dist/safe-a/_next/static/chunks/{b81c0c834a36e7e9.js → 713b097e1a0b340b.js} +1 -1
  157. package/dist/safe-a/_next/static/chunks/727dc45d24782155.js +1 -0
  158. package/dist/safe-a/_next/static/chunks/{7fd45fb9cf0995f3.js → 738c808ddc82ea44.js} +1 -1
  159. package/dist/safe-a/_next/static/chunks/{715c085d7c10eeda.js → 740732a162598c49.js} +1 -1
  160. package/dist/safe-a/_next/static/chunks/74d8d2b653f61b70.js +1 -0
  161. package/dist/safe-a/_next/static/chunks/7562ab6463e9fc3f.js +1 -0
  162. package/dist/safe-a/_next/static/chunks/{692e7ee14236fefb.js → 774e554c11c8759a.js} +1 -1
  163. package/dist/safe-a/_next/static/chunks/784ee151431c6634.js +1 -0
  164. package/dist/safe-a/_next/static/chunks/7afa34c1dc058648.js +1 -0
  165. package/dist/safe-a/_next/static/chunks/7b34873e2b22211d.js +1 -0
  166. package/dist/safe-a/_next/static/chunks/{354aaa2e36b75b81.js → 7b6898a7f9df6495.js} +1 -1
  167. package/dist/safe-a/_next/static/chunks/7bd04dff1e0d3a01.js +1 -0
  168. package/dist/safe-a/_next/static/chunks/{5798600d2ea8a3e8.js → 7c2d68248d759f50.js} +1 -1
  169. package/dist/safe-a/_next/static/chunks/{f813c3d77459119f.js → 7c4b1ab5c0f1b167.js} +1 -1
  170. package/dist/safe-a/_next/static/chunks/7cadf95d4932deec.js +1 -0
  171. package/dist/safe-a/_next/static/chunks/7ccd9e31b61da21f.js +1 -0
  172. package/dist/safe-a/_next/static/chunks/{0b69dba7f1e63f30.js → 7cd0d9159e722599.js} +1 -1
  173. package/dist/safe-a/_next/static/chunks/{d3990c1e87ef3e23.js → 7d7ef3758ed7347b.js} +1 -1
  174. package/dist/safe-a/_next/static/chunks/7e2887a3269dfc01.js +1 -0
  175. package/dist/safe-a/_next/static/chunks/{d69b21102305d19e.js → 7e5b28d162f1ea9d.js} +1 -1
  176. package/dist/safe-a/_next/static/chunks/{37cfaa4963ac51f3.js → 7ed753f2db91bc38.js} +1 -1
  177. package/dist/safe-a/_next/static/chunks/7f167fb0dbc03180.js +1 -0
  178. package/dist/safe-a/_next/static/chunks/{d33e49aabd798892.js → 7f611b9b215dfcef.js} +1 -1
  179. package/dist/safe-a/_next/static/chunks/80bd106b26a076af.js +1 -0
  180. package/dist/safe-a/_next/static/chunks/826c64c8601264b1.js +1 -0
  181. package/dist/safe-a/_next/static/chunks/{65fb49c8a7f59842.js → 829196dbf7eddb51.js} +1 -1
  182. package/dist/safe-a/_next/static/chunks/{b429be4e16fa1e00.js → 82aea21a16d00076.js} +1 -1
  183. package/dist/safe-a/_next/static/chunks/{c3669d468d3f2b3a.js → 82cdf7e6dbe7070d.js} +1 -1
  184. package/dist/safe-a/_next/static/chunks/8465e859bae24fbd.js +1 -0
  185. package/dist/safe-a/_next/static/chunks/84e8e1e50a6b3ab7.js +1 -0
  186. package/dist/safe-a/_next/static/chunks/{f1e5e295d4db5c0f.js → 868f60fa1a2ff26b.js} +1 -1
  187. package/dist/safe-a/_next/static/chunks/{88a999988f915988.js → 86c0a63bf95598a3.js} +1 -1
  188. package/dist/safe-a/_next/static/chunks/{1bb28f71c19fa824.js → 878dd96f8fcd6bd4.js} +1 -1
  189. package/dist/safe-a/_next/static/chunks/87b0002602934525.js +1 -0
  190. package/dist/safe-a/_next/static/chunks/882686dd3b63f9d1.js +1 -0
  191. package/dist/safe-a/_next/static/chunks/88e4cdcdeff36154.js +1 -0
  192. package/dist/safe-a/_next/static/chunks/{67c9db5577080125.js → 8aafb8ec5208a445.js} +1 -1
  193. package/dist/safe-a/_next/static/chunks/{1d3e7886be9f671c.js → 8b1990cf2eb41663.js} +1 -1
  194. package/dist/safe-a/_next/static/chunks/8c8b1e40b00409f5.js +1 -0
  195. package/dist/safe-a/_next/static/chunks/{61ce261738313b8a.js → 8c97e3b556b32001.js} +1 -1
  196. package/dist/safe-a/_next/static/chunks/{2326118ef1328bc5.js → 8cee526b3846c40b.js} +1 -1
  197. package/dist/safe-a/_next/static/chunks/{a6737fc58619eae5.js → 8d76667bd2633e46.js} +1 -1
  198. package/dist/safe-a/_next/static/chunks/{8bdc142fad5847ed.js → 8e33e395e6224908.js} +1 -1
  199. package/dist/safe-a/_next/static/chunks/{fdfce6fa0b958336.js → 8ead3da37182ce4c.js} +1 -1
  200. package/dist/safe-a/_next/static/chunks/{e61019aedfdf554e.js → 8ebfebffa66b3ca7.js} +1 -1
  201. package/dist/safe-a/_next/static/chunks/913de10eeb8a88d9.js +1 -0
  202. package/dist/safe-a/_next/static/chunks/92c1de3b7b8ff353.js +1 -0
  203. package/dist/safe-a/_next/static/chunks/{1b55c29b8cad4a50.js → 93588b2335ca95de.js} +1 -1
  204. package/dist/safe-a/_next/static/chunks/{19c1491e85e22b3b.js → 948dc342d4746ffc.js} +1 -1
  205. package/dist/safe-a/_next/static/chunks/{37bbbf907196a5bf.js → 94d40dcd515ca4ad.js} +1 -1
  206. package/dist/safe-a/_next/static/chunks/{72ef1696f44fcf61.js → 957b35b92a00be9d.js} +1 -1
  207. package/dist/safe-a/_next/static/chunks/{5fc8a5235ddfa787.js → 9583c5cc3861200c.js} +1 -1
  208. package/dist/safe-a/_next/static/chunks/{1818d7a661948f6b.js → 966730983f55a7c6.js} +1 -1
  209. package/dist/safe-a/_next/static/chunks/{13b54d70a1ee1de7.js → 967dfe61a543e533.js} +1 -1
  210. package/dist/safe-a/_next/static/chunks/{2fcc6298b6dd7a82.js → 9721e6d173bcda17.js} +1 -1
  211. package/dist/safe-a/_next/static/chunks/{53be52c43a14557c.js → 97d506a00590396c.js} +1 -1
  212. package/dist/safe-a/_next/static/chunks/{c986c8a9aca6f35a.js → 98a2db7a6b8d43c0.js} +1 -1
  213. package/dist/safe-a/_next/static/chunks/{092c97532613af2a.js → 9924bd3807982f9c.js} +1 -1
  214. package/dist/safe-a/_next/static/chunks/996147dc11d8e745.js +1 -0
  215. package/dist/safe-a/_next/static/chunks/{c725524ea13a50ab.js → 997894582876b3bb.js} +1 -1
  216. package/dist/safe-a/_next/static/chunks/{8f038ff914c4b0df.js → 99ce8e2a747001a9.js} +1 -1
  217. package/dist/safe-a/_next/static/chunks/9a5e8d11c09774ed.js +1 -0
  218. package/dist/safe-a/_next/static/chunks/{d47cd27ac08f5429.js → 9a63abc493c1c840.js} +1 -1
  219. package/dist/safe-a/_next/static/chunks/{7d3bf918bccde738.js → 9ae8f05f80dedfa4.js} +1 -1
  220. package/dist/safe-a/_next/static/chunks/{a9fed5c43d754a96.js → 9b0ac8da8e1c0d7e.js} +1 -1
  221. package/dist/safe-a/_next/static/chunks/{e0c76ff7114dc8dc.js → 9b94620a86d2a1c2.js} +1 -1
  222. package/dist/safe-a/_next/static/chunks/{d842d30dcb0f50a9.js → 9bedfcbe8f9ff43f.js} +1 -1
  223. package/dist/safe-a/_next/static/chunks/{b78822282754a47c.js → 9d65a2db77bf6c63.js} +1 -1
  224. package/dist/safe-a/_next/static/chunks/{dc2186b66132ca97.js → 9d8fff267f5576eb.js} +1 -1
  225. package/dist/safe-a/_next/static/chunks/{481a2858f7df907d.js → 9db0d8129d6b7b5e.js} +1 -1
  226. package/dist/safe-a/_next/static/chunks/{c1615032cbbf5b56.js → 9de7a5feb6be8bc3.js} +1 -1
  227. package/dist/safe-a/_next/static/chunks/{b24e3802454a5567.js → 9e9339584dbc8172.js} +1 -1
  228. package/dist/safe-a/_next/static/chunks/{f50fd84e477dbaeb.js → 9f7b593a28b4dbe4.js} +1 -1
  229. package/dist/safe-a/_next/static/chunks/9f8b67e210121299.js +1 -0
  230. package/dist/safe-a/_next/static/chunks/{108a0b77418f1d31.js → a0256e00bbdc334c.js} +1 -1
  231. package/dist/safe-a/_next/static/chunks/{84185f4bb07ccbd7.js → a12eeb7c77a7506f.js} +1 -1
  232. package/dist/safe-a/_next/static/chunks/a333240ca95e9cf9.js +1 -0
  233. package/dist/safe-a/_next/static/chunks/{5ea79c109cbe8a86.js → a367a4ab4b91ce6b.js} +1 -1
  234. package/dist/safe-a/_next/static/chunks/{2046937bffedf074.js → a39dba23f5098cde.js} +1 -1
  235. package/dist/safe-a/_next/static/chunks/{3a947667fddbdd53.js → a3af4dcdb725b47f.js} +1 -1
  236. package/dist/safe-a/_next/static/chunks/{fd3d43eb8557ee49.js → a4ab363af889263f.js} +1 -1
  237. package/dist/safe-a/_next/static/chunks/a4b35c64097aeb05.js +1 -0
  238. package/dist/safe-a/_next/static/chunks/a6fda6a41633eb93.js +1 -0
  239. package/dist/safe-a/_next/static/chunks/{19ca17e5015c42a3.js → a8696c4a576878ae.js} +1 -1
  240. package/dist/safe-a/_next/static/chunks/a86fedb173944e90.js +1 -0
  241. package/dist/safe-a/_next/static/chunks/a9a12415c8875ad5.js +1 -0
  242. package/dist/safe-a/_next/static/chunks/{04c9439163b67552.js → aa34ec2d74f7775c.js} +1 -1
  243. package/dist/safe-a/_next/static/chunks/{9724567275720686.js → aa8c7d3d99a14fdb.js} +1 -1
  244. package/dist/safe-a/_next/static/chunks/{01766c1e2fdff227.js → ab522ef4566e28db.js} +1 -1
  245. package/dist/safe-a/_next/static/chunks/ab91b57996557cd5.js +1 -0
  246. package/dist/safe-a/_next/static/chunks/{ebb0ee69f6a7883e.js → abf043c7dd51a07b.js} +1 -1
  247. package/dist/safe-a/_next/static/chunks/ac0062f74360e8a1.js +1 -0
  248. package/dist/safe-a/_next/static/chunks/{4a340ea4ac145216.js → ad22e1613386ba8d.js} +1 -1
  249. package/dist/safe-a/_next/static/chunks/{68bd2bd64624e20d.js → ada2807c297fe674.js} +1 -1
  250. package/dist/safe-a/_next/static/chunks/{751de74a23cc9036.js → ae1404fdd6ec935a.js} +1 -1
  251. package/dist/safe-a/_next/static/chunks/{3520f1af0a1b7f66.js → ae7e9c73a1d653fd.js} +1 -1
  252. package/dist/safe-a/_next/static/chunks/{0ce6504fc10ce408.js → af07509fa7bac8c4.js} +1 -1
  253. package/dist/safe-a/_next/static/chunks/{242529c986baeb00.js → afab34a5bb437673.js} +1 -1
  254. package/dist/safe-a/_next/static/chunks/{98e243fb5992a71c.js → aff6654f4fbc26b0.js} +1 -1
  255. package/dist/safe-a/_next/static/chunks/{87e12ecbe9521f9b.js → b0638abf4a6eb85f.js} +1 -1
  256. package/dist/safe-a/_next/static/chunks/b08f1ee81b569c60.js +1 -0
  257. package/dist/safe-a/_next/static/chunks/b0f0f19c125de544.js +1 -0
  258. package/dist/safe-a/_next/static/chunks/{6f4460bd0b8a57af.js → b4d570502774dffb.js} +1 -1
  259. package/dist/safe-a/_next/static/chunks/{9078ad91aa20dca0.js → b4db35dceb9577e1.js} +1 -1
  260. package/dist/safe-a/_next/static/chunks/b594aa86704b6429.js +1 -0
  261. package/dist/safe-a/_next/static/chunks/{96026b5eb5d2566b.js → b717d3610f87602f.js} +1 -1
  262. package/dist/safe-a/_next/static/chunks/b882523826ac1c83.js +1 -0
  263. package/dist/safe-a/_next/static/chunks/{d715e874b8ee8540.js → b92da682bccc569b.js} +1 -1
  264. package/dist/safe-a/_next/static/chunks/{ea36a5ae7c6ce34f.js → b9b23fa418eacd67.js} +1 -1
  265. package/dist/safe-a/_next/static/chunks/{3fd03b9ed21b30fc.js → c013a3a3b1574b7d.js} +1 -1
  266. package/dist/safe-a/_next/static/chunks/{179a5dac78ab2cb9.js → c0960892f67b4256.js} +1 -1
  267. package/dist/safe-a/_next/static/chunks/c2a354d059dc2745.js +1 -0
  268. package/dist/safe-a/_next/static/chunks/{9e96c84b86d1bbf3.js → c2e5be103cef6113.js} +1 -1
  269. package/dist/safe-a/_next/static/chunks/c3bcc6eb84ed7d30.js +1 -0
  270. package/dist/safe-a/_next/static/chunks/{106955e3cc6a6843.js → c43009f5a3f83289.js} +1 -1
  271. package/dist/safe-a/_next/static/chunks/{6f3afa83656eab67.js → c43f94053172eb84.js} +1 -1
  272. package/dist/safe-a/_next/static/chunks/{2ec6d7ddb4c04987.js → c537d051140acc61.js} +1 -1
  273. package/dist/safe-a/_next/static/chunks/{c15069059c9d1f53.js → c5932397b84e3c27.js} +1 -1
  274. package/dist/safe-a/_next/static/chunks/{f0d9f0621f8ec46d.js → c5b0f8f27c2db9f1.js} +1 -1
  275. package/dist/safe-a/_next/static/chunks/{7137c7537c459c31.js → c5fd875d1d9fd6c4.js} +1 -1
  276. package/dist/safe-a/_next/static/chunks/c6bad34be1aacd05.js +5 -0
  277. package/dist/safe-a/_next/static/chunks/{4df298f5b420f474.js → c84ea2dc8d3281e6.js} +1 -1
  278. package/dist/safe-a/_next/static/chunks/{e5275dcacbabc3e3.js → c8b301b059ee1946.js} +1 -1
  279. package/dist/safe-a/_next/static/chunks/c9204488e115fc38.js +1 -0
  280. package/dist/safe-a/_next/static/chunks/c9527036b1a95d19.js +1 -0
  281. package/dist/safe-a/_next/static/chunks/ca31fc9ca02421c7.js +1 -0
  282. package/dist/safe-a/_next/static/chunks/{f9cb4b70f67c86d8.js → cac08e0e891f58d2.js} +1 -1
  283. package/dist/safe-a/_next/static/chunks/{bd984c5404403e7d.js → cb8a82631d87b798.js} +1 -1
  284. package/dist/safe-a/_next/static/chunks/{303d9c2a2c956f25.js → ccbe0fe39b523768.js} +1 -1
  285. package/dist/safe-a/_next/static/chunks/{7aa69fd5d97b7146.js → cd733da27bed8af2.js} +1 -1
  286. package/dist/safe-a/_next/static/chunks/{66ed07a735eac6e3.js → cf99b249b986e2bd.js} +1 -1
  287. package/dist/safe-a/_next/static/chunks/{72a56bd75075fd83.js → d0d06ea64246c2e0.js} +1 -1
  288. package/dist/safe-a/_next/static/chunks/{da346aeed70dd39a.js → d147ab3cf51edc42.js} +1 -1
  289. package/dist/safe-a/_next/static/chunks/d1e3d3d09ff4ed38.js +1 -0
  290. package/dist/safe-a/_next/static/chunks/d2644966a8736893.js +1 -0
  291. package/dist/safe-a/_next/static/chunks/d2b5664aa6eb613c.js +1 -0
  292. package/dist/safe-a/_next/static/chunks/{1e17456ccebc9cd2.js → d2bba4dbd6e24f7e.js} +1 -1
  293. package/dist/safe-a/_next/static/chunks/d3072ff0f4d0f613.js +1 -0
  294. package/dist/safe-a/_next/static/chunks/{de0ee516f6a1aa07.js → d3fc1847f85d724b.js} +1 -1
  295. package/dist/safe-a/_next/static/chunks/{b69f987a60b05db3.js → d53ff6336a32e4c5.js} +1 -1
  296. package/dist/safe-a/_next/static/chunks/{1fec17d16aff9eed.js → d653880800910810.js} +1 -1
  297. package/dist/safe-a/_next/static/chunks/d6c35821582ac6a8.js +1 -0
  298. package/dist/safe-a/_next/static/chunks/d78975cda9119543.js +1 -0
  299. package/dist/safe-a/_next/static/chunks/{ebcbb5070eb8e29f.js → d84ed83f568f41c6.js} +1 -1
  300. package/dist/safe-a/_next/static/chunks/{a1b9abf15c0f7655.js → d9bf3f0f6088ac8c.js} +1 -1
  301. package/dist/safe-a/_next/static/chunks/{5ee72092303043ef.js → daaffc256846db90.js} +1 -1
  302. package/dist/safe-a/_next/static/chunks/{40cc0252b2f1d855.js → dabd2cc5e900d556.js} +1 -1
  303. package/dist/safe-a/_next/static/chunks/dbf36b536a6c59ef.js +1 -0
  304. package/dist/safe-a/_next/static/chunks/{e11d4fd8de65621d.js → dc7f280eee64d574.js} +1 -1
  305. package/dist/safe-a/_next/static/chunks/{69cfdbc51cf2d3c3.js → dcdc329f64f1a7a8.js} +1 -1
  306. package/dist/safe-a/_next/static/chunks/{f42d74f288f2229c.js → dd03bb14e8e590f0.js} +1 -1
  307. package/dist/safe-a/_next/static/chunks/{d2d432a9facf4278.js → dd59d0e313916320.js} +1 -1
  308. package/dist/safe-a/_next/static/chunks/{b3e79c76be269ccc.js → ddc8a591c8943264.js} +1 -1
  309. package/dist/safe-a/_next/static/chunks/{49df9708d6328c4a.js → de208f3610c12b2c.js} +1 -1
  310. package/dist/safe-a/_next/static/chunks/{2f7d30e66e995b02.js → dee1daaeed29e5a2.js} +1 -1
  311. package/dist/safe-a/_next/static/chunks/{6b652524b5ffdd9e.js → dfbd9d8a4137edd6.js} +1 -1
  312. package/dist/safe-a/_next/static/chunks/{270d7571d2eea071.js → dfd8167d74bbaa3a.js} +1 -1
  313. package/dist/safe-a/_next/static/chunks/{4dfbfdff43b8479b.js → dfe4d8ffc37b96da.js} +1 -1
  314. package/dist/safe-a/_next/static/chunks/e048616a4731c6b2.js +1 -0
  315. package/dist/safe-a/_next/static/chunks/{0e1e7d5f7a375308.js → e07906d264057e7b.js} +1 -1
  316. package/dist/safe-a/_next/static/chunks/e0b6375c01566831.js +1 -0
  317. package/dist/safe-a/_next/static/chunks/{b29a85c3dae2bb9c.js → e1416a0b2152bdbf.js} +1 -1
  318. package/dist/safe-a/_next/static/chunks/{fb05f79f5e4b514e.js → e1626e173f56ae31.js} +1 -1
  319. package/dist/safe-a/_next/static/chunks/{3590c4a4f40cdb5d.js → e4776ea06fa1720a.js} +1 -1
  320. package/dist/safe-a/_next/static/chunks/{756b6c2e620386ff.js → e632e1b120215697.js} +1 -1
  321. package/dist/safe-a/_next/static/chunks/{b61ec36c9bbca3e0.js → e66819cb4afcfe87.js} +1 -1
  322. package/dist/safe-a/_next/static/chunks/{44cbf68ad086a6a3.js → e6c441f81a8ea81c.js} +1 -1
  323. package/dist/safe-a/_next/static/chunks/{ea12d36cdfbaafa9.js → e7731336476789d7.js} +1 -1
  324. package/dist/safe-a/_next/static/chunks/e79d1db952916e66.js +1 -0
  325. package/dist/safe-a/_next/static/chunks/{06b923aa1177f43f.js → e7d6284971d07422.js} +1 -1
  326. package/dist/safe-a/_next/static/chunks/{79128afded6e01d9.js → e7f1683dcd85bf06.js} +1 -1
  327. package/dist/safe-a/_next/static/chunks/e814d6bb4f565a59.js +1 -0
  328. package/dist/safe-a/_next/static/chunks/{65fe0975412ff703.js → e878ffaf394e2c30.js} +1 -1
  329. package/dist/safe-a/_next/static/chunks/{e7003dbd5d8cb2d1.js → e89655c05e6b5b1f.js} +1 -1
  330. package/dist/safe-a/_next/static/chunks/{66b30159915524db.js → ea136b1a439307e8.js} +1 -1
  331. package/dist/safe-a/_next/static/chunks/{8f5be275907dd98c.js → eaa820432740042a.js} +1 -1
  332. package/dist/safe-a/_next/static/chunks/{5d5333084191fb10.js → eb248f97f593a288.js} +1 -1
  333. package/dist/safe-a/_next/static/chunks/{932d3fcc2596e8d5.js → eb34cdf40f4c4d62.js} +1 -1
  334. package/dist/safe-a/_next/static/chunks/{6fe835d41fdbd638.js → ec048ffab26ebcd6.js} +1 -1
  335. package/dist/safe-a/_next/static/chunks/{6bc7c57f119ad4f6.js → ec24f7a0593636d9.js} +1 -1
  336. package/dist/safe-a/_next/static/chunks/{e1999bcadd3448e5.js → ec7ee73b22712e55.js} +1 -1
  337. package/dist/safe-a/_next/static/chunks/{0fd3876e0d9e8acc.js → ed4322c3137a7cbf.js} +1 -1
  338. package/dist/safe-a/_next/static/chunks/{962a27e9c634b823.js → ede1765e6899133a.js} +1 -1
  339. package/dist/safe-a/_next/static/chunks/{bc7bda699a7ccda1.js → f05af2c706c87fb5.js} +1 -1
  340. package/dist/safe-a/_next/static/chunks/{bd1f33816fa01c16.js → f0a3b313fc0fcace.js} +1 -1
  341. package/dist/safe-a/_next/static/chunks/f15c8b2639bebe0f.js +1 -0
  342. package/dist/safe-a/_next/static/chunks/{f461a75ec3b0e4e9.js → f39ec71d70b31fe1.js} +1 -1
  343. package/dist/safe-a/_next/static/chunks/{ad50a7d15cd9d9d8.js → f40b91cb7cc58cf2.js} +1 -1
  344. package/dist/safe-a/_next/static/chunks/f42445d9866f6b16.js +1 -0
  345. package/dist/safe-a/_next/static/chunks/{aa867a1fa8b105e1.js → f7ad257814e6e947.js} +1 -1
  346. package/dist/safe-a/_next/static/chunks/{3ae23df392f9bed8.js → f7d33f46dfbddf65.js} +1 -1
  347. package/dist/safe-a/_next/static/chunks/{534b5acf573aa491.js → f8757d2c1a969081.js} +1 -1
  348. package/dist/safe-a/_next/static/chunks/fa0cb747819a4b88.js +1 -0
  349. package/dist/safe-a/_next/static/chunks/{0fb0d030e8dee231.js → faf267ae8eaabb78.js} +1 -1
  350. package/dist/safe-a/_next/static/chunks/fb7bf2e8cee9c72f.js +1 -0
  351. package/dist/safe-a/_next/static/chunks/{eb2d81df9fe374a8.js → fbb5b0d1f5b25465.js} +1 -1
  352. package/dist/safe-a/_next/static/chunks/{c8e45be36912e439.js → fc3c1b765cc5906d.js} +1 -1
  353. package/dist/safe-a/_next/static/chunks/{1c9321874fea5f0d.js → fd3f75ac79c1d04e.js} +1 -1
  354. package/dist/safe-a/_next/static/chunks/{9a7b2a483b109c0a.js → fddfcced721d9669.js} +1 -1
  355. package/dist/safe-a/_next/static/chunks/{d2e37b6d5ff62bcb.js → fdf535baa39c0e26.js} +1 -1
  356. package/dist/safe-a/_next/static/chunks/fe4fddbf85e1554b.js +1 -0
  357. package/dist/safe-a/_next/static/chunks/{d33a24782888b869.js → fe840e6cda1c115e.js} +1 -1
  358. package/dist/safe-a/_next/static/chunks/ff9ec21502a3b775.js +1 -0
  359. package/dist/safe-a/_next/static/chunks/{turbopack-3d84668fefd38b4b.js → turbopack-25307b1915d537a0.js} +1 -1
  360. package/dist/safe-a/_next/static/chunks/turbopack-c8295da8707d94de.js +3 -0
  361. package/dist/safe-a/_next/static/chunks/{turbopack-63952675b1d69124.js → turbopack-fd95f1c0ef78a441.js} +1 -1
  362. package/dist/safe-a/index.html +2 -2
  363. package/dist/safe-a/index.txt +18 -18
  364. package/dist/safe-a/manage/about/index.html +2 -2
  365. package/dist/safe-a/manage/about/index.txt +15 -15
  366. package/dist/safe-a/manage/env/index.html +2 -2
  367. package/dist/safe-a/manage/env/index.txt +17 -17
  368. package/dist/safe-a/manage/geelib/index.html +2 -2
  369. package/dist/safe-a/manage/geelib/index.txt +17 -17
  370. package/dist/safe-a/manage/general/index.html +2 -2
  371. package/dist/safe-a/manage/general/index.txt +15 -15
  372. package/dist/safe-a/manage/git/index.html +2 -2
  373. package/dist/safe-a/manage/git/index.txt +17 -17
  374. package/dist/safe-a/manage/im/index.html +2 -2
  375. package/dist/safe-a/manage/im/index.txt +17 -17
  376. package/dist/safe-a/manage/index.html +2 -2
  377. package/dist/safe-a/manage/index.txt +12 -12
  378. package/dist/safe-a/manage/library/index.html +2 -2
  379. package/dist/safe-a/manage/library/index.txt +15 -15
  380. package/dist/safe-a/manage/mcp/index.html +2 -2
  381. package/dist/safe-a/manage/mcp/index.txt +15 -15
  382. package/dist/safe-a/manage/permissions/index.html +2 -2
  383. package/dist/safe-a/manage/permissions/index.txt +15 -15
  384. package/dist/safe-a/manage/skills/index.html +2 -2
  385. package/dist/safe-a/manage/skills/index.txt +15 -15
  386. package/dist/safe-a/manage/task/index.html +2 -2
  387. package/dist/safe-a/manage/task/index.txt +15 -15
  388. package/dist/safe-a/manage/teams/index.html +2 -2
  389. package/dist/safe-a/manage/teams/index.txt +15 -15
  390. package/dist/safe-a/manage/tools/index.html +2 -2
  391. package/dist/safe-a/manage/tools/index.txt +15 -15
  392. package/dist/ws-test/ws-test.css +4 -0
  393. package/dist/ws-test/ws-test.html +21 -0
  394. package/dist/ws-test/ws-test.js +297 -72
  395. package/mcps-runtime/claude-tuitui-channel/server/index.mjs +0 -6
  396. package/mcps-runtime/claude-ws-channel/server/gateway.bundle.mjs +4508 -1134
  397. package/package.json +6 -6
  398. package/dist/safe-a/_next/static/chunks/05e1926dc5c477b7.js +0 -1
  399. package/dist/safe-a/_next/static/chunks/0b639ff4f1971d14.js +0 -1
  400. package/dist/safe-a/_next/static/chunks/0ea5a62c3f30dc56.js +0 -1
  401. package/dist/safe-a/_next/static/chunks/0f1810e4c6b0dd0c.js +0 -1
  402. package/dist/safe-a/_next/static/chunks/1130da797f872f0e.js +0 -1
  403. package/dist/safe-a/_next/static/chunks/1289fc2bb1119e18.js +0 -1
  404. package/dist/safe-a/_next/static/chunks/155374df9f6b4b9a.js +0 -1
  405. package/dist/safe-a/_next/static/chunks/17722e3ac4e00587.js +0 -1
  406. package/dist/safe-a/_next/static/chunks/18977fe8f51209aa.js +0 -1
  407. package/dist/safe-a/_next/static/chunks/1974f51c298bce94.js +0 -1
  408. package/dist/safe-a/_next/static/chunks/1bfa645704d9149a.js +0 -1
  409. package/dist/safe-a/_next/static/chunks/1c5adfc7c1c7d389.js +0 -1
  410. package/dist/safe-a/_next/static/chunks/1da49ae596352b69.js +0 -1
  411. package/dist/safe-a/_next/static/chunks/219a3413675ba6f1.js +0 -1
  412. package/dist/safe-a/_next/static/chunks/236775e4ec4f8a94.js +0 -1
  413. package/dist/safe-a/_next/static/chunks/27069b3f310e0a86.js +0 -1
  414. package/dist/safe-a/_next/static/chunks/291c07da1c127dc1.js +0 -1
  415. package/dist/safe-a/_next/static/chunks/29676075a0390867.js +0 -1
  416. package/dist/safe-a/_next/static/chunks/2e574acbf68e77ff.js +0 -1
  417. package/dist/safe-a/_next/static/chunks/2f474d38a46f537c.js +0 -1
  418. package/dist/safe-a/_next/static/chunks/32a7ca0a75a897da.js +0 -1
  419. package/dist/safe-a/_next/static/chunks/3509a66e019ceae3.js +0 -1
  420. package/dist/safe-a/_next/static/chunks/3aac5736e5781b46.js +0 -1
  421. package/dist/safe-a/_next/static/chunks/3c695d1c2efbc749.js +0 -1
  422. package/dist/safe-a/_next/static/chunks/3d8e9a96a69193d4.js +0 -1
  423. package/dist/safe-a/_next/static/chunks/3dcb1dcf23e7ab9c.js +0 -1
  424. package/dist/safe-a/_next/static/chunks/3e2ea3a7fe64826d.js +0 -1
  425. package/dist/safe-a/_next/static/chunks/3f6fe8a1903009ea.js +0 -1
  426. package/dist/safe-a/_next/static/chunks/3fb4674edcb2d726.js +0 -1
  427. package/dist/safe-a/_next/static/chunks/40268f8e3ff0314e.js +0 -1
  428. package/dist/safe-a/_next/static/chunks/40a2fb9cf3a7e6fd.js +0 -1
  429. package/dist/safe-a/_next/static/chunks/45ab9a1f693d609c.js +0 -1
  430. package/dist/safe-a/_next/static/chunks/461246e3ff85f221.js +0 -1
  431. package/dist/safe-a/_next/static/chunks/4a426c156537f974.js +0 -1
  432. package/dist/safe-a/_next/static/chunks/4be4ca8f1ec9c171.js +0 -1
  433. package/dist/safe-a/_next/static/chunks/4be779bcbd94352d.js +0 -1
  434. package/dist/safe-a/_next/static/chunks/4c33a1cc6db74105.js +0 -1
  435. package/dist/safe-a/_next/static/chunks/4d129d4e15c8c424.js +0 -1
  436. package/dist/safe-a/_next/static/chunks/5069ee4aa806b0ea.js +0 -1
  437. package/dist/safe-a/_next/static/chunks/519049cd74a40910.js +0 -1
  438. package/dist/safe-a/_next/static/chunks/522518d740397639.js +0 -1
  439. package/dist/safe-a/_next/static/chunks/52e2164e45febae6.js +0 -1
  440. package/dist/safe-a/_next/static/chunks/538cc02e54714b23.js +0 -1
  441. package/dist/safe-a/_next/static/chunks/546f232d695d6e60.js +0 -1
  442. package/dist/safe-a/_next/static/chunks/54c43751bf4c4da2.js +0 -1
  443. package/dist/safe-a/_next/static/chunks/5b916c9dc09e323c.js +0 -1
  444. package/dist/safe-a/_next/static/chunks/5ccd5a6ac9c2f980.js +0 -1
  445. package/dist/safe-a/_next/static/chunks/5d79b7f202080232.js +0 -1
  446. package/dist/safe-a/_next/static/chunks/63ec034afca4b5d6.js +0 -1
  447. package/dist/safe-a/_next/static/chunks/6677c64fd587e78c.js +0 -1
  448. package/dist/safe-a/_next/static/chunks/6785757cc05fec19.js +0 -1
  449. package/dist/safe-a/_next/static/chunks/696e3ddd135b85b4.js +0 -1
  450. package/dist/safe-a/_next/static/chunks/6d1f15f3eb86ea37.js +0 -1
  451. package/dist/safe-a/_next/static/chunks/7145a30cb461e3ab.js +0 -1
  452. package/dist/safe-a/_next/static/chunks/71d3a80bc9d53b07.js +0 -1
  453. package/dist/safe-a/_next/static/chunks/764c541428e1c6eb.js +0 -1
  454. package/dist/safe-a/_next/static/chunks/7988d5ea63356e10.js +0 -1
  455. package/dist/safe-a/_next/static/chunks/7b9c09d0ce43f1c2.js +0 -1
  456. package/dist/safe-a/_next/static/chunks/7dbb8abebf50d816.js +0 -1
  457. package/dist/safe-a/_next/static/chunks/7ef348801eff6590.js +0 -1
  458. package/dist/safe-a/_next/static/chunks/82614b5de9f78114.js +0 -1
  459. package/dist/safe-a/_next/static/chunks/83c83eead018326a.js +0 -1
  460. package/dist/safe-a/_next/static/chunks/85fc05549f7f100c.js +0 -1
  461. package/dist/safe-a/_next/static/chunks/88bc97899d2ce4e5.js +0 -1
  462. package/dist/safe-a/_next/static/chunks/8989a60219113c80.js +0 -1
  463. package/dist/safe-a/_next/static/chunks/92c3617a4e22a464.js +0 -1
  464. package/dist/safe-a/_next/static/chunks/937e26e6e01d9ec9.js +0 -1
  465. package/dist/safe-a/_next/static/chunks/93bfaf233e66b48c.js +0 -1
  466. package/dist/safe-a/_next/static/chunks/94e88cfda11697d2.js +0 -1
  467. package/dist/safe-a/_next/static/chunks/9b3df6b20a9625d5.js +0 -1
  468. package/dist/safe-a/_next/static/chunks/9c6c00fa68012026.js +0 -1
  469. package/dist/safe-a/_next/static/chunks/9ccf7a8bca1730bf.js +0 -1
  470. package/dist/safe-a/_next/static/chunks/9fefea69ec034a63.js +0 -1
  471. package/dist/safe-a/_next/static/chunks/a437ab944fe911da.js +0 -1
  472. package/dist/safe-a/_next/static/chunks/a4776dc3e00e5ab0.js +0 -1
  473. package/dist/safe-a/_next/static/chunks/abdf99ba76e0f571.js +0 -1
  474. package/dist/safe-a/_next/static/chunks/ad4ba491cf12423f.js +0 -5
  475. package/dist/safe-a/_next/static/chunks/b30f1da4e57f459a.js +0 -1
  476. package/dist/safe-a/_next/static/chunks/b92c67520afabac2.js +0 -1
  477. package/dist/safe-a/_next/static/chunks/baed816b83bbd5b5.js +0 -1
  478. package/dist/safe-a/_next/static/chunks/bd2dcf98c9b362f6.js +0 -1
  479. package/dist/safe-a/_next/static/chunks/bf2c1c402dbcccdf.js +0 -1
  480. package/dist/safe-a/_next/static/chunks/bfc6ee42cec583d5.js +0 -1
  481. package/dist/safe-a/_next/static/chunks/c3b49937059d3d70.js +0 -1
  482. package/dist/safe-a/_next/static/chunks/c5be27a596acfa18.js +0 -1
  483. package/dist/safe-a/_next/static/chunks/c8942bee3aebddae.js +0 -1
  484. package/dist/safe-a/_next/static/chunks/c9813626ba898586.js +0 -1
  485. package/dist/safe-a/_next/static/chunks/ca2725c2b45709c1.js +0 -1
  486. package/dist/safe-a/_next/static/chunks/cafadd69e03e6c4b.js +0 -1
  487. package/dist/safe-a/_next/static/chunks/cd4556cbed1f8957.js +0 -1
  488. package/dist/safe-a/_next/static/chunks/d433c87b0bc69cda.js +0 -1
  489. package/dist/safe-a/_next/static/chunks/dbbd673619a7f82f.js +0 -1
  490. package/dist/safe-a/_next/static/chunks/dc0bc471de951daf.js +0 -1
  491. package/dist/safe-a/_next/static/chunks/e2833182a81cd867.js +0 -1
  492. package/dist/safe-a/_next/static/chunks/e60ef129113f6e24.js +0 -1
  493. package/dist/safe-a/_next/static/chunks/e6324292aef80338.js +0 -1
  494. package/dist/safe-a/_next/static/chunks/e7f1a043618e43cf.js +0 -1
  495. package/dist/safe-a/_next/static/chunks/e8105dbb23b8e514.js +0 -1
  496. package/dist/safe-a/_next/static/chunks/ebcd85ff4a1db0dc.js +0 -5
  497. package/dist/safe-a/_next/static/chunks/eed0c3ef6a5c3706.js +0 -1
  498. package/dist/safe-a/_next/static/chunks/f12f45a558c3fed2.js +0 -1
  499. package/dist/safe-a/_next/static/chunks/f42a71992d139302.js +0 -1
  500. package/dist/safe-a/_next/static/chunks/fc2efa33a196ee45.js +0 -1
  501. package/dist/safe-a/_next/static/chunks/ff6860dcd793aa23.js +0 -1
  502. package/dist/safe-a/_next/static/chunks/turbopack-8b41433c9a94981f.js +0 -3
  503. /package/dist/safe-a/_next/static/{1fsL4ESu163u3sXFc_243 → Y4PlJTxK6TQphwzXXWsHY}/_clientMiddlewareManifest.json +0 -0
  504. /package/dist/safe-a/_next/static/{1fsL4ESu163u3sXFc_243 → Y4PlJTxK6TQphwzXXWsHY}/_ssgManifest.js +0 -0
@@ -84,6 +84,11 @@
84
84
  const permissionDialogTitle = $('permissionDialogTitle')
85
85
  const permissionDialogDesc = $('permissionDialogDesc')
86
86
  const permissionDialogInput = $('permissionDialogInput')
87
+ const apiErrorDialog = $('apiErrorDialog')
88
+ const apiErrorDialogBackdrop = $('apiErrorDialogBackdrop')
89
+ const apiErrorDialogDesc = $('apiErrorDialogDesc')
90
+ const btnApiErrorOk = $('btnApiErrorOk')
91
+ const btnApiErrorDialogClose = $('btnApiErrorDialogClose')
87
92
  const btnPermissionDialogClose = $('btnPermissionDialogClose')
88
93
  const btnPermissionDeny = $('btnPermissionDeny')
89
94
  const btnPermissionAllow = $('btnPermissionAllow')
@@ -111,6 +116,7 @@
111
116
  const scheduleTasksWrap = $('scheduleTasksWrap')
112
117
  const scheduleRunsWrap = $('scheduleRunsWrap')
113
118
  const scheduleTaskTableBody = $('scheduleTaskTableBody')
119
+ const scheduleTasksPager = $('scheduleTasksPager')
114
120
  const scheduleManageEmpty = $('scheduleManageEmpty')
115
121
  const btnScheduleRunsBack = $('btnScheduleRunsBack')
116
122
  const scheduleRunsTitle = $('scheduleRunsTitle')
@@ -161,6 +167,12 @@
161
167
  let sessionRuntimePollTimer = null
162
168
  /** 当前附着 session 的 turn 是否进行中(由 query.progress 驱动) */
163
169
  let sessionTurnActive = false
170
+ /** 当前 turn 是否已处理过 api_error 终态,避免重复弹窗与 abort */
171
+ let apiErrorHandledForTurn = false
172
+ /** 当前 turn 是否处于 api_error 重试中 */
173
+ let apiErrorRetryingForTurn = false
174
+ /** 最近一次 api_error 的可读文案,供重试耗尽后弹窗展示 */
175
+ let lastApiErrorText = ''
164
176
  const pendingPromptsBarEl = $('pendingPromptsBar')
165
177
  const pendingPromptsListEl = $('pendingPromptsList')
166
178
  let pendingPromptsCache = []
@@ -352,8 +364,6 @@
352
364
  const LLM_MODEL_KEY = 'LLM_MODEL'
353
365
  const LLM_PROVIDER_ID_KEY = 'LLM_PROVIDER_ID'
354
366
  const WS_ALLOW_TOOL_ASK_KEY = 'WS_ALLOW_TOOL_ASK'
355
- const TUITUI_CHANNEL_SESSION_KEY = 'TUITUI_CHANNEL_SESSION'
356
- const TUITUI_CHANNEL_SESSION_ALLOWED = new Set(['0', '1'])
357
367
  const WS_PERMISSION_MODE_ALLOWED = new Set([
358
368
  'acceptEdits',
359
369
  'plan',
@@ -577,50 +587,19 @@
577
587
  label.setAttribute('for', 'agentEnvField_' + field.key)
578
588
  label.textContent = field.label
579
589
  const inputId = 'agentEnvField_' + field.key
580
- let input
581
- if (field.key === TUITUI_CHANNEL_SESSION_KEY) {
582
- /**
583
- * 业务逻辑:推推常驻会话开关仅允许 0/1,与主进程 reconcileChannelPairSessions 读取一致。
584
- */
585
- const select = document.createElement('select')
586
- select.id = inputId
587
- select.className = 'agent-env-kv-input'
588
- const channelSessionOptions = [
589
- { value: '0', label: '禁用' },
590
- { value: '1', label: '启用' },
591
- ]
592
- for (let k = 0; k < channelSessionOptions.length; k++) {
593
- const option = document.createElement('option')
594
- option.value = channelSessionOptions[k].value
595
- option.textContent = channelSessionOptions[k].label
596
- select.appendChild(option)
597
- }
598
- const currentChannelSession =
599
- typeof agentEnvFieldValues[field.key] === 'string'
600
- ? agentEnvFieldValues[field.key].trim()
601
- : ''
602
- select.value = TUITUI_CHANNEL_SESSION_ALLOWED.has(currentChannelSession)
603
- ? currentChannelSession
604
- : '0'
605
- select.addEventListener('change', function () {
606
- agentEnvFieldValues[field.key] = select.value
607
- })
608
- input = select
609
- } else {
610
- const textInput = document.createElement('input')
611
- textInput.id = inputId
612
- textInput.type = 'text'
613
- textInput.spellcheck = false
614
- textInput.className = 'agent-env-kv-input'
615
- textInput.placeholder = field.placeholder || ''
616
- textInput.value = typeof agentEnvFieldValues[field.key] === 'string'
617
- ? agentEnvFieldValues[field.key]
618
- : ''
619
- textInput.addEventListener('input', function () {
620
- agentEnvFieldValues[field.key] = textInput.value
621
- })
622
- input = textInput
623
- }
590
+ const textInput = document.createElement('input')
591
+ textInput.id = inputId
592
+ textInput.type = 'text'
593
+ textInput.spellcheck = false
594
+ textInput.className = 'agent-env-kv-input'
595
+ textInput.placeholder = field.placeholder || ''
596
+ textInput.value = typeof agentEnvFieldValues[field.key] === 'string'
597
+ ? agentEnvFieldValues[field.key]
598
+ : ''
599
+ textInput.addEventListener('input', function () {
600
+ agentEnvFieldValues[field.key] = textInput.value
601
+ })
602
+ const input = textInput
624
603
  row.appendChild(label)
625
604
  row.appendChild(input)
626
605
  section.appendChild(row)
@@ -1554,6 +1533,10 @@
1554
1533
  return extractMessageBody(m).trim()
1555
1534
  }
1556
1535
  if (m.type === 'system') {
1536
+ if (m.subtype === 'api_error') {
1537
+ const apiText = extractApiErrorText(m)
1538
+ if (apiText) return apiText
1539
+ }
1557
1540
  if (typeof m.content === 'string') return m.content.trim()
1558
1541
  try {
1559
1542
  return JSON.stringify(m).slice(0, 800).trim()
@@ -1651,10 +1634,14 @@
1651
1634
  div.appendChild(md)
1652
1635
  container.appendChild(div)
1653
1636
  } else if (t === 'system') {
1654
- const raw =
1637
+ let raw =
1655
1638
  typeof m.content === 'string'
1656
1639
  ? m.content
1657
1640
  : JSON.stringify(m).slice(0, 800)
1641
+ if (m.subtype === 'api_error') {
1642
+ const apiText = extractApiErrorText(m)
1643
+ if (apiText) raw = apiText
1644
+ }
1658
1645
  if (!raw.trim()) continue
1659
1646
  const div = document.createElement('div')
1660
1647
  div.className = 'chat-msg chat-msg-system'
@@ -1998,6 +1985,151 @@
1998
1985
  permissionDialogBackdrop.addEventListener('click', () => respondToPermission('deny'))
1999
1986
  }
2000
1987
 
1988
+ /**
1989
+ * 从 system api_error 消息中提取可读错误文案。
1990
+ * 上游 APIError 常嵌套多层 error 字段,需逐层下探并尝试解析 JSON 内 message。
1991
+ */
1992
+ function extractApiErrorText(msg) {
1993
+ if (!msg || msg.type !== 'system' || msg.subtype !== 'api_error') return ''
1994
+ const root = msg.error
1995
+ if (!root || typeof root !== 'object') return 'LLM API 请求失败'
1996
+
1997
+ let text = ''
1998
+ const candidates = [
1999
+ root.message,
2000
+ root.error && root.error.message,
2001
+ root.error && root.error.error && root.error.error.message,
2002
+ root.error && root.error.error && root.error.error.error && root.error.error.error.message,
2003
+ ]
2004
+ for (let i = 0; i < candidates.length; i++) {
2005
+ if (typeof candidates[i] === 'string' && candidates[i].trim()) {
2006
+ text = candidates[i].trim()
2007
+ break
2008
+ }
2009
+ }
2010
+ if (!text) text = 'LLM API 请求失败'
2011
+
2012
+ const jsonMatch = text.match(/\{[\s\S]*\}$/)
2013
+ if (jsonMatch) {
2014
+ try {
2015
+ const parsed = JSON.parse(jsonMatch[0])
2016
+ const inner = parsed.error || parsed
2017
+ if (inner && typeof inner.message === 'string' && inner.message.trim()) {
2018
+ const code = inner.code != null ? '(' + inner.code + ')' : ''
2019
+ text = inner.message.trim() + code
2020
+ }
2021
+ } catch (_err) {
2022
+ /* 非 JSON 后缀则保留原始 message */
2023
+ }
2024
+ }
2025
+
2026
+ const attempt = Number.isFinite(msg.retryAttempt) ? msg.retryAttempt : null
2027
+ const max = Number.isFinite(msg.maxRetries) ? msg.maxRetries : null
2028
+ if (attempt != null && max != null) {
2029
+ text += ' [重试 ' + attempt + '/' + max + ']'
2030
+ }
2031
+ if (typeof root.status === 'number') {
2032
+ text = 'HTTP ' + root.status + ': ' + text
2033
+ }
2034
+ return text
2035
+ }
2036
+
2037
+ function hideApiErrorDialog() {
2038
+ if (!apiErrorDialog) return
2039
+ apiErrorDialog.classList.remove('is-open')
2040
+ apiErrorDialog.setAttribute('aria-hidden', 'true')
2041
+ }
2042
+
2043
+ function showApiErrorDialog(message) {
2044
+ if (!apiErrorDialog || !apiErrorDialogDesc) return
2045
+ apiErrorDialogDesc.textContent =
2046
+ typeof message === 'string' && message.trim() ? message.trim() : 'LLM API 请求失败'
2047
+ apiErrorDialog.classList.add('is-open')
2048
+ apiErrorDialog.setAttribute('aria-hidden', 'false')
2049
+ }
2050
+
2051
+ /** 向服务端发送 abort,终止当前 query 与子进程 turn */
2052
+ function abortCurrentSessionTurn() {
2053
+ if (!socket || socket.readyState !== WebSocket.OPEN) return
2054
+ const payload = { type: 'abort' }
2055
+ socket.send(JSON.stringify(payload))
2056
+ logLine('→', payload)
2057
+ }
2058
+
2059
+ function resetApiErrorTurnState() {
2060
+ apiErrorHandledForTurn = false
2061
+ apiErrorRetryingForTurn = false
2062
+ lastApiErrorText = ''
2063
+ }
2064
+
2065
+ /**
2066
+ * api 重试全部耗尽:弹窗、abort、清除 calling。
2067
+ * 由 session.error 或 turn.terminal failed 触发,不在首次 api_error 时 fail-fast。
2068
+ */
2069
+ function finalizeApiErrorTurn(errText) {
2070
+ if (apiErrorHandledForTurn) return
2071
+ apiErrorHandledForTurn = true
2072
+ apiErrorRetryingForTurn = false
2073
+ sessionTurnActive = false
2074
+ showApiErrorDialog(errText || 'LLM API 请求失败')
2075
+ abortCurrentSessionTurn()
2076
+ setStatus('API 错误', 'err')
2077
+ kickSessionRuntimePoll()
2078
+ if (window.__lastSessions) {
2079
+ renderSessionList(window.__lastSessions)
2080
+ }
2081
+ void loadSessions({ silent: true })
2082
+ }
2083
+
2084
+ /**
2085
+ * 主 run 收到 api_error:重试期间仅更新状态栏,全部重试耗尽后再弹窗终止。
2086
+ */
2087
+ function handleApiErrorFromSystemMessage(msg, runId) {
2088
+ if (runId !== 'main') return
2089
+ if (apiErrorHandledForTurn) return
2090
+ if (!msg || msg.type !== 'system' || msg.subtype !== 'api_error') return
2091
+
2092
+ const retryAttempt = Number.isFinite(msg.retryAttempt) ? msg.retryAttempt : 0
2093
+ const maxRetries = Number.isFinite(msg.maxRetries) ? msg.maxRetries : 10
2094
+ lastApiErrorText = extractApiErrorText(msg)
2095
+ apiErrorRetryingForTurn = true
2096
+ setStatus('API 错误,重试 ' + retryAttempt + '/' + maxRetries + '…', 'err')
2097
+ kickSessionRuntimePoll()
2098
+ if (window.__lastSessions) {
2099
+ renderSessionList(window.__lastSessions)
2100
+ }
2101
+ void loadSessions({ silent: true })
2102
+ }
2103
+
2104
+ /**
2105
+ * session.error:若处于 api 重试链,表示重试已耗尽,走终态弹窗;否则仅更新状态。
2106
+ */
2107
+ function handleSessionErrorPayload(payload) {
2108
+ if (apiErrorHandledForTurn) return
2109
+ if (apiErrorRetryingForTurn) {
2110
+ const errMsg =
2111
+ lastApiErrorText ||
2112
+ (payload && typeof payload.message === 'string' ? payload.message.trim() : '')
2113
+ finalizeApiErrorTurn(errMsg || 'LLM API 请求失败')
2114
+ return
2115
+ }
2116
+ const errMsg =
2117
+ payload && typeof payload.message === 'string' && payload.message.trim()
2118
+ ? payload.message.trim()
2119
+ : 'unknown'
2120
+ setStatus('错误: ' + errMsg, 'err')
2121
+ }
2122
+
2123
+ if (btnApiErrorOk) {
2124
+ btnApiErrorOk.addEventListener('click', hideApiErrorDialog)
2125
+ }
2126
+ if (btnApiErrorDialogClose) {
2127
+ btnApiErrorDialogClose.addEventListener('click', hideApiErrorDialog)
2128
+ }
2129
+ if (apiErrorDialogBackdrop) {
2130
+ apiErrorDialogBackdrop.addEventListener('click', hideApiErrorDialog)
2131
+ }
2132
+
2001
2133
  /** 解析并应用 WS v3 下行信封(protocolVersion === 3);旧名 applyEnvelopeV2 易误解,保留行为不变。 */
2002
2134
  function applyWsEnvelopeV3(data) {
2003
2135
  if (!data || typeof data !== 'object') return false
@@ -2016,6 +2148,11 @@
2016
2148
  if (type === 'conversation.delta') {
2017
2149
  const action = typeof payload.action === 'string' ? payload.action : ''
2018
2150
  const index = Number.isInteger(payload.index) ? payload.index : -1
2151
+ const deltaContextPct = parseContextUsagePercent(payload.contextUsage)
2152
+ if (typeof deltaContextPct === 'number') {
2153
+ currentSessionContextPercent = deltaContextPct
2154
+ updatePromptSessionInfo()
2155
+ }
2019
2156
  const msg = payload.message
2020
2157
  const sourceAgent = resolveEnvelopeSourceAgent(runId, payload, data.agent_name)
2021
2158
  const runBuffer = ensureRunBuffer(runId)
@@ -2039,6 +2176,9 @@
2039
2176
  refreshSessionTitleFromChat(sessionIdInput.value.trim())
2040
2177
  }
2041
2178
  requestRenderChat()
2179
+ if (msg && msg.type === 'system' && msg.subtype === 'api_error') {
2180
+ handleApiErrorFromSystemMessage(msg, runId)
2181
+ }
2042
2182
  return true
2043
2183
  }
2044
2184
  if (type === 'turn.terminal') {
@@ -2067,8 +2207,19 @@
2067
2207
  key: typeof data.eventId === 'string' ? data.eventId : '',
2068
2208
  })
2069
2209
  /** 主 run 一轮结束:清除「查询阶段: calling_model」等进行中状态 */
2070
- if (runId === 'main' && serverReady) {
2071
- setStatus('已就绪', 'ready')
2210
+ if (runId === 'main') {
2211
+ if (
2212
+ payload.status !== 'resolved' &&
2213
+ apiErrorRetryingForTurn &&
2214
+ !apiErrorHandledForTurn
2215
+ ) {
2216
+ finalizeApiErrorTurn(lastApiErrorText)
2217
+ } else if (serverReady && !apiErrorHandledForTurn) {
2218
+ setStatus('已就绪', 'ready')
2219
+ }
2220
+ if (!apiErrorHandledForTurn) {
2221
+ resetApiErrorTurnState()
2222
+ }
2072
2223
  }
2073
2224
  requestRenderChat()
2074
2225
  return true
@@ -2130,6 +2281,9 @@
2130
2281
  })
2131
2282
  requestRenderChat()
2132
2283
  }
2284
+ if (type === 'session.error' && runId === 'main') {
2285
+ handleSessionErrorPayload(payload)
2286
+ }
2133
2287
  return true
2134
2288
  }
2135
2289
  if (type === 'schedule.pending') {
@@ -2175,11 +2329,20 @@
2175
2329
  renderSessionList(window.__lastSessions)
2176
2330
  }
2177
2331
  if (phase === 'idle') {
2178
- if (serverReady) setStatus('已就绪', 'ready')
2332
+ sessionTurnActive = false
2333
+ if (!apiErrorHandledForTurn && serverReady) {
2334
+ setStatus('已就绪', 'ready')
2335
+ }
2336
+ if (!apiErrorHandledForTurn) {
2337
+ apiErrorRetryingForTurn = false
2338
+ lastApiErrorText = ''
2339
+ }
2179
2340
  // 一轮 prompt 收尾后 transcript 已落盘,刷新列表以更新页签 firstPrompt/summary
2180
2341
  void loadSessions({ silent: true })
2181
2342
  } else if (phase) {
2182
- setStatus('查询阶段: ' + phase + '…', '')
2343
+ if (!apiErrorHandledForTurn && !apiErrorRetryingForTurn) {
2344
+ setStatus('查询阶段: ' + phase + '…', '')
2345
+ }
2183
2346
  void loadSessions({ silent: true })
2184
2347
  }
2185
2348
  return true
@@ -2495,9 +2658,15 @@
2495
2658
  return u.toString()
2496
2659
  }
2497
2660
 
2498
- function buildSchedulesUrl() {
2661
+ function buildSchedulesUrl(page, pageSize) {
2499
2662
  const u = new URL('/api/schedules', httpOriginForApi() + '/')
2500
2663
  u.searchParams.set('agent', currentAgentParam())
2664
+ if (typeof page === 'number' && page >= 1) {
2665
+ u.searchParams.set('page', String(page))
2666
+ }
2667
+ if (typeof pageSize === 'number' && pageSize >= 1) {
2668
+ u.searchParams.set('pageSize', String(pageSize))
2669
+ }
2501
2670
  return u.toString()
2502
2671
  }
2503
2672
 
@@ -2706,6 +2875,11 @@
2706
2875
  const scheduleManageState = {
2707
2876
  viewActive: false,
2708
2877
  contentView: 'list',
2878
+ page: 1,
2879
+ pageSize: 10,
2880
+ total: 0,
2881
+ totalPages: 0,
2882
+ loading: false,
2709
2883
  }
2710
2884
 
2711
2885
  /** 切换定时任务列表与执行记录面板 */
@@ -3497,13 +3671,36 @@
3497
3671
  return formatScheduleFireAt(task.nextFireAt)
3498
3672
  }
3499
3673
 
3674
+ /** 渲染定时任务列表分页控件 */
3675
+ function renderScheduleTasksPager() {
3676
+ if (!scheduleTasksPager) return
3677
+ scheduleTasksPager.innerHTML = ''
3678
+ const totalPages = scheduleManageState.totalPages || 0
3679
+ scheduleTasksPager.hidden = totalPages <= 1
3680
+ if (totalPages <= 1) return
3681
+ const pager = createCloudPager(scheduleManageState, function (nextPage) {
3682
+ void loadScheduleTasks(nextPage).catch(function (e) {
3683
+ window.alert('加载失败: ' + e)
3684
+ })
3685
+ })
3686
+ scheduleTasksPager.appendChild(pager)
3687
+ }
3688
+
3500
3689
  /** 渲染定时任务表格 */
3501
- function renderScheduleTaskTable(tasks, timezone) {
3690
+ function renderScheduleTaskTable(tasks, timezone, total) {
3502
3691
  if (!scheduleTaskTableBody || !scheduleManageEmpty) return
3503
3692
  scheduleTaskTableBody.innerHTML = ''
3504
3693
  const list = Array.isArray(tasks) ? tasks : []
3505
- scheduleManageEmpty.hidden = list.length > 0
3506
- if (list.length > 0) scheduleManageEmpty.classList.remove('is-error')
3694
+ const totalCount =
3695
+ typeof total === 'number' && Number.isFinite(total) ? total : list.length
3696
+ if (totalCount > 0) {
3697
+ scheduleManageEmpty.hidden = true
3698
+ scheduleManageEmpty.classList.remove('is-error')
3699
+ } else {
3700
+ scheduleManageEmpty.hidden = false
3701
+ scheduleManageEmpty.textContent = '暂无定时任务'
3702
+ scheduleManageEmpty.classList.remove('is-error')
3703
+ }
3507
3704
  for (let i = 0; i < list.length; i++) {
3508
3705
  const task = list[i]
3509
3706
  if (!task || !task.id) continue
@@ -3559,18 +3756,42 @@
3559
3756
  }
3560
3757
  if (scheduleManageMeta) {
3561
3758
  scheduleManageMeta.textContent =
3562
- '时区: ' + (timezone || 'local') + ' · 共 ' + list.length + ' 个任务'
3759
+ '时区: ' +
3760
+ (timezone || 'local') +
3761
+ ' · 共 ' +
3762
+ totalCount +
3763
+ ' 个任务' +
3764
+ (scheduleManageState.totalPages > 1
3765
+ ? ' · 第 ' +
3766
+ scheduleManageState.page +
3767
+ '/' +
3768
+ scheduleManageState.totalPages +
3769
+ ' 页'
3770
+ : '')
3563
3771
  }
3772
+ renderScheduleTasksPager()
3564
3773
  }
3565
3774
 
3566
- /** 拉取 agent 全部定时任务 */
3567
- async function loadScheduleTasks() {
3568
- const res = await fetch(buildSchedulesUrl())
3775
+ /** 拉取 agent 定时任务(按创建时间倒序,分页) */
3776
+ async function loadScheduleTasks(page) {
3777
+ if (typeof page === 'number' && page >= 1) {
3778
+ scheduleManageState.page = page
3779
+ }
3780
+ scheduleManageState.loading = true
3781
+ renderScheduleTasksPager()
3782
+ const res = await fetch(
3783
+ buildSchedulesUrl(scheduleManageState.page, scheduleManageState.pageSize),
3784
+ )
3569
3785
  const body = await res.json()
3786
+ scheduleManageState.loading = false
3570
3787
  if (!res.ok) {
3571
3788
  throw new Error(body.message || body.error || res.statusText)
3572
3789
  }
3573
- renderScheduleTaskTable(body.tasks, body.timezone)
3790
+ scheduleManageState.page = Number(body.page) || scheduleManageState.page
3791
+ scheduleManageState.pageSize = Number(body.pageSize) || scheduleManageState.pageSize
3792
+ scheduleManageState.total = Number(body.total) || 0
3793
+ scheduleManageState.totalPages = Number(body.totalPages) || 0
3794
+ renderScheduleTaskTable(body.tasks, body.timezone, scheduleManageState.total)
3574
3795
  return body
3575
3796
  }
3576
3797
 
@@ -3623,7 +3844,7 @@
3623
3844
  if (scheduleCreateForm) scheduleCreateForm.hidden = true
3624
3845
  if (scheduleTaskNameInput) scheduleTaskNameInput.value = ''
3625
3846
  if (schedulePromptInput) schedulePromptInput.value = ''
3626
- await loadScheduleTasks()
3847
+ await loadScheduleTasks(1)
3627
3848
  }
3628
3849
 
3629
3850
  function buildScheduleRunUrl(id) {
@@ -3701,8 +3922,14 @@
3701
3922
  if (!scheduleRunsTableBody || !scheduleRunsEmpty) return
3702
3923
  scheduleRunsTableBody.innerHTML = ''
3703
3924
  const list = Array.isArray(runs) ? runs : []
3704
- scheduleRunsEmpty.hidden = list.length > 0
3705
- if (list.length > 0) scheduleRunsEmpty.classList.remove('is-error')
3925
+ if (list.length > 0) {
3926
+ scheduleRunsEmpty.hidden = true
3927
+ scheduleRunsEmpty.classList.remove('is-error')
3928
+ } else {
3929
+ scheduleRunsEmpty.hidden = false
3930
+ scheduleRunsEmpty.textContent = '暂无执行记录'
3931
+ scheduleRunsEmpty.classList.remove('is-error')
3932
+ }
3706
3933
  if (scheduleRunResultPre) {
3707
3934
  scheduleRunResultPre.hidden = true
3708
3935
  scheduleRunResultPre.textContent = ''
@@ -3865,14 +4092,19 @@
3865
4092
  if (!scheduleManageView) return
3866
4093
  setScheduleContentView('list')
3867
4094
  setScheduleManageVisible(true)
4095
+ scheduleManageState.page = 1
3868
4096
  if (scheduleTaskTableBody) scheduleTaskTableBody.innerHTML = ''
4097
+ if (scheduleTasksPager) {
4098
+ scheduleTasksPager.innerHTML = ''
4099
+ scheduleTasksPager.hidden = true
4100
+ }
3869
4101
  if (scheduleManageEmpty) {
3870
4102
  scheduleManageEmpty.hidden = false
3871
4103
  scheduleManageEmpty.textContent = '加载中…'
3872
4104
  scheduleManageEmpty.classList.remove('is-error')
3873
4105
  }
3874
4106
  try {
3875
- await loadScheduleTasks()
4107
+ await loadScheduleTasks(1)
3876
4108
  } catch (e) {
3877
4109
  if (scheduleManageEmpty) {
3878
4110
  scheduleManageEmpty.hidden = false
@@ -5379,6 +5611,7 @@
5379
5611
  const text = getPromptPlainText()
5380
5612
  const trimmed = text.trim()
5381
5613
  if (!trimmed) return
5614
+ resetApiErrorTurnState()
5382
5615
  setPendingUserEcho(trimmed)
5383
5616
  const payload = { type: 'prompt', text: text }
5384
5617
  autoScrollState.mode = 'FORCE_ON_SEND'
@@ -8469,14 +8702,6 @@
8469
8702
  : ''
8470
8703
  const value = String(raw ?? '').trim()
8471
8704
  if (!value) continue
8472
- if (field.key === TUITUI_CHANNEL_SESSION_KEY) {
8473
- if (!TUITUI_CHANNEL_SESSION_ALLOWED.has(value)) {
8474
- return {
8475
- ok: false,
8476
- message: 'TUITUI_CHANNEL_SESSION 只允许 0(禁用)或 1(启用)',
8477
- }
8478
- }
8479
- }
8480
8705
  out[field.key] = value
8481
8706
  }
8482
8707
  return { ok: true, env: out }
@@ -7,8 +7,6 @@ import {
7
7
  readFileSync,
8
8
  writeFileSync,
9
9
  } from "node:fs";
10
- import { execFile } from "node:child_process";
11
- import { promisify } from "node:util";
12
10
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
13
11
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
14
12
  import * as z from "zod";
@@ -36,10 +34,6 @@ const projectSettingsLocalFile = join(
36
34
  projectSettingsDir,
37
35
  "settings.local.json",
38
36
  );
39
- const execFileAsync = promisify(execFile);
40
- const CLAUDE_BIN = process.env.CLAUDE_BIN || "claude";
41
- const AUTO_REPLY_ENABLED =
42
- String(process.env.TUITUI_AUTO_REPLY || "true").toLowerCase() !== "false";
43
37
  const account = {
44
38
  appId: process.env.TUITUI_APP_ID,
45
39
  appSecret: process.env.TUITUI_APP_SECRET,