@auto-ai/agent 2.1.213 → 2.1.214

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 (509) hide show
  1. package/dist/safe-a/404/index.html +1 -1
  2. package/dist/safe-a/404.html +1 -1
  3. package/dist/safe-a/_next/static/{ydg1pWMUiUWUhsV4OnPd9 → 8K8MheZHG-fXZxruG2Nc8}/_buildManifest.js +1 -1
  4. package/dist/safe-a/_next/static/chunks/{ab522ef4566e28db.js → 01766c1e2fdff227.js} +1 -1
  5. package/dist/safe-a/_next/static/chunks/{aa34ec2d74f7775c.js → 04c9439163b67552.js} +1 -1
  6. package/dist/safe-a/_next/static/chunks/05e1926dc5c477b7.js +1 -0
  7. package/dist/safe-a/_next/static/chunks/{e7d6284971d07422.js → 06b923aa1177f43f.js} +1 -1
  8. package/dist/safe-a/_next/static/chunks/{9924bd3807982f9c.js → 092c97532613af2a.js} +1 -1
  9. package/dist/safe-a/_next/static/chunks/0b5e5b964346a287.js +1 -0
  10. package/dist/safe-a/_next/static/chunks/0b639ff4f1971d14.js +1 -0
  11. package/dist/safe-a/_next/static/chunks/{7cd0d9159e722599.js → 0b69dba7f1e63f30.js} +1 -1
  12. package/dist/safe-a/_next/static/chunks/{af07509fa7bac8c4.js → 0ce6504fc10ce408.js} +1 -1
  13. package/dist/safe-a/_next/static/chunks/{e07906d264057e7b.js → 0e1e7d5f7a375308.js} +1 -1
  14. package/dist/safe-a/_next/static/chunks/{00b0744649a5e608.js → 0e8139882ad093d2.js} +1 -1
  15. package/dist/safe-a/_next/static/chunks/0ea5a62c3f30dc56.js +1 -0
  16. package/dist/safe-a/_next/static/chunks/0f1810e4c6b0dd0c.js +1 -0
  17. package/dist/safe-a/_next/static/chunks/{70b95d96e33a5d63.js → 0fa097a572705cfa.js} +1 -1
  18. package/dist/safe-a/_next/static/chunks/{faf267ae8eaabb78.js → 0fb0d030e8dee231.js} +1 -1
  19. package/dist/safe-a/_next/static/chunks/{ed4322c3137a7cbf.js → 0fd3876e0d9e8acc.js} +1 -1
  20. package/dist/safe-a/_next/static/chunks/{c43009f5a3f83289.js → 106955e3cc6a6843.js} +1 -1
  21. package/dist/safe-a/_next/static/chunks/{3f18c3fa64301e74.js → 1078bc1642db53ad.js} +1 -1
  22. package/dist/safe-a/_next/static/chunks/{a0256e00bbdc334c.js → 108a0b77418f1d31.js} +1 -1
  23. package/dist/safe-a/_next/static/chunks/1289fc2bb1119e18.js +1 -0
  24. package/dist/safe-a/_next/static/chunks/{967dfe61a543e533.js → 13b54d70a1ee1de7.js} +1 -1
  25. package/dist/safe-a/_next/static/chunks/{54a2df4508a1c311.js → 13f94fc3dda88c90.js} +1 -1
  26. package/dist/safe-a/_next/static/chunks/155374df9f6b4b9a.js +1 -0
  27. package/dist/safe-a/_next/static/chunks/{12932eb7d288b09b.js → 16ea1d3cf6db8a53.js} +1 -1
  28. package/dist/safe-a/_next/static/chunks/{23f50ba74d421ab3.js → 170f7361bd4d33e2.js} +1 -1
  29. package/dist/safe-a/_next/static/chunks/17722e3ac4e00587.js +1 -0
  30. package/dist/safe-a/_next/static/chunks/{c0960892f67b4256.js → 179a5dac78ab2cb9.js} +1 -1
  31. package/dist/safe-a/_next/static/chunks/{966730983f55a7c6.js → 1818d7a661948f6b.js} +1 -1
  32. package/dist/safe-a/_next/static/chunks/18977fe8f51209aa.js +1 -0
  33. package/dist/safe-a/_next/static/chunks/{57e13ec897ff78d6.js → 19584f955475ce91.js} +1 -1
  34. package/dist/safe-a/_next/static/chunks/1974f51c298bce94.js +1 -0
  35. package/dist/safe-a/_next/static/chunks/{948dc342d4746ffc.js → 19c1491e85e22b3b.js} +1 -1
  36. package/dist/safe-a/_next/static/chunks/{a8696c4a576878ae.js → 19ca17e5015c42a3.js} +1 -1
  37. package/dist/safe-a/_next/static/chunks/{03039556684e9812.js → 1a4b553856a8ffdf.js} +1 -1
  38. package/dist/safe-a/_next/static/chunks/{93588b2335ca95de.js → 1b55c29b8cad4a50.js} +1 -1
  39. package/dist/safe-a/_next/static/chunks/{878dd96f8fcd6bd4.js → 1bb28f71c19fa824.js} +1 -1
  40. package/dist/safe-a/_next/static/chunks/1bfa645704d9149a.js +1 -0
  41. package/dist/safe-a/_next/static/chunks/{fd3f75ac79c1d04e.js → 1c9321874fea5f0d.js} +1 -1
  42. package/dist/safe-a/_next/static/chunks/{8b1990cf2eb41663.js → 1d3e7886be9f671c.js} +1 -1
  43. package/dist/safe-a/_next/static/chunks/{d2bba4dbd6e24f7e.js → 1e17456ccebc9cd2.js} +1 -1
  44. package/dist/safe-a/_next/static/chunks/{2bd512c6acf9ee9b.js → 1e43922998a0ed2f.js} +1 -1
  45. package/dist/safe-a/_next/static/chunks/{d653880800910810.js → 1fec17d16aff9eed.js} +1 -1
  46. package/dist/safe-a/_next/static/chunks/{a39dba23f5098cde.js → 2046937bffedf074.js} +1 -1
  47. package/dist/safe-a/_next/static/chunks/219a3413675ba6f1.js +1 -0
  48. package/dist/safe-a/_next/static/chunks/{8cee526b3846c40b.js → 2326118ef1328bc5.js} +1 -1
  49. package/dist/safe-a/_next/static/chunks/236775e4ec4f8a94.js +1 -0
  50. package/dist/safe-a/_next/static/chunks/{afab34a5bb437673.js → 242529c986baeb00.js} +1 -1
  51. package/dist/safe-a/_next/static/chunks/27069b3f310e0a86.js +1 -0
  52. package/dist/safe-a/_next/static/chunks/{dfd8167d74bbaa3a.js → 270d7571d2eea071.js} +1 -1
  53. package/dist/safe-a/_next/static/chunks/{591fe54d06e0a33e.js → 27c407347ce26b78.js} +1 -1
  54. package/dist/safe-a/_next/static/chunks/{03af20498d43b518.js → 27ff2e69b2fd19e5.js} +1 -1
  55. package/dist/safe-a/_next/static/chunks/291c07da1c127dc1.js +1 -0
  56. package/dist/safe-a/_next/static/chunks/29676075a0390867.js +1 -0
  57. package/dist/safe-a/_next/static/chunks/{2be2d49054d4606c.js → 2c6d585a97629311.js} +1 -1
  58. package/dist/safe-a/_next/static/chunks/{1409701c73ffe517.js → 2df3e464b6247e75.js} +1 -1
  59. package/dist/safe-a/_next/static/chunks/2e574acbf68e77ff.js +1 -0
  60. package/dist/safe-a/_next/static/chunks/2e57b45e52bb735e.js +1 -0
  61. package/dist/safe-a/_next/static/chunks/{c537d051140acc61.js → 2ec6d7ddb4c04987.js} +1 -1
  62. package/dist/safe-a/_next/static/chunks/{dee1daaeed29e5a2.js → 2f7d30e66e995b02.js} +1 -1
  63. package/dist/safe-a/_next/static/chunks/{66247e9b3cf471f5.js → 2fab2306850ac97b.js} +1 -1
  64. package/dist/safe-a/_next/static/chunks/{9721e6d173bcda17.js → 2fcc6298b6dd7a82.js} +1 -1
  65. package/dist/safe-a/_next/static/chunks/{ccbe0fe39b523768.js → 303d9c2a2c956f25.js} +1 -1
  66. package/dist/safe-a/_next/static/chunks/32a7ca0a75a897da.js +1 -0
  67. package/dist/safe-a/_next/static/chunks/{06e2cd3fae94aae8.js → 32b4d63e10d31351.js} +1 -1
  68. package/dist/safe-a/_next/static/chunks/{4f55f5dfceddc1fe.js → 32b9bdd82a961878.js} +1 -1
  69. package/dist/safe-a/_next/static/chunks/3509a66e019ceae3.js +1 -0
  70. package/dist/safe-a/_next/static/chunks/{ae7e9c73a1d653fd.js → 3520f1af0a1b7f66.js} +1 -1
  71. package/dist/safe-a/_next/static/chunks/{7b6898a7f9df6495.js → 354aaa2e36b75b81.js} +1 -1
  72. package/dist/safe-a/_next/static/chunks/{e4776ea06fa1720a.js → 3590c4a4f40cdb5d.js} +1 -1
  73. package/dist/safe-a/_next/static/chunks/{2ccdfcf9ecfa2ea8.js → 35f1637c2feb232d.js} +1 -1
  74. package/dist/safe-a/_next/static/chunks/{94d40dcd515ca4ad.js → 37bbbf907196a5bf.js} +1 -1
  75. package/dist/safe-a/_next/static/chunks/{7ed753f2db91bc38.js → 37cfaa4963ac51f3.js} +1 -1
  76. package/dist/safe-a/_next/static/chunks/{29a317486c4ab7d7.js → 3934bd57f459566e.js} +1 -1
  77. package/dist/safe-a/_next/static/chunks/{a3af4dcdb725b47f.js → 3a947667fddbdd53.js} +1 -1
  78. package/dist/safe-a/_next/static/chunks/3aac5736e5781b46.js +1 -0
  79. package/dist/safe-a/_next/static/chunks/{f7d33f46dfbddf65.js → 3ae23df392f9bed8.js} +1 -1
  80. package/dist/safe-a/_next/static/chunks/{65ee07c4b6209141.js → 3ae4e2529aa621fb.js} +1 -1
  81. package/dist/safe-a/_next/static/chunks/{30f37e8e02339538.js → 3b2bb9f17546ee3e.js} +1 -1
  82. package/dist/safe-a/_next/static/chunks/{02339beb679bec8d.js → 3bcd531d40d6c019.js} +1 -1
  83. package/dist/safe-a/_next/static/chunks/3c695d1c2efbc749.js +1 -0
  84. package/dist/safe-a/_next/static/chunks/3d8e9a96a69193d4.js +1 -0
  85. package/dist/safe-a/_next/static/chunks/3dcb1dcf23e7ab9c.js +1 -0
  86. package/dist/safe-a/_next/static/chunks/3e2ea3a7fe64826d.js +1 -0
  87. package/dist/safe-a/_next/static/chunks/{472047ea96adfca5.js → 3e9c98df7d56e9b2.js} +1 -1
  88. package/dist/safe-a/_next/static/chunks/{3da255bcf22e013d.js → 3ec05a61e93547d3.js} +1 -1
  89. package/dist/safe-a/_next/static/chunks/3f6fe8a1903009ea.js +1 -0
  90. package/dist/safe-a/_next/static/chunks/3fb4674edcb2d726.js +1 -0
  91. package/dist/safe-a/_next/static/chunks/{c013a3a3b1574b7d.js → 3fd03b9ed21b30fc.js} +1 -1
  92. package/dist/safe-a/_next/static/chunks/40268f8e3ff0314e.js +1 -0
  93. package/dist/safe-a/_next/static/chunks/40a2fb9cf3a7e6fd.js +1 -0
  94. package/dist/safe-a/_next/static/chunks/{dabd2cc5e900d556.js → 40cc0252b2f1d855.js} +1 -1
  95. package/dist/safe-a/_next/static/chunks/{19a47cfc8ca4c0a7.js → 413a7be096275d7f.js} +1 -1
  96. package/dist/safe-a/_next/static/chunks/{e6c441f81a8ea81c.js → 44cbf68ad086a6a3.js} +1 -1
  97. package/dist/safe-a/_next/static/chunks/{435e18828af1d066.js → 459d401d9f9e5b9f.js} +1 -1
  98. package/dist/safe-a/_next/static/chunks/45ab9a1f693d609c.js +1 -0
  99. package/dist/safe-a/_next/static/chunks/{9db0d8129d6b7b5e.js → 481a2858f7df907d.js} +1 -1
  100. package/dist/safe-a/_next/static/chunks/{de208f3610c12b2c.js → 49df9708d6328c4a.js} +1 -1
  101. package/dist/safe-a/_next/static/chunks/{ad22e1613386ba8d.js → 4a340ea4ac145216.js} +1 -1
  102. package/dist/safe-a/_next/static/chunks/4a426c156537f974.js +1 -0
  103. package/dist/safe-a/_next/static/chunks/4be4ca8f1ec9c171.js +1 -0
  104. package/dist/safe-a/_next/static/chunks/4be779bcbd94352d.js +1 -0
  105. package/dist/safe-a/_next/static/chunks/4c33a1cc6db74105.js +1 -0
  106. package/dist/safe-a/_next/static/chunks/4d129d4e15c8c424.js +1 -0
  107. package/dist/safe-a/_next/static/chunks/{c84ea2dc8d3281e6.js → 4df298f5b420f474.js} +1 -1
  108. package/dist/safe-a/_next/static/chunks/{dfe4d8ffc37b96da.js → 4dfbfdff43b8479b.js} +1 -1
  109. package/dist/safe-a/_next/static/chunks/5069ee4aa806b0ea.js +1 -0
  110. package/dist/safe-a/_next/static/chunks/519049cd74a40910.js +1 -0
  111. package/dist/safe-a/_next/static/chunks/522518d740397639.js +1 -0
  112. package/dist/safe-a/_next/static/chunks/52e2164e45febae6.js +1 -0
  113. package/dist/safe-a/_next/static/chunks/{f8757d2c1a969081.js → 534b5acf573aa491.js} +1 -1
  114. package/dist/safe-a/_next/static/chunks/538cc02e54714b23.js +1 -0
  115. package/dist/safe-a/_next/static/chunks/{97d506a00590396c.js → 53be52c43a14557c.js} +1 -1
  116. package/dist/safe-a/_next/static/chunks/54c43751bf4c4da2.js +1 -0
  117. package/dist/safe-a/_next/static/chunks/{0c19efa935cdd816.js → 55087cc98e6237f1.js} +1 -1
  118. package/dist/safe-a/_next/static/chunks/{5c2a7e118fa66960.js → 55f8de91b4803778.js} +1 -1
  119. package/dist/safe-a/_next/static/chunks/{569dda34679bca70.js → 560ca23f77c0e819.js} +1 -1
  120. package/dist/safe-a/_next/static/chunks/{7c2d68248d759f50.js → 5798600d2ea8a3e8.js} +1 -1
  121. package/dist/safe-a/_next/static/chunks/{6e145bea7acc82b4.js → 57bb853857f3de83.js} +1 -1
  122. package/dist/safe-a/_next/static/chunks/{65963496d7fa49bc.js → 588e6975a7bd6671.js} +1 -1
  123. package/dist/safe-a/_next/static/chunks/58dfdb6e018c4a57.js +1 -0
  124. package/dist/safe-a/_next/static/chunks/{648649ebbc7565b9.js → 5a0b630678282d4f.js} +1 -1
  125. package/dist/safe-a/_next/static/chunks/{1f90e84b5a4dad81.js → 5a3e355216280144.js} +1 -1
  126. package/dist/safe-a/_next/static/chunks/{63f33483697b26ca.js → 5a4c198fd41e8ec4.js} +1 -1
  127. package/dist/safe-a/_next/static/chunks/5b916c9dc09e323c.js +1 -0
  128. package/dist/safe-a/_next/static/chunks/5ccd5a6ac9c2f980.js +1 -0
  129. package/dist/safe-a/_next/static/chunks/{eb248f97f593a288.js → 5d5333084191fb10.js} +1 -1
  130. package/dist/safe-a/_next/static/chunks/5d79b7f202080232.js +1 -0
  131. package/dist/safe-a/_next/static/chunks/{a367a4ab4b91ce6b.js → 5ea79c109cbe8a86.js} +1 -1
  132. package/dist/safe-a/_next/static/chunks/{daaffc256846db90.js → 5ee72092303043ef.js} +1 -1
  133. package/dist/safe-a/_next/static/chunks/{9583c5cc3861200c.js → 5fc8a5235ddfa787.js} +1 -1
  134. package/dist/safe-a/_next/static/chunks/{8c97e3b556b32001.js → 61ce261738313b8a.js} +1 -1
  135. package/dist/safe-a/_next/static/chunks/{503bbec2e3179a3c.js → 62d925bcc8518b6f.js} +1 -1
  136. package/dist/safe-a/_next/static/chunks/63ec034afca4b5d6.js +1 -0
  137. package/dist/safe-a/_next/static/chunks/{547eb82208058c71.js → 644aa76620718c98.js} +1 -1
  138. package/dist/safe-a/_next/static/chunks/{6d0bf0ac1fdb7eab.js → 648b653b36802fdc.js} +1 -1
  139. package/dist/safe-a/_next/static/chunks/{1d737ed6e08d2466.js → 6522643341a0921c.js} +1 -1
  140. package/dist/safe-a/_next/static/chunks/{829196dbf7eddb51.js → 65fb49c8a7f59842.js} +1 -1
  141. package/dist/safe-a/_next/static/chunks/{e878ffaf394e2c30.js → 65fe0975412ff703.js} +1 -1
  142. package/dist/safe-a/_next/static/chunks/6677c64fd587e78c.js +1 -0
  143. package/dist/safe-a/_next/static/chunks/{ea136b1a439307e8.js → 66b30159915524db.js} +1 -1
  144. package/dist/safe-a/_next/static/chunks/{cf99b249b986e2bd.js → 66ed07a735eac6e3.js} +1 -1
  145. package/dist/safe-a/_next/static/chunks/6785757cc05fec19.js +1 -0
  146. package/dist/safe-a/_next/static/chunks/{8aafb8ec5208a445.js → 67c9db5577080125.js} +1 -1
  147. package/dist/safe-a/_next/static/chunks/{ada2807c297fe674.js → 68bd2bd64624e20d.js} +1 -1
  148. package/dist/safe-a/_next/static/chunks/{774e554c11c8759a.js → 692e7ee14236fefb.js} +1 -1
  149. package/dist/safe-a/_next/static/chunks/696e3ddd135b85b4.js +1 -0
  150. package/dist/safe-a/_next/static/chunks/{dcdc329f64f1a7a8.js → 69cfdbc51cf2d3c3.js} +1 -1
  151. package/dist/safe-a/_next/static/chunks/{1aaf9fb00fb53ef9.js → 6ae709c575c74979.js} +1 -1
  152. package/dist/safe-a/_next/static/chunks/{dfbd9d8a4137edd6.js → 6b652524b5ffdd9e.js} +1 -1
  153. package/dist/safe-a/_next/static/chunks/{645741ee91707763.js → 6b7c3c962a14dc29.js} +1 -1
  154. package/dist/safe-a/_next/static/chunks/{ec24f7a0593636d9.js → 6bc7c57f119ad4f6.js} +1 -1
  155. package/dist/safe-a/_next/static/chunks/{2c0b2fd9fb2fea66.js → 6c3b2d0be1c633b6.js} +1 -1
  156. package/dist/safe-a/_next/static/chunks/{29cf9e89be8a7f75.js → 6cc2f7f962cdd082.js} +1 -1
  157. package/dist/safe-a/_next/static/chunks/6d1f15f3eb86ea37.js +1 -0
  158. package/dist/safe-a/_next/static/chunks/{3e45de4a81d1f7a6.js → 6d4209e94b1aafe6.js} +1 -1
  159. package/dist/safe-a/_next/static/chunks/{c43f94053172eb84.js → 6f3afa83656eab67.js} +1 -1
  160. package/dist/safe-a/_next/static/chunks/{b4d570502774dffb.js → 6f4460bd0b8a57af.js} +1 -1
  161. package/dist/safe-a/_next/static/chunks/{ec048ffab26ebcd6.js → 6fe835d41fdbd638.js} +1 -1
  162. package/dist/safe-a/_next/static/chunks/{6349c7cf3b394b81.js → 70459a2a4c45653e.js} +1 -1
  163. package/dist/safe-a/_next/static/chunks/{c5fd875d1d9fd6c4.js → 7137c7537c459c31.js} +1 -1
  164. package/dist/safe-a/_next/static/chunks/{740732a162598c49.js → 715c085d7c10eeda.js} +1 -1
  165. package/dist/safe-a/_next/static/chunks/{42d0ae4192d72f8e.js → 71668b2d16d048d8.js} +1 -1
  166. package/dist/safe-a/_next/static/chunks/71d3a80bc9d53b07.js +1 -0
  167. package/dist/safe-a/_next/static/chunks/{5c076874caf0532e.js → 71e3a90489469c28.js} +1 -1
  168. package/dist/safe-a/_next/static/chunks/{d0d06ea64246c2e0.js → 72a56bd75075fd83.js} +1 -1
  169. package/dist/safe-a/_next/static/chunks/{957b35b92a00be9d.js → 72ef1696f44fcf61.js} +1 -1
  170. package/dist/safe-a/_next/static/chunks/{5076e29ddf662e81.js → 736441266ceb14e2.js} +1 -1
  171. package/dist/safe-a/_next/static/chunks/{0f93a62e5e2db48b.js → 73cbf0064096e28c.js} +1 -1
  172. package/dist/safe-a/_next/static/chunks/7491dc26b3b05de9.js +1 -0
  173. package/dist/safe-a/_next/static/chunks/{ae1404fdd6ec935a.js → 751de74a23cc9036.js} +1 -1
  174. package/dist/safe-a/_next/static/chunks/{e632e1b120215697.js → 756b6c2e620386ff.js} +1 -1
  175. package/dist/safe-a/_next/static/chunks/{5ca0c9bb26daf732.js → 75a396e1752cd59d.js} +1 -1
  176. package/dist/safe-a/_next/static/chunks/764c541428e1c6eb.js +1 -0
  177. package/dist/safe-a/_next/static/chunks/{e7f1683dcd85bf06.js → 79128afded6e01d9.js} +1 -1
  178. package/dist/safe-a/_next/static/chunks/7988d5ea63356e10.js +1 -0
  179. package/dist/safe-a/_next/static/chunks/{cd733da27bed8af2.js → 7aa69fd5d97b7146.js} +1 -1
  180. package/dist/safe-a/_next/static/chunks/7b9c09d0ce43f1c2.js +1 -0
  181. package/dist/safe-a/_next/static/chunks/{9ae8f05f80dedfa4.js → 7d3bf918bccde738.js} +1 -1
  182. package/dist/safe-a/_next/static/chunks/7dbb8abebf50d816.js +1 -0
  183. package/dist/safe-a/_next/static/chunks/{fd9b8164ea743aa0.js → 7dd32128bdee61f7.js} +1 -1
  184. package/dist/safe-a/_next/static/chunks/7ef348801eff6590.js +1 -0
  185. package/dist/safe-a/_next/static/chunks/{2f35f32799fb08ac.js → 7f6e82ac63db5eff.js} +1 -1
  186. package/dist/safe-a/_next/static/chunks/{738c808ddc82ea44.js → 7fd45fb9cf0995f3.js} +1 -1
  187. package/dist/safe-a/_next/static/chunks/82614b5de9f78114.js +1 -0
  188. package/dist/safe-a/_next/static/chunks/{a12eeb7c77a7506f.js → 84185f4bb07ccbd7.js} +1 -1
  189. package/dist/safe-a/_next/static/chunks/85fc05549f7f100c.js +1 -0
  190. package/dist/safe-a/_next/static/chunks/{b0638abf4a6eb85f.js → 87e12ecbe9521f9b.js} +1 -1
  191. package/dist/safe-a/_next/static/chunks/{86c0a63bf95598a3.js → 88a999988f915988.js} +1 -1
  192. package/dist/safe-a/_next/static/chunks/88bc97899d2ce4e5.js +1 -0
  193. package/dist/safe-a/_next/static/chunks/8989a60219113c80.js +1 -0
  194. package/dist/safe-a/_next/static/chunks/{8e33e395e6224908.js → 8bdc142fad5847ed.js} +1 -1
  195. package/dist/safe-a/_next/static/chunks/{6818b9385873d081.js → 8deb0392842e5a01.js} +1 -1
  196. package/dist/safe-a/_next/static/chunks/8e5b2f279f1a9975.js +1 -0
  197. package/dist/safe-a/_next/static/chunks/{99ce8e2a747001a9.js → 8f038ff914c4b0df.js} +1 -1
  198. package/dist/safe-a/_next/static/chunks/{eaa820432740042a.js → 8f5be275907dd98c.js} +1 -1
  199. package/dist/safe-a/_next/static/chunks/{0518cc63903bebac.js → 9037530b0f1d5783.js} +1 -1
  200. package/dist/safe-a/_next/static/chunks/{b4db35dceb9577e1.js → 9078ad91aa20dca0.js} +1 -1
  201. package/dist/safe-a/_next/static/chunks/91e0df5a4c9d0bcd.js +1 -0
  202. package/dist/safe-a/_next/static/chunks/92c3617a4e22a464.js +1 -0
  203. package/dist/safe-a/_next/static/chunks/{eb34cdf40f4c4d62.js → 932d3fcc2596e8d5.js} +1 -1
  204. package/dist/safe-a/_next/static/chunks/937e26e6e01d9ec9.js +1 -0
  205. package/dist/safe-a/_next/static/chunks/93bfaf233e66b48c.js +1 -0
  206. package/dist/safe-a/_next/static/chunks/{3422b2c2f9bdf0e0.js → 94029062f236cadc.js} +1 -1
  207. package/dist/safe-a/_next/static/chunks/94e88cfda11697d2.js +1 -0
  208. package/dist/safe-a/_next/static/chunks/{55e32e78e4db3889.js → 95c4d26e469d1d8f.js} +1 -1
  209. package/dist/safe-a/_next/static/chunks/{b717d3610f87602f.js → 96026b5eb5d2566b.js} +1 -1
  210. package/dist/safe-a/_next/static/chunks/{ede1765e6899133a.js → 962a27e9c634b823.js} +1 -1
  211. package/dist/safe-a/_next/static/chunks/{093669121f3b7aa1.js → 966fb5830ce1029c.js} +1 -1
  212. package/dist/safe-a/_next/static/chunks/{aa8c7d3d99a14fdb.js → 9724567275720686.js} +1 -1
  213. package/dist/safe-a/_next/static/chunks/{aff6654f4fbc26b0.js → 98e243fb5992a71c.js} +1 -1
  214. package/dist/safe-a/_next/static/chunks/{fddfcced721d9669.js → 9a7b2a483b109c0a.js} +1 -1
  215. package/dist/safe-a/_next/static/chunks/9b3df6b20a9625d5.js +1 -0
  216. package/dist/safe-a/_next/static/chunks/9c6c00fa68012026.js +1 -0
  217. package/dist/safe-a/_next/static/chunks/{46568a8bad984d09.js → 9cb28a1dacb7ea6d.js} +1 -1
  218. package/dist/safe-a/_next/static/chunks/9ccf7a8bca1730bf.js +1 -0
  219. package/dist/safe-a/_next/static/chunks/{c2e5be103cef6113.js → 9e96c84b86d1bbf3.js} +1 -1
  220. package/dist/safe-a/_next/static/chunks/{38dcdbfb8c6966a9.js → 9f0ee4783140adf1.js} +1 -1
  221. package/dist/safe-a/_next/static/chunks/9fefea69ec034a63.js +1 -0
  222. package/dist/safe-a/_next/static/chunks/{d9bf3f0f6088ac8c.js → a1b9abf15c0f7655.js} +1 -1
  223. package/dist/safe-a/_next/static/chunks/{65159d9aa3ecc0c9.js → a37aa474433d29e3.js} +1 -1
  224. package/dist/safe-a/_next/static/chunks/a437ab944fe911da.js +1 -0
  225. package/dist/safe-a/_next/static/chunks/a4776dc3e00e5ab0.js +1 -0
  226. package/dist/safe-a/_next/static/chunks/{2331e2a388a9bd50.js → a5df6158856685f1.js} +1 -1
  227. package/dist/safe-a/_next/static/chunks/{8d76667bd2633e46.js → a6737fc58619eae5.js} +1 -1
  228. package/dist/safe-a/_next/static/chunks/{217c50478c5ea4d7.js → a6a98f9278704b6a.js} +1 -1
  229. package/dist/safe-a/_next/static/chunks/{6ecccb36549d3028.js → a7277c96f3669bea.js} +1 -1
  230. package/dist/safe-a/_next/static/chunks/{9b0ac8da8e1c0d7e.js → a9fed5c43d754a96.js} +1 -1
  231. package/dist/safe-a/_next/static/chunks/{6e663a2e3562125c.js → aa0a4c596151b22b.js} +1 -1
  232. package/dist/safe-a/_next/static/chunks/{f7ad257814e6e947.js → aa867a1fa8b105e1.js} +1 -1
  233. package/dist/safe-a/_next/static/chunks/abdf99ba76e0f571.js +1 -0
  234. package/dist/safe-a/_next/static/chunks/ad4ba491cf12423f.js +5 -0
  235. package/dist/safe-a/_next/static/chunks/{f40b91cb7cc58cf2.js → ad50a7d15cd9d9d8.js} +1 -1
  236. package/dist/safe-a/_next/static/chunks/{0708a65cc3ecf56b.js → af7b0bd1b40ad066.js} +1 -1
  237. package/dist/safe-a/_next/static/chunks/{9e9339584dbc8172.js → b24e3802454a5567.js} +1 -1
  238. package/dist/safe-a/_next/static/chunks/{e1416a0b2152bdbf.js → b29a85c3dae2bb9c.js} +1 -1
  239. package/dist/safe-a/_next/static/chunks/b30ee3cb6af32088.js +1 -0
  240. package/dist/safe-a/_next/static/chunks/b30f1da4e57f459a.js +1 -0
  241. package/dist/safe-a/_next/static/chunks/{129875fd1b096964.js → b360c9fc22dbf831.js} +1 -1
  242. package/dist/safe-a/_next/static/chunks/{ddc8a591c8943264.js → b3e79c76be269ccc.js} +1 -1
  243. package/dist/safe-a/_next/static/chunks/{82aea21a16d00076.js → b429be4e16fa1e00.js} +1 -1
  244. package/dist/safe-a/_next/static/chunks/{e66819cb4afcfe87.js → b61ec36c9bbca3e0.js} +1 -1
  245. package/dist/safe-a/_next/static/chunks/b62abd0d2ca9f56f.js +1 -0
  246. package/dist/safe-a/_next/static/chunks/{405cd8dd7faa6eaf.js → b65565677c3e8c0a.js} +1 -1
  247. package/dist/safe-a/_next/static/chunks/{37f3ea0b3cf40bca.js → b66afb4b0be97af8.js} +1 -1
  248. package/dist/safe-a/_next/static/chunks/{d53ff6336a32e4c5.js → b69f987a60b05db3.js} +1 -1
  249. package/dist/safe-a/_next/static/chunks/{9d65a2db77bf6c63.js → b78822282754a47c.js} +1 -1
  250. package/dist/safe-a/_next/static/chunks/b92c67520afabac2.js +1 -0
  251. package/dist/safe-a/_next/static/chunks/baed816b83bbd5b5.js +1 -0
  252. package/dist/safe-a/_next/static/chunks/{38e76abda882c1a8.js → bbaef90b0ce43019.js} +1 -1
  253. package/dist/safe-a/_next/static/chunks/{43392297dd43555d.js → bbcf9daa108b22fb.js} +1 -1
  254. package/dist/safe-a/_next/static/chunks/{f05af2c706c87fb5.js → bc7bda699a7ccda1.js} +1 -1
  255. package/dist/safe-a/_next/static/chunks/{f0a3b313fc0fcace.js → bd1f33816fa01c16.js} +1 -1
  256. package/dist/safe-a/_next/static/chunks/bd2dcf98c9b362f6.js +1 -0
  257. package/dist/safe-a/_next/static/chunks/{cb8a82631d87b798.js → bd984c5404403e7d.js} +1 -1
  258. package/dist/safe-a/_next/static/chunks/{6fc97877fbcf3403.js → bf2262100cea8c64.js} +1 -1
  259. package/dist/safe-a/_next/static/chunks/bf2c1c402dbcccdf.js +1 -0
  260. package/dist/safe-a/_next/static/chunks/bfc6ee42cec583d5.js +1 -0
  261. package/dist/safe-a/_next/static/chunks/{c5932397b84e3c27.js → c15069059c9d1f53.js} +1 -1
  262. package/dist/safe-a/_next/static/chunks/{9de7a5feb6be8bc3.js → c1615032cbbf5b56.js} +1 -1
  263. package/dist/safe-a/_next/static/chunks/{4c87634b39751c56.js → c2546d2b493dd907.js} +1 -1
  264. package/dist/safe-a/_next/static/chunks/{82cdf7e6dbe7070d.js → c3669d468d3f2b3a.js} +1 -1
  265. package/dist/safe-a/_next/static/chunks/c3b49937059d3d70.js +1 -0
  266. package/dist/safe-a/_next/static/chunks/{5a43f7cd89a42167.js → c5b5aba98d38ef23.js} +1 -1
  267. package/dist/safe-a/_next/static/chunks/c5be27a596acfa18.js +1 -0
  268. package/dist/safe-a/_next/static/chunks/{6e4e92cbcf961542.js → c6cc32860b96278f.js} +1 -1
  269. package/dist/safe-a/_next/static/chunks/{997894582876b3bb.js → c725524ea13a50ab.js} +1 -1
  270. package/dist/safe-a/_next/static/chunks/c8942bee3aebddae.js +1 -0
  271. package/dist/safe-a/_next/static/chunks/{fc3c1b765cc5906d.js → c8e45be36912e439.js} +1 -1
  272. package/dist/safe-a/_next/static/chunks/{5e4225518ccc365e.js → c933951b3113492f.js} +1 -1
  273. package/dist/safe-a/_next/static/chunks/c9813626ba898586.js +1 -0
  274. package/dist/safe-a/_next/static/chunks/ca2725c2b45709c1.js +1 -0
  275. package/dist/safe-a/_next/static/chunks/{47098fcba8e98974.js → caf4049dc563940e.js} +1 -1
  276. package/dist/safe-a/_next/static/chunks/cafadd69e03e6c4b.js +1 -0
  277. package/dist/safe-a/_next/static/chunks/{57bc9169370081d7.js → cba2741f84ef36ed.js} +1 -1
  278. package/dist/safe-a/_next/static/chunks/{47d485f30e419da8.js → cccecf726769787f.js} +1 -1
  279. package/dist/safe-a/_next/static/chunks/{261bf96e2331ea0a.js → cd0e7e3cc303b4e4.js} +1 -1
  280. package/dist/safe-a/_next/static/chunks/cd4556cbed1f8957.js +1 -0
  281. package/dist/safe-a/_next/static/chunks/{2f104b4be1990722.js → cd5eec7d305aa041.js} +1 -1
  282. package/dist/safe-a/_next/static/chunks/{3f74431cdf49e5e1.js → cfd9aff2dcf3adb9.js} +1 -1
  283. package/dist/safe-a/_next/static/chunks/{564507763428bfb0.js → d09636e7bcf60ad1.js} +1 -1
  284. package/dist/safe-a/_next/static/chunks/{dd59d0e313916320.js → d2d432a9facf4278.js} +1 -1
  285. package/dist/safe-a/_next/static/chunks/{fdf535baa39c0e26.js → d2e37b6d5ff62bcb.js} +1 -1
  286. package/dist/safe-a/_next/static/chunks/{fe840e6cda1c115e.js → d33a24782888b869.js} +1 -1
  287. package/dist/safe-a/_next/static/chunks/{7f611b9b215dfcef.js → d33e49aabd798892.js} +1 -1
  288. package/dist/safe-a/_next/static/chunks/{7d7ef3758ed7347b.js → d3990c1e87ef3e23.js} +1 -1
  289. package/dist/safe-a/_next/static/chunks/d433c87b0bc69cda.js +1 -0
  290. package/dist/safe-a/_next/static/chunks/{9a63abc493c1c840.js → d47cd27ac08f5429.js} +1 -1
  291. package/dist/safe-a/_next/static/chunks/{0e68cace7cf0464c.js → d599ef4d0f84a93d.js} +1 -1
  292. package/dist/safe-a/_next/static/chunks/{18570009118a0e76.js → d5e3d29f769997cc.js} +1 -1
  293. package/dist/safe-a/_next/static/chunks/{7e5b28d162f1ea9d.js → d69b21102305d19e.js} +1 -1
  294. package/dist/safe-a/_next/static/chunks/{b92da682bccc569b.js → d715e874b8ee8540.js} +1 -1
  295. package/dist/safe-a/_next/static/chunks/{1a91a01fbaf01e7e.js → d729414ff836cd53.js} +1 -1
  296. package/dist/safe-a/_next/static/chunks/{333630802bd6f1a6.js → d82740475fc07e98.js} +1 -1
  297. package/dist/safe-a/_next/static/chunks/{9bedfcbe8f9ff43f.js → d842d30dcb0f50a9.js} +1 -1
  298. package/dist/safe-a/_next/static/chunks/{502779251884e330.js → d8af8dadd0889c71.js} +1 -1
  299. package/dist/safe-a/_next/static/chunks/{50c602f1b79d61a7.js → d9b92ed2d544fca5.js} +1 -1
  300. package/dist/safe-a/_next/static/chunks/{d147ab3cf51edc42.js → da346aeed70dd39a.js} +1 -1
  301. package/dist/safe-a/_next/static/chunks/da9d2b7d381c1953.js +1 -0
  302. package/dist/safe-a/_next/static/chunks/dbbd673619a7f82f.js +1 -0
  303. package/dist/safe-a/_next/static/chunks/dc0bc471de951daf.js +1 -0
  304. package/dist/safe-a/_next/static/chunks/{9d8fff267f5576eb.js → dc2186b66132ca97.js} +1 -1
  305. package/dist/safe-a/_next/static/chunks/{d3fc1847f85d724b.js → de0ee516f6a1aa07.js} +1 -1
  306. package/dist/safe-a/_next/static/chunks/{473249ae7830085a.js → e04bace22e04d63c.js} +1 -1
  307. package/dist/safe-a/_next/static/chunks/{9b94620a86d2a1c2.js → e0c76ff7114dc8dc.js} +1 -1
  308. package/dist/safe-a/_next/static/chunks/{dc7f280eee64d574.js → e11d4fd8de65621d.js} +1 -1
  309. package/dist/safe-a/_next/static/chunks/{ec7ee73b22712e55.js → e1999bcadd3448e5.js} +1 -1
  310. package/dist/safe-a/_next/static/chunks/e2833182a81cd867.js +1 -0
  311. package/dist/safe-a/_next/static/chunks/{232cc01daaf29e5d.js → e3fe320ec1b8f889.js} +1 -1
  312. package/dist/safe-a/_next/static/chunks/{50cbc92b0512838a.js → e4973ad5c183f17a.js} +1 -1
  313. package/dist/safe-a/_next/static/chunks/{c8b301b059ee1946.js → e5275dcacbabc3e3.js} +1 -1
  314. package/dist/safe-a/_next/static/chunks/e60ef129113f6e24.js +1 -0
  315. package/dist/safe-a/_next/static/chunks/{8ebfebffa66b3ca7.js → e61019aedfdf554e.js} +1 -1
  316. package/dist/safe-a/_next/static/chunks/e6324292aef80338.js +1 -0
  317. package/dist/safe-a/_next/static/chunks/{e89655c05e6b5b1f.js → e7003dbd5d8cb2d1.js} +1 -1
  318. package/dist/safe-a/_next/static/chunks/{0d7d0d2beb29f175.js → e7bcbeb465fa49cf.js} +1 -1
  319. package/dist/safe-a/_next/static/chunks/e7f1a043618e43cf.js +1 -0
  320. package/dist/safe-a/_next/static/chunks/e8105dbb23b8e514.js +1 -0
  321. package/dist/safe-a/_next/static/chunks/{06a64fef342a5832.js → e96518d9cb5cbe1e.js} +1 -1
  322. package/dist/safe-a/_next/static/chunks/{e7731336476789d7.js → ea12d36cdfbaafa9.js} +1 -1
  323. package/dist/safe-a/_next/static/chunks/{05ac495e860ba7c2.js → ea2a84258a02d5c5.js} +1 -1
  324. package/dist/safe-a/_next/static/chunks/{b9b23fa418eacd67.js → ea36a5ae7c6ce34f.js} +1 -1
  325. package/dist/safe-a/_next/static/chunks/{fbb5b0d1f5b25465.js → eb2d81df9fe374a8.js} +1 -1
  326. package/dist/safe-a/_next/static/chunks/{30c0274cb379ab0d.js → eb9ae8e95cac1197.js} +1 -1
  327. package/dist/safe-a/_next/static/chunks/{abf043c7dd51a07b.js → ebb0ee69f6a7883e.js} +1 -1
  328. package/dist/safe-a/_next/static/chunks/{d84ed83f568f41c6.js → ebcbb5070eb8e29f.js} +1 -1
  329. package/dist/safe-a/_next/static/chunks/ebcd85ff4a1db0dc.js +5 -0
  330. package/dist/safe-a/_next/static/chunks/{5ad5a5ee1cc648ae.js → ee79511740d19885.js} +1 -1
  331. package/dist/safe-a/_next/static/chunks/eed0c3ef6a5c3706.js +1 -0
  332. package/dist/safe-a/_next/static/chunks/{404f44571be80b78.js → ef51763a796dde8b.js} +1 -1
  333. package/dist/safe-a/_next/static/chunks/{025f9752d60b79ce.js → f0cb9b2226c53ef9.js} +1 -1
  334. package/dist/safe-a/_next/static/chunks/{c5b0f8f27c2db9f1.js → f0d9f0621f8ec46d.js} +1 -1
  335. package/dist/safe-a/_next/static/chunks/f12f45a558c3fed2.js +1 -0
  336. package/dist/safe-a/_next/static/chunks/{868f60fa1a2ff26b.js → f1e5e295d4db5c0f.js} +1 -1
  337. package/dist/safe-a/_next/static/chunks/{3b0acee8a8035ee7.js → f1f911d553a62027.js} +1 -1
  338. package/dist/safe-a/_next/static/chunks/{36897fabf62bf445.js → f235a8df2f905e6a.js} +1 -1
  339. package/dist/safe-a/_next/static/chunks/{27b3d30516d46fc8.js → f36595b9995a49a9.js} +1 -1
  340. package/dist/safe-a/_next/static/chunks/f42a71992d139302.js +1 -0
  341. package/dist/safe-a/_next/static/chunks/{dd03bb14e8e590f0.js → f42d74f288f2229c.js} +1 -1
  342. package/dist/safe-a/_next/static/chunks/{f39ec71d70b31fe1.js → f461a75ec3b0e4e9.js} +1 -1
  343. package/dist/safe-a/_next/static/chunks/{9f7b593a28b4dbe4.js → f50fd84e477dbaeb.js} +1 -1
  344. package/dist/safe-a/_next/static/chunks/{4c19e1ee54dac526.js → f659a364f48244ea.js} +1 -1
  345. package/dist/safe-a/_next/static/chunks/{7c4b1ab5c0f1b167.js → f813c3d77459119f.js} +1 -1
  346. package/dist/safe-a/_next/static/chunks/{cac08e0e891f58d2.js → f9cb4b70f67c86d8.js} +1 -1
  347. package/dist/safe-a/_next/static/chunks/{2854919e0953bd0d.js → fa39b9f8bced4bcd.js} +1 -1
  348. package/dist/safe-a/_next/static/chunks/{4df5dd4e3c591164.js → fa5b61b8e7219fe6.js} +1 -1
  349. package/dist/safe-a/_next/static/chunks/{1386362cdfd92116.js → facb82117d49a6e1.js} +1 -1
  350. package/dist/safe-a/_next/static/chunks/{e1626e173f56ae31.js → fb05f79f5e4b514e.js} +1 -1
  351. package/dist/safe-a/_next/static/chunks/{18e062f9f23f27c0.js → fb0f4d868b87961b.js} +1 -1
  352. package/dist/safe-a/_next/static/chunks/{3d9ee9c4bc8e29b2.js → fb2f1266493dd820.js} +1 -1
  353. package/dist/safe-a/_next/static/chunks/fc2efa33a196ee45.js +1 -0
  354. package/dist/safe-a/_next/static/chunks/{a4ab363af889263f.js → fd3d43eb8557ee49.js} +1 -1
  355. package/dist/safe-a/_next/static/chunks/{8ead3da37182ce4c.js → fdfce6fa0b958336.js} +1 -1
  356. package/dist/safe-a/_next/static/chunks/{04ed04c00511a337.js → ff12eca45020947a.js} +1 -1
  357. package/dist/safe-a/_next/static/chunks/ff6860dcd793aa23.js +1 -0
  358. package/dist/safe-a/_next/static/chunks/{turbopack-25307b1915d537a0.js → turbopack-3d84668fefd38b4b.js} +1 -1
  359. package/dist/safe-a/_next/static/chunks/{turbopack-fd95f1c0ef78a441.js → turbopack-63952675b1d69124.js} +1 -1
  360. package/dist/safe-a/_next/static/chunks/turbopack-8b41433c9a94981f.js +3 -0
  361. package/dist/safe-a/index.html +2 -2
  362. package/dist/safe-a/index.txt +18 -18
  363. package/dist/safe-a/manage/about/index.html +2 -2
  364. package/dist/safe-a/manage/about/index.txt +15 -15
  365. package/dist/safe-a/manage/env/index.html +2 -2
  366. package/dist/safe-a/manage/env/index.txt +17 -17
  367. package/dist/safe-a/manage/geelib/index.html +2 -2
  368. package/dist/safe-a/manage/geelib/index.txt +17 -17
  369. package/dist/safe-a/manage/general/index.html +2 -2
  370. package/dist/safe-a/manage/general/index.txt +15 -15
  371. package/dist/safe-a/manage/git/index.html +2 -2
  372. package/dist/safe-a/manage/git/index.txt +17 -17
  373. package/dist/safe-a/manage/im/index.html +2 -2
  374. package/dist/safe-a/manage/im/index.txt +17 -17
  375. package/dist/safe-a/manage/index.html +2 -2
  376. package/dist/safe-a/manage/index.txt +12 -12
  377. package/dist/safe-a/manage/library/index.html +2 -2
  378. package/dist/safe-a/manage/library/index.txt +15 -15
  379. package/dist/safe-a/manage/mcp/index.html +2 -2
  380. package/dist/safe-a/manage/mcp/index.txt +15 -15
  381. package/dist/safe-a/manage/permissions/index.html +2 -2
  382. package/dist/safe-a/manage/permissions/index.txt +15 -15
  383. package/dist/safe-a/manage/skills/index.html +2 -2
  384. package/dist/safe-a/manage/skills/index.txt +15 -15
  385. package/dist/safe-a/manage/task/index.html +2 -2
  386. package/dist/safe-a/manage/task/index.txt +15 -15
  387. package/dist/safe-a/manage/teams/index.html +2 -2
  388. package/dist/safe-a/manage/teams/index.txt +15 -15
  389. package/dist/safe-a/manage/tools/index.html +2 -2
  390. package/dist/safe-a/manage/tools/index.txt +15 -15
  391. package/dist/ws-test/ws-test.css +0 -47
  392. package/dist/ws-test/ws-test.html +0 -38
  393. package/dist/ws-test/ws-test.js +72 -541
  394. package/mcps-runtime/claude-geelib-channel/server/index.mjs +0 -5
  395. package/mcps-runtime/claude-tuitui-channel/server/index.mjs +6 -0
  396. package/mcps-runtime/claude-ws-channel/server/gateway.bundle.mjs +1145 -4782
  397. package/package.json +6 -6
  398. package/.env.example +0 -7
  399. package/dist/safe-a/_next/static/chunks/00f91b7d88f62204.js +0 -1
  400. package/dist/safe-a/_next/static/chunks/03d9139a7df67167.js +0 -1
  401. package/dist/safe-a/_next/static/chunks/0699439b4e026cf9.js +0 -5
  402. package/dist/safe-a/_next/static/chunks/0d0a0fd8bc7c5154.js +0 -1
  403. package/dist/safe-a/_next/static/chunks/1116b1064a071974.js +0 -1
  404. package/dist/safe-a/_next/static/chunks/16ee3f2be4586638.js +0 -1
  405. package/dist/safe-a/_next/static/chunks/19023abd5e1bf1d1.js +0 -1
  406. package/dist/safe-a/_next/static/chunks/1a900b3c5a00d59b.js +0 -1
  407. package/dist/safe-a/_next/static/chunks/1b739dfdbcce05bd.js +0 -1
  408. package/dist/safe-a/_next/static/chunks/1d0273aae0bc102c.js +0 -1
  409. package/dist/safe-a/_next/static/chunks/1df41f8d439107ef.js +0 -1
  410. package/dist/safe-a/_next/static/chunks/1faaa282be969b14.js +0 -1
  411. package/dist/safe-a/_next/static/chunks/27d9a47efb23fd17.js +0 -1
  412. package/dist/safe-a/_next/static/chunks/29105a13d179d5b2.js +0 -1
  413. package/dist/safe-a/_next/static/chunks/29403b19d94e37bb.js +0 -1
  414. package/dist/safe-a/_next/static/chunks/29f39316c32518a2.js +0 -1
  415. package/dist/safe-a/_next/static/chunks/2a07e0d1ef712b41.js +0 -1
  416. package/dist/safe-a/_next/static/chunks/2b38c2b26760e4cb.js +0 -1
  417. package/dist/safe-a/_next/static/chunks/2bb180b50bafe979.js +0 -1
  418. package/dist/safe-a/_next/static/chunks/2ce249001ad95013.js +0 -1
  419. package/dist/safe-a/_next/static/chunks/33e878df066811db.js +0 -1
  420. package/dist/safe-a/_next/static/chunks/37615c61dd14fc8d.js +0 -1
  421. package/dist/safe-a/_next/static/chunks/37e4ac5f3654a688.js +0 -1
  422. package/dist/safe-a/_next/static/chunks/38d88de54642e44e.js +0 -1
  423. package/dist/safe-a/_next/static/chunks/38decd5cd3fe2525.js +0 -1
  424. package/dist/safe-a/_next/static/chunks/39fc6ad79e44f4df.js +0 -1
  425. package/dist/safe-a/_next/static/chunks/3ecc6705303560ea.js +0 -1
  426. package/dist/safe-a/_next/static/chunks/3fe95be4b92470e2.js +0 -1
  427. package/dist/safe-a/_next/static/chunks/4064e59727cba9b0.js +0 -1
  428. package/dist/safe-a/_next/static/chunks/44e9e0394b7b6f31.js +0 -1
  429. package/dist/safe-a/_next/static/chunks/4ae2c56fab8c060d.js +0 -1
  430. package/dist/safe-a/_next/static/chunks/4ca36e3fb45c2e71.js +0 -1
  431. package/dist/safe-a/_next/static/chunks/4cd41b402679f77d.js +0 -1
  432. package/dist/safe-a/_next/static/chunks/50f270f87470ca73.js +0 -1
  433. package/dist/safe-a/_next/static/chunks/5385bf74559eeabd.js +0 -1
  434. package/dist/safe-a/_next/static/chunks/54169c1554845574.js +0 -1
  435. package/dist/safe-a/_next/static/chunks/592e7a6b713dc645.js +0 -1
  436. package/dist/safe-a/_next/static/chunks/599abea9ac64aaf1.js +0 -1
  437. package/dist/safe-a/_next/static/chunks/5ae21c9105c6abb4.js +0 -1
  438. package/dist/safe-a/_next/static/chunks/5b4c1faefda9575b.js +0 -1
  439. package/dist/safe-a/_next/static/chunks/68255bcd6345edfd.js +0 -1
  440. package/dist/safe-a/_next/static/chunks/68f27d4f860d8f88.js +0 -1
  441. package/dist/safe-a/_next/static/chunks/6960a33147147a27.js +0 -1
  442. package/dist/safe-a/_next/static/chunks/6a199e5f9da2ec4e.js +0 -1
  443. package/dist/safe-a/_next/static/chunks/6f6140cbad7cdeea.js +0 -1
  444. package/dist/safe-a/_next/static/chunks/6faa53698dc67904.js +0 -1
  445. package/dist/safe-a/_next/static/chunks/727dc45d24782155.js +0 -1
  446. package/dist/safe-a/_next/static/chunks/74d8d2b653f61b70.js +0 -1
  447. package/dist/safe-a/_next/static/chunks/7562ab6463e9fc3f.js +0 -1
  448. package/dist/safe-a/_next/static/chunks/784ee151431c6634.js +0 -1
  449. package/dist/safe-a/_next/static/chunks/7afa34c1dc058648.js +0 -1
  450. package/dist/safe-a/_next/static/chunks/7b34873e2b22211d.js +0 -1
  451. package/dist/safe-a/_next/static/chunks/7bd04dff1e0d3a01.js +0 -1
  452. package/dist/safe-a/_next/static/chunks/7cadf95d4932deec.js +0 -1
  453. package/dist/safe-a/_next/static/chunks/7ccd9e31b61da21f.js +0 -1
  454. package/dist/safe-a/_next/static/chunks/7e2887a3269dfc01.js +0 -1
  455. package/dist/safe-a/_next/static/chunks/7f167fb0dbc03180.js +0 -1
  456. package/dist/safe-a/_next/static/chunks/80bd106b26a076af.js +0 -1
  457. package/dist/safe-a/_next/static/chunks/826c64c8601264b1.js +0 -1
  458. package/dist/safe-a/_next/static/chunks/8465e859bae24fbd.js +0 -1
  459. package/dist/safe-a/_next/static/chunks/846fd48826ed3d89.js +0 -1
  460. package/dist/safe-a/_next/static/chunks/84e8e1e50a6b3ab7.js +0 -1
  461. package/dist/safe-a/_next/static/chunks/87b0002602934525.js +0 -1
  462. package/dist/safe-a/_next/static/chunks/882686dd3b63f9d1.js +0 -1
  463. package/dist/safe-a/_next/static/chunks/88e4cdcdeff36154.js +0 -1
  464. package/dist/safe-a/_next/static/chunks/8c8b1e40b00409f5.js +0 -1
  465. package/dist/safe-a/_next/static/chunks/913de10eeb8a88d9.js +0 -1
  466. package/dist/safe-a/_next/static/chunks/92c1de3b7b8ff353.js +0 -1
  467. package/dist/safe-a/_next/static/chunks/996147dc11d8e745.js +0 -1
  468. package/dist/safe-a/_next/static/chunks/9971428081f87b2e.js +0 -1
  469. package/dist/safe-a/_next/static/chunks/9a5e8d11c09774ed.js +0 -1
  470. package/dist/safe-a/_next/static/chunks/9f8b67e210121299.js +0 -1
  471. package/dist/safe-a/_next/static/chunks/a333240ca95e9cf9.js +0 -1
  472. package/dist/safe-a/_next/static/chunks/a4b35c64097aeb05.js +0 -1
  473. package/dist/safe-a/_next/static/chunks/a6fda6a41633eb93.js +0 -1
  474. package/dist/safe-a/_next/static/chunks/a86fedb173944e90.js +0 -1
  475. package/dist/safe-a/_next/static/chunks/a9a12415c8875ad5.js +0 -1
  476. package/dist/safe-a/_next/static/chunks/ab91b57996557cd5.js +0 -1
  477. package/dist/safe-a/_next/static/chunks/ac0062f74360e8a1.js +0 -1
  478. package/dist/safe-a/_next/static/chunks/b0f0f19c125de544.js +0 -1
  479. package/dist/safe-a/_next/static/chunks/b31fde4b83862330.js +0 -1
  480. package/dist/safe-a/_next/static/chunks/b594aa86704b6429.js +0 -1
  481. package/dist/safe-a/_next/static/chunks/b744b1f1595cffb6.js +0 -1
  482. package/dist/safe-a/_next/static/chunks/b882523826ac1c83.js +0 -1
  483. package/dist/safe-a/_next/static/chunks/c2a354d059dc2745.js +0 -1
  484. package/dist/safe-a/_next/static/chunks/c3bcc6eb84ed7d30.js +0 -1
  485. package/dist/safe-a/_next/static/chunks/c6bad34be1aacd05.js +0 -5
  486. package/dist/safe-a/_next/static/chunks/c7ce2c0e40c62b6b.js +0 -1
  487. package/dist/safe-a/_next/static/chunks/c9527036b1a95d19.js +0 -1
  488. package/dist/safe-a/_next/static/chunks/ca31fc9ca02421c7.js +0 -1
  489. package/dist/safe-a/_next/static/chunks/d2644966a8736893.js +0 -1
  490. package/dist/safe-a/_next/static/chunks/d2b5664aa6eb613c.js +0 -1
  491. package/dist/safe-a/_next/static/chunks/d3072ff0f4d0f613.js +0 -1
  492. package/dist/safe-a/_next/static/chunks/d78975cda9119543.js +0 -1
  493. package/dist/safe-a/_next/static/chunks/dbf36b536a6c59ef.js +0 -1
  494. package/dist/safe-a/_next/static/chunks/e0b6375c01566831.js +0 -1
  495. package/dist/safe-a/_next/static/chunks/e79d1db952916e66.js +0 -1
  496. package/dist/safe-a/_next/static/chunks/e814d6bb4f565a59.js +0 -1
  497. package/dist/safe-a/_next/static/chunks/ece085cc915ab5e5.js +0 -1
  498. package/dist/safe-a/_next/static/chunks/f15c8b2639bebe0f.js +0 -1
  499. package/dist/safe-a/_next/static/chunks/f42445d9866f6b16.js +0 -1
  500. package/dist/safe-a/_next/static/chunks/fa0cb747819a4b88.js +0 -1
  501. package/dist/safe-a/_next/static/chunks/fb7bf2e8cee9c72f.js +0 -1
  502. package/dist/safe-a/_next/static/chunks/fe4fddbf85e1554b.js +0 -1
  503. package/dist/safe-a/_next/static/chunks/ff9ec21502a3b775.js +0 -1
  504. package/dist/safe-a/_next/static/chunks/turbopack-c8295da8707d94de.js +0 -3
  505. package/dist/ws-test/vendor/xterm-addon-fit.js +0 -2
  506. package/dist/ws-test/vendor/xterm.css +0 -285
  507. package/dist/ws-test/vendor/xterm.js +0 -2
  508. /package/dist/safe-a/_next/static/{ydg1pWMUiUWUhsV4OnPd9 → 8K8MheZHG-fXZxruG2Nc8}/_clientMiddlewareManifest.json +0 -0
  509. /package/dist/safe-a/_next/static/{ydg1pWMUiUWUhsV4OnPd9 → 8K8MheZHG-fXZxruG2Nc8}/_ssgManifest.js +0 -0
