@auto-ai/agent 2.1.168 → 2.1.172

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 (482) hide show
  1. package/dist/{404 → safe-a/404}/index.html +1 -1
  2. package/dist/{404.html → safe-a/404.html} +1 -1
  3. package/dist/safe-a/_next/static/chunks/08ce2af10358a8ab.js +1 -0
  4. package/dist/safe-a/_next/static/chunks/10f9223e5a712af5.css +1 -0
  5. package/dist/safe-a/_next/static/chunks/26aeb1c7cdca0bc7.js +1 -0
  6. package/dist/safe-a/_next/static/chunks/3051ec76bf1f7867.js +1 -0
  7. package/dist/safe-a/_next/static/chunks/4a33b6b9bc52fb1a.js +1 -0
  8. package/dist/safe-a/_next/static/chunks/53a59aecd3e0dfb5.js +1 -0
  9. package/dist/safe-a/_next/static/chunks/5ef8399eb6496949.js +1 -0
  10. package/dist/{_next/static/chunks/d55f4f3df263ad3d.js → safe-a/_next/static/chunks/8cccc3fe71fa849b.js} +1 -1
  11. package/dist/{_next/static/chunks/886a31720c72a306.css → safe-a/_next/static/chunks/98fff38c6425a797.css} +1 -1
  12. package/dist/{_next/static/chunks/b66a17ae6f8aeff3.js → safe-a/_next/static/chunks/bbf364bb7f0ab6f7.js} +1 -1
  13. package/dist/safe-a/_next/static/chunks/d704441569a382a1.js +1 -0
  14. package/dist/safe-a/_next/static/chunks/eac98d693efb6a1f.js +1 -0
  15. package/dist/safe-a/_next/static/chunks/f874690806ec289e.js +1 -0
  16. package/dist/{index.html → safe-a/index.html} +2 -2
  17. package/dist/{index.txt → safe-a/index.txt} +9 -9
  18. package/dist/{manage → safe-a/manage}/about/index.html +2 -2
  19. package/dist/{manage → safe-a/manage}/about/index.txt +11 -11
  20. package/dist/{manage → safe-a/manage}/env/index.html +2 -2
  21. package/dist/{manage → safe-a/manage}/env/index.txt +13 -13
  22. package/dist/{manage → safe-a/manage}/general/index.html +2 -2
  23. package/dist/{manage → safe-a/manage}/general/index.txt +11 -11
  24. package/dist/{manage → safe-a/manage}/index.html +2 -2
  25. package/dist/{manage → safe-a/manage}/index.txt +8 -8
  26. package/dist/safe-a/manage/mcp/index.html +2 -0
  27. package/dist/{manage → safe-a/manage}/mcp/index.txt +11 -11
  28. package/dist/{manage → safe-a/manage}/permissions/index.html +2 -2
  29. package/dist/{manage → safe-a/manage}/permissions/index.txt +11 -11
  30. package/dist/safe-a/manage/skills/index.html +2 -0
  31. package/dist/{manage → safe-a/manage}/skills/index.txt +11 -11
  32. package/dist/{manage → safe-a/manage}/task/index.html +2 -2
  33. package/dist/{manage → safe-a/manage}/task/index.txt +11 -11
  34. package/dist/{manage → safe-a/manage}/teams/index.html +2 -2
  35. package/dist/{manage → safe-a/manage}/teams/index.txt +11 -11
  36. package/dist/safe-a/manage/tools/index.html +2 -0
  37. package/dist/{manage → safe-a/manage}/tools/index.txt +11 -11
  38. package/dist/{agent-office.html → ws-test/agent-office.html} +226 -155
  39. package/dist/ws-test/ws-test.css +3329 -0
  40. package/dist/ws-test/ws-test.html +783 -0
  41. package/dist/{ws-test.html → ws-test/ws-test.js} +1952 -3514
  42. package/lib/launcher-env.js +12 -3
  43. package/package.json +6 -6
  44. package/skills-runtime/deploy-test-env/SKILL.md +1 -1
  45. package/skills-runtime/dev-task-flow/SKILL.md +4 -4
  46. package/skills-runtime/self-test-flow/SKILL.md +2 -2
  47. package/skills-runtime/workflow-hub/SKILL.md +1 -1
  48. package/tools-runtime/code-tool/index.cjs +8 -3
  49. package/tools-runtime/code-tool/src/workspace.ts +13 -7
  50. package/tools-runtime/git-tool/index.cjs +34 -8
  51. package/tools-runtime/git-tool/src/index.ts +1 -1
  52. package/tools-runtime/git-tool/src/workspace.test.ts +9 -9
  53. package/tools-runtime/git-tool/src/workspace.ts +53 -13
  54. package/dist/_next/static/chunks/0a4ab823884025be.css +0 -1
  55. package/dist/_next/static/chunks/257d36fba79aa4ab.js +0 -1
  56. package/dist/_next/static/chunks/2b18c967f27dd561.js +0 -1
  57. package/dist/_next/static/chunks/652e486c20710ca8.js +0 -1
  58. package/dist/_next/static/chunks/789aab39327312c3.js +0 -1
  59. package/dist/_next/static/chunks/7def01c245e03b59.js +0 -1
  60. package/dist/_next/static/chunks/a256978ef9393e3e.js +0 -1
  61. package/dist/_next/static/chunks/c242e5c1d3639838.js +0 -1
  62. package/dist/_next/static/chunks/d77e4439761aa20d.js +0 -1
  63. package/dist/manage/mcp/index.html +0 -2
  64. package/dist/manage/skills/index.html +0 -2
  65. package/dist/manage/tools/index.html +0 -2
  66. /package/dist/{_next/static/6_8Ppg2OmCO0VcGqmqnxR → safe-a/_next/static/-ohtVxolUnzQcSsncJVgK}/_buildManifest.js +0 -0
  67. /package/dist/{_next/static/6_8Ppg2OmCO0VcGqmqnxR → safe-a/_next/static/-ohtVxolUnzQcSsncJVgK}/_clientMiddlewareManifest.json +0 -0
  68. /package/dist/{_next/static/6_8Ppg2OmCO0VcGqmqnxR → safe-a/_next/static/-ohtVxolUnzQcSsncJVgK}/_ssgManifest.js +0 -0
  69. /package/dist/{_next → safe-a/_next}/static/chunks/01766c1e2fdff227.js +0 -0
  70. /package/dist/{_next → safe-a/_next}/static/chunks/04c9439163b67552.js +0 -0
  71. /package/dist/{_next → safe-a/_next}/static/chunks/05e1926dc5c477b7.js +0 -0
  72. /package/dist/{_next → safe-a/_next}/static/chunks/06b923aa1177f43f.js +0 -0
  73. /package/dist/{_next → safe-a/_next}/static/chunks/092c97532613af2a.js +0 -0
  74. /package/dist/{_next → safe-a/_next}/static/chunks/0b639ff4f1971d14.js +0 -0
  75. /package/dist/{_next → safe-a/_next}/static/chunks/0b69dba7f1e63f30.js +0 -0
  76. /package/dist/{_next → safe-a/_next}/static/chunks/0ce6504fc10ce408.js +0 -0
  77. /package/dist/{_next → safe-a/_next}/static/chunks/0e1e7d5f7a375308.js +0 -0
  78. /package/dist/{_next → safe-a/_next}/static/chunks/0e8139882ad093d2.js +0 -0
  79. /package/dist/{_next → safe-a/_next}/static/chunks/0ea5a62c3f30dc56.js +0 -0
  80. /package/dist/{_next → safe-a/_next}/static/chunks/0f1810e4c6b0dd0c.js +0 -0
  81. /package/dist/{_next → safe-a/_next}/static/chunks/0fa097a572705cfa.js +0 -0
  82. /package/dist/{_next → safe-a/_next}/static/chunks/0fb0d030e8dee231.js +0 -0
  83. /package/dist/{_next → safe-a/_next}/static/chunks/0fd3876e0d9e8acc.js +0 -0
  84. /package/dist/{_next → safe-a/_next}/static/chunks/106955e3cc6a6843.js +0 -0
  85. /package/dist/{_next → safe-a/_next}/static/chunks/1078bc1642db53ad.js +0 -0
  86. /package/dist/{_next → safe-a/_next}/static/chunks/108a0b77418f1d31.js +0 -0
  87. /package/dist/{_next → safe-a/_next}/static/chunks/13b54d70a1ee1de7.js +0 -0
  88. /package/dist/{_next → safe-a/_next}/static/chunks/13f94fc3dda88c90.js +0 -0
  89. /package/dist/{_next → safe-a/_next}/static/chunks/155374df9f6b4b9a.js +0 -0
  90. /package/dist/{_next → safe-a/_next}/static/chunks/16ea1d3cf6db8a53.js +0 -0
  91. /package/dist/{_next → safe-a/_next}/static/chunks/170f7361bd4d33e2.js +0 -0
  92. /package/dist/{_next → safe-a/_next}/static/chunks/17722e3ac4e00587.js +0 -0
  93. /package/dist/{_next → safe-a/_next}/static/chunks/179a5dac78ab2cb9.js +0 -0
  94. /package/dist/{_next → safe-a/_next}/static/chunks/1818d7a661948f6b.js +0 -0
  95. /package/dist/{_next → safe-a/_next}/static/chunks/18977fe8f51209aa.js +0 -0
  96. /package/dist/{_next → safe-a/_next}/static/chunks/19584f955475ce91.js +0 -0
  97. /package/dist/{_next → safe-a/_next}/static/chunks/1974f51c298bce94.js +0 -0
  98. /package/dist/{_next → safe-a/_next}/static/chunks/19c1491e85e22b3b.js +0 -0
  99. /package/dist/{_next → safe-a/_next}/static/chunks/19ca17e5015c42a3.js +0 -0
  100. /package/dist/{_next → safe-a/_next}/static/chunks/1a4b553856a8ffdf.js +0 -0
  101. /package/dist/{_next → safe-a/_next}/static/chunks/1acf2d9664500f51.js +0 -0
  102. /package/dist/{_next → safe-a/_next}/static/chunks/1b55c29b8cad4a50.js +0 -0
  103. /package/dist/{_next → safe-a/_next}/static/chunks/1bb28f71c19fa824.js +0 -0
  104. /package/dist/{_next → safe-a/_next}/static/chunks/1bfa645704d9149a.js +0 -0
  105. /package/dist/{_next → safe-a/_next}/static/chunks/1c9321874fea5f0d.js +0 -0
  106. /package/dist/{_next → safe-a/_next}/static/chunks/1d3e7886be9f671c.js +0 -0
  107. /package/dist/{_next → safe-a/_next}/static/chunks/1e17456ccebc9cd2.js +0 -0
  108. /package/dist/{_next → safe-a/_next}/static/chunks/1e43922998a0ed2f.js +0 -0
  109. /package/dist/{_next → safe-a/_next}/static/chunks/1f3da8a76b11d2aa.js +0 -0
  110. /package/dist/{_next → safe-a/_next}/static/chunks/1fec17d16aff9eed.js +0 -0
  111. /package/dist/{_next → safe-a/_next}/static/chunks/2046937bffedf074.js +0 -0
  112. /package/dist/{_next → safe-a/_next}/static/chunks/219a3413675ba6f1.js +0 -0
  113. /package/dist/{_next → safe-a/_next}/static/chunks/2326118ef1328bc5.js +0 -0
  114. /package/dist/{_next → safe-a/_next}/static/chunks/236775e4ec4f8a94.js +0 -0
  115. /package/dist/{_next → safe-a/_next}/static/chunks/242529c986baeb00.js +0 -0
  116. /package/dist/{_next → safe-a/_next}/static/chunks/270d7571d2eea071.js +0 -0
  117. /package/dist/{_next → safe-a/_next}/static/chunks/27c407347ce26b78.js +0 -0
  118. /package/dist/{_next → safe-a/_next}/static/chunks/27ff2e69b2fd19e5.js +0 -0
  119. /package/dist/{_next → safe-a/_next}/static/chunks/29676075a0390867.js +0 -0
  120. /package/dist/{_next → safe-a/_next}/static/chunks/2c6d585a97629311.js +0 -0
  121. /package/dist/{_next → safe-a/_next}/static/chunks/2df3e464b6247e75.js +0 -0
  122. /package/dist/{_next → safe-a/_next}/static/chunks/2e574acbf68e77ff.js +0 -0
  123. /package/dist/{_next → safe-a/_next}/static/chunks/2ec6d7ddb4c04987.js +0 -0
  124. /package/dist/{_next → safe-a/_next}/static/chunks/2f7d30e66e995b02.js +0 -0
  125. /package/dist/{_next → safe-a/_next}/static/chunks/2fab2306850ac97b.js +0 -0
  126. /package/dist/{_next → safe-a/_next}/static/chunks/2fcc6298b6dd7a82.js +0 -0
  127. /package/dist/{_next → safe-a/_next}/static/chunks/303d9c2a2c956f25.js +0 -0
  128. /package/dist/{_next → safe-a/_next}/static/chunks/32a7ca0a75a897da.js +0 -0
  129. /package/dist/{_next → safe-a/_next}/static/chunks/32b4d63e10d31351.js +0 -0
  130. /package/dist/{_next → safe-a/_next}/static/chunks/32b9bdd82a961878.js +0 -0
  131. /package/dist/{_next → safe-a/_next}/static/chunks/3509a66e019ceae3.js +0 -0
  132. /package/dist/{_next → safe-a/_next}/static/chunks/3520f1af0a1b7f66.js +0 -0
  133. /package/dist/{_next → safe-a/_next}/static/chunks/354aaa2e36b75b81.js +0 -0
  134. /package/dist/{_next → safe-a/_next}/static/chunks/3590c4a4f40cdb5d.js +0 -0
  135. /package/dist/{_next → safe-a/_next}/static/chunks/35f1637c2feb232d.js +0 -0
  136. /package/dist/{_next → safe-a/_next}/static/chunks/37bbbf907196a5bf.js +0 -0
  137. /package/dist/{_next → safe-a/_next}/static/chunks/37cfaa4963ac51f3.js +0 -0
  138. /package/dist/{_next → safe-a/_next}/static/chunks/3934bd57f459566e.js +0 -0
  139. /package/dist/{_next → safe-a/_next}/static/chunks/3a947667fddbdd53.js +0 -0
  140. /package/dist/{_next → safe-a/_next}/static/chunks/3aac5736e5781b46.js +0 -0
  141. /package/dist/{_next → safe-a/_next}/static/chunks/3ae23df392f9bed8.js +0 -0
  142. /package/dist/{_next → safe-a/_next}/static/chunks/3ae4e2529aa621fb.js +0 -0
  143. /package/dist/{_next → safe-a/_next}/static/chunks/3b2bb9f17546ee3e.js +0 -0
  144. /package/dist/{_next → safe-a/_next}/static/chunks/3bcd531d40d6c019.js +0 -0
  145. /package/dist/{_next → safe-a/_next}/static/chunks/3c695d1c2efbc749.js +0 -0
  146. /package/dist/{_next → safe-a/_next}/static/chunks/3d8e9a96a69193d4.js +0 -0
  147. /package/dist/{_next → safe-a/_next}/static/chunks/3dcb1dcf23e7ab9c.js +0 -0
  148. /package/dist/{_next → safe-a/_next}/static/chunks/3e2ea3a7fe64826d.js +0 -0
  149. /package/dist/{_next → safe-a/_next}/static/chunks/3e9c98df7d56e9b2.js +0 -0
  150. /package/dist/{_next → safe-a/_next}/static/chunks/3ec05a61e93547d3.js +0 -0
  151. /package/dist/{_next → safe-a/_next}/static/chunks/3f6fe8a1903009ea.js +0 -0
  152. /package/dist/{_next → safe-a/_next}/static/chunks/3fb4674edcb2d726.js +0 -0
  153. /package/dist/{_next → safe-a/_next}/static/chunks/3fd03b9ed21b30fc.js +0 -0
  154. /package/dist/{_next → safe-a/_next}/static/chunks/40268f8e3ff0314e.js +0 -0
  155. /package/dist/{_next → safe-a/_next}/static/chunks/40cc0252b2f1d855.js +0 -0
  156. /package/dist/{_next → safe-a/_next}/static/chunks/413a7be096275d7f.js +0 -0
  157. /package/dist/{_next → safe-a/_next}/static/chunks/459d401d9f9e5b9f.js +0 -0
  158. /package/dist/{_next → safe-a/_next}/static/chunks/45ab9a1f693d609c.js +0 -0
  159. /package/dist/{_next → safe-a/_next}/static/chunks/481a2858f7df907d.js +0 -0
  160. /package/dist/{_next → safe-a/_next}/static/chunks/49df9708d6328c4a.js +0 -0
  161. /package/dist/{_next → safe-a/_next}/static/chunks/4a340ea4ac145216.js +0 -0
  162. /package/dist/{_next → safe-a/_next}/static/chunks/4be779bcbd94352d.js +0 -0
  163. /package/dist/{_next → safe-a/_next}/static/chunks/4c33a1cc6db74105.js +0 -0
  164. /package/dist/{_next → safe-a/_next}/static/chunks/4d129d4e15c8c424.js +0 -0
  165. /package/dist/{_next → safe-a/_next}/static/chunks/4df298f5b420f474.js +0 -0
  166. /package/dist/{_next → safe-a/_next}/static/chunks/4dfbfdff43b8479b.js +0 -0
  167. /package/dist/{_next → safe-a/_next}/static/chunks/5069ee4aa806b0ea.js +0 -0
  168. /package/dist/{_next → safe-a/_next}/static/chunks/519049cd74a40910.js +0 -0
  169. /package/dist/{_next → safe-a/_next}/static/chunks/522518d740397639.js +0 -0
  170. /package/dist/{_next → safe-a/_next}/static/chunks/52e2164e45febae6.js +0 -0
  171. /package/dist/{_next → safe-a/_next}/static/chunks/534b5acf573aa491.js +0 -0
  172. /package/dist/{_next → safe-a/_next}/static/chunks/538cc02e54714b23.js +0 -0
  173. /package/dist/{_next → safe-a/_next}/static/chunks/53be52c43a14557c.js +0 -0
  174. /package/dist/{_next → safe-a/_next}/static/chunks/54c43751bf4c4da2.js +0 -0
  175. /package/dist/{_next → safe-a/_next}/static/chunks/55087cc98e6237f1.js +0 -0
  176. /package/dist/{_next → safe-a/_next}/static/chunks/55f8de91b4803778.js +0 -0
  177. /package/dist/{_next → safe-a/_next}/static/chunks/560ca23f77c0e819.js +0 -0
  178. /package/dist/{_next → safe-a/_next}/static/chunks/57bb853857f3de83.js +0 -0
  179. /package/dist/{_next → safe-a/_next}/static/chunks/588e6975a7bd6671.js +0 -0
  180. /package/dist/{_next → safe-a/_next}/static/chunks/5a0b630678282d4f.js +0 -0
  181. /package/dist/{_next → safe-a/_next}/static/chunks/5a3e355216280144.js +0 -0
  182. /package/dist/{_next → safe-a/_next}/static/chunks/5a4c198fd41e8ec4.js +0 -0
  183. /package/dist/{_next → safe-a/_next}/static/chunks/5b916c9dc09e323c.js +0 -0
  184. /package/dist/{_next → safe-a/_next}/static/chunks/5bad5163b6e015f5.js +0 -0
  185. /package/dist/{_next → safe-a/_next}/static/chunks/5ccd5a6ac9c2f980.js +0 -0
  186. /package/dist/{_next → safe-a/_next}/static/chunks/5d5333084191fb10.js +0 -0
  187. /package/dist/{_next → safe-a/_next}/static/chunks/5d79b7f202080232.js +0 -0
  188. /package/dist/{_next → safe-a/_next}/static/chunks/5ea79c109cbe8a86.js +0 -0
  189. /package/dist/{_next → safe-a/_next}/static/chunks/5ee72092303043ef.js +0 -0
  190. /package/dist/{_next → safe-a/_next}/static/chunks/5fc8a5235ddfa787.js +0 -0
  191. /package/dist/{_next → safe-a/_next}/static/chunks/61b3d4c00499dd14.js +0 -0
  192. /package/dist/{_next → safe-a/_next}/static/chunks/61ce261738313b8a.js +0 -0
  193. /package/dist/{_next → safe-a/_next}/static/chunks/62d925bcc8518b6f.js +0 -0
  194. /package/dist/{_next → safe-a/_next}/static/chunks/63ec034afca4b5d6.js +0 -0
  195. /package/dist/{_next → safe-a/_next}/static/chunks/644aa76620718c98.js +0 -0
  196. /package/dist/{_next → safe-a/_next}/static/chunks/648b653b36802fdc.js +0 -0
  197. /package/dist/{_next → safe-a/_next}/static/chunks/6522643341a0921c.js +0 -0
  198. /package/dist/{_next → safe-a/_next}/static/chunks/65fb49c8a7f59842.js +0 -0
  199. /package/dist/{_next → safe-a/_next}/static/chunks/65fe0975412ff703.js +0 -0
  200. /package/dist/{_next → safe-a/_next}/static/chunks/66b30159915524db.js +0 -0
  201. /package/dist/{_next → safe-a/_next}/static/chunks/66ed07a735eac6e3.js +0 -0
  202. /package/dist/{_next → safe-a/_next}/static/chunks/6785757cc05fec19.js +0 -0
  203. /package/dist/{_next → safe-a/_next}/static/chunks/67c9db5577080125.js +0 -0
  204. /package/dist/{_next → safe-a/_next}/static/chunks/68bd2bd64624e20d.js +0 -0
  205. /package/dist/{_next → safe-a/_next}/static/chunks/692e7ee14236fefb.js +0 -0
  206. /package/dist/{_next → safe-a/_next}/static/chunks/69cfdbc51cf2d3c3.js +0 -0
  207. /package/dist/{_next → safe-a/_next}/static/chunks/6ae709c575c74979.js +0 -0
  208. /package/dist/{_next → safe-a/_next}/static/chunks/6b652524b5ffdd9e.js +0 -0
  209. /package/dist/{_next → safe-a/_next}/static/chunks/6b7c3c962a14dc29.js +0 -0
  210. /package/dist/{_next → safe-a/_next}/static/chunks/6bc7c57f119ad4f6.js +0 -0
  211. /package/dist/{_next → safe-a/_next}/static/chunks/6c3b2d0be1c633b6.js +0 -0
  212. /package/dist/{_next → safe-a/_next}/static/chunks/6cc2f7f962cdd082.js +0 -0
  213. /package/dist/{_next → safe-a/_next}/static/chunks/6d4209e94b1aafe6.js +0 -0
  214. /package/dist/{_next → safe-a/_next}/static/chunks/6ddf95b168bfbc36.js +0 -0
  215. /package/dist/{_next → safe-a/_next}/static/chunks/6e61f670898cb297.css +0 -0
  216. /package/dist/{_next → safe-a/_next}/static/chunks/6f3afa83656eab67.js +0 -0
  217. /package/dist/{_next → safe-a/_next}/static/chunks/6f4460bd0b8a57af.js +0 -0
  218. /package/dist/{_next → safe-a/_next}/static/chunks/6fe835d41fdbd638.js +0 -0
  219. /package/dist/{_next → safe-a/_next}/static/chunks/70459a2a4c45653e.js +0 -0
  220. /package/dist/{_next → safe-a/_next}/static/chunks/7137c7537c459c31.js +0 -0
  221. /package/dist/{_next → safe-a/_next}/static/chunks/715c085d7c10eeda.js +0 -0
  222. /package/dist/{_next → safe-a/_next}/static/chunks/71d3a80bc9d53b07.js +0 -0
  223. /package/dist/{_next → safe-a/_next}/static/chunks/71e3a90489469c28.js +0 -0
  224. /package/dist/{_next → safe-a/_next}/static/chunks/72a56bd75075fd83.js +0 -0
  225. /package/dist/{_next → safe-a/_next}/static/chunks/72ef1696f44fcf61.js +0 -0
  226. /package/dist/{_next → safe-a/_next}/static/chunks/736441266ceb14e2.js +0 -0
  227. /package/dist/{_next → safe-a/_next}/static/chunks/73cbf0064096e28c.js +0 -0
  228. /package/dist/{_next → safe-a/_next}/static/chunks/751de74a23cc9036.js +0 -0
  229. /package/dist/{_next → safe-a/_next}/static/chunks/756b6c2e620386ff.js +0 -0
  230. /package/dist/{_next → safe-a/_next}/static/chunks/75a396e1752cd59d.js +0 -0
  231. /package/dist/{_next → safe-a/_next}/static/chunks/764c541428e1c6eb.js +0 -0
  232. /package/dist/{_next → safe-a/_next}/static/chunks/79128afded6e01d9.js +0 -0
  233. /package/dist/{_next → safe-a/_next}/static/chunks/7988d5ea63356e10.js +0 -0
  234. /package/dist/{_next → safe-a/_next}/static/chunks/7aa69fd5d97b7146.js +0 -0
  235. /package/dist/{_next → safe-a/_next}/static/chunks/7b9c09d0ce43f1c2.js +0 -0
  236. /package/dist/{_next → safe-a/_next}/static/chunks/7bdf0e5b41aeb209.css +0 -0
  237. /package/dist/{_next → safe-a/_next}/static/chunks/7d3bf918bccde738.js +0 -0
  238. /package/dist/{_next → safe-a/_next}/static/chunks/7dbb8abebf50d816.js +0 -0
  239. /package/dist/{_next → safe-a/_next}/static/chunks/7ef348801eff6590.js +0 -0
  240. /package/dist/{_next → safe-a/_next}/static/chunks/7f6e82ac63db5eff.js +0 -0
  241. /package/dist/{_next → safe-a/_next}/static/chunks/7fd45fb9cf0995f3.js +0 -0
  242. /package/dist/{_next → safe-a/_next}/static/chunks/8085c74f26fa2c4e.js +0 -0
  243. /package/dist/{_next → safe-a/_next}/static/chunks/84185f4bb07ccbd7.js +0 -0
  244. /package/dist/{_next → safe-a/_next}/static/chunks/85fc05549f7f100c.js +0 -0
  245. /package/dist/{_next → safe-a/_next}/static/chunks/87e12ecbe9521f9b.js +0 -0
  246. /package/dist/{_next → safe-a/_next}/static/chunks/88a999988f915988.js +0 -0
  247. /package/dist/{_next → safe-a/_next}/static/chunks/88bc97899d2ce4e5.js +0 -0
  248. /package/dist/{_next → safe-a/_next}/static/chunks/8bdc142fad5847ed.js +0 -0
  249. /package/dist/{_next → safe-a/_next}/static/chunks/8deb0392842e5a01.js +0 -0
  250. /package/dist/{_next → safe-a/_next}/static/chunks/8f038ff914c4b0df.js +0 -0
  251. /package/dist/{_next → safe-a/_next}/static/chunks/8f5be275907dd98c.js +0 -0
  252. /package/dist/{_next → safe-a/_next}/static/chunks/9037530b0f1d5783.js +0 -0
  253. /package/dist/{_next → safe-a/_next}/static/chunks/9078ad91aa20dca0.js +0 -0
  254. /package/dist/{_next → safe-a/_next}/static/chunks/92c3617a4e22a464.js +0 -0
  255. /package/dist/{_next → safe-a/_next}/static/chunks/932d3fcc2596e8d5.js +0 -0
  256. /package/dist/{_next → safe-a/_next}/static/chunks/937e26e6e01d9ec9.js +0 -0
  257. /package/dist/{_next → safe-a/_next}/static/chunks/93bfaf233e66b48c.js +0 -0
  258. /package/dist/{_next → safe-a/_next}/static/chunks/94029062f236cadc.js +0 -0
  259. /package/dist/{_next → safe-a/_next}/static/chunks/94e88cfda11697d2.js +0 -0
  260. /package/dist/{_next → safe-a/_next}/static/chunks/95c4d26e469d1d8f.js +0 -0
  261. /package/dist/{_next → safe-a/_next}/static/chunks/96026b5eb5d2566b.js +0 -0
  262. /package/dist/{_next → safe-a/_next}/static/chunks/962a27e9c634b823.js +0 -0
  263. /package/dist/{_next → safe-a/_next}/static/chunks/966fb5830ce1029c.js +0 -0
  264. /package/dist/{_next → safe-a/_next}/static/chunks/9724567275720686.js +0 -0
  265. /package/dist/{_next → safe-a/_next}/static/chunks/98e243fb5992a71c.js +0 -0
  266. /package/dist/{_next → safe-a/_next}/static/chunks/9a7b2a483b109c0a.js +0 -0
  267. /package/dist/{_next → safe-a/_next}/static/chunks/9b3df6b20a9625d5.js +0 -0
  268. /package/dist/{_next → safe-a/_next}/static/chunks/9c6c00fa68012026.js +0 -0
  269. /package/dist/{_next → safe-a/_next}/static/chunks/9cb28a1dacb7ea6d.js +0 -0
  270. /package/dist/{_next → safe-a/_next}/static/chunks/9ccf7a8bca1730bf.js +0 -0
  271. /package/dist/{_next → safe-a/_next}/static/chunks/9e96c84b86d1bbf3.js +0 -0
  272. /package/dist/{_next → safe-a/_next}/static/chunks/9f0ee4783140adf1.js +0 -0
  273. /package/dist/{_next → safe-a/_next}/static/chunks/9fefea69ec034a63.js +0 -0
  274. /package/dist/{_next → safe-a/_next}/static/chunks/a1b9abf15c0f7655.js +0 -0
  275. /package/dist/{_next → safe-a/_next}/static/chunks/a37aa474433d29e3.js +0 -0
  276. /package/dist/{_next → safe-a/_next}/static/chunks/a4776dc3e00e5ab0.js +0 -0
  277. /package/dist/{_next → safe-a/_next}/static/chunks/a5df6158856685f1.js +0 -0
  278. /package/dist/{_next → safe-a/_next}/static/chunks/a6737fc58619eae5.js +0 -0
  279. /package/dist/{_next → safe-a/_next}/static/chunks/a6a98f9278704b6a.js +0 -0
  280. /package/dist/{_next → safe-a/_next}/static/chunks/a6dad97d9634a72d.js +0 -0
  281. /package/dist/{_next → safe-a/_next}/static/chunks/a7277c96f3669bea.js +0 -0
  282. /package/dist/{_next → safe-a/_next}/static/chunks/a9fed5c43d754a96.js +0 -0
  283. /package/dist/{_next → safe-a/_next}/static/chunks/aa0a4c596151b22b.js +0 -0
  284. /package/dist/{_next → safe-a/_next}/static/chunks/aa867a1fa8b105e1.js +0 -0
  285. /package/dist/{_next → safe-a/_next}/static/chunks/ad4ba491cf12423f.js +0 -0
  286. /package/dist/{_next → safe-a/_next}/static/chunks/ad50a7d15cd9d9d8.js +0 -0
  287. /package/dist/{_next → safe-a/_next}/static/chunks/af7b0bd1b40ad066.js +0 -0
  288. /package/dist/{_next → safe-a/_next}/static/chunks/b24e3802454a5567.js +0 -0
  289. /package/dist/{_next → safe-a/_next}/static/chunks/b29a85c3dae2bb9c.js +0 -0
  290. /package/dist/{_next → safe-a/_next}/static/chunks/b30f1da4e57f459a.js +0 -0
  291. /package/dist/{_next → safe-a/_next}/static/chunks/b360c9fc22dbf831.js +0 -0
  292. /package/dist/{_next → safe-a/_next}/static/chunks/b3e79c76be269ccc.js +0 -0
  293. /package/dist/{_next → safe-a/_next}/static/chunks/b429be4e16fa1e00.js +0 -0
  294. /package/dist/{_next → safe-a/_next}/static/chunks/b61ec36c9bbca3e0.js +0 -0
  295. /package/dist/{_next → safe-a/_next}/static/chunks/b65565677c3e8c0a.js +0 -0
  296. /package/dist/{_next → safe-a/_next}/static/chunks/b66afb4b0be97af8.js +0 -0
  297. /package/dist/{_next → safe-a/_next}/static/chunks/b69f987a60b05db3.js +0 -0
  298. /package/dist/{_next → safe-a/_next}/static/chunks/b78822282754a47c.js +0 -0
  299. /package/dist/{_next → safe-a/_next}/static/chunks/b7f72bcb870dda3b.js +0 -0
  300. /package/dist/{_next → safe-a/_next}/static/chunks/b92c67520afabac2.js +0 -0
  301. /package/dist/{_next → safe-a/_next}/static/chunks/bbcf9daa108b22fb.js +0 -0
  302. /package/dist/{_next → safe-a/_next}/static/chunks/bc7bda699a7ccda1.js +0 -0
  303. /package/dist/{_next → safe-a/_next}/static/chunks/bd1f33816fa01c16.js +0 -0
  304. /package/dist/{_next → safe-a/_next}/static/chunks/bd2dcf98c9b362f6.js +0 -0
  305. /package/dist/{_next → safe-a/_next}/static/chunks/bd984c5404403e7d.js +0 -0
  306. /package/dist/{_next → safe-a/_next}/static/chunks/bdd88bcfd223f52a.js +0 -0
  307. /package/dist/{_next → safe-a/_next}/static/chunks/bf2262100cea8c64.js +0 -0
  308. /package/dist/{_next → safe-a/_next}/static/chunks/bf2c1c402dbcccdf.js +0 -0
  309. /package/dist/{_next → safe-a/_next}/static/chunks/bfc6ee42cec583d5.js +0 -0
  310. /package/dist/{_next → safe-a/_next}/static/chunks/c15069059c9d1f53.js +0 -0
  311. /package/dist/{_next → safe-a/_next}/static/chunks/c1615032cbbf5b56.js +0 -0
  312. /package/dist/{_next → safe-a/_next}/static/chunks/c2546d2b493dd907.js +0 -0
  313. /package/dist/{_next → safe-a/_next}/static/chunks/c3669d468d3f2b3a.js +0 -0
  314. /package/dist/{_next → safe-a/_next}/static/chunks/c3b49937059d3d70.js +0 -0
  315. /package/dist/{_next → safe-a/_next}/static/chunks/c5b5aba98d38ef23.js +0 -0
  316. /package/dist/{_next → safe-a/_next}/static/chunks/c5be27a596acfa18.js +0 -0
  317. /package/dist/{_next → safe-a/_next}/static/chunks/c6cc32860b96278f.js +0 -0
  318. /package/dist/{_next → safe-a/_next}/static/chunks/c725524ea13a50ab.js +0 -0
  319. /package/dist/{_next → safe-a/_next}/static/chunks/c8942bee3aebddae.js +0 -0
  320. /package/dist/{_next → safe-a/_next}/static/chunks/c8e45be36912e439.js +0 -0
  321. /package/dist/{_next → safe-a/_next}/static/chunks/c933951b3113492f.js +0 -0
  322. /package/dist/{_next → safe-a/_next}/static/chunks/c9813626ba898586.js +0 -0
  323. /package/dist/{_next → safe-a/_next}/static/chunks/ca2725c2b45709c1.js +0 -0
  324. /package/dist/{_next → safe-a/_next}/static/chunks/caf4049dc563940e.js +0 -0
  325. /package/dist/{_next → safe-a/_next}/static/chunks/cafadd69e03e6c4b.js +0 -0
  326. /package/dist/{_next → safe-a/_next}/static/chunks/cba2741f84ef36ed.js +0 -0
  327. /package/dist/{_next → safe-a/_next}/static/chunks/cccecf726769787f.js +0 -0
  328. /package/dist/{_next → safe-a/_next}/static/chunks/cd0e7e3cc303b4e4.js +0 -0
  329. /package/dist/{_next → safe-a/_next}/static/chunks/cd4556cbed1f8957.js +0 -0
  330. /package/dist/{_next → safe-a/_next}/static/chunks/cd5eec7d305aa041.js +0 -0
  331. /package/dist/{_next → safe-a/_next}/static/chunks/d09636e7bcf60ad1.js +0 -0
  332. /package/dist/{_next → safe-a/_next}/static/chunks/d2d432a9facf4278.js +0 -0
  333. /package/dist/{_next → safe-a/_next}/static/chunks/d2e37b6d5ff62bcb.js +0 -0
  334. /package/dist/{_next → safe-a/_next}/static/chunks/d33a24782888b869.js +0 -0
  335. /package/dist/{_next → safe-a/_next}/static/chunks/d33e49aabd798892.js +0 -0
  336. /package/dist/{_next → safe-a/_next}/static/chunks/d3990c1e87ef3e23.js +0 -0
  337. /package/dist/{_next → safe-a/_next}/static/chunks/d433c87b0bc69cda.js +0 -0
  338. /package/dist/{_next → safe-a/_next}/static/chunks/d47cd27ac08f5429.js +0 -0
  339. /package/dist/{_next → safe-a/_next}/static/chunks/d599ef4d0f84a93d.js +0 -0
  340. /package/dist/{_next → safe-a/_next}/static/chunks/d5e3d29f769997cc.js +0 -0
  341. /package/dist/{_next → safe-a/_next}/static/chunks/d69b21102305d19e.js +0 -0
  342. /package/dist/{_next → safe-a/_next}/static/chunks/d715e874b8ee8540.js +0 -0
  343. /package/dist/{_next → safe-a/_next}/static/chunks/d729414ff836cd53.js +0 -0
  344. /package/dist/{_next → safe-a/_next}/static/chunks/d82740475fc07e98.js +0 -0
  345. /package/dist/{_next → safe-a/_next}/static/chunks/d842d30dcb0f50a9.js +0 -0
  346. /package/dist/{_next → safe-a/_next}/static/chunks/d8af8dadd0889c71.js +0 -0
  347. /package/dist/{_next → safe-a/_next}/static/chunks/d9b92ed2d544fca5.js +0 -0
  348. /package/dist/{_next → safe-a/_next}/static/chunks/da346aeed70dd39a.js +0 -0
  349. /package/dist/{_next → safe-a/_next}/static/chunks/dbbd673619a7f82f.js +0 -0
  350. /package/dist/{_next → safe-a/_next}/static/chunks/dc0bc471de951daf.js +0 -0
  351. /package/dist/{_next → safe-a/_next}/static/chunks/dc2186b66132ca97.js +0 -0
  352. /package/dist/{_next → safe-a/_next}/static/chunks/de0ee516f6a1aa07.js +0 -0
  353. /package/dist/{_next → safe-a/_next}/static/chunks/e04bace22e04d63c.js +0 -0
  354. /package/dist/{_next → safe-a/_next}/static/chunks/e0c76ff7114dc8dc.js +0 -0
  355. /package/dist/{_next → safe-a/_next}/static/chunks/e11d4fd8de65621d.js +0 -0
  356. /package/dist/{_next → safe-a/_next}/static/chunks/e1999bcadd3448e5.js +0 -0
  357. /package/dist/{_next → safe-a/_next}/static/chunks/e3fe320ec1b8f889.js +0 -0
  358. /package/dist/{_next → safe-a/_next}/static/chunks/e42498eec0c8d570.js +0 -0
  359. /package/dist/{_next → safe-a/_next}/static/chunks/e4973ad5c183f17a.js +0 -0
  360. /package/dist/{_next → safe-a/_next}/static/chunks/e5275dcacbabc3e3.js +0 -0
  361. /package/dist/{_next → safe-a/_next}/static/chunks/e60ef129113f6e24.js +0 -0
  362. /package/dist/{_next → safe-a/_next}/static/chunks/e61019aedfdf554e.js +0 -0
  363. /package/dist/{_next → safe-a/_next}/static/chunks/e6324292aef80338.js +0 -0
  364. /package/dist/{_next → safe-a/_next}/static/chunks/e7003dbd5d8cb2d1.js +0 -0
  365. /package/dist/{_next → safe-a/_next}/static/chunks/e7bcbeb465fa49cf.js +0 -0
  366. /package/dist/{_next → safe-a/_next}/static/chunks/e7f1a043618e43cf.js +0 -0
  367. /package/dist/{_next → safe-a/_next}/static/chunks/e8105dbb23b8e514.js +0 -0
  368. /package/dist/{_next → safe-a/_next}/static/chunks/ea12d36cdfbaafa9.js +0 -0
  369. /package/dist/{_next → safe-a/_next}/static/chunks/ea2a84258a02d5c5.js +0 -0
  370. /package/dist/{_next → safe-a/_next}/static/chunks/ea36a5ae7c6ce34f.js +0 -0
  371. /package/dist/{_next → safe-a/_next}/static/chunks/eb2d81df9fe374a8.js +0 -0
  372. /package/dist/{_next → safe-a/_next}/static/chunks/eb9ae8e95cac1197.js +0 -0
  373. /package/dist/{_next → safe-a/_next}/static/chunks/ebb0ee69f6a7883e.js +0 -0
  374. /package/dist/{_next → safe-a/_next}/static/chunks/ebcbb5070eb8e29f.js +0 -0
  375. /package/dist/{_next → safe-a/_next}/static/chunks/ebcd85ff4a1db0dc.js +0 -0
  376. /package/dist/{_next → safe-a/_next}/static/chunks/ec7537a65499e7a4.js +0 -0
  377. /package/dist/{_next → safe-a/_next}/static/chunks/ee79511740d19885.js +0 -0
  378. /package/dist/{_next → safe-a/_next}/static/chunks/eed0c3ef6a5c3706.js +0 -0
  379. /package/dist/{_next → safe-a/_next}/static/chunks/ef51763a796dde8b.js +0 -0
  380. /package/dist/{_next → safe-a/_next}/static/chunks/f0cb9b2226c53ef9.js +0 -0
  381. /package/dist/{_next → safe-a/_next}/static/chunks/f0d9f0621f8ec46d.js +0 -0
  382. /package/dist/{_next → safe-a/_next}/static/chunks/f12f45a558c3fed2.js +0 -0
  383. /package/dist/{_next → safe-a/_next}/static/chunks/f1e5e295d4db5c0f.js +0 -0
  384. /package/dist/{_next → safe-a/_next}/static/chunks/f1f911d553a62027.js +0 -0
  385. /package/dist/{_next → safe-a/_next}/static/chunks/f235a8df2f905e6a.js +0 -0
  386. /package/dist/{_next → safe-a/_next}/static/chunks/f36595b9995a49a9.js +0 -0
  387. /package/dist/{_next → safe-a/_next}/static/chunks/f42a71992d139302.js +0 -0
  388. /package/dist/{_next → safe-a/_next}/static/chunks/f42d74f288f2229c.js +0 -0
  389. /package/dist/{_next → safe-a/_next}/static/chunks/f461a75ec3b0e4e9.js +0 -0
  390. /package/dist/{_next → safe-a/_next}/static/chunks/f50fd84e477dbaeb.js +0 -0
  391. /package/dist/{_next → safe-a/_next}/static/chunks/f659a364f48244ea.js +0 -0
  392. /package/dist/{_next → safe-a/_next}/static/chunks/f813c3d77459119f.js +0 -0
  393. /package/dist/{_next → safe-a/_next}/static/chunks/f9cb4b70f67c86d8.js +0 -0
  394. /package/dist/{_next → safe-a/_next}/static/chunks/fa39b9f8bced4bcd.js +0 -0
  395. /package/dist/{_next → safe-a/_next}/static/chunks/fa5b61b8e7219fe6.js +0 -0
  396. /package/dist/{_next → safe-a/_next}/static/chunks/facb82117d49a6e1.js +0 -0
  397. /package/dist/{_next → safe-a/_next}/static/chunks/fb05f79f5e4b514e.js +0 -0
  398. /package/dist/{_next → safe-a/_next}/static/chunks/fb0f4d868b87961b.js +0 -0
  399. /package/dist/{_next → safe-a/_next}/static/chunks/fb2f1266493dd820.js +0 -0
  400. /package/dist/{_next → safe-a/_next}/static/chunks/fc2efa33a196ee45.js +0 -0
  401. /package/dist/{_next → safe-a/_next}/static/chunks/fd3d43eb8557ee49.js +0 -0
  402. /package/dist/{_next → safe-a/_next}/static/chunks/fdfce6fa0b958336.js +0 -0
  403. /package/dist/{_next → safe-a/_next}/static/chunks/ff12eca45020947a.js +0 -0
  404. /package/dist/{_next → safe-a/_next}/static/chunks/ff6860dcd793aa23.js +0 -0
  405. /package/dist/{_next → safe-a/_next}/static/chunks/turbopack-3d84668fefd38b4b.js +0 -0
  406. /package/dist/{_next → safe-a/_next}/static/chunks/turbopack-63952675b1d69124.js +0 -0
  407. /package/dist/{_next → safe-a/_next}/static/chunks/turbopack-8b41433c9a94981f.js +0 -0
  408. /package/dist/{_next → safe-a/_next}/static/media/13bf9871fe164e7f-s.f2220059.woff2 +0 -0
  409. /package/dist/{_next → safe-a/_next}/static/media/3fe682a82f50d426-s.23358719.woff2 +0 -0
  410. /package/dist/{_next → safe-a/_next}/static/media/5c285b27cdda1fe8-s.p.a62025f2.woff2 +0 -0
  411. /package/dist/{_next → safe-a/_next}/static/media/70bc3e132a0a741e-s.p.15008bfb.woff2 +0 -0
  412. /package/dist/{_next → safe-a/_next}/static/media/71b036adf157cdcf-s.bd5f4d11.woff2 +0 -0
  413. /package/dist/{_next → safe-a/_next}/static/media/89b21bb081cb7469-s.51c18f09.woff2 +0 -0
  414. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_AMS-Regular.892f691b.ttf +0 -0
  415. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_AMS-Regular.c30af439.woff2 +0 -0
  416. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_AMS-Regular.e6a3cada.woff +0 -0
  417. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Caligraphic-Bold.2f97783e.woff +0 -0
  418. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Caligraphic-Bold.a36b8125.ttf +0 -0
  419. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Caligraphic-Bold.db991531.woff2 +0 -0
  420. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Caligraphic-Regular.2b13f013.woff +0 -0
  421. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Caligraphic-Regular.7c50032c.ttf +0 -0
  422. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Caligraphic-Regular.c20eee08.woff2 +0 -0
  423. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Fraktur-Bold.5fa2f5e4.woff +0 -0
  424. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Fraktur-Bold.d514bd28.woff2 +0 -0
  425. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Fraktur-Bold.e311399d.ttf +0 -0
  426. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Fraktur-Regular.18139813.woff +0 -0
  427. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Fraktur-Regular.2a73476d.ttf +0 -0
  428. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Fraktur-Regular.5d62e468.woff2 +0 -0
  429. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Main-Bold.6d137c77.ttf +0 -0
  430. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Main-Bold.c24b5ba7.woff +0 -0
  431. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Main-Bold.f4e2828d.woff2 +0 -0
  432. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Main-BoldItalic.079b33ae.woff +0 -0
  433. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Main-BoldItalic.c003d3ec.ttf +0 -0
  434. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Main-BoldItalic.f1884480.woff2 +0 -0
  435. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Main-Italic.26a3619b.woff +0 -0
  436. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Main-Italic.61da3e93.ttf +0 -0
  437. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Main-Italic.a3746929.woff2 +0 -0
  438. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Main-Regular.12644167.woff2 +0 -0
  439. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Main-Regular.876b86ad.ttf +0 -0
  440. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Main-Regular.d511f158.woff +0 -0
  441. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Math-BoldItalic.5c6a6a93.woff2 +0 -0
  442. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Math-BoldItalic.ad4dffd5.woff +0 -0
  443. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Math-BoldItalic.e73b3bf0.ttf +0 -0
  444. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Math-Italic.03974bc4.ttf +0 -0
  445. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Math-Italic.1cd2c488.woff +0 -0
  446. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Math-Italic.d8564edb.woff2 +0 -0
  447. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_SansSerif-Bold.a03f9428.woff2 +0 -0
  448. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_SansSerif-Bold.d4608ed5.ttf +0 -0
  449. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_SansSerif-Bold.ff51ef5c.woff +0 -0
  450. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_SansSerif-Italic.8ed740d6.woff +0 -0
  451. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_SansSerif-Italic.9245afda.woff2 +0 -0
  452. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_SansSerif-Italic.c0b22b1e.ttf +0 -0
  453. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_SansSerif-Regular.128c9bc2.woff2 +0 -0
  454. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_SansSerif-Regular.156dbd4e.ttf +0 -0
  455. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_SansSerif-Regular.ee7b0a16.woff +0 -0
  456. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Script-Regular.00d9a561.ttf +0 -0
  457. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Script-Regular.186c7155.woff2 +0 -0
  458. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Script-Regular.afc2fd5a.woff +0 -0
  459. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Size1-Regular.4450ef36.woff2 +0 -0
  460. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Size1-Regular.9aaff96b.ttf +0 -0
  461. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Size1-Regular.e5bf4c74.woff +0 -0
  462. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Size2-Regular.6a97527b.woff2 +0 -0
  463. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Size2-Regular.8fbd32af.woff +0 -0
  464. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Size2-Regular.f11810ed.ttf +0 -0
  465. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Size3-Regular.45ae8eba.woff +0 -0
  466. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Size3-Regular.54b7ce9d.woff2 +0 -0
  467. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Size3-Regular.9812ade2.ttf +0 -0
  468. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Size4-Regular.44a4d487.ttf +0 -0
  469. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Size4-Regular.927fc5b9.woff2 +0 -0
  470. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Size4-Regular.b211e3d3.woff +0 -0
  471. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Typewriter-Regular.68b6c3a9.woff +0 -0
  472. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Typewriter-Regular.a1a7ff52.ttf +0 -0
  473. /package/dist/{_next → safe-a/_next}/static/media/KaTeX_Typewriter-Regular.ff99d643.woff2 +0 -0
  474. /package/dist/{_next → safe-a/_next}/static/media/b886574ba42c3409-s.1f4af8e6.woff2 +0 -0
  475. /package/dist/{_next → safe-a/_next}/static/media/c3cb240f9c892514-s.d8e4bce2.woff2 +0 -0
  476. /package/dist/{_next → safe-a/_next}/static/media/c41ca59f1c34ba31-s.p.e20f337c.woff2 +0 -0
  477. /package/dist/{_next → safe-a/_next}/static/media/cc545e633e20c56d-s.f6f1950f.woff2 +0 -0
  478. /package/dist/{_next → safe-a/_next}/static/media/data-loading.be8d921a.png +0 -0
  479. /package/dist/{_next → safe-a/_next}/static/media/no-data.48c973b9.png +0 -0
  480. /package/dist/{favicon.ico → safe-a/favicon.ico} +0 -0
  481. /package/dist/{slash-command-ui-patch.css → safe-a/slash-command-ui-patch.css} +0 -0
  482. /package/dist/{slash-command-ui-patch.js → safe-a/slash-command-ui-patch.js} +0 -0