@@ -84,11 +84,6 @@
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')
92
87
  const btnPermissionDialogClose = $('btnPermissionDialogClose')
93
88
  const btnPermissionDeny = $('btnPermissionDeny')
94
89
  const btnPermissionAllow = $('btnPermissionAllow')
@@ -116,7 +111,6 @@
116
111
  const scheduleTasksWrap = $('scheduleTasksWrap')
117
112
  const scheduleRunsWrap = $('scheduleRunsWrap')
118
113
  const scheduleTaskTableBody = $('scheduleTaskTableBody')
119
- const scheduleTasksPager = $('scheduleTasksPager')
120
114
  const scheduleManageEmpty = $('scheduleManageEmpty')
121
115
  const btnScheduleRunsBack = $('btnScheduleRunsBack')
122
116
  const scheduleRunsTitle = $('scheduleRunsTitle')
@@ -140,11 +134,7 @@
140
134
  const btnScheduleCreateCancel = $('btnScheduleCreateCancel')
141
135
  const btnScheduleCreateSubmit = $('btnScheduleCreateSubmit')
142
136
  const btnManageRepo = $('btnManageRepo')
143
- const btnManageTerminal = $('btnManageTerminal')
144
137
  const repoManageView = $('repoManageView')
145
- const terminalManageView = $('terminalManageView')
146
- const terminalMount = $('terminalMount')
147
- const terminalState = $('terminalState')
148
138
  const chatWorkspace = $('chatWorkspace')
149
139
  const chatComposer = $('chatComposer')
150
140
  const repoTreeList = $('repoTreeList')
@@ -171,12 +161,6 @@
171
161
  let sessionRuntimePollTimer = null
172
162
  /** 当前附着 session 的 turn 是否进行中(由 query.progress 驱动) */
173
163
  let sessionTurnActive = false
174
- /** 当前 turn 是否已处理过 api_error 终态,避免重复弹窗与 abort */
175
- let apiErrorHandledForTurn = false
176
- /** 当前 turn 是否处于 api_error 重试中 */
177
- let apiErrorRetryingForTurn = false
178
- /** 最近一次 api_error 的可读文案,供重试耗尽后弹窗展示 */
179
- let lastApiErrorText = ''
180
164
  const pendingPromptsBarEl = $('pendingPromptsBar')
181
165
  const pendingPromptsListEl = $('pendingPromptsList')
182
166
  let pendingPromptsCache = []
@@ -368,6 +352,8 @@
368
352
  const LLM_MODEL_KEY = 'LLM_MODEL'
369
353
  const LLM_PROVIDER_ID_KEY = 'LLM_PROVIDER_ID'
370
354
  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'])
371
357
  const WS_PERMISSION_MODE_ALLOWED = new Set([
372
358
  'acceptEdits',
373
359
  'plan',
@@ -591,19 +577,50 @@
591
577
  label.setAttribute('for', 'agentEnvField_' + field.key)
592
578
  label.textContent = field.label
593
579
  const inputId = 'agentEnvField_' + field.key
594
- const textInput = document.createElement('input')
595
- textInput.id = inputId
596
- textInput.type = 'text'
597
- textInput.spellcheck = false
598
- textInput.className = 'agent-env-kv-input'
599
- textInput.placeholder = field.placeholder || ''
600
- textInput.value = typeof agentEnvFieldValues[field.key] === 'string'
601
- ? agentEnvFieldValues[field.key]
602
- : ''
603
- textInput.addEventListener('input', function () {
604
- agentEnvFieldValues[field.key] = textInput.value
605
- })
606
- const input = textInput
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
+ }
607
624
  row.appendChild(label)
608
625
  row.appendChild(input)
609
626
  section.appendChild(row)
@@ -1537,10 +1554,6 @@
1537
1554
  return extractMessageBody(m).trim()
1538
1555
  }