@@ -64,16 +64,25 @@ export function buildLauncherEnv(baseEnv = process.env) {
64
64
  const cwd = process.cwd()
65
65
  const pkgRoot = resolveMainPackageRoot()
66
66
  const pkgDist = pkgRoot ? join(pkgRoot, 'dist') : null
67
+ const pkgSafeADist = pkgDist ? join(pkgDist, 'safe-a') : null
68
+ const pkgWsTestDist = pkgDist ? join(pkgDist, 'ws-test') : null
67
69
 
68
70
  if (!env.WS_PROJECT_ROOT?.trim()) {
69
71
  env.WS_PROJECT_ROOT = cwd
70
72
  }
71
73
  if (
72
74
  !env.WS_DIST_DIR?.trim() &&
73
- pkgDist &&
74
- existsSync(join(pkgDist, 'index.html'))
75
+ pkgSafeADist &&
76
+ existsSync(join(pkgSafeADist, 'index.html'))
75
77
  ) {
76
- env.WS_DIST_DIR = pkgDist
78
+ env.WS_DIST_DIR = pkgSafeADist
79
+ }
80
+ if (
81
+ !env.WS_WS_TEST_DIR?.trim() &&
82
+ pkgWsTestDist &&
83
+ existsSync(join(pkgWsTestDist, 'ws-test.html'))
84
+ ) {
85
+ env.WS_WS_TEST_DIR = pkgWsTestDist
77
86
  }
78
87
 
79
88
  loadDotenvFile(env, join(cwd, '.env'))
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@auto-ai/agent",
3
- "version": "2.1.168",
3
+ "version": "2.1.172",
4
4
  "description": "Auto AI Agent 网关 CLI(WebSocket,独立二进制,无需 Bun)",
5
5
  "type": "module",
6
6
  "maintainers": [
@@ -32,11 +32,11 @@
32
32
  "zod": "^4.3.6"
33
33
  },
34
34
  "optionalDependencies": {
35
- "@auto-ai/agent-linux-x64": "2.1.168",
36
- "@auto-ai/agent-linux-arm64": "2.1.168",
37
- "@auto-ai/agent-darwin-x64": "2.1.168",
38
- "@auto-ai/agent-darwin-arm64": "2.1.168",
39
- "@auto-ai/agent-win-x64": "2.1.168"
35
+ "@auto-ai/agent-linux-x64": "2.1.172",
36
+ "@auto-ai/agent-linux-arm64": "2.1.172",
37
+ "@auto-ai/agent-darwin-x64": "2.1.172",
38
+ "@auto-ai/agent-darwin-arm64": "2.1.172",
39
+ "@auto-ai/agent-win-x64": "2.1.172"
40
40
  },
41
41
  "scripts": {
42
42
  "prepare": "node ../../scripts/sync-launcher-env.js",
@@ -43,5 +43,5 @@ description: 当用户要求提交代码、更新/部署测试环境时触发。
43
43
  ## 执行回执(每次进入本技能都要输出)
44
44
  - `已命中技能`:deploy-test-env
45
45
  - `命中关键词`:列出触发词
46
- - `已加载文档`:`.cursor/skills/deploy-test-env/SKILL.md`、`.cursor/skills/deploy-test-env/reference.md`
46
+ - `已加载文档`:`packages/agent/skills-runtime/deploy-test-env/SKILL.md`、`packages/agent/skills-runtime/deploy-test-env/reference.md`
47
47
  - `阶段状态`:阶段 1~8 的已完成、进行中、待执行
@@ -9,7 +9,7 @@ description: 当用户要求开发功能、实现接口、完善模块时使用
9
9
  - 用户要求开发/实现/完善功能或接口时应用本技能(含自 GeeLib 转入的开发段)。
10
10
  - **命中词(任一)**:开发功能 / 实现接口 / 修 bug / 完善模块 / 新增接口 / 重构模块。
11
11
  - **排除词(任一)**:提交代码(且无开发诉求)/ 仅自测(且无开发诉求)。
12
- - **冲突降级**:若同条消息含 GeeLib 任务闭环语义,入口由 `workflow-hub` 先分配到 `geelib-task-flow`,本技能作为开发子段执行。
12
+ - **冲突降级**:若同条消息含 GeeLib 任务闭环语义,入口由 `workflow-hub` 先分配到 `workflow-hub`(GeeLib 闭环段),本技能作为开发子段执行。
13
13
  - 激活后可在内部回执使用标记:`[SKILL:dev-task-flow]`,**不要求对用户输出首行强制标记**。
14
14
 
15
15
  ## 门禁
@@ -30,13 +30,13 @@ description: 当用户要求开发功能、实现接口、完善模块时使用
30
30
  | 4 | 开发报告 | 含方案摘要、接口清单、自测结论、风险与待办 |
31
31
 
32
32
  ## 调度位置
33
- - 与 **geelib-task-flow**、**self-test-flow**、**deploy-test-env** 的全局顺序:`.cursor/skills/workflow-hub/SKILL.md`。
33
+ - 与 **workflow-hub**、**self-test-flow**、**deploy-test-env** 的全局顺序:`packages/agent/skills-runtime/workflow-hub/SKILL.md`。
34
34
 
35
35
  ## 执行回执(每次进入本技能都要输出)
36
36
  - `已命中技能`:dev-task-flow
37
37
  - `命中关键词`:列出触发词
38
- - `已加载文档`:`.cursor/skills/dev-task-flow/SKILL.md`、`.cursor/skills/dev-task-flow/reference.md`
39
- - `联动技能`:若阶段 3 启动,补充 `.cursor/skills/self-test-flow/SKILL.md` 与 `reference.md`
38
+ - `已加载文档`:`packages/agent/skills-runtime/dev-task-flow/SKILL.md`、`packages/agent/skills-runtime/dev-task-flow/reference.md`
39
+ - `联动技能`:若阶段 3 启动,补充 `packages/agent/skills-runtime/self-test-flow/SKILL.md` 与 `reference.md`
40
40
  - `阶段状态`:阶段 1/2/3/4 的已完成、进行中、待执行
41
41
 
42
42
  ## 延伸阅读
@@ -9,7 +9,7 @@ description: 当用户输入「自测」「自测流程」或要求按联调方
9
9
  - 用户消息含「自测」「自测流程」,或明确要求按联调/接口方式验证模块时应用本技能。
10
10
  - **命中词(任一)**:自测 / 自测流程 / 联调验证 / 接口联调 / 验证模块。
11
11
  - **排除词(任一)**:提交代码(且无联调诉求)。
12
- - **冲突降级**:若同条消息含开发诉求,入口由 `workflow-hub` 先分配到 `dev-task-flow`,本技能作为其阶段 3 子流程执行;若含 GeeLib 闭环语义,先进入 `geelib-task-flow`。
12
+ - **冲突降级**:若同条消息含开发诉求,入口由 `workflow-hub` 先分配到 `dev-task-flow`,本技能作为其阶段 3 子流程执行;若含 GeeLib 闭环语义,先进入 `workflow-hub`。
13
13
  - 激活后首行输出:`[SKILL:self-test-flow]`。
14
14
 
15
15
  ## 门禁
@@ -36,5 +36,5 @@ description: 当用户输入「自测」「自测流程」或要求按联调方
36
36
  ## 执行回执(每次进入本技能都要输出)
37
37
  - `已命中技能`:self-test-flow
38
38
  - `命中关键词`:列出触发词
39
- - `已加载文档`:`.cursor/skills/self-test-flow/SKILL.md`、`.cursor/skills/self-test-flow/reference.md`
39
+ - `已加载文档`:`packages/agent/skills-runtime/self-test-flow/SKILL.md`、`packages/agent/skills-runtime/self-test-flow/reference.md`
40
40
  - `阶段状态`:阶段 1/2/3/4/5 的已完成、进行中、待执行
@@ -69,7 +69,7 @@ description: >-
69
69
  4) `当前技能链`:按执行顺序展示
70
70
  5) `当前阶段`:已完成 / 进行中 / 待执行