1539
1556
  if (m.type === 'system') {
1540
- if (m.subtype === 'api_error') {
1541
- const apiText = extractApiErrorText(m)
1542
- if (apiText) return apiText
1543
- }
1544
1557
  if (typeof m.content === 'string') return m.content.trim()
1545
1558
  try {
1546
1559
  return JSON.stringify(m).slice(0, 800).trim()
@@ -1638,14 +1651,10 @@
1638
1651
  div.appendChild(md)
1639
1652
  container.appendChild(div)
1640
1653
  } else if (t === 'system') {
1641
- let raw =
1654
+ const raw =
1642
1655
  typeof m.content === 'string'
1643
1656
  ? m.content
1644
1657
  : JSON.stringify(m).slice(0, 800)
1645
- if (m.subtype === 'api_error') {
1646
- const apiText = extractApiErrorText(m)
1647
- if (apiText) raw = apiText
1648
- }
1649
1658
  if (!raw.trim()) continue
1650
1659
  const div = document.createElement('div')
1651
1660
  div.className = 'chat-msg chat-msg-system'
@@ -1989,151 +1998,6 @@
1989
1998
  permissionDialogBackdrop.addEventListener('click', () => respondToPermission('deny'))
1990
1999
  }
1991
2000
 
1992
- /**
1993
- * 从 system api_error 消息中提取可读错误文案。
1994
- * 上游 APIError 常嵌套多层 error 字段,需逐层下探并尝试解析 JSON 内 message。
1995
- */
1996
- function extractApiErrorText(msg) {
1997
- if (!msg || msg.type !== 'system' || msg.subtype !== 'api_error') return ''
1998
- const root = msg.error
1999
- if (!root || typeof root !== 'object') return 'LLM API 请求失败'
2000
-
2001
- let text = ''
2002
- const candidates = [
2003
- root.message,
2004
- root.error && root.error.message,
2005
- root.error && root.error.error && root.error.error.message,
2006
- root.error && root.error.error && root.error.error.error && root.error.error.error.message,
2007
- ]
2008
- for (let i = 0; i < candidates.length; i++) {
2009
- if (typeof candidates[i] === 'string' && candidates[i].trim()) {
2010
- text = candidates[i].trim()
2011
- break
2012
- }
2013
- }
2014
- if (!text) text = 'LLM API 请求失败'
2015
-
2016
- const jsonMatch = text.match(/\{[\s\S]*\}$/)
2017
- if (jsonMatch) {
2018
- try {
2019
- const parsed = JSON.parse(jsonMatch[0])
2020
- const inner = parsed.error || parsed
2021
- if (inner && typeof inner.message === 'string' && inner.message.trim()) {
2022
- const code = inner.code != null ? '(' + inner.code + ')' : ''
2023
- text = inner.message.trim() + code
2024
- }
2025
- } catch (_err) {
2026
- /* 非 JSON 后缀则保留原始 message */
2027
- }
2028
- }
2029
-
2030
- const attempt = Number.isFinite(msg.retryAttempt) ? msg.retryAttempt : null
2031
- const max = Number.isFinite(msg.maxRetries) ? msg.maxRetries : null
2032
- if (attempt != null && max != null) {
2033
- text += ' [重试 ' + attempt + '/' + max + ']'
2034
- }
2035
- if (typeof root.status === 'number') {
2036
- text = 'HTTP ' + root.status + ': ' + text
2037
- }
2038
- return text
2039
- }
2040
-
2041
- function hideApiErrorDialog() {
2042
- if (!apiErrorDialog) return
2043
- apiErrorDialog.classList.remove('is-open')
2044
- apiErrorDialog.setAttribute('aria-hidden', 'true')
2045
- }
2046
-
2047
- function showApiErrorDialog(message) {
2048
- if (!apiErrorDialog || !apiErrorDialogDesc) return
2049
- apiErrorDialogDesc.textContent =
2050
- typeof message === 'string' && message.trim() ? message.trim() : 'LLM API 请求失败'
2051
- apiErrorDialog.classList.add('is-open')
2052
- apiErrorDialog.setAttribute('aria-hidden', 'false')
2053
- }
2054
-
2055
- /** 向服务端发送 abort,终止当前 query 与子进程 turn */
2056
- function abortCurrentSessionTurn() {
2057
- if (!socket || socket.readyState !== WebSocket.OPEN) return
2058
- const payload = { type: 'abort' }
2059
- socket.send(JSON.stringify(payload))
2060
- logLine('→', payload)
2061
- }
2062
-
2063
- function resetApiErrorTurnState() {
2064
- apiErrorHandledForTurn = false
2065
- apiErrorRetryingForTurn = false
2066
- lastApiErrorText = ''
2067
- }
2068
-
2069
- /**
2070
- * api 重试全部耗尽:弹窗、abort、清除 calling。
2071
- * 由 session.error 或 turn.terminal failed 触发,不在首次 api_error 时 fail-fast。
2072
- */
2073
- function finalizeApiErrorTurn(errText) {
2074
- if (apiErrorHandledForTurn) return
2075
- apiErrorHandledForTurn = true
2076
- apiErrorRetryingForTurn = false
2077
- sessionTurnActive = false
2078
- showApiErrorDialog(errText || 'LLM API 请求失败')
2079
- abortCurrentSessionTurn()
2080
- setStatus('API 错误', 'err')
2081
- kickSessionRuntimePoll()
2082
- if (window.__lastSessions) {
2083
- renderSessionList(window.__lastSessions)
2084
- }
2085
- void loadSessions({ silent: true })
2086
- }
2087
-
2088
- /**
2089
- * 主 run 收到 api_error:重试期间仅更新状态栏,全部重试耗尽后再弹窗终止。
2090
- */
2091
- function handleApiErrorFromSystemMessage(msg, runId) {
2092
- if (runId !== 'main') return
2093
- if (apiErrorHandledForTurn) return
2094
- if (!msg || msg.type !== 'system' || msg.subtype !== 'api_error') return
2095
-
2096
- const retryAttempt = Number.isFinite(msg.retryAttempt) ? msg.retryAttempt : 0
2097
- const maxRetries = Number.isFinite(msg.maxRetries) ? msg.maxRetries : 10
2098
- lastApiErrorText = extractApiErrorText(msg)
2099
- apiErrorRetryingForTurn = true
2100
- setStatus('API 错误,重试 ' + retryAttempt + '/' + maxRetries + '…', 'err')
2101
- kickSessionRuntimePoll()
2102
- if (window.__lastSessions) {
2103
- renderSessionList(window.__lastSessions)
2104
- }
2105
- void loadSessions({ silent: true })
2106
- }
2107
-
2108
- /**
2109
- * session.error:若处于 api 重试链,表示重试已耗尽,走终态弹窗;否则仅更新状态。
2110
- */
2111
- function handleSessionErrorPayload(payload) {
2112
- if (apiErrorHandledForTurn) return
2113
- if (apiErrorRetryingForTurn) {
2114
- const errMsg =
2115
- lastApiErrorText ||
2116
- (payload && typeof payload.message === 'string' ? payload.message.trim() : '')
2117
- finalizeApiErrorTurn(errMsg || 'LLM API 请求失败')
2118
- return
2119
- }
2120
- const errMsg =
2121
- payload && typeof payload.message === 'string' && payload.message.trim()
2122
- ? payload.message.trim()
2123
- : 'unknown'
2124
- setStatus('错误: ' + errMsg, 'err')
2125
- }
2126
-
2127
- if (btnApiErrorOk) {
2128
- btnApiErrorOk.addEventListener('click', hideApiErrorDialog)
2129
- }
2130
- if (btnApiErrorDialogClose) {
2131
- btnApiErrorDialogClose.addEventListener('click', hideApiErrorDialog)
2132
- }
2133
- if (apiErrorDialogBackdrop) {
2134
- apiErrorDialogBackdrop.addEventListener('click', hideApiErrorDialog)
2135
- }
2136
-
2137
2001
  /** 解析并应用 WS v3 下行信封(protocolVersion === 3);旧名 applyEnvelopeV2 易误解,保留行为不变。 */
2138
2002
  function applyWsEnvelopeV3(data) {
2139
2003
  if (!data || typeof data !== 'object') return false
@@ -2152,11 +2016,6 @@
2152
2016
  if (type === 'conversation.delta') {
2153
2017
  const action = typeof payload.action === 'string' ? payload.action : ''
2154
2018
  const index = Number.isInteger(payload.index) ? payload.index : -1
2155
- const deltaContextPct = parseContextUsagePercent(payload.contextUsage)
2156
- if (typeof deltaContextPct === 'number') {
2157
- currentSessionContextPercent = deltaContextPct
2158
- updatePromptSessionInfo()
2159
- }
2160
2019
  const msg = payload.message
2161
2020
  const sourceAgent = resolveEnvelopeSourceAgent(runId, payload, data.agent_name)
2162
2021
  const runBuffer = ensureRunBuffer(runId)
@@ -2180,9 +2039,6 @@
2180
2039
  refreshSessionTitleFromChat(sessionIdInput.value.trim())
2181
2040
  }
2182
2041
  requestRenderChat()
2183
- if (msg && msg.type === 'system' && msg.subtype === 'api_error') {
2184
- handleApiErrorFromSystemMessage(msg, runId)
2185
- }
2186
2042
  return true
2187
2043
  }
2188
2044
  if (type === 'turn.terminal') {
@@ -2211,19 +2067,8 @@
2211
2067
  key: typeof data.eventId === 'string' ? data.eventId : '',
2212
2068
  })
2213
2069
  /** 主 run 一轮结束:清除「查询阶段: calling_model」等进行中状态 */
2214
- if (runId === 'main') {
2215
- if (
2216
- payload.status !== 'resolved' &&
2217
- apiErrorRetryingForTurn &&
2218
- !apiErrorHandledForTurn
2219
- ) {
2220
- finalizeApiErrorTurn(lastApiErrorText)
2221
- } else if (serverReady && !apiErrorHandledForTurn) {
2222
- setStatus('已就绪', 'ready')
2223
- }
2224
- if (!apiErrorHandledForTurn) {
2225
- resetApiErrorTurnState()
2226
- }
2070
+ if (runId === 'main' && serverReady) {
2071
+ setStatus('已就绪', 'ready')
2227
2072
  }
2228
2073
  requestRenderChat()
2229
2074
  return true
@@ -2285,9 +2130,6 @@
2285
2130
  })
2286
2131
  requestRenderChat()
2287
2132
  }
2288
- if (type === 'session.error' && runId === 'main') {
2289
- handleSessionErrorPayload(payload)
2290
- }
2291
2133
  return true
2292
2134
  }
2293
2135
  if (type === 'schedule.pending') {
@@ -2333,20 +2175,11 @@
2333
2175
  renderSessionList(window.__lastSessions)
2334
2176
  }