71
71
  - 用表格或编号列出「当前对话应激活的技能链」与「已完成/待完成阶段」。
72
- - 指向路径使用仓库内相对根路径:`.cursor/skills/<skill-name>/SKILL.md` 与 `reference.md`。
72
+ - 指向路径使用仓库内相对根路径:`packages/agent/skills-runtime/<skill-name>/SKILL.md` 与 `reference.md`。
73
73
 
74
74
  ## 延伸阅读
75
75
  - 完整决策树、与其他文档关系:**同目录 `reference.md`**。
@@ -14977,17 +14977,22 @@ function isEnabledInAgentConfig(agent) {
14977
14977
 
14978
14978
  // src/workspace.ts
14979
14979
  var import_node_path6 = require("node:path");
14980
+ var AGENT_WORKSPACE_SUBDIR = "workspace";
14980
14981
  var CODE_REPO_SUBDIR = "repo";
14982
+ function resolveAgentWorkspaceDir(operWorkspaceDir) {
14983
+ return import_node_path6.join(operWorkspaceDir, AGENT_WORKSPACE_SUBDIR);
14984
+ }
14981
14985
  function resolveCodeWorkDir(operWorkspaceDir) {
14986
+ const workspaceDir = resolveAgentWorkspaceDir(operWorkspaceDir);
14982
14987
  const fromCode = process.env.CODE_WORK_DIR?.trim() ?? "";
14983
14988
  if (fromCode) {
14984
- return import_node_path6.isAbsolute(fromCode) ? fromCode : import_node_path6.join(operWorkspaceDir, fromCode);
14989
+ return import_node_path6.isAbsolute(fromCode) ? fromCode : import_node_path6.join(workspaceDir, fromCode);
14985
14990
  }
14986
14991
  const fromGit = process.env.WS_GIT_WORK_DIR?.trim() ?? "";
14987
14992
  if (!fromGit) {
14988
- return import_node_path6.join(operWorkspaceDir, CODE_REPO_SUBDIR);
14993
+ return import_node_path6.join(workspaceDir, CODE_REPO_SUBDIR);
14989
14994
  }
14990
- return import_node_path6.isAbsolute(fromGit) ? fromGit : import_node_path6.join(operWorkspaceDir, fromGit);
14995
+ return import_node_path6.isAbsolute(fromGit) ? fromGit : import_node_path6.join(workspaceDir, fromGit);
14991
14996
  }
14992
14997
 
14993
14998
  // src/wsInit.ts
@@ -1,24 +1,30 @@
1
1
  /**
2
- * Code 工作目录解析:与 GitTool 共用 WS_GIT_WORK_DIR / operWorkspaceDir/repo 约定,两包互不 import。
2
+ * Code 工作目录解析:与 GitTool 共用 WS_GIT_WORK_DIR / workspace/repo 约定,两包互不 import。
3
3
  */
4
4
 
5
5
  import { isAbsolute, join } from 'node:path'
6
6
 
7
+ /** agent 根下的工具工作区容器目录 */
8
+ const AGENT_WORKSPACE_SUBDIR = 'workspace'
7
9
  const CODE_REPO_SUBDIR = 'repo'
8
10
 
11
+ function resolveAgentWorkspaceDir(operWorkspaceDir: string): string {
12
+ return join(operWorkspaceDir, AGENT_WORKSPACE_SUBDIR)
13
+ }
14
+
9
15
  /**
10
- * 解析代码工作目录:优先 CODE_WORK_DIR,其次 WS_GIT_WORK_DIR,默认 operWorkspaceDir/repo。
16
+ * 解析代码工作目录:优先 CODE_WORK_DIR,其次 WS_GIT_WORK_DIR,默认 workspace/repo。
17
+ * 相对路径以 workspace/ 为基准;绝对路径原样使用。
11
18
  */
12
19
  export function resolveCodeWorkDir(operWorkspaceDir: string): string {
20
+ const workspaceDir = resolveAgentWorkspaceDir(operWorkspaceDir)
13
21
  const fromCode = process.env.CODE_WORK_DIR?.trim() ?? ''
14
22
  if (fromCode) {
15
- return isAbsolute(fromCode)
16
- ? fromCode
17
- : join(operWorkspaceDir, fromCode)
23
+ return isAbsolute(fromCode) ? fromCode : join(workspaceDir, fromCode)
18
24
  }
19
25
  const fromGit = process.env.WS_GIT_WORK_DIR?.trim() ?? ''
20
26
  if (!fromGit) {
21
- return join(operWorkspaceDir, CODE_REPO_SUBDIR)
27
+ return join(workspaceDir, CODE_REPO_SUBDIR)
22
28
  }
23
- return isAbsolute(fromGit) ? fromGit : join(operWorkspaceDir, fromGit)
29
+ return isAbsolute(fromGit) ? fromGit : join(workspaceDir, fromGit)
24
30
  }
@@ -14378,6 +14378,7 @@ function isEnabledInAgentConfig(agent) {
14378
14378
  var import_node_child_process = require("node:child_process");
14379
14379
  var import_promises = require("node:fs/promises");
14380
14380
  var import_node_path = require("node:path");
14381
+ var AGENT_WORKSPACE_SUBDIR = "workspace";
14381
14382
  var GIT_REPO_SUBDIR = "repo";
14382
14383
  var DEFAULT_GIT_TIMEOUT_MS = 120 * 1000;
14383
14384
  var DEFAULT_GIT_PROBE_TIMEOUT_MS = 15 * 1000;
@@ -14431,6 +14432,10 @@ function readGitCredentials() {
14431
14432
  }
14432
14433
  return { username, password };
14433
14434
  }
14435
+ function readGitUserEmail() {
14436
+ const email3 = process.env.WS_GIT_USER_EMAIL?.trim() ?? "";
14437
+ return email3 || null;
14438
+ }
14434
14439
  function withHttpsCredentials(url2, creds) {
14435
14440
  if (!creds) {
14436
14441
  return url2;
@@ -14449,20 +14454,40 @@ function withHttpsCredentials(url2, creds) {
14449
14454
  }
14450
14455
  function buildGitCredentialEnv(creds) {
14451
14456
  const env = { ...GIT_NO_PROMPT_ENV };
14452
- if (!creds) {
14453
- return env;
14457
+ const configEntries = [];
14458
+ if (creds) {
14459
+ configEntries.push({
14460
+ key: "credential.helper",
14461
+ value: `!f() { echo username=${creds.username}; echo password=${creds.password}; }; f`
14462
+ });
14463
+ }
14464
+ const email3 = readGitUserEmail();
14465
+ if (email3) {
14466
+ configEntries.push({ key: "user.email", value: email3 });
14467
+ const name = process.env.WS_GIT_USERNAME?.trim() ?? "";
14468
+ if (name) {
14469
+ configEntries.push({ key: "user.name", value: name });
14470
+ }
14471
+ }
14472
+ if (configEntries.length > 0) {
14473
+ env.GIT_CONFIG_COUNT = String(configEntries.length);
14474
+ configEntries.forEach((entry, index) => {
14475
+ env[`GIT_CONFIG_KEY_${index}`] = entry.key;
14476
+ env[`GIT_CONFIG_VALUE_${index}`] = entry.value;
14477
+ });
14454
14478
  }
14455
- env.GIT_CONFIG_COUNT = "1";
14456
- env.GIT_CONFIG_KEY_0 = "credential.helper";
14457
- env.GIT_CONFIG_VALUE_0 = `!f() { echo username=${creds.username}; echo password=${creds.password}; }; f`;
14458
14479
  return env;
14459
14480
  }
14481
+ function resolveAgentWorkspaceDir(operWorkspaceDir) {
14482
+ return import_node_path.join(operWorkspaceDir, AGENT_WORKSPACE_SUBDIR);
14483
+ }
14460
14484
  function resolveGitWorkDir(operWorkspaceDir) {
14461
14485
  const workDir = process.env.WS_GIT_WORK_DIR?.trim() ?? "";
14486
+ const workspaceDir = resolveAgentWorkspaceDir(operWorkspaceDir);
14462
14487
  if (!workDir) {
14463
- return import_node_path.join(operWorkspaceDir, GIT_REPO_SUBDIR);
14488
+ return import_node_path.join(workspaceDir, GIT_REPO_SUBDIR);
14464
14489
  }
14465
- return import_node_path.isAbsolute(workDir) ? workDir : import_node_path.join(operWorkspaceDir, workDir);
14490
+ return import_node_path.isAbsolute(workDir) ? workDir : import_node_path.join(workspaceDir, workDir);
14466
14491
  }
14467
14492
  async function pathExists(path) {
14468
14493
  try {
@@ -14583,6 +14608,7 @@ async function prepareForAgent(params) {
14583
14608
  await probeGitRemote({ url: cloneUrl, gitEnv });
14584
14609
  const repoExists = await pathExists(gitWorkDir);
14585
14610
  if (!repoExists) {
14611
+ await import_promises.mkdir(import_node_path.dirname(gitWorkDir), { recursive: true });
14586
14612
  await wsGitClone({
14587
14613
  url: cloneUrl,
14588
14614
  targetPath: gitWorkDir,
@@ -14928,7 +14954,7 @@ ${gitStatus}
14928
14954
 
14929
14955
  Usage method:
14930
14956
  - input must include "commands: string[]" only (no cwd field)
14931
- - ALL commands run exclusively in the configured git work directory (WS_GIT_WORK_DIR, default repo/ under agent workspace)
14957
+ - ALL commands run exclusively in the configured git work directory (WS_GIT_WORK_DIR, default workspace/repo under agent root)
14932
14958
  - commands may be full "git log ..." or bare subcommands like "log ..." / "status" (git prefix is added automatically)
14933
14959
  - commands are executed sequentially in the work directory
14934
14960
 
@@ -362,7 +362,7 @@ ${gitStatus}
362
362
 
363
363
  Usage method:
364
364
  - input must include "commands: string[]" only (no cwd field)
365
- - ALL commands run exclusively in the configured git work directory (WS_GIT_WORK_DIR, default repo/ under agent workspace)
365
+ - ALL commands run exclusively in the configured git work directory (WS_GIT_WORK_DIR, default workspace/repo under agent root)
366
366
  - commands may be full "git log ..." or bare subcommands like "log ..." / "status" (git prefix is added automatically)
367
367
  - commands are executed sequentially in the work directory
368
368
 
@@ -52,11 +52,11 @@ describe('git-tool workspace helpers', () => {
52
52
  resetConfigure()
53
53
  })
54
54
 
55
- it('resolveGitWorkDir 未设置时默认 operWorkspaceDir/repo', () => {
55
+ it('resolveGitWorkDir 未设置时默认 workspace/repo', () => {
56
56
  savedEnv = saveGitEnv()
57
57
  clearGitEnv()
58
- expect(resolveGitWorkDir('/tmp/agent/workspace')).toBe(
59
- '/tmp/agent/workspace/repo',
58
+ expect(resolveGitWorkDir('/tmp/agent-runtime/dev')).toBe(
59
+ '/tmp/agent-runtime/dev/workspace/repo',
60
60
  )
61
61
  })
62
62
 
@@ -64,11 +64,11 @@ describe('git-tool workspace helpers', () => {
64
64
  savedEnv = saveGitEnv()
65
65
  clearGitEnv()
66
66
  process.env.WS_GIT_WORK_DIR = 'checkout'
67
- expect(resolveGitWorkDir('/tmp/agent/workspace')).toBe(
68
- '/tmp/agent/workspace/checkout',
67
+ expect(resolveGitWorkDir('/tmp/agent-runtime/dev')).toBe(
68
+ '/tmp/agent-runtime/dev/workspace/checkout',
69
69
  )
70
70
  process.env.WS_GIT_WORK_DIR = '/data/repo'
71
- expect(resolveGitWorkDir('/tmp/agent/workspace')).toBe('/data/repo')
71
+ expect(resolveGitWorkDir('/tmp/agent-runtime/dev')).toBe('/data/repo')
72
72
  })
73
73
 
74
74
  it('readGitCredentials 均未设置返回 null', () => {
@@ -124,7 +124,7 @@ describe('prepareForAgent', () => {
124
124
  resetConfigure()
125
125
  })
126
126
 
127
- it('无 URL 且默认 repo/ 非 git 目录时返回 skipped', async () => {
127
+ it('无 URL 且默认 workspace/repo 非 git 目录时返回 skipped', async () => {
128
128
  savedEnv = saveGitEnv()
129
129
  clearGitEnv()
130
130
  const operWorkspaceDir = await mkdtemp(join(tmpdir(), 'ws-git-missing-'))
@@ -135,9 +135,9 @@ describe('prepareForAgent', () => {
135
135
  savedEnv = saveGitEnv()
136
136
  clearGitEnv()
137
137
  const operWorkspaceDir = await mkdtemp(join(tmpdir(), 'ws-git-notrepo-'))
138
- const notRepo = join(operWorkspaceDir, 'not-git')
138
+ const notRepo = join(operWorkspaceDir, 'workspace', 'not-git')
139
139
  await mkdir(notRepo, { recursive: true })
140
- process.env.WS_GIT_WORK_DIR = notRepo
140
+ process.env.WS_GIT_WORK_DIR = 'not-git'
141
141
  await expect(prepareForAgent({ operWorkspaceDir })).resolves.toBe('skipped')
142
142
  })
143
143
  })
@@ -4,10 +4,12 @@
4
4
  */
5
5
 
6
6
  import { spawn } from 'node:child_process'
7
- import { access } from 'node:fs/promises'
8
- import { isAbsolute, join } from 'node:path'
7
+ import { access, mkdir } from 'node:fs/promises'
8
+ import { dirname, isAbsolute, join } from 'node:path'
9
9
  import { configure, getCachedConfigure, resetConfigure } from './hooks.js'
10
10
 
11
+ /** agent 根下的工具工作区容器目录 */
12
+ const AGENT_WORKSPACE_SUBDIR = 'workspace'
11
13
  const GIT_REPO_SUBDIR = 'repo'
12
14
  const DEFAULT_GIT_TIMEOUT_MS = 120 * 1000
13
15
  /** session init 远程探测超时,短于 clone/pull,避免地址不通时长时间阻塞 */
@@ -85,6 +87,15 @@ export function readGitCredentials(): GitCredentials | null {
85
87
  return { username, password }
86
88
  }
87
89
 
90
+ /**
91
+ * 读取 WS_GIT_USER_EMAIL,用于 git commit 作者邮箱。
92
+ * 业务语义:未设置时返回 null,不注入 user.email;多用户环境避免依赖全局 git config。
93
+ */
94
+ export function readGitUserEmail(): string | null {
95
+ const email = process.env.WS_GIT_USER_EMAIL?.trim() ?? ''
96
+ return email || null
97
+ }
98
+
88
99
  /** HTTPS URL 注入 user:pass;SSH URL(git@)原样返回 */
89
100
  export function withHttpsCredentials(
90
101
  url: string,
@@ -106,31 +117,58 @@ export function withHttpsCredentials(
106
117
  }
107
118
  }
108
119
 
109
- /** 构造 git 命令额外 env:防交互 + 可选 inline credential.helper */
120
+ /** 构造 git 命令额外 env:防交互 + 凭据 helper + 可选提交身份(user.name/user.email) */
110
121
  export function buildGitCredentialEnv(
111
122
  creds: GitCredentials | null,
112
123
  ): Record<string, string> {
113
124
  const env: Record<string, string> = { ...GIT_NO_PROMPT_ENV }
114
- if (!creds) {
115
- return env
125
+ const configEntries: Array<{ key: string; value: string }> = []
126
+
127
+ if (creds) {
128
+ configEntries.push({
129
+ key: 'credential.helper',
130
+ value:
131
+ `!f() { echo username=${creds.username}; echo password=${creds.password}; }; f`,
132
+ })
133
+ }
134
+
135
+ const email = readGitUserEmail()
136
+ if (email) {
137
+ configEntries.push({ key: 'user.email', value: email })
138
+ // 提交作者名与 HTTPS 域账号同源,避免多用户环境写全局 git config
139
+ const name = process.env.WS_GIT_USERNAME?.trim() ?? ''
140
+ if (name) {
141
+ configEntries.push({ key: 'user.name', value: name })
142
+ }
143
+ }
144
+
145
+ if (configEntries.length > 0) {
146
+ env.GIT_CONFIG_COUNT = String(configEntries.length)
147
+ configEntries.forEach((entry, index) => {
148
+ env[`GIT_CONFIG_KEY_${index}`] = entry.key
149
+ env[`GIT_CONFIG_VALUE_${index}`] = entry.value
150
+ })
116
151
  }
117
- env.GIT_CONFIG_COUNT = '1'
118
- env.GIT_CONFIG_KEY_0 = 'credential.helper'
119
- env.GIT_CONFIG_VALUE_0 =
120
- `!f() { echo username=${creds.username}; echo password=${creds.password}; }; f`
152
+
121
153
  return env
122
154
  }
123
155
 
156
+ /** 解析 agent 根下的 workspace 目录 */
157
+ function resolveAgentWorkspaceDir(operWorkspaceDir: string): string {
158
+ return join(operWorkspaceDir, AGENT_WORKSPACE_SUBDIR)
159
+ }
160
+
124
161
  /**
125
- * 解析 Git 工作目录:WS_GIT_WORK_DIR 优先,否则默认 operWorkspaceDir/repo。
126
- * CodeTool 共用同一 env 约定,两包互不 import。
162
+ * 解析 Git 工作目录:WS_GIT_WORK_DIR 优先,否则默认 workspace/repo。
163
+ * 相对路径以 workspace/ 为基准;绝对路径原样使用。与 CodeTool 共用 env 约定。
127
164
  */
128
165
  export function resolveGitWorkDir(operWorkspaceDir: string): string {
129
166
  const workDir = process.env.WS_GIT_WORK_DIR?.trim() ?? ''
167
+ const workspaceDir = resolveAgentWorkspaceDir(operWorkspaceDir)
130
168
  if (!workDir) {
131
- return join(operWorkspaceDir, GIT_REPO_SUBDIR)
169
+ return join(workspaceDir, GIT_REPO_SUBDIR)
132
170
  }
133
- return isAbsolute(workDir) ? workDir : join(operWorkspaceDir, workDir)
171
+ return isAbsolute(workDir) ? workDir : join(workspaceDir, workDir)
134
172
  }
135
173
 
136
174
  async function pathExists(path: string): Promise<boolean> {
@@ -337,6 +375,8 @@ export async function prepareForAgent(params: {
337
375
  await probeGitRemote({ url: cloneUrl, gitEnv })
338
376
  const repoExists = await pathExists(gitWorkDir)
339
377
  if (!repoExists) {
378
+ // clone 前创建 workspace/ 等父目录,避免 git clone 因路径不存在失败
379
+ await mkdir(dirname(gitWorkDir), { recursive: true })
340
380
  await wsGitClone({
341
381
  url: cloneUrl,
342
382
  targetPath: gitWorkDir,
@@ -1 +0,0 @@
1
- *,:before,:after{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 transparent;--tw-ring-shadow:0 0 transparent;--tw-shadow:0 0 transparent;--tw-shadow-colored:0 0 transparent;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 transparent;--tw-ring-shadow:0 0 transparent;--tw-shadow:0 0 transparent;--tw-shadow-colored:0 0 transparent;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }.theme{--font-heading:var(--font-display);--font-sans:var(--font-body);--font-mono:var(--font-mono)}:root{--background:#fff;--foreground:#0a0a0a;--card:#fff;--card-foreground:#0a0a0a;--popover:#fff;--popover-foreground:#0a0a0a;--primary:#171717;--primary-foreground:#fafafa;--secondary:#f5f5f5;--secondary-foreground:#171717;--muted:#f5f5f5;--muted-foreground:#737373;--accent:#f5f5f5;--accent-foreground:#171717;--destructive:#e40014;--destructive-foreground:#fafafa;--border:#e5e5e5;--input:#e5e5e5;--ring:#a1a1a1;--chart-1:#d4d4d4;--chart-2:#737373;--chart-3:#525252;--chart-4:#404040;--chart-5:#262626;--radius:.625rem;--sidebar:#fafafa;--sidebar-foreground:#0a0a0a;--sidebar-primary:#171717;--sidebar-primary-foreground:#fafafa;--sidebar-accent:#f5f5f5;--sidebar-accent-foreground:#171717;--sidebar-border:#e5e5e5;--sidebar-ring:#a1a1a1}@supports (color:color(display-p3 0 0 0)){:root{--background:color(display-p3 1 1 1);--foreground:color(display-p3 .0393882 .0393882 .0393882);--card:color(display-p3 1 1 1);--card-foreground:color(display-p3 .0393882 .0393882 .0393882);--popover:color(display-p3 1 1 1);--popover-foreground:color(display-p3 .0393882 .0393882 .0393882);--primary:color(display-p3 .0905274 .0905274 .0905274);--primary-foreground:color(display-p3 .980256 .980256 .980256);--secondary:color(display-p3 .960587 .960587 .960587);--secondary-foreground:color(display-p3 .0905274 .0905274 .0905274);--muted:color(display-p3 .960587 .960587 .960587);--muted-foreground:color(display-p3 .451519 .451519 .451519);--accent:color(display-p3 .960587 .960587 .960587);--accent-foreground:color(display-p3 .0905274 .0905274 .0905274);--destructive:color(display-p3 .830323 .140383 .133196);--destructive-foreground:color(display-p3 .980256 .980256 .980256);--border:color(display-p3 .898161 .898161 .898161);--input:color(display-p3 .898161 .898161 .898161);--ring:color(display-p3 .630163 .630163 .630163);--chart-1:color(display-p3 .831444 .831444 .831444);--chart-2:color(display-p3 .451519 .451519 .451519);--chart-3:color(display-p3 .321993 .321993 .321993);--chart-4:color(display-p3 .250471 .250471 .250471);--chart-5:color(display-p3 .149382 .149382 .149382);--sidebar:color(display-p3 .980256 .980256 .980256);--sidebar-foreground:color(display-p3 .0393882 .0393882 .0393882);--sidebar-primary:color(display-p3 .0905274 .0905274 .0905274);--sidebar-primary-foreground:color(display-p3 .980256 .980256 .980256);--sidebar-accent:color(display-p3 .960587 .960587 .960587);--sidebar-accent-foreground:color(display-p3 .0905274 .0905274 .0905274);--sidebar-border:color(display-p3 .898161 .898161 .898161);--sidebar-ring:color(display-p3 .630163 .630163 .630163)}}@supports (color:lab(0% 0 0)){:root{--background:lab(100% 0 0);--foreground:lab(2.75381% 0 0);--card:lab(100% 0 0);--card-foreground:lab(2.75381% 0 0);--popover:lab(100% 0 0);--popover-foreground:lab(2.75381% 0 0);--primary:lab(7.78201% -.0000149012 0);--primary-foreground:lab(98.26% 0 0);--secondary:lab(96.52% -.0000298023 .0000119209);--secondary-foreground:lab(7.78201% -.0000149012 0);--muted:lab(96.52% -.0000298023 .0000119209);--muted-foreground:lab(48.496% 0 0);--accent:lab(96.52% -.0000298023 .0000119209);--accent-foreground:lab(7.78201% -.0000149012 0);--destructive:lab(48.4493% 77.4328 61.5452);--destructive-foreground:lab(98.26% 0 0);--border:lab(90.952% 0 -.0000119209);--input:lab(90.952% 0 -.0000119209);--ring:lab(66.128% -.0000298023 .0000119209);--chart-1:lab(84.92% 0 -.0000119209);--chart-2:lab(48.496% 0 0);--chart-3:lab(34.924% 0 0);--chart-4:lab(27.036% 0 0);--chart-5:lab(15.204% 0 -.00000596046);--sidebar:lab(98.26% 0 0);--sidebar-foreground:lab(2.75381% 0 0);--sidebar-primary:lab(7.78201% -.0000149012 0);--sidebar-primary-foreground:lab(98.26% 0 0);--sidebar-accent:lab(96.52% -.0000298023 .0000119209);--sidebar-accent-foreground:lab(7.78201% -.0000149012 0);--sidebar-border:lab(90.952% 0 -.0000119209);--sidebar-ring:lab(66.128% -.0000298023 .0000119209)}}.dark{--background:#0a0a0a;--foreground:#fafafa;--card:#171717;--card-foreground:#fafafa;--popover:#171717;--popover-foreground:#fafafa;--primary:#e5e5e5;--primary-foreground:#171717;--secondary:#262626;--secondary-foreground:#fafafa;--muted:#262626;--muted-foreground:#a1a1a1;--accent:#00c37b;--accent-foreground:#fafafa;--destructive:#ff6568;--destructive-foreground:#fafafa;--border:rgba(255,255,255,.1);--input:rgba(255,255,255,.15);--ring:#737373;--chart-1:#d4d4d4;--chart-2:#737373;--chart-3:#525252;--chart-4:#404040;--chart-5:#262626;--sidebar:#171717;--sidebar-foreground:#fafafa;--sidebar-primary:#1447e6;--sidebar-primary-foreground:#fafafa;--sidebar-accent:#262626;--sidebar-accent-foreground:#fafafa;--sidebar-border:rgba(255,255,255,.1);--sidebar-ring:#737373}@supports (color:color(display-p3 0 0 0)){.dark{--background:color(display-p3 .0393882 .0393882 .0393882);--foreground:color(display-p3 .980256 .980256 .980256);--card:color(display-p3 .0905274 .0905274 .0905274);--card-foreground:color(display-p3 .980256 .980256 .980256);--popover:color(display-p3 .0905274 .0905274 .0905274);--popover-foreground:color(display-p3 .980256 .980256 .980256);--primary:color(display-p3 .898161 .898161 .898161);--primary-foreground:color(display-p3 .0905274 .0905274 .0905274);--secondary:color(display-p3 .149382 .149382 .149382);--secondary-foreground:color(display-p3 .980256 .980256 .980256);--muted:color(display-p3 .149382 .149382 .149382);--muted-foreground:color(display-p3 .630163 .630163 .630163);--accent:color(display-p3 .339841 .754462 .503519);--accent-foreground:color(display-p3 .980256 .980256 .980256);--destructive:color(display-p3 .933534 .431676 .423491);--destructive-foreground:color(display-p3 .980256 .980256 .980256);--border:color(display-p3 1 1 1/.1);--input:color(display-p3 1 1 1/.15);--ring:color(display-p3 .451519 .451519 .451519);--chart-1:color(display-p3 .831444 .831444 .831444);--chart-2:color(display-p3 .451519 .451519 .451519);--chart-3:color(display-p3 .321993 .321993 .321993);--chart-4:color(display-p3 .250471 .250471 .250471);--chart-5:color(display-p3 .149382 .149382 .149382);--sidebar:color(display-p3 .0905274 .0905274 .0905274);--sidebar-foreground:color(display-p3 .980256 .980256 .980256);--sidebar-primary:color(display-p3 .1379 .274983 .867624);--sidebar-primary-foreground:color(display-p3 .980256 .980256 .980256);--sidebar-accent:color(display-p3 .149382 .149382 .149382);--sidebar-accent-foreground:color(display-p3 .980256 .980256 .980256);--sidebar-border:color(display-p3 1 1 1/.1);--sidebar-ring:color(display-p3 .451519 .451519 .451519)}}@supports (color:lab(0% 0 0)){.dark{--background:lab(2.75381% 0 0);--foreground:lab(98.26% 0 0);--card:lab(7.78201% -.0000149012 0);--card-foreground:lab(98.26% 0 0);--popover:lab(7.78201% -.0000149012 0);--popover-foreground:lab(98.26% 0 0);--primary:lab(90.952% 0 -.0000119209);--primary-foreground:lab(7.78201% -.0000149012 0);--secondary:lab(15.204% 0 -.00000596046);--secondary-foreground:lab(98.26% 0 0);--muted:lab(15.204% 0 -.00000596046);--muted-foreground:lab(66.128% -.0000298023 .0000119209);--accent:lab(69.7395% -56.1647 24.7025);--accent-foreground:lab(98.26% 0 0);--destructive:lab(63.7053% 60.745 31.3109);--destructive-foreground:lab(98.26% 0 0);--border:lab(100% 0 0/.1);--input:lab(100% 0 0/.15);--ring:lab(48.496% 0 0);--chart-1:lab(84.92% 0 -.0000119209);--chart-2:lab(48.496% 0 0);--chart-3:lab(34.924% 0 0);--chart-4:lab(27.036% 0 0);--chart-5:lab(15.204% 0 -.00000596046);--sidebar:lab(7.78201% -.0000149012 0);--sidebar-foreground:lab(98.26% 0 0);--sidebar-primary:lab(36.9089% 35.0961 -85.6872);--sidebar-primary-foreground:lab(98.26% 0 0);--sidebar-accent:lab(15.204% 0 -.00000596046);--sidebar-accent-foreground:lab(98.26% 0 0);--sidebar-border:lab(100% 0 0/.1);--sidebar-ring:lab(48.496% 0 0)}}*{border-color:var(--border)}html{font-family:var(--font-body),ui-sans-serif,system-ui,sans-serif;font-size:16px;line-height:1.5}body{background-color:var(--background);color:var(--foreground);font-size:var(--text-base);line-height:inherit}input,textarea,select,button{font-family:inherit;font-size:inherit}.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.invisible{visibility:hidden}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{top:0;bottom:0;left:0;right:0}.inset-x-0{left:0;right:0}.-left-\[22px\]{left:-22px}.-left-\[24px\]{left:-24px}.-left-\[39px\]{left:-39px}.-left-\[40px\]{left:-40px}.-top-0\.5{top:-.125rem}.bottom-1{bottom:.25rem}.bottom-2{bottom:.5rem}.bottom-full{bottom:100%}.left-0{left:0}.left-2{left:.5rem}.left-2\.5{left:.625rem}.right-2{right:.5rem}.top-0{top:0}.top-0\.5{top:.125rem}.top-1{top:.25rem}.top-1\/2{top:50%}.top-2{top:.5rem}.top-6{top:1.5rem}.isolate{isolation:isolate}.z-10{z-index:10}.z-50{z-index:50}.z-\[10000\]{z-index:10000}.z-\[10001\]{z-index:10001}.z-\[10050\]{z-index:10050}.z-\[100\]{z-index:100}.z-\[1\]{z-index:1}.m-0{margin:0}.m-3{margin:.75rem}.m-\[\.15rem_\.35rem_0\]{margin:.15rem .35rem 0}.m-\[\.35rem_\.35rem_0\]{margin:.35rem .35rem 0}.m-\[\.45rem_0_0\]{margin:.45rem 0 0}.-mx-1{margin-left:-.25rem;margin-right:-.25rem}.mx-0{margin-left:0;margin-right:0}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-auto{margin-left:auto;margin-right:auto}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.\!mr-1{margin-right:.25rem!important}.\!mt-\[1\.25rem\]{margin-top:1.25rem!important}.mb-0{margin-bottom:0}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mb-\[-2px\]{margin-bottom:-2px}.ml-0\.5{margin-left:.125rem}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-auto{margin-left:auto}.mr-1{margin-right:.25rem}.mr-2{margin-right:.5rem}.mr-3{margin-right:.75rem}.mr-4{margin-right:1rem}.mr-\[12px\]{margin-right:12px}.mr-\[16px\]{margin-right:16px}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-\[0\.75rem\]{margin-top:.75rem}.mt-\[24px\]{margin-top:24px}.mt-auto{margin-top:auto}.box-border{box-sizing:border-box}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.\!block{display:block!important}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.\!size-3\.5{width:.875rem!important;height:.875rem!important}.\!size-4{width:1rem!important;height:1rem!important}.size-1{width:.25rem;height:.25rem}.size-1\.5{width:.375rem;height:.375rem}.size-10{width:2.5rem;height:2.5rem}.size-12{width:3rem;height:3rem}.size-2{width:.5rem;height:.5rem}.size-3{width:.75rem;height:.75rem}.size-3\.5{width:.875rem;height:.875rem}.size-4{width:1rem;height:1rem}.size-5{width:1.25rem;height:1.25rem}.size-6{width:1.5rem;height:1.5rem}.size-7{width:1.75rem;height:1.75rem}.size-8{width:2rem;height:2rem}.size-9{width:2.25rem;height:2.25rem}.size-full{width:100%;height:100%}.\!h-7{height:1.75rem!important}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-14{height:3.5rem}.h-16{height:4rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-\[14px\]{height:14px}.h-\[calc\(100\%-2px\)\]{height:calc(100% - 2px)}.h-\[min\(68vh\,520px\)\]{height:min(68vh,520px)}.h-\[var\(--radix-select-trigger-height\)\]{height:var(--radix-select-trigger-height)}.h-auto{height:auto}.h-dvh{height:100dvh}.h-full{height:100%}.h-px{height:1px}.max-h-0{max-height:0}.max-h-40{max-height:10rem}.max-h-48{max-height:12rem}.max-h-96{max-height:24rem}.max-h-\[2000px\]{max-height:2000px}.max-h-\[225px\]{max-height:225px}.max-h-\[240px\]{max-height:240px}.max-h-\[300px\]{max-height:300px}.max-h-\[6000px\]{max-height:6000px}.max-h-\[92vh\]{max-height:92vh}.max-h-\[calc\(100vh-16px\)\]{max-height:calc(100vh - 16px)}.max-h-\[min\(50vh\,22rem\)\]{max-height:min(50vh,22rem)}.max-h-\[min\(50vh\,360px\)\]{max-height:min(50vh,360px)}.max-h-\[min\(68vh\,640px\)\]{max-height:min(68vh,640px)}.max-h-dvh{max-height:100dvh}.\!min-h-0{min-height:0!important}.\!min-h-\[--min-h\]{min-height:var(--min-h)!important}.min-h-0{min-height:0}.min-h-20{min-height:5rem}.min-h-5{min-height:1.25rem}.min-h-7{min-height:1.75rem}.min-h-9{min-height:2.25rem}.min-h-\[110px\]{min-height:110px}.min-h-\[120px\]{min-height:120px}.min-h-\[124px\]{min-height:124px}.min-h-\[180px\]{min-height:180px}.min-h-\[200px\]{min-height:200px}.min-h-\[220px\]{min-height:220px}.min-h-\[240px\]{min-height:240px}.min-h-\[320px\]{min-height:320px}.min-h-\[40vh\]{min-height:40vh}.min-h-\[420px\]{min-height:420px}.min-h-\[80px\]{min-height:80px}.min-h-\[88px\]{min-height:88px}.\!w-7{width:1.75rem!important}.\!w-\[520px\]{width:520px!important}.\!w-fit{width:-moz-fit-content!important;width:fit-content!important}.w-1{width:.25rem}.w-10{width:2.5rem}.w-11{width:2.75rem}.w-14{width:3.5rem}.w-16{width:4rem}.w-24{width:6rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-64{width:16rem}.w-7{width:1.75rem}.w-8{width:2rem}.w-9{width:2.25rem}.w-\[100px\]{width:100px}.w-\[102px\]{width:102px}.w-\[104px\]{width:104px}.w-\[112px\]{width:112px}.w-\[116px\]{width:116px}.w-\[128px\]{width:128px}.w-\[140px\]{width:140px}.w-\[14px\]{width:14px}.w-\[160px\]{width:160px}.w-\[168px\]{width:168px}.w-\[172px\]{width:172px}.w-\[180px\]{width:180px}.w-\[220px\]{width:220px}.w-\[260px\]{width:260px}.w-\[72px\]{width:72px}.w-\[96px\]{width:96px}.w-auto{width:auto}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.w-max{width:max-content}.w-px{width:1px}.\!min-w-0{min-width:0!important}.min-w-0{min-width:0}.min-w-24{min-width:6rem}.min-w-32{min-width:8rem}.min-w-9{min-width:2.25rem}.min-w-\[120px\]{min-width:120px}.min-w-\[140px\]{min-width:140px}.min-w-\[148px\]{min-width:148px}.min-w-\[172px\]{min-width:172px}.min-w-\[200px\]{min-width:200px}.min-w-\[6\.5rem\]{min-width:6.5rem}.min-w-\[8rem\]{min-width:8rem}.min-w-\[96px\]{min-width:96px}.min-w-\[var\(--radix-select-trigger-width\)\]{min-width:var(--radix-select-trigger-width)}.\!max-w-\[400px\]{max-width:400px!important}.max-w-36{max-width:9rem}.max-w-3xl{max-width:48rem}.max-w-4xl{max-width:56rem}.max-w-\[240px\]{max-width:240px}.max-w-\[300px\]{max-width:300px}.max-w-\[460px\]{max-width:460px}.max-w-\[480px\]{max-width:480px}.max-w-\[520px\]{max-width:520px}.max-w-\[560px\]{max-width:560px}.max-w-\[720px\]{max-width:720px}.max-w-\[760px\]{max-width:760px}.max-w-\[840px\]{max-width:840px}.max-w-\[920px\]{max-width:920px}.max-w-\[min\(100vw-24px\,260px\)\]{max-width:min(100vw - 24px,260px)}.max-w-\[min\(100vw-32px\,320px\)\]{max-width:min(100vw - 32px,320px)}.max-w-\[min\(360px\,90vw\)\]{max-width:min(360px,90vw)}.max-w-\[min\(540px\,100\%\)\]{max-width:min(540px,100%)}.max-w-full{max-width:100%}.max-w-md{max-width:28rem}.max-w-none{max-width:none}.max-w-xs{max-width:20rem}.\!flex-none{flex:none!important}.flex-1{flex:1}.flex-shrink-0,.shrink-0{flex-shrink:0}.caption-bottom{caption-side:bottom}.border-collapse{border-collapse:collapse}.-translate-y-1\/2{--tw-translate-y:-50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.rotate-90{--tw-rotate:90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.animate-\[backdropIn_0\.2s_ease-out\]{animation:.2s ease-out backdropIn}.animate-\[modalIn_0\.2s_ease-out\]{animation:.2s ease-out modalIn}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:1s linear infinite spin}.\!cursor-pointer{cursor:pointer!important}.cursor-default{cursor:default}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize-none{resize:none}.resize-y{resize:vertical}.resize{resize:both}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.\!justify-start{justify-content:flex-start!important}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0{gap:0}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-2\.5{gap:.625rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-\[10px\]{gap:10px}.gap-\[var\(--space-4\)\]{gap:var(--space-4)}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-x-7{-moz-column-gap:1.75rem;column-gap:1.75rem}.gap-y-1\.5{row-gap:.375rem}.gap-y-4{row-gap:1rem}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.25rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem*var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.375rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem*var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem*var(--tw-space-y-reverse))}.space-y-2\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.625rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.625rem*var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.75rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem*var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem*var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-top-width:calc(1px*calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px*var(--tw-divide-y-reverse))}.divide-\[var\(--ds-border\)\]>:not([hidden])~:not([hidden]){border-color:var(--ds-border)}.self-start{align-self:flex-start}.self-stretch{align-self:stretch}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.overscroll-contain{overscroll-behavior:contain}.overscroll-y-contain{overscroll-behavior-y:contain}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.\!rounded{border-radius:.25rem!important}.\!rounded-\[10px\]{border-radius:10px!important}.\!rounded-md{border-radius:calc(var(--radius) - 2px)!important}.\!rounded-none{border-radius:0!important}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-\[4px\]{border-radius:4px}.rounded-\[8px\]{border-radius:8px}.rounded-\[min\(var\(--radius-md\)\,10px\)\]{border-radius:min(var(--radius-md),10px)}.rounded-\[min\(var\(--radius-md\)\,12px\)\]{border-radius:min(var(--radius-md),12px)}.rounded-\[min\(var\(--radius-md\)\,14px\)\]{border-radius:min(var(--radius-md),14px)}.rounded-\[var\(--ds-radius-sm\)\]{border-radius:var(--ds-radius-sm)}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-none{border-radius:0}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-xl{border-radius:.75rem}.\!border{border-width:1px!important}.\!border-0{border-width:0!important}.border{border-width:1px}.border-0{border-width:0}.border-x-0{border-left-width:0;border-right-width:0}.border-b{border-bottom-width:1px}.border-l-2{border-left-width:2px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-t-0{border-top-width:0}.\!border-solid{border-style:solid!important}.border-solid{border-style:solid}.border-dashed{border-style:dashed}.\!border-none{border-style:none!important}.border-none{border-style:none}.\!border-\[\#1677FF\]{--tw-border-opacity:1!important;border-color:rgba(22,119,255,var(--tw-border-opacity,1))!important}.\!border-\[\#52C51A\]{--tw-border-opacity:1!important;border-color:rgba(82,197,26,var(--tw-border-opacity,1))!important}.\!border-\[\#FAAD14\]{--tw-border-opacity:1!important;border-color:rgba(250,173,20,var(--tw-border-opacity,1))!important}.\!border-\[\#FF4D50\]{--tw-border-opacity:1!important;border-color:rgba(255,77,80,var(--tw-border-opacity,1))!important}.\!border-\[\#e5e5e5\]{--tw-border-opacity:1!important;border-color:rgba(229,229,229,var(--tw-border-opacity,1))!important}.\!border-\[var\(--border-default\)\]{border-color:var(--border-default)!important}.\!border-\[var\(--ds-accent\)\]{border-color:var(--ds-accent)!important}.border-\[\#223044\]{--tw-border-opacity:1;border-color:rgba(34,48,68,var(--tw-border-opacity,1))}.border-\[\#e2e6ee\]{--tw-border-opacity:1;border-color:rgba(226,230,238,var(--tw-border-opacity,1))}.border-\[\#e4dfc8\]{--tw-border-opacity:1;border-color:rgba(228,223,200,var(--tw-border-opacity,1))}.border-\[\#efefef\]{--tw-border-opacity:1;border-color:rgba(239,239,239,var(--tw-border-opacity,1))}.border-\[color\:var\(--ds-accent\)\]{border-color:var(--ds-accent)}.border-\[color\:var\(--ds-border\)\]{border-color:var(--ds-border)}.border-\[color\:var\(--ds-ok\)\]{border-color:var(--ds-ok)}.border-\[var\(--amber\)\]{border-color:var(--amber)}.border-\[var\(--border-subtle\)\]{border-color:var(--border-subtle)}.border-\[var\(--calendar-day-today-border\)\]{border-color:var(--calendar-day-today-border)}.border-\[var\(--ds-accent\)\]{border-color:var(--ds-accent)}.border-\[var\(--ds-border\)\]{border-color:var(--ds-border)}.border-\[var\(--ds-border\,var\(--input\)\)\]{border-color:var(--ds-border,var(--input))}.border-\[var\(--green-dark\)\]{border-color:var(--green-dark)}.border-amber-500\/40{border-color:rgba(245,158,11,.4)}.border-black\/5{border-color:rgba(0,0,0,.05)}.border-black\/\[0\.06\]{border-color:rgba(0,0,0,.06)}.border-border{border-color:var(--border)}.border-destructive{border-color:var(--destructive)}.border-emerald-500\/40{border-color:rgba(16,185,129,.4)}.border-red-200{--tw-border-opacity:1;border-color:rgba(254,202,202,var(--tw-border-opacity,1))}.border-red-500\/40{border-color:rgba(239,68,68,.4)}.border-transparent{border-color:transparent}.border-white\/5{border-color:rgba(255,255,255,.05)}.border-t-\[var\(--ds-border\)\]{border-top-color:var(--ds-border)}.\!bg-\[\#E7F4FF\]{--tw-bg-opacity:1!important;background-color:rgba(231,244,255,var(--tw-bg-opacity,1))!important}.\!bg-\[\#F6FFED\]{--tw-bg-opacity:1!important;background-color:rgba(246,255,237,var(--tw-bg-opacity,1))!important}.\!bg-\[\#FFF3F1\]{--tw-bg-opacity:1!important;background-color:rgba(255,243,241,var(--tw-bg-opacity,1))!important}.\!bg-\[\#FFFBE6\]{--tw-bg-opacity:1!important;background-color:rgba(255,251,230,var(--tw-bg-opacity,1))!important}.\!bg-\[\#fbfbfc\]{--tw-bg-opacity:1!important;background-color:rgba(251,251,252,var(--tw-bg-opacity,1))!important}.\!bg-\[var\(--green-light\)\]{background-color:var(--green-light)!important}.\!bg-transparent{background-color:transparent!important}.bg-\[\#111\]{--tw-bg-opacity:1;background-color:rgba(17,17,17,var(--tw-bg-opacity,1))}.bg-\[\#e9e9e9\]{--tw-bg-opacity:1;background-color:rgba(233,233,233,var(--tw-bg-opacity,1))}.bg-\[\#efefef\]{--tw-bg-opacity:1;background-color:rgba(239,239,239,var(--tw-bg-opacity,1))}.bg-\[\#f6f7fa\]{--tw-bg-opacity:1;background-color:rgba(246,247,250,var(--tw-bg-opacity,1))}.bg-\[\#f9f9f7\]{--tw-bg-opacity:1;background-color:rgba(249,249,247,var(--tw-bg-opacity,1))}.bg-\[\#f9f9f9\]{--tw-bg-opacity:1;background-color:rgba(249,249,249,var(--tw-bg-opacity,1))}.bg-\[\#fafafa\]{--tw-bg-opacity:1;background-color:rgba(250,250,250,var(--tw-bg-opacity,1))}.bg-\[\#fbfbfc\]{--tw-bg-opacity:1;background-color:rgba(251,251,252,var(--tw-bg-opacity,1))}.bg-\[\#fef2f2\]{--tw-bg-opacity:1;background-color:rgba(254,242,242,var(--tw-bg-opacity,1))}.bg-\[\#fff\]{--tw-bg-opacity:1;background-color:rgba(255,255,255,var(--tw-bg-opacity,1))}.bg-\[color-mix\(in_srgb\,var\(--blue\)_12\%\,var\(--surface-1\)\)\]{background-color:color-mix(in srgb,var(--blue)12%,var(--surface-1))}.bg-\[rgba\(120\,30\,30\,\.07\)\]{background-color:rgba(120,30,30,.07)}.bg-\[rgba\(50\,100\,180\,\.07\)\]{background-color:rgba(50,100,180,.07)}.bg-\[var\(--amber\)\]{background-color:var(--amber)}.bg-\[var\(--border-hover\)\]{background-color:var(--border-hover)}.bg-\[var\(--calendar-day-bg\)\]{background-color:var(--calendar-day-bg)}.bg-\[var\(--calendar-day-disabled-bg\)\]{background-color:var(--calendar-day-disabled-bg)}.bg-\[var\(--calendar-day-selected-bg\)\]{background-color:var(--calendar-day-selected-bg)}.bg-\[var\(--calendar-day-selected-text\)\]{background-color:var(--calendar-day-selected-text)}.bg-\[var\(--calendar-day-today-border\)\]{background-color:var(--calendar-day-today-border)}.bg-\[var\(--ds-accent\)\]{background-color:var(--ds-accent)}.bg-\[var\(--ds-bg\)\]{background-color:var(--ds-bg)}.bg-\[var\(--ds-border\)\]{background-color:var(--ds-border)}.bg-\[var\(--ds-danger\)\]{background-color:var(--ds-danger)}.bg-\[var\(--ds-item-active\)\]{background-color:var(--ds-item-active)}.bg-\[var\(--ds-item-hover\)\]{background-color:var(--ds-item-hover)}.bg-\[var\(--ds-log-bg\)\]{background-color:var(--ds-log-bg)}.bg-\[var\(--ds-main-tint\)\]{background-color:var(--ds-main-tint)}.bg-\[var\(--ds-muted\)\]{background-color:var(--ds-muted)}.bg-\[var\(--ds-ok\)\]{background-color:var(--ds-ok)}.bg-\[var\(--ds-sidebar\)\]{background-color:var(--ds-sidebar)}.bg-\[var\(--green-light\)\]{background-color:var(--green-light)}.bg-\[var\(--surface-1\)\]{background-color:var(--surface-1)}.bg-\[var\(--surface-2\)\]{background-color:var(--surface-2)}.bg-amber-500\/15{background-color:rgba(245,158,11,.15)}.bg-amber-500\/5{background-color:rgba(245,158,11,.05)}.bg-background{background-color:var(--background)}.bg-black\/45{background-color:rgba(0,0,0,.45)}.bg-black\/70{background-color:rgba(0,0,0,.7)}.bg-border{background-color:var(--border)}.bg-emerald-500\/10{background-color:rgba(16,185,129,.1)}.bg-emerald-500\/15{background-color:rgba(16,185,129,.15)}.bg-emerald-500\/5{background-color:rgba(16,185,129,.05)}.bg-gray-800{--tw-bg-opacity:1;background-color:rgba(31,41,55,var(--tw-bg-opacity,1))}.bg-input{background-color:var(--input)}.bg-popover{background-color:var(--popover)}.bg-red-50{--tw-bg-opacity:1;background-color:rgba(254,242,242,var(--tw-bg-opacity,1))}.bg-red-500\/10{background-color:rgba(239,68,68,.1)}.bg-red-500\/15{background-color:rgba(239,68,68,.15)}.bg-red-500\/5{background-color:rgba(239,68,68,.05)}.bg-secondary{background-color:var(--secondary)}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity:1;background-color:rgba(255,255,255,var(--tw-bg-opacity,1))}.bg-white\/\[\.012\]{background-color:rgba(255,255,255,.01)}.object-contain{-o-object-fit:contain;object-fit:contain}.object-cover{-o-object-fit:cover;object-fit:cover}.\!p-0{padding:0!important}.\!p-3{padding:.75rem!important}.p-0{padding:0}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-\[\.45rem_\.75rem\]{padding:.45rem .75rem}.p-\[16px\]{padding:16px}.p-\[1rem_\.75rem\]{padding:1rem .75rem}.p-\[24px\]{padding:24px}.p-\[var\(--space-1\)\]{padding:var(--space-1)}.\!px-0{padding-left:0!important;padding-right:0!important}.\!px-1{padding-left:.25rem!important;padding-right:.25rem!important}.\!px-4{padding-left:1rem!important;padding-right:1rem!important}.\!px-5{padding-left:1.25rem!important;padding-right:1.25rem!important}.\!px-\[8px\]{padding-left:8px!important;padding-right:8px!important}.\!py-0{padding-top:0!important;padding-bottom:0!important}.\!py-3{padding-top:.75rem!important;padding-bottom:.75rem!important}.\!py-3\.5{padding-top:.875rem!important;padding-bottom:.875rem!important}.\!py-4{padding-top:1rem!important;padding-bottom:1rem!important}.px-0{padding-left:0;padding-right:0}.px-0\.5{padding-left:.125rem;padding-right:.125rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-\[10px\]{padding-left:10px;padding-right:10px}.px-\[16px\]{padding-left:16px;padding-right:16px}.px-\[24px\]{padding-left:24px;padding-right:24px}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-3\.5{padding-top:.875rem;padding-bottom:.875rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.py-\[\.85rem\]{padding-top:.85rem;padding-bottom:.85rem}.py-\[6px\]{padding-top:6px;padding-bottom:6px}.\!pl-0{padding-left:0!important}.\!pl-\[16px\]{padding-left:16px!important}.\!pr-0{padding-right:0!important}.\!pr-\[16px\]{padding-right:16px!important}.\!pt-2{padding-top:.5rem!important}.pb-1{padding-bottom:.25rem}.pb-2{padding-bottom:.5rem}.pb-2\.5{padding-bottom:.625rem}.pb-3{padding-bottom:.75rem}.pb-4{padding-bottom:1rem}.pb-\[1px\]{padding-bottom:1px}.pb-\[var\(--space-4\)\]{padding-bottom:var(--space-4)}.pl-1{padding-left:.25rem}.pl-1\.5{padding-left:.375rem}.pl-2{padding-left:.5rem}.pl-4{padding-left:1rem}.pl-6{padding-left:1.5rem}.pl-8{padding-left:2rem}.pl-9{padding-left:2.25rem}.pl-\[0\]{padding-left:0}.pr-1{padding-right:.25rem}.pr-3{padding-right:.75rem}.pr-8{padding-right:2rem}.pr-\[0\]{padding-right:0}.pt-1{padding-top:.25rem}.pt-1\.5{padding-top:.375rem}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.pt-5{padding-top:1.25rem}.pt-\[16px\]{padding-top:16px}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.align-middle{vertical-align:middle}.font-mono{font-family:var(--font-mono),ui-monospace,monospace}.font-sans{font-family:var(--font-body),ui-sans-serif,system-ui,sans-serif}.\!text-base{font-size:var(--text-base)!important;line-height:1.5!important}.text-2xl{font-size:1.5rem;line-height:2rem}.text-\[0\.78rem\]{font-size:.78rem}.text-\[10\.5px\]{font-size:10.5px}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[12px\]{font-size:12px}.text-\[14px\]{font-size:14px}.text-\[9\.5px\]{font-size:9.5px}.text-base{font-size:var(--text-base);line-height:1.5}.text-lg{font-size:var(--text-lg);line-height:1.4}.text-sm{font-size:var(--text-sm);line-height:1.4}.text-xs{font-size:var(--text-xs);line-height:1.4}.\!font-normal{font-weight:400!important}.font-\[600\]{font-weight:600}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal)var(--tw-slashed-zero)var(--tw-numeric-figure)var(--tw-numeric-spacing)var(--tw-numeric-fraction)}.leading-5{line-height:1.25rem}.leading-6{line-height:1.5rem}.leading-\[1\.5\]{line-height:1.5}.leading-\[1\.6\]{line-height:1.6}.leading-none{line-height:1}.leading-relaxed{line-height:1.625}.leading-snug{line-height:1.375}.leading-tight{line-height:1.25}.tracking-wide{letter-spacing:.025em}.tracking-widest{letter-spacing:.1em}.\!text-\[\#1677FF\]{--tw-text-opacity:1!important;color:rgba(22,119,255,var(--tw-text-opacity,1))!important}.\!text-\[\#1C1E1F\]{--tw-text-opacity:1!important;color:rgba(28,30,31,var(--tw-text-opacity,1))!important}.\!text-\[\#52C51A\]{--tw-text-opacity:1!important;color:rgba(82,197,26,var(--tw-text-opacity,1))!important}.\!text-\[\#6e6e6e\]{--tw-text-opacity:1!important;color:rgba(110,110,110,var(--tw-text-opacity,1))!important}.\!text-\[\#A32D2D\]{--tw-text-opacity:1!important;color:rgba(163,45,45,var(--tw-text-opacity,1))!important}.\!text-\[\#FAAD14\]{--tw-text-opacity:1!important;color:rgba(250,173,20,var(--tw-text-opacity,1))!important}.\!text-\[\#FF4D50\]{--tw-text-opacity:1!important;color:rgba(255,77,80,var(--tw-text-opacity,1))!important}.\!text-\[\#e6e6e6\]{--tw-text-opacity:1!important;color:rgba(230,230,230,var(--tw-text-opacity,1))!important}.\!text-\[var\(--ds-text\)\]{color:var(--ds-text)!important}.\!text-zinc-700{--tw-text-opacity:1!important;color:rgba(63,63,70,var(--tw-text-opacity,1))!important}.text-\[\#252e3e\]{--tw-text-opacity:1;color:rgba(37,46,62,var(--tw-text-opacity,1))}.text-\[\#2e5a38\]{--tw-text-opacity:1;color:rgba(46,90,56,var(--tw-text-opacity,1))}.text-\[\#303a4a\]{--tw-text-opacity:1;color:rgba(48,58,74,var(--tw-text-opacity,1))}.text-\[\#343d52\]{--tw-text-opacity:1;color:rgba(52,61,82,var(--tw-text-opacity,1))}.text-\[\#353f52\]{--tw-text-opacity:1;color:rgba(53,63,82,var(--tw-text-opacity,1))}.text-\[\#3B6D11\]{--tw-text-opacity:1;color:rgba(59,109,17,var(--tw-text-opacity,1))}.text-\[\#4d80c4\]{--tw-text-opacity:1;color:rgba(77,128,196,var(--tw-text-opacity,1))}.text-\[\#535353\]{--tw-text-opacity:1;color:rgba(83,83,83,var(--tw-text-opacity,1))}.text-\[\#5a8ec4\]{--tw-text-opacity:1;color:rgba(90,142,196,var(--tw-text-opacity,1))}.text-\[\#626a77\]{--tw-text-opacity:1;color:rgba(98,106,119,var(--tw-text-opacity,1))}.text-\[\#6e2828\]{--tw-text-opacity:1;color:rgba(110,40,40,var(--tw-text-opacity,1))}.text-\[\#6e6e6e\]{--tw-text-opacity:1;color:rgba(110,110,110,var(--tw-text-opacity,1))}.text-\[\#8A8985\]{--tw-text-opacity:1;color:rgba(138,137,133,var(--tw-text-opacity,1))}.text-\[\#A32D2D\]{--tw-text-opacity:1;color:rgba(163,45,45,var(--tw-text-opacity,1))}.text-\[\#b0bac8\]{--tw-text-opacity:1;color:rgba(176,186,200,var(--tw-text-opacity,1))}.text-\[\#b4c4b9\]{--tw-text-opacity:1;color:rgba(180,196,185,var(--tw-text-opacity,1))}.text-\[var\(--amber\)\]{color:var(--amber)}.text-\[var\(--blue\)\]{color:var(--blue)}.text-\[var\(--calendar-day-disabled-text\)\]{color:var(--calendar-day-disabled-text)}.text-\[var\(--calendar-day-selected-text\)\]{color:var(--calendar-day-selected-text)}.text-\[var\(--calendar-day-text\)\]{color:var(--calendar-day-text)}.text-\[var\(--calendar-day-today-text\)\]{color:var(--calendar-day-today-text)}.text-\[var\(--ds-accent\)\]{color:var(--ds-accent)}.text-\[var\(--ds-danger\)\]{color:var(--ds-danger)}.text-\[var\(--ds-muted\)\]{color:var(--ds-muted)}.text-\[var\(--ds-ok\)\]{color:var(--ds-ok)}.text-\[var\(--ds-text\)\]{color:var(--ds-text)}.text-\[var\(--green-dark\)\]{color:var(--green-dark)}.text-\[var\(--surface-1\)\]{color:var(--surface-1)}.text-\[var\(--text-placeholder\)\]{color:var(--text-placeholder)}.text-\[var\(--text-secondary\)\]{color:var(--text-secondary)}.text-\[var\(--text-tertiary\)\]{color:var(--text-tertiary)}.text-amber-600{--tw-text-opacity:1;color:rgba(217,119,6,var(--tw-text-opacity,1))}.text-destructive{color:var(--destructive)}.text-emerald-600{--tw-text-opacity:1;color:rgba(5,150,105,var(--tw-text-opacity,1))}.text-emerald-700{--tw-text-opacity:1;color:rgba(4,120,87,var(--tw-text-opacity,1))}.text-foreground{color:var(--foreground)}.text-gray-500{--tw-text-opacity:1;color:rgba(107,114,128,var(--tw-text-opacity,1))}.text-muted-foreground{color:var(--muted-foreground)}.text-orange-600{--tw-text-opacity:1;color:rgba(234,88,12,var(--tw-text-opacity,1))}.text-popover-foreground{color:var(--popover-foreground)}.text-primary{color:var(--primary)}.text-red-500{--tw-text-opacity:1;color:rgba(239,68,68,var(--tw-text-opacity,1))}.text-red-600{--tw-text-opacity:1;color:rgba(220,38,38,var(--tw-text-opacity,1))}.text-red-700{--tw-text-opacity:1;color:rgba(185,28,28,var(--tw-text-opacity,1))}.text-secondary-foreground{color:var(--secondary-foreground)}.text-white{--tw-text-opacity:1;color:rgba(255,255,255,var(--tw-text-opacity,1))}.text-zinc-400{--tw-text-opacity:1;color:rgba(161,161,170,var(--tw-text-opacity,1))}.text-zinc-500{--tw-text-opacity:1;color:rgba(113,113,122,var(--tw-text-opacity,1))}.text-zinc-700{--tw-text-opacity:1;color:rgba(63,63,70,var(--tw-text-opacity,1))}.text-zinc-900{--tw-text-opacity:1;color:rgba(24,24,27,var(--tw-text-opacity,1))}.underline{-webkit-text-decoration-line:underline;text-decoration-line:underline}.\!no-underline{-webkit-text-decoration-line:none!important;text-decoration-line:none!important}.underline-offset-4{text-underline-offset:4px}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-80{opacity:.8}.opacity-90{opacity:.9}.\!shadow-none{--tw-shadow:0 0 transparent!important;--tw-shadow-colored:0 0 transparent!important;box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)!important}.shadow-md{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 transparent;--tw-shadow-colored:0 0 transparent;box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)}.shadow-\[var\(--shadow-float\)\]{--tw-shadow-color:var(--shadow-float);--tw-shadow:var(--tw-shadow-colored)}.shadow-\[var\(--shadow-lg\)\]{--tw-shadow-color:var(--shadow-lg);--tw-shadow:var(--tw-shadow-colored)}.shadow-\[var\(--shadow-md\)\]{--tw-shadow-color:var(--shadow-md);--tw-shadow:var(--tw-shadow-colored)}.shadow-\[var\(--shadow-sm\)\]{--tw-shadow-color:var(--shadow-sm);--tw-shadow:var(--tw-shadow-colored)}.outline{outline-style:solid}.ring-0{--tw-ring-offset-shadow:var(--tw-ring-inset)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset)0 0 0 calc(0px + var(--tw-ring-offset-width))var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent)}.blur{--tw-blur:blur(8px);filter:var(--tw-blur)var(--tw-brightness)var(--tw-contrast)var(--tw-grayscale)var(--tw-hue-rotate)var(--tw-invert)var(--tw-saturate)var(--tw-sepia)var(--tw-drop-shadow)}.filter{filter:var(--tw-blur)var(--tw-brightness)var(--tw-contrast)var(--tw-grayscale)var(--tw-hue-rotate)var(--tw-invert)var(--tw-saturate)var(--tw-sepia)var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,-webkit-text-decoration-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter,backdrop-filter;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-\[border-color\,background-color\]{transition-property:border-color,background-color;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-\[border-color\,box-shadow\,background-color\]{transition-property:border-color,box-shadow,background-color;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-\[border-color\,box-shadow\]{transition-property:border-color,box-shadow;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-\[color\,box-shadow\,border-color\,background-color\]{transition-property:color,box-shadow,border-color,background-color;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-\[color\,box-shadow\,border-color\]{transition-property:color,box-shadow,border-color;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-\[stroke-dashoffset\]{transition-property:stroke-dashoffset;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-all{transition-property:all;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-colors{transition-property:color,background-color,border-color,-webkit-text-decoration-color,text-decoration-color,fill,stroke;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-none{transition-property:none}.transition-opacity{transition-property:opacity;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-transform{transition-property:transform;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-100{transition-duration:.1s}.duration-150{transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.will-change-transform{will-change:transform}[data-slot=dropdown-menu-positioner]{border-radius:var(--radius);box-shadow:var(--shadow-float);overflow:visible}.ds-soft-shadow{box-shadow:var(--shadow-sm)}.ds-soft-shadow:hover,.ds-soft-shadow:focus-within{box-shadow:var(--shadow-composer)}.calendar-root.rdp-root{--rdp-accent-color:var(--calendar-day-selected-bg);--rdp-accent-background-color:var(--calendar-day-hover-bg);--rdp-day-height:36px;--rdp-day-width:36px;--rdp-day_button-border-radius:6px;--rdp-day_button-height:36px;--rdp-day_button-width:36px;--rdp-day_button-border:1px solid transparent;--rdp-selected-border:1px solid transparent;--rdp-today-color:var(--calendar-day-today-text);--rdp-disabled-opacity:1;--rdp-outside-opacity:1;--rdp-nav_button-height:2rem;--rdp-nav_button-width:2rem}.calendar-root .rdp-selected .rdp-day_button{background-color:var(--calendar-day-selected-bg);color:var(--calendar-day-selected-text);border-color:transparent}.calendar-root .rdp-today:not(.rdp-selected) .rdp-day_button{color:var(--calendar-day-today-text);border-color:var(--calendar-day-today-border)}.calendar-root .rdp-disabled .rdp-day_button{background-color:var(--calendar-day-disabled-bg);color:var(--calendar-day-disabled-text);opacity:1}:root{--font-body:"-apple-system, BlinkMacSystemFont, \"Segoe UI\", Helvetica Neue, PingFang SC, Hiragino Sans GB, Microsoft YaHei UI, Microsoft YaHei, Arial, sans-serif";--font-sans:var(--font-body);--font-anthropic-sans:"Anthropic Sans",system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;--font-anthropic-serif:"Anthropic Serif",Georgia,"Arial Hebrew","Noto Sans Hebrew","Times New Roman",Times,"Hiragino Sans","Yu Gothic",Meiryo,"Noto Sans CJK JP","PingFang TC","Microsoft JhengHei","Noto Sans CJK TC","PingFang SC","Microsoft YaHei","Noto Sans CJK SC","Apple SD Gothic Neo","Malgun Gothic","Noto Sans CJK KR",serif;--font-anthropic-mono:"Anthropic Mono",ui-monospace,monospace;--font-open-dyslexic:"OpenDyslexic","Comic Sans MS",ui-serif,serif;--accent:#1db887}.outline-none{outline-offset:0;outline:none}p,h1,h2,h3,h4,h5,h6{margin:0;padding:0}ul,li{margin:0;padding:0;list-style:none}[data-slot=tabs-list][data-variant=line] [data-slot=tabs-trigger][data-state=active],[data-slot=tabs-list][data-variant=line] [data-slot=tabs-trigger][data-active]:not([data-active=false]),[data-slot=tabs-list][data-variant=line] [data-slot=tabs-trigger][aria-selected=true]{color:var(--ds-main,#1db887);border-bottom:2px solid var(--ds-main,#1db887)}.placeholder\:text-\[var\(--text-placeholder\)\]::placeholder{color:var(--text-placeholder)}.placeholder\:text-muted-foreground::placeholder{color:var(--muted-foreground)}.first\:pt-0:first-child{padding-top:0}.hover\:\!border-0:hover{border-width:0!important}.hover\:\!border-\[\#e5e5e5\]:hover{--tw-border-opacity:1!important;border-color:rgba(229,229,229,var(--tw-border-opacity,1))!important}.hover\:\!border-\[var\(--ds-accent\)\]:hover{border-color:var(--ds-accent)!important}.hover\:border-\[color\:var\(--ds-accent\)\]:hover{border-color:var(--ds-accent)}.hover\:border-\[color\:var\(--ds-border-hover\)\]:hover{border-color:var(--ds-border-hover)}.hover\:border-\[var\(--border-hover\)\]:hover{border-color:var(--border-hover)}.hover\:border-\[var\(--calendar-day-today-border\)\]:hover{border-color:var(--calendar-day-today-border)}.hover\:border-\[var\(--ds-accent-hover\)\]:hover{border-color:var(--ds-accent-hover)}.hover\:border-\[var\(--ds-border-hover\)\]:hover{border-color:var(--ds-border-hover)}.hover\:\!bg-\[var\(--ds-item-hover\)\]:hover{background-color:var(--ds-item-hover)!important}.hover\:\!bg-\[var\(--green-light\)\]:hover{background-color:var(--green-light)!important}.hover\:\!bg-transparent:hover{background-color:transparent!important}.hover\:bg-\[\#333\]:hover{--tw-bg-opacity:1;background-color:rgba(51,51,51,var(--tw-bg-opacity,1))}.hover\:bg-\[\#fff1f1\]:hover{--tw-bg-opacity:1;background-color:rgba(255,241,241,var(--tw-bg-opacity,1))}.hover\:bg-\[var\(--calendar-day-disabled-bg\)\]:hover{background-color:var(--calendar-day-disabled-bg)}.hover\:bg-\[var\(--calendar-day-hover-bg\)\]:hover{background-color:var(--calendar-day-hover-bg)}.hover\:bg-\[var\(--calendar-day-selected-bg\)\]:hover{background-color:var(--calendar-day-selected-bg)}.hover\:bg-\[var\(--ds-accent-hover\)\]:hover{background-color:var(--ds-accent-hover)}.hover\:bg-\[var\(--ds-item-active\)\]:hover{background-color:var(--ds-item-active)}.hover\:bg-\[var\(--ds-item-bg-hover\)\]:hover{background-color:var(--ds-item-bg-hover)}.hover\:bg-\[var\(--ds-item-hover\)\]:hover{background-color:var(--ds-item-hover)}.hover\:bg-\[var\(--ds-main-tint\)\]:hover{background-color:var(--ds-main-tint)}.hover\:bg-\[var\(--green-light\)\]:hover{background-color:var(--green-light)}.hover\:bg-\[var\(--surface-1\)\]:hover{background-color:var(--surface-1)}.hover\:bg-\[var\(--surface-2\)\]:hover{background-color:var(--surface-2)}.hover\:bg-\[var\(--surface-3\)\]:hover{background-color:var(--surface-3)}.hover\:bg-muted:hover{background-color:var(--muted)}.hover\:bg-transparent:hover{background-color:transparent}.hover\:bg-white\/70:hover{background-color:rgba(255,255,255,.7)}.hover\:\!text-\[\#cfcfcf\]:hover{--tw-text-opacity:1!important;color:rgba(207,207,207,var(--tw-text-opacity,1))!important}.hover\:\!text-\[var\(--green-dark\)\]:hover{color:var(--green-dark)!important}.hover\:text-\[\#343d52\]:hover{--tw-text-opacity:1;color:rgba(52,61,82,var(--tw-text-opacity,1))}.hover\:text-\[color\:var\(--ds-accent\)\]:hover{color:var(--ds-accent)}.hover\:text-\[var\(--calendar-day-disabled-text\)\]:hover{color:var(--calendar-day-disabled-text)}.hover\:text-\[var\(--calendar-day-hover-text\)\]:hover{color:var(--calendar-day-hover-text)}.hover\:text-\[var\(--calendar-day-selected-text\)\]:hover{color:var(--calendar-day-selected-text)}.hover\:text-\[var\(--ds-accent\)\]:hover{color:var(--ds-accent)}.hover\:text-\[var\(--ds-accent-hover\)\]:hover{color:var(--ds-accent-hover)}.hover\:text-\[var\(--ds-text\)\]:hover{color:var(--ds-text)}.hover\:text-\[var\(--green-dark\)\]:hover{color:var(--green-dark)}.hover\:text-\[var\(--surface-1\)\]:hover{color:var(--surface-1)}.hover\:text-foreground:hover{color:var(--foreground)}.hover\:text-red-800:hover{--tw-text-opacity:1;color:rgba(153,27,27,var(--tw-text-opacity,1))}.hover\:text-zinc-600:hover{--tw-text-opacity:1;color:rgba(82,82,91,var(--tw-text-opacity,1))}.hover\:text-zinc-700:hover{--tw-text-opacity:1;color:rgba(63,63,70,var(--tw-text-opacity,1))}.hover\:text-zinc-900:hover{--tw-text-opacity:1;color:rgba(24,24,27,var(--tw-text-opacity,1))}.hover\:underline:hover{-webkit-text-decoration-line:underline;text-decoration-line:underline}.hover\:\!no-underline:hover{-webkit-text-decoration-line:none!important;text-decoration-line:none!important}.hover\:\!shadow-none:hover{--tw-shadow:0 0 transparent!important;--tw-shadow-colored:0 0 transparent!important;box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)!important}.hover\:shadow-\[0_2px_12px_rgba\(0\,0\,0\,0\.06\)\]:hover{--tw-shadow:0 2px 12px rgba(0,0,0,.06);--tw-shadow-colored:0 2px 12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)}.hover\:shadow-\[var\(--shadow-sm\)\]:hover{--tw-shadow-color:var(--shadow-sm);--tw-shadow:var(--tw-shadow-colored)}.focus\:\!border-0:focus{border-width:0!important}.focus\:bg-\[\#fff1f1\]:focus{--tw-bg-opacity:1;background-color:rgba(255,241,241,var(--tw-bg-opacity,1))}.focus\:bg-\[var\(--ds-item-hover\)\]:focus{background-color:var(--ds-item-hover)}.focus\:bg-\[var\(--surface-2\)\]:focus{background-color:var(--surface-2)}.focus\:bg-accent:focus{background-color:var(--accent)}.focus\:text-\[var\(--ds-text\)\]:focus{color:var(--ds-text)}.focus\:text-accent-foreground:focus{color:var(--accent-foreground)}.focus\:\!shadow-none:focus{--tw-shadow:0 0 transparent!important;--tw-shadow-colored:0 0 transparent!important;box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)!important}.focus\:\!outline-none:focus{outline-offset:2px!important;outline:2px solid transparent!important}.focus\:outline-none:focus{outline-offset:2px;outline:2px solid transparent}.focus-visible\:\!border-0:focus-visible{border-width:0!important}.focus-visible\:\!border-\[\#e5e5e5\]:focus-visible{--tw-border-opacity:1!important;border-color:rgba(229,229,229,var(--tw-border-opacity,1))!important}.focus-visible\:border-\[var\(--amber\)\]:focus-visible{border-color:var(--amber)}.focus-visible\:border-\[var\(--border-focus\)\]:focus-visible{border-color:var(--border-focus)}.focus-visible\:border-\[var\(--green-dark\)\]:focus-visible{border-color:var(--green-dark)}.focus-visible\:border-destructive:focus-visible{border-color:var(--destructive)}.focus-visible\:border-ring:focus-visible{border-color:var(--ring)}.focus-visible\:\!shadow-none:focus-visible{--tw-shadow:0 0 transparent!important;--tw-shadow-colored:0 0 transparent!important;box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)!important}.focus-visible\:\!outline-none:focus-visible{outline-offset:2px!important;outline:2px solid transparent!important}.focus-visible\:outline-none:focus-visible{outline-offset:2px;outline:2px solid transparent}.focus-visible\:ring-0:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset)0 0 0 calc(0px + var(--tw-ring-offset-width))var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent)}.focus-visible\:ring-1:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent)}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent)}.focus-visible\:ring-\[3px\]:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset)0 0 0 calc(3px + var(--tw-ring-offset-width))var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent)}.focus-visible\:ring-\[var\(--ds-accent\)\]:focus-visible{--tw-ring-color:var(--ds-accent)}.focus-visible\:ring-ring:focus-visible{--tw-ring-color:var(--ring)}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px}.focus-visible\:\[box-shadow\:0_0_0_2px_rgba\(220\,38\,38\,0\.18\)\]:focus-visible{box-shadow:0 0 0 2px rgba(220,38,38,.18)}.focus-visible\:\[box-shadow\:0_0_0_2px_rgba\(255\,181\,71\,0\.25\)\]:focus-visible{box-shadow:0 0 0 2px rgba(255,181,71,.25)}.focus-visible\:\!\[box-shadow\:none\]:focus-visible{box-shadow:none!important}.focus-visible\:\[box-shadow\:var\(--ring-focus-sm\)\]:focus-visible{box-shadow:var(--ring-focus-sm)}.read-only\:focus-visible\:border-border:focus-visible:-moz-read-only{border-color:var(--border)}.read-only\:focus-visible\:border-border:focus-visible:read-only{border-color:var(--border)}.read-only\:focus-visible\:\[box-shadow\:none\]:focus-visible:-moz-read-only{box-shadow:none}.read-only\:focus-visible\:\[box-shadow\:none\]:focus-visible:read-only{box-shadow:none}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:text-\[var\(--ds-muted\)\]:disabled{color:var(--ds-muted)}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:opacity-60:disabled{opacity:.6}.disabled\:hover\:border-\[var\(--ds-border\,var\(--input\)\)\]:hover:disabled{border-color:var(--ds-border,var(--input))}.disabled\:hover\:bg-transparent:hover:disabled{background-color:transparent}.disabled\:focus-visible\:border-\[var\(--ds-border\,var\(--input\)\)\]:focus-visible:disabled{border-color:var(--ds-border,var(--input))}.disabled\:focus-visible\:border-border:focus-visible:disabled{border-color:var(--border)}.disabled\:focus-visible\:\[box-shadow\:none\]:focus-visible:disabled{box-shadow:none}.group:focus-within .group-focus-within\:pointer-events-auto{pointer-events:auto}.group:focus-within .group-focus-within\:visible{visibility:visible}.group:focus-within .group-focus-within\:opacity-100{opacity:1}.group:hover .group-hover\:pointer-events-auto{pointer-events:auto}.group:hover .group-hover\:visible{visibility:visible}.group:hover .group-hover\:opacity-100{opacity:1}.group\/dropdown-menu-item:focus .group-focus\/dropdown-menu-item\:text-accent-foreground{color:var(--accent-foreground)}.peer:disabled~.peer-disabled\:cursor-not-allowed{cursor:not-allowed}.peer:disabled~.peer-disabled\:opacity-70{opacity:.7}.has-\[\:disabled\]\:cursor-not-allowed:has(:disabled){cursor:not-allowed}.has-\[\:focus-visible\]\:border-\[var\(--border-focus\)\]:has(:focus-visible){border-color:var(--border-focus)}.has-\[\:disabled\]\:opacity-50:has(:disabled){opacity:.5}.has-\[\:focus-visible\]\:\[box-shadow\:var\(--ring-focus-sm\)\]:has(:focus-visible){box-shadow:var(--ring-focus-sm)}.group\/table-row:has(td:hover) .group-has-\[td\:hover\]\/table-row\:\!bg-\[var\(--ds-item-hover\)\]{background-color:var(--ds-item-hover)!important}.aria-expanded\:border-\[var\(--ds-accent-hover\)\][aria-expanded=true]{border-color:var(--ds-accent-hover)}.aria-expanded\:bg-\[var\(--surface-1\)\][aria-expanded=true]{background-color:var(--surface-1)}.aria-expanded\:bg-muted[aria-expanded=true]{background-color:var(--muted)}.aria-expanded\:bg-secondary[aria-expanded=true]{background-color:var(--secondary)}.aria-expanded\:text-\[var\(--ds-accent-hover\)\][aria-expanded=true]{color:var(--ds-accent-hover)}.aria-expanded\:text-foreground[aria-expanded=true]{color:var(--foreground)}.aria-expanded\:text-secondary-foreground[aria-expanded=true]{color:var(--secondary-foreground)}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[size\=default\]\:size-4[data-size=default]{width:1rem;height:1rem}.data-\[size\=sm\]\:size-3\.5[data-size=sm]{width:.875rem;height:.875rem}.data-\[size\=default\]\:h-9[data-size=default]{height:2.25rem}.data-\[size\=lg\]\:h-10[data-size=lg]{height:2.5rem}.data-\[size\=lg\]\:h-\[42px\][data-size=lg]{height:42px}.data-\[size\=sm\]\:h-7[data-size=sm]{height:1.75rem}.data-\[checked\]\:translate-x-4[data-checked]{--tw-translate-x:1rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.data-\[unchecked\]\:translate-x-0\.5[data-unchecked]{--tw-translate-x:.125rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.data-\[checked\]\:border-\[var\(--ds-accent\)\][data-checked]{border-color:var(--ds-accent)}.data-\[popup-open\]\:border-\[var\(--border-focus\)\][data-popup-open],.data-\[state\=open\]\:border-\[var\(--border-focus\)\][data-state=open]{border-color:var(--border-focus)}.data-\[checked\]\:bg-\[var\(--ds-accent\)\][data-checked]{background-color:var(--ds-accent)}.data-\[checked\]\:bg-primary[data-checked]{background-color:var(--primary)}.data-\[checked\]\:bg-primary-foreground[data-checked]{background-color:var(--primary-foreground)}.data-\[checked\]\:bg-white[data-checked]{--tw-bg-opacity:1;background-color:rgba(255,255,255,var(--tw-bg-opacity,1))}.data-\[state\=checked\]\:bg-\[var\(--ds-item-active\)\][data-state=checked]{background-color:var(--ds-item-active)}.data-\[active\]\:font-medium[data-active]{font-weight:500}.data-\[active\]\:text-\[var\(--ds-accent\)\][data-active]{color:var(--ds-accent)}.data-\[variant\=destructive\]\:text-destructive[data-variant=destructive]{color:var(--destructive)}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[popup-open\]\:\[box-shadow\:var\(--ring-focus-sm\)\][data-popup-open],.data-\[state\=open\]\:\[box-shadow\:var\(--ring-focus-sm\)\][data-state=open]{box-shadow:var(--ring-focus-sm)}.data-\[active\]\:after\:absolute[data-active]:after{content:var(--tw-content);position:absolute}.data-\[active\]\:after\:bottom-\[-1px\][data-active]:after{content:var(--tw-content);bottom:-1px}.data-\[active\]\:after\:left-0[data-active]:after{content:var(--tw-content);left:0}.data-\[active\]\:after\:right-0[data-active]:after{content:var(--tw-content);right:0}.data-\[active\]\:after\:h-\[2px\][data-active]:after{content:var(--tw-content);height:2px}.data-\[active\]\:after\:bg-\[var\(--ds-accent\)\][data-active]:after{content:var(--tw-content);background-color:var(--ds-accent)}.data-\[active\]\:after\:content-\[\"\"\][data-active]:after{--tw-content:"";content:var(--tw-content)}.data-\[variant\=destructive\]\:focus\:text-destructive:focus[data-variant=destructive]{color:var(--destructive)}.group\/tabs-list[data-variant=pill] .group-data-\[variant\=pill\]\/tabs-list\:mb-0{margin-bottom:0}.group\/tabs-list[data-variant=pill] .group-data-\[variant\=pill\]\/tabs-list\:mr-0{margin-right:0}.group\/tabs-list[data-variant=default] .group-data-\[variant\=default\]\/tabs-list\:h-8{height:2rem}.group\/tabs-list[data-variant=pill] .group-data-\[variant\=pill\]\/tabs-list\:h-9{height:2.25rem}.group\/tabs-list[data-variant=pill] .group-data-\[variant\=pill\]\/tabs-list\:rounded-full{border-radius:9999px}.group\/tabs-list[data-variant=pill] .group-data-\[variant\=pill\]\/tabs-list\:px-5{padding-left:1.25rem;padding-right:1.25rem}.group\/tabs-list[data-variant=pill] .group-data-\[variant\=pill\]\/tabs-list\:pb-0{padding-bottom:0}.group\/tabs-list[data-variant=pill] .group-data-\[variant\=pill\]\/tabs-list\:font-semibold{font-weight:600}.group\/tabs-list[data-variant=pill] .group-data-\[variant\=pill\]\/tabs-list\:text-\[\#828282\]{--tw-text-opacity:1;color:rgba(130,130,130,var(--tw-text-opacity,1))}.group\/tabs-list[data-variant=pill] .group-data-\[variant\=pill\]\/tabs-list\:data-\[active\]\:bg-\[\#fff\][data-active]{--tw-bg-opacity:1;background-color:rgba(255,255,255,var(--tw-bg-opacity,1))}.group\/tabs-list[data-variant=pill] .group-data-\[variant\=pill\]\/tabs-list\:data-\[active\]\:font-bold[data-active]{font-weight:700}.group\/tabs-list[data-variant=pill] .group-data-\[variant\=pill\]\/tabs-list\:data-\[active\]\:text-\[\#333333\][data-active]{--tw-text-opacity:1;color:rgba(51,51,51,var(--tw-text-opacity,1))}.group\/tabs-list[data-variant=pill] .group-data-\[variant\=pill\]\/tabs-list\:data-\[active\]\:shadow-\[0_2px_10px_rgba\(15\,23\,42\,0\.08\)\][data-active]{--tw-shadow:0 2px 10px rgba(15,23,42,.08);--tw-shadow-colored:0 2px 10px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)}.group\/tabs-list[data-variant=pill] .group-data-\[variant\=pill\]\/tabs-list\:data-\[active\]\:after\:\[content\:none\][data-active]:after{content:none}@media (min-width:640px){.sm\:col-span-2{grid-column:span 2/span 2}.sm\:inline{display:inline}.sm\:w-\[220px\]{width:220px}.sm\:shrink-0{flex-shrink:0}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:items-start{align-items:flex-start}.sm\:pl-2\.5{padding-left:.625rem}.sm\:pr-2\.5{padding-right:.625rem}}@media (min-width:768px){.md\:w-\[300px\]{width:300px}.md\:flex-row{flex-direction:row}.md\:border-b-0{border-bottom-width:0}.md\:border-r{border-right-width:1px}}@media (min-width:1024px){.lg\:flex-row{flex-direction:row}.lg\:flex-nowrap{flex-wrap:nowrap}.lg\:items-start{align-items:flex-start}.lg\:justify-between{justify-content:space-between}}@media (prefers-color-scheme:dark){.dark\:border-input{border-color:var(--input)}}.\[\&\>td\]\:transition-colors>td{transition-property:color,background-color,border-color,-webkit-text-decoration-color,text-decoration-color,fill,stroke;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.data-\[state\=selected\]\:\[\&\>td\]\:\!bg-\[var\(--ds-item-active\)\]>td[data-state=selected]{background-color:var(--ds-item-active)!important}.\[\&_\[data-slot\=tooltip\]\]\:flex [data-slot=tooltip]{display:flex}.\[\&_\[data-slot\=tooltip\]\]\:w-full [data-slot=tooltip]{width:100%}.\[\&_\[data-slot\=tooltip\]\]\:min-w-0 [data-slot=tooltip]{min-width:0}.\[\&_\[data-slot\=tooltip\]\]\:max-w-full [data-slot=tooltip]{max-width:100%}.\[\&_path\]\:\!fill-none path{fill:none!important}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]){width:1rem;height:1rem}.\[\&_svg\:not\(\[fill\=none\]\)_path\]\:fill-current svg:not([fill=none]) path{fill:currentColor}.\[\&_svg\[fill\=none\]_path\]\:fill-none svg[fill=none] path{fill:none}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:size-5 svg{width:1.25rem;height:1.25rem}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\]\:stroke-current svg{stroke:currentColor}.\[\&_svg\]\:align-middle svg{vertical-align:middle}.\[\&_svg\]\:\!text-red-600 svg{--tw-text-opacity:1!important;color:rgba(220,38,38,var(--tw-text-opacity,1))!important}.hover\:\[\&_svg\]\:\!text-red-800 svg:hover{--tw-text-opacity:1!important;color:rgba(153,27,27,var(--tw-text-opacity,1))!important}.\[\&_svg_path\]\:\!fill-current svg path{fill:currentColor!important}.\[\&_tr\:last-child\]\:border-b-0 tr:last-child,.\[\&_tr\:last-child_td\]\:border-b-0 tr:last-child td{border-bottom-width:0}.\[\&_tr\]\:table tr{display:table}.\[\&_tr\]\:w-full tr{width:100%}.\[\&_tr\]\:table-fixed tr{table-layout:fixed}.\[\&_tr\]\:border-b tr{border-bottom-width:1px}