2335
2177
  if (phase === 'idle') {
2336
- sessionTurnActive = false
2337
- if (!apiErrorHandledForTurn && serverReady) {
2338
- setStatus('已就绪', 'ready')
2339
- }
2340
- if (!apiErrorHandledForTurn) {
2341
- apiErrorRetryingForTurn = false
2342
- lastApiErrorText = ''
2343
- }
2178
+ if (serverReady) setStatus('已就绪', 'ready')
2344
2179
  // 一轮 prompt 收尾后 transcript 已落盘,刷新列表以更新页签 firstPrompt/summary
2345
2180
  void loadSessions({ silent: true })
2346
2181
  } else if (phase) {
2347
- if (!apiErrorHandledForTurn && !apiErrorRetryingForTurn) {
2348
- setStatus('查询阶段: ' + phase + '…', '')
2349
- }
2182
+ setStatus('查询阶段: ' + phase + '…', '')
2350
2183
  void loadSessions({ silent: true })
2351
2184
  }
2352
2185
  return true
@@ -2662,15 +2495,9 @@
2662
2495
  return u.toString()
2663
2496
  }
2664
2497
 
2665
- function buildSchedulesUrl(page, pageSize) {
2498
+ function buildSchedulesUrl() {
2666
2499
  const u = new URL('/api/schedules', httpOriginForApi() + '/')
2667
2500
  u.searchParams.set('agent', currentAgentParam())
2668
- if (typeof page === 'number' && page >= 1) {
2669
- u.searchParams.set('page', String(page))
2670
- }
2671
- if (typeof pageSize === 'number' && pageSize >= 1) {
2672
- u.searchParams.set('pageSize', String(pageSize))
2673
- }
2674
2501
  return u.toString()
2675
2502
  }
2676
2503
 
@@ -2722,16 +2549,6 @@
2722
2549
  treeCache: new Map(),
2723
2550
  }
2724
2551
 
2725
- /** 命令行主视图:PTY WebSocket 与 xterm 实例 */
2726
- const terminalManageState = {
2727
- viewActive: false,
2728
- ws: null,
2729
- term: null,
2730
- fitAddon: null,
2731
- resizeObserver: null,
2732
- onDataDisposable: null,
2733
- }
2734
-
2735
2552
  /** Agent 设置主视图是否激活(与聊天区、文件管理互斥) */
2736
2553
  const agentSettingsState = {
2737
2554
  viewActive: false,
@@ -2742,213 +2559,6 @@
2742
2559
  return repoManageState.viewActive
2743
2560
  }
2744
2561
 
2745
- /** 当前是否在命令行主视图 */
2746
- function isTerminalManageViewActive() {
2747
- return terminalManageState.viewActive
2748
- }
2749
-
2750
- /** 设置命令行面板底部状态文案 */
2751
- function setTerminalPanelState(message, isError) {
2752
- if (!terminalState) return
2753
- const text = String(message || '').trim()
2754
- if (!text) {
2755
- terminalState.hidden = true
2756
- terminalState.textContent = ''
2757
- terminalState.classList.remove('is-error')
2758
- return
2759
- }
2760
- terminalState.hidden = false
2761
- terminalState.textContent = text
2762
- terminalState.classList.toggle('is-error', !!isError)
2763
- }
2764
-
2765
- /** 构建命令行 PTY WebSocket 地址 */
2766
- function buildTerminalWsUrl() {
2767
- const origin = httpOriginForApi()
2768
- const u = new URL('/ws/terminal', origin + '/')
2769
- u.searchParams.set('agent', currentAgentParam())
2770
- const wsOrigin = u.origin.replace(/^http:/i, 'ws:').replace(/^https:/i, 'wss:')
2771
- return wsOrigin + u.pathname + u.search
2772
- }
2773
-
2774
- /** 向服务端同步终端行列数 */
2775
- function sendTerminalResize() {
2776
- const ws = terminalManageState.ws
2777
- const term = terminalManageState.term
2778
- if (!ws || ws.readyState !== WebSocket.OPEN || !term) return
2779
- ws.send(
2780
- JSON.stringify({
2781
- type: 'resize',
2782
- cols: term.cols,
2783
- rows: term.rows,
2784
- }),
2785
- )
2786
- }
2787
-
2788
- /** 释放 xterm 与 WebSocket,避免离开视图后残留 PTY */
2789
- function destroyTerminalSession() {
2790
- if (terminalManageState.resizeObserver) {
2791
- terminalManageState.resizeObserver.disconnect()
2792
- terminalManageState.resizeObserver = null
2793
- }
2794
- if (terminalManageState.onDataDisposable) {
2795
- try {
2796
- terminalManageState.onDataDisposable.dispose()
2797
- } catch {
2798
- /* ignore */
2799
- }
2800
- terminalManageState.onDataDisposable = null
2801
- }
2802
- if (terminalManageState.ws) {
2803
- try {
2804
- terminalManageState.ws.close()
2805
- } catch {
2806
- /* ignore */
2807
- }
2808
- terminalManageState.ws = null
2809
- }
2810
- if (terminalManageState.term) {
2811
- try {
2812
- terminalManageState.term.dispose()
2813
- } catch {
2814
- /* ignore */
2815
- }
2816
- terminalManageState.term = null
2817
- }
2818
- terminalManageState.fitAddon = null
2819
- if (terminalMount) terminalMount.innerHTML = ''
2820
- }
2821
-
2822
- /** 建立 PTY WebSocket 并挂载 xterm */
2823
- function connectTerminalWs() {
2824
- if (typeof Terminal === 'undefined' || typeof FitAddon === 'undefined') {
2825
- setTerminalPanelState('终端组件未加载', true)
2826
- return
2827
- }
2828
- destroyTerminalSession()
2829
- setTerminalPanelState('连接中…', false)
2830
-
2831
- const term = new Terminal({
2832
- cursorBlink: true,
2833
- fontSize: 14,
2834
- fontFamily: 'Menlo, Monaco, "Courier New", monospace',
2835
- theme: {
2836
- background: '#1a1a1c',
2837
- foreground: '#e8e8ea',
2838
- cursor: '#0a84ff',
2839
- selectionBackground: 'rgba(10, 132, 255, 0.28)',
2840
- },
2841
- })
2842
- const fitAddon = new FitAddon()
2843
- term.loadAddon(fitAddon)
2844
- if (terminalMount) {
2845
- term.open(terminalMount)
2846
- fitAddon.fit()
2847
- }
2848
- terminalManageState.term = term
2849
- terminalManageState.fitAddon = fitAddon
2850
-
2851
- const ws = new WebSocket(buildTerminalWsUrl())
2852
- ws.binaryType = 'arraybuffer'
2853
- terminalManageState.ws = ws
2854
-
2855
- ws.onopen = function () {
2856
- setTerminalPanelState('', false)
2857
- fitAddon.fit()
2858
- sendTerminalResize()
2859
- term.focus()
2860
- }
2861
-
2862
- ws.onmessage = function (ev) {
2863
- if (typeof ev.data === 'string') {
2864
- try {
2865
- const msg = JSON.parse(ev.data)
2866
- if (msg && msg.type === 'exit') {
2867
- term.writeln('\r\n[shell 已退出,退出码: ' + msg.code + ']')
2868
- setTerminalPanelState('shell 已退出', false)
2869
- } else if (msg && msg.type === 'error') {
2870
- setTerminalPanelState(msg.message || '终端错误', true)
2871
- }
2872
- } catch {
2873
- /* ignore */
2874
- }
2875
- return
2876
- }
2877
- if (ev.data instanceof ArrayBuffer) {
2878
- term.write(new Uint8Array(ev.data))
2879
- }
2880
- }
2881
-
2882
- ws.onerror = function () {
2883
- setTerminalPanelState('WebSocket 连接失败', true)
2884
- }
2885
-
2886
- ws.onclose = function () {
2887
- if (terminalManageState.viewActive) {
2888
- setTerminalPanelState('连接已断开', false)
2889
- }
2890
- }
2891
-
2892
- terminalManageState.onDataDisposable = term.onData(function (data) {
2893
- if (!ws || ws.readyState !== WebSocket.OPEN) return
2894
- ws.send(new TextEncoder().encode(data))
2895
- })
2896
-
2897
- if (terminalMount && typeof ResizeObserver !== 'undefined') {
2898
- const ro = new ResizeObserver(function () {
2899
- if (!terminalManageState.fitAddon || !terminalManageState.term) return
2900
- terminalManageState.fitAddon.fit()
2901
- sendTerminalResize()
2902
- })
2903
- ro.observe(terminalMount)
2904
- terminalManageState.resizeObserver = ro
2905
- }
2906
- }
2907
-
2908
- /** 切换命令行主视图与聊天区可见性 */
2909
- function setTerminalManageVisible(visible) {
2910
- if (visible) {
2911
- closeAgentSettingsView()
2912
- closePickerManageView(false)
2913
- closeScheduleManageView(false)
2914
- repoManageState.viewActive = false
2915
- if (repoManageView) repoManageView.hidden = true
2916
- if (btnManageRepo) btnManageRepo.classList.remove('is-active')
2917
- } else {
2918
- destroyTerminalSession()
2919
- }
2920
- terminalManageState.viewActive = visible
2921
- if (terminalManageView) terminalManageView.hidden = !visible
2922
- if (chatWorkspace) chatWorkspace.hidden = visible
2923
- if (chatComposer) chatComposer.hidden = visible
2924
- if (mainHeaderEl) mainHeaderEl.hidden = false
2925
- if (visible) {
2926
- if (mainTitleEl) mainTitleEl.textContent = '命令行'
2927
- if (mainSubEl) {
2928
- mainSubEl.textContent = ''
2929
- mainSubEl.hidden = true
2930
- }
2931
- } else {
2932
- setTerminalPanelState('', false)
2933
- if (btnManageTerminal) btnManageTerminal.classList.remove('is-active')
2934
- updateMainHeader()
2935
- }
2936
- }
2937
-
2938
- /** 关闭命令行视图,回到聊天 */
2939
- function closeTerminalManageView() {
2940
- if (!terminalManageState.viewActive) return
2941
- setTerminalManageVisible(false)
2942
- }
2943
-
2944
- /** 打开命令行:切换主区域并连接 PTY */
2945
- function openTerminalManageView() {
2946
- if (!terminalManageView) return
2947
- setTerminalManageVisible(true)
2948
- if (btnManageTerminal) btnManageTerminal.classList.add('is-active')
2949
- connectTerminalWs()
2950
- }
2951
-
2952
2562
  /** 当前是否在 Agent 设置主视图 */
2953
2563
  function isAgentSettingsViewActive() {
2954
2564
  return agentSettingsState.viewActive
@@ -3096,11 +2706,6 @@
3096
2706
  const scheduleManageState = {
3097
2707
  viewActive: false,
3098
2708
  contentView: 'list',
3099
- page: 1,
3100
- pageSize: 10,
3101
- total: 0,
3102
- totalPages: 0,
3103
- loading: false,
3104
2709
  }
3105
2710
 
3106
2711
  /** 切换定时任务列表与执行记录面板 */
@@ -3115,7 +2720,6 @@
3115
2720
  if (visible) {
3116
2721
  closeAgentSettingsView()
3117
2722
  closePickerManageView(false)
3118
- closeTerminalManageView()
3119
2723
  repoManageState.viewActive = false
3120
2724
  if (repoManageView) repoManageView.hidden = true
3121
2725
  if (btnManageRepo) btnManageRepo.classList.remove('is-active')
@@ -3159,7 +2763,6 @@
3159
2763
  closeAgentSettingsView()
3160
2764
  closePickerManageView(false)
3161
2765
  closeScheduleManageView(false)
3162
- closeTerminalManageView()
3163
2766
  }
3164
2767
  repoManageState.viewActive = visible
3165
2768
  if (repoManageView) repoManageView.hidden = !visible
@@ -3191,7 +2794,6 @@
3191
2794
  if (visible) {
3192
2795
  closePickerManageView(false)
3193
2796
  closeScheduleManageView(false)
3194
- closeTerminalManageView()
3195
2797
  repoManageState.viewActive = false
3196
2798
  if (repoManageView) repoManageView.hidden = true
3197
2799
  if (btnManageRepo) btnManageRepo.classList.remove('is-active')
@@ -3233,7 +2835,6 @@
3233
2835
  if (visible) {
3234
2836
  closeAgentSettingsView()
3235
2837
  closeScheduleManageView(false)
3236
- closeTerminalManageView()
3237
2838
  repoManageState.viewActive = false
3238
2839
  if (repoManageView) repoManageView.hidden = true
3239
2840
  if (btnManageRepo) btnManageRepo.classList.remove('is-active')
@@ -3896,36 +3497,13 @@
3896
3497
  return formatScheduleFireAt(task.nextFireAt)
3897
3498
  }
3898
3499
 
3899
- /** 渲染定时任务列表分页控件 */
3900
- function renderScheduleTasksPager() {
3901
- if (!scheduleTasksPager) return
3902
- scheduleTasksPager.innerHTML = ''
3903
- const totalPages = scheduleManageState.totalPages || 0
3904
- scheduleTasksPager.hidden = totalPages <= 1
3905
- if (totalPages <= 1) return
3906
- const pager = createCloudPager(scheduleManageState, function (nextPage) {
3907
- void loadScheduleTasks(nextPage).catch(function (e) {
3908
- window.alert('加载失败: ' + e)
3909
- })
3910
- })
3911
- scheduleTasksPager.appendChild(pager)
3912
- }
3913
-
3914
3500
  /** 渲染定时任务表格 */
3915
- function renderScheduleTaskTable(tasks, timezone, total) {
3501
+ function renderScheduleTaskTable(tasks, timezone) {
3916
3502
  if (!scheduleTaskTableBody || !scheduleManageEmpty) return
3917
3503
  scheduleTaskTableBody.innerHTML = ''
3918
3504
  const list = Array.isArray(tasks) ? tasks : []
3919
- const totalCount =
3920
- typeof total === 'number' && Number.isFinite(total) ? total : list.length
3921
- if (totalCount > 0) {
3922
- scheduleManageEmpty.hidden = true
3923
- scheduleManageEmpty.classList.remove('is-error')
3924
- } else {
3925
- scheduleManageEmpty.hidden = false
3926
- scheduleManageEmpty.textContent = '暂无定时任务'
3927
- scheduleManageEmpty.classList.remove('is-error')
3928
- }
3505
+ scheduleManageEmpty.hidden = list.length > 0
3506
+ if (list.length > 0) scheduleManageEmpty.classList.remove('is-error')
3929
3507
  for (let i = 0; i < list.length; i++) {
3930
3508
  const task = list[i]
3931
3509
  if (!task || !task.id) continue
@@ -3981,42 +3559,18 @@
3981
3559
  }
3982
3560
  if (scheduleManageMeta) {
3983
3561
  scheduleManageMeta.textContent =
3984
- '时区: ' +
3985
- (timezone || 'local') +
3986
- ' · 共 ' +
3987
- totalCount +
3988
- ' 个任务' +
3989
- (scheduleManageState.totalPages > 1
3990
- ? ' · 第 ' +
3991
- scheduleManageState.page +
3992
- '/' +
3993
- scheduleManageState.totalPages +
3994
- ' 页'
3995
- : '')
3562
+ '时区: ' + (timezone || 'local') + ' · 共 ' + list.length + ' 个任务'
3996
3563
  }
3997
- renderScheduleTasksPager()
3998
3564
  }
3999
3565
 
4000
- /** 拉取 agent 定时任务(按创建时间倒序,分页) */
4001
- async function loadScheduleTasks(page) {
4002
- if (typeof page === 'number' && page >= 1) {
4003
- scheduleManageState.page = page
4004
- }
4005
- scheduleManageState.loading = true
4006
- renderScheduleTasksPager()
4007
- const res = await fetch(
4008
- buildSchedulesUrl(scheduleManageState.page, scheduleManageState.pageSize),
4009
- )
3566
+ /** 拉取 agent 全部定时任务 */
3567
+ async function loadScheduleTasks() {
3568
+ const res = await fetch(buildSchedulesUrl())
4010
3569
  const body = await res.json()
4011
- scheduleManageState.loading = false
4012
3570
  if (!res.ok) {
4013
3571
  throw new Error(body.message || body.error || res.statusText)
4014
3572
  }
4015
- scheduleManageState.page = Number(body.page) || scheduleManageState.page
4016
- scheduleManageState.pageSize = Number(body.pageSize) || scheduleManageState.pageSize
4017
- scheduleManageState.total = Number(body.total) || 0
4018
- scheduleManageState.totalPages = Number(body.totalPages) || 0
4019
- renderScheduleTaskTable(body.tasks, body.timezone, scheduleManageState.total)
3573
+ renderScheduleTaskTable(body.tasks, body.timezone)
4020
3574
  return body
4021
3575
  }
4022
3576
 
@@ -4069,7 +3623,7 @@
4069
3623
  if (scheduleCreateForm) scheduleCreateForm.hidden = true
4070
3624
  if (scheduleTaskNameInput) scheduleTaskNameInput.value = ''
4071
3625
  if (schedulePromptInput) schedulePromptInput.value = ''
4072
- await loadScheduleTasks(1)
3626
+ await loadScheduleTasks()
4073
3627
  }
4074
3628
 
4075
3629
  function buildScheduleRunUrl(id) {
@@ -4147,14 +3701,8 @@
4147
3701
  if (!scheduleRunsTableBody || !scheduleRunsEmpty) return
4148
3702
  scheduleRunsTableBody.innerHTML = ''
4149
3703
  const list = Array.isArray(runs) ? runs : []
4150
- if (list.length > 0) {
4151
- scheduleRunsEmpty.hidden = true
4152
- scheduleRunsEmpty.classList.remove('is-error')
4153
- } else {
4154
- scheduleRunsEmpty.hidden = false
4155
- scheduleRunsEmpty.textContent = '暂无执行记录'
4156
- scheduleRunsEmpty.classList.remove('is-error')
4157
- }
3704
+ scheduleRunsEmpty.hidden = list.length > 0
3705
+ if (list.length > 0) scheduleRunsEmpty.classList.remove('is-error')
4158
3706
  if (scheduleRunResultPre) {
4159
3707
  scheduleRunResultPre.hidden = true
4160
3708
  scheduleRunResultPre.textContent = ''
@@ -4317,19 +3865,14 @@
4317
3865
  if (!scheduleManageView) return
4318
3866
  setScheduleContentView('list')
4319
3867
  setScheduleManageVisible(true)
4320
- scheduleManageState.page = 1
4321
3868
  if (scheduleTaskTableBody) scheduleTaskTableBody.innerHTML = ''
4322
- if (scheduleTasksPager) {
4323
- scheduleTasksPager.innerHTML = ''
4324
- scheduleTasksPager.hidden = true
4325
- }
4326
3869
  if (scheduleManageEmpty) {
4327
3870
  scheduleManageEmpty.hidden = false
4328
3871
  scheduleManageEmpty.textContent = '加载中…'
4329
3872
  scheduleManageEmpty.classList.remove('is-error')
4330
3873
  }
4331
3874
  try {
4332
- await loadScheduleTasks(1)
3875
+ await loadScheduleTasks()
4333
3876
  } catch (e) {
4334
3877
  if (scheduleManageEmpty) {
4335
3878
  scheduleManageEmpty.hidden = false
@@ -5677,7 +5220,6 @@
5677
5220
 
5678
5221
  function switchToSession(id) {
5679
5222
  closeRepoManageView()
5680
- closeTerminalManageView()
5681
5223
  closeAgentSettingsView()
5682
5224
  closePickerManageView()
5683
5225
  closeScheduleManageView(false)
@@ -5837,7 +5379,6 @@
5837
5379
  const text = getPromptPlainText()
5838
5380
  const trimmed = text.trim()
5839
5381
  if (!trimmed) return
5840
- resetApiErrorTurnState()
5841
5382
  setPendingUserEcho(trimmed)
5842
5383
  const payload = { type: 'prompt', text: text }
5843
5384
  autoScrollState.mode = 'FORCE_ON_SEND'
@@ -8225,7 +7766,6 @@
8225
7766
  ev.preventDefault()
8226
7767
  ev.stopPropagation()
8227
7768
  closeRepoManageView()
8228
- closeTerminalManageView()
8229
7769
  closeAgentSettingsView()
8230
7770
  closePickerManageView(false)
8231
7771
  const items = sidebarNavEl.querySelectorAll('.sidebar-nav-row')
@@ -8240,7 +7780,6 @@
8240
7780
  ev.stopPropagation()
8241
7781
  closeScheduleManageView(false)
8242
7782
  closePickerManageView(false)
8243
- closeTerminalManageView()
8244
7783
  const items = sidebarNavEl.querySelectorAll('.sidebar-nav-row')
8245
7784
  for (let i = 0; i < items.length; i++) {
8246
7785
  items[i].classList.toggle('is-active', items[i] === btn)
@@ -8248,25 +7787,10 @@
8248
7787
  void openRepoManageView()
8249
7788
  return
8250
7789
  }
8251
- if (k === 'terminal') {
8252
- ev.preventDefault()
8253
- ev.stopPropagation()
8254
- closeScheduleManageView(false)
8255
- closePickerManageView(false)
8256
- closeRepoManageView()
8257
- closeAgentSettingsView()
8258
- const items = sidebarNavEl.querySelectorAll('.sidebar-nav-row')
8259
- for (let i = 0; i < items.length; i++) {
8260
- items[i].classList.toggle('is-active', items[i] === btn)
8261
- }
8262
- openTerminalManageView()
8263
- return
8264
- }
8265
7790
  if (k === 'tools' || k === 'mcp' || k === 'skills' || k === 'agentTeams') {
8266
7791
  ev.preventDefault()
8267
7792
  ev.stopPropagation()
8268
7793
  closeRepoManageView()
8269
- closeTerminalManageView()
8270
7794
  closeAgentSettingsView()
8271
7795
  closeScheduleManageView(false)
8272
7796
  const items = sidebarNavEl.querySelectorAll('.sidebar-nav-row')
@@ -8653,7 +8177,6 @@
8653
8177
  function openAgentSettingsView(initialTab) {
8654
8178
  if (!agentSettingsView) return
8655
8179
  closeRepoManageView()
8656
- closeTerminalManageView()
8657
8180
  closePickerManageView(false)
8658
8181
  closeScheduleManageView(false)
8659
8182
  if (initialTab === 'agentMd' || initialTab === 'settings') {
@@ -8946,6 +8469,14 @@
8946
8469
  : ''
8947
8470
  const value = String(raw ?? '').trim()
8948
8471
  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
+ }
8949
8480
  out[field.key] = value
8950
8481
  }
8951
8482
  return { ok: true, env: out